blob: 9df88a0c01b7daa5ee328fa60bf91cdb93eae575 [file] [log] [blame]
buzbee9e0f9b02011-08-24 15:32:46 -07001// Copyright 2011 Google Inc. All Rights Reserved.
2
3#include <dirent.h>
4#include <dlfcn.h>
5#include <sys/stat.h>
6#include <sys/types.h>
7
8#include "base64.h"
9#include "heap.h"
10#include "thread.h"
11#include "stringprintf.h"
12#include "class_linker.h"
13#include "dex_file.h"
14
15#include "unicode/uclean.h"
16#include "unicode/uvernum.h"
17
18#include "gtest/gtest.h"
19
20namespace art {
21
buzbee9e0f9b02011-08-24 15:32:46 -070022//class IntMath {
23//
buzbeee1931742011-08-28 21:15:53 -070024// public static boolean mBoolean1, mBoolean2;
25// public static byte mByte1, mByte2;
26// public static char mChar1, mChar2;
27// public static short mShort1, mShort2;
28// public static int mInt1, mInt2;
29// public static float mFloat1, mFloat2;
30// public static long mLong1, mLong2;
31// public static double mDouble1, mDouble2;
32// public static volatile long mVolatileLong1, mVolatileLong2;
33//
34//
buzbeedd3efae2011-08-28 14:39:07 -070035// private int foo_;
36//
37// public IntMath(int stuff) {
38// foo_ = stuff;
39// }
40//
41// public IntMath() {
42// foo_ = 123;
43// }
44//
buzbeee1931742011-08-28 21:15:53 -070045// static int staticFieldTest(int x) {
46// mBoolean1 = true;
47// mBoolean2 = false;
48// mByte1 = 127;
49// mByte2 = -128;
50// mChar1 = 32767;
51// mChar2 = 65535;
52// mShort1 = 32767;
53// mShort2 = -32768;
54// mInt1 = 65537;
55// mInt2 = -65537;
56// mFloat1 = 3.1415f;
57// mFloat2 = -1.0f / 0.0f; // -inf
58// mLong1 = 1234605616436508552L; // 0x1122334455667788
59// mLong2 = -1234605616436508552L;
60// mDouble1 = 3.1415926535;
61// mDouble2 = 1.0 / 0.0; // +inf
62// mVolatileLong1 = mLong1 - 1;
63// mVolatileLong2 = mLong2 + 1;
64//
65// if (!mBoolean1) { return 10; }
66// if (mBoolean2) { return 11; }
67// if (mByte1 != 127) { return 12; }
68// if (mByte2 != -128) { return 13; }
69// if (mChar1 != 32767) { return 14; }
70// if (mChar2 != 65535) { return 15; }
71// if (mShort1 != 32767) { return 16; }
72// if (mShort2 != -32768) { return 17; }
73// if (mInt1 != 65537) { return 18; }
74// if (mInt2 != -65537) { return 19; }
75// if (!(mFloat1 > 3.141f && mFloat1 < 3.142f)) { return 20; }
76// if (mFloat2 >= mFloat1) { return 21; }
77// if (mLong1 != 1234605616436508552L) { return 22; }
78// if (mLong2 != -1234605616436508552L) { return 23; }
79// if (!(mDouble1 > 3.141592653 && mDouble1 < 3.141592654)) { return 24; }
80// if (mDouble2 <= mDouble1) { return 25; }
81// if (mVolatileLong1 != 1234605616436508551L) { return 26; }
82// if (mVolatileLong2 != -1234605616436508551L) { return 27; }
83//
84// return 1000 + x;
85// }
86//
buzbee9e0f9b02011-08-24 15:32:46 -070087// /*
88// * Try to cause some unary operations.
89// */
90// static int unopTest(int x) {
91// x = -x;
92// x ^= 0xffffffff;
93// return x;
94// }
95//
96// static int shiftTest1() {
97// final int[] mBytes = {
98// 0x11, 0x22, 0x33, 0x44, 0x88, 0x99, 0xaa, 0xbb
99// };
100// long l;
101// int i1, i2;
102//
buzbeee6d61962011-08-27 11:58:19 -0700103// if (mBytes[0] != 0x11) return 20;
104// if (mBytes[1] != 0x22) return 21;
105// if (mBytes[2] != 0x33) return 22;
106// if (mBytes[3] != 0x44) return 23;
107// if (mBytes[4] != 0x88) return 24;
108// if (mBytes[5] != 0x99) return 25;
109// if (mBytes[6] != 0xaa) return 26;
110// if (mBytes[7] != 0xbb) return 27;
111//
buzbee9e0f9b02011-08-24 15:32:46 -0700112// i1 = mBytes[0] | mBytes[1] << 8 | mBytes[2] << 16 | mBytes[3] << 24;
113// i2 = mBytes[4] | mBytes[5] << 8 | mBytes[6] << 16 | mBytes[7] << 24;
114// l = i1 | ((long)i2 << 32);
115//
buzbeee6d61962011-08-27 11:58:19 -0700116// if (i1 != 0x44332211) { return 0x80000000 | i1; }
buzbee9e0f9b02011-08-24 15:32:46 -0700117// if (i2 != 0xbbaa9988) { return 2; }
118// if (l != 0xbbaa998844332211L) { return 3; }
119//
120// l = (long)mBytes[0]
121// | (long)mBytes[1] << 8
122// | (long)mBytes[2] << 16
123// | (long)mBytes[3] << 24
124// | (long)mBytes[4] << 32
125// | (long)mBytes[5] << 40
126// | (long)mBytes[6] << 48
127// | (long)mBytes[7] << 56;
128//
129// if (l != 0xbbaa998844332211L) { return 4; }
130// return 0;
131// }
132//
133// static int shiftTest2() {
134//
135// long a = 0x11;
136// long b = 0x22;
137// long c = 0x33;
138// long d = 0x44;
139// long e = 0x55;
140// long f = 0x66;
141// long g = 0x77;
142// long h = 0x88;
143//
144// long result = ((a << 56) | (b << 48) | (c << 40) | (d << 32) |
145// (e << 24) | (f << 16) | (g << 8) | h);
146//
147// if (result != 0x1122334455667788L) { return 1; }
148// return 0;
149// }
150//
151// static int unsignedShiftTest() {
152// byte b = -4;
153// short s = -4;
154// char c = 0xfffc;
155// int i = -4;
156//
157// b >>>= 4;
158// s >>>= 4;
159// c >>>= 4;
160// i >>>= 4;
161//
162// if ((int) b != -1) { return 1; }
163// if ((int) s != -1) { return 2; }
164// if ((int) c != 0x0fff) { return 3; }
165// if (i != 268435455) { return 4; }
166// return 0;
167// }
168//
169// static int convTest() {
170//
171// float f;
172// double d;
173// int i;
174// long l;
175//
176// /* int --> long */
177// i = 7654;
178// l = (long) i;
179// if (l != 7654L) { return 1; }
180//
181// i = -7654;
182// l = (long) i;
183// if (l != -7654L) { return 2; }
184//
185// /* long --> int (with truncation) */
186// l = 5678956789L;
187// i = (int) l;
188// if (i != 1383989493) { return 3; }
189//
190// l = -5678956789L;
191// i = (int) l;
192// if (i != -1383989493) { return 4; }
193// return 0;
194// }
195//
196// static int charSubTest() {
197//
198// char char1 = 0x00e9;
199// char char2 = 0xffff;
200// int i;
201//
202// /* chars are unsigned-expanded to ints before subtraction */
203// i = char1 - char2;
204// if (i != 0xffff00ea) { return 1; }
205// return 0;
206// }
207//
208// /*
209// * We pass in the arguments and return the results so the compiler
210// * doesn't do the math for us. (x=70000, y=-3)
211// */
212// static int intOperTest(int x, int y) {
213// int[] results = new int[10];
214//
215// /* this seems to generate "op-int" instructions */
216// results[0] = x + y;
217// results[1] = x - y;
218// results[2] = x * y;
219// results[3] = x * x;
220// results[4] = x / y;
221// results[5] = x % -y;
222// results[6] = x & y;
223// results[7] = x | y;
224// results[8] = x ^ y;
225//
226// /* this seems to generate "op-int/2addr" instructions */
227// results[9] = x + ((((((((x + y) - y) * y) / y) % y) & y) | y) ^ y);
228//
229// /* check this edge case while we're here (div-int/2addr) */
230// int minInt = -2147483648;
231// int negOne = -results[5];
232// int plusOne = 1;
233// int result = (((minInt + plusOne) - plusOne) / negOne) / negOne;
234//
235// if (result != minInt) { return 1;};
236// if (results[0] != 69997) { return 2;};
237// if (results[1] != 70003) { return 3;};
238// if (results[2] != -210000) { return 4;};
239// if (results[3] != 605032704) { return 5;};
240// if (results[4] != -23333) { return 6;};
241// if (results[5] != 1) { return 7;};
242// if (results[6] != 70000) { return 8;};
243// if (results[7] != -3) { return 9;};
244// if (results[8] != -70003) { return 10;};
245// if (results[9] != 70000) { return 11;};
246//
247// return 0;
248// }
249//
250// /*
251// * More operations, this time with 16-bit constants. (x=77777)
252// */
253// static int lit16Test(int x) {
254//
255// int[] results = new int[8];
256//
257// /* try to generate op-int/lit16" instructions */
258// results[0] = x + 1000;
259// results[1] = 1000 - x;
260// results[2] = x * 1000;
261// results[3] = x / 1000;
262// results[4] = x % 1000;
263// results[5] = x & 1000;
264// results[6] = x | -1000;
265// results[7] = x ^ -1000;
266//
267// if (results[0] != 78777) { return 1; }
268// if (results[1] != -76777) { return 2; }
269// if (results[2] != 77777000) { return 3; }
270// if (results[3] != 77) { return 4; }
271// if (results[4] != 777) { return 5; }
272// if (results[5] != 960) { return 6; }
273// if (results[6] != -39) { return 7; }
274// if (results[7] != -76855) { return 8; }
275// return 0;
276// }
277//
278// /*
279// * More operations, this time with 8-bit constants. (x=-55555)
280// */
281// static int lit8Test(int x) {
282//
283// int[] results = new int[8];
284//
285// /* try to generate op-int/lit8" instructions */
286// results[0] = x + 10;
287// results[1] = 10 - x;
288// results[2] = x * 10;
289// results[3] = x / 10;
290// results[4] = x % 10;
291// results[5] = x & 10;
292// results[6] = x | -10;
293// results[7] = x ^ -10;
294// int minInt = -2147483648;
295// int result = minInt / -1;
296// if (result != minInt) {return 1; }
297// if (results[0] != -55545) {return 2; }
298// if (results[1] != 55565) {return 3; }
299// if (results[2] != -555550) {return 4; }
300// if (results[3] != -5555) {return 5; }
301// if (results[4] != -5) {return 6; }
302// if (results[5] != 8) {return 7; }
303// if (results[6] != -1) {return 8; }
304// if (results[7] != 55563) {return 9; }
305// return 0;
306// }
307//
308//
309// /*
310// * Shift some data. (value=0xff00aa01, dist=8)
311// */
312// static int intShiftTest(int value, int dist) {
313// int results[] = new int[4];
314// results[0] = value << dist;
315// results[1] = value >> dist;
316// results[2] = value >>> dist;
317// results[3] = (((value << dist) >> dist) >>> dist) << dist;
318// if (results[0] != 0x00aa0100) {return 1; }
319// if (results[1] != 0xffff00aa) {return 2; }
320// if (results[2] != 0x00ff00aa) {return 3; }
321// if (results[3] != 0xaa00) {return 4; }
322// return 0;
323// }
324//
325// /*
326// * We pass in the arguments and return the results so the compiler
327// * doesn't do the math for us. (x=70000000000, y=-3)
328// */
329// static int longOperTest(long x, long y) {
330// long[] results = new long[10];
331//
332// /* this seems to generate "op-long" instructions */
333// results[0] = x + y;
334// results[1] = x - y;
335// results[2] = x * y;
336// results[3] = x * x;
337// results[4] = x / y;
338// results[5] = x % -y;
339// results[6] = x & y;
340// results[7] = x | y;
341// results[8] = x ^ y;
342// /* this seems to generate "op-long/2addr" instructions */
343// results[9] = x + ((((((((x + y) - y) * y) / y) % y) & y) | y) ^ y);
344// /* check this edge case while we're here (div-long/2addr) */
345// long minLong = -9223372036854775808L;
346// long negOne = -results[5];
347// long plusOne = 1;
348// long result = (((minLong + plusOne) - plusOne) / negOne) / negOne;
349// if (result != minLong) { return 1; }
350// if (results[0] != 69999999997L) { return 2; }
351// if (results[1] != 70000000003L) { return 3; }
352// if (results[2] != -210000000000L) { return 4; }
353// if (results[3] != -6833923606740729856L) { return 5; } // overflow
354// if (results[4] != -23333333333L) { return 6; }
355// if (results[5] != 1) { return 7; }
356// if (results[6] != 70000000000L) { return 8; }
357// if (results[7] != -3) { return 9; }
358// if (results[8] != -70000000003L) { return 10; }
359// if (results[9] != 70000000000L) { return 11; }
360// if (results.length != 10) { return 12; }
361// return 0;
362// }
363//
364// /*
buzbee7b1b86d2011-08-26 18:59:10 -0700365// * Shift some data. (value=0xd5aa96deff00aa01, dist=16)
buzbee9e0f9b02011-08-24 15:32:46 -0700366// */
367// static long longShiftTest(long value, int dist) {
368// long results[] = new long[4];
369// results[0] = value << dist;
370// results[1] = value >> dist;
371// results[2] = value >>> dist;
372// results[3] = (((value << dist) >> dist) >>> dist) << dist;
buzbee7b1b86d2011-08-26 18:59:10 -0700373// if (results[0] != 0x96deff00aa010000L) { return results[0]; }
374// if (results[1] != 0xffffd5aa96deff00L) { return results[1]; }
375// if (results[2] != 0x0000d5aa96deff00L) { return results[2]; }
376// if (results[3] != 0xffff96deff000000L) { return results[3]; }
buzbee9e0f9b02011-08-24 15:32:46 -0700377// if (results.length != 4) { return 5; }
378//
379// return results[0]; // test return-long
380// }
381//
382// static int switchTest(int a) {
383// int res = 1234;
384//
385// switch (a) {
386// case -1: res = 1; return res;
387// case 0: res = 2; return res;
388// case 1: /*correct*/ break;
389// case 2: res = 3; return res;
390// case 3: res = 4; return res;
391// case 4: res = 5; return res;
392// default: res = 6; return res;
393// }
394// switch (a) {
395// case 3: res = 7; return res;
396// case 4: res = 8; return res;
397// default: /*correct*/ break;
398// }
399//
400// a = 0x12345678;
401//
402// switch (a) {
403// case 0x12345678: /*correct*/ break;
404// case 0x12345679: res = 9; return res;
405// default: res = 1; return res;
406// }
407// switch (a) {
408// case 57: res = 10; return res;
409// case -6: res = 11; return res;
410// case 0x12345678: /*correct*/ break;
411// case 22: res = 12; return res;
412// case 3: res = 13; return res;
413// default: res = 14; return res;
414// }
415// switch (a) {
416// case -6: res = 15; return res;
417// case 3: res = 16; return res;
418// default: /*correct*/ break;
419// }
420//
421// a = -5;
422// switch (a) {
423// case 12: res = 17; return res;
424// case -5: /*correct*/ break;
425// case 0: res = 18; return res;
426// default: res = 19; return res;
427// }
428//
429// switch (a) {
430// default: /*correct*/ break;
431// }
432// return res;
433// }
434// /*
435// * Test the integer comparisons in various ways.
436// */
437// static int testIntCompare(int minus, int plus, int plus2, int zero) {
438// int res = 1111;
439//
440// if (minus > plus)
441// return 1;
442// if (minus >= plus)
443// return 2;
444// if (plus < minus)
445// return 3;
446// if (plus <= minus)
447// return 4;
448// if (plus == minus)
449// return 5;
450// if (plus != plus2)
451// return 6;
452//
453// /* try a branch-taken */
454// if (plus != minus) {
455// res = res;
456// } else {
457// return 7;
458// }
459//
460// if (minus > 0)
461// return 8;
462// if (minus >= 0)
463// return 9;
464// if (plus < 0)
465// return 10;
466// if (plus <= 0)
467// return 11;
468// if (plus == 0)
469// return 12;
470// if (zero != 0)
471// return 13;
472//
473// if (zero == 0) {
474// res = res;
475// } else {
476// return 14;
477// }
478// return res;
479// }
480//
481// /*
482// * Test cmp-long.
483// *
484// * minus=-5, alsoMinus=0xFFFFFFFF00000009, plus=4, alsoPlus=8
485// */
486// static int testLongCompare(long minus, long alsoMinus, long plus,
487// long alsoPlus) {
488// int res = 2222;
489//
490// if (minus > plus)
491// return 2;
492// if (plus < minus)
493// return 3;
494// if (plus == minus)
495// return 4;
496//
497// if (plus >= plus+1)
498// return 5;
499// if (minus >= minus+1)
500// return 6;
501//
502// /* try a branch-taken */
503// if (plus != minus) {
504// res = res;
505// } else {
506// return 7;
507// }
508//
509// /* compare when high words are equal but low words differ */
510// if (plus > alsoPlus)
511// return 8;
512// if (alsoPlus < plus)
513// return 9;
514// if (alsoPlus == plus)
515// return 10;
516//
517// /* high words are equal, low words have apparently different signs */
518// if (minus < alsoMinus) // bug!
519// return 11;
520// if (alsoMinus > minus)
521// return 12;
522// if (alsoMinus == minus)
523// return 13;
524//
525// return res;
526// }
527//
528// /*
529// * Test cmpl-float and cmpg-float.
530// */
531// static int testFloatCompare(float minus, float plus, float plus2,
532// float nan) {
533//
534// int res = 3333;
buzbee9e0f9b02011-08-24 15:32:46 -0700535// if (minus > plus)
536// res = 1;
537// if (plus < minus)
538// res = 2;
539// if (plus == minus)
540// res = 3;
541// if (plus != plus2)
542// res = 4;
543//
544// if (plus <= nan)
545// res = 5;
546// if (plus >= nan)
547// res = 6;
548// if (minus <= nan)
549// res = 7;
550// if (minus >= nan)
551// res = 8;
552// if (nan >= plus)
553// res = 9;
554// if (nan <= plus)
555// res = 10;
556//
557// if (nan == nan)
buzbeee6d61962011-08-27 11:58:19 -0700558// res = 1212;
buzbee9e0f9b02011-08-24 15:32:46 -0700559//
560// return res;
561// }
562//
563// static int testDoubleCompare(double minus, double plus, double plus2,
564// double nan) {
565//
566// int res = 4444;
567//
568// if (minus > plus)
569// return 1;
570// if (plus < minus)
571// return 2;
572// if (plus == minus)
573// return 3;
574// if (plus != plus2)
575// return 4;
576//
577// if (plus <= nan)
578// return 5;
579// if (plus >= nan)
580// return 6;
581// if (minus <= nan)
582// return 7;
583// if (minus >= nan)
584// return 8;
585// if (nan >= plus)
586// return 9;
587// if (nan <= plus)
588// return 10;
589//
590// if (nan == nan)
591// return 11;
592// return res;
593// }
594//
buzbeec5ef0462011-08-25 18:44:49 -0700595// static int fibonacci(int n) {
596// if (n == 0) {
597// return 0;
598// } else if (n == 1) {
599// return 1;
600// } else {
601// return fibonacci(n - 1) + fibonacci(n - 2);
602// }
603// }
buzbee9e0f9b02011-08-24 15:32:46 -0700604//
buzbee7b1b86d2011-08-26 18:59:10 -0700605///*
606// static void throwNullPointerException() {
607// throw new NullPointerException("first throw");
608// }
609//
610// static int throwAndCatch() {
611// try {
612// throwNullPointerException();
613// return 1;
614// } catch (NullPointerException npe) {
615// return 0;
616// }
617// }
618//*/
619//
620// static int manyArgs(int a0, long a1, int a2, long a3, int a4, long a5,
621// int a6, int a7, double a8, float a9, double a10, short a11, int a12,
622// char a13, int a14, int a15, byte a16, boolean a17, int a18, int a19,
623// long a20, long a21, int a22, int a23, int a24, int a25, int a26)
624// {
625// if (a0 != 0) return 0;
626// if (a1 != 1L) return 1;
627// if (a2 != 2) return 2;
628// if (a3 != 3L) return 3;
629// if (a4 != 4) return 4;
630// if (a5 != 5L) return 5;
631// if (a6 != 6) return 6;
632// if (a7 != 7) return 7;
633// if (a8 != 8.0) return 8;
634// if (a9 != 9.0f) return 9;
635// if (a10 != 10.0) return 10;
636// if (a11 != (short)11) return 11;
637// if (a12 != 12) return 12;
638// if (a13 != (char)13) return 13;
639// if (a14 != 14) return 14;
640// if (a15 != 15) return 15;
641// if (a16 != (byte)-16) return 16;
642// if (a17 != true) return 17;
643// if (a18 != 18) return 18;
644// if (a19 != 19) return 19;
645// if (a20 != 20L) return 20;
646// if (a21 != 21L) return 21;
647// if (a22 != 22) return 22;
648// if (a23 != 23) return 23;
649// if (a24 != 24) return 24;
650// if (a25 != 25) return 25;
651// if (a26 != 26) return 26;
652// return -1;
653// }
654//
655// int virtualCall(int a)
656// {
657// return a * 2;
658// }
659//
buzbeedd3efae2011-08-28 14:39:07 -0700660// void setFoo(int a)
661// {
662// foo_ = a;
663// }
664//
665// int getFoo()
666// {
667// return foo_;
668// }
669//
buzbee7b1b86d2011-08-26 18:59:10 -0700670// static int staticCall(int a)
671// {
672// IntMath foo = new IntMath();
673// return foo.virtualCall(a);
674// }
675//
buzbeedd3efae2011-08-28 14:39:07 -0700676// static int testIGetPut(int a)
677// {
678// IntMath foo = new IntMath(99);
679// IntMath foo123 = new IntMath();
680// int z = foo.getFoo();
681// z += a;
682// z += foo123.getFoo();
683// foo.setFoo(z);
684// return foo.getFoo();
685// }
buzbee7b1b86d2011-08-26 18:59:10 -0700686//
buzbee9e0f9b02011-08-24 15:32:46 -0700687// public static void main(String[] args) {
688// int res = unopTest(38);
689// if (res == 37) {
690// System.out.printf("unopTest PASSED\n");
691// } else {
692// System.out.printf("unopTest FAILED: %d\n", res);
693// }
694// res = shiftTest1();
695// if (res == 0) {
696// System.out.printf("shiftTest1 PASSED\n");
697// } else {
698// System.out.printf("shiftTest1 FAILED: %d\n", res);
699// }
700// res = shiftTest2();
701// if (res == 0) {
702// System.out.printf("shiftTest2 PASSED\n");
703// } else {
704// System.out.printf("shiftTest2 FAILED: %d\n", res);
705// }
706// res = unsignedShiftTest();
707// if (res == 0) {
708// System.out.printf("unsignedShiftTest PASSED\n");
709// } else {
710// System.out.printf("unsignedShiftTest FAILED: %d\n", res);
711// }
712// res = convTest();
713// if (res == 0) {
714// System.out.printf("convTest PASSED\n");
715// } else {
716// System.out.printf("convTest FAILED: %d\n", res);
717// }
718// res = charSubTest();
719// if (res == 0) {
720// System.out.printf("charSubTest PASSED\n");
721// } else {
722// System.out.printf("charSubTest FAILED: %d\n", res);
723// }
724// res = intOperTest(70000, -3);
725// if (res == 0) {
726// System.out.printf("intOperTest PASSED\n");
727// } else {
728// System.out.printf("intOperTest FAILED: %d\n", res);
729// }
730// res = longOperTest(70000000000L, -3L);
731// if (res == 0) {
732// System.out.printf("longOperTest PASSED\n");
733// } else {
734// System.out.printf("longOperTest FAILED: %d\n", res);
735// }
736// long lres = longShiftTest(0xd5aa96deff00aa01L, 16);
737// if (lres == 0x96deff00aa010000L) {
738// System.out.printf("longShiftTest PASSED\n");
739// } else {
740// System.out.printf("longShiftTest FAILED: %d\n", res);
741// }
742//
743// res = switchTest(1);
744// if (res == 1234) {
745// System.out.printf("switchTest PASSED\n");
746// } else {
747// System.out.printf("switchTest FAILED: %d\n", res);
748// }
749//
750// res = testIntCompare(-5, 4, 4, 0);
751// if (res == 1111) {
752// System.out.printf("testIntCompare PASSED\n");
753// } else {
754// System.out.printf("testIntCompare FAILED: %d\n", res);
755// }
756//
757// res = testLongCompare(-5L, -4294967287L, 4L, 8L);
758// if (res == 2222) {
759// System.out.printf("testLongCompare PASSED\n");
760// } else {
761// System.out.printf("testLongCompare FAILED: %d\n", res);
762// }
763//
764// res = testFloatCompare(-5.0f, 4.0f, 4.0f, (1.0f/0.0f) / (1.0f/0.0f));
765// if (res == 3333) {
766// System.out.printf("testFloatCompare PASSED\n");
767// } else {
768// System.out.printf("testFloatCompare FAILED: %d\n", res);
769// }
770//
771// res = testDoubleCompare(-5.0, 4.0, 4.0, (1.0/0.0) / (1.0/0.0));
772// if (res == 4444) {
773// System.out.printf("testDoubleCompare PASSED\n");
774// } else {
775// System.out.printf("testDoubleCompare FAILED: %d\n", res);
776// }
buzbeec5ef0462011-08-25 18:44:49 -0700777//
778// res = fibonacci(10);
779// if (res == 55) {
780// System.out.printf("fibonacci PASSED\n");
781// } else {
782// System.out.printf("fibonacci FAILED: %d\n", res);
783// }
buzbee7b1b86d2011-08-26 18:59:10 -0700784//
785///*
786// res = throwAndCatch();
787// if (res == 0) {
788// System.out.printf("throwAndCatch PASSED\n");
789// } else {
790// System.out.printf("throwAndCatch FAILED: %d\n", res);
791// }
792//*/
793//
794// res = manyArgs(0, 1L, 2, 3L, 4, 5L, 6, 7, 8.0, 9.0f, 10.0,
795// (short)11, 12, (char)13, 14, 15, (byte)-16, true, 18,
796// 19, 20L, 21L, 22, 23, 24, 25, 26);
797// if (res == -1) {
798// System.out.printf("manyArgs PASSED\n");
799// } else {
800// System.out.printf("manyArgs FAILED: %d\n", res);
801// }
802//
803// res = staticCall(3);
804// if (res == 6) {
805// System.out.printf("virtualCall PASSED\n");
806// } else {
807// System.out.printf("virtualCall FAILED: %d\n", res);
808// }
809//
buzbeedd3efae2011-08-28 14:39:07 -0700810// res = testIGetPut(111);
811// if (res == 333) {
812// System.out.printf("testGetPut PASSED\n");
813// } else {
814// System.out.printf("testGetPut FAILED: %d\n", res);
815// }
buzbeee1931742011-08-28 21:15:53 -0700816//
817// res = staticFieldTest(404);
818// if (res == 1404) {
819// System.out.printf("staticFieldTest PASSED\n");
820// } else {
821// System.out.printf("staticFieldTest FAILED: %d\n", res);
822// }
buzbee9e0f9b02011-08-24 15:32:46 -0700823// }
824//}
825static const char kIntMathDex[] =
buzbeee1931742011-08-28 21:15:53 -0700826"ZGV4CjAzNQDNfScpnt+aCE7GCvHI7Jifma1Cw1Zt40LcLwAAcAAAAHhWNBIAAAAAAAAAADwvAAC+"
827"AAAAcAAAABMAAABoAwAADwAAALQDAAAUAAAAaAQAAB8AAAAIBQAAAgAAAAAGAACcKQAAQAYAAEYh"
828"AABOIQAAUSEAAFQhAABXIQAAWiEAAF0hAABkIQAAayEAAG8hAAB0IQAAeyEAAJkhAACeIQAApSEA"
829"ALMhAAC2IQAAuyEAAL8hAADKIQAAzyEAAOYhAAD7IQAADyIAACMiAAA3IgAARCIAAEciAABKIgAA"
830"TiIAAFIiAABVIgAAWSIAAF0iAAByIgAAhyIAAIoiAACOIgAAkiIAAJciAACcIgAAoSIAAKYiAACr"
831"IgAAsCIAALUiAAC6IgAAvyIAAMQiAADIIgAAzSIAANIiAADXIgAA3CIAAOEiAADmIgAA6yIAAO8i"
832"AADzIgAA9yIAAPsiAAD/IgAAAyMAAAcjAAASIwAAHCMAACIjAAAlIwAAKCMAAC8jAAA2IwAAQyMA"
833"AFwjAABxIwAAeyMAAJEjAACjIwAApiMAAKwjAACvIwAAsiMAAL0jAADUIwAA5yMAAOwjAAD0IwAA"
834"+iMAAP0jAAAFJAAACCQAAAskAAAPJAAAEyQAACAkAAA5JAAATiQAAFwkAABfJAAAaiQAAHQkAACC"
835"JAAAnCQAALIkAADBJAAA3CQAAPMkAAD5JAAABCUAAA8lAAAXJQAAHyUAACclAAAvJQAANyUAAEEl"
836"AABLJQAAVCUAAF0lAABkJQAAayUAAHMlAAB7JQAAhCUAAI0lAACdJQAArSUAALMlAAC9JQAA0yUA"
837"AOUlAADtJQAA9iUAAP0lAAAAJgAABSYAAA0mAAASJgAAGCYAAB8mAAAoJgAAMCYAADUmAAA9JgAA"
838"RiYAAEkmAABRJgAAXSYAAHUmAACJJgAAlSYAAK0mAADBJgAAzSYAAN4mAAD7JgAAFCcAABsnAAAn"
839"JwAAPycAAFMnAABmJwAAhScAAKAnAACyJwAA0CcAAOonAAACKAAAFigAACMoAAAzKAAATygAAGco"
840"AAB4KAAAlSgAAK4oAAC0KAAAvigAANQoAADmKAAA+SgAABgpAAAzKQAAOikAAEMpAABQKQAAaSkA"
841"AH4pAACBKQAAhCkAAIcpAAABAAAAAgAAAAMAAAAEAAAABQAAAA8AAAASAAAAFAAAABUAAAAWAAAA"
842"FwAAABgAAAAaAAAAGwAAAB4AAAAfAAAAIAAAACEAAAAiAAAABQAAAAQAAAAAAAAABgAAAAQAAACs"
843"IAAABwAAAAQAAAC4IAAACAAAAAQAAADEIAAACQAAAAQAAADMIAAACgAAAAQAAADUIAAACwAAAAQA"
844"AADgIAAADAAAAAQAAAAcIQAADQAAAAQAAAAkIQAAEAAAAAUAAAAwIQAAEwAAAAcAAAA4IQAAEQAA"
845"AAgAAADEIAAAGwAAAA0AAAAAAAAAHAAAAA0AAADEIAAAHQAAAA0AAABAIQAABgAEAFUAAAAGAA4A"
846"agAAAAYADgBrAAAABgAAAGwAAAAGAAAAbQAAAAYAAQBvAAAABgABAHAAAAAGAAIAcQAAAAYAAgBy"
847"AAAABgADAHMAAAAGAAMAdAAAAAYABAB1AAAABgAEAHYAAAAGAAUAdwAAAAYABQB4AAAABgAMAHkA"
848"AAAGAAwAegAAAAYABQB7AAAABgAFAHwAAAALAAcAhwAAAAYADAAAAAAABgANAAAAAAAGAAAARgAA"
buzbeedd3efae2011-08-28 14:39:07 -0700849"AAYAAABJAAAABgADAFAAAAAGAAAAVwAAAAYABABcAAAABgAEAF8AAAAGAAMAYQAAAAYAAwBiAAAA"
buzbeee1931742011-08-28 21:15:53 -0700850"BgAHAGMAAAAGAAkAZgAAAAYADgB9AAAABgAGAH4AAAAGAA0AkAAAAAYAAACRAAAABgAAAJQAAAAG"
851"AAMAlwAAAAYAAwCYAAAABgADAJwAAAAGAAEAnwAAAAYAAgCiAAAABgADAKcAAAAGAAUAqAAAAAYA"
852"CACrAAAABgADAK8AAAAGAAAAsgAAAAYAAwC3AAAABwAKAIsAAAAIAAsAtgAAAAkADAAAAAAACQAA"
853"AAEAAAD/////AAAAABkAAAAAAAAAkS4AAAAAAAAGAAAAAAAAAAkAAAAAAAAADgAAAAAAAACbLgAA"
854"AAAAAAEAAQAAAAAAjSkAAAEAAAAOAAAAAgABAAEAAACSKQAACAAAAHAQHgABABMAewBZEAAADgAC"
855"AAIAAQAAAJkpAAAGAAAAcBAeAAAAWQEAAA4ABAAAAAAAAACiKQAAEAAAABMA6QAUAf//AACRAgAB"
856"FAPqAP//MjIEABITDwMSAyj+BQAAAAAAAAC4KQAAMgAAABMA5h2BARYD5h0xAwEDOAMEABITDwMT"
857"ABrigQEWAxriMQMBAzgDBAASIyj1GAH1AH5SAQAAAIQQFAP1AH5SMjAEABIzKOgYAQv/ga3+////"
858"hBAUAwv/ga0yMAQAEkMo2xIDKNkDAAEAAQAAANcpAAAVAAAAEhA5AgQAEgAPADIC///YAAL/cRAE"
859"AAAACgDYAQL+cRAEAAEACgGwECjwAAAOAAIAAAAAAOMpAACwAAAAEjcSJhIJElgSFRMKCgAjpA8A"
860"kAoMDUsKBAmRCgwNSwoEBZIKDA1LCgQGkgoMDEsKBAcSSpMLDA1LCwQKe9qUCgwKSwoECBJqlQsM"
861"DUsLBAoSepYLDA1LCwQKEwoIAJcLDA1LCwQKEwoJAJALDA2x27Lbs9u027Xbttu327DLSwsEChUA"
862"AIBECgQIe6ESEhUKAICzGpMDCgEyAwMADwVECgQJFAttEQEAMroEAAFlKPdECgQFFAtzEQEAMroE"
863"AAF1KO5EBgQGFAqwy/z/MqYEABJFKOVEBgQHFAcAERAkMnYEAAGFKNwSRkQGBAYTB9ukMnYEABJl"
864"KNNEBgQIMlYEABJ1KM0SZUQFBAUUBnARAQAyZQUAEwUIACjCEnVEBQQFEtYyZQUAEwUJACi5EwUI"
865"AEQFBAUUBo3u/v8yZQUAEwUKACitEwUJAEQFBAUUBnARAQAyZQUAEwULACihAZUonwoAAgAAAAAA"
866"JSoAAD8AAAASRBIzEiISERIFI0APAJgGCAlLBgAFmQYICUsGAAGaBggJSwYAApgGCAm5lrqWuJZL"
867"BgADRAYABRQHAAGqADJ2AwAPAUQBAAEUBqoA//8yYQQAASEo90QBAAIUAqoA/wAyIQQAATEo7kQB"
868"AAMUAgCqAAAyIQQAAUEo5QFRKOMAAAkAAQAAAAAAPSoAAHUAAAASRBIzEiISERIFEwYIACNgDwDQ"
869"hugDSwYABdGG6ANLBgAB0oboA0sGAALThugDSwYAA9SG6ANLBgAEElbVh+gDSwcABhJm1ocY/EsH"
870"AAYSdteHGPxLBwAGRAYABRQHuTMBADJ2AwAPAUQBAAEUBhfU/v8yYQQAASEo90QBAAIUAmjIogQy"
871"IQQAATEo7kQBAAMTAk0AMiEEAAFBKOZEAQAEEwIJAzIhBAASUSjeElFEAQABEwLAAzIhBAASYSjV"
872"EmFEAQABEwLZ/zIhBAAScSjMEnFEAQABFALJ0/7/MiEFABMBCAAowQFRKL8AAAsAAQAAAAAAXioA"
873"AHwAAAASRhI1EiQSExIHEwgIACOCDwDYCAoKSwgCB9kICgpLCAID2ggKCksIAgTbCAoKSwgCBdwI"
874"CgpLCAIGEljdCQoKSwkCCBJo3gkK9ksJAggSeN8JCvZLCQIIFQAAgNsBAP8yAQMADwNECAIHFAkH"
875"J///MpgEAAFDKPdEAwIDFAgN2QAAMoMEAAFTKO5EAwIEFATihff/MkMEAAFjKOVEAwIFEwRN6jJD"
876"BAASUyjdRAMCBhK0MkMEABJjKNYSU0QDAgMTBAgAMkMEABJzKM0SY0QDAgMS9DJDBQATAwgAKMQS"
877"c0QDAgMUBAvZAAAyQwUAEwMJACi5AXMotxEABAAAAAAAjCoAAO4AAAATCQoAI5gQABIJmwoND0wK"
878"CAkSGZwKDQ9MCggJEimdCg0PTAoICRI5nQoNDUwKCAkSSZ4KDQ9MCggJEll9+p8KDQpMCggJEmmg"
879"Cg0PTAoICRJ5oQoND0wKCAkTCQgAogoND0wKCAkTCQkAmwoND7z6vfq++r/6wPrB+sL6u9pMCggJ"
880"GQAAgBJZRQkICX2SFgQBAJsJAAS8Sb4pngYJAjEJBgA4CQQAEhkPCRIJRQkICRgL/TtTTBAAAAAx"
881"CQkLOAkEABIpKPISGUUJCAkYCwM8U0wQAAAAMQkJCzgJBAASOSjkEilFCQgJGAsATAYbz////zEJ"
882"CQs4CQQAEkko1hI5RQkICRgLAAAQ9q8GKaExCQkLOAkEABJZKMgSSUUJCAkYC6uWOZH6////MQkJ"
883"CzgJBAASaSi6EllFCQgJFgsBADEJCQs4CQQAEnkorxJpRQkICRgLADxTTBAAAAAxCQkLOAkFABMJ"
884"CAAooBJ5RQkICRYL/f8xCQkLOAkFABMJCQAolBMJCABFCQgJGAv9w6yz7////zEJCQs4CQUAEwkK"
885"ACiEEwkJAEUJCAkYCwA8U0wQAAAAMQkJCzgJBgATCQsAKQB0/yGJEwoKADKpBgATCQwAKQBr/xIJ"
886"KQBo/w0AAwAAAAAA0SoAAFsAAAASSRI4EicSFhIFI5AQAKMBCgxMAQAFpAEKDEwBAAalAQoMTAEA"
887"B6MBCgzEwcXBw8FMAQAIRQEABRgDAAABqgD/3pYxAQEDOAEFAEUBAAUQAUUBAAYYAwD/3paq1f//"
888"MQEBAzgBBQBFAQAGKPJFAQAHGAMA/96WqtUAADEBAQM4AQUARQEAByjkRQEACBgDAAAA/96W//8x"
889"AQEDOAEFAEUBAAgo1iEBMpEFABYBBQAo0EUBAAUozQAAJwABACIAAADsKgAANwMAABMBJgBxEBkA"
890"AQAKJRMBJQACACUAMxDEAWIBEwAaArEAEgMjMxEAbjAcACEDcQAPAAAACiU5JccBYgETABoCkwAS"
891"AyMzEQBuMBwAIQNxABAAAAAKJTklygFiARMAGgKWABIDIzMRAG4wHAAhA3EAGgAAAAolOSXNAWIB"
892"EwAaArQAEgMjMxEAbjAcACEDcQADAAAACiU5JdABYgETABoCSwASAyMzEQBuMBwAIQNxAAIAAAAK"
893"JTkl0wFiARMAGgJIABIDIzMRAG4wHAAhAxQBcBEBABLScSAGACEACiU5JdIBYgETABoCXgASAyMz"
894"EQBuMBwAIQMYAQA8U0wQAAAAFgP9/3FACgAhQwolOSXOAWIBEwAaAmUAEgMjMxEAbjAcACEDGAEB"
895"qgD/3paq1RMDEABxMAsAIQMLIxgBAAABqgD/3pYxASMBOQHDAWIBEwAaAmgAEgMjMxEAbjAcACED"
896"EhFxEBMAAQAKJRMB0gQCACUAMxDBAWIBEwAaAp4AEgMjMxEAbjAcACEDErESQhJDEgRxQBcAIUMK"
897"JRMBVwQCACUAMxC8AWIBEwAaAqoAEgMjMxEAbjAcACEDFgH7/xgDCQAAAP////8WBQQAFgcIAHcI"
898"GAABAAolEwGuCAIAJQAzELABYgETABoCrQASAyMzEQBuMBwAIQMVAaDAFQKAQBUDgEAVBMB/cUAV"
899"ACFDCiUTAQUNAgAlADMQpwFiARMAGgKkABIDIzMRAG4wHAAhAxkBFMAZAxBAGQUQQBkH+H93CBQA"
900"AQAKJRMBXBECACUAMxCeAWIBEwAaAqEAEgMjMxEAbjAcACEDEwEKAHEQBAABAAolEwE3AAIAJQAz"
901"EJsBYgETABoCUgASAyMzEQBuMBwAIQMSARYCAQASJBYFAwASRxYIBQASahJ7GQwgQBUOEEEZDyRA"
902"ExELABMSDAATEw0AExQOABMVDwATFvD/ExcBABMYEgATGRMAFhoUABYcFQATHhYAEx8XABMgGAAT"
903"IRkAEyIaAHciDQABAAolEvECACUAMxBqAWIBEwAaAoAAEgMjMxEAbjAcACEDEjFxEBEAAQAKJRJh"
904"AgAlADMQaQFiARMAGgK5ABIDIzMRAG4wHAAhAxMBbwBxEBYAAQAKJRMBTQECACUAMxBmAWIBEwAa"
905"AqYAEgMjMxEAbjAcACEDEwGUAXEQEgABAAolEwF8BQIAJQAzEGMBYgETABoCmgASAyMzEQBuMBwA"
906"IQMOAGIBEwAaArAAEhMjMxEAEgR3AR0AJQAMBU0FAwRuMBwAIQMpADf+YgETABoCkgASEyMzEQAS"
907"BHcBHQAlAAwFTQUDBG4wHAAhAykANP5iARMAGgKVABITIzMRABIEdwEdACUADAVNBQMEbjAcACED"
908"KQAx/mIBEwAaArMAEhMjMxEAEgR3AR0AJQAMBU0FAwRuMBwAIQMpAC7+YgETABoCSgASEyMzEQAS"
909"BHcBHQAlAAwFTQUDBG4wHAAhAykAK/5iARMAGgJHABITIzMRABIEdwEdACUADAVNBQMEbjAcACED"
910"KQAo/mIBEwAaAl0AEhMjMxEAEgR3AR0AJQAMBU0FAwRuMBwAIQMpACn+YgETABoCZAASEyMzEQAS"
911"BHcBHQAlAAwFTQUDBG4wHAAhAykALf5iARMAGgJnABITIzMRABIEdwEdACUADAVNBQMEbjAcACED"
912"KQA4/mIBEwAaAp0AEhMjMxEAEgR3AR0AJQAMBU0FAwRuMBwAIQMpADr+YgETABoCqQASEyMzEQAS"
913"BHcBHQAlAAwFTQUDBG4wHAAhAykAP/5iARMAGgKsABITIzMRABIEdwEdACUADAVNBQMEbjAcACED"
914"KQBL/mIBEwAaAqMAEhMjMxEAEgR3AR0AJQAMBU0FAwRuMBwAIQMpAFT+YgETABoCoAASEyMzEQAS"
915"BHcBHQAlAAwFTQUDBG4wHAAhAykAXf5iARMAGgJRABITIzMRABIEdwEdACUADAVNBQMEbjAcACED"
916"KQBg/mIBEwAaAn8AEhMjMxEAEgR3AR0AJQAMBU0FAwRuMBwAIQMpAJH+YgETABoCuAASEyMzEQAS"
917"BHcBHQAlAAwFTQUDBG4wHAAhAykAkv5iARMAGgKlABITIzMRABIEdwEdACUADAVNBQMEbjAcACED"
918"KQCV/mIBEwAaApkAEhMjMxEAEgR3AR0AJQAMBU0FAwRuMBwAIQMpAJj+AAAlACIAAAAAAHkrAADn"
919"AAAAOAMEABIBDwEWAQEAMQEEATgBBAASESj4EiEyFgQAEiEo8xYBAwAxAQcBOAEEABIxKOsSQTIZ"
920"BAASQSjmFgEFADEBCgE4AQQAElEo3hJhMhwEABJhKNkScTIdBAAScSjUGQEgQC8BDgE4AQUAEwEI"
921"ACjLFQEQQS0BEAE4AQUAEwEJACjCGQEkQC8BEQE4AQUAEwEKACi5EwELAAIAEwAyEAUAEwELACiw"
922"EwEMAAIAFAAyEAUAEwEMACinEwENAAIAFQAyEAUAEwENACieEwEOAAIAFgAyEAUAEwEOACiVEwEP"
923"AAIAFwAyEAUAEwEPACiMEwHw/wIAGAAyEAUAEwEQACiDEhECABkAMhAGABMBEQApAHv/EwESAAIA"
924"GgAyEAYAEwESACkAcf8TARMAAgAbADIQBgATARMAKQBn/xYBFAAxARwBOAEGABMBFAApAF3/FgEV"
925"ADEBHgE4AQYAEwEVACkAU/8TARYAAgAgADIQBgATARYAKQBJ/xMBFwACACEAMhAGABMBFwApAD//"
926"EwEYAAIAIgAyEAYAEwEYACkANf8TARkAAgAjADIQBgATARkAKQAr/xMBGgACACQAMhAGABMBGgAp"
927"ACH/EvEpAB7/AAAPAAAAAAAAALorAAD6AAAAEh4SRxI2EiUSCBMJCAAjlA8AJgTdAAAARAkECBMK"
928"EQAyqQUAEwUUAA8FRAkEDhMKIgAyqQUAEwUVACj3RAkEBRMKMwAyqQUAEwUWACjuRAkEBhMKRAAy"
929"qQUAEwUXACjlRAkEBxMKiAAyqQUAEwUYACjcEllECQQJEwqZADKpBQATBRkAKNISaUQJBAkTCqoA"
930"MqkFABMFGgAoyBJ5RAkECRMKuwAyqQUAEwUbACi+RAkECEQKBA7gCgoItqlECgQF4AoKELapRAoE"
931"BuAKChiWAAkKRAkEBxJaRAoECuAKCgi2qRJqRAoECuAKChC2qRJ6RAoECuAKChiWAQkKgQmBGxMN"
932"IADD26ECCQsUCREiM0QykAYAFQUAgLYFKIcUCYiZqrszkYP/GAkRIjNEiJmquzEJAgk4CQUAAWUp"
933"AHf/RAkECIGZRAsEDoG7Ew0IAMPbwblEBQQFgVsTBRAAw1vBuUQFBAaBVRMLGADDtcGVRAkEB4GZ"
934"EwsgAMO5wZUSWUQJBAmBmRMLKADDucGVEmlECQQJgZkTCzAAw7nBlRJ5RAkECYGZEws4AMO5oQIF"
935"CRgFESIzRIiZqrsxBQIFOAUFAAF1KQAz/wGFKQAw/wADBAAIAAAAEQAAACIAAAAzAAAARAAAAIgA"
936"AACZAAAAqgAAALsAAAAWAAAAAAAAAO4rAABJAAAAFgARABYCIgAWBDMAFgZEABYIVQAWCmYAFgx3"
937"ABYOiAATEjgAoxIAEhMUMACjFAIUoRISFBMUKACjFAQUoRISFBMUIACjFAYUoRISFBMUGACjFAgU"
938"oRISFBMUEACjFAoUoRISFBMUCACjFAwUoRISFKEQEg4YEoh3ZlVEMyIRMRIQEjgSBQATEgEADxIT"
939"EgAAKP0AAAMAAQACAAAAJCwAAAoAAAAiAAYAcBAAAAAAbiAbACAACgEPAQoAAQAAAAAAMCwAACgB"
940"AAATCH8AEweA/xMGAIAUBf///v8TBP9/EhBqAAEAEgBqAAIAawgDAGsHBABsBAUAFAD//wAAbAAG"
941"AG0EDwBtBhAAFAABAAEAZwALAGcFDAAUAFYOSUBnAAkAFQCA/2cACgAYAIh3ZlVEMyIRaAANABgA"
942"eIiZqrvM3e5oAA4AGABEF0FU+yEJQGgABwAZAPB/aAAIAGEADQAWAgEAvCBoABEAYQAOABYCAQC7"
943"IGgAEgBjAAEAOQAFABMACgAPAGMAAgA4AAUAEwALACj5ZAADADKABQATAAwAKPJkAAQAMnAFABMA"
944"DQAo62UABQAyQAUAEwAOACjkZQAGABQB//8AADIQBQATAA8AKNpmAA8AMkAFABMAEAAo02YAEAAy"
945"YAUAEwARACjMYAALABQBAQABADIQBQATABIAKMJgAAwAMlAFABMAEwAou2AACQAUASUGSUAtAAAB"
946"PQALAGAACQAUAYcWSUAuAAABOgAFABMAFAAopmAACgBgAQkALQAAAToABQATABUAKJthAA0AGAKI"
947"d2ZVRDMiETEAAAI4AAUAEwAWACiNYQAOABgCeIiZqrvM3e4xAAACOAAGABMAFwApAH//YQAHABgC"
948"OOkvVPshCUAvAAACPQANAGEABwAYAlBFUlT7IQlAMAAAAjoABgATABgAKQBl/2EACABhAgcAMAAA"
949"AjwABgATABkAKQBZ/2EAEQAYAod3ZlVEMyIRMQAAAjgABgATABoAKQBK/2EAEgAYAnmImaq7zN3u"
950"MQAAAjgABgATABsAKQA7/9CQ6AMpADf/AwABAAAAAABkLAAAsAAAABMA0gQrAmAAAAASYAEBDwES"
951"EAEBKP0SIAEBKPoSMAEBKPcSQAEBKPQSUAEBKPErAlsAAAAUAnhWNBIrAl0AAAASEAEBKOUScAEB"
952"KOITAAgAAQEo3hMACQABASjaLAJUAAAAEwAOAAEBKNMTAAoAAQEozxMACwABASjLEwAMAAEBKMcT"
953"AA0AAQEowywCUwAAABKyLAJZAAAAEwATAAEBKLgTAA8AAQEotBMAEAABASiwEwARAAEBKKwTABIA"
954"AQEoqAEBKKYAAQYA/////wYAAAAJAAAAFQAAAAwAAAAPAAAAEgAAAAABAgADAAAADAAAAA8AAAAA"
955"AQIAeFY0EhEAAAANAAAAAAIFAPr///8DAAAAFgAAADkAAAB4VjQSCwAAABMAAAAPAAAABwAAABcA"
956"AAAAAgIA+v///wMAAAALAAAADwAAAAACAwD7////AAAAAAwAAAAXAAAAEwAAAA8AAAAKAAgAAAAA"
957"AHMtAABIAAAAEwBcES8BAgQ9AQQAEhAPADABBAI7AQQAEiAo+i8BBAI5AQQAEjAo9C8BBAY4AQQA"
958"EkAo7jABBAg8AQQAElAo6C8BBAg6AQQAEmAo4jABAgg8AQQAEnAo3C8BAgg6AQUAEwAIACjVLwEI"
959"BDoBBQATAAkAKM4wAQgEPAEFABMACgAoxy8BCAg5AcT/EwALACjABgAEAAAAAAClLQAAPgAAABMA"
960"BQ0tAQIDPQEDABIQLgEDAjsBAwASIC0BAwI5AQMAEjAtAQMEOAEDABJALgEDBTwBAwASUC0BAwU6"
961"AQMAEmAuAQIFPAEDABJwLQECBToBBAATAAgALQEFAzoBBAATAAkALgEFAzwBBAATAAoALQEFBTkB"
962"BAATALwEDwAFAAEAAgAAAM8tAAAeAAAAIgAGABMDYwBwIAEAMAAiAQYAcBAAAAEAbhAFAAAACgKw"
963"Qm4QBQABAAoDsDJuIA4AIABuEAUAAAAKAw8DBgAEAAAAAADpLQAAQwAAABMAVwQ3MgQAEhEPATQy"
964"BAASISj8NSMEABIxKPg2IwQAEkEo9DMjBAASUSjwMkMEABJhKOwyIwcAPQIHABMBCAAo5RJxKOM6"
965"AgUAEwEJACjeOwMFABMBCgAo2TwDBQATAQsAKNQ5AwUAEwEMACjPOAUFABMBDQAoyjkFBAABASjG"
966"EwEOACjDAAANAAgAAAAAAB4uAABYAAAAFgMBABMArggxAQUJPQEEABIhDwExAQkFOwEEABIxKPox"
967"AQkFOQEEABJBKPSbAQkDMQEJAToBBAASUSjsmwEFAzEBBQE6AQQAEmEo5DEBCQU4AQkAMQEJCz0B"
968"BwATAQgAKNkScSjXMQELCTsBBQATAQkAKNAxAQsJOQEFABMBCgAoyTEBBQc7AQUAEwELACjCMQEH"
969"BT0BBQATAQwAKLsxAQcFOQEFABMBDQAotAEBKLIBAAEAAAAAAE8uAAAEAAAAewDfAAD/DwAHAAAA"
970"AAAAAFguAAAjAAAAEwb/DxL1FAT///8PEsASwxQB/P8AABLCjUCPQ45h4gICBDJQBAASFA8EMlME"
971"ABIkKPwyYQQAEjQo+DJCBAASRCj0EgQo8gAAAgABAAAAAAB8LgAAAwAAAFIQAAAPAAAAAgACAAAA"
972"AACCLgAAAwAAAFkBAAAOAAAAAwACAAAAAACKLgAAAwAAANoAAgIPAAAABAAAAAIAAgACAAIABAAA"
973"AAMAAwADAAMAAQAAAAQAAAACAAAABAAEAAQAAAAEAAQABAAEABsAAAAEAAUABAAFAAQABQAEAAQA"
974"AgADAAIADAAEAAEABAAEAAAADgAEAAQABQAFAAQABAAEAAQABAAAAAIAAAAFAAUABAAAAAUABQAF"
975"AAUAAgAAAAUABAACAAAACgARAAEAAAASAAY8aW5pdD4AAUIAAUMAAUQAAUYAAUkABUlEREREAAVJ"
976"RkZGRgACSUkAA0lJSQAFSUlJSUkAHElJSklKSUpJSURGRFNJQ0lJQlpJSUpKSUlJSUkAA0lKSgAF"
977"SUpKSkoADEludE1hdGguamF2YQABSgADSkpJAAJMSQAJTEludE1hdGg7AANMTEwAFUxqYXZhL2lv"
978"L1ByaW50U3RyZWFtOwATTGphdmEvbGFuZy9JbnRlZ2VyOwASTGphdmEvbGFuZy9PYmplY3Q7ABJM"
979"amF2YS9sYW5nL1N0cmluZzsAEkxqYXZhL2xhbmcvU3lzdGVtOwALT2JqZWN0LmphdmEAAVMAAVYA"
980"AlZJAAJWTAABWgACW0kAAltKABNbTGphdmEvbGFuZy9PYmplY3Q7ABNbTGphdmEvbGFuZy9TdHJp"
981"bmc7AAFhAAJhMAACYTEAA2ExMAADYTExAANhMTIAA2ExMwADYTE0AANhMTUAA2ExNgADYTE3AANh"
982"MTgAA2ExOQACYTIAA2EyMAADYTIxAANhMjIAA2EyMwADYTI0AANhMjUAA2EyNgACYTMAAmE0AAJh"
983"NQACYTYAAmE3AAJhOAACYTkACWFsc29NaW51cwAIYWxzb1BsdXMABGFyZ3MAAWIAAWMABWNoYXIx"
984"AAVjaGFyMgALY2hhclN1YlRlc3QAF2NoYXJTdWJUZXN0IEZBSUxFRDogJWQKABNjaGFyU3ViVGVz"
985"dCBQQVNTRUQKAAhjb252VGVzdAAUY29udlRlc3QgRkFJTEVEOiAlZAoAEGNvbnZUZXN0IFBBU1NF"
986"RAoAAWQABGRpc3QAAWUAAWYACWZpYm9uYWNjaQAVZmlib25hY2NpIEZBSUxFRDogJWQKABFmaWJv"
987"bmFjY2kgUEFTU0VECgADZm9vAAZmb28xMjMABGZvb18AAWcABmdldEZvbwABaAABaQACaTEAAmky"
988"AAtpbnRPcGVyVGVzdAAXaW50T3BlclRlc3QgRkFJTEVEOiAlZAoAE2ludE9wZXJUZXN0IFBBU1NF"
989"RAoADGludFNoaWZ0VGVzdAABbAAJbGl0MTZUZXN0AAhsaXQ4VGVzdAAMbG9uZ09wZXJUZXN0ABhs"
990"b25nT3BlclRlc3QgRkFJTEVEOiAlZAoAFGxvbmdPcGVyVGVzdCBQQVNTRUQKAA1sb25nU2hpZnRU"
991"ZXN0ABlsb25nU2hpZnRUZXN0IEZBSUxFRDogJWQKABVsb25nU2hpZnRUZXN0IFBBU1NFRAoABGxy"
992"ZXMACW1Cb29sZWFuMQAJbUJvb2xlYW4yAAZtQnl0ZTEABm1CeXRlMgAGbUJ5dGVzAAZtQ2hhcjEA"
993"Bm1DaGFyMgAIbURvdWJsZTEACG1Eb3VibGUyAAdtRmxvYXQxAAdtRmxvYXQyAAVtSW50MQAFbUlu"
994"dDIABm1Mb25nMQAGbUxvbmcyAAdtU2hvcnQxAAdtU2hvcnQyAA5tVm9sYXRpbGVMb25nMQAObVZv"
995"bGF0aWxlTG9uZzIABG1haW4ACG1hbnlBcmdzABRtYW55QXJncyBGQUlMRUQ6ICVkCgAQbWFueUFy"
996"Z3MgUEFTU0VECgAGbWluSW50AAdtaW5Mb25nAAVtaW51cwABbgADbmFuAAZuZWdPbmUAA291dAAE"
997"cGx1cwAFcGx1czIAB3BsdXNPbmUABnByaW50ZgADcmVzAAZyZXN1bHQAB3Jlc3VsdHMAAXMABnNl"
998"dEZvbwAKc2hpZnRUZXN0MQAWc2hpZnRUZXN0MSBGQUlMRUQ6ICVkCgASc2hpZnRUZXN0MSBQQVNT"
999"RUQKAApzaGlmdFRlc3QyABZzaGlmdFRlc3QyIEZBSUxFRDogJWQKABJzaGlmdFRlc3QyIFBBU1NF"
1000"RAoACnN0YXRpY0NhbGwAD3N0YXRpY0ZpZWxkVGVzdAAbc3RhdGljRmllbGRUZXN0IEZBSUxFRDog"
1001"JWQKABdzdGF0aWNGaWVsZFRlc3QgUEFTU0VECgAFc3R1ZmYACnN3aXRjaFRlc3QAFnN3aXRjaFRl"
1002"c3QgRkFJTEVEOiAlZAoAEnN3aXRjaFRlc3QgUEFTU0VECgARdGVzdERvdWJsZUNvbXBhcmUAHXRl"
1003"c3REb3VibGVDb21wYXJlIEZBSUxFRDogJWQKABl0ZXN0RG91YmxlQ29tcGFyZSBQQVNTRUQKABB0"
1004"ZXN0RmxvYXRDb21wYXJlABx0ZXN0RmxvYXRDb21wYXJlIEZBSUxFRDogJWQKABh0ZXN0RmxvYXRD"
1005"b21wYXJlIFBBU1NFRAoAFnRlc3RHZXRQdXQgRkFJTEVEOiAlZAoAEnRlc3RHZXRQdXQgUEFTU0VE"
1006"CgALdGVzdElHZXRQdXQADnRlc3RJbnRDb21wYXJlABp0ZXN0SW50Q29tcGFyZSBGQUlMRUQ6ICVk"
1007"CgAWdGVzdEludENvbXBhcmUgUEFTU0VECgAPdGVzdExvbmdDb21wYXJlABt0ZXN0TG9uZ0NvbXBh"
1008"cmUgRkFJTEVEOiAlZAoAF3Rlc3RMb25nQ29tcGFyZSBQQVNTRUQKAAR0aGlzAAh1bm9wVGVzdAAU"
1009"dW5vcFRlc3QgRkFJTEVEOiAlZAoAEHVub3BUZXN0IFBBU1NFRAoAEXVuc2lnbmVkU2hpZnRUZXN0"
1010"AB11bnNpZ25lZFNoaWZ0VGVzdCBGQUlMRUQ6ICVkCgAZdW5zaWduZWRTaGlmdFRlc3QgUEFTU0VE"
1011"CgAFdmFsdWUAB3ZhbHVlT2YAC3ZpcnR1YWxDYWxsABd2aXJ0dWFsQ2FsbCBGQUlMRUQ6ICVkCgAT"
1012"dmlydHVhbENhbGwgUEFTU0VECgABeAABeQABegAEemVybwADAAcOABQABw48SwAQAZwBBw48LQCx"
1013"AQAHDi0DAEUCPwMBRgItAwJaBWkAnAEABw4tAwBaBR4DAWEGAg53AnQdLR6JWh55Wh54AL8EAYUB"
1014"Bx0tIRovAMABArsBvAEHWU0DBI8BEEtLS0taWlpaa+MtAwCCAQU8AwGHAQUeAwKLAQVbAwOOAQUC"
1015"DCwCdR2WlpaWlmm0lsPTAKQCArYBTgdZLQMAjwEQS0tLeHsalpalAOoBAbsBB1lNAwCPARBLS0tL"
1016"S1paW38CeR2WloeHlpbDAIYCAbsBB1lNAwKPARBLS0tLS1paWi0DAIIBBS0DAY4BBTUCeB2WlpaH"
1017"eJaWwwC1AgK7AbwBBw5NAwiPARFaWlpaWmlaWmriLQMAgwEGSwMChwEGLQMEiwEGaQMGjgEGAgxZ"
1018"AnUd4eHh4eG08MP/AREPlgDbAgK2AU4HWS0DAI8BEUtLS3jXAnsd4eHhagCbBQFCBw5pAyWNAQVp"
1019"qEstqEstqEstqEstqEstqIctqLQtqLQDI2oGlqlaaamHaanwaanDaanDaalpaQIOpAE1EVqpWlqp"
1020"aWmpaWmoAv1+HQUjARMUARMUARMUARMUARMUARMUARMUARMUBiMBExUBExUBExUBExUBExUBExUC"
1021"EgETDgETFQETFQETFQDcBBslJjE5Ojs8PT4/JygpKissLS4vMDIzNDU2NzgHDgIbOwJmHYdah1qH"
1022"WlqWlpaWlpaWlpaWpaWlpaWlpaWlAEwAB1l9AwRvEAIbhgJmHZaWlpalpaYBEg8DAFsFARUPAwFc"
1023"BXkDAmEGllrEATgX0gJfLAByAAcOLQMAJAYtAwJDBi0DBEQGLQMGTQYtAwhPBi0DClAGLQMMVwYu"
1024"Aw5ZBgEqEQMQjgEGtACLBQEkBw5aAwBUBwAZAbsBB7M8PC0tLVotLVotWkt4eHhLeHkCE2gCbh14"
1025"eHh4pXh4pXgBFQ+04fABGg/D8PEA6gIBJAcOLgMAjQEFQgIoLAUAAwGNAQUCUh0FAQYAAQIFAAYB"
1026"HgUBBgABAgUABgEfBQEGAAECBQAGAR4FAQYAAQIFAAYBHgUBBgABAgUABgEgBQEGAEE9PgECBQAG"
1027"AQJ2HQUBBgABAgUABgEeBQEGAAEDBQAGASUFAQYAAQMFAAYBIAUBBgBBAQMFAAYBAnsdBQEGAAED"
1028"BQAGAR4FAQYAAQMFAAYBHwUBBgABAwUABgEeBQEGAAEDBQAGASAFAQYAQR4/AQMFAAYBAnYdBQEG"
1029"AAEDBQAGAR4FAQYAAQMFAAYBIwUBBgABAwUABgEfBQEGAAEDBQAGAQEBBQEGACQFAAYBAlEdARAX"
1030"josBFharAKEEBIQBiQGKAYYBBw4uAwCNAQVLAhcdBQACah0GAEstSy1LLkstSy1LLUs8SzxLPUsA"
1031"gQQEhAGJAYoBhgEHDi0DAI0BBUseSx5LHksfSx5LHkseSy1LLUsuSy4AkQUBJAcOeAMAVAdaAwFV"
1032"B0sDAr0BBR5aPAChAwSEAYkBigG+AQcOLgMAjQEFLQIlHQJcHS0tLS0tLS0tLS8yLTcxLTwtPC08"
1033"LTwtPUAbANMDBIQBQIkBQQcsLgMAjQEFSwIiHQJfHUstSy5pLWkvUUsCezsySzxLPks8SzxLTABG"
1034"AbsBBw4eLQCDAQAHaB4DAEMBHgMDkAENPAMBRAIfAwJaBR4eHi4/GktLSwCGBQAHDgCBBQEkBw4t"
1035"APwEASQHDgAAAAEAHoGABMAMEgEZAwEJAQkBCQEJAQkBCQEJAQkBCQEJAQkBCQEJAQkBCQEJAUkB"
1036"SQACAIGABNQMAYGABPQMAQiQDQEIwA0BCLQOAgjwDgEI4BEBCPASAQjsFAEI9BYBCOAaAQmoHAEI"
1037"qCkCCIgtAQiMMQEIsDIBCNQyAQi0NwEIpDoBCMQ7AQjQPAEInD0BCLQ+AQj0PwEIjEAFAORACQD8"
1038"QA0AlEEAAAANAAAAAAAAAAEAAAAAAAAAAQAAAL4AAABwAAAAAgAAABMAAABoAwAAAwAAAA8AAAC0"
1039"AwAABAAAABQAAABoBAAABQAAAB8AAAAIBQAABgAAAAIAAAAABgAAASAAAB0AAABABgAAARAAAAsA"
1040"AACsIAAAAiAAAL4AAABGIQAAAyAAAB0AAACNKQAAACAAAAIAAACRLgAAABAAAAEAAAA8LwAA";
buzbee9e0f9b02011-08-24 15:32:46 -07001041} // namespace art