From 9090177ce32ea4f1088642bc96e87be1bc65bd5a Mon Sep 17 00:00:00 2001 From: Paul XPS Date: Fri, 1 Nov 2019 00:06:14 -0500 Subject: [PATCH] Some random additions, mostly to firmware. -SNES support for 32Byte page writes, but host lua scripts are a bit of a mess and still need committed. Firmware isn't very clean either but it's working.. -SEGA stuff is early and non-working. Got it working in a separate branch which will commit shortly. -SWIM updates for better erasing, flashing, and dumping routines -FILES updates for jtag and some other niceties -JTAG is working now for LC4032V & Mach-XO 256 --- firmware/build_stm6/inlretro_stm.axf | Bin 225368 -> 227408 bytes firmware/build_stm6/inlretro_stm.bin | Bin 0 -> 23952 bytes firmware/build_stm6/inlretro_stm.elf | Bin 225368 -> 227408 bytes firmware/build_stm6/inlretro_stm.hex | 2238 ++++++++++++------ firmware/build_stm6/inlretro_stm.map | 530 +++-- firmware/source/flash.c | 76 + firmware/source/io.c | 32 +- firmware/source/jtag.c | 51 +- firmware/source/pinport_al.h | 41 +- firmware/source/snes.c | 75 +- firmware/source/snes.h | 2 + firmware/source/types.h | 1 + firmware/source_stm_only/usb_descriptors.h | 3 +- host/scripts/app/ciccom.lua | 155 +- host/scripts/app/files.lua | 122 + host/scripts/app/help.lua | 1 + host/scripts/app/swim.lua | 174 ++ host/scripts/gb/romonly.lua | 2 +- host/scripts/jtag/jtag.lua | 193 ++ host/scripts/jtag/lc4000v.lua | 702 ++++++ host/scripts/jtag/machXO256.lua | 1010 ++++++++ host/scripts/{app/jtag.lua => jtag/pbje.lua} | 326 +-- host/scripts/sega/genesis_v2.lua | 365 +++ shared/shared_dict_buffer.h | 7 + shared/shared_dict_io.h | 3 +- shared/shared_dict_jtag.h | 19 +- 26 files changed, 4780 insertions(+), 1348 deletions(-) create mode 100644 firmware/build_stm6/inlretro_stm.bin create mode 100644 host/scripts/jtag/jtag.lua create mode 100644 host/scripts/jtag/lc4000v.lua create mode 100644 host/scripts/jtag/machXO256.lua rename host/scripts/{app/jtag.lua => jtag/pbje.lua} (69%) create mode 100644 host/scripts/sega/genesis_v2.lua diff --git a/firmware/build_stm6/inlretro_stm.axf b/firmware/build_stm6/inlretro_stm.axf index 00d5d0f12a94df963d8b44a655c2819048e39858..b56f48ef969d0f8bc994887c949d874cd5eb1ff7 100644 GIT binary patch literal 227408 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 literal 225368 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

D*hJBV})+NZ#_}?Hu)jbW!S5#3gIp{@0 ztL7QV`}*O$6-z0~N<8}3nf0=O??_$vEsuFetoK`UhG&5{!#x4fRv9FPDjNy?=eeIw zqa)O-=lm8@sKW?QRWCYR-VAuTt&R*&NX|j;y&CVUJFg%D8$rF}Ecqz*eY4OaL-Hy? z$z4G1O)PhfIm`2+JID7T@=pyv+VIzgJ&hTYNJxG9nr;oggS|Q3YJA`6P3{)(-P?fH(_E-Yw2YN~O(ca6kiz4*p4Q}mCfh^pc)UCz$cL;km9yWM>Q*Rn% zofudC(3{RE-K0~YgXW)B34N2!FEc-iZ^`+6W~{jS#+_F*TF&n??Q|0{r$Oj5o~L6wEUTwD@-?m^|-un>J*}EO`2FUAtvisNZlAgo-7mf5sm7HH5h=dhN-T!5r`gQ+j;p^R^ z<$7u6F17e-oDt47?Dh#`hnNQ|qD!*pUFlAYfk7R*gnudhea%jN~8I1Rv#hN;Yc3L_F-SG9Uu zyq2oD*!}HvP7Gi?nMh8xvQkkA{g0Kb*??L7ILWQwSu2=xwL880eXEA?&ON`+w=~X? zzQ$ODA)f5cZTJV<^-aT>#(p35pJsz1g~E2 z@S!{!>&vyIZ{UK)DolIXE3`i!c&zeVs9b&)byV&dJlE6^La#b#O~C$SH1heyXoOr) zm*iT;m6=G)^t0+i#8t1dKVJ125#fuusV`=xC@iT@wYQ<~<~f$ZPmD&oE)q)-A${*( zK*=rV!<5d8e!;$9T>K1Z5ObZ6N-td4=lclt;q^trP4KWtQE^ZxniC2&Y;`TcOwc8? z>wkhhE$G}J%eXueOEy1SP45cuw!Suj&^zzFW-sT@z%H}8IA0? zD41_{d3|)8QNw#|g5T0947oYN9PjCYFcjI!owt!FHnU^~ECj7xpx+at9mo{HxrnTzcPPIs#x$zPj4rNt3U3 zm7$+p?{&diI>KTfg;{HmuU0H9j72VDeW9#H=eV44U;NAP5rp&&?rb1dp_umYaTi-F z3xdBa7mI~pG*WQ!9OvhT!fXR-ww{~#AL_>u( zJ64%AMlFjWTshP6VgUT4PeSVH118dU&7cx*z@)@m@SS*{hQ^^47zf*3d)=80`SKon zN9`tAXFBBA1g)11c6c|*HcF5C1Z{tptIn6%u&cV+-h`H&DdQBUZ}Y%D-{%Mu2|>w) zzWfW{Fs{z0Get0FDAJoRc>M2$n}MX-mLE*)7Hy_rVYgt*3T_9=V=g4x#s}5ik}VRt z12d)6tFes@`fYt7_?hQvjV4_9u`9FTNnag$+mA3B(e+|~_-+f%xP2S2`uH@w-o1W) zj_+=(4K}=f-q!G07-!zTB<%{{2jQFC2Bclt@S(4*!Ls30L+u8`?N4r4b^DnO3D$Sf zd*5vkD|R;Suxi=p5gd$0PM=Rm&KR9Hwsh9)>P2J~Jwt~T#|D>U{L978Tg$v}!qLdt z0To)}OM^?RRB~G&S)Jujc|Hj*a%IW6DKu7==L|bXt8wSb2CQ*E^chle(<~e6HvARH zI4PR4o1D-a8nG&6XK8PSXS;7Ex$?)0-w0pna+3`CO??);=310+20{$-vYb3mG0u%? zUl7q30^vqjcH1DuRl>#S}$gp-B%aWd3tX5l;T^1>D{DwX|S|d4!(d?R}C86pNBg@ z%^1vae-h4d|2Ix_#J09#3CP^ z?{p5$8EPVukI?>K$8!$P@9<2;L(j7I;_=|Q6;B188a#JlkLaFWU-9)_p5j?SZ?Pk| zxVR&PlgGwggw9JA{~5IB7tY79tM$jF!W3QcU`Vju>snR0#D9-#7+Th1$z^{DBd zhOfg42B(05VGA(W0t~j)ZaB5&$ql)8+!6M=M>Sk0uXgL@V-0srBqv*XYv+@nP4W>N z?no4pJuUEZclWA$DIEm;aPM-rZd#r%W>xpDz`c+r>oMQ@a?-r5H_@cAtBMS$wZ?v9 zzBs1F?JpL(Vv+Lm+lxn^^i4S)NW>`_c4E#Gv)LDFXx+H0(cs5U%z20VV^)JJ2Ci_Q z4PW8@Fx=D_YIq~?P|m9s-NXs+smn-laq#^H)r{E0!q8(4LRoC0IYcaf4g99k)Lk*3 zSe|n(6ojh^HvU*3+8gJz_)hs&Zfx6V@Sg&fD}mrC;I{JC8$4s(kL4U#DwLfFJWx4s zf>rB5;_G^9qeBr9kua8ZBC-_^-R~Q|LO&zq`G{G*QojPFk!B*5#Eb>;rf-d&C z8s^~?IU0$c@5Tz?7SMC#W2i^R#$ydlHX#^`yx6}1b4)A}=udO+Y|NFH%L4SQkTbO| zv_-LO<;Ga#ss8XKZEC2EJq1}49(wjk&p`X}^mQ2LtBG_Vp+T-s5<3GLhwN=Ksm-0z z*4ko1N`#P5wyic+NKEi1#S**0k+IOl{I8K2N15v$IK0Re>yw2vx6A8=vLtQsQZMH1Dab1Wd3n7pm3_#It~sf%Nd4Ttqa%5ZL0)Od zt)RHD+i#xYprsX{waKhD#l{_%8f(9w)Bh@;FNVv6@&uB^Q{ka}a94_;%a^D_1hwV2 z!n>Q-@_fiQ4|h{K5-q~mq-u>kH`Sq8Yj@axm);Xt zYZqo%?RL@?&^t)U7a@%YC>^C^Mi%a#E%#=*v#N~nw&;$}@_Jg96)20wL`$O7+m3H} z#x&QsHx~E8)Xc}x4P!*thSZNucQ40kqDMjcvEHhsNYENveNGvAvV$hGotnior5g^Uwn-5iv z?!tanJF#rq*ks1NoroW4{H6?`9E)s@ARyT+t-#IWbKvR-T7 zhx7A<>r8}LusaN`-~Ug{@VX;w zV~JQle)s<-nY6WEcX#EO;CDk{A4|6|_EKeX==-6275L7Xt<$E)#=!--plvAOk>AAJ%tZSl|A*zCT~0?|57vb|uKc5<-p(i#4?7`a14CA~svy5?NlK zi5`|=r!Bl`>3yrB~L^HVW;>1Jkv)EL~BrY8T3K?6||%o`GJ3!>RU8tUh|W)Yko8 z)y(}~y7M>EuIZhZba!b-lVv$}l!UQeQV(gaO>yt8&6AU>lEk7*dL&kMX4>9%VsA)d zyRW;wrI+f8_qk;BX}_8FJHetJ+k=%G-Lcvm@4-?Pso#q}hP5vGnC_DFY3`QzdQqMq$N(=`|^&v3tIb{J%d^?QswLq0rgplyV<5A7xTG;TFYNJj!?=YXQB zj`#M?z$NLCR%r*RRR_(nNJng$ITUit`c3pf& zmyJT*8wj~nM{``qBXJ!M#C2?EI-VQW@$*Y{XbCCp@LQY4_K>sEey`4*0X#(O{#qR{ z$&*Q-B)&4GsE{H$!#u$d#@Ab|e*$%s!0O0v?IHVXhwJGQd?*^F9Y%S~{3LM#ZYrLV zN7s~Ke`1ttkypexne8G0x?h^@Sz3QKV5X-)ET7g|znRwQcUxwsvlY7(t;oFr(LmeCf ze%X+G9yPHsXFqVHJw6=Ox%CZBhakL~b3AY)5Q{t-6IzR)<5ZNsV^KBR6T``4bRTLb z0$b=_2i@CX^#qLR{s*nABc?Qr!dm2pvDc(!qwsoIl8JnN6hI7`a@B`0y?;f?pe(!p55RC@n`P8yP6|GRB4Bwh_;>ALUOYId0KxZ2Y79@WOws`D zDTs3`Bq?lfH5R!gp3_Y%r@CQ_e-O90)46PqlHX7}N+mirZd?uhw5`mCRyuxE$2HB3 z?lUFDwO_@wRt#$`k85RR_++GQ4(S{p*J+LGEQssOjrvU@E5m4}F@0F0cErv&E~)M` zj3a5^8CRPuE4+UA6FRwC5U?w6$2d=YiJ{RoK3`licF^&NdTu(Ijz=o2o|n|8)zGuz zChOJEMRz@`1r25oyQ!sCFPpIc*^M)Vlb$SSrTg#S@zvOMEjp*uev#!S=ohrjJb&?^ zSqJ=nkDfsL{4w+ZT1&6RMtVT|MWqLH#ArWg8twrPupZz$%G&=jWlkQcCuMwZkB`ki zjgQUE@v-?4Ha6ch+=tf;_2IalCX25_EbNl@4EGv38VX}m-MhW{a%%MyoR*|iCpFR; zYftTRym#Y-5Vu6(nSFQMq-~e>F}laJ4{ey9U-Wf6a3pD$VA1T%Ak*ApQ$fQttf$n? zQ{8#;R8Xzy$WVf_CS59c2#Ns^=Fq6dQ30Ujy zb>fYb#H!kvL&UwN2~tS?Gih)B>~WRTgWJ3sNYbgVA2QU`Elt=vu0C<^xXOg!=$ap1 zC+*#9ALq!f`Qg%}y~0(o0GXf)lF9I?_de%c?Nt4Y-bQ`K`%JCICWVA4TKDn5s_WFv zxNbE0k0GIbTkWCRWcVFodxq`#&^GU(@V46Dhv{Ad-9s2UZyh>+9XgL4I)9CH2o{6e z*kHgZy8$I=v+Ih+g?7{mk;e+bh)3;fVY9v5bv4ZP}owU$f>LsR5vM$unGJG}3Pchvr!*)?R-kPXz% zzK#j*dynKc2+e{up9pOQ1sjoxpz{%)MF7&dt+9Q?~_4KarN^cJC zV>w;8L)M@xQNb32r_F;Cc)7Al7>nO^0KaaW>x%SLUcR#Gs)a)`dKRoUQR$QLwNBwQ znbO-BO=IgUdGa1dp67kJ1f2a_oI##6A3F@t{l46#rr`#;WJDq?VgTW`h3COR%r-;J)VQ>)TkszzN$YBkPGLR#!NX?-~L!1_Tb-(9QnYux(! z-Cj*iazkx>E><;J4u7By-ag$=r?>9up8Akq5$Q-J>hZ#^n$1L11)jlL*|zytm15Vr zjdTr6TGq-YN6z)|h}v7`t(6VeC%Ly(N12q9Z)f)~QWMS%muzC@u&j5~R11|>N z3sc*v?$IPRo@%byEHsyFJ`;Eny4Nz@CUTQpVGms=v2%E7aNVp2+Ckt+sn){qHw6&i~Tc}+wV;j^5BH%Mo` zTX6eM>*{b$Doh!GWA6kuUJFj@0@J~iz-i!O3RKMaANznfy z^iyB*0`yb8{m`F;@4wC~zFi;F`SHMz&a(r}O#1r)@6X+5w!UJ`m0RXL7Z^Nc4JIr7 zWn))yZfIZizN+I5#~Q@3v0`;7Hq%Jz^7qa@8`$gaX^3HOST(jSPN~PXx?2|-eHEUr zlI6kjhA-hy5Q{jo+_xJZ%qicrh9K@~3LFogyzIjZkxwq{7k(!sh+1*_|Kk5;gJ2e}7d8o7giGUY z6WZ`w6*GESA5J!@7x8puWV-?zL^#jjlBbXQ|X8T%zk+K-psS9^QC^q5diQ{V0t zTYCbnm1l5m@4nh?-nxzN_s+7O-l8RK4ibFhG_|JKK`njzf@kBOVe2fb686&RI=R?E z?R^^dmbq7A=Xr9s-y~q?SvebzjmO^exRv!+i8JiSF}tnwK3w~7+&W^Be)@2H_vc3E z*eYQfssAiMv@b1PUN1dfVK2gdml9Vf6I;3hO_kxU+KrF&q68u>b1+OTJH4gYu?omu zWqk(YD+W*dTW`^sNEwUhTt-ZIJj6ch=~!$wevf@G9_ruFvw|8tbW9!^kDmlh&ku&? zAj{^{TlP1QUDz*V2%H?e6M0!S?*}3Te)zw_kGW58Szcf4PTZ16r_ z`AHXgH9fias&KzxLYNee+kB&ZnO(Y zl;-I-PYxSx9ie@ut>#W48VO-d`b`pz6Q%2ath%Z6jp$S1Gh3pzCqlO&%v}|YNYMf_ z+LnEVBH4p_mPc4C)wXYER$D%#7?y3hhFm(LfQI^k^> z*9+5=v|F+FDYkq=u`HY7=nAax{RX%%o}`TiwoXpA=RpcTYM^O=ea5ajBE^Fu5r%XDx%!_7XlP*iMJ+=G)Y_ zrA=|DcJ_piS!xbqtNFjDRRFk`_~`Ah>&34@P)nB_JRI##`nTivCeW4_+aANh0@ z;~LZ$ryj&O_2__}EEWpH@!~o1y0wS4^Z1?_ZL6`X$nYIE+NNn6re#P7l@fnNXW)Go z9iNsDp4lP{%T6-c9gvB`vUizmBV_7fS%}GIKz3nR_9rGQg-kmvJI-X|AiHQA6}rk~ zZ7j97CrQm~o&IsTcP2Ozn{V9wazJb@7jpxeX6t6Lt+|q%@b})hk+z*7OMk<(sGudq zHYQYHDz*E^B{(`wg^f>}Z%+CwK-)A+8rNU?Yt`a7{V)-~Wq{n0kK;-a7J{6r&5LD5r|Xk_8VGg}In zrZ%Lkf~Hn{=Rnh=_}Zb#SFtCq>G^@CxTdKW(Q8=x$)FTXCD62fxODfk((NAjm(|jE z#QGJtVf_Rww@2g1Ad< z*@^v!ld^Cb=4*Hku|QjG1%9Kb+`FYd^OW#G^BUxP@xn6mYJAUM*k|_Q`}Ku78IAG! zXr%9glH=bmiY&*o7e$ui4D?`}{f3sKl+=S=FhJXzI(oI80V*h z*MhH!^OL|QgRhSB)=J zMxGd?tw$vu4oGNiFIT2wTttnVqLJN$1S`g9q-hX!1pdLn>0#+-`^=LZrI6k`SSOc~ z6)2~Fu+vE;PYsGq^t*3RDQ6wl;481s1+q0E+<2FTX*-k^MjX@60xXjQMGYa(0yk{$LyEJ%oHbiD;_9*I$g!VI_prUqo!I zS%&s7M@>K+=$(eRAsf;Bb|PpzbR3{Q{W1y1VX%yPakNf<5-ug4(kp-?ZTs8KzlsrV zq=#2P9*g|={FyBh(4HDcdp-Ds;g(y<;;exz5pgEO<6IA(*o>i=#b2K9ur`jb>PhMe zJVs{Mm)HyE_mE<{7PqK}elc-%y~=LJ$pgJ_OIt`Z;zfFT2l%#g)<(T+m3n!a-KuiL zOznim9mV1{nU{EvOYZtiS1B>raj%@vn}24ct~|f;934?pu{Y6&y(x^I19!9A1AiPq zJBZQWdvrQ~1FVi06V2^-D27A#x9I%e*D=rOe<8uBF_IMgCi>mcj(+Utu@D;jHu7P( z!YEXbK3~5gRU`II{kk1`J8n0ayuFv|-0k1vrypMORCcG8)i;HWT)$gcviVI9(y!?sV}&ANBDpK6)VPpvLB`pu%X z)t+Y0#m?7k%@1Z*|C{GFjpl@16Ekb@52Ns0@D?)-Kq880-i zat`X>OFyf3J6G#IB0tEXt)I# zHfs;|r((qV_tmyFDy+KF!TV!HUSd)mDLqQ8NhX{3d>H#7)k%iqI$`I@uwEeP^c<_m z>&S1Jt+CoGTO3KHVcY_vIp%Y?xY0g1LG< zb}N#A3#~W02arlMy|#5Fqz?T{Fj?zc=4px&L&fXp9>UErQq&hDeRoF_iv~l)RJ;!N ze_};>q)&UHuj6eedQ!(Rc~VV_^XWNv*C&u{qMl;6NC#S-q;CUOVCv`9&DP#Ni*4Ov zvdLRa?l?gD)kF;oJWcZLVcDyo?VQy zEYepKC1W*{3t$s%A=a2T|H0XbBxx!s3Iz|X)tT3>c00`up_%L{CuQ;UB$zb5f_#mU zi2<U|x_tB=X-rUE=BE%XXRG_}l2EJ_S&id3OumbyGf`i@^z z@U}6$7vr~r@cAJ>da=`a4DEy1q~M!ti6wb;EOI$?)4w+|h(1T_^==j}1_hweGEa9@ zC{73xJgUn@lYq6TZ=PVffWO6~38j}LbnhbD^owQOL^093g`(;6Fu@%K)geqO&8QIk zLhWxcRf}|l{2M)_eHZROZqqOE5Ywf4RJ%wsbXf`ZnLdb7J-!Y@&55;7&&gU%_rY=w zWaQZ`q;EOa(yJ=<&Dp&vX8i&2AkDX!=nou0d&mqWwCfLw&uU7A=9YQ5*HxqqCIPde zcJY8x8)Hx#9|n`g>QNInL`~S`rFD(L`lQB^l&_BL%3%f2R?^t_{J8eda7WxJKLNsjzjCx&8^O@b7;$58YAYd7|Sjv zOPsBa>N$;-_s_1bbU0TM(VAt)Z$a%d9Rl{$iLDg7?71N;?%Uiz?$VHw8$-1A#5Phw zLU;7i{GRPaZ$5>5E_;of&3Prf0$vODyaq{;4lOeITO(qfteM*4>2-3O@l>#cEH6vgC6trU(Oy$tEb{)vghK+E zL3Ax8zi=R03gc-D_&S(8h`MZyt3xw_$U zhic$m%^>M0&qFAWGn`12w6)QqT5+-st@R(ZHZq}H(K0=(kmWybQJP#@`0B1l7gWIO&@g(v{5Z)>%~e%S0sj zMX%{_1=`dVxWz4)o?RIKR^CYz5t#xUQDCuB`Kw&O>XzAx7N4)CAulUmA=#|Dn&3LyOeqwCZb92$LoSrAc3ea&t`h%SV;Y^b+66C!A!$PeKRRI-CdV z(ru)>trs(jttTjB9y$SSJ(y*6>Sx!I6k&Q9%Au=N2h&lGgZgVdv?My)SD4-QtAGE_ zvvt1<=jP~azwLH7(`~PI+vI$ld8)8=*zB-*sxZ4g-LK&CME}9HWWrdqp&k;`6Kkt; zHO9E7NND-_cxl|u%$)VGBRyz$>WWC0&g6EUL>yg3C#lfCv;1|$YelIS>xD^AgiMFk zWfkNg(A)@%w}qP>DvvUMH}u~S*4bvB)L9l+?sT@!vB^338*n0Qdccttx9SJ|Hd$>k zRGLH7ZdJEprM|@U{=bB6a&l$jck&w-N5Rtn1oYxhx&$|euL=vssZ%PBt7qsC#>l*cJslK|R{5A}$sqXw!z4I7RHW861*TV58aZ zFOs5nFdv&p;9l|Q0Ih9#VN8RTK>k>@(vs8PXYvxFMRyh&Eybl_7 zZ18aS?wKlks_id9>3Pvk_Rw$dVQ|6=Y#Msi*5}DP?kUU{tEAV zdM{X2_7`j~25AdYEEUXxmFn0COG)S_;R9hcmQgs5i}?#pj)~%d%EyChfkF z=AO_5{AIu!;lHbzSBGO(morz$A=?}ov$a^OsuIO_amP+DIEK6KYMr*5gMTR67(9--;3kaev4{}svx+MGGTL6rY`iwCYA0hcM+8@erRT|>w0Jqk zuu`YTxv7ISEcJ)*fJkU=c&OfJx+}vXW?fp!*aaGz9G=GFz7_p;PCsVS-+o7GaHy;* zmb#av{`A~v7Vr6}m`_4F-eMnIkn- zki@B2mmut`cea}EvffWr_6ME&?YPJ}r(G{Ke|SzD`z7om9X;#rJ+e~PkW5j)T@2w_ zO_|H1vS>H<-0t2Oi`*8K;D^%wadXtaPMIrXksG7`x$ea6?L<=^)GIR5Ct-C@^1hDrlFLrwB-fEbROI=@X`xX>cg4h{Ny2o!Zu)q+z;mN~gXib+ zTGsm3b)VuMM>A%NzN6UaDfv1y5SGZ7VGHR;|EKq)QgGg2>Hamm-eb!N zeo3?gN2Ugulq3a(5?%0Wqb^9ySh;wb=3!NQl&-5v`z=I3qab}_`o9hn(^uiqR+UG9 z|F3-Qm7hSju0!P(h+f8TIWUqif5SxZ_YV{Cs{;-EXsd^&cNj^~ca(Z-gF%~zuKnRK znc$c73H`dG%PoRQaN8^Ch(+b!<)et--=RFW2869g4#B;_Kff0AkwblyzDm4Ao-iUW z{b%g1BS((-@Ay1+7yLUc$-qA=`d^{nBM1DNFBEw;zDJH6^jG1#Hx|1~^Q9tJ<9qO` z%l(V+rSY$0--G_WasCLtRPS?f{)IR{>no&75BQ(LcRBRk@r{zc1>dFM|JARgTRjlF zi`=93--<8QPrtZmao2Sh75N?bQu%ItX+HcPM}Q;15#R`L1ULd50geDifFr;W;0SO8 zI0762jsQo1Bft^h2yg^A0vrL307rl$z!BgGa0EC490861M}Q;15#R`L1ULd50geDi zfFr;W;0SO8I0762jsQo1Bft^h2yg^A0vrL307rl$z!BgGa0EC490861M}Q;15#R`L z1ULd50geDifFr;W;0SO8I0762jsQo1Bft^h2yg^A0vrL307rl$z!BgGa0EC490861 zM}Q;15#R`L1ULd50geDifFr;W;0SO8I0762jsQo1Bft^h2yg^A0vrL307rl$z!BgG za0EC490861M}Q;15#R`L1ULd50geDifFr;W;0SO8I0762jsQo1Bft^h2yg^A0vrL3 z07rl$z!BgGa0EC490861M}Q;15#R`L1pZGTpdrLGl<&VpV!BR6Ot0e^lKtQI72*b^ zmH+9`)XbaDefoh!lK*crlH0=(`2Q&av&W-g-ZkFZdLrb3l%_A4IG-e>B+gF~GS%6_ zC}E6BFBpV*4#x~r(YyuAOiS0VU$@Eh!}S|Yvp3#sntOBYn$@eCqy(sV$c^tA|@pu@bdXIP)z)_4w7U@3}Y)HQ6E+jqRH()09x8D z5|VrVGLS?nLi*eRN(<5-VLc4@irDwxkhTEnb|0vBs~O`#)*{HN|$5SFixg) zvUD;7^b|^`NQqQFmC~t_K=ofn=``uXB+#=coi1&s=FFzFPO{-`oI~jh6o-CAYPoSP zEtL94s49(7t%rnRY?NpW1!H3Zr3EPsaf}QoQJO|+27pR>MhiM=1aG4@jyF|mOg@G} zioc+7vL-=&f_f_6OpOBs!<&fT(C~}}EPN^6Nvns#;&t%~g)Ng-n7AEC~k^1ii`VrnD#( z(8{i%v`Tsh%8c_Vt(NL&#V??=Bwa((E~IpVq^9yklund(B46WTN^7K-B+yGJog^)$ z-C-%EwbH}D%(#rw$ND>R&}^o#dr9 zTul zJx43^sPHvtlDeJN->ZxfQ!CLI@?K+%I&~)v>10eo>Yt%B@3)N6q_)$L|746dwFNCM z?-*lJQlF+FuQMhswGD>n{f;rZ)WbC74aQ`qZllca8Izs*8_N8FF{4vIpl$0oWAv%V zXviNKV@UmgR`r{VF{ZZAM)Q`SMM?5g=g^Qpu@HOe8Jgy8##E+8QTn_;GiFZeXEY?p z7-yPu0oqoGF;%G%8q&oWS86sz=LBPFQUz+xJB(S7T8=J~_by`=rT&9j@E67`PW=<` z&HF23mZmPI3c49{O{z?7JIR>ksrgjfDaNd%12i3*lWCQt)4HIAVU1fyk_W(N{0pzV z9^nTlM5ZKsPSsvZ-&t2f&&I4TV9us2TF+auMj_5mvVMll?#fO@g^=uZD3h4IAMHhz zeHfwY>yBK6k20yUZW5Z&FH`fNAZwklAGFd&vu+j+fWd$R zrCGPI5PzzRMqAH9?irnrD#`LGX@t?Vk!EdB5(%R>A*=i6ohZWlTZQ zvu+dU6r&%TcV-oE($03E6@J7NKR-t1DMeZL3Lhc&R5Pu}?ZOwJ zN$PK?d5vtaRkJ}M>wbZjQv3yF)68~Ff;FJ#^_R~L0#Tr#$>17 zMe$z37=7vrS}98zV@y3t6)aZ@)70?k6G=4+7ni4T@-I`m5 zXyXYO8kgtS6LC3HMG6)`xo#hwXoUBm)^+fk1 zRYG#hQBv^(71KBsNGXPXpc*k$2~-SKXvNUDoEfUn)X-k0isU{H<>CfK?}Nj7H(a7u z2~_kdw4ygIXL=Qy>fNO1EocS+`XpxVt59ot3mr(GL`f?JK%Y#5tnUF9eF`gKg8C(( zQ}8%qX#UL7*)Xn{XbgpCz{N?bP4j1__&g)&FmC!3FU_B=cw6dzw2^2+)c>>GLNr}0 zv-xP$niDLuf>|(6a|O%hz;HH1zFFd7F2S`G7lghKQhrHqVMGFM2J`Qnkx6_RDXcqH@1BbhHA$$aTh=FESxvXWoJ zN}f9%tzWZQU`1br+>K1*W`U|4ORGk62MZj_kiV1Bq~JQBoSx1S?WZPFA6(&0)CG@| z)B{gXXC{A*GNz}~)@iMQ=5zy1h7p7Y7TgAHDSD>u+>kbfXWHT<)s~_k)|R5D+DPGS z%#&h)S{RM$G}dF-0z)GyJ)(ehK-v!3+#O{5xFP0;wM25KkEH`PF6v3wPh6j)hg zme@a(uM)=cjgupKF40a3CIhS_#ppi_C02NrI8M^UNh3HUDLA}|1W9IU8Yx(VHlfX7 zMo6e%R(OSHdg3J2qsC#jy~qG2PFi{VdcBC02NrI8M^U ziPCW5L`g~f5+=s9k0~uYP7{yDEA3-O(g7pwV>Sfci-w){F}2V1DJCc-f%OEHe##2- z98LBajex#SSM>$$sNA%fO!23~if2;A=8d<-LrfA{gA&PVpoXx~)~ciAmCU~J6)-}u zU^z-tWsYK*(eO;AIZ*|1DYZOv6wQDXtN^x(Soi_m7#ay1QNuF-o<>rz1O-(4SzSCs z)6(v$@C?p4N#Ruchv8KFnPs#EsUKzyE7yY=O?8DxqX@6l^)xjC0!jm<19<2D1f^5e zD{=ll9H(B1Q`m`Ss``y67_){_|AvJWWl&#D^@T_S#?p4A`cf1@Q@s{^6KSSXKxi0< zg;6LHo7BS15Gg}x(pcC=P7WRf0@oP}n$0oil}G&RJYawJRi?Ga<}ccJZB-jwEy4Sv}wbx!JwY5-_VFSNQw|_3h`E|FPgF!PHu@{>b*_9U*U`uWNh+GHL zOT}>9ne`gNbGP$M)diRSgObQ}d_-}EnK(-oXDAODnU18Ms=dr4(6K=*gZJR#6%BBerT?}OoQstjj zxL!p0YAMT6?v(N$C<~?RRa=e3x8ebX%2l0F)Vf!GP%xAfK0il=DgT5_|0ymQJzoS( zsek5CZQcnkC#>kjC$FzG(yP%*&!PM444=Ss?KE_&I5EP6v){+u;G{jK7VpaSK zj)wCbsBraD`jgk!JeyYcSB>-fnN+U)94TIG^kCqRRII!KCh#%&4?L#k$SXIAu2wi0 z_6%*cmqT$_J+PO_{sv_~cA?BP+e302ehWAMC-B-&klB*_Ct+VEkxLh<6XcJ7TM2Yk zFtzowO5n0Fq&%KD?d1NEc|m@bz@-WV_l-JqSBQ2!ChT)I;kr`C*85={!Gww`;gGNwzW){xhmax#4?wT2`* z>absCu3{!wNiP_dQPomrN_MM~$(m%EqGTqK%ym&bQ7&pOWog6t#SVlmk+NY=K;8#k?Lta80T99gB;!9={%5=0#pde0GmJdLQi@nRc8tzeSDJD6~b&W6<3)Ey#g z)n2Ks@8~!UHvMI6szH{cYDRMzlovhbZwgP;RVH zKdq6sI)10;-9g&sD*LeGe`tAI{BWsni$_G$7Oy60)vji*BXX-eOBc^n-_!w-w#vWn z>8sq=RC%!KWUJiQ)UjS+Q)PPzSwfW$yCU77xKz2YQ9UNnuU>WhU7p`LAg5ow>G&^t z-o^J-e%tZ;EPr~H-xE!hf0m@Fa^Zk89OYqe>Dto%1`c0|`0eIE-=KH1=1S211}>;; zRIAGv(6_&V!~RWzJk!`{|3|^GTyAZ!P*(_DzS`eJlI02vXUy7u1~Hoz40I%PuU~J6 z6C0J2eO_E|Mh^Db&yu~=mBRb%Yr6pyX`c$H(yAvup-}lk{o&2VRm-KM>aJY_)CLoN zqx{0x!~OEM2l1o`({E*^7~fGOa}X7#lt(GnpgYxj!~Mq4sXQpCG8qljHQq+uZ=(K9 zt^>K6g-;vLULE8%;osC4;Xj30MYB21iK6|JiN@I6=J-!0+GL^)x=Jk}azD6=Cb zsL8LeHhT)H8DCJL!ULJEvfD~cDD{;(U`7+~MU^^W#ts+grfDkmBNMDvFxyA5snns< zinlY!4sg_ecxq>%uhbAnbx@AUrck9uII6Fu5|yeJL#0MUOi)wfY*D3ZJE>B`!l|-1 z1@zrj^0r-Sm^r|cRchNehM5E0s&Fvj5L5GcMVsrR#m&ChMO*cOyq3F2U-XgU zUUsjG^r(xpOoiU$+<)wB+yLq__s!A+M)m=59Hw7KTu`&!*{I-BHOz!%y0C=r=Ixig z)imAU3w_hQYfh*lo%FWF-!*4Yg~F!k-Zw$63E6{+P1Du&vAw7$*i9RZ2(m{Ub4$eR zcg(9|Xw)^1Ni^ykj{1_P;)XlnsC}M_n7s4k)?Mh8_p zKI$}Wi5Qx%G-869KF${P@*i{RPRJW7yX~&C%Y5@qFwNH#HQxl&UZ3#IH^~GaqWNkR zo96qh%jtFwVroc`trtPzc3L9Y@us^t-}9wQ5od6ao#o=Z?Bm3Zx4^~u%jx;Fx;R}_ zcvUURXIqe6>EiUYl&%7LwsG#&&SpAYNSmz}Lz^{3Oi;7M*?gB9bPp% zwkd|aI^1VY^KYqP?B)M{<9SHoV9-WAs)s)?=j`i>I>7YUu^0KMKQJfzALMF#to1C` zUCQ*>=S;+b3T96#HdooS;>L%)y(;{!W6sZE=tbecpuim7hzV*sIGgVfgVs~RM@&Xt z#0@hgd_OATBc_C7RRmi?>p9bx@KFDzDf**e=A~wnz7Cn75-4D!hgb)AuDd8Dg4j-`sV$FDg5W7!duTh3SY+^ zcD0F^s?APQT#EiN#Z=l9J;*jY<1%L~YW$fgweC;z9d)0lc4{cXfFsB*cGNCUxmc>} zaz{ODsrdd>vr-Iojq24;MGR+|;%yRVFLY=3_w|}(>czv1Jt)@ml)|Rl+-xGAr(T=g z?(!Vb&(^Fc*sqdu+U;^oqh}gF=d1U)qZWC}M$*9KNyn`7OkD8;j@s_2D5rytdCD^` zCpF1YN4?~!V1JN3=8SJyW86;JH^k6Rp<2SVRn19fi`wpUoUKRA#Y!V^v&bv8HFdFX zyQAhRS1BjkcGmMcg-zT2%0z6T?Yb*Az2bJ8TRPDJdO2#Nr*^*KJ3wDY{j;ay4p8Z+ zA4J6`5}kd7V~+Yrff}b;MrwOJa@SLfvqiOCs3(E&HdE;7;%dzqa5AdxZKk%LjB0B= zxBJ?*nuy=0w)0&PW-G2zPu6y^qgHw3?H@lEZ+siX(9+jNOi=THvr$g<%3x4;T40xXWZx}roN0yO z6}}aAnP>e+qgJqz3lk?CkH5Xbqh3>%M^v@~1=DRu7 zFeE7GAT_o1KdATDb-Kw)C&`!l;6n997w$*6TR{}gDm-w9TCnIA<3EouOKpo5nD9oz z-BggGTTS>0!nf*Cpy)OeK1ui*!i(*UhNi=V2@Paelxn&(C|GNXKK>F7H|lXKGSO1C zHd8wlK0%Rere_(pm9WXQlL>!|L~GMTzxj2g`HD$%p3>CRK+!zv*|Dqs)U8v+4h#(n z_85on%VG3@%Yp)OA6+Gd))_rc3Qd`v?v!tdR->n`G*`z`I~7#3%=sHe6V-oEqjZ?O zQr1?}(&KJWpXoS@BXM$=zpMXENmcRi-f@mQM8nF}xCLfSffig8OgAO_M5WGTv!=li zm#grXnO7_&ykeO~&@3M*VU_QF3Vy__8|gusy9qATf^Vw*Zwi?F3VISu)lOcZOw#ww z%2%=T?+Wr;0}WG#4bf35FdcoX=%JIsA2yza(YMg?XfswHM}$y)!CoF3k1?_+1KS zrz$peYfxOJpDqfvab?y`s7VZim_?3B4D{wYYMrOzu}X`hzT&BPptr(hwKvWx$gXz& zFIi*a_P9OA3rjN0J0nH{p%nl^ZSuy2Fkn#=Nrs11H=df}tK z4PH0F7ioh%icK3#Rb1N!`)PyAg6w`VwEPms`1_15*asZ7-bad`1`ayvYp2E9rny!} zea}*f>b@+71OM}g32I(=P9dVDDDv!8SRlY$D;h5i2WoBL!rt{{P zxNhM1ehLq~R-Grmy;*dbC2ZaS6&nAi2=D7GzR2*MG&%dxHvEUDwq34AhhF;g=^?hQ z?C>VDG#J`Dm^wnlc2BHiWUG78HL1xQtEsgjpRy$H3=&lKMp3*K`gW|svPZGgM#;aRF_?@E9>=~OdTFcU4I?;tJJisb-(RUm`Y9i4$4QQD2bp$ ziUeg%I<*-W9vM4cZBo)Jf2qc$@AJM9kK)Ao zAiMhQLf-q@C2tq9M$avTSi1jTT$Zf`-{BKanz1G0Rz`wQ8QC zaa~!iXr0spJ5*nOIZiUIoUiwIt7WfN+B4sfWwhSdnHTHbs#} zA61YC`(OqaoOilud`gPrUJyAFwW2`h<^4)_W>+aQOZij59}NJ4nR@sSMy|x|CTU-n zTg5F>zK3$VlwYEJQp#UYJ}ag3EmFQ97;r=Ts=43T

D*hJBV})+NZ#_}?Hu)jbW!S5#3gIp{@0 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 W4(7vym-PD%^b6ysl4Ji-a{mWLu~Ulx diff --git a/firmware/build_stm6/inlretro_stm.hex b/firmware/build_stm6/inlretro_stm.hex index e248d48..7ab4fd3 100644 --- a/firmware/build_stm6/inlretro_stm.hex +++ b/firmware/build_stm6/inlretro_stm.hex @@ -1,744 +1,1500 @@ :020000040800F2 -:2000000000180020050800083505000839050008000000000000000000000000000000000B -:200020000000000000000000000000003505000800000000000000003505000835050008FA -:20004000350500083505000835050008350500083505000835050008350500083505000890 -:20006000350500083505000835050008350500083505000835050008350500083505000870 -:20008000350500083505000835050008350500083505000835050008350500083505000850 -:2000A0003505000835050008350500083505000835050008350500083505000899010008D0 -:2000C000284B10B51A88284B12041B881A43274B198849084900885A254908801988023164 -:2000E00089B21980198849084900885A214908801988023189B21980198849084900885A58 -:200100001D49088019881D48023189B21980198849084900895A1A4A11801A881949023299 -:2001200092B21A801C880288944213D902881C880832121B92B20A80028892B21A801249CB -:20014000124B0A881343124A1A40302353409BB20B8010BD0F4804881A889442E6D30823DA -:200160000B80ECE70C6000400A600040046000404C6000404E6000405060004002600040BB -:20018000526000401A600040005C00408080FFFFBF8FFFFF006000409449F8B50B88944C30 -:2001A000002B3AD00A88934B9A4234D100230225914A924F1380924A1380924A1380924A66 -:2001C0001380924A1380924AD08FA843D087D08F013DA843D0878F481735FB8705808E48C1 -:2001E000343505808D480835058080258C486D01058080258B4805808020FB878A4B000614 -:2002000023808A4B18608023D08FDB000343D387874B884A1A8000230B8023881BB2002BE2 -:2002200000DBC4E02388844A774F134080221343238023881B0500D49CE0804D7F232A78E6 -:2002400011009943714B1980E9886B4B198000216C4B19803B88FF318B4313433B806023D6 -:200260001A4208D08022764B12051B8828009B189847634B188060232A78134052B2002A87 -:200280004DDA002B14D16A78062A0FD16A88110A02291AD003291BD0012920D1694B1226F5 -:2002A000694A99B21180694A1B0C1380544B1E802288674B1343674A1A40C0239B01534036 -:2002C0009BB22380FFF7FCFE47E05E4B1233E6E7D2B2012A0FD0002A03D0022A15D01E00A2 -:2002E000E4E7584B584A243399B21180574A1B0C13800426DAE7534B534A283399B2118003 -:20030000524A1B0C1380544ED0E74E4B4E4A7C3399B211804D4A1B0C1380504EC6E7002BAB -:2003200009D16B78052B06D13A886B88D2B21B0213439BB23B8000212388494A1340494A00 -:2003400013439BB22380484B198023881A43474B1A40474B5A4092B22280284BDB8F5B05E8 -:2003600007D580222F4B1A800023244AD3872E4B2380F8BD60213B880B40402BEDD13B88B4 -:200380001342EAD1264A3B4B2C481B881188802212059B18C9B298472288324B13432D4AED -:2003A0001A40C0239B0153409BB22380D5E7802223881342D1D023882F490B4080210902C8 -:2003C0000B432380114B1B88934200D17AE7FF200D4B19888143C0D01988090A0A4311495F -:2003E0000A801A8802401A80B7E7C0460E600040005C00403CA5000000600040065C0040E4 -:2004000002600040046000400660004008600040025C0040505C0040186000401C6000404A -:200420001E6000404C5C00402032000000E100E0585C00400080FFFF8F0F000054600040FF -:20044000106000407C0400080A6000400C6000408081FFFF8FBFFFFF2A0300001E03000075 -:200460008F8EFFFF8080FFFF1A600040BFBFFFFF30300000126000400F8FFFFF120100026A -:20048000FF000008C016DC05030201020001090212000101008032090400000000000000B7 -:2004A000040309042A0349006E00660069006E006900740065004E00650073004C006900EA -:2004C0007600650073002E0063006F006D0000000000000000000000000000000000000061 -:2004E0000000000000000000000000000000000000000000000000001E0349004E004C00F8 -:20050000200052006500740072006F002D00500072006F00670000000000000000000000EA -:200520000000000000000000000000000000000000000000FEE7FFFF004801E02301ADDE00 -:20054000FEE7C04602B4714649084900095C49008E4402BC7047C046411D00000061656129 -:2005600062690001130000000536532D4D00060C074D09011901FFFF03B47146490840000D -:200580004900095A49008E4403BC7047411D00000061656162690001130000000536532DFF -:2005A0004D00060C074D09011901FFFF70470A4B0A4A10B55A600A4A5A600122DC681442BC -:2005C000FCD11A6101220180D9681142FCD12022DA6060321A6110BD002002402301674546 -:2005E000AB89EFCDFF2370B53C4C23804378C588102B00D06FE0C37881888078384E01383C -:200600007269082800D964E0FFF79CFF0563632B3B3149515F008B1E8E227D2B19D8314B58 -:200620007360314B73600123F2681A42FCD102233361802389021B05C9184223716133613E -:20064000C046413BF2681A40FCD12023F360603333612270254BA2B2240CE8B25A819C81C2 -:2006600070BD58001018FFF7A2FF0022F1E78E22012BEED8180480231B05C01840181C4926 -:20068000F1E7042363707369A37073691B0AE37073691B0C237173691B0E6371E5E70223E4 -:2006A00063701388A37013881B0AE370DDE78E22012BCED880221B0412059B18591802233F -:2006C00063700B88A3700B88EEE70A4B0A4ADA60CBE78B22BDE780232370BBE7F80600205D -:2006E0000020024023016745AB89EFCD00600040FFFF000000ED00E00400FA05FFFFFFFF6E -:20070000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 -:20072000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 -:20074000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 -:20076000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF164B174A9BB21382164B9BB253826846B4 -:200780001C300F4A0F4B0430043001681140C91AFAD1094A094B043801681140C91AF2D147 -:2007A0007B460A3303600438013303600CE00A4B0A4A1A60FBE7C0460000FFFF0000000808 -:2007C000FFFFFF0F0000000100207047E505000800600040AD05000800300040AAAA000025 -:2007E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 -:200800004156303309490A4A0A4B9B1A03DD043BC858D050FBDC0849084A0020521A02DDEA -:20082000043A8850FCDC03F017F90000405800080000002030040020300400203807002000 -:2008400070B50E4B1A68537A55685C18E4B2A3420ED1537A0A48CB1853720378591AC9B210 -:2008600001700020814202D198230130D37070BD06780130EE540133DBB2E8E794040020BC -:2008800098040020FF23F0B5C04C85B0238083790200009340780138102801D901F03EFE30 -:2008A000FFF76AFE1100D4059B08460AE30C3C0E280E730B190C640CC40C850AD30A110B23 -:2008C000400B3C0EC70C907891888C231D2826D8FFF752FE1E0028001E011802E40283036C -:2008E0000E04CA04E604F204FA0402050B05140522052A0532053A05AA05AA05AA054A05E2 -:200900005F057605CC02D8023F058D059605A105B0239F4A5B0351690B43536100232370AD -:2009200000F0C2FE152901D900F081FD0800FFF723FE160023002E007E05390044004F00AC -:200940007E055C006900730080007E057E058D009A00A700B400C100CE00D800E2009023D8 -:20096000DB051A688B490A401A608022D96852030A43DA600023D2E790230122DB051968AB -:2009800091431960D9680A43DA600023C7E790230422DB05196891431960D9680A43DA6022 -:2009A0000023BCE790231022DB05196891431960D9680A43DA600023B1E790234022DB0566 -:2009C000196891431960D9680A43DA600023A6E79023DB051A6870490A401A608022D9685C -:2009E000D2040A43DA60002399E79023DB051A686A490A401A608022D96852010A43DA60AE -:200A000000238CE70422664B196891431960D9680A43DA60002382E79023DB051A68614988 -:200A20000A401A608022D968D2050A43DA60002375E79023DB051A685B490A401A60802213 -:200A4000D968D2020A43DA60002368E79023DB051A6856490A401A608022D96852000A438E -:200A6000DA6000235BE79023DB051A6850490A401A608022D968D2000A43DA6000234EE7D1 -:200A80009023DB051A684B490A401A608022D968D2010A43DA60002341E79023DB051A684C -:200AA0003D490A401A608022D968D2040A43DA60002334E79023DB051A683F490A401A600D -:200AC0008022D96852050A43DA60002327E70122334B196891431960D9680A43DA600023CA -:200AE0001DE71022354B196891431960D9680A43DA60002313E79023DB051A682C490A40B9 -:200B00001A608022D968D2000A43DA60002306E7152901D900F08EFC0800FFF72DFD16003F -:200B200021002C008B0451005C0067008B0472007D00870092008B048B049D00A800B30018 -:200B4000BE00C900D400DE00E8009023DB051968104801401960DA680240DA600023DEE6A9 -:200B600090230121DB051A688A431A60DA688A43DA600023D3E690230421DB051A688A43CB -:200B80001A60DA688A43DA600023C8E60007002000100240FFFFEFFFFFFFFFFBFFEFFFFF78 -:200BA00000040048FFFFFFBFFFFFFBFFFFFEFFFFFFFBFFFFFFBFFFFFFFFFFFEF000C004846 -:200BC00090231021DB051A688A431A60DA688A43DA600023A3E690234021DB051A688A4350 -:200BE0001A60DA688A43DA60002398E69023DB051968CE4801401960DA680240DA600023CC -:200C00008DE69023DB051968C94801401960DA680240DA60002382E60421C64B1A688A43B4 -:200C20001A60DA688A43DA60002378E69023DB051968C14801401960DA680240DA600023B8 -:200C40006DE69023DB051968BC4801401960DA680240DA60002362E69023DB051968B84832 -:200C600001401960DA680240DA60002357E69023DB051968B34801401960DA680240DA6015 -:200C800000234CE69023DB051968AF4801401960DA680240DA60002341E69023DB0519681E -:200CA000A24801401960DA680240DA60002336E69023DB051968A54801401960DA68024054 -:200CC000DA6000232BE601219A4B1A688A431A60DA688A43DA60002321E610219C4B1A68C9 -:200CE0008A431A60DA688A43DA60002317E69023DB051968934801401960DA680240DA60DD -:200D000000230CE6152900D997E30800FFF734FC16001F00270095032F0037003F009503CE -:200D20004800510058006100950395036A0073007C0085008E0097009E00A5009022802396 -:200D4000D20511685B030B4313600023E7E590220123D20511680B4313600023DFE59022B5 -:200D60000423D20511680B4313600023D7E590221023D20511680B4313600023CFE59022DD -:200D80004023D20511680B4313600023C7E590228023D2051168DB040B4313600023BEE505 -:200DA00090228023D20511685B010B4313600023B5E504235F4A11680B4313600023AEE5F4 -:200DC00090228023D2051168DB050B4313600023A5E590228023D2051168DB020B431360DD -:200DE00000239CE590228023D20511685B000B431360002393E590228023D2051168DB0073 -:200E00000B43136000238AE590228023D2051168DB010B431360002381E590228023D20588 -:200E20001168DB040B431360002378E590228023D20511685B050B43136000236FE50123B8 -:200E40003C4A11680B431360002368E51023404A11680B431360002361E590228023D205D6 -:200E60001168DB000B431360002358E58D23082900D054E590224023D20551680B4353606D -:200E800000234CE58D23082900D048E59022D205536838318B435360002340E5152900D993 -:200EA000CEE20800FFF768FB16001D002300CC0229002F003500CC023C0056005B00620053 -:200EC000CC02CC0269006F0075007B00820089008E00930090238022DB05D2009A6200235C -:200EE0001DE590230122DB059A62002317E590230222DB059A62002311E590230422DB059A -:200F00009A6200230BE590230822DB059A62002305E590238022DB0592019A620023FEE433 -:200F200090234022DB059A620023F8E4FFFFFFFBFFEFFFFF00040048FFFFFFBFFFFFFBFFDD -:200F4000FFFEFFFFFFFBFFFFFFBFFFFFFFFFFFEF000C00480222CD4B9A620023DFE49023D1 -:200F60008022DB0512029A620023D8E490238022DB0592009A620023D1E490231022DB05A0 -:200F80009A620023CBE490232022DB059A620023C5E490238022DB059A620023BFE490233C -:200FA0008022DB0592019A620023B8E490238022DB05D2019A620023B1E40122B34B9A6288 -:200FC0000023ACE40422B24B9A620023A7E490232022DB059A620023A1E4152900D932E2ED -:200FE0000800FFF7C9FA16001D002300300229002F00350030023C00420047004E003002A4 -:20100000300255005B00610067006E0075007A007F0090238022DB05D2009A6100237EE4C3 -:2010200090230122DB059A61002378E490230222DB059A61002372E490230422DB059A61A1 -:2010400000236CE490230822DB059A61002366E490238022DB0592019A6100235FE490231C -:201060004022DB059A61002359E40222874B9A61002354E490238022DB0512029A61002320 -:201080004DE490238022DB0592009A61002346E490231022DB059A61002340E49023202214 -:2010A000DB059A6100233AE490238022DB059A61002334E490238022DB0592019A610023C3 -:2010C0002DE490238022DB05D2019A61002326E401226E4B9A61002321E404226C4B9A61F8 -:2010E00000231CE490232022DB059A61002316E402236370152900D9B1E00800FFF722FA26 -:201100000B151EAF273039AF434C545DAFAF677079828C969EA690238022DB051B69D20042 -:20112000134063800023FFF7FAFB90230122DB051B69134063800023FFF7F1FB902302221F -:20114000DB051B69134063800023FFF7E8FB90230422DB051B69134063800023FFF7DFFB93 -:2011600090230822DB051B69134063800023FFF7D6FB90238022DB051B699201134063808C -:201180000023FFF7CCFB90234022DB051B69134063800023FFF7C3FB02223C4B1B69134067 -:2011A00063800023FFF7BBFB9023DB051B69DB0BDB0363800023FFF7B2FB90238022DB05C4 -:2011C0001B699200134063800023FFF7A8FB90231022DB051B69134063800023FFF79FFBD5 -:2011E00090232022DB051B69134063800023FFF796FB90238022DB051B69134063800023A4 -:20120000FFF78DFB90238022DB051B699201134063800023FFF783FB90238022DB051B697E -:20122000D201134063800023FFF779FB0122174B1B69134063800023FFF771FB0422144BCF -:201240001B69134063800023FFF769FB90232022DB051B69134063800023FFF760FB002331 -:2012600063708D33FFF75BFB80230A4ADB0251690B435361054B08491A680A401A60D968D7 -:20128000064A0A43DA600023FFF749FB00040048000C004800100240FFFFAAAA000055552C -:2012A000BB4BBC491A680A401A60D968BA4A0A43DA600023FFF733FBB54AB64913680B4006 -:2012C00013600023FFF72BFBB14AB34B11680B4313600023FFF723FBAD4A09025369DBB2A7 -:2012E000194351610023FFF71AFBA94B1B691B0AA370012363700023FFF711FB8023A74A52 -:201300001B0351690B435361A54AA64B11680B4313600023FFF703FBA14AA24BD1680B4363 -:20132000D3600023FFF7FBFA9D4A9F4913680B4013600023FFF7F3FA994A9A4B11680B43CF -:2013400013600023FFF7EBFA954B59610023FFF7E6FA01236370924B1A69A2701B691B0A77 -:20136000E3700023FFF7DBFAC0238C4ADB0251690B435361864A8D4B11680B431360902246 -:20138000A023D20511685B030B4313600023FFF7C6FA7F4A854BD1680B43D3609023A0217B -:2013A000DB05D86849030143D96011688048014011601A687F490A401A600023FFF7AFFA81 -:2013C000FF2573488B0042692B407B4DC9002A40134343619022C020D205C0005369014072 -:2013E00076480340194351610023FFF798FA0121674B1A680A431A6099620023FFF78FFA79 -:201400000122634B196891431960D9680A43DA600023FFF784FA0122614B59615C4B9A61A3 -:201420009A620023FFF77BFA0023FFF778FA8D23FFF775FA8D23FFF772FA8D23FFF76FFA61 -:201440008D23FFF76CFA8D23FFF769FA95789388052D00D1DBE135D8022D00D16FE107D854 -:20146000002D00D11AE1012D00D125E1962519E1032D00D14CE2042DF8D1DBB29825012B1A -:2014800000D00FE190224E4BD2051A6006220A214C4B1A703E4B4C4A13604C4A11704C4A3D -:2014A000013113604B4A11704B4A13600C224B4B1A70B023394A5B0351690B43536101F0BA -:2014C00093FF98E1082D00D1FBE100D98CE0062D00D1B8E1072DC9D102F052F8902301205F -:2014E000DB051A6802431A601022986119680A4304211A60802299611C68D20122431A6061 -:2015000080229A6180221C68520122431A6040229A611C68214319600221996119680A432D -:201520001A6008229A6180221C4912034C6922431B4C4A6125681B4A2A432260144A156808 -:2015400005431560842590626561002590619062802065611C68C005204318608020000239 -:201560009862C0204C69C002204348610F2011680140116019681A4801401960D06819497D -:201580000143D160A022D96852030A43DA6089E000040048FFFFAAAA0000555500100240F4 -:2015A0000008004855555555AAAAAAAA50550000AFAAFFFFFFFFEBFF03FF0000FFF9000001 -:2015C00024070020280700201C070020200700202C070020300700201407002018070020C3 -:2015E000FFFFC3FF505555550A2D00D1FAE000D203E1802D00D039E79023012540208026C8 -:20160000DB05657098621A68760132431A60C046D2491C691A6804400A401A60DA680A4077 -:20162000DA60F022002C36D11A680A401A60DA683243DA601A6994461A690192C0461A69F8 -:201640000292C046C0461A690392C046C046C0461F69C046C046C046C0461E691A680A40CD -:201660001A60DA681140D96063462200034212D1019B2A0003420ED10299023201420AD15A -:2016800003990332014206D10432074203D1D632064200D0D13AB24B9A70ACE0B14A1370D0 -:2016A00001F06EFFAE4C2570AF4B0098A2B2240C5A819C8105B0F0BD01F062FF9023DB05E8 -:2016C0009D611A6815438022D2001D609A628022196852030A431A60022204219A611A6840 -:2016E0000A431A601022996119680A431A6008229A61196838320A431A6080239B49DB0274 -:201700004A699B4D13439B4A4B6113682B401360D468994B1C43D460106828401060D068B3 -:201720000343D36080234A691B0313434B61934B934A19680A431A6000255D61B2E701F04A -:201740001FFF90230121DB051A6888480A431A60102299611968864E0A431A6004224021CE -:201760009A611A680A431A6008229A6180229961196852010A431A6080224169D2020A435C -:201780007C4942610A6832400A60CD687A4A1543CD600C6834400C60CC682243CA6080225C -:2017A0004469120322434261744A754C15682C43002514605561C0224469D202224342613A -:2017C0000868704A02430A60A0221868520302431A606D484A6902404A615A696B490A40C4 -:2017E0005A615FE790238022DB051968D2010A431A6080229A61002554E790238022DB0566 -:201800001968D2010A431A6080229A62F3E701F0B7FE90230121DB051A680A431A6010225F -:20182000996119680A431A60042240219A611A680A431A6008229A618022186852010243BC -:201840001A60996159E701F09BFE90230121DB051A68474D0A431A601022996119680A43BE -:201860001A6004229A6119683C3211431960082199619A629A6180233C49DB024A691343E9 -:201880003C4A4B6113682B401360D4683A4B1C43D460106828401060D0680343D3608023C5 -:2018A0004A691B0313434B61344B354A1968384811431960196801401960D9680A43DA6086 -:2018C0003AE701F05DFE90230121DB051A680A431A6004229961196811431960196811435A -:2018E0001960102118680143196040219A611A680A431A6080229D611868520102431A602A -:2019000099618023194A1B0351690B435361CBE7DBB2022B42D00025032B00D1C2E69735D7 -:20192000012B00D0BEE68022002510491203486902434A61114A116899431160D16819437B -:20194000D160516819435160936111680B431360104B1D70104B1A60A4E6C046FFEFFFFF29 -:2019600000070020080700200060004000100240FFFFAAAA00040048000055550008004887 -:20198000555555555055000003FF0000FFF90000AAAAAAAA100700200C070020B023C14A64 -:2019A0005B03516940200B4353619022D2051368BD490B4013608023D1685B011943D16020 -:2019C000516801435160906111680B4308211360B64B1970B64B1A600DE79678D778958892 -:2019E000112E00D104E156D8082E00D1FBE019D8042E00D1D4E00BD8012E00D19CE0002EAD -:201A000000D18DE0022E00D19BE0A023FEF787FF062E00D18BE000D8BDE03900280001F097 -:201A20001DFB81E00C2E00D1E7E009D80A2E00D1C5E000D8BEE03900280001F0FBF973E0BD -:201A40000E2E00D1C0E000D2C8E00F2E00D1C0E0102EDAD1AA21974801F02EF955219648B2 -:201A600001F02AF9A021934801F026F93900280001F022F9A020914B0002197801F01CF904 -:201A8000280001F015FA0600C046280001F010FA8642F5D148E0252E00D177E01AD8202E7E -:201AA00000D182E00BD8132E00D1B0E000D2A9E0142EAAD13900280001F0A6FA34E0222E00 -:201AC00044D074D3232E00D106E17D4B242E9CD11D7029E0822E00D1D1E00AD8802E00D1F2 -:201AE0009AE000D9C4E00023262E01D1FEF717FF8BE7852E00D1C8E008D8842E00D084E730 -:201B000001232800637001F003F8B6E0862E00D1C0E0872E00D078E701236370684BB7E0DA -:201B20003900280001F0E6FA0023FEF7F8FE3900280001F0BBFAF7E73900280001F004F832 -:201B4000F2E73900280001F0B7F8EDE75D4B02225D6190235C49DB059A6208685B4A3F02C3 -:201B600002430A604A692DB2D2B217434F61002D01DA01229A62C046C04601229A6192189B -:201B80009A610B68524A13400B60CDE73900280001F062F8C8E73900280000F091FFC3E7E3 -:201BA0003900280001F03EFEBEE7444B90E7494B1D80B9E73900280001F0FAFAB4E7390001 -:201BC000280001F027F8AFE73900280001F06CFEAAE73900280001F037FEA5E73900280076 -:201BE00001F0B4FAA0E73900280000F0F1FF9BE73900280001F0E4F896E73900280001F0FF -:201C000099F891E73900280001F0C4F98CE73900280001F099F987E7012190236170DB0561 -:201C20001868214E30401860DA6802203240DA608022D2009A629961986122484561C04644 -:201C4000C0462DB29A61002D00DA9962C046C046C046C046C046C046902280211A4BD205EF -:201C6000C9001B69916201211B0A9161A3705BE701232800637001F01BF9A07054E7012303 -:201C80002800637000F088FFF7E7012363700B4B1B78EBE7022363700E4B1B88A3701B0A16 -:201CA000E37041E700100240FFEFFFFF100700200C070020AAFA000055F500008C04002063 -:201CC000A3040020000800480004004800005555FFFFAAAA36040020B94B9D4202D88023EB -:201CE0001B021D43902700F011FD6B1CFF339BB20193FF05B34BB44E5D613268B34B0002BC -:201D00001343FF2233607369134018437061C0460823BB6200F0FAFC08230135BB61019B11 -:201D2000ADB29D42E6D13368A94A13403360FBE69078D1789588AA23062801D9FEF7EFFD35 -:201D4000FEF700FC042A1B2226322000FF209E49AB004A6903409F48ED00024013434B61F0 -:201D60009022C021D205C90053690D409A490B401D4355610023FEF7D2FD0022280000F0C2 -:201D8000DDFCF7E70122F9E7280000F01DFEF1E7280000F0F1FDEDE7012300216370280064 -:201DA00000F0FCFCA070E5E701216170F7E790789388002829D0012844D1D178814A536144 -:201DC000C022D2019B187E4A9BB2934202D89023DB0598627C4B7D4A1868090202431A6072 -:201DE0005A69D2B20A435A6190220821D2059162C046C046C0469161073991611A6874497A -:201E00000A401A600023FEF78AFD01216D4A6170536190220420D2059062C020C0011B188E -:201E200067489BB2834200D89162C046C046C046C0460121644B1B6991611B0A033191616C -:201E4000A370DFE7AF23FEF76AFD9578022D0CD0032D2BD0002D33D10223637001F04AFCD8 -:201E6000A070000AE070FFF71EFC95885B4BD0781D805B4B5B4A1870524B000219680A4300 -:201E800051491A600E68514A32430A605D614A69D2B202434A6190220121D20591621A6839 -:201EA00051490A401A600025FFF7FDFB90230122DB059A61444A464913680B401360F2E7D1 -:201EC000B025FFF7F0FB91780023012901D1FEF726FD99421FD0B133022901D0FEF71FFD51 -:201EE0008421012593883748194342694161364992B28D618D6242610422802113409022C5 -:201F00000902D205002B03D091610023FEF707FD9162FEF704FD01236370A933A3700B00F9 -:201F2000FEF7FDFC9078938804282BD8FEF70AFB182A03080C002D4A13800023FEF7EFFC01 -:201F4000180001F057F9F8E790230222DB059A61C046C046C046C046C046013A9A61ECE770 -:201F6000902202230421D20563709162C046C046C046C046134B1B699161A3709BB21B0A57 -:201F8000E370DAE7B223FEF7CAFC9578D0789188112D00D198E007D8012D69D0002D27D03E -:201FA000022D77D0822660E0212D00D180E0222D00D184E0122DF5D102231020637086E02D -:201FC000FF1F0000000800480004004800005555FFFFAAAA03FF0000FFF900008A040020A3 -:201FE0008804002055555555AAAAAAAAA00400200127BB4B04261B7810209F40FA43B94B3A -:020000040800F2 -:2020000001921D68AF626B6813406B6000F073FBAF616B683B436B60FA20400000F06BFB6C -:20202000FA20AF626B68019A400013406B6000F062FBAF616B68013E3B43B6B26B60002E5B -:20204000EAD10436FA2000F056FBAF626B68019AFA2013406B6000F04EFBAF616B68013E1E -:202060003B43B6B26B60002EECD12670FFF71CFB9B4A9C4B12781E689540B562736810204E -:20208000AB43736000F037FBB56173682B4373600026EAE70123924A637012789249934029 -:2020A000904A9BB21268002002F07AFAA070EFE7012302000020637001F01EFCF6E70123EE -:2020C000020063701020F7E702230020637001F06DFC6080DCE793789188042B1ED007D8E8 -:2020E000022B20D025D8012B13D08723FEF717FC072B27D004D8052BF7D17C4B197005E0D3 -:20210000082B24D0802BF0D101F06EF90023FEF706FC774A1278A2706370F7E7754B1B7859 -:20212000A3700123F8E78322714B1970714B1A70ECE76F4B6F4D197083232B7001F0C4F998 -:202140002B78EDE76C4B1970090A5970DEE76A4B1A78A2705A78E2709A782271DA786271E0 -:202160001A79A2715B79E3710623D5E79078D578023891888A230A2801D9FEF7D0FBFEF796 -:20218000E1F9060B11161D24303C414950005B4B19800023FEF7C3FB584B1B881B040B43DE -:2021A0009847F6E7FEF7E4FA0300FEF7B8FB544803689AB20B0413430360EAE7504A1368E4 -:2021C0001B0C1B040B431360E3E7042363704C4B1B681A0AA370E2701A0C1B0E22716371DB -:2021E000D7E70223464A637012684B00D3181A88A2701B881B0AE370CBE7414B6D001B68EC -:20220000E952C6E73E4A4B001168CB18136002226270ECE73A4B6D001A6855191D60298063 -:20222000B7E7012363700233A370B2E78823FEF776FB93789188022B09D0032B0ED0012BB5 -:2022400010D1304A090411600023FEF768FB2D4A13681B0C1B040B431360F5E70122294BBE -:202260001A60F1E78323FEF75AFB91780B00303B2F2B1AD8D078032814D8FEF763F9161873 -:202280000211214B512900D19AE045D8312974D00FD8002954D0302968D0B423FEF73FFB74 -:2022A0001A4BEFE7B523FEF73AFB194BEAE7194BE8E733296FD067D35029EED1C022D200B8 -:2022C00022801A7AA270DA78E2705A7A22719A7A62719A78A2715B7CE371FFF7E5F9C0469A -:2022E000100700200C07002004000200E5040020C4040020E6040020C50400203404002032 -:20230000300400209C0400206004002074040020380400204C0400207F2900D984E0702943 -:202320005DD260293CD0612943D05229B5D180221B889200A3701B0A2280E370FFF7B4F994 -:20234000FF22874BCA5401311029FBD10123854A5B425380844A5380844A5380844A5380EF -:202360000122844B1A700023FEF7D9FA9288110AD9721A730023FEF7D2FA9288110A597304 -:202380009A730023FEF7CBFA9288110AD9731A740023FEF7C4FA92885A740023FEF7BFFAB5 -:2023A00080235B00238093886D4AD35CA370FFF77BF980235B0023806F4B1B68DB78F5E7F1 -:2023C000C022D2002280DA7AA2701A7BE2705A7B22719A7B6271DA7BA2711B7C7CE7614BFC -:2023E00015785C68644B1868C3787F2D00D998E0624D009E2E70002B0FD000250095982BB3 -:2024000000D194E004E000250095D02B00D18EE0584B10351D70FF2304E0594B1860902355 -:20242000C3706F33009382E00720084003281AD8FEF788F81C1E02174C4B802901D2FFF775 -:2024400033F9872916D97031C9B2072901D9FFF72BF900212170D178997292881A80FFF7C1 -:2024600023F9434BE9E7B523FEF759FA3D4BE4E73D4BE2E79088D178C6B28D19BE22102D82 -:202480002CDC0432002929D0DD78033AFF2D25D19D780132FF2D21D10022D7B2B94220D824 -:2024A000384D0022AC464F01013F1F727701000A67449870DA705A729A721A80DA721A7398 -:2024C0005A739A73DA731A745A745F60244B9D19A8540132D3B28B42FAD300222270FFF79D -:2024E000E3F80132B7181E4D013FEF5DFF2FD4D0C122F3E79378002B04D0402B08D0D22337 -:20250000FEF70DFA237092881A4B1A70FFF7CCF880235B002380174B1B7847E78023FEF70D -:20252000FEF9D82B00D06EE780234468C37000234372C378902B01D0FFF7B6F8712901D04C -:20254000FFF7B2F80E4B91881B685868017092885968120A4A705A7A02325A72FFF7A4F89E -:20256000E7040020380400204C0400206004002074040020A4040020900400209804002030 -:2025800094040020F8040020F0B51C4D040005A8067868690902C0B20843686190200421F3 -:2025A000C00581622900002A01D101328262FF2500204A692D022A401A43114F4A61C04639 -:2025C000C046C046C046C046C046C046C046C046C0463A690133120A22544A69DBB22A40B2 -:2025E00001301A43C0B24A61B042E8D990230422DB059A61033A9A61F0BDC046000800488E -:2026000000040048F0B5184C050060690E02C0B23043606180269020F600C00549B28661EE -:20262000002901DA01218162FF2661693602314011436161C04600200C4FC046C0463969B4 -:202640000132090A29546169D2B2314001301143C0B261619842F0D990238022DB05D20095 -:202660009A6201229A61F0BD0008004800040048F0B5174C05000E0060691F2925D880212D -:2026800031430902C0B20143616190210420FF26C905886261693602314011436161C04602 -:2026A00000200C4FC04639690132090A29546169D2B2314001301143C0B261619842F1D918 -:2026C00090230422DB059A61F0BDC0B20902DAE70008004800040048002302000002002A6E -:2026E00004D1002B01D0802318437047DB43511EDBB20A40F3E70023800080B2C046C04635 -:2027000001339BB29842F9D17047FFFF30B50722012409490868450D43086B404340C50F4B -:20272000DBB26B40013A23404000D2B21843002AF1D10860C0B230BD9C040020134B10B50E -:202740005861134B13481C680902204318605869C0B20143596190210820C9058862002AB1 -:2027600001D101328A62C046C046C046C046C046C046C046C04690220821D2059161073954 -:2027800091611A6804490A401A6010BD000800480004004800005555FFFFAAAA0F4B58613C -:2027A0009023DB05002901D101229A6204229A62C046C046C046C046C046C046C046C0461A -:2027C000C046C046C046C046C046054908699A61000A033AC0B29A617047C0460008004860 -:2027E00000040048F7B504000E004D7AC046C046C046C046C046C046C046C046C0460022B0 -:20280000AA215848FFF79AFF002255215648FFF795FF2402002220215248FFF78FFF23B282 -:202820000193EBB20093337AAB4216D28020009B0022737290210002FFF780FF0022802026 -:2028400011000002FFF77AFF80200022F0210002FFF774FFC0460020FEBD444B444A196839 -:2028600008200A43FF211A605A690A40A02109020A435A6190220121D20590629162C046D2 -:20288000C046C046C046FF24906191611A6839492C400A401A60019B009A1C437368A4B226 -:2028A000995C20000022FFF749FFC046C046C046C046C046C046C046C046C046C046002146 -:2028C0002000FFF76BFF0700C046C046C046C046C046C046C046C046C0467368009A9B5CCF -:2028E000834217D0C046C046C046C046C046C046C046C046C04600212000FFF74FFFB84277 -:202900000BD1C046C046C046C046C046C046C046C046C0460135ADB283E7C046C046C04694 -:20292000C046C046C046C046C046C046C046C046C046C046C046C046C046C046C046C04637 -:20294000C046C046C046C046C046C046C046C046C046C046C04600212000FFF71FFF0700D9 -:20296000C9E7C046AA8A0000558500000004004800005555FFFFAAAA70B504000D000022F3 -:20298000AA210F48FFF7DAFE002255210D48FFF7D5FE0022A0210A48FFF7D0FE002229004D -:2029A0002000FFF7CBFE00212000FFF7F7FE0500C04600212000FFF7F1FEA842F3D170BD00 -:2029C000AA8A00005585000070B504000D000022AA210F48FFF7B2FE002255210D48FFF7E6 -:2029E000ADFE0022A0210A48FFF7A8FE002229002000FFF7A3FE00212000FFF7CFFE050050 -:202A0000C04600212000FFF7C9FEA842F3D170BD55550000AA2A0000C90152080A43FF21C8 -:202A2000F0B585B00293234B0500586912B209021140C0B20143902459610121E405A162A1 -:202A40000331A162FF213F2658690902D2B2084010435861B4460020174F01930391C04668 -:202A6000C046C046C046C046C046C046C0466346396926698908F6089E4319403143295498 -:202A80003E69411C019BC9B2360A6E545969039B01321940D2B2019B114359610230029B30 -:202AA000C0B28342DBD20423A361033BA36105B0F0BDC046000800480004004800207047EA -:202AC0000F4B30B59022586180230124D205DB0093620C4B94621D680B48090228431860CA -:202AE0005869C0B201435961C04608219162C04691611968054801401960946130BDC0461B -:202B0000000800480004004800005555FFFFAAAA0B4B10B580215861902301220424DB05CA -:202B2000C90099619A629C62C046C046C046054800699C61000A9962C0B29A6110BDC046CE -:202B400000080048000400480E4B984202D880231B0218430C4B0D4A58610D4B0902186867 -:202B600002431A605A69D2B211435961C04690220821D2059162C04691611A6805490A4084 -:202B80001A607047FF1F0000000800480000555500040048FFFFAAAA0A4B984202D88023A2 -:202BA0001B021843084B042258619023DB059A62C046C046C046C046044908699A61000A01 -:202BC000C0B27047FF1F0000000800480004004870B504000D000D48AA21FFF7B5FF55219C -:202BE0000B48FFF7B1FFA0210848FFF7ADFF29002000FFF7A9FF2000FFF7CEFF0500C04654 -:202C00002000FFF7C9FFA842F5D170BD55150000AA1A000070B504000D000D48AA21FFF77F -:202C200093FF55210B48FFF78FFFA0210848FFF78BFF29002000FFF787FF2000FFF7ACFF9E -:202C40000500C0462000FFF7A7FFA842F5D170BD55150000AA0A000030B580239024DB009B -:202C6000E405A361104B114A58610223A362104B09021D6800B22A431A605A69D2B21143AF -:202C80005961002801DA0121A162C046C0460121A1614918A1611968064801401960802393 -:202CA000DB00A36230BDC046000800480000555500040048FFFFAAAA9023DB0530B51C68AD -:202CC000174D09022C401C60DA68164C2A40DA60154A506102229A62144A00B215682C4329 -:202CE00014605469E4B221435161002801DA012199628021C9009961C046C046C046C0465B -:202D0000C046C046C046C046C04699620121996149189961136806490B40136030BDC046A8 -:202D2000FFEFFFFF000055550008004800040048FFFFAAAAF7B505001C4B01911E781C4B68 -:202D400074001F8820213C19A4B22000FFF7B4FFAA211848FFF7F8FEA01B80B21021FFF778 -:202D6000ABFF55211448FFF7EFFE20212000FFF7A3FFA0210F48FFF7E7FE104B1878464394 -:202D80000101BE19C9B2B0B2FFF796FF01992800FFF7DAFE2800FFF7FFFE0400C046280015 -:202DA000FFF7FAFEA042F5D1F7BDC046A30400203604002055150000AA0A00008C040020D4 -:202DC00070B50400B0200E0000020A21FFF774FFC0200A210002FFF76FFFAA211248FFF7CA -:202DE000B3FE55211148FFF7AFFEA0210E48FFF7ABFEB0200E4B00021D782900FFF75CFFC0 -:202E0000C02029000002FFF757FF31002000FFF79BFE2000FFF7C0FE0500C0462000FFF786 -:202E2000BBFEA842F5D170BD55150000AA0A00008C040020F8B505000E00194B02211C8843 -:202E4000A71CBFB23800FFF737FFAA211548FFF77BFE601C80B20121FFF72EFF5521124880 -:202E6000FFF772FE02213800FFF726FFA0210D48FFF76AFE0D4B19786418A0B2FFF71CFF3A -:202E800031002800FFF760FE2800FFF785FE0400C0462800FFF780FEA042F5D1F8BDC046DB -:202EA0003604002055150000AA0A00008C0400200B4B5861902300B2DB05002801DA012270 -:202EC0009A628022D2009A61C046C046C046C046044908699A620122000AC0B29A61704764 -:202EE000000800480004004870B504000D00A021FFF7B2FE29002000FFF7AEFE2000FFF798 -:202F0000D7FF0500C0462000FFF7D2FFA842F5D170BD70B50400A0200D00C0015421FFF7EA -:202F2000CBFEA0212000FFF797FE29002000FFF793FE2000FFF7BCFF0500C0462000FFF79A -:202F4000B7FFA842F5D170BD70B50400A0200D000D4BC0011978FFF7AFFEAA210B48FFF787 -:202F6000ABFE55210A48FFF7A7FEA0210748FFF7A3FE29002000FFF79FFE2000FFF798FF15 -:202F8000A842FAD170BDC0468C04002055D50000AAAA000070B50400C0200D0000020121E1 -:202FA000FFF78AFEAA211548FFF786FEC02000210002FFF781FE55211148FFF77DFEC02059 -:202FC00001210002FFF778FEA0210C48FFF774FEC0200C4B00021978FFF76EFE290020006F -:202FE000FFF76AFE2000FFF763FF0500C0462000FFF75EFFA842F5D170BDC04655950000B0 -:20300000AAAA00008C04002070B504000D001048AA21FFF751FE55210E48FFF74DFEA02140 -:203020000B48FFF749FE29002000FFF745FEA020094B00021978FFF73FFE2000FFF738FF57 -:203040000500C0462000FFF733FFA842F5D170BD55D50000AAEA00008C04002070B50400A9 -:203060000D001048AA21FFF727FE55210E48FFF723FEA0210B48FFF71FFE29002000FFF7BC -:203080001BFE802002210002FFF716FE2000FFF70FFF0500C0462000FFF70AFFA842F5D14A -:2030A00070BDC04655D50000AAAA00000D4B0E4A58610E4B0902186802431A605A69D2B20C -:2030C0001143902259618021D20510684901014311604021916291611A6805490A401A6067 -:2030E0007047C046000800480000555500040048FFFFAAAA104B114A10B558611068104B74 -:2031000009020343136053690E4CDBB21943902351618021DB051868490108431860402019 -:203120009862186820401860D8680143D960136805490B40136010BD000800480004004890 -:2031400000005555FFEFFFFFFFFFAAAA70B505000E00134B00211C882000FFF7ADFDAA21A1 -:203160001048FFF7C7FF55210F48FFF7C3FFA0210C48FFF7BFFF0D4B19786418A0B2FFF740 -:203180009BFD31002800FFF7B5FF2800FFF790FE0400C0462800FFF78BFEA042F5D170BD62 -:2031A0003604002055550000AA2A00008C04002070B504000D000D48AA21FFF79BFF55212B -:2031C0000B48FFF797FFA0210848FFF793FF29002000FFF78FFF2000FFF76AFE0500C04621 -:2031E0002000FFF765FEA842F5D170BD55550000AA2A0000902270B50225D2059561C0462A -:20320000C046C046C046C046C04601240D4B94611E680D49314319600C4909885961C046AF -:2032200095625861C04694621A6809490A401A60C046C046C046C046C046C046C046C0461A -:2032400070BDC0460008004855555555A0040020AAAAAAAAF0B58BB00992012208911100E3 -:20326000354B02901F78354B1B780493344B1D68344B1B789940344B01911868334BA962F2 -:203280001B789A40029B102B4FD18262012421002F4B05941B6806932E4B1B7899408BB24E -:2032A000210007932C4B1B689C462C4B1B789940002303911900029C202C05D1049E059CC1 -:2032C0001E41264236D08261089C202C0FD1002B01D11A4C6354069C2669079C264206D042 -:2032E000164C665C059C9C402643144C6654099C013FFFB2002C03D0002F01D1019CAC616A -:203300006446039E0133DBB2A661A662082B05D101310A4BC9B25B5C04930023002FCAD14C -:20332000019B8262AB620BB0F0BD029B112BADD18261ABE78262C7E7E5040020C504002048 -:203340002C070020300700201C070020200700202407002028070020140700201807002025 -:20336000F7B501221A4B1C781A4B19681A4B1B789A40102826D18A6201263500174B01965D -:203380001B680093164B1B789D400023AC461D0020280DD1134E019F765D1E413E4215D056 -:2033A0008A610133DBB2082B02D100230135EDB26646009F013CE4B2BE61BE62002CE7D122 -:2033C0008A62F7BD1128D7D18A61D5E78A62E8E7E50400202C07002030070020140700201C -:2033E00018070020C5040020F0B52C4B85B01B78019301231E00019A1F009640284A116870 -:20340000284A8E62127802921A000298824094466046254A12689062244805782448AF4017 -:2034200000689D408762046803941C00AC402500039C254305604568019CBD4345609C40F7 -:203440001D00A54008681C00284308604868B04348601068029999408C40210001436046FD -:20346000116051688143134851600078124A984083401268116899431160D1680B43D360E9 -:2034800080220E4B1A70002319000D4A13700D4A99540133202BFBD105B0F0BD3007002049 -:2034A0002C070020200700201C07002018070020140700202807002024070020E604002011 -:2034C000E5040020C504002010B52B4B1B78082B4ED013D8294C032B39D006D8012B28D042 -:2034E000022B2AD0254BEE223AE0062B3AD03DD8042BF7D101222021112021E00F2B28D0FC -:2035000008D81E4C0D2B1FD000220E2BEAD12021102015E0802B06D0184CFF2B06D0102B9E -:20352000E0D100221FE0FFF75FFF10BDF0232370FBE72020FFF714FF04E00122002120205F -:20354000FFF788FE8223F2E700221100F7E70122DDE7002220211120FFF77CFE8222074B7F -:203560001A70E2E7012220210800E9E71020E1E71120FFF7F5FEF1E7C4040020E6040020E0 -:20358000BC224D4BD203996AF0B50A439A629A6A4A490A409A62B022596952030A435A6121 -:2035A00019009023464ADB051278102A03D100221A609A60DA601A684248012402401A607A -:2035C0008022D868D2010243DA601A683E483F4F02401A608022D868520302430420DA608B -:2035E0001A68A2431A60DA682243DA601A6882431A60DA680243DA6010221D6895431D607B -:20360000DD682A43DA6040221D6895431D60DD682A43DA601A682E4D2A401A608022DD68CE -:20362000D2042A43DA601A682A4D2A401A608022DD68D2052A43DA601A68274D2A408025C6 -:203640001A60DA68ED022A43DA60244A1668A6431660D6683443D4601E683E401E60DC681E -:203660003C40DC6080234C691B0323434B611C4B1C4C1E681C4F26431E601E683E401E60E1 -:20368000DE683443DC604B691D434D611368174D2B401360D468164B1C43D46011682940A0 -:2036A0001160D1680B43D360136883431360D3681843D060F0BDC04600100240FFFFA1FFC2 -:2036C00008070020FFBFFFFFFFFFEFFFFFEFFFFFFFFFFFFBFFFFFFBFFFFFFBFF000400482F -:2036E0000008004855555555AAAAAAAAFFFFAAAA000055550D480E4A038810B50D4993425A -:2037000002D10A7801320A7090220424D205013394620380084B18699461084C0B786269DE -:203720001B02D2B2134380B2636110BD8A040020FFFF0000880400200008004800040048DB -:20374000F7B50D00042701924C7A000203B2A6B200932B7AB34202D26C720020FEBD0098CB -:203760006B682043195D80B2019B98476B681A5D094B824205D01A683A431A6002229A6121 -:20378000E7E71A680134BA431A60DA6801363A43DA60E4B2B6B2DCE700040048F7B50D0037 -:2037A0001600FF27000203B24C7A01932A7AE3B2A24202D26B720020FEBD20006A683840A9 -:2037C000D15C019B0134184380B2B047A4B2EDE7022907D10F4B104A984218D0904209D118 -:2037E000180007E0032906D10A4B0B490B4A98420BD1080070470429FCD1064B064A9842DF -:2038000005D006499042F4D0054A8842E6D11000F0E7C046380400204C04002060040020E1 -:203820007404002070B506000D0005243000013CFFF73EFBE4B229003000FFF73DFA6D0862 -:20384000002CF3D170BDFFFF70B50400A0200D0000020221FFF7E6FFAA211048FFF774F9D1 -:2038600055210F48FFF770F9A0210C48FFF76CF9A0200C4B00021978FFF7D4FF29002000F0 -:20388000FFF762F92000FFF787F90500C0462000FFF782F9A842F5D170BDC0465515000058 -:2038A000AA0A00008C04002070B50400C0200D0000020521FFF7B6FFAA210D48FFF7FCF9B0 -:2038C00055210C48FFF7F8F9A0210948FFF7F4F929002000FFF7F0F92000FFF7E9FA05001C -:2038E000C0462000FFF7E4FAA842F5D170BDC04655550000AAAA0000F7B501230225294F7E -:2039000001923A780091054393400421A020264E2D049BB229433268C00100F041FE0400E5 -:2039200001283DD13B7809209C4005437830A3B232682900FF3000F033FE040001282FD113 -:203940003B7832689C402900A3B2002000F028FE0400012824D1009B180AFEF7BDFE3B7848 -:2039600032689C402900A3B200F01AFE0400012816D16B461878FEF7AFFE22003B78290056 -:203980009A4093B2326800F00BFE0198FEF7A4FE3B7832689C402900A3B200F001FE0400AB -:2039A000E0B2FEBD100700200C070020F7B501230225274F00903A780191054393400421CF -:2039C000C020244E2D049BB229433268800100F0E7FD0400012838D109231D433B78C02067 -:2039E0009C403268A3B22900400000F0D9FD040001282AD13B7832689C402900A3B20020DE -:203A000000F0CEFD040001281FD1019B180AFEF763FE3B7832689C402900A3B200F0C0FD66 -:203A20000400012811D16B461879FEF755FE22003B789A4093B2009A14430922E1B209043D -:203A40001143326800F0ACFD0400A0B2FEBDC046100700200C070020C64BC74AF0B51A601D -:203A6000C64A8BB01A6002225A60A02212019A600493049BDB68002BFBD19022049BC0490A -:203A800012031960BF4B186802431A6080220991920219681142FCD0012259680A435A60F4 -:203AA0008022596852020A435A608022596852030A435A608022196852040A431A608022A7 -:203AC000920419681142FCD01121AF4AAF4C11605A680E398A43110002220A435A60802265 -:203AE000196B0A431A638022D96912040A43DA61A74BE381BC231B689847A64B6382A64B98 -:203B0000238262B6FFF73CFDF022A44B1A70049B099AA34E1A603278202311009943D229AC -:203B20001BD1A049A048C978C3780224FF2904D1FF3B1C00631E9C41E4B29C4BDB78FF2B7B -:203B400000D003249A4BDB78FF2B00D00424994B994F1C703860D22A58D03378F22B05D162 -:203B60000022023B3370944B1B68DA703578D02D00D04FE2904E3068C378802B00D049E295 -:203B80008C4B1978FFF724FE00233060C570068804004372C07AF5B21038222800D937E211 -:203BA000FCF7EAFCA301C50106020A0236023602360236023602360236023602360236027E -:203BC0003602360237008C00DF00E40010011A0121015D0173017B01360236023602360273 -:203BE0003602360282019A0044002100FFF7F0FD01230135EDB2A542F7D3002B00D03860B3 -:203C000080223B68DA70D0233370A6E700230125F1E7E17B0F2900D91DE209013143237A4A -:203C2000A278C9B26068FEF7EDFC53E0E17B0F2900D910E2636809019C46237AA2780293B4 -:203C40005E4B0E4376B25969F0B2C9B20002014359611F00002E03DA90210120C9058862AF -:203C6000FF2559692D02294011435961C046902080260023C005F60005958661C046C046F1 -:203C8000C046C046C046C046C046C046C04665464B4901320969D2B2090AE9548662796978 -:203CA000059D01332940114379610299DBB29942E3D20122866282616372DDE03C23E17BA4 -:203CC0000A009A4300D0C6E1237AA27829436068FEF7CEFC6072CFE0E17B3C230A009A43B9 -:203CE00000D0B8E1636829439C46237AA5780293324B5A691F292FD8802001430902D2B2F1 -:203D00000A435A61FF27902104265A693F023A40C9052A435A618E628E61C046C046C04635 -:203D2000002205978E62C046C046C0466746244801350069EDB2000AB8545869059F384079 -:203D4000284358618E61C046C04601320298D2B29042E7D262728FE0D2B209021143596188 -:203D6000D0E7237AA278E17B29435BE7E17B3F23A6E7C04600300040CCCC000055550000C8 -:203D8000AAAA00000010024000200240006000403CA5FFFF4108000885080008E6040020AC -:203DA000A40400204C040020380400206004002074040020A2040020900400200008004889 -:203DC00000040048227AE17BA3780092002229436068FEF7D9FB7DE7E17B227AA3782943F0 -:203DE00000920122F4E79D4BE17B586929430E02C0B230436568A278277A586190200426B2 -:203E00006031C005C9B286621E001F2901D801218162FF2059690002014011435961C0466D -:203E20008F4900238C46C046C046C046C046C046C046C046614609690132090AE954716915 -:203E4000D2B2014001331143DBB271619F42EAD290220421D2059161033991612CE7002513 -:203E6000267A67687608FFF745FC0135EDB238800237AE42F7D265727A4B1B6819889A7ACB -:203E800052181A80D822DA70C4E0E17B237AA27829436068FEF7C0FD1CE7E17B237A2943D5 -:203EA0000131A278FF31F4E7A3786668277A002B02D12802FFF79EF9684A902000230425BE -:203EC0009446C0058562C046C046C046C0466246116985618AB2120AF2545A1C0233D2B26F -:203EE000DBB2B1549F42EDD2E6E6E37B1E2B0BD1C020B6092233F1B200029D43FEF7DCFEF9 -:203F0000237AA27880212FE71C2BB5D1A0208121C001FEF7D1FE8020F609F1B20002FEF746 -:203F2000CBFEA0200021C001FEF7C6FEA4E7E37BFE2BA1D17609F1B24B48FEF705FE1F21EC -:203F4000636829409C46454B09025A69A678D2B20A43277A80215A619022C900D2059161BD -:203F60000121FF209162033191625A690002024032435A61C0460022394D0290C0466046C3 -:203F800029690136090A815459690298F6B2014001323143D2B259619742EFD290230421D4 -:203FA000DB0599618021C900996201219961D1E6237AA2786021D7E6E37B002B20D18033CD -:203FC000F6091D43F3B20393FF20039B24499B004A6903402548024013434B61C02090214A -:203FE000039BC905C000DB004A6903402048024013434B61227AA378290000920022E7E6B7 -:020000040800F2 -:20400000012BE1D140217604760E31430391DBE7C323E370174B1D78F02D00D0A3E2114E98 -:204020003468E378982B00D09DE2134B20001978FFF7CEFB00233060C370E07AE5701038CC -:204040002678042800D98CE2FCF796FA180052011F022702E600C423DBE7C0460008004832 -:204060000004004890040020FF3F000003FF0000FFF90000A4040020A2040020E37B002BF1 -:2040800006D130008038C0B2DD4A2100FFF758FBE37B012B06D130008038C0B2D94A21005F -:2040A000FFF77CFBE37B022B06D130008038C0B2D54A2100FFF772FBE37B042B06D13000A0 -:2040C0008038C0B2D14A2100FFF73AFBE37BFC2B06D130008038C0B2CD4A2100FFF730FB40 -:2040E000E37B0A2B06D130008038C0B2C94A2100FFF726FBE37BFD2B15D13F2023883040CB -:204100009B0905936B4680261B7D06430793677ABBB2029333021BB20893237A029A934203 -:2041200000D380E06772E37B1E2B06D130008038C0B2B94A2100FFF703FBE37B0C2B17D106 -:204140001F20304080260643C0202588A5216D09EDB2C001FEF7B0FD2900B048FEF7ACFD37 -:20416000677A35023D43237ABB4200D3A3E06772E37B1C2B21D1AA21A948FEF76DFD5521B6 -:20418000A848FEF769FD2021A548FEF765FD30008038A54A2100C0B2FFF7D2FA80209021D2 -:2041A0000002FEF759FD802000210002FEF754FD8020F0210002FEF74FFDE37B1F2B21D11B -:2041C000AA219A48FEF748FD55219948FEF744FD20219648FEF740FD30007038954A210042 -:2041E000C0B2FFF7ADFA902090210002FEF734FD902000210002FEF72FFD9020F021000270 -:20420000FEF72AFDE37B6F2B06D130008038C0B2894A2100FFF794FAF4232288E370A37AB0 -:204220009B1823809FE100218448FEF745FDAA218348FEF73BFF55218248FEF737FFA02193 -:204240007F48FEF733FF6B46187D7F4B0799C01880B2FEF731FD089D63683D43ADB2D95D0E -:204260002800FEF723FFC0462800FEF721FE06902800FEF71DFE069B8342F4D1636806995A -:20428000DA5D724B8A420FD1029A1968013292B20292042291431960D96801370A43DA60E3 -:2042A0000222FFB29A6238E7042219680A431A6002229A6131E7AA216548FEF7FDFC55218D -:2042C0006448FEF7F9FCA0216148FEF7F5FC63682800D95DFEF7F0FCC0462800FEF7E8FDE6 -:2042E00002902800FEF7E4FD029B8342F4D13AE7E37B002B04D1584A21003000FFF74EFA57 -:20430000E37B012B04D1554A21003000FFF746FAE37B032B04D1524A21003000FFF73EFA9C -:20432000E37B042B04D14F4A21003000FFF736FAE37B0A2B04D14C4A21003000FFF72EFA9E -:20434000E37B0B2B04D1494A21003000FFF726FAE37BFE2B00D05FE7218845484909C9B25A -:20436000FEF7F2FBAA214348657AFEF7A9FB55214148FEF7A5FB3F482021FEF7A1FB1F2061 -:2043800030400302AFB20593237ABB420DD2657290210020FEF794FB00210800FEF790FB61 -:2043A000F0210020FEF78CFB36E7059EA0212E433000FEF785FB63683000595DFEF780FB98 -:2043C000C0463000FEF7A4FB02903000FEF7A0FB029B8342F4D1636802995A5D1B4B8A424B -:2043E0004CD104211A6801358A431A60DA6801370A43DA600222EDB2BFB29A62C4E7C0469A -:20440000B1310008A93800084D3100085D300008BD2A000809300008952F0008FFFF0000B4 -:20442000AA8A000055850000132F0008AA9A000055950000E92E0008492F000869FD0000F1 -:2044400055550000AA2A000069FDFFFF0004004855D50000AAAA0000152C000849380008DE -:20446000352E0008D12B0008C12D0008352D0008FF3F0000AA0A00005505000004211A687A -:204480000A431A6002229A617EE7300060303D4A2100C0B2FFF782F9BEE6E37B042B06D17E -:2044A00030008038C0B2384A2100FFF777F9E37B052B04D1344A21003000FFF76FF9E37BAB -:2044C000062B06D130008038C0B2304A2100FFF765F9E37B072B04D12C4A21003000FFF769 -:2044E0005DF9E37B002B1CD1FF2280331E4323882748DB09DBB29D0041692A40254DDB0032 -:2045000029400A4342619022C020D205C00051690340214801400B43536121003000FEF72A -:2045200061F9E37B012B00D076E62388184A5B04580E40230343FF209B00516903401548DC -:2045400001400B4390215361C9054B69124A30001A4080239B0013434B612100FEF742F96E -:204560005AE6C323E3700D4B1B78F02B01D1FFF7CEFA832B01D0FFF7CAFAFEF7A5FFFFF764 -:20458000C6FAC046B92C0008C9290008792900080004004803FF0000FFF90000E604002074 -:2045A000F0B5474680B4061C081C000C102801D5162700E004270007000F8046FF200140B1 -:2045C0005468251C1D439C43F60313850AD5C046C046C046C046C046C046C046948013835B -:2045E000958002E0012000F081F801390AD4381C00F07CF8C046948013839580C046C04699 -:204600007600E2E7381C013800F070F8948013839580042000F06AF8108A184001D0FF205F -:2046200061E0C046C046C046C046C046C04694809580108A184055D001200226B04552D075 -:204640000921168A1E40FCD1012000F04FF89480C0469580C04603E0C046C046C046C046DD -:20466000948095807600108A1840EFF300804000C00F0643381C023800F038F89480958018 -:20468000022000F033F80139EAD513859480012000F02CF813839580301C8021022399406D -:2046A0000E401BD1002341085E4149085E4149085E4149085E4149085E4149085E414908B4 -:2046C0005E4149085E4149085E41760808D34008FF21084048400002013004E00E2002E0A3 -:2046E000092000E0002080BCB846F0BD0138FDD17047C04603685A0003D45B005B08C018B4 -:204700007047802212061343F9E7C046F0B557464E46DE464546E0B5814683B092460029D7 -:2047200025D04B1E9B46002701935B46FB18DC0FE4184B466410E5005E193000FFF7DAFF84 -:20474000019B8046A3420BD0280008304844FFF7D1FFD04506D80138504509D2671CE4E79B -:20476000504505D9A74202D0631E9B46DDE70026300003B03CBC90469946A246AB46F0BDA9 -:20478000012809D0022805D0002801D0002070470248FCE70248FAE70248F8E7754E0008FC -:2047A0008D4E0008814E000830B5234B83B005008C1E002B26D001A9200000E000BF002858 -:2047C0001CD001992200FFF7A1FF041E16D0FFF791FF6368A864012B2AD0201D002B23DBAA -:2047E000FFF788FF0023E8642B650368002B0FDBFFF780FF2861002003B030BD00230920B3 -:204800002B61F9E70D480E49091AC9100191D9E71801000FFFF7B4FF2861431E9841082373 -:20482000404298430930E7E70123E8642B65DCE7002305202B61DFE70000000070570008E8 -:2048400040580008036810B50400DA0705D448309B070ED500F06CFC23685A070ED51A0785 -:2048600013D5DB0604D42000D130FF3000F06CFC10BD00F059FC23685A07F0D42000D0300D -:2048800000F05AFC23681A07EBD420005130FF3000F056FC2368E4E70368002B00D01B1866 -:2048A00018007047092070477047C04670B504000D0008E02B6C2A0063612100012023691B -:2048C0009847082807D1296C2000FFF76DFF0028F0D000F083FE0728FBD10020296CFFF7DB -:2048E000E3FF281D00F00AFCF0B5CE46474680B5C3682E4C9846A544836906001400043179 -:20490000402205A8994600F071FE002304AD049323E0F0222B6C5200736129007CA800F0D0 -:2049200065FE7CAA31003369200098478A9B07006B6403934B460095019332003300210051 -:204940000120C04700281FD1F0227CA95200280000F04CFE0024082F1FD1296C3000FFF726 -:2049600023FF611E8C41070009340028D1D0AB6B10216B644B462143019300953300320023 -:204980000120C047002800D009273800F5239B009D440CBC90469946F0BD072FF4D12000B6 -:2049A000296CFFF781FF05A800F0A8FB2CFCFFFF406C704770B5CB6BFAB00B6404000E009D -:2049C0004022043103A800F011FE01235B42029306E002AA210023699847050008280AD112 -:2049E000129B200019000193FFF7DEFE0028F0D009207AB070BD02A8FFF724FF062DF7D145 -:204A000031002000FFF752FF10B58261DA6BC1601A6419000022FFF767FF10BD436970B53D -:204A20000B64C36804000D00002B15D10A002369010002209847072807D0082803D12900EF -:204A40002000FFF733FF00F0C9FD0020296CFFF72BFF281D00F052FB0122FFF745FF00F0B4 -:204A6000BDFDC046C36810B5002B05D0CB6B00220B64FFF739FF10BDFFF79CFFFBE7C0464B -:204A80007047C046836810B5002B02D001000120984710BD012906D0002906D00339022081 -:204AA000012900D970470120FCE7002B08D10F2A06D8920082185268009B00201A60F1E72A -:204AC0000220EFE700B585B003AB0A00009300210023FFF7DFFF039805B000BD012906D084 -:204AE000002906D003390220012900D970470120FCE7002B08D10F2A06D8009B92001B68D0 -:204B0000821853600020F1E70220EFE700B585B003AB039200930A0000230021FFF7DEFF77 -:204B200005B000BD70B51A4CD36BA544136406000D0019A8111D402200F058FD01235B4270 -:204B4000189314E00C2118A802AAFFF7DFFF290018A8B047002812D1069B18AA02A9083018 -:204B600001939847040005280AD0092807D0289B02A819000193FFF717FE0028E2D0092483 -:204B800018A8FFF75FFE200090239B009D4470BDC0FDFFFFF0B5DE4657464E464546E0B5B1 -:204BA000160003220D0011008BB01F000193EB6C01401C1D009107A91B688B460894002F7D -:204BC0006BD01A0C1B045946079302230B72FD3313409B004A72E418009B022B00D1AC6BF4 -:204BE0002B6DDB0747D4002305930833034002932768002F00D112E1019B022B49D0638803 -:204C0000278898460434012340469A469843AB6C0F21994681443000FFF754FF002181451F -:204C200006D8390053469943494488428941494243465A0002231340012217403B43012BBD -:204C40003AD0002B30D0022B1BD12368009A5F007F08002A67D1002906D0029A002A00D103 -:204C60007CE0002F00D1A9E0002B00DA04340137BF00E419BCE75946300000F00BFB00288E -:204C800010D009200BB03CBC90469946A246AB46F0BD636808349846B5E71B0207935B4644 -:204CA0001A8199E70820EDE7009B002B02D0002900D08DE004349BE7009B002B1AD100294B -:204CC00016D02368DF0F63689A1CDAD02A0058320692013300D1BDE0201DFFF7DDFD06AB9E -:204CE00001003A00280000E000BF002800D082E008347DE70D2130002F6AFFF7E3FE874221 -:204D0000F6D1AB6A9C42F3D12000FFF7F3FC0F2102003000FFF7FAFE30002A000021FFF74F -:204D2000F5FE0720AEE72B6A0D2130009846FFF7C9FE804501D0236896E7AB6A9C42FAD1DA -:204D40000023EB6204332B63231DAF626B632368002B00DA86E00123059388E7002F2DD0B2 -:204D600058239C46AC4463460393231D99460023984606AB220004933B004C464746B246CB -:204D800098462E00914603E004342F00454542D0039B20000693FFF77FFD049B01000022BF -:204DA00030007D1C00E000BF0028EDD04346B84635004C4656461F009845BCD10D213000D5 -:204DC000FFF780FE069B28626B62AC62062059E72000FFF78FFC04340700AC63280000E0FC -:204DE00000BF002800D14CE730003A000F21FFF78DFE072046E707000D213000FFF762FE9E -:204E00002862022F2BD1069BEB622B002C336B62AC62062036E735004C465646CEE759468E -:204E2000300000F037FA002800D02AE7059B002B00D137E70F213000FFF744FE0E21020095 -:204E40003000FFF763FE3000094A0F21FFF75EFE072017E70D213000FFF734FE2862069BF0 -:204E60006B62D5E738000130800020184DE7C0460000000010B50023FFF78CFE10BDC04613 -:204E800010B50123FFF786FE10BDC04610B50223FFF780FE10BDC046F0B5CE46474680B530 -:204EA0000500C3B014001E00012955D000294BD0032922D0042949D1002B47D1102A45D8B6 -:204EC000102203681A4200D0F1E020AF380000F03DF900230120A96B02009A40144203D0AE -:204EE0000E689A00BE5004310133042BF4D13800A96300F029F9002029E0032B26D114047B -:204F0000230C160C9846F318102B1FD8082203681A4200D098E020AF380000F013F9424661 -:204F2000AB6BF6001C00002A08D0D400F21A1C19BA181968D15004339C42FAD1AC63380097 -:204F400000F0FEF8002002E0002B24D0022043B00CBC90469946F0BD130C14049846240CC6 -:204F6000012E2ED0052EF1D11B19202BEED842460F2A70D9A146002C7ED1AA6B4346AA63B3 -:204F80000F2B00D89AE04B46002BDBD0684600F0D3F80020DBE700231004A96B000C013645 -:204FA00032009A40104204D00F689A00AA18576004310133102BF3D10020A304C7D4A9635F -:204FC000C5E71B19102BC1D843460F2BBED82B681E4206D00322280093432B60483000F0E5 -:204FE000A5F820AF380000F0A1F8AA6B002C24D04346DB00FF180023994664000023A400A7 -:20500000D158F95004339C42FAD14B4612196F46002B0FD04046102800D210204B46D90099 -:2050200000231038C0003818D458C45004339942FAD15218012EA1D120AF04323800AA6383 -:2050400000F072F8002082E7934303605130FF3000F078F85FE7102B3BD9102252429146F2 -:2050600099442B68194208D0022228008B4313432B60483000F05EF82B6804221A4221D1CD -:2050800043460F2B03D820AF380000F053F86F46380000F053F810244346AA6BE41A002C0C -:2050A000B8DD434620AFDB006400FF18A6E793430360D130FF3000F049F806E720A800F0E1 -:2050C00037F860E7280093432B60D03000F036F8D6E72B680B4207D0022228008B431343CF -:2050E0002B60483000F026F820AF380000F022F8A146AA6B002C00D07AE73FE7011C34318D -:2051000038C9043B9C461D60A646011C20313CC990469946A246AB46011C0831FCC941683F -:205120000068E54600BDC0467047C0467047C0467047C0467047C0467047C0467047C046AB -:205140007047C0467047C0467047C0467047C04601B401A801B585B0FFB408A841464A4698 -:2051600053465C4665463EC001A83EC80F98009000230CB401A9FFF71DFC109B12B01847FD -:2051800001B401A801B585B0FFB408A841464A4653465C4665463EC001A83EC80F98009082 -:2051A00000230CB401A9FFF739FC109B12B0184701B401A801B585B0FFB408A841464A46A8 -:2051C00053465C4665463EC001A83EC80F98009000230CB401A9FFF745FC109B12B0184775 -:2051E00001B401A801B585B0FFB408A841464A4653465C4665463EC001A83EC80F98009022 -:2052000000230CB401ABFFF7FFFB109B12B0184701B401A801B585B0FFB408A841464A4680 -:2052200053465C4665463EC001A83EC80F98009000230CB401AAFFF775FC109B12B01847E3 -:20524000027A0300002A0BD1427A002A0FD0013A42724268111D416003211268017202E0A9 -:20526000013A02720268100E12021A607047B020FCE7C04600B585B003AB00930C2200237D -:205280000021FFF707FC039805B000BD10B5FFF7F1FF10BDF0B557464E464546DE460023C7 -:2052A000E0B587B003930F339846083B994680231B0306000F009A463800FFF7C1FF0400A2 -:2052C000B02800D1C3E003062AD5030042469343DBB2802B00D171E0902B3DD0A02B00D15B -:2052E00085E0B02B50D0C02B00D196E003004A469343DBB2D02B0AD15346024001321A43E5 -:20530000052301213000FFF7C7FD0028D4D00924200007B03CBC90469946A246AB46F0BD56 -:20532000FF23820013401D1D05AB9B4600930D22002300213000FFF7ADFB630620D4059BDA -:205340009C46654405955B460D220093002100233000FFF7C3FBAFE7833B03400D2BD6D028 -:2053600005AD02400095002300213000FFF792FB009500230D2200213000FFF7AFFB9BE753 -:20538000059B5D1B0595DEE7B12874D0B22800D1CFE0B32800D184E0FC230340B42BB6D048 -:2053A0004A465346024001321A43012101233000FFF772FD002800D17EE7A8E704023800EC -:2053C000FFF73EFF802520432D02A8429FD004010005020C002300213000FFF75DFD002806 -:2053E00095D12C4200D167E70123039364E7FF234A461B011900824311410A001A40030749 -:2054000002D58023DB011A43002300213000FFF743FD002800D14FE779E7C6284CD0C728A7 -:205420005ED003004A469343DBB2C02B6DD0C82872D0C92800D06AE73800FFF701FFF0239B -:2054400002031B03134042460240013257E7039B0024002B00D05BE705AD00950E22002104 -:205460003000FFF717FB009500230F2200213000FFF734FB4CE73800FFF7E2FE002800D15B -:2054800045E7030042469343DBB2002B00D03EE7020000213000FFF7FFFC002800D10BE7A3 -:2054A00035E73800FFF7CCFEF02302031B03134042460240013277E73800FFF7C1FEF023F4 -:2054C00002031B0313404246024001321A43032303213000FFF7E0FC002800D1ECE616E7E8 -:2054E0003800FFF7ADFE021E00D110E7030041468B43DBB2002B00D009E704213000FFF7D0 -:20550000CBFC002800D1D7E601E74346A0221C40013412032243DAE73800FFF791FE4346C9 -:2055200002009A43D2B210321840120301300243E6E605AB00939B460D2200230021300050 -:20554000FFF7A8FA3800FFF77BFE030618D57F25B03C059B2840A0409C466044059038004B -:205560000734FFF76DFE0306F3D481217F23890003408C46A340059A62449B180593E2E6A2 -:205580000224F2E7030000B5DB6C85B05A680800120201921A0001A908324A6003220A721E -:2055A000DB794B72FFF776FE05B000BD10B5FFF76DFE806C10BDC04610B5FFF767FEC26CCB -:2055C000D3799B000833D01810BDC04610B500F005F8C04610B5FFF7F9FFC04610B5062092 -:2055E00000F076F8012000F0A5F8C046F0B50F2A37D90D0005430C000300AD0735D1150078 -:20560000103D2D092E013618103627681F6067685F60A7689F60E7681034DF601033B34290 -:20562000F3D10F2401352D01491914404519032C1DD90023CE58EE500433E61A032EF9D816 -:205640000323043CA4080134A4001A402D190919002A05D00023CC5CEC5401339342FAD13F -:20566000F0BD0500002AF5D1FAE70500F2E72200F8E7C04670B505000C001F2922D8B72370 -:205680009B00C358002B0ED08A009B181A68002A09D0012A10D0511C10D000212000196077 -:2056A0009047002070BD280000F030F822000100280000F017F8F5E70020F3E716230360CA -:2056C0000120EFE71623036001204042EAE7C04610B5034B01001868FFF7CCFF10BDC04695 -:2056E00000000020002370B5074C050008001100236000F017F8431C00D070BD2368002B3D -:20570000FBD02B60F9E7C0463407002010B500F001F810BD58220120014B40421A607047DD -:205720003407002058220120014B40421A60704734070020FEE7C046F8B5C046F8B5C046C8 -:2057400074B20181B0AB308000000000800A0181B0B0ABF0000000003F020181B0AB3080C1 -:205760000000000080060181B0B0ABF00000000030EEFF7FB0B0B0807CEFFF7F0100000010 -:2057800028F0FF7FB0A90280BCF0FF7FB0B0A88008F1FF7F0100000014F1FF7FB0B0AA8061 -:2057A00048F1FF7F9CFFFF7F08F2FF7F0100000004F2FF7FAA3F398050F2FF7FB0B0A88042 -:2057C0005CF2FF7FB0B0AA809CF2FF7FB0B0A880B0F2FF7F01000000ACF2FF7FB0B0A8801A -:2057E000B4F2FF7F010000003CF3FF7FAA0FB280A4F3FF7F58FFFF7F7CF6FF7FB0B0A8808A -:2058000098F6FF7F54FFFF7FF4F8FF7F0100000064FAFF7F0084048074FAFF7FB0B0A880E8 -:2058200074FAFF7F40FFFF7F5CFDFF7F008404807CFDFF7FB0B0A88094FDFF7F0100000051 -:20584000080000200000000000000000F40200205C030020C40300200000000000000000A4 -:20586000000000000000000000000000000000000000000000000000000000000000000028 -:20588000000000000000000000000000000000000000000000000000000000000000000008 -:2058A0000000000000000000000000000000000000000000000000000000000000000000E8 -:2058C0000000000000000000000000000000000000000000000000000000000000000000C8 -:2058E0000000000000000000000000000000000001000000000000000E33CDAB34126DE655 -:20590000ECDE05000B000000000000000000000000000000000000000000000000000000AD -:20592000000000000000000000000000000000000000000000000000000000000000000067 -:20594000000000000000000000000000000000000000000000000000000000000000000047 -:20596000000000000000000000000000000000000000000000000000000000000000000027 -:20598000000000000000000000000000000000000000000000000000000000000000000007 -:2059A0000000000000000000000000000000000000000000000000000000000000000000E7 -:2059C0000000000000000000000000000000000000000000000000000000000000000000C7 -:2059E0000000000000000000000000000000000000000000000000000000000000000000A7 -:205A0000000000000000000000000000000000000000000000000000000000000000000086 -:205A2000000000000000000000000000000000000000000000000000000000000000000066 -:205A4000000000000000000000000000000000000000000000000000000000000000000046 -:205A6000000000000000000000000000000000000000000000000000000000000000000026 -:205A8000000000000000000000000000000000000000000000000000000000000000000006 -:205AA0000000000000000000000000000000000000000000000000000000000000000000E6 -:205AC0000000000000000000000000000000000000000000000000000000000000000000C6 -:205AE0000000000000000000000000000000000000000000000000000000000000000000A6 -:205B0000000000000000000000000000000000000000000000000000000000000000000085 -:205B2000000000000000000000000000000000000000000000000000000000000000000065 -:205B4000000000000000000000000000000000000000000000000000000000000000000045 -:205B6000000000000000000000000000000000000000000000000000000000000000000025 -:205B8000000000000000000000000000000000000000000000000000000000000000000005 -:205BA0000000000000000000000000000000000000000000000000000000000000000000E5 -:205BC0000000000000000000000000000000000000000000000000000000000000000000C5 -:205BE0000000000000000000000000000000000000000000000000000000000000000000A5 -:205C0000000000000000000000000000000000000000000000000000000000000000000084 -:205C2000000000000000000000000000000000000000000000000000000000000000000064 -:205C4000000000000000000000000000000000000000000000000000000000000000000044 +:10000000001800200508000835050008390500081B +:1000100000000000000000000000000000000000E0 +:10002000000000000000000000000000350500088E +:10003000000000000000000035050008350500083C +:1000400035050008350500083505000835050008A8 +:100050003505000835050008350500083505000898 +:100060003505000835050008350500083505000888 +:100070003505000835050008350500083505000878 +:100080003505000835050008350500083505000868 +:100090003505000835050008350500083505000858 +:1000A0003505000835050008350500083505000848 +:1000B00035050008350500083505000899010008D8 +:1000C000284B10B51A88284B12041B881A43274B5B +:1000D000198849084900885A254908801988023139 +:1000E00089B21980198849084900885A214908802D +:1000F0001988023189B21980198849084900885A3B +:100100001D49088019881D48023189B21980198853 +:1001100049084900895A1A4A11801A881949023235 +:1001200092B21A801C880288944213D902881C88D3 +:100130000832121B92B20A80028892B21A801249C7 +:10014000124B0A881343124A1A40302353409BB281 +:100150000B8010BD0F4804881A889442E6D3082308 +:100160000B80ECE70C6000400A6000400460004037 +:100170004C6000404E600040506000400260004013 +:10018000526000401A600040005C00408080FFFF29 +:10019000BF8FFFFF006000409449F8B50B88944C76 +:1001A000002B3AD00A88934B9A4234D1002302257F +:1001B000914A924F1380924A1380924A1380924A36 +:1001C0001380924A1380924AD08FA843D087D08F51 +:1001D000013DA843D0878F481735FB8705808E489F +:1001E000343505808D480835058080258C486D01A3 +:1001F000058080258B4805808020FB878A4B000680 +:1002000023808A4B18608023D08FDB000343D38781 +:10021000874B884A1A8000230B8023881BB2002B4F +:1002200000DBC4E02388844A774F134080221343C5 +:10023000238023881B0500D49CE0804D7F232A78EF +:1002400011009943714B1980E9886B4B198000218B +:100250006C4B19803B88FF318B4313433B806023F9 +:100260001A4208D08022764B12051B8828009B1862 +:100270009847634B188060232A78134052B2002AB3 +:100280004DDA002B14D16A78062A0FD16A88110A38 +:1002900002291AD003291BD0012920D1694B12262B +:1002A000694A99B21180694A1B0C1380544B1E8015 +:1002B0002288674B1343674A1A40C0239B0153406F +:1002C0009BB22380FFF7FCFE47E05E4B1233E6E76C +:1002D000D2B2012A0FD0002A03D0022A15D01E0064 +:1002E000E4E7584B584A243399B21180574A1B0C03 +:1002F00013800426DAE7534B534A283399B211800E +:10030000524A1B0C1380544ED0E74E4B4E4A7C335E +:1003100099B211804D4A1B0C1380504EC6E7002B3A +:1003200009D16B78052B06D13A886B88D2B21B02B3 +:1003300013439BB23B8000212388494A1340494A1A +:1003400013439BB22380484B198023881A43474BA1 +:100350001A40474B5A4092B22280284BDB8F5B05F4 +:1003600007D580222F4B1A800023244AD3872E4B97 +:100370002380F8BD60213B880B40402BEDD13B88AA +:100380001342EAD1264A3B4B2C481B881188802215 +:1003900012059B18C9B298472288324B13432D4A45 +:1003A0001A40C0239B0153409BB22380D5E7802293 +:1003B00023881342D1D023882F490B408021090282 +:1003C0000B432380114B1B88934200D17AE7FF2017 +:1003D0000D4B19888143C0D01988090A0A43114975 +:1003E0000A801A8802401A80B7E7C0460E600040B3 +:1003F000005C00403CA5000000600040065C00403E +:100400000260004004600040066000400860004058 +:10041000025C0040505C0040186000401C600040DE +:100420001E6000404C5C00402032000000E100E013 +:10043000585C00400080FFFF8F0F000054600040B8 +:10044000106000407C0400080A6000400C6000401E +:100450008081FFFF8FBFFFFF2A0300001E03000003 +:100460008F8EFFFF8080FFFF1A600040BFBFFFFF3D +:1004700030300000126000400F8FFFFF12010002B9 +:10048000FF000008C016DC0503020102000109029A +:100490001200010100803209040000000000000089 +:1004A000040309042A0349006E00660069006E0017 +:1004B0006900740065004E00650073004C0069001F +:1004C0007600650073002E0063006F006D00000071 +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:1004F00000000000000000001E0349004E004C00F8 +:10050000200052006500740072006F002D00500042 +:1005100072006F0067000000000000000000000093 +:1005200000000000000000000000000000000000CB +:1005300000000000FEE7FFFF004801E02301ADDE00 +:10054000FEE7C04602B4714649084900095C49000B +:100550008E4402BC7047C046411D000000616561C9 +:1005600062690001130000000536532D4D00060C92 +:10057000074D09011901FFFF03B471464908400006 +:100580004900095A49008E4403BC7047411D0000D0 +:100590000061656162690001130000000536532D9A +:1005A0004D00060C074D09011901FFFF70470A4B6A +:1005B0000A4A10B55A600A4A5A600122DC6814429D +:1005C000FCD11A6101220180D9681142FCD120229C +:1005D000DA6060321A6110BD0020024023016745D5 +:1005E000AB89EFCDFF2370B53C4C23804378C588A1 +:1005F000102B00D06FE0C37881888078384E0138A6 +:100600007269082800D964E0FFF79CFF0563632B3B +:100610003B3149515F008B1E8E227D2B19D8314B07 +:100620007360314B73600123F2681A42FCD10223DC +:100630003361802389021B05C9184223716133612C +:10064000C046413BF2681A40FCD12023F36060337E +:1006500033612270254BA2B2240CE8B25A819C81EE +:1006600070BD58001018FFF7A2FF0022F1E78E229C +:10067000012BEED8180480231B05C01840181C4914 +:10068000F1E7042363707369A37073691B0AE37055 +:1006900073691B0C237173691B0E6371E5E70223F9 +:1006A00063701388A37013881B0AE370DDE78E2242 +:1006B000012BCED880221B0412059B185918022347 +:1006C00063700B88A3700B88EEE70A4B0A4ADA6066 +:1006D000CBE78B22BDE780232370BBE7F806002021 +:1006E0000020024023016745AB89EFCD0060004048 +:1006F000FFFF000000ED00E00400FA05FFFFFFFF30 +:10070000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +:10071000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +:10072000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +:10073000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +:10074000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +:10075000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +:10076000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +:10077000164B174A9BB21382164B9BB253826846A4 +:100780001C300F4A0F4B0430043001681140C91A65 +:10079000FAD1094A094B043801681140C91AF2D14B +:1007A0007B460A3303600438013303600CE00A4BD4 +:1007B0000A4A1A60FBE7C0460000FFFF000000087D +:1007C000FFFFFF0F0000000100207047E505000853 +:1007D00000600040AD05000800300040AAAA0000FB +:1007E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +:1007F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +:10080000FFFFFFFF09490A4A0A4B9B1A03DD043B1D +:10081000C858D050FBDC0849084A0020521A02DDB3 +:10082000043A8850FCDC03F083F9000060590008AA +:100830000000002030040020300400203807002091 +:1008400070B50E4B1A68537A55685C18E4B2A3422F +:100850000ED1537A0A48CB1853720378591AC9B289 +:1008600001700020814202D198230130D37070BD05 +:1008700006780130EE540133DBB2E8E7940400203F +:1008800098040020FF23F0B5C04C85B02380837905 +:100890000200009340780138102801D901F046FE8B +:1008A000FFF76AFE1100D4057708360AEB0C440EF8 +:1008B000300E7D0B080C6C0CCC0C8F0ADD0A1B0B68 +:1008C0004A0B440ECF0C907891888C231D2826D893 +:1008D000FFF752FE1E0028001E011802E4028303E7 +:1008E0000E04CA04E604F204FA0402050B0514051A +:1008F00022052A0532053A05AA05AA05AA054A05D0 +:100900005F057605CC02D8023F058D059605A10549 +:10091000B0239F4A5B0351690B435361002323704B +:1009200000F062FE152901D900F081FD0800FFF7F3 +:1009300023FE160023002E007E05390044004F00E0 +:100940007E055C006900730080007E057E058D00D9 +:100950009A00A700B400C100CE00D800E2009023A6 +:10096000DB051A688B490A401A608022D968520355 +:100970000A43DA600023D2E790230122DB051968DD +:1009800091431960D9680A43DA600023C7E79023CE +:100990000422DB05196891431960D9680A43DA60BB +:1009A0000023BCE790231022DB05196891431960EE +:1009B000D9680A43DA600023B1E790234022DB05BF +:1009C000196891431960D9680A43DA600023A6E7E1 +:1009D0009023DB051A6870490A401A608022D968A2 +:1009E000D2040A43DA60002399E79023DB051A68F2 +:1009F0006A490A401A608022D96852010A43DA60C3 +:100A000000238CE70422664B196891431960D9686A +:100A10000A43DA60002382E79023DB051A68614904 +:100A20000A401A608022D968D2050A43DA6000239E +:100A300075E79023DB051A685B490A401A6080223B +:100A4000D968D2020A43DA60002368E79023DB0505 +:100A50001A6856490A401A608022D96852000A432F +:100A6000DA6000235BE79023DB051A6850490A40EF +:100A70001A608022D968D2000A43DA6000234EE768 +:100A80009023DB051A684B490A401A608022D96816 +:100A9000D2010A43DA60002341E79023DB051A689C +:100AA0003D490A401A608022D968D2040A43DA60BC +:100AB000002334E79023DB051A683F490A401A6097 +:100AC0008022D96852050A43DA60002327E7012211 +:100AD000334B196891431960D9680A43DA600023DF +:100AE0001DE71022354B196891431960D9680A43F4 +:100AF000DA60002313E79023DB051A682C490A40CB +:100B00001A608022D968D2000A43DA60002306E71F +:100B1000152901D900F08EFC0800FFF72DFD160005 +:100B200021002C008B0451005C0067008B047200D4 +:100B30007D00870092008B048B049D00A800B30009 +:100B4000BE00C900D400DE00E8009023DB05196870 +:100B5000104801401960DA680240DA600023DEE6DE +:100B600090230121DB051A688A431A60DA688A43F8 +:100B7000DA600023D3E690230421DB051A688A4358 +:100B80001A60DA688A43DA600023C8E600070020AA +:100B900000100240FFFFEFFFFFFFFFFBFFEFFFFF33 +:100BA00000040048FFFFFFBFFFFFFBFFFFFEFFFF4A +:100BB000FFFBFFFFFFBFFFFFFFFFFFEF000C004841 +:100BC00090231021DB051A688A431A60DA688A4389 +:100BD000DA600023A3E690234021DB051A688A43EC +:100BE0001A60DA688A43DA60002398E69023DB050E +:100BF0001968CE4801401960DA680240DA600023C3 +:100C00008DE69023DB051968C94801401960DA6850 +:100C10000240DA60002382E60421C64B1A688A4348 +:100C20001A60DA688A43DA60002378E69023DB05ED +:100C30001968C14801401960DA680240DA6000238F +:100C40006DE69023DB051968BC4801401960DA683D +:100C50000240DA60002362E69023DB051968B84899 +:100C600001401960DA680240DA60002357E69023F9 +:100C7000DB051968B34801401960DA680240DA60A0 +:100C800000234CE69023DB051968AF48014019604A +:100C9000DA680240DA60002341E69023DB05196838 +:100CA000A24801401960DA680240DA60002336E6A3 +:100CB0009023DB051968A54801401960DA680240F5 +:100CC000DA6000232BE601219A4B1A688A431A60E6 +:100CD000DA688A43DA60002321E610219C4B1A6807 +:100CE0008A431A60DA688A43DA60002317E69023A1 +:100CF000DB051968934801401960DA680240DA6040 +:100D000000230CE6152900D997E30800FFF734FC0F +:100D100016001F00270095032F0037003F009503A2 +:100D20004800510058006100950395036A00730064 +:100D30007C0085008E0097009E00A50090228023F5 +:100D4000D20511685B030B4313600023E7E5902293 +:100D50000123D20511680B4313600023DFE59022C5 +:100D60000423D20511680B4313600023D7E59022BA +:100D70001023D20511680B4313600023CFE59022A6 +:100D80004023D20511680B4313600023C7E590226E +:100D90008023D2051168DB040B4313600023BEE5FA +:100DA00090228023D20511685B010B43136000235E +:100DB000B5E504235F4A11680B4313600023AEE5D9 +:100DC00090228023D2051168DB050B4313600023BA +:100DD000A5E590228023D2051168DB020B43136046 +:100DE00000239CE590228023D20511685B000B4311 +:100DF0001360002393E590228023D2051168DB0065 +:100E00000B43136000238AE590228023D2051168EA +:100E1000DB010B431360002381E590228023D20580 +:100E20001168DB040B431360002378E590228023D4 +:100E3000D20511685B050B43136000236FE50123A6 +:100E40003C4A11680B431360002368E51023404AB5 +:100E500011680B431360002361E590228023D205C3 +:100E60001168DB000B431360002358E58D2308292C +:100E700000D054E590224023D20551680B435360C3 +:100E800000234CE58D23082900D048E59022D205A7 +:100E9000536838318B435360002340E5152900D94E +:100EA000CEE20800FFF768FB16001D002300CC020D +:100EB00029002F003500CC023C0056005B00620088 +:100EC000CC02CC0269006F0075007B0082008900B3 +:100ED0008E00930090238022DB05D2009A620023CB +:100EE0001DE590230122DB059A62002317E590237C +:100EF0000222DB059A62002311E590230422DB0520 +:100F00009A6200230BE590230822DB059A620023F6 +:100F100005E590238022DB0592019A620023FEE41E +:100F200090234022DB059A620023F8E4FFFFFFFBD9 +:100F3000FFEFFFFF00040048FFFFFFBFFFFFFBFFC5 +:100F4000FFFEFFFFFFFBFFFFFFBFFFFFFFFFFFEF06 +:100F5000000C00480222CD4B9A620023DFE490236C +:100F60008022DB0512029A620023D8E490238022BB +:100F7000DB0592009A620023D1E490231022DB0566 +:100F80009A620023CBE490232022DB059A6200239F +:100F9000C5E490238022DB059A620023BFE49023FE +:100FA0008022DB0592019A620023B8E4902380221C +:100FB000DB05D2019A620023B1E40122B34B9A62AD +:100FC0000023ACE40422B24B9A620023A7E49023EE +:100FD0002022DB059A620023A1E4152900D932E220 +:100FE0000800FFF7C9FA16001D002300300229008F +:100FF0002F00350030023C00420047004E00300216 +:10100000300255005B00610067006E0075007A00D9 +:101010007F0090238022DB05D2009A6100237EE4CA +:1010200090230122DB059A61002378E490230222B9 +:10103000DB059A61002372E490230422DB059A61A8 +:1010400000236CE490230822DB059A61002366E408 +:1010500090238022DB0592019A6100235FE49023B4 +:101060004022DB059A61002359E40222874B9A61F2 +:10107000002354E490238022DB0512029A610023AE +:101080004DE490238022DB0592009A61002346E420 +:1010900090231022DB059A61002340E49023202254 +:1010A000DB059A6100233AE490238022DB059A61F4 +:1010B000002334E490238022DB0592019A6100230F +:1010C0002DE490238022DB05D2019A61002326E4DF +:1010D00001226E4B9A61002321E404226C4B9A6139 +:1010E00000231CE490232022DB059A61002316E4F0 +:1010F00002236370152900D9B1E00800FFF722FA36 +:101100000B151EAF273039AF434C545DAFAF67703E +:1011100079828C969EA690238022DB051B69D200E3 +:10112000134063800023FFF7FAFB90230122DB05C5 +:101130001B69134063800023FFF7F1FB9023022219 +:10114000DB051B69134063800023FFF7E8FB902356 +:101150000422DB051B69134063800023FFF7DFFBDC +:1011600090230822DB051B69134063800023FFF7EF +:10117000D6FB90238022DB051B699201134063801C +:101180000023FFF7CCFB90234022DB051B691340B3 +:1011900063800023FFF7C3FB02223C4B1B69134013 +:1011A00063800023FFF7BBFB9023DB051B69DB0B90 +:1011B000DB0363800023FFF7B2FB90238022DB0573 +:1011C0001B699200134063800023FFF7A8FB902364 +:1011D0001022DB051B69134063800023FFF79FFB90 +:1011E00090232022DB051B69134063800023FFF757 +:1011F00096FB90238022DB051B691340638000234C +:10120000FFF78DFB90238022DB051B6992011340C1 +:1012100063800023FFF783FB90238022DB051B699B +:10122000D201134063800023FFF779FB0122174BA3 +:101230001B69134063800023FFF771FB0422144BEA +:101240001B69134063800023FFF769FB9023202272 +:10125000DB051B69134063800023FFF760FB00235D +:1012600063708D33FFF75BFB80230A4ADB02516911 +:101270000B435361054B08491A680A401A60D96844 +:10128000064A0A43DA600023FFF749FB00040048DE +:10129000000C004800100240FFFFAAAA00005555AC +:1012A000D54BD6491A680A401A60D968D44A0A430D +:1012B000DA600023FFF733FBCF4AD04913680B40B5 +:1012C00013600023FFF72BFBCB4ACD4B11680B4378 +:1012D00013600023FFF723FBC74A09025369DBB2FF +:1012E000194351610023FFF71AFBC34B1B691B0A0B +:1012F000A370012363700023FFF711FB8023C14A11 +:101300001B0351690B435361BF4AC04B11680B4328 +:1013100013600023FFF703FBBB4ABC4BD1680B43B0 +:10132000D3600023FFF7FBFAB74AB94913680B40B3 +:1013300013600023FFF7F3FAB34AB44B11680B4371 +:1013400013600023FFF7EBFAAF4B59610023FFF75F +:10135000E6FA01236370AC4B1A69A2701B691B0A81 +:10136000E3700023FFF7DBFAC023A64ADB025169D2 +:101370000B435361A04AA74B11680B4313609022A3 +:10138000A023D20511685B030B4313600023FFF712 +:10139000C6FA994A9F4BD1680B43D3609023A02192 +:1013A000DB05D86849030143D96011689A480140B8 +:1013B00011601A6899490A401A600023FFF7AFFAD2 +:1013C000FF258D488B0042692B40954DC9002A406E +:1013D000134343619022C020D205C00053690140ED +:1013E00090480340194351610023FFF798FA012107 +:1013F000814B1A680A431A6099620023FFF78FFA3B +:1014000001227D4B196891431960D9680A43DA605B +:101410000023FFF784FA01227B4B5961764B9A61D6 +:101420009A620023FFF77BFA0023FFF778FA8D23F7 +:10143000FFF775FA8D23FFF772FA8D23FFF76FFA26 +:101440008D23FFF76CFA8D23FFF769FA957893885F +:10145000052D00D19BE119D8022D00D12FE107D82D +:10146000002D00D1BAE0012D00D1E5E09625B9E0CC +:10147000032D00D10CE2042DF8D1DBB2012B00D1F9 +:101480004AE2022B00D168E29825ABE0082D00D19A +:10149000D7E14AD8062D00D195E1072DE6D102F01B +:1014A000DBF890230120DB051A68002502431A604F +:1014B0001022986119680A4304211A6080229961F8 +:1014C0001C68D20122431A6080229A6180221C6823 +:1014D000520122431A6040229A611C68214319601C +:1014E0000221996119680A431A6008229A618022D0 +:1014F000444912034C6922434A614349434A0C68F8 +:1015000022430A603C4A14680443146084249062B5 +:101510004C619061906280224D611968D2050A4346 +:101520001A60802212029A625CE00A2D00D119E151 +:1015300000D222E1802D99D19023012540208026E0 +:10154000DB05657098621A68760132431A60C046FE +:1015500035491C691A6804400A401A60DA680A4072 +:10156000DA60F022002C36D11A680A401A60DA6874 +:101570003243DA601A6994461A690192C0461A69C0 +:101580000292C046C0461A690392C046C046C04691 +:101590001F69C046C046C046C0461E691A680A4058 +:1015A0001A60DA681140D96063462200034212D102 +:1015B000019B2A0003420ED10299023201420AD154 +:1015C00003990332014206D10432074203D1D632D5 +:1015D000064200D0D13A154B9A70CCE0144A1370F1 +:1015E00002F03AF8114C2570124B0098A2B2240C6C +:1015F0005A819C8105B0F0BD00040048FFFFAAAAF3 +:10160000000055550010024000080048555555553A +:10161000AAAAAAAA50550000AFAAFFFFFFFFEBFF3E +:1016200003FF0000FFF90000FFEFFFFF00070020AD +:10163000080700200060004002F00EF89023DB0550 +:101640009D611A6815438022D2001D609A62802233 +:10165000196852030A431A60022204219A611A6827 +:101660000A431A601022996119680A431A60082215 +:101670009A61196838320A431A608023DF49DB0215 +:101680004A69DF4D1343DF4A4B6113682B401360F7 +:10169000D468DD4B1C43D460106828401060D068CB +:1016A0000343D36080234A691B0313434B61D74B29 +:1016B000D74A19680A431A6000255D6192E701F074 +:1016C000CBFF90230121DB051A68CC480A431A603E +:1016D000102299611968CA4E0A431A6004224021F7 +:1016E0009A611A680A431A6008229A6180229961F5 +:1016F000196852010A431A6080224169D2020A43E2 +:10170000C04942610A6832400A60CD68BE4A15434A +:10171000CD600C6834400C60CC682243CA608022E3 +:101720004469120322434261B84AB94C15682C43FC +:10173000002514605561C0224469D20222434261EF +:101740000868B44A02430A60A022186852030243A0 +:101750001A60B1484A6902404A615A69AF490A4071 +:101760005A613FE790238022DB051968D2010A43C2 +:101770001A6080229A61002534E790238022DB05DD +:101780001968D2010A431A6080229A62F3E701F0D5 +:1017900063FF90230121DB051A680A431A601022B7 +:1017A000996119680A431A60042240219A611A68F3 +:1017B0000A431A6008229A61802218685201024383 +:1017C0001A60996159E701F047FF90230121DB0579 +:1017D0001A688B4D0A431A601022996119680A43EE +:1017E0001A6004229A6119683C3211431960082179 +:1017F00099619A629A6180238049DB024A691343A6 +:10180000804A4B6113682B401360D4687E4B1C43A5 +:10181000D460106828401060D0680343D3608023F0 +:101820004A691B0313434B61784B794A19687C481A +:1018300011431960196801401960D9680A43DA60D8 +:101840003AE701F009FF90230121DB051A680A43FA +:101850001A600422996119681143196019681143CB +:101860001960102118680143196040219A611A68B3 +:101870000A431A6080229D611868520102431A606F +:10188000996180235D4A1B0351690B435361CBE788 +:10189000DBB2022B21D00025032B00D1A2E6973525 +:1018A000012B00D09EE6802200255449120348698E +:1018B00002434A61554A116899431160D16819433E +:1018C000D160516819435160936111680B431360F3 +:1018D000544B1D70544B1A6084E6B023474A5B0397 +:1018E000516940200B4353619022D20513684F4940 +:1018F0000B4013608023D1685B011943D1605168AC +:1019000001435160906111680B4306211360454B00 +:101910001970454B1A602EE79022454BD2051A608C +:1019200006220221434B1A70364B434A1360434A46 +:101930001170434A01311360424A1170424A1360E8 +:10194000424B2E4A1D70B02351695B030B43536118 +:1019500001F0B6FD01F0B4FD0DE790223449D20547 +:101960000A6034490B700321334B1A60334B1970F2 +:10197000334B49181A60334B1970334B1A600122EC +:10198000324B1A70B0231D4A5B0351690B435361FC +:10199000E0E79678D7789588112E00D132E100D90A +:1019A00081E0082E00D128E119D8042E00D101E1F0 +:1019B0000BD8012E00D1C9E0002E00D1BAE0022ED2 +:1019C00000D1C8E0A023FEF7AAFF062E00D1B8E0A0 +:1019D00000D8EAE03900280001F0ACFBAEE00C2EA4 +:1019E00000D114E134D80A2E00D1F2E000D8EBE0A7 +:1019F0003900280001F08AFAA0E0C0460010024039 +:101A0000FFFFAAAA0004004800005555000800483E +:101A1000555555555055000003FF0000FFF90000D3 +:101A2000AAAAAAAA100700200C070020FFEFFFFFB8 +:101A300024070020280700201C0700202007002082 +:101A40002C07002030070020140700201807002072 +:101A50000E2E00D1C2E000D2CAE00F2E00D1C2E0AB +:101A6000102EAFD1AA21C84801F092F95521C748DC +:101A700001F08EF9A021C44801F08AF9390028004C +:101A800001F086F9A020C24B0002197801F080F91C +:101A9000280001F079FA0600C046280001F074FA27 +:101AA0008642F5D14AE0252E00D179E01CD8202EBF +:101AB00000D184E00CD8132E00D1B2E000D2ABE00C +:101AC000142E00D07EE73900280001F009FB35E034 +:101AD000222E45D075D3232E00D1EDE0AD4B242E20 +:101AE00000D06FE71D7029E0822E00D1D1E00AD826 +:101AF000802E00D19AE000D9C4E00023262E01D127 +:101B0000FEF70DFF5EE7852E00D1C8E008D8842ED1 +:101B100000D057E701232800637001F065F8B6E0B4 +:101B2000862E00D1C0E0872E00D04BE701236370E2 +:101B3000984BB7E03900280001F048FB0023FEF77E +:101B4000EEFE3900280001F01DFBF7E73900280000 +:101B500001F066F8F2E73900280001F019F9EDE725 +:101B60008D4B02225D6190238C49DB059A620868E7 +:101B70008B4A3F0202430A604A692DB2D2B2174330 +:101B80004F61002D01DA01229A62C046C04601224F +:101B90009A6192189A610B68824A13400B60CDE7F4 +:101BA0003900280001F0C4F8C8E73900280000F027 +:101BB000F3FFC3E73900280001F0A0FEBEE7744B35 +:101BC00090E7794B1D80B9E73900280001F05CFBF4 +:101BD000B4E73900280001F089F8AFE739002800A0 +:101BE00001F0CEFEAAE73900280001F099FEA5E732 +:101BF0003900280001F016FBA0E73900280001F0A9 +:101C000053F89BE73900280001F046F996E73900C0 +:101C1000280001F0FBF891E73900280001F026FACE +:101C20008CE73900280001F0FBF987E701219023B8 +:101C30006170DB0518685D4E30401860DA6802207C +:101C40003240DA608022D2009A62996198615248EB +:101C50004561C046C0462DB29A61002D00DA9962F6 +:101C6000C046C046C046C046C046C04690228021FD +:101C70004A4BD205C9001B69916201211B0A91617F +:101C8000A3705BE701232800637001F07DF9A07069 +:101C900054E701232800637000F0EAFFF7E701230F +:101CA00063703B4B1B78EBE7022363703E4B1B8852 +:101CB000A3701B0AE37041E73D4B9D4202D880238D +:101CC0001B021D43902700F01BFD6B1CFF339BB2D2 +:101CD0000193FF05304B314E5D613268304B00029D +:101CE0001343FF2233607369134018437061C04689 +:101CF0000823BB6200F004FD08230135BB61019B92 +:101D0000ADB29D42E6D13368264A1340336015E7F1 +:101D10009078D1789588AA23062801D9FEF7FFFD8F +:101D2000FEF710FC042A1B22264C2000FF201B4932 +:101D3000AB004A6903401F48ED00024013434B616A +:101D40009022C021D205C90053690D401A490B40A9 +:101D50001D4355610023FEF7E2FD0022280000F03C +:101D6000E7FCF7E70122F9E7280000F099FEF1E728 +:101D7000280000F06DFEEDE70123002163702800CC +:101D800000F006FDA070E5E7AAFA000055F5000096 +:101D90008C040020A3040020000800480004004830 +:101DA00000005555FFFFAAAA36040020FFEFFFFFF1 +:101DB000FF1F000003FF0000FFF900000121617018 +:101DC000DDE790789388002829D0012844D1D17884 +:101DD000CB4A5361C022D2019B18CA4A9BB293429C +:101DE00002D89023DB059862C74BC84A18680902DD +:101DF00002431A605A69D2B20A435A6190220821FA +:101E0000D2059162C046C046C046916107399161D2 +:101E10001A68BF490A401A600023FEF780FD0121BD +:101E2000B74A6170536190220420D2059062C020AD +:101E3000C0011B18B3489BB2834200D89162C046D0 +:101E4000C046C046C0460121AF4B1B6991611B0AC9 +:101E500003319161A370DFE7AF23FEF760FD957852 +:101E6000022D0CD0032D2BD0002D33D10223637013 +:101E700001F0ACFCA070000AE070FFF7B4FB95889D +:101E8000A44BD0781D80A44BA44A18709C4B000230 +:101E900019680A439C491A600E689C4A32430A60DA +:101EA0005D614A69D2B202434A6190220121D205A2 +:101EB00091621A689A490A401A600025FFF793FB5D +:101EC00090230122DB059A618F4A914913680B40E8 +:101ED0001360F2E7B025FFF786FB91780023012914 +:101EE00001D1FEF71CFD99421FD0B133022901D068 +:101EF000FEF715FD84210125938881481943426925 +:101F00004161814992B28D618D62426104228021DA +:101F1000134090220902D205002B03D091610023C7 +:101F2000FEF7FDFC9162FEF7FAFC01236370A93312 +:101F3000A3700B00FEF7F3FC9078938804282BD84D +:101F4000FEF700FB182A03080C00764A13800023D2 +:101F5000FEF7E5FC180001F0B9F9F8E7902302223A +:101F6000DB059A61C046C046C046C046C046013A3D +:101F70009A61ECE7902202230421D20563709162FA +:101F8000C046C046C046C0465D4B1B699161A37008 +:101F90009BB21B0AE370DAE7B223FEF7C0FC957828 +:101FA000D0789188112D7ED007D8012D4FD0002DEB +:101FB0000DD0022D5DD0822646E0212D67D0222D46 +:101FC0006CD0122DF7D10223102063706EE0012730 +:101FD000554B04261B7810209F40FA43534B019227 +:101FE0001D68AF626B6813406B6000F07EFBAF61F1 +:101FF0006B683B436B60FA20400000F076FBFA20F0 +:10200000AF626B68019A400013406B6000F06DFB9B +:10201000AF616B68013E3B43B6B26B60002EEAD104 +:102020000436FA2000F061FBAF626B68019AFA2077 +:1020300013406B6000F059FBAF616B68013E3B439E +:10204000B6B26B60002EECD12670FFF7CDFA364A9F +:10205000364B12781E689540B56273681020AB430A +:10206000736000F042FBB56173682B437360002618 +:10207000EAE701232C4A637012782D4993402B4ADA +:102080009BB21268002002F01BFBA070EFE7012357 +:1020900002000020637001F09BFCF6E701230200C0 +:1020A00063701020F7E702230020637001F0EAFC60 +:1020B0006080DCE79078D1780138938808285AD876 +:1020C000FEF740FA050D150B3C593F454F00194BE3 +:1020D0001B78A3700123637006E0174BF8E7154ADD +:1020E00013708322144B1A700023FEF718FC114A58 +:1020F000114D137083232B7001F052FA2B78E8E70F +:1021000000080048FF1F000000040048000055556B +:10211000FFFFAAAA8A0400208804002055555555BF +:10212000AAAAAAAAA0040020100700200C070020D9 +:1021300004000200C4040020E6040020C14A137019 +:10214000D2E7C14A535452181B0A5370CCE70023FC +:10215000BD4A5218D05CE11801338870082BF9D1C0 +:10216000B9E70223B8499A1E8A5CE2540133222B54 +:10217000F9D1023BAFE78723FEF7D1FB9078D57802 +:10218000023891888A230A2801D9FEF7C8FBFEF796 +:10219000D9F9060B11161D24303C41495000AB4BB8 +:1021A00019800023FEF7BBFBA84B1B881B040B43C5 +:1021B0009847F6E7FEF7DCFA0300FEF7B0FBA44809 +:1021C00003689AB20B0413430360EAE7A04A13685A +:1021D0001B0C1B040B431360E3E7042363709C4B4D +:1021E0001B681A0AA370E2701A0C1B0E227163712D +:1021F000D7E70223964A637012684B00D3181A88F7 +:10220000A2701B881B0AE370CBE7914B6D001B6823 +:10221000E952C6E78E4A4B001168CB1813600222C0 +:102220006270ECE78A4B6D001A6855191D602980B1 +:10223000B7E7012363700233A370B2E78823FEF788 +:102240006EFB93789188022B09D0032B0ED0012BC3 +:1022500010D1804A090411600023FEF760FB7D4A1B +:1022600013681B0C1B040B431360F5E70122794B29 +:102270001A60F1E78323FEF752FB91780B00303BA5 +:102280002F2B1AD8D078032814D8FEF75BF916182C +:102290000211714B512900D17DE028D8312957D046 +:1022A0000FD8002937D030294BD0B423FEF737FBA5 +:1022B0006A4BEFE7B523FEF732FB694BEAE7694B60 +:1022C000E8E7332952D04AD35029EED1C022D200B8 +:1022D00022801A7AA270DA78E2705A7A22719A7A97 +:1022E00062719A78A2715B7CE371FFF77DF97F29B7 +:1022F00000D984E070295DD260293CD0612943D0A7 +:102300005229D2D180221B889200A3701B0A2280FE +:10231000E370FFF769F9FF22534BCA5401311029CA +:10232000FBD101234E4A5B4253804E4A53804A4AB6 +:1023300053804A4A538001224C4B1A700023FEF707 +:10234000EEFA9288110AD9721A730023FEF7E7FA9F +:102350009288110A59739A730023FEF7E0FA928863 +:10236000110AD9731A740023FEF7D9FA92885A74A5 +:102370000023FEF7D4FA80235B00238093883A4A37 +:10238000D35CA370FFF730F980235B002380384BC8 +:102390001B68DB78F5E7C022D2002280DA7AA270CF +:1023A0001A7BE2705A7B22719A7B6271DA7BA2718E +:1023B0001B7C99E72A4B15785C682D4B1868C3780D +:1023C0007F2D00D9B5E02B4D009E2E70002B0FD035 +:1023D00000250095982B00D1B1E004E00025009580 +:1023E000D02B00D1ABE0214B10351D70FF2304E052 +:1023F000214B18609023C3706F3300939FE0072038 +:10240000084003281AD8FEF79DF8393B0217124BF3 +:10241000802901D2FFF7E8F8872933D97031C9B292 +:10242000072901D9FFF7E0F800212170D1789972CE +:1024300092881A80FFF7D8F8084BE9E7B523FEF732 +:102440006EFAC046E5040020C504002034040020D4 +:10245000300400209C04002060040020740400204C +:10246000380400204C040020E7040020A4040020CD +:102470009004002098040020940400203C4BC7E7FF +:102480003C4BC5E79088D178C6B28D19BE22102D7D +:102490002CDC0432002929D0DD78033AFF2D25D128 +:1024A0009D780132FF2D21D10022D7B28F4220D357 +:1024B000314D0022AC464F01013F1F727701000AE7 +:1024C00067449870DA705A729A721A80DA721A73C4 +:1024D0005A739A73DA731A745A745F60274B9D1992 +:1024E000A8540132D3B28B42FAD300222270FFF7F4 +:1024F0007BF80132B718214D013FEF5DFF2FD4D09B +:10250000C122F3E79378002B04D0402B08D0D223CC +:10251000FEF705FA23709288194B1A70FFF764F8DA +:1025200080235B002380164B1B782AE78023FEF76D +:10253000F6F9D82B00D051E780234468C3700023FC +:102540004372C378902B01D0FFF74EF8712901D068 +:10255000FFF74AF80B4B91881B6858680170928806 +:102560005968120A4A705A7A02325A72FFF73CF8D6 +:10257000380400204C040020F8040020E704002068 +:10258000A404002094040020F0B5194D040005A80F +:10259000067868690902C0B2084368619020042186 +:1025A000C00581622900002A01D101328262FF2523 +:1025B00000204A692D022A401A430E4F4A61C04644 +:1025C000C046C046C0463A690133120A22544A69DD +:1025D000DBB22A4001301A43C0B24A61B042EED9A0 +:1025E00090230422DB059A61033A9A61F0BDC0464C +:1025F0000008004800040048F0B5184C0500606968 +:102600000E02C0B23043606180269020F600C00503 +:1026100049B28661002901DA01218162FF266169E0 +:102620003602314011436161C04600200C4FC04664 +:10263000C04639690132090A29546169D2B2314070 +:1026400001301143C0B261619842F0D990238022D9 +:10265000DB05D2009A6201229A61F0BD00080048B1 +:1026600000040048F0B5174C05000E0060691F29F2 +:1026700025D8802131430902C0B201436161902114 +:102680000420FF26C9058862616936023140114382 +:102690006161C04600200C4FC04639690132090A09 +:1026A00029546169D2B2314001301143C0B2616135 +:1026B0009842F1D990230422DB059A61F0BDC0B2A3 +:1026C0000902DAE70008004800040048002302007D +:1026D0000002002A04D1002B01D080231843704748 +:1026E000DB43511EDBB20A40F3E70023800080B2D7 +:1026F000C046C04601339BB29842F9D17047FFFFF4 +:1027000030B50722012409490868450D43086B408C +:102710004340C50FDBB26B40013A23404000D2B2C8 +:102720001843002AF1D10860C0B230BD9C040020DB +:10273000134B10B55861134B13481C680902204312 +:1027400018605869C0B20143596190210820C90539 +:102750008862002A01D101328A62C046C046C04662 +:10276000C046C046C046C046C04690220821D20599 +:102770009161073991611A6804490A401A6010BDD5 +:10278000000800480004004800005555FFFFAAAAB1 +:102790000F4B58619023DB05002901D101229A6279 +:1027A00004229A62C046C046C046C046C046C046E3 +:1027B000C046C046C046C046C046C046C0460549A1 +:1027C00008699A61000A033AC0B29A617047C0462C +:1027D0000008004800040048F7B504000E004D7AD8 +:1027E000C046C046C046C046C046C046C046C046B9 +:1027F000C0460022AA215848FFF79AFF002255211F +:102800005648FFF795FF2402002220215248FFF787 +:102810008FFF23B20193EBB20093337AAB4216D20F +:102820008020009B0022737290210002FFF780FF3E +:102830000022802011000002FFF77AFF8020002292 +:10284000F0210002FFF774FFC0460020FEBD444B9C +:10285000444A196808200A43FF211A605A690A404D +:10286000A02109020A435A6190220121D2059062F7 +:102870009162C046C046C046C046FF249061916147 +:102880001A6839492C400A401A60019B009A1C437F +:102890007368A4B2995C20000022FFF749FFC0468C +:1028A000C046C046C046C046C046C046C046C046F8 +:1028B000C04600212000FFF76BFF0700C046C0465E +:1028C000C046C046C046C046C046C046C046736803 +:1028D000009A9B5C834217D0C046C046C046C046A3 +:1028E000C046C046C046C046C04600212000FFF793 +:1028F0004FFFB8420BD1C046C046C046C046C04696 +:10290000C046C046C046C0460135ADB283E7C046AA +:10291000C046C046C046C046C046C046C046C04687 +:10292000C046C046C046C046C046C046C046C04677 +:10293000C046C046C046C046C046C046C046C04667 +:10294000C046C046C046C046C04600212000FFF732 +:102950001FFF0700C9E7C046AA8A0000558500008E +:102960000004004800005555FFFFAAAAF7B50F0064 +:1029700003024D7A00933B7AECB2AB4202D27C72F6 +:102980000020FEBD0022AA211B48FFF7D1FE002235 +:1029900055211A48FFF7CCFE009BEEB21E430022E1 +:1029A00025213000FFF7C4FE00221F213000FFF771 +:1029B000BFFE2300203301937B680022195D009B3A +:1029C000181980B2FFF7B4FE019B0134A342F3D182 +:1029D000002229213000FFF7ABFE00210098FFF70D +:1029E000D7FE002104000098FFF7D2FEC0468442C3 +:1029F000F3D12035ADB2BEE7AA8A000055850000AC +:102A000070B504000D000022AA210F48FFF790FEC8 +:102A1000002255210D48FFF78BFE0022A0210A4815 +:102A2000FFF786FE002229002000FFF781FE00212B +:102A30002000FFF7ADFE0500C04600212000FFF793 +:102A4000A7FEA842F3D170BDAA8A000055850000F8 +:102A500070B504000D000022AA210F48FFF768FEA0 +:102A6000002255210D48FFF763FE0022A0210A48ED +:102A7000FFF75EFE002229002000FFF759FE00212B +:102A80002000FFF785FE0500C04600212000FFF76B +:102A90007FFEA842F3D170BDAA8A000055850000D0 +:102AA00070B504000D000022AA210F48FFF740FE78 +:102AB000002255210D48FFF73BFE0022A0210A48C5 +:102AC000FFF736FE002229002000FFF731FE00212B +:102AD0002000FFF75DFE0500C04600212000FFF743 +:102AE00057FEA842F3D170BD55550000AA2A000038 +:102AF000C90152080A43FF21F0B585B00293234B68 +:102B00000500586912B209021140C0B20143902475 +:102B100059610121E405A1620331A162FF213F2631 +:102B200058690902D2B2084010435861B4460020E7 +:102B3000174F01930391C046C046C046C046C046E9 +:102B4000C046C046C0466346396926698908F6080A +:102B50009E431940314329543E69411C019BC9B22F +:102B6000360A6E545969039B01321940D2B2019B57 +:102B7000114359610230029BC0B28342DBD204236D +:102B8000A361033BA36105B0F0BDC0460008004847 +:102B900000040048002070470F4B30B59022586168 +:102BA00080230124D205DB0093620C4B94621D68E4 +:102BB0000B480902284318605869C0B201435961A3 +:102BC000C04608219162C0469161196805480140DC +:102BD0001960946130BDC0460008004800040048F8 +:102BE00000005555FFFFAAAA0B4B10B58021586174 +:102BF000902301220424DB05C90099619A629C623A +:102C0000C046C046C046054800699C61000A9962FA +:102C1000C0B29A6110BDC0460008004800040048D8 +:102C20000E4B984202D880231B0218430C4B0D4ACE +:102C300058610D4B0902186802431A605A69D2B2F2 +:102C400011435961C04690220821D2059162C046C5 +:102C500091611A6805490A401A607047FF1F000019 +:102C6000000800480000555500040048FFFFAAAACC +:102C70000A4B984202D880231B021843084B0422B7 +:102C800058619023DB059A62C046C046C046C046E4 +:102C9000044908699A61000AC0B27047FF1F00002A +:102CA000000800480004004870B504000D000D48FD +:102CB000AA21FFF7B5FF55210B48FFF7B1FFA0216F +:102CC0000848FFF7ADFF29002000FFF7A9FF20000B +:102CD000FFF7CEFF0500C0462000FFF7C9FFA8425E +:102CE000F5D170BD55150000AA1A000070B504009A +:102CF0000D000D48AA21FFF793FF55210B48FFF760 +:102D00008FFFA0210848FFF78BFF29002000FFF765 +:102D100087FF2000FFF7ACFF0500C0462000FFF74B +:102D2000A7FFA842F5D170BD55150000AA0A000002 +:102D300030B580239024DB00E405A361104B114AD9 +:102D400058610223A362104B09021D6800B22A4396 +:102D50001A605A69D2B211435961002801DA01217F +:102D6000A162C046C0460121A1614918A16119684C +:102D70000648014019608023DB00A36230BDC046D5 +:102D8000000800480000555500040048FFFFAAAAAB +:102D90009023DB0530B51C68174D09022C401C60E0 +:102DA000DA68164C2A40DA60154A506102229A62AB +:102DB000144A00B215682C4314605469E4B22143EC +:102DC0005161002801DA012199628021C9009961CD +:102DD000C046C046C046C046C046C046C046C046C3 +:102DE000C0469962012199614918996113680649A1 +:102DF0000B40136030BDC046FFEFFFFF000055558C +:102E00000008004800040048FFFFAAAAF7B5050023 +:102E10001C4B01911E781C4B74001F8820213C190B +:102E2000A4B22000FFF7B4FFAA211848FFF7F8FE6C +:102E3000A01B80B21021FFF7ABFF55211448FFF70C +:102E4000EFFE20212000FFF7A3FFA0210F48FFF78E +:102E5000E7FE104B187846430101BE19C9B2B0B263 +:102E6000FFF796FF01992800FFF7DAFE2800FFF729 +:102E7000FFFE0400C0462800FFF7FAFEA042F5D18D +:102E8000F7BDC046A30400203604002055150000FD +:102E9000AA0A00008C04002070B50400B0200E00C7 +:102EA00000020A21FFF774FFC0200A210002FFF789 +:102EB0006FFFAA211248FFF7B3FE55211148FFF713 +:102EC000AFFEA0210E48FFF7ABFEB0200E4B000274 +:102ED0001D782900FFF75CFFC02029000002FFF7E2 +:102EE00057FF31002000FFF79BFE2000FFF7C0FED8 +:102EF0000500C0462000FFF7BBFEA842F5D170BD1B +:102F000055150000AA0A00008C040020F8B5050041 +:102F10000E00194B02211C88A71CBFB23800FFF716 +:102F200037FFAA211548FFF77BFE601C80B2012104 +:102F3000FFF72EFF55211248FFF772FE02213800DD +:102F4000FFF726FFA0210D48FFF76AFE0D4B197809 +:102F50006418A0B2FFF71CFF31002800FFF760FEE5 +:102F60002800FFF785FE0400C0462800FFF780FE1A +:102F7000A042F5D1F8BDC04636040020551500002A +:102F8000AA0A00008C0400200B4B5861902300B269 +:102F9000DB05002801DA01229A628022D2009A61C0 +:102FA000C046C046C046C046044908699A6201222C +:102FB000000AC0B29A617047000800480004004847 +:102FC00070B504000D00A021FFF7B2FE290020001B +:102FD000FFF7AEFE2000FFF7D7FF0500C046200038 +:102FE000FFF7D2FFA842F5D170BD70B50400A02054 +:102FF0000D00C0015421FFF7CBFEA0212000FFF7F8 +:1030000097FE29002000FFF793FE2000FFF7BCFF8A +:103010000500C0462000FFF7B7FFA842F5D170BDFC +:1030200070B50400A0200D000D4BC0011978FFF70A +:10303000AFFEAA210B48FFF7ABFE55210A48FFF768 +:10304000A7FEA0210748FFF7A3FE29002000FFF7F5 +:103050009FFE2000FFF798FFA842FAD170BDC0463E +:103060008C04002055D50000AAAA000070B5040009 +:10307000C0200D0000020121FFF78AFEAA21154899 +:10308000FFF786FEC02000210002FFF781FE5521D8 +:103090001148FFF77DFEC02001210002FFF778FEF6 +:1030A000A0210C48FFF774FEC0200C4B00021978D9 +:1030B000FFF76EFE29002000FFF76AFE2000FFF7F1 +:1030C00063FF0500C0462000FFF75EFFA842F5D170 +:1030D00070BDC04655950000AAAA00008C040020CF +:1030E00070B504000D001048AA21FFF751FE5521CC +:1030F0000E48FFF74DFEA0210B48FFF749FE2900BF +:103100002000FFF745FEA020094B00021978FFF7C9 +:103110003FFE2000FFF738FF0500C0462000FFF704 +:1031200033FFA842F5D170BD55D50000AAEA0000D2 +:103130008C04002070B504000D001048AA21FFF790 +:1031400027FE55210E48FFF723FEA0210B48FFF76D +:103150001FFE29002000FFF71BFE80200221000235 +:10316000FFF716FE2000FFF70FFF0500C046200006 +:10317000FFF70AFFA842F5D170BDC04655D5000043 +:10318000AAAA00000D4B0E4A58610E4B090218689E +:1031900002431A605A69D2B21143902259618021C8 +:1031A000D20510684901014311604021916291618B +:1031B0001A6805490A401A607047C046000800486E +:1031C0000000555500040048FFFFAAAA104B114A01 +:1031D00010B558611068104B09020343136053691E +:1031E0000E4CDBB21943902351618021DB05186836 +:1031F0004901084318604020986218682040186010 +:10320000D8680143D960136805490B40136010BDAD +:10321000000800480004004800005555FFEFFFFF7C +:10322000FFFFAAAA70B505000E00134B00211C88F1 +:103230002000FFF7ADFDAA211048FFF7C7FF552179 +:103240000F48FFF7C3FFA0210C48FFF7BFFF0D4B4E +:1032500019786418A0B2FFF79BFD31002800FFF732 +:10326000B5FF2800FFF790FE0400C0462800FFF7D6 +:103270008BFEA042F5D170BD3604002055550000EC +:10328000AA2A00008C04002070B504000D000D482F +:10329000AA21FFF79BFF55210B48FFF797FFA021BD +:1032A0000848FFF793FF29002000FFF78FFF200059 +:1032B000FFF76AFE0500C0462000FFF765FEA84242 +:1032C000F5D170BD55550000AA2A0000902270B5B6 +:1032D0000225D2059561C046C046C046C046C046DC +:1032E000C04601240D4B94611E680D49314319609D +:1032F0000C4909885961C04695625861C04694627C +:103300001A6809490A401A60C046C046C046C0460D +:10331000C046C046C046C04670BDC0460008004812 +:1033200055555555A0040020AAAAAAAAF0B58BB0FD +:103330000992012208911100354B02901F78354BFC +:103340001B780493344B1D68344B1B789940344BE5 +:1033500001911868334BA9621B789A40029B102B8D +:103360004FD18262012421002F4B05941B680693E4 +:103370002E4B1B7899408BB2210007932C4B1B6876 +:103380009C462C4B1B789940002303911900029C0A +:10339000202C05D1049E059C1E41264236D0826118 +:1033A000089C202C0FD1002B01D11A4C6354069C91 +:1033B0002669079C264206D0164C665C059C9C40FC +:1033C0002643144C6654099C013FFFB2002C03D0E5 +:1033D000002F01D1019CAC616446039E0133DBB236 +:1033E000A661A662082B05D101310A4BC9B25B5C0C +:1033F00004930023002FCAD1019B8262AB620BB001 +:10340000F0BD029B112BADD18261ABE78262C7E7B1 +:10341000E5040020C50400202C0700203007002010 +:103420001C07002020070020240700202807002078 +:103430001407002018070020F7B501221A4B1C784A +:103440001A4B19681A4B1B789A40102826D18A62A9 +:1034500001263500174B01961B680093164B1B780D +:103460009D400023AC461D0020280DD1134E019F26 +:10347000765D1E413E4215D08A610133DBB2082BD6 +:1034800002D100230135EDB26646009F013CE4B253 +:10349000BE61BE62002CE7D18A62F7BD1128D7D188 +:1034A0008A61D5E78A62E8E7E50400202C0700205E +:1034B000300700201407002018070020C504002052 +:1034C000F0B52C4B85B01B78019301231E00019AA7 +:1034D0001F009640284A1168284A8E62127802928C +:1034E0001A000298824094466046254A126890620B +:1034F000244805782448AF4000689D4087620468EE +:1035000003941C00AC402500039C254305604568DE +:10351000019CBD4345609C401D00A54008681C00FF +:10352000284308604868B043486010680299994091 +:103530008C4021000143604611605168814313486B +:1035400051600078124A984083401268116899438C +:103550001160D1680B43D360002319000D4A13702A +:103560000D4A99540133202BFBD180220B4B1A704A +:1035700005B0F0BD300700202C07002020070020F8 +:103580001C0700201807002014070020280700202F +:1035900024070020E5040020C5040020E6040020E4 +:1035A00010B52B4B1B78082B4ED013D8294C032B6E +:1035B00039D006D8012B28D0022B2AD0254BEE2259 +:1035C0003AE0062B3AD03DD8042BF7D10122202136 +:1035D000112021E00F2B28D008D81E4C0D2B1FD016 +:1035E00000220E2BEAD12021102015E0802B06D0DE +:1035F000184CFF2B06D0102BE0D100221FE0FFF764 +:103600005FFF10BDF0232370FBE72020FFF714FFBE +:1036100004E0012200212020FFF788FE8223F2E748 +:1036200000221100F7E70122DDE70022202111200E +:10363000FFF77CFE8222074B1A70E2E7012220216D +:103640000800E9E71020E1E71120FFF7F5FEF1E7B8 +:10365000C4040020E6040020BC224D4BD203996A2A +:10366000F0B50A439A629A6A4A490A409A62B022BD +:10367000596952030A435A6119009023464ADB05EF +:103680001278102A03D100221A609A60DA601A6850 +:103690004248012402401A608022D868D2010243C5 +:1036A000DA601A683E483F4F02401A608022D868AC +:1036B000520302430420DA601A68A2431A60DA68EF +:1036C0002243DA601A6882431A60DA680243DA60D9 +:1036D00010221D6895431D60DD682A43DA60402290 +:1036E0001D6895431D60DD682A43DA601A682E4D17 +:1036F0002A401A608022DD68D2042A43DA601A6800 +:103700002A4D2A401A608022DD68D2052A43DA60F9 +:103710001A68274D2A4080251A60DA68ED022A438C +:10372000DA60244A1668A6431660D6683443D4602B +:103730001E683E401E60DC683C40DC6080234C69B3 +:103740001B0323434B611C4B1C4C1E681C4F264320 +:103750001E601E683E401E60DE683443DC604B69BC +:103760001D434D611368174D2B401360D468164BF1 +:103770001C43D460116829401160D1680B43D360A9 +:10378000136883431360D3681843D060F0BDC0460C +:1037900000100240FFFFA1FF08070020FFBFFFFF4E +:1037A000FFFFEFFFFFEFFFFFFFFFFFFBFFFFFFBF8D +:1037B000FFFFFBFF00040048000800485555555521 +:1037C000AAAAAAAAFFFFAAAA000055550D480E4AA8 +:1037D000038810B50D49934202D10A7801320A706C +:1037E00090220424D205013394620380084B1869A7 +:1037F0009461084C0B7862691B02D2B2134380B209 +:10380000636110BD8A040020FFFF000088040020CF +:103810000008004800040048F7B50D000427019295 +:103820004C7A000203B2A6B200932B7AB34202D2C2 +:103830006C720020FEBD00986B682043195D80B259 +:10384000019B98476B681A5D094B824205D01A6844 +:103850003A431A6002229A61E7E71A680134BA43D0 +:103860001A60DA6801363A43DA60E4B2B6B2DCE7ED +:1038700000040048F7B50D001600FF27000203B250 +:103880004C7A01932A7AE3B2A24202D26B720020F0 +:10389000FEBD20006A683840D15C019B01341843AA +:1038A00080B2B047A4B2EDE7022907D10F4B104A0E +:1038B000984218D0904209D1180007E0032906D198 +:1038C0000A4B0B490B4A98420BD108007047042958 +:1038D000FCD1064B064A984205D006499042F4D0E6 +:1038E000054A8842E6D11000F0E7C04638040020BF +:1038F0004C040020600400207404002070B5060011 +:103900000D0005243000013CFFF73EFBE4B2290026 +:103910003000FFF73DFA6D08002CF3D170BDFFFFBA +:1039200070B50400A0200D0000020221FFF7E6FFA1 +:10393000AA211048FFF774F955210F48FFF770F9D5 +:10394000A0210C48FFF76CF9A0200C4B000219785D +:10395000FFF7D4FF29002000FFF762F92000FFF7EE +:1039600087F90500C0462000FFF782F9A842F5D18B +:1039700070BDC04655150000AA0A00008C04002046 +:1039800070B50400C0200D0000020521FFF7B6FF4E +:10399000AA210D48FFF7FCF955210C48FFF7F8F96B +:1039A000A0210948FFF7F4F929002000FFF7F0F9FA +:1039B0002000FFF7E9FA0500C0462000FFF7E4FA0F +:1039C000A842F5D170BDC04655550000AAAA000016 +:1039D000F7B501230225294F01923A78009105435A +:1039E00093400421A020264E2D049BB22943326827 +:1039F000C00100F065FE040001283DD13B7809209C +:103A00009C4005437830A3B232682900FF3000F0B3 +:103A100057FE040001282FD13B7832689C402900D2 +:103A2000A3B2002000F04CFE0400012824D1009B2A +:103A3000180AFEF74BFE3B7832689C402900A3B27F +:103A400000F03EFE0400012816D16B461878FEF700 +:103A50003DFE22003B7829009A4093B2326800F084 +:103A60002FFE0198FEF732FE3B7832689C40290019 +:103A7000A3B200F025FE0400E0B2FEBD1007002056 +:103A80000C070020F7B501230225274F00903A7854 +:103A90000191054393400421C020244E2D049BB284 +:103AA00029433268800100F00BFE0400012838D160 +:103AB00009231D433B78C0209C403268A3B22900F3 +:103AC000400000F0FDFD040001282AD13B78326857 +:103AD0009C402900A3B2002000F0F2FD0400012860 +:103AE0001FD1019B180AFEF7F1FD3B7832689C401C +:103AF0002900A3B200F0E4FD0400012811D16B46B7 +:103B00001879FEF7E3FD22003B789A4093B2009AC1 +:103B100014430922E1B209041143326800F0D0FDD8 +:103B20000400A0B2FEBDC046100700200C07002014 +:103B3000C64BC74AF0B51A60C64A8BB01A6002225B +:103B40005A60A02212019A600493049BDB68002B48 +:103B5000FBD19022049BC04912031960BF4B186827 +:103B600002431A6080220991920219681142FCD026 +:103B7000012259680A435A608022596852020A4356 +:103B80005A608022596852030A435A608022196899 +:103B900052040A431A608022920419681142FCD030 +:103BA0001121AF4AAF4C11605A680E398A43110097 +:103BB00002220A435A608022196B0A431A63802248 +:103BC000D96912040A43DA61A74BE381BC231B685D +:103BD0009847A64B6382A64B238262B6FFF73CFD53 +:103BE000F022A44B1A70049B099AA34E1A603278F3 +:103BF000202311009943D2291BD1A049A048C9789C +:103C0000C3780224FF2904D1FF3B1C00631E9C41A2 +:103C1000E4B29C4BDB78FF2B00D003249A4BDB787B +:103C2000FF2B00D00424994B994F1C703860D22A86 +:103C300058D03378F22B05D10022023B3370944BDD +:103C40001B68DA703578D02D00D04FE2904E306886 +:103C5000C378802B00D049E28C4B1978FFF724FE03 +:103C600000233060C570068804004372C07AF5B244 +:103C70001038222800D937E2FCF77EFCA301C501E9 +:103C800006020A02360236023602360236023602D0 +:103C900036023602360236023602360237008C0011 +:103CA000DF00E40010011A0121015D0173017B01B5 +:103CB00036023602360236023602360282019A0097 +:103CC00044002100FFF7F0FD01230135EDB2A542CC +:103CD000F7D3002B00D0386080223B68DA70D02305 +:103CE0003370A6E700230125F1E7E17B0F2900D916 +:103CF0001DE209013143237AA278C9B26068FEF758 +:103D00007BFC53E0E17B0F2900D910E263680901D5 +:103D10009C46237AA27802935E4B0E4376B2596991 +:103D2000F0B2C9B20002014359611F00002E03DA4C +:103D300090210120C9058862FF2559692D0229407B +:103D400011435961C046902080260023C005F6002B +:103D500005958661C046C046C046C046C046C046BE +:103D6000C046C046C04665464B4901320969D2B2D9 +:103D7000090AE95486627969059D01332940114396 +:103D800079610299DBB29942E3D2012286628261B3 +:103D90006372DDE03C23E17B0A009A4300D0C6E178 +:103DA000237AA27829436068FEF75CFC6072CFE05A +:103DB000E17B3C230A009A4300D0B8E163682943C1 +:103DC0009C46237AA5780293324B5A691F292FD833 +:103DD000802001430902D2B20A435A61FF27902191 +:103DE00004265A693F023A40C9052A435A618E6245 +:103DF0008E61C046C046C046002205978E62C0460E +:103E0000C046C0466746244801350069EDB2000A45 +:103E1000B8545869059F3840284358618E61C046A0 +:103E2000C04601320298D2B29042E7D262728FE06D +:103E3000D2B2090211435961D0E7237AA278E17B1B +:103E400029435BE7E17B3F23A6E7C0460030004003 +:103E5000CCCC000055550000AAAA0000001002407A +:103E600000200240006000403CA5FFFF4108000820 +:103E700085080008E6040020A40400204C0400206B +:103E8000380400206004002074040020A2040020F4 +:103E9000900400200008004800040048227AE17BDA +:103EA000A3780092002229436068FEF76DFB7DE74E +:103EB000E17B227AA378294300920122F4E79D4B0B +:103EC000E17B586929430E02C0B230436568A2788D +:103ED000277A5861902004266031C005C9B28662F5 +:103EE0001E001F2901D801218162FF2059690002AB +:103EF000014011435961C0468F4900238C46C0469A +:103F0000C046C046C046C046C046C0466146096974 +:103F10000132090AE9547169D2B2014001331143F7 +:103F2000DBB271619F42EAD290220421D2059161F5 +:103F3000033991612CE70025267A67687608FFF738 +:103F400045FC0135EDB238800237AE42F7D26572DA +:103F50007A4B1B6819889A7A52181A80D822DA701C +:103F6000C4E0E17B237AA27829436068FEF7C0FDB4 +:103F70001CE7E17B237A29430131A278FF31F4E782 +:103F8000A3786668277A002B02D12802FFF79EF9F2 +:103F9000684A9020002304259446C0058562C046E7 +:103FA000C046C046C0466246116985618AB2120A9F +:103FB000F2545A1C0233D2B2DBB2B1549F42EDD25A +:103FC000E6E6E37B1E2B0BD1C020B6092233F1B20B +:103FD00000029D43FEF7DCFE237AA27880212FE7C2 +:103FE0001C2BB5D1A0208121C001FEF7D1FE80207D +:103FF000F609F1B20002FEF7CBFEA0200021C001BD +:10400000FEF7C6FEA4E7E37BFE2BA1D17609F1B251 +:104010004B48FEF705FE1F21636829409C46454B2F +:1040200009025A69A678D2B20A43277A80215A61D6 +:104030009022C900D20591610121FF2091620331D4 +:1040400091625A690002024032435A61C04600221E +:10405000394D0290C046604629690136090A8154EB +:1040600059690298F6B2014001323143D2B2596126 +:104070009742EFD290230421DB0599618021C9008A +:10408000996201219961D1E6237AA2786021D7E66D +:10409000E37B002B20D18033F6091D43F3B2039359 +:1040A000FF20039B24499B004A69034025480240A6 +:1040B00013434B61C0209021039BC905C000DB0066 +:1040C0004A6903402048024013434B61227AA37897 +:1040D000290000920022E7E6012BE1D1402176047D +:1040E000760E31430391DBE7C323E370174B1D7852 +:1040F000F02D00D0C5E2114E3468E378982B00D043 +:10410000BFE2134B20001978FFF7CEFB002330608D +:10411000C370E07AE57010382678042800D9AEE242 +:10412000FCF72AFA180052011F022702E600C423F6 +:10413000DBE7C04600080048000400489004002067 +:10414000FF3F000003FF0000FFF90000A40400206F +:10415000A2040020E37B002B06D130008038C0B2DF +:10416000DD4A2100FFF758FBE37B012B06D130002D +:104170008038C0B2D94A2100FFF77CFBE37B022BD9 +:1041800006D130008038C0B2D54A2100FFF772FB5B +:10419000E37B042B06D130008038C0B2D14A210025 +:1041A000FFF73AFBE37BFC2B06D130008038C0B22E +:1041B000CD4A2100FFF730FBE37B0A2B06D130000C +:1041C0008038C0B2C94A2100FFF726FBE37BFD2BF4 +:1041D00015D13F20238830409B0905936B468026EC +:1041E0001B7D06430793677ABBB2029333021BB26F +:1041F0000893237A029A934200D380E06772E37BAC +:104200001E2B06D130008038C0B2B94A2100FFF71A +:1042100003FBE37B0C2B17D11F2030408026064385 +:10422000C0202588A5216D09EDB2C001FEF7B0FDC3 +:104230002900B048FEF7ACFD677A35023D43237A8A +:10424000BB4200D3A3E06772E37B1C2B21D1AA21E0 +:10425000A948FEF76DFD5521A848FEF769FD20210C +:10426000A548FEF765FD30008038A54A2100C0B2A0 +:10427000FFF7D2FA802090210002FEF759FD80203E +:1042800000210002FEF754FD8020F0210002FEF71D +:104290004FFDE37B1F2B21D1AA219A48FEF748FD51 +:1042A00055219948FEF744FD20219648FEF740FD30 +:1042B00030007038954A2100C0B2FFF7ADFA902067 +:1042C00090210002FEF734FD902000210002FEF74D +:1042D0002FFD9020F0210002FEF72AFDE37B6F2BDB +:1042E00006D130008038C0B2894A2100FFF794FA25 +:1042F000F4232288E370A37A9B182380C1E1002174 +:104300008448FEF745FDAA218348FEF73BFF55216F +:104310008248FEF737FFA0217F48FEF733FF6B4648 +:10432000187D7F4B0799C01880B2FEF731FD089DBC +:1043300063683D43ADB2D95D2800FEF723FFC04658 +:104340002800FEF721FE06902800FEF71DFE069BC2 +:104350008342F4D163680699DA5D724B8A420FD1C9 +:10436000029A1968013292B20292042291431960B2 +:10437000D96801370A43DA600222FFB29A6238E74D +:10438000042219680A431A6002229A6131E7AA21BD +:104390006548FEF7FDFC55216448FEF7F9FCA021B5 +:1043A0006148FEF7F5FC63682800D95DFEF7F0FC74 +:1043B000C0462800FEF7E8FD02902800FEF7E4FD65 +:1043C000029B8342F4D13AE7E37B002B04D1584AA5 +:1043D00021003000FFF74EFAE37B012B04D1554A50 +:1043E00021003000FFF746FAE37B032B04D1524A49 +:1043F00021003000FFF73EFAE37B042B04D14F4A43 +:1044000021003000FFF736FAE37B0A2B04D14C4A37 +:1044100021003000FFF72EFAE37B0B2B04D1494A31 +:1044200021003000FFF726FAE37BFE2B00D05FE788 +:10443000218845484909C9B2FEF7F2FBAA21434841 +:10444000657AFEF7A9FB55214148FEF7A5FB3F48D9 +:104450002021FEF7A1FB1F2030400302AFB20593DD +:10446000237ABB420DD2657290210020FEF794FBA7 +:1044700000210800FEF790FBF0210020FEF78CFBE6 +:1044800036E7059EA0212E433000FEF785FB6368CA +:104490003000595DFEF780FBC0463000FEF7A4FBFC +:1044A00002903000FEF7A0FB029B8342F4D16368C8 +:1044B00002995A5D1B4B8A424CD104211A6801357E +:1044C0008A431A60DA6801370A43DA600222EDB2E1 +:1044D000BFB29A62C4E7C046893200088139000839 +:1044E0002532000835310008952B0008E13000081E +:1044F0006D300008FFFF0000AA8A0000558500000B +:10450000EB2F0008AA9A000055950000C12F000863 +:104510002130000869FD000055550000AA2A00005E +:1045200069FDFFFF0004004855D50000AAAA00005D +:10453000ED2C0008213900080D2F0008A92C0008D7 +:10454000992E00080D2E0008FF3F0000AA0A000067 +:104550005505000004211A680A431A6002229A6174 +:104560007EE7300060304E4A2100C0B2FFF782F98A +:10457000BEE6E37B042B06D130008038C0B2494A46 +:104580002100FFF777F9E37B052B04D1454A210091 +:104590003000FFF76FF9E37B062B06D1300080383F +:1045A000C0B2414A2100FFF765F9E37B072B04D134 +:1045B0003D4A21003000FFF75DF9E37B0A2B06D16D +:1045C00030008038C0B2394A2100FFF725F9E37B7B +:1045D0000B2B04D1354A21003000FFF71DF9E37B96 +:1045E000082B05D130008038C0B22100FEF7BEF99B +:1045F000E37B092B03D121003000FEF7B7F9E37B01 +:10460000002B1CD1FF2280331E4323882848DB095E +:10461000DBB29D0041692A40264DDB0029400A4358 +:1046200042619022C020D205C00051690340224857 +:1046300001400B43536121003000FEF7CDF8E37BCE +:10464000012B00D054E62388194A5B04580E4023FE +:104650000343FF209B0051690340164801400B4370 +:1046600090215361C9054B69134A30001A408023D9 +:104670009B0013434B612100FEF7AEF838E6C323DD +:10468000E3700E4B1B78F02B01D1FFF7ACFA832BB4 +:1046900001D0FFF7A8FAFEF783FFFFF7A4FAC046A0 +:1046A000912D0008A12A0008512A0008012A0008BB +:1046B0000004004803FF0000FFF90000E6040020AA +:1046C000F0B5474680B4061C081C000C102801D524 +:1046D000162700E004270007000F8046FF20014056 +:1046E0005468251C1D439C43F60313850AD5C04618 +:1046F000C046C046C046C046C046C04694801383EC +:10470000958002E0012000F081F801390AD4381CBC +:1047100000F07CF8C046948013839580C046C04664 +:104720007600E2E7381C013800F070F894801383BB +:104730009580042000F06AF8108A184001D0FF200C +:1047400061E0C046C046C046C046C046C0469480F0 +:104750009580108A184055D001200226B04552D0CD +:104760000921168A1E40FCD1012000F04FF89480E8 +:10477000C0469580C04603E0C046C046C046C0461D +:10478000948095807600108A1840EFF300804000F6 +:10479000C00F0643381C023800F038F8948095802A +:1047A000022000F033F80139EAD513859480012006 +:1047B00000F02CF813839580301C8021022399404F +:1047C0000E401BD1002341085E4149085E41490863 +:1047D0005E4149085E4149085E4149085E41490819 +:1047E0005E4149085E4149085E41760808D34008A9 +:1047F000FF21084048400002013004E00E2002E0A2 +:10480000092000E0002080BCB846F0BD0138FDD191 +:104810007047C04603685A0003D45B005B08C018A9 +:104820007047802212061343F9E7C046F0B5574699 +:104830004E46DE464546E0B5814683B092460029A5 +:1048400025D04B1E9B46002701935B46FB18DC0FCF +:10485000E4184B466410E5005E193000FFF7DAFFFC +:10486000019B8046A3420BD0280008304844FFF744 +:10487000D1FFD04506D80138504509D2671CE4E77E +:10488000504505D9A74202D0631E9B46DDE70026AE +:10489000300003B03CBC90469946A246AB46F0BD02 +:1048A000012809D0022805D0002801D00020704737 +:1048B0000248FCE70248FAE70248F8E7954F00088B +:1048C000AD4F0008A14F000830B5234B83B0050061 +:1048D0008C1E002B26D001A9200000E000BF00287C +:1048E0001CD001992200FFF7A1FF041E16D0FFF78C +:1048F00091FF6368A864012B2AD0201D002B23DBC5 +:10490000FFF788FF0023E8642B650368002B0FDBAB +:10491000FFF780FF2861002003B030BD002309208D +:104920002B61F9E70D480E49091AC9100191D9E721 +:104930001801000FFFF7B4FF2861431E98410823B8 +:10494000404298430930E7E70123E8642B65DCE740 +:10495000002305202B61DFE70000000090580008CD +:1049600060590008036810B50400DA0705D4483020 +:104970009B070ED500F06CFC23685A070ED51A076A +:1049800013D5DB0604D42000D130FF3000F06CFCDE +:1049900010BD00F059FC23685A07F0D42000D03035 +:1049A00000F05AFC23681A07EBD420005130FF3086 +:1049B00000F056FC2368E4E70368002B00D01B18C6 +:1049C00018007047092070477047C04670B5040052 +:1049D0000D0008E02B6C2A0063612100012023698F +:1049E0009847082807D1296C2000FFF76DFF0028A1 +:1049F000F0D000F083FE0728FBD10020296CFFF7E0 +:104A0000E3FF281D00F00AFCF0B5CE46474680B50E +:104A1000C3682E4C9846A5448369060014000431EF +:104A2000402205A8994600F071FE002304AD0493CE +:104A300023E0F0222B6C5200736129007CA800F067 +:104A400065FE7CAA31003369200098478A9B0700E5 +:104A50006B6403934B4600950193320033002100B1 +:104A60000120C04700281FD1F0227CA95200280055 +:104A700000F04CFE0024082F1FD1296C3000FFF7F6 +:104A800023FF611E8C41070009340028D1D0AB6B95 +:104A900010216B644B462143019300953300320093 +:104AA0000120C047002800D009273800F5239B00CB +:104AB0009D440CBC90469946F0BD072FF4D12000D0 +:104AC000296CFFF781FF05A800F0A8FB2CFCFFFF75 +:104AD000406C704770B5CB6BFAB00B6404000E00ED +:104AE0004022043103A800F011FE01235B4202932F +:104AF00006E002AA210023699847050008280AD188 +:104B0000129B200019000193FFF7DEFE0028F0D071 +:104B100009207AB070BD02A8FFF724FF062DF7D157 +:104B200031002000FFF752FF10B58261DA6BC160DF +:104B30001A6419000022FFF767FF10BD436970B5C2 +:104B40000B64C36804000D00002B15D10A00236913 +:104B5000010002209847072807D0082803D1290020 +:104B60002000FFF733FF00F0C9FD0020296CFFF79C +:104B70002BFF281D00F052FB0122FFF745FF00F03C +:104B8000BDFDC046C36810B5002B05D0CB6B00221D +:104B90000B64FFF739FF10BDFFF79CFFFBE7C04632 +:104BA0007047C046836810B5002B02D00100012079 +:104BB000984710BD012906D0002906D003390220EC +:104BC000012900D970470120FCE7002B08D10F2AEA +:104BD00006D8920082185268009B00201A60F1E704 +:104BE0000220EFE700B585B003AB0A000093002177 +:104BF0000023FFF7DFFF039805B000BD012906D0B1 +:104C0000002906D003390220012900D9704701206C +:104C1000FCE7002B08D10F2A06D8009B92001B68E6 +:104C2000821853600020F1E70220EFE700B585B05D +:104C300003AB039200930A0000230021FFF7DEFF7D +:104C400005B000BD70B51A4CD36BA54413640600C3 +:104C50000D0019A8111D402200F058FD01235B42F0 +:104C6000189314E00C2118A802AAFFF7DFFF29000F +:104C700018A8B047002812D1069B18AA02A908302C +:104C800001939847040005280AD0092807D0289BDB +:104C900002A819000193FFF717FE0028E2D00924AB +:104CA00018A8FFF75FFE200090239B009D4470BD75 +:104CB000C0FDFFFFF0B5DE4657464E464546E0B51F +:104CC000160003220D0011008BB01F000193EB6C46 +:104CD00001401C1D009107A91B688B460894002FFA +:104CE0006BD01A0C1B045946079302230B72FD3339 +:104CF00013409B004A72E418009B022B00D1AC6B5E +:104D00002B6DDB0747D40023059308330340029340 +:104D10002768002F00D112E1019B022B49D0638844 +:104D2000278898460434012340469A469843AB6C42 +:104D30000F21994681443000FFF754FF002181453F +:104D400006D839005346994349448842894149422B +:104D500043465A0002231340012217403B43012BD4 +:104D60003AD0002B30D0022B1BD12368009A5F0071 +:104D70007F08002A67D1002906D0029A002A00D1B4 +:104D80007CE0002F00D1A9E0002B00DA04340137C9 +:104D9000BF00E419BCE75946300000F00BFB0028C7 +:104DA00010D009200BB03CBC90469946A246AB46B9 +:104DB000F0BD636808349846B5E71B0207935B466D +:104DC0001A8199E70820EDE7009B002B02D000290B +:104DD00000D08DE004349BE7009B002B1AD1002902 +:104DE00016D02368DF0F63689A1CDAD02A00583285 +:104DF0000692013300D1BDE0201DFFF7DDFD06ABBB +:104E000001003A00280000E000BF002800D082E046 +:104E100008347DE70D2130002F6AFFF7E3FE87425B +:104E2000F6D1AB6A9C42F3D12000FFF7F3FC0F21CF +:104E300002003000FFF7FAFE30002A000021FFF7E1 +:104E4000F5FE0720AEE72B6A0D2130009846FFF7EC +:104E5000C9FE804501D0236896E7AB6A9C42FAD12F +:104E60000023EB6204332B63231DAF626B63236863 +:104E7000002B00DA86E00123059388E7002F2DD070 +:104E800058239C46AC4463460393231D9946002354 +:104E9000984606AB220004933B004C464746B24678 +:104EA00098462E00914603E004342F00454542D039 +:104EB000039B20000693FFF77FFD049B0100002267 +:104EC00030007D1C00E000BF0028EDD04346B8460E +:104ED00035004C4656461F009845BCD10D21300088 +:104EE000FFF780FE069B28626B62AC62062059E7E2 +:104EF0002000FFF78FFC04340700AC63280000E0BB +:104F000000BF002800D14CE730003A000F21FFF726 +:104F10008DFE072046E707000D213000FFF762FEF7 +:104F20002862022F2BD1069BEB622B002C336B6285 +:104F3000AC62062036E735004C465646CEE7594669 +:104F4000300000F037FA002800D02AE7059B002B3C +:104F500000D137E70F213000FFF744FE0E21020099 +:104F60003000FFF763FE3000094A0F21FFF75EFEB5 +:104F7000072017E70D213000FFF734FE2862069B5B +:104F80006B62D5E738000130800020184DE7C0463D +:104F90000000000010B50023FFF78CFE10BDC046D6 +:104FA00010B50123FFF786FE10BDC04610B50223E1 +:104FB000FFF780FE10BDC046F0B5CE46474680B52F +:104FC0000500C3B014001E00012955D000294BD0A4 +:104FD000032922D0042949D1002B47D1102A45D8D2 +:104FE000102203681A4200D0F1E020AF380000F030 +:104FF0003DF900230120A96B02009A40144203D01E +:105000000E689A00BE5004310133042BF4D13800ED +:10501000A96300F029F9002029E0032B26D114040C +:10502000230C160C9846F318102B1FD8082203687F +:105030001A4200D098E020AF380000F013F9424641 +:10504000AB6BF6001C00002A08D0D400F21A1C1921 +:10505000BA181968D15004339C42FAD1AC633800B5 +:1050600000F0FEF8002002E0002B24D0022043B024 +:105070000CBC90469946F0BD130C14049846240CC1 +:10508000012E2ED0052EF1D11B19202BEED8424631 +:105090000F2A70D9A146002C7ED1AA6B4346AA6381 +:1050A0000F2B00D89AE04B46002BDBD0684600F06F +:1050B000D3F80020DBE700231004A96B000C0136B5 +:1050C00032009A40104204D00F689A00AA18576024 +:1050D00004310133102BF3D10020A304C7D4A963FA +:1050E000C5E71B19102BC1D843460F2BBED82B6820 +:1050F0001E4206D00322280093432B60483000F064 +:10510000A5F820AF380000F0A1F8AA6B002C24D03D +:105110004346DB00FF180023994664000023A400E7 +:10512000D158F95004339C42FAD14B4612196F46BC +:10513000002B0FD04046102800D210204B46D9003B +:1051400000231038C0003818D458C4500433994292 +:10515000FAD15218012EA1D120AF04323800AA632F +:1051600000F072F8002082E7934303605130FF3073 +:1051700000F078F85FE7102B3BD91022524291469D +:1051800099442B68194208D0022228008B4313430C +:105190002B60483000F05EF82B6804221A4221D1BF +:1051A00043460F2B03D820AF380000F053F86F466A +:1051B000380000F053F810244346AA6BE41A002C80 +:1051C000B8DD434620AFDB006400FF18A6E7934339 +:1051D0000360D130FF3000F049F806E720A800F066 +:1051E00037F860E7280093432B60D03000F036F8A2 +:1051F000D6E72B680B4207D0022228008B431343CB +:105200002B60483000F026F820AF380000F022F87C +:10521000A146AA6B002C00D07AE73FE7011C34318D +:1052200038C9043B9C461D60A646011C20313CC980 +:1052300090469946A246AB46011C0831FCC941681C +:105240000068E54600BDC0467047C0467047C0468E +:105250007047C0467047C0467047C0467047C0465A +:105260007047C0467047C0467047C0467047C0464A +:1052700001B401A801B585B0FFB408A841464A466B +:1052800053465C4665463EC001A83EC80F98009054 +:1052900000230CB401A9FFF71DFC109B12B01847A6 +:1052A00001B401A801B585B0FFB408A841464A463B +:1052B00053465C4665463EC001A83EC80F98009024 +:1052C00000230CB401A9FFF739FC109B12B018475A +:1052D00001B401A801B585B0FFB408A841464A460B +:1052E00053465C4665463EC001A83EC80F980090F4 +:1052F00000230CB401A9FFF745FC109B12B018471E +:1053000001B401A801B585B0FFB408A841464A46DA +:1053100053465C4665463EC001A83EC80F980090C3 +:1053200000230CB401ABFFF7FFFB109B12B0184732 +:1053300001B401A801B585B0FFB408A841464A46AA +:1053400053465C4665463EC001A83EC80F98009093 +:1053500000230CB401AAFFF775FC109B12B018478C +:10536000027A0300002A0BD1427A002A0FD0013AB8 +:1053700042724268111D416003211268017202E00D +:10538000013A02720268100E12021A607047B020D1 +:10539000FCE7C04600B585B003AB00930C220023A8 +:1053A0000021FFF707FC039805B000BD10B5FFF71B +:1053B000F1FF10BDF0B557464E464546DE46002388 +:1053C000E0B587B003930F339846083B9946802396 +:1053D0001B0306000F009A463800FFF7C1FF0400C8 +:1053E000B02800D1C3E003062AD503004246934308 +:1053F000DBB2802B00D171E0902B3DD0A02B00D1EF +:1054000085E0B02B50D0C02B00D196E003004A4677 +:105410009343DBB2D02B0AD15346024001321A43E8 +:10542000052301213000FFF7C7FD0028D4D009244F +:10543000200007B03CBC90469946A246AB46F0BD62 +:10544000FF23820013401D1D05AB9B4600930D22D8 +:10545000002300213000FFF7ADFB630620D4059B3D +:105460009C46654405955B460D2200930021002370 +:105470003000FFF7C3FBAFE7833B03400D2BD6D0D3 +:1054800005AD02400095002300213000FFF792FB9C +:10549000009500230D2200213000FFF7AFFB9BE7B2 +:1054A000059B5D1B0595DEE7B12874D0B22800D1BD +:1054B000CFE0B32800D184E0FC230340B42BB6D066 +:1054C0004A465346024001321A430121012330006B +:1054D000FFF772FD002800D17EE7A8E7040238003C +:1054E000FFF73EFF802520432D02A8429FD00401F4 +:1054F0000005020C002300213000FFF75DFD0028AD +:1055000095D12C4200D167E70123039364E7FF2381 +:105510004A461B011900824311410A001A40030741 +:1055200002D58023DB011A43002300213000FFF75E +:1055300043FD002800D14FE779E7C6284CD0C728A3 +:105540005ED003004A469343DBB2C02B6DD0C8281F +:1055500072D0C92800D06AE73800FFF701FFF023B6 +:1055600002031B03134042460240013257E7039BEC +:105570000024002B00D05BE705AD00950E22002132 +:105580003000FFF717FB009500230F2200213000A9 +:10559000FFF734FB4CE73800FFF7E2FE002800D1AC +:1055A00045E7030042469343DBB2002B00D03EE7C1 +:1055B000020000213000FFF7FFFC002800D10BE7BC +:1055C00035E73800FFF7CCFEF02302031B0313403E +:1055D00042460240013277E73800FFF7C1FEF02370 +:1055E00002031B0313404246024001321A430323C5 +:1055F00003213000FFF7E0FC002800D1ECE616E7BD +:105600003800FFF7ADFE021E00D110E7030041464F +:105610008B43DBB2002B00D009E704213000FFF7F9 +:10562000CBFC002800D1D7E601E74346A0221C406E +:10563000013412032243DAE73800FFF791FE4346B4 +:1056400002009A43D2B210321840120301300243D2 +:10565000E6E605AB00939B460D22002300213000B7 +:10566000FFF7A8FA3800FFF77BFE030618D57F2561 +:10567000B03C059B2840A0409C4660440590380003 +:105680000734FFF76DFE0306F3D481217F238900E1 +:1056900003408C46A340059A62449B180593E2E6BA +:1056A0000224F2E7030000B5DB6C85B05A680800FD +:1056B000120201921A0001A908324A6003220A72FA +:1056C000DB794B72FFF776FE05B000BD10B5FFF732 +:1056D0006DFE806C10BDC04610B5FFF767FEC26C52 +:1056E000D3799B000833D01810BDC04610B500F028 +:1056F00005F8C04610B5FFF7F9FFC04610B5062003 +:1057000000F076F8012000F0A5F8C046F0B50F2AA9 +:1057100037D90D0005430C000300AD0735D1150046 +:10572000103D2D092E013618103627681F60676856 +:105730005F60A7689F60E7681034DF601033B34292 +:10574000F3D10F2401352D01491914404519032CBB +:105750001DD90023CE58EE500433E61A032EF9D893 +:105760000323043CA4080134A4001A402D1909198C +:10577000002A05D00023CC5CEC5401339342FAD1CB +:10578000F0BD0500002AF5D1FAE70500F2E7220096 +:10579000F8E7C04670B505000C001F2922D8B723D2 +:1057A0009B00C358002B0ED08A009B181A68002A51 +:1057B00009D0012A10D0511C10D0002120001960FE +:1057C0009047002070BD280000F030F82200010052 +:1057D000280000F017F8F5E70020F3E71623036030 +:1057E0000120EFE71623036001204042EAE7C046AC +:1057F00010B5034B01001868FFF7CCFF10BDC04681 +:1058000000000020002370B5074C050008001100BF +:10581000236000F017F8431C00D070BD2368002BF4 +:10582000FBD02B60F9E7C0463407002010B500F02C +:1058300001F810BD58220120014B40421A60704708 +:105840003407002058220120014B40421A60704763 +:1058500034070020FEE7C046F8B5C046F8B5C0469C +:1058600074B20181B0AB308000000000800A018179 +:10587000B0B0ABF0000000003F020181B0AB30805F +:105880000000000080060181B0B0ABF00000000015 +:1058900030EEFF7FB0B0B0807CEFFF7F01000000F2 +:1058A00028F0FF7FB0A90280BCF0FF7FB0B0A880D5 +:1058B00008F1FF7F0100000014F1FF7FB0B0AA8063 +:1058C00048F1FF7F9CFFFF7F08F2FF7F010000008F +:1058D00004F2FF7FAA3F398050F2FF7FB0B0A8806A +:1058E0005CF2FF7FB0B0AA809CF2FF7FB0B0A880CE +:1058F000B0F2FF7F01000000ACF2FF7FB0B0A880E3 +:10590000B4F2FF7F010000003CF3FF7FAA0FB280DA +:10591000A4F3FF7F58FFFF7F7CF6FF7FB0B0A88025 +:1059200098F6FF7F54FFFF7FF4F8FF7F010000002F +:1059300064FAFF7F0084048074FAFF7FB0B0A8800F +:1059400074FAFF7F40FFFF7F5CFDFF7F00840480CF +:105950007CFDFF7FB0B0A88094FDFF7F01000000B8 +:10596000080000200000000000000000F4020020F9 +:105970005C030020C40300200000000000000000C1 +:105980000000000000000000000000000000000017 +:105990000000000000000000000000000000000007 +:1059A00000000000000000000000000000000000F7 +:1059B00000000000000000000000000000000000E7 +:1059C00000000000000000000000000000000000D7 +:1059D00000000000000000000000000000000000C7 +:1059E00000000000000000000000000000000000B7 +:1059F00000000000000000000000000000000000A7 +:105A00000000000000000000000000000000000096 +:105A100001000000000000000E33CDAB34126DE633 +:105A2000ECDE05000B00000000000000000000009C +:105A30000000000000000000000000000000000066 +:105A40000000000000000000000000000000000056 +:105A50000000000000000000000000000000000046 +:105A60000000000000000000000000000000000036 +:105A70000000000000000000000000000000000026 +:105A80000000000000000000000000000000000016 +:105A90000000000000000000000000000000000006 +:105AA00000000000000000000000000000000000F6 +:105AB00000000000000000000000000000000000E6 +:105AC00000000000000000000000000000000000D6 +:105AD00000000000000000000000000000000000C6 +:105AE00000000000000000000000000000000000B6 +:105AF00000000000000000000000000000000000A6 +:105B00000000000000000000000000000000000095 +:105B10000000000000000000000000000000000085 +:105B20000000000000000000000000000000000075 +:105B30000000000000000000000000000000000065 +:105B40000000000000000000000000000000000055 +:105B50000000000000000000000000000000000045 +:105B60000000000000000000000000000000000035 +:105B70000000000000000000000000000000000025 +:105B80000000000000000000000000000000000015 +:105B90000000000000000000000000000000000005 +:105BA00000000000000000000000000000000000F5 +:105BB00000000000000000000000000000000000E5 +:105BC00000000000000000000000000000000000D5 +:105BD00000000000000000000000000000000000C5 +:105BE00000000000000000000000000000000000B5 +:105BF00000000000000000000000000000000000A5 +:105C00000000000000000000000000000000000094 +:105C10000000000000000000000000000000000084 +:105C20000000000000000000000000000000000074 +:105C30000000000000000000000000000000000064 +:105C40000000000000000000000000000000000054 +:105C50000000000000000000000000000000000044 :105C60000000000000000000000000000000000034 +:105C70000000000000000000000000000000000024 +:105C80000000000000000000000000000000000014 +:105C90000000000000000000000000000000000004 +:105CA00000000000000000000000000000000000F4 +:105CB00000000000000000000000000000000000E4 +:105CC00000000000000000000000000000000000D4 +:105CD00000000000000000000000000000000000C4 +:105CE00000000000000000000000000000000000B4 +:105CF00000000000000000000000000000000000A4 +:105D00000000000000000000000000000000000093 +:105D10000000000000000000000000000000000083 +:105D20000000000000000000000000000000000073 +:105D30000000000000000000000000000000000063 +:105D40000000000000000000000000000000000053 +:105D50000000000000000000000000000000000043 +:105D60000000000000000000000000000000000033 +:105D70000000000000000000000000000000000023 +:105D80000000000000000000000000000000000013 +:0400000508000805E2 :00000001FF diff --git a/firmware/build_stm6/inlretro_stm.map b/firmware/build_stm6/inlretro_stm.map index 54f71c6..ace8471 100644 --- a/firmware/build_stm6/inlretro_stm.map +++ b/firmware/build_stm6/inlretro_stm.map @@ -1,7 +1,7 @@ Archive member included to satisfy reference by file (symbol) c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) - C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o (__aeabi_unwind_cpp_pr0) + C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o (__aeabi_unwind_cpp_pr0) c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o) c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs) c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o) @@ -51,9 +51,9 @@ c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit) c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) - C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o (__gnu_thumb1_case_uqi) + C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o (__gnu_thumb1_case_uqi) c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) - C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o (__gnu_thumb1_case_uhi) + C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o (__gnu_thumb1_case_uhi) Allocating common symbols Common symbol size file @@ -133,39 +133,41 @@ Discarded input sections .ARM.exidx 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o .ARM.attributes 0x00000000 0x1b c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o - .text 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .data 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .bss 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .stack 0x00000000 0xc00 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .heap 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .debug_line 0x00000000 0x7c C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .debug_info 0x00000000 0x22 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .debug_abbrev 0x00000000 0x12 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o + .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o .debug_aranges - 0x00000000 0x28 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .debug_str 0x00000000 0x70 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .debug_ranges 0x00000000 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o + 0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .debug_str 0x00000000 0x68 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o .ARM.attributes - 0x00000000 0x1b C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o - .text 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .data 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .text 0x00000000 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o - .data 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o - .bss 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o - .ARM.extab 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o - .ARM.exidx 0x00000000 0x8 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o - .debug_line 0x00000000 0x49 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o - .debug_info 0x00000000 0x26 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o - .debug_abbrev 0x00000000 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o + 0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o + .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .text.snes_3v_buffer_wr + 0x00000000 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o + .ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o + .ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o + .debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o + .debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o + .debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o .debug_aranges - 0x00000000 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o - .debug_str 0x00000000 0x6d C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o + 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o + .debug_str 0x00000000 0x65 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o .ARM.attributes - 0x00000000 0x21 C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o - .data 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o - .bss 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o - .ARM.extab 0x00000000 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o + 0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o + .ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o .data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) .bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) .debug_frame 0x00000000 0x2b4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) @@ -428,10 +430,10 @@ Linker script and memory map LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o -LOAD C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o -LOAD C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o -LOAD C:\Users\PAUL_D~1\AppData\Local\Temp\ccYiu3Ln.o -LOAD C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o +LOAD C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o +LOAD C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o +LOAD C:\Users\paul\AppData\Local\Temp\cc0qRkgb.o +LOAD C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o START GROUP LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a @@ -445,17 +447,17 @@ END GROUP LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o -.text 0x08000000 0x5740 +.text 0x08000000 0x5860 *(.isr_vector) - .isr_vector 0x08000000 0xc0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o + .isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o 0x08000000 __isr_vector *(.usb_driver) - .usb_driver 0x080000c0 0x3bc C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o 0x08000198 USB_IRQHandler *(.usb_desc) - .usb_desc 0x0800047c 0xb8 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *(.hardfault) - .hardfault 0x08000534 0x2 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o + .hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o 0x08000534 TIM1_CC_IRQHandler 0x08000534 TSC_IRQHandler 0x08000534 ADC1_COMP_IRQHandler @@ -494,7 +496,7 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab 0x08000534 USART1_IRQHandler 0x08000534 TIM1_BRK_UP_TRG_COM_IRQHandler *fill* 0x08000536 0x2 ff - .hardfault 0x08000538 0xc C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o 0x08000538 HardFault_Handler *_thumb1_case_uqi.o() .text 0x08000544 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) @@ -510,11 +512,11 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab 0x0800058c 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) *(.fw_update) *fill* 0x080005aa 0x2 ff - .fw_update 0x080005ac 0x150 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .fw_update 0x080005ac 0x150 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o 0x00000770 . = 0x770 *fill* 0x080006fc 0x74 ff *(.fw_up_main) - .fw_up_main 0x08000770 0x70 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o 0x00000800 . = 0x800 *fill* 0x080007e0 0x20 ff *(.appver) @@ -522,187 +524,191 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab *fill* 0x08000800 0x4 ff *(.reset_handler) .reset_handler - 0x08000804 0x3c C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o + 0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o 0x08000804 Reset_Handler *(.usbFuncWrite) - .usbFuncWrite 0x08000840 0x44 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *(.usbFuncSetup) - .usbFuncSetup 0x08000884 0x1d04 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .usbFuncSetup 0x08000884 0x1d04 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *(.text*) .text.snes_page_rd_poll.constprop.29 - 0x08002588 0x7c C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002588 0x70 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nes_cpu_page_rd_poll.constprop.28 - 0x08002604 0x6c C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080025f8 0x6c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nes_ppu_page_rd_poll.constprop.25 - 0x08002670 0x68 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002664 0x68 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.append_pairity - 0x080026d8 0x1e C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080026cc 0x1e C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.delay_us - 0x080026f6 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - *fill* 0x0800270a 0x2 ff - .text.lfsr_32 0x0800270c 0x30 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .text.snes_wr 0x0800273c 0x60 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .text.snes_rd 0x0800279c 0x48 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .text.write_page_snes.constprop.34 - 0x080027e4 0x194 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080026ea 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + *fill* 0x080026fe 0x2 ff + .text.lfsr_32 0x08002700 0x30 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .text.snes_wr 0x08002730 0x60 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .text.snes_rd 0x08002790 0x48 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .text.write_page_snes.constprop.35 + 0x080027d8 0x194 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .text.write_page_buffer.constprop.34 + 0x0800296c 0x94 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .text.snes_3v_verify_wr + 0x08002a00 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.snes_3v_flash_wr - 0x08002978 0x50 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002a50 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.snes_5v_flash_wr - 0x080029c8 0x50 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002aa0 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.genesis_page_rd - 0x08002a18 0xa4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002af0 0xa4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.mmc3s_prgrom_flash_wr - 0x08002abc 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002b94 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nes_dualport_wr - 0x08002ac0 0x50 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002b98 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nes_dualport_rd - 0x08002b10 0x38 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002be8 0x38 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nes_ppu_wr - 0x08002b48 0x50 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002c20 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nes_ppu_rd - 0x08002b98 0x38 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002c70 0x38 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.mmc3_chrrom_flash_wr - 0x08002bd0 0x44 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002ca8 0x44 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nrom_chrrom_flash_wr - 0x08002c14 0x44 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002cec 0x44 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nes_m2_high_wr - 0x08002c58 0x60 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002d30 0x60 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nes_cpu_wr - 0x08002cb8 0x7c C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002d90 0x7c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.cdream_chrrom_flash_wr - 0x08002d34 0x8c C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002e0c 0x8c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.mmc4_chrrom_flash_wr - 0x08002dc0 0x74 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002e98 0x74 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.cnrom_chrrom_flash_wr - 0x08002e34 0x7c C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002f0c 0x7c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nes_cpu_rd - 0x08002eb0 0x38 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002f88 0x38 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.tssop_prgrom_flash_wr - 0x08002ee8 0x2a C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002fc0 0x2a C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.a53_tssop_prgrom_flash_wr - 0x08002f12 0x36 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08002fea 0x36 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.gtrom_prgrom_flash_wr - 0x08002f48 0x4c C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003020 0x4c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.map30_prgrom_flash_wr - 0x08002f94 0x74 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x0800306c 0x74 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.mmc4_prgrom_flash_wr - 0x08003008 0x54 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080030e0 0x54 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.mmc3_prgrom_flash_wr - 0x0800305c 0x50 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003134 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.disc_push_exp0_prgrom_wr - 0x080030ac 0x48 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003184 0x48 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.discrete_exp0_prgrom_wr - 0x080030f4 0x58 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080031cc 0x58 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.unrom_prgrom_flash_wr - 0x0800314c 0x64 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003224 0x64 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.nrom_prgrom_flash_wr - 0x080031b0 0x44 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003288 0x44 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.n64_latch_addr - 0x080031f4 0x60 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080032cc 0x60 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.pbje_scan - 0x08003254 0x10c C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x0800332c 0x10c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.pbje_state_change - 0x08003360 0x88 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003438 0x88 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.jtag_init_pbje - 0x080033e8 0xe0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080034c0 0xe0 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.jtag_run_pbje.part.0 - 0x080034c8 0xb8 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080035a0 0xb8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.io_reset - 0x08003580 0x174 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .text.gba_rd 0x080036f4 0x4c C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003658 0x174 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .text.gba_rd 0x080037cc 0x4c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.write_page_verify - 0x08003740 0x5c C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003818 0x5c C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.write_page - 0x0800379c 0x34 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003874 0x34 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.get_next_buff - 0x080037d0 0x54 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080038a8 0x54 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.mmc1_wr.constprop.12 - 0x08003824 0x22 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - *fill* 0x08003846 0x2 ff + 0x080038fc 0x22 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + *fill* 0x0800391e 0x2 ff .text.mmc1_chrrom_flash_wr - 0x08003848 0x60 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003920 0x60 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.mmc1_prgrom_flash_wr - 0x080038a8 0x50 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003980 0x50 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.swim_wotf - 0x080038f8 0xb4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x080039d0 0xb4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.swim_rotf - 0x080039ac 0xac C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x08003a84 0xac C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .text.startup.main - 0x08003a58 0xb48 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - 0x08003a58 main - .text 0x080045a0 0x154 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o - 0x080045a0 swim_xfr - .text 0x080046f4 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) - 0x080049b0 _Unwind_GetCFA - 0x080049b4 __gnu_Unwind_RaiseException - 0x08004a08 __gnu_Unwind_ForcedUnwind - 0x08004a1c __gnu_Unwind_Resume - 0x08004a64 __gnu_Unwind_Resume_or_Rethrow - 0x08004a80 _Unwind_Complete - 0x08004a84 _Unwind_DeleteException - 0x08004a94 _Unwind_VRS_Get - 0x08004adc _Unwind_VRS_Set - 0x08004b24 __gnu_Unwind_Backtrace - 0x08004e74 __aeabi_unwind_cpp_pr0 - 0x08004e80 __aeabi_unwind_cpp_pr1 - 0x08004e8c __aeabi_unwind_cpp_pr2 - 0x08004e98 _Unwind_VRS_Pop - .text 0x080050fc 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o) - 0x080050fc __restore_core_regs - 0x080050fc restore_core_regs - 0x08005128 __gnu_Unwind_Restore_VFP - 0x0800512c __gnu_Unwind_Save_VFP - 0x08005130 __gnu_Unwind_Restore_VFP_D - 0x08005134 __gnu_Unwind_Save_VFP_D - 0x08005138 __gnu_Unwind_Restore_VFP_D_16_to_31 - 0x0800513c __gnu_Unwind_Save_VFP_D_16_to_31 - 0x08005140 __gnu_Unwind_Restore_WMMXD - 0x08005144 __gnu_Unwind_Save_WMMXD - 0x08005148 __gnu_Unwind_Restore_WMMXC - 0x0800514c __gnu_Unwind_Save_WMMXC - 0x08005150 ___Unwind_RaiseException - 0x08005150 _Unwind_RaiseException - 0x08005180 _Unwind_Resume - 0x08005180 ___Unwind_Resume - 0x080051b0 _Unwind_Resume_or_Rethrow - 0x080051b0 ___Unwind_Resume_or_Rethrow - 0x080051e0 _Unwind_ForcedUnwind - 0x080051e0 ___Unwind_ForcedUnwind - 0x08005210 ___Unwind_Backtrace - 0x08005210 _Unwind_Backtrace - .text 0x08005240 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o) - 0x08005294 __gnu_unwind_execute - 0x08005584 __gnu_unwind_frame - 0x080055ac _Unwind_GetRegionStart - 0x080055b8 _Unwind_GetLanguageSpecificData - 0x080055cc _Unwind_GetDataRelBase - 0x080055d4 _Unwind_GetTextRelBase - .text.abort 0x080055dc 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) - 0x080055dc abort - .text.memcpy 0x080055ec 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) - 0x080055ec memcpy + 0x08003b30 0xb90 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + 0x08003b30 main + .text 0x080046c0 0x154 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o + 0x080046c0 swim_xfr + .text 0x08004814 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) + 0x08004ad0 _Unwind_GetCFA + 0x08004ad4 __gnu_Unwind_RaiseException + 0x08004b28 __gnu_Unwind_ForcedUnwind + 0x08004b3c __gnu_Unwind_Resume + 0x08004b84 __gnu_Unwind_Resume_or_Rethrow + 0x08004ba0 _Unwind_Complete + 0x08004ba4 _Unwind_DeleteException + 0x08004bb4 _Unwind_VRS_Get + 0x08004bfc _Unwind_VRS_Set + 0x08004c44 __gnu_Unwind_Backtrace + 0x08004f94 __aeabi_unwind_cpp_pr0 + 0x08004fa0 __aeabi_unwind_cpp_pr1 + 0x08004fac __aeabi_unwind_cpp_pr2 + 0x08004fb8 _Unwind_VRS_Pop + .text 0x0800521c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o) + 0x0800521c __restore_core_regs + 0x0800521c restore_core_regs + 0x08005248 __gnu_Unwind_Restore_VFP + 0x0800524c __gnu_Unwind_Save_VFP + 0x08005250 __gnu_Unwind_Restore_VFP_D + 0x08005254 __gnu_Unwind_Save_VFP_D + 0x08005258 __gnu_Unwind_Restore_VFP_D_16_to_31 + 0x0800525c __gnu_Unwind_Save_VFP_D_16_to_31 + 0x08005260 __gnu_Unwind_Restore_WMMXD + 0x08005264 __gnu_Unwind_Save_WMMXD + 0x08005268 __gnu_Unwind_Restore_WMMXC + 0x0800526c __gnu_Unwind_Save_WMMXC + 0x08005270 ___Unwind_RaiseException + 0x08005270 _Unwind_RaiseException + 0x080052a0 _Unwind_Resume + 0x080052a0 ___Unwind_Resume + 0x080052d0 _Unwind_Resume_or_Rethrow + 0x080052d0 ___Unwind_Resume_or_Rethrow + 0x08005300 _Unwind_ForcedUnwind + 0x08005300 ___Unwind_ForcedUnwind + 0x08005330 ___Unwind_Backtrace + 0x08005330 _Unwind_Backtrace + .text 0x08005360 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o) + 0x080053b4 __gnu_unwind_execute + 0x080056a4 __gnu_unwind_frame + 0x080056cc _Unwind_GetRegionStart + 0x080056d8 _Unwind_GetLanguageSpecificData + 0x080056ec _Unwind_GetDataRelBase + 0x080056f4 _Unwind_GetTextRelBase + .text.abort 0x080056fc 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) + 0x080056fc abort + .text.memcpy 0x0800570c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) + 0x0800570c memcpy .text._raise_r - 0x08005674 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) - 0x08005674 _raise_r - .text.raise 0x080056d0 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) - 0x080056d0 raise - .text._kill_r 0x080056e4 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) - 0x080056e4 _kill_r + 0x08005794 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + 0x08005794 _raise_r + .text.raise 0x080057f0 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + 0x080057f0 raise + .text._kill_r 0x08005804 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + 0x08005804 _kill_r .text._getpid_r - 0x0800570c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) - 0x0800570c _getpid_r - .text._getpid 0x08005714 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) - 0x08005714 _getpid - .text._kill 0x08005724 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) - 0x08005724 _kill - .text._exit 0x08005734 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) - 0x08005734 _exit + 0x0800582c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + 0x0800582c _getpid_r + .text._getpid 0x08005834 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + 0x08005834 _getpid + .text._kill 0x08005844 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + 0x08005844 _kill + .text._exit 0x08005854 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) + 0x08005854 _exit *(.init) - .init 0x08005738 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o - 0x08005738 _init + .init 0x08005858 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o + 0x08005858 _init *(.fini) - .fini 0x0800573c 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o - 0x0800573c _fini + .fini 0x0800585c 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o + 0x0800585c _fini *crtbegin.o(.ctors) *crtbegin?.o(.ctors) *(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors) @@ -716,42 +722,42 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab *(.rodata*) *(.eh_frame*) -.glue_7 0x08005740 0x0 - .glue_7 0x08005740 0x0 linker stubs +.glue_7 0x08005860 0x0 + .glue_7 0x08005860 0x0 linker stubs -.glue_7t 0x08005740 0x0 - .glue_7t 0x08005740 0x0 linker stubs +.glue_7t 0x08005860 0x0 + .glue_7t 0x08005860 0x0 linker stubs -.vfp11_veneer 0x08005740 0x0 - .vfp11_veneer 0x08005740 0x0 linker stubs +.vfp11_veneer 0x08005860 0x0 + .vfp11_veneer 0x08005860 0x0 linker stubs -.v4_bx 0x08005740 0x0 - .v4_bx 0x08005740 0x0 linker stubs +.v4_bx 0x08005860 0x0 + .v4_bx 0x08005860 0x0 linker stubs -.iplt 0x08005740 0x0 - .iplt 0x08005740 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o +.iplt 0x08005860 0x0 + .iplt 0x08005860 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o -.ARM.extab 0x08005740 0x30 +.ARM.extab 0x08005860 0x30 *(.ARM.extab* .gnu.linkonce.armextab.*) - .ARM.extab 0x08005740 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) - .ARM.extab 0x08005764 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o) - 0x08005770 __exidx_start = . + .ARM.extab 0x08005860 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) + .ARM.extab 0x08005884 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o) + 0x08005890 __exidx_start = . -.ARM.exidx 0x08005770 0xd0 +.ARM.exidx 0x08005890 0xd0 *(.ARM.exidx* .gnu.linkonce.armexidx.*) - .ARM.exidx 0x08005770 0x8 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o + .ARM.exidx 0x08005890 0x8 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o 0x10 (size before relaxing) - .ARM.exidx 0x08005778 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) + .ARM.exidx 0x08005898 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) 0xd8 (size before relaxing) - .ARM.exidx 0x08005810 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o) + .ARM.exidx 0x08005930 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o) 0x48 (size before relaxing) - 0x08005840 __exidx_end = . - 0x08005840 __etext = ALIGN (0x4) + 0x08005960 __exidx_end = . + 0x08005960 __etext = ALIGN (0x4) -.rel.dyn 0x08005840 0x0 - .rel.iplt 0x08005840 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o +.rel.dyn 0x08005960 0x0 + .rel.iplt 0x08005960 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o -.data 0x20000000 0x430 load address 0x08005840 +.data 0x20000000 0x430 load address 0x08005960 0x20000000 __data_start__ = . *(vtable) *(.data*) @@ -779,77 +785,77 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab *(.fastrun) 0x20000430 __data_end__ = . -.igot.plt 0x20000430 0x0 load address 0x08005c70 - .igot.plt 0x20000430 0x0 C:\Users\PAUL_D~1\AppData\Local\Temp\ccOm59Pi.o +.igot.plt 0x20000430 0x0 load address 0x08005d90 + .igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccOqsUkN.o -.bss 0x20000430 0x308 load address 0x08005c70 +.bss 0x20000430 0x308 load address 0x08005d90 0x20000430 . = ALIGN (0x4) 0x20000430 __bss_start__ = . *(.bss*) - .bss.addr_ptr 0x20000430 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.addrh 0x20000434 0x2 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.bank_table - 0x20000436 0x2 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.buff0 0x20000438 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.buff1 0x2000044c 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.buff2 0x20000460 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.buff3 0x20000474 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.cur_addr_hi - 0x20000488 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *fill* 0x20000489 0x1 .bss.cur_addr_lo - 0x2000048a 0x2 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.cur_bank 0x2000048c 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x2000048a 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.cur_bank 0x2000048c 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *fill* 0x2000048d 0x3 - .bss.cur_buff 0x20000490 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .bss.cur_buff 0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.cur_usb_load_buff - 0x20000494 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x20000494 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.incoming_bytes_remain - 0x20000498 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x20000498 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *fill* 0x20000499 0x3 - .bss.lfsr 0x2000049c 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.n64_bank 0x200004a0 0x2 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.num_buff.5134 - 0x200004a2 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .bss.lfsr 0x2000049c 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.n64_bank 0x200004a0 0x2 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.num_buff.5143 + 0x200004a2 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.num_prg_banks - 0x200004a3 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x200004a3 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.oper_info_struct - 0x200004a4 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x200004a4 0x20 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.pbje_command - 0x200004c4 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x200004c4 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.pbje_data - 0x200004c5 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x200004c5 0x20 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.pbje_numclk - 0x200004e5 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x200004e5 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.pbje_status - 0x200004e6 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x200004e6 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.raw_bank_status - 0x200004e7 0x10 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x200004e7 0x10 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *fill* 0x200004f7 0x1 .bss.raw_buffer16 - 0x200004f8 0x200 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.rv16.4756 - 0x200006f8 0x8 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.rv16.5054 - 0x20000700 0x8 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x200004f8 0x200 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.rv16.4759 + 0x200006f8 0x8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.rv16.5063 + 0x20000700 0x8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .bss.stm_debug_disable - 0x20000708 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *fill* 0x20000709 0x3 .bss.swim_base - 0x2000070c 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.swim_pin 0x20000710 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.swim_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *fill* 0x20000711 0x3 - .bss.tck_base 0x20000714 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.tck_pin 0x20000718 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .bss.tck_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.tck_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *fill* 0x20000719 0x3 - .bss.tdi_base 0x2000071c 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.tdi_pin 0x20000720 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .bss.tdi_base 0x2000071c 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.tdi_pin 0x20000720 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *fill* 0x20000721 0x3 - .bss.tdo_base 0x20000724 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.tdo_pin 0x20000728 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .bss.tdo_base 0x20000724 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.tdo_pin 0x20000728 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *fill* 0x20000729 0x3 - .bss.tms_base 0x2000072c 0x4 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .bss.tms_pin 0x20000730 0x1 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .bss.tms_base 0x2000072c 0x4 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .bss.tms_pin 0x20000730 0x1 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o *(COMMON) *fill* 0x20000731 0x3 COMMON 0x20000734 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) @@ -876,45 +882,45 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm) .ARM.attributes 0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o .ARM.attributes - 0x0000001e 0x2f C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .ARM.attributes - 0x0000004d 0x21 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o + 0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o .comment 0x00000000 0x7f - .comment 0x00000000 0x7f C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + .comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o 0x80 (size before relaxing) -.debug_info 0x00000000 0x57e5 - .debug_info 0x00000000 0x57bf C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .debug_info 0x000057bf 0x26 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o +.debug_info 0x00000000 0x5b65 + .debug_info 0x00000000 0x5b3f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .debug_info 0x00005b3f 0x26 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o -.debug_abbrev 0x00000000 0x6ba - .debug_abbrev 0x00000000 0x6a6 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .debug_abbrev 0x000006a6 0x14 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o +.debug_abbrev 0x00000000 0x6c9 + .debug_abbrev 0x00000000 0x6b5 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .debug_abbrev 0x000006b5 0x14 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o -.debug_loc 0x00000000 0x8e80 - .debug_loc 0x00000000 0x8e80 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o +.debug_loc 0x00000000 0x910b + .debug_loc 0x00000000 0x910b C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o -.debug_aranges 0x00000000 0x218 +.debug_aranges 0x00000000 0x230 .debug_aranges - 0x00000000 0x1f8 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o + 0x00000000 0x210 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .debug_aranges - 0x000001f8 0x20 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o + 0x00000210 0x20 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o -.debug_ranges 0x00000000 0xe08 - .debug_ranges 0x00000000 0xe08 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o +.debug_ranges 0x00000000 0xe20 + .debug_ranges 0x00000000 0xe20 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o -.debug_line 0x00000000 0x1bfa - .debug_line 0x00000000 0x1b07 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - .debug_line 0x00001b07 0xf3 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o +.debug_line 0x00000000 0x1c72 + .debug_line 0x00000000 0x1b7f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + .debug_line 0x00001b7f 0xf3 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o -.debug_str 0x00000000 0x12b2 - .debug_str 0x00000000 0x1249 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o - 0x1384 (size before relaxing) - .debug_str 0x00001249 0x69 C:\Users\PAUL_D~1\AppData\Local\Temp\cc21n1gw.o +.debug_str 0x00000000 0x12e0 + .debug_str 0x00000000 0x127f C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o + 0x13b2 (size before relaxing) + .debug_str 0x0000127f 0x61 C:\Users\paul\AppData\Local\Temp\ccCWXcVB.o -.debug_frame 0x00000000 0x658 - .debug_frame 0x00000000 0x658 C:\Users\PAUL_D~1\AppData\Local\Temp\ccu17E4l.ltrans0.ltrans.o +.debug_frame 0x00000000 0x6a8 + .debug_frame 0x00000000 0x6a8 C:\Users\paul\AppData\Local\Temp\ccGCpWvS.ltrans0.ltrans.o .stabstr 0x00000000 0x76 .stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) diff --git a/firmware/source/flash.c b/firmware/source/flash.c index e6d3943..fe83742 100644 --- a/firmware/source/flash.c +++ b/firmware/source/flash.c @@ -56,6 +56,66 @@ uint8_t write_page_verify( uint8_t addrH, buffer *buff, write_rv_funcptr wr_func return SUCCESS; } +uint8_t write_page_buffer( uint8_t addrH, buffer *buff, write_funcptr_pg wr_func ) +{ + uint16_t cur = buff->cur_byte; + uint8_t n = buff->cur_byte; + uint8_t i; + uint8_t rv; + uint8_t rv1; +// uint8_t read; +// + + uint16_t addr = addrH<<8; + + + while ( cur <= buff->last_idx ) { + + // wr_func( ((addrH<<8)| n), &(buff->data[n]) ); + //write function returns when it's complete or errors out + + //unlock and write data + snes_wr(0x8AAA, 0xAA, 0); + snes_wr(0x8555, 0x55, 0); + //write buffer write to SA + snes_wr(addr|n, 0x25, 0); + //write number of words - 1 to SA + snes_wr(addr|n, 31, 0); + + //write first data to first address, then write others to their address + //snes_wr(addr|n, data, 0); + + //write 31 more bytes of data + for (i=0;i<32;i++) { + snes_wr(addr+i+n, buff->data[n+i], 0); + } + + //write program buffer command + snes_wr(addr|n, 0x29, 0); + + //LED_IP_PU(); + //LED_LO(); + //LED_OP(); + //LED_HI(); + + do { + rv = snes_rd(addr, 0); + rv1 = snes_rd(addr, 0); + usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data + //wdt_reset(); + ////} while (rv != snes_rd(addr, 0)); + } while (rv != rv1); + + //n++; + n +=32; + cur += 32; + } + buff->cur_byte = n; + + //TODO error check/report + return SUCCESS; +} + //only used by cninja currently.. uint8_t write_page_cninja( uint8_t bank, uint8_t addrH, uint16_t unlock1, uint16_t unlock2, buffer *buff, write_funcptr wr_func, read_funcptr rd_func ) @@ -569,6 +629,22 @@ uint8_t flash_buff( buffer *buff ) { //HIROM banks start at $XX:0000 write_page( addrH, buff, snes_3v_flash_wr); } + if (buff->mapper == LOROM_3V_VERIFY) { + //LOROM banks start at $XX:8000 + write_page_verify( addrH+0x80, buff, snes_3v_verify_wr); + } + if (buff->mapper == HIROM_3V_VERIFY) { + //HIROM banks start at $XX:0000 + write_page_verify( addrH, buff, snes_3v_verify_wr); + } + if (buff->mapper == LOROM_3V_PAGE) { + //LOROM banks start at $XX:8000 + write_page_buffer( addrH+0x80, buff, snes_3v_buffer_wr); + } + if (buff->mapper == HIROM_3V_PAGE) { + //HIROM banks start at $XX:0000 + write_page_buffer( addrH, buff, snes_3v_buffer_wr); + } if (buff->mapper == LOROM) { addrH |= 0x80; //$8000 LOROM space diff --git a/firmware/source/io.c b/firmware/source/io.c index c475ef3..7393794 100644 --- a/firmware/source/io.c +++ b/firmware/source/io.c @@ -476,7 +476,7 @@ void sega_init() // HADDR_ENABLE(); // HADDR_IP(); // HADDR_PU(); - DATA16_ENABLE(); + //TODO ERROR DATA16_ENABLE(); // DATA16_IP(); // DATA16_PU(); @@ -582,7 +582,7 @@ uint8_t swim_init( uint8_t swim_lane ) EXP0_HI(); //set output high (deasserted) EXP0_OP(); //enable as output to have above take effect #endif - swim_pin = EXP0_; + swim_pin = EXP0; swim_base = EXP0bank; //swim_mask = 1<>8; + //GET & SET ARRAY DATA, miscdata defines first byte index + case SET_2B_DATA: pbje_data[miscdata] = operand; + pbje_data[miscdata+1] = operand>>8; break; - case GET_6B_DATA: rdata[RD0] = pbje_data[0]; - rdata[RD1] = pbje_data[1]; - rdata[RD2] = pbje_data[2]; - rdata[RD3] = pbje_data[3]; - rdata[RD4] = pbje_data[4]; - rdata[RD5] = pbje_data[5]; - rdata[RD_LEN] = 6; + case GET_8B_DATA: //copy over 8B of data starting at miscdata index + for (temp=RD0; temp<(RD0+8); temp++) { + rdata[temp] = pbje_data[temp-RD0+miscdata]; + } + + rdata[RD_LEN] = 8; + break; + case GET_32B_DATA: + //copy over 32B of data + for (temp=RD0; temp<(RD0+32); temp++) { + rdata[temp] = pbje_data[temp-RD0]; + } + + rdata[RD_LEN] = 32; break; @@ -100,6 +115,7 @@ uint8_t jtag_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t * } +//NOTE! MUST INITIALIZE JTAG in io.c before calling!!!! void jtag_init_pbje() { uint8_t i; @@ -125,15 +141,11 @@ void jtag_init_pbje() exp_byte = 0; EXP_SET(exp_byte); #endif + //enable TDO as input TDO_IP_PU(); - //PBJE initialization - //set status & command to INIT - pbje_status = PBJE_INIT; - //only the host writes to command - //pbje_command = PBJE_INIT; //set NUM_CLK to max this engine can clock based on DATA_ARRAY bit size pbje_numclk = 0; //byte variable, 0 -> 256 @@ -143,6 +155,13 @@ void jtag_init_pbje() pbje_data[i] = 0; } + //SET STATE LAST to signal complete + //PBJE initialization + //set status & command to INIT + pbje_status = PBJE_INIT; + //only the host writes to command + //pbje_command = PBJE_INIT; + } //actual JTAG engine diff --git a/firmware/source/pinport_al.h b/firmware/source/pinport_al.h index 27ad045..668474d 100644 --- a/firmware/source/pinport_al.h +++ b/firmware/source/pinport_al.h @@ -19,7 +19,8 @@ #define NES_CONN //famicom isn't actually present but a pin adapter should work #endif -#if defined(STM_INL6) || defined(STM_INL6_PROTO) +//#if defined(STM_INL6) || defined(STM_INL6_PROTO) +#if defined(STM_INL6) #define NES_CONN //includes famicom as definitions are effectively the same #define SNES_CONN #define SEGA_CONN @@ -27,6 +28,14 @@ #define N64_CONN #endif +#if defined(STM_INL6_PROTO) + #define NES_CONN //includes famicom as definitions are effectively the same + #define SNES_CONN +// #define SEGA_CONN //don't feel like fixing these definitions right now.. + #define GB_CONN + #define N64_CONN +#endif + #ifdef AVR_CORE #include "avr_gpio.h" #include @@ -1510,7 +1519,7 @@ void software_AXL_CLK(); // // --------------------------------------------------------------------------------------- -#if defined (STM_INL6_PROTO) || defined(STM_INL6) +#if STM_INL6_PROTO // PE0 "A0" mcupinC0 #define E0bank GPIOC @@ -1533,10 +1542,36 @@ void software_AXL_CLK(); #define E4 (12U) -#endif //STM_INL6 & PROTO +#endif //STM_INL6_PROTO + +#ifdef STM_INL6 + + // PE0 "A0" mcupinC0 + #define E0bank GPIOC + #define E0 (0U) + + // PE1 "D0" mcupinB8 + #define E1bank GPIOB + #define E1 (8U) + + // PE2 "D8" mcupinB2 + #define E2bank GPIOB + #define E2 (2U) + + // PE3 "D9" mcupinB3 + #define E3bank GPIOB + #define E3 (3U) + + // PE4 "D10" mcupinB4 + #define E4bank GPIOB + #define E4 (4U) + +#endif //STM_INL6 + #ifdef STM_NES //TODO BLINDLY COPIED FROM STM6, will not work AS-IS +//TODO actually do this // PE0 "A0" mcupinB2 // TODO!!! diff --git a/firmware/source/snes.c b/firmware/source/snes.c index 8732b31..4e5ca10 100644 --- a/firmware/source/snes.c +++ b/firmware/source/snes.c @@ -258,12 +258,13 @@ uint8_t snes_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t romsel, uint8_t } //gameboy needed some extra NOPS - NOP(); - NOP(); - NOP(); - NOP(); - NOP(); - NOP(); + //I cut these back out because didn't want the delay in SNES +// NOP(); +// NOP(); +// NOP(); +// NOP(); +// NOP(); +// NOP(); //latch data DATA_RD(data[i]); @@ -338,5 +339,67 @@ void snes_3v_flash_wr( uint16_t addr, uint8_t data ) return; } +/* Desc:SNES 3v ROM FLASH VERIFY Write + * NOTE: /ROMSEL is always taken low + * NOTE: if the byte isn't erased it will stop over current value + * NOTE: doesn't hang if write fails, just returns, goal is to be fast + * Pre: snes_init() setup of io pins + * desired bank must already be selected + * Post:Byte written and ready for another write + * Rtn: None + */ +uint8_t snes_3v_verify_wr( uint16_t addr, uint8_t data ) +{ + + uint8_t rv; + + //unlock and write data + snes_wr(0x8AAA, 0xAA, 0); + snes_wr(0x8555, 0x55, 0); + snes_wr(0x8AAA, 0xA0, 0); + snes_wr(addr, data, 0); + + do { + rv = snes_rd(addr, 0); + usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data + } while (rv != snes_rd(addr, 0)); + + return rv; +} + +/* Desc:SNES 3v ROM FLASH BUFFER Write 32Bytes at a time + * NOTE: /ROMSEL is always taken low + * NOTE: if the byte isn't erased it will stop over current value + * NOTE: doesn't hang if write fails, just returns, goal is to be fast + * Pre: snes_init() setup of io pins + * desired bank must already be selected + * Post:Byte written and ready for another write + * Rtn: None + */ +void snes_3v_buffer_wr( uint16_t addr, uint8_t *data ) +{ + + /* TODO, actually implement this, currently everything is done on flash.c side + uint8_t rv; + + //unlock and write data + snes_wr(0x8AAA, 0xAA, 0); + snes_wr(0x8555, 0x55, 0); + //write buffer write to SA + snes_wr(addr, 0x25, 0); + //write number of words - 1 to SA + + //write first data to first address + snes_wr(addr, data[1], 0); + + do { + rv = snes_rd(addr, 0); + usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data + } while (rv != snes_rd(addr, 0)); + + return; + */ +} + #endif //SNES_CONN diff --git a/firmware/source/snes.h b/firmware/source/snes.h index 92a95a2..09bb28a 100644 --- a/firmware/source/snes.h +++ b/firmware/source/snes.h @@ -14,5 +14,7 @@ uint8_t snes_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t romsel, uint8_t void snes_5v_flash_wr( uint16_t addr, uint8_t data ); void snes_3v_flash_wr( uint16_t addr, uint8_t data ); +uint8_t snes_3v_verify_wr( uint16_t addr, uint8_t data ); +void snes_3v_buffer_wr( uint16_t addr, uint8_t *data ); #endif diff --git a/firmware/source/types.h b/firmware/source/types.h index c20ff0f..3d37104 100644 --- a/firmware/source/types.h +++ b/firmware/source/types.h @@ -15,6 +15,7 @@ typedef struct setup_packet{ //typedef void (*write_funcptr) ( uint8_t addrH, uint8_t addrL, uint8_t data ); //typedef uint8_t (*read_funcptr) ( uint8_t addrH, uint8_t addrL ); typedef void (*write_funcptr) ( uint16_t addr, uint8_t data ); +typedef void (*write_funcptr_pg) ( uint16_t addr, uint8_t *data ); typedef uint8_t (*write_rv_funcptr) ( uint16_t addr, uint8_t data ); typedef uint8_t (*read_funcptr) ( uint16_t addr ); typedef void (*write_snes_funcptr) ( uint16_t addr, uint8_t data, uint8_t romsel ); diff --git a/firmware/source_stm_only/usb_descriptors.h b/firmware/source_stm_only/usb_descriptors.h index c52907a..2b31f7a 100644 --- a/firmware/source_stm_only/usb_descriptors.h +++ b/firmware/source_stm_only/usb_descriptors.h @@ -278,6 +278,7 @@ USBDESC const uint16_t string2_desc[STRING2_DESC_LEN] = { // 1 bDescriptorType 1 Constant String Descriptor (0x03) ((uint16_t)DESC_TYPE_STRING<<8 | STRING2_DESC_LEN), // 2 bString n Unicode Unicode Encoded String -'I','N','L',' ','R','e','t','r','o','-','P','r','o','g'}; +'I','N','L',' ','R','e','t','r','o','-','P','r','o','g'}; //normal +//'I','N','L',' ','R','e','t','r','o','-','P','r','o','4'}; //numbered devices for mutliple on one machine #endif diff --git a/host/scripts/app/ciccom.lua b/host/scripts/app/ciccom.lua index fdb789a..d3c491d 100644 --- a/host/scripts/app/ciccom.lua +++ b/host/scripts/app/ciccom.lua @@ -5,12 +5,18 @@ local ciccom = {} -- import required modules local dict = require "scripts.app.dict" local time = require "scripts.app.time" +local help = require "scripts.app.help" -- file constants --local resetpin = "AFL" --v2.0 --local datapin = "GBP" --v2.0 -local resetpin = "SWC" --v2.0N -local datapin = "FREE" --v2.0N +--local resetpin = "SWC" --v2.0N +--local datapin = "FREE" --v2.0N + +--SNES v3.3 +local resetpin = "AFL" --v2.0 +local datapin = "SWC" --v2.0 +--TODO move clock pin to a define & have the reset/data defines set based on the device -- local functions local function start( debug ) @@ -63,125 +69,72 @@ local function start( debug ) dict.pinport( "CTL_SET_HI", resetpin) --CIC is now waiting for data to be clocked in using CIC CLK & KEY_DATA_OUT + --CIC will latch data on rising edges of CLK return end +local function output_bit7(byte, debug) + + if (byte & 0x80 == 0x80) then --output one/high + if debug then print ("output 1/HI") end + dict.pinport( "CTL_SET_HI", datapin) + dict.pinport( "ADDR_SET", 1) + dict.pinport( "ADDR_SET", 0) + + else --output zero/low + if debug then print ("output 0/LO") end + dict.pinport( "CTL_SET_LO", datapin) + dict.pinport( "ADDR_SET", 1) + dict.pinport( "ADDR_SET", 0) + end +end + +local function byte_to_ciccom(byte, debug) + + local cnt = 8 + + while cnt > 0 do + if debug then print("outputting bit7 of:", help.hex(byte)) end + output_bit7(byte, debug) + byte = (byte << 1) & 0xFF + cnt = cnt - 1 + end + +end + +local function char_to_ciccom( char, debug) + byte_to_ciccom(string.byte(char), debug) +end + local function set_opcode(opcode) --KEY DATA IN is clocked in on rising edges of CIC CLK --"M" 0x4D (0b0100_1101 needs to be written to CIC to cause it to toggle mirroring --MSbit is latched first - if opcode == "M" then - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_HI", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_HI", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_HI", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) + char_to_ciccom(opcode) - end - --now that "M" is written to CIC, end OPCODE write sequence by taking CIC RESET LO + --now that opcode (ie "M") is written to CIC, end OPCODE write sequence by taking CIC RESET LO dict.pinport( "CTL_SET_LO", resetpin) end -local function write(data) +local function write(data, debug) + --debug = true --now send operand "V" (0x56) or "H" (0x48) - - if data == "H" then - --HORIZONTAL - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_HI", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_HI", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - elseif data == "V" then - - --VERTICAL - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_HI", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_HI", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_HI", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) - - dict.pinport( "CTL_SET_LO", datapin) - dict.pinport( "ADDR_SET", 1) - dict.pinport( "ADDR_SET", 0) + if debug then print("ciccom write is type:", type(data)) end + if type(data) == 'number' then + if debug then print("writting number/byte") end + byte_to_ciccom(data, debug) + else + if debug then print("writting character") end + char_to_ciccom(data, debug) end end @@ -197,6 +150,8 @@ end ciccom.start = start ciccom.set_opcode = set_opcode ciccom.write = write +ciccom.byte_to_ciccom = byte_to_ciccom +ciccom.char_to_ciccom = char_to_ciccom ciccom.wotf = wotf ciccom.rotf = rotf diff --git a/host/scripts/app/files.lua b/host/scripts/app/files.lua index b39046f..e5cb714 100644 --- a/host/scripts/app/files.lua +++ b/host/scripts/app/files.lua @@ -9,6 +9,23 @@ local help = require "scripts.app.help" -- local functions +-- file must already be open for writting in binary mode +-- read from something like the cart and get a number +-- send that number here to write to the file in binary (interpret as an ascii char) +local function wr_bin_byte(file, data) + data = data & 0x00FF --negative and overly large ints need trimmed to 8bits + file:write(string.char( data )) +end + +--always forget how to read a byte from a file even though it's super simple... +--file must already be open for reading in binary mode +local function rd_bin_byte(file, debug) + + --TODO test & support reading more than 1 byte + local num_bytes = 1 + + return string.byte(file:read(num_bytes)) +end --compare the two files return true if identical --files should be closed prior to calling, files are closed after compared @@ -84,6 +101,106 @@ local function compare(filename1, filename2, size_must_equal, debug) end +--reads file until finds a line that includes the token string +--the line with the token is consumed, the next line that you read from the +--file will be the line that follows the line with the token +--Created to find L00000 line in jedec files +--RETURN: the line in string format that matched the token +--addition of returning the string allows for verification of the user code +local function readtill_line(file, token, debug) + + --local temp = string.byte(file:read(10)) + local temp_line = "notnil" --= file:read("*line") + local line_num = 0 + if debug then print("finding:", token) end + + --while line_num < 100 do + local found_token = false + while not found_token do + + temp_line = file:read("*line") + line_num = line_num + 1 + -- if debug then print("line num", line_num, "reads:", temp_line) end + + if temp_line then + if string.find(temp_line, token) then + if debug then print("found token in line num", line_num, "reads:", temp_line) end + found_token = true + end + else + print("reached end of file, could not find token", token) + return nil + end + + end +-- temp = file:read("*line") +-- if debug then print("next line:", temp) end + + return temp_line + +end + +local function nextline(file) + return file:read("*line") +end + +--read 3 lines from jedec file and convert from binary to hex string +--input: +--10111111111001111111000111111111111111111111111111111110001111110000111110100000 +--00011110110000110001100010000111111111111000110001111100000111111111100000111111 +--111111111111 +--output: +--FFFFC1FF83E31FFE118C37805F0FC7FFFFFFF8FE7FD +local function jedec_3ln_2hexstr(file, debug) + local line1 = nextline(file) + local line2 = nextline(file) + local line3 = nextline(file) + if debug then print(line1) print(line2) print(line3) end + + local line1_len = string.len(line1) - 1 + local line2_len = string.len(line2) - 1 + local line3_len = string.len(line3) - 1 + --these strings have extra newline character at the end + if debug then print("line 1,2,3 lengths:", line1_len, line2_len, line3_len) end + + line1 = string.sub(line1, 1, line1_len) + line2 = string.sub(line2, 1, line2_len) + line3 = string.sub(line3, 1, line3_len) + if debug then print(line1) print(line2) print(line3) end + + --contatenate all the lines together + --local padding = "1111" -- 172bits = 22.5 Bytes, pad with extra "F" + local padding = "" -- 172bits = 43 Nibbles no padding needed + local bin_line = padding .. line1 .. line2 .. line3 + local bin_len = line1_len + line2_len + line3_len + string.len(padding) + if debug then print("bin len", bin_len, "bin data", bin_line) end + +-- print(tonumber(line3,2)) + + --create a hex string that starts with last bit from 3rd line + local temp_nibble + local hex_str = "" + while bin_len > 0 do + --need to reverse the bit order + --temp_nibble = string.sub(bin_line, bin_len, bin_len) .. + -- string.sub(bin_line, bin_len-1, bin_len-1) .. + -- string.sub(bin_line, bin_len-2, bin_len-2) .. + -- string.sub(bin_line, bin_len-3, bin_len-3) + temp_nibble = string.reverse(string.sub(bin_line, bin_len-3, bin_len)) + + --temp_nibble = tonumber(string.sub(bin_line, bin_len-3, bin_len), 2) --2 is base (binary) + temp_nibble = tonumber(temp_nibble, 2) --2 is base (binary) + if debug then print("decimal", temp_nibble) end + temp_nibble =string.format("%1.1X", temp_nibble) + hex_str = hex_str .. temp_nibble + if debug then print("hex", temp_nibble) end + bin_len = bin_len - 4 + end + + if debug then print("hex string:", hex_str) end + + return hex_str +end -- global variables so other modules can use them @@ -93,6 +210,11 @@ end -- functions other modules are able to call files.compare = compare +files.wr_bin_byte = wr_bin_byte +files.rd_bin_byte = rd_bin_byte +files.readtill_line = readtill_line +files.nextline = nextline +files.jedec_3ln_2hexstr = jedec_3ln_2hexstr -- return the module's table return files diff --git a/host/scripts/app/help.lua b/host/scripts/app/help.lua index bd76ebe..2e7dcbe 100644 --- a/host/scripts/app/help.lua +++ b/host/scripts/app/help.lua @@ -13,6 +13,7 @@ local function hex(data) end + -- global variables so other modules can use them diff --git a/host/scripts/app/swim.lua b/host/scripts/app/swim.lua index 9f90123..3959299 100644 --- a/host/scripts/app/swim.lua +++ b/host/scripts/app/swim.lua @@ -4,6 +4,8 @@ local swim = {} -- import required modules local dict = require "scripts.app.dict" +local files = require "scripts.app.files" +local help = require "scripts.app.help" --local buffers = require "scripts.app.buffers" -- file constants @@ -164,6 +166,36 @@ local function unlock_flash(hspeed) wotf(0x5062, 0xAE, hspeed) end +local function fast_flash_mode(hspeed) + --set to fast flash mode + --;2. Write 0x10 in FLASH_CR2 (FPRG bit active), and 0xEF in FLASH_NCR2 (NFPRG bit + -- ;active). + -- mov FLASH_CR2, #0x10 + -- mov FLASH_NCR2, #0xEF + wotf(0x505B, 0x10, hspeed) + wotf(0x505C, 0xEF, hspeed) +end + +local function wait_till_eop_set(hspeed, debug) + + local timeout = 0 + + local result, data = rotf(0x505f, hspeed, false ) + + while ((data & 0x04) ~= 0x04) do + result, data = rotf(0x505f, hspeed, false ) + if debug then print("FLASH_IAPSR EOP bit wasn't set, polling again.") end + + timeout = timeout+1 + + if (timeout == 20) then + print("EOP was never set after", timeout, "attempts. I quit..") + return + end + end +end + + local function lock_flash_eeprom(hspeed) --lock eeprom: --Reset bit 3 (DUL) @@ -536,6 +568,89 @@ local function write_optn_bytes(rop, debug) if debug then print("done with option byte programming") end end +--erase 64Byte blocks starting at addr +--have to call separately for eeprom/flash, addr desides which to unlock +local function erase_blocks(addr, num_blocks, debug) + + --TODO take this arg from calling function + local hspeed = true + + local block_num = 0 + local readdata = 0 + local readresult = 0 + + if addr < 0x8000 then + unlock_eeprom(true) + else --flash + unlock_flash(true) + end + + if debug then print("SWIM erasing", num_blocks, "* 64Byte blocks starting at:", help.hex(addr)) end + + while (block_num < num_blocks) do + + + --enable block erase + wotf(0x505B, 0x20, hspeed) + wotf(0x505C, 0xDF, hspeed) + + --write 0x00 to first 4 bytes of the block + wotf(addr, 0x00, hspeed) + wotf(addr+1, 0x00, hspeed) + wotf(addr+2, 0x00, hspeed) + wotf(addr+3, 0x00, hspeed) + + --poll EOP + wait_till_eop_set(hspeed) + + --next block + block_num = block_num+1 + addr = addr + 64 + end + +end + +local function erase_flash(debug) + erase_blocks(0x8000, 128, true) +end + +local function erase_eeprom(debug) + + --TODO take arg of device type, for now assume S003 + --erase_blocks(0x4000, 2, true) --S001/3 + erase_blocks(0x4000, 10, true)--S103 +end + +local function read_memory(file, addr, num_bytes, debug) + + local toprint = debug + local buff_size = 1 + local byte_num = 0 + local readdata = 0 + local readresult = 0 + if debug then print("SWIM Dumping", num_bytes, "starting at:", help.hex(addr)) end + + while (byte_num < num_bytes) do + local toprint = false + readresult, readdata = rotf(addr+byte_num, true, toprint ) + byte_num = byte_num+1 + files.wr_bin_byte(file, readdata) + end + +end + +local function dump_flash(file, debug) + read_memory(file, 0x8000, 8*1024, true) +end + +local function dump_eeprom(file, debug) + --TODO flag for S001/3 or S103 + --for now just assume 640Bytes like S103 + read_memory(file, 0x4000, 640, true) +end + + +--takes ~37sec to flash entire 8KB, recommend calling fastblock below if flashing entire chip local function write_flash(file, debug) unlock_flash(true) @@ -567,6 +682,58 @@ local function write_flash(file, debug) lock_flash_eeprom(true) end + +--erases then writes 8KByte of STM8 flash +--currently writes entire 8KB of flash, file must be exactly 8KByte +--testing in high speed mode single byte rotf: 5.5sec (same as dump speed) +--flashing the entire chip takes 37 seconds in single byte mode +--does not verify as flashing, recommend dumping and comparing files +local function write_flash_fastblock(file, debug) + + --erase_blocks(0x8000, 128, true) + erase_flash() + + unlock_flash(true) + + local toprint = debug + local buff_size = 1 + local byte_num = 0 + local readdata = 0 + local readresult = 0 + print("Programming STM8 CIC flash") + + --for byte in file:lines(buff_size) do + while (byte_num < 0x2000) do + + --set to fast mode for each block + fast_flash_mode(true) + --write 64 bytes, then poll EOP + local byteinblock = 0 + + while byteinblock<64 do + + local byte = file:read(1) + --local byte = files.rd_bin_byte(file) + local data = string.unpack("B", byte, 1) + -- print(data) + wotf(0x8000+byte_num, data, true, toprint) + --wotf(0x8000+byte_num, 0xFF, true, true) + -- readresult, readdata = rotf(0x8000+byte_num, true, toprint ) + -- if readdata ~= data then + -- print("ERROR flashing byte number", byte_num, "to STM8 CIC", data, readdata) + -- end + byte_num = byte_num + 1 + byteinblock = byteinblock + 1 + end + + --poll EOP till it's set + wait_till_eop_set(true) + end + + print("Done with STM8 CIC flash") + lock_flash_eeprom(true) +end + local function snes_v3_prgm(debug) --dict.pinport("CTL_IP_PU", "SNES_RST") --reset_swim() @@ -604,6 +771,13 @@ end -- functions other modules are able to call swim.start = start swim.write_flash = write_flash +swim.write_flash_fastblock = write_flash_fastblock +swim.read_memory = read_memory +swim.dump_flash = dump_flash +swim.dump_eeprom = dump_eeprom +swim.erase_blocks = erase_blocks +swim.erase_flash = erase_flash +swim.erase_eeprom = erase_eeprom swim.write_optn_bytes = write_optn_bytes swim.disable_ROP_erase = disable_ROP_erase swim.printCSR = printCSR diff --git a/host/scripts/gb/romonly.lua b/host/scripts/gb/romonly.lua index 4644d17..974c233 100644 --- a/host/scripts/gb/romonly.lua +++ b/host/scripts/gb/romonly.lua @@ -5,7 +5,7 @@ local romonly = {} local dict = require "scripts.app.dict" local dump = require "scripts.app.dump" local files = require "scripts.app.files" -local jtag = require "scripts.app.jtag" +local jtag = require "scripts.jtag.jtag" -- file constants local mapname = "ROMONLY" diff --git a/host/scripts/jtag/jtag.lua b/host/scripts/jtag/jtag.lua new file mode 100644 index 0000000..ccdc7c4 --- /dev/null +++ b/host/scripts/jtag/jtag.lua @@ -0,0 +1,193 @@ + +-- create the module's table +local jtag = {} + +-- import required modules +local dict = require "scripts.app.dict" +local files = require "scripts.app.files" +local time = require "scripts.app.time" + +local pbje = require "scripts.jtag.pbje" + +--set cpld to which ever device is being used +--local cpld = require "scripts.jtag.lc4000v" +local cpld = require "scripts.jtag.machXO256" + + +local function check_IDCODE(debug) + + local idcode_len = 32 --hex digits + + --first put/verify jtag statemachine is in RESET + pbje.goto_state("RESET") + + --by default jtag should be in IDCODE or BYPASS if IDCODE not present + --The TDI pin doesn't even have to be working to scan out IDCODE by this means + + --let's just put in IDCODE mode + ---[[ + --Mach XO verify ID code +-- ! Check the IDCODE +-- +-- ! Shift in IDCODE(0x16) instruction +-- SIR 8 TDI (16); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x16) + + --return to default state after SIR + --doesn't appear to actually be needed +-- pbje.goto_state("PAUSE_IR") + +-- SDR 32 TDI (FFFFFFFF) +-- TDO (01281043) +-- MASK (FFFFFFFF); + --pbje.goto_state("SHIFT_DR") + --rv = pbje.scan( 32, "HIGH", true) + --print("return data:", string.format(" %X, ",rv)) + --]] + + + + --change to SCAN-DR state + pbje.goto_state("SHIFT_DR") + + --scan out 32bit IDCODE while scanning in 1's to TDI + rv = pbje.scan( 32, "HIGH", true ) + if debug then print("return data:", string.format("%X",rv)) end + rv = string.format("%16.16X",rv) + if debug then print(rv) end + rv = string.sub(rv, ((64-idcode_len)/4)+1, 64/4) + + --print("return data:", string.format(" %X, ",rv)) + print("read idcode:", rv) + + --if( rv == 0x1281043 ) then + if( rv == "01281043" ) then + -- Mach XO 256 01281043 + -- 4032v (01805043) + -- 4064v (01809043) + -- + -- 9536xl + -- //Loading device with 'idcode' instruction. + -- SIR 8 TDI (fe) SMASK (ff) ; + -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ; + -- + -- 9572xl + -- //Loading device with 'idcode' instruction. + -- SIR 8 TDI (fe) SMASK (ff) ; + -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9604093) MASK (0fffffff) ; + -- test read gives 59604093 + print("IDCODE matches MACHXO-256") + --elseif ( rv==0x01805043 ) then + elseif ( rv=="01805043" ) then + print("IDCODE matches LC4032V") + --elseif ( rv==0x01809043 ) then + elseif ( rv=="01809043" ) then + print("IDCODE matches LC4064V") + else + print("no match for IDCODE") + end + + --xilinx IDCODE command is different + --//Loading device with 'idcode' instruction. + --SIR 8 TDI (fe) SMASK (ff) ; + --SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ; +-- pbje.goto_state("SHIFT_IR") +-- pbje.scan( 8, 0xfe) +-- pbje.goto_state("SHIFT_DR") +-- rv = pbje.scan( 32, "HIGH", true) +-- print("return data:", string.format(" %X, ",rv)) + +end + + + +local function run_jtag( debug ) + + local rv + + --setup lua portion of jtag engine + pbje.init("INLRETRO") + + --initialize JTAG port on USB device + dict.io("JTAG_INIT", "JTAG_ON_EXP0_3") --NES + --dict.io("JTAG_INIT", "JTAG_ON_SNES_CTL") --SNES + + --open jedec file + local filename = "ignore/TKROM_prod_p512_w8_crom256_v4_0_0_currelease.jed" + --local filename = "ignore/8mb_v2_0p.jed" + + --first put/verify jtag statemachine is in RESET + pbje.goto_state("RESET") + + check_IDCODE() + + + --cpld.erase() + ---[[ + + + --program CPLD + local jed_file = assert(io.open(filename, "rb")) + + + --find and consume the "L00000" start of usemap token in jedec file + files.readtill_line(jed_file, "L00000", false) + check_IDCODE() + cpld.program(jed_file, false) + + --close jedec file + assert(jed_file:close()) + --]] + + + --verify programming + --open jedec file + --local jed_file = assert(io.open("ignore/8mb_v2_0p.jed", "rb")) + --local jed_file = assert(io.open("ignore/TKROM_prod_p512_w8_crom256_v4_0_0_currelease.jed", "rb")) + local jed_file = assert(io.open(filename, "rb")) + + --check_IDCODE() + --find and consume the "L00000" start of usemap token in jedec file + files.readtill_line(jed_file, "L00000") + --jed file needs to be read up to and consumed the L00000 command line so only the bit stream follows + cpld.verify(jed_file, false) + + --close jedec file + assert(jed_file:close()) + + --[[ + + --secure CPLD + cpld.secure() + + --can usercode be verified when secured..? NOPE! + --verify programming + --open jedec file + local jed_file = assert(io.open("ignore/8mb_v2_0p.jed", "rb")) + + check_IDCODE() + --find and consume the "L00000" start of usemap token in jedec file + files.readtill_line(jed_file, "L00000") + --jed file needs to be read up to and consumed the L00000 command line so only the bit stream follows + cpld.verify(jed_file, false) + + --close jedec file + assert(jed_file:close()) + + --]] + +end + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +jtag.wait_pbje_done = wait_pbje_done +jtag.run_jtag = run_jtag +--jtag.sleep = sleep + +-- return the module's table +return jtag diff --git a/host/scripts/jtag/lc4000v.lua b/host/scripts/jtag/lc4000v.lua new file mode 100644 index 0000000..df96151 --- /dev/null +++ b/host/scripts/jtag/lc4000v.lua @@ -0,0 +1,702 @@ + +-- create the module's table +local lc4000v = {} + +-- import required modules +local time = require "scripts.app.time" +local dict = require "scripts.app.dict" +local files = require "scripts.app.files" + +local pbje = require "scripts.jtag.pbje" + +--TODO this should report error/success if matches expected for this device +local function check_idcode(debug) + + local idcode_len = 32 --hex digits + + --first put/verify jtag statemachine is in RESET + pbje.goto_state("RESET") + + --by default jtag should be in IDCODE or BYPASS if IDCODE not present + --The TDI pin doesn't even have to be working to scan out IDCODE by this means + + --let's just put in IDCODE mode + ---[[ + --Mach XO verify ID code +-- ! Check the IDCODE +-- +-- ! Shift in IDCODE(0x16) instruction +-- SIR 8 TDI (16); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x16) + + --return to default state after SIR + --doesn't appear to actually be needed +-- pbje.goto_state("PAUSE_IR") + +-- SDR 32 TDI (FFFFFFFF) +-- TDO (01281043) +-- MASK (FFFFFFFF); + --pbje.goto_state("SHIFT_DR") + --rv = pbje.scan( 32, "HIGH", true) + --print("return data:", string.format(" %X, ",rv)) + --]] + + + + --change to SCAN-DR state + pbje.goto_state("SHIFT_DR") + + --scan out 32bit IDCODE while scanning in 1's to TDI + rv = pbje.scan( 32, "HIGH", true ) + if debug then print("return data:", string.format("%X",rv)) end + rv = string.format("%16.16X",rv) + if debug then print(rv) end + rv = string.sub(rv, ((64-idcode_len)/4)+1, 64/4) + + --print("return data:", string.format(" %X, ",rv)) + print("read idcode:", rv) + + --if( rv == 0x1281043 ) then + if( rv == "01281043" ) then + -- Mach XO 256 01281043 + -- 4032v (01805043) + -- 4064v (01809043) + -- + -- 9536xl + -- //Loading device with 'idcode' instruction. + -- SIR 8 TDI (fe) SMASK (ff) ; + -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ; + -- + -- 9572xl + -- //Loading device with 'idcode' instruction. + -- SIR 8 TDI (fe) SMASK (ff) ; + -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9604093) MASK (0fffffff) ; + -- test read gives 59604093 + print("IDCODE matches MACHXO-256") + --elseif ( rv==0x01805043 ) then + elseif ( rv=="01805043" ) then + print("IDCODE matches LC4032V") + --elseif ( rv==0x01809043 ) then + elseif ( rv=="01809043" ) then + print("IDCODE matches LC4064V") + else + print("no match for IDCODE") + end + + --xilinx IDCODE command is different + --//Loading device with 'idcode' instruction. + --SIR 8 TDI (fe) SMASK (ff) ; + --SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ; +-- pbje.goto_state("SHIFT_IR") +-- pbje.scan( 8, 0xfe) +-- pbje.goto_state("SHIFT_DR") +-- rv = pbje.scan( 32, "HIGH", true) +-- print("return data:", string.format(" %X, ",rv)) + +end + + +local function done_exit(debug) + --! Program DONE bit + -- + --! Shift in ISC PROGRAM DONE(0x2F) instruction + --SIR 8 TDI (2F); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x2F) + --RUNTEST IDLE 5 TCK 5.00E-002 SEC; + pbje.runtest( "IDLE", 5, 0.05 ) + +--IDK why this is done twice?! it's in original svf, so whatever.. + --! Shift in ISC PROGRAM DONE(0x2F) instruction + --SIR 8 TDI (2F); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x2F) + --RUNTEST IDLE 5 TCK 5.00E-002 SEC; + pbje.runtest( "IDLE", 5, 0.05 ) + + --! Shift in ISC DISABLE(0x1E) instruction + --SIR 8 TDI (1E); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x1E) + --RUNTEST IDLE 5 TCK 2.00E-001 SEC; + pbje.runtest( "IDLE", 5, 0.2 ) + + --! Shift in BYPASS(0xFF) instruction + --SIR 8 TDI (FF); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0xFF) + --RUNTEST IDLE 32 TCK 1.00E-002 SEC; + pbje.runtest( "IDLE", 32, 0.01) + + --! Shift in IDCODE(0x16) instruction + check_idcode() + --SIR 8 TDI (16) + -- TDO (1D) + -- MASK (FF); + -- + -- + --! Exit the programming mode + -- + --! Shift in ISC DISABLE(0x1E) instruction + --SIR 8 TDI (1E); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x1E) + --RUNTEST IDLE 3 TCK 2.00E-001 SEC; + pbje.runtest( "IDLE", 3, 0.2) +end + + +local function erase(debug) + + ---[[ LATTICE LC4032V + -- ERASE THE CHIP + --! Program Bscan register + -- + --! Shift in Preload(0x1C) instruction + --SIR 8 TDI (1C); + --SDR 68 TDI (00000000000000000); + --THIS MATTERS! tried machxo boundary scan of all high, and it didn't erase + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x1c) + pbje.goto_state("SHIFT_DR") + pbje.scan( 68, "LOW") + + -- + -- + --! Enable the programming mode + -- + --! Shift in ISC ENABLE(0x15) instruction + --SIR 8 TDI (15); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x15) + pbje.runtest( "IDLE", 3, 0.1 ) + --RUNTEST IDLE 3 TCK 2.00E-002 SEC; + -- + -- + --! Shift in ISC ERASE(0x03) instruction + --SIR 8 TDI (03); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x03) + pbje.runtest( "IDLE", 3, 0.1 ) + --RUNTEST IDLE 3 TCK 1.00E-001 SEC; + + --! Shift in DISCHARGE(0x14) instruction + --SIR 8 TDI (14); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x14) + pbje.runtest( "IDLE", 3, 0.1 ) + --RUNTEST IDLE 3 TCK 1.00E-002 SEC; + -- + + + --]] + + +-- ! Read the status bit +-- +-- ! Shift in READ STATUS(0xB2) instruction +-- SIR 8 TDI (B2); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0xb2) + pbje.runtest( "IDLE", 5 ) +-- RUNTEST IDLE 5 TCK 1.00E-003 SEC; +-- SDR 1 TDI (0) +-- TDO (0); + pbje.goto_state("SHIFT_DR") + rv = pbje.scan( 1, "LOW", true) % 2 --mask out all but the last bit + if( rv == 0 ) then + print("status bit clear as expected, for erasure") --seems the LC4032v has this bit as well. + else + print("ERROR status bit was set, think this indicates not erased...") --don't think it erased, or not yet done.? + end + +end + +local function check_usercode(expected, len, debug) + + --first put/verify jtag statemachine is in RESET + pbje.goto_state("RESET") + + --by default jtag should be in IDCODE or BYPASS if IDCODE not present + --The TDI pin doesn't even have to be working to scan out IDCODE by this means + + --! Verify USERCODE + -- + --! Shift in READ USERCODE(0x17) instruction + --SIR 8 TDI (17); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x17) + --SDR 32 TDI (FFFFFFFF) + -- TDO (000005DE); + --change to SCAN-DR state + pbje.goto_state("SHIFT_DR") + + --scan out 32bit IDCODE while scanning in 1's to TDI + rv = pbje.scan( len, "HIGH", true ) + if debug then print("return data:", string.format(" %X, ",rv)) end + rv = string.format("%8.8X",rv) + + --rv = string.sub(rv, ((64-len)/4)+1, 64) + --rv = string.sub(rv, 9, 16) + rv = string.sub(rv, ((64-len)/4)+1, 64/4) + + if debug then print("read usercode:", rv) end +-- expected = string.format("%8.8X",expected) + if debug then print("expected usercode:", expected) end + + if rv == expected then + if debug then print("verified usercode") end + return true + else + if debug then print("usercode didn't match expected") end + return false + end + + --return rv +end + + +--len in bits +local function prgm_usercode(usercode, len, debug) + + + --first put/verify jtag statemachine is in RESET +-- goto_state("RESET") + + --by default jtag should be in IDCODE or BYPASS if IDCODE not present + --The TDI pin doesn't even have to be working to scan out IDCODE by this means + + --! Program USERCODE + -- + --! Shift in ISC PROGRAM USERCODE(0x1A) instruction + --SIR 8 TDI (1A); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x1A) + --SDR 32 TDI (000005DE); + pbje.goto_state("SHIFT_DR") +-- while len > 4 do +-- scan_hold( 16, tonumber(string.sub(usercode,len-3,len),16) ) +-- len = len - 4 +-- end +-- scan( 16, tonumber(string.sub(usercode,1,len),16) ) + + --scan in 16Bytes at a time + local send_data + local user_len = len/4 --4bits per hex char + while user_len > 4 do --4chars * 4bits/hexchar = 16bits will run 10x 16bits = 160bits + send_data = string.sub(usercode, user_len-3, user_len) + if debug then print("sending 16bits:", send_data) end + pbje.scan_hold(16, tonumber(send_data,16) ) + user_len = user_len - 4 + end + --16bits remain + send_data = string.sub(usercode, 1, user_len) + pbje.scan(user_len*4, tonumber(send_data,16)) + + --RUNTEST IDLE 3 TCK 1.30E-002 SEC; + pbje.runtest( "IDLE", 3, 0.013) + +end + + +local function program_fuse_line(jed_file, debug) + + + --ispLEVER .jed files have 3 lines per fuse address + local rowdata = files.jedec_3ln_2hexstr(jed_file, false) + local fuse_len = string.len(rowdata) --4bits per hex character + if debug then print(fuse_len*4, "bits total, data:", rowdata) end + +--! SHIFT IN DATA ROW = 1 + pbje.goto_state("SHIFT_DR") +--SDR 172 TDI (FFFFC1FF83E31FFE118C37805F0FC7FFFFFFF8FE7FD); + + --need to scan in fuse stream now + + --if the data is all FF we can shift with TDI set to speed up process + --when testing SNES v2.0P2 prototype, this saved ~1sec of flash time 3.5->2.5sec + if rowdata == "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" then + if debug then print("row is all FF") end + pbje.scan(fuse_len*4, "HIGH") --4bits per hex char + --scan(172, "HIGH") + --RUNTEST IDLE 3 TCK 1.30E-002 SEC; + pbje.runtest( "IDLE", 3, 0.013) --appear to actually need this delay.. + return --nothing else needed + end + + --scan in 16Bytes at a time + local send_data + local FFFF_count --number of chunks that are 0xFFFF + local next_data --look ahead for speed up of high FFFF data + while fuse_len > 4 do --4chars * 4bits/hexchar = 16bits will run 10x 16bits = 160bits + send_data = string.sub(rowdata, fuse_len-3, fuse_len) + if debug then print("sending 16bits:", send_data) end + --if the data is all FF we can shift with TDI set to speed up process + --this didn't give any speedup probably because it's still a data transfer of same size + --to get actual speed up would have to look ahead, and see how many FFFF chunks there are and combine + --this is all working now, and maximizes TDI "HIGH" clockings without transferring data + --but it didn't give much speed up on the LC4032V SNES board, thinking it might give better speed up on MachXO256 + --LC4032V sometimes got down to 2.1sec from 2.5sec, but not consistent + if send_data == "FFFF" then + if debug then print("found 0xFFFF block") end + FFFF_count = 1 + fuse_len = fuse_len - 4 + + next_data = string.sub(rowdata, fuse_len-3, fuse_len) + --look ahead to see if next 16bits are also high + while next_data == "FFFF" and fuse_len > 4 do + if debug then print("found more than 1 0xFFFF block") end + FFFF_count = FFFF_count + 1 + fuse_len = fuse_len - 4 + next_data = string.sub(rowdata, fuse_len-3, fuse_len) + -- if next_data ~= "FFFF" then + -- FFFF_count = FFFF_count - 1 + -- end + end + + --send total count that was 0xFFFF + if debug then print("found", FFFF_count, "total FFFF blocks") end + --REPORTING uncomment to get idea of how much savings there ends up being + --if FFFF_count > 1 then print(FFFF_count, "total FFFF blocks") end + --most are only 3-4 not a lot of savings on LC4032V + pbje.scan_hold(16*FFFF_count, "HIGH") --scan 16 bits with TDI forced high + --fuse_len = fuse_len - 4*FFFF_count + else + pbje.scan_hold(16, tonumber(send_data,16) ) + fuse_len = fuse_len - 4 + end + end + --12bits remain + send_data = string.sub(rowdata, 1, fuse_len) + pbje.scan(fuse_len*4, tonumber(send_data,16)) + +--RUNTEST IDLE 3 TCK 1.30E-002 SEC; + pbje.runtest( "IDLE", 3, 0.013) --appear to actually need this delay.. + + +end + + +--erase & program the device +local function program(jed_file, debug) +--! Program Bscan register +-- +--! Shift in Preload(0x1C) instruction +--SIR 8 TDI (1C); +--SDR 68 TDI (00000000000000000); +-- +-- +--! Enable the programming mode +-- +--! Shift in ISC ENABLE(0x15) instruction +--SIR 8 TDI (15); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x15) +--RUNTEST IDLE 3 TCK 2.00E-002 SEC; + pbje.runtest( "IDLE", 3, 0.02 ) +-- +-- +--! Erase the device + erase() +-- +--! Shift in ISC ERASE(0x03) instruction +--SIR 8 TDI (03); +--RUNTEST IDLE 3 TCK 1.00E-001 SEC; +--! Shift in DISCHARGE(0x14) instruction +--SIR 8 TDI (14); +--RUNTEST IDLE 3 TCK 1.00E-002 SEC; +-- +-- +--! Full Address Program Fuse Map +-- +--! Shift in ISC ADDRESS INIT(0x21) instruction +--SIR 8 TDI (21); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x21) +--STATE IDLE; + pbje.goto_state("IDLE") + +--! Shift in ISC PROGRAM INCR(0x27) instruction +--SIR 8 TDI (27); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x27) + + + --Now we need to program 100 lines 172bits/line (LC4032V) + local fuse_lines = 100 + local errors = 0 + time.start() + while fuse_lines > 0 do + program_fuse_line(jed_file, false) + fuse_lines = fuse_lines-1 + end + + time.report(172*100/8/1024) --172 bits/line, 100 lines, 8bit/byte, 1024byte/KB + +--! SHIFT IN DATA ROW = 1 +--SDR 172 TDI (FFFFC1FF83E31FFE118C37805F0FC7FFFFFFF8FE7FD); +--RUNTEST IDLE 3 TCK 1.30E-002 SEC; + +--! Shift in Data Row = 2 +--SDR 172 TDI (FFFFC1FF83E31FFE118C7F807F0FC7FFFFFFF8FE7FF); +--RUNTEST IDLE 3 TCK 1.30E-002 SEC; + + + + --! Verify USERCODE + -- + --! Shift in READ USERCODE(0x17) instruction + --SIR 8 TDI (17); + --SDR 32 TDI (FFFFFFFF) + -- TDO (000005DE); + --need to read expected user code from jedec file + local filecode = files.readtill_line(jed_file, "UH") + if debug then print("file usercode line:", filecode) end + filecode = string.sub(filecode, 3, 10) + if debug then print("hex usercode:", filecode) end + + prgm_usercode(filecode, 32, true) + + + --local usercode = check_usercode(0x000005DE, 32) + if check_usercode(filecode, 32) then + print("SUCCESS! VERIFIED USER CODE") + else + print("FAILED! USER CODE VERIFICATION") + end + + --The svf file leaves CPLD in this state while verifying, but + --the verify svf proves we should be able to leave this state during verification steps + + + done_exit(debug) + +end + +local function secure(debug) +--! Enable the programming mode +-- +--! Shift in ISC ENABLE(0x15) instruction +--SIR 8 TDI (15); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x15) +--RUNTEST IDLE 3 TCK 2.00E-002 SEC; + pbje.runtest( "IDLE", 3, 0.02) + +--! Secure device +-- +--! Shift in ISC PROGRAM SECURITY(0x09) instruction +--SIR 8 TDI (09); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x09) +--RUNTEST IDLE 3 TCK 5.00E-002 SEC; + pbje.runtest( "IDLE", 3, 0.05) + pbje.goto_state("IDLE") +--STATE IDLE; +-- + done_exit(debug) +end + + +local function verify_fuse_line(jed_file, debug) + + --! Shift Out Data Row = 1 + --SDR 172 TDI (0000000000000000000000000000000000000000000) + pbje.goto_state("SHIFT_DR") + -- TDO (FFFFC1FF83E31FFE118C37805F0FC7FFFFFFF8FE7FD); + -- FFFFFF8FE7FD, + -- FC7FFFFFFF8FE7FD + local dout + local read_str + dout = pbje.scan_hold( 64, "LOW", true) + read_str = string.format("%16.16X",dout) + if debug then print("return data:", string.format(" %16.16X, ",dout)) end + dout = pbje.scan_hold( 64, "LOW", true) + read_str = string.format("%16.16X",dout) .. read_str + if debug then print("return data:", string.format(" %16.16X, ",dout)) end + dout = pbje.scan( 44, "LOW", true) + if debug then print("return data:", string.format(" %16.16X, ",dout)) end + --print("return data:", string.sub(string.format("%16.16X", dout) , 6, 16)) + if debug then print("return data:", string.sub(string.format("%16.16X", dout) , ((64-44)/4)+1, (64/4))) end + read_str = string.sub(string.format("%16.16X", dout) , ((64-44)/4)+1, (64/4)) .. read_str + if debug then print(read_str) end + + -- + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 3, 0.001) +-- goto_state("SHIFT_DR") +-- --! Shift Out Data Row = 2 + + --ispLEVER .jed files have 3 lines per fuse address + local tempdata = files.jedec_3ln_2hexstr(jed_file, false) + if debug then print (tempdata) end + if string.match(tempdata, read_str) and (string.len(tempdata) == string.len(read_str)) then + if debug then print("verified line!") end + return true + else + if debug then print("failed to verify line") end + return false + end + +-- tempdata = files.jedec_3ln_2hexstr(jed_file, false) +-- print (tempdata) +-- tempdata = files.jedec_3ln_2hexstr(jed_file, false) +-- print (tempdata) +-- tempdata = files.jedec_3ln_2hexstr(jed_file, false) +-- print (tempdata) + + -- + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; +-- runtest( "IDLE", 3, 0.001) +-- goto_state("SHIFT_DR") +-- --! Shift Out Data Row = 2 +-- dout = pbje.scan_hold( 64, "LOW", true) +-- print("return data:", string.format(" %X, ",dout)) +-- dout = pbje.scan_hold( 64, "LOW", true) +-- print("return data:", string.format(" %X, ",dout)) +-- dout = pbje.scan( 44, "LOW", true) +-- print("return data:", string.format(" %X, ",dout)) + --SDR 172 TDI (0000000000000000000000000000000000000000000) + -- TDO (FFFFC1FF83E31FFE118C7F807F0FC7FFFFFFF8FE7FF); + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 3 + --SDR 172 TDI (0000000000000000000000000000000000000000000) + -- TDO (BFFFC1FF83E31FFE118C7E807F0FC7FFFFFFF8FE7FF); + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 4 + --SDR 172 TDI (0000000000000000000000000000000000000000000) + -- TDO (FFFFC1FF83E31FFE118C6F807F0FC7FFFFFFF8FE7FB); + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 5 + --SDR 172 TDI (0000000000000000000000000000000000000000000) + -- TDO (FFFFC1FF83E31FFE118C7F807F0FC7FFFFFFF8FE7FF); + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + -- .... +end + + +local function verify(jed_file, debug) + --! Check the IDCODE + -- + --! Shift in IDCODE(0x16) instruction + --SIR 8 TDI (16); + --STATE IDLE; + --SDR 32 TDI (FFFFFFFF) + -- TDO (01805043) + -- MASK (0FFFFFFF); + check_idcode() + + -- + --! Program Bscan register + -- + --! Shift in Preload(0x1C) instruction + --SIR 8 TDI (1C); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x1C) + --SDR 68 TDI (00000000000000000); + pbje.goto_state("SHIFT_DR") + pbje.scan( 68, "LOW") +--local function scan( numbits, data_in, data_out, debug ) + -- + -- + --! Enable the programming mode + -- + --! Shift in ISC ENABLE(0x15) instruction + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x15) + --SIR 8 TDI (15); + --RUNTEST IDLE 3 TCK 2.00E-002 SEC; + pbje.runtest( "IDLE", 3, 0.02 ) + -- + -- + --! Full Address Verify Fuse Map + -- + --! Shift in ISC ADDRESS SHIFT(0x01) instruction + --SIR 8 TDI (01); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x01) + --SDR 100 TDI (8000000000000000000000000); + pbje.goto_state("SHIFT_DR") +-- HERE + pbje.scan_hold( 84, "LOW") + pbje.scan( 16, 0x8000) + + --! Shift in ISC READ INCR(0x2A) instruction + --SIR 8 TDI (2A); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x2A) + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 3, 0.001) + + + + --Now we need to read and verify 100 lines 172bits/line (LC4032V) + local fuse_lines = 100 + local errors = 0 + time.start() + while fuse_lines > 0 do + if not verify_fuse_line(jed_file, false) then + print("FAILED TO VERIFY LINE", fuse_lines) + errors = errors+1 + end + fuse_lines = fuse_lines-1 + end + + if errors == 0 then + print("SUCCESSFULLY Verified all fuse lines!") + else + print(errors, "errors were found when trying to verify all fuse lines. FAILED!") + end + time.report(172*100/8/1024) --172 bits/line, 100 lines, 8bit/byte, 1024byte/KB + + --! Verify USERCODE + -- + --! Shift in READ USERCODE(0x17) instruction + --SIR 8 TDI (17); + --SDR 32 TDI (FFFFFFFF) + -- TDO (000005DE); + --need to read expected user code from jedec file + local filecode = files.readtill_line(jed_file, "UH") + if debug then print("file usercode line:", filecode) end + filecode = string.sub(filecode, 3, 10) + if debug then print("hex usercode:", filecode) end + --local usercode = check_USERCODE(0x000005DE, 32) + if check_usercode(filecode, 32) then + print("SUCCESS! VERIFIED USER CODE") + else + print("FAILED! USER CODE VERIFICATION") + end + + done_exit(debug) + + -- + -- + --! Exit the programming mode + -- + --! Shift in ISC DISABLE(0x1E) instruction + --SIR 8 TDI (1E); + --RUNTEST IDLE 3 TCK 2.00E-001 SEC; + -- + -- + -- + --! Shift in IDCODE(0x16) instruction + --SIR 8 TDI (16) + -- TDO (1D) + -- MASK (FF); + + check_idcode() +end + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +lc4000v.done_exit = done_exit +lc4000v.erase = erase +lc4000v.program = program +lc4000v.verify = verify +lc4000v.secure = secure + + +-- return the module's table +return lc4000v + diff --git a/host/scripts/jtag/machXO256.lua b/host/scripts/jtag/machXO256.lua new file mode 100644 index 0000000..e46de8a --- /dev/null +++ b/host/scripts/jtag/machXO256.lua @@ -0,0 +1,1010 @@ + +-- create the module's table +local machXO256 = {} + +-- import required modules +local time = require "scripts.app.time" +local dict = require "scripts.app.dict" +local files = require "scripts.app.files" + +local pbje = require "scripts.jtag.pbje" + +--TODO this should report error/success if matches expected for this device +local function check_idcode(debug) + + local idcode_len = 32 --hex digits + + --first put/verify jtag statemachine is in RESET + pbje.goto_state("RESET") + + --by default jtag should be in IDCODE or BYPASS if IDCODE not present + --The TDI pin doesn't even have to be working to scan out IDCODE by this means + + --let's just put in IDCODE mode + ---[[ + --Mach XO verify ID code +-- ! Check the IDCODE +-- +-- ! Shift in IDCODE(0x16) instruction +-- SIR 8 TDI (16); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x16) + + --return to default state after SIR + --doesn't appear to actually be needed +-- pbje.goto_state("PAUSE_IR") + +-- SDR 32 TDI (FFFFFFFF) +-- TDO (01281043) +-- MASK (FFFFFFFF); + --pbje.goto_state("SHIFT_DR") + --rv = pbje.scan( 32, "HIGH", true) + --print("return data:", string.format(" %X, ",rv)) + --]] + + + + --change to SCAN-DR state + pbje.goto_state("SHIFT_DR") + + --scan out 32bit IDCODE while scanning in 1's to TDI + rv = pbje.scan( 32, "HIGH", true ) + if debug then print("return data:", string.format("%X",rv)) end + rv = string.format("%16.16X",rv) + if debug then print(rv) end + rv = string.sub(rv, ((64-idcode_len)/4)+1, 64/4) + + --print("return data:", string.format(" %X, ",rv)) + print("read idcode:", rv) + + --if( rv == 0x1281043 ) then + if( rv == "01281043" ) then + -- Mach XO 256 01281043 + -- 4032v (01805043) + -- 4064v (01809043) + -- + -- 9536xl + -- //Loading device with 'idcode' instruction. + -- SIR 8 TDI (fe) SMASK (ff) ; + -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ; + -- + -- 9572xl + -- //Loading device with 'idcode' instruction. + -- SIR 8 TDI (fe) SMASK (ff) ; + -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9604093) MASK (0fffffff) ; + -- test read gives 59604093 + print("IDCODE matches MACHXO-256") + --elseif ( rv==0x01805043 ) then + elseif ( rv=="01805043" ) then + print("IDCODE matches LC4032V") + --elseif ( rv==0x01809043 ) then + elseif ( rv=="01809043" ) then + print("IDCODE matches LC4064V") + else + print("no match for IDCODE") + end + + --xilinx IDCODE command is different + --//Loading device with 'idcode' instruction. + --SIR 8 TDI (fe) SMASK (ff) ; + --SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ; +-- pbje.goto_state("SHIFT_IR") +-- pbje.scan( 8, 0xfe) +-- pbje.goto_state("SHIFT_DR") +-- rv = pbje.scan( 32, "HIGH", true) +-- print("return data:", string.format(" %X, ",rv)) + +end + + +local function done_exit(debug) + --! Program DONE bit + -- + --! Shift in ISC PROGRAM DONE(0x2F) instruction + --SIR 8 TDI (2F); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x2F) + --RUNTEST IDLE 5 TCK 5.00E-002 SEC; + pbje.runtest( "IDLE", 5, 0.05 ) + --SDR 1 TDI (0) + -- TDO (1); + pbje.goto_state("SHIFT_DR") pbje.scan( 1, "LOW") + --! Shift in BYPASS(0xFF) instruction + --SIR 8 TDI (FF) + -- TDO (1D); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0xFF) + -- + -- + --! Exit the programming mode + -- + --! Shift in ISC DISABLE(0x1E) instruction + --SIR 8 TDI (1E); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x1E) + --RUNTEST IDLE 5 TCK 5.00E-002 SEC; + pbje.runtest( "IDLE", 5, 0.05 ) + + --! Shift in BYPASS(0xFF) instruction + --SIR 8 TDI (FF); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0xFF) + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001 ) + -- + -- + --! Verify SRAM DONE Bit + -- + --! Shift in BYPASS(0xFF) instruction + --SIR 8 TDI (FF) + -- TDO (1D); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0xFF) + +end + +local function check_status(debug) +--! Read the status bit +-- +--! Shift in READ STATUS(0xB2) instruction +--SIR 8 TDI (B2); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0xB2) +--RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.7 ) +--SDR 1 TDI (0) +-- TDO (0); + pbje.goto_state("SHIFT_DR") + rv = pbje.scan( 1, 0x0, true) % 2 --mask out all but the last bit + if( rv == 0) then + print("MachXO-256 status bit clear as expected") + else + print("MachXO-256 status bit WAS NOT clear as expected") + end + + return rv +end + +local function erase(debug) + + + --MACH XO 256 + --! Program Bscan register + -- + --! Shift in Preload(0x1C) instruction + --SIR 8 TDI (1C); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x1C) + --SDR 160 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF); + pbje.goto_state("SHIFT_DR") pbje.scan( 160, "HIGH") + --the HIGHZ instruction seems more fitting... 0x18 + + +-- ! MACH-XO Erase the device +-- ! Enable the programming mode +-- +-- ! Shift in ISC ENABLE(0x15) instruction +-- SIR 8 TDI (15); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x15) +-- RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5) + +-- ! Shift in ISC SRAM ENABLE(0x55) instruction +-- SIR 8 TDI (55); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x55) +-- RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5 ) + +-- ! Shift in ISC ERASE(0x03) instruction +-- SIR 8 TDI (03); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x03) +-- RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5 ) + +-- ! Shift in ISC ENABLE(0x15) instruction +-- SIR 8 TDI (15); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x15) +-- RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5 ) + +-- ! Shift in ISC ERASE(0x03) instruction +-- SIR 8 TDI (03); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x03) +-- RUNTEST IDLE 5 TCK 1.00E+001 SEC; + pbje.runtest( "IDLE", 5, 1 ) --seems to fail if under ~0.5sec + --pbje.runtest( "IDLE", 5, 0.7 ) +-- SDR 1 TDI (0) +-- TDO (1); TDO must be set + pbje.goto_state("SHIFT_DR") + rv = pbje.scan( 1, 0x0, true) % 2 --mask out all but the last bit + if( rv == 1) then + print("MachXO-256 CPLD erasure success!!!") + else + print("failed to erase MachXO-256 CPLD") + end + --]] + + check_status() + +end + +local function check_usercode(expected, len, debug) + + --first put/verify jtag statemachine is in RESET + pbje.goto_state("RESET") + + --by default jtag should be in IDCODE or BYPASS if IDCODE not present + --The TDI pin doesn't even have to be working to scan out IDCODE by this means + + --! Verify USERCODE + -- + --! Shift in READ USERCODE(0x17) instruction + --SIR 8 TDI (17); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x17) + --SDR 32 TDI (FFFFFFFF) + -- TDO (000005DE); + --change to SCAN-DR state + pbje.goto_state("SHIFT_DR") + + --scan out 32bit IDCODE while scanning in 1's to TDI + rv = pbje.scan( len, "HIGH", true ) + if debug then print("return data:", string.format(" %X, ",rv)) end + rv = string.format("%8.8X",rv) + + --rv = string.sub(rv, ((64-len)/4)+1, 64) + --rv = string.sub(rv, 9, 16) + rv = string.sub(rv, ((64-len)/4)+1, 64/4) + + if debug then print("read usercode:", rv) end +-- expected = string.format("%8.8X",expected) + if debug then print("expected usercode:", expected) end + + if rv == expected then + if debug then print("verified usercode") end + return true + else + if debug then print("usercode didn't match expected") end + return false + end + + --return rv +end + + +--TODO don't think this works +--len in bits +local function prgm_usercode(usercode, len, debug) + --! Program USERCODE + -- + --! Shift in READ USERCODE(0x17) instruction + --SIR 8 TDI (17); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x17) + --SDR 32 TDI (00000000); + pbje.goto_state("SHIFT_DR") --pbje.scan( 32, usercode) + --scan in 16Bytes at a time + local send_data + local user_len = len/4 --4bits per hex char + while user_len > 4 do --4chars * 4bits/hexchar = 16bits will run 10x 16bits = 160bits + send_data = string.sub(usercode, user_len-3, user_len) + if debug then print("sending 16bits:", send_data) end + pbje.scan_hold(16, tonumber(send_data,16) ) + user_len = user_len - 4 + end + --16bits remain + send_data = string.sub(usercode, 1, user_len) + pbje.scan(user_len*4, tonumber(send_data,16)) + + + --! Shift in ISC PROGRAM USERCODE(0x1A) instruction + --SIR 8 TDI (1A); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x1A) + --RUNTEST IDLE 5 TCK 1.00E-002 SEC; + pbje.runtest("IDLE", 5, 0.01) + -- + -- + --! Read the status bit + -- + --! Shift in READ STATUS(0xB2) instruction + --SIR 8 TDI (B2); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --SDR 1 TDI (0) + -- TDO (0); + check_status(); + + + --first put/verify jtag statemachine is in RESET +-- goto_state("RESET") + + --by default jtag should be in IDCODE or BYPASS if IDCODE not present + --The TDI pin doesn't even have to be working to scan out IDCODE by this means + + --[[ + --! Program USERCODE + -- + --! Shift in ISC PROGRAM USERCODE(0x1A) instruction + --SIR 8 TDI (1A); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x1A) + --SDR 32 TDI (000005DE); + pbje.goto_state("SHIFT_DR") +-- while len > 4 do +-- scan_hold( 16, tonumber(string.sub(usercode,len-3,len),16) ) +-- len = len - 4 +-- end +-- scan( 16, tonumber(string.sub(usercode,1,len),16) ) + + --scan in 16Bytes at a time + local send_data + local user_len = len/4 --4bits per hex char + while user_len > 4 do --4chars * 4bits/hexchar = 16bits will run 10x 16bits = 160bits + send_data = string.sub(usercode, user_len-3, user_len) + if debug then print("sending 16bits:", send_data) end + pbje.scan_hold(16, tonumber(send_data,16) ) + user_len = user_len - 4 + end + --16bits remain + send_data = string.sub(usercode, 1, user_len) + pbje.scan(user_len*4, tonumber(send_data,16)) + + --RUNTEST IDLE 3 TCK 1.30E-002 SEC; + pbje.runtest( "IDLE", 3, 0.013) + --]] + +end + +local function end_row_flash() + --! Shift in LSCC PROGRAM INCR RTI(0x67) instruction + --SIR 8 TDI (67); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x67) + --RUNTEST IDLE 5 TCK 1.00E-002 SEC; + pbje.runtest( "IDLE", 5, 0.01) + --STATE DRPAUSE; + pbje.goto_state("PAUSE_DR") + --! Shift in DATA SHIFT(0x02) instruction + --SIR 8 TDI (02); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x02) + +end + +local function program_fuse_line(jed_file, debug) + + + --ispLEVER .jed files have 3 lines per fuse address + local rowdata = files.jedec_3ln_2hexstr(jed_file, false) + local fuse_len = string.len(rowdata) --4bits per hex character + if debug then print(fuse_len*4, "bits total, data:", rowdata) end + +--! SHIFT IN DATA ROW = 1 + --pbje.goto_state("SHIFT_DR") +--SDR 172 TDI (FFFFC1FF83E31FFE118C37805F0FC7FFFFFFF8FE7FD); + + --need to scan in fuse stream now + --! Shift in Row = 1 + --SDR 192 TDI (FFF7BFF3DEFFCEEFFF3BBFFCEEFFF3DFFFFDEFFF3BBFFCFF); + pbje.goto_state("SHIFT_DR") + + + --Now we need to program 295 lines 192bits/line (machXO-256) + + --if the data is all FF we can shift with TDI set to speed up process + --when testing SNES v2.0P2 prototype, this saved ~1sec of flash time 3.5->2.5sec + --NES machXO-256 was 10-12sec flash, & 3-6sec verify without any TDI=1 speedup + --when grouping of 16bit FFFF chunks got ~1sec speedup on NES MachXO-256 down to 9-11sec flash time + ---[[ + if rowdata == "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" then --48*4 = 192bits all set + --for MMC3 file this only happens for a single line.. + if debug then print("row is all FF") end + pbje.scan(fuse_len*4, "HIGH") --4bits per hex char + --scan(172, "HIGH") + --RUNTEST IDLE 3 TCK 1.30E-002 SEC; + --pbje.runtest( "IDLE", 3, 0.013) --appear to actually need this delay.. + --print("found row all FFFF...") + end_row_flash() + return --nothing else needed + end + --]] + + --scan in 16Bytes at a time + local send_data + local FFFF_count --number of chunks that are 0xFFFF + local next_data --look ahead for speed up of high FFFF data + while fuse_len > 4 do --4chars * 4bits/hexchar = 16bits will run 11x 16bits = 176bits + send_data = string.sub(rowdata, fuse_len-3, fuse_len) + if debug then print("sending 16bits:", send_data) end + --if the data is all FF we can shift with TDI set to speed up process + --this didn't give any speedup probably because it's still a data transfer of same size + --to get actual speed up would have to look ahead, and see how many FFFF chunks there are and combine + --this is all working now, and maximizes TDI "HIGH" clockings without transferring data + --but it didn't give much speed up on the LC4032V SNES board, thinking it might give better speed up on MachXO256 + --LC4032V sometimes got down to 2.1sec from 2.5sec, but not consistent + ---[[ + if send_data == "FFFF" then + if debug then print("found 0xFFFF block") end + FFFF_count = 1 + fuse_len = fuse_len - 4 + + next_data = string.sub(rowdata, fuse_len-3, fuse_len) + --look ahead to see if next 16bits are also high + while next_data == "FFFF" and fuse_len > 4 do + if debug then print("found more than 1 0xFFFF block") end + FFFF_count = FFFF_count + 1 + fuse_len = fuse_len - 4 + next_data = string.sub(rowdata, fuse_len-3, fuse_len) + -- if next_data ~= "FFFF" then + -- FFFF_count = FFFF_count - 1 + -- end + end + + --send total count that was 0xFFFF + if debug then print("found", FFFF_count, "total FFFF blocks") end + --REPORTING uncomment to get idea of how much savings there ends up being + --if FFFF_count > 1 then print(FFFF_count, "total FFFF blocks") end + --most are only 3-4 not a lot of savings on LC4032V + --machXO gives a little speed up here, to 9-11sec from 10-12sec + pbje.scan_hold(16*FFFF_count, "HIGH") --scan 16 bits with TDI forced high + --fuse_len = fuse_len - 4*FFFF_count + else + --]] + pbje.scan_hold(16, tonumber(send_data,16) ) + fuse_len = fuse_len - 4 + end + end + --16bits remain + send_data = string.sub(rowdata, 1, fuse_len) + if debug then print("sending", fuse_len*4, "bits:", send_data) end + pbje.scan(fuse_len*4, tonumber(send_data,16)) + + + end_row_flash() + +end + + +--erase & program the device +local function program(jed_file, debug) + --! Program Bscan register + -- + --! Shift in Preload(0x1C) instruction + --SIR 8 TDI (1C); + --pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x1C) + --SDR 160 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF); + --pbje.goto_state("SHIFT_DR") pbje.scan( 160, "HIGH") + -- + -- + --! Enable the programming mode + -- + --! Shift in ISC ENABLE(0x15) instruction + --SIR 8 TDI (15); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + -- + -- + --! Erase the device + -- + --! Shift in ISC SRAM ENABLE(0x55) instruction + --SIR 8 TDI (55); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --! Shift in ISC ERASE(0x03) instruction + --SIR 8 TDI (03); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --! Shift in ISC ENABLE(0x15) instruction + --SIR 8 TDI (15); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --! Shift in ISC ERASE(0x03) instruction + --SIR 8 TDI (03); + --RUNTEST IDLE 5 TCK 1.00E+001 SEC; + --SDR 1 TDI (0) + -- TDO (1); + -- + -- + --! Read the status bit + -- + --! Shift in READ STATUS(0xB2) instruction + --SIR 8 TDI (B2); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --SDR 1 TDI (0) + -- TDO (0); + -- +--all of above done in erase + -- + --! Program Fuse Map + -- + --! Shift in INIT ADDRESS(0x21) instruction + --SIR 8 TDI (21); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --! Shift in BYPASS(0xFF) instruction + --SIR 8 TDI (FF); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --! Shift in DATA SHIFT(0x02) instruction + --SIR 8 TDI (02); + --! Shift in Row = 1 + --SDR 192 TDI (FFF7BFF3DEFFCDEFFF3BBFFCFCFFF3DFFFFDEFFF37BFFCFF); + --! Shift in LSCC PROGRAM INCR RTI(0x67) instruction + --SIR 8 TDI (67); + --RUNTEST IDLE 5 TCK 1.00E-002 SEC; + --STATE DRPAUSE; + --! Shift in DATA SHIFT(0x02) instruction + --SIR 8 TDI (02); + --! Shift in Row = 2 + --SDR 192 TDI (FFF7BFF3DEFFCDEFFF37BFFCF7FFFF7BFFCDEFFF37BFFCFF); + --! Shift in LSCC PROGRAM INCR RTI(0x67) instruction + --SIR 8 TDI (67); + --RUNTEST IDLE 5 TCK 1.00E-002 SEC; + --STATE DRPAUSE; + --! Shift in DATA SHIFT(0x02) instruction + --SIR 8 TDI (02); + --! Shift in Row = 3 + + erase() + + --should still be in ISC enable mode + --! Program Fuse Map + -- + --! Shift in INIT ADDRESS(0x21) instruction + --SIR 8 TDI (21); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x21) + + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001) + + --! Shift in BYPASS(0xFF) instruction + --SIR 8 TDI (FF); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0xFF) + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001) + + --! Shift in DATA SHIFT(0x02) instruction + --SIR 8 TDI (02); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x02) + + --! Shift in Row = 1 + --SDR 192 TDI (FFF7BFF3DEFFCEEFFF3BBFFCEEFFF3DFFFFDEFFF3BBFFCFF); + --! Shift in LSCC PROGRAM INCR RTI(0x67) instruction + --SIR 8 TDI (67); + --RUNTEST IDLE 5 TCK 1.00E-002 SEC; + --STATE DRPAUSE; + --! Shift in DATA SHIFT(0x02) instruction + --SIR 8 TDI (02); + + --Now we need to program 295 lines 192bits/line (machXO-256) + local fuse_lines = 295 + --local fuse_lines = 2 + local errors = 0 + time.start() + while fuse_lines > 0 do + program_fuse_line(jed_file, false) + fuse_lines = fuse_lines-1 + end + + time.report(192*295/8/1024) --192 bits/line, 295 lines, 8bit/byte, 1024byte/KB + +--! SHIFT IN DATA ROW = 1 +--SDR 172 TDI (FFFFC1FF83E31FFE118C37805F0FC7FFFFFFF8FE7FD); +--RUNTEST IDLE 3 TCK 1.30E-002 SEC; + +--! Shift in Data Row = 2 +--SDR 172 TDI (FFFFC1FF83E31FFE118C7F807F0FC7FFFFFFF8FE7FF); +--RUNTEST IDLE 3 TCK 1.30E-002 SEC; + + + --! Shift in Row = 2 + --SDR 192 TDI (FFF7BFF3DEFFCEEFFF37BFFCF7FFFFBBFFCEEFFF37BFFCFF); + --! Shift in LSCC PROGRAM INCR RTI(0x67) instruction + --SIR 8 TDI (67); + --RUNTEST IDLE 5 TCK 1.00E-002 SEC; + --STATE DRPAUSE; + --! Shift in DATA SHIFT(0x02) instruction + --SIR 8 TDI (02); + --! Shift in Row = 3 + + + + +---[[ + + --! Shift in LSCC PROGRAM INCR RTI(0x67) instruction + --SIR 8 TDI (67); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x67) + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001) + --RUNTEST IDLE 5 TCK 1.00E-002 SEC; + pbje.runtest( "IDLE", 5, 0.01) + --STATE DRPAUSE; + pbje.goto_state("PAUSE_DR") + -- + -- + --! Program USERCODE + -- + --! Shift in READ USERCODE(0x17) instruction + --SIR 8 TDI (17); + --SDR 32 TDI (00000000); + --! Shift in ISC PROGRAM USERCODE(0x1A) instruction + --SIR 8 TDI (1A); + --RUNTEST IDLE 5 TCK 1.00E-002 SEC; + -- + -- + --! Read the status bit + -- + --! Shift in READ STATUS(0xB2) instruction + --SIR 8 TDI (B2); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --SDR 1 TDI (0) + -- TDO (0); + -- + -- + --! Verify Fuse Map + + + --need to read expected user code from jedec file + debug = true + local filecode = files.readtill_line(jed_file, "U0") + if debug then print("file usercode line:", filecode) end + filecode = string.sub(filecode, 3, 10) + if debug then print("hex usercode:", filecode) end + + prgm_usercode(filecode, 32, true) + + + --local usercode = check_usercode(0x000005DE, 32) + if check_usercode(filecode, 32, true) then + print("SUCCESS! VERIFIED USER CODE") + else + print("FAILED! USER CODE VERIFICATION") + end + + --The svf file leaves CPLD in this state while verifying, but + --the verify svf proves we should be able to leave this state during verification steps + + --]] + + check_status() + + done_exit(debug) + +end + + + +--! Secure device +-- +--! Shift in ISC PROGRAM SECURITY(0x09) instruction +--SIR 8 TDI (09); +--RUNTEST IDLE 5 TCK 5.00E-002 SEC; +--STATE IDLE; +-- +-- +--! Read the status bit +-- +--! Shift in READ STATUS(0xB2) instruction +--SIR 8 TDI (B2); +--RUNTEST IDLE 5 TCK 1.00E-003 SEC; +--SDR 1 TDI (0) +-- TDO (0); +-- + +--TODO this is still just LC4000V version +local function secure(debug) +--! Enable the programming mode +-- +--! Shift in ISC ENABLE(0x15) instruction +--SIR 8 TDI (15); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x15) +--RUNTEST IDLE 3 TCK 2.00E-002 SEC; + pbje.runtest( "IDLE", 3, 0.02) + +--! Secure device +-- +--! Shift in ISC PROGRAM SECURITY(0x09) instruction +--SIR 8 TDI (09); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x09) +--RUNTEST IDLE 3 TCK 5.00E-002 SEC; + pbje.runtest( "IDLE", 3, 0.05) + pbje.goto_state("IDLE") +--STATE IDLE; +-- + done_exit(debug) +end + + +local function verify_fuse_line(jed_file, debug) + --! Shift Out Data Row = 1 + --SDR 192 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) + -- TDO (FFF7BFF3DEFFCDEFFF3BBFFCFCFFF3DFFFFDEFFF37BFFCFF); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + + --! Shift Out Data Row = 1 + --SDR 192 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) + -- TDO (FFF7BFF3DEFFCEEFFF3BBFFCEEFFF3DFFFFDEFFF3BBFFCFF); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 2 + --SDR 192 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) + -- TDO (FFF7BFF3DEFFCEEFFF37BFFCF7FFFFBBFFCEEFFF37BFFCFF); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 3 + + + pbje.goto_state("SHIFT_DR") + --192 bits, shift out 64 * 3 = 192 + + local read_str + --first 64bits + dout = pbje.scan_hold( 64, "HIGH", true) + read_str = string.format("%16.16X",dout) + if debug then print("return data:", string.format(" %16.16X, ",dout)) end + + --second 64bits (now 128total) + dout = pbje.scan_hold( 64, "HIGH", true) + read_str = string.format("%16.16X",dout) .. read_str + if debug then print("return data:", string.format(" %16.16X, ",dout)) end + + --last 64bits (192 total) + dout = pbje.scan( 64, "HIGH", true) + if debug then print("return data:", string.format(" %16.16X, ",dout)) end + --print("return data:", string.sub(string.format("%16.16X", dout) , 6, 16)) + --if debug then print("return data:", string.sub(string.format("%16.16X", dout) , ((64-44)/4)+1, (64/4))) end + --read_str = string.sub(string.format("%16.16X", dout) , ((64-44)/4)+1, (64/4)) .. read_str + read_str = string.format("%16.16X",dout) .. read_str + if debug then print(read_str) end + + --! Shift Out Data Row = 2 + --SDR 192 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) + -- TDO (FFF7BFF3DEFFCEEFFF37BFFCF7FFFFBBFFCEEFFF37BFFCFF); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001) + + --ispLEVER .jed files have 3 lines per fuse address + local tempdata = files.jedec_3ln_2hexstr(jed_file, false) + if debug then print (tempdata) end + if string.match(tempdata, read_str) and (string.len(tempdata) == string.len(read_str)) then + if debug then print("verified line!") end + return true + else + if debug then print("failed to verify line") end + return false + end + +-- tempdata = files.jedec_3ln_2hexstr(jed_file, false) +-- print (tempdata) +-- tempdata = files.jedec_3ln_2hexstr(jed_file, false) +-- print (tempdata) +-- tempdata = files.jedec_3ln_2hexstr(jed_file, false) +-- print (tempdata) + + -- + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; +-- runtest( "IDLE", 3, 0.001) +-- goto_state("SHIFT_DR") +-- --! Shift Out Data Row = 2 +-- dout = pbje.scan_hold( 64, "LOW", true) +-- print("return data:", string.format(" %X, ",dout)) +-- dout = pbje.scan_hold( 64, "LOW", true) +-- print("return data:", string.format(" %X, ",dout)) +-- dout = pbje.scan( 44, "LOW", true) +-- print("return data:", string.format(" %X, ",dout)) + --SDR 172 TDI (0000000000000000000000000000000000000000000) + -- TDO (FFFFC1FF83E31FFE118C7F807F0FC7FFFFFFF8FE7FF); + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 3 + --SDR 172 TDI (0000000000000000000000000000000000000000000) + -- TDO (BFFFC1FF83E31FFE118C7E807F0FC7FFFFFFF8FE7FF); + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 4 + --SDR 172 TDI (0000000000000000000000000000000000000000000) + -- TDO (FFFFC1FF83E31FFE118C6F807F0FC7FFFFFFF8FE7FB); + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 5 + --SDR 172 TDI (0000000000000000000000000000000000000000000) + -- TDO (FFFFC1FF83E31FFE118C7F807F0FC7FFFFFFF8FE7FF); + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + -- .... +end + + +--TODO finish usercode verification portion +local function verify(jed_file, debug) + + --! Check the IDCODE + -- + check_idcode() + --! Shift in IDCODE(0x16) instruction + --SIR 8 TDI (16); + --SDR 32 TDI (FFFFFFFF) + -- TDO (01281043) + -- MASK (FFFFFFFF); + -- + -- + --! Program Bscan register + -- + --! Shift in Preload(0x1C) instruction + --SIR 8 TDI (1C); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x1C) + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001 ) + --SDR 160 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF); + pbje.goto_state("SHIFT_DR") pbje.scan( 160, "HIGH") + -- + -- + --! Enable the programming mode + -- + --! Shift in ISC ENABLE(0x15) instruction + --SIR 8 TDI (15); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x15) + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001 ) + -- + -- + --! Verify Fuse Map + -- + --! Shift in LSCC RESET ADDRESS(0x21) instruction + --SIR 8 TDI (21); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x21) + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001 ) + + --! Shift in BYPASS(0xFF) instruction + --SIR 8 TDI (FF); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0xFF) + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001 ) + + --! Shift in LSCC READ INCR RTI(0x6A) instruction + --SIR 8 TDI (6A); + pbje.goto_state("SHIFT_IR") pbje.scan( 8, 0x6A) + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 5, 0.001 ) + + --! Shift Out Data Row = 1 + --SDR 192 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) + -- TDO (FFF7BFF3DEFFCDEFFF3BBFFCFCFFF3DFFFFDEFFF37BFFCFF); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 2 + --SDR 192 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) + -- TDO (FFF7BFF3DEFFCDEFFF37BFFCF7FFFF7BFFCDEFFF37BFFCFF); + --RUNTEST IDLE 5 TCK 1.00E-003 SEC; + --! Shift Out Data Row = 3 + + + --Now we need to read and verify 100 lines 172bits/line (LC4032V) + --local fuse_lines = 2 + local fuse_lines = 295 + local errors = 0 + time.start() + while fuse_lines > 0 do + if not verify_fuse_line(jed_file, false) then + print("FAILED TO VERIFY LINE", fuse_lines) + errors = errors+1 + end + fuse_lines = fuse_lines-1 + end + + if errors == 0 then + print("SUCCESSFULLY Verified all fuse lines!") + else + print(errors, "errors were found when trying to verify all fuse lines. FAILED!") + end + time.report(192*295/8/1024) --192 bits/line, 295 lines, 8bit/byte, 1024byte/KB + + +--[[LC4000V + --! Check the IDCODE + -- + --! Shift in IDCODE(0x16) instruction + --SIR 8 TDI (16); + --STATE IDLE; + --SDR 32 TDI (FFFFFFFF) + -- TDO (01805043) + -- MASK (0FFFFFFF); + check_idcode() + + -- + --! Program Bscan register + -- + --! Shift in Preload(0x1C) instruction + --SIR 8 TDI (1C); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x1C) + --SDR 68 TDI (00000000000000000); + pbje.goto_state("SHIFT_DR") + pbje.scan( 68, "LOW") +--local function scan( numbits, data_in, data_out, debug ) + -- + -- + --! Enable the programming mode + -- + --! Shift in ISC ENABLE(0x15) instruction + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x15) + --SIR 8 TDI (15); + --RUNTEST IDLE 3 TCK 2.00E-002 SEC; + pbje.runtest( "IDLE", 3, 0.02 ) + -- + -- + --! Full Address Verify Fuse Map + -- + --! Shift in ISC ADDRESS SHIFT(0x01) instruction + --SIR 8 TDI (01); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x01) + --SDR 100 TDI (8000000000000000000000000); + pbje.goto_state("SHIFT_DR") +-- HERE + pbje.scan_hold( 84, "LOW") + pbje.scan( 16, 0x8000) + + --! Shift in ISC READ INCR(0x2A) instruction + --SIR 8 TDI (2A); + pbje.goto_state("SHIFT_IR") + pbje.scan( 8, 0x2A) + --RUNTEST IDLE 3 TCK 1.00E-003 SEC; + pbje.runtest( "IDLE", 3, 0.001) + + + + --Now we need to read and verify 100 lines 172bits/line (LC4032V) + local fuse_lines = 100 + local errors = 0 + time.start() + while fuse_lines > 0 do + if not verify_fuse_line(jed_file, false) then + print("FAILED TO VERIFY LINE", fuse_lines) + errors = errors+1 + end + fuse_lines = fuse_lines-1 + end + + if errors == 0 then + print("SUCCESSFULLY Verified all fuse lines!") + else + print(errors, "errors were found when trying to verify all fuse lines. FAILED!") + end + time.report(172*100/8/1024) --172 bits/line, 100 lines, 8bit/byte, 1024byte/KB + + --! Verify USERCODE + -- + --! Shift in READ USERCODE(0x17) instruction + --SIR 8 TDI (17); + --SDR 32 TDI (FFFFFFFF) + -- TDO (000005DE); + --need to read expected user code from jedec file + local filecode = files.readtill_line(jed_file, "UH") + if debug then print("file usercode line:", filecode) end + filecode = string.sub(filecode, 3, 10) + if debug then print("hex usercode:", filecode) end + --local usercode = check_USERCODE(0x000005DE, 32) + if check_usercode(filecode, 32) then + print("SUCCESS! VERIFIED USER CODE") + else + print("FAILED! USER CODE VERIFICATION") + end + + --]] + done_exit(debug) + + -- + -- + --! Exit the programming mode + -- + --! Shift in ISC DISABLE(0x1E) instruction + --SIR 8 TDI (1E); + --RUNTEST IDLE 3 TCK 2.00E-001 SEC; + -- + -- + -- + --! Shift in IDCODE(0x16) instruction + --SIR 8 TDI (16) + -- TDO (1D) + -- MASK (FF); + + check_idcode() +end + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +machXO256.done_exit = done_exit +machXO256.erase = erase +machXO256.program = program +machXO256.verify = verify +machXO256.secure = secure + + +-- return the module's table +return machXO256 + diff --git a/host/scripts/app/jtag.lua b/host/scripts/jtag/pbje.lua similarity index 69% rename from host/scripts/app/jtag.lua rename to host/scripts/jtag/pbje.lua index e28db90..8055277 100644 --- a/host/scripts/app/jtag.lua +++ b/host/scripts/jtag/pbje.lua @@ -1,9 +1,19 @@ +-- PAUL'S BASIC JTAG ENGINE +-- this module keeps track of JTAG statemachine current state +-- so it can then know how to get to a different state +-- This module is responsible for generating the TMS, TCK, TDI, TDO +-- pin toggling sequences necessary and send basic commands over +-- to the PBJE running on the INLretro, or the cartridge mcu +-- The actual engine running on the INLretro/cartridge is pretty dumb +-- but has the hardware/physical interface, and the 'intelligence' resides here. -- create the module's table -local jtag = {} +local pbje = {} -- import required modules local dict = require "scripts.app.dict" +local files = require "scripts.app.files" +local time = require "scripts.app.time" -- file constants local pbje_loc --physical location of PBJE engine so this script known how to set engine registers @@ -25,7 +35,7 @@ end -- inside the board itself (ie CIC mcu) instead of on the inlretro programmer -- in these types of cases, want the jtag high level functions to be independent of -- where the PBJE engine is located physically. -local function init_jtag_lua( location ) +local function init( location ) pbje_loc = location @@ -119,6 +129,7 @@ local function set_run_get_cmd( command ) print("ERROR, pbje location must be initialized prior to setting registers") elseif( pbje_loc == "INLRETRO" ) then + --TODO provide flag if don't want to wait on immediate processing (for long data streams) rv = dict.jtag("SET_CMD_WAIT", command) --verify command was done if(rv ~= op_jtag["PBJE_DONE"]) then print("error JTAG not done, status: ", rv) end @@ -405,12 +416,22 @@ local function scan( numbits, data_in, data_out, debug ) --scan out with TDI high if( data_in == "HIGH" and data_out ) then set_run_get_cmd("PBJE_TDO_SCAN1") - data_out = dict.jtag("GET_6B_DATA") + data_out = dict.jtag("GET_8B_DATA") +-- if numbits <= 6*8 then +-- data_out = dict.jtag("GET_8B_DATA") +-- else +-- data_out = dict.jtag("GET_32B_DATA") +-- end --scan out with TDI low elseif( data_in == "LOW" and data_out ) then set_run_get_cmd("PBJE_TDO_SCAN0") - data_out = dict.jtag("GET_6B_DATA") + data_out = dict.jtag("GET_8B_DATA") +-- if numbits <= 6*8 then +-- data_out = dict.jtag("GET_8B_DATA") +-- else +-- data_out = dict.jtag("GET_32B_DATA") +-- end --scan in with TDI high elseif( data_in == "HIGH" and not data_out ) then @@ -422,6 +443,7 @@ local function scan( numbits, data_in, data_out, debug ) --scan in ignoring TDO elseif( data_in and not data_out ) then + --TODO support more than 16/64bits by calling TDI_SCAN_HOLD set_data_2B(data_in) set_run_get_cmd("PBJE_TDI_SCAN") @@ -429,7 +451,12 @@ local function scan( numbits, data_in, data_out, debug ) elseif( data_in and data_out ) then set_data_2B(data_in) set_run_get_cmd("PBJE_FULL_SCAN") - data_out = dict.jtag("GET_6B_DATA") + data_out = dict.jtag("GET_8B_DATA") +-- if numbits <= 6*8 then +-- data_out = dict.jtag("GET_8B_DATA") +-- else +-- data_out = dict.jtag("GET_32B_DATA") +-- end else print("ERROR, bad arguements to jtag scan function") @@ -450,6 +477,83 @@ local function scan( numbits, data_in, data_out, debug ) end +--similar to scan above, but it doesn't exit SHIFT-DR state so we can call it over and over again +local function scan_hold( numbits, data_in, data_out, debug ) + + --check to ensure current state is SHIFT-IR/DR + if not( cur_jtag_state == "SHIFT_IR" or cur_jtag_state == "SHIFT_DR") then + print("ERROR, jtag state must be SHIFT-IR/DR in order to scan data in/out") + return nil + end + + + --TODO analyze numbits to determine if needs to be split into several shorter scans + --currently all scans exit at end of shift + set_clk(numbits) + + --scan out with TDI high + if( data_in == "HIGH" and data_out ) then + set_run_get_cmd("PBJE_TDO_SCAN1_HOLD") + data_out = dict.jtag("GET_8B_DATA") +-- if numbits <= 6*8 then +-- data_out = dict.jtag("GET_8B_DATA") +-- else +-- data_out = dict.jtag("GET_32B_DATA") +-- end + + --scan out with TDI low + elseif( data_in == "LOW" and data_out ) then + set_run_get_cmd("PBJE_TDO_SCAN0_HOLD") + data_out = dict.jtag("GET_8B_DATA") +-- if numbits <= 6*8 then +-- data_out = dict.jtag("GET_8B_DATA") +-- else +-- data_out = dict.jtag("GET_32B_DATA") +-- end + + --scan in with TDI high + elseif( data_in == "HIGH" and not data_out ) then + set_run_get_cmd("PBJE_TDO_SCAN1_HOLD") + + --scan in with TDI low + elseif( data_in == "LOW" and not data_out ) then + set_run_get_cmd("PBJE_TDO_SCAN0_HOLD") + + --scan in ignoring TDO + elseif( data_in and not data_out ) then + --TODO support more than 16/64bits by calling TDI_SCAN_HOLD + set_data_2B(data_in) + set_run_get_cmd("PBJE_TDI_SCAN_HOLD") + + --scan in data and capture scan out + elseif( data_in and data_out ) then + set_data_2B(data_in) + set_run_get_cmd("PBJE_FULL_SCAN_HOLD") + data_out = dict.jtag("GET_8B_DATA") + -- if numbits <= 6*8 then + -- data_out = dict.jtag("GET_8B_DATA") + -- else + -- data_out = dict.jtag("GET_32B_DATA") + -- end + + else + print("ERROR, bad arguements to jtag scan function") + return nil + end + +-- --currently all scans exit at end of shift +-- --state has now shifted to EXIT1 +-- if( cur_jtag_state == "SHIFT_IR" ) then +-- cur_jtag_state = "EXIT1_IR" +-- elseif( cur_jtag_state == "SHIFT_DR" ) then +-- cur_jtag_state = "EXIT1_DR" +-- end + + --TODO only return the number of bits scanned, mask away everything else + return data_out + +end + local function runtest( state, clks, time, debug ) --check that state is a stable state @@ -487,206 +591,6 @@ local function runtest( state, clks, time, debug ) end -local function run_jtag( debug ) - - - local rv - - --setup lua portion of jtag engine - init_jtag_lua("INLRETRO") - - --initialize JTAG port on USB device - dict.io("JTAG_INIT", "JTAG_ON_EXP0_3") - - --first put/verify jtag statemachine is in RESET - goto_state("RESET") - - --by default jtag should be in IDCODE or BYPASS if IDCODE not present - --The TDI pin doesn't even have to be working to scan out IDCODE by this means - - --change to SCAN-DR state - goto_state("SHIFT_DR") - - --scan out 32bit IDCODE while scanning in 1's to TDI - rv = scan( 32, "HIGH", true ) - - print("return data:", string.format(" %X, ",rv)) - if( rv == 0x1281043 ) then - -- Mach XO 256 01281043 - -- 4032v (01805043) - -- 4064v (01809043) - -- - -- 9536xl - -- //Loading device with 'idcode' instruction. - -- SIR 8 TDI (fe) SMASK (ff) ; - -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ; - -- - -- 9572xl - -- //Loading device with 'idcode' instruction. - -- SIR 8 TDI (fe) SMASK (ff) ; - -- SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9604093) MASK (0fffffff) ; - -- test read gives 59604093 - print("IDCODE matches MACHXO-256") - else - print("no match for IDCODE") - end - - --Mach XO verify ID code --- ! Check the IDCODE --- --- ! Shift in IDCODE(0x16) instruction --- SIR 8 TDI (16); - goto_state("SHIFT_IR") - scan( 8, 0x16) - - --return to default state after SIR - --doesn't appear to actually be needed --- goto_state("PAUSE_IR") - --- SDR 32 TDI (FFFFFFFF) --- TDO (01281043) --- MASK (FFFFFFFF); - goto_state("SHIFT_DR") - rv = scan( 32, "HIGH", true) - print("return data:", string.format(" %X, ",rv)) - - - --xilinx IDCODE command is different - --//Loading device with 'idcode' instruction. - --SIR 8 TDI (fe) SMASK (ff) ; - --SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ; --- goto_state("SHIFT_IR") --- scan( 8, 0xfe) --- goto_state("SHIFT_DR") --- rv = scan( 32, "HIGH", true) --- print("return data:", string.format(" %X, ",rv)) - - - --MACH XO 256 - --! Program Bscan register - -- - --! Shift in Preload(0x1C) instruction - --SIR 8 TDI (1C); - --SDR 160 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF); - --the HIGHZ instruction seems more fitting... 0x18 - goto_state("SHIFT_IR") - scan( 8, 0x1c) - goto_state("SHIFT_DR") - scan( 160, "HIGH") - - --- ! Enable the programming mode --- --- ! Shift in ISC ENABLE(0x15) instruction --- SIR 8 TDI (15); - goto_state("SHIFT_IR") - scan( 8, 0x15) --- RUNTEST IDLE 5 TCK 1.00E-003 SEC; - runtest( "IDLE", 5 ) - --- --- --- ! Erase the device --- --- ! Shift in ISC SRAM ENABLE(0x55) instruction --- SIR 8 TDI (55); - goto_state("SHIFT_IR") - scan( 8, 0x55) - runtest( "IDLE", 5 ) --- RUNTEST IDLE 5 TCK 1.00E-003 SEC; --- --- ! Shift in ISC ERASE(0x03) instruction --- SIR 8 TDI (03); - goto_state("SHIFT_IR") - scan( 8, 0x03) - runtest( "IDLE", 5 ) --- RUNTEST IDLE 5 TCK 1.00E-003 SEC; --- --- ! Shift in ISC ENABLE(0x15) instruction --- SIR 8 TDI (15); - goto_state("SHIFT_IR") - scan( 8, 0x15) - runtest( "IDLE", 5 ) --- RUNTEST IDLE 5 TCK 1.00E-003 SEC; --- --- ! Shift in ISC ERASE(0x03) instruction --- SIR 8 TDI (03); - goto_state("SHIFT_IR") - scan( 8, 0x03) - --runtest( "IDLE", 5, 1 ) --seems to fail if under ~0.5sec - runtest( "IDLE", 5, 0.7 ) --- RUNTEST IDLE 5 TCK 1.00E+001 SEC; --- SDR 1 TDI (0) --- TDO (1); TDO must be set - goto_state("SHIFT_DR") - rv = scan( 1, 0x0, true) % 2 --mask out all but the last bit - if( rv == 1) then - print("MachXO-256 CPLD erasure success!!!") - else - print("failed to erase MachXO-256 CPLD") - end - - --- ! Read the status bit --- --- ! Shift in READ STATUS(0xB2) instruction --- SIR 8 TDI (B2); - goto_state("SHIFT_IR") - scan( 8, 0xb2) - runtest( "IDLE", 5 ) --- RUNTEST IDLE 5 TCK 1.00E-003 SEC; --- SDR 1 TDI (0) --- TDO (0); - goto_state("SHIFT_DR") - rv = scan( 1, "LOW", true) % 2 --mask out all but the last bit - if( rv == 0 ) then - print("status bit clear as expected") - else - print("ERROR status bit was set, not sure what this means...") - end - - ---! Program Fuse Map --- ---! Shift in INIT ADDRESS(0x21) instruction ---SIR 8 TDI (21); ---RUNTEST IDLE 5 TCK 1.00E-003 SEC; ---! Shift in BYPASS(0xFF) instruction ---SIR 8 TDI (FF); ---RUNTEST IDLE 5 TCK 1.00E-003 SEC; ---! Shift in DATA SHIFT(0x02) instruction ---SIR 8 TDI (02); ---! Shift in Row = 1 ---SDR 192 TDI (FFF7BFF3DEFFCEEFFF3BBFFCEEFFF3DFFFFDEFFF3BBFFCFF); ---! Shift in LSCC PROGRAM INCR RTI(0x67) instruction ---SIR 8 TDI (67); ---RUNTEST IDLE 5 TCK 1.00E-002 SEC; ---STATE DRPAUSE; ---! Shift in DATA SHIFT(0x02) instruction ---SIR 8 TDI (02); ---! Shift in Row = 2 ---SDR 192 TDI (FFF7BFF3DEFFCEEFFF37BFFCF7FFFFBBFFCEEFFF37BFFCFF); ---! Shift in LSCC PROGRAM INCR RTI(0x67) instruction ---SIR 8 TDI (67); ---RUNTEST IDLE 5 TCK 1.00E-002 SEC; ---STATE DRPAUSE; ---! Shift in DATA SHIFT(0x02) instruction ---SIR 8 TDI (02); ---! Shift in Row = 3 ---SDR 192 TDI (FFBFFFFFDEFFCFFFFFFBBFFCFFFFFF5FFFCFFFFFFFFFFFFF); ---! Shift in LSCC PROGRAM INCR RTI(0x67) instruction ---SIR 8 TDI (67); ---RUNTEST IDLE 5 TCK 1.00E-002 SEC; ---STATE DRPAUSE; ---! Shift in DATA SHIFT(0x02) instruction ---SIR 8 TDI (02); ---! Shift in Row = 4 ---SDR 192 TDI (FFFFFFFFDEFFCFFFFFFBBFFCFFFFFFBBFFCFFFFFFFFFFFFF); --- --- .... - -end - -- global variables so other modules can use them @@ -694,9 +598,13 @@ end -- functions other modules are able to call -jtag.wait_pbje_done = wait_pbje_done -jtag.run_jtag = run_jtag -jtag.sleep = sleep +--jtag.wait_pbje_done = wait_pbje_done +pbje.sleep = sleep +pbje.init = init +pbje.goto_state = goto_state +pbje.scan = scan +pbje.scan_hold = scan_hold +pbje.runtest = runtest -- return the module's table -return jtag +return pbje diff --git a/host/scripts/sega/genesis_v2.lua b/host/scripts/sega/genesis_v2.lua new file mode 100644 index 0000000..3e88f61 --- /dev/null +++ b/host/scripts/sega/genesis_v2.lua @@ -0,0 +1,365 @@ + +-- create the module's table +local genesis_v2 = {} + +-- import required modules +local dict = require "scripts.app.dict" +local dump = require "scripts.app.dump" + +-- file constants + +-- local functions + + +-- Desc: attempt to read flash rom ID +-- Pre: snes_init() been called to setup i/o +-- Post:Address left on bus memories disabled +-- Rtn: true if proper flash ID found +local function rom_manf_id( debug ) + + local rv + --enter software mode A11 is highest address bit that needs to be valid + --datasheet not exactly explicit, A11 might not need to be valid + --part has A-1 (negative 1) since it's in byte mode, meaning the part's A11 is actually A12 + --exit software mode/reset chip incase locked up + dict.sega("SET_ADDR", 0x0555) + dict.sega("SEGA_WR", 0x00AA) + + dict.bootload("SET_PTR_HI", 0x4800) + dict.bootload("SET_PTR_LO", 0x0000) + + rv = dict.bootload("RD_PTR_OFFSET", 0x0001) --read upper half word of register + print("PORT A hi:", string.format("%X", rv)) + rv = dict.bootload("RD_PTR_OFFSET", 0x0000) + print("PORT A lo:", string.format("%X", rv)) + rv = dict.bootload("RD_PTR_OFFSET", 0x0401) --read upper half word of register + print("PORT B hi:", string.format("%X", rv)) + rv = dict.bootload("RD_PTR_OFFSET", 0x0400) + print("PORT B lo:", string.format("%X", rv)) + + rv = dict.bootload("RD_PTR_OFFSET", 0x0414) --ODR PORTB + print("PORT B ODR:", string.format("%X", rv)) + rv = dict.bootload("RD_PTR_OFFSET", 0x0014) --ODR PORTA + print("PORT A ODR:", string.format("%X", rv)) + + rv = dict.bootload("RD_PTR_OFFSET", 0x0410) + print("PORT B IDR:", string.format("%X", rv)) + rv = dict.bootload("RD_PTR_OFFSET", 0x0010) + print("PORT A IDR:", string.format("%X", rv)) + + + dict.sega("SET_ADDR", 0x02AA) + dict.sega("SEGA_WR", 0x0055) + + dict.sega("SET_ADDR", 0x0555) + dict.sega("SEGA_WR", 0x0090) + +-- --WR $AAA:AA $555:55 $AAA:AA +-- dict.sega("SNES_SET_BANK", 0x00) +-- +-- dict.sega("SNES_ROM_WR", 0x8AAA, 0xAA) +-- dict.sega("SNES_ROM_WR", 0x8555, 0x55) +-- dict.sega("SNES_ROM_WR", 0x8AAA, 0x90) + + --read manf ID + local manf_id = dict.sega("SEGA_RD", 0x0000) --0x01 Cypress Manf ID + -- 0xBF SST Manf ID + if debug then print("attempted read SNES ROM manf ID:", string.format("%X", manf_id)) end + + --read prod ID + local prod_id = dict.sega("SEGA_RD", 0x0001) --0x7E Prod ID S29GL + --SST x16 0x235D or 0x235C product ID + if debug then print("attempted read SNES ROM prod ID:", string.format("%X", prod_id)) end + +-- local density_id = dict.sega("SEGA_RD", 0x801C) --density 0x10=8MB 0x1A=4MB +-- if debug then print("attempted read SNES density ID: ", string.format("%X", density_id)) end +-- +-- local boot_sect = dict.sega("SEGA_RD", 0x801E) --boot sector 0x00=top 0x01=bottom +-- if debug then print("attempted read SNES boot sect ID:", string.format("%X", boot_sect)) end +-- +-- --exit software +-- dict.sega("SNES_ROM_WR", 0x8000, 0xF0) +-- +-- --return true if detected flash chip +-- if (manf_id == 0x01 and prod_id == 0x49) then +-- print("2MB flash detected") +-- return true +-- elseif (manf_id == 0x01 and prod_id == 0x7E) then +-- print("4-8MB flash detected") +-- return true +-- else +-- return false +-- end + +end + +local function unsupported(operation) + print("\nUNSUPPORTED OPERATION: \"" .. operation .. "\" not implemented yet for Sega Genesis.\n") +end + +-- Compute Genesis checksum from a file, which can be compared with header value. +local function checksum_rom(filename) + local file = assert(io.open(filename, "rb")) + local sum = 0 + -- Skip header + file:read(0x200) + while true do + -- Add up remaining 16-bit words + local bytes = file:read(2) + if not bytes then break end + sum = sum + string.unpack(">i2", bytes) + end + -- Only use the lower bits. + return sum & 0xFFFF +end + +--/ROMSEL is always low for this dump +local function dump_rom( file, rom_size_KB, debug ) + + local KB_per_bank = 128 -- A1-16 = 64K address space, 2Bytes per address + local addr_base = 0x0000 -- control signals are manually controlled + + + local num_reads = rom_size_KB / KB_per_bank + local read_count = 0 + + while (read_count < num_reads) do + + if debug then print( "Dumping ROM part ", read_count + 1, " of ", num_reads) end + + -- A "large" Genesis ROM is 24 banks, many are 8 and 16 - status every 4 is reasonable. + -- The largest published Genesis game is Super Street Fighter 2, which is 40 banks! + -- TODO: Accessing banks in games that are >4MB require using a mapper. + -- See: https://plutiedev.com/beyond-4mb + + if (read_count % 4 == 0) then + print("dumping ROM bank: ", read_count, " of ", num_reads - 1) + end + + -- Select desired bank. + dict.sega("SET_BANK", read_count) + + dump.dumptofile(file, KB_per_bank/2, addr_base, "GENESIS_ROM_PAGE0", debug) + dump.dumptofile(file, KB_per_bank/2, addr_base, "GENESIS_ROM_PAGE1", debug) + + read_count = read_count + 1 + end + +end + +-- Helper to extract fields in internal header. +local function extract_field_from_string(data, start_offset, length) + -- 1 is added to Offset to handle lua strings being 1-based. + return string.sub(data, start_offset + 1, start_offset + length) +end + +-- Populates table with internal header contents from dumped data. +local function extract_header(header_data) + -- https://plutiedev.com/rom-header + -- https://en.wikibooks.org/wiki/Genesis_Programming#ROM_header + + -- TODO: Decode publisher from t-series in build field + -- https://segaretro.org/Third-party_T-series_codes + + local addr_console_name = 0x100 + local addr_build_date = 0x110 + local addr_domestic_name = 0x120 + local addr_intl_name = 0x150 + local addr_type_serial_version = 0x180 + local addr_checksum = 0x18E + local addr_device_support = 0x190 + local addr_rom_addr_range = 0x1A0 + local addr_ram_addr_range = 0x1A8 + local addr_sram_support = 0x1B0 + local addr_modem_support = 0x1BC + local addr_region_support = 0x1F0 + + local len_console_name = 16 + local len_build_date = 16 + local len_name = 48 + local len_type_serial_version = 14 + local len_checksum = 2 + local len_device_support = 16 + local len_addr_range = 8 + local len_sram_support = 12 + local len_modem_support = 12 + local len_region_support = 3 + + local header = { + console_name = extract_field_from_string(header_data, addr_console_name, len_console_name), + -- TODO: Decode T-Value and build info. + build_date = extract_field_from_string(header_data, addr_build_date, len_build_date), + domestic_name = extract_field_from_string(header_data, addr_domestic_name, len_name), + international_name = extract_field_from_string(header_data, addr_intl_name, len_name), + -- TODO: Decode Type, serial and revision. + type_serial_version = extract_field_from_string(header_data, addr_type_serial_version, len_type_serial_version), + checksum = string.unpack(">i2", extract_field_from_string(header_data, addr_checksum, len_checksum)), + -- TODO: Decode device support. + io_device_support = extract_field_from_string(header_data, addr_device_support, len_device_support), + -- TODO: Decode SRAM support. + sram_support = extract_field_from_string(header_data, addr_sram_support, len_sram_support), + -- TODO: Decode modem support. + modem_support = extract_field_from_string(header_data, addr_modem_support, len_modem_support), + -- TODO: Decode region support. + region_support = extract_field_from_string(header_data, addr_region_support, len_region_support), + } + -- ROM range can be used to autodetect the rom size. + local rom_range = extract_field_from_string(header_data, addr_rom_addr_range, len_addr_range) + local rom_start = string.unpack(">i4", string.sub(rom_range, 1, 4)) + local rom_end = string.unpack(">i4", string.sub(rom_range,5, 8)) + header["rom_size"] = (rom_end - rom_start + 1) / 1024 + + -- These should be the same in every cart according to docs, but decode in case its not. (64 Kb) + local ram_range = extract_field_from_string(header_data, addr_ram_addr_range, len_addr_range) + local ram_start = string.unpack(">i4", string.sub(ram_range, 1, 4)) + local ram_end = string.unpack(">i4", string.sub(ram_range,5, 8)) + header["ram_size"] = (ram_end - ram_start + 1) / 1024 + + return header +end + +-- Make a human-friendly text representation of ROM Size. +local function str_rom_size(rom_size_kb) + local mbit = rom_size_kb / 128 + if mbit < 1 then + mbit = "<1" + end + return "" .. rom_size_kb .. " kB (".. mbit .." mbit)" +end + +-- Prints parsed header contents to stdout. +local function print_header(genesis_header) + print("Console Name: \t" .. genesis_header["console_name"]) + print("Domestic Name: \t" .. genesis_header["domestic_name"]) + print("Release Date: \t" .. genesis_header["build_date"]) + print("Rom Size: \t" .. str_rom_size(genesis_header["rom_size"])) + print("Serial/Version: " .. genesis_header["type_serial_version"]) + print("Checksum: \t" .. hexfmt(genesis_header["checksum"])) +end + +-- Reads and parses internal ROM header from first page of data. +local function read_header() + dict.sega("SET_BANK", 0) + + local page0_data = "" + dump.dumptocallback( + function (data) + page0_data = page0_data .. data + end, + 64, 0x0000, "GENESIS_ROM_PAGE0", false + ) + local header_data = string.sub(page0_data, 1, 0x201) + local genesis_header = extract_header(header_data) + return genesis_header +end + +-- Test that cartridge is readable by looking for valid entries in internal header. +local function test(genesis_header) + local valid = false + -- Trailing spaces are required! Field length is 16 characters. + if genesis_header["console_name"] == "SEGA GENESIS " then valid = true end + if genesis_header["console_name"] == "SEGA MEGA DRIVE " then valid = true end + return valid +end + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +local function process(process_opts, console_opts) + local file + + -- Initialize device i/o for SEGA + dict.io("IO_RESET") + dict.io("SEGA_INIT") +-- local genesis_header = read_header() + + if process_opts["test"] then + -- If garbage data is in the header, it's a waste of time trying to proceed doing anything else. + -- local valid_header = test(genesis_header) + -- if valid_header ~= true then print("Unreadable cartridge - exiting! (Try cleaning cartridge connector?)") end + -- assert(valid_header) + -- print_header(genesis_header) + + print("geny flash cart test") + dict.sega("SET_BANK", 0) + print(dict.sega("SEGA_RD", 0x0120)) + print(dict.sega("SEGA_RD", 0x0122)) + print(dict.sega("SEGA_RD", 0x0124)) + print(dict.sega("SEGA_RD", 0x0090)) --read "SONIC" from 0x0120 >> 1 + print(dict.sega("SEGA_RD", 0x0091)) + print(dict.sega("SEGA_RD", 0x0092)) + + + --dict.sega("SET_ADDR", 0) + + rom_manf_id(true) + + end + + -- TODO: dump the ram to file + if dumpram then + unsupported("dumpram") + end + + -- Dump the cart to dumpfile. + if process_opts["read"] then + + -- If ROM size wasn't provided, attempt to use value in internal header. + local rom_size = console_opts["rom_size_kbyte"] + if rom_size == 0 then + print("ROM Size not provided, " .. str_rom_size(genesis_header["rom_size"]) .. " detected.") + rom_size = genesis_header["rom_size"] + end + + print("\nDumping SEGA ROM...") + file = assert(io.open(process_opts["dump_filename"], "wb")) + + --dump cart into file + dump_rom(file, rom_size, false) + + --close file + assert(file:close()) + print("DONE Dumping SEGA ROM") + print("Computing checksum...") + local checksum = checksum_rom(process_opts["dump_filename"]) + if checksum == genesis_header["checksum"] then + print("CHECKSUM OK! DUMP SUCCESS!") + else + print("CHECKSUM MISMATCH - BAD DUMP! (Try cleaning cartridge connector?)") + end + end + + -- TODO: erase the cart + if process_opts["erase"] then + unsupported("erase") + end + + -- TODO: write to wram on the cart + if writeram then + unsupported("writeram") + end + + -- TODO: program flashfile to the cart + if process_opts["program"] then + unsupported("program") + end + + -- TODO: verify flashfile is on the cart + if process_opts["verify"] then + unsupported("verify") + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them +-- NONE + +-- call functions desired to run when script is called/imported +-- NONE + +-- functions other modules are able to call +genesis_v2.process = process + +-- return the module's table +return genesis_v2 diff --git a/shared/shared_dict_buffer.h b/shared/shared_dict_buffer.h index cc3fd6d..618e424 100644 --- a/shared/shared_dict_buffer.h +++ b/shared/shared_dict_buffer.h @@ -181,6 +181,7 @@ #define MM2 253 #define DPROM 254 //just a random mapper number for whatever I need it for + #define MMC3S 252 // UNKNOWN 255 don't assign to something meaningful //operand LSB mapper variant #define NOVAR 0 @@ -197,6 +198,12 @@ #define LOROM_3VOLT 6 #define HIROM_3VOLT 7 + #define LOROM_3V_PAGE 8 + #define HIROM_3V_PAGE 9 + + #define LOROM_3V_VERIFY 10 //same as 3VOLT above, but verifies each byte while writing + #define HIROM_3V_VERIFY 11 + //set function //miscdata: buffer number diff --git a/shared/shared_dict_io.h b/shared/shared_dict_io.h index 50c5ccc..0e6a4ec 100644 --- a/shared/shared_dict_io.h +++ b/shared/shared_dict_io.h @@ -63,7 +63,8 @@ //communications with #define JTAG_INIT 4 // don't define 0x00 to protect from forgetting to pass jtag lane - #define JTAG_ON_EXP0_3 0x01 //Most NES carts with CPLDs + #define JTAG_ON_EXP0_3 0x01 //Most NES carts with CPLDs EXP0-TDO, EXP1-TDI, EXP2-TMS, EXP3-TCK + #define JTAG_ON_SNES_CTL 0x02 //SNES v2.0proto2 SYSCLK-TCK, RESET/EXP0-TMS, WR-TDI, RD-TDO diff --git a/shared/shared_dict_jtag.h b/shared/shared_dict_jtag.h index 405bbd3..d8ba8cf 100644 --- a/shared/shared_dict_jtag.h +++ b/shared/shared_dict_jtag.h @@ -31,15 +31,20 @@ //set to zero if would like 256 clocks to be performed //range is 1-255, 0 equates to 256 clocks -#define SET_2B_DATA 7 -#define GET_6B_DATA 8 //RL=8 +#define SET_2B_DATA 7 //miscdata defines the first byte index + //0=first 2 bytes (16bits) of DATA array + //if undefined, should be 0 (first 2 bytes) + +#define GET_8B_DATA 8 //RL=10 max lua int, miscdata gives offset of first byte +#define GET_32B_DATA 9 //RL=34 //PBJE Paul's Basic Jtag engine commands & status' #define PBJE_STATE_CHG 0x01 //data array holds TMS values to clock values bit packed, TDI undefined +//TMS s bit packed, better for USB data compression (contrary to notes) -//DATA SCAN commands, these end with settting TMS to 1 to exit SHIFT-IR/DR completing the SCAN. +//DATA SCAN commands, these end with setting TMS to 1 to exit SHIFT-IR/DR completing the SCAN. //If need to make multiple smaller scans to make up one big scan, this would be the last scan, "HOLD" scans //lower down would be the first to second to last scans #define PBJE_TDI_SCAN 0x02 //ignore TDO 256max @@ -64,14 +69,16 @@ #define PBJE_FULL_SCAN_HOLD 0x10 //TDI = entire data array, TDO dumped into array stomping TDI, TMS=0 256max +//TODO, why don't we get unknown opcode when accidentally sending a command as an opcode..? ie dict.jtag("PBJE_INIT") +//that freezes instead of sending back unknown opcode, because it is known you idiot!... //Statuses & commands to get to the status -#define PBJE_INIT 0x80 +#define PBJE_INIT 0x80 //STATE ONLY! DON'T USE AS COMMAND!!l init with io dict, this is the state only #define PBJE_PROC 0x81 #define PBJE_DONE 0x82 #define PBJE_CMD_RX 0x83 #define PBJE_UNKN_CMD 0xEE -#define PBJE_OFF 0xF0 -#define PBJE_SHUTDOWN 0xFF +#define PBJE_OFF 0xF0 //STATE: mcu isn't running the PBJE +#define PBJE_SHUTDOWN 0xFF //COMMAND: tell mcu to shutoff PBJE

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 diff --git a/firmware/build_stm6/inlretro_stm.bin b/firmware/build_stm6/inlretro_stm.bin new file mode 100644 index 0000000000000000000000000000000000000000..2066bae24219dc61cf8cf05af41c394903a2a6e6 GIT binary patch literal 23952 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 literal 225368 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