' +JJJJ ?\>m0M='+l> /+l   d']6@5L&]655]6LF%5 & "L}"BB5L&]6 X  `6 77777777777JJJJx 77L? L7877777777 776i 7 7867 7`77 777777`x =(`(8`5775I7`B` 76`77`>J><;VU<)?<`8'x0|<&HhHh 8 8 8 8V&` aI꽌ɪVɭ&Y:&<&Y:&;: 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8 9: :' 9: :& :x)*++`FG8`0($ p,&" /ﳅD DLh Lų#L  !"#$%&'()*+,-./0123456789:;<=>?8  1 '" *"( (9"1 ( ,.(0# 2  /#0/#0 *?'#07#000'#07#0:"4<*55**5*%5)1)1)1)'#0/#0*5*75**5*:5/#0/#0'#07#0:::*::'#07#0"):$(%"%:$(%"%$$2%4%$$2%4%$(2()!)E(!8b $!H(+ "@H !D)"E` @ $ C ` DQ &J80^݌Hh < <݌ < < h < < < <`HJ>݌h Hh݌`葠葠ȔЖȔЖȠHIHHHHhHH݌hHhHh݌H6 (G FG HZXj 80x D9$xxH` >( Z>h Z>L=.xxH >hh@(LH>9L>HH/Hh/ H?-З( 8(& 8$8 H` *8HNx`* >x$50x*$50xL9JJJJ`HHjf5 >h $50x`HA>VD;;P >(ED Z> ?0x8x D9- 8DD# H8`?E Vˆʎ55L $ 5 55555 &a*5`*5` "L&5_*b*JL%u**Lz%`** $  Q(lXJ̥KlV $  Q(lV eօ3L e3L &%R*L &%Q*L d' "L4% N'e*)n*5 5 &`@-e*f*f* 5 "L# "5f*`L %.* *t*Q*L$ %L&*L` "O**P**u** d' "L% N'e*)n*o*o*n* &8ɍ` ^&f\*555L& ^&NR* & "R*ΩL&)\*Z* ʽ LH*v 3h`0h8` " ['L & N'С55 &5`*A*@` +5L^6L65`  \* ?*0 '\* '  Q( ^&\*lZl^?*c*q)H c*h`f*5h*5j*555@O*AP*`u*@`@5&`Q*R*`E 'Ls' ' ' @DAE@u*`8` %@ @A@`@`**@*A`M5 ) "L&`8@AW*c*@8@-@HAȑ@hHȑ@ȑ@hHȑ@Ȋ@c*h8&ȑ@Hȑ@Ah@L'Hȑ@ȑ@* htphso`hMhL`9V*8U*897T*6S*67`INILOASAVRUCHAIDELETLOCUNLOCCLOSREAEXEWRITPOSITIOOPEAPPENRENAMCATALOMONOMOPRINMAXFILEFINBSAVBLOABRUVERIF!pppp p p p p`" t""#x"p0p@p@@@p@!y q q p@  LANGUAGE NOT AVAILABLRANGE ERROWRITE PROTECTEEND OF DATFILE NOT FOUNVOLUME MISMATCI/O ERRODISK FULFILE LOCKESYNTAX ERRONO BUFFERS AVAILABLFILE TYPE MISMATCPROGRAM TOO LARGNOT DIRECT COMMANč$3>L[dmx- (   Ϡ734@~3!+,W,o,*--,,9,-.-~3~3,,,,~3~3,,,,~3_*3 j.5 *H*H`Lc3 (+L3 +55555 1^3_* )3J Q*L_3Ls3443 D23455545554 70 / 7 :/354545455454555535L^/5-5I5555 55` / 4/ 2-5! / 08555454 70L3 (+50+5B5C3 2 70L35 *H*H`Lg3L{3505 *H*H` 3 ,5L3 3 1 ,H 1hBL, 0 BH [1 1h`Lo3 35 ,L3 3 1B , 1L,H 0hB@ 55 [1L133 (+34) 34 70L3 3L3 (+ 055L- (+34L{33454445 70 ^/* / 3B0 HȱBh -355 -8 /L38 25` +5 /3 /.Li 3 E7D B. /. /. 0]34S0J4 4) 3 4D4E B. 4  /. 02L3 Ν3 3`HD٤33DEEhiHLG.h ` /5B5-` /5B-` + X05I33383 33DH 4 E03744Ȍ7 X040 7 J7L35B5C`,5p` / R0-55`50` K/ R0-55`575755` 4/ K/ /( 55L/BȱBL/58` D2BH5BH :/ 75Bȭ5Bhh55 R0B5m55ȱB5m55` /LR0557755`*7*75LR0 E0(33 48`433 R0` E033LR0*7*7`777 555I7575757577** 7757`7 L35555f /55555555 ^/`855 i /B58` 41L 15ȱB5 /5555 /5`3 D23ȑB55B5 / 7 55`5555555555 5555`555`55BC55`5555`L3 /5B5C355 0Q340"B4 3` 02۰Ϭ33B438`3i#`3ЗLw35!50>5555`53 /3m3 3 3733i35 3583 /35ЉLw35`H /5h 25L/~43 533`55555555J5m55m5jn5n5n5ۭ55m5555m55m55`"L? 585H ~.(3` # d ֠Ԡz#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmJ3M(8)M(8).866#DR(2)NU24NR(5)NUV2UXR(8)NUVY2W2(Q57.3)`bH18slM(9)M(9)M(H)vMRMRM(H)R(H)HR(9)MRM(9)" PRESSURE",R(9)"STABILITY CRITERIA",(R(9)Z(9))D I Z(8)NUVY2W2(Q57.3)0U0G(4)0KG(8)(XY)2WT.06JVH18iG(9)G(9)G(H)}GZGZG(H)Z(H)HZ(9)GZG(9)"CENTERS MEASURED FROM NOSE TIP"" GRAVITY",Z(9)M(2)UD&M(5)VD0M(8)(XY)W: ",C(2)#@" LAUNCH LUG",C(3)<J" FIN SURF. ",C(4)UT" FIN INTERF",C(5)l^"TOTAL CD ",C(6)h"CD*A ",C(6)Ar STABILITY CALCULATIONS|Z(2)NU2Z(3)Z(2)Z(4)NUZ(5)NUV2Z(6)NUV2.752Z(7)Z(6)4(B)(10).16)7C(1)1.02F(11.5((LD)1.5))KMC(2).029(C(1))\C(3).01AnS(YX)2WJ{ETY.5C(4)SAEC(5)EYAD2JC(6)C(1)C(2)C(3)C(4)C(5)""DRAG COMPONENTS"," NOSE+BODY ",C(1) 6" BASE G(4).14(G(5).046V%2G(6).141<D1.325;F1410KPG(2).066UXZG(4).24hdG(5).066VunG(6).17xD1.637 DRAG CALCULATIONSA3.14159(D2)2O2.67NDP4(UV)DLNUVKOPB50855LF10(1.H1I tN,BT,G(1),Z(1),M(1)& ~H5 R(1)3N5Q BT1180,1240,1300,1360` G(2).02Un G(4).017} G(5).02V G(6)0 D.736 1410 G(2).026U G(4).05 G(5)0.26V G(6).1 D.976 1410 G(2).046U.3 : 50K7 8 4.375, 2, .16, 2.9, 3.6 : 50Yi B 5.375, 3, .32, 3.6, 6.1 : 55AC L 4.375, 3, .43, 3.0, 4.9 : 55AQ V 3.125, 4, .39, 2.2, 4.4 : 60MS ` 6.6225, 4, 1.0, 4.5, 9.2 : 60AH j 1.2, 1.1 : 20B F  2.75, 1, .07, 2.0, 1.0 : 20R {  2.75, 1, .08, 1.9, 1.7 : 20N  1.0, 1, .02, .9, .4 : 20Y $ 1.375, 2, .08, 1.1, 1.1 : 50J . 2.75, 2, .13, 2.0, 2 LENGTH : ";X8 "FIN SWEEP ANGLE : ";Q^ "PAYLOAD WEIGHT : ";G(3) "ENGINE WEIGHT : ";G(7)  NOSE AND BODY TUBE DATA SELECTED BY I  N BT G(1) Z(10) M(1) CAT NO  1.688, 1, .05, d"NOSE NUMBER : ";IC x"PAYLOAD TUBE LENGTH : ";Uf "BODY TUBE LENGTH : ";V "FIN THICKNESS : ";T "FIN ROOT LENGTH : ";Y "FIN RADIAL WIDTH : ";W "NUMBER OF FINS : ";J "FIN TIP  M R DESIGN INPUT VERSIONG COPYRIGHT ESTES INDUSTRIES, 1987Mm"M R DESIGN INPUT VERSION" "BY MICHAEL L. GASPERI"!#"COPYRIGHT ESTES INDUSTRIES, 1987. ALL RIGHTS RESERVED."(Z INPUT VARIABLES IN INCHES AND OZ      I &M(5)VD0M(8)(XY)W6:J3M(8)M(8).866EDR(2)NU2VNR(5)NUV2wXR(8)NUVY2W2(Q57.3)bH18lM(9)M(9)M(H)vMRMRM(H)R(H)HR(9)MRM(9)" PRESSURE",R(9)"STABILITY CRITERIA",(R(9)Z(9))DZ(6)NUV2.752!Z(7)Z(6)BZ(8)NUVY2W2(Q57.3)RU0G(4)0mG(8)(XY)2WT.06JxH18G(9)G(9)G(H)GZGZG(H)Z(H)HZ(9)GZG(9)"CENTERS MEASURED FROM NOSE TIP"" GRAVITY",Z(9)M(2)UD" NOSE+BODY ",C(1),6" BASE ",C(2)E@" LAUNCH LUG",C(3)^J" FIN SURF. ",C(4)wT" FIN INTERF",C(5)^"TOTAL CD ",C(6)h"CD*A ",C(6)Ar STABILITY CALCULATIONS|Z(2)NU2Z(3)Z(2)Z(4)NUZ(5)NUV2KOPB50855L3F10(1.4(B)(10).16)YC(1)1.02F(11.5((LD)1.5))KoC(2).029(C(1))~C(3).01AS(YX)2WJETY.5C(4)SAEC(5)EYAD2JC(6)C(1)C(2)C(3)C(4)C(5)""DRAG COMPONENTS",976 1410 G(2).046U* G(4).14: (G(5).046VG 2G(6).14S <D1.325] F1410m PG(2).066Uz ZG(4).24 dG(5).066V nG(6).17 xD1.637  DRAG CALCULATIONS A3.14159(D2)2 O2.67ND P4(UV)D LNUV625, 4, 1.0, 4.5, 9.2 : 60AH( jH1IA tN,BT,G(1),Z(1),M(1)H ~HW R(1)3N5s BT1180,1240,1300,1360 G(2).02U G(4).017 G(5).02V G(6)0 D.736 1410 G(2).026U G(4).05 G(5)0.26V G(6).1 D., 1, .02, .9, .4 : 20Y< $ 1.375, 2, .08, 1.1, 1.1 : 50J` . 2.75, 2, .13, 2.0, 2.3 : 50K 8 4.375, 2, .16, 2.9, 3.6 : 50Y B 5.375, 3, .32, 3.6, 6.1 : 55AC L 4.375, 3, .43, 3.0, 4.9 : 55AO V 3.125, 4, .39, 2.2, 4.4 : 60MS ` 6.G(3)0: PAYLOAD WEIGHT4 G(7).5: ENGINE WEIGHT`  NOSE AND BODY TUBE DATA SELECTED BY I  N BT G(1) Z(1) M(1) CAT NO.  1.688, 1, .05, 1.2, 1.1 : 20B  2.75, 1, .07, 2.0,1,0 : 20R  2.75, 1, .08, 1.9, 1.7 : 20N  1.0 dI6: NOSE NUMBER4 xU0: PAYLOAD TUBE LENGTHR V7.75: BODY TUBE LENGTHm T.093: FIN THICKNESS Y2.25: FIN ROOT LENGTH W1.75: FIN RADIAL WIDTH J3: NUMBER OF FINS X1.25: FIN TIP LENGTH Q50: FIN SWEEP ANGLE   M R DESIGN STORED DATA F COPYRIGHT ESTES INDUSTRIES, 1987LRp"M R DESIGN STORED DATA" "BY MICHAEL L. GASPERI"!#"COPYRIGHT ESTES INDUSTRIES, 1987. ALL RIGHTS RESERVED."( Z INPUT VARIABLES IN INCHES AND OZ     (T)(1WWAA) " X"," Y"<  VALUES FOR FIN BOTTOMJ XWA.1` "YB(1XXAA)q ,R(X),R(Y)x 6X @ VALUES FOR FIN TOP JXAW.1 TYB(1XXAA) ^R(X),R(Y) hX r .5)10 x INPUT VALUES. "ROOT LENGTH "5 RS "SWEEP ANGLE (DEGREES) "Z Tn "SPAN LENGTH "u A ADJUST INPUT VALUES RR2 T(90T)1803.14159 W = ROOT END X VALUE WR(T) B = ELLIPSE MINOR AXIS BR% ELLIPTICAL FIN DESIGN PROGRAML COPYRIGHT ESTES INDUSTRIES, 1987RX}"ELLIPTICAL FIN DESIGN PROGRAM""BY MICHAEL L. GASPERI""COPYRIGHT ESTES INDUSTRIES, 1987"#d DEFINE ROUND OFF FUNCTION nR(Z)(Z10 PRINT STEP VALUES,jIDT,AFM,VFM,ZFM3tIC~"EJECTION"I GIBTMMDMDT1000:A(V)KMVVGL CALCULATE DIFFERENCE EQUATIONSYVVADTf$ZZVDT. CHECK CURRENT STATE OF VARIABLES8IBTĺ"BURNOUT":TS$BZ0AF1ĺ"CRASH":1160LZ0A0:V0:Z0VV0AF0ĺ"APOGEE":AF1:TS$`RIC OR ENGLISH UNITS (M OR E) "'U$DU$"E"TS$TE$:FM3.281UMRMEM1000t START OF SIMULATION LOOPz"IGNITION"TS$I0ET CALCULATE MASS AND ACCELERATIONIBTMMPM(F(I)DTTI)1000:AF(I)MKMVVG'W.02835->"ROCKET MAX DIAMETER (INCHES) "5HRDERRDRD.0254l\"DRAG COEFFICIENT (TYPICAL .75) "tfCDp"LAUNCH TEMPERATURE (F) "zT CALCULATE DRAG PARAMETERK3.14159CD(RD2)(RD2)2RH(1.11T.0018)"OUTPUT IN METE SELECTEDN$NQ$500G CALCULATE BURN, COAST, AND TOTAL TIMEPBTI]CTTDDTjETBTCT CALCULATE TOTAL ENGINE MASSEMPMDMTDCMJM  PROMPT FOR LAUNCH DATA "ROCKET WEIGHT W/O ENGINE (OUNCES) "*RW4RMRF(I)DT:II1:580$b LAST POINT4lF(I)0710gv SUSTAIN SECTION POINTS INDICATED BY - THRUSTtFRF(I)~F(I) EXPAND DATA FOR SUSTAINJIIFR1:F(J)F(I):TITIF(I)DT:JIIFR580  CHECK IF THIS ENGINE IS THE ONAY (SECONDS) "TD3"LOADING ENGINE DATA ";;N$E".";rN$"LAST"ĺ" UNKNOWN TYPE ENTERED":420 READ MASS DATA AND TIME STEPPM,DM,CM,JM,DT&TI00I1: READ THRUST DATADF(I)N NORMAL POINTXF(I)0TITI.,-12,9.5,0.0 T "LAST"; ^ DISPLAY KNOWN ENGINE TYPESO h"ENGINE TYPES"W rN$j |N$"LAST"420w N$;" "; J:J0400 370    PROMPT FOR SELECTED ENGINE "ENGINE TYPE (USE CAPITAL LETTERS) " NQ$"TIME DEL0,0.0G , "C5" ,12.7,.46,11.,.5,.10,2.0,10.,23.,10.,6.0,-15,3.5,0.0 6 "C6" ,12.5,.46,11.,.5,.10,4.5,12.,8.8,6.0,5.8,-11,5.6,0.0 @ "D11" ,18.5,.45,16.,.5,.10,7.0,22.,28.,21.,11., -7,9,5,0.0 J "D12" ,24.9,.45,16.,.5,.10,7.0,22.,28.,21.,11.,13.,9.0,0.0G  "A10" ,3.78,.20,3.0,.4,.05,6.0,13.,12.,7.0,1.0,0.0  "B4" ,8.33,.46,11.,.5,.10,4.0,13.,5.0, -8,3.5,0.2,0.0  "B6" ,6.24,.46,11.,.5,.10,4.5,12.,8.5,5.8, -3,5.5,2.5,0.0 " "B8" ,6.24,.46,11.,.5,.10,2.0,10.,23.,10.,6.0,1..04 "1/4A3",0.88,.20,3.0,.4,.05,2.8,6.0,2.8,0.0^ "1/2A3",2.75,.20,3.0,.4,.05,2.8,0.0 "1/2A6",1.56,.46,11.,.5,.05,5.0,9.0,5.0,0.0 "A3" ,3.50,.20,3.0,.4,.05,3.0,6.0,8.0,3.0,2.8,-11,2.5,0.0 "A8" ,3.12,.46,11.,.5,.05,2.0,5.0,11 nF(25) xF(0)0 G9.8+ RH1.234 AF0= FM1z TS$"TIME SEC ACCEL M/S2 VELOC M/S ALT M" TE$"TIME SEC ACCEL FT/S2 VELOC FT/S ALT FT" ENGINE DATA BASE "TYPE" , PPM ,DM ,CM, JM,DT F1 ,F2 ,...,0K  FLIGHT SIMULATION@ COPYRIGHT ESTES INDUSTRIES, 1987Fg"FLIGHT SIMULATION PROGRAM""BY MICHAEL L. GASPERI""COPYRIGHT ESTES INDUSTRIES, 1987. ALL RIGHTS RESERVED."d DIMENSION ARRY AND INILTIALIZE VARIABLES     IGHT W/O ENGINE = ";R0.1;" OZ"% CALCULATE TOTAL ALTITUDE#0HSZD:"TOTAL ALTITUDE = ";H;" FT"}D CALCULATE COASTING TIME (ATN = RADIAN ARC TANGENT)NK2.7041(B)(V87(B))X"COASTING TIME = ";K;" S"blHGī660vRR.1GH325"THE OPTIMUM WENOUT VELOCITY = ";V;" FT/S"J  CALCULATE AVERAGE WEIGHT DURING COASTINGV WRIP  CALCULATE BALLISTIC COEF DURING COASTING BWCM  CALCULATE COASTING DISTANCE Z117.63B(1VVB7569.386) "COASTING DISTANCE = ";Z;" FT"&ULATE DRAG FREE ACCELERATION( ATW1]  CALCULATE BURNOUT ALTITUDE (LOG = NATURAL LOG) S235.26B(C(0.36981(A)L(B))) "BURNOUT ALTITUDE = ";S;" FT"  CALCULATE BURNOUT VELOCITY V87(B)(A)T(0.36981(A)L(B)) "BUR CG02 E"ROCKET WEIGHT W/O ENGINE = ";R;" OZ"b J CALCULATE AVERAGE WEIGHT DURING THRUSTINGp TWRIP2 ^ CALCULATE CROSS SECTIONAL AREA OF ROCKET hM3.14159(D2)(D2) r CALCULATE BALLISTIC COEF DURING THRUSTING |BWCM  CALCL- CALCULATE AVERAGE THRUST IN OUNCES: T16EL^ "ENTER ENGINE INITIAL WT (OZ)"e I "ENTER ENGINE PROPELLANT WEIGHT (OZ)" P ""ENTER ROCKET DIAMETER (IN)" ,D 6"ENTER ROCKET DRAG COEF. (.75 IS TYPICAL)" @C BR0ION nS(X)((X)(X))2E x DEFINE HYPERBOLIC COSINE FUNCTION_ C(X)((X)(X))2 DEFINE HYPERBOLIC TANGENT FUNCTION T(X)S(X)C(X) "ENTER ENGINE TOTAL IMPULSE (LB-S)" E "ENTER ENGINE THRUST DURATION (S)" '+ MODEL ROCKET OPTIMUM WEIGHT PROGRAMQ COPYRIGHT ESTES INDUSTRIES 1985Wu"OPTIMUM WEIGHT PROGRAM""BY MICHAEL L. GASPERI""COPYRIGHT ESTES INDUSTRIES, 1985, 1987. ALL RIGHTS RESERVED." d DEFINE HYPERBOLIC SINE FUNCT   ALTITUDE0HSZ3:"TOTAL ALTITUDE = ";H;" FT"lD CALCULATE COASTING TIME (ATN = RADIAN ARC TANGENT)NK2.7041(B)(V87(B))X"COASTING TIME = ";K;" S"bl ;V;" FT/S"9  CALCULATE AVERAGE WEIGHT DURING COASTINGE WRIPt  CALCULATE BALLISTIC COEF DURING COASTING BWCM  CALCULATE COASTING DISTANCE Z117.63B(1VVB7569.386) "COASTING DISTANCE = ";Z;" FT"& CALCULATE TOTAL ATION ATW1F  CALCULATE BURNOUT ALTITUDE (LOG = NATURAL LOG)p S235.26B(C(0.36981(A)L(B)))v  "BURNOUT ALTITUDE = ";S;" FT"  CALCULATE BURNOUT VELOCITY V87(B)(A)T(0.36981(A)L(B)) "BURNOUT VELOCITY = "F. (.75 IS TYPICAL)" @CK J CALCULATE AVERAGE WEIGHT DURING THRUSTINGY TWRIP2 ^ CALCULATE CROSS SECTIONAL AREA OF ROCKET hM3.14159(D2)(D2) r CALCULATE BALLISTIC COEF DURING THRUSTING |BWCM  CALCULATE DRAG FREE ACCELERCULATE AVERAGE THRUST IN OUNCES, T16ELP "ENTER ENGINE INITIAL WT (0Z)"W I "ENTER ENGINE PROPELLANT WEIGHT (OZ)" P "ENTER ROCKET WEIGHT W/O ENGINE (OZ)" R ""ENTER ROCKET DIAMETER (IN)" ,D 6"ENTER ROCKET DRAG COE((X)(X))27 x DEFINE HYPERBOLIC COSINE FUNCTIONQ C(X)((X)(X))2z DEFINE HYPERBOLIC TANGENT FUNCTION T(X)S(X)C(X) "ENTER ENGINE TOTAL IMPULSE (LB-S)" E "ENTER ENGINE THRUST DURATION (S)" L CAL- MODEL ROCKET PERFORMANCE PREDICTION T COPYRIGHT ESTES INDUSTRIES, 1987Z`~"PERFORMANCE PREDICTION""BY MICHAEL L. GASPERI""COPYRIGHT ESTES INDUSTRIES, 1987"#d DEFINE HYPERBOLIC SINE FUNCTION nS(X)     5 3251"FINAL ESTIMATED DRAG COEF. = ";C7 "COASTING DISTANCE = ";Z;" FT"?& CALCULATE TOTAL ALTITUDEI0HSZj:"TOTAL ALTITUDE = ";H;" FT"D CALCULATE COASTING TIME (ATN = RADIAN ARC TANGENT)NK2.7041(B)(V87(B))X"COASTING TIME = ";K;" S"blHQī660vCC.0(A)T(0.36981(A)L(B))A "BURNOUT VELOCITY = ";V;" FT/S"p  CALCULATE AVERAGE WEIGHT DURING COASTING| WRIP  CALCULATE BALLISTIC COEF DURING COASTING BWCM  CALCULATE COASTING DISTANCE Z117.63B(1VVB7569.386) URING THRUSTING |BWCMB  CALCULATE DRAG FREE ACCELERATIONN ATW1  CALCULATE BURNOUT ALTITUDE (LOG = NATURAL LOG) S235.26B(C(0.36981(A)L(B))) "BURNOUT ALTITUDE = ";S;" FT"  CALCULATE BURNOUT VELOCITY V87(B)"ENTER MEASURED APOGEE ALTITUDE (FT)", @Q7 BC0.05X E"ESTIMATED DRAG COEF. = ";C J CALCULATE AVERAGE WEIGHT DURING THRUSTING TWRIP2 ^ CALCULATE CROSS SECTIONAL AREA OF ROCKET hM3.14159(D2)(D2) r CALCULATE BALLISTIC COEF DN (S)" L6 CALCULATE AVERAGE THRUST IN OUNCESC T16ELf "ENTER ENGINE INTIAL WT (OZ)"m I "ENTER ENGINE PROPELLANT WEIGHT (OZ)" P "ENTER ROCKET WEIGHT W/O ENGINE (OZ)" R ""ENTER ROCKET DIAMETER (IN)" ,D% 6INE FUNCTION& nS(X)((X)(X))2N x DEFINE HYPERBOLIC COSINE FUNCTIONh C(X)((X)(X))2 DEFINE HYPERBOLIC TANGENT FUNCTION T(X)S(X)C(X) "ENTER ENGINE TOTAL IMPULSE (LB-S)" E "ENTER ENGINE THRUST DURATIO9, MODEL ROCKET DRAG ESTIMATION PROGRAMS COPYRIGHT ESTES INDUSTRIES, 1985Yx"DRAG ESTIMATION PROGRAM""BY MICHAEL L. GASPERI""COPYRIGHT ESTES INDUSTRIES, 1985, 1987. ALL RIGHTS RESERVED." d DEFINE HYPERBOLIC S    ","DRAG COEFFICIENT","NOSE + BODY",C(1)=("BASE",C(2)U2"FIN SURFACE",C(4)o<"FIN INTERFER.",C(5)F"LAUNCH LUG",C(3)P"---------------------------------"Z"TOTAL CD",C(6)d"CD*AREA",C(6)Ax CC(4)SAE. FIN INTERFERENCE DRAG COEF.CC(5)EYAD2MYQ1240,1280,1280 NONE FINISH QUALITY FACTOR ADJUSTMENT OF 25%J15C(J)C(J)1.25J TOTAL DRAG COEF.C(6)C(1)C(2)C(3)C(4)C(5) "COMPONENT$"FIN EDGE SHAPE NUMBER"D."1)SQUARE 2)ROUNDED 3)STREAMLINED "K8IaBI1110,1140,1170uL SQUARE FIN C*VETY0.875`1190j ROUNDED FIN C*tETY0.5~1190 STREAMLINED FIN C*E0.01 FIN SURFACE DRAG COEF. 030 TRIANGLE FIN CHORD&HY201050J RECTANGLE FIN CHORDRHY\1050{"TAPERED FIN TIP LENGTH "X TAPERED FIN CHORDH(YX)21050 ELLIPTICAL FIN CHORDH0.785Y FIN SURFACE AREASHWM25E034.5E03U)A*"FIN THICKNESS "1 TI*"FIN ROOT LENGTH "P4Yi>"FIN RADIAL WIDTH "pHWR"NUMBER OF FINS "\Mf"FIN PROFILE SHAPE NUMBER"p"1)TRIANGLE 2)RECTANGLE 3)TAPERED 4)ELLIPTICAL "zII920,950,970,1BOAT TAIL"I I690,710: BLUNT BASE DIAMETERBZDK740j"BOAT TAIL BASE DIAMETER"qZ BASE DRAG COEF.C(2)0.029(C(1))(ZD)3"LAUNCH LUG LENGTH "U LUG DRAG COEF. FOR 5/32 INCH DIA. LUG C(3)(1.ON FACTOR (NATURAL LOG)7 DF10(1.4(R)(10)0.16)@ N630q X LAMINAR FLOW FRICTION FACTOR (NATURAL LOG) bF10(0.1836(R)(10)0.51) l BODY + NOSE DRAG COEF. vC(1)1.02F(11.5((LD)1.5))K "BASE SHAPE NUMBER" "1)BLUNT 2) P4BD  TOTAL LENGTH( LNB?  TOTAL AREA RATIOI KOP{  REYNOLDS NUMBER AT 100FT/S, SEA LEVEL, 70 F R50855.0L "FINISH QUALITY NUMBER" "1)NONE 2)GOOD 3)EXCELLENT " &Q 0Q580,580,610 : TURBULENT FLOW FRICTI 6 NOSE AREA RATIO# @O2.67ND, J430E T"NOSE CONE LENGTH "L ^Nb h NOSE AREA RATIO{ rO2((D2)2N2)D |430  HEMISPHERE NOSE LENGTH ND2  NOSE AREA RATIO O2 "BODY TUBE LENGTH " B  BODY AREA RATIO( "ENTER ALL DIMENSIONS IN INCHES.". I "BODY TUBE DIAMETER "P Dp BODY CROSS SECTIONAL AREA A3.14159(D2)2 "NOSE SHAPE NUMBER" "1)OGIVE 2)CONE 3)HEMISPHERE " I I290,340,400 ""OGIVE NOSE LENGTH " ,NPOTENTIATION NOT ^G ( CHECK YOUR BASIC MANUAL AND MAKE THE CHANGE TOf 2 THE PROGRAM IF NECESSARY~ d DRAG COEFFICIENTS n 1 = BODY + NOSE x 2 = BASE 3 = LAUNCH LUG 4 = FIN 5 = FIN INTERFERENCE 6 = TOTAL C(6) , MODEL ROCKET DRAG PREDICTION PROGRAMS COPYRIGHT ESTES INDUSTRIES, 1985Yp"DRAG PREDICTION""BY MICHAEL L. GASPERI""COPYRIGHT ESTES INDUSTRIES, 1985, 1987. ALL RIGHTS RESERVED." # SOME COMPUTERS USE * FOR EX          N SURFACE AREA (EACH) =";AB58"DAMPING RATIO =";DWB"COUPLED DAMPING RATIO =";CD]LV"ADJUST FINS OR ADD EXTRA LENGTH (Y OR N)?";A$`A$"Y"340j j II DAMPING RATIOS-DC2(2(C1Y))GCDC2(2(C1(YI)))Mp"MEASUREMENTS FROM NOSE TIP.""TOTAL LENGTH =";TL"TOTAL WEIGHT =";TW"CENTER OF GRAVITY =";CG"CENTER OF PRESSURE =";Z$"STABILITY =";CS."FI2"R TOTAL LONGITUDINAL INERTIA=\YYNYSYRYYYBYEYFSf RADIAL INERTIASfpIN.25WNRT2wzISWSRI22IRWRRI22IYWY(RT2RI2)2IEWERI22IIWF((RTB)3RT3)B TOTAL RADIAL INERTIAIINISIRIYIBIEGITUDINAL INERTIAS& YNWN(GNCG)2KYSWS((GSCG)2RI24WS212)p YRWR((GGCG)2RI24XR212)*YYWY((GYCG)2(RT2RI2)4BO212)4YBWB((GBCG)2(RI2RE2)4WB212)>YEWE((GECG)2RI24XE212)HYFWF(GFCG)WSGGWRGYWYGBWBGEWEGPWPGFWF)TWT MANDELL EQUATIONS FOR COEFFICIENTSpC1KCTRT2(ZCG)V2CAKRT2(CN(ZNCG)2CF(ZFCG)2)VCRWP(GEXE2CG)WTBC2CACR STABILITY IN CALIBERSCS(ZCG)(2RT) LONGSXNXS2"DGBXNXSXREXXB28NBOXSXREXXBXESXGEXNXSXREXXBXE2bbGYXNBO2olGPXNBOvGFXNXSXREXXBXEA2 TOTAL LENGTHTLBOXN TOTAL WEIGHTTWWNWSWRWBWEWYWFWP ROCKET CGS+CG(GNWNGS CF(RT(BRT)1)(48B2RT2)((1B2A2)1)Q ZFXNXRXBXSXE.75AEX^ CTCNCFu Z(CNZNCFZF)CT  TUBE WEIGHT WYWT(XSXREXXBXE)  FIN WEIGHT WF3ABFTFD  COMPONENT CGS &GN.667XN 0GGXNXSXR2 :"FIN SPAN LENGTH = ";BH h"EXTRA BODY LENGTH = ";EXh r ASSUMED VELOCITY 100 FT/Su |V10012  1/2 DENSITY OF AIR *PI K.00111  FIN MATERIAL DENSITY FD.0589  BARROWMAN EQUATIONS FOR CP CN2 ZNXN22DE2, "LENGTH OF ENGINE = ";XES ""INITIAL WEIGHT OF ENGINE = ";WIz ,"WEIGHT OF PROPELLANT = ";WP 6WEWIWP @"ENGINE BURN TIME = ";TB J"FIN THICKNESS = ";FT T"FIN CHORD LENGTH = ";A! ^NGTH OF ENGINE BLOCK = ";XBE "WEIGHT OF ENGINE BLOCK = ";WBl "WEIGHT/LENGTH OF BODY TUBE= ";WT "OUTSIDE DIAMETER OF BODY = ";DT RTDT2 "INSIDE DIAMETER OF BODY = ";DI RIDI2 "INSIDE DIAMETER OF E-BLOCK= ";DE REUNCES." x4 "LENGTH OF NOSE CONE = ";XN[ "WEIGHT OF NOSE CONE = ";WN "LENGTH OF NOSE SHOULDER = ";XS "WEIGHT OF NOSE SHOULDER = ";WS "LENGTH OF RECOVERY SYSTEM = ";XR "WEIGHT OF RECOVERY SYSTEM = ";WR "LE  DYNAMIC STABILITY@ COPYRIGHT ESTES INDUSTRIES, 1987F_"DYNAMIC STABILITY"|"BY MICHAEL L. GASPERI""COPYRIGHT ESTES INDUSTRIES, 1987. ALL RIGHTS RESERVED."d"ENTER ALL LENGTHS IN INCHES" n"AND ALL WEIGHTS IN O         2.5ĺ"OVER STABLE"fZINCHES DOWN FROM THE NOSE TIP."A "CG DISTANCE FROM NOSE TIP "HGm  STABILITY CRITERIA IN CALIBERS{*S(CG)D4"STABILITY CRITERIA = ";S;" CALIBERS">S0ĺ"UNSTABLE"HS0S1ĺ"MARGINALLY STABLE"RS1S2.5ĺ"STABLE"\SϨJ3M(3)0.87M(3)3 "SWEEP ANGLE (DEGREES) ": AT  FIN MOMENT DISTANCEz R(3)0.5L0.5Y0.5W(A57.3)  BODY MOMENT DISTANCE R(1)(M(2)R(2)M(3)R(3))(M(1)M(2)M(3))  CP FROM NOSE TIP CNL2R(1)"CP IS ";C;" 550,580,600,660(  TRIANGLE FIN MASS5 &M(3)WY> 0680E :WT DM(3)2YW] N680| X"TAPERED FIN TIP LENGTH " bX l TAPERED FIN MASS vM(3)(YX)W 680  ELLILPTICAL FIN MASS M(3)1.57YW  ADJUSTMENT FOR 3 FINS NOSE MASS M(2)0.5DN6  NOSE MOMENT DISTANCEN "FIN ROOT LENGTH "U Yn "FIN RADIAL WIDTH "u W "NUMBER OF FINS (3 OR 4):" J "FIN PROFILE SHAPE NUMBER" "1)TRIANGLE 2)RECTANGLE 3)TAPERED 4)ELLIPTICAL " I I NOSE MASS M(2)0.85DN9  NOSE MOMENT DISTANCEO "R(2)0.5L0.45NX ,440q 6"NOSE CONE LENGTH "x @N J NOSE MASS TM(2)0.5DN ^ NOSE MOMENT DISTANCE hR(2)0.5L0.33N r440 | HEMISPHERE NOSE LENGTH ND2 NTER ALL DIMENSIONS IN INCHES."% @ "BODY TUBE DIAMETER "G D` "BODY TUBE LENGTH "g Lw BODY MASS M(1)DL "NOSE SHAPE NUMBER" "1)OGIVE 2)CONE 3)HEMISPHERE " I I240,310,390 "OGIVE NOSE LENGTH " N 6 MODEL ROCKETRY STABILITY DETERMINATION PROGRAM] COPYRIGHT ESTES INDUSTRIES, 1985c"STABILITY DETERMINATION PROGRAM""BY MICHAEL L. GASPERI""COPYRIGHT ESTES INDUSTRIES, 1985, 1987. ALL RIGHTS RESERVED."n x"E   E xH(A)D2 "APOGEE DISTANCE = ".H." FEET"8 `9$ APOGEE DETERMINATION PROGRAMH"APOGEE DETERMINATION PROGRAM"N}"WHAT WAS THE BASELINE DISTANCE IN FEET?"(DF"WHAT WAS THE APOGEE ANGLE IN DEGREES?"PAZ CONVERT ANGLE TO RADIANSdAA57.296 n CALCULATE THE APOGE  10:" OPTIMUM WEIGHT"6 d11:" FLIGHT SIMULATION"Y n12:" ELLIPTICAL FIN DESIGN"} x13:" M R DESIGN STORED DATA" 14:" M R DESIGN INPUT VERSION" 16::"TO RUN A PROGRAM--TYPE 'RUN', THE NAME OF THE PROGRAM, ":   MENU:=2:" MENU "^4:" APOGEE DETERMINATION"(5:" STABILITY DETERMINATION"26:" DYNAMIC STABILITY"<7:" DRAG PREDICTION"F8:" DRAG ESTIMATION"P9:" PERFORMANCE PREDICTION" Z  PUTER,INC. 1980,1982":1000% V958d ZC(1101):C6ĺ::A$"BE SURE CAPS LOCK IS DOWN":1000: _20:"TYPE 'RUN MENU', " `  CENTER STRING A$ B(20((A$)2)):B0B1 B:A$:A HELLO PROGRAM% ::(21)@5:A$"ASTROCAD":1000 8:A$"COPYRIGHT ESTES INDUSTRIES. 1985,1987. ALL RIGHTS RESERVED.":1000"12:A$"APPLE II DOS VERSION 3.3":1000$13:A$"JANUARY 1, 1983":1000 &14:A$"COPYRIGHT APPLE COM  ààH /Ѽdd`dЅ deԄ8ҍӍd`D}Tߥ҅ީd LԦ}dҍ` ǠҠÍǠԠÍϠٮɆ0&⽌D}T L֠ $Ȅф(0PLddLԩՠԑihL* ۄکڍ ȱڍ `D`ߠ h  *L`,0,0I,0`d hhLd t Ld L di#Ld)ʽdʽdȄф L Pd0G  @dd0 RHDThЮ$0lp  :DL DLld 4ILILHUЍ`(S(L Lީߩ$, Lީߩ$hL  % "  hH ބ ބߩdҩ Ȍ  eʵ``` f f` &L L fLC`8i`uu  ee`` ` 0` ` ` 5I` 5Iй` f f`L ?5=ɥD 5 5 D4ɻɍЀL\ɠ` }Ɏ$ ``LXWVhY `XWYHV(` Jhh LH) JQ JJJH`HJ`hh ?l8e` %GQ/[҅n3pJ?>ʊ:>Ș;k/=:   S;:L 4 40K14 L= BC D..=D5֤4 J :3 g ɠɤ ɓՊ x= 4   &B&C= 44ݴ 4ݺ ɤ4&D`L# ȱ0` 4 `u` 7$ 8`0 &&` { %Ppĥ uv` 2e   %F8 2 8Hh&&&&& 0hhI`LLLHxܥyݥPQLuƵPxLhQεyϱΠ L 4) ؘ 甠` uHɃLh` ☪ T`  甠`ѥ΅ ΅ҥυө 甠0ХҠ ӕ "L 4i` F`ٚ .L 4 `$$L$Ն$L,L 8!$ L赟0L0ܤ } L赟L0ܤ } L ` ` [ S oP YVPL6 O 5OPL Ι_LfP0Q@PPxA@QPa`qp`HP8εxh`Ʌ۰եڅʥۅ , ` :L΄<Ȅ>=?`ʕ>?>`8M˕   , ` L:L``F`$ ܪȱ 婠Lܤ`Ś25 a0 穠LJKH۰hЅѠȱ0@ȱHШhh0JL JLKMMLILLILLLLy 2L,PQ܅x݅yL آ8ЕNЕKʵ˕ە LkLMNܕ`LΥΥLMLʥMː ʥ˰JυKL  8MϕڥL 4΅` ȑ` l΅υLD L4 xPiڄeΕPeϕxPȵxڰL# N ONi)OO i@ &N&O ϕLz JKLυML LMJυKL qL ȩ` 6 6P`JLKMLxL L6 L[` Oڵw۴Nv L`xw8OPL# (` 40!(L 4LdF`  %L"wL{ TL~&&&ڥې څΈ` l 4Ȑ,` 40L 4Ȑ-` 4(L(n ㊨ rLa ?&0ΰ` Δ䮥G 0 #gMghghPcQ)Wqqqqhhq`uuuQ줰䮲륥Q9O/Q) WjB`O~5'Q 䯭䮡ޜݜݞGg` ` `嶡䡯z~" `P O䯭䮡𥴳\@`` ~3`Gg壡yi壡yi` @Gh X{gggggg'(dgxkg~9g'7(*7ϠGX͠LϠ٠SGϠDĠHSĠNSĠTĠ 5EMҠL Šō?FِLϚΠ κ f ٢  ٦Τ ȹɀI ȄȹH h3 oLB oTMɅ"3J[NSJIfmzq# [$NYP;#o6#"#!0 9@0Ӷ:Pyإ<[(N>W']5Kgvq ʤ  Y YoܹݾЇ`TP@xL` Ιϙ_oܙݙᙯ` ??<<<<<<<0UUUUUUUUWΤ PڵxۥΑȥL`hh$ F`` %ֈ`ʤZA^ܙ ݙ0  m7;܄iȢٚ . y$IqܤݐLM͠1FLJܹ/ݾLuc ܪȱ L[ĨP?xO_ڹo  l`w0P`fLPεϵxϱHȱ΅hΈ` J  畠P` Y $0`  畠$0 8 P# o ΅ڥυ e epݕ` 4LL$ `  rPՆϦ ` ΅υȩ ` Ӡȱ0I@iHeШiH˰hhЈЈ͑Ј̑ЈЈ0JKЬ@iHe eѕxh$0 xx ԅբ H 0  敠$ ( x$0  xx 0$FԨֹ)U h)װ H ֐ι LhޤȄ h󰩠ɩch cɰ$0 $` d'ʅ˅LM&ȱϰqȥȥ`FLʥM˥J̥Kͩ`Lkȱ0@hJHȱШhЄ0)ȆȘHJI@hL`ȩ)?Jжi?oiO iȱ) zȵх 8 05X~")XȔ) v*Ȇ0LJɢ  Ȉ ϴX)HЄ ȹ)eHe0 ̥͐Eʑ˥ʥ˰ਈ$ u~q  u  mʥ` ȹ0 L uߙ`` $0LL*iS 0wh(VP`΅h(OM L6 T&ϐ eڅeۅ &L~ 畠(LoU [΅ڥυ   o ` l3 3` 4J G 4&(JJJJ) 甠` F٩ $ 婠 Ȣ ii)ɰLPx+L 4P xL# 48` PxL PeHxeH˰iکeۅȱhڙ`ꠀЕ x ت3 Q3ؕxQεy NvNδPPPL#Q8yڅ`Sε{ϵQڵyxȔPMuHOL L3L`) #L $  `  v mL;ʅ˅LM  mdžة * * *     % 0LH΢QPHΪ0h$0 )?i h](Њ q L H ϐ { lhHHH hHL? hυυ Ljݥ ,L mݰ % LߩƉ 慝 憨80 ў*%L L ު `  }LޢٹHH ޥLLޥШh^^h_H r륡HHHHHl^h#d j݄hJhhhhhhE` LJ }d.U"i L=8,LLTҐL {ݩ),(,,ѸLLԠhhL ߅` ȱLL  ߅ ei` 꺽  ' 8 uvL׊i , {$8$0`LԦƹƸ$HH `ީ 8ϐ*IEʼna Lݦ,{iweLi^ e^hٲаg jH hV_F*ƹƸٲаH $P )0 Z ۆ $1$P 膸 ": ,i = {LrH0h J c ,Lqۥ 3 LۥL Ȫ*ȱ_ȱ{ȱȅ| L+ܥLSؠߠL:`?EXTRA IGNORED ?REENTER  \I`$ !i)$ )L(ʊ$ L W 檠^ \ LD۩ ,? ɠ )H h`0{|uvLh$L :ۥyz` @ `" ީ; =L Z , ,խLc ZL,զ}~, ߅hL* ,h`PQ/ Q^ԥP &^ &^ePP^eQQP&QPe PQ L ߅ ޥHH {h* mh r ȥ`L'hpoj iLڠ 㥌 婝 5ȱȱ` = $)94,;D {$0 4 Lک?`gh<=ij>?`v(Le lL5٩ ӥHHvHuHH >L ٥vQ 8egh ֐` eӚɰ ,ZLLhhB;uhvhh ٘e`:,  "hhh` { ɫ ޥ L>L( HɰɫЉơ$v# \ۦuv $ W (Lb-逐@ HHLLF:L8gh}~`Ƀ` Sբ$Lׅ ׅLԱJHȱJh`LNפ0`L,׈L20`LF׈LL ׅJF8ȹe8ИL`Lø{{ttmnghab\\WWRRMNIIEEAA=>::673401..+,))&'$%"# !H ֥ h ߦ>  E֥ E & > ` E  E  H ֥ h ֥  ֥ -L L -EF# =Pi  ֤Lְ ׅ! ׅ  / ) ) "&6 B /`TLՆ8M˕  Tբ , Tզ`  . $ ; E.. 4L& >`Lk 34 Lh856!;<79)F:&8J9j*0v 婭   +<; LhLk'cg=%;!,<+k,w(gG gG]$ t < N8i| (|`ܠLդ4ɪ 4<`<  $ H h .Ю#` L}Э%J u ӊH Өh dѮ#` L Q ;Ү#` Q Ү#`#2 Ӎ'( H() 91 eȱm)h`JJ`#JȱJLh `#  <(eΨ=)eϰ%Hh>?iJK̅  #& ')*& "'JJ) ""% m% ʥ0)J!m%! `JJJJS)фPIȄR%*QTU'T8ePT UeRU QJJJ`JJJJS)фPIȄR%*QTU'T8ePT UeRU QJJJ` ӥ',"&,i8i#H&ii&hif&i'`'i,&i,.&iPII&&if&H !"hH8 H!S hIiHSQUhPTh !"IiR"fS8PQ% 8TeRTUU&E%0Q&&kS TePTUeQPفŴxaI1( &WSP& )`" !H)&JJ&&h' &' &' f&') &'#i%Ѕ0J$)` .ХQ&%0Q&&`$0JI0`'0% I`0 I0ܩ(ߠQ)'%01&*%0Q)&E%0*Q&&QeS)j00                ER STRING A$, B(20((A$)2)):B0B19 B:A$:DY 1, 1983":1000K &14:A$"COPYRIGHT APPLE COMPUTER,INC. 1980,1982":1000r F4096: FAST LOAD IN INTEGER BASIC| V958 ZC(1101):C6ĺ::A$"BE SURE CAPS LOCK IS DOWN":1000: _20:"TYPE 'RUN MENU', " ` d(4);"FP"  CENT HELLO PROGRAM% ::(21)S 230,32:3086:49232,0:49234,0:49236,0` 49239,0:(4);"BLOAD LOADER.OBJ0"4096: FAST LOAD IN INTEGER BASIC:(4);"RUN HELLO.2312:A$"APPLE II DOS VERSION 3.3":1000 $13:A$"JANUAR   :-936."NO BAD TRACKS OR SECTORS FOUND" .mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm:-936."NO BAD TRACKS OR SECTORS FOUND" .z#    ̠ΠΠ͠ҠΠĠ ͠ҠΠԠΠ  ٠Π à٠ ǠΠ ǠΠ ŠΠ ͠Ԡ ԠΠ ϠؠԺ à* Үʰ Ϯ ՠ ŠΠmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm