From d9ebbfde48abf4d27d6c80aa9084fefed553317f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Tue, 17 Feb 2015 13:28:58 +0100 Subject: [PATCH] ManyFunctions performance test: replace xor with correct exp operator --- test/ManyFunctions.sol | 424 ++++++++++++++++-------------- test/ManyFunctionsGenerator.py | 4 +- test/vmPerformanceTestFiller.json | 2 +- 3 files changed, 229 insertions(+), 201 deletions(-) diff --git a/test/ManyFunctions.sol b/test/ManyFunctions.sol index 60dc61c42..691d98f46 100644 --- a/test/ManyFunctions.sol +++ b/test/ManyFunctions.sol @@ -1,14 +1,41 @@ +// Based on input param calls ~100 functions from ~200, random algorithm is really bad. +contract ManyFunctions { + + function start(uint seed) returns (uint) { + var r = nextRand(seed); + if (r >= 2**78) + return left1(r); + return right1(r); + } + + function finish(uint seed) returns (uint) { + return seed; + } + + function nextRand(uint seed) returns (uint) { + var a = 39948330534945941795786356397633709378407037920056054402537049186942880579585; + return a * seed + 1; + } + + function right100(uint seed) returns (uint) { + return finish(seed); + } + + function left100(uint seed) returns (uint) { + return finish(nextRand(seed)); + } + function right1(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^79) + if (r >= 2**79) return right2(r); return left2(r); } function left1(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^79) + if (r >= 2**79) return left2(r); return right2(r); } @@ -16,14 +43,14 @@ function right2(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^80) + if (r >= 2**80) return right3(r); return left3(r); } function left2(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^80) + if (r >= 2**80) return left3(r); return right3(r); } @@ -31,14 +58,14 @@ function right3(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^81) + if (r >= 2**81) return right4(r); return left4(r); } function left3(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^81) + if (r >= 2**81) return left4(r); return right4(r); } @@ -46,14 +73,14 @@ function right4(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^82) + if (r >= 2**82) return right5(r); return left5(r); } function left4(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^82) + if (r >= 2**82) return left5(r); return right5(r); } @@ -61,14 +88,14 @@ function right5(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^83) + if (r >= 2**83) return right6(r); return left6(r); } function left5(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^83) + if (r >= 2**83) return left6(r); return right6(r); } @@ -76,14 +103,14 @@ function right6(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^84) + if (r >= 2**84) return right7(r); return left7(r); } function left6(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^84) + if (r >= 2**84) return left7(r); return right7(r); } @@ -91,14 +118,14 @@ function right7(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^85) + if (r >= 2**85) return right8(r); return left8(r); } function left7(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^85) + if (r >= 2**85) return left8(r); return right8(r); } @@ -106,14 +133,14 @@ function right8(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^86) + if (r >= 2**86) return right9(r); return left9(r); } function left8(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^86) + if (r >= 2**86) return left9(r); return right9(r); } @@ -121,14 +148,14 @@ function right9(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^87) + if (r >= 2**87) return right10(r); return left10(r); } function left9(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^87) + if (r >= 2**87) return left10(r); return right10(r); } @@ -136,14 +163,14 @@ function right10(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^88) + if (r >= 2**88) return right11(r); return left11(r); } function left10(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^88) + if (r >= 2**88) return left11(r); return right11(r); } @@ -151,14 +178,14 @@ function right11(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^89) + if (r >= 2**89) return right12(r); return left12(r); } function left11(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^89) + if (r >= 2**89) return left12(r); return right12(r); } @@ -166,14 +193,14 @@ function right12(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^90) + if (r >= 2**90) return right13(r); return left13(r); } function left12(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^90) + if (r >= 2**90) return left13(r); return right13(r); } @@ -181,14 +208,14 @@ function right13(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^91) + if (r >= 2**91) return right14(r); return left14(r); } function left13(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^91) + if (r >= 2**91) return left14(r); return right14(r); } @@ -196,14 +223,14 @@ function right14(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^92) + if (r >= 2**92) return right15(r); return left15(r); } function left14(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^92) + if (r >= 2**92) return left15(r); return right15(r); } @@ -211,14 +238,14 @@ function right15(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^93) + if (r >= 2**93) return right16(r); return left16(r); } function left15(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^93) + if (r >= 2**93) return left16(r); return right16(r); } @@ -226,14 +253,14 @@ function right16(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^94) + if (r >= 2**94) return right17(r); return left17(r); } function left16(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^94) + if (r >= 2**94) return left17(r); return right17(r); } @@ -241,14 +268,14 @@ function right17(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^95) + if (r >= 2**95) return right18(r); return left18(r); } function left17(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^95) + if (r >= 2**95) return left18(r); return right18(r); } @@ -256,14 +283,14 @@ function right18(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^96) + if (r >= 2**96) return right19(r); return left19(r); } function left18(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^96) + if (r >= 2**96) return left19(r); return right19(r); } @@ -271,14 +298,14 @@ function right19(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^97) + if (r >= 2**97) return right20(r); return left20(r); } function left19(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^97) + if (r >= 2**97) return left20(r); return right20(r); } @@ -286,14 +313,14 @@ function right20(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^98) + if (r >= 2**98) return right21(r); return left21(r); } function left20(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^98) + if (r >= 2**98) return left21(r); return right21(r); } @@ -301,14 +328,14 @@ function right21(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^99) + if (r >= 2**99) return right22(r); return left22(r); } function left21(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^99) + if (r >= 2**99) return left22(r); return right22(r); } @@ -316,14 +343,14 @@ function right22(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^100) + if (r >= 2**100) return right23(r); return left23(r); } function left22(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^100) + if (r >= 2**100) return left23(r); return right23(r); } @@ -331,14 +358,14 @@ function right23(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^101) + if (r >= 2**101) return right24(r); return left24(r); } function left23(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^101) + if (r >= 2**101) return left24(r); return right24(r); } @@ -346,14 +373,14 @@ function right24(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^102) + if (r >= 2**102) return right25(r); return left25(r); } function left24(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^102) + if (r >= 2**102) return left25(r); return right25(r); } @@ -361,14 +388,14 @@ function right25(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^103) + if (r >= 2**103) return right26(r); return left26(r); } function left25(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^103) + if (r >= 2**103) return left26(r); return right26(r); } @@ -376,14 +403,14 @@ function right26(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^104) + if (r >= 2**104) return right27(r); return left27(r); } function left26(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^104) + if (r >= 2**104) return left27(r); return right27(r); } @@ -391,14 +418,14 @@ function right27(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^105) + if (r >= 2**105) return right28(r); return left28(r); } function left27(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^105) + if (r >= 2**105) return left28(r); return right28(r); } @@ -406,14 +433,14 @@ function right28(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^106) + if (r >= 2**106) return right29(r); return left29(r); } function left28(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^106) + if (r >= 2**106) return left29(r); return right29(r); } @@ -421,14 +448,14 @@ function right29(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^107) + if (r >= 2**107) return right30(r); return left30(r); } function left29(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^107) + if (r >= 2**107) return left30(r); return right30(r); } @@ -436,14 +463,14 @@ function right30(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^108) + if (r >= 2**108) return right31(r); return left31(r); } function left30(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^108) + if (r >= 2**108) return left31(r); return right31(r); } @@ -451,14 +478,14 @@ function right31(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^109) + if (r >= 2**109) return right32(r); return left32(r); } function left31(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^109) + if (r >= 2**109) return left32(r); return right32(r); } @@ -466,14 +493,14 @@ function right32(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^110) + if (r >= 2**110) return right33(r); return left33(r); } function left32(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^110) + if (r >= 2**110) return left33(r); return right33(r); } @@ -481,14 +508,14 @@ function right33(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^111) + if (r >= 2**111) return right34(r); return left34(r); } function left33(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^111) + if (r >= 2**111) return left34(r); return right34(r); } @@ -496,14 +523,14 @@ function right34(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^112) + if (r >= 2**112) return right35(r); return left35(r); } function left34(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^112) + if (r >= 2**112) return left35(r); return right35(r); } @@ -511,14 +538,14 @@ function right35(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^113) + if (r >= 2**113) return right36(r); return left36(r); } function left35(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^113) + if (r >= 2**113) return left36(r); return right36(r); } @@ -526,14 +553,14 @@ function right36(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^114) + if (r >= 2**114) return right37(r); return left37(r); } function left36(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^114) + if (r >= 2**114) return left37(r); return right37(r); } @@ -541,14 +568,14 @@ function right37(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^115) + if (r >= 2**115) return right38(r); return left38(r); } function left37(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^115) + if (r >= 2**115) return left38(r); return right38(r); } @@ -556,14 +583,14 @@ function right38(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^116) + if (r >= 2**116) return right39(r); return left39(r); } function left38(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^116) + if (r >= 2**116) return left39(r); return right39(r); } @@ -571,14 +598,14 @@ function right39(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^117) + if (r >= 2**117) return right40(r); return left40(r); } function left39(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^117) + if (r >= 2**117) return left40(r); return right40(r); } @@ -586,14 +613,14 @@ function right40(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^118) + if (r >= 2**118) return right41(r); return left41(r); } function left40(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^118) + if (r >= 2**118) return left41(r); return right41(r); } @@ -601,14 +628,14 @@ function right41(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^119) + if (r >= 2**119) return right42(r); return left42(r); } function left41(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^119) + if (r >= 2**119) return left42(r); return right42(r); } @@ -616,14 +643,14 @@ function right42(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^120) + if (r >= 2**120) return right43(r); return left43(r); } function left42(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^120) + if (r >= 2**120) return left43(r); return right43(r); } @@ -631,14 +658,14 @@ function right43(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^121) + if (r >= 2**121) return right44(r); return left44(r); } function left43(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^121) + if (r >= 2**121) return left44(r); return right44(r); } @@ -646,14 +673,14 @@ function right44(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^122) + if (r >= 2**122) return right45(r); return left45(r); } function left44(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^122) + if (r >= 2**122) return left45(r); return right45(r); } @@ -661,14 +688,14 @@ function right45(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^123) + if (r >= 2**123) return right46(r); return left46(r); } function left45(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^123) + if (r >= 2**123) return left46(r); return right46(r); } @@ -676,14 +703,14 @@ function right46(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^124) + if (r >= 2**124) return right47(r); return left47(r); } function left46(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^124) + if (r >= 2**124) return left47(r); return right47(r); } @@ -691,14 +718,14 @@ function right47(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^125) + if (r >= 2**125) return right48(r); return left48(r); } function left47(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^125) + if (r >= 2**125) return left48(r); return right48(r); } @@ -706,14 +733,14 @@ function right48(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^126) + if (r >= 2**126) return right49(r); return left49(r); } function left48(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^126) + if (r >= 2**126) return left49(r); return right49(r); } @@ -721,14 +748,14 @@ function right49(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^127) + if (r >= 2**127) return right50(r); return left50(r); } function left49(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^127) + if (r >= 2**127) return left50(r); return right50(r); } @@ -736,14 +763,14 @@ function right50(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^128) + if (r >= 2**128) return right51(r); return left51(r); } function left50(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^128) + if (r >= 2**128) return left51(r); return right51(r); } @@ -751,14 +778,14 @@ function right51(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^129) + if (r >= 2**129) return right52(r); return left52(r); } function left51(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^129) + if (r >= 2**129) return left52(r); return right52(r); } @@ -766,14 +793,14 @@ function right52(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^130) + if (r >= 2**130) return right53(r); return left53(r); } function left52(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^130) + if (r >= 2**130) return left53(r); return right53(r); } @@ -781,14 +808,14 @@ function right53(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^131) + if (r >= 2**131) return right54(r); return left54(r); } function left53(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^131) + if (r >= 2**131) return left54(r); return right54(r); } @@ -796,14 +823,14 @@ function right54(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^132) + if (r >= 2**132) return right55(r); return left55(r); } function left54(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^132) + if (r >= 2**132) return left55(r); return right55(r); } @@ -811,14 +838,14 @@ function right55(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^133) + if (r >= 2**133) return right56(r); return left56(r); } function left55(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^133) + if (r >= 2**133) return left56(r); return right56(r); } @@ -826,14 +853,14 @@ function right56(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^134) + if (r >= 2**134) return right57(r); return left57(r); } function left56(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^134) + if (r >= 2**134) return left57(r); return right57(r); } @@ -841,14 +868,14 @@ function right57(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^135) + if (r >= 2**135) return right58(r); return left58(r); } function left57(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^135) + if (r >= 2**135) return left58(r); return right58(r); } @@ -856,14 +883,14 @@ function right58(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^136) + if (r >= 2**136) return right59(r); return left59(r); } function left58(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^136) + if (r >= 2**136) return left59(r); return right59(r); } @@ -871,14 +898,14 @@ function right59(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^137) + if (r >= 2**137) return right60(r); return left60(r); } function left59(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^137) + if (r >= 2**137) return left60(r); return right60(r); } @@ -886,14 +913,14 @@ function right60(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^138) + if (r >= 2**138) return right61(r); return left61(r); } function left60(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^138) + if (r >= 2**138) return left61(r); return right61(r); } @@ -901,14 +928,14 @@ function right61(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^139) + if (r >= 2**139) return right62(r); return left62(r); } function left61(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^139) + if (r >= 2**139) return left62(r); return right62(r); } @@ -916,14 +943,14 @@ function right62(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^140) + if (r >= 2**140) return right63(r); return left63(r); } function left62(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^140) + if (r >= 2**140) return left63(r); return right63(r); } @@ -931,14 +958,14 @@ function right63(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^141) + if (r >= 2**141) return right64(r); return left64(r); } function left63(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^141) + if (r >= 2**141) return left64(r); return right64(r); } @@ -946,14 +973,14 @@ function right64(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^142) + if (r >= 2**142) return right65(r); return left65(r); } function left64(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^142) + if (r >= 2**142) return left65(r); return right65(r); } @@ -961,14 +988,14 @@ function right65(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^143) + if (r >= 2**143) return right66(r); return left66(r); } function left65(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^143) + if (r >= 2**143) return left66(r); return right66(r); } @@ -976,14 +1003,14 @@ function right66(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^144) + if (r >= 2**144) return right67(r); return left67(r); } function left66(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^144) + if (r >= 2**144) return left67(r); return right67(r); } @@ -991,14 +1018,14 @@ function right67(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^145) + if (r >= 2**145) return right68(r); return left68(r); } function left67(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^145) + if (r >= 2**145) return left68(r); return right68(r); } @@ -1006,14 +1033,14 @@ function right68(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^146) + if (r >= 2**146) return right69(r); return left69(r); } function left68(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^146) + if (r >= 2**146) return left69(r); return right69(r); } @@ -1021,14 +1048,14 @@ function right69(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^147) + if (r >= 2**147) return right70(r); return left70(r); } function left69(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^147) + if (r >= 2**147) return left70(r); return right70(r); } @@ -1036,14 +1063,14 @@ function right70(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^148) + if (r >= 2**148) return right71(r); return left71(r); } function left70(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^148) + if (r >= 2**148) return left71(r); return right71(r); } @@ -1051,14 +1078,14 @@ function right71(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^149) + if (r >= 2**149) return right72(r); return left72(r); } function left71(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^149) + if (r >= 2**149) return left72(r); return right72(r); } @@ -1066,14 +1093,14 @@ function right72(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^150) + if (r >= 2**150) return right73(r); return left73(r); } function left72(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^150) + if (r >= 2**150) return left73(r); return right73(r); } @@ -1081,14 +1108,14 @@ function right73(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^151) + if (r >= 2**151) return right74(r); return left74(r); } function left73(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^151) + if (r >= 2**151) return left74(r); return right74(r); } @@ -1096,14 +1123,14 @@ function right74(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^152) + if (r >= 2**152) return right75(r); return left75(r); } function left74(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^152) + if (r >= 2**152) return left75(r); return right75(r); } @@ -1111,14 +1138,14 @@ function right75(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^153) + if (r >= 2**153) return right76(r); return left76(r); } function left75(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^153) + if (r >= 2**153) return left76(r); return right76(r); } @@ -1126,14 +1153,14 @@ function right76(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^154) + if (r >= 2**154) return right77(r); return left77(r); } function left76(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^154) + if (r >= 2**154) return left77(r); return right77(r); } @@ -1141,14 +1168,14 @@ function right77(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^155) + if (r >= 2**155) return right78(r); return left78(r); } function left77(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^155) + if (r >= 2**155) return left78(r); return right78(r); } @@ -1156,14 +1183,14 @@ function right78(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^156) + if (r >= 2**156) return right79(r); return left79(r); } function left78(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^156) + if (r >= 2**156) return left79(r); return right79(r); } @@ -1171,14 +1198,14 @@ function right79(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^157) + if (r >= 2**157) return right80(r); return left80(r); } function left79(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^157) + if (r >= 2**157) return left80(r); return right80(r); } @@ -1186,14 +1213,14 @@ function right80(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^158) + if (r >= 2**158) return right81(r); return left81(r); } function left80(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^158) + if (r >= 2**158) return left81(r); return right81(r); } @@ -1201,14 +1228,14 @@ function right81(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^159) + if (r >= 2**159) return right82(r); return left82(r); } function left81(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^159) + if (r >= 2**159) return left82(r); return right82(r); } @@ -1216,14 +1243,14 @@ function right82(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^160) + if (r >= 2**160) return right83(r); return left83(r); } function left82(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^160) + if (r >= 2**160) return left83(r); return right83(r); } @@ -1231,14 +1258,14 @@ function right83(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^161) + if (r >= 2**161) return right84(r); return left84(r); } function left83(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^161) + if (r >= 2**161) return left84(r); return right84(r); } @@ -1246,14 +1273,14 @@ function right84(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^162) + if (r >= 2**162) return right85(r); return left85(r); } function left84(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^162) + if (r >= 2**162) return left85(r); return right85(r); } @@ -1261,14 +1288,14 @@ function right85(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^163) + if (r >= 2**163) return right86(r); return left86(r); } function left85(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^163) + if (r >= 2**163) return left86(r); return right86(r); } @@ -1276,14 +1303,14 @@ function right86(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^164) + if (r >= 2**164) return right87(r); return left87(r); } function left86(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^164) + if (r >= 2**164) return left87(r); return right87(r); } @@ -1291,14 +1318,14 @@ function right87(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^165) + if (r >= 2**165) return right88(r); return left88(r); } function left87(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^165) + if (r >= 2**165) return left88(r); return right88(r); } @@ -1306,14 +1333,14 @@ function right88(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^166) + if (r >= 2**166) return right89(r); return left89(r); } function left88(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^166) + if (r >= 2**166) return left89(r); return right89(r); } @@ -1321,14 +1348,14 @@ function right89(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^167) + if (r >= 2**167) return right90(r); return left90(r); } function left89(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^167) + if (r >= 2**167) return left90(r); return right90(r); } @@ -1336,14 +1363,14 @@ function right90(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^168) + if (r >= 2**168) return right91(r); return left91(r); } function left90(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^168) + if (r >= 2**168) return left91(r); return right91(r); } @@ -1351,14 +1378,14 @@ function right91(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^169) + if (r >= 2**169) return right92(r); return left92(r); } function left91(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^169) + if (r >= 2**169) return left92(r); return right92(r); } @@ -1366,14 +1393,14 @@ function right92(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^170) + if (r >= 2**170) return right93(r); return left93(r); } function left92(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^170) + if (r >= 2**170) return left93(r); return right93(r); } @@ -1381,14 +1408,14 @@ function right93(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^171) + if (r >= 2**171) return right94(r); return left94(r); } function left93(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^171) + if (r >= 2**171) return left94(r); return right94(r); } @@ -1396,14 +1423,14 @@ function right94(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^172) + if (r >= 2**172) return right95(r); return left95(r); } function left94(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^172) + if (r >= 2**172) return left95(r); return right95(r); } @@ -1411,14 +1438,14 @@ function right95(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^173) + if (r >= 2**173) return right96(r); return left96(r); } function left95(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^173) + if (r >= 2**173) return left96(r); return right96(r); } @@ -1426,14 +1453,14 @@ function right96(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^174) + if (r >= 2**174) return right97(r); return left97(r); } function left96(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^174) + if (r >= 2**174) return left97(r); return right97(r); } @@ -1441,14 +1468,14 @@ function right97(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^175) + if (r >= 2**175) return right98(r); return left98(r); } function left97(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^175) + if (r >= 2**175) return left98(r); return right98(r); } @@ -1456,14 +1483,14 @@ function right98(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^176) + if (r >= 2**176) return right99(r); return left99(r); } function left98(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^176) + if (r >= 2**176) return left99(r); return right99(r); } @@ -1471,15 +1498,16 @@ function right99(uint seed) returns (uint) { var r = nextRand(seed); - if (r >= 2^177) + if (r >= 2**177) return right100(r); return left100(r); } function left99(uint seed) returns (uint) { var r = nextRand(nextRand(seed)); - if (r >= 2^177) + if (r >= 2**177) return left100(r); return right100(r); } +} \ No newline at end of file diff --git a/test/ManyFunctionsGenerator.py b/test/ManyFunctionsGenerator.py index 93eef784c..b4f36af0e 100644 --- a/test/ManyFunctionsGenerator.py +++ b/test/ManyFunctionsGenerator.py @@ -7,14 +7,14 @@ i = 1 template = """ function right{0}(uint seed) returns (uint) {{ var r = nextRand(seed); - if (r >= 2^{2}) + if (r >= 2**{2}) return right{1}(r); return left{1}(r); }} function left{0}(uint seed) returns (uint) {{ var r = nextRand(nextRand(seed)); - if (r >= 2^{2}) + if (r >= 2**{2}) return left{1}(r); return right{1}(r); }} diff --git a/test/vmPerformanceTestFiller.json b/test/vmPerformanceTestFiller.json index eab8a2240..e33bd1955 100644 --- a/test/vmPerformanceTestFiller.json +++ b/test/vmPerformanceTestFiller.json @@ -13,7 +13,7 @@ "balance" : "1000000000000000000", "nonce" : "0", "//" : "ManyFunctions.sol", - "code" : "0x60e060020a60003504806301f99ad7146108c3578063023a624a146108d857806303bdecf5146108ed57806305fe035f14610902578063082d8f4914610917578063090bf3b71461092c5780630bd9c534146109415780630c4bfa94146109565780630e20ebe21461096b5780630f76de0d1461098057806310cfcc191461099557806313ce15a9146109aa578063140dcec4146109bf57806314d07a3e146109d45780631687f112146109e957806316eb6603146109fe578063172cf71714610a135780631bd6f59614610a285780631cdb857114610a3d5780631cf74ece14610a525780631d09ba2c14610a675780631f69aa5114610a7c578063223dcc7414610a9157806325e524d314610aa6578063261de7c414610abb5780632632924d14610ad05780632909cc5d14610ae55780632981699814610afa5780632a85a45d14610b0f5780632ca36da014610b245780632cbf1f0d14610b395780632d0f557314610b4e5780632d97867814610b6357806331db9efd14610b7857806332064db714610b8d57806332931fbb14610ba2578063355f51a014610bb7578063361bb34014610bcc578063364ddb0e14610be15780633792a01814610bf657806338c68f8f14610c0b57806338e586fd14610c20578063392d42ae14610c3557806339a87bd914610c4a5780633a95a33214610c5f5780633b8ecdf914610c745780633cf0659a14610c895780633eaf992314610c9e5780633fe97ead14610cb35780633ff11c8b14610cc8578063404efc5314610cdd578063407fce7b14610cf257806340c3b18714610d07578063440208c314610d1c57806344e86b2f14610d31578063455df57914610d465780634689ab4d14610d5b57806346be2e0c14610d70578063487cd86f14610d8557806348e6178214610d9a57806349d4a34414610daf5780634a0f597414610dc45780634bc24ec514610dd95780634c2fe45614610dee5780634cc885d414610e035780634eaaad7b14610e185780634eb166af14610e2d5780635050093414610e42578063506bff1114610e57578063508762c114610e6c578063526938f814610e8157806354400c6014610e96578063559510d814610eab57806355a5f70214610ec057806356ca528f14610ed5578063570a2a1614610eea5780635dab2e0f14610eff5780635dca53d314610f1457806362017ebc14610f29578063621a25f814610f3e578063626d4a3614610f5357806362b6a28214610f6857806364faf22c14610f7d57806366d7ffde14610f9257806367b886e814610fa757806367e902c714610fbc57806369d7774014610fd15780636b7ae8e614610fe65780636c3b659114610ffb5780636e54181e146110105780636e978d91146110255780636f63d2ec1461103a578063706332d11461104f57806370ac4bb9146110645780637138ef521461107957806371dd46a91461108e57806372a7c229146110a35780637376fc8d146110b8578063738a2679146110cd57806374552650146110e2578063746fc8d0146110f757806379254bb81461110c5780637adaa3f8146111215780637e4eb35b14611136578063885ec18e1461114b5780638b9ff6b6146111605780638ce113dc146111755780638defbc5e1461118a5780638f4613d51461119f5780638fdc24ba146111b45780639002dba4146111c957806391d15735146111de57806391d43b23146111f357806393b14daa1461120857806394d63afd1461121d57806395805dad1461123257806396f68782146112475780639740e4a21461125c578063981290131461127157806399a3f0e8146112865780639acb1ad41461129b5780639be07908146112b05780639c15be0b146112c55780639d451c4d146112da5780639d8ee943146112ef5780639ef6ca0f14611304578063a0db0a2214611319578063a18e2eb91461132e578063a408384914611343578063a57544da14611358578063a5a83e4d1461136d578063a6843f3414611382578063a6dacdd714611397578063a8c4c8bc146113ac578063aa058a73146113c1578063aad62da2146113d6578063aaf3e4f4146113eb578063ab81e77314611400578063abc93aee14611415578063abde33f71461142a578063b114b96c1461143f578063b3df873714611454578063b4174cb014611469578063b5d02a561461147e578063b731e84814611493578063b7b96723146114a8578063bbcded7a146114bd578063bbececa9146114d2578063beca7440146114e7578063bf8981c0146114fc578063c028c67414611511578063c2385fa614611526578063c319a02c1461153b578063c569bae014611550578063c6715f8114611565578063c7b98dec1461157a578063c9acab841461158f578063ca9efc73146115a4578063cad80024146115b9578063cdadb0fa146115ce578063cdbdf391146115e3578063cf460fa5146115f8578063cf69318a1461160d578063d1835b8c14611622578063d353a1cb14611637578063d3e141e01461164c578063d5ec7e1d14611661578063d7ead1de14611676578063d90b02aa1461168b578063d959e244146116a0578063d9e68b44146116b5578063daacb24f146116ca578063dc12a805146116df578063dd946033146116f4578063dda5142414611709578063de6612171461171e578063dfb9560c14611733578063e03827d214611748578063e21720001461175d578063e2c718d814611772578063e3da539914611787578063e48e603f1461179c578063e5f9ec29146117b1578063e6c0459a146117c6578063e70addec146117db578063e7a01215146117f0578063ea7f4d2714611805578063ebb6c59f1461181a578063ed6302be1461182f578063ed64b36b14611844578063eecd278914611859578063f0ed14e01461186e578063f0f2134414611883578063f1e328f914611898578063f1e6f4cd146118ad578063f32fe995146118c2578063f75165c6146118d7578063f7ed71d0146118ec578063f80f44f314611901578063f8bc050514611916578063fbd3c51a1461192b578063fd72009014611940578063fed3a3001461195557005b6108ce600435611e83565b8060005260206000f35b6108e3600435611f50565b8060005260206000f35b6108f8600435613deb565b8060005260206000f35b61090d6004356119e8565b8060005260206000f35b610922600435612f82565b8060005260206000f35b6109376004356128fb565b8060005260206000f35b61094c60043561304f565b8060005260206000f35b61096160043561209b565b8060005260206000f35b610976600435614c0d565b8060005260206000f35b61098b60043561319a565b8060005260206000f35b6109a06004356122b3565b8060005260206000f35b6109b5600435613d1e565b8060005260206000f35b6109ca600435612598565b8060005260206000f35b6109df600435612875565b8060005260206000f35b6109f4600435613650565b8060005260206000f35b610a096004356133f9565b8060005260206000f35b610a1e6004356136d6565b8060005260206000f35b610a3360043561371d565b8060005260206000f35b610a48600435611ad9565b8060005260206000f35b610a5d60043561375c565b8060005260206000f35b610a72600435612168565b8060005260206000f35b610a8760043561425a565b8060005260206000f35b610a9c600435612121565b8060005260206000f35b610ab1600435611dbe565b8060005260206000f35b610ac6600435612b13565b8060005260206000f35b610adb600435612981565b8060005260206000f35b610af060043561222d565b8060005260206000f35b610b05600435613ac7565b8060005260206000f35b610b1a600435612db1565b8060005260206000f35b610b2f600435612e76565b8060005260206000f35b610b44600435613a80565b8060005260206000f35b610b59600435612c1f565b8060005260206000f35b610b6e6004356125d7565b8060005260206000f35b610b836004356147dd565b8060005260206000f35b610b98600435612445565b8060005260206000f35b610bad600435611a53565b8060005260206000f35b610bc2600435613373565b8060005260206000f35b610bd760043561332c565b8060005260206000f35b610bec600435613544565b8060005260206000f35b610c01600435611dfd565b8060005260206000f35b610c166004356145c5565b8060005260206000f35b610c2b600435611c2c565b8060005260206000f35b610c40600435612df0565b8060005260206000f35b610c55600435612a46565b8060005260206000f35b610c6a6004356137e2565b8060005260206000f35b610c7f600435611b20565b8060005260206000f35b610c946004356126a4565b8060005260206000f35b610ca9600435613d65565b8060005260206000f35b610cbe6004356133b2565b8060005260206000f35b610cd360043561464b565b8060005260206000f35b610ce8600435612769565b8060005260206000f35b610cfd600435612015565b8060005260206000f35b610d12600435612d6a565b8060005260206000f35b610d27600435611fd6565b8060005260206000f35b610d3c600435613f36565b8060005260206000f35b610d51600435614604565b8060005260206000f35b610d6660043561248c565b8060005260206000f35b610d7b600435612acc565b8060005260206000f35b610d90600435612b99565b8060005260206000f35b610da5600435611be5565b8060005260206000f35b610dba6004356129c8565b8060005260206000f35b610dcf6004356127ef565b8060005260206000f35b610de46004356139bb565b8060005260206000f35b610df9600435614b01565b8060005260206000f35b610e0e600435613bd3565b8060005260206000f35b610e23600435613fbc565b8060005260206000f35b610e38600435614003565b8060005260206000f35b610e4d600435612836565b8060005260206000f35b610e62600435611d77565b8060005260206000f35b610e77600435611eca565b8060005260206000f35b610e8c600435612c5e565b8060005260206000f35b610ea1600435612380565b8060005260206000f35b610eb66004356135ca565b8060005260206000f35b610ecb60043561315b565b8060005260206000f35b610ee06004356122fa565b8060005260206000f35b610ef560043561358b565b8060005260206000f35b610f0a6004356144f8565b8060005260206000f35b610f1f600435612942565b8060005260206000f35b610f34600435613220565b8060005260206000f35b610f49600435613c59565b8060005260206000f35b610f5e600435613697565b8060005260206000f35b610f73600435613008565b8060005260206000f35b610f88600435612339565b8060005260206000f35b610f9d60043561265d565b8060005260206000f35b610fb2600435614cd2565b8060005260206000f35b610fc76004356149f5565b8060005260206000f35b610fdc600435614a34565b8060005260206000f35b610ff16004356140c8565b8060005260206000f35b61100660043561453f565b8060005260206000f35b61101b60043561410f565b8060005260206000f35b6110306004356148e9565b8060005260206000f35b611045600435613c98565b8060005260206000f35b61105a6004356131e1565b8060005260206000f35b61106f600435612a8d565b8060005260206000f35b611084600435611e44565b8060005260206000f35b6110996004356123bf565b8060005260206000f35b6110ae600435612f43565b8060005260206000f35b6110c3600435613cdf565b8060005260206000f35b6110d860043561468a565b8060005260206000f35b6110ed600435614bc6565b8060005260206000f35b611102600435613267565b8060005260206000f35b6111176004356128bc565b8060005260206000f35b61112c600435612e37565b8060005260206000f35b61114160043561308e565b8060005260206000f35b611156600435611cf1565b8060005260206000f35b61116b6004356149ae565b8060005260206000f35b611180600435613935565b8060005260206000f35b611195600435612a07565b8060005260206000f35b6111aa600435611f09565b8060005260206000f35b6111bf600435614b40565b8060005260206000f35b6111d4600435612274565b8060005260206000f35b6111e9600435611f8f565b8060005260206000f35b6111fe600435614195565b8060005260206000f35b6112136004356120e2565b8060005260206000f35b611228600435611b5f565b8060005260206000f35b61123d60043561196a565b8060005260206000f35b611252600435613a41565b8060005260206000f35b611267600435614796565b8060005260206000f35b61127c6004356132a6565b8060005260206000f35b611291600435613e71565b8060005260206000f35b6112a6600435612d2b565b8060005260206000f35b6112bb600435614366565b8060005260206000f35b6112d0600435613c12565b8060005260206000f35b6112e560043561421b565b8060005260206000f35b6112fa600435613ef7565b8060005260206000f35b61130f600435612b52565b8060005260206000f35b611324600435611ba6565b8060005260206000f35b611339600435613e2a565b8060005260206000f35b61134e6004356130d5565b8060005260206000f35b611363600435612ca5565b8060005260206000f35b61137860043561496f565b8060005260206000f35b61138d6004356132ed565b8060005260206000f35b6113a26004356138af565b8060005260206000f35b6113b7600435613b4d565b8060005260206000f35b6113cc600435611cb2565b8060005260206000f35b6113e16004356148a2565b8060005260206000f35b6113f660043561481c565b8060005260206000f35b61140b6004356139fa565b8060005260206000f35b611420600435613b8c565b8060005260206000f35b61143560043561272a565b8060005260206000f35b61144a600435614d9f565b8060005260206000f35b61145f600435613438565b8060005260206000f35b61147460043561347f565b8060005260206000f35b6114896004356119b3565b8060005260206000f35b61149e600435614aba565b8060005260206000f35b6114b3600435611d38565b8060005260206000f35b6114c8600435614042565b8060005260206000f35b6114dd6004356142e0565b8060005260206000f35b6114f2600435613505565b8060005260206000f35b611507600435612ce4565b8060005260206000f35b61151c6004356144b9565b8060005260206000f35b6115316004356142a1565b8060005260206000f35b611546600435614d19565b8060005260206000f35b61155b600435614a7b565b8060005260206000f35b611570600435613114565b8060005260206000f35b611585600435611a14565b8060005260206000f35b61159a6004356138ee565b8060005260206000f35b6115af600435614472565b8060005260206000f35b6115c4600435613868565b8060005260206000f35b6115d9600435613829565b8060005260206000f35b6115ee600435612bd8565b8060005260206000f35b6116036004356121ee565b8060005260206000f35b611618600435613974565b8060005260206000f35b61162d6004356124cb565b8060005260206000f35b6116426004356119a9565b8060005260206000f35b611657600435611c6b565b8060005260206000f35b61166c600435612551565b8060005260206000f35b611681600435614089565b8060005260206000f35b6116966004356143ec565b8060005260206000f35b6116ab6004356126e3565b8060005260206000f35b6116c06004356119fa565b8060005260206000f35b6116d5600435612fc9565b8060005260206000f35b6116ea6004356137a3565b8060005260206000f35b6116ff600435614433565b8060005260206000f35b6117146004356143ad565b8060005260206000f35b61172960043561414e565b8060005260206000f35b61173e60043561261e565b8060005260206000f35b611753600435613eb0565b8060005260206000f35b611768600435613b06565b8060005260206000f35b61177d600435612406565b8060005260206000f35b611792600435614928565b8060005260206000f35b6117a7600435613611565b8060005260206000f35b6117bc6004356134be565b8060005260206000f35b6117d1600435614327565b8060005260206000f35b6117e6600435614757565b8060005260206000f35b6117fb600435611a9a565b8060005260206000f35b61181060043561205c565b8060005260206000f35b611825600435613f7d565b8060005260206000f35b61183a600435614d58565b8060005260206000f35b61184f6004356121a7565b8060005260206000f35b611864600435614710565b8060005260206000f35b611879600435614b87565b8060005260206000f35b61188e6004356127b0565b8060005260206000f35b6118a3600435613da4565b8060005260206000f35b6118b8600435612ebd565b8060005260206000f35b6118cd600435614c4c565b8060005260206000f35b6118e2600435612512565b8060005260206000f35b6118f7600435612efc565b8060005260206000f35b61190c600435614c93565b8060005260206000f35b6119216004356141d4565b8060005260206000f35b61193660043561457e565b8060005260206000f35b61194b6004356146d1565b8060005260206000f35b611960600435614863565b8060005260206000f35b60006000611977836119b3565b9050604c81101561198757611997565b61199081611a53565b91506119a3565b6119a081611a14565b91505b50919050565b6000819050919050565b600060007f5851f42d4c957f2c0000000000000000000000000000000000000000000000019050828102600101915050919050565b60006119f3826119a9565b9050919050565b6000611a0d611a08836119b3565b6119a9565b9050919050565b60006000611a21836119b3565b9050604d811015611a3157611a41565b611a3a81611a9a565b9150611a4d565b611a4a81611ad9565b91505b50919050565b60006000611a68611a63846119b3565b6119b3565b9050604d811015611a7857611a88565b611a8181611ad9565b9150611a94565b611a9181611a9a565b91505b50919050565b60006000611aa7836119b3565b90506052811015611ab757611ac7565b611ac081611b20565b9150611ad3565b611ad081611b5f565b91505b50919050565b60006000611aee611ae9846119b3565b6119b3565b90506052811015611afe57611b0e565b611b0781611b5f565b9150611b1a565b611b1781611b20565b91505b50919050565b60006000611b2d836119b3565b90506053811015611b3d57611b4d565b611b4681611ba6565b9150611b59565b611b5681611be5565b91505b50919050565b60006000611b74611b6f846119b3565b6119b3565b90506053811015611b8457611b94565b611b8d81611be5565b9150611ba0565b611b9d81611ba6565b91505b50919050565b60006000611bb3836119b3565b90506050811015611bc357611bd3565b611bcc81611c2c565b9150611bdf565b611bdc81611c6b565b91505b50919050565b60006000611bfa611bf5846119b3565b6119b3565b90506050811015611c0a57611c1a565b611c1381611c6b565b9150611c26565b611c2381611c2c565b91505b50919050565b60006000611c39836119b3565b90506051811015611c4957611c59565b611c5281611cb2565b9150611c65565b611c6281611cf1565b91505b50919050565b60006000611c80611c7b846119b3565b6119b3565b90506051811015611c9057611ca0565b611c9981611cf1565b9150611cac565b611ca981611cb2565b91505b50919050565b60006000611cbf836119b3565b90506056811015611ccf57611cdf565b611cd881611d38565b9150611ceb565b611ce881611d77565b91505b50919050565b60006000611d06611d01846119b3565b6119b3565b90506056811015611d1657611d26565b611d1f81611d77565b9150611d32565b611d2f81611d38565b91505b50919050565b60006000611d45836119b3565b90506057811015611d5557611d65565b611d5e81611dbe565b9150611d71565b611d6e81611dfd565b91505b50919050565b60006000611d8c611d87846119b3565b6119b3565b90506057811015611d9c57611dac565b611da581611dfd565b9150611db8565b611db581611dbe565b91505b50919050565b60006000611dcb836119b3565b90506054811015611ddb57611deb565b611de481611e44565b9150611df7565b611df481611e83565b91505b50919050565b60006000611e12611e0d846119b3565b6119b3565b90506054811015611e2257611e32565b611e2b81611e83565b9150611e3e565b611e3b81611e44565b91505b50919050565b60006000611e51836119b3565b90506055811015611e6157611e71565b611e6a81611eca565b9150611e7d565b611e7a81611f09565b91505b50919050565b60006000611e98611e93846119b3565b6119b3565b90506055811015611ea857611eb8565b611eb181611f09565b9150611ec4565b611ec181611eca565b91505b50919050565b60006000611ed7836119b3565b9050605a811015611ee757611ef7565b611ef081611f50565b9150611f03565b611f0081611f8f565b91505b50919050565b60006000611f1e611f19846119b3565b6119b3565b9050605a811015611f2e57611f3e565b611f3781611f8f565b9150611f4a565b611f4781611f50565b91505b50919050565b60006000611f5d836119b3565b9050605b811015611f6d57611f7d565b611f7681611fd6565b9150611f89565b611f8681612015565b91505b50919050565b60006000611fa4611f9f846119b3565b6119b3565b9050605b811015611fb457611fc4565b611fbd81612015565b9150611fd0565b611fcd81611fd6565b91505b50919050565b60006000611fe3836119b3565b90506058811015611ff357612003565b611ffc8161205c565b915061200f565b61200c8161209b565b91505b50919050565b6000600061202a612025846119b3565b6119b3565b9050605881101561203a5761204a565b6120438161209b565b9150612056565b6120538161205c565b91505b50919050565b60006000612069836119b3565b9050605981101561207957612089565b612082816120e2565b9150612095565b61209281612121565b91505b50919050565b600060006120b06120ab846119b3565b6119b3565b905060598110156120c0576120d0565b6120c981612121565b91506120dc565b6120d9816120e2565b91505b50919050565b600060006120ef836119b3565b9050605e8110156120ff5761210f565b61210881612168565b915061211b565b612118816121a7565b91505b50919050565b60006000612136612131846119b3565b6119b3565b9050605e81101561214657612156565b61214f816121a7565b9150612162565b61215f81612168565b91505b50919050565b60006000612175836119b3565b9050605f81101561218557612195565b61218e816121ee565b91506121a1565b61219e8161222d565b91505b50919050565b600060006121bc6121b7846119b3565b6119b3565b9050605f8110156121cc576121dc565b6121d58161222d565b91506121e8565b6121e5816121ee565b91505b50919050565b600060006121fb836119b3565b9050605c81101561220b5761221b565b61221481612274565b9150612227565b612224816122b3565b91505b50919050565b6000600061224261223d846119b3565b6119b3565b9050605c81101561225257612262565b61225b816122b3565b915061226e565b61226b81612274565b91505b50919050565b60006000612281836119b3565b9050605d811015612291576122a1565b61229a816122fa565b91506122ad565b6122aa81612339565b91505b50919050565b600060006122c86122c3846119b3565b6119b3565b9050605d8110156122d8576122e8565b6122e181612339565b91506122f4565b6122f1816122fa565b91505b50919050565b60006000612307836119b3565b9050606281101561231757612327565b61232081612380565b9150612333565b612330816123bf565b91505b50919050565b6000600061234e612349846119b3565b6119b3565b9050606281101561235e5761236e565b612367816123bf565b915061237a565b61237781612380565b91505b50919050565b6000600061238d836119b3565b9050606381101561239d576123ad565b6123a681612406565b91506123b9565b6123b681612445565b91505b50919050565b600060006123d46123cf846119b3565b6119b3565b905060638110156123e4576123f4565b6123ed81612445565b9150612400565b6123fd81612406565b91505b50919050565b60006000612413836119b3565b9050606081101561242357612433565b61242c8161248c565b915061243f565b61243c816124cb565b91505b50919050565b6000600061245a612455846119b3565b6119b3565b9050606081101561246a5761247a565b612473816124cb565b9150612486565b6124838161248c565b91505b50919050565b60006000612499836119b3565b905060618110156124a9576124b9565b6124b281612512565b91506124c5565b6124c281612551565b91505b50919050565b600060006124e06124db846119b3565b6119b3565b905060618110156124f057612500565b6124f981612551565b915061250c565b61250981612512565b91505b50919050565b6000600061251f836119b3565b9050606681101561252f5761253f565b61253881612598565b915061254b565b612548816125d7565b91505b50919050565b60006000612566612561846119b3565b6119b3565b9050606681101561257657612586565b61257f816125d7565b9150612592565b61258f81612598565b91505b50919050565b600060006125a5836119b3565b905060678110156125b5576125c5565b6125be8161261e565b91506125d1565b6125ce8161265d565b91505b50919050565b600060006125ec6125e7846119b3565b6119b3565b905060678110156125fc5761260c565b6126058161265d565b9150612618565b6126158161261e565b91505b50919050565b6000600061262b836119b3565b9050606481101561263b5761264b565b612644816126a4565b9150612657565b612654816126e3565b91505b50919050565b6000600061267261266d846119b3565b6119b3565b9050606481101561268257612692565b61268b816126e3565b915061269e565b61269b816126a4565b91505b50919050565b600060006126b1836119b3565b905060658110156126c1576126d1565b6126ca8161272a565b91506126dd565b6126da81612769565b91505b50919050565b600060006126f86126f3846119b3565b6119b3565b9050606581101561270857612718565b61271181612769565b9150612724565b6127218161272a565b91505b50919050565b60006000612737836119b3565b9050606a81101561274757612757565b612750816127b0565b9150612763565b612760816127ef565b91505b50919050565b6000600061277e612779846119b3565b6119b3565b9050606a81101561278e5761279e565b612797816127ef565b91506127aa565b6127a7816127b0565b91505b50919050565b600060006127bd836119b3565b9050606b8110156127cd576127dd565b6127d681612836565b91506127e9565b6127e681612875565b91505b50919050565b600060006128046127ff846119b3565b6119b3565b9050606b81101561281457612824565b61281d81612875565b9150612830565b61282d81612836565b91505b50919050565b60006000612843836119b3565b9050606881101561285357612863565b61285c816128bc565b915061286f565b61286c816128fb565b91505b50919050565b6000600061288a612885846119b3565b6119b3565b9050606881101561289a576128aa565b6128a3816128fb565b91506128b6565b6128b3816128bc565b91505b50919050565b600060006128c9836119b3565b905060698110156128d9576128e9565b6128e281612942565b91506128f5565b6128f281612981565b91505b50919050565b6000600061291061290b846119b3565b6119b3565b9050606981101561292057612930565b61292981612981565b915061293c565b61293981612942565b91505b50919050565b6000600061294f836119b3565b9050606e81101561295f5761296f565b61296881612a07565b915061297b565b61297881612a46565b91505b50919050565b60006000612996612991846119b3565b6119b3565b9050606e8110156129a6576129b6565b6129af81612a46565b91506129c2565b6129bf81612a07565b91505b50919050565b600060006129d5836119b3565b905060b38110156129e5576129f5565b6129ee816119e8565b9150612a01565b6129fe816119fa565b91505b50919050565b60006000612a14836119b3565b9050606f811015612a2457612a34565b612a2d81612a8d565b9150612a40565b612a3d81612acc565b91505b50919050565b60006000612a5b612a56846119b3565b6119b3565b9050606f811015612a6b57612a7b565b612a7481612acc565b9150612a87565b612a8481612a8d565b91505b50919050565b60006000612a9a836119b3565b9050606c811015612aaa57612aba565b612ab381612b13565b9150612ac6565b612ac381612b52565b91505b50919050565b60006000612ae1612adc846119b3565b6119b3565b9050606c811015612af157612b01565b612afa81612b52565b9150612b0d565b612b0a81612b13565b91505b50919050565b60006000612b20836119b3565b9050606d811015612b3057612b40565b612b3981612b99565b9150612b4c565b612b4981612bd8565b91505b50919050565b60006000612b67612b62846119b3565b6119b3565b9050606d811015612b7757612b87565b612b8081612bd8565b9150612b93565b612b9081612b99565b91505b50919050565b60006000612ba6836119b3565b90506072811015612bb657612bc6565b612bbf81612c1f565b9150612bd2565b612bcf81612c5e565b91505b50919050565b60006000612bed612be8846119b3565b6119b3565b90506072811015612bfd57612c0d565b612c0681612c5e565b9150612c19565b612c1681612c1f565b91505b50919050565b60006000612c2c836119b3565b90506073811015612c3c57612c4c565b612c4581612ca5565b9150612c58565b612c5581612ce4565b91505b50919050565b60006000612c73612c6e846119b3565b6119b3565b90506073811015612c8357612c93565b612c8c81612ce4565b9150612c9f565b612c9c81612ca5565b91505b50919050565b60006000612cb2836119b3565b90506070811015612cc257612cd2565b612ccb81612d2b565b9150612cde565b612cdb81612d6a565b91505b50919050565b60006000612cf9612cf4846119b3565b6119b3565b90506070811015612d0957612d19565b612d1281612d6a565b9150612d25565b612d2281612d2b565b91505b50919050565b60006000612d38836119b3565b90506071811015612d4857612d58565b612d5181612db1565b9150612d64565b612d6181612df0565b91505b50919050565b60006000612d7f612d7a846119b3565b6119b3565b90506071811015612d8f57612d9f565b612d9881612df0565b9150612dab565b612da881612db1565b91505b50919050565b60006000612dbe836119b3565b90506076811015612dce57612dde565b612dd781612e37565b9150612dea565b612de781612e76565b91505b50919050565b60006000612e05612e00846119b3565b6119b3565b90506076811015612e1557612e25565b612e1e81612e76565b9150612e31565b612e2e81612e37565b91505b50919050565b60006000612e44836119b3565b90506077811015612e5457612e64565b612e5d81612ebd565b9150612e70565b612e6d81612efc565b91505b50919050565b60006000612e8b612e86846119b3565b6119b3565b90506077811015612e9b57612eab565b612ea481612efc565b9150612eb7565b612eb481612ebd565b91505b50919050565b60006000612eca836119b3565b90506074811015612eda57612eea565b612ee381612f43565b9150612ef6565b612ef381612f82565b91505b50919050565b60006000612f11612f0c846119b3565b6119b3565b90506074811015612f2157612f31565b612f2a81612f82565b9150612f3d565b612f3a81612f43565b91505b50919050565b60006000612f50836119b3565b90506075811015612f6057612f70565b612f6981612fc9565b9150612f7c565b612f7981613008565b91505b50919050565b60006000612f97612f92846119b3565b6119b3565b90506075811015612fa757612fb7565b612fb081613008565b9150612fc3565b612fc081612fc9565b91505b50919050565b60006000612fd6836119b3565b9050607a811015612fe657612ff6565b612fef8161304f565b9150613002565b612fff8161308e565b91505b50919050565b6000600061301d613018846119b3565b6119b3565b9050607a81101561302d5761303d565b6130368161308e565b9150613049565b6130468161304f565b91505b50919050565b6000600061305c836119b3565b9050607b81101561306c5761307c565b613075816130d5565b9150613088565b61308581613114565b91505b50919050565b600060006130a361309e846119b3565b6119b3565b9050607b8110156130b3576130c3565b6130bc81613114565b91506130cf565b6130cc816130d5565b91505b50919050565b600060006130e2836119b3565b905060788110156130f257613102565b6130fb8161315b565b915061310e565b61310b8161319a565b91505b50919050565b60006000613129613124846119b3565b6119b3565b9050607881101561313957613149565b6131428161319a565b9150613155565b6131528161315b565b91505b50919050565b60006000613168836119b3565b9050607981101561317857613188565b613181816131e1565b9150613194565b61319181613220565b91505b50919050565b600060006131af6131aa846119b3565b6119b3565b905060798110156131bf576131cf565b6131c881613220565b91506131db565b6131d8816131e1565b91505b50919050565b600060006131ee836119b3565b9050607e8110156131fe5761320e565b61320781613267565b915061321a565b613217816132a6565b91505b50919050565b60006000613235613230846119b3565b6119b3565b9050607e81101561324557613255565b61324e816132a6565b9150613261565b61325e81613267565b91505b50919050565b60006000613274836119b3565b9050607f81101561328457613294565b61328d816132ed565b91506132a0565b61329d8161332c565b91505b50919050565b600060006132bb6132b6846119b3565b6119b3565b9050607f8110156132cb576132db565b6132d48161332c565b91506132e7565b6132e4816132ed565b91505b50919050565b600060006132fa836119b3565b9050607c81101561330a5761331a565b61331381613373565b9150613326565b613323816133b2565b91505b50919050565b6000600061334161333c846119b3565b6119b3565b9050607c81101561335157613361565b61335a816133b2565b915061336d565b61336a81613373565b91505b50919050565b60006000613380836119b3565b9050607d811015613390576133a0565b613399816133f9565b91506133ac565b6133a981613438565b91505b50919050565b600060006133c76133c2846119b3565b6119b3565b9050607d8110156133d7576133e7565b6133e081613438565b91506133f3565b6133f0816133f9565b91505b50919050565b60006000613406836119b3565b9050608281101561341657613426565b61341f8161347f565b9150613432565b61342f816134be565b91505b50919050565b6000600061344d613448846119b3565b6119b3565b9050608281101561345d5761346d565b613466816134be565b9150613479565b6134768161347f565b91505b50919050565b6000600061348c836119b3565b9050608381101561349c576134ac565b6134a581613505565b91506134b8565b6134b581613544565b91505b50919050565b600060006134d36134ce846119b3565b6119b3565b905060838110156134e3576134f3565b6134ec81613544565b91506134ff565b6134fc81613505565b91505b50919050565b60006000613512836119b3565b9050608081101561352257613532565b61352b8161358b565b915061353e565b61353b816135ca565b91505b50919050565b60006000613559613554846119b3565b6119b3565b9050608081101561356957613579565b613572816135ca565b9150613585565b6135828161358b565b91505b50919050565b60006000613598836119b3565b905060818110156135a8576135b8565b6135b181613611565b91506135c4565b6135c181613650565b91505b50919050565b600060006135df6135da846119b3565b6119b3565b905060818110156135ef576135ff565b6135f881613650565b915061360b565b61360881613611565b91505b50919050565b6000600061361e836119b3565b9050608681101561362e5761363e565b61363781613697565b915061364a565b613647816136d6565b91505b50919050565b60006000613665613660846119b3565b6119b3565b9050608681101561367557613685565b61367e816136d6565b9150613691565b61368e81613697565b91505b50919050565b600060006136a4836119b3565b905060878110156136b4576136c4565b6136bd8161371d565b91506136d0565b6136cd8161375c565b91505b50919050565b600060006136eb6136e6846119b3565b6119b3565b905060878110156136fb5761370b565b6137048161375c565b9150613717565b6137148161371d565b91505b50919050565b6000600061372a836119b3565b9050608481101561373a5761374a565b613743816137a3565b9150613756565b613753816137e2565b91505b50919050565b6000600061377161376c846119b3565b6119b3565b9050608481101561378157613791565b61378a816137e2565b915061379d565b61379a816137a3565b91505b50919050565b600060006137b0836119b3565b905060858110156137c0576137d0565b6137c981613829565b91506137dc565b6137d981613868565b91505b50919050565b600060006137f76137f2846119b3565b6119b3565b9050608581101561380757613817565b61381081613868565b9150613823565b61382081613829565b91505b50919050565b60006000613836836119b3565b9050608a81101561384657613856565b61384f816138af565b9150613862565b61385f816138ee565b91505b50919050565b6000600061387d613878846119b3565b6119b3565b9050608a81101561388d5761389d565b613896816138ee565b91506138a9565b6138a6816138af565b91505b50919050565b600060006138bc836119b3565b9050608b8110156138cc576138dc565b6138d581613935565b91506138e8565b6138e581613974565b91505b50919050565b600060006139036138fe846119b3565b6119b3565b9050608b81101561391357613923565b61391c81613974565b915061392f565b61392c81613935565b91505b50919050565b60006000613942836119b3565b9050608881101561395257613962565b61395b816139bb565b915061396e565b61396b816139fa565b91505b50919050565b60006000613989613984846119b3565b6119b3565b90506088811015613999576139a9565b6139a2816139fa565b91506139b5565b6139b2816139bb565b91505b50919050565b600060006139c8836119b3565b905060898110156139d8576139e8565b6139e181613a41565b91506139f4565b6139f181613a80565b91505b50919050565b60006000613a0f613a0a846119b3565b6119b3565b90506089811015613a1f57613a2f565b613a2881613a80565b9150613a3b565b613a3881613a41565b91505b50919050565b60006000613a4e836119b3565b9050608e811015613a5e57613a6e565b613a6781613ac7565b9150613a7a565b613a7781613b06565b91505b50919050565b60006000613a95613a90846119b3565b6119b3565b9050608e811015613aa557613ab5565b613aae81613b06565b9150613ac1565b613abe81613ac7565b91505b50919050565b60006000613ad4836119b3565b9050608f811015613ae457613af4565b613aed81613b4d565b9150613b00565b613afd81613b8c565b91505b50919050565b60006000613b1b613b16846119b3565b6119b3565b9050608f811015613b2b57613b3b565b613b3481613b8c565b9150613b47565b613b4481613b4d565b91505b50919050565b60006000613b5a836119b3565b9050608c811015613b6a57613b7a565b613b7381613bd3565b9150613b86565b613b8381613c12565b91505b50919050565b60006000613ba1613b9c846119b3565b6119b3565b9050608c811015613bb157613bc1565b613bba81613c12565b9150613bcd565b613bca81613bd3565b91505b50919050565b60006000613be0836119b3565b9050608d811015613bf057613c00565b613bf981613c59565b9150613c0c565b613c0981613c98565b91505b50919050565b60006000613c27613c22846119b3565b6119b3565b9050608d811015613c3757613c47565b613c4081613c98565b9150613c53565b613c5081613c59565b91505b50919050565b60006000613c66836119b3565b90506092811015613c7657613c86565b613c7f81613cdf565b9150613c92565b613c8f81613d1e565b91505b50919050565b60006000613cad613ca8846119b3565b6119b3565b90506092811015613cbd57613ccd565b613cc681613d1e565b9150613cd9565b613cd681613cdf565b91505b50919050565b60006000613cec836119b3565b90506093811015613cfc57613d0c565b613d0581613d65565b9150613d18565b613d1581613da4565b91505b50919050565b60006000613d33613d2e846119b3565b6119b3565b90506093811015613d4357613d53565b613d4c81613da4565b9150613d5f565b613d5c81613d65565b91505b50919050565b60006000613d72836119b3565b90506090811015613d8257613d92565b613d8b81613deb565b9150613d9e565b613d9b81613e2a565b91505b50919050565b60006000613db9613db4846119b3565b6119b3565b90506090811015613dc957613dd9565b613dd281613e2a565b9150613de5565b613de281613deb565b91505b50919050565b60006000613df8836119b3565b90506091811015613e0857613e18565b613e1181613e71565b9150613e24565b613e2181613eb0565b91505b50919050565b60006000613e3f613e3a846119b3565b6119b3565b90506091811015613e4f57613e5f565b613e5881613eb0565b9150613e6b565b613e6881613e71565b91505b50919050565b60006000613e7e836119b3565b90506096811015613e8e57613e9e565b613e9781613ef7565b9150613eaa565b613ea781613f36565b91505b50919050565b60006000613ec5613ec0846119b3565b6119b3565b90506096811015613ed557613ee5565b613ede81613f36565b9150613ef1565b613eee81613ef7565b91505b50919050565b60006000613f04836119b3565b90506097811015613f1457613f24565b613f1d81613f7d565b9150613f30565b613f2d81613fbc565b91505b50919050565b60006000613f4b613f46846119b3565b6119b3565b90506097811015613f5b57613f6b565b613f6481613fbc565b9150613f77565b613f7481613f7d565b91505b50919050565b60006000613f8a836119b3565b90506094811015613f9a57613faa565b613fa381614003565b9150613fb6565b613fb381614042565b91505b50919050565b60006000613fd1613fcc846119b3565b6119b3565b90506094811015613fe157613ff1565b613fea81614042565b9150613ffd565b613ffa81614003565b91505b50919050565b60006000614010836119b3565b9050609581101561402057614030565b61402981614089565b915061403c565b614039816140c8565b91505b50919050565b60006000614057614052846119b3565b6119b3565b9050609581101561406757614077565b614070816140c8565b9150614083565b61408081614089565b91505b50919050565b60006000614096836119b3565b9050609a8110156140a6576140b6565b6140af8161410f565b91506140c2565b6140bf8161414e565b91505b50919050565b600060006140dd6140d8846119b3565b6119b3565b9050609a8110156140ed576140fd565b6140f68161414e565b9150614109565b6141068161410f565b91505b50919050565b6000600061411c836119b3565b9050609b81101561412c5761413c565b61413581614195565b9150614148565b614145816141d4565b91505b50919050565b6000600061416361415e846119b3565b6119b3565b9050609b81101561417357614183565b61417c816141d4565b915061418f565b61418c81614195565b91505b50919050565b600060006141a2836119b3565b905060988110156141b2576141c2565b6141bb8161421b565b91506141ce565b6141cb8161425a565b91505b50919050565b600060006141e96141e4846119b3565b6119b3565b905060988110156141f957614209565b6142028161425a565b9150614215565b6142128161421b565b91505b50919050565b60006000614228836119b3565b9050609981101561423857614248565b614241816142a1565b9150614254565b614251816142e0565b91505b50919050565b6000600061426f61426a846119b3565b6119b3565b9050609981101561427f5761428f565b614288816142e0565b915061429b565b614298816142a1565b91505b50919050565b600060006142ae836119b3565b9050609e8110156142be576142ce565b6142c781614327565b91506142da565b6142d781614366565b91505b50919050565b600060006142f56142f0846119b3565b6119b3565b9050609e81101561430557614315565b61430e81614366565b9150614321565b61431e81614327565b91505b50919050565b60006000614334836119b3565b9050609f81101561434457614354565b61434d816143ad565b9150614360565b61435d816143ec565b91505b50919050565b6000600061437b614376846119b3565b6119b3565b9050609f81101561438b5761439b565b614394816143ec565b91506143a7565b6143a4816143ad565b91505b50919050565b600060006143ba836119b3565b9050609c8110156143ca576143da565b6143d381614433565b91506143e6565b6143e381614472565b91505b50919050565b600060006144016143fc846119b3565b6119b3565b9050609c81101561441157614421565b61441a81614472565b915061442d565b61442a81614433565b91505b50919050565b60006000614440836119b3565b9050609d81101561445057614460565b614459816144b9565b915061446c565b614469816144f8565b91505b50919050565b60006000614487614482846119b3565b6119b3565b9050609d811015614497576144a7565b6144a0816144f8565b91506144b3565b6144b0816144b9565b91505b50919050565b600060006144c6836119b3565b905060a28110156144d6576144e6565b6144df8161453f565b91506144f2565b6144ef8161457e565b91505b50919050565b6000600061450d614508846119b3565b6119b3565b905060a281101561451d5761452d565b6145268161457e565b9150614539565b6145368161453f565b91505b50919050565b6000600061454c836119b3565b905060a381101561455c5761456c565b614565816145c5565b9150614578565b61457581614604565b91505b50919050565b6000600061459361458e846119b3565b6119b3565b905060a38110156145a3576145b3565b6145ac81614604565b91506145bf565b6145bc816145c5565b91505b50919050565b600060006145d2836119b3565b905060a08110156145e2576145f2565b6145eb8161464b565b91506145fe565b6145fb8161468a565b91505b50919050565b60006000614619614614846119b3565b6119b3565b905060a081101561462957614639565b6146328161468a565b9150614645565b6146428161464b565b91505b50919050565b60006000614658836119b3565b905060a181101561466857614678565b614671816146d1565b9150614684565b61468181614710565b91505b50919050565b6000600061469f61469a846119b3565b6119b3565b905060a18110156146af576146bf565b6146b881614710565b91506146cb565b6146c8816146d1565b91505b50919050565b600060006146de836119b3565b905060a68110156146ee576146fe565b6146f781614757565b915061470a565b61470781614796565b91505b50919050565b60006000614725614720846119b3565b6119b3565b905060a681101561473557614745565b61473e81614796565b9150614751565b61474e81614757565b91505b50919050565b60006000614764836119b3565b905060a781101561477457614784565b61477d816147dd565b9150614790565b61478d8161481c565b91505b50919050565b600060006147ab6147a6846119b3565b6119b3565b905060a78110156147bb576147cb565b6147c48161481c565b91506147d7565b6147d4816147dd565b91505b50919050565b600060006147ea836119b3565b905060a48110156147fa5761480a565b61480381614863565b9150614816565b614813816148a2565b91505b50919050565b6000600061483161482c846119b3565b6119b3565b905060a481101561484157614851565b61484a816148a2565b915061485d565b61485a81614863565b91505b50919050565b60006000614870836119b3565b905060a581101561488057614890565b614889816148e9565b915061489c565b61489981614928565b91505b50919050565b600060006148b76148b2846119b3565b6119b3565b905060a58110156148c7576148d7565b6148d081614928565b91506148e3565b6148e0816148e9565b91505b50919050565b600060006148f6836119b3565b905060aa81101561490657614916565b61490f8161496f565b9150614922565b61491f816149ae565b91505b50919050565b6000600061493d614938846119b3565b6119b3565b905060aa81101561494d5761495d565b614956816149ae565b9150614969565b6149668161496f565b91505b50919050565b6000600061497c836119b3565b905060ab81101561498c5761499c565b614995816149f5565b91506149a8565b6149a581614a34565b91505b50919050565b600060006149c36149be846119b3565b6119b3565b905060ab8110156149d3576149e3565b6149dc81614a34565b91506149ef565b6149ec816149f5565b91505b50919050565b60006000614a02836119b3565b905060a8811015614a1257614a22565b614a1b81614a7b565b9150614a2e565b614a2b81614aba565b91505b50919050565b60006000614a49614a44846119b3565b6119b3565b905060a8811015614a5957614a69565b614a6281614aba565b9150614a75565b614a7281614a7b565b91505b50919050565b60006000614a88836119b3565b905060a9811015614a9857614aa8565b614aa181614b01565b9150614ab4565b614ab181614b40565b91505b50919050565b60006000614acf614aca846119b3565b6119b3565b905060a9811015614adf57614aef565b614ae881614b40565b9150614afb565b614af881614b01565b91505b50919050565b60006000614b0e836119b3565b905060ae811015614b1e57614b2e565b614b2781614b87565b9150614b3a565b614b3781614bc6565b91505b50919050565b60006000614b55614b50846119b3565b6119b3565b905060ae811015614b6557614b75565b614b6e81614bc6565b9150614b81565b614b7e81614b87565b91505b50919050565b60006000614b94836119b3565b905060af811015614ba457614bb4565b614bad81614c0d565b9150614bc0565b614bbd81614c4c565b91505b50919050565b60006000614bdb614bd6846119b3565b6119b3565b905060af811015614beb57614bfb565b614bf481614c4c565b9150614c07565b614c0481614c0d565b91505b50919050565b60006000614c1a836119b3565b905060ac811015614c2a57614c3a565b614c3381614c93565b9150614c46565b614c4381614cd2565b91505b50919050565b60006000614c61614c5c846119b3565b6119b3565b905060ac811015614c7157614c81565b614c7a81614cd2565b9150614c8d565b614c8a81614c93565b91505b50919050565b60006000614ca0836119b3565b905060ad811015614cb057614cc0565b614cb981614d19565b9150614ccc565b614cc981614d58565b91505b50919050565b60006000614ce7614ce2846119b3565b6119b3565b905060ad811015614cf757614d07565b614d0081614d58565b9150614d13565b614d1081614d19565b91505b50919050565b60006000614d26836119b3565b905060b2811015614d3657614d46565b614d3f816129c8565b9150614d52565b614d4f81614d9f565b91505b50919050565b60006000614d6d614d68846119b3565b6119b3565b905060b2811015614d7d57614d8d565b614d8681614d9f565b9150614d99565b614d96816129c8565b91505b50919050565b60006000614db4614daf846119b3565b6119b3565b905060b3811015614dc457614dd4565b614dcd816119fa565b9150614de0565b614ddd816119e8565b91505b5091905056", + "code" : "0x60e060020a60003504806301f99ad7146108c3578063023a624a146108d857806303bdecf5146108ed57806305fe035f14610902578063082d8f4914610917578063090bf3b71461092c5780630bd9c534146109415780630c4bfa94146109565780630e20ebe21461096b5780630f76de0d1461098057806310cfcc191461099557806313ce15a9146109aa578063140dcec4146109bf57806314d07a3e146109d45780631687f112146109e957806316eb6603146109fe578063172cf71714610a135780631bd6f59614610a285780631cdb857114610a3d5780631cf74ece14610a525780631d09ba2c14610a675780631f69aa5114610a7c578063223dcc7414610a9157806325e524d314610aa6578063261de7c414610abb5780632632924d14610ad05780632909cc5d14610ae55780632981699814610afa5780632a85a45d14610b0f5780632ca36da014610b245780632cbf1f0d14610b395780632d0f557314610b4e5780632d97867814610b6357806331db9efd14610b7857806332064db714610b8d57806332931fbb14610ba2578063355f51a014610bb7578063361bb34014610bcc578063364ddb0e14610be15780633792a01814610bf657806338c68f8f14610c0b57806338e586fd14610c20578063392d42ae14610c3557806339a87bd914610c4a5780633a95a33214610c5f5780633b8ecdf914610c745780633cf0659a14610c895780633eaf992314610c9e5780633fe97ead14610cb35780633ff11c8b14610cc8578063404efc5314610cdd578063407fce7b14610cf257806340c3b18714610d07578063440208c314610d1c57806344e86b2f14610d31578063455df57914610d465780634689ab4d14610d5b57806346be2e0c14610d70578063487cd86f14610d8557806348e6178214610d9a57806349d4a34414610daf5780634a0f597414610dc45780634bc24ec514610dd95780634c2fe45614610dee5780634cc885d414610e035780634eaaad7b14610e185780634eb166af14610e2d5780635050093414610e42578063506bff1114610e57578063508762c114610e6c578063526938f814610e8157806354400c6014610e96578063559510d814610eab57806355a5f70214610ec057806356ca528f14610ed5578063570a2a1614610eea5780635dab2e0f14610eff5780635dca53d314610f1457806362017ebc14610f29578063621a25f814610f3e578063626d4a3614610f5357806362b6a28214610f6857806364faf22c14610f7d57806366d7ffde14610f9257806367b886e814610fa757806367e902c714610fbc57806369d7774014610fd15780636b7ae8e614610fe65780636c3b659114610ffb5780636e54181e146110105780636e978d91146110255780636f63d2ec1461103a578063706332d11461104f57806370ac4bb9146110645780637138ef521461107957806371dd46a91461108e57806372a7c229146110a35780637376fc8d146110b8578063738a2679146110cd57806374552650146110e2578063746fc8d0146110f757806379254bb81461110c5780637adaa3f8146111215780637e4eb35b14611136578063885ec18e1461114b5780638b9ff6b6146111605780638ce113dc146111755780638defbc5e1461118a5780638f4613d51461119f5780638fdc24ba146111b45780639002dba4146111c957806391d15735146111de57806391d43b23146111f357806393b14daa1461120857806394d63afd1461121d57806395805dad1461123257806396f68782146112475780639740e4a21461125c578063981290131461127157806399a3f0e8146112865780639acb1ad41461129b5780639be07908146112b05780639c15be0b146112c55780639d451c4d146112da5780639d8ee943146112ef5780639ef6ca0f14611304578063a0db0a2214611319578063a18e2eb91461132e578063a408384914611343578063a57544da14611358578063a5a83e4d1461136d578063a6843f3414611382578063a6dacdd714611397578063a8c4c8bc146113ac578063aa058a73146113c1578063aad62da2146113d6578063aaf3e4f4146113eb578063ab81e77314611400578063abc93aee14611415578063abde33f71461142a578063b114b96c1461143f578063b3df873714611454578063b4174cb014611469578063b5d02a561461147e578063b731e84814611493578063b7b96723146114a8578063bbcded7a146114bd578063bbececa9146114d2578063beca7440146114e7578063bf8981c0146114fc578063c028c67414611511578063c2385fa614611526578063c319a02c1461153b578063c569bae014611550578063c6715f8114611565578063c7b98dec1461157a578063c9acab841461158f578063ca9efc73146115a4578063cad80024146115b9578063cdadb0fa146115ce578063cdbdf391146115e3578063cf460fa5146115f8578063cf69318a1461160d578063d1835b8c14611622578063d353a1cb14611637578063d3e141e01461164c578063d5ec7e1d14611661578063d7ead1de14611676578063d90b02aa1461168b578063d959e244146116a0578063d9e68b44146116b5578063daacb24f146116ca578063dc12a805146116df578063dd946033146116f4578063dda5142414611709578063de6612171461171e578063dfb9560c14611733578063e03827d214611748578063e21720001461175d578063e2c718d814611772578063e3da539914611787578063e48e603f1461179c578063e5f9ec29146117b1578063e6c0459a146117c6578063e70addec146117db578063e7a01215146117f0578063ea7f4d2714611805578063ebb6c59f1461181a578063ed6302be1461182f578063ed64b36b14611844578063eecd278914611859578063f0ed14e01461186e578063f0f2134414611883578063f1e328f914611898578063f1e6f4cd146118ad578063f32fe995146118c2578063f75165c6146118d7578063f7ed71d0146118ec578063f80f44f314611901578063f8bc050514611916578063fbd3c51a1461192b578063fd72009014611940578063fed3a3001461195557005b6108ce600435612edf565b8060005260206000f35b6108e3600435612fb5565b8060005260206000f35b6108f8600435613f47565b8060005260206000f35b61090d600435612a11565b8060005260206000f35b6109226004356127ec565b8060005260206000f35b61093760043561215c565b8060005260206000f35b61094c6004356128c2565b8060005260206000f35b61096160043561310f565b8060005260206000f35b610976600435614e0b565b8060005260206000f35b61098b600435613269565b8060005260206000f35b6109a0600435611a82565b8060005260206000f35b6109b5600435613e71565b8060005260206000f35b6109ca600435611dd2565b8060005260206000f35b6109df6004356120d0565b8060005260206000f35b6109f4600435613755565b8060005260206000f35b610a096004356134e3565b8060005260206000f35b610a1e6004356137e1565b8060005260206000f35b610a3360043561382b565b8060005260206000f35b610a48600435612b0b565b8060005260206000f35b610a5d60043561386d565b8060005260206000f35b610a726004356131e5565b8060005260206000f35b610a876004356143e9565b8060005260206000f35b610a9c60043561319b565b8060005260206000f35b610ab1600435612e11565b8060005260206000f35b610ac660043561234a565b8060005260206000f35b610adb6004356121e8565b8060005260206000f35b610af06004356119f6565b8060005260206000f35b610b05600435613bff565b8060005260206000f35b610b1a600435612606565b8060005260206000f35b610b2f6004356126d4565b8060005260206000f35b610b44600435613bb5565b8060005260206000f35b610b59600435612462565b8060005260206000f35b610b6e600435611e14565b8060005260206000f35b610b836004356149ab565b8060005260206000f35b610b98600435611c26565b8060005260206000f35b610bad600435612a7f565b8060005260206000f35b610bc2600435613457565b8060005260206000f35b610bd760043561340d565b8060005260206000f35b610bec60043561363d565b8060005260206000f35b610c01600435612e53565b8060005260206000f35b610c1660043561477b565b8060005260206000f35b610c2b600435612c6d565b8060005260206000f35b610c40600435612648565b8060005260206000f35b610c55600435612274565b8060005260206000f35b610c6a6004356138f9565b8060005260206000f35b610c7f600435612b55565b8060005260206000f35b610c94600435611eea565b8060005260206000f35b610ca9600435613ebb565b8060005260206000f35b610cbe600435613499565b8060005260206000f35b610cd3600435614807565b8060005260206000f35b610ce8600435611fb8565b8060005260206000f35b610cfd600435613083565b8060005260206000f35b610d126004356125bc565b8060005260206000f35b610d27600435613041565b8060005260206000f35b610d3c6004356140a1565b8060005260206000f35b610d516004356147bd565b8060005260206000f35b610d66600435611c70565b8060005260206000f35b610d7b600435612300565b8060005260206000f35b610d906004356123d6565b8060005260206000f35b610da5600435612c23565b8060005260206000f35b610dba600435614faf565b8060005260206000f35b610dcf600435612044565b8060005260206000f35b610de4600435613ae7565b8060005260206000f35b610df9600435614cf3565b8060005260206000f35b610e0e600435613d17565b8060005260206000f35b610e2360043561412d565b8060005260206000f35b610e38600435614177565b8060005260206000f35b610e4d60043561208e565b8060005260206000f35b610e62600435612dc7565b8060005260206000f35b610e77600435612f29565b8060005260206000f35b610e8c6004356124a4565b8060005260206000f35b610ea1600435611b58565b8060005260206000f35b610eb66004356136c9565b8060005260206000f35b610ecb600435613227565b8060005260206000f35b610ee0600435611acc565b8060005260206000f35b610ef5600435613687565b8060005260206000f35b610f0a6004356146a5565b8060005260206000f35b610f1f6004356121a6565b8060005260206000f35b610f346004356132f5565b8060005260206000f35b610f49600435613da3565b8060005260206000f35b610f5e60043561379f565b8060005260206000f35b610f73600435612878565b8060005260206000f35b610f88600435611b0e565b8060005260206000f35b610f9d600435611ea0565b8060005260206000f35b610fb2600435614ed9565b8060005260206000f35b610fc7600435614bdb565b8060005260206000f35b610fdc600435614c1d565b8060005260206000f35b610ff1600435614245565b8060005260206000f35b6110066004356146ef565b8060005260206000f35b61101b60043561428f565b8060005260206000f35b611030600435614ac3565b8060005260206000f35b611045600435613de5565b8060005260206000f35b61105a6004356132b3565b8060005260206000f35b61106f6004356122be565b8060005260206000f35b611084600435612e9d565b8060005260206000f35b611099600435611b9a565b8060005260206000f35b6110ae6004356127aa565b8060005260206000f35b6110c3600435613e2f565b8060005260206000f35b6110d8600435614849565b8060005260206000f35b6110ed600435614dc1565b8060005260206000f35b61110260043561333f565b8060005260206000f35b61111760043561211a565b8060005260206000f35b61112c600435612692565b8060005260206000f35b611141600435612904565b8060005260206000f35b611156600435612d3b565b8060005260206000f35b61116b600435614b91565b8060005260206000f35b611180600435613a5b565b8060005260206000f35b611195600435612232565b8060005260206000f35b6111aa600435612f6b565b8060005260206000f35b6111bf600435614d35565b8060005260206000f35b6111d4600435611a40565b8060005260206000f35b6111e9600435612ff7565b8060005260206000f35b6111fe60043561431b565b8060005260206000f35b611213600435613159565b8060005260206000f35b611228600435612b97565b8060005260206000f35b61123d600435612990565b8060005260206000f35b611252600435613b73565b8060005260206000f35b611267600435614961565b8060005260206000f35b61127c600435613381565b8060005260206000f35b611291600435613fd3565b8060005260206000f35b6112a660043561257a565b8060005260206000f35b6112bb600435614501565b8060005260206000f35b6112d0600435613d59565b8060005260206000f35b6112e56004356143a7565b8060005260206000f35b6112fa60043561405f565b8060005260206000f35b61130f60043561238c565b8060005260206000f35b611324600435612be1565b8060005260206000f35b611339600435613f89565b8060005260206000f35b61134e60043561294e565b8060005260206000f35b6113636004356124ee565b8060005260206000f35b611378600435614b4f565b8060005260206000f35b61138d6004356133cb565b8060005260206000f35b6113a26004356139cf565b8060005260206000f35b6113b7600435613c8b565b8060005260206000f35b6113cc600435612cf9565b8060005260206000f35b6113e1600435614a79565b8060005260206000f35b6113f66004356149ed565b8060005260206000f35b61140b600435613b29565b8060005260206000f35b611420600435613ccd565b8060005260206000f35b611435600435611f76565b8060005260206000f35b61144a600435614ff1565b8060005260206000f35b61145f600435613525565b8060005260206000f35b61147460043561356f565b8060005260206000f35b6114896004356129dc565b8060005260206000f35b61149e600435614ca9565b8060005260206000f35b6114b3600435612d85565b8060005260206000f35b6114c86004356141b9565b8060005260206000f35b6114dd600435614475565b8060005260206000f35b6114f26004356135fb565b8060005260206000f35b611507600435612530565b8060005260206000f35b61151c600435614663565b8060005260206000f35b611531600435614433565b8060005260206000f35b611546600435614f23565b8060005260206000f35b61155b600435614c67565b8060005260206000f35b611570600435611d3e565b8060005260206000f35b611585600435612a3d565b8060005260206000f35b61159a600435613a11565b8060005260206000f35b6115af600435614619565b8060005260206000f35b6115c4600435613985565b8060005260206000f35b6115d9600435613943565b8060005260206000f35b6115ee600435612418565b8060005260206000f35b6116036004356119b4565b8060005260206000f35b611618600435613a9d565b8060005260206000f35b61162d600435611cb2565b8060005260206000f35b6116426004356129d2565b8060005260206000f35b611657600435612caf565b8060005260206000f35b61166c600435611d88565b8060005260206000f35b611681600435614203565b8060005260206000f35b61169660043561458d565b8060005260206000f35b6116ab600435611f2c565b8060005260206000f35b6116c0600435612a23565b8060005260206000f35b6116d5600435612836565b8060005260206000f35b6116ea6004356138b7565b8060005260206000f35b6116ff6004356145d7565b8060005260206000f35b61171460043561454b565b8060005260206000f35b6117296004356142d1565b8060005260206000f35b61173e600435611e5e565b8060005260206000f35b611753600435614015565b8060005260206000f35b611768600435613c41565b8060005260206000f35b61177d600435611be4565b8060005260206000f35b611792600435614b05565b8060005260206000f35b6117a7600435613713565b8060005260206000f35b6117bc6004356135b1565b8060005260206000f35b6117d16004356144bf565b8060005260206000f35b6117e660043561491f565b8060005260206000f35b6117fb600435612ac9565b8060005260206000f35b6118106004356130cd565b8060005260206000f35b6118256004356140eb565b8060005260206000f35b61183a600435614f65565b8060005260206000f35b61184f60043561196a565b8060005260206000f35b6118646004356148d5565b8060005260206000f35b611879600435614d7f565b8060005260206000f35b61188e600435612002565b8060005260206000f35b6118a3600435613efd565b8060005260206000f35b6118b860043561271e565b8060005260206000f35b6118cd600435614e4d565b8060005260206000f35b6118e2600435611cfc565b8060005260206000f35b6118f7600435612760565b8060005260206000f35b61190c600435614e97565b8060005260206000f35b61192160043561435d565b8060005260206000f35b611936600435614731565b8060005260206000f35b61194b600435614893565b8060005260206000f35b611960600435614a37565b8060005260206000f35b6000600061197f61197a846129dc565b6129dc565b9050605d60020a811015611992576119a2565b61199b816119f6565b91506119ae565b6119ab816119b4565b91505b50919050565b600060006119c1836129dc565b9050605e60020a8110156119d4576119e4565b6119dd81611a40565b91506119f0565b6119ed81611a82565b91505b50919050565b60006000611a0b611a06846129dc565b6129dc565b9050605e60020a811015611a1e57611a2e565b611a2781611a82565b9150611a3a565b611a3781611a40565b91505b50919050565b60006000611a4d836129dc565b9050605f60020a811015611a6057611a70565b611a6981611acc565b9150611a7c565b611a7981611b0e565b91505b50919050565b60006000611a97611a92846129dc565b6129dc565b9050605f60020a811015611aaa57611aba565b611ab381611b0e565b9150611ac6565b611ac381611acc565b91505b50919050565b60006000611ad9836129dc565b9050606060020a811015611aec57611afc565b611af581611b58565b9150611b08565b611b0581611b9a565b91505b50919050565b60006000611b23611b1e846129dc565b6129dc565b9050606060020a811015611b3657611b46565b611b3f81611b9a565b9150611b52565b611b4f81611b58565b91505b50919050565b60006000611b65836129dc565b9050606160020a811015611b7857611b88565b611b8181611be4565b9150611b94565b611b9181611c26565b91505b50919050565b60006000611baf611baa846129dc565b6129dc565b9050606160020a811015611bc257611bd2565b611bcb81611c26565b9150611bde565b611bdb81611be4565b91505b50919050565b60006000611bf1836129dc565b9050606260020a811015611c0457611c14565b611c0d81611c70565b9150611c20565b611c1d81611cb2565b91505b50919050565b60006000611c3b611c36846129dc565b6129dc565b9050606260020a811015611c4e57611c5e565b611c5781611cb2565b9150611c6a565b611c6781611c70565b91505b50919050565b60006000611c7d836129dc565b9050606360020a811015611c9057611ca0565b611c9981611cfc565b9150611cac565b611ca981611d88565b91505b50919050565b60006000611cc7611cc2846129dc565b6129dc565b9050606360020a811015611cda57611cea565b611ce381611d88565b9150611cf6565b611cf381611cfc565b91505b50919050565b60006000611d09836129dc565b9050606460020a811015611d1c57611d2c565b611d2581611dd2565b9150611d38565b611d3581611e14565b91505b50919050565b60006000611d53611d4e846129dc565b6129dc565b9050607a60020a811015611d6657611d76565b611d6f81613269565b9150611d82565b611d7f81613227565b91505b50919050565b60006000611d9d611d98846129dc565b6129dc565b9050606460020a811015611db057611dc0565b611db981611e14565b9150611dcc565b611dc981611dd2565b91505b50919050565b60006000611ddf836129dc565b9050606560020a811015611df257611e02565b611dfb81611e5e565b9150611e0e565b611e0b81611ea0565b91505b50919050565b60006000611e29611e24846129dc565b6129dc565b9050606560020a811015611e3c57611e4c565b611e4581611ea0565b9150611e58565b611e5581611e5e565b91505b50919050565b60006000611e6b836129dc565b9050606660020a811015611e7e57611e8e565b611e8781611eea565b9150611e9a565b611e9781611f2c565b91505b50919050565b60006000611eb5611eb0846129dc565b6129dc565b9050606660020a811015611ec857611ed8565b611ed181611f2c565b9150611ee4565b611ee181611eea565b91505b50919050565b60006000611ef7836129dc565b9050606760020a811015611f0a57611f1a565b611f1381611f76565b9150611f26565b611f2381611fb8565b91505b50919050565b60006000611f41611f3c846129dc565b6129dc565b9050606760020a811015611f5457611f64565b611f5d81611fb8565b9150611f70565b611f6d81611f76565b91505b50919050565b60006000611f83836129dc565b9050606860020a811015611f9657611fa6565b611f9f81612002565b9150611fb2565b611faf81612044565b91505b50919050565b60006000611fcd611fc8846129dc565b6129dc565b9050606860020a811015611fe057611ff0565b611fe981612044565b9150611ffc565b611ff981612002565b91505b50919050565b6000600061200f836129dc565b9050606960020a81101561202257612032565b61202b8161208e565b915061203e565b61203b816120d0565b91505b50919050565b60006000612059612054846129dc565b6129dc565b9050606960020a81101561206c5761207c565b612075816120d0565b9150612088565b6120858161208e565b91505b50919050565b6000600061209b836129dc565b9050606a60020a8110156120ae576120be565b6120b78161211a565b91506120ca565b6120c78161215c565b91505b50919050565b600060006120e56120e0846129dc565b6129dc565b9050606a60020a8110156120f857612108565b6121018161215c565b9150612114565b6121118161211a565b91505b50919050565b60006000612127836129dc565b9050606b60020a81101561213a5761214a565b612143816121a6565b9150612156565b612153816121e8565b91505b50919050565b6000600061217161216c846129dc565b6129dc565b9050606b60020a81101561218457612194565b61218d816121e8565b91506121a0565b61219d816121a6565b91505b50919050565b600060006121b3836129dc565b9050606c60020a8110156121c6576121d6565b6121cf81612232565b91506121e2565b6121df81612274565b91505b50919050565b600060006121fd6121f8846129dc565b6129dc565b9050606c60020a81101561221057612220565b61221981612274565b915061222c565b61222981612232565b91505b50919050565b6000600061223f836129dc565b9050606d60020a81101561225257612262565b61225b816122be565b915061226e565b61226b81612300565b91505b50919050565b60006000612289612284846129dc565b6129dc565b9050606d60020a81101561229c576122ac565b6122a581612300565b91506122b8565b6122b5816122be565b91505b50919050565b600060006122cb836129dc565b9050606e60020a8110156122de576122ee565b6122e78161234a565b91506122fa565b6122f78161238c565b91505b50919050565b60006000612315612310846129dc565b6129dc565b9050606e60020a81101561232857612338565b6123318161238c565b9150612344565b6123418161234a565b91505b50919050565b60006000612357836129dc565b9050606f60020a81101561236a5761237a565b612373816123d6565b9150612386565b61238381612418565b91505b50919050565b600060006123a161239c846129dc565b6129dc565b9050606f60020a8110156123b4576123c4565b6123bd81612418565b91506123d0565b6123cd816123d6565b91505b50919050565b600060006123e3836129dc565b9050607060020a8110156123f657612406565b6123ff81612462565b9150612412565b61240f816124a4565b91505b50919050565b6000600061242d612428846129dc565b6129dc565b9050607060020a81101561244057612450565b612449816124a4565b915061245c565b61245981612462565b91505b50919050565b6000600061246f836129dc565b9050607160020a81101561248257612492565b61248b816124ee565b915061249e565b61249b81612530565b91505b50919050565b600060006124b96124b4846129dc565b6129dc565b9050607160020a8110156124cc576124dc565b6124d581612530565b91506124e8565b6124e5816124ee565b91505b50919050565b600060006124fb836129dc565b9050607260020a81101561250e5761251e565b6125178161257a565b915061252a565b612527816125bc565b91505b50919050565b60006000612545612540846129dc565b6129dc565b9050607260020a81101561255857612568565b612561816125bc565b9150612574565b6125718161257a565b91505b50919050565b60006000612587836129dc565b9050607360020a81101561259a576125aa565b6125a381612606565b91506125b6565b6125b381612648565b91505b50919050565b600060006125d16125cc846129dc565b6129dc565b9050607360020a8110156125e4576125f4565b6125ed81612648565b9150612600565b6125fd81612606565b91505b50919050565b60006000612613836129dc565b9050607460020a81101561262657612636565b61262f81612692565b9150612642565b61263f816126d4565b91505b50919050565b6000600061265d612658846129dc565b6129dc565b9050607460020a81101561267057612680565b612679816126d4565b915061268c565b61268981612692565b91505b50919050565b6000600061269f836129dc565b9050607560020a8110156126b2576126c2565b6126bb8161271e565b91506126ce565b6126cb81612760565b91505b50919050565b600060006126e96126e4846129dc565b6129dc565b9050607560020a8110156126fc5761270c565b61270581612760565b9150612718565b6127158161271e565b91505b50919050565b6000600061272b836129dc565b9050607660020a81101561273e5761274e565b612747816127aa565b915061275a565b612757816127ec565b91505b50919050565b60006000612775612770846129dc565b6129dc565b9050607660020a81101561278857612798565b612791816127ec565b91506127a4565b6127a1816127aa565b91505b50919050565b600060006127b7836129dc565b9050607760020a8110156127ca576127da565b6127d381612836565b91506127e6565b6127e381612878565b91505b50919050565b600060006128016127fc846129dc565b6129dc565b9050607760020a81101561281457612824565b61281d81612878565b9150612830565b61282d81612836565b91505b50919050565b60006000612843836129dc565b9050607860020a81101561285657612866565b61285f816128c2565b9150612872565b61286f81612904565b91505b50919050565b6000600061288d612888846129dc565b6129dc565b9050607860020a8110156128a0576128b0565b6128a981612904565b91506128bc565b6128b9816128c2565b91505b50919050565b600060006128cf836129dc565b9050607960020a8110156128e2576128f2565b6128eb8161294e565b91506128fe565b6128fb81611d3e565b91505b50919050565b60006000612919612914846129dc565b6129dc565b9050607960020a81101561292c5761293c565b61293581611d3e565b9150612948565b6129458161294e565b91505b50919050565b6000600061295b836129dc565b9050607a60020a81101561296e5761297e565b61297781613227565b915061298a565b61298781613269565b91505b50919050565b6000600061299d836129dc565b9050604e60020a8110156129b0576129c0565b6129b981612a7f565b91506129cc565b6129c981612a3d565b91505b50919050565b6000819050919050565b600060007f5851f42d4c957f2c0000000000000000000000000000000000000000000000019050828102600101915050919050565b6000612a1c826129d2565b9050919050565b6000612a36612a31836129dc565b6129d2565b9050919050565b60006000612a4a836129dc565b9050604f60020a811015612a5d57612a6d565b612a6681612ac9565b9150612a79565b612a7681612b0b565b91505b50919050565b60006000612a94612a8f846129dc565b6129dc565b9050604f60020a811015612aa757612ab7565b612ab081612b0b565b9150612ac3565b612ac081612ac9565b91505b50919050565b60006000612ad6836129dc565b9050605060020a811015612ae957612af9565b612af281612b55565b9150612b05565b612b0281612b97565b91505b50919050565b60006000612b20612b1b846129dc565b6129dc565b9050605060020a811015612b3357612b43565b612b3c81612b97565b9150612b4f565b612b4c81612b55565b91505b50919050565b60006000612b62836129dc565b9050605160020a811015612b7557612b85565b612b7e81612be1565b9150612b91565b612b8e81612c23565b91505b50919050565b60006000612bac612ba7846129dc565b6129dc565b9050605160020a811015612bbf57612bcf565b612bc881612c23565b9150612bdb565b612bd881612be1565b91505b50919050565b60006000612bee836129dc565b9050605260020a811015612c0157612c11565b612c0a81612c6d565b9150612c1d565b612c1a81612caf565b91505b50919050565b60006000612c38612c33846129dc565b6129dc565b9050605260020a811015612c4b57612c5b565b612c5481612caf565b9150612c67565b612c6481612c6d565b91505b50919050565b60006000612c7a836129dc565b9050605360020a811015612c8d57612c9d565b612c9681612cf9565b9150612ca9565b612ca681612d3b565b91505b50919050565b60006000612cc4612cbf846129dc565b6129dc565b9050605360020a811015612cd757612ce7565b612ce081612d3b565b9150612cf3565b612cf081612cf9565b91505b50919050565b60006000612d06836129dc565b9050605460020a811015612d1957612d29565b612d2281612d85565b9150612d35565b612d3281612dc7565b91505b50919050565b60006000612d50612d4b846129dc565b6129dc565b9050605460020a811015612d6357612d73565b612d6c81612dc7565b9150612d7f565b612d7c81612d85565b91505b50919050565b60006000612d92836129dc565b9050605560020a811015612da557612db5565b612dae81612e11565b9150612dc1565b612dbe81612e53565b91505b50919050565b60006000612ddc612dd7846129dc565b6129dc565b9050605560020a811015612def57612dff565b612df881612e53565b9150612e0b565b612e0881612e11565b91505b50919050565b60006000612e1e836129dc565b9050605660020a811015612e3157612e41565b612e3a81612e9d565b9150612e4d565b612e4a81612edf565b91505b50919050565b60006000612e68612e63846129dc565b6129dc565b9050605660020a811015612e7b57612e8b565b612e8481612edf565b9150612e97565b612e9481612e9d565b91505b50919050565b60006000612eaa836129dc565b9050605760020a811015612ebd57612ecd565b612ec681612f29565b9150612ed9565b612ed681612f6b565b91505b50919050565b60006000612ef4612eef846129dc565b6129dc565b9050605760020a811015612f0757612f17565b612f1081612f6b565b9150612f23565b612f2081612f29565b91505b50919050565b60006000612f36836129dc565b9050605860020a811015612f4957612f59565b612f5281612fb5565b9150612f65565b612f6281612ff7565b91505b50919050565b60006000612f80612f7b846129dc565b6129dc565b9050605860020a811015612f9357612fa3565b612f9c81612ff7565b9150612faf565b612fac81612fb5565b91505b50919050565b60006000612fc2836129dc565b9050605960020a811015612fd557612fe5565b612fde81613041565b9150612ff1565b612fee81613083565b91505b50919050565b6000600061300c613007846129dc565b6129dc565b9050605960020a81101561301f5761302f565b61302881613083565b915061303b565b61303881613041565b91505b50919050565b6000600061304e836129dc565b9050605a60020a81101561306157613071565b61306a816130cd565b915061307d565b61307a8161310f565b91505b50919050565b60006000613098613093846129dc565b6129dc565b9050605a60020a8110156130ab576130bb565b6130b48161310f565b91506130c7565b6130c4816130cd565b91505b50919050565b600060006130da836129dc565b9050605b60020a8110156130ed576130fd565b6130f681613159565b9150613109565b6131068161319b565b91505b50919050565b6000600061312461311f846129dc565b6129dc565b9050605b60020a81101561313757613147565b6131408161319b565b9150613153565b61315081613159565b91505b50919050565b60006000613166836129dc565b9050605c60020a81101561317957613189565b613182816131e5565b9150613195565b6131928161196a565b91505b50919050565b600060006131b06131ab846129dc565b6129dc565b9050605c60020a8110156131c3576131d3565b6131cc8161196a565b91506131df565b6131dc816131e5565b91505b50919050565b600060006131f2836129dc565b9050605d60020a81101561320557613215565b61320e816119b4565b9150613221565b61321e816119f6565b91505b50919050565b60006000613234836129dc565b9050607b60020a81101561324757613257565b613250816132b3565b9150613263565b613260816132f5565b91505b50919050565b6000600061327e613279846129dc565b6129dc565b9050607b60020a811015613291576132a1565b61329a816132f5565b91506132ad565b6132aa816132b3565b91505b50919050565b600060006132c0836129dc565b9050607c60020a8110156132d3576132e3565b6132dc8161333f565b91506132ef565b6132ec81613381565b91505b50919050565b6000600061330a613305846129dc565b6129dc565b9050607c60020a81101561331d5761332d565b61332681613381565b9150613339565b6133368161333f565b91505b50919050565b6000600061334c836129dc565b9050607d60020a81101561335f5761336f565b613368816133cb565b915061337b565b6133788161340d565b91505b50919050565b60006000613396613391846129dc565b6129dc565b9050607d60020a8110156133a9576133b9565b6133b28161340d565b91506133c5565b6133c2816133cb565b91505b50919050565b600060006133d8836129dc565b9050607e60020a8110156133eb576133fb565b6133f481613457565b9150613407565b61340481613499565b91505b50919050565b6000600061342261341d846129dc565b6129dc565b9050607e60020a81101561343557613445565b61343e81613499565b9150613451565b61344e81613457565b91505b50919050565b60006000613464836129dc565b9050607f60020a81101561347757613487565b613480816134e3565b9150613493565b61349081613525565b91505b50919050565b600060006134ae6134a9846129dc565b6129dc565b9050607f60020a8110156134c1576134d1565b6134ca81613525565b91506134dd565b6134da816134e3565b91505b50919050565b600060006134f0836129dc565b9050608060020a81101561350357613513565b61350c8161356f565b915061351f565b61351c816135b1565b91505b50919050565b6000600061353a613535846129dc565b6129dc565b9050608060020a81101561354d5761355d565b613556816135b1565b9150613569565b6135668161356f565b91505b50919050565b6000600061357c836129dc565b9050608160020a81101561358f5761359f565b613598816135fb565b91506135ab565b6135a88161363d565b91505b50919050565b600060006135c66135c1846129dc565b6129dc565b9050608160020a8110156135d9576135e9565b6135e28161363d565b91506135f5565b6135f2816135fb565b91505b50919050565b60006000613608836129dc565b9050608260020a81101561361b5761362b565b61362481613687565b9150613637565b613634816136c9565b91505b50919050565b6000600061365261364d846129dc565b6129dc565b9050608260020a81101561366557613675565b61366e816136c9565b9150613681565b61367e81613687565b91505b50919050565b60006000613694836129dc565b9050608360020a8110156136a7576136b7565b6136b081613713565b91506136c3565b6136c081613755565b91505b50919050565b600060006136de6136d9846129dc565b6129dc565b9050608360020a8110156136f157613701565b6136fa81613755565b915061370d565b61370a81613713565b91505b50919050565b60006000613720836129dc565b9050608460020a81101561373357613743565b61373c8161379f565b915061374f565b61374c816137e1565b91505b50919050565b6000600061376a613765846129dc565b6129dc565b9050608460020a81101561377d5761378d565b613786816137e1565b9150613799565b6137968161379f565b91505b50919050565b600060006137ac836129dc565b9050608560020a8110156137bf576137cf565b6137c88161382b565b91506137db565b6137d88161386d565b91505b50919050565b600060006137f66137f1846129dc565b6129dc565b9050608560020a81101561380957613819565b6138128161386d565b9150613825565b6138228161382b565b91505b50919050565b60006000613838836129dc565b9050608660020a81101561384b5761385b565b613854816138b7565b9150613867565b613864816138f9565b91505b50919050565b6000600061388261387d846129dc565b6129dc565b9050608660020a811015613895576138a5565b61389e816138f9565b91506138b1565b6138ae816138b7565b91505b50919050565b600060006138c4836129dc565b9050608760020a8110156138d7576138e7565b6138e081613943565b91506138f3565b6138f081613985565b91505b50919050565b6000600061390e613909846129dc565b6129dc565b9050608760020a81101561392157613931565b61392a81613985565b915061393d565b61393a81613943565b91505b50919050565b60006000613950836129dc565b9050608860020a81101561396357613973565b61396c816139cf565b915061397f565b61397c81613a11565b91505b50919050565b6000600061399a613995846129dc565b6129dc565b9050608860020a8110156139ad576139bd565b6139b681613a11565b91506139c9565b6139c6816139cf565b91505b50919050565b600060006139dc836129dc565b9050608960020a8110156139ef576139ff565b6139f881613a5b565b9150613a0b565b613a0881613a9d565b91505b50919050565b60006000613a26613a21846129dc565b6129dc565b9050608960020a811015613a3957613a49565b613a4281613a9d565b9150613a55565b613a5281613a5b565b91505b50919050565b60006000613a68836129dc565b9050608a60020a811015613a7b57613a8b565b613a8481613ae7565b9150613a97565b613a9481613b29565b91505b50919050565b60006000613ab2613aad846129dc565b6129dc565b9050608a60020a811015613ac557613ad5565b613ace81613b29565b9150613ae1565b613ade81613ae7565b91505b50919050565b60006000613af4836129dc565b9050608b60020a811015613b0757613b17565b613b1081613b73565b9150613b23565b613b2081613bb5565b91505b50919050565b60006000613b3e613b39846129dc565b6129dc565b9050608b60020a811015613b5157613b61565b613b5a81613bb5565b9150613b6d565b613b6a81613b73565b91505b50919050565b60006000613b80836129dc565b9050608c60020a811015613b9357613ba3565b613b9c81613bff565b9150613baf565b613bac81613c41565b91505b50919050565b60006000613bca613bc5846129dc565b6129dc565b9050608c60020a811015613bdd57613bed565b613be681613c41565b9150613bf9565b613bf681613bff565b91505b50919050565b60006000613c0c836129dc565b9050608d60020a811015613c1f57613c2f565b613c2881613c8b565b9150613c3b565b613c3881613ccd565b91505b50919050565b60006000613c56613c51846129dc565b6129dc565b9050608d60020a811015613c6957613c79565b613c7281613ccd565b9150613c85565b613c8281613c8b565b91505b50919050565b60006000613c98836129dc565b9050608e60020a811015613cab57613cbb565b613cb481613d17565b9150613cc7565b613cc481613d59565b91505b50919050565b60006000613ce2613cdd846129dc565b6129dc565b9050608e60020a811015613cf557613d05565b613cfe81613d59565b9150613d11565b613d0e81613d17565b91505b50919050565b60006000613d24836129dc565b9050608f60020a811015613d3757613d47565b613d4081613da3565b9150613d53565b613d5081613de5565b91505b50919050565b60006000613d6e613d69846129dc565b6129dc565b9050608f60020a811015613d8157613d91565b613d8a81613de5565b9150613d9d565b613d9a81613da3565b91505b50919050565b60006000613db0836129dc565b9050609060020a811015613dc357613dd3565b613dcc81613e2f565b9150613ddf565b613ddc81613e71565b91505b50919050565b60006000613dfa613df5846129dc565b6129dc565b9050609060020a811015613e0d57613e1d565b613e1681613e71565b9150613e29565b613e2681613e2f565b91505b50919050565b60006000613e3c836129dc565b9050609160020a811015613e4f57613e5f565b613e5881613ebb565b9150613e6b565b613e6881613efd565b91505b50919050565b60006000613e86613e81846129dc565b6129dc565b9050609160020a811015613e9957613ea9565b613ea281613efd565b9150613eb5565b613eb281613ebb565b91505b50919050565b60006000613ec8836129dc565b9050609260020a811015613edb57613eeb565b613ee481613f47565b9150613ef7565b613ef481613f89565b91505b50919050565b60006000613f12613f0d846129dc565b6129dc565b9050609260020a811015613f2557613f35565b613f2e81613f89565b9150613f41565b613f3e81613f47565b91505b50919050565b60006000613f54836129dc565b9050609360020a811015613f6757613f77565b613f7081613fd3565b9150613f83565b613f8081614015565b91505b50919050565b60006000613f9e613f99846129dc565b6129dc565b9050609360020a811015613fb157613fc1565b613fba81614015565b9150613fcd565b613fca81613fd3565b91505b50919050565b60006000613fe0836129dc565b9050609460020a811015613ff357614003565b613ffc8161405f565b915061400f565b61400c816140a1565b91505b50919050565b6000600061402a614025846129dc565b6129dc565b9050609460020a81101561403d5761404d565b614046816140a1565b9150614059565b6140568161405f565b91505b50919050565b6000600061406c836129dc565b9050609560020a81101561407f5761408f565b614088816140eb565b915061409b565b6140988161412d565b91505b50919050565b600060006140b66140b1846129dc565b6129dc565b9050609560020a8110156140c9576140d9565b6140d28161412d565b91506140e5565b6140e2816140eb565b91505b50919050565b600060006140f8836129dc565b9050609660020a81101561410b5761411b565b61411481614177565b9150614127565b614124816141b9565b91505b50919050565b6000600061414261413d846129dc565b6129dc565b9050609660020a81101561415557614165565b61415e816141b9565b9150614171565b61416e81614177565b91505b50919050565b60006000614184836129dc565b9050609760020a811015614197576141a7565b6141a081614203565b91506141b3565b6141b081614245565b91505b50919050565b600060006141ce6141c9846129dc565b6129dc565b9050609760020a8110156141e1576141f1565b6141ea81614245565b91506141fd565b6141fa81614203565b91505b50919050565b60006000614210836129dc565b9050609860020a81101561422357614233565b61422c8161428f565b915061423f565b61423c816142d1565b91505b50919050565b6000600061425a614255846129dc565b6129dc565b9050609860020a81101561426d5761427d565b614276816142d1565b9150614289565b6142868161428f565b91505b50919050565b6000600061429c836129dc565b9050609960020a8110156142af576142bf565b6142b88161431b565b91506142cb565b6142c88161435d565b91505b50919050565b600060006142e66142e1846129dc565b6129dc565b9050609960020a8110156142f957614309565b6143028161435d565b9150614315565b6143128161431b565b91505b50919050565b60006000614328836129dc565b9050609a60020a81101561433b5761434b565b614344816143a7565b9150614357565b614354816143e9565b91505b50919050565b6000600061437261436d846129dc565b6129dc565b9050609a60020a81101561438557614395565b61438e816143e9565b91506143a1565b61439e816143a7565b91505b50919050565b600060006143b4836129dc565b9050609b60020a8110156143c7576143d7565b6143d081614433565b91506143e3565b6143e081614475565b91505b50919050565b600060006143fe6143f9846129dc565b6129dc565b9050609b60020a81101561441157614421565b61441a81614475565b915061442d565b61442a81614433565b91505b50919050565b60006000614440836129dc565b9050609c60020a81101561445357614463565b61445c816144bf565b915061446f565b61446c81614501565b91505b50919050565b6000600061448a614485846129dc565b6129dc565b9050609c60020a81101561449d576144ad565b6144a681614501565b91506144b9565b6144b6816144bf565b91505b50919050565b600060006144cc836129dc565b9050609d60020a8110156144df576144ef565b6144e88161454b565b91506144fb565b6144f88161458d565b91505b50919050565b60006000614516614511846129dc565b6129dc565b9050609d60020a81101561452957614539565b6145328161458d565b9150614545565b6145428161454b565b91505b50919050565b60006000614558836129dc565b9050609e60020a81101561456b5761457b565b614574816145d7565b9150614587565b61458481614619565b91505b50919050565b600060006145a261459d846129dc565b6129dc565b9050609e60020a8110156145b5576145c5565b6145be81614619565b91506145d1565b6145ce816145d7565b91505b50919050565b600060006145e4836129dc565b9050609f60020a8110156145f757614607565b61460081614663565b9150614613565b614610816146a5565b91505b50919050565b6000600061462e614629846129dc565b6129dc565b9050609f60020a81101561464157614651565b61464a816146a5565b915061465d565b61465a81614663565b91505b50919050565b60006000614670836129dc565b905060a060020a81101561468357614693565b61468c816146ef565b915061469f565b61469c81614731565b91505b50919050565b600060006146ba6146b5846129dc565b6129dc565b905060a060020a8110156146cd576146dd565b6146d681614731565b91506146e9565b6146e6816146ef565b91505b50919050565b600060006146fc836129dc565b905060a160020a81101561470f5761471f565b6147188161477b565b915061472b565b614728816147bd565b91505b50919050565b60006000614746614741846129dc565b6129dc565b905060a160020a81101561475957614769565b614762816147bd565b9150614775565b6147728161477b565b91505b50919050565b60006000614788836129dc565b905060a260020a81101561479b576147ab565b6147a481614807565b91506147b7565b6147b481614849565b91505b50919050565b600060006147d26147cd846129dc565b6129dc565b905060a260020a8110156147e5576147f5565b6147ee81614849565b9150614801565b6147fe81614807565b91505b50919050565b60006000614814836129dc565b905060a360020a81101561482757614837565b61483081614893565b9150614843565b614840816148d5565b91505b50919050565b6000600061485e614859846129dc565b6129dc565b905060a360020a81101561487157614881565b61487a816148d5565b915061488d565b61488a81614893565b91505b50919050565b600060006148a0836129dc565b905060a460020a8110156148b3576148c3565b6148bc8161491f565b91506148cf565b6148cc81614961565b91505b50919050565b600060006148ea6148e5846129dc565b6129dc565b905060a460020a8110156148fd5761490d565b61490681614961565b9150614919565b6149168161491f565b91505b50919050565b6000600061492c836129dc565b905060a560020a81101561493f5761494f565b614948816149ab565b915061495b565b614958816149ed565b91505b50919050565b60006000614976614971846129dc565b6129dc565b905060a560020a81101561498957614999565b614992816149ed565b91506149a5565b6149a2816149ab565b91505b50919050565b600060006149b8836129dc565b905060a660020a8110156149cb576149db565b6149d481614a37565b91506149e7565b6149e481614a79565b91505b50919050565b60006000614a026149fd846129dc565b6129dc565b905060a660020a811015614a1557614a25565b614a1e81614a79565b9150614a31565b614a2e81614a37565b91505b50919050565b60006000614a44836129dc565b905060a760020a811015614a5757614a67565b614a6081614ac3565b9150614a73565b614a7081614b05565b91505b50919050565b60006000614a8e614a89846129dc565b6129dc565b905060a760020a811015614aa157614ab1565b614aaa81614b05565b9150614abd565b614aba81614ac3565b91505b50919050565b60006000614ad0836129dc565b905060a860020a811015614ae357614af3565b614aec81614b4f565b9150614aff565b614afc81614b91565b91505b50919050565b60006000614b1a614b15846129dc565b6129dc565b905060a860020a811015614b2d57614b3d565b614b3681614b91565b9150614b49565b614b4681614b4f565b91505b50919050565b60006000614b5c836129dc565b905060a960020a811015614b6f57614b7f565b614b7881614bdb565b9150614b8b565b614b8881614c1d565b91505b50919050565b60006000614ba6614ba1846129dc565b6129dc565b905060a960020a811015614bb957614bc9565b614bc281614c1d565b9150614bd5565b614bd281614bdb565b91505b50919050565b60006000614be8836129dc565b905060aa60020a811015614bfb57614c0b565b614c0481614c67565b9150614c17565b614c1481614ca9565b91505b50919050565b60006000614c32614c2d846129dc565b6129dc565b905060aa60020a811015614c4557614c55565b614c4e81614ca9565b9150614c61565b614c5e81614c67565b91505b50919050565b60006000614c74836129dc565b905060ab60020a811015614c8757614c97565b614c9081614cf3565b9150614ca3565b614ca081614d35565b91505b50919050565b60006000614cbe614cb9846129dc565b6129dc565b905060ab60020a811015614cd157614ce1565b614cda81614d35565b9150614ced565b614cea81614cf3565b91505b50919050565b60006000614d00836129dc565b905060ac60020a811015614d1357614d23565b614d1c81614d7f565b9150614d2f565b614d2c81614dc1565b91505b50919050565b60006000614d4a614d45846129dc565b6129dc565b905060ac60020a811015614d5d57614d6d565b614d6681614dc1565b9150614d79565b614d7681614d7f565b91505b50919050565b60006000614d8c836129dc565b905060ad60020a811015614d9f57614daf565b614da881614e0b565b9150614dbb565b614db881614e4d565b91505b50919050565b60006000614dd6614dd1846129dc565b6129dc565b905060ad60020a811015614de957614df9565b614df281614e4d565b9150614e05565b614e0281614e0b565b91505b50919050565b60006000614e18836129dc565b905060ae60020a811015614e2b57614e3b565b614e3481614e97565b9150614e47565b614e4481614ed9565b91505b50919050565b60006000614e62614e5d846129dc565b6129dc565b905060ae60020a811015614e7557614e85565b614e7e81614ed9565b9150614e91565b614e8e81614e97565b91505b50919050565b60006000614ea4836129dc565b905060af60020a811015614eb757614ec7565b614ec081614f23565b9150614ed3565b614ed081614f65565b91505b50919050565b60006000614eee614ee9846129dc565b6129dc565b905060af60020a811015614f0157614f11565b614f0a81614f65565b9150614f1d565b614f1a81614f23565b91505b50919050565b60006000614f30836129dc565b905060b060020a811015614f4357614f53565b614f4c81614faf565b9150614f5f565b614f5c81614ff1565b91505b50919050565b60006000614f7a614f75846129dc565b6129dc565b905060b060020a811015614f8d57614f9d565b614f9681614ff1565b9150614fa9565b614fa681614faf565b91505b50919050565b60006000614fbc836129dc565b905060b160020a811015614fcf57614fdf565b614fd881612a11565b9150614feb565b614fe881612a23565b91505b50919050565b60006000615006615001846129dc565b6129dc565b905060b160020a81101561501957615029565b61502281612a23565b9150615035565b61503281612a11565b91505b5091905056", "storage": {} } },