From 52d0516e2d596d641ed917e56f9a49686112c3ea Mon Sep 17 00:00:00 2001
From: michel <michel@ac1d8469-bf42-47a9-8791-bf33cf982152>
Date: Sat, 7 Jan 2006 21:00:58 +0000
Subject: [PATCH] tagging version 3.062

git-svn-id: https://www.dynare.org/svn/dynare/dynare_v3@588 ac1d8469-bf42-47a9-8791-bf33cf982152
---
 tags/v_3.062/doc/DynareKalman.TeX             |  196 +
 tags/v_3.062/doc/bibmad.sty                   |  105 +
 tags/v_3.062/doc/dynare.xsl                   |   23 +
 tags/v_3.062/doc/dynare_fo.xsl                |   28 +
 tags/v_3.062/doc/dynare_fo_fop.xsl            |  115 +
 tags/v_3.062/doc/dynare_html.xsl              |   15 +
 tags/v_3.062/doc/dynare_lists.xsl             | 1169 +++++
 tags/v_3.062/doc/guide.bbl                    |   16 +
 tags/v_3.062/doc/guide.blg                    |    9 +
 tags/v_3.062/doc/guide.tex                    |  346 ++
 tags/v_3.062/doc/makefile                     |   17 +
 tags/v_3.062/doc/manual.xml                   | 2919 ++++++++++++
 tags/v_3.062/doc/unit_roots.tex               |   89 +
 tags/v_3.062/examples/arima/mod1.mod          |   23 +
 tags/v_3.062/examples/arima/mod1a.mod         |   23 +
 tags/v_3.062/examples/arima/mod1b.mod         |   25 +
 tags/v_3.062/examples/arima/mod1c.mod         |   27 +
 tags/v_3.062/examples/arima/mod1d.mod         |   26 +
 tags/v_3.062/examples/arima/mod2.mod          |   26 +
 tags/v_3.062/examples/arima/mod2a.mod         |   33 +
 tags/v_3.062/examples/arima/mod2b.mod         |   33 +
 tags/v_3.062/examples/arima/mod2c.mod         |   31 +
 tags/v_3.062/examples/example1.mod            |   44 +
 tags/v_3.062/examples/example2.mod            |   44 +
 tags/v_3.062/examples/fs2000/fs2000.mod       |   91 +
 tags/v_3.062/examples/fs2000/fs2000a.mod      |  112 +
 .../examples/fs2000/fs2000a_steadystate.m     |   53 +
 tags/v_3.062/examples/fs2000/fsdat.m          |  210 +
 tags/v_3.062/examples/ls2003/data_ca1.m       |  100 +
 tags/v_3.062/examples/ls2003/ls2003.mod       |   65 +
 tags/v_3.062/examples/pi2004/idata.m          |    5 +
 tags/v_3.062/examples/pi2004/ireland.mod      |   90 +
 tags/v_3.062/examples/pi2004/ych.dat          |  218 +
 tags/v_3.062/examples/ramst.mod               |   36 +
 tags/v_3.062/makefile                         |   23 +
 tags/v_3.062/matlab/ChangeLog                 |  690 +++
 tags/v_3.062/matlab/CompareModels.m           |   69 +
 tags/v_3.062/matlab/DiffuseKalmanSmoother.m   |  107 +
 tags/v_3.062/matlab/DiffuseKalmanSmoother1.m  |  137 +
 tags/v_3.062/matlab/DiffuseKalmanSmoother3.m  |  253 ++
 tags/v_3.062/matlab/DiffuseKalmanSmootherH.m  |  112 +
 tags/v_3.062/matlab/DiffuseKalmanSmootherH1.m |  138 +
 tags/v_3.062/matlab/DiffuseKalmanSmootherH3.m |  255 ++
 tags/v_3.062/matlab/DiffuseLikelihood1.m      |   90 +
 tags/v_3.062/matlab/DiffuseLikelihood3.m      |  222 +
 tags/v_3.062/matlab/DiffuseLikelihoodH1.m     |  161 +
 tags/v_3.062/matlab/DiffuseLikelihoodH3.m     |  203 +
 tags/v_3.062/matlab/DsgeLikelihood.m          |  173 +
 tags/v_3.062/matlab/DsgeSmoother.m            |  114 +
 tags/v_3.062/matlab/DsgeVarLikelihood.m       |  234 +
 tags/v_3.062/matlab/EvalWelfare.m             |  105 +
 tags/v_3.062/matlab/GetPosteriorStatistics.m  |   97 +
 .../v_3.062/matlab/MakeSmoothVariablesPlots.m |  292 ++
 tags/v_3.062/matlab/VarSampleMoments.m        |   57 +
 tags/v_3.062/matlab/asamin.dll                |  Bin 0 -> 56832 bytes
 tags/v_3.062/matlab/asamin.m                  |  160 +
 tags/v_3.062/matlab/beta_rnd.m                |   34 +
 tags/v_3.062/matlab/bfgsi.m                   |   25 +
 tags/v_3.062/matlab/bicgstab.m                |   32 +
 tags/v_3.062/matlab/bksup.m                   |   49 +
 tags/v_3.062/matlab/bksup1.m                  |   17 +
 tags/v_3.062/matlab/bksupk.m                  |   43 +
 tags/v_3.062/matlab/brm.m                     |   30 +
 tags/v_3.062/matlab/bseastr.m                 |   33 +
 tags/v_3.062/matlab/calib.m                   |  183 +
 tags/v_3.062/matlab/calib_obj.m               |   67 +
 tags/v_3.062/matlab/calib_obj2.m              |   46 +
 tags/v_3.062/matlab/check.m                   |   69 +
 tags/v_3.062/matlab/check_mh.m                |   24 +
 tags/v_3.062/matlab/check_model.m             |   18 +
 tags/v_3.062/matlab/cols.m                    |    2 +
 tags/v_3.062/matlab/compdist.m                |  171 +
 tags/v_3.062/matlab/csminit.m                 |  190 +
 tags/v_3.062/matlab/csminwel.m                |  274 ++
 tags/v_3.062/matlab/datatomfile.m             |   44 +
 tags/v_3.062/matlab/dbeta.m                   |   16 +
 tags/v_3.062/matlab/dcompare.m                |   42 +
 tags/v_3.062/matlab/dgamma.m                  |   15 +
 tags/v_3.062/matlab/diffext.m                 |   74 +
 tags/v_3.062/matlab/disp_dr.m                 |  200 +
 tags/v_3.062/matlab/disp_moments.m            |   86 +
 tags/v_3.062/matlab/disp_th_moments.m         |  360 ++
 tags/v_3.062/matlab/dlognorm.m                |   16 +
 tags/v_3.062/matlab/dnorm.m                   |   11 +
 tags/v_3.062/matlab/dr1.m                     |  635 +++
 tags/v_3.062/matlab/dr11.m                    |  256 ++
 tags/v_3.062/matlab/dr2.m                     |   11 +
 tags/v_3.062/matlab/draw_prior_density.m      |   91 +
 tags/v_3.062/matlab/dsample.m                 |   36 +
 tags/v_3.062/matlab/dy_date.m                 |    6 +
 tags/v_3.062/matlab/dyn2vec.m                 |   59 +
 tags/v_3.062/matlab/dyn_bvar.m                |  202 +
 tags/v_3.062/matlab/dyn_bvar2.m               |  206 +
 tags/v_3.062/matlab/dynare.m                  |   32 +
 tags/v_3.062/matlab/dynare_estimation.m       | 1353 ++++++
 tags/v_3.062/matlab/dynare_m.exe              |  Bin 0 -> 728110 bytes
 tags/v_3.062/matlab/dynare_resolve.m          |   14 +
 tags/v_3.062/matlab/dynare_solve.m            |   85 +
 tags/v_3.062/matlab/dynasave.m                |   37 +
 tags/v_3.062/matlab/dynatype.m                |   39 +
 tags/v_3.062/matlab/equiv.m                   |    6 +
 tags/v_3.062/matlab/f_var.m                   |    4 +
 tags/v_3.062/matlab/fbeta.m                   |    6 +
 tags/v_3.062/matlab/ff1_.m                    |   15 +
 tags/v_3.062/matlab/ff2_.m                    |   14 +
 tags/v_3.062/matlab/ff2a_.m                   |    4 +
 tags/v_3.062/matlab/ff_simul.m                |   10 +
 tags/v_3.062/matlab/ff_simul1.m               |    7 +
 tags/v_3.062/matlab/ff_simul2.m               |    9 +
 tags/v_3.062/matlab/fff.m                     |   12 +
 tags/v_3.062/matlab/ffill.m                   |   24 +
 tags/v_3.062/matlab/fgamma.m                  |    4 +
 tags/v_3.062/matlab/figamm.m                  |    2 +
 tags/v_3.062/matlab/fnorm.m                   |    2 +
 tags/v_3.062/matlab/forcst.m                  |   58 +
 tags/v_3.062/matlab/forcst2.m                 |   44 +
 tags/v_3.062/matlab/forcst2a.m                |   23 +
 tags/v_3.062/matlab/forecast.m                |   45 +
 tags/v_3.062/matlab/fs_dyn.m                  |    9 +
 tags/v_3.062/matlab/ftest.m                   |   69 +
 tags/v_3.062/matlab/fx_.m                     |   10 +
 tags/v_3.062/matlab/gamm_rnd.m                |   72 +
 tags/v_3.062/matlab/gcompare.m                |   41 +
 tags/v_3.062/matlab/generalized_cholesky.m    |   54 +
 tags/v_3.062/matlab/generalized_cholesky2.m   |  122 +
 tags/v_3.062/matlab/gensylv.dll               |  Bin 0 -> 176128 bytes
 .../v_3.062/matlab/get_posterior_parameters.m |   56 +
 tags/v_3.062/matlab/get_the_name.m            |   59 +
 tags/v_3.062/matlab/hessext.m                 |   86 +
 tags/v_3.062/matlab/hessian.m                 |    1 +
 tags/v_3.062/matlab/hessian2.m                |  511 +++
 tags/v_3.062/matlab/hessian_sparse.m          |    1 +
 tags/v_3.062/matlab/hpfast.m                  |  106 +
 tags/v_3.062/matlab/indnv.m                   |   17 +
 .../matlab/initial_estimation_checks.m        |   26 +
 tags/v_3.062/matlab/initvalf_.m               |  103 +
 .../matlab/inverse_gamma_specification.m      |   50 +
 tags/v_3.062/matlab/irf.m                     |   42 +
 tags/v_3.062/matlab/jacob.m                   |   21 +
 tags/v_3.062/matlab/jacob2.m                  |   56 +
 tags/v_3.062/matlab/jacob_a.m                 |   26 +
 .../v_3.062/matlab/kalman_transition_matrix.m |   32 +
 tags/v_3.062/matlab/kernel_density_estimate.m |   58 +
 tags/v_3.062/matlab/linear.m                  |   87 +
 tags/v_3.062/matlab/list_variables.m          |   34 +
 tags/v_3.062/matlab/lnsrch.m                  |   86 +
 tags/v_3.062/matlab/lnsrch1.m                 |   95 +
 tags/v_3.062/matlab/lpdfbeta.m                |    7 +
 tags/v_3.062/matlab/lpdfgam.m                 |    7 +
 tags/v_3.062/matlab/lpdfgbeta.m               |    7 +
 tags/v_3.062/matlab/lpdfig.m                  |    8 +
 tags/v_3.062/matlab/lpdfig1.m                 |   12 +
 tags/v_3.062/matlab/lpdfig2.m                 |   12 +
 tags/v_3.062/matlab/lpdfnorm.m                |    9 +
 tags/v_3.062/matlab/lyapunov_symm.m           |   49 +
 tags/v_3.062/matlab/make_ex_.m                |   64 +
 tags/v_3.062/matlab/make_y_.m                 |   36 +
 tags/v_3.062/matlab/marginal_density.m        |   48 +
 tags/v_3.062/matlab/matrictint.m              |   35 +
 tags/v_3.062/matlab/mcmc_diagnostic.m         |  172 +
 tags/v_3.062/matlab/mcmcdiags.m               |  114 +
 tags/v_3.062/matlab/mcompare.m                |   54 +
 tags/v_3.062/matlab/metropolis.m              | 3932 +++++++++++++++++
 tags/v_3.062/matlab/metropolis99.m            |  262 ++
 tags/v_3.062/matlab/mgnldnsty.m               |   50 +
 tags/v_3.062/matlab/mh_optimal_bandwidth.m    |  150 +
 tags/v_3.062/matlab/mj_optmumlik.m            |  223 +
 tags/v_3.062/matlab/mj_qgamma.m               |   30 +
 tags/v_3.062/matlab/mjdgges.dll               |  Bin 0 -> 242176 bytes
 tags/v_3.062/matlab/mode_check.m              |  193 +
 tags/v_3.062/matlab/model_comparison.m        |   92 +
 tags/v_3.062/matlab/mr_hessian.m              |  131 +
 tags/v_3.062/matlab/mr_nlincon.m              |  123 +
 tags/v_3.062/matlab/my_subplot.m              |   30 +
 tags/v_3.062/matlab/newrat.m                  |  159 +
 tags/v_3.062/matlab/numgrad.m                 |   98 +
 tags/v_3.062/matlab/osr.m                     |  162 +
 tags/v_3.062/matlab/osr1.m                    |   45 +
 tags/v_3.062/matlab/osr_obj.m                 |   61 +
 tags/v_3.062/matlab/p2toperc.m                |   29 +
 tags/v_3.062/matlab/pdfig.m                   |    2 +
 tags/v_3.062/matlab/pgamma.m                  |   15 +
 tags/v_3.062/matlab/plot_priors.m             |  137 +
 tags/v_3.062/matlab/pltorg.m                  |   85 +
 tags/v_3.062/matlab/pnorm.m                   |   11 +
 .../matlab/posterior_density_estimate.m       |  178 +
 tags/v_3.062/matlab/posterior_distribution.m  |   72 +
 tags/v_3.062/matlab/posterior_moments.m       |   25 +
 tags/v_3.062/matlab/print_info.m              |   39 +
 tags/v_3.062/matlab/prior_bounds.m            |   46 +
 tags/v_3.062/matlab/priordens.m               |   48 +
 tags/v_3.062/matlab/qbeta.m                   |   26 +
 tags/v_3.062/matlab/qchisq.m                  |   16 +
 tags/v_3.062/matlab/qgamma.m                  |   27 +
 tags/v_3.062/matlab/qnorm.m                   |   20 +
 tags/v_3.062/matlab/qr2.m                     |   11 +
 tags/v_3.062/matlab/qzdiv.m                   |   34 +
 tags/v_3.062/matlab/qzswitch.m                |   64 +
 tags/v_3.062/matlab/read_variables.m          |   25 +
 tags/v_3.062/matlab/reshapel.m                |   22 +
 tags/v_3.062/matlab/resid.m                   |   37 +
 tags/v_3.062/matlab/resid0.m                  |   34 +
 tags/v_3.062/matlab/resol.m                   |   70 +
 tags/v_3.062/matlab/rfrot.m                   |   14 +
 tags/v_3.062/matlab/rfvar3.m                  |  106 +
 tags/v_3.062/matlab/rndprior.m                |   52 +
 tags/v_3.062/matlab/rows.m                    |    2 +
 tags/v_3.062/matlab/rplot.m                   |   80 +
 tags/v_3.062/matlab/selif.m                   |   12 +
 tags/v_3.062/matlab/set_default_option.m      |   10 +
 tags/v_3.062/matlab/set_parameters.m          |   18 +
 tags/v_3.062/matlab/set_prior.m               |  146 +
 tags/v_3.062/matlab/set_shocks.m              |   27 +
 tags/v_3.062/matlab/set_start_date.m          |    6 +
 tags/v_3.062/matlab/set_state_space.m         |   88 +
 tags/v_3.062/matlab/shocks_file.m             |   44 +
 tags/v_3.062/matlab/sim1.m                    |   98 +
 tags/v_3.062/matlab/simk.m                    |  325 ++
 tags/v_3.062/matlab/simul.m                   |   66 +
 tags/v_3.062/matlab/simult.m                  |   41 +
 tags/v_3.062/matlab/simult_.m                 |   66 +
 tags/v_3.062/matlab/simultxdet.m              |  136 +
 tags/v_3.062/matlab/solve1.m                  |  136 +
 tags/v_3.062/matlab/steady.m                  |   28 +
 tags/v_3.062/matlab/steady_.m                 |   43 +
 tags/v_3.062/matlab/stoch_simul.m             |  305 ++
 tags/v_3.062/matlab/subset.m                  |   80 +
 tags/v_3.062/matlab/sylvester3.m              |   49 +
 tags/v_3.062/matlab/sylvester3a.m             |   17 +
 tags/v_3.062/matlab/table.m                   |   26 +
 tags/v_3.062/matlab/testifft.m                |   21 +
 tags/v_3.062/matlab/th_autocovariances.m      |  225 +
 tags/v_3.062/matlab/transition_matrix.m       |   24 +
 tags/v_3.062/matlab/uniform_specification.m   |   12 +
 tags/v_3.062/matlab/union.m                   |   12 +
 tags/v_3.062/matlab/var_index.m               |   11 +
 tags/v_3.062/matlab/var_state_index.m         |   15 +
 tags/v_3.062/matlab/varprior.m                |   54 +
 tags/v_3.062/parser.src/d.h                   |  106 +
 tags/v_3.062/parser.src/d.y                   |  889 ++++
 tags/v_3.062/parser.src/dyn.l                 |  309 ++
 tags/v_3.062/parser.src/dynare.c              | 3216 ++++++++++++++
 tags/v_3.062/parser.src/makefile              |   56 +
 tags/v_3.062/parser.src/makefile.linux        |   57 +
 tags/v_3.062/parser.src/precompiler.cc        |  180 +
 tags/v_3.062/parser.src/precompiler.hh        |   31 +
 tags/v_3.062/tests/arima/mod1.mod             |   23 +
 tags/v_3.062/tests/arima/mod1a.mod            |   23 +
 tags/v_3.062/tests/arima/mod1b.mod            |   25 +
 tags/v_3.062/tests/arima/mod1c.mod            |   27 +
 tags/v_3.062/tests/arima/mod2.mod             |   26 +
 tags/v_3.062/tests/arima/mod2a.mod            |   33 +
 tags/v_3.062/tests/arima/mod2b.mod            |   33 +
 tags/v_3.062/tests/arima/mod2c.mod            |   31 +
 tags/v_3.062/tests/example1.mod               |   44 +
 tags/v_3.062/tests/example2.mod               |   44 +
 tags/v_3.062/tests/fs2000/fs2000.mod          |   89 +
 tags/v_3.062/tests/fs2000/fs2000a.mod         |  103 +
 .../tests/fs2000/fs2000a_steadystate.m        |   53 +
 tags/v_3.062/tests/fs2000/fsdat.m             |  210 +
 tags/v_3.062/tests/fs2000/test.m              |    4 +
 tags/v_3.062/tests/ls2003/data_ca1.m          |  100 +
 tags/v_3.062/tests/ls2003/ls2003.mod          |   65 +
 tags/v_3.062/tests/ls2003/ls2003a.mod         |   65 +
 tags/v_3.062/tests/objectives/CVS/Entries     |    7 +
 tags/v_3.062/tests/objectives/CVS/Repository  |    1 +
 tags/v_3.062/tests/objectives/CVS/Root        |    1 +
 tags/v_3.062/tests/objectives/CVS/Tag         |    1 +
 tags/v_3.062/tests/objectives/sgu_ex1.log     |   15 +
 tags/v_3.062/tests/objectives/sgu_ex1.m       |   98 +
 tags/v_3.062/tests/objectives/sgu_ex1.mat     |  Bin 0 -> 1368 bytes
 tags/v_3.062/tests/objectives/sgu_ex1.mod     |   33 +
 tags/v_3.062/tests/objectives/sgu_ex1_ff.m    |   11 +
 tags/v_3.062/tests/objectives/sgu_ex1_fff.m   |   11 +
 tags/v_3.062/tests/pi2004/idata.m             |    5 +
 tags/v_3.062/tests/pi2004/ireland.mod         |   90 +
 tags/v_3.062/tests/pi2004/ireland1.mod        |   90 +
 tags/v_3.062/tests/pi2004/ych.dat             |  218 +
 tags/v_3.062/tests/precompiler.mod            |   43 +
 tags/v_3.062/tests/ramst.mod                  |   36 +
 tags/v_3.062/tests/ramst_a.mod                |   37 +
 tags/v_3.062/tests/run_test.m                 |   44 +
 tags/v_3.062/tests/t_lag2.mod                 |   40 +
 tags/v_3.062/tests/t_lag2_check.mod           |   44 +
 tags/v_3.062/tests/t_lag2_checka.mod          |   44 +
 tags/v_3.062/tests/t_lag2a.mod                |   44 +
 tags/v_3.062/tests/t_lag2b.mod                |   42 +
 tags/v_3.062/tests/t_periods.mod              |   44 +
 tags/v_3.062/tests/t_periods_a.mod            |   36 +
 tags/v_3.062/tests/t_sgu_ex1.mod              |   38 +
 tags/v_3.062/tests/test.m                     |    4 +
 tags/v_3.062/tests/test_matlab.mod            |   40 +
 tags/v_3.062/tests/variance_0.mod             |   42 +
 293 files changed, 34350 insertions(+)
 create mode 100644 tags/v_3.062/doc/DynareKalman.TeX
 create mode 100644 tags/v_3.062/doc/bibmad.sty
 create mode 100644 tags/v_3.062/doc/dynare.xsl
 create mode 100644 tags/v_3.062/doc/dynare_fo.xsl
 create mode 100644 tags/v_3.062/doc/dynare_fo_fop.xsl
 create mode 100644 tags/v_3.062/doc/dynare_html.xsl
 create mode 100644 tags/v_3.062/doc/dynare_lists.xsl
 create mode 100644 tags/v_3.062/doc/guide.bbl
 create mode 100644 tags/v_3.062/doc/guide.blg
 create mode 100644 tags/v_3.062/doc/guide.tex
 create mode 100644 tags/v_3.062/doc/makefile
 create mode 100644 tags/v_3.062/doc/manual.xml
 create mode 100644 tags/v_3.062/doc/unit_roots.tex
 create mode 100644 tags/v_3.062/examples/arima/mod1.mod
 create mode 100644 tags/v_3.062/examples/arima/mod1a.mod
 create mode 100644 tags/v_3.062/examples/arima/mod1b.mod
 create mode 100644 tags/v_3.062/examples/arima/mod1c.mod
 create mode 100644 tags/v_3.062/examples/arima/mod1d.mod
 create mode 100644 tags/v_3.062/examples/arima/mod2.mod
 create mode 100644 tags/v_3.062/examples/arima/mod2a.mod
 create mode 100644 tags/v_3.062/examples/arima/mod2b.mod
 create mode 100644 tags/v_3.062/examples/arima/mod2c.mod
 create mode 100644 tags/v_3.062/examples/example1.mod
 create mode 100644 tags/v_3.062/examples/example2.mod
 create mode 100644 tags/v_3.062/examples/fs2000/fs2000.mod
 create mode 100644 tags/v_3.062/examples/fs2000/fs2000a.mod
 create mode 100644 tags/v_3.062/examples/fs2000/fs2000a_steadystate.m
 create mode 100644 tags/v_3.062/examples/fs2000/fsdat.m
 create mode 100644 tags/v_3.062/examples/ls2003/data_ca1.m
 create mode 100644 tags/v_3.062/examples/ls2003/ls2003.mod
 create mode 100644 tags/v_3.062/examples/pi2004/idata.m
 create mode 100644 tags/v_3.062/examples/pi2004/ireland.mod
 create mode 100644 tags/v_3.062/examples/pi2004/ych.dat
 create mode 100644 tags/v_3.062/examples/ramst.mod
 create mode 100644 tags/v_3.062/makefile
 create mode 100644 tags/v_3.062/matlab/ChangeLog
 create mode 100644 tags/v_3.062/matlab/CompareModels.m
 create mode 100644 tags/v_3.062/matlab/DiffuseKalmanSmoother.m
 create mode 100644 tags/v_3.062/matlab/DiffuseKalmanSmoother1.m
 create mode 100644 tags/v_3.062/matlab/DiffuseKalmanSmoother3.m
 create mode 100644 tags/v_3.062/matlab/DiffuseKalmanSmootherH.m
 create mode 100644 tags/v_3.062/matlab/DiffuseKalmanSmootherH1.m
 create mode 100644 tags/v_3.062/matlab/DiffuseKalmanSmootherH3.m
 create mode 100644 tags/v_3.062/matlab/DiffuseLikelihood1.m
 create mode 100644 tags/v_3.062/matlab/DiffuseLikelihood3.m
 create mode 100644 tags/v_3.062/matlab/DiffuseLikelihoodH1.m
 create mode 100644 tags/v_3.062/matlab/DiffuseLikelihoodH3.m
 create mode 100644 tags/v_3.062/matlab/DsgeLikelihood.m
 create mode 100644 tags/v_3.062/matlab/DsgeSmoother.m
 create mode 100644 tags/v_3.062/matlab/DsgeVarLikelihood.m
 create mode 100644 tags/v_3.062/matlab/EvalWelfare.m
 create mode 100644 tags/v_3.062/matlab/GetPosteriorStatistics.m
 create mode 100644 tags/v_3.062/matlab/MakeSmoothVariablesPlots.m
 create mode 100644 tags/v_3.062/matlab/VarSampleMoments.m
 create mode 100755 tags/v_3.062/matlab/asamin.dll
 create mode 100644 tags/v_3.062/matlab/asamin.m
 create mode 100644 tags/v_3.062/matlab/beta_rnd.m
 create mode 100644 tags/v_3.062/matlab/bfgsi.m
 create mode 100644 tags/v_3.062/matlab/bicgstab.m
 create mode 100644 tags/v_3.062/matlab/bksup.m
 create mode 100644 tags/v_3.062/matlab/bksup1.m
 create mode 100644 tags/v_3.062/matlab/bksupk.m
 create mode 100644 tags/v_3.062/matlab/brm.m
 create mode 100644 tags/v_3.062/matlab/bseastr.m
 create mode 100644 tags/v_3.062/matlab/calib.m
 create mode 100644 tags/v_3.062/matlab/calib_obj.m
 create mode 100644 tags/v_3.062/matlab/calib_obj2.m
 create mode 100644 tags/v_3.062/matlab/check.m
 create mode 100644 tags/v_3.062/matlab/check_mh.m
 create mode 100644 tags/v_3.062/matlab/check_model.m
 create mode 100644 tags/v_3.062/matlab/cols.m
 create mode 100644 tags/v_3.062/matlab/compdist.m
 create mode 100644 tags/v_3.062/matlab/csminit.m
 create mode 100644 tags/v_3.062/matlab/csminwel.m
 create mode 100644 tags/v_3.062/matlab/datatomfile.m
 create mode 100644 tags/v_3.062/matlab/dbeta.m
 create mode 100644 tags/v_3.062/matlab/dcompare.m
 create mode 100644 tags/v_3.062/matlab/dgamma.m
 create mode 100644 tags/v_3.062/matlab/diffext.m
 create mode 100644 tags/v_3.062/matlab/disp_dr.m
 create mode 100644 tags/v_3.062/matlab/disp_moments.m
 create mode 100644 tags/v_3.062/matlab/disp_th_moments.m
 create mode 100644 tags/v_3.062/matlab/dlognorm.m
 create mode 100644 tags/v_3.062/matlab/dnorm.m
 create mode 100644 tags/v_3.062/matlab/dr1.m
 create mode 100644 tags/v_3.062/matlab/dr11.m
 create mode 100644 tags/v_3.062/matlab/dr2.m
 create mode 100644 tags/v_3.062/matlab/draw_prior_density.m
 create mode 100644 tags/v_3.062/matlab/dsample.m
 create mode 100644 tags/v_3.062/matlab/dy_date.m
 create mode 100644 tags/v_3.062/matlab/dyn2vec.m
 create mode 100644 tags/v_3.062/matlab/dyn_bvar.m
 create mode 100644 tags/v_3.062/matlab/dyn_bvar2.m
 create mode 100644 tags/v_3.062/matlab/dynare.m
 create mode 100644 tags/v_3.062/matlab/dynare_estimation.m
 create mode 100644 tags/v_3.062/matlab/dynare_m.exe
 create mode 100644 tags/v_3.062/matlab/dynare_resolve.m
 create mode 100644 tags/v_3.062/matlab/dynare_solve.m
 create mode 100644 tags/v_3.062/matlab/dynasave.m
 create mode 100644 tags/v_3.062/matlab/dynatype.m
 create mode 100644 tags/v_3.062/matlab/equiv.m
 create mode 100644 tags/v_3.062/matlab/f_var.m
 create mode 100644 tags/v_3.062/matlab/fbeta.m
 create mode 100644 tags/v_3.062/matlab/ff1_.m
 create mode 100644 tags/v_3.062/matlab/ff2_.m
 create mode 100644 tags/v_3.062/matlab/ff2a_.m
 create mode 100644 tags/v_3.062/matlab/ff_simul.m
 create mode 100644 tags/v_3.062/matlab/ff_simul1.m
 create mode 100644 tags/v_3.062/matlab/ff_simul2.m
 create mode 100644 tags/v_3.062/matlab/fff.m
 create mode 100644 tags/v_3.062/matlab/ffill.m
 create mode 100644 tags/v_3.062/matlab/fgamma.m
 create mode 100644 tags/v_3.062/matlab/figamm.m
 create mode 100644 tags/v_3.062/matlab/fnorm.m
 create mode 100644 tags/v_3.062/matlab/forcst.m
 create mode 100644 tags/v_3.062/matlab/forcst2.m
 create mode 100644 tags/v_3.062/matlab/forcst2a.m
 create mode 100644 tags/v_3.062/matlab/forecast.m
 create mode 100644 tags/v_3.062/matlab/fs_dyn.m
 create mode 100644 tags/v_3.062/matlab/ftest.m
 create mode 100644 tags/v_3.062/matlab/fx_.m
 create mode 100644 tags/v_3.062/matlab/gamm_rnd.m
 create mode 100644 tags/v_3.062/matlab/gcompare.m
 create mode 100644 tags/v_3.062/matlab/generalized_cholesky.m
 create mode 100644 tags/v_3.062/matlab/generalized_cholesky2.m
 create mode 100755 tags/v_3.062/matlab/gensylv.dll
 create mode 100644 tags/v_3.062/matlab/get_posterior_parameters.m
 create mode 100644 tags/v_3.062/matlab/get_the_name.m
 create mode 100644 tags/v_3.062/matlab/hessext.m
 create mode 100644 tags/v_3.062/matlab/hessian.m
 create mode 100644 tags/v_3.062/matlab/hessian2.m
 create mode 100644 tags/v_3.062/matlab/hessian_sparse.m
 create mode 100644 tags/v_3.062/matlab/hpfast.m
 create mode 100644 tags/v_3.062/matlab/indnv.m
 create mode 100644 tags/v_3.062/matlab/initial_estimation_checks.m
 create mode 100644 tags/v_3.062/matlab/initvalf_.m
 create mode 100644 tags/v_3.062/matlab/inverse_gamma_specification.m
 create mode 100644 tags/v_3.062/matlab/irf.m
 create mode 100644 tags/v_3.062/matlab/jacob.m
 create mode 100644 tags/v_3.062/matlab/jacob2.m
 create mode 100644 tags/v_3.062/matlab/jacob_a.m
 create mode 100644 tags/v_3.062/matlab/kalman_transition_matrix.m
 create mode 100644 tags/v_3.062/matlab/kernel_density_estimate.m
 create mode 100644 tags/v_3.062/matlab/linear.m
 create mode 100644 tags/v_3.062/matlab/list_variables.m
 create mode 100644 tags/v_3.062/matlab/lnsrch.m
 create mode 100644 tags/v_3.062/matlab/lnsrch1.m
 create mode 100644 tags/v_3.062/matlab/lpdfbeta.m
 create mode 100644 tags/v_3.062/matlab/lpdfgam.m
 create mode 100644 tags/v_3.062/matlab/lpdfgbeta.m
 create mode 100644 tags/v_3.062/matlab/lpdfig.m
 create mode 100644 tags/v_3.062/matlab/lpdfig1.m
 create mode 100644 tags/v_3.062/matlab/lpdfig2.m
 create mode 100644 tags/v_3.062/matlab/lpdfnorm.m
 create mode 100644 tags/v_3.062/matlab/lyapunov_symm.m
 create mode 100644 tags/v_3.062/matlab/make_ex_.m
 create mode 100644 tags/v_3.062/matlab/make_y_.m
 create mode 100644 tags/v_3.062/matlab/marginal_density.m
 create mode 100644 tags/v_3.062/matlab/matrictint.m
 create mode 100644 tags/v_3.062/matlab/mcmc_diagnostic.m
 create mode 100644 tags/v_3.062/matlab/mcmcdiags.m
 create mode 100644 tags/v_3.062/matlab/mcompare.m
 create mode 100644 tags/v_3.062/matlab/metropolis.m
 create mode 100644 tags/v_3.062/matlab/metropolis99.m
 create mode 100644 tags/v_3.062/matlab/mgnldnsty.m
 create mode 100644 tags/v_3.062/matlab/mh_optimal_bandwidth.m
 create mode 100644 tags/v_3.062/matlab/mj_optmumlik.m
 create mode 100644 tags/v_3.062/matlab/mj_qgamma.m
 create mode 100755 tags/v_3.062/matlab/mjdgges.dll
 create mode 100644 tags/v_3.062/matlab/mode_check.m
 create mode 100644 tags/v_3.062/matlab/model_comparison.m
 create mode 100644 tags/v_3.062/matlab/mr_hessian.m
 create mode 100644 tags/v_3.062/matlab/mr_nlincon.m
 create mode 100644 tags/v_3.062/matlab/my_subplot.m
 create mode 100644 tags/v_3.062/matlab/newrat.m
 create mode 100644 tags/v_3.062/matlab/numgrad.m
 create mode 100644 tags/v_3.062/matlab/osr.m
 create mode 100644 tags/v_3.062/matlab/osr1.m
 create mode 100644 tags/v_3.062/matlab/osr_obj.m
 create mode 100644 tags/v_3.062/matlab/p2toperc.m
 create mode 100644 tags/v_3.062/matlab/pdfig.m
 create mode 100644 tags/v_3.062/matlab/pgamma.m
 create mode 100644 tags/v_3.062/matlab/plot_priors.m
 create mode 100644 tags/v_3.062/matlab/pltorg.m
 create mode 100644 tags/v_3.062/matlab/pnorm.m
 create mode 100644 tags/v_3.062/matlab/posterior_density_estimate.m
 create mode 100644 tags/v_3.062/matlab/posterior_distribution.m
 create mode 100644 tags/v_3.062/matlab/posterior_moments.m
 create mode 100644 tags/v_3.062/matlab/print_info.m
 create mode 100644 tags/v_3.062/matlab/prior_bounds.m
 create mode 100644 tags/v_3.062/matlab/priordens.m
 create mode 100644 tags/v_3.062/matlab/qbeta.m
 create mode 100644 tags/v_3.062/matlab/qchisq.m
 create mode 100644 tags/v_3.062/matlab/qgamma.m
 create mode 100644 tags/v_3.062/matlab/qnorm.m
 create mode 100644 tags/v_3.062/matlab/qr2.m
 create mode 100644 tags/v_3.062/matlab/qzdiv.m
 create mode 100644 tags/v_3.062/matlab/qzswitch.m
 create mode 100644 tags/v_3.062/matlab/read_variables.m
 create mode 100644 tags/v_3.062/matlab/reshapel.m
 create mode 100644 tags/v_3.062/matlab/resid.m
 create mode 100644 tags/v_3.062/matlab/resid0.m
 create mode 100644 tags/v_3.062/matlab/resol.m
 create mode 100644 tags/v_3.062/matlab/rfrot.m
 create mode 100644 tags/v_3.062/matlab/rfvar3.m
 create mode 100644 tags/v_3.062/matlab/rndprior.m
 create mode 100644 tags/v_3.062/matlab/rows.m
 create mode 100644 tags/v_3.062/matlab/rplot.m
 create mode 100644 tags/v_3.062/matlab/selif.m
 create mode 100644 tags/v_3.062/matlab/set_default_option.m
 create mode 100644 tags/v_3.062/matlab/set_parameters.m
 create mode 100644 tags/v_3.062/matlab/set_prior.m
 create mode 100644 tags/v_3.062/matlab/set_shocks.m
 create mode 100644 tags/v_3.062/matlab/set_start_date.m
 create mode 100644 tags/v_3.062/matlab/set_state_space.m
 create mode 100644 tags/v_3.062/matlab/shocks_file.m
 create mode 100644 tags/v_3.062/matlab/sim1.m
 create mode 100644 tags/v_3.062/matlab/simk.m
 create mode 100644 tags/v_3.062/matlab/simul.m
 create mode 100644 tags/v_3.062/matlab/simult.m
 create mode 100644 tags/v_3.062/matlab/simult_.m
 create mode 100644 tags/v_3.062/matlab/simultxdet.m
 create mode 100644 tags/v_3.062/matlab/solve1.m
 create mode 100644 tags/v_3.062/matlab/steady.m
 create mode 100644 tags/v_3.062/matlab/steady_.m
 create mode 100644 tags/v_3.062/matlab/stoch_simul.m
 create mode 100644 tags/v_3.062/matlab/subset.m
 create mode 100644 tags/v_3.062/matlab/sylvester3.m
 create mode 100644 tags/v_3.062/matlab/sylvester3a.m
 create mode 100644 tags/v_3.062/matlab/table.m
 create mode 100644 tags/v_3.062/matlab/testifft.m
 create mode 100644 tags/v_3.062/matlab/th_autocovariances.m
 create mode 100644 tags/v_3.062/matlab/transition_matrix.m
 create mode 100644 tags/v_3.062/matlab/uniform_specification.m
 create mode 100644 tags/v_3.062/matlab/union.m
 create mode 100644 tags/v_3.062/matlab/var_index.m
 create mode 100644 tags/v_3.062/matlab/var_state_index.m
 create mode 100644 tags/v_3.062/matlab/varprior.m
 create mode 100644 tags/v_3.062/parser.src/d.h
 create mode 100644 tags/v_3.062/parser.src/d.y
 create mode 100644 tags/v_3.062/parser.src/dyn.l
 create mode 100644 tags/v_3.062/parser.src/dynare.c
 create mode 100644 tags/v_3.062/parser.src/makefile
 create mode 100644 tags/v_3.062/parser.src/makefile.linux
 create mode 100644 tags/v_3.062/parser.src/precompiler.cc
 create mode 100644 tags/v_3.062/parser.src/precompiler.hh
 create mode 100644 tags/v_3.062/tests/arima/mod1.mod
 create mode 100644 tags/v_3.062/tests/arima/mod1a.mod
 create mode 100644 tags/v_3.062/tests/arima/mod1b.mod
 create mode 100644 tags/v_3.062/tests/arima/mod1c.mod
 create mode 100644 tags/v_3.062/tests/arima/mod2.mod
 create mode 100644 tags/v_3.062/tests/arima/mod2a.mod
 create mode 100644 tags/v_3.062/tests/arima/mod2b.mod
 create mode 100644 tags/v_3.062/tests/arima/mod2c.mod
 create mode 100644 tags/v_3.062/tests/example1.mod
 create mode 100644 tags/v_3.062/tests/example2.mod
 create mode 100644 tags/v_3.062/tests/fs2000/fs2000.mod
 create mode 100644 tags/v_3.062/tests/fs2000/fs2000a.mod
 create mode 100644 tags/v_3.062/tests/fs2000/fs2000a_steadystate.m
 create mode 100644 tags/v_3.062/tests/fs2000/fsdat.m
 create mode 100644 tags/v_3.062/tests/fs2000/test.m
 create mode 100644 tags/v_3.062/tests/ls2003/data_ca1.m
 create mode 100644 tags/v_3.062/tests/ls2003/ls2003.mod
 create mode 100644 tags/v_3.062/tests/ls2003/ls2003a.mod
 create mode 100644 tags/v_3.062/tests/objectives/CVS/Entries
 create mode 100644 tags/v_3.062/tests/objectives/CVS/Repository
 create mode 100644 tags/v_3.062/tests/objectives/CVS/Root
 create mode 100644 tags/v_3.062/tests/objectives/CVS/Tag
 create mode 100644 tags/v_3.062/tests/objectives/sgu_ex1.log
 create mode 100644 tags/v_3.062/tests/objectives/sgu_ex1.m
 create mode 100644 tags/v_3.062/tests/objectives/sgu_ex1.mat
 create mode 100644 tags/v_3.062/tests/objectives/sgu_ex1.mod
 create mode 100644 tags/v_3.062/tests/objectives/sgu_ex1_ff.m
 create mode 100644 tags/v_3.062/tests/objectives/sgu_ex1_fff.m
 create mode 100644 tags/v_3.062/tests/pi2004/idata.m
 create mode 100644 tags/v_3.062/tests/pi2004/ireland.mod
 create mode 100644 tags/v_3.062/tests/pi2004/ireland1.mod
 create mode 100644 tags/v_3.062/tests/pi2004/ych.dat
 create mode 100644 tags/v_3.062/tests/precompiler.mod
 create mode 100644 tags/v_3.062/tests/ramst.mod
 create mode 100644 tags/v_3.062/tests/ramst_a.mod
 create mode 100644 tags/v_3.062/tests/run_test.m
 create mode 100644 tags/v_3.062/tests/t_lag2.mod
 create mode 100644 tags/v_3.062/tests/t_lag2_check.mod
 create mode 100644 tags/v_3.062/tests/t_lag2_checka.mod
 create mode 100644 tags/v_3.062/tests/t_lag2a.mod
 create mode 100644 tags/v_3.062/tests/t_lag2b.mod
 create mode 100644 tags/v_3.062/tests/t_periods.mod
 create mode 100644 tags/v_3.062/tests/t_periods_a.mod
 create mode 100644 tags/v_3.062/tests/t_sgu_ex1.mod
 create mode 100644 tags/v_3.062/tests/test.m
 create mode 100644 tags/v_3.062/tests/test_matlab.mod
 create mode 100644 tags/v_3.062/tests/variance_0.mod

diff --git a/tags/v_3.062/doc/DynareKalman.TeX b/tags/v_3.062/doc/DynareKalman.TeX
new file mode 100644
index 0000000000..82729c4c65
--- /dev/null
+++ b/tags/v_3.062/doc/DynareKalman.TeX
@@ -0,0 +1,196 @@
+% ----------------------------------------------------------------
+% AMS-LaTeX Paper ************************************************
+% **** -----------------------------------------------------------
+\documentclass{amsart}
+\usepackage{graphicx}
+% ----------------------------------------------------------------
+\vfuzz2pt % Don't report over-full v-boxes if over-edge is small
+\hfuzz2pt % Don't report over-full h-boxes if over-edge is small
+% THEOREMS -------------------------------------------------------
+\newtheorem{thm}{Theorem}[section]
+\newtheorem{cor}[thm]{Corollary}
+\newtheorem{lem}[thm]{Lemma}
+\newtheorem{prop}[thm]{Proposition}
+\theoremstyle{definition}
+\newtheorem{defn}[thm]{Definition}
+\theoremstyle{remark}
+\newtheorem{rem}[thm]{Remark}
+\numberwithin{equation}{section}
+% MATH -----------------------------------------------------------
+\newcommand{\norm}[1]{\left\Vert#1\right\Vert}
+\newcommand{\abs}[1]{\left\vert#1\right\vert}
+\newcommand{\set}[1]{\left\{#1\right\}}
+\newcommand{\Real}{\mathbb R}
+\newcommand{\eps}{\varepsilon}
+\newcommand{\To}{\longrightarrow}
+\newcommand{\BX}{\mathbf{B}(X)}
+\newcommand{\A}{\mathcal{A}}
+% ----------------------------------------------------------------
+\begin{document}
+
+\title{Kalman filtering and smoothing in Dynare}%
+% ----------------------------------------------------------------
+\maketitle
+% ----------------------------------------------------------------
+
+\section*{Introduction}
+
+\noindent \textbf{``Filtering and Smoothing of State Vector for
+Diffuse State Space Models''}, S.J. Koopman and J. Durbin (2003,
+in \textit{Journal of Time Series Analysis}, vol. 24(1), pp.
+85-98).\newline
+
+\noindent \textbf{``Fast Filtering and Smoothing for Multivariate
+State Space Models''}, S.J. Koopman and J. Durbin (2000, in
+\textit{Journal of Time Series Analysis}, vol. 21(3), pp.
+282-296).\newline
+
+
+\bigskip
+
+\noindent \textsc{The State-Space Model}\footnote{Note that in
+Dynare, matrices $T$, $Z$, $R$, $H$ and $Q$ are assumed to be time
+invariant.}:
+
+\[y_t =   Z\alpha_t + \varepsilon_t\]
+\[\alpha_{t+1} = T \alpha_t + R\eta_t\]
+with:
+\[\alpha_1 = a + A\delta + R_0\eta_0\]
+
+\noindent $m\times q$ matrix $A$ and $m\times(m-q)$ matrix $R_0$
+are selection matrices (their columns constitue all the columns of
+the $m\times m$ identity matrix) so that $A'R_0 = 0$ and
+$A'\alpha_1 = \delta$. We assume that the vector $\delta$ is
+distributed as a $\mathcal{N}(0,\kappa I_q)$ for a given  $\kappa
+> 0$. So that the expectation of $\alpha_1$ is a and its variance
+is $P$, with
+
+\[ P = \kappa P_{\infty} + P_{\star}\]
+\[           P_{\infty} = A A'\]
+\[ P_{\star}  = R_0 Q_0 R_0'\]
+
+\noindent $P_{\infty}$ is a $m\times m$ diagonal matrix with $q$
+ones and $m-q$ zeros. and where: $y_t$ is a $pp\times 1$ vector,
+$\alpha_t$ is a $mm\times 1$ vector, $\varepsilon_t$ is a
+$pp\times 1$ multivariate random variable (iid
+$\mathcal{N}(0,H)$), $\eta_t$ is a $rr\times 1$ multivariate
+random variable (iid $\mathcal{N}(0,Q)$), $a_1$ is a $mm\times 1$
+vector, $Z_t$ is a $pp\times mm$ matrix, $T$ is a $mm \times mm$
+matrix, $H$ is a $pp\times pp$ matrix, $R$ is a $mm\times rr$
+matrix, $Q$ is a $rr\times rr$ matrix and $P_1$ is a $mm\times mm$
+matrix. \newline
+
+\section{Filtering}
+
+\noindent The filtering equations are given by:
+\begin{equation}
+\begin{split}
+v_t &= y_t - Z  a_t\\
+F_t &= Z P_t Z' + H\\
+K_t &= P_t Z' F_t^{-1}\\
+a_{t+1} &= T (a_t + K_t v_t)\\
+P_{t+1} &= T (P_t - P_tZ'K') T' + R Q R'\\
+\end{split}
+\end{equation}
+$\{F_t\}$ and $\{v_t\}$ are used to evaluate the likelihood. A
+potentially faster algorithm (unfortunately not with matlab) is to
+consider a univariate approach to the multivariate Kalman filter
+(the covariance matrix associated to the measurement errors has to
+be diagonal: $H=diag(\sigma_1^2,\dots,\sigma_{pp}^2)$). Let $Z_i$
+be line $i$ of the selection matrix $Z$. The univariate algorithm
+is as follows :
+\begin{equation}
+\begin{split}
+v_{t,i} &= y_{t,i} - Z_i  a_t^{(i)}\\
+F_t^{(i)} &= Z_i P_t^{(i)} Z_i' + \sigma_{i}^2\\
+K_t^{(i)} &= P_t^{(i)} Z_i'\\
+a_{t}^{(i+1)} &= a_t^{(i)} + K_t^{(i)} v_{t,i} / F_t^{(i)}\\
+P_{t}^{(i+1)} &= P_{t}^{(i)} - K_{t}^{(i)} \left.K_t^{(i)}\right.' / F_t^{(i)}\\
+a_{t+1}^{(1)} &= T a_t^{(pp)}\\
+P_{t+1}^{(1)} &= T P_t^{(pp)} T' + R Q R'\\
+\end{split}
+\end{equation}
+when $F_t^{(i)}$ is equal to zero we simply have
+$a_{t}^{(i+1)}=a_{t}^{(i)}$ and $P_{t}^{(i+1)}=P_{t}^{(i)}$. The
+log-likelihood is evaluated as follows:
+\begin{equation}
+\mathcal{L}_T = const -\frac{1}{2}\sum_{i=1}^{pp}\sum_{t=1}^n \log
+F_{t}^{(i)} + v_{t,i}^2 / F_{t}^{(i)}
+\end{equation}
+
+\bigskip
+
+\noindent The diffuse filtering equations are given by:
+\begin{equation}
+\begin{split}
+v_t &= y_t - Z  a_t\\
+F_{\infty,t} &= Z P_{\infty,t} Z' + H\\
+K_{\infty,t} &= P_{\infty,t} Z' F_{\infty,t}^{-1}\\
+F_{\ast,t} &= Z P_{\ast,t} Z' + H\\
+K_{\ast,t} &= \left(P_{\ast,t} Z' - K_{\infty,t}F_{\ast,t}\right)F_{\infty,t}^{-1}\\
+P_{\ast,t+1} &= T (P_{\ast,t}-P_{\ast,t}Z'K_{\infty,t}' - P_{\infty,t}Z'K_{\ast,t}') T' + R Q R'\\
+P_{\infty,t+1} &= T(P_{\infty,t}-P_{\infty,t}Z'K_{\infty,t}')T'\\
+a_{t+1} &= T (a_t + K_{\infty,t} v_t)\\
+\end{split}
+\end{equation}
+When the condition $rank(P_{\infty,t+1})=0$ is satisfied we set
+$d=t$ and go back to the standard Kalman filtering equations. Here
+$F_{\infty,t}$ is assumed to be a full rank matrix. If this is not
+the case we switch to another algorithm. If $F_{\infty,t}=0$:
+\begin{equation}
+\begin{split}
+v_t &= y_t - Z  a_t\\
+F_{\ast,t} &= Z P_{\ast,t} Z' + H\\
+K_{\ast,t} &= P_{\ast,t} Z'F_{\infty,t}^{-1}\\
+P_{\ast,t+1} &= T (P_{\ast,t}-P_{\ast,t}Z'K_{\ast,t}') T' + R Q R'\\
+P_{\infty,t+1} &= TP_{\infty,t}T'\\
+a_{t+1} &= T (a_t + K_{\ast,t} v_t)\\
+L_t &= T(I - K_t Z)\\
+\end{split}
+\end{equation}
+otherwise, we consider a diffuse version of the univariate
+approach described above.
+
+\section{Smoothing}
+
+\noindent The smoothing equations are given by:
+\begin{equation}
+\begin{split}
+r_{t-1} &= Z' F_t^{-1}v_t + L_t' r_t\\
+\widehat{\alpha}_t &= a_t + P_t r_{t-1} \\
+\widehat{\eta}_t &= Q R r_t\\
+\widehat{\varepsilon}_t &= H \left(F_t^{-1}v_t-K_t'r_t\right)\\
+\end{split}
+\end{equation}
+initializing with $r_n = 0$ and with $L_t = T-K_tZ$. The diffuse
+smoothing equations are given by :
+\begin{equation}
+\begin{split}
+r_{t-1}^{(0)} &= L_{\infty,t}r_{t}^{(0)}\\
+r_{t-1}^{(1)} &= Z' F_{\infty,t}^{-1}v_t - K_{\ast,t}'r_{t}^{(0)}+ L_{\infty,t}' r_t^{(1)}\\
+\widehat{\alpha}_t &= a_t + P_{\ast,t} r_{t-1}^{(0)} + P_{\infty,t}r_{t-1}^{(1)}\\
+\widehat{\eta}_t &= Q R r_t^{(0)}\\
+\widehat{\varepsilon}_t &= -H K_{\infty,t}'r_t^{(0)}\\
+\end{split}
+\end{equation}
+for $t = d,d-1,...,1$, where $d$ is such that $P_{\infty,d+1}=0$.
+This backward recurrence is initialized with $r_{d}^{(0)}=r_{d}$,
+obtained from the non diffuse Kalman smoother, and
+$r_{d}^{(1)}=0$. $L_{\infty,t} = T-K_{\infty,t}Z$.\newline
+
+
+\noindent A univariate smoothing algorithm has to be coded... In
+the smoothing part the matrix $F_t$ (or $F_{\infty,t}$) is assumed
+to be full rank...
+
+
+
+
+
+% ----------------------------------------------------------------
+%\bibliographystyle{amsplain}
+%\bibliography{}
+\end{document}
+% ----------------------------------------------------------------
+
+
diff --git a/tags/v_3.062/doc/bibmad.sty b/tags/v_3.062/doc/bibmad.sty
new file mode 100644
index 0000000000..d25236e069
--- /dev/null
+++ b/tags/v_3.062/doc/bibmad.sty
@@ -0,0 +1,105 @@
+\message{harvard bibliography,}
+
+\def\@hiteml[#1]#2#3#4{\item[]\if@filesw%
+      { \def\protect##1{\string ##1\space}\immediate%
+\write\@auxout{\string\harvardcite{#4}{#2}{#1}{#3}}}\fi%
+\protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces}
+
+\def\@hitem#1#2#3{\item[]\if@filesw%
+      { \def\protect##1{\string ##1\space}\immediate%
+\write\@auxout{\string\harvardcite{#3}{#1}{#1}{#2}}}\fi%
+\protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces}
+
+\def\harvarditem{\@ifnextchar [{\@hiteml}{\@hitem}}
+
+\def\harvardcite#1#2#3#4{
+  \global\@namedef{bhf@#1}{#2}
+  \global\@namedef{bha@#1}{#3}
+  \global\@namedef{bhy@#1}{#4}\global\@namedef{b@#1}{\csname bhf@#1\endcsname}
+}
+
+\def\citeasnoun{\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+\def\cite{\@ifnextchar [{\@tempswatrue\@citexasnoun}
+                           {\@tempswafalse\@citexasnoun[]}
+}
+\def\citeyear{\@ifnextchar [{\@tempswatrue\@citexyear}
+                           {\@tempswafalse\@citexyear[]}
+}
+\def\citename{\@ifnextchar [{\@tempswatrue\@citexname}
+                           {\@tempswafalse\@citexname[]}
+}
+
+% \def\@enamedef#1{\expandafter\edef\csname #1\endcsname}
+% Previous line should be replaced by the following to prevent
+% problems with the NFSS. Solution by Bernd Raichle.
+\def\@enamedef#1{\expandafter\def\csname #1\expandafter\endcsname\expandafter}
+
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citea{}\@cite{\@for\@citeb:=#2\do
+    {\@citea\def\@citea{\@hisep\penalty\@m\ }\@ifundefined
+       {b@\@citeb}{{\bf ?}\@warning
+       {Citation `\@citeb' on page \thepage \space undefined}}%
+{{\csname b@\@citeb\endcsname\@hysep\csname bhy@\@citeb\endcsname}%
+\global\@enamedef{b@\@citeb}{\csname bha@\@citeb\endcsname}}%
+}}{#1}}
+
+\def\@citexasnoun[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+\@citeasnoun{{\@ifundefined%
+{b@#2}%
+{[{\bf ?}\@warning{Citation `#2' on page \thepage \space undefined}}%
+{{\csname b@#2\endcsname\ [\csname bhy@#2\endcsname}%
+\global\@namedef{b@#2}{\csname bha@#2\endcsname}}%
+}}{#1}}
+
+\def\@citexname[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+\@citename{{\@ifundefined%
+{b@#2}%
+{{\bf ?}\@warning{Citation `#2' on page \thepage \space undefined}}%
+{{\csname bhf@#2\endcsname}}%
+}}{#1}}
+
+\def\@citexyear[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+  \def\@citeayear{}\@cite{\@for\@citebyear:=#2\do
+    {\@citeayear\def\@citeayear{\@hisep\penalty\@m\ }\@ifundefined
+       {b@\@citebyear}{{\bf ?}\@warning
+       {Citation `\@citebyear' on page \thepage \space undefined}}%
+{{\csname bhy@\@citebyear\endcsname}%
+}%
+}}{#1}}
+
+\gdef\hysep@agsm{\ }\gdef\hisep@agsm{,}%
+\gdef\hysep@dcu{, }\gdef\hisep@dcu{;}%
+\let\@hysep\hysep@agsm \let\@hisep\hisep@agsm
+\def\citationstyle#1{%
+\global\@namedef{@hysep}{\csname hysep@#1\endcsname}%
+\global\@namedef{@hisep}{\csname hisep@#1\endcsname}}
+ 
+%DEFAULT DEFINITIONS
+\def\@cite#1#2{({#1\if@tempswa , #2\fi})}
+\def\@citeasnoun#1#2{{#1\if@tempswa , #2\fi]}}
+\def\@citename#1#2{{#1\if@tempswa \ (#2)\fi}}
+
+% CHANGE \end{document} - to handle double definitions
+\def\enddocument{\@checkend{document}\clearpage\begingroup
+\if@filesw \immediate\closeout\@mainaux
+\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
+\def\bibcite{\@testdef b}%
+\def\harvardcite{\@testbibh}\@tempswafalse \makeatletter\input \jobname.aux
+\if@tempswa \@warning{Label(s) may have changed.  Rerun to get
+cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
+ 
+\def\@testbibh #1#2#3{
+  \def\@tempa{#2}\expandafter
+  \ifx \csname bhf@#1\endcsname \@tempa 
+     \def\@tempa{#3}\expandafter
+     \ifx \csname bha@#1\endcsname \@tempa
+     \else \@tempswatrue
+     \fi
+  \else
+     \@tempswatrue
+  \fi
+}
+ 
+%
\ No newline at end of file
diff --git a/tags/v_3.062/doc/dynare.xsl b/tags/v_3.062/doc/dynare.xsl
new file mode 100644
index 0000000000..337666d1df
--- /dev/null
+++ b/tags/v_3.062/doc/dynare.xsl
@@ -0,0 +1,23 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+                exclude-result-prefixes="doc"
+                version='1.0'>
+
+<!-- It is important to use indent="no" here, otherwise verbatim -->
+<!-- environments get broken by indented tags...at least when the -->
+<!-- callout extension is used...at least with some processors -->
+
+<xsl:param name="generate.index">1</xsl:param>
+<xsl:param name="refentry.generate.name">0</xsl:param>
+<xsl:param name="refentry.generate.title">1</xsl:param>
+<xsl:param name="section.autolabel" select="1"></xsl:param>
+<xsl:param name="biblioentry.item.separator">, </xsl:param>
+
+<xsl:attribute-set name="section.level1.properties">
+  <xsl:attribute name="break-before">page</xsl:attribute>
+</xsl:attribute-set>
+
+
+</xsl:stylesheet>
diff --git a/tags/v_3.062/doc/dynare_fo.xsl b/tags/v_3.062/doc/dynare_fo.xsl
new file mode 100644
index 0000000000..ce5e367b50
--- /dev/null
+++ b/tags/v_3.062/doc/dynare_fo.xsl
@@ -0,0 +1,28 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+                exclude-result-prefixes="doc"
+                version='1.0'>
+
+<!-- It is important to use indent="no" here, otherwise verbatim -->
+<!-- environments get broken by indented tags...at least when the -->
+<!-- callout extension is used...at least with some processors -->
+<xsl:import href="e:/docbook-xsl-1.66.1/fo/docbook.xsl"/>
+<xsl:import href="dynare.xsl"/>
+
+<xsl:import href="dynare_lists.xsl"/>
+
+<xsl:param name="passivetex.extensions">1</xsl:param>
+<xsl:attribute-set name="list.item.spacing">
+  <xsl:attribute name="line-height">0em</xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="compact.list.item.spacing">
+  <xsl:attribute name="space-before.optimum">0em</xsl:attribute>
+  <xsl:attribute name="space-before.minimum">0em</xsl:attribute>
+  <xsl:attribute name="space-before.maximum">0em</xsl:attribute>
+  <xsl:attribute name="line-height">0em</xsl:attribute>
+</xsl:attribute-set>
+ 
+
+</xsl:stylesheet>
diff --git a/tags/v_3.062/doc/dynare_fo_fop.xsl b/tags/v_3.062/doc/dynare_fo_fop.xsl
new file mode 100644
index 0000000000..b99170fe54
--- /dev/null
+++ b/tags/v_3.062/doc/dynare_fo_fop.xsl
@@ -0,0 +1,115 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+                exclude-result-prefixes="doc"
+                version='1.0'>
+
+<!-- It is important to use indent="no" here, otherwise verbatim -->
+<!-- environments get broken by indented tags...at least when the -->
+<!-- callout extension is used...at least with some processors -->
+<!-- <xsl:import href="c:/cygwin/usr/share/docbook-xsl/fo/docbook.xsl"/> -->
+<xsl:import href="e:/docbook-xsl-1.65.1/fo/docbook.xsl"/>
+
+<xsl:param name="use.extensions">1</xsl:param>
+<xsl:param name="fop.extensions">1</xsl:param>
+<xsl:param name="refentry.generate.name">0</xsl:param>
+<xsl:param name="refentry.generate.title">1</xsl:param>
+<xsl:template match="refsynopsisdiv">
+  <fo:block font-weight="bold" font-size="16pt" font-family="sans-serif">
+    <xsl:call-template name="gentext">
+                  <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
+    </xsl:call-template>
+  </fo:block>
+    <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refnamediv">
+  <xsl:variable name="section.level">
+    <xsl:call-template name="refentry.level">
+      <xsl:with-param name="node" select="ancestor::refentry"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="reftitle">
+    <xsl:choose>
+      <xsl:when test="$refentry.generate.name != 0">
+        <xsl:call-template name="gentext">
+          <xsl:with-param name="key" select="'RefName'"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:when test="$refentry.generate.title != 0">
+        <xsl:choose>
+          <xsl:when test="../refmeta/refentrytitle">
+            <xsl:apply-templates select="../refmeta/refentrytitle"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:apply-templates select="refname[1]"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+    </xsl:choose>
+  </xsl:variable>
+
+  <!-- xsl:use-attribute-sets takes only a Qname, not a variable -->
+  <fo:block>
+    <xsl:choose>
+      <xsl:when test="$section.level = 1">
+        <fo:block xsl:use-attribute-sets="refentry.title.properties">
+          <fo:block xsl:use-attribute-sets="section.title.level1.properties">
+            <xsl:value-of select="$reftitle"/>
+          </fo:block>
+        </fo:block>
+      </xsl:when>
+      <xsl:when test="$section.level = 2">
+        <fo:block xsl:use-attribute-sets="refentry.title.properties">
+          <fo:block xsl:use-attribute-sets="section.title.level2.properties">
+            <xsl:value-of select="$reftitle"/>
+          </fo:block>
+        </fo:block>
+      </xsl:when>
+      <xsl:when test="$section.level = 3">
+        <fo:block xsl:use-attribute-sets="refentry.title.properties">
+          <fo:block xsl:use-attribute-sets="section.title.level3.properties">
+            <xsl:value-of select="$reftitle"/>
+          </fo:block>
+        </fo:block>
+      </xsl:when>
+      <xsl:when test="$section.level = 4">
+        <fo:block xsl:use-attribute-sets="refentry.title.properties">
+          <fo:block xsl:use-attribute-sets="section.title.level4.properties">
+            <xsl:value-of select="$reftitle"/>
+          </fo:block>
+        </fo:block>
+      </xsl:when>
+      <xsl:when test="$section.level = 5">
+        <fo:block xsl:use-attribute-sets="refentry.title.properties">
+          <fo:block xsl:use-attribute-sets="section.title.level5.properties">
+            <xsl:value-of select="$reftitle"/>
+          </fo:block>
+        </fo:block>
+      </xsl:when>
+      <xsl:otherwise>
+        <fo:block xsl:use-attribute-sets="refentry.title.properties">
+          <fo:block xsl:use-attribute-sets="section.title.level6.properties">
+            <xsl:value-of select="$reftitle"/>
+          </fo:block>
+        </fo:block>
+      </xsl:otherwise>
+    </xsl:choose>
+
+    <fo:block space-after="1em">
+      <xsl:choose>
+        <xsl:when test="../refmeta/refentrytitle">
+          <xsl:apply-templates select="../refmeta/refentrytitle"/>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:apply-templates select="refname[1]"/>
+        </xsl:otherwise>
+      </xsl:choose>
+      <xsl:apply-templates select="refpurpose"/>
+    </fo:block>
+  </fo:block>
+  
+</xsl:template>
+</xsl:stylesheet>
diff --git a/tags/v_3.062/doc/dynare_html.xsl b/tags/v_3.062/doc/dynare_html.xsl
new file mode 100644
index 0000000000..ef41a4c7c0
--- /dev/null
+++ b/tags/v_3.062/doc/dynare_html.xsl
@@ -0,0 +1,15 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+                exclude-result-prefixes="doc"
+                version='1.0'>
+
+<!-- It is important to use indent="no" here, otherwise verbatim -->
+<!-- environments get broken by indented tags...at least when the -->
+<!-- callout extension is used...at least with some processors -->
+<xsl:import href="c:/cygwin/usr/share/docbook-xsl/html/chunk.xsl"/>
+
+<xsl:import href="dynare.xsl"/>
+
+</xsl:stylesheet>
diff --git a/tags/v_3.062/doc/dynare_lists.xsl b/tags/v_3.062/doc/dynare_lists.xsl
new file mode 100644
index 0000000000..99f421b4e9
--- /dev/null
+++ b/tags/v_3.062/doc/dynare_lists.xsl
@@ -0,0 +1,1169 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                version='1.0'>
+
+<!-- ********************************************************************
+     $Id: dynare_lists.xsl,v 1.1 2005/01/09 13:00:17 michel Exp $
+     ********************************************************************
+
+     This file is part of the XSL DocBook Stylesheet distribution.
+     See ../README or http://nwalsh.com/docbook/xsl/ for copyright
+     and other information.
+
+     ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:template match="itemizedlist">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
+  <xsl:variable name="label-width">
+    <xsl:call-template name="dbfo-attribute">
+      <xsl:with-param name="pis"
+                      select="processing-instruction('dbfo')"/>
+      <xsl:with-param name="attribute" select="'label-width'"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:if test="title">
+    <xsl:apply-templates select="title" mode="list.title.mode"/>
+  </xsl:if>
+
+  <!-- Preserve order of PIs and comments -->
+  <xsl:apply-templates 
+      select="*[not(self::listitem
+                or self::title
+                or self::titleabbrev)]
+              |comment()[not(preceding-sibling::listitem)]
+              |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+  <xsl:variable name="content">
+    <xsl:apply-templates 
+          select="listitem
+                  |comment()[preceding-sibling::listitem]
+                  |processing-instruction()[preceding-sibling::listitem]"/>
+  </xsl:variable>
+
+  <!-- nested lists don't add extra list-block spacing -->
+  <xsl:choose>
+    <xsl:when test="ancestor::listitem">
+      <fo:list-block id="{$id}" 
+                     provisional-label-separation="0.2em">
+        <xsl:attribute name="provisional-distance-between-starts">
+          <xsl:choose>
+            <xsl:when test="$label-width != ''">
+              <xsl:value-of select="$label-width"/>
+            </xsl:when>
+            <xsl:otherwise>1.5em</xsl:otherwise>
+          </xsl:choose>
+        </xsl:attribute>
+        <xsl:copy-of select="$content"/>
+      </fo:list-block>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing"
+                     provisional-label-separation="0.2em">
+        <xsl:attribute name="provisional-distance-between-starts">
+          <xsl:choose>
+            <xsl:when test="$label-width != ''">
+              <xsl:value-of select="$label-width"/>
+            </xsl:when>
+            <xsl:otherwise>1.5em</xsl:otherwise>
+          </xsl:choose>
+        </xsl:attribute>
+        <xsl:copy-of select="$content"/>
+      </fo:list-block>
+    </xsl:otherwise>
+  </xsl:choose>
+
+</xsl:template>
+
+<xsl:template match="itemizedlist/title|orderedlist/title">
+  <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/title" mode="vl.as.list">
+  <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/title" mode="vl.as.blocks">
+  <!--nop-->
+</xsl:template>
+
+<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev">
+  <!--nop-->
+</xsl:template>
+
+<xsl:template match="procedure/titleabbrev">
+  <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/titleabbrev" mode="vl.as.list">
+  <!--nop-->
+</xsl:template>
+
+<xsl:template match="variablelist/titleabbrev" mode="vl.as.blocks">
+  <!--nop-->
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+  <xsl:variable name="itemsymbol">
+    <xsl:call-template name="list.itemsymbol">
+      <xsl:with-param name="node" select="parent::itemizedlist"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="item.contents">
+    <fo:list-item-label end-indent="label-end()">
+      <fo:block>
+        <xsl:choose>
+          <xsl:when test="$itemsymbol='disc'">&#x2022;</xsl:when>
+          <xsl:when test="$itemsymbol='bullet'">&#x2022;</xsl:when>
+          <!-- why do these symbols not work? -->
+          <!--
+          <xsl:when test="$itemsymbol='circle'">&#x2218;</xsl:when>
+          <xsl:when test="$itemsymbol='round'">&#x2218;</xsl:when>
+          <xsl:when test="$itemsymbol='square'">&#x2610;</xsl:when>
+          <xsl:when test="$itemsymbol='box'">&#x2610;</xsl:when>
+          -->
+          <xsl:otherwise>&#x2022;</xsl:otherwise>
+        </xsl:choose>
+      </fo:block>
+    </fo:list-item-label>
+    <fo:list-item-body start-indent="body-start()">
+      <!-- fo:block -->
+	<xsl:apply-templates/>
+      <!-- /fo:block -->
+    </fo:list-item-body>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="parent::*/@spacing = 'compact'">
+      <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing">
+        <xsl:copy-of select="$item.contents"/>
+      </fo:list-item>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing">
+        <xsl:copy-of select="$item.contents"/>
+      </fo:list-item>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="orderedlist">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
+  <xsl:variable name="label-width">
+    <xsl:call-template name="dbfo-attribute">
+      <xsl:with-param name="pis"
+                      select="processing-instruction('dbfo')"/>
+      <xsl:with-param name="attribute" select="'label-width'"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:if test="title">
+    <xsl:apply-templates select="title" mode="list.title.mode"/>
+  </xsl:if>
+
+  <!-- Preserve order of PIs and comments -->
+  <xsl:apply-templates 
+      select="*[not(self::listitem
+                or self::title
+                or self::titleabbrev)]
+              |comment()[not(preceding-sibling::listitem)]
+              |processing-instruction()[not(preceding-sibling::listitem)]"/>
+
+  <xsl:variable name="content">
+    <xsl:apply-templates 
+          select="listitem
+                  |comment()[preceding-sibling::listitem]
+                  |processing-instruction()[preceding-sibling::listitem]"/>
+  </xsl:variable>
+
+  <!-- nested lists don't add extra list-block spacing -->
+  <xsl:choose>
+    <xsl:when test="ancestor::listitem">
+      <fo:list-block id="{$id}" 
+                     provisional-label-separation="0.2em">
+        <xsl:attribute name="provisional-distance-between-starts">
+          <xsl:choose>
+            <xsl:when test="$label-width != ''">
+              <xsl:value-of select="$label-width"/>
+            </xsl:when>
+            <xsl:otherwise>2em</xsl:otherwise>
+          </xsl:choose>
+        </xsl:attribute>
+        <xsl:copy-of select="$content"/>
+      </fo:list-block>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing"
+                     provisional-label-separation="0.2em">
+        <xsl:attribute name="provisional-distance-between-starts">
+          <xsl:choose>
+            <xsl:when test="$label-width != ''">
+              <xsl:value-of select="$label-width"/>
+            </xsl:when>
+            <xsl:otherwise>2em</xsl:otherwise>
+          </xsl:choose>
+        </xsl:attribute>
+        <xsl:copy-of select="$content"/>
+      </fo:list-block>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem" mode="item-number">
+  <xsl:variable name="numeration">
+    <xsl:call-template name="list.numeration">
+      <xsl:with-param name="node" select="parent::orderedlist"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="type">
+    <xsl:choose>
+      <xsl:when test="$numeration='arabic'">1.</xsl:when>
+      <xsl:when test="$numeration='loweralpha'">a.</xsl:when>
+      <xsl:when test="$numeration='lowerroman'">i.</xsl:when>
+      <xsl:when test="$numeration='upperalpha'">A.</xsl:when>
+      <xsl:when test="$numeration='upperroman'">I.</xsl:when>
+      <!-- What!? This should never happen -->
+      <xsl:otherwise>
+        <xsl:message>
+          <xsl:text>Unexpected numeration: </xsl:text>
+          <xsl:value-of select="$numeration"/>
+        </xsl:message>
+        <xsl:value-of select="1."/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:variable name="item-number">
+    <xsl:call-template name="orderedlist-item-number"/>
+  </xsl:variable>
+
+  <xsl:if test="parent::orderedlist/@inheritnum='inherit'
+                and ancestor::listitem[parent::orderedlist]">
+    <xsl:apply-templates select="ancestor::listitem[parent::orderedlist][1]"
+                         mode="item-number"/>
+  </xsl:if>
+
+  <xsl:number value="$item-number" format="{$type}"/>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem">
+  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+  <xsl:variable name="item.contents">
+    <fo:list-item-label end-indent="label-end()">
+      <fo:block>
+        <xsl:apply-templates select="." mode="item-number"/>
+      </fo:block>
+    </fo:list-item-label>
+    <fo:list-item-body start-indent="body-start()">
+      <fo:block>
+	<xsl:apply-templates/>
+      </fo:block>
+    </fo:list-item-body>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="parent::*/@spacing = 'compact'">
+      <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing">
+        <xsl:copy-of select="$item.contents"/>
+      </fo:list-item>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing">
+        <xsl:copy-of select="$item.contents"/>
+      </fo:list-item>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="listitem/*[1][local-name()='para' or 
+                                   local-name()='simpara' or 
+                                   local-name()='formalpara']
+                     |step/*[1][local-name()='para' or 
+                                   local-name()='simpara' or 
+                                   local-name()='formalpara']
+                     |callout/*[1][local-name()='para' or 
+                                   local-name()='simpara' or 
+                                   local-name()='formalpara']"
+              priority="2">
+  <fo:block>
+    <xsl:call-template name="anchor"/>
+    <xsl:apply-templates/>
+  </fo:block>
+</xsl:template>
+
+<xsl:template match="variablelist">
+  <xsl:variable name="presentation">
+    <xsl:call-template name="dbfo-attribute">
+      <xsl:with-param name="pis"
+                      select="processing-instruction('dbfo')"/>
+      <xsl:with-param name="attribute" select="'list-presentation'"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="$presentation = 'list'">
+      <xsl:apply-templates select="." mode="vl.as.list"/>
+    </xsl:when>
+    <xsl:when test="$presentation = 'blocks'">
+      <xsl:apply-templates select="." mode="vl.as.blocks"/>
+    </xsl:when>
+    <xsl:when test="$variablelist.as.blocks != 0">
+      <xsl:apply-templates select="." mode="vl.as.blocks"/>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:apply-templates select="." mode="vl.as.list"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="variablelist" mode="vl.as.list">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
+  <xsl:variable name="term-width">
+    <xsl:call-template name="dbfo-attribute">
+      <xsl:with-param name="pis"
+                      select="processing-instruction('dbfo')"/>
+      <xsl:with-param name="attribute" select="'term-width'"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="termlength">
+    <xsl:choose>
+      <xsl:when test="$term-width != ''">
+        <xsl:value-of select="$term-width"/>
+      </xsl:when>
+      <xsl:when test="@termlength">
+        <xsl:variable name="termlength.is.number">
+          <xsl:value-of select="@termlength + 0"/>
+        </xsl:variable>
+        <xsl:choose>
+          <xsl:when test="$termlength.is.number = 'NaN'">
+            <!-- if the term length isn't just a number, assume it's a measurement -->
+            <xsl:value-of select="@termlength"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="@termlength"/>
+            <xsl:text>em * 0.60</xsl:text>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="longest.term">
+          <xsl:with-param name="terms" select="varlistentry/term"/>
+          <xsl:with-param name="maxlength" select="$variablelist.max.termlength"/>
+        </xsl:call-template>
+        <xsl:text>em * 0.60</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+<!--
+  <xsl:message>
+    <xsl:text>term width: </xsl:text>
+    <xsl:value-of select="$termlength"/>
+  </xsl:message>
+-->
+
+  <xsl:variable name="label-separation">1em</xsl:variable>
+
+  <xsl:if test="title">
+    <xsl:apply-templates select="title" mode="list.title.mode"/>
+  </xsl:if>
+
+  <!-- Preserve order of PIs and comments -->
+  <xsl:apply-templates 
+    select="*[not(self::varlistentry
+              or self::title
+              or self::titleabbrev)]
+            |comment()[not(preceding-sibling::varlistentry)]
+            |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+
+  <xsl:variable name="content">
+    <xsl:apply-templates mode="vl.as.list"
+      select="varlistentry
+              |comment()[preceding-sibling::varlistentry]
+              |processing-instruction()[preceding-sibling::varlistentry]"/>
+  </xsl:variable>
+
+  <!-- nested lists don't add extra list-block spacing -->
+  <xsl:choose>
+    <xsl:when test="ancestor::listitem">
+      <fo:list-block id="{$id}"
+                     provisional-distance-between-starts=
+                        "{$termlength}+{$label-separation}"
+                     provisional-label-separation="{$label-separation}">
+        <xsl:copy-of select="$content"/>
+      </fo:list-block>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:list-block id="{$id}"
+                     provisional-distance-between-starts=
+                        "{$termlength}+{$label-separation}"
+                     provisional-label-separation="{$label-separation}"
+                     xsl:use-attribute-sets="list.block.spacing">
+        <xsl:copy-of select="$content"/>
+      </fo:list-block>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template name="longest.term">
+  <xsl:param name="longest" select="0"/>
+  <xsl:param name="terms" select="."/>
+  <xsl:param name="maxlength" select="-1"/>
+
+  <xsl:choose>
+    <xsl:when test="$longest &gt; $maxlength and $maxlength &gt; 0">
+      <xsl:value-of select="$maxlength"/>
+    </xsl:when>
+    <xsl:when test="not($terms)">
+      <xsl:value-of select="$longest"/>
+    </xsl:when>
+    <xsl:when test="string-length($terms[1]/node()[not(indexterm)]) &gt; $longest">
+      <xsl:call-template name="longest.term">
+        <xsl:with-param name="longest" 
+	    select="string-length($terms[1]/node()[not(indexterm)])"/>
+        <xsl:with-param name="maxlength" select="$maxlength"/>
+        <xsl:with-param name="terms" select="$terms[position() &gt; 1]"/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:call-template name="longest.term">
+        <xsl:with-param name="longest" select="$longest"/>
+        <xsl:with-param name="maxlength" select="$maxlength"/>
+        <xsl:with-param name="terms" select="$terms[position() &gt; 1]"/>
+      </xsl:call-template>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="vl.as.list">
+  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+  <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing">
+    <fo:list-item-label end-indent="label-end()" text-align="start">
+      <fo:block>
+        <xsl:apply-templates select="term"/>
+      </fo:block>
+    </fo:list-item-label>
+    <fo:list-item-body start-indent="body-start()">
+      <fo:block>
+	<xsl:apply-templates select="listitem"/>
+      </fo:block>
+    </fo:list-item-body>
+  </fo:list-item>
+</xsl:template>
+
+<xsl:template match="variablelist" mode="vl.as.blocks">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
+  <!-- termlength is irrelevant -->
+
+  <xsl:if test="title">
+    <xsl:apply-templates select="title" mode="list.title.mode"/>
+  </xsl:if>
+
+  <!-- Preserve order of PIs and comments -->
+  <xsl:apply-templates 
+    select="*[not(self::varlistentry
+              or self::title
+              or self::titleabbrev)]
+            |comment()[not(preceding-sibling::varlistentry)]
+            |processing-instruction()[not(preceding-sibling::varlistentry)]"/>
+
+  <xsl:variable name="content">
+    <xsl:apply-templates mode="vl.as.blocks"
+      select="varlistentry
+              |comment()[preceding-sibling::varlistentry]
+              |processing-instruction()[preceding-sibling::varlistentry]"/>
+  </xsl:variable>
+
+  <!-- nested lists don't add extra list-block spacing -->
+  <xsl:choose>
+    <xsl:when test="ancestor::listitem">
+      <fo:block id="{$id}">
+        <xsl:copy-of select="$content"/>
+      </fo:block>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:block id="{$id}" xsl:use-attribute-sets="list.block.spacing">
+        <xsl:copy-of select="$content"/>
+      </fo:block>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="varlistentry" mode="vl.as.blocks">
+  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+
+  <fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing"  
+      keep-together.within-column="always" 
+      keep-with-next.within-column="always">
+    <xsl:apply-templates select="term"/>
+  </fo:block>
+
+  <fo:block margin-left="0.25in">
+    <xsl:apply-templates select="listitem"/>
+  </fo:block>
+</xsl:template>
+
+<xsl:template match="varlistentry/term">
+  <fo:inline><xsl:apply-templates/>, </fo:inline>
+</xsl:template>
+
+<xsl:template match="varlistentry/term[position()=last()]" priority="2">
+  <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<xsl:template match="varlistentry/listitem">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="title" mode="list.title.mode">
+  <xsl:call-template name="formal.object.heading">
+    <xsl:with-param name="object" select=".."/>
+  </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="simplelist">
+  <!-- with no type specified, the default is 'vert' -->
+  <fo:table xsl:use-attribute-sets="normal.para.spacing">
+    <xsl:call-template name="simplelist.table.columns">
+      <xsl:with-param name="cols">
+        <xsl:choose>
+          <xsl:when test="@columns">
+            <xsl:value-of select="@columns"/>
+          </xsl:when>
+          <xsl:otherwise>1</xsl:otherwise>
+        </xsl:choose>
+      </xsl:with-param>
+    </xsl:call-template>
+    <fo:table-body>
+      <xsl:call-template name="simplelist.vert">
+        <xsl:with-param name="cols">
+          <xsl:choose>
+            <xsl:when test="@columns">
+              <xsl:value-of select="@columns"/>
+            </xsl:when>
+            <xsl:otherwise>1</xsl:otherwise>
+          </xsl:choose>
+        </xsl:with-param>
+      </xsl:call-template>
+    </fo:table-body>
+  </fo:table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='inline']">
+  <fo:inline><xsl:apply-templates/></fo:inline>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='horiz']">
+
+  <xsl:variable name="explicit.table.width">
+    <xsl:call-template name="dbfo-attribute">
+      <xsl:with-param name="pis"
+                      select="processing-instruction('dbfo')"/>
+      <xsl:with-param name="attribute" select="'list-width'"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="table.width">
+    <xsl:choose>
+      <xsl:when test="$explicit.table.width != ''">
+        <xsl:value-of select="$explicit.table.width"/>
+      </xsl:when>
+      <xsl:when test="$default.table.width = ''">
+        <xsl:text>100%</xsl:text>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$default.table.width"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <fo:table xsl:use-attribute-sets="normal.para.spacing">
+    <xsl:choose>
+      <xsl:when test="$axf.extensions != 0">
+        <xsl:attribute name="table-layout">auto</xsl:attribute>
+	<xsl:if test="$explicit.table.width != ''">
+          <xsl:attribute name="width"><xsl:value-of 
+	                     select="$explicit.table.width"/></xsl:attribute>
+        </xsl:if>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:attribute name="table-layout">fixed</xsl:attribute>
+        <xsl:attribute name="width"><xsl:value-of 
+	                              select="$table.width"/></xsl:attribute>
+      </xsl:otherwise>
+    </xsl:choose>
+    <xsl:call-template name="simplelist.table.columns">
+      <xsl:with-param name="cols">
+        <xsl:choose>
+          <xsl:when test="@columns">
+            <xsl:value-of select="@columns"/>
+          </xsl:when>
+          <xsl:otherwise>1</xsl:otherwise>
+        </xsl:choose>
+      </xsl:with-param>
+    </xsl:call-template>
+    <fo:table-body>
+      <xsl:call-template name="simplelist.horiz">
+        <xsl:with-param name="cols">
+          <xsl:choose>
+            <xsl:when test="@columns">
+              <xsl:value-of select="@columns"/>
+            </xsl:when>
+            <xsl:otherwise>1</xsl:otherwise>
+          </xsl:choose>
+        </xsl:with-param>
+      </xsl:call-template>
+    </fo:table-body>
+  </fo:table>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='vert']">
+  <fo:table xsl:use-attribute-sets="normal.para.spacing">
+    <xsl:call-template name="simplelist.table.columns">
+      <xsl:with-param name="cols">
+        <xsl:choose>
+          <xsl:when test="@columns">
+            <xsl:value-of select="@columns"/>
+          </xsl:when>
+          <xsl:otherwise>1</xsl:otherwise>
+        </xsl:choose>
+      </xsl:with-param>
+    </xsl:call-template>
+    <fo:table-body>
+      <xsl:call-template name="simplelist.vert">
+        <xsl:with-param name="cols">
+          <xsl:choose>
+            <xsl:when test="@columns">
+              <xsl:value-of select="@columns"/>
+            </xsl:when>
+            <xsl:otherwise>1</xsl:otherwise>
+          </xsl:choose>
+        </xsl:with-param>
+      </xsl:call-template>
+    </fo:table-body>
+  </fo:table>
+</xsl:template>
+
+<xsl:template name="simplelist.table.columns">
+  <xsl:param name="cols" select="1"/>
+  <xsl:param name="curcol" select="1"/>
+  <fo:table-column column-number="{$curcol}"
+                   column-width="proportional-column-width(1)"/>
+  <xsl:if test="$curcol &lt; $cols">
+    <xsl:call-template name="simplelist.table.columns">
+      <xsl:with-param name="cols" select="$cols"/>
+      <xsl:with-param name="curcol" select="$curcol + 1"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz">
+  <xsl:param name="cols">1</xsl:param>
+  <xsl:param name="cell">1</xsl:param>
+  <xsl:param name="members" select="./member"/>
+
+  <xsl:if test="$cell &lt;= count($members)">
+    <fo:table-row>
+      <xsl:call-template name="simplelist.horiz.row">
+        <xsl:with-param name="cols" select="$cols"/>
+        <xsl:with-param name="cell" select="$cell"/>
+        <xsl:with-param name="members" select="$members"/>
+      </xsl:call-template>
+   </fo:table-row>
+    <xsl:call-template name="simplelist.horiz">
+      <xsl:with-param name="cols" select="$cols"/>
+      <xsl:with-param name="cell" select="$cell + $cols"/>
+      <xsl:with-param name="members" select="$members"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.horiz.row">
+  <xsl:param name="cols">1</xsl:param>
+  <xsl:param name="cell">1</xsl:param>
+  <xsl:param name="members" select="./member"/>
+  <xsl:param name="curcol">1</xsl:param>
+
+  <xsl:if test="$curcol &lt;= $cols">
+    <fo:table-cell>
+      <fo:block>
+        <xsl:if test="$members[position()=$cell]">
+          <xsl:apply-templates select="$members[position()=$cell]"/>
+        </xsl:if>
+      </fo:block>
+    </fo:table-cell>
+    <xsl:call-template name="simplelist.horiz.row">
+      <xsl:with-param name="cols" select="$cols"/>
+      <xsl:with-param name="cell" select="$cell+1"/>
+      <xsl:with-param name="members" select="$members"/>
+      <xsl:with-param name="curcol" select="$curcol+1"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert">
+  <xsl:param name="cols">1</xsl:param>
+  <xsl:param name="cell">1</xsl:param>
+  <xsl:param name="members" select="./member"/>
+  <xsl:param name="rows"
+             select="floor((count($members)+$cols - 1) div $cols)"/>
+
+  <xsl:if test="$cell &lt;= $rows">
+    <fo:table-row>
+      <xsl:call-template name="simplelist.vert.row">
+        <xsl:with-param name="cols" select="$cols"/>
+        <xsl:with-param name="rows" select="$rows"/>
+        <xsl:with-param name="cell" select="$cell"/>
+        <xsl:with-param name="members" select="$members"/>
+      </xsl:call-template>
+   </fo:table-row>
+    <xsl:call-template name="simplelist.vert">
+      <xsl:with-param name="cols" select="$cols"/>
+      <xsl:with-param name="cell" select="$cell+1"/>
+      <xsl:with-param name="members" select="$members"/>
+      <xsl:with-param name="rows" select="$rows"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="simplelist.vert.row">
+  <xsl:param name="cols">1</xsl:param>
+  <xsl:param name="rows">1</xsl:param>
+  <xsl:param name="cell">1</xsl:param>
+  <xsl:param name="members" select="./member"/>
+  <xsl:param name="curcol">1</xsl:param>
+
+  <xsl:if test="$curcol &lt;= $cols">
+    <fo:table-cell>
+      <fo:block>
+        <xsl:if test="$members[position()=$cell]">
+          <xsl:apply-templates select="$members[position()=$cell]"/>
+        </xsl:if>
+      </fo:block>
+    </fo:table-cell>
+    <xsl:call-template name="simplelist.vert.row">
+      <xsl:with-param name="cols" select="$cols"/>
+      <xsl:with-param name="rows" select="$rows"/>
+      <xsl:with-param name="cell" select="$cell+$rows"/>
+      <xsl:with-param name="members" select="$members"/>
+      <xsl:with-param name="curcol" select="$curcol+1"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template match="member">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='inline']/member">
+  <xsl:apply-templates/>
+  <xsl:text>, </xsl:text>
+</xsl:template>
+
+<xsl:template match="simplelist[@type='inline']/member[position()=last()]"
+              priority="2">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="procedure">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
+  <xsl:variable name="param.placement"
+                select="substring-after(normalize-space($formal.title.placement),
+                                        concat(local-name(.), ' '))"/>
+
+  <xsl:variable name="placement">
+    <xsl:choose>
+      <xsl:when test="contains($param.placement, ' ')">
+        <xsl:value-of select="substring-before($param.placement, ' ')"/>
+      </xsl:when>
+      <xsl:when test="$param.placement = ''">before</xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$param.placement"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <!-- Preserve order of PIs and comments -->
+  <xsl:variable name="preamble"
+        select="*[not(self::step
+                  or self::title
+                  or self::titleabbrev)]
+                |comment()[not(preceding-sibling::step)]
+                |processing-instruction()[not(preceding-sibling::step)]"/>
+
+  <xsl:variable name="steps" 
+                select="step
+                        |comment()[preceding-sibling::step]
+                        |processing-instruction()[preceding-sibling::step]"/>
+
+  <fo:block id="{$id}" xsl:use-attribute-sets="list.block.spacing">
+    <xsl:if test="./title and $placement = 'before'">
+      <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" -->
+      <!-- heading even though we called formal.object.heading. odd but true. -->
+      <xsl:call-template name="formal.object.heading"/>
+    </xsl:if>
+
+    <xsl:apply-templates select="$preamble"/>
+
+    <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+                   provisional-distance-between-starts="2em"
+                   provisional-label-separation="0.2em">
+      <xsl:apply-templates select="$steps"/>
+    </fo:list-block>
+
+    <xsl:if test="./title and $placement != 'before'">
+      <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" -->
+      <!-- heading even though we called formal.object.heading. odd but true. -->
+      <xsl:call-template name="formal.object.heading"/>
+    </xsl:if>
+  </fo:block>
+</xsl:template>
+
+<xsl:template match="procedure/title">
+</xsl:template>
+
+<xsl:template match="substeps">
+  <fo:list-block xsl:use-attribute-sets="list.block.spacing"
+                 provisional-distance-between-starts="2em"
+                 provisional-label-separation="0.2em">
+    <xsl:apply-templates/>
+  </fo:list-block>
+</xsl:template>
+
+<xsl:template match="procedure/step|substeps/step">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
+  <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+    <fo:list-item-label end-indent="label-end()">
+      <fo:block id="{$id}">
+        <!-- dwc: fix for one step procedures. Use a bullet if there's no step 2 -->
+        <xsl:choose>
+          <xsl:when test="count(../step) = 1">
+            <xsl:text>&#x2022;</xsl:text>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:apply-templates select="." mode="number">
+              <xsl:with-param name="recursive" select="0"/>
+            </xsl:apply-templates>.
+          </xsl:otherwise>
+        </xsl:choose>
+      </fo:block>
+    </fo:list-item-label>
+    <fo:list-item-body start-indent="body-start()">
+      <fo:block>
+	<xsl:apply-templates/>
+      </fo:block>
+    </fo:list-item-body>
+  </fo:list-item>
+</xsl:template>
+
+<xsl:template match="stepalternatives">
+  <fo:list-block provisional-distance-between-starts="2em"
+		 provisional-label-separation="0.2em">
+    <xsl:apply-templates select="step"/>
+  </fo:list-block>
+</xsl:template>
+
+<xsl:template match="stepalternatives/step">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
+  <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+    <fo:list-item-label end-indent="label-end()">
+      <fo:block id="{$id}">
+	<xsl:text>&#x2022;</xsl:text>
+      </fo:block>
+    </fo:list-item-label>
+    <fo:list-item-body start-indent="body-start()">
+      <fo:block>
+	<xsl:apply-templates/>
+      </fo:block>
+    </fo:list-item-body>
+  </fo:list-item>
+</xsl:template>
+
+<xsl:template match="step/title">
+  <fo:block font-weight="bold"
+            keep-together.within-column="always" 
+            keep-with-next.within-column="always">
+    <xsl:apply-templates/>
+  </fo:block>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="segmentedlist">
+  <xsl:variable name="presentation">
+    <xsl:call-template name="pi-attribute">
+      <xsl:with-param name="pis"
+                      select="processing-instruction('dbfo')"/>
+      <xsl:with-param name="attribute" select="'list-presentation'"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="$presentation = 'table'">
+      <fo:block id="{$id}">
+        <xsl:apply-templates select="." mode="seglist-table"/>
+      </fo:block>
+    </xsl:when>
+    <xsl:when test="$presentation = 'list'">
+      <fo:block id="{$id}">
+        <xsl:apply-templates/>
+      </fo:block>
+    </xsl:when>
+    <xsl:when test="$segmentedlist.as.table != 0">
+      <fo:block id="{$id}">
+        <xsl:apply-templates select="." mode="seglist-table"/>
+      </fo:block>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:block id="{$id}">
+        <xsl:apply-templates/>
+      </fo:block>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="segmentedlist/title">
+  <xsl:apply-templates select="." mode="list.title.mode" />
+</xsl:template>
+
+<xsl:template match="segtitle">
+</xsl:template>
+
+<xsl:template match="segtitle" mode="segtitle-in-seg">
+  <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="seglistitem">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+  <fo:block id="{$id}">
+    <xsl:apply-templates/>
+  </fo:block>
+</xsl:template>
+
+<xsl:template match="seg">
+  <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/>
+  <xsl:variable name="seglist" select="ancestor::segmentedlist"/>
+  <xsl:variable name="segtitles" select="$seglist/segtitle"/>
+
+  <!--
+     Note: segtitle is only going to be the right thing in a well formed
+     SegmentedList.  If there are too many Segs or too few SegTitles,
+     you'll get something odd...maybe an error
+  -->
+
+  <fo:block>
+    <fo:inline font-weight="bold">
+      <xsl:apply-templates select="$segtitles[$segnum=position()]"
+                           mode="segtitle-in-seg"/>
+      <xsl:text>: </xsl:text>
+    </fo:inline>
+    <xsl:apply-templates/>
+  </fo:block>
+</xsl:template>
+
+<xsl:template match="segmentedlist" mode="seglist-table">
+  <xsl:apply-templates select="title" mode="list.title.mode" />
+  <fo:table>
+    <fo:table-column column-number="1" column-width="proportional-column-width(1)"/>
+    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/>
+    <fo:table-header>
+      <fo:table-row>
+        <xsl:apply-templates select="segtitle" mode="seglist-table"/>
+      </fo:table-row>
+    </fo:table-header>
+    <fo:table-body>
+      <xsl:apply-templates select="seglistitem" mode="seglist-table"/>
+    </fo:table-body>
+  </fo:table>
+</xsl:template>
+
+<xsl:template match="segtitle" mode="seglist-table">
+  <fo:table-cell>
+    <fo:block>
+      <xsl:apply-templates/>
+    </fo:block>
+  </fo:table-cell>
+</xsl:template>
+
+<xsl:template match="seglistitem" mode="seglist-table">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+  <fo:table-row id="{$id}">
+    <xsl:apply-templates mode="seglist-table"/>
+  </fo:table-row>
+</xsl:template>
+
+<xsl:template match="seg" mode="seglist-table">
+  <fo:table-cell>
+    <fo:block>
+      <xsl:apply-templates/>
+    </fo:block>
+  </fo:table-cell>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="calloutlist">
+  <xsl:variable name="id">
+  <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
+  <fo:block id="{$id}">
+    <xsl:if test="title">
+      <xsl:apply-templates select="title" mode="list.title.mode"/>
+    </xsl:if>
+
+    <!-- Preserve order of PIs and comments -->
+    <xsl:apply-templates 
+         select="*[not(self::callout or self::title or self::titleabbrev)]
+                   |comment()[not(preceding-sibling::callout)]
+		   |processing-instruction()[not(preceding-sibling::callout)]"/>
+
+    <fo:list-block space-before.optimum="1em"
+                   space-before.minimum="0.8em"
+                   space-before.maximum="1.2em"
+                   provisional-distance-between-starts="2.2em"
+                   provisional-label-separation="0.2em">
+      <xsl:apply-templates select="callout
+			        |comment()[preceding-sibling::calllout]
+				|processing-instruction()[preceding-sibling::callout]"/>
+    </fo:list-block>
+  </fo:block>
+</xsl:template>
+
+<xsl:template match="calloutlist/title">
+</xsl:template>
+
+<xsl:template match="callout">
+  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+  <fo:list-item id="{$id}">
+    <fo:list-item-label end-indent="label-end()">
+      <fo:block>
+        <xsl:call-template name="callout.arearefs">
+          <xsl:with-param name="arearefs" select="@arearefs"/>
+        </xsl:call-template>
+      </fo:block>
+    </fo:list-item-label>
+    <fo:list-item-body start-indent="body-start()">
+      <fo:block>
+	<xsl:apply-templates/>
+      </fo:block>
+    </fo:list-item-body>
+  </fo:list-item>
+</xsl:template>
+
+<xsl:template name="callout.arearefs">
+  <xsl:param name="arearefs"></xsl:param>
+  <xsl:if test="$arearefs!=''">
+    <xsl:choose>
+      <xsl:when test="substring-before($arearefs,' ')=''">
+        <xsl:call-template name="callout.arearef">
+          <xsl:with-param name="arearef" select="$arearefs"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="callout.arearef">
+          <xsl:with-param name="arearef"
+                          select="substring-before($arearefs,' ')"/>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+    <xsl:call-template name="callout.arearefs">
+      <xsl:with-param name="arearefs"
+                      select="substring-after($arearefs,' ')"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="callout.arearef">
+  <xsl:param name="arearef"></xsl:param>
+  <xsl:variable name="targets" select="key('id',$arearef)"/>
+  <xsl:variable name="target" select="$targets[1]"/>
+
+  <xsl:choose>
+    <xsl:when test="count($target)=0">
+      <xsl:value-of select="$arearef"/>
+      <xsl:text>: ???</xsl:text>
+    </xsl:when>
+    <xsl:when test="local-name($target)='co'">
+      <xsl:apply-templates select="$target" mode="callout-bug"/>
+    </xsl:when>
+    <xsl:when test="local-name($target)='areaset'">
+      <xsl:call-template name="callout-bug">
+        <xsl:with-param name="conum">
+          <xsl:apply-templates select="$target" mode="conumber"/>
+        </xsl:with-param>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:when test="local-name($target)='area'">
+      <xsl:choose>
+        <xsl:when test="$target/parent::areaset">
+          <xsl:call-template name="callout-bug">
+            <xsl:with-param name="conum">
+              <xsl:apply-templates select="$target/parent::areaset"
+                                   mode="conumber"/>
+            </xsl:with-param>
+          </xsl:call-template>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:call-template name="callout-bug">
+            <xsl:with-param name="conum">
+              <xsl:apply-templates select="$target" mode="conumber"/>
+            </xsl:with-param>
+          </xsl:call-template>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text>???</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+</xsl:stylesheet>
+
diff --git a/tags/v_3.062/doc/guide.bbl b/tags/v_3.062/doc/guide.bbl
new file mode 100644
index 0000000000..cdfc64ca0a
--- /dev/null
+++ b/tags/v_3.062/doc/guide.bbl
@@ -0,0 +1,16 @@
+\ifx\undefined\bysame
+\newcommand{\bysame}{\leavevmode\hbox to\leftmargin{\hrulefill\,\,}}
+\fi
+\begin{thebibliography}{xx}
+
+\harvarditem[Collard and Juillard]{Collard and Juillard}{2001}{COLL/JUIL/01a}
+{ Collard, F. and M.~Juillard}, Accuracy of stochastic perturbation methods:
+  The case of asset pricing models, {\it Journal of Economic Dynamics and
+  Control}, 2001, {\it 25}, 979--999.
+
+\harvarditem[Schmitt-Grohe and Uribe]{Schmitt-Grohe and Uribe}{2002}{SGU/02}
+{ Schmitt-Grohe, S. and M.~Uribe}, {\it Solving Dynamic General Equilibrium
+  Models Using a Second-Order Approximation to the Policy Function}, technical
+  working paper, Rutgers Univsersity 2002.
+
+\end{thebibliography}
diff --git a/tags/v_3.062/doc/guide.blg b/tags/v_3.062/doc/guide.blg
new file mode 100644
index 0000000000..54ae1ee8a2
--- /dev/null
+++ b/tags/v_3.062/doc/guide.blg
@@ -0,0 +1,9 @@
+This is BibTeX, Version 0.99cThe top-level auxiliary file: guide.aux
+The style file: Usmad.bst
+Database file #1: michel.bib
+I was expecting a `,' or a `}'---line 248 of file michel.bib
+ : 
+ : journal = "Computational Economics",
+(Error may have been on previous line)
+I'm skipping whatever remains of this entry
+(There was 1 error message)
diff --git a/tags/v_3.062/doc/guide.tex b/tags/v_3.062/doc/guide.tex
new file mode 100644
index 0000000000..4aa2c09f54
--- /dev/null
+++ b/tags/v_3.062/doc/guide.tex
@@ -0,0 +1,346 @@
+\documentclass[11pt,a4paper]{article}
+\usepackage{bibmad,graphicx,latexsym,amssymb,times}
+\usepackage[cp850]{inputenc}
+
+\begin{document}
+\title{Stochastic simulations with {\sc Dynare}. A practical guide.}
+\author{Fabrice Collard (GREMAQ, University of Toulouse)\\Adapted for Dynare 2.5.2\\ by Michel Juillard (CEPREMAP and University Paris 8)}
+\date{First draft: February 2001\hspace{10mm}This draft: January 2003.}
+\maketitle
+This document describes a model involving both endogenous and exogenous state variable. We first describe the theoretical model, before showing how the perturbation method is implemented in {\sc Dynare} (MATLAB version). 
+
+\section{A theoretical model} 
+We consider an economy that consists of a large number of dynastic households and a large number of firms. Firms are producing a homogeneous final product that can be either consumed or invested by means of capital and labor services. Firms own their capital stock and hire labor supplied by the households. Households own the firms. In each and every period three perfectly competitive markets open --- the markets for consumption goods, labor services, and financial capital in the form of firms' shares. 
+Household preferences are characterized by the lifetime utility function:
+\begin{equation}
+  E_t\sum_{\tau=t}^{\infty}{\beta^\star}^{\tau-t} \left(\log(c_t)-\theta\frac{h_t^{1+\psi}}{1+\psi}\right)
+  \label{eq:ut}
+\end{equation}
+\noindent where $0<\beta^\star<1$ is a constant discount factor, $c_t$ is consumption in period
+$t$, $h_t$ is the fraction of total available time devoted to productive activity in period $t$, $\theta>0$ and $\psi\geqslant 0$. We assume that there exists a central planner that determines hours, consumption and capital accumulation maximizing the household's utility function subject to the following budget constraint 
+\begin{equation}
+  c_t+i_t=y_t
+  \label{eq:bud}
+\end{equation}
+\noindent where $i_t$ is investment and $y_t$ is output. Investment is used to form physical capital, which accumulates in the standard form as:
+\begin{equation}
+k_{t+1}=\exp(b_t) i_t+(1-\delta)k_t \mbox{ with } 0<\delta<1
+\label{eq:acc}
+\end{equation}
+where $\delta$ is the constant physical depreciation rate. $b_t$ is a shock affecting incorporated technological progress, which properties will be defined later.
+
+Output is produced by means of capital and labor services, relying on a constant returns to scale technology represented by the following Cobb--Douglas production function:
+\begin{equation}
+ y_t=\exp(a_t) k_t^\alpha h_t^{1-\alpha} \mbox{ with }0<\alpha<1 \label{eq:prod}
+\end{equation}
+$a_t$ represents a stochastic shock to technology or Solow residual. We assume that the shocks to technology are distributed with zero mean, but display both persistence across time and correlation in the current period.
+Let us consider the joint process $(a_t,b_t)$ defined as
+\begin{equation}
+\left(
+\begin{array}{c}
+a_t\\b_t
+\end{array}
+\right)=
+\left(
+\begin{array}{cc}
+\rho&\tau\\
+\tau&\rho\\ 
+\end{array}
+\right)\left(
+\begin{array}{c}
+a_{t-1}\\b_{t-1}
+\end{array}
+\right)
++\left(
+\begin{array}{c}
+\varepsilon_t\\ \nu_t
+\end{array}
+\right)  \label{eq:process}
+\end{equation}
+where $|\rho+\tau|<1$ and $|\rho-\tau|<1 $ for sake of stationarity and 
+\begin{eqnarray*}
+E(\varepsilon_t)&=& 0,\\
+E(\nu_t)&=& 0,\\
+E(\varepsilon_t\varepsilon_s)&=&\left\{
+\begin{array}{lcl}
+\sigma^2_\varepsilon & \mbox{ if } & t=s \\
+0 & \mbox{ if } & t\neq s \\
+\end{array}\right. \mbox{, }\\ 
+E(\nu_t\nu_s)&=&\left\{
+\begin{array}{lcl}
+\sigma^2_\nu & \mbox{ if } & t=s \\
+0 & \mbox{ if } & t\neq s \\
+\end{array}\right. \mbox{, } \\
+E(\varepsilon_t\nu_s)&=&\left\{
+\begin{array}{lcl}
+\varphi\sigma_\varepsilon\sigma_\nu & \mbox{ if } & t=s \\
+0 & \mbox{ if } & t\neq s \\
+\end{array}\right. \mbox{. } 
+\end{eqnarray*}
+
+ 
+\section{Dynamic Equilibrium}
+The dynamic equilibrium of this economy follows from the first order conditions for optimality: 
+\begin{eqnarray*}
+&&c_t \theta h_t^{1+\psi}=(1-\alpha) y_t \\
+&&\beta E_t\left[\left(\frac{\exp(b_t) c_t}{\exp(b_{t+1})c_{t+1}}\right)\left(\exp(b_{t+1})\alpha \frac{y_{t+1}}{k_{t+1}}+1-\delta\right)\right]=1\\
+&&y_t=\exp(a_t) k_t^\alpha h_t^{1-\alpha} \\
+&&k_{t+1}=\exp(b_t)(y_t-c_t)+(1-\delta)k_t \\
+&&a_t=\rho a_{t-1}+\tau b_{t-1}+\varepsilon_t \\
+&&b_t=\tau a_{t-1}+\rho b_{t-1}+\nu_t 
+\end{eqnarray*}
+\section{The {\sc dynare} code}
+The dynare code is straightforward to write, as the equilibrium is written in the natural way. The whole code is reported at the end of the section. Before that we proceed step by step.
+\paragraph{Preamble}
+The preamble consists of the some declarations to setup the number of periods the model should be simulated, the endogenous and exogenous variables, the parameters and assign values to these parameters. 
+\begin{enumerate}
+\item {\tt periods 20100}; specifies that the model will be simulated over 20100 periods in order to compute the moments of the simulated variables.
+\item {\tt var y, c, k, h, a, b;} specifies the endogenous variables in the model since we have output ({\tt y}), consumption ({\tt c}), capital ({\tt k}), hours ({\tt h}) and the two shocks ({\tt a, b}).
+\item {\tt varexo e, u}; specifies the exogenous variables in the model --- namely the innovations of the shocks, since we have the innovation of the non--incorporated shock ({\tt e}), and the innovation of the incorporated shock ({\tt u}).
+\item {\tt parameters list;} specifies the list of parameters of the model. In the case we are studying:
+
+{\tt parameters beta, alpha, delta, theta, psi, rho, tau}
+
+\begin{tabular}{ll}
+\hline
+\hline
+{\tt beta}  & discount factor                               \\
+{\tt alpha} & capital elasticity in the production function \\
+{\tt delta} & depreciation rate                             \\
+{\tt theta} & disutility of labor parameter                 \\
+{\tt psi}   & labor supply elasticity                       \\
+{\tt rho}   & persistence                                   \\
+{\tt tau}   & cross--persistence                            \\
+\hline
+\hline
+\end{tabular}
+\item Assignment of parameter values. This is done the standard way in MATLAB. For example, we write
+
+\begin{verbatim}
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+\end{verbatim}
+
+
+\item Note that $\varphi$, the conditional correlation of the shocks, is not, strickly speaking, a parameter of the recursive equations and doesn't need to be listed in the {\tt parameters} instruction. It may however be convenient to express it as a parameter in the expression of the variance--covariance matrix of the shocks (see below) and one may simply write:
+
+{\tt phi = 0.1; }
+
+\end{enumerate}
+
+\paragraph{Declaration of the model:}
+This step is done in a straightforward way. It starts with the instruction {\tt model;} and ends with {\tt end;}, in between all equilibrium conditions are written exactly the way we write it ``by hand''. However, there is a simple rule that should be kept in mind when the model is written. Let us consider a variable $x$: 
+\begin{itemize}
+\item If $x$ is decided in period $t$ then we simply write ${\tt x}$. 
+\item When the variable is decided in $t-1$, such as the capital stock in our simple model, we write $x(-1)$. \item Finally, when a variable is decided in the next period, $t+1$, such as consumption in the Euler equation, we write $x(+1)$. 
+\end{itemize}
+Hence the required code to declare our model in {\sc Dynare} will be:
+\begin{verbatim}
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))*
+    (exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+\end{verbatim}
+Assume now that we want to take a Taylor series expansion in logs rather than in level, we just rewrite the model as
+\begin{verbatim}
+model;
+exp(c)*theta*exp(h)^(1+psi)=(1-alpha)*exp(y);
+exp(k) = beta*(((exp(b)*exp(c))/(exp(b(+1))*exp(c(+1))))
+         *(exp(b(+1))*alpha*exp(y(+1))+(1-delta)*exp(k)));
+exp(y) = exp(a)*(exp(k(-1))^alpha)*(exp(h)^(1-alpha));
+exp(k) = exp(b)*(exp(y)-exp(c))+(1-delta)*exp(k(-1));
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+\end{verbatim}
+so that the level of consumption is actually given by ${\tt exp(c)}$.
+\paragraph{Solving the model}
+\begin{enumerate} 
+\item Now we need to provide numerical initial conditions for the computation of the deterministic steady state. This is done with the sequence between {\tt initval;} and {\tt end;}. Each variable, endogenous or exogenous, should be initialized. In our example, we give the exact values of the deterministic equilibrium in absence of shocks. This takes the form
+\begin{verbatim}
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 11.08360443260358;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+\end{verbatim}
+
+Alternatively, we could provide only approximated values. {\sc Dynare} would then automatically compute the exact values.
+
+\item We then specify the innovations and their matrix of variance--covariance. This is done using the {\tt Sigma\_e} command. As the matrix is symmetrical, one enters onlys the upper (or lower) triangular part:
+\begin{verbatim}
+Sigma_e = [ 0.000081, (phi*0.009*0.009); ...
+             0.000081];
+\end{verbatim}
+where the variance of both innovations is set to {\tt 0.000081} and the correlation between them is equal to $\varphi$. Note that if an element is computed as an expression, this expression must be put in parenthese. In the {\tt Sigma\_e} command, the shock variables are ordered as in the {\tt varexo} declaration.
+ 
+Alternatively, it is possible to use a {\tt shock;} and {\tt end;} block and declare only the nonzero elements of the covariance matrix:
+\begin{verbatim}
+shocks;
+var e = 0.009^2;
+var u = 0.009^2;
+var e,u =  phi*0.009*0.009;
+end; 
+\end{verbatim}
+Note that in the current version of {\sc Dynare}, it isn't possible to shut down of shock by assigning it a zero variance. To shut down a shock the variable must be removed from the {\tt varexo} and {\tt initval} list, added to the {\tt parameters} list and assigned a value of zero.
+
+\item The model is then solved and simulated using the {\tt stoch\_simul;} command. By default, the coefficients of the approximated decision rules are reported as well as the moments of the simulated variables and impulse response functions for each exogenous shocks are ploted. In addition, the following options are aavailable:
+\begin{itemize}
+\item {\tt DR\_ALG0 = [0,1]}: Specify the algorithm used to compute the quadratic approximation of the decision rules. [0] (default) uses a ``pure'' perturbation method as in \cite{SGU/02}; [1] moves the point around which the Taylor approximation is computed toward the mean of the distribution as in  \cite{COLL/JUIL/01a}.  
+\item AR = Integer
+Order of autocorrelation coefficients to compute and to print (default = 5)
+\item NOCORR
+Doesn't print the correlation matrix (default = PRINT)
+\item DROP = Integer
+Number of points dropped at the beginning of simulation before computing the summary statistics (default = 100)
+\item IRF = Integer
+Number of periods on which to compute the IRFs (default = 40)
+\item NOFUNCTIONS
+Doesn't print the coefficients of the approximated solution
+\item LINEAR
+Indicates that the original model is linear
+\item NOMOMENTS
+Doesn't print moments of the endogenous variables 
+\item ORDER = [1,2]
+Order of Taylor approximation (default = 2)
+\item REPLIC = Integer
+Number of simulated series used to compute the IRFs (default = 1, if order = 1, and 50 otherwise)
+\end{itemize} 
+The simulated trajectories are returned in MATLAB vectors named as the variables (be careful not to use MATLAB reserved names such as INV for your variables \ldots). Note that the specification of the variance--covariance matrix of the shocks is enough to compute a second order approximation of the policy function. In addition, for the simulation and the computation of moments, {\sc Dynare} assumes that the shocks follow a normal distribution.
+
+In our example, we use simply 
+\begin{verbatim}
+stoch_simul;
+\end{verbatim}
+
+If one wants to use the algorithm in \cite{COLL/JUIL/01a} and to drop 200 initial values instead of 100, one would write
+\begin{verbatim}
+simul_stoch(dr_algo=1,drop=200);
+\end{verbatim}
+\end{enumerate}
+
+\clearpage
+
+\begin{center}
+{\sc Dynare code for the model in level}
+\end{center}
+Here is the model file for the model in level. The last instructions are regular MATLAB commands for graphics. It can be found in file {\tt example1.mod}.
+
+\begin{verbatim}
+periods 20100;
+
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 11.08360443260358;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+Sigma_e = [ 0.000081, phi*0.009*0.009; 0.000081 ];
+stoch_simul;
+\end{verbatim}
+\newpage
+
+\begin{center}
+{\sc Dynare code for the model in logs}
+\end{center}
+Here is the model file for the model in logs. In this case, {\tt initval} only contains guessed values and {\tt steady} is used to compute and display the exact value of the deterministic equilibrium. The shocks are supposed to be uncorrelated. Also, Collard \& Juillard (2001) algorithm is used. The model file can be found in {\tt example2.mod}.
+
+\begin{verbatim}
+periods 20100;
+
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+model;
+exp(c)*theta*exp(h)^(1+psi)=(1-alpha)*exp(y);
+exp(k) = beta*(((exp(b)*exp(c))/(exp(b(+1))*exp(c(+1))))
+         *(exp(b(+1))*alpha*exp(y(+1))+(1-delta)*exp(k)));
+exp(y) = exp(a)*(exp(k(-1))^alpha)*(exp(h)^(1-alpha));
+exp(k) = exp(b)*(exp(y)-exp(c))+(1-delta)*exp(k(-1));
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+
+initval;
+y = 0.1;
+c = -0.2;
+h = -1.2;
+k =  2.4;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+steady;
+
+shocks;
+var e = 0.009^2;
+var u = 0.009^2;
+end;
+
+stoch_simul(dr_algo=1,drop=200);
+\end{verbatim}
+\bibliographystyle{Usmad}
+\bibliography{/papers/biblio/michel}
+
+\end{document}
+
+
+
+
+
diff --git a/tags/v_3.062/doc/makefile b/tags/v_3.062/doc/makefile
new file mode 100644
index 0000000000..c715ec6ef2
--- /dev/null
+++ b/tags/v_3.062/doc/makefile
@@ -0,0 +1,17 @@
+all: guide.pdf manual.pdf manual/index.html
+
+guide.pdf: guide.tex
+	pdflatex guide
+
+manual/index.html: manual.xml
+	xsltproc -stringparam base.dir ./manual/ dynare_html.xsl manual.xml 
+
+
+manual.pdf: manual.xml
+	xsltproc dynare_fo.xsl manual.xml >manual.fo
+	pdfxmltex manual.fo	
+	pdfxmltex manual.fo	
+
+install: manual.pdf manual/index.html
+	scp manual.pdf pythie.cepremap.cnrs.fr:public_html/mambo/download/manual/
+	scp manual/* pythie.cepremap.cnrs.fr:public_html/mambo/download/manual/
diff --git a/tags/v_3.062/doc/manual.xml b/tags/v_3.062/doc/manual.xml
new file mode 100644
index 0000000000..5074fe14d8
--- /dev/null
+++ b/tags/v_3.062/doc/manual.xml
@@ -0,0 +1,2919 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+
+<book>
+  <bookinfo>
+    <title>DYNARE MANUAL</title>
+    <subtitle>Version 3.0</subtitle>
+    <titleabbrev>DYNARE</titleabbrev>
+    <author><firstname>Michel</firstname><surname>Juillard</surname>
+<affiliation><orgname>CEPREMAP and University Paris 8</orgname></affiliation>
+<email>michel.juillard@cepremap.cnrs.fr</email>
+<address>
+<street>142 rue du Chevaleret</street>
+<postcode>75013</postcode><city>Paris</city><country>France</country>
+</address>
+</author>
+
+<copyright><year>1996, 2005</year><holder> Michel Juillard</holder>
+
+</copyright>
+<legalnotice>
+<para>
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+</para>
+
+<para>
+Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that
+the entire resulting derived work is distributed under the terms of
+a permission notice identical to this one.
+</para>
+<para>
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for
+modified versions.
+</para>
+</legalnotice>
+<indexterm zone="Dynare"><primary>Dynare</primary></indexterm>
+<indexterm zone="var"><primary>var</primary></indexterm>
+<indexterm zone="varexo"><primary>varexo</primary></indexterm>
+<indexterm zone="varexo_det"><primary>varexo_det</primary></indexterm>
+<indexterm zone="parameters"><primary>parameters</primary></indexterm>
+<indexterm zone="model"><primary>model</primary></indexterm>
+<indexterm zone="initval"><primary>initval</primary></indexterm>
+<indexterm zone="endval"><primary>endval</primary></indexterm>
+<indexterm zone="histval"><primary>histval</primary></indexterm>
+<indexterm zone="shocks"><primary>shocks</primary></indexterm>
+<indexterm zone="periods"><primary>periods</primary></indexterm>
+<indexterm zone="simul"><primary>simul</primary></indexterm>
+<indexterm zone="check"><primary>check</primary></indexterm>
+<indexterm zone="stoch_simul"><primary>stoch_simul</primary></indexterm>
+<indexterm zone="estimated_params"><primary>estimated_params</primary></indexterm>
+<indexterm zone="estimated_params_init"><primary>estimated_params_init</primary></indexterm>
+<indexterm zone="estimated_params_bounds"><primary>estimated_params_bounds</primary></indexterm>
+<indexterm zone="varobs"><primary>varobs</primary></indexterm>
+<indexterm zone="observation_trends"><primary>observation_trends</primary></indexterm>
+<indexterm zone="estimation"><primary>estimation</primary></indexterm>
+<indexterm zone="rplot"><primary>rplot</primary></indexterm>
+<indexterm zone="dynasave"><primary>dynasave</primary></indexterm>
+<indexterm zone="dynatype"><primary>dynatype</primary></indexterm>
+<indexterm zone="unit_root_vars"><primary>unit_root_vars</primary></indexterm>
+<indexterm zone="olr"><primary>olr</primary></indexterm>
+<indexterm zone="olr_inst"><primary>olr_inst</primary></indexterm>
+<indexterm zone="optim_weights"><primary>optim_weights</primary></indexterm>
+<indexterm zone="osr"><primary>osr</primary></indexterm>
+<indexterm zone="osr_params"><primary>osr_params</primary></indexterm>
+<indexterm zone="define"><primary>@define</primary></indexterm>
+<indexterm zone="forecast"><primary>forecast</primary></indexterm>
+<indexterm zone="if_elseif_else_end"><primary>@if...@elseif...@else...@end</primary></indexterm>
+  </bookinfo>
+
+<preface><title>Preface</title><para>
+Dynare is a pre-processor and a collection of Matlab, Scilab or Gauss routines which solve, simulate and estimate non-linear
+models with forward looking variables. It is the result of research carried at
+CEPREMAP by several people (see Laffargue, 1990, Boucekkine, 1995, and
+Juillard, 1996, Collard and Juillard 2001a and 2001b).
+</para>
+<para>
+When the framework is deterministic, Dynare can be used for models with the assumption of perfect
+foresight. Typically, the system is supposed to be in a state of
+equilibrium before a period ``1'' when the news of a contemporaneous
+or of a future shock is learned by the agents in the model. The
+purpose of the simulation is to describe the reaction in anticipation of,
+then in reaction to the shock, until the system returns to the old or
+to a new state of equilibrium. In most models, this return to
+equilibrium is only an asymptotic phenomenon, which one must
+approximate by an horizon of simulation far enough in the future.
+Another exercise for which Dynare is well suited is to study the
+transition path to a new equilibrium following a permanent shock.
+</para>
+<para>
+For deterministic simulations, Dynare uses a Newton-type algorithm, first
+proposed by Laffargue (1990), instead of a first order technique like
+the one proposed by Fair and Taylor (1983), and used in earlier generation simulation programs. We believe
+this approach to be in general both faster and more robust. The
+details of the algorithm used in Dynare can be found in Juillard (1996).
+</para>
+<para>
+In a stochastic context, Dynare computes one or several simulations corresponding to a random draw of the shocks. Starting with version 2.3 (not available for Gauss), Dynare uses a second order Taylor approximation of the expectation functions (see Judd, 1996, Collard and Juillard, 2001a, 2001b, and Schmitt-Grohe and Uribe, 2002).
+</para>
+<para>
+Starting with version 3.0, it is possible to use Dynare to estimate model parameters either by maximum likelihood as in Ireland (2004) or using a Bayesian approach as in Rabanal and Rubio-Ramirez (2002), Schorfheide (2000) or Smets and Wouters (2002).
+</para>
+
+<para>
+Currently the development team of Dynare is composed of S. Adjemian, M. Juillard and O. Kamenik. Several parts of Dynare use or have strongly benefited from publicly available programs by F. Collard, L. Ingber, P. Klein, S. Sakata, F. Schorfheide, C. Sims, P. Soederlind and R. Wouters.  
+</para>
+
+<section><title>Changes</title>
+<para>December 30, 2005</para>
+<itemizedlist>
+<listitem><para>added details about parameter transformation in <xref linkend="model"/> and in <xref linkend="estimated_params"/></para></listitem>
+<listitem><para>added conditional compilation commands <xref linkend="define"/> and <xref linkend="if_elseif_else_end"/></para></listitem>
+<listitem><para>enhanced output section of command <xref linkend="estimation"/></para></listitem>
+<listitem><para>added exogenous deterministic shocks in stochastic models. See <xref linkend="varexo_det"/>, <xref linkend="forecast"/>, <xref linkend="shocks"/>, <xref linkend="stoch_simul"/></para></listitem>
+<listitem><para>added a forecast command for calibrated models. See <xref linkend="forecast"/>.</para></listitem>
+</itemizedlist>
+<para>October 14, 2005</para>
+<itemizedlist>
+<listitem><para>added syntax for computing optimal policy. See <xref linkend='olr'/>, <xref linkend='olr_inst'/>, <xref linkend='optim_weights'/>, <xref linkend='osr'/>, <xref linkend='osr_params'/>.</para></listitem>
+<listitem><para>added syntax for estimating correlation between two shocks or two measurment errors in <xref linkend="estimated_params"/>, <xref linkend="estimated_params_bounds"/> and <xref linkend="estimated_params_init"/>
+</para></listitem>
+</itemizedlist>
+<para>July 20, 2005</para>
+<itemizedlist>
+<listitem><para>Expanded description of <xref linkend="unit_root_vars"/> statement</para></listitem>
+<listitem><para>changed the default for nonlinear solver in <xref linkend="steady"/></para></listitem>
+<listitem><para>added a mention of the possibility to write explicitly a steady state function in <xref linkend="steady"/>, <xref linkend="stoch_simul"/>, <xref linkend="estimation"/> and <xref linkend="unit_root_vars"/></para></listitem>
+<listitem><para>added a brief <emphasis>Ouput</emphasis> section in <xref linkend="estimation"/></para></listitem>
+<listitem><para>corrected misleading description of option <command>prefilter</command> in <xref linkend="estimation"/></para></listitem>
+<listitem><para>added variance decomposition among the statistics computed with option <command>moments_varendo</command> in <xref linkend="estimation"/></para></listitem>
+<listitem><para>tex option in <xref linkend="estimation"/> isn't yet implemented</para></listitem>
+</itemizedlist>
+<para>May 3, 2005</para>
+<itemizedlist>
+<listitem><para>added option <command>noprint</command> in <xref linkend="stoch_simul"/></para></listitem>
+<listitem><para>modified option <command>irf</command> in <xref linkend="stoch_simul"/></para></listitem>
+<listitem><para>modified option <command>simul_seed</command> in <xref linkend="stoch_simul"/></para></listitem>
+</itemizedlist>
+<para>March 6, 2005</para>
+<itemizedlist>
+<listitem><para>corrected typos in equations for 1st and 2nd order approximation formulas in <xref linkend="stoch_simul"/>.</para></listitem>
+<listitem><para>temporarily removed description of output variables in <xref linkend="estimation"/> as old content was outdated and the new one isn't ready yet.</para></listitem>
+<listitem><para>added cross-references</para></listitem>
+</itemizedlist>
+</section>
+</preface>
+
+<chapter><title>Introduction</title>
+
+<para>
+In order to give instructions to Dynare, the user has to write a <emphasis>model file</emphasis> whose file name must terminate by ".mod". This file contains the description of the model and the computing tasks required by the user.
+</para>
+<para>
+In practice, the handling of your model file is done in two
+steps: in the first one, the model and the processing instructions
+written by the user in a <emphasis>model file</emphasis> are
+interpreted and the proper Gauss, Matlab or Scilab instructions are generated; in the
+second step, the program actually runs the computations. Both steps
+are triggered by a single keyword: <command>Dynare</command>.
+</para>
+
+<sect1><title>Software requirements</title>
+<para>
+This version of Dynare works only under Windows 98/NT/2000/XP. For a Unix version, please, write me.
+</para>
+<para>
+The Matlab version has been written with Matlab 6.5.1.
+</para>
+<para>
+The Scilab version has been tested with Scilab 3.0.
+</para>
+<para>
+The Gauss version of Dynare has been written with Gauss version 3.2. It most likely doesn't work with previous versions.
+</para>
+</sect1>
+
+<sect1><title>Installation</title>
+<para>
+In case of update from a previous version, it is a good idea to copy
+the old version in a backup directory so as to be able to revert to it
+in case of problems. None of the previous files are usefull anymore, so you are strongly encouraged to remove them from directory <filename>c:\dynare</filename>. The Matlab version of Dynare lets you now easily have different versions of Dynare on your computer.
+</para>
+
+<para>
+After installation, Dynare can be used in any directory on your computer. It is best practive to keep your model files in directories different from the one containing the Dynare toolbox. That way you can upgrade Dynare and discard the previous version without having to worry about your own files.
+</para>
+ 
+<sect2><title>Installing the Matlab version</title>
+<para>
+Starting with version 3.0, by default, Dynare is installed in a directory whose name contains the version number. For example
+<informalexample><programlisting>
+Dynare_v3.0
+</programlisting>
+</informalexample>
+This directory contains several sub-directories, among which <filename>matlab</filename>, <filename>doc</filename> and <filename>examples</filename>.
+</para>
+<para>
+After unpacking the archive, start the Matlab program and use the menu <command>File/Set path</command> to add the path to Dynare <filename>matlab</filename> subdirectory. For example
+<informalexample>
+<programlisting>
+c:\dynare_v3.0\matlab
+</programlisting>
+</informalexample>
+</para>
+</sect2>
+
+
+<sect2><title>Installing the Scilab version</title>
+<para>
+Unpack the zip file in the directory <filename>c:\</filename> (If you want to use another
+directory, see below). The Scilab version in automatically installed in <filename>c:\dynare\scilab</filename>.
+</para>
+<para>
+Then, find the <filename>scilab.star</filename> file, in the top directory of your Scilab distribution. Edit this file and add the following line after similar statements:
+<informalexample>
+<programlisting>
+load('c:/dynare/scilab/lib');
+</programlisting>
+</informalexample>
+</para>
+<para>
+If you installed Dynare for Scilab in a directory different from <filename>c:\dynare\scilab</filename>, change the above instructions accordingly and edit the following line in <filename>Dynare.sci</filename>
+<informalexample>
+<programlisting>
+command = 'c:\dynare\scilab\dynare_s '+fname;
+</programlisting>
+</informalexample>
+Then, restart Scilab and run the command <command>uplib()</command>.
+</para>
+</sect2>
+
+<sect2><title>Installing the Gauss version</title>
+<para>
+Unpack the zip file in the directory <filename>c:\</filename> (If you want to use another
+directory, see below). The Gauss version in automatically installed in <filename>c:\dynare\gauss</filename>.
+</para>
+<para>
+If you had any previous version of Dynare, use the Gauss editor or any text editor to remove all references to it from the library file <filename>user.lcg</filename>.
+</para>
+<para>
+After unpacking the archive, start the Gauss program and type the following:
+<informalexample>
+<programlisting>
+   library pgraph
+   lib user c:\dynare\gauss\dynare.src
+   lib user c:\dynare\gauss\dynare1.src
+   lib user c:\dynare\gauss\dynare2.src
+   lib user c:\dynare\gauss\dynare3.src
+</programlisting>
+</informalexample>
+</para>
+<para>
+If you installed Dynare for Gauss in a directory different from <filename>c:\dynare\gauss</filename>, change the above instructions accordingly and edit the following line in <filename>Dynare.src</filename>
+<informalexample>
+  <programlisting>
+declare string PARSER = "c:\\dynare\\gauss\\dynare_g ";
+  </programlisting>
+</informalexample>
+</para>
+</sect2>
+
+</sect1>
+</chapter>
+
+<chapter><title>Commands</title>
+<para>
+Dynare commands are either single instructions or a block of instructions. Each single instructions or block elements are terminated by <command>;</command>. Block of instructions are terminated by <command>end;</command>.
+</para>
+
+<para>
+Most Dynare commands have arguments and several accept options, indicated in parentheses after the command keyword.
+</para>
+<para>
+In the description of Dynare commands, the following conventions are observed:
+<itemizedlist>
+<listitem><para>optional arguments or options are indicated between square brackets <command>[]</command></para></listitem>
+<listitem><para>repreated arguments are indicated by ellipses <command>...</command></para></listitem>
+<listitem><para><command><replaceable>INTEGER</replaceable></command> indicates an integer number</para></listitem>
+<listitem><para><command><replaceable>DOUBLE</replaceable></command> indicates a double precision number. The following syntaxes are valid: 1.1e3, 1.1E3, 1.1d3, 1.1D3.</para></listitem>
+<listitem><para><command><replaceable>EXPRESSION</replaceable></command> indicates a mathematical expression valid in the underlying language (Matlab, Scilab or Gauss)</para></listitem>
+<listitem><para><command><replaceable>VARIABLE_NAME</replaceable></command> indicates a variable name starting with an alphabetical character and can't contain ()+-*/^=!;:@#. or accentuated characters</para></listitem>
+<listitem><para><command><replaceable>PARAMETER_NAME</replaceable></command> indicates a parameter name starting with an alphabetical charcater and can't contain ()+-*/^=!;:@#. or accentuated characters</para></listitem>
+<listitem><para><command><replaceable>FILENAME</replaceable></command> indicates a file name valid under your operating system (Windows, Linux or Unix)</para></listitem>
+</itemizedlist>
+</para>
+
+<sect1><title>Executing Dynare</title>
+
+<refentry id="Dynare">
+  <refmeta>
+    <refentrytitle>dynare</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>dynare</refname>
+    <refpurpose>executes Dynare</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>dynare</command>
+      <arg choice="plain">
+      <replaceable>FILENAME</replaceable>[.mod]
+      </arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+<command>dynare</command> executes instruction included in <filename>filename.mod</filename>.
+<filename>filename.mod</filename> is the name of the model file containing the
+model and the processing instructions.
+</para>
+</refsect1>
+
+<refsect1><title>Details</title>
+<para>
+In Matlab, <command>dynare</command> creates three intermediary files:
+<itemizedlist spacing='compact'>
+<listitem><para> <filename>filename.m</filename> with the instructions for the simulations</para></listitem>
+<listitem><para> <filename>filename_ff.m</filename> with the dynamic model equations</para></listitem>
+<listitem><para> <filename>filename_fff.m</filename> with the long run static model equations</para></listitem>
+</itemizedlist>
+</para>
+<para>
+In Scilab, <command>dynare</command> creates three intermediary files:
+<itemizedlist spacing='compact'>
+<listitem><para> <filename>filename.sci</filename> with the instructions for the simulations</para></listitem>
+<listitem><para> <filename>filename_ff.sci</filename> with the dynamic model equations</para></listitem>
+<listitem><para> <filename>filename_fff.sci</filename> with the long run static model equations</para></listitem>
+</itemizedlist>
+</para>
+<para>
+In Gauss, <command>dynare</command> creates an intermediary file <filename>filename.gau</filename> with the instructions for the simulations. The Gauss version still accepts the former <filename>.mdl</filename> extension, but it is now deprecated.
+</para>
+<para>
+These files may be looked at to understand errors reported at the simulation stage.
+</para>
+</refsect1>
+
+<refsect1><title>Output</title>
+<para>
+Depending on the computing tasks requested in the *.mod file, executing command <command>dynare</command> will leave in the workspace variables containing results available for further processing. More details are given under the relevant computing tasks.
+</para>
+
+<para>
+Under Matlab, some results are also saved in a file called <replaceable>FILENAME</replaceable><filename>_results.mat</filename>. Currently, this file contains when available the structures <varname>dr_</varname> and <varname>oo_</varname>.
+</para>
+</refsect1>
+
+<refsect1><title>Examples</title>
+<programlisting>
+dynare ramst
+</programlisting>
+<para>or</para>
+<programlisting>
+dynare ramst.mod
+</programlisting>
+</refsect1>
+</refentry>
+</sect1>
+
+<sect1><title>General declarations</title>
+
+<para>General declarations of variables and parameters are made with the following commands:</para>
+<itemizedlist>
+<listitem><para><xref linkend='periods'/> (deprecated)</para></listitem>
+<listitem><para><xref linkend='var'/></para></listitem>
+<listitem><para><xref linkend='varexo'/></para></listitem>
+<listitem><para><xref linkend='varexo_det'/></para></listitem>
+<listitem><para><xref linkend='parameters'/></para></listitem>
+</itemizedlist>
+
+<refentry id="periods">
+  <refmeta>
+    <refentrytitle>periods</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>periods</refname>
+    <refpurpose>specifies the number of simulation periods</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>periods</command> <arg choice="plain">
+      <replaceable>INTEGER</replaceable>;
+      </arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+This command is now deprecated (but will still work for older model files). It is not necessary when no simulation is performed and is replaced by an option PERIODS in SIMUL and STOCH_SIMUL.
+</para>
+<para>
+Set the number of periods in the simulation. The periods are numbered from 1 to <replaceable>INTEGER</replaceable>. In perfect foresight simulations, it is assumed that all future events are perfectly known at the beginning of period 1.
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<programlisting>
+periods 100;
+</programlisting>
+</refsect1>
+</refentry>
+
+<refentry id="var">
+  <refmeta>
+    <refentrytitle>var</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>var</refname>
+    <refpurpose>declares endogenous variables</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>var</command>
+      <arg choice="plain">
+	<replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg>
+	,
+      </arg>
+      <arg rep="repeat">
+	<replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+    <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+This required command declares the endogenous variables in the model. The variable names must start with a letter and can't contain the following characters : ()+-*/^=!;:@#. or accentuated characters.
+</para>
+<para>
+In Gauss, setting <varname>_longname = 1</varname> allows the use of more than 8 characters in the variable names and makes a distinction between lower and upper case letters.
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<programlisting>
+var c gnp q1 q2;
+</programlisting>
+</refsect1>
+</refentry>
+
+<refentry id="varexo">
+  <refmeta>
+    <refentrytitle>varexo</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>varexo</refname>
+    <refpurpose>declares exogenous variables</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>varexo</command>
+      <arg choice="plain">
+	<replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg>
+	,
+      </arg>
+      <arg rep="repeat">
+	<replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+    <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+This optional command declares the exogenous variables in the model. See command <xref linkend="var"/> for the syntax of <replaceable>VARIABLE_NAME</replaceable>.
+</para>
+<para>
+Exogenous variables are required if the user wants to be able to apply shocks to her model. 
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<programlisting>
+varexo m gov;
+</programlisting>
+</refsect1>
+</refentry>
+
+<refentry id="varexo_det">
+  <refmeta>
+    <refentrytitle>varexo_det</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>varexo_det</refname>
+    <refpurpose>declares exogenous deterministic variables in a stochastic  model</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>varexo_det</command>
+      <arg choice="plain">
+	<replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg>
+	,
+      </arg>
+      <arg rep="repeat">
+	<replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+    <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+This optional command declares exogenous deterministic variables in a stochastic model. See command <xref linkend="var"/> for the syntax of <replaceable>VARIABLE_NAME</replaceable>.
+</para>
+<para>It is possible to mix deterministic and stochastic shocks to build models where agents know from the start of the simulation about future exogenous changes. In that case <xref linkend="stoch_simul"/> will compute the rational expectation solution adding future information to the state space (nothing is shown in the output of <xref linkend="stoch_simul"/>) and <xref linkend="forecast"/> will compute a simulation conditional on initial  conditions and future information.
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<programlisting>
+varexo m gov;
+varexo_det tau;
+</programlisting>
+</refsect1>
+</refentry>
+
+<refentry id="parameters">
+  <refmeta>
+    <refentrytitle>parameters</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>parameters</refname>
+    <refpurpose>declares parameters</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>parameters</command>
+      <arg choice="plain">
+	<replaceable>PARAMETER_NAME</replaceable>
+      </arg>
+      <arg>
+	,
+      </arg>
+      <arg rep="repeat">
+	<replaceable>PARAMETER_NAME</replaceable>
+      </arg>
+    <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+This optional command declares parameters used in the model, in variable initialization or in shock declarations. The parameters must then be assigned values using standard syntax of underlying matrix programming language. Be carefull not to use names reserved by Dynare or the underlying language (Matlab, Scilab or Gauss).
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<programlisting>
+parameters alpha, bet;
+
+alpha = 0.3;
+bet = sqrt(2);
+</programlisting>
+</refsect1>
+</refentry>
+</sect1>
+
+<sect1><title>Model declaration</title>
+
+<para>The model is declared inside a <xref linkend="model"/> block.</para>
+
+<refentry id="model">
+  <refmeta>
+    <refentrytitle>model</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>model</refname>
+    <refpurpose>declares the model equations</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>model</command>
+      <arg>
+	(linear)
+      </arg>
+      <arg choice="plain">
+      ;
+      </arg><sbr/>
+      <arg choice="plain">
+	<synopfragmentref linkend="pound_exp">MATLAB EXPRESSION</synopfragmentref>;
+      </arg><sbr/>
+      <arg rep="repeat">
+	<synopfragmentref linkend="pound_exp">MATLAB EXPRESSION</synopfragmentref>;
+      </arg><sbr/>
+      <arg choice="plain">
+	end;
+      </arg>
+
+      <arg choice="plain">
+	<synopfragmentref linkend="eq">EQUATION</synopfragmentref>;
+      </arg><sbr/>
+      <arg rep="repeat">
+	<synopfragmentref linkend="eq">EQUATION</synopfragmentref>;
+      </arg><sbr/>
+      <arg choice="plain">
+	end;
+      </arg>
+
+      <synopfragment id="pound_exp">
+	<arg choice="plain">#<replaceable>EXPRESSION</replaceable></arg>
+	<arg>= #<replaceable>EXPRESSION</replaceable></arg>
+	<arg choice="plain">;</arg>
+      </synopfragment>
+
+      <synopfragment id="eq">
+	<arg choice="plain"><replaceable>EXPRESSION</replaceable></arg>
+	<arg>= <replaceable>EXPRESSION</replaceable></arg>
+	<arg choice="plain">;</arg>
+      </synopfragment>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+The equations of the model are written in a block delimited by <command>model;</command> and <command>end;</command>.
+</para>
+<para>
+There must be as many equations as there are endogenous variables in the model, except when used to compute the unconstrained optimal policy with <command>olr</command>. The lead and lag of the variables are written in parenthesis immediately after the variable name. Leads or lags of more than one period are allowed. All the functions available in Matlab, Scilab or Gauss, respectively, are recognized. Each equation must be terminated by a semicolon (;).
+</para>
+<para>
+When the equations are written in homogenous form, it is possible to omit the "= 0" part and write only the left hand side of the equation.
+</para>
+<para>
+It is possible to include arbitrary Matlab expressions in a model. It must be preceeded by a pound sign (#) as the first character of the line. This is particularily usefull to declare tansformation of parameters for estimation purpose (see <xref linkend="estimated_params"/>).
+</para>
+
+<para>
+The option <command>linear</command> declares the model as being linear. It avoids to have to declare initial values for computing the steady state and it sets automatically <command>order=1</command> in <command>stoch_simul</command>.
+</para>
+</refsect1>
+
+<refsect1><title>Example 1</title>
+<programlisting>
+model;
+c =  - k + aa*x*k(-1)^alph + (1-delt)*k(-1);
+c^(-gam) = (aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam)/(1+bet);
+end;
+</programlisting>
+</refsect1>
+
+<refsect1><title>Example 2</title>
+<programlisting>
+model;
+c + k - aa*x*k(-1)^alph - (1-delt)*k(-1);
+c^(-gam) - (aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam)/(1+bet);
+end;
+</programlisting>
+</refsect1>
+
+<refsect1><title>Example 3</title>
+<programlisting>
+model(linear);
+# b = 1/c;
+x = a*x(-1)+b*y(+1)+e_x;
+y = d*y(-1)+e_y;
+end;
+</programlisting>
+</refsect1>
+</refentry>
+</sect1>
+
+<sect1><title>Initial and terminal conditions</title>
+<para>
+In many contexts, it is necessary to compute the steady state of a non-linear model <xref linkend='initval'/> specifies then numerical initial values for the non-linear solver.
+</para>
+<para>
+Used in perfect foresight mode, the types of forward-loking models for which Dynare was designed require both initial and terminal conditions. Most often these initial and terminal conditions are static equilibria, but not necessarily. 
+</para>
+<para>
+One typical application is to consider an economy at the equilibrium, trigger a shock in first period, and study the trajectory of return at the initial equilbrium. To do that, one needs <xref linkend='initval'/> and <xref linkend='shocks'/>(see next section). 
+</para>
+<para>
+Another one is to study, how an economy, starting from arbitrary initial conditions converges toward equilibrium. To do that, one needs <xref linkend='initval'/> and <xref linkend='endval'/>; 
+</para>
+<para>
+For models with lags on more than one period, the command <xref linkend='histval'/> permits to specify different historical initial values in different periods. 
+</para>
+<itemizedlist>
+<listitem><para><xref linkend='initval'/></para></listitem>
+<listitem><para><xref linkend='endval'/></para></listitem>
+<listitem><para><xref linkend='histval'/></para></listitem>
+</itemizedlist>
+
+<refentry id="initval">
+  <refmeta>
+    <refentrytitle>initval</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>initval</refname>
+    <refpurpose>specifies numerical starting values for finding the steady state and/or initial values for simulations</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>initval;</command><sbr/>
+      <arg choice="plain">
+	<replaceable>VARIABLE_NAME</replaceable> = <replaceable>EXPRESSION</replaceable>;
+	</arg><sbr/>
+	<arg rep="repeat">
+	<replaceable>VARIABLE_NAME</replaceable> = <replaceable>EXPRESSION</replaceable>;
+	  </arg><sbr/>
+	  <arg choice="plain">
+	    end;
+	  </arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+<replaceable>EXPRESSION</replaceable> is any valid expression returning a numerical value and can contain already initialized variable names.
+</para>
+<para>
+The <command>initval;</command> ... <command>end;</command> block serves two purposes. It set the initial and, possibly, terminal conditions for the simulation and provides numerical initialization for various computation tasks (<xref linkend='steady'/>, <xref linkend='simul'/>, <xref linkend='stoch_simul'/>).  
+</para>
+<para>
+Theoreticaly, initial conditions are only necessary for lagged variables. However, as <command>initval</command> provides also numerical initialization, it is necessary to provide values for all variables in the model, except if the model is declared as linear.
+</para>
+<para>
+For stochastic models, it isn't necessary to delcare 0 as initial values for exogneous stochastic variables as it is the only possible value.
+</para>
+<para>
+When the <command>initval</command> block is followed by the command <xref linkend='steady'/>, it is not necessary to provide exact initialization values for the endogenous variables. <xref linkend='steady'/> will use the values provided in the <command>initval</command> block as initial guess in the non-linear equation solver and computes exact values for the endogenous variables at the steady state. The steady state is defined by keeping constant the value of the exogenous variables.  
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<programlisting>
+initval;
+c = 1.2;
+k = 12;
+x = 1;
+end;
+
+steady;
+</programlisting>
+</refsect1>
+</refentry>
+
+<refentry id="endval">
+  <refmeta>
+    <refentrytitle>endval</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>endval</refname>
+    <refpurpose>specifies terminal values for deterministic simulations</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>endval;</command><sbr/>
+      <arg choice="plain">
+	<replaceable>VARIABLE_NAME</replaceable> = <replaceable>EXPRESSION</replaceable>;
+	</arg><sbr/>
+	<arg rep="repeat">
+	<replaceable>VARIABLE_NAME</replaceable> = <replaceable>EXPRESSION</replaceable>;
+	  </arg><sbr/>
+	  <arg choice="plain">
+	    end;
+	  </arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+<replaceable>EXPRESSION</replaceable> is any valid expression returning a numerical value and can contain already initialized variable names.
+</para>
+<para>
+The optional <command>endval;</command> ... <command>end;</command> block serves two purposes. It set the terminal conditions for the simulation with the LBJ alogrithm, when those differ from the initial conditions. When it is the case, the <command>endval</command> block also provides the numerical initialization for various computation tasks (<xref linkend='steady'/>, <xref linkend='simul'/>), starting in period 1.  
+</para>
+<para>
+Theoreticaly, terminal conditions are required in the LBJ algorithm only for forward variables. However, as <command>endval</command> provides also numerical initialization, it is necessary to provide values for all variables in the model.
+</para>
+<para>
+When the <command>endval</command> block is followed by the command <xref linkend='steady'/>, it is not necessary to provide exact values for the endogenous variables. <xref linkend='steady'/> will use the values provided in the <command>endval</command> block as initial guess in the non-linear equation solver and computes exact values for the endogenous variables at the steady state. The steady state is defined by keeping constant the value of the exogenous variables.  
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<programlisting>
+var c k;
+varexo x;
+...
+initval;
+c = 1.2;
+k = 12;
+x = 1;
+end;
+
+steady;
+
+endval;
+c = 2;
+k = 20;
+x = 2;
+end;
+
+steady;
+</programlisting>
+<para>
+The initial equilibrium is comptuted by <xref linkend='steady'/> for x=1, and the terminal one, for x=2.
+</para>
+</refsect1>
+</refentry>
+
+<refentry id="histval">
+  <refmeta>
+    <refentrytitle>histval</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>histval</refname>
+    <refpurpose>specifies historical values before the start of a simulation</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>histval;</command><sbr/>
+      <arg choice="plain">
+	<replaceable>VARIABLE_NAME</replaceable> (<replaceable>INTEGER</replaceable>) = <replaceable>EXPRESSION</replaceable>;
+	</arg><sbr/>
+	<arg rep="repeat">
+	<replaceable>VARIABLE_NAME</replaceable> (<replaceable>INTEGER</replaceable>) = <replaceable>EXPRESSION</replaceable>;
+	  </arg><sbr/>
+	  <arg choice="plain">
+	    end;
+	  </arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+<replaceable>EXPRESSION</replaceable> is any valid expression returning a numerical value and can contain already initialized variable names.
+</para>
+<para>
+In models with lags on more than one period, the optional <command>histval;</command> ... <command>end;</command> block permits to specify different historical initial values for different periods.
+</para>
+<para>
+By convention in Dynare, period 1 is the first period of the simulation. Going backward in time, the first period before the start of the simulation is period 0, then period -1, and so on.
+</para>
+<para>
+If your lagged variables are linked by identities, be careful to satisfy these identities when you set historical initial values.
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<programlisting>
+var x y;
+varexo e;
+
+model;
+x = y(-1)^alpha*y(-2)^(1-alpha)+e;
+...
+end;
+
+initval;
+x = 1;
+y = 1;
+e = 0.5;
+end;
+
+steady;
+
+histval;
+y(0) = 1.1;
+y(-1) = 0.9;
+end;
+</programlisting>
+</refsect1>
+
+</refentry>
+</sect1>
+
+<sect1><title>Shocks on exogenous variables</title>
+<para>
+In a deterministic context, when one wants to study the transition of one equilibrium position to another, it is equivalent to analyze the consequences of a permanent shock and this in done in Dynare through the proper use of <xref linkend='initval'/> and <xref linkend='endval'/>.
+</para>
+<para>
+Another typical experiment is to study the effects of a temporary shock after which the system goes back to the original equilibrium (if the model is stable ...). A temporary shock is a temporary change of value of one or several exogenous variables in the model. Temporary shocks are specified with the command <xref linkend='shocks'/>.
+</para>
+<para>
+In a stochastic framework, the exogenous variables take random values in each period. In Dynare, these random values follow a normal distribution with zero mean, but it belongs to the user to specify the variability of these shocks. The non-zero elements of the matrix of variance-covariance of the shocks can be entered with the <xref linkend='shocks'/> command. Or, the entire matrix can be direclty entered with <xref linkend='Sigma_e'/>. Note that, starting with version 2.5.2, the direct specification of the <emphasis>internal</emphasis> matrix <varname>Sigma_e_</varname>, prone to errors, is discouraged.
+</para>
+<para>
+If the variance of an exogenous variable is set to zero, this variable will appear in the report on policy and transition functions, but isn't used in the computation of moments and of Impulse Response Functions. Setting a variance to zero is an easy way of removing an exogenous shock.
+</para>
+<itemizedlist>
+<listitem><para><xref linkend='shocks'/></para></listitem>
+<listitem><para><xref linkend='Sigma_e'/></para></listitem>
+</itemizedlist>
+
+<refentry id="shocks">
+  <refmeta>
+    <refentrytitle>shocks</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>shocks</refname>
+    <refpurpose>specifies shocks on deterministic or stochastic exogenous variables</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>shocks</command>
+      <arg>(<arg rep="repeat" choice="plain"><replaceable>OPTION</replaceable>,</arg>);</arg><sbr/>
+      <group choice="plain">
+	<arg choice="plain">
+	  <synopfragmentref linkend="det_shock">DETERMINISTIC SHOCK STATEMENT</synopfragmentref>
+	</arg>
+	<arg choice="plain">
+	  <synopfragmentref linkend="st_shock">STOCHASTIC SHOCK STATEMENT</synopfragmentref>
+	</arg>
+      </group><sbr/>
+      <group rep="repeat">
+	<arg choice="plain">
+	  <synopfragmentref linkend="det_shock">DETERMINISTIC SHOCK STATEMENT</synopfragmentref>
+	</arg>
+	<arg choice="plain">
+	  <synopfragmentref linkend="st_shock">STOCHASTIC SHOCK STATEMENT</synopfragmentref>
+	</arg>
+      </group><sbr/>
+      <arg choice ="plain">end;</arg>
+      <synopfragment id="det_shock">
+	<arg choice="plain">var <replaceable>VARIABLE_NAME</replaceable>;</arg>
+	<arg choice="plain">periods <synopfragmentref linkend="period_st">PERIOD STATEMENT</synopfragmentref>;</arg>
+	<arg choice="plain">values EXPRESSION;</arg>
+      </synopfragment>
+      <synopfragment id="period_st">
+	    <arg choice="plain"><replaceable>INTEGER</replaceable></arg>
+	    <arg>: <replaceable>INTEGER</replaceable></arg>
+	    <arg rep="repeat"><replaceable>INTEGER</replaceable>
+	    <arg>: <replaceable>INTEGER</replaceable></arg>
+	    </arg><arg choice="plain">;</arg>
+      </synopfragment>
+      <synopfragment id="st_shock">
+	<group choice="plain">
+	  <arg choice="plain">
+	    <synopfragmentref linkend="var_st">VARIANCE STATEMENT</synopfragmentref>
+	  </arg>
+	  <arg choice="plain">
+	    <synopfragmentref linkend="covar_st">COVARIANCE STATEMENT</synopfragmentref>
+	  </arg>
+	  <arg choice="plain">
+	    <synopfragmentref linkend="stderr_st">STANDARD ERROR STATEMENT</synopfragmentref>
+	  </arg>
+	</group>
+      </synopfragment>
+      <synopfragment id="var_st">
+	<arg choice="plain">
+	  var <replaceable>VARIABLE_NAME</replaceable> = <replaceable>EXPRESSION</replaceable>;
+	</arg>
+      </synopfragment>
+      <synopfragment id="covar_st">
+	<arg choice="plain">
+	  var <replaceable>VARIABLE_NAME</replaceable> , <replaceable>VARIABLE_NAME</replaceable> = <replaceable>EXPRESSION</replaceable>;
+	</arg>
+      </synopfragment>
+      <synopfragment id="stderr_st">
+	<arg choice="plain">
+	  var <replaceable>VARIABLE_NAME</replaceable>; stderr <replaceable>EXPRESSION</replaceable>;
+	</arg>
+      </synopfragment>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+<refsect1><title>Options</title>
+<itemizedlist spacing='compact'>
+<listitem>
+  <para><command>shocks_file</command> = FILENAME: reads sequence of deterministic shocks from FILENAME. It can be either a *.m or a *.mat file. The file must create vectors with the same names as the deterministic exogenous variables.</para>
+</listitem>
+</itemizedlist>
+</refsect1>
+
+<refsect1><title>Description</title>
+<refsect2><title>In deterministic context</title>
+<para>
+For deterministic simulations, the <command>shocks</command> block specifies temporary changes in the value of an exogenous variables. For permanent shocks, use an <xref linkend='endval'/> block.
+</para>
+
+<para>
+  When specifying shocks on several periods, the <command>values</command> <replaceable>EXPRESSION</replaceable> must return either a scalar value common to all periods with a shock or a column vector with as many elements as there are periods in the <command>periods</command> statement just before it.
+</para>
+
+<refsect3><title>Example</title> 
+<programlisting>
+shocks;
+var e;
+periods 1;
+values 0.5;
+var u;
+periods 4:5;
+values 0;
+var v;
+periods 4 5 6;
+values 0;
+var u;
+periods 4  5   6;
+values  1 1.1 0.9;
+end;
+</programlisting>
+</refsect3>
+</refsect2>
+
+<refsect2><title>In stochastic context</title>
+<para>
+For stochastic simulations (available only in the Matlab or Scilab versions), the <command>shocks</command> block specifies the non zero elements of the covariance matrix of the shocks.
+</para>
+
+<refsect3><title>Example</title> 
+<programlisting>
+shocks;
+var e = 0.000081;
+var e,u = phi*0.009*0.009;
+var u = 0.000081;
+var v; stderr 0.009;
+end;
+</programlisting>
+</refsect3>
+<refsect3><title>See also</title>
+<para>
+<command>Sigma_e</command>
+</para>
+</refsect3>
+</refsect2>
+
+<refsect2><title>Mixing determininistic and stochastic shocks</title>
+<para>It is possible to mix deterministic and stochastic shocks to build models where agents know from the start of the simulation about future exogenous changes. In that case <xref linkend="stoch_simul"/> will compute the rational expectation solution adding future information to the state space (nothing is shown in the output of <xref linkend="stoch_simul"/>) and <xref linkend="forecast"/> will compute a simulation conditional on initial  conditions and future information.
+</para>
+
+<refsect3><title>Example</title>
+<informalexample>
+  <programlisting>
+varexo_det tau;
+varexo e;
+
+...
+
+shocks;
+var e; stderr 0.01;
+var tau;
+periods 1:9;
+values -0.15;
+end;
+
+stoch_simul(irf=0);
+
+forecast;
+  </programlisting>
+</informalexample>
+</refsect3>
+</refsect2>
+
+</refsect1>
+</refentry>
+
+<refentry id="Sigma_e">
+  <refmeta>
+    <refentrytitle>Sigma_e</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>Sigma_e</refname>
+    <refpurpose>specifies directly the covariance matrix of the stochastic shocks</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>Sigma_e</command>
+      <arg choice="plain">
+	= [<synopfragmentref linkend="matrix_el">MATRIX ELEMENT</synopfragmentref>
+	<arg rep="repeat"><arg>,</arg><synopfragmentref linkend="matrix_el">MATRIX ELEMENT</synopfragmentref></arg>
+	<arg rep="repeat"><arg choice="plain">;</arg><synopfragmentref linkend="matrix_el">MATRIX ELEMENT</synopfragmentref></arg>];
+      </arg>
+
+      <synopfragment id="matrix_el">
+	<group choice="plain">
+	  <arg choice="plain">
+	    <replaceable>INTEGER</replaceable>
+	  </arg>
+	  <arg choice="plain">
+	    <replaceable>DOUBLE</replaceable>
+	  </arg>
+	  <arg choice="plain">
+	    (<replaceable>EXPRESSION</replaceable>)
+	  </arg>
+	</group>
+      </synopfragment>
+    </cmdsynopsis>
+    <para>
+      WARNING: the matrix elements are actually written beween square brackets ([]). Here, the initial [ and final ] don't have the meaning of "optional element" as elsewhere.
+    </para>
+  </refsynopsisdiv>
+
+
+<refsect1><title>Description</title>
+
+<para>
+The matrix of variance-covariance of the shocks can be directly specified as a upper (or lower) triangular matrix. Dynare builds the corresponding symmetrix matrix. Each row of the triangular matrix, except the last one, must be terminated by a semi-colon ';'. For a given element, an <replaceable>EXPRESSION</replaceable> using predefined parameters is allowed but must be placed between parentheses. THE ORDER OF THE COVARIANCES IN THE MATRIX IS THE SAME AS THE ONE USED IN THE VAREXO DECLARATION.
+</para>
+<note>
+<para>In previous versions, it was possible to directly set Dynare's internal covariance matrix <varname>Sigma_e_</varname>. This is still possible for compatibility with older .mod files, but STRONGLY DISCOURAGED as too prone to error. When setting <varname>Sigma_e_</varname> directly, the order of the exogenous shocks is the ALPHABETICAL order of their names.
+</para>
+</note>
+</refsect1>
+
+<refsect1><title>Example</title>
+<programlisting>
+varexo u, e;
+...
+Sigma_e = [ 0.81 (phi*0.9*0.009); 0.000081];
+</programlisting>
+<para>
+where the variance of <varname>u</varname> is 0.81, the variance of <varname>e</varname>, 0.000081, and the correlation between <varname>e</varname> and <varname>u</varname> is <varname>phi</varname>.
+</para>
+</refsect1>
+</refentry>
+</sect1>
+
+<sect1><title>Solving and simulating</title>
+<para>
+Dynare has special commands for the computation of the static equilibrium of the model (<xref linkend='steady'/>, of the eigenvalues of the linearized model (<xref linkend='check'/>) for dynamics local analysis, of a deterministic simulation (<xref linkend='simul'/>) and for solving and/or simulating a stochastic model (<xref linkend='stoch_simul'/>).
+</para>
+<itemizedlist>
+<listitem><para><xref linkend='steady'/></para></listitem>
+<listitem><para><xref linkend='check'/></para></listitem>
+<listitem><para><xref linkend='forecast'/></para></listitem>
+<listitem><para><xref linkend='simul'/></para></listitem>
+<listitem><para><xref linkend='stoch_simul'/></para></listitem>
+</itemizedlist>
+
+<refentry id="steady">
+  <refmeta>
+    <refentrytitle>steady</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>steady</refname>
+    <refpurpose>copmutes the steady state of a model</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>steady</command>
+      <arg>
+      (solve_algo = 
+      <group choice="plain">
+	<arg choice="plain">0</arg>
+	<arg choice="plain">1</arg>
+	<arg choice="plain">2</arg>
+      </group>)
+      </arg>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Options</title>
+<itemizedlist spacing='compact'>
+<listitem><para><command>solve_algo = 0</command>: uses Matlab Optimization Toolbox FSOLVE</para></listitem>
+<listitem><para><command>solve_algo = 1</command>: uses Dynare's own nonlinear equation solver</para></listitem>
+<listitem><para><command>solve_algo = 2</command>: splits the model into recursive blocks and solves each block in turn. (Thanks to Manfred Gilli for showing me Matlab's function DMPERM) (this is the default since Dynare version 3.046).</para>
+</listitem>
+</itemizedlist>
+</refsect1>
+
+<refsect1><title>Description</title>
+
+<para>
+Computes the equilibrium value of the endogenous variables for the value of the exogenous variables specified in the previous <xref linkend='initval'/> or <xref linkend='endval'/> block.
+</para>
+<para>
+<command>steady</command> uses an iterative procedure and takes as initial guess the value of the endogenous variables set in the previous <xref linkend='initval'/> or <xref linkend='endval'/> block.
+</para>
+<para>
+For complicated models, finding good numerical initial values for the endogenous variables is the trickiest part of finding the equilibrium of that model. Often, it is better to start with a smaller model and add new variables one by one.
+</para>
+
+<para>If you know how to compute the steady state for your model, you can provide a Matlab function doing the computation instead of using <command>steady</command>. The function should be called with the name of the <filename>.mod</filename> file followed by <filename>_steadystate</filename>. See <filename>fs2000a_steadystate.m</filename> in <filename>examples/fs2000</filename> directory.
+</para>
+
+</refsect1>
+
+<refsect1><title>Output variables</title>
+<para>
+  The steeady state is available in <varname>ys_</varname>. Endogenous variables are ordered alphabeticaly as in <varname>lgy_</varname>.  
+</para>
+</refsect1>
+
+<refsect1><title>Examples</title>
+<para>
+See <xref linkend='initval'/> and <xref linkend='endval'/>.
+</para>
+</refsect1>
+</refentry>     
+
+<refentry id="check">
+  <refmeta>
+    <refentrytitle>check</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>check</refname>
+    <refpurpose>computes the eigenvalues of the (linearized) model</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>check</command>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+Computes the eigenvalues of the model linearized around the values specified by the last <xref linkend='initval'/>, <xref linkend='endval'/> or <xref linkend='steady'/> statement. Generally, the eigenvalues are only meaningfull if the linearization is done around a steady state of the model. It is a device for local analysis in the neighborhood of this steady state.
+</para>
+<para>
+A necessary condition for the uniqueness of a stable equilibrium in the neighborhood of the steady state is that there are as many eigenvalues larger than one in modulus as there are forward looking variables in the system. An additional rank condition requires that the square submatrix of the right Schur vectors corresponding to the forward looking variables (jumpers) and to the explosive eigenvalues must have full rank.
+</para>
+</refsect1>
+
+<refsect1><title>Output variables</title>
+<para>
+<command>check</command> returns the eigenvalues in the global variable <varname>eigenvalues_</varname>.
+</para>
+</refsect1>
+</refentry>
+
+<refentry id="forecast">
+  <refmeta>
+    <refentrytitle>forecast</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>forecast</refname>
+    <refpurpose>computes a simulation of a stochastic model from a given state</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>forecast</command>
+      <arg>(<arg rep="repeat" choice="plain"><replaceable>OPTION</replaceable>,</arg>)</arg>
+      <arg choice="plain"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg rep="repeat"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Options</title>
+<itemizedlist spacing='compact'>
+<listitem><para><command>periods</command> = INTEGER: number of periods of the forecast (default = 40)</para></listitem>
+<listitem><para><command>conf_sig</command> = DOUBLE: level of significance for confidence interval (default = 0.90)</para></listitem>
+</itemizedlist>
+</refsect1>
+
+<refsect1><title>Description</title>
+<para><command>forecast</command> computes a simulation of a stochastic model from an arbitrary initial point.</para>
+<para>When the model also contains deterministic exogenous shocks, the simulation is computed conditionaly to the agents knowing the future values of the deterministic exogenous variables.</para>
+
+<para><command>forecast</command> must be called after <xref linkend="stoch_simul"/>.</para>
+
+<para> <command>forecast</command> plots the trajectory of endogenous variables. When a list of variable names follows the command, only those variables are ploted. A 90% confidence interval is ploted around the mean trajectory. Use option <command>conf_sig</command> to change the level of the confidence interval.</para>
+</refsect1>
+
+<refsect1><title>Output variables</title>
+<para>The following variables are set in structure <varname>oo_</varname>:
+<itemizedlist spacing="compact">
+<listitem><para><varname>oo_.forecast.Mean.</varname><replaceable>VARIABLE NAME</replaceable>: mean forecast of endogenous variables</para></listitem>
+<listitem><para><varname>oo_.forecast.HPDinf.</varname><replaceable>VARIABLE NAME</replaceable>: lower bound of a confidence interval around the forecast</para></listitem>
+<listitem><para><varname>oo_.forecast.HPDsup.</varname><replaceable>VARIABLE NAME</replaceable>: upper bound of a confidence interval around the forecast</para></listitem>
+<listitem><para><varname>oo_.forecast.Exogenous.</varname><replaceable>VARIABLE NAME</replaceable>: trajectory of the deterministic exogenous variables</para></listitem>
+</itemizedlist>
+</para>
+</refsect1>
+
+
+<refsect1><title>Example</title>
+<informalexample>
+  <programlisting>
+varexo_det tau;
+varexo e;
+
+...
+
+shocks;
+var e; stderr 0.01;
+var tau;
+periods 1:9;
+values -0.15;
+end;
+
+stoch_simul(irf=0);
+
+forecast;
+  </programlisting>
+</informalexample>
+</refsect1>
+</refentry>
+
+<refentry id="simul">
+  <refmeta>
+    <refentrytitle>simul</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>simul</refname>
+    <refpurpose>simulates a deterministic model</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>simul</command>
+      <arg>
+	(periods=<replaceable>INTEGER</replaceable>)
+      </arg>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+  <refsect1><title>Description</title>
+  <para>
+    Triggers the computation of a deterministic simulation of the model for the number of periods set in the option <command>periods=</command>. <command>simul</command> uses a Newton method to solve simultaneously all the equations for every period (see Juillard, 1996).
+  </para>
+  </refsect1>
+<refsect1><title>Output variables</title>
+<para>
+the simulated variables are available in global matrix <varname>y_</varname>. The variables are arranged row by row, in alphabetical order.
+</para>
+</refsect1>
+</refentry>
+
+
+<refentry id="stoch_simul">
+  <refmeta>
+    <refentrytitle>stoch_simul</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>stoch_simul</refname>
+    <refpurpose>computes the solution and simulates the model</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>stoch_simul</command>
+      <arg>(<arg rep="repeat" choice="plain"><replaceable>OPTION</replaceable>,</arg>)</arg>
+      <arg choice="plain"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg rep="repeat"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Options</title>
+<itemizedlist spacing='compact'>
+<listitem><para><anchor id="ar" xreflabel="ar"/> <command>ar</command> = <replaceable>INTEGER</replaceable>:
+Order of autocorrelation coefficients to compute and to print (default = 5)
+n</para></listitem>
+<listitem><para> <command>dr_algo = 0 | 1</command>: 
+specifies the algorithm used for computing the quadratic approximation of the decision rules:
+<itemizedlist spacing='compact'>
+<listitem><para> 0: uses a <emphasis>pure</emphasis> perturbation approach as in Schmitt-Grohe and Uribe (2002) (default)
+</para></listitem>
+<listitem><para> 1: moves the point around which the Taylor expansion is computed toward the means of the distribution as in Collard and Juillard (2001)
+</para></listitem>
+</itemizedlist>
+</para></listitem>
+<listitem><para> <command>drop</command> = <replaceable>INTEGER</replaceable>:
+number of points dropped at the beginning of simulation before computing the summary statistics (default = 100)
+</para></listitem>
+<listitem><para> <command>hp_filter</command> = <replaceable>INTEGER</replaceable>:
+ uses HP filter with lambda = <replaceable>INTEGER</replaceable> before computing moments (default: no filter)
+</para></listitem>
+<listitem><para> <command>hp_ngrid</command> = <replaceable>INTEGER</replaceable>:
+number of points in the grid for the discreet Inverse Fast Fourier Transform used in the HP filter computation. It may be necessary to increase it for highly autocorrelated processes (default = 512) 
+</para></listitem>
+<listitem><para> <command>irf</command> = <replaceable>INTEGER</replaceable>:
+ number of periods on which to compute the IRFs (default = 40). Setting IRF=0, suppresses the plotting of IRF's. 
+</para></listitem>
+<listitem><para><command>relative_irf</command> requests the computation of normalized IRFs in percentage of the standard error of each shock</para></listitem>
+<listitem><para> <command>linear</command>:
+ indicates that the original model is linear (put it rather in the MODEL command).
+</para></listitem>
+<listitem><para> <command>nocorr</command>: 
+doesn't print the correlation matrix (printing them is the default)
+</para></listitem>
+<listitem><para> <command>nofunctions</command>:
+ doesn't print the coefficients of the approximated solution (printing them is the default)
+</para></listitem>
+<listitem><para> <command>nomoments</command>: 
+doesn't print moments of the endogenous variables (printing them is the default)</para></listitem>
+<listitem><para> <command>noprint</command>: cancel any printing. Usefull for loops.</para></listitem>
+<listitem><para> <command>order</command> = 1 | 2 :
+order of Taylor approximation (default = 2)
+</para></listitem>
+<listitem><para> <command>periods</command> = <replaceable>INTEGER</replaceable>: specifies the number of periods to use in simulations. At order=1, no simulation is necessary to compute theoretical moments and IRFs. A number of periods larger than one triggers automatically option <command>simul</command> (default = 0).
+</para></listitem>
+<listitem><para> <command>qz_criterium</command> = <replaceable>INTEGER</replaceable> | <replaceable>DOUBLE</replaceable>:
+value used to split stable from unstable eigenvalues in reordering the Generalized Schur decomposition used for solving 1st order problems (default 1.000001)
+</para></listitem>
+<listitem><para> <command>replic</command> = <replaceable>INTEGER</replaceable>: number of simulated series used to compute the IRFs (default = 1, if order = 1, and 50 otherwise)
+</para></listitem>
+<listitem><para> <command>simul</command>: 
+computes a stochastic simulation of the model for the number of periods specified in the <command>periods</command> statement. Uses <xref linkend='initval'/> values, possibly recomputed by <xref linkend='steady'/>, as initial values for the simulation. The simulated endogenous variables are made available to the user in a vector for each variable and in the global matrix <varname>y_</varname>. The variables are ordered alphabeticaly in the <varname>y_</varname> matrix (default: no simulation)
+</para></listitem>
+<listitem><para> <command>simul_seed</command> = <replaceable>INTEGER</replaceable>|<replaceable>DOUBLE</replaceable>|<replaceable>(EXPRESSION)</replaceable>:
+ specifies a seed for the random generator so as to obtain the same random sample at each run of the program. Otherwise a different sample is used for each run (default: seed not specified). Note that if you use an EXPRESSION rather than an INTEGER or a DOUBLE, the EXPRESSION must be in parenthesis.
+</para></listitem>
+<listitem><para> all <command>steady</command> options (see <xref linkend='steady'/>)</para></listitem>
+</itemizedlist>
+<para>
+When a list of VARIABLE_NAMEs is specified, results are displayed only for these variables.
+</para>
+</refsect1>
+<refsect1><title>Description</title>
+<para>
+<command>stoch_simul</command> computes a Taylor approximation of the decision and transition functions for the model, impulse response functions and various descriptive statistics (moments, variance decomposition, correlation and autocorrelation coefficients). For correlated shocks, the variance decomposition is computed as in the VAR literature through a Cholesky decomposition of the covariance matrix of the exogenous variables. When the shocks are correlated, the variance decomposition depends upon the order of the variables in the <xref linkend='varexo'/> command.
+</para>
+
+<para>The Taylor approximation is computed around the steady state (except whith option <command>dr_algo=1</command>). If you know how to compute the steady state for your model, you can provide a Matlab function doing the computation instead of using the nonlinear solver. The function should be called with the name of the <filename>.mod</filename> file followed by <filename>_steadystate</filename>. See <filename>fs2000a_steadystate.m</filename> in <filename>examples/fs2000</filename> directory.
+</para>
+
+<para>
+Variance decomposition, correlation, autocorrelation are only displayed for variables with positive variance. Impulse response functions are only ploted for variables with response larger than 1e-10.
+</para>
+<para>
+Currently, the IRF's are only ploted for 12 variables. Select the ones you want to see, if your model contains more than 12 endogenous variables.
+</para>
+<para>Currently, the HP filter is only available when computing theoretical moments, not for for moments of simulated variables.
+</para>
+<para>
+The covariance matrix of the shocks is specified either with the <xref linkend='shocks'/> command or with the <xref linkend='Sigma_e'/> command.
+</para>
+</refsect1>
+
+<refsect1><title>Decision rules</title>
+<para>
+The approximated solution of a model takes the form of a set of decision rules or transition equations expressing the current value of the endogenous variables of the model as function of the previous state of the model and shocks oberved at the beginning of the period.
+</para>
+<refsect2><title>First order approximation</title>
+<blockquote><para>
+y<subscript>t</subscript> = ys + A yh<subscript>t-1</subscript> + B u<subscript>t</subscript>
+</para>
+<para>
+where ys is the steady state value of y and yh<subscript>t</subscript>=y<subscript>t</subscript>-ys.
+</para>
+</blockquote>
+</refsect2>
+<refsect2><title>Second order approximation</title>
+<blockquote><para>
+y<subscript>t</subscript> = ys + 0.5&Delta;<superscript>2</superscript> + A yh<subscript>t-1</subscript> + B u<subscript>t</subscript> + 0.5C(yh<subscript>t-1</subscript>&otimes;yh<subscript>t-1</subscript>) + 0.5D(u<subscript>t</subscript>&otimes;u<subscript>t</subscript>) + E(yh<subscript>t-1</subscript>&otimes;u<subscript>t</subscript>)
+</para>
+<para>
+where ys is the steady state value of y, yh<subscript>t</subscript>=y<subscript>t</subscript>-ys, and &Delta;<superscript>2</superscript> is the shift effect of the variance of future shocks.
+</para>
+</blockquote>
+</refsect2>
+</refsect1>
+
+<refsect1><title>Output variables</title>
+<para>
+<command>stoch_simul</command> sets several fields in global variable <varname>oo_</varname>. The descriptive statistics are theoretical moments when no simulation is requested and otherwise represent the moments of the simulated variables. 
+<itemizedlist>
+<listitem><para>the coefficients of the decision rules are stored in global structure<varname>dr_</varname>. Here is the correspondance with the symbols used in the above description of the decision rules:
+<itemizedlist><title>Decision rule coefficients</title>
+
+<listitem><para><varname>ys</varname>: <varname>dr_.ys</varname>. The vector rows correspond to variables in alphabetical order of the variable names.</para></listitem>
+<listitem><para>&Delta;<superscript>2</superscript>: <varname>dr_.ghs2</varname>. The vector rows correspond to re-ordered variables (see below).</para></listitem>
+<listitem><para><varname>A</varname>: <varname>dr_.ghx</varname>. The matrix rows correspond to re-ordered variables. The matrix columns correspond to state variables (see below).</para></listitem>
+<listitem><para><varname>B</varname>: <varname>dr_.ghu</varname>. The matrix rows correspond to re-ordered variables (see below). The matrix columns correspond to exogenous variables in alphabetical order.</para></listitem>
+<listitem><para><varname>C</varname>: <varname>dr_.ghxx</varname>. The matrix rows correspond to re-ordered variables. The matrix columns correspond to the Kronecker product of the vector of state variables (see below).</para></listitem>
+<listitem><para><varname>D</varname>: <varname>dr_.ghuu</varname>. The matrix rows correspond to re-ordered variables (see below). The matrix columns correspond to the Kronecker product of exogenous variables in alphabetical order.</para></listitem>
+<listitem><para><varname>E</varname>: <varname>dr_.ghxu</varname>. The matrix rows correspond to re-ordered variables. The matrix columns correspond to the Kronecker product of the vector of state variables (see below) by the vector of exogenous variables in alphabetical order.</para></listitem>
+</itemizedlist>
+When reordered, the variables are stored in the following order: static variables, purely predetermined variables (variables that appear only at the current and lagged periods in the model), variables that are both predetermined and forward-looking (variables that appear at the current, future and lagged periods in the model), purely forward-looking variables (variables that appear only at the current and future periods in the model). In each category, the variables are arranged alphabetically.</para>
+<para>
+The state variables of the model are purely predetermined variables and variables that are both predetermined and forward-looking. They are ordered in that order. When there are lags on more than one period, the state variables are ordered first according to their lag: first variables from the previous period, then variables from two periods before and so on. Note also that when a variable appears in the model at a lag larger than one period, it is automatically included at all inferior lags.
+</para>
+</listitem>
+<listitem><para>The mean of the endogenous variables is available in the vector <varname>oo_.mean</varname>. The variables are arranged in alphabetical order.
+</para></listitem>
+<listitem><para>The matrix of variance-covariance of the endogenous variables in the matrix <varname>oo_.var</varname>. The variables are arranged in alphabetical order.</para></listitem>
+<listitem><para>The matrix of autocorrelation of the endogenous variables are made available in cell array <varname>oo_.autocorr</varname>. The element number of the matrix in the cell array corresponds to the order of autocorrelation. The option <varname>AR</varname> (default ar=5) specifies the number of autocorrelation matrices available.
+</para></listitem>
+<listitem>
+<para>
+  Simulated variables, when they have been computed, are available in Matlab
+vectors with the same name as the endogenous variables.</para>
+</listitem>
+<listitem>
+<para>
+  Impulse responses, when they have been computed, are available in Matlab vectors witht the following naming convention <replaceable>VARIABLE_NAME</replaceable>_<replaceable>shock name</replaceable>.
+</para>
+<informalexample><para>
+  <varname>gnp_ea</varname> contains the effect on <varname>gnp</varname> of a one standard deviation shock on <varname>ea</varname>.
+</para>
+</informalexample>
+</listitem>
+</itemizedlist>
+</para>
+</refsect1>
+
+<refsect1><title>Example 1</title>
+<programlisting>
+shocks;
+var e;
+stderr 0.0348;
+end;
+
+stoch_simul;
+</programlisting>
+<para>
+performs the simulation of the 2nd order approximation of a model with a single stochastic shock, e, with a standard error of 0.0348.
+</para>
+</refsect1>
+
+<refsect1><title>Example 2</title>
+<programlisting>
+stoch_simul(linear,irf=60) y k;
+</programlisting>
+<para>
+performs the simulation of a linear model and displays impulse response functions on 60 periods for variables <varname>y</varname> and <varname>k</varname>.
+</para>
+</refsect1>
+</refentry>
+</sect1>
+
+<sect1><title>Estimation</title>
+<para>
+Provided that you have observations on some endogenous variables, it is possible to use Dynare to estimate some or all parameters. Both maximum likelihood and Bayesian techniques are available.
+</para>
+
+<para>
+Note that in order to avoid stochastic singularity, you must have at least as many shocks or measurement errors in your model as you have observed variables. 
+</para>
+<itemizedlist>
+<listitem><para><xref linkend='varobs'/></para></listitem>
+<listitem><para><xref linkend='observation_trends'/></para></listitem>
+<listitem><para><xref linkend='estimated_params'/></para></listitem>
+<listitem><para><xref linkend='estimated_params_init'/></para></listitem>
+<listitem><para><xref linkend='estimated_params_bounds'/></para></listitem>
+<listitem><para><xref linkend='estimated_params_init'/></para></listitem>
+<listitem><para><xref linkend='estimation'/></para></listitem>
+<listitem><para><xref linkend='unit_root_vars'/></para></listitem>
+</itemizedlist>
+
+<refentry id="varobs">
+  <refmeta>
+    <refentrytitle>varobs</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>varobs</refname>
+    <refpurpose>lists the observed variables</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>varobs</command>
+      <arg choice="plain" rep="repeat">
+	<replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg rep="repeat">
+	<replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+<command>varobs</command> lists the name of observed endogenous variables for the estimation procedure. These variables must be available in the data file (see <xref linkend='estimation'/>).
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<para>
+  <informalexample>
+    <programlisting>
+      varobs C y rr;
+    </programlisting>
+  </informalexample>
+</para>
+</refsect1>
+
+</refentry>
+
+<refentry id="observation_trends">
+  <refmeta>
+    <refentrytitle>observation_trends</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>observation_trends</refname>
+    <refpurpose>specifies linear trends for observed variables</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>observation_trends;</command><sbr/>
+      <arg choice="plain">
+	<replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">
+	(<replaceable>EXPRESSION</replaceable>);
+      </arg><sbr/>
+      <arg choice="plain">
+	end;
+      </arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+<command>observation_trends</command> specifies trends for observed variables as functions of model parameters. In most cases, variables shouldn't be centered when <command>observation_trends</command> is used. 
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<para>
+  <informalexample>
+    <programlisting>
+      observation_trends;
+      Y (eta);
+      P (mu/eta);
+      end;
+    </programlisting>
+  </informalexample>
+</para>
+</refsect1>
+
+</refentry>
+
+<refentry id="estimated_params">
+  <refmeta>
+    <refentrytitle>estimated_params</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>estimated_params</refname>
+    <refpurpose>specifies the estimated parameters and their prior</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <para>Syntax I (maximum likelihood estimation)</para>
+    <cmdsynopsis>
+      <command>estimated_params;</command><sbr/>
+      <group choice="req">
+      <arg choice="plain">
+	stderr <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">
+	corr <replaceable>VARIABLE_NAME_1, VARIABLE_NAME_2</replaceable>
+      </arg>
+      <arg choice="plain">
+	<replaceable>PARAMETER_NAME</replaceable>
+	</arg>
+      </group>
+	<arg choice="plain">
+	  <replaceable>, INITIAL_VALUE</replaceable>
+	</arg>
+	<arg choice="opt">
+	  <replaceable>, LOWER_BOUND</replaceable>
+	</arg>
+	<arg choice="opt">
+	  <replaceable>, UPPER_BOUND</replaceable>
+	</arg>
+	<arg choice="plain">;</arg><sbr/>
+	<arg choice='plain'>...</arg><sbr/>
+	  <arg choice="plain">end;</arg>
+    </cmdsynopsis>
+    <para>Syntax II (Bayesian estimation)</para>
+    <cmdsynopsis>
+      <command>estimated_params;</command><sbr/>
+      <group choice="req">
+      <arg choice="plain">
+	stderr <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">
+	corr <replaceable>VARIABLE_NAME_1, VARIABLE_NAME_2</replaceable>
+      </arg>
+      <arg choice="plain">
+	<replaceable>PARAMETER_NAME</replaceable>
+	</arg>
+      </group>
+      <arg choice="plain">
+	<replaceable>, PRIOR_SHAPE</replaceable>
+      </arg>
+      <arg choice="plain">
+	<replaceable>, PRIOR_MEAN</replaceable>
+      </arg>
+      <arg choice="plain">
+	<replaceable>, PRIOR_STANDARD_ERROR</replaceable>
+      </arg>
+      <arg choice="opt">
+	  <replaceable>, PRIOR_3RD_PARAMETER</replaceable>
+      </arg>
+      <arg choice="opt">
+	<replaceable>, PRIOR_4TH_PARAMETER</replaceable>
+      </arg>
+      <arg choice="opt">
+	<replaceable>, SCALE_PARAMETER</replaceable>
+      </arg>
+	<arg choice="plain">;</arg>
+	<sbr/>
+	<arg choice="plain">...</arg><sbr/>
+	<arg choice="plain">end;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+  The <command>estimated_params;....end;</command> block lists all parameters to be estimated and specifies bounds and priors as necessary.
+</para>
+</refsect1>
+
+<refsect1><title>Estimated parameter specification</title>
+<para>
+Each line corresponds to an estimated parameter and follows this syntax:
+<itemizedlist spacing='compact'> 
+  <listitem><para><command>stderr</command> is a keyword indicating that the standard error of the exogenous variable, <replaceable>VARIABLE_NAME</replaceable>, or of the observation error associated with endogenous observed variable, <replaceable>VARIABLE_NAME</replaceable>, is to be estimated</para></listitem>
+  <listitem><para><command>corr</command> is a keyword indicating that the correlation between the exogenous variables, <replaceable>VARIABLE_NAME_1</replaceable> and <replaceable>VARIABLE_NAME_2</replaceable>, or the correlation of the observation errors associated with endogenous observed variables, <replaceable>VARIABLE_NAME_1</replaceable> and <replaceable>VARIABLE_NAME_2</replaceable>, is to be estimated</para></listitem>
+  <listitem><para> <replaceable>PARAMETER_NAME</replaceable> is the name of a model parameter to be estimated</para></listitem>
+<listitem><para> <replaceable>INITIAL_VALUE</replaceable> specifies a starting value for maximum likelihood estimation</para></listitem>
+<listitem><para> <replaceable>LOWER_BOUND</replaceable> specifies a lower bound for the parameter value in maximum likelihood estimation</para></listitem>
+<listitem><para> <replaceable>UPPER_BOUND</replaceable> specifies an upper bound for the parameter value in maximum likelihood estimation</para></listitem>
+  <listitem><para> <replaceable>PRIOR_SHAPE</replaceable> is prior density among <command>beta_pdf</command>, <command>gamma_pdf</command>, <command>normal_pdf</command>, <command>inv_gamma_pdf</command>, <command>inv_gamma1_pdf</command>, <command>inv_gamma2_pdf</command>, <command>uniform_pdf</command></para></listitem>
+  <listitem><para> <replaceable>PRIOR_MEAN</replaceable> is the mean of the prior distribution</para></listitem>
+  <listitem><para> <replaceable>PRIOR_STANDARD_ERROR</replaceable> is the standard error of the prior distribution</para></listitem>
+  <listitem><para> <replaceable>PRIOR_3RD_PARAMETER</replaceable> is a third parameter of the prior used for generalized beta distribution, generalized gamma and for the uniform distribution (default 0)</para></listitem>
+  <listitem><para> <replaceable>PRIOR_4TH_PARAMETER</replaceable> is a fourth parameter of the prior used for generalized beta distribution, generalized gamma and for the uniform distribution (default 1)</para></listitem>
+  <listitem><para> <replaceable>SCALE_PARAMETER</replaceable> is the scale parameter to be used for the jump distribution of the Metropolis-Hasting algorithm</para></listitem>
+</itemizedlist>
+
+<note><para> At minimum, one must specify the name of the parameter and an initial guess. That will trigger unconstrained maximum likelihood estimation.
+</para></note>
+
+<note><para> As one uses options more towards the end of the list, all previous options must be filled: if you want to specify <replaceable>jscale</replaceable>, you must specify <replaceable>prior_p3</replaceable> and <replaceable>prior_p4</replaceable>. Use default values, if these parameters don't apply. 
+</para></note>
+</para>
+</refsect1>
+
+<refsect1><title>Parameter transformation</title>
+<para>
+Sometimes, it is desirable to estimate a transformation of a parameter appearing in the model, rather than the parameter itself. It is of course possible to replace the original parameter by a function of the estimated parameter everywhere is the model, but it is often unpractical.
+</para>
+
+<para>
+In such a case, it is possible to declare the parameter to be estimated in the <xref linkend="parameters"/> statement and to define the transformation at the top of the <xref linkend="model"/> section, as a Matlab expression. The first character of the line must be a pound  sign (#).
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<informalexample>
+    <programlisting>
+      parameters bet;
+
+      model;
+      # sig = 1/bet;
+      c = sig*c(+1)*mpk;
+      end;
+
+      estimated_params;
+      bet,normal_pdf,1,0.05;
+      end;
+    </programlisting>
+  </informalexample>
+</refsect1>
+
+
+
+</refentry>
+
+<refentry id="estimated_params_init">
+  <refmeta>
+    <refentrytitle>estimated_params_init</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>estimated_params_init</refname>
+    <refpurpose>specifies initial values for optimization</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>estimated_params_init;</command><sbr/>
+      <group choice="req">
+      <arg choice="plain">
+	stderr <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">
+	corr <replaceable>VARIABLE_NAME_1, VARIABLE_NAME_2</replaceable>
+      </arg>
+      <arg choice="plain">
+	<replaceable>PARAMETER_NAME</replaceable>
+	</arg>
+      </group>
+	<arg choice="plain">
+	  <replaceable>, INITIAL_VALUE</replaceable>
+	</arg> 
+	<arg choice="plain">;</arg><sbr/>
+	<arg choice='plain'>...</arg><sbr/>
+	  <arg choice="plain">end;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+  The <command>estimated_params_init;....end;</command> block declares numerical initial values for the optimizer when these ones are different from the prior mean
+</para>
+</refsect1>
+
+<refsect1><title>Estimated parameter initial value specification</title>
+<para>
+Each line corresponds to an estimated parameter and follows this syntax:
+<itemizedlist spacing='compact'> 
+  <listitem><para><command>stderr</command> is a keyword indicating that the standard error of the exogenous variable, <replaceable>VARIABLE_NAME</replaceable>, or of the observation error associated with endogenous observed variable, <replaceable>VARIABLE_NAME</replaceable>, is to be estimated</para></listitem>
+  <listitem><para><command>corr</command> is a keyword indicating that the correlation between the exogenous variables, <replaceable>VARIABLE_NAME_1</replaceable> and <replaceable>VARIABLE_NAME_2</replaceable>, or the correlation of the observation errors associated with endogenous observed variables, <replaceable>VARIABLE_NAME_1</replaceable> and <replaceable>VARIABLE_NAME_2</replaceable>, is to be estimated</para></listitem>
+  <listitem><para> <replaceable>PARAMETER_NAME</replaceable> is the name of a model parameter to be estimated</para></listitem>
+<listitem><para> <replaceable>INITIAL_VALUE</replaceable> specifies a starting value for maximum likelihood estimation</para></listitem>
+</itemizedlist>
+</para>
+</refsect1>
+
+</refentry>
+
+<refentry id="estimated_params_bounds">
+  <refmeta>
+    <refentrytitle>estimated_params_bounds</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>estimated_params_bounds</refname>
+    <refpurpose>specifies lower and upper bounds for the estimated parameters</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>estimated_params_bounds;</command><sbr/>
+      <group choice="req">
+      <arg choice="plain">
+	stderr <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">
+	corr <replaceable>VARIABLE_NAME_1, VARIABLE_NAME_2</replaceable>
+      </arg>
+      <arg choice="plain">
+	<replaceable>PARAMETER_NAME</replaceable>
+	</arg>
+      </group>
+	<arg choice="plain">
+	  <replaceable>, LOWER_BOUND</replaceable>
+	</arg>
+	<arg choice="plain">
+	  <replaceable>, UPPER_BOUND</replaceable>
+	</arg>
+	<arg choice="plain">;</arg><sbr/>
+	<arg choice='plain'>...</arg><sbr/>
+	  <arg choice="plain">end;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+  The <command>estimated_params;....end;</command> block lists all parameter to be estimated and specifies bounds and priors when required.
+</para>
+</refsect1>
+
+<refsect1><title>Estimated parameter specification</title>
+<para>
+Each line corresponds to an estimated parameter and follows this syntax:
+<itemizedlist spacing='compact'> 
+  <listitem><para><command>stderr</command> is a keyword indicating that the standard error of the exogenous variable, <replaceable>VARIABLE_NAME</replaceable>, or of the observation error associated with endogenous observed variable, <replaceable>VARIABLE_NAME</replaceable>, is to be estimated</para></listitem>
+  <listitem><para><command>corr</command> is a keyword indicating that the correlation between the exogenous variables, <replaceable>VARIABLE_NAME_1</replaceable> and <replaceable>VARIABLE_NAME_2</replaceable>, or the correlation of the observation errors associated with endogenous observed variables, <replaceable>VARIABLE_NAME_1</replaceable> and <replaceable>VARIABLE_NAME_2</replaceable>, is to be estimated</para></listitem>
+  <listitem><para> <replaceable>PARAMETER_NAME</replaceable> is the name of a model parameter to be estimated</para></listitem>
+<listitem><para> <replaceable>LOWER_BOUND</replaceable> specifies a lower bound for the parameter value in maximum likelihood estimation</para></listitem>
+<listitem><para> <replaceable>UPPER_BOUND</replaceable> specifies an upper bound for the parameter value in maximum likelihood estimation</para></listitem>
+</itemizedlist>
+</para>
+</refsect1>
+</refentry>
+
+<refentry id="estimation">
+ <refmeta>
+    <refentrytitle>estimation</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>estimation</refname>
+    <refpurpose>computes estimation.</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>estimation</command>
+      <arg>(OPTIONS)</arg>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>OPTIONS</title>
+<itemizedlist spacing='compact'>
+<listitem><para> <command>datafile</command> =
+	  <replaceable>FILENAME</replaceable>: the datafile (a .m file or a .mat file)</para></listitem>
+<listitem><para><command>nobs</command> = <replaceable>INTEGER</replaceable>: the number of observations to be used (default: all observations in the file)</para>
+<para><command>nobs</command> = ([<replaceable>INTEGER_1</replaceable>:<replaceable>INTEGER_2</replaceable>]): runs a recursive estimation and forecast for samples of size ranging of <varname>INTEGER_1</varname> to <varname>INTEGER_2</varname>. Option <varname>FORECAST</varname> must also be specified.</para> 
+</listitem>
+<listitem><para> <command>first_obs</command> = <replaceable>INTEGER</replaceable>: the number of the first observation to be used (default = 1)</para></listitem>
+<listitem><para> <command>prefilter</command> = 1: the estimation procedure demeans the data (default=0, no prefiltering)</para></listitem>
+<listitem><para> <command>presample</command> = <replaceable>INTEGER</replaceable>: the number of observations to be skipped before evaluating the likelihood (default = 1)</para></listitem>
+<listitem><para> <command>loglinear</command>: computes a log--linear approximation of the model instead of a linear (default) approximation. The data must correspond to the definition of the variables used in the modelx.</para></listitem>
+<listitem><para> <command>nograph</command>: no graphs should be plotted</para></listitem>
+<listitem><para> <command>lik_init</command>: <replaceable>INTEGER</replaceable>: type of initialization of Kalman filter.
+<itemizedlist spacing='compact'>
+  <listitem><para>1 (default): for stationary models, the initial matrix of variance of the error of forecast is set equal to the unconditional variance of the state variables.</para></listitem>
+  <listitem><para>2: for nonstationary models: a wide prior is used with an initial matrix of variance of the error of forecast diagonal with 10 on the diagonal.</para></listitem>
+</itemizedlist>
+</para></listitem>
+<listitem><anchor id="conf_sig" xreflabel="conf_sig"/><para><command>conf_sig</command> = <replaceable>{INTEGER | DOUBLE}</replaceable>: the level for the confidence intervals reported in the results (default = 0.90)</para></listitem>
+<listitem><anchor id="mh_replic" xreflabel="mh_replic"/><para> <command>mh_replic</command> = <replaceable>INTEGER</replaceable>: number of replication for Metropolis Hasting algorithm. For the time being, mh_replic should be larger than 1200 (default = 20000.)</para></listitem>
+<listitem><para> <command>mh_nblocks</command> = <replaceable>INTEGER</replaceable>: number of paralletl chains for Metropolis Hasting algorithm (default = 2).</para></listitem>
+<listitem><para> <command>mh_drop</command> = <replaceable>DOUBLE</replaceable>: the fraction of initially generated parameter vectors to be dropped before using posterior simulations (default = 0.5)</para></listitem>
+<listitem><para> <command>mh_jscale</command> = <replaceable>DOUBLE</replaceable>: the scale to be used for the jumping distribution in MH algorithm. The default value is rarely satisfactory. This option must be tune to obtain, ideally, an accpetation rate of 25% in the Metropolis-Hastings algorithm (default = 0.2).</para></listitem>
+<listitem><para><command>mh_init_scale</command>=<replaceable>DOUBLE</replaceable>: the scale to be used for drawing the initial value of the Metropolis-Hastings chain (default=2*mh_scale).</para>
+</listitem>
+<listitem><para><command>mode_file</command>=<replaceable>FILENAME</replaceable>: name of the file containing previous value for the mode. When computing the mode, Dynare stores the mode (<varname>xparam1</varname>) and the hessian (<varname>hh</varname>) in a file called <filename><replaceable>MODEL NAME</replaceable>_mode</filename>.</para></listitem>
+<listitem><para><command>mode_compute</command>=<replaceable>INTEGER</replaceable>: specifies the optimizer for the mode computation.
+<itemizedlist spacing='compact'>
+  <listitem><para>0: the mode isn't computed. mode_file must be specified</para></listitem>
+  <listitem><para>1: uses Matlab <command>fmincon</command>.</para></listitem>
+  <listitem><para>2: uses Lester Ingber's Adaptive Simulated Annealing.</para></listitem>
+  <listitem><para>3: uses Matlab <command>fminunc</command>.</para></listitem>
+  <listitem><para>4 (default): uses Chris Sim's <command>csminwel</command>.</para></listitem>
+</itemizedlist></para></listitem>
+<listitem><para><command>mode_check</command>: when <command>mode_check</command> is set, Dynare plots the posterior density for values around the computed mode for each estimated parameter in turn. This is helpful to diagnose problems with the optimizer.</para></listitem>
+<listitem><para><command>prior_trunc</command>=<replaceable>DOUBLE</replaceable>: probability of extreme values of the prior density that is ignored when computing bounds for the parameters (default=1e-32).</para></listitem>
+<listitem><anchor id="load_mh_file" xreflabel="load_mh_file"/><para><command>load_mh_file</command>: when <command>load_mh_file</command> is declared, Dynare adds to previous Metropolis-Hastings simulations instead of starting from scratch.</para></listitem>
+<listitem><para><command>optim</command>=(<replaceable>fmincon options</replaceable>): can be used to set options for fmincon, the optimizing function of Matlab Optimizaiton toolbox. Use Matlab syntax for these options</para>
+<para> (default: ('display','iter','LargeScale','off','MaxFunEvals',100000,'TolFun',1e-8,'TolX',1e-6))</para></listitem>
+<listitem>
+  <para>
+    <command>nodiagnostic</command>: doesn't compute the convergence diagnostics for Metropolis (default: diagnostics are computed and displayed).
+  </para>
+</listitem>
+<listitem><para><anchor id="bayesian_irf" xreflabel="bayesian_irf"/><command>bayesian_irf</command> triggers the computation of the posterior distribution of IRFs. The length of the IRFs are controlled by the <command>irf</command> option</para></listitem>
+<listitem><para><anchor id="moments_varendo" xreflabel="moments_varendo"/><command>moments_varendo</command> triggers the computation of the posterior distribution of the theoretical moments of the endogenous variables</para></listitem>
+<listitem><para><anchor id="filtered_vars" xreflabel="filtered_vars"/><command>filtered_vars</command> triggers the computation of the posterior distribution of filtered endogenous variables and shocks</para></listitem>
+<listitem><anchor id="smoother" xreflabel="smoother"/><para><command>smoother</command> triggers the computation of the posterior distribution of smoothered endogenous variables and shocks</para></listitem>
+<listitem><para><anchor id="forecast_opt" xreflabel="forecast"/><command>forecast = </command><replaceable>INTEGER</replaceable> computes the posterior distribution of a forecast on <replaceable>INTEGER</replaceable> periods after the end of the sample used in estimation</para></listitem>
+<listitem><para><command>tex</command> requests the printing of results and graphs in TeX tables and graphics that can be later directly included in Latex files (not yet implemented)</para></listitem>
+<listitem><para>All options for <xref linkend="stoch_simul"/></para></listitem>
+</itemizedlist>
+
+<note><para> If no <command>mh_jscale</command> parameter is used in estimated_params, the procedure uses <command>mh_jscale</command> for all parameters. If <command>mh_jscale</command> option isn't set, the procedure uses 0.2 for all parameters.
+</para></note>
+</refsect1>
+
+<refsect1><title>Results</title>
+<itemizedlist spacing='compact'>
+<listitem><para> results from posterior optimization (also for maximum likelihood)</para></listitem>
+<listitem><para> marginal log density</para></listitem>
+<listitem><para> mean and shortest confidence interval from posterior simulation</para></listitem>
+<listitem><para>Metropolis-Hastings convergence graphs that still need to be documented</para></listitem>
+<listitem><para> graphs with prior, posterior and mode</para></listitem>
+<listitem><para> graphs of smoothed shocks, smoothed observation errors, smoothed and historical variables</para></listitem>
+</itemizedlist>
+</refsect1>
+
+<refsect1><title>Output</title>
+<para>After running <command>estimation</command>, the parameters and the variance matrix of the shocks are set to the mode for maximum likelihood estimation or posterior mode computation without Metropolis iterations.
+</para>
+<para>After <command>estimation</command> with Metropolis iterations (option <command>mh_replic</command> > 0 or option <command>load_mh_file</command> set) the parameters and the variance matrix of the shocks are set to the posterior mean.</para>
+
+<para>Depending on the options, <command>estimation</command> stores results in the following fields of structure <varname>oo_</varname>:
+<table orient="land"><title>Content of <varname>oo_</varname></title><tgroup cols='2'>
+<thead>
+<row><entry>Field 1</entry><entry>Field 2</entry><entry>Field 3</entry><entry>Field 4</entry><entry>Field 5</entry><entry>Required options</entry></row>
+</thead>
+<tbody>
+<row><entry><varname>Forecast</varname></entry><entry>See <xref linkend="ForecastsMoments"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><xref linkend="forecast_opt"/></entry></row>
+<row><entry morerows='1'><varname>MarginalDensity</varname></entry><entry><varname>LaplaceApproximation</varname></entry><entry/><entry></entry><entry></entry><entry>Always provided</entry></row>
+<row><entry><varname>ModifiedHarmonicMean</varname></entry><entry></entry><entry></entry><entry></entry><entry><para><xref linkend="mh_replic"/>&gt; 0 or <xref linkend="load_mh_file"/></para></entry></row>
+<row><entry><varname>PosteriorFilteredVariables</varname></entry><entry>See <xref linkend="MomentsNames"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><para><xref linkend="filtered_vars"/></para></entry></row>
+<row><entry><varname>PosteriorIRF</varname></entry><entry><varname>Dsge</varname></entry><entry>See <xref linkend="MomentsNames"/></entry><entry><para>IRF name: name of endogenous variable '_' name of shock</para></entry><entry></entry><entry><xref linkend="bayesian_irf"/></entry></row>
+<row><entry><varname>PosteriorSmoothedObservationErrors</varname></entry><entry>See <xref linkend="MomentsNames"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><para><xref linkend="smoother"/></para></entry></row>
+<row><entry><varname>PosteriorSmoothedShocks</varname></entry><entry>See <xref linkend="MomentsNames"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><para><xref linkend="smoother"/></para></entry></row>
+<row><entry><varname>PosteriorSmoothedVariables</varname></entry><entry>See <xref linkend="MomentsNames"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><para><xref linkend="smoother"/></para></entry></row>
+<row><entry><varname>PosteriorTheoreticalMoments</varname></entry><entry>See <xref linkend="TheoreticalMoments"/></entry><entry>See <xref linkend="EstimatedObjects"/></entry><entry>See <xref linkend="MomentsNames"/></entry><entry><replaceable>Variable name</replaceable></entry><entry><xref linkend="moments_varendo"/></entry></row>
+<row><entry><varname>posterior_density</varname></entry><entry><replaceable>Parameter name</replaceable></entry><entry></entry><entry></entry><entry></entry><entry><para><xref linkend="mh_replic"/>&gt; 0 or <xref linkend="load_mh_file"/></para></entry></row>
+<row><entry><varname>posterior_hpdinf</varname></entry><entry>See <xref linkend="EstimatedObjects"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><para><xref linkend="mh_replic"/>&gt; 0 or <xref linkend="load_mh_file"/></para></entry></row>
+<row><entry><varname>posterior_hpdsup</varname></entry><entry>See <xref linkend="EstimatedObjects"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><para><xref linkend="mh_replic"/>&gt; 0 or <xref linkend="load_mh_file"/></para></entry></row>
+<row><entry><varname>posterior_mean</varname></entry><entry>See <xref linkend="EstimatedObjects"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><para><xref linkend="mh_replic"/>&gt; 0 or <xref linkend="load_mh_file"/></para></entry></row>
+<row><entry><varname>posterior_mode</varname></entry><entry>See <xref linkend="EstimatedObjects"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><para><xref linkend="mh_replic"/>&gt; 0 or <xref linkend="load_mh_file"/></para></entry></row>
+<row><entry><varname>posterior_std</varname></entry><entry>See <xref linkend="EstimatedObjects"/></entry><entry><replaceable>Variable name</replaceable></entry><entry></entry><entry></entry><entry><para><xref linkend="mh_replic"/>&gt; 0 or <xref linkend="load_mh_file"/></para></entry></row>
+</tbody>
+</tgroup>
+</table>
+</para>
+
+<para><anchor id="ForecastsMoments" xreflabel="Moments of forecasts"/>
+<table><title>Moments of forecasts</title>
+<tgroup cols='2'>
+<thead>
+<row><entry>Field name</entry><entry>Description</entry></row>
+</thead>
+<tbody>
+<row><entry><varname>HPDinf</varname></entry><entry>Lower bound of a 90% HPD interval<footnote id="see_conf_sig"><para>See option <xref linkend="conf_sig"/> to change the size of the HPD interval</para></footnote> of forecast  due to parameter uncertainty</entry></row> 
+<row><entry><varname>HPDsup</varname></entry><entry>Lower bound of a 90% HPD interval <footnoteref linkend="see_conf_sig"/> due to parameter uncertainty</entry></row> 
+<row><entry><varname>HPDTotalinf</varname></entry><entry>Lower bound of a 90% HPD interval of forecast <footnoteref linkend="see_conf_sig"/> due to parameter uncertainty and future shocks</entry></row> 
+<row><entry><varname>HPDTotalsup</varname></entry><entry>Lower bound of a 90% HPD interval <footnoteref linkend="see_conf_sig"/> due to parameter uncertainty and future shocks</entry></row>
+<row><entry><varname>Mean</varname></entry><entry>Mean of the posterior distribution of forecasts</entry></row> 
+<row><entry><varname>Median</varname></entry><entry>Median of the posterior distribution of forecasts</entry></row>  
+<row><entry><varname>Std</varname></entry> <entry>Standard deviation of the posterior distribution of forecasts</entry></row> 
+</tbody>
+</tgroup>
+</table>
+</para>
+<para><anchor id="MomentsNames" xreflabel="Moments Names"/>
+<table><title>Moments Names</title>
+<tgroup cols='2'>
+<thead>
+<row><entry>Field name</entry><entry>Description</entry></row>
+</thead>
+<tbody>
+<row><entry><varname>HPDinf</varname></entry><entry>Lower bound of a 90% HPD interval<footnote id="see_conf_sig1"><para>See option <xref linkend="conf_sig"/> to change the size of the HPD interval</para></footnote></entry></row> 
+<row><entry><varname>HPDsup</varname></entry><entry>Upper bound of a 90% HPD interval <footnoteref linkend="see_conf_sig1"/> </entry></row> 
+<row><entry><varname>Mean</varname></entry><entry>Mean of the posterior distribution</entry></row> 
+<row><entry><varname>Median</varname></entry><entry>Median of the posterior distribution</entry></row>  
+<row><entry><varname>Std</varname></entry> <entry>Standard deviation of the posterior distribution</entry></row> 
+</tbody>
+</tgroup>
+</table>
+</para>
+<para><anchor id="TheoreticalMoments" xreflabel="Theoretical Moments"/>
+<table><title>Theoretical Moments</title>
+<tgroup cols='2'>
+<thead>
+<row><entry>Field name</entry><entry>Description</entry></row>
+</thead>
+<tbody>
+<row><entry><varname>Autocorrelation</varname></entry><entry>Autocorrelation of endogenous variables<footnote><para>The autocorrlation coefficients are computed for the number of periods specified in option <xref linkend="ar"/>.</para></footnote></entry></row>
+<row><entry><varname>Correlation</varname></entry><entry>Correlation between two endogenous variables</entry></row>
+<row><entry><varname>Decomp</varname></entry><entry>Decomposition of variance<footnote><para>When the shocks are correlated, it is the decomposition of orthogonalized shocks via Cholesky decompostion according to the order of declaration of shocks (see <xref linkend="varexo"/>).</para></footnote> </entry></row>
+<row><entry><varname>Expectation</varname></entry><entry>Expectation of endogenous variables</entry></row>
+<row><entry><varname>Variance</varname></entry><entry>(co-)variance of endogenous variables</entry></row>
+</tbody>
+</tgroup>
+</table>
+</para>
+
+<para><anchor id="EstimatedObjects" xreflabel="Estimated Objects"/>
+<table><title>Estimated objects</title>
+<tgroup cols='2'>
+<thead>
+<row><entry>Field name</entry><entry>Description</entry></row>
+</thead>
+<tbody>
+<row><entry><varname>measurement_errors_corr</varname></entry><entry>Correlation between two measurement errors</entry></row>
+<row><entry><varname>measurement_errors_std</varname></entry><entry>Standard deviation of measurement errors</entry></row>
+<row><entry><varname>parameters</varname></entry><entry>Parameters</entry></row>
+<row><entry><varname>shocks_corr</varname></entry><entry>Correlation between two structural shocks</entry></row>
+<row><entry><varname>shocks_std</varname></entry><entry>Standard deviation of structural shocks</entry></row>
+</tbody>
+</tgroup>
+</table>
+</para>
+
+<refsect2><title>Examples</title>
+<para>
+<informalexample>
+<programlisting>
+oo_.posterior_mode.parameters.alp
+oo_.posterior_mean.shocks_std.ex
+oo_.posterior_hpdsup.measurement_errors_corr.gdp_conso
+</programlisting>
+</informalexample>
+</para>
+</refsect2>
+
+</refsect1>
+
+<refsect1><title>Note on steady state computation</title>
+<para>If you know how to compute the steady state for your model, you can provide a Matlab function doing the computation instead of using <command>steady</command>. The function should be called with the name of the <filename>.mod</filename> file followed by <filename>_steadystate</filename>. See <filename>fs2000a_steadystate.m</filename> in <filename>examples/fs2000</filename> directory.
+</para>
+</refsect1>
+</refentry>
+
+<refentry id="unit_root_vars">
+  <refmeta>
+    <refentrytitle>unit_root_vars</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>unit_root_vars</refname>
+    <refpurpose>declares unit-root variables for estimation</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>unit_root_vars</command>
+      <arg choice="plain">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg rep="repeat">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+<command>unit_root_vars</command> is used to declare unit-root variables of a model so that a diffuse prior can be used in the initialization of the Kalman filter for these variables only. For stationary variables, the unconditional covariance matrix of these variables is used for initialization. The algorithm to compute a true diffuse prior is taken from Durbin and Koopman (2001, 2003).
+</para>
+
+<para>When <command>unit_root_vars</command> is used the <command>lik_init</command> option of <xref linkend="estimation"/> has no effect.
+</para>
+
+<para>When there are nonstationary variables in a model, there is no unique deterministic steady state. The user must supply a Matlab function that computes the steady state values of the stationary variables in the model and returns dummy values for the nonstationary ones. The function should be called with the name of the <filename>.mod</filename> file followed by <filename>_steadystate</filename>. See <filename>fs2000a_steadystate.m</filename> in <filename>examples/fs2000</filename> directory.
+</para>
+
+<para>Note that the nonstationary variables in the model must be integrated processes(their first difference or k-difference must be stationary).</para>
+</refsect1>
+</refentry>
+</sect1>
+
+<sect1><title>Optimal policy</title>
+<para>Dynare has tools to compute optimal policies for quadratic objectives. You can either solve for optimal policy under commitment with <xref linkend='olr'/> or for optimal simple rule with <xref linkend='osr'/>.
+</para>
+
+<itemizedlist>
+<listitem><para><xref linkend='olr'/></para></listitem>
+<listitem><para><xref linkend='olr_inst'/></para></listitem>
+<listitem><para><xref linkend='optim_weights'/></para></listitem>
+<listitem><para><xref linkend='osr'/></para></listitem>
+<listitem><para><xref linkend='osr_params'/></para></listitem>
+</itemizedlist>
+
+<refentry id="olr">
+  <refmeta>
+    <refentrytitle>olr</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>olr</refname>
+    <refpurpose>computes optimal policy under commitment</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>olr</command>
+      <arg>(<arg rep="repeat" choice="plain"><replaceable>OPTION</replaceable>,</arg>)</arg>
+      <arg choice="plain"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg rep="repeat"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>OPTIONS</title>
+<itemizedlist spacing='compact'>
+<listitem><para><command>olr_beta=VALUE</command> sets the value of the discount factor for the intertemporal optimization problem</para></listitem>
+<listitem><para>All options for <xref linkend="stoch_simul"/></para></listitem>
+</itemizedlist>
+</refsect1>
+
+<refsect1><title>Description</title>
+<para>
+<command>olr</command> computes optimal policies under commitment (Ramsey plans) for linear--quadratic problems of the form
+</para>
+<blockquote><para>
+max<subscript>u</subscript> E<subscript>0</subscript>&Sigma;<subscript>t=0</subscript><superscript>&infin;</superscript>&beta;<superscript>t</superscript>(y<subscript>t</subscript>&prime;W<subscript>11</subscript>y<subscript>t</subscript>+2y<subscript>t</subscript>&prime;W<subscript>12</subscript>u<subscript>t</subscript>+u<subscript>t</subscript>&prime;W<subscript>22</subscript>u<subscript>t</subscript>)
+</para>
+<para>s.t.</para>
+<para>
+  A<subscript>1</subscript>E<subscript>t</subscript>(y<subscript>t+1</subscript>)+A<subscript>2</subscript>y<subscript>t</subscript>+A<subscript>3</subscript>y<subscript>t-1</subscript>+Bu<subscript>t</subscript>+Ce<subscript>t</subscript>=0
+</para>
+</blockquote>
+<para>with</para>
+<itemizedlist>
+<listitem><para>y: endogenous variables</para></listitem>
+<listitem><para>u: policiy instrument</para></listitem>
+<listitem><para>e: exogenous stochastic shocks</para></listitem>
+<listitem><para>&beta;: discount factor</para></listitem>
+</itemizedlist>
+<para>The policy instruments must be listed with <xref linkend='olr_inst'/>.
+</para>
+<para>The quadratic objectives must be listed with <xref linkend='optim_weights'/>.
+</para>
+<para>Multipliers are automatically added to the model. Note, however, that the representation isn't minimal and that, in the solution, some multipliers could be sustituted off.
+</para>
+<para>
+Forward-looking endogenous variables don't need to be present in the dynamics of the economy.
+</para>
+<para>
+Dynare automatically builds the corresponding linear rational expectation model and solves it as with <xref linkend='stoch_simul'/>.
+</para>
+</refsect1>
+</refentry>
+
+<refentry id="olr_inst">
+  <refmeta>
+    <refentrytitle>olr_inst</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>olr_inst</refname>
+    <refpurpose>declares instruments for optimal policy under commitment</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>olr_inst</command>
+      <arg choice="plain"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg rep="repeat"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+
+<refsect1><title>Description</title>
+<para>
+<command>olr_inst</command> declares instruments for optimal policy computed by <xref linkend='olr'/>.
+</para>
+</refsect1>
+</refentry>
+
+<refentry id="optim_weights">
+  <refmeta>
+    <refentrytitle>optim_weights</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>optim_weights</refname>
+    <refpurpose>specifies quadratic objectives for optimal policy problems</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>optim_weights;</command><sbr/>
+	<group choice="plain">
+	  <arg choice="plain">
+	    <synopfragmentref linkend="var_st1">VARIANCE STATEMENT</synopfragmentref>
+	  </arg>
+	  <arg choice="plain">
+	    <synopfragmentref linkend="covar_st1">COVARIANCE STATEMENT</synopfragmentref>
+	  </arg>
+	  <arg choice="plain">
+	    <synopfragmentref linkend="stderr_st1">STANDARD ERROR STATEMENT</synopfragmentref>
+	  </arg>
+	</group>
+      <arg choice ="plain">end;</arg>
+      <synopfragment id="var_st1">
+	<arg choice="plain">
+	  var <replaceable>VARIABLE_NAME</replaceable> = <replaceable>EXPRESSION</replaceable>;
+	</arg>
+      </synopfragment>
+      <synopfragment id="covar_st1">
+	<arg choice="plain">
+	  var <replaceable>VARIABLE_NAME</replaceable> , <replaceable>VARIABLE_NAME</replaceable> = <replaceable>EXPRESSION</replaceable>;
+	</arg>
+      </synopfragment>
+      <synopfragment id="stderr_st1">
+	<arg choice="plain">
+	  var <replaceable>VARIABLE_NAME</replaceable>; stderr <replaceable>EXPRESSION</replaceable>;
+	</arg>
+      </synopfragment>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+<refsect1><title>Description</title>
+<para>
+<command>optim_weights</command> secifies the nonzero elements of the quadratic weight matrices for the objectives in <xref linkend='olr'/> and <xref linkend='osr'/>
+</para>
+</refsect1>
+</refentry>
+
+<refentry id="osr">
+  <refmeta>
+    <refentrytitle>osr</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>osr</refname>
+    <refpurpose>computes optimal simple policy rules</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>osr</command>
+      <arg>(<arg rep="repeat" choice="plain"><replaceable>OPTION</replaceable>,</arg>)</arg>
+      <arg choice="plain"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg rep="repeat"><replaceable>VARIABLE_NAME</replaceable></arg>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>OPTIONS</title>
+<itemizedlist spacing='compact'>
+<listitem><para>All options for <xref linkend="stoch_simul"/></para></listitem>
+</itemizedlist>
+</refsect1>
+
+<refsect1><title>Description</title>
+<para>
+<command>osr</command> computes optimal simple policy rules for linear--quadratic problems of the form
+</para>
+<blockquote><para>
+max<subscript>&gamma;</subscript> E(y<subscript>t</subscript>&prime;Wy<subscript>t</subscript>)
+</para>
+<para>s.t.</para>
+<para>
+  A<subscript>1</subscript>E<subscript>t</subscript>(y<subscript>t+1</subscript>)+A<subscript>2</subscript>y<subscript>t</subscript>+A<subscript>3</subscript>y<subscript>t-1</subscript>+Ce<subscript>t</subscript>=0
+</para>
+</blockquote>
+<para>with</para>
+<itemizedlist>
+<listitem><para>&gamma;: parameters to be optimized. They must be elements of matrices A<subscript>1</subscript>, A<subscript>2</subscript>, A<subscript>3</subscript>.</para></listitem>
+<listitem><para>y: endogenous variables</para></listitem>
+<listitem><para>e: exogenous stochastic shocks</para></listitem>
+</itemizedlist>
+<para>The parameters to be optimized must be listed with <xref linkend='osr_params'/>.
+</para>
+<para>The quadratic objectives must be listed with <xref linkend='optim_weights'/>.
+</para>
+<para>
+This problem is solved using a numerical optimizer.
+</para>
+</refsect1>
+</refentry>
+
+<refentry id="osr_params">
+  <refmeta>
+    <refentrytitle>osr_params</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>osr_params</refname>
+    <refpurpose>declares the parameters to be optimized for optimal simple rules</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>osr_params</command>
+      <arg choice="plain"><replaceable>PARAMETER_NAME</replaceable></arg>
+      <arg rep="repeat"><replaceable>PARAMETER_NAME</replaceable></arg>
+      <arg choice='plain'>;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+
+<refsect1><title>Description</title>
+<para>
+<command>osr_params</command> declares parameters to be optimized  by <xref linkend='osr'/>.
+</para>
+</refsect1>
+</refentry>
+
+
+</sect1>
+<sect1><title>Displaying and saving results</title>
+<para>
+Dynare has comments to plot the results of a simulation and to save the results.
+</para>
+<itemizedlist>
+<listitem><para><xref linkend='rplot'/></para></listitem>
+<listitem><para><xref linkend='dynatype'/></para></listitem>
+<listitem><para><xref linkend='dynasave'/></para></listitem>
+</itemizedlist>
+
+<refentry id="rplot">
+  <refmeta>
+    <refentrytitle>rplot</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>rplot</refname>
+    <refpurpose>plot variables</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>rplot</command>
+      <arg choice="plain">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg rep="repeat">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+<refsect1><title>Description</title>
+<para>
+Plots one or several variables
+</para>
+</refsect1>
+</refentry>
+
+<refentry id="dynatype">
+  <refmeta>
+    <refentrytitle>dynatype</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>dynatype</refname>
+    <refpurpose>print simulated variables</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>dynatype</command>
+      <arg>
+      (<replaceable>FILENAME</replaceable>)
+      </arg>
+      <arg choice="plain">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg rep="repeat">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+<command>dynatype</command> prints the listed variables in a text file named <replaceable>FILENAME</replaceable>. If no <replaceable>VARIABLE_NAME</replaceable> are listed, all endogenous variables are printed.
+</para>
+</refsect1>
+
+</refentry>
+
+<refentry id="dynasave">
+  <refmeta>
+    <refentrytitle>dynasave</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>dynasave</refname>
+    <refpurpose>save simulated variables in a binary file</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>dynasave</command>
+      <arg>
+      (<replaceable>FILENAME</replaceable>)
+      </arg>
+      <arg choice="plain">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg rep="repeat">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+<command>dynasave</command> saves the listed variables in a binary file named <replaceable>FILENAME</replaceable>. If no <replaceable>VARIABLE_NAME</replaceable> are listed, all endogenous variables are saved.
+</para>
+<para>
+In Matlab, variables saved with the <command>dynasave</command> command can be retrieved by the Matlab command <command>load -mat <replaceable>FILENAME</replaceable></command>.
+</para>
+</refsect1>
+</refentry>
+</sect1>
+
+<sect1><title>Conditional compilation</title>
+<para>
+Dynare has the following commands to choose which part of the *.mod file is executed. This is useful to maintain several versions of a model in the same *.mod file.
+</para>
+<itemizedlist>
+<listitem><para><xref linkend='define'/></para></listitem>
+<listitem><para><xref linkend='if_elseif_else_end'/></para></listitem>
+</itemizedlist>
+
+<refentry id="define">
+  <refmeta>
+    <refentrytitle>@define</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>@define</refname>
+    <refpurpose>defines a macro</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>@define</command>
+      <arg choice="plain">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">
+      <replaceable>INTEGER</replaceable>
+      </arg>
+      <arg choice="plain">;</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+<refsect1><title>Description</title>
+<para>
+<command>@define</command> defines a macro with name <replaceable>VARIABLE_NAME</replaceable> and value <replaceable>INTEGER</replaceable>. This macro can be used later in the *.mod file only in <command>@if</command> or <command>@elseif</command> statements. The macros can't be used to replace arbitrary part of codes like in C, for example.
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<para>
+<informalexample>
+<programlisting>
+  @define version 1;
+</programlisting>
+</informalexample>
+</para>
+</refsect1>
+
+</refentry>
+
+<refentry id="if_elseif_else_end">
+  <refmeta>
+    <refentrytitle>@if ... @elseif ... @else ... @end</refentrytitle>
+  </refmeta>
+
+  <refnamediv>
+    <refname>@if ... @elseif ... @else ... @end</refname>
+    <refpurpose>defines conditional compilation of the *.mod file</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>@if</command>
+      <arg choice="plain">
+      <replaceable>VARIABLE_NAME</replaceable>
+      </arg>
+      <arg choice="plain">
+      <replaceable>LOGICAL_OPERATOR</replaceable>
+      </arg>
+      <arg choice="plain">
+      <replaceable>INTEGER</replaceable>
+      </arg>
+      <arg choice="plain">;</arg><sbr/>
+      <arg choice="plain">...</arg><sbr/>
+        
+    </cmdsynopsis>
+  </refsynopsisdiv>
+<refsect1><title>Description</title>
+<para><replaceable>LOGICAL_OPERATOR</replaceable> are
+<itemizedlist>
+<listitem><para>== equal</para></listitem>
+<listitem><para>!= not equal</para></listitem>
+<listitem><para>&lt; lesser than</para></listitem>
+<listitem><para>&gt; greater than</para></listitem>
+<listitem><para>&lt;= lesser or equal than</para></listitem>
+<listitem><para>&gt;= greater or equal than</para></listitem>
+</itemizedlist>
+</para>
+
+<para>
+These commands let the user define which part of the *.mod file should be handled by Dynare
+</para>
+</refsect1>
+
+<refsect1><title>Example</title>
+<para>
+<informalexample>
+<programlisting>
+  @define version 1;
+  parameters alph bet;
+  alph = 0.3;
+  @if version == 1;
+    bet = 0.9;
+  @elseif version == 2;
+    bet = 0.95;
+  @else;
+    bet = 0.98;
+  @end;
+</programlisting>
+</informalexample>
+</para>
+</refsect1>
+
+</refentry>
+
+</sect1>
+</chapter>
+
+<chapter><title>Examples</title>
+<para>
+Fabrice Collard (GREMAQ, University of Toulouse) has written a guide to stochastic simulations with Dynare entitled "Dynare in Practice" which is in <filename>guide.pdf</filename>.
+</para>
+</chapter>
+
+<bibliography>
+<biblioentry>
+  <biblioset relation="article">
+    <author>
+      <surname> Boucekkine</surname>
+      <firstname> Raouf</firstname>
+    </author>
+    <pubdate>1995</pubdate>
+    <title>An alternative methodology for solving nonlinear forward-looking models</title>
+  </biblioset>
+  <biblioset relation="journal">
+    <title>Journal of Economic Dynamics and Control</title>
+    <volumenum>19</volumenum>
+    <pagenums>711-734</pagenums>
+  </biblioset>
+</biblioentry>
+<biblioentry>
+  <biblioset relation="article">
+    <authorgroup>
+      <author>
+	<surname>Collard</surname>
+	<firstname>Fabrice</firstname>
+      </author>
+      <author>
+	<surname>Juillard</surname>
+	<firstname>Michel</firstname>
+      </author>
+    </authorgroup>
+    <pubdate>2001</pubdate>
+    <title>Accuracy of stochastic perturbation methods: The case of asset pricing models</title>
+  </biblioset>
+  <biblioset relation="journal">
+    <title>Journal of Economic Dynamics and Control</title>
+    <volumenum>25</volumenum>
+    <pagenums>979-999</pagenums>
+  </biblioset>
+</biblioentry>
+
+<biblioentry> 
+  <biblioset relation="article">
+    <authorgroup>
+      <author>
+	<surname>Collard</surname>
+	<firstname>Fabrice</firstname>
+      </author>
+      <author>
+	<surname>Juillard</surname>
+	<firstname>Michel</firstname>
+      </author>
+    </authorgroup>
+    <pubdate>2001</pubdate>
+    <title>A Higher-Order Taylor Expansion Approach to Simulation of Stochastic Forward-Looking Models with an Application to a Non-Linear Phillips Curve</title>
+  </biblioset>
+  <biblioset relation="journal">
+    <title>Computational Economics</title>
+    <volumenum>17</volumenum>
+    <pagenums>125-139</pagenums>
+  </biblioset>
+</biblioentry>
+
+<biblioentry>
+  <biblioset relation="book">
+    <authorgroup>
+      <author>
+	<surname>Durbin</surname>
+	<firstname>J.</firstname>
+      </author>
+      <author>
+	<surname>Koopman</surname>
+	<firstname>S.J.</firstname>
+      </author>
+    </authorgroup>
+    <pubdate>2001</pubdate>
+    <title>Time Series Analysis by State Space Methods</title>
+    <publishername>Oxford University Press</publishername>
+  </biblioset>
+</biblioentry>
+
+<biblioentry>
+  <biblioset relation="article">
+    <authorgroup>
+      <author>
+	<surname>Fair</surname>
+	<firstname>Ray</firstname>
+      </author>
+      <author>
+	<surname>Taylor</surname>
+	<firstname>John</firstname>
+      </author>
+    </authorgroup>
+    <pubdate>1983</pubdate>
+    <title>Solution and Maximum Likelihood Estimation of Dynamic Nonlinear Rational Expectation Models</title>
+  </biblioset>
+  <biblioset relation="journal">
+    <title>Econometrica</title>
+    <volumenum>51</volumenum>
+    <pagenums>1169-1185</pagenums>
+  </biblioset>
+</biblioentry>
+
+<biblioentry>
+  <biblioset relation="article">
+    <authorgroup>
+      <author>
+	<surname>Fernandez-Villaverde</surname>
+	<firstname>Jesus</firstname>
+      </author>
+      <author>
+	<surname>Rubio-Ramirez</surname>
+	<firstname>Juan</firstname>
+      </author>
+    </authorgroup>
+    <pubdate>2004</pubdate>
+    <title>Comparing Dynamic Equilibrium Economies to Data: A Bayesian Approach</title>
+  </biblioset>
+  <biblioset relation="journal">
+  <title>Journal of Econometrics</title>
+  <volumenum>123</volumenum>
+    <pagenums>153-187</pagenums>
+  </biblioset>
+</biblioentry>
+
+<biblioentry>   
+  <biblioset relation="article">
+    <author>
+      <surname>Ireland</surname>
+      <firstname>Peter</firstname>
+    </author>
+    <pubdate>2004</pubdate>
+    <title>A Method for Taking Models to the Data</title>
+  </biblioset>
+  <biblioset relation="journal">
+    <title>Journal of Economic Dynamics and Control</title>
+    <volumenum>28</volumenum>
+    <pagenums>1205-26</pagenums>
+  </biblioset>
+</biblioentry>
+
+<biblioentry>  
+  <biblioset relation="article">
+    <author>
+      <surname>Judd</surname>
+      <firstname>Kenneth</firstname>
+    </author>
+    <pubdate>1996</pubdate>    
+    <title>Approximation, Perturbation, and Projection Methods in Economic Analysis</title>
+  </biblioset>
+  <biblioset relation="book">
+    <authorgroup>
+      <author>
+	<surname>Amman</surname>
+	<firstname>Hans</firstname>
+      </author>
+      <author>
+	<surname>Kendrick</surname>
+	<firstname>David</firstname>
+      </author>
+      <author>
+	<surname>Rust</surname>
+	<firstname>John</firstname>
+      </author>
+    </authorgroup>
+    <title>Handbook of Computational Economics</title>
+    <pubdate>1996</pubdate>
+    <publishername>North Holland Press</publishername>
+    <pagenums>511-585</pagenums>
+  </biblioset>
+</biblioentry>
+
+<biblioentry> 
+      <author>
+	<surname>Juillard</surname>
+	<firstname>Michel</firstname>
+      </author>
+      <pubdate>1996</pubdate>
+      <title>Dynare: A program for the resolution and simulation of dynamic models with forward variables through the use of a relaxation algorithm</title>
+      <orgname>CEPREMAP</orgname>
+      <citetitle>Couverture Orange</citetitle>
+      <volumenum>9602</volumenum>
+</biblioentry>
+
+<biblioentry>
+  <biblioset relation="article">
+    <authorgroup>
+      <author>
+	<surname>Koopman</surname>
+	<firstname>S.J.</firstname>
+      </author>
+      <author>
+	<surname>Durbin</surname>
+	<firstname>J.</firstname>
+      </author>
+    </authorgroup>
+    <pubdate>2003</pubdate>
+    <title>Filtering and Smoothing of State Vector for Diffuse State Space Models</title>
+  </biblioset>
+  <biblioset relation="journal">
+    <title>Journal of Time Series Analysis</title>
+    <volumenum>24</volumenum>
+    <pagenums>85-98</pagenums>
+  </biblioset>
+</biblioentry>
+
+<biblioentry>   
+  <biblioset relation="article">
+    <author>
+      <surname>Laffargue</surname>
+      <firstname>Jean-Pierre</firstname>
+    </author>
+    <title>Résolution d'un modèle macroéconomique avec anticipations rationnelles</title>
+    <pubdate>1990</pubdate>
+  </biblioset>
+  <biblioset relation="journal">
+    <title>Annales d'Economie et Statistique</title>
+    <volumenum>17</volumenum>
+    <pagenums>97-119</pagenums>
+  </biblioset>
+</biblioentry>
+<biblioentry> 
+  <authorgroup>
+  <author>
+    <surname>Lubik</surname>
+    <firstname>Thomas</firstname>
+  </author>
+  <author>
+    <surname>Schorfheide</surname>
+    <firstname>Frank</firstname>
+  </author>
+  </authorgroup>
+  <pubdate>2003</pubdate>
+  <title>Do Central Banks Target Exchange Rates? A Structural Investigation</title>
+  <orgname>University of Pennsylvania</orgname>
+</biblioentry>
+<biblioentry> 
+  <authorgroup>
+    <author>
+      <surname>Rabanal</surname>
+      <firstname>Pau</firstname>
+    </author>
+    <author>
+      <surname>Rubio-Ramirez</surname>
+      <firstname>Juan</firstname>
+    </author>
+  </authorgroup>
+  <pubdate>2003</pubdate>
+  <title>Comparing New Keynesian Models of the Business Cycle: A Bayesian Approach</title>
+  <orgname>Atlanta Fed</orgname>
+<citetitle>Working Paper</citetitle>
+<volumenum>2001-22a, rev 2003</volumenum>
+</biblioentry>
+
+<biblioentry> 
+  <biblioset relation="article">
+    <author>
+      <surname>Schorfheide</surname>
+      <firstname>Frank</firstname>
+    </author>
+  <pubdate>2000</pubdate>
+  <title>Loss Function-based evaluation of DSGE models</title>
+  </biblioset>
+  <biblioset relation="journal">
+    <title>Journal of Applied Econometrics</title>
+    <volumenum>15</volumenum>
+    <pagenums>645-70</pagenums>
+  </biblioset>
+</biblioentry>
+
+<biblioentry> 
+  <authorgroup>
+    <author>
+      <surname>Schmitt-Grohe</surname>
+      <firstname>Stephanie</firstname>
+    </author>
+    <author>
+      <surname>Uribe</surname>
+      <firstname>Martin</firstname>
+    </author>
+  </authorgroup>
+  <pubdate>2002</pubdate>
+  <title>Solving Dynamic General Equilibrium Models Using a Second-Order Approximation to the Policy Function</title>
+  <orgname>Rutgers University</orgname>
+</biblioentry>
+
+<biblioentry> 
+  <authorgroup>
+    <author>
+      <surname>Smets</surname>
+      <firstname>Frank</firstname>
+    </author>
+    <author>
+      <surname>Wouters</surname>
+      <firstname>Rafael</firstname>
+    </author>
+  </authorgroup>
+  <pubdate>2002</pubdate>
+  <title>An Estimated Stochastic Dynamic General
+Equilibrium Model of the Euro Area</title>
+  <orgname>European Central Bank</orgname>
+      <citetitle>ECB Working Paper</citetitle>
+      <volumenum>171</volumenum>
+</biblioentry>
+</bibliography>
+<index>
+</index>
+</book>
+
diff --git a/tags/v_3.062/doc/unit_roots.tex b/tags/v_3.062/doc/unit_roots.tex
new file mode 100644
index 0000000000..b6f42ac685
--- /dev/null
+++ b/tags/v_3.062/doc/unit_roots.tex
@@ -0,0 +1,89 @@
+\documentclass{article}
+\usepackage{times}
+\begin{document}
+\title{Notes on estimating models with unit-roots}
+\author{Michel Juillard}
+\maketitle
+
+It is now possible to estimate with DYNARE models with unit-roots. These models must satisfy the following restriction: the dynamics of stochastic trends must be (log)--linear and the dynamics of the stationary part around the stochastic trends may be non-linear. 
+
+\section{Steady state}
+
+For stationay models, DYNARE linearizes around the steady state, using the internal function dynare\_solve.m. When the dynamics of the stochastic trends doesn't contain a deterministic trend (when it is a pure random walk without displacement), there is an infinity of value of $\bar y$ satisfying $f(\bar y)=0$ and it is possible to specify one of them in INITVAL.
+
+When the stochastic trends contain a deterministic trend, there is no solution to the equation $f(\bar y)=0$. It is then necessary to provide DYNARE with a hand written function called \emph{fname\_steadystate.m} that returns the steady state values of the stationary variables and 0 for nonstationary variables when the model is linearized or 1 for nonstationary variables when the model is log--linearized. The variables must be ordered in alphabetical order. See /examples/fs2000a\_steadystate.m for an example. This procedure is cumbersome and we will be trying to automatize it in the future.
+
+\section{Estimation}
+
+For initializing the Kalman filter and for computing the smoother, DYNARE uses now the algorithm described in chapter 5 of J. Durbin and S.J. Koopman (2001) and in S.J. Koopman and J. Durbin (2003). Following the advice of these authors, we prefer it to the augmented filter advocated by De Jong. Note that the results are identical.
+
+In DYNARE, it is necessary to declare the stochastic trends thru the following statement:
+\begin{quote}
+  options\_.unit\_root\_vars = {'P\_obs'; 'Y\_obs'};
+\end{quote}
+This syntax is temporary and will be made more DYNARE-like.
+
+It is also necessary to set the option lik\_init=2 in the estimation statement.
+In the future, this should be triggered automatically from the declaration of a stochastic trend.
+
+It is also necessary to declare the deterministic components of the stochastic trends with the OBSERVATION\_TREND instruction (see /examples/fs2000/fs2000a.mod)
+
+The new functions are
+\begin{itemize}
+\item DgesLikelihood.m: replaces mj\_optmumlik for filtering
+\item DiffuseLikelihood1.m
+\item DiffuseLikelihood2.m
+\item DiffuseLikelihoodH1.m
+\item DiffuseLikelihoodH2.m
+\item DiffuseLikelihoodH3.m
+\item DgseSmoother.m: replaces mj\_optmumlik for smoothing
+\item DiffuseKalmanSmoother.m
+\item DiffuseKalmanSmootherH.m
+\end{itemize}
+They still need thorough testing.
+
+\section{Examples}
+
+DYNARE is now able to estimate purely backward models, in addition to forward--looking models. The first two examples are such to isolate the problematic of estimating nonstationary models from the difficulties of estimating forward--looking rational expectation models.
+
+\subsection{Two unrelated random walks}
+Artificial data (10000 observations) are generated by /examples/arima/mod1.mod for
+\begin{eqnarray*}
+  dx_t = 0.5dx_{t-1}+{e_x}_t\\
+  dy_t = -0.3dy_{t-1}+{e_y}_t\\
+  x_t = x_{t-1}+dx_t\\
+  y_t = y_{t-1}+dy_t
+\end{eqnarray*}
+
+mod1a.mod estimates this model when $dx_t$ and $dy_t$ are observed, and
+mod1b.mod when the level of the data, $x_t$ and $y_t$, are observed. As expected, the results are the same.
+
+\subsection{A cointegrated system} 
+
+Artificial data (10000 observations) are generated by /examples/arima/mod2.mod for
+\begin{eqnarray*}
+  dx_t = 0.5dx_{t-1}-0.1(x_{t-1}-y_{t-1})+{e_x}_t\\
+  dy_t = -0.3dy_{t-1}+0.2(x_{t-1}-y_{t-1})+{e_y}_t\\
+  x_t = x_{t-1}+dx_t\\
+  y_t = y_{t-1}+dy_t
+\end{eqnarray*}
+
+mod2a.mod estimates this model when $dx_t$ and $dy_t$ are observed, and $x$ and $y$ are treated as unobservable variables. The estimation procedure fails as the data is first difference don't contain any information about the initial level of $x$ and $y$.
+
+mod2c.mod again estimates this model when $dx_t$ and $dy_t$ are observed, but the model is reparametrized so as to have the cointegration error as stationary unobservable variable.
+
+mod2b.mod estimates the model with data in level: $x_t$ and $y_t$, are observed.In this case, and on moderate samples (100 observations), data in level provide additional information on the cointegrating relationship. 
+
+\subsection{Schorfheide, 2000}
+
+fs2000.mod estimates the CIA model of Schorfheide (2000) with observation of the rate of growth of prices and output. fs2000a.mod estimates with data in level. The posterior mode of parameters is somewhat different.
+
+
+\section*{References}
+\begin{description}
+\item J. Durbin and S.J. Koopman (2001) \emph{Time Series Analysis by State Space Methods}. Oxford: Oxford University Press.
+\item S.J. Koopman and J. Durbin (2003) ``Filtering and Smoothing of State Vector for Diffuse State Space Models'' in \emph{Journal of Time Series Analysis}, \emph{24}, pp. 85-98.  
+\end{description}
+
+ 
+\end{document}
diff --git a/tags/v_3.062/examples/arima/mod1.mod b/tags/v_3.062/examples/arima/mod1.mod
new file mode 100644
index 0000000000..7a8dabf2b5
--- /dev/null
+++ b/tags/v_3.062/examples/arima/mod1.mod
@@ -0,0 +1,23 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y;
+
+rho_x = 0.5;
+rho_y = -0.3;
+
+model;
+dx = rho_x*dx(-1)+e_x;
+dy = rho_y*dy(-1)+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+shocks;
+var e_x; stderr 0.01;
+var e_y; stderr 0.01;
+end;
+
+stoch_simul(order=1,periods=1000,irf=0,nomoments);
+
+save data1 dx dy x y;
\ No newline at end of file
diff --git a/tags/v_3.062/examples/arima/mod1a.mod b/tags/v_3.062/examples/arima/mod1a.mod
new file mode 100644
index 0000000000..0d01eac002
--- /dev/null
+++ b/tags/v_3.062/examples/arima/mod1a.mod
@@ -0,0 +1,23 @@
+var dx dy;
+varexo e_x e_y;
+
+parameters rho_x rho_y;
+
+rho_x = 0.5;
+rho_y = -0.3;
+
+model;
+dx = rho_x*dx(-1)+e_x;
+dy = rho_y*dy(-1)+e_y;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs dx dy;
+
+estimation(datafile=data1,nobs=1000,mh_replic=2000);
\ No newline at end of file
diff --git a/tags/v_3.062/examples/arima/mod1b.mod b/tags/v_3.062/examples/arima/mod1b.mod
new file mode 100644
index 0000000000..39ed9d638a
--- /dev/null
+++ b/tags/v_3.062/examples/arima/mod1b.mod
@@ -0,0 +1,25 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y;
+
+rho_x = 0.5;
+rho_y = -0.3;
+
+model;
+dx = rho_x*dx(-1)+e_x;
+dy = rho_y*dy(-1)+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs x y;
+options_.unit_root_vars = {'x'; 'y'};
+estimation(datafile=data1,nobs=1000,mh_replic=0,load_mh_file,mode_compute=0,mode_file=mod1b_mode,kalman_algo=3,smoother,forecast=4,bayesian_irf,irf=10,filtered_vars,moments_varendo);
\ No newline at end of file
diff --git a/tags/v_3.062/examples/arima/mod1c.mod b/tags/v_3.062/examples/arima/mod1c.mod
new file mode 100644
index 0000000000..a77478a856
--- /dev/null
+++ b/tags/v_3.062/examples/arima/mod1c.mod
@@ -0,0 +1,27 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y;
+
+rho_x = 0.5;
+rho_y = -0.3;
+
+model;
+dx = rho_x*dx(-1)+e_x;
+dy = rho_y*dy(-1)+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+stderr x,INV_GAMMA_PDF,0.01,inf;
+stderr y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs x y;
+options_.unit_root_vars = {'x'; 'y'};
+estimation(datafile=data1,nobs=1000,mh_replic=2000,lik_init=2);
\ No newline at end of file
diff --git a/tags/v_3.062/examples/arima/mod1d.mod b/tags/v_3.062/examples/arima/mod1d.mod
new file mode 100644
index 0000000000..f19e9888c6
--- /dev/null
+++ b/tags/v_3.062/examples/arima/mod1d.mod
@@ -0,0 +1,26 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y;
+
+rho_x = 0.5;
+rho_y = -0.3;
+
+model;
+dx = rho_x*dx(-1)+e_x;
+dy = rho_y*dy(-1)+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+corr e_x, e_y, BETA_PDF,0.0,0.3,-1,1;
+end;
+
+varobs x y;
+options_.unit_root_vars = {'x'; 'y'};
+estimation(datafile=data1,nobs=1000,mh_replic=2000,mh_jscale=1.2,kalman_algo=3,smoother,forecast=4,bayesian_irf,irf=10,filtered_vars);
\ No newline at end of file
diff --git a/tags/v_3.062/examples/arima/mod2.mod b/tags/v_3.062/examples/arima/mod2.mod
new file mode 100644
index 0000000000..c84df18928
--- /dev/null
+++ b/tags/v_3.062/examples/arima/mod2.mod
@@ -0,0 +1,26 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y b a1 a2;
+
+rho_x = 0.5;
+rho_y = -0.3;
+b = 1;
+a1 = -0.1;
+a2 = 0.2;
+
+model;
+dx = rho_x*dx(-1)+a1*(x(-1)-b*y(-1))+e_x;
+dy = rho_y*dy(-1)+a2*(x(-1)-b*y(-1))+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+shocks;
+var e_x; stderr 0.01;
+var e_y; stderr 0.01;
+end;
+
+stoch_simul(order=1,periods=1000,irf=0,nomoments);
+
+save data2 dx dy x y;
\ No newline at end of file
diff --git a/tags/v_3.062/examples/arima/mod2a.mod b/tags/v_3.062/examples/arima/mod2a.mod
new file mode 100644
index 0000000000..9414afa902
--- /dev/null
+++ b/tags/v_3.062/examples/arima/mod2a.mod
@@ -0,0 +1,33 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y b a1 a2;
+
+rho_x = 0.5;
+rho_y = -0.3;
+b = 1;
+a1 = -0.1;
+a2 = 0.2;
+
+model;
+dx = rho_x*dx(-1)+a1*(x(-1)-b*y(-1))+e_x;
+dy = rho_y*dy(-1)+a2*(x(-1)-b*y(-1))+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+b,NORMAL_PDF,1,0.1;
+a1,NORMAL_PDF,-0.1,0.1;
+a2,NORMAL_PDF,0.2,0.1;
+
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs dx dy;
+
+options_.unit_root_vars = {'x'; 'y'};
+estimation(datafile=data2,nobs=100,mh_replic=0,lik_init=2);
diff --git a/tags/v_3.062/examples/arima/mod2b.mod b/tags/v_3.062/examples/arima/mod2b.mod
new file mode 100644
index 0000000000..d2465a22c3
--- /dev/null
+++ b/tags/v_3.062/examples/arima/mod2b.mod
@@ -0,0 +1,33 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y b a1 a2;
+
+rho_x = 0.5;
+rho_y = -0.3;
+b = 1;
+a1 = -0.1;
+a2 = 0.2;
+
+model;
+dx = rho_x*dx(-1)+a1*(x(-1)-b*y(-1))+e_x;
+dy = rho_y*dy(-1)+a2*(x(-1)-b*y(-1))+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+b,NORMAL_PDF,1,0.1;
+a1,NORMAL_PDF,-0.1,0.1;
+a2,NORMAL_PDF,0.2,0.1;
+
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs x y;
+
+options_.unit_root_vars = {'x'; 'y'};
+estimation(datafile=data2,nobs=100,mh_replic=0,lik_init=2);
diff --git a/tags/v_3.062/examples/arima/mod2c.mod b/tags/v_3.062/examples/arima/mod2c.mod
new file mode 100644
index 0000000000..8ce2cae8ef
--- /dev/null
+++ b/tags/v_3.062/examples/arima/mod2c.mod
@@ -0,0 +1,31 @@
+var dx dy coint_err;
+varexo e_x e_y;
+
+parameters rho_x rho_y b a1 a2;
+
+rho_x = 0.5;
+rho_y = -0.3;
+b = 1;
+a1 = -0.1;
+a2 = 0.2;
+
+model;
+dx = rho_x*dx(-1)+a1*coint_err(-1)+e_x;
+dy = rho_y*dy(-1)+a2*coint_err(-1)+e_y;
+coint_err = dx-b*dy+coint_err(-1);
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+b,NORMAL_PDF,1,0.1;
+a1,NORMAL_PDF,-0.1,0.1;
+a2,NORMAL_PDF,0.2,0.1;
+
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs dx dy;
+
+estimation(datafile=data2,nobs=100,mh_replic=0);
diff --git a/tags/v_3.062/examples/example1.mod b/tags/v_3.062/examples/example1.mod
new file mode 100644
index 0000000000..334ef7906a
--- /dev/null
+++ b/tags/v_3.062/examples/example1.mod
@@ -0,0 +1,44 @@
+// example 1 from Collard's guide to Dynare
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 5;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+shocks;
+var e; stderr 0.009;
+var u; stderr 0.009;
+var e, u = phi*0.009*0.009;
+end;
+
+stoch_simul(periods=2100);
diff --git a/tags/v_3.062/examples/example2.mod b/tags/v_3.062/examples/example2.mod
new file mode 100644
index 0000000000..e2c4eeb1b6
--- /dev/null
+++ b/tags/v_3.062/examples/example2.mod
@@ -0,0 +1,44 @@
+// example 2 from Collard's guide to Dynare
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau ;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+model;
+exp(c)*theta*exp(h)^(1+psi)=(1-alpha)*exp(y);
+exp(k) = beta*(((exp(b)*exp(c))/(exp(b(+1))*exp(c(+1))))
+         *(exp(b(+1))*alpha*exp(y(+1))+(1-delta)*exp(k)));
+exp(y) = exp(a)*(exp(k(-1))^alpha)*(exp(h)^(1-alpha));
+exp(k) = exp(b)*(exp(y)-exp(c))+(1-delta)*exp(k(-1));
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+
+initval;
+y = 0.1;
+c = -0.2;
+h = -1.2;
+k =  2.4;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+steady;
+
+shocks;
+var e = 0.009^2;
+var u = 0.009^2;
+end;
+
+stoch_simul(dr_algo=1,drop=200);
+
diff --git a/tags/v_3.062/examples/fs2000/fs2000.mod b/tags/v_3.062/examples/fs2000/fs2000.mod
new file mode 100644
index 0000000000..90c2853b75
--- /dev/null
+++ b/tags/v_3.062/examples/fs2000/fs2000.mod
@@ -0,0 +1,91 @@
+// This file replicates the estimation of the CIA model from 
+// Frank Schorfheide (2000) "Loss function-based evaluation of DSGE models" 
+// Journal of  Applied Econometrics, 15, 645-670.
+// the data are the ones provided on Schorfheide's web site with the programs.
+// http://www.econ.upenn.edu/~schorf/programs/dsgesel.ZIP
+// You need to have fsdat.m in the same directory as this file.
+// This file replicates: 
+// -the posterior mode as computed by Frank's Gauss programs
+// -the parameter mean posterior estimates reported in the paper
+// -the model probability (harmonic mean) reported in the paper
+// This file was tested with dyn_mat_test_0218.zip
+// the smooth shocks are probably stil buggy
+//
+// The equations are taken from J. Nason and T. Cogley (1994) 
+// "Testing the implications of long-run neutrality for monetary business
+// cycle models" Journal of Applied Econometrics, 9, S37-S70.
+// Note that there is an initial minus sign missing in equation (A1), p. S63.
+//
+// Michel Juillard, February 2004
+
+var m P c e W R k d n l gy_obs gp_obs y dA;
+varexo e_a e_m;
+
+parameters alp bet gam mst rho psi del;
+
+alp = 0.33;
+bet = 0.99;
+gam = 0.003;
+mst = 1.011;
+rho = 0.7;
+psi = 0.787;
+del = 0.02;
+
+model;
+dA = exp(gam+e_a);
+log(m) = (1-rho)*log(mst) + rho*log(m(-1))+e_m;
+-P/(c(+1)*P(+1)*m)+bet*P(+1)*(alp*exp(-alp*(gam+log(e(+1))))*k^(alp-1)*n(+1)^(1-alp)+(1-del)*exp(-(gam+log(e(+1)))))/(c(+2)*P(+2)*m(+1))=0;
+W = l/n;
+-(psi/(1-psi))*(c*P/(1-n))+l/n = 0;
+R = P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(-alp)/W;
+1/(c*P)-bet*P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)/(m*l*c(+1)*P(+1)) = 0;
+c+k = exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)+(1-del)*exp(-(gam+e_a))*k(-1);
+P*c = m;
+m-1+d = l;
+e = exp(e_a);
+y = k(-1)^alp*n^(1-alp)*exp(-alp*(gam+e_a));
+gy_obs = dA*y/y(-1);
+gp_obs = (p/p(-1))*m(-1)/dA;
+end;
+
+initval;
+k = 6;
+m = mst;
+P = 2.25;
+c = 0.45;
+e = 1;
+W = 4;
+R = 1.02;
+d = 0.85;
+n = 0.19;
+l = 0.86;
+y = 0.6;
+gy_obs = exp(gam);
+gp_obs = exp(-gam); 
+dA = exp(gam);
+end;
+
+shocks;
+var e_a; stderr 0.014;
+var e_m; stderr 0.005;
+end;
+
+steady;
+
+estimated_params;
+alp, beta_pdf, 0.356, 0.02; 
+bet, beta_pdf, 0.993, 0.002;
+gam, normal_pdf, 0.0085, 0.003;
+mst, normal_pdf, 1.0002, 0.007;
+rho, beta_pdf, 0.129, 0.223;
+psi, beta_pdf, 0.65, 0.05;
+del, beta_pdf, 0.01, 0.005;
+stderr e_a, inv_gamma_pdf, 0.035449, inf;
+stderr e_m, inv_gamma_pdf, 0.008862, inf;
+end;
+
+varobs gp_obs gy_obs;
+
+// computes only the posterior mode for demonstration. 
+//For full Metropolis simulation set mh_replic=20000. It will take several hours
+estimation(datafile=fsdat,nobs=192,loglinear,mh_replic=0,mh_nblocks=5,mh_jscale=0.8);
\ No newline at end of file
diff --git a/tags/v_3.062/examples/fs2000/fs2000a.mod b/tags/v_3.062/examples/fs2000/fs2000a.mod
new file mode 100644
index 0000000000..b481d54e2d
--- /dev/null
+++ b/tags/v_3.062/examples/fs2000/fs2000a.mod
@@ -0,0 +1,112 @@
+// This file replicates the estimation of the CIA model from 
+// Frank Schorfheide (2000) "Loss function-based evaluation of DSGE models" 
+// Journal of  Applied Econometrics, 15, 645-670.
+// the data are the ones provided on Schorfheide's web site with the programs.
+// http://www.econ.upenn.edu/~schorf/programs/dsgesel.ZIP
+// You need to have fsdat.m in the same directory as this file.
+// This file replicates: 
+// -the posterior mode as computed by Frank's Gauss programs
+// -the parameter mean posterior estimates reported in the paper
+// -the model probability (harmonic mean) reported in the paper
+// This file was tested with dyn_mat_test_0218.zip
+// the smooth shocks are probably stil buggy
+//
+// The equations are taken from J. Nason and T. Cogley (1994) 
+// "Testing the implications of long-run neutrality for monetary business
+// cycle models" Journal of Applied Econometrics, 9, S37-S70.
+// Note that there is an initial minus sign missing in equation (A1), p. S63.
+//
+// Michel Juillard, February 2004
+
+// This version estimates the model in level.
+// Because the model in level contains unit roots, the problem for computing
+// the steady state is cirumvent by using fs2000a_steadystate.m that computes
+// the analytical steady state for the stationary part of the model and
+// set values of Y_obs and P_obs, the two stochastic trends in the model,
+// to the arbitrary value of 1. As the unit root dynamic is loglinear, 
+// it doesn't matter around which value the loglinearization is computed.
+// This handling of stochastic trends will be made simpler in a future version
+// of Dynare
+
+var m P c e W R k d n l gy_obs gp_obs Y_obs P_obs y dA;
+varexo e_a e_m;
+
+parameters alp bet gam mst rho psi del;
+
+alp = 0.33;
+bet = 0.99;
+gam = 0.003;
+mst = 1.011;
+rho = 0.7;
+psi = 0.787;
+del = 0.02;
+
+model;
+dA = exp(gam+e_a);
+log(m) = (1-rho)*log(mst) + rho*log(m(-1))+e_m;
+-P/(c(+1)*P(+1)*m)+bet*P(+1)*(alp*exp(-alp*(gam+log(e(+1))))*k^(alp-1)*n(+1)^(1-alp)+(1-del)*exp(-(gam+log(e(+1)))))/(c(+2)*P(+2)*m(+1))=0;
+W = l/n;
+-(psi/(1-psi))*(c*P/(1-n))+l/n = 0;
+R = P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(-alp)/W;
+1/(c*P)-bet*P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)/(m*l*c(+1)*P(+1)) = 0;
+c+k = exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)+(1-del)*exp(-(gam+e_a))*k(-1);
+P*c = m;
+m-1+d = l;
+e = exp(e_a);
+y = k(-1)^alp*n^(1-alp)*exp(-alp*(gam+e_a));
+gy_obs = dA*y/y(-1);
+gp_obs = (p/p(-1))*m(-1)/dA;
+Y_obs/Y_obs(-1) = gy_obs;
+P_obs/P_obs(-1) = gp_obs;
+end;
+
+initval;
+k = 6;
+m = mst;
+P = 2.25;
+c = 0.45;
+e = 1;
+W = 4;
+R = 1.02;
+d = 0.85;
+n = 0.19;
+l = 0.86;
+y = 0.6;
+gy_obs = exp(gam);
+gp_obs = exp(-gam); 
+dA = exp(gam);
+end;
+
+shocks;
+var e_a; stderr 0.014;
+var e_m; stderr 0.005;
+end;
+
+steady;
+
+check;
+
+estimated_params;
+alp, beta_pdf, 0.356, 0.02; 
+bet, beta_pdf, 0.993, 0.002;
+gam, normal_pdf, 0.0085, 0.003;
+mst, normal_pdf, 1.0002, 0.007;
+rho, beta_pdf, 0.129, 0.223;
+psi, beta_pdf, 0.65, 0.05;
+del, beta_pdf, 0.01, 0.005;
+stderr e_a, inv_gamma_pdf, 0.035449, inf;
+stderr e_m, inv_gamma_pdf, 0.008862, inf;
+end;
+
+varobs P_obs Y_obs;
+
+observation_trends;
+P_obs (log(exp(gam)/mst));
+Y_obs (gam);
+end;
+
+options_.unit_root_vars = {'P_obs'; 'Y_obs'};
+
+//stoch_simul(order=1,nomoments,irf=0);
+// 
+estimation(datafile=fsdat,nobs=192,loglinear,mh_replic=5000,mh_nblocks=5,mh_drop=0.45,mh_jscale=0.8);
\ No newline at end of file
diff --git a/tags/v_3.062/examples/fs2000/fs2000a_steadystate.m b/tags/v_3.062/examples/fs2000/fs2000a_steadystate.m
new file mode 100644
index 0000000000..849c04b26d
--- /dev/null
+++ b/tags/v_3.062/examples/fs2000/fs2000a_steadystate.m
@@ -0,0 +1,53 @@
+% computes the steady state of fs2000 analyticaly
+% largely inspired by the program of F. Schorfheide
+function [ys,check] = fs2000a_steadystate(junk,ys)
+  global alp bet gam mst rho psi del;
+
+  check = 0;
+  
+  dA = exp(gam);
+  gst = 1/dA;
+  m = mst;
+  
+  khst = ( (1-gst*bet*(1-del)) / (alp*gst^alp*bet) )^(1/(alp-1));
+  xist = ( ((khst*gst)^alp - (1-gst*(1-del))*khst)/mst )^(-1);
+  nust = psi*mst^2/( (1-alp)*(1-psi)*bet*gst^alp*khst^alp );
+  n  = xist/(nust+xist);
+  p  = xist + nust;
+  k  = khst*n;
+
+  l  = psi*mst*n/( (1-psi)*(1-n) );
+  c  = mst/p;
+  d  = l - mst + 1;
+  y  = k^alp*n^(1-alp)*gst^alp;
+  r  = mst/bet;
+  w  = l/n;
+  ist  = y-c;
+  q  = 1 - d;
+
+  e = 1;
+  
+  gp_obs = m/dA;
+  gy_obs = dA;
+  
+  P_obs = 1;
+  Y_obs = 1;
+  
+  ys =[
+      c
+      d
+      dA
+      e
+      gp_obs
+      gy_obs
+      k
+      l
+      m
+      n
+      p
+      P_obs
+      r
+      w
+      y
+      Y_obs
+      ];
\ No newline at end of file
diff --git a/tags/v_3.062/examples/fs2000/fsdat.m b/tags/v_3.062/examples/fs2000/fsdat.m
new file mode 100644
index 0000000000..5a0e3658d4
--- /dev/null
+++ b/tags/v_3.062/examples/fs2000/fsdat.m
@@ -0,0 +1,210 @@
+data_q = [
+18.02 1474.5 150.2
+17.94 1538.2 150.9
+18.01 1584.5 151.4
+18.42 1644.1 152
+18.73 1678.6 152.7
+19.46 1693.1 153.3
+19.55 1724   153.9
+19.56 1758.2 154.7
+19.79 1760.6 155.4
+19.77 1779.2 156
+19.82 1778.8 156.6
+20.03 1790.9 157.3
+20.12 1846   158
+20.1  1882.6 158.6
+20.14 1897.3 159.2
+20.22 1887.4 160
+20.27 1858.2 160.7
+20.34 1849.9 161.4
+20.39 1848.5 162
+20.42 1868.9 162.8
+20.47 1905.6 163.6
+20.56 1959.6 164.3
+20.62 1994.4 164.9
+20.78 2020.1 165.7
+21    2030.5 166.5
+21.2  2023.6 167.2
+21.33 2037.7 167.9
+21.62 2033.4 168.7
+21.71 2066.2 169.5
+22.01 2077.5 170.2
+22.15 2071.9 170.9
+22.27 2094   171.7
+22.29 2070.8 172.5
+22.56 2012.6 173.1
+22.64 2024.7 173.8
+22.77 2072.3 174.5
+22.88 2120.6 175.3
+22.92 2165   176.045
+22.91 2223.3  176.727
+22.94 2221.4  177.481
+23.03 2230.95 178.268
+23.13 2279.22 179.694
+23.22 2265.48 180.335
+23.32 2268.29 181.094
+23.4  2238.57 181.915
+23.45 2251.68 182.634
+23.51 2292.02 183.337
+23.56 2332.61 184.103
+23.63 2381.01 184.894
+23.75 2422.59 185.553
+23.81 2448.01 186.203
+23.87 2471.86 186.926
+23.94 2476.67 187.68
+24    2508.7  188.299
+24.07 2538.05 188.906
+24.12 2586.26 189.631
+24.29 2604.62 190.362
+24.35 2666.69 190.954
+24.41 2697.54 191.56
+24.52 2729.63 192.256
+24.64 2739.75 192.938
+24.77 2808.88 193.467
+24.88 2846.34 193.994
+25.01 2898.79 194.647
+25.17 2970.48 195.279
+25.32 3042.35 195.763
+25.53 3055.53 196.277
+25.79 3076.51 196.877
+26.02 3102.36 197.481
+26.14 3127.15 197.967
+26.31 3129.53 198.455
+26.6  3154.19 199.012
+26.9  3177.98 199.572
+27.21 3236.18 199.995
+27.49 3292.07 200.452
+27.75 3316.11 200.997
+28.12 3331.22 201.538
+28.39 3381.86 201.955
+28.73 3390.23 202.419
+29.14 3409.65 202.986
+29.51 3392.6  203.584
+29.94 3386.49 204.086
+30.36 3391.61 204.721
+30.61 3422.95 205.419
+31.02 3389.36 206.13
+31.5  3481.4  206.763
+31.93 3500.95 207.362
+32.27 3523.8  208
+32.54 3533.79 208.642
+33.02 3604.73 209.142
+33.2  3687.9  209.637
+33.49 3726.18 210.181
+33.95 3790.44 210.737
+34.36 3892.22 211.192
+34.94 3919.01 211.663
+35.61 3907.08 212.191
+36.29 3947.11 212.708
+37.01 3908.15 213.144
+37.79 3922.57 213.602
+38.96 3879.98 214.147
+40.13 3854.13 214.7
+41.05 3800.93 215.135
+41.66 3835.21 215.652
+42.41 3907.02 216.289
+43.19 3952.48 216.848
+43.69 4044.59 217.314
+44.15 4072.19 217.776
+44.77 4088.49 218.338
+45.57 4126.39 218.917
+46.32 4176.28 219.427
+47.07 4260.08 219.956
+47.66 4329.46 220.573
+48.63 4328.33 221.201
+49.42 4345.51 221.719
+50.41 4510.73 222.281
+51.27 4552.14 222.933
+52.35 4603.65 223.583
+53.51 4605.65 224.152
+54.65 4615.64 224.737
+55.82 4644.93 225.418
+56.92 4656.23 226.117
+58.18 4678.96 226.754
+59.55 4566.62 227.389
+61.01 4562.25 228.07
+62.59 4651.86 228.689
+64.15 4739.16 229.155
+65.37 4696.82 229.674
+66.65 4753.02 230.301
+67.87 4693.76 230.903
+68.86 4615.89 231.395
+69.72 4634.88 231.906
+70.66 4612.08 232.498
+71.44 4618.26 233.074
+72.08 4662.97 233.546
+72.83 4763.57 234.028
+73.48 4849    234.603
+74.19 4939.23 235.153
+75.02 5053.56 235.605
+75.58 5132.87 236.082
+76.25 5170.34 236.657
+76.81 5203.68 237.232
+77.63 5257.26 237.673
+78.25 5283.73 238.176
+78.76 5359.6  238.789
+79.45 5393.57 239.387
+79.81 5460.83 239.861
+80.22 5466.95 240.368
+80.84 5496.29 240.962
+81.45 5526.77 241.539
+82.09 5561.8  242.009
+82.68 5618    242.52
+83.33 5667.39 243.12
+84.09 5750.57 243.721
+84.67 5785.29 244.208
+85.56 5844.05 244.716
+86.66 5878.7  245.354
+87.44 5952.83 245.966
+88.45 6010.96 246.46
+89.39 6055.61 247.017
+90.13 6087.96 247.698
+90.88 6093.51 248.374
+92    6152.59 248.928
+93.18 6171.57 249.564
+94.14 6142.1  250.299
+95.11 6078.96 251.031
+96.27 6047.49 251.65
+97    6074.66 252.295
+97.7  6090.14 253.033
+98.31 6105.25 253.743
+99.13 6175.69 254.338
+99.79 6214.22 255.032
+100.17 6260.74 255.815
+100.88 6327.12 256.543
+101.84 6327.93 257.151
+102.35 6359.9  257.785
+102.83 6393.5  258.516
+103.51 6476.86 259.191
+104.13 6524.5  259.738
+104.71 6600.31 260.351
+105.39 6629.47 261.04
+106.09 6688.61 261.692
+106.75 6717.46 262.236
+107.24 6724.2  262.847
+107.75 6779.53 263.527
+108.29 6825.8  264.169
+108.91 6882    264.681
+109.24 6983.91 265.258
+109.74 7020    265.887
+110.23 7093.12 266.491
+111    7166.68 266.987
+111.43 7236.5  267.545
+111.76 7311.24 268.171
+112.08 7364.63 268.815
+];
+%GDPD  GDPQ   GPOP
+
+series = zeros(193,2);
+series(:,2) = data_q(:,1);
+series(:,1) = 1000*data_q(:,2)./data_q(:,3);
+
+Y_obs = series(:,1);
+P_obs = series(:,2);
+
+series = series(2:193,:)./series(1:192,:);
+
+gy_obs = series(:,1);
+gp_obs = series(:,2);
+
+ti = [1950:0.25:1997.75];
\ No newline at end of file
diff --git a/tags/v_3.062/examples/ls2003/data_ca1.m b/tags/v_3.062/examples/ls2003/data_ca1.m
new file mode 100644
index 0000000000..b0b4f05461
--- /dev/null
+++ b/tags/v_3.062/examples/ls2003/data_ca1.m
@@ -0,0 +1,100 @@
+data = [0.928467646476  11.8716889412   20  0.418037507392  0.227382377518 ...
+-0.705994063083 11.7522582094   21.25   1.09254424511   -1.29488274994 ...
+-0.511895351926 9.68144025625   17.25   -1.66150408407  0.331508393098 ...
+-0.990955971267 10.0890781236   17  1.43016275252   -2.43589670141 ...
+-0.981233061806 12.1094840679   18.25   2.91293288733   -0.790246576864 ...
+-0.882182844512 8.54559460406   15  0.419579139481  0.358729719566 ...
+-0.930893002836 6.19238374422   12.5    -1.48847457959  0.739779938797 ...
+1.53158206947   2.76544271886   11.5    -0.336216769682 0.455559918769 ...
+2.2659052834    5.47418162513   11  0.306436789767  -0.0707985731221 ...
+1.05419803797   6.35698426189   11  0.140700250477  0.620401487202 ...
+1.20161076793   3.4253301593    11  0.461296492351  0.14354323987 ...
+1.73934077971   4.70926070322   11.5    1.35798282982   0.38564694435 ...
+1.71735262584   3.54232079749   12.5    2.9097529155    -0.804308583301 ...
+0.426343657844  3.32719108897   13  1.64214862652   -1.18214664701 ...
+1.67751812324   2.93444727338   11.25   0.344434910651  -1.6529373719 ...
+1.37013301099   4.72303361923   11.75   2.61511526582   0.327684243041 ...
+0.281231073781  4.4893853071    10.5    1.17043449257   1.12855106649 ...
+1.53638992834   3.7325309699    10.25   -0.683947046728 0.11943538737 ...
+1.68081431462   3.34729969129   10  1.41159342106   -1.59065680853 ...
+-0.343321601133 5.05563513564   12  1.75117366498   -2.40127764642 ...
+0.873415608666  3.2779996255    10.25   -1.39895866711  0.0971444398216 ...
+0.26399696544   4.78229419828   9.75    0.0914692438124 0.299310457612 ...
+-0.562233624818 3.88598638237   9.75    -0.0505384765105    0.332826708151 ...
+2.15161914936   3.84859710132   8.75    -3.44811080489  0.789138678784 ...
+1.2345093726    5.62225030942   9.5 -0.366945407434 2.32974981198 ...
+1.62554967459   4.24667132831   10  -0.800958371402 0.0293183770935 ...
+1.33035402527   2.75248979249   9.75    -0.855723113225 0.852493939813 ...
+1.52078814077   3.53415985826   9.75    -3.37963469203  -1.05133958119 ...
+1.16704983697   4.92754079464   10.75   -3.0142303324   0.459907431978 ...
+0.277213572101  4.55532133037   11.75   -0.851995599415 2.03242034852 ...
+0.842215068977  3.11164509647   12.25   -1.08290421696  0.014323281961 ...
+1.05325028606   4.92882647578   13.5    -1.1953883867   0.706764750654 ...
+0.453051253568  6.82998950103   13.5    0.111803656462  0.088462593153 ...
+0.199885995525  5.82643354662   13.5    -0.920501518421 -0.26504958666 ...
+0.137907999624  2.66076369132   13.5    -1.17122929812  -0.995642430514 ...
+0.721949686709  5.70497876823   14.25   1.19378169018   -1.10644839651 ...
+-0.418465249225 3.75861110232   14.75   -1.03131674824  0.188507675831 ...
+-0.644028342116 4.15104788154   13.75   -1.48911756546  0.204560913792 ...
+-0.848213852668 5.65580324027   12.75   0.677011703877  -0.849628054542 ...
+-1.51954076928  11.4866911266   11.25   -0.446024680774 -0.456342350765 ...
+0.265275055215  2.85472749592   9.75    -0.598778202436 -0.907311640831 ...
+0.356162529063  2.29614015658   9.5 -0.46820788432  -1.22130883441 ...
+0.368308864363  -0.539083504685 8   -0.781333991956 0.374007246518 ...
+-0.145751412732 1.61507621789   8.25    3.68291932628   1.32438399845 ...
+0.285457283664  2.14334055993   7   1.42819405379   -0.00818660844123 ...
+0.372390129412  1.60000213334   6.25    0.626106424052  -0.10136772765 ...
+0.382720203063  1.72614243263   7.25    4.89631941021   -1.10060711916 ...
+0.737957515573  2.90430582851   6   -0.0422721010314    0.4178952497 ...
+0.649532581668  0.657135682543  6   0.692066153971  0.422299120276 ...
+0.627159201987  1.70352689913   5.75    2.62066711305   -1.29237304034 ...
+0.905441299817  1.95663197267   5.5 1.5949697565    -0.27115830703 ...
+1.49322577898   -2.08741765309  6.25    1.23027694802   0.418336889527 ...
+1.48750731567   -1.57274121871  8   3.01660550994   -0.893958254365 ...
+1.39783858087   2.22623066426   7   -0.80842319214  1.47625453886 ...
+0.89274836317   1.30378081742   8   -0.249485058661 0.159871204185 ...
+0.920652246088  4.1437741965    9.75    2.8204453623    0.178149239655 ...
+-0.00264276644799   3.07989972052   8.75    -2.56342461535  2.105998353 ...
+0.0198190461681 0.766283759256  8   -1.15838865989  1.56888883418 ...
+0.440050515311  0.127570085801  7.5 0.0400753569995 0.028914333532 ...
+0.129536637901  1.78174141526   6.75    0.959943962785  0.307781224401 ...
+0.398549827172  3.03606770667   6.5 -0.340209794742 0.100979469478 ...
+1.17174775425   0.629625188037  5.75    0.403003686814  0.902394579377 ...
+0.991163981251  2.50862910684   4.75    -1.44963996982  1.16150986945 ...
+0.967603566096  2.12003739013   4.75    0.610846030775  -0.889994896068 ...
+1.14689383604   1.24185011459   4.75    2.01098091308   -1.73846431001 ...
+1.32593824054   0.990713820685  4.75    -0.0955142989332    -0.0369257308362 ...
+0.861135002644  -0.24744943605  6   1.72793107135   -0.691506789639 ...
+1.26870850151   2.09844764887   6.5 1.50720217572   -1.31399187077 ...
+0.260364987715  1.10650139716   6.5 1.13659047496   0.0720441664643 ...
+1.09731242214   0.490796381346  7.25    4.59123894147   -2.14073070763 ...
+1.63792841781   0.612652594286  6.75    1.79604605035   -0.644363995357 ...
+1.48465576034   0.978295808687  6.75    -2.00753620902  1.39437534964 ...
+1.0987608663    4.25212569087   6.25    -2.58901196498  2.56054320803 ...
+1.42592178132   2.76984518311   6.25    0.888195752358  1.03114549274 ...
+1.52958239462   1.31795955491   6.5 -0.902907564082 -0.0952198893776 ...
+1.0170168994    2.14733589918   7   -1.3054866978   2.68803738466 ...
+0.723253652257  3.43552889347   7.5 1.8213700853    0.592593586195 ...
+1.24720806008   3.87383806577   7.5 0.0522300654168 0.988871238698 ...
+0.482531471239  2.67793287032   7.5 2.9693944293    -0.108591166081 ...
+0.154056100439  0.927269031704  6.75    0.119222057561  3.30489209451 ...
+0.0694865769274 6.65916526788   6.25    0.889014476084  -2.83976849035 ...
+-0.121267434867 0.341442615696  5.25    0.323053239216  -3.49289229012 ...
+0.726473690375  -3.5423730964   4   2.19149290449   -3.20855054004 ...
+1.39271709108   2.63121085718   3.75    0.88406577736   0.75622580197 ...
+1.07502077727   5.88578836799   4.25    -2.55088273352  2.89018116374 ...
+0.759049251607  4.24703604223   4.5 0.575687665685  -0.388292506167 ...
+]; 
+ 
+data = reshape(data,5,86)'; 
+y_obs = data(:,1); 
+pie_obs = data(:,2); 
+R_obs = data(:,3); 
+de = data(:,4); 
+dq = data(:,5); 
+ 
+%Country: Canada 
+%Sample Range: 1981:2 to 2002:3 
+%Observations: 86 
+%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], 
+%           Exchange Rate Change [%], Terms of Trade Change [%] 
diff --git a/tags/v_3.062/examples/ls2003/ls2003.mod b/tags/v_3.062/examples/ls2003/ls2003.mod
new file mode 100644
index 0000000000..1d2ec9de49
--- /dev/null
+++ b/tags/v_3.062/examples/ls2003/ls2003.mod
@@ -0,0 +1,65 @@
+var y y_s R pie dq pie_s de A y_obs pie_obs R_obs;
+varexo e_R e_q e_ys e_pies e_A;
+
+parameters psi1 psi2 psi3 rho_R tau alpha rr k rho_q rho_A rho_ys rho_pies;
+
+psi1 = 1.54;
+psi2 = 0.25;
+psi3 = 0.25;
+rho_R = 0.5;
+alpha = 0.3;
+rr = 2.51;
+k = 0.5;
+tau = 0.5;
+rho_q = 0.4;
+rho_A = 0.2;
+rho_ys = 0.9;
+rho_pies = 0.7;
+
+
+model(linear);
+y = y(+1) - (tau +alpha*(2-alpha)*(1-tau))*(R-pie(+1))-alpha*(tau +alpha*(2-alpha)*(1-tau))*dq(+1) + alpha*(2-alpha)*((1-tau)/tau)*(y_s-y_s(+1))-A(+1);
+pie = exp(-rr/400)*pie(+1)+alpha*exp(-rr/400)*dq(+1)-alpha*dq+(k/(tau+alpha*(2-alpha)*(1-tau)))*y+alpha*(2-alpha)*(1-tau)/(tau*(tau+alpha*(2-alpha)*(1-tau)))*y_s;
+pie = de+(1-alpha)*dq+pie_s;
+R = rho_R*R(-1)+(1-rho_R)*(psi1*pie+psi2*(y+alpha*(2-alpha)*((1-tau)/tau)*y_s)+psi3*de)+e_R;
+dq = rho_q*dq(-1)+e_q;
+y_s = rho_ys*y_s(-1)+e_ys;
+pie_s = rho_pies*pie_s(-1)+e_pies;
+A = rho_A*A(-1)+e_A;
+y_obs = y-y(-1)+A;
+pie_obs = 4*pie;
+R_obs = 4*R;
+end;
+
+shocks;
+var e_R = 1.25^2;
+var e_q = 2.5^2;
+var e_A = 1.89;
+var e_ys = 1.89;
+var e_pies = 1.89;
+end;
+
+varobs y_obs R_obs pie_obs dq de;
+
+estimated_params;
+psi1 , gamma_pdf,1.5,0.5;
+psi2 , gamma_pdf,0.25,0.125;
+psi3 , gamma_pdf,0.25,0.125;
+rho_R ,beta_pdf,0.5,0.2;
+alpha ,beta_pdf,0.3,0.1;
+rr ,gamma_pdf,2.5,1;
+k , gamma_pdf,0.5,0.25;
+tau ,gamma_pdf,0.5,0.2;
+rho_q ,beta_pdf,0.4,0.2;
+rho_A ,beta_pdf,0.5,0.2;
+rho_ys ,beta_pdf,0.8,0.1;
+rho_pies,beta_pdf,0.7,0.15;
+stderr e_R,inv_gamma_pdf,1.2533,0.6551;
+stderr e_q,inv_gamma_pdf,2.5066,1.3103;
+stderr e_A,inv_gamma_pdf,1.2533,0.6551;
+stderr e_ys,inv_gamma_pdf,1.2533,0.6551;
+stderr e_pies,inv_gamma_pdf,1.88,0.9827;
+end;
+
+estimation(datafile=data_ca1,first_obs=8,nobs=79,mh_nblocks=10,prefilter=1,mh_jscale=0.5,mh_replic=0);
+
diff --git a/tags/v_3.062/examples/pi2004/idata.m b/tags/v_3.062/examples/pi2004/idata.m
new file mode 100644
index 0000000000..9ce34b9eb7
--- /dev/null
+++ b/tags/v_3.062/examples/pi2004/idata.m
@@ -0,0 +1,5 @@
+load ych.dat;
+data = log(ych);
+oy = data(:,1);
+oc = data(:,2);
+oh = data(:,3);
\ No newline at end of file
diff --git a/tags/v_3.062/examples/pi2004/ireland.mod b/tags/v_3.062/examples/pi2004/ireland.mod
new file mode 100644
index 0000000000..51ef3508ff
--- /dev/null
+++ b/tags/v_3.062/examples/pi2004/ireland.mod
@@ -0,0 +1,90 @@
+var y a k c i h eoy eoc eoh oy oc oh;
+varexo e eeoy eeoc eeoh;
+
+parameters theta rho eta gam bet delta aa r11 r12 r13 r21 r22 r23 r31 r32 r33 scy shc shy;
+
+bet = 0.99;
+delta = 0.025;
+theta = 0.2;
+rho = 0.9959; 
+eta = 1.0051;  
+gam = 0.0045;
+aa = 1.8;
+r11 = 0.99;
+r12 = 0;
+r13 = 0;
+r21 = 0;
+r22 = 0.99;
+r23 = 0;
+r31 = 0;
+r32 = 0;
+r33 = 0.99;
+scy = 0.0040;
+shy = 0.0015;
+shc = 0.0010;
+
+model;
+exp(y) = exp(a)*exp(k(-1))^theta*exp(h)^(1-theta);
+a = (1-rho)*aa+rho*a(-1)+e;
+exp(y) = exp(c) + exp(i);
+eta*exp(k) = (1-delta)*exp(k(-1))+exp(i);
+gam*exp(c)*exp(h) = (1-theta)*exp(y);
+eta/exp(c) = bet*(1/exp(c(+1)))*(theta*(exp(y(+1))/exp(k))+1-delta);
+eoy = r11*eoy(-1) + r12*eoc(-1) + r13*eoh(-1) + eeoy; 
+eoc = r21*eoy(-1) + r22*eoc(-1) + r23*eoh(-1) + scy*eeoy+eeoc; 
+eoh = r31*eoy(-1) + r32*eoc(-1) + r33*eoh(-1) + shy*eeoy+shc*eeoc+eeoh; 
+oy = y + eoy;
+oc = c + eoc;
+oh = h + eoh;
+end;
+
+initval;
+a = 1.7;
+y = 8;
+c = 8;
+k = 10;
+i = 5;
+h = 4;
+eoy = 0;
+eoc = 0;
+eoh = 0;
+oy = y;
+oc = c;
+oh = h;
+end;
+
+steady;
+check;
+
+estimated_params;
+theta , 0.22, 0.1, 0.5;
+rho , 0.99, 0.7, 0.9999; 
+eta , 1.0051, 1, 1.03;  
+gam , 0.0045, 0.001, 0.01;
+aa , 1.8, 0.1, 4;
+r11 , 1.4187, -2, 2;
+r12 , 0.2251, -2, 2;
+r13 , -0.4441, -2, 2;
+r21 , 0.0935, -2, 2;
+r22 , 1.0236, -2, 2;
+r23 , -0.0908, -2, 2;
+r31 , 0.7775, -2, 2;
+r32 , 0.3706, -2, 2;
+r33 , 0.2398, -2, 2;
+scy , 0.0040, -2, 2;
+shy , 0.0015, -2, 2;
+shc , 0.0010, -2, 2;
+stderr e , 0.0056, 0, 0.2;
+stderr eeoy , 0.0070, 0, 0.1;
+stderr eeoc , 0.0069, 0, 0.1;
+stderr eeoh , 0.0018, 0, 0.1;
+end;
+
+varobs oy oc oh;
+
+observation_trends;
+oy (log(eta));
+oc (log(eta));
+end;
+
+estimation(datafile=idata,mode_compute=1,nograph);
\ No newline at end of file
diff --git a/tags/v_3.062/examples/pi2004/ych.dat b/tags/v_3.062/examples/pi2004/ych.dat
new file mode 100644
index 0000000000..cda9d789d8
--- /dev/null
+++ b/tags/v_3.062/examples/pi2004/ych.dat
@@ -0,0 +1,218 @@
+    2912.874 2402.117 198.8318
+    2959.229 2423.837 197.3532
+    2955.961 2420.605    198.6
+    2944.613 2436.721 196.7741
+     2865.54 2435.214 192.1405
+    2837.352 2466.823 187.9169
+    2866.923 2465.011 185.2876
+     2869.69 2492.395 182.3583
+    3000.477  2527.61 183.9728
+    3085.831 2561.171 189.8728
+    3255.871 2686.503 196.8083
+    3261.025 2613.773 200.6933
+    3261.223  2681.19 204.7635
+    3206.972 2610.838 206.4334
+    3190.085 2639.831 205.2288
+    3153.084 2650.442 204.8585
+    3168.886 2654.884 207.0878
+    3173.132 2702.447 205.2592
+    3199.558 2706.406 206.3172
+    3320.152 2792.021 211.0694
+    3333.583 2800.407 211.3402
+     3346.44 2812.085 211.4742
+    3319.499 2799.617 209.1935
+    3248.271 2771.542 205.3107
+    3243.519 2772.147 200.5438
+    3268.486 2799.347 198.4387
+    3321.089 2829.358 196.7325
+    3391.751 2878.587 198.3282
+    3498.798 2932.503 201.0089
+    3576.754 2976.939 204.5467
+    3609.954 3003.859 206.0148
+    3649.965 3032.826 207.8803
+    3625.207 3030.321 208.5925
+     3618.86 3032.152  207.818
+    3608.703 3030.239 205.7291
+    3633.863 3063.106 207.7698
+    3634.522 3075.089 207.3511
+    3628.888 3071.301 205.2741
+     3654.03 3085.679 203.4572
+     3594.76 3076.223 198.9135
+    3503.293 3024.868 193.4752
+     3506.06 3040.773 189.2161
+    3580.923  3079.37 190.8325
+    3649.701  3103.69 193.5263
+    3722.726 3149.563 197.1324
+    3809.309 3187.886 200.4534
+    3787.083  3210.28 198.4483
+    3798.375 3203.989 198.1458
+    3865.427 3211.443 199.3042
+    3828.074 3242.787 198.7233
+    3799.687 3219.673 196.7171
+     3719.52 3211.349  193.664
+    3716.143 3198.191 190.8133
+    3789.954 3235.106 190.6975
+    3841.155 3241.368 192.1397
+    3910.574  3301.88 194.0709
+    3974.538 3330.997 194.6404
+    3994.347 3359.016 196.8206
+    4014.564 3370.705 196.2717
+    4017.905 3399.337  194.901
+    4053.971 3405.746 194.5344
+    4080.082 3423.602 195.9045
+    4131.421 3455.826 195.9157
+    4150.544 3470.287  195.917
+    4229.112 3524.024 195.5849
+     4272.24  3572.78 197.0242
+    4336.042 3623.155 197.4885
+    4332.184 3617.237  198.811
+    4465.719 3681.029 200.7368
+    4488.039 3707.114 201.7553
+    4563.691 3758.136 202.7332
+    4657.963 3851.754 205.0265
+    4769.576 3898.869 207.5881
+    4751.946 3898.531 208.8921
+    4775.072 3931.495 209.8688
+    4783.388 3936.299 210.2431
+    4770.091  3946.92 209.1094
+    4766.574 3984.883 207.6639
+    4783.135  3985.69 208.0611
+    4801.834 3991.937 208.7085
+    4894.604 4068.425 208.3597
+    4975.616 4118.065 209.5735
+    5005.671 4179.017 210.9004
+    5009.407 4177.453 211.3179
+    5086.308 4204.501 212.5445
+    5084.863  4213.54 213.6703
+    5100.858 4214.495 214.3839
+    5063.156 4226.537 213.5259
+    5036.423 4230.978 211.4778
+    5032.681 4228.959 208.3091
+    5053.799 4241.721 205.5294
+     4965.09 4203.845 202.0428
+    5116.926 4261.198 201.5087
+    5152.069  4275.63 201.2279
+    5167.576 4284.769 200.0614
+    5180.986 4331.279 201.1027
+    5237.217 4339.349 201.0968
+    5342.982 4395.387 202.4846
+    5397.077 4438.577 202.6435
+    5484.454 4521.399 204.6093
+    5599.656 4580.229 206.5316
+    5605.247 4551.878  207.638
+    5560.139 4547.278  207.561
+    5550.477 4512.704 208.2113
+    5422.633 4450.734 207.0236
+    5407.967 4444.172 205.7419
+    5341.599 4438.929 204.6589
+    5248.491 4344.377  200.536
+    5098.451 4356.942 193.2349
+    5127.117  4412.68    190.6
+    5224.673 4451.618 191.7895
+    5266.744 4478.207 193.5049
+    5416.411 4553.764 195.7526
+    5473.807 4575.388 195.9103
+    5496.508 4600.334 195.6317
+    5542.322  4642.48 195.9109
+    5620.583 4677.803 197.1447
+    5681.448 4680.833 199.7234
+    5754.575 4702.857 200.9543
+    5776.808 4752.082  202.373
+    5794.987 4757.858 202.3499
+    5938.233 4839.798 206.8288
+    5965.396 4842.542 207.8288
+    6002.337 4857.874 209.0832
+    6006.791 4867.903 210.1847
+    5974.557 4840.912 209.8585
+    5971.562  4863.66 210.2244
+    5937.051 4856.383 209.8079
+    5897.765 4830.827 208.8941
+    5669.422 4702.666 204.6229
+    5622.784 4730.812 202.7781
+    5752.439 4771.074 204.9687
+    5847.447  4774.81 206.1936
+    5783.328 4762.645 205.2802
+    5845.223 4768.572 204.8371
+    5751.495 4715.179 203.0329
+    5654.764 4729.383 200.2751
+    5646.146 4728.229 197.5565
+    5648.711 4745.201 195.2339
+    5635.351 4810.282 192.9487
+    5692.631 4841.503  192.931
+    5864.656 4929.513 194.9285
+    5984.689 4993.857 197.5937
+    6150.889 5061.722 201.0485
+    6296.581 5094.102 203.5924
+    6389.626 5150.168 205.4862
+    6433.069 5172.136  206.615
+    6460.989 5223.355 207.6607
+    6486.085 5290.602 208.5043
+     6538.91 5326.746 209.0396
+    6606.849  5410.05 209.3752
+    6653.043 5412.688  210.214
+     6664.94 5432.911 210.1493
+    6680.737  5476.91 209.3983
+    6715.628 5557.117 209.6171
+    6733.646 5578.244 210.0342
+    6748.714 5562.734 211.4856
+    6800.924 5617.672 212.5146
+    6840.249 5664.805 214.0241
+    6928.494  5662.19 214.9892
+    6947.701 5745.585 215.7109
+    6995.117 5771.484 216.8663
+     7031.88 5804.469 217.7172
+    7095.824 5858.734 219.2336
+    7145.561 5863.484 220.1136
+    7138.196 5874.486  220.269
+    7157.869 5912.841 220.1049
+    7154.805 5921.098  220.317
+    7161.057 5922.459  220.214
+    7161.636 5926.962 219.8513
+     7140.38 5935.485 218.7281
+    6988.206 5869.524 216.6599
+    6901.448 5830.479 214.2069
+    6921.772 5861.221 212.7658
+    6951.212 5865.776 212.5561
+    6964.494 5837.183 211.8733
+    7013.679 5915.408 210.9388
+    7101.702 5930.574 211.8948
+    7139.773 5958.446 211.5333
+    7240.504 6024.693 212.2314
+    7263.686 6021.066 213.0739
+    7309.617  6067.04 214.1464
+    7357.691 6122.096 215.3232
+    7460.728  6162.81 216.6132
+    7552.707 6204.697 217.5596
+    7666.317 6243.449 220.1539
+    7671.023 6273.154 221.4916
+     7773.38 6317.792 222.8923
+    7800.103 6331.551 223.6901
+    7801.608 6378.859  223.503
+    7819.518 6412.249 224.1399
+    7881.173 6435.988 224.4756
+    7942.145 6475.127 224.7463
+    8067.358 6527.758 226.5057
+    8135.065 6540.091 227.7462
+    8160.041 6567.023 228.9124
+    8246.348 6609.208 229.6994
+    8351.972 6625.695 231.2019
+    8446.197 6714.596 232.3205
+    8514.464 6751.037 233.8458
+    8708.139 6820.495 235.1582
+    8756.497 6905.883 235.4095
+    8849.165  6951.56 236.1083
+    8972.445  7016.94 236.9981
+     9053.37 7071.144 236.9439
+    9103.359 7150.307 237.5947
+    9209.004 7210.145 238.3943
+    9335.028 7276.898 239.4022
+    9429.358 7361.761 240.6652
+    9547.745 7400.777 240.4972
+    9558.757 7450.665 240.0893
+     9550.45 7466.543 239.5769
+    9462.932 7494.242 239.0031
+    9373.848 7502.387 237.5366
+    9349.589 7507.978 235.3389
+    9346.637 7595.472 232.4265
+    9459.937 7637.787 231.5627
+    9511.663 7656.648 231.0083
\ No newline at end of file
diff --git a/tags/v_3.062/examples/ramst.mod b/tags/v_3.062/examples/ramst.mod
new file mode 100644
index 0000000000..9fa14019de
--- /dev/null
+++ b/tags/v_3.062/examples/ramst.mod
@@ -0,0 +1,36 @@
+var c k;
+varexo x;
+
+parameters alph gam delt bet aa;
+alph=0.5;
+gam=0.5;
+delt=0.02;
+bet=0.05;
+aa=0.5;
+
+
+model;
+c + k - aa*x*k(-1)^alph - (1-delt)*k(-1);
+c^(-gam) - (1+bet)^(-1)*(aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam);
+end;
+
+initval;
+x = 1;
+k = ((delt+bet)/(1.0*aa*alph))^(1/(alph-1));
+c = aa*k^alph-delt*k;
+end;
+
+steady;
+
+check;
+
+shocks;
+var x;
+periods 1;
+values 1.2;
+end;
+
+simul(periods=200);
+
+rplot c;
+rplot k;
diff --git a/tags/v_3.062/makefile b/tags/v_3.062/makefile
new file mode 100644
index 0000000000..be2b805309
--- /dev/null
+++ b/tags/v_3.062/makefile
@@ -0,0 +1,23 @@
+DATE = $(shell date +%m%d)
+VERSION = v3_062
+DYNARE_ROOT = dynare_v3
+FNAME_MAT = $(DYNARE_ROOT)/zips/dyn_mat_$(VERSION)
+FNAME_PAR = $(DYNARE_ROOT)/zips/dyn_parser_$(VERSION)
+MZIP_FILE = dyn_mat_$(VERSION).zip 
+PZIP_FILE = dyn_parser_$(VERSION).zip 
+
+all: install
+
+parser.src/dynare_m.exe: parser.src/dynare.c parser.src/d.y parser.src/dyn.l doc/guide.tex doc/manual.xml
+	cd parser.src;make dynare_m.exe
+	cd doc;make
+
+$(MZIP_FILE):
+	cd ..;zip $(FNAME_MAT) $(DYNARE_ROOT)/matlab/*.m $(DYNARE_ROOT)/matlab/*.exe $(DYNARE_ROOT)/matlab/*.dll $(DYNARE_ROOT)/examples/*.mod $(DYNARE_ROOT)/examples/fs2000/* $(DYNARE_ROOT)/doc/*.pdf $(DYNARE_ROOT)/doc/manual/*
+
+$(PZIP_FILE): parser.src/dynare_m.exe
+	cd ..;zip $(FNAME_PAR) $(DYNARE_ROOT)/parser.src/*.h $(DYNARE_ROOT)/parser.src/*.l $(DYNARE_ROOT)/parser.src/*.y $(DYNARE_ROOT)/parser.src/*.c $(DYNARE_ROOT)/parser.src/makefile $(DYNARE_ROOT)/parser.src/d.output
+
+install: $(MZIP_FILE) $(PZIP_FILE) 
+	cd zips; chmod a+rx $(MZIP_FILE); scp $(MZIP_FILE) pythie.cepremap.cnrs.fr:public_html/mambo/download;chmod a+rx $(PZIP_FILE); scp $(PZIP_FILE) pythie.cepremap.cnrs.fr:public_html/mambo/download
+
diff --git a/tags/v_3.062/matlab/ChangeLog b/tags/v_3.062/matlab/ChangeLog
new file mode 100644
index 0000000000..4be887c9ac
--- /dev/null
+++ b/tags/v_3.062/matlab/ChangeLog
@@ -0,0 +1,690 @@
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-08-02  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dr1.m:
+	corrected test for presence of all variables at the current period
+
+2004-07-29  benzougar  <benzougar@michel-lat>
+
+	* sec2hms.m:
+	New file :just converts a number (in seconds) into a string in format
+	 hour:minute:second.
+	A call to this file is in mymodel.m
+
+	* sec2hms.m: New file.
+
+	* make_ex_.m, steady.m, kalman_transition_matrix.m, dr11.m, dynare_resolve.m, dynare_solve.m, ff1_.m, irf.m, metropolis.m, mj_optmumlik.m, resol1.m, sim1.m, simult_.m, th_autocovariances.m, dr1.m:
+	Using jacobian provided by mymodel_static.m and mymodel_dynamic.m
+
+2004-07-20  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* resol.m: added oo_.exo_simul to <model>_static call
+
+2004-07-19  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* steady_.m, check.m:
+	added oo_.exo_simul to calls to <model>_static funtion
+
+2004-07-14  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* ChangeLog: version 3.0
+
+	* uniform_specification.m: new function
+
+	* set_prior.m: added UNIFORM
+	modified loaction parameters for BETA and GAMMA
+
+	* priordens.m, prior_bounds.m: UNIFORM use p1 and p2
+
+	* dynare_estimation.m: added UNIFORM
+	added test for complex variables
+	added Laplace approximation after mode computation
+	modified report
+
+	* dynare.m: added automatic path finder
+	removed "Press a key"
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-07-14  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* uniform_specification.m: new function
+
+	* set_prior.m: added UNIFORM
+	modified loaction parameters for BETA and GAMMA
+
+	* priordens.m, prior_bounds.m: UNIFORM use p1 and p2
+
+	* dynare_estimation.m: added UNIFORM
+	added test for complex variables
+	added Laplace approximation after mode computation
+	modified report
+
+	* dynare.m: added automatic path finder
+	removed "Press a key"
+
+2004-07-06  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dr1.m, dynare.m, resol.m, sim1.m, steady_.m, stoch_simul.m:
+	modified for version 4
+
+2004-06-21  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* disp_moments.m, disp_th_moments.m: corrected test for hp_filter > 1
+
+2004-06-08  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* ChangeLog: update
+
+	* gensylv.m, aa_gensylv.dll, dummy.h: *** empty log message ***
+
+2004-06-07  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* ChangeLog: update
+
+	* resid.m: declares ys0_ as global
+
+	* set_shocks.m: added exogenous deterministic variables
+
+	* simultxdet_.m: New file.
+
+	* make_ex_.m, resol.m, simultxdet_.m, steady_.m, ff1_.m:
+	added exogenous deterministic variables
+
+	* dynare_m.exe: updated
+
+	* dynare.m: find dynare_m.exe automatically
+
+	* dr1.m:
+	added leads on several periods, exogenous deterministic variables, Kamenik's algorithm
+
+	* aa_gensylv.dll, dummy.h, gensylv.m: Adding Kamenik's algorithm
+
+	* aa_gensylv.dll, dummy.h, gensylv.m: New file.
+
+2004-05-28  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* sim1.m: it_ must be declared global instead of it
+
+	* sim1.m: calls to _dynamic
+
+	* simul.m: set more missing options_ defaults
+
+	* check.m: suppressed oo_.eigenvalues = oo_.eigenvalues
+
+	* check.m:
+	suppressed oo_.eigenvalues = dr.eigenvalues. This is done in dr1()
+
+	* simul.m: set defautl options_.scalv = 1
+
+	* check.m: corrected dr.oo_.eigenvalues
+
+	* dr1.m:
+	doesn't compute Jacobian with respect to exogenous variables when used for computing only eigenvalues (check == 1)
+
+	* ff1_.m: cal to _static
+
+	* resol1.m: call to _static
+
+	* osr1.m, olr1.m: call _static
+
+	* dr2.m: call to _static
+
+2004-05-26  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* ff1_.m: ff1_ calls ..._dynamic
+
+	* jacob_a.m: forgot some changes...
+
+	* jacob_a.m: a function can't return a structure element
+
+	* resol.m: dr.fbias is computed with ..._static function
+
+	* resol.m: steady state computation uses ..._static function
+
+2004-05-12  kamenik  <kamenik@michel-lat>
+
+	* CVSROOT/modules: Added a nickname dync for dynare_cpp.
+
+2004-04-30  benzougar  <benzougar@michel-lat>
+
+	* dynare_m.exe: Remove because added by error
+
+	* check.m, dr2.m, dynare.m, dynare_m.exe, ff1_.m, linear.m, olr1.m, osr1.m, resid.m, resol.m, resol1.m, sim1.m, simk.m:
+	Outputs Model Files : Replacing "_ff" with "_static" and "_fff" with "_dynamic"
+
+	* dynare.m:
+	1. Changing matlab global variables (outputs) into strctured global varaiables
+	2. Dyanre can now be installed any where, no need to change change this file if installation folder differe from c:\dyanre
+
+	* bksup.m, bksup1.m, bksupk.m, calib.m, calib_obj.m, calib_obj2.m, check.m, compDist.m, dcompare.m, disp_dr.m, disp_moments.m, disp_th_moments.m, dr1.m, dr11.m, dr2.m, dsample.m, dy_date.m, dyn2vec.m, dynare_estimation.m, dynare_resolve.m, dynare_solve.m, dynasave.m, dynatype.m, ff1_.m, forcst.m, gcompare.m, hessian.m, hessian_sparse.m, initvalf_.m, irf.m, jacob.m, jacob_a.m, kalman_transition_matrix.m, linear.m, make_ex_.m, make_y_.m, marginal_density.m, mcmc_diagnostic.m, mcmcdiags.m, mcompare.m, metropolis.m, mj_optmumlik.m, olr.m, olr1.m, olr2.m, osr.m, osr1.m, osr_obj.m, resid.m, resol.m, resol1.m, rplot.m, set_prior.m, set_shocks.m, set_state_space.m, sim1.m, simk.m, simul.m, simult.m, simult_.m, solve1.m, steady.m, steady_.m, stoch_simul.m, th_autocovariances.m:
+	Changing matlab global variables (outputs) into strctured global varaiables
+
+2004-04-21  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* ChangeLog: *** empty log message ***
+
+	* sylvester3a.m: added limit to number of iterations and warning
+
+	* stoch_simul.m: corrected bug in saved irf variables name
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-04-21  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* sylvester3a.m: added limit to number of iterations and warning
+
+	* stoch_simul.m: corrected bug in saved irf variables name
+
+2004-04-19  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* lpdfgbeta.m, compDist.m, priordens.m: *** empty log message ***
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-04-19  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* compDist.m, lpdfgbeta.m, priordens.m: *** empty log message ***
+
+2004-03-31  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* ChangeLog, dynare_m.exe, dynare.m: *** empty log message ***
+
+2004-03-30  benzougar  <benzougar@michel-lat>
+
+	* sim1.m: global variable start_simul removed : defined only here
+
+	* ff1_.m:
+	Moving this file from not_used  : ff1_.m is used by dr1.m, m2html fails
+	declaring this file unused.
+
+2004-03-29  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* ChangeLog: *** empty log message ***
+
+2004-03-27  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* ChangeLog, dr1.m, sylvester3a.m, th_autocovariances.m:
+	merged changes in r0327
+
+	* ChangeLog, brm.m, cols.m, datatomfile.m, diffext.m, equiv.m, ff1_.m, ff2_.m, ff2a_.m, ff_simul.m, ff_simul1.m, ff_simul2.m, fff.m, fs_dyn.m, fx_.m, hessext.m, hpfast.m, jacob2.m, lpdfig.m, pdfig.m, reshapel.m, resid0.m, rfrot.m, set_start_date.m, testifft.m, transition_matrix.m, var_index.m, var_state_index.m:
+	*** empty log message ***
+
+	* brm.m, cols.m, datatomfile.m, diffext.m, equiv.m, ff1_.m, ff2_.m, ff2a_.m, ff_simul.m, ff_simul1.m, ff_simul2.m, fff.m, fs_dyn.m, fx_.m, hessext.m, hpfast.m, jacob2.m, lpdfig.m, pdfig.m, reshapel.m, resid0.m, rfrot.m, set_start_date.m, testifft.m, transition_matrix.m, var_index.m, var_state_index.m:
+	adding abdel change
+
+	* brm.m, cols.m, datatomfile.m, diffext.m, equiv.m, ff1_.m, ff2_.m, ff2a_.m, ff_simul.m, ff_simul1.m, ff_simul2.m, fff.m, fs_dyn.m, fx_.m, hessext.m, hpfast.m, jacob2.m, lpdfig.m, pdfig.m, reshapel.m, resid0.m, rfrot.m, set_start_date.m, testifft.m, transition_matrix.m, var_index.m, var_state_index.m:
+	adding Abdel change
+
+	* ChangeLog, asamin.dll, asamin.m: abdels sorting unused functions
+
+	* th_autocovariances.m:
+	corrected bug in computation of theoretical mean of 2nd order approximation of models with lags on more than 1 period
+
+	* sylvester3a.m:
+	new function: increases accuracy of sylvester solution by running iterations
+
+	* dr1.m: call sylvester3a after sylvester3 to increase accuracy
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-03-27  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* th_autocovariances.m:
+	corrected bug in computation of theoretical mean of 2nd order approximation of models with lags on more than 1 period
+
+	* sylvester3a.m:
+	new function: increases accuracy of sylvester solution by running iterations
+
+	* dr1.m: call sylvester3a after sylvester3 to increase accuracy
+
+2004-02-28  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_m.exe: *** empty log message ***
+
+	* initial_estimation_checks.m: new function
+
+	* mj_optmumlik.m:
+	set dr1_test_(1)=4 when f matrix is singular in Kalman filter
+
+	* dynare_estimation.m: added call to init_estimation_check()
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-02-28  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_m.exe: *** empty log message ***
+
+	* initial_estimation_checks.m: new function
+
+	* mj_optmumlik.m:
+	set dr1_test_(1)=4 when f matrix is singular in Kalman filter
+
+	* dynare_estimation.m: added call to init_estimation_check()
+
+2004-02-24  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_estimation.m: - set default for option loglinear
+
+2004-02-20  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* rplot.m: added legend when several curves
+
+	* rplot.m: corrected bug for several variables
+
+	* varprior.m, rfvar3.m: new file
+
+	* prior_bounds.m: replaced qgamma by mj_qgamma to avoid overflow
+
+	* numgrad.m, mj_qgamma.m, mgnldnsty.m, matrictint.m: new file
+
+	* marginal_density.m: use maxpost as standardization factor
+
+	* fs_dyn.m: new file
+
+	* dynare_m.exe, asamin.dll: *** empty log message ***
+
+	* dynare_estimation.m: added option nodiagnostic
+
+	* csminwel.m, csminit.m: new file
+
+	* compDist.m: -replaced qgamma by mj_qgamma to avoid overflow problems
+	-added 'Interpreter' 'none' to title()
+
+	* bfgsi.m: new file
+
+	* ChangeLog: *** empty log message ***
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-02-20  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* rplot.m: added legend when several curves
+
+	* rplot.m: corrected bug for several variables
+
+	* varprior.m, rfvar3.m: new file
+
+	* prior_bounds.m: replaced qgamma by mj_qgamma to avoid overflow
+
+	* numgrad.m, mj_qgamma.m, mgnldnsty.m, matrictint.m: new file
+
+	* marginal_density.m: use maxpost as standardization factor
+
+	* fs_dyn.m: new file
+
+	* dynare_m.exe, asamin.dll: *** empty log message ***
+
+	* dynare_estimation.m: added option nodiagnostic
+
+	* csminwel.m, csminit.m: new file
+
+	* compDist.m: -replaced qgamma by mj_qgamma to avoid overflow problems
+	-added 'Interpreter' 'none' to title()
+
+	* bfgsi.m: new file
+
+	* ChangeLog: *** empty log message ***
+
+2004-02-17  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* set_prior.m: -bug correction (options_ must be global)
+
+	* posterior_density_estimate.m: -bug removal
+
+	* mj_optmumlik.m: -adapted for non zero means and linear trend
+	-modified for use with different optimizers
+
+	* dynare_resolve.m:
+	-now returns also steady state for current parameter values
+
+	* dynare_m.exe: -added new options
+
+	* dynare_estimation.m: -added trend_coeff
+	-prefilter default is now zero
+	-default optimizer is Sims' csminwel
+	-prints priors first
+	-added non zero means
+	-different report for ML and Bayesian estimation
+	-corrected bug in sscanf syntax
+	-added automatic loglinear approximation
+
+	* dr11.m: added option loglinear
+	non-unique steady state triggers dir_test(1) = 5
+
+	* dr1.m: added option loglinear
+
+	* compDist.m:
+	-Changed to display first priors, then priors and posterior
+	-various bugs corrected
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-02-17  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* set_prior.m: -bug correction (options_ must be global)
+
+	* posterior_density_estimate.m: -bug removal
+
+	* mj_optmumlik.m: -adapted for non zero means and linear trend
+	-modified for use with different optimizers
+
+	* dynare_resolve.m:
+	-now returns also steady state for current parameter values
+
+	* dynare_m.exe: -added new options
+
+	* dynare_estimation.m: -added trend_coeff
+	-prefilter default is now zero
+	-default optimizer is Sims' csminwel
+	-prints priors first
+	-added non zero means
+	-different report for ML and Bayesian estimation
+	-corrected bug in sscanf syntax
+	-added automatic loglinear approximation
+
+	* dr11.m: added option loglinear
+	non-unique steady state triggers dir_test(1) = 5
+
+	* dr1.m: added option loglinear
+
+	* compDist.m:
+	-Changed to display first priors, then priors and posterior
+	-various bugs corrected
+
+2004-02-13  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* prior_bounds.m: added offset for gamma distribution (p3)
+
+2004-02-11  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* priordens.m: added shift parameter p3(i) to gamma density
+
+2004-02-09  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* posterior_moments.m: post_mean is now a column instead of a row
+
+2004-02-03  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* mcmc_diagnostic.m:
+	corrected bug (missing parentheses) in parameter offsets
+
+2004-01-27  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* metropolis.m:
+	corrected computation of logpo2 for initial value of MH chain
+
+	* dynare_estimation.m:
+	added initialization of logpo2 when mh_load_file == 0 and included it in argument of metropolis()
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-01-27  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* metropolis.m:
+	corrected computation of logpo2 for initial value of MH chain
+
+	* dynare_estimation.m:
+	added initialization of logpo2 when mh_load_file == 0 and included it in argument of metropolis()
+
+2004-01-26  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_m.exe: corrected option bugs
+
+	* dynare_estimation.m: changed options defaults to match manual
+
+	* disp_th_moments.m: removed bugs in writing moments to oo_
+
+	* disp_moments.m: write moments in global variable oo_
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-01-26  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_m.exe: corrected option bugs
+
+	* dynare_estimation.m: changed options defaults to match manual
+
+	* disp_th_moments.m: removed bugs in writing moments to oo_
+
+	* disp_moments.m: write moments in global variable oo_
+
+2004-01-24  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* simult_.m: corrected 02 instead of o2 for simul_algo == 1
+
+	* disp_th_moments.m: put mean, var and autocorr in global variable oo_
+
+2004-01-23  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* priordens.m: changed pmean into p1
+
+	* marginal_density.m: suppressed debug printings
+
+	* mj_optmumlik.m: suppressed message when singularity in Kalman filter
+
+	* set_prior.m: suppressed debug printing
+
+	* set_prior.m: new function
+
+	* qchisq.m: new function from stixbox
+
+	* priordens.m:
+	changed calling sequence of inverse gamma 1 and added inverse gamma 2
+
+	* mj_optmumlik.m:
+	-added early return if singularity inside Kalman filter
+	-now passes p1 and not pmean to priordens
+
+	* metropolis.m:
+	add logpo2 (log of posterior density) to function output
+
+	* mcmc_diagnostic.m: added 'Interpreter','none' to graph titles
+
+	* marginal_density.m, lpdfig2.m, lpdfig1.m, inverse_gamma_specification.m:
+	new function
+
+	* dynare_m.exe: added new estimation options
+
+	* dynare_estimation.m: -mh_init_scale set to 2*mh_jscale
+	-priors are now set in set_prior()
+	-p2 is now pstdev (as specified by the user)
+	-modified code for load_mh_file option when mh_replic = 0
+	-metropolis now returns x2 and logpo2
+	-added call to marginal density and report
+	-smoothed observation error graph only if observation errors
+
+	* dr11.m: removed warnings for singularity and other conditions
+
+	* ChangeLog: *** empty log message ***
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-01-23  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* set_prior.m: new function
+
+	* qchisq.m: new function from stixbox
+
+	* priordens.m:
+	changed calling sequence of inverse gamma 1 and added inverse gamma 2
+
+	* mj_optmumlik.m:
+	-added early return if singularity inside Kalman filter
+	-now passes p1 and not pmean to priordens
+
+	* metropolis.m:
+	add logpo2 (log of posterior density) to function output
+
+	* mcmc_diagnostic.m: added 'Interpreter','none' to graph titles
+
+	* marginal_density.m, lpdfig2.m, lpdfig1.m, inverse_gamma_specification.m:
+	new function
+
+	* dynare_m.exe: added new estimation options
+
+	* dynare_estimation.m: -mh_init_scale set to 2*mh_jscale
+	-priors are now set in set_prior()
+	-p2 is now pstdev (as specified by the user)
+	-modified code for load_mh_file option when mh_replic = 0
+	-metropolis now returns x2 and logpo2
+	-added call to marginal density and report
+	-smoothed observation error graph only if observation errors
+
+	* dr11.m: removed warnings for singularity and other conditions
+
+	* ChangeLog: *** empty log message ***
+
+2004-01-20  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* mcmcdiags.m: added deletion of temporary files
+
+2004-01-17  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* mj_optmumlik.m:
+	changed filter so that first observation is used. State variables go now from period 0 to T
+
+	* dynare_estimation.m:
+	change code at the end of the function to match the fact that aTt starts now in period 0 instead of 1.
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-01-17  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* mj_optmumlik.m:
+	changed filter so that first observation is used. State variables go now from period 0 to T
+
+	* dynare_estimation.m:
+	change code at the end of the function to match the fact that aTt starts now in period 0 instead of 1.
+
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
+2004-01-17  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_estimation.m:
+	change code at the end of the function to match the fact that aTt starts now in period 0 instead of 1.
+
+2004-01-16  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* asamin.dll, asamin.m, check_mh.m, generalized_cholesky.m, generalized_cholesky2.m, hessian2.m, lpdfnorm.m, mcmc_diagnostic.m, mcmcdiags.m, mode_check.m, my_subplot.m, pdfig.m, pgamma.m, pnorm.m, posterior_density_estimate.m, prior_bounds.m, qbeta.m, qgamma.m, qnorm.m:
+	*** empty log message ***
+
+	* resol1.m: changed specification of invalid conditions
+
+	* posterior_moments.m: adapted for several chains
+
+	* metropolis.m: added random initial point and several chains
+
+	* dynare_resolve.m: changed specification of invalid conditions
+
+	* dynare_m.exe: new version of parser
+
+	* dynare_estimation.m:
+	added options for partial processing and MCMC convergence diagnostics
+
+	* dr11.m: changed specification of invalid conditions
+
+	* dr1.m: *** empty log message ***
+
+	* compDist.m:
+	corrected bug on density of lognormal instead of log of normal density
+
+	* mj_optmumlik.m:
+	corrected bug that included presample observations in computing log likelihood constant
+
+2004-01-01  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* stoch_simul.m: corrects bug in orthogonalized shocks
+
+	* th_autocovariances.m:
+	corrects bug in computing second order theorectical mean
+
+	* priordens.m:
+	corrected bug in priordens: log of normal density was in fact density of lognormal...
+
+	* metropolis.m: now keeps track of rejected draws in x3
+
+	* make_ex_.m:
+	corrected bug in initialization of exe_ in absecnce of initval data
+
+	* dynare_m.exe: *** empty log message ***
+
+2003-12-31  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* priordens.m:
+	corrected bug for uniform distribution (ln instead of log)
+
+2003-12-04  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_estimation.m, dynare_m.exe:
+	corrected bug in setting estimated parameter value with ML estimation
+
+2003-12-03  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_estimation.m: corrected typo
+
+2003-12-02  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_estimation.m: firt release of dynare_test to testers
+
+2003-12-01  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* compDist.m, dynare_estimation.m, dynare_m.exe, metropolis.m:
+	added jscale option and minor changes
+
+	* compDist.m, dynare_estimation.m, dynare_m.exe, lpdfig.m, metropolis.m, mj_optmumlik.m, posterior_moments.m, priordens.m:
+	integrates metropolis hasting
+
+2003-11-26  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* hessian_sparse.m, hessian.m:
+	resolved name conflict between hessian matrix and hessian function
+
+2003-11-25  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dgamma.m, dbeta.m, dynare_estimation.m, metropolis.m:
+	recompute hessian after optimization in dynare_estimation
+
+	* dynare_m.exe, hessian.m, hessian_sparse.m: *** empty log message ***
+
+	* dr11.m, dr1.m: replaced jacob2 by hessian_sparse
+
+	* mjdgges.dll, compDist.m, metropolis.m, rndprior.m:
+	*** empty log message ***
+
+	* compDist.m:
+	debugging metropolis, corrected call for gamma_rnd in rndprior
+
+2003-11-24  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* dynare_estimation.m: removed comments that inhibited graphs
+
+	* resol1.m: put back in computation of steady state if necessary. 
+	It should matter for models where estimated parameters don't change 
+	the steady state
+
+2003-11-23  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* stoch_simul.m: changed to orthogonalized IRFs
+
+	* rndprior.m, priordens.m: need to check parameters
+
+	* metropolis.m: adapted for Dynare
+
+	* lpdfig.m: need to check arguments
+
+	* irf.m: changed input for orthogonalized IRF
+
+	* dynare_estimation.m: added metropolis
+
+	* compDist.m: need to check distribution arguments
+
+	* dynare.m: changed directory name
+
+2003-11-18  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* mj_optmumlik.m: changed input parameters for priordens()
+
+2003-11-17  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* beta_rnd.m, gamm_rnd.m, rand_beta.m: *** empty log message ***
+
+2003-11-16  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* rand_beta.m: *** empty log message ***
+
+2003-11-14  michel@MICHEL-LAT  <michel@michel-lat>
+
+	* bicgstab.m, bksup.m, bksup1.m, bksupk.m, brm.m, bseastr.m, calib.m, calib_obj.m, calib_obj2.m, check.m, cols.m, compDist.m, datatomfile.m, dcompare.m, diffext.m, disp_dr.m, disp_moments.m, disp_th_moments.m, dlognorm.m, dnorm.m, dr1.m, dr11.m, dr2.m, dsample.m, dy_date.m, dyn2vec.m, dynare.m, dynare_estimation.m, dynare_resolve.m, dynare_solve.m, dynasave.m, dynatype.m, equiv.m, f_var.m, fbeta.m, ff1_.m, ff2_.m, ff2a_.m, ff_simul.m, ff_simul1.m, ff_simul2.m, fff.m, ffill.m, fgamma.m, figamm.m, fnorm.m, forcst.m, ftest.m, fx_.m, gcompare.m, hessext.m, hpfast.m, indnv.m, initvalf_.m, irf.m, jacob.m, jacob2.m, jacob_a.m, kalman_transition_matrix.m, linear.m, lnsrch.m, lnsrch1.m, lpdfbeta.m, lpdfgam.m, lpdfig.m, lyapunov_symm.m, make_ex_.m, make_y_.m, mcompare.m, metropolis.m, mj_optmumlik.m, olr.m, olr1.m, olr2.m, osr.m, osr1.m, osr_obj.m, p2toperc.m, priordens.m, qzdiv.m, qzswitch.m, reshapel.m, resid.m, resid0.m, resol.m, resol1.m, rfrot.m, rndprior.m, rows.m, rplot.m, selif.m, set_default_option.m, set_shocks.m, set_start_date.m, set_state_space.m, sim1.m, simk.m, simul.m, simult.m, simult_.m, solve1.m, steady.m, steady_.m, sylvester3.m, table.m, testifft.m, th_autocovariances.m, transition_matrix.m, union.m, var_index.m, var_state_index.m:
+	start
+
+	* stoch_simul.m: New file.
+
diff --git a/tags/v_3.062/matlab/CompareModels.m b/tags/v_3.062/matlab/CompareModels.m
new file mode 100644
index 0000000000..824385d3ce
--- /dev/null
+++ b/tags/v_3.062/matlab/CompareModels.m
@@ -0,0 +1,69 @@
+function PosteriorOddsTable = model_comparison(ModelNames,ModelPriors)
+% 05-30-2005
+%
+% type is a string  = Laplace
+%                   = ModifiedHarmonicMean
+% ModelPriors is a m*1 column vector
+% ModelNames is m*1 cell array
+
+global oo_ options_
+
+type = options_.model_comparison_approximation;
+if strcmp(type,'Laplace')
+  type = 'LaplaceApproximation';
+end
+
+NumberOfModels = size(ModelNames,1);
+MarginalLogDensity = zeros(NumberOfModels,1);
+
+% Get the estimates of the (logged) marginal densities
+
+init_loop = 1;
+if isempty(type)
+    oo_ = load(['ModelNames{1} '_results.mat' ],'oo_');
+    try
+        eval(['MarginalLogDensity(1) = oo_.MarginalDensity.ModifiedHarmonicMean']); 
+    catch
+      try
+        eval(['MarginalLogDensity(1) =' ...
+	      ' oo_.MarginalDensity.LaplaceApproximation']);
+      catch
+	disp(['CompareModels :: I cant''t find any marginal density approximation associated to model ' ModelNames{1}])
+	return
+      end
+    end
+
+end
+for i = init_loop:NumberOfModels
+    oo_ = load(['ModelNames(i) '_results.mat' ],'oo_');
+    try
+        eval(['MarginalLogDensity(i) = oo_.MarginalDensity.' type ';']) 
+    catch
+        if strcmpi(type,'LaplaceApproximation')
+            disp(['CompareModels :: I cant''t find the Laplace approximation associated to model ' ModelNames(i,:)])
+            return
+        elseif strcmpi(type,'ModifiedHarmonicMean')
+            disp(['CompareModels :: I cant''t find the modified harmonic mean estimate associated to model ' ModelNames(i,:)])
+            return
+        end
+    end
+end
+
+MarginalDensity = exp(MarginalLogDensity);
+ConstantOfIntegration  = ModelPriors'*MarginalDensity;
+PosteriorProbabilities = ModelPriors.*MarginalDensity / ConstantOfIntegration;
+PosteriorOddsTable = PosteriorProbabilities.*PosteriorProbabilities.^(-1);
+
+% Now I display the posterior probabilities:
+if NumberOfModels == 2
+    disp(' ')
+    disp(['Posterior odd ('ModelNames(1) '/' ModelNames(2) ') =  ' num2str(PosteriorOddsTable(1,2))])
+    disp(' ')
+else
+    disp(' ')
+    disp(' Posterior probabilities:')
+    for i=1:NumberOfModels
+            disp([ 'Model ' int2str(i) ' (' ModelNames(i) ') = ' num2str(PosteriorProbabilities(i))])
+    end
+    disp(' ')
+end
diff --git a/tags/v_3.062/matlab/DiffuseKalmanSmoother.m b/tags/v_3.062/matlab/DiffuseKalmanSmoother.m
new file mode 100644
index 0000000000..e2a0224a3a
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseKalmanSmoother.m
@@ -0,0 +1,107 @@
+function [alphahat,etahat,a] = DiffuseKalmanSmoother(T,R,Q,Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf)
+% stephane.adjemian@cepremap.cnrs.fr [09-16-2004]
+% 
+%   See "Filtering and Smoothing of State Vector for Diffuse State Space
+%   Models", S.J. Koopman and J. Durbin (2003, in Journal of Time Series 
+%   Analysis, vol. 24(1), pp. 85-98).  
+spinf   = size(Pinf1);
+spstar  = size(Pstar1);
+v       = zeros(pp,smpl);
+a       = zeros(mm,smpl+1);
+iF      = zeros(pp,pp,smpl);
+Fstar   = zeros(pp,pp,smpl);
+iFinf   = zeros(pp,pp,smpl);
+K       = zeros(mm,pp,smpl);
+L       = zeros(mm,mm,smpl);
+Linf    = zeros(mm,mm,smpl);
+Kstar   = zeros(mm,pp,smpl);
+P       = zeros(mm,mm,smpl+1);
+Pstar   = zeros(spstar(1),spstar(2),smpl+1); Pstar(:,:,1) = Pstar1;
+Pinf    = zeros(spinf(1),spinf(2),smpl+1); Pinf(:,:,1) = Pinf1;
+crit    = 10^(-12);
+steady  = smpl;
+rr      = size(Q,1);
+QQ      = R*Q*transpose(R);
+QRt		= Q*transpose(R);
+
+Z = zeros(pp,mm);
+for i=1:pp;
+	Z(i,mf(i)) = 1;
+end
+
+t = 0;
+while rank(Pinf(:,:,t+1),crit) & t<smpl
+    t = t+1;
+    v(:,t) 		 	= Y(:,t) - a(mf,t) - trend(:,t);
+    iFinf(:,:,t) 	= inv(Pinf(mf,mf,t));
+    Kinf(:,:,t)	 	= T*Pinf(:,mf,t)*iFinf(:,:,t);
+    a(:,t+1) 	 	= T*a(:,t) + Kinf(:,:,t)*v(:,t);
+    Linf(:,:,t)  	= T - Kinf(:,:,t)*Z;
+    Fstar(:,:,t) 	= Pstar(mf,mf,t);
+    Kstar(:,:,t) 	= (T*Pstar(:,mf,t)-Kinf(:,:,t)*Fstar(:,:,t))*iFinf(:,:,t);
+    Pstar(:,:,t+1)	= T*Pstar(:,:,t)*transpose(T)-T*Pstar(:,mf,t)*transpose(Kinf(:,:,t))-Kinf(:,:,t)*Pinf(mf,mf,t)*transpose(Kstar(:,:,t)) + QQ;
+    Pinf(:,:,t+1)	= T*Pinf(:,:,t)*transpose(T)-T*Pinf(:,mf,t)*transpose(Kinf(:,:,t));
+end
+d = t;
+P(:,:,d+1) = Pstar(:,:,d+1);
+iFinf = iFinf(:,:,1:d);
+Linf  = Linf(:,:,1:d);
+Fstar = Fstar(:,:,1:d);
+Kstar = Kstar(:,:,1:d);
+%Kstar = Kinf(:,:,1:d); ??? MJ
+Pstar = Pstar(:,:,1:d);
+Pinf  = Pinf(:,:,1:d);
+notsteady = 1;
+while notsteady & t<smpl
+    t = t+1;
+    v(:,t)      = Y(:,t) - a(mf,t) - trend(:,t);
+    iF(:,:,t)   = inv(P(mf,mf,t));
+    K(:,:,t)    = T*P(:,mf,t)*iF(:,:,t);
+    L(:,:,t)    = T-K(:,:,t)*Z;
+    a(:,t+1)    = T*a(:,t) + K(:,:,t)*v(:,t);    
+    P(:,:,t+1)  = T*P(:,:,t)*transpose(T)-T*P(:,mf,t)*transpose(K(:,:,t)) + QQ;
+    notsteady   = ~(max(max(abs(P(:,:,t+1)-P(:,:,t))))<crit);
+end
+K_s = K(:,:,t); % ?? MJ
+iF_s = iF(:,:,t); % ?? MJ
+P_s = P(:,:,t+1); % ?? MJ
+if t<smpl
+	t_steady = t+1;
+	P  = cat(3,P(:,:,1:t),repmat(P(:,:,t),[1 1 smpl-t_steady+1]));
+	iF = cat(3,iF(:,:,1:t),repmat(inv(P_s(mf,mf)),[1 1 smpl-t_steady+1]));
+	L  = cat(3,L(:,:,1:t),repmat(T-K_s*Z,[1 1 smpl-t_steady+1]));
+	K  = cat(3,K(:,:,1:t),repmat(T*P_s(:,mf)*iF_s,[1 1 smpl-t_steady+1]));
+end
+while t<smpl
+    t=t+1;
+    v(:,t) = Y(:,t) - a(mf,t) - trend(:,t);
+    a(:,t+1) = T*a(:,t) + K_s*v(:,t);
+end
+alphahat   = zeros(mm,smpl);
+etahat	   = zeros(rr,smpl);
+r 		   = zeros(mm,smpl);
+t = smpl+1;
+while t>d+2
+	t = t-1;
+    r(:,t-1) = transpose(Z)*iF(:,:,t)*v(:,t) + transpose(L(:,:,t))*r(:,t);
+    alphahat(:,t)	= a(:,t) + P(:,:,t)*r(:,t-1);
+	etahat(:,t)		= QRt*r(:,t);
+end
+if d
+	r0 = zeros(mm,d); r0(:,d) = r(:,d);
+	r1 = zeros(mm,d);
+	for t = d:-1:2
+    	r0(:,t-1) = transpose(Linf(:,:,t))*r0(:,t);
+		r1(:,t-1) = transpose(Z)*(iFinf(:,:,t)*v(:,t)-transpose(Kstar(:,:,t))*r0(:,t)) + transpose(Linf(:,:,t))*r1(:,t);
+		alphahat(:,t)	= a(:,t) + Pstar(:,:,t)*r0(:,t-1) + Pinf(:,:,t)*r1(:,t-1);
+		etahat(:,t)		= QRt*r0(:,t);
+	end
+	r0_0 = transpose(Linf(:,:,1))*r0(:,1);
+	r1_0 = transpose(Z)*(iFinf(:,:,1)*v(:,1)-transpose(Kstar(:,:,1))*r0(:,1)) + transpose(Linf(:,:,1))*r1(:,1);
+	alphahat(:,1)  	= a(:,1) + Pstar(:,:,1)*r0_0 + Pinf(:,:,1)*r1_0;
+	etahat(:,1)		= QRt*r0_0(:,1);
+else
+      r0 = transpose(Z)*iF(:,:,1)*v(:,1) + transpose(L(:,:,1))*r(:,1);
+      alphahat(:,1)	= a(:,1) + P(:,:,1)*r0;
+      etahat(:,1)	= QRt*r(:,1);
+end
diff --git a/tags/v_3.062/matlab/DiffuseKalmanSmoother1.m b/tags/v_3.062/matlab/DiffuseKalmanSmoother1.m
new file mode 100644
index 0000000000..e634603a8b
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseKalmanSmoother1.m
@@ -0,0 +1,137 @@
+function [alphahat,etahat,a, aK] = DiffuseKalmanSmoother1(T,R,Q,Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf)
+% modified by M. Ratto:
+% new output argument aK (1-step to k-step predictions)
+% new options_.nk: the max step ahed prediction in aK (default is 4)
+% new crit1 value for rank of Pinf
+% it is assured that P is symmetric 
+%
+% stephane.adjemian@cepremap.cnrs.fr [09-16-2004]
+% 
+%   See "Filtering and Smoothing of State Vector for Diffuse State Space
+%   Models", S.J. Koopman and J. Durbin (2003, in Journal of Time Series 
+%   Analysis, vol. 24(1), pp. 85-98).  
+
+global options_
+
+nk = options_.nk;
+spinf   	= size(Pinf1);
+spstar  	= size(Pstar1);
+v       	= zeros(pp,smpl);
+a       	= zeros(mm,smpl+1);
+aK              = zeros(nk,mm,smpl+1);
+iF      	= zeros(pp,pp,smpl);
+Fstar   	= zeros(pp,pp,smpl);
+iFinf   	= zeros(pp,pp,smpl);
+K       	= zeros(mm,pp,smpl);
+L       	= zeros(mm,mm,smpl);
+Linf    	= zeros(mm,mm,smpl);
+Kstar   	= zeros(mm,pp,smpl);
+P       	= zeros(mm,mm,smpl+1);
+Pstar   	= zeros(spstar(1),spstar(2),smpl+1); Pstar(:,:,1) = Pstar1;
+Pinf    	= zeros(spinf(1),spinf(2),smpl+1); Pinf(:,:,1) = Pinf1;
+crit    	= options_.kalman_tol;
+crit1       = 1.e-8;
+steady  	= smpl;
+rr      	= size(Q,1);
+QQ      	= R*Q*transpose(R);
+QRt			= Q*transpose(R);
+alphahat   	= zeros(mm,smpl);
+etahat	   	= zeros(rr,smpl);
+r 		   	= zeros(mm,smpl);
+
+Z = zeros(pp,mm);
+for i=1:pp;
+	Z(i,mf(i)) = 1;
+end
+
+t = 0;
+while rank(Pinf(:,:,t+1),crit1) & t<smpl
+    t = t+1;
+    v(:,t) 		 	= Y(:,t) - a(mf,t) - trend(:,t);
+    if rcond(Pinf(mf,mf,t)) < crit
+    	return		
+    end
+    iFinf(:,:,t) 	= inv(Pinf(mf,mf,t));
+    Kinf(:,:,t)	 	= T*Pinf(:,mf,t)*iFinf(:,:,t);
+    a(:,t+1) 	 	= T*a(:,t) + Kinf(:,:,t)*v(:,t);
+    aK(1,:,t+1) 	 	= a(:,t+1);
+    for jnk=2:nk,
+        aK(jnk,:,t+jnk) 	 	= T^(jnk-1)*a(:,t+1);
+    end
+    Linf(:,:,t)  	= T - Kinf(:,:,t)*Z;
+    Fstar(:,:,t) 	= Pstar(mf,mf,t);
+    Kstar(:,:,t) 	= (T*Pstar(:,mf,t)-Kinf(:,:,t)*Fstar(:,:,t))*iFinf(:,:,t);
+    Pstar(:,:,t+1)	= T*Pstar(:,:,t)*transpose(T)-T*Pstar(:,mf,t)*transpose(Kinf(:,:,t))-Kinf(:,:,t)*Pinf(mf,mf,t)*transpose(Kstar(:,:,t)) + QQ;
+    Pinf(:,:,t+1)	= T*Pinf(:,:,t)*transpose(T)-T*Pinf(:,mf,t)*transpose(Kinf(:,:,t));
+end
+d = t;
+P(:,:,d+1) = Pstar(:,:,d+1);
+iFinf = iFinf(:,:,1:d);
+Linf  = Linf(:,:,1:d);
+Fstar = Fstar(:,:,1:d);
+Kstar = Kstar(:,:,1:d);
+Pstar = Pstar(:,:,1:d);
+Pinf  = Pinf(:,:,1:d);
+notsteady = 1;
+while notsteady & t<smpl
+    t = t+1;
+    v(:,t)      = Y(:,t) - a(mf,t) - trend(:,t);
+    P(:,:,t)=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1));
+    if rcond(P(mf,mf,t)) < crit
+    	return		
+    end    
+    iF(:,:,t)   = inv(P(mf,mf,t));
+    K(:,:,t)    = T*P(:,mf,t)*iF(:,:,t);
+    L(:,:,t)    = T-K(:,:,t)*Z;
+    a(:,t+1)    = T*a(:,t) + K(:,:,t)*v(:,t);    
+    aK(1,:,t+1) 	 	= a(:,t+1);
+    for jnk=2:nk,
+        aK(jnk,:,t+jnk) 	 	= T^(jnk-1)*a(:,t+1);
+    end
+    P(:,:,t+1)  = T*P(:,:,t)*transpose(T)-T*P(:,mf,t)*transpose(K(:,:,t)) + QQ;
+    notsteady   = ~(max(max(abs(P(:,:,t+1)-P(:,:,t))))<crit);
+end
+K_s = K(:,:,t);
+iF_s = iF(:,:,t);
+P_s = P(:,:,t+1);
+if t<smpl
+	t_steady = t+1;
+	P  = cat(3,P(:,:,1:t),repmat(P(:,:,t),[1 1 smpl-t_steady+1]));
+	iF = cat(3,iF(:,:,1:t),repmat(inv(P_s(mf,mf)),[1 1 smpl-t_steady+1]));
+	L  = cat(3,L(:,:,1:t),repmat(T-K_s*Z,[1 1 smpl-t_steady+1]));
+	K  = cat(3,K(:,:,1:t),repmat(T*P_s(:,mf)*iF_s,[1 1 smpl-t_steady+1]));
+end
+while t<smpl
+    t=t+1;
+    v(:,t) = Y(:,t) - a(mf,t) - trend(:,t);
+    a(:,t+1) = T*a(:,t) + K_s*v(:,t);
+    aK(1,:,t+1) 	 	= a(:,t+1);
+    for jnk=2:nk,
+        aK(jnk,:,t+jnk) 	 	= T^(jnk-1)*a(:,t+1);
+    end
+end
+t = smpl+1;
+while t>d+1 & t>2
+	t = t-1;
+    r(:,t-1) = transpose(Z)*iF(:,:,t)*v(:,t) + transpose(L(:,:,t))*r(:,t);
+    alphahat(:,t)	= a(:,t) + P(:,:,t)*r(:,t-1);
+	etahat(:,t)		= QRt*r(:,t);
+end
+if d
+	r0 = zeros(mm,d); r0(:,d) = r(:,d);
+	r1 = zeros(mm,d);
+	for t = d:-1:2
+    	r0(:,t-1) = transpose(Linf(:,:,t))*r0(:,t);
+		r1(:,t-1) = transpose(Z)*(iFinf(:,:,t)*v(:,t)-transpose(Kstar(:,:,t))*r0(:,t)) + transpose(Linf(:,:,t))*r1(:,t);
+		alphahat(:,t)	= a(:,t) + Pstar(:,:,t)*r0(:,t-1) + Pinf(:,:,t)*r1(:,t-1);
+		etahat(:,t)		= QRt*r0(:,t);
+	end
+	r0_0 = transpose(Linf(:,:,1))*r0(:,1);
+	r1_0 = transpose(Z)*(iFinf(:,:,1)*v(:,1)-transpose(Kstar(:,:,1))*r0(:,1)) + transpose(Linf(:,:,1))*r1(:,1);
+	alphahat(:,1)  	= a(:,1) + Pstar(:,:,1)*r0_0 + Pinf(:,:,1)*r1_0;
+	etahat(:,1)		= QRt*r0(:,1);
+else
+    r0 = transpose(Z)*iF(:,:,1)*v(:,1) + transpose(L(:,:,1))*r(:,1);
+    alphahat(:,1)	= a(:,1) + P(:,:,1)*r0;
+    etahat(:,1)	= QRt*r(:,1);
+end
diff --git a/tags/v_3.062/matlab/DiffuseKalmanSmoother3.m b/tags/v_3.062/matlab/DiffuseKalmanSmoother3.m
new file mode 100644
index 0000000000..e00e78954e
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseKalmanSmoother3.m
@@ -0,0 +1,253 @@
+function [alphahat,etahat,a1, aK] = DiffuseKalmanSmoother3(T,R,Q,Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf)
+% Modified by M. Ratto
+% New output argument aK: 1-step to nk-stpe ahed predictions)
+% New input argument nk: max order of predictions in aK
+% New global variable id_ where the DKF stops (common with
+% diffuselikelihood3)
+% New icc variable to count number of iterations for Finf steps
+% Pstar % Pinf simmetric
+% New termination of DKF iterations based on id_
+% Li also stored during DKF iterations !!
+% some bugs corrected in the DKF part of the smoother (Z matrix and
+% alphahat)
+%
+% stephane.adjemian@cepremap.cnrs.fr [09-16-2004]
+% 
+%   See "Fast Filtering and Smoothing for Multivariate State Space
+%   Models", S.J. Koopman and J. Durbin (2000, in Journal of Time Series 
+%   Analysis, vol. 21(3), pp. 281-296).  
+
+global options_
+
+nk = options_.nk;
+spinf   	= size(Pinf1);
+spstar  	= size(Pstar1);
+v       	= zeros(pp,smpl);
+a       	= zeros(mm,smpl+1);
+a1			= a;
+aK          = zeros(nk,mm,smpl+nk);
+Fstar   	= zeros(pp,smpl);
+Finf		= zeros(pp,smpl);
+Ki       	= zeros(mm,pp,smpl);
+Li      	= zeros(mm,mm,pp,smpl);
+Linf    	= zeros(mm,mm,pp,smpl);
+L0      	= zeros(mm,mm,pp,smpl);
+Kstar   	= zeros(mm,pp,smpl);
+P       	= zeros(mm,mm,smpl+1);
+P1			= P;
+Pstar   	= zeros(spstar(1),spstar(2),smpl+1); Pstar(:,:,1) = Pstar1;
+Pinf    	= zeros(spinf(1),spinf(2),smpl+1); Pinf(:,:,1) = Pinf1;
+Pstar1 		= Pstar;
+Pinf1  		= Pinf;
+crit   	 	= options_.kalman_tol;
+crit1       = 1.e-6;
+steady  	= smpl;
+rr      	= size(Q,1);
+QQ      	= R*Q*transpose(R);
+QRt			= Q*transpose(R);
+alphahat   	= zeros(mm,smpl);
+etahat	   	= zeros(rr,smpl);
+r 		   	= zeros(mm,smpl);
+
+Z = zeros(pp,mm);
+for i=1:pp;
+	Z(i,mf(i)) = 1;
+end
+
+t = 0;
+icc=0;
+newRank	  = rank(Pinf(:,:,1),crit1);
+while newRank & t < smpl
+  t = t+1;
+  a1(:,t) = a(:,t);
+  Pstar(:,:,t)=tril(Pstar(:,:,t))+transpose(tril(Pstar(:,:,t),-1));
+  Pinf(:,:,t)=tril(Pinf(:,:,t))+transpose(tril(Pinf(:,:,t),-1));
+  Pstar1(:,:,t) = Pstar(:,:,t);
+  Pinf1(:,:,t) = Pinf(:,:,t);
+  for i=1:pp
+    v(i,t) 	= Y(i,t)-a(mf(i),t)-trend(i,t);
+    Fstar(i,t) 	= Pstar(mf(i),mf(i),t);
+    Finf(i,t)	= Pinf(mf(i),mf(i),t);
+    Kstar(:,i,t) 	= Pstar(:,mf(i),t);
+    if Finf(i,t) > crit & newRank,  % original MJ: if Finf(i,t) > crit
+      icc=icc+1;
+      Kinf(:,i,t)	= Pinf(:,mf(i),t);
+      Linf(:,:,i,t)  	= eye(mm) - Kinf(:,i,t)*Z(i,:)/Finf(i,t);
+      L0(:,:,i,t)  	= (Kinf(:,i,t)*Fstar(i,t)/Finf(i,t) - Kstar(:,i,t))*Z(i,:)/Finf(i,t);
+      a(:,t)		= a(:,t) + Kinf(:,i,t)*v(i,t)/Finf(i,t);
+      Pstar(:,:,t)	= Pstar(:,:,t) + ...
+	  Kinf(:,i,t)*transpose(Kinf(:,i,t))*Fstar(i,t)/(Finf(i,t)*Finf(i,t)) - ...
+	  (Kstar(:,i,t)*transpose(Kinf(:,i,t)) +...
+	   Kinf(:,i,t)*transpose(Kstar(:,i,t)))/Finf(i,t);
+      Pinf(:,:,t)	= Pinf(:,:,t) - Kinf(:,i,t)*transpose(Kinf(:,i,t))/Finf(i,t);
+      Pstar(:,:,t)=tril(Pstar(:,:,t))+transpose(tril(Pstar(:,:,t),-1));
+      Pinf(:,:,t)=tril(Pinf(:,:,t))+transpose(tril(Pinf(:,:,t),-1));
+      % new terminiation criteria by M. Ratto
+      P0=Pinf(:,:,t);
+      %             newRank = any(diag(P0(mf,mf))>crit);
+      %             if newRank==0, id = i; end,
+      if ~isempty(options_.diffuse_d),  
+	newRank = (icc<options_.diffuse_d);  
+	%if newRank & any(diag(P0(mf,mf))>crit)==0; 
+	if newRank & (any(diag(P0(mf,mf))>crit)==0 & rank(P0,crit1)==0); 
+	  disp('WARNING!! Change in OPTIONS_.DIFFUSE_D in univariate DKF')
+	  options_.diffuse_d = icc;
+	  newRank=0;
+	end
+      else
+	%newRank = any(diag(P0(mf,mf))>crit);                 
+	newRank = (any(diag(P0(mf,mf))>crit) | rank(P0,crit1));                 
+	if newRank==0, 
+	  options_.diffuse_d = icc;
+	end                    
+      end,
+      if newRank==0, 
+	options_.diffuse_d=i;
+      end                    
+      % end new terminiation criteria by M. Ratto
+    else 
+      %% Note that : (1) rank(Pinf)=0 implies that Finf = 0, (2) outside this loop (when for some i and t the condition
+      %% rank(Pinf)=0 is satisfied we have P = Pstar and F = Fstar and (3) Finf = 0 does not imply that
+      %% rank(Pinf)=0. [st�phane,11-03-2004].	  
+      Li(:,:,i,t)    = eye(mm)-Kstar(:,i,t)*Z(i,:)/Fstar(i,t);  % we need to store Li for DKF smoother
+      a(:,t) 		= a(:,t) + Kstar(:,i,t)*v(i,t)/Fstar(i,t);
+      Pstar(:,:,t)	= Pstar(:,:,t) - Kstar(:,i,t)*transpose(Kstar(:,i,t))/Fstar(i,t);
+      Pstar(:,:,t)=tril(Pstar(:,:,t))+transpose(tril(Pstar(:,:,t),-1));
+    end
+  end
+  a(:,t+1) 	 	= T*a(:,t);
+  for jnk=1:nk,
+    aK(jnk,:,t+jnk) 	 	= T^jnk*a(:,t);
+  end
+  Pstar(:,:,t+1)	= T*Pstar(:,:,t)*transpose(T)+ QQ;
+  Pinf(:,:,t+1)	= T*Pinf(:,:,t)*transpose(T);
+  P0=Pinf(:,:,t+1);
+  if newRank,
+    %newRank = any(diag(P0(mf,mf))>crit);
+    newRank	  = rank(P0,crit1);
+  end
+end
+
+
+d = t;
+P(:,:,d+1) = Pstar(:,:,d+1);
+Linf  = Linf(:,:,:,1:d);
+L0  = L0(:,:,:,1:d);
+Fstar = Fstar(:,1:d);
+Finf = Finf(:,1:d);
+Kstar = Kstar(:,:,1:d);
+Pstar = Pstar(:,:,1:d);
+Pinf  = Pinf(:,:,1:d);
+Pstar1 = Pstar1(:,:,1:d);
+Pinf1  = Pinf1(:,:,1:d);
+notsteady = 1;
+while notsteady & t<smpl
+  t = t+1;
+  a1(:,t) = a(:,t);
+  P(:,:,t)=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1));
+  P1(:,:,t) = P(:,:,t);
+  for i=1:pp
+    v(i,t)  = Y(i,t) - a(mf(i),t) - trend(i,t);
+    Fi(i,t) = P(mf(i),mf(i),t);
+    Ki(:,i,t) = P(:,mf(i),t);
+    if Fi(i,t) > crit
+      Li(:,:,i,t)    = eye(mm)-Ki(:,i,t)*Z(i,:)/Fi(i,t);
+      a(:,t) = a(:,t) + Ki(:,i,t)*v(i,t)/Fi(i,t);
+      P(:,:,t) = P(:,:,t) - Ki(:,i,t)*transpose(Ki(:,i,t))/Fi(i,t);
+      P(:,:,t)=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1));
+    end
+  end
+  a(:,t+1) = T*a(:,t);
+  for jnk=1:nk,
+    aK(jnk,:,t+jnk) 	 	= T^jnk*a(:,t);
+  end
+  P(:,:,t+1) = T*P(:,:,t)*transpose(T) + QQ;
+  notsteady   = ~(max(max(abs(P(:,:,t+1)-P(:,:,t))))<crit);
+end
+P_s=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1));
+Fi_s = Fi(:,t);
+Ki_s = Ki(:,:,t);
+L_s  =Li(:,:,:,t);
+if t<smpl
+  t_steady = t+1;
+  P  = cat(3,P(:,:,1:t),repmat(P(:,:,t),[1 1 smpl-t_steady+1]));
+  Fi = cat(2,Fi(:,1:t),repmat(Fi_s,[1 1 smpl-t_steady+1]));
+  Li  = cat(4,Li(:,:,:,1:t),repmat(L_s,[1 1 smpl-t_steady+1]));
+  Ki  = cat(3,Ki(:,:,1:t),repmat(Ki_s,[1 1 smpl-t_steady+1]));
+end
+while t<smpl
+  t=t+1;
+  a1(:,t) = a(:,t);
+  for i=1:pp
+    v(i,t)      = Y(i,t) - a(mf(i),t) - trend(i,t);
+    if Fi_s(i) > crit
+      a(:,t) = a(:,t) + Ki_s(:,i)*v(i,t)/Fi_s(i);
+    end
+  end
+  a(:,t+1) = T*a(:,t);
+  for jnk=1:nk,
+    aK(jnk,:,t+jnk)	= T^jnk*a(:,t);
+  end
+end
+a1(:,t+1) = a(:,t+1);
+ri=r;
+t = smpl+1;
+while t>d+1 & t>2,
+  t = t-1;
+  for i=pp:-1:1
+    if Fi(i,t) > crit
+      ri(:,t)=transpose(Z(i,:))/Fi(i,t)*v(i,t)+transpose(Li(:,:,i,t))*ri(:,t);
+    end
+  end
+  r(:,t-1) = ri(:,t);
+  alphahat(:,t)	= a1(:,t) + P1(:,:,t)*r(:,t-1);
+  etahat(:,t)		= QRt*r(:,t);
+  ri(:,t-1) = transpose(T)*ri(:,t);
+end
+if d
+  r0 = zeros(mm,d); r0(:,d) = ri(:,d);
+  r1 = zeros(mm,d);
+  for t = d:-1:2
+    for i=pp:-1:1
+      if Finf(i,t) > crit & ~(t==d & i>options_.diffuse_d),  % use of options_.diffuse_d to be sure of DKF termination
+					     %r1(:,t) = transpose(Z)*v(:,t)/Finf(i,t) + ... BUG HERE in transpose(Z)
+					     r1(:,t) = transpose(Z(i,:))*v(i,t)/Finf(i,t) + ...
+						       transpose(L0(:,:,i,t))*r0(:,t) + transpose(Linf(:,:,i,t))*r1(:,t);
+					     r0(:,t) = transpose(Linf(:,:,i,t))*r0(:,t);
+      elseif Fstar(i,t) > crit % step needed whe Finf == 0
+	r0(:,t)=transpose(Z(i,:))/Fstar(i,t)*v(i,t)+Li(:,:,i,t)'*r0(:,t);
+      end
+    end
+    alphahat(:,t)	= a1(:,t) + Pstar1(:,:,t)*r0(:,t) + Pinf1(:,:,t)*r1(:,t);
+    r(:,t-1)		= r0(:,t);
+    etahat(:,t)		= QRt*r(:,t);
+    r0(:,t-1) = transpose(T)*r0(:,t);
+    r1(:,t-1) = transpose(T)*r1(:,t);
+  end
+  r0_0 = r0(:,1);
+  r1_0 = r1(:,1);
+  for i=pp:-1:1
+    if Finf(i,1) > crit,
+      %r1_0 = transpose(Z)*v(:,1)/Finf(i,1) + ... %bug with Z here
+      r1_0 = transpose(Z(i,:))*v(i,1)/Finf(i,1) + ...
+	     transpose(L0(:,:,i,1))*r0_0 + transpose(Linf(:,:,i,1))*r1_0;
+      r0_0 = transpose(Linf(:,:,i,1))*r0_0;
+    elseif Fstar(i,1) > crit, % step needed when Finf=0
+      r0_0=transpose(Z(i,:))/Fstar(i,1)*v(i,1)+Li(:,:,i,1)'*r0_0;
+    end
+  end
+  %alphahat(:,1)  	= a(:,1) + Pstar(:,:,1)*r0_0 + Pinf(:,:,1)*r1_0; %this line is buggy
+  alphahat(:,1)  	= a1(:,1) + Pstar1(:,:,1)*r0_0 + Pinf1(:,:,1)*r1_0;
+  etahat(:,1)		= QRt*r(:,1);
+else
+  r0 = ri(:,1);
+  for i=pp:-1:1
+    if Fi(i,1) > crit
+      r0=transpose(Z(i,:))/Fi(i,1)*v(i,1)+transpose(Li(:,:,i,1))*r0;
+    end
+  end 
+  %alphahat(:,1)	= a(:,1) + P(:,:,1)*r0;  % this line is buggy
+  alphahat(:,1)	= a1(:,1) + P1(:,:,1)*r0;
+  etahat(:,1)	= QRt*r(:,1);
+end
+
diff --git a/tags/v_3.062/matlab/DiffuseKalmanSmootherH.m b/tags/v_3.062/matlab/DiffuseKalmanSmootherH.m
new file mode 100644
index 0000000000..6aed813cbe
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseKalmanSmootherH.m
@@ -0,0 +1,112 @@
+function [alphahat,epsilonhat,etahat,a] = DiffuseKalmanSmootherH(T,R,Q,H,Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf)
+% stephane.adjemian@cepremap.cnrs.fr [09-16-2004]
+% 
+%   See "Filtering and Smoothing of State Vector for Diffuse State Space
+%   Models", S.J. Koopman and J. Durbin (2003, in Journal of Time Series 
+%   Analysis, vol. 24(1), pp. 85-98).  
+spinf   = size(Pinf1);
+spstar  = size(Pstar1);
+v       = zeros(pp,smpl);
+a       = zeros(mm,smpl+1);
+iF      = zeros(pp,pp,smpl);
+Fstar   = zeros(pp,pp,smpl);
+iFinf   = zeros(pp,pp,smpl);
+K       = zeros(mm,pp,smpl);
+L       = zeros(mm,mm,smpl);
+Linf    = zeros(mm,mm,smpl);
+Kstar   = zeros(mm,pp,smpl);
+P       = zeros(mm,mm,smpl+1);
+Pstar   = zeros(spstar(1),spstar(2),smpl+1); Pstar(:,:,1) = Pstar1;
+Pinf    = zeros(spinf(1),spinf(2),smpl+1); Pinf(:,:,1) = Pinf1;
+crit    = 10^(-12);
+steady  = smpl;
+rr      = size(Q,1);
+QQ      = R*Q*transpose(R);
+QRt		= Q*transpose(R);
+
+Z = zeros(pp,mm);
+for i=1:pp;
+	Z(i,mf(i)) = 1;
+end
+
+t = 0;
+while rank(Pinf(:,:,t+1),crit) & t<smpl
+    t = t+1;
+    v(:,t) 		 	= Y(:,t) - a(mf,t) - trend(:,t);
+    iFinf(:,:,t) 	= inv(Pinf(mf,mf,t));
+    Kinf(:,:,t)	 	= T*Pinf(:,mf,t)*iFinf(:,:,t);
+    a(:,t+1) 	 	= T*a(:,t) + Kinf(:,:,t)*v(:,t);
+    Linf(:,:,t)  	= T - Kinf(:,:,t)*Z;
+    Fstar(:,:,t) 	= Pstar(mf,mf,t) + H;
+    Kstar(:,:,t) 	= (T*Pstar(:,mf,t)-Kinf(:,:,t)*Fstar(:,:,t))*iFinf(:,:,t);
+    Pstar(:,:,t+1)	= T*Pstar(:,:,t)*transpose(T)-T*Pstar(:,mf,t)*transpose(Kinf(:,:,t))-Kinf(:,:,t)*Pinf(mf,mf,t)*transpose(Kstar(:,:,t)) + QQ;
+    Pinf(:,:,t+1)	= T*Pinf(:,:,t)*transpose(T)-T*Pinf(:,mf,t)*transpose(Kinf(:,:,t));
+end
+d = t;
+P(:,:,d+1) = Pstar(:,:,d+1);
+iFinf = iFinf(:,:,1:d);
+Linf  = Linf(:,:,1:d);
+Fstar = Fstar(:,:,1:d);
+Kstar = Kstar(:,:,1:d);
+%Kstar = Kinf(:,:,1:d);
+Pstar = Pstar(:,:,1:d);
+Pinf  = Pinf(:,:,1:d);
+notsteady = 1;
+while notsteady & t<smpl
+    t = t+1;
+    v(:,t)      = Y(:,t) - a(mf,t) - trend(:,t);
+    iF(:,:,t)   = inv(P(mf,mf,t)+H);
+    K(:,:,t)    = T*P(:,mf,t)*iF(:,:,t);
+    L(:,:,t)    = T-K(:,:,t)*Z;
+    a(:,t+1)    = T*a(:,t) + K(:,:,t)*v(:,t);    
+    P(:,:,t+1)  = T*P(:,:,t)*transpose(T)-T*P(:,mf,t)*transpose(K(:,:,t)) + QQ;
+    notsteady   = ~(max(max(abs(P(:,:,t+1)-P(:,:,t))))<crit);
+end
+K_s = K(:,:,t); % ?? MJ
+iF_s = iF(:,:,t); % ?? MJ
+P_s = P(:,:,t+1); % ?? MJ
+if t<smpl
+	t_steady = t+1;
+	P  = cat(3,P(:,:,1:t),repmat(P(:,:,t),[1 1 smpl-t_steady+1]));
+	iF = cat(3,iF(:,:,1:t),repmat(inv(P_s(mf,mf) + H),[1 1 smpl-t_steady+1]));
+	L  = cat(3,L(:,:,1:t),repmat(T-K_s*Z,[1 1 smpl-t_steady+1]));
+	K  = cat(3,K(:,:,1:t),repmat(T*P_s(:,mf)*iF_s,[1 1 smpl-t_steady+1]));
+end
+while t<smpl
+    t=t+1;
+    v(:,t) = Y(:,t) - a(mf,t) - trend(:,t);
+    a(:,t+1) = T*a(:,t) + K_s*v(:,t);
+end
+alphahat   = zeros(mm,smpl);
+epsilonhat = zeros(pp,smpl);
+etahat	   = zeros(rr,smpl);
+r 		   = zeros(mm,smpl);
+t = smpl+1;
+while t>d+2
+	t = t-1;
+    r(:,t-1) = transpose(Z)*iF(:,:,t)*v(:,t) + transpose(L(:,:,t))*r(:,t);
+    alphahat(:,t)	= a(:,t) + P(:,:,t)*r(:,t-1);
+	etahat(:,t)		= QRt*r(:,t);
+	epsilonhat(:,t)	= H*(iF(:,:,t)*v(:,t)-transpose(K(:,:,t))*r(:,t));
+end
+if d
+	r0 = zeros(mm,d); r0(:,d) = r(:,d);
+	r1 = zeros(mm,d);
+	for t = d:-1:2
+    	r0(:,t-1) = transpose(Linf(:,:,t))*r0(:,t);
+		r1(:,t-1) = transpose(Z)*(iFinf(:,:,t)*v(:,t)-transpose(Kstar(:,:,t))*r0(:,t)) + transpose(Linf(:,:,t))*r1(:,t);
+		alphahat(:,t)	= a(:,t) + Pstar(:,:,t)*r0(:,t-1) + Pinf(:,:,t)*r1(:,t-1);
+		etahat(:,t)		= QRt*r0(:,t);
+		epsilonhat(:,t)	= -H*transpose(Kinf(:,:,t))*r0(:,t);
+	end
+	r0_0 = transpose(Linf(:,:,1))*r0(:,1);
+	r1_0 = transpose(Z)*(iFinf(:,:,1)*v(:,1)-transpose(Kstar(:,:,1))*r0(:,1)) + transpose(Linf(:,:,1))*r1(:,1);
+	alphahat(:,1)  	= a(:,1) + Pstar(:,:,1)*r0_0 + Pinf(:,:,1)*r1_0;
+	etahat(:,1)		= QRt*r0_0(:,1);
+	epsilonhat(:,1)	= -H*transpose(Kinf(:,:,1))*r0_0(:,1);
+else
+      r0 = transpose(Z)*iF(:,:,1)*v(:,1) + transpose(L(:,:,1))*r(:,1);
+      alphahat(:,1)	= a(:,1) + P(:,:,1)*r0;
+      etahat(:,1)	= QRt*r(:,1);
+      epsilonhat(:,1)	= H*(iF(:,:,1)*v(:,1)-transpose(K(:,:,1))*r(:,1));
+end
diff --git a/tags/v_3.062/matlab/DiffuseKalmanSmootherH1.m b/tags/v_3.062/matlab/DiffuseKalmanSmootherH1.m
new file mode 100644
index 0000000000..d6c038e6e4
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseKalmanSmootherH1.m
@@ -0,0 +1,138 @@
+function [alphahat,epsilonhat,etahat,a, aK] = DiffuseKalmanSmootherH1(T,R,Q,H,Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf)
+% modified by M. Ratto:
+% new output argument aK (1-step to k-step predictions)
+% new options_.nk: the max step ahed prediction in aK (default is 4)
+% new crit1 value for rank of Pinf
+% it is assured that P is symmetric 
+%
+% stephane.adjemian@cepremap.cnrs.fr [09-16-2004]
+% 
+%   See "Filtering and Smoothing of State Vector for Diffuse State Space
+%   Models", S.J. Koopman and J. Durbin (2003, in Journal of Time Series 
+%   Analysis, vol. 24(1), pp. 85-98).  
+
+global options_
+
+nk = options_.nk;
+spinf   	= size(Pinf1);
+spstar  	= size(Pstar1);
+v       	= zeros(pp,smpl);
+a       	= zeros(mm,smpl+1);
+iF      	= zeros(pp,pp,smpl);
+Fstar   	= zeros(pp,pp,smpl);
+iFinf   	= zeros(pp,pp,smpl);
+K       	= zeros(mm,pp,smpl);
+L       	= zeros(mm,mm,smpl);
+Linf    	= zeros(mm,mm,smpl);
+Kstar   	= zeros(mm,pp,smpl);
+P       	= zeros(mm,mm,smpl+1);
+Pstar   	= zeros(spstar(1),spstar(2),smpl+1); Pstar(:,:,1) = Pstar1;
+Pinf    	= zeros(spinf(1),spinf(2),smpl+1); Pinf(:,:,1) = Pinf1;
+crit    	= options_.kalman_tol;
+crit1       = 1.e-8;
+steady  	= smpl;
+rr      	= size(Q,1);
+QQ      	= R*Q*transpose(R);
+QRt			= Q*transpose(R);
+alphahat   	= zeros(mm,smpl);
+etahat	   	= zeros(rr,smpl);
+epsilonhat      = zeros(size(Y));
+r 		   	= zeros(mm,smpl);
+
+Z = zeros(pp,mm);
+for i=1:pp;
+	Z(i,mf(i)) = 1;
+end
+
+t = 0;
+while rank(Pinf(:,:,t+1),crit1) & t<smpl
+    t = t+1;
+    v(:,t) 		 	= Y(:,t) - a(mf,t) - trend(:,t);
+    if rcond(Pinf(mf,mf,t)) < crit
+    	return		
+    end
+    iFinf(:,:,t) 	= inv(Pinf(mf,mf,t));
+    Kinf(:,:,t)	 	= T*Pinf(:,mf,t)*iFinf(:,:,t);
+    a(:,t+1) 	 	= T*a(:,t) + Kinf(:,:,t)*v(:,t);
+    aK(1,:,t+1) 	 	= a(:,t+1);
+    for jnk=2:nk,
+        aK(jnk,:,t+jnk) 	 	= T^(jnk-1)*a(:,t+1);
+    end
+    Linf(:,:,t)  	= T - Kinf(:,:,t)*Z;
+    Fstar(:,:,t) 	= Pstar(mf,mf,t) + H;
+    Kstar(:,:,t) 	= (T*Pstar(:,mf,t)-Kinf(:,:,t)*Fstar(:,:,t))*iFinf(:,:,t);
+    Pstar(:,:,t+1)	= T*Pstar(:,:,t)*transpose(T)-T*Pstar(:,mf,t)*transpose(Kinf(:,:,t))-Kinf(:,:,t)*Pinf(mf,mf,t)*transpose(Kstar(:,:,t)) + QQ;
+    Pinf(:,:,t+1)	= T*Pinf(:,:,t)*transpose(T)-T*Pinf(:,mf,t)*transpose(Kinf(:,:,t));
+end
+d = t;
+P(:,:,d+1) = Pstar(:,:,d+1);
+iFinf = iFinf(:,:,1:d);
+Linf  = Linf(:,:,1:d);
+Fstar = Fstar(:,:,1:d);
+Kstar = Kstar(:,:,1:d);
+Pstar = Pstar(:,:,1:d);
+Pinf  = Pinf(:,:,1:d);
+notsteady = 1;
+while notsteady & t<smpl
+    t = t+1;
+    v(:,t)      = Y(:,t) - a(mf,t) - trend(:,t);
+    P(:,:,t)=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1));
+    if rcond(P(mf,mf,t) + H) < crit
+    	return		
+    end    
+    iF(:,:,t)   = inv(P(mf,mf,t) + H);
+    K(:,:,t)    = T*P(:,mf,t)*iF(:,:,t);
+    L(:,:,t)    = T-K(:,:,t)*Z;
+    a(:,t+1)    = T*a(:,t) + K(:,:,t)*v(:,t);    
+    aK(1,:,t+1) 	 	= a(:,t+1);
+    for jnk=2:nk,
+        aK(jnk,:,t+jnk) 	 	= T^(jnk-1)*a(:,t+1);
+    end
+    P(:,:,t+1)  = T*P(:,:,t)*transpose(T)-T*P(:,mf,t)*transpose(K(:,:,t)) + QQ;
+    notsteady   = ~(max(max(abs(P(:,:,t+1)-P(:,:,t))))<crit);
+end
+K_s = K(:,:,t);
+iF_s = iF(:,:,t);
+P_s = P(:,:,t+1);
+if t<smpl
+	t_steady = t+1;
+	P  = cat(3,P(:,:,1:t),repmat(P(:,:,t),[1 1 smpl-t_steady+1]));
+	iF = cat(3,iF(:,:,1:t),repmat(inv(P_s(mf,mf)+H),[1 1 smpl-t_steady+1]));
+	L  = cat(3,L(:,:,1:t),repmat(T-K_s*Z,[1 1 smpl-t_steady+1]));
+	K  = cat(3,K(:,:,1:t),repmat(T*P_s(:,mf)*iF_s,[1 1 smpl-t_steady+1]));
+end
+while t<smpl
+    t=t+1;
+    v(:,t) = Y(:,t) - a(mf,t) - trend(:,t);
+    a(:,t+1) = T*a(:,t) + K_s*v(:,t);
+    aK(1,:,t+1) 	 	= a(:,t+1);
+    for jnk=2:nk,
+        aK(jnk,:,t+jnk) 	 	= T^(jnk-1)*a(:,t+1);
+    end
+end
+t = smpl+1;
+while t>d+1 & t>2
+	t = t-1;
+    r(:,t-1) = transpose(Z)*iF(:,:,t)*v(:,t) + transpose(L(:,:,t))*r(:,t);
+    alphahat(:,t)	= a(:,t) + P(:,:,t)*r(:,t-1);
+	etahat(:,t)		= QRt*r(:,t);
+end
+if d
+	r0 = zeros(mm,d); r0(:,d) = r(:,d);
+	r1 = zeros(mm,d);
+	for t = d:-1:2
+    	r0(:,t-1) = transpose(Linf(:,:,t))*r0(:,t);
+		r1(:,t-1) = transpose(Z)*(iFinf(:,:,t)*v(:,t)-transpose(Kstar(:,:,t))*r0(:,t)) + transpose(Linf(:,:,t))*r1(:,t);
+		alphahat(:,t)	= a(:,t) + Pstar(:,:,t)*r0(:,t-1) + Pinf(:,:,t)*r1(:,t-1);
+		etahat(:,t)		= QRt*r0(:,t);
+	end
+	r0_0 = transpose(Linf(:,:,1))*r0(:,1);
+	r1_0 = transpose(Z)*(iFinf(:,:,1)*v(:,1)-transpose(Kstar(:,:,1))*r0(:,1)) + transpose(Linf(:,:,1))*r1(:,1);
+	alphahat(:,1)  	= a(:,1) + Pstar(:,:,1)*r0_0 + Pinf(:,:,1)*r1_0;
+	etahat(:,1)		= QRt*r0(:,1);
+else
+    r0 = transpose(Z)*iF(:,:,1)*v(:,1) + transpose(L(:,:,1))*r(:,1);
+    alphahat(:,1)	= a(:,1) + P(:,:,1)*r0;
+    etahat(:,1)	= QRt*r(:,1);
+end
+epsilonhat = Y-alphahat(mf,:)-trend;
diff --git a/tags/v_3.062/matlab/DiffuseKalmanSmootherH3.m b/tags/v_3.062/matlab/DiffuseKalmanSmootherH3.m
new file mode 100644
index 0000000000..09bfa89246
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseKalmanSmootherH3.m
@@ -0,0 +1,255 @@
+function [alphahat,epsilonhat,etahat,a1, aK] = DiffuseKalmanSmootherH3(T,R,Q,H,Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf)
+% Modified by M. Ratto
+% New output argument aK: 1-step to nk-stpe ahed predictions)
+% New input argument nk: max order of predictions in aK
+% New global variable id_ where the DKF stops (common with
+% diffuselikelihood3)
+% New icc variable to count number of iterations for Finf steps
+% Pstar % Pinf simmetric
+% New termination of DKF iterations based on id_
+% Li also stored during DKF iterations !!
+% some bugs corrected in the DKF part of the smoother (Z matrix and
+% alphahat)
+%
+% stephane.adjemian@cepremap.cnrs.fr [09-16-2004]
+% 
+%   See "Fast Filtering and Smoothing for Multivariate State Space
+%   Models", S.J. Koopman and J. Durbin (2000, in Journal of Time Series 
+%   Analysis, vol. 21(3), pp. 281-296).  
+
+global options_
+
+nk = options_.nk;
+spinf   	= size(Pinf1);
+spstar  	= size(Pstar1);
+v       	= zeros(pp,smpl);
+a       	= zeros(mm,smpl+1);
+a1			= a;
+aK          = zeros(nk,mm,smpl+nk);
+Fstar   	= zeros(pp,smpl);
+Finf		= zeros(pp,smpl);
+Ki       	= zeros(mm,pp,smpl);
+Li      	= zeros(mm,mm,pp,smpl);
+Linf    	= zeros(mm,mm,pp,smpl);
+L0      	= zeros(mm,mm,pp,smpl);
+Kstar   	= zeros(mm,pp,smpl);
+P       	= zeros(mm,mm,smpl+1);
+P1			= P;
+Pstar   	= zeros(spstar(1),spstar(2),smpl+1); Pstar(:,:,1) = Pstar1;
+Pinf    	= zeros(spinf(1),spinf(2),smpl+1); Pinf(:,:,1) = Pinf1;
+Pstar1 		= Pstar;
+Pinf1  		= Pinf;
+crit   	 	= options_.kalman_tol;
+crit1       = 1.e-6;
+steady  	= smpl;
+rr      	= size(Q,1);
+QQ      	= R*Q*transpose(R);
+QRt			= Q*transpose(R);
+alphahat   	= zeros(mm,smpl);
+etahat	   	= zeros(rr,smpl);
+epsilonhat      = zeros(size(Y));
+r 		   	= zeros(mm,smpl);
+
+Z = zeros(pp,mm);
+for i=1:pp;
+	Z(i,mf(i)) = 1;
+end
+
+t = 0;
+icc=0;
+newRank	  = rank(Pinf(:,:,1),crit1);
+while newRank & t < smpl
+  t = t+1;
+  a1(:,t) = a(:,t);
+  Pstar(:,:,t)=tril(Pstar(:,:,t))+transpose(tril(Pstar(:,:,t),-1));
+  Pinf(:,:,t)=tril(Pinf(:,:,t))+transpose(tril(Pinf(:,:,t),-1));
+  Pstar1(:,:,t) = Pstar(:,:,t);
+  Pinf1(:,:,t) = Pinf(:,:,t);
+  for i=1:pp
+    v(i,t) 	= Y(i,t)-a(mf(i),t)-trend(i,t);
+    Fstar(i,t) 	= Pstar(mf(i),mf(i),t) + H(i,i);
+    Finf(i,t)	= Pinf(mf(i),mf(i),t);
+    Kstar(:,i,t) 	= Pstar(:,mf(i),t);
+    if Finf(i,t) > crit & newRank,  % original MJ: if Finf(i,t) > crit
+      icc=icc+1;
+      Kinf(:,i,t)	= Pinf(:,mf(i),t);
+      Linf(:,:,i,t)  	= eye(mm) - Kinf(:,i,t)*Z(i,:)/Finf(i,t);
+      L0(:,:,i,t)  	= (Kinf(:,i,t)*Fstar(i,t)/Finf(i,t) - Kstar(:,i,t))*Z(i,:)/Finf(i,t);
+      a(:,t)		= a(:,t) + Kinf(:,i,t)*v(i,t)/Finf(i,t);
+      Pstar(:,:,t)	= Pstar(:,:,t) + ...
+	  Kinf(:,i,t)*transpose(Kinf(:,i,t))*Fstar(i,t)/(Finf(i,t)*Finf(i,t)) - ...
+	  (Kstar(:,i,t)*transpose(Kinf(:,i,t)) +...
+	   Kinf(:,i,t)*transpose(Kstar(:,i,t)))/Finf(i,t);
+      Pinf(:,:,t)	= Pinf(:,:,t) - Kinf(:,i,t)*transpose(Kinf(:,i,t))/Finf(i,t);
+      Pstar(:,:,t)=tril(Pstar(:,:,t))+transpose(tril(Pstar(:,:,t),-1));
+      Pinf(:,:,t)=tril(Pinf(:,:,t))+transpose(tril(Pinf(:,:,t),-1));
+      % new terminiation criteria by M. Ratto
+      P0=Pinf(:,:,t);
+      %             newRank = any(diag(P0(mf,mf))>crit);
+      %             if newRank==0, options_.diffuse_d = i; end,
+      if ~isempty(options_.diffuse_d),  
+	newRank = (icc<options_.diffuse_d);  
+	%if newRank & any(diag(P0(mf,mf))>crit)==0; 
+	if newRank & (any(diag(P0(mf,mf))>crit)==0 & rank(P0,crit1)==0); 
+	  disp('WARNING!! Change in OPTIONS_.DIFFUSE_D in univariate DKF')
+	  options_.diffuse_d = icc;
+	  newRank=0;
+	end
+      else
+	%newRank = any(diag(P0(mf,mf))>crit);                 
+	newRank = (any(diag(P0(mf,mf))>crit) | rank(P0,crit1));                 
+	if newRank==0, 
+	  options_.diffuse_d = icc;
+	end                    
+      end,
+      if newRank==0, 
+	options_.diffuse_d=i;
+      end                    
+      % end new terminiation criteria by M. Ratto
+    else 
+      %% Note that : (1) rank(Pinf)=0 implies that Finf = 0, (2) outside this loop (when for some i and t the condition
+      %% rank(Pinf)=0 is satisfied we have P = Pstar and F = Fstar and (3) Finf = 0 does not imply that
+      %% rank(Pinf)=0. [st�phane,11-03-2004].	  
+      Li(:,:,i,t)    = eye(mm)-Kstar(:,i,t)*Z(i,:)/Fstar(i,t);  % we need to store Li for DKF smoother
+      a(:,t) 		= a(:,t) + Kstar(:,i,t)*v(i,t)/Fstar(i,t);
+      Pstar(:,:,t)	= Pstar(:,:,t) - Kstar(:,i,t)*transpose(Kstar(:,i,t))/Fstar(i,t);
+      Pstar(:,:,t)=tril(Pstar(:,:,t))+transpose(tril(Pstar(:,:,t),-1));
+    end
+  end
+  a(:,t+1) 	 	= T*a(:,t);
+  for jnk=1:nk,
+    aK(jnk,:,t+jnk) 	 	= T^jnk*a(:,t);
+  end
+  Pstar(:,:,t+1)	= T*Pstar(:,:,t)*transpose(T)+ QQ;
+  Pinf(:,:,t+1)	= T*Pinf(:,:,t)*transpose(T);
+  P0=Pinf(:,:,t+1);
+  if newRank,
+    %newRank = any(diag(P0(mf,mf))>crit);
+    newRank	  = rank(P0,crit1);
+  end
+end
+
+
+d = t;
+P(:,:,d+1) = Pstar(:,:,d+1);
+Linf  = Linf(:,:,:,1:d);
+L0  = L0(:,:,:,1:d);
+Fstar = Fstar(:,1:d);
+Finf = Finf(:,1:d);
+Kstar = Kstar(:,:,1:d);
+Pstar = Pstar(:,:,1:d);
+Pinf  = Pinf(:,:,1:d);
+Pstar1 = Pstar1(:,:,1:d);
+Pinf1  = Pinf1(:,:,1:d);
+notsteady = 1;
+while notsteady & t<smpl
+  t = t+1;
+  a1(:,t) = a(:,t);
+  P(:,:,t)=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1));
+  P1(:,:,t) = P(:,:,t);
+  for i=1:pp
+    v(i,t)  = Y(i,t) - a(mf(i),t) - trend(i,t);
+    Fi(i,t) = P(mf(i),mf(i),t);
+    Ki(:,i,t) = P(:,mf(i),t) + H(i,i);
+    if Fi(i,t) > crit
+      Li(:,:,i,t)    = eye(mm)-Ki(:,i,t)*Z(i,:)/Fi(i,t);
+      a(:,t) = a(:,t) + Ki(:,i,t)*v(i,t)/Fi(i,t);
+      P(:,:,t) = P(:,:,t) - Ki(:,i,t)*transpose(Ki(:,i,t))/Fi(i,t);
+      P(:,:,t)=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1));
+    end
+  end
+  a(:,t+1) = T*a(:,t);
+  for jnk=1:nk,
+    aK(jnk,:,t+jnk) 	 	= T^jnk*a(:,t);
+  end
+  P(:,:,t+1) = T*P(:,:,t)*transpose(T) + QQ;
+  notsteady   = ~(max(max(abs(P(:,:,t+1)-P(:,:,t))))<crit);
+end
+P_s=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1));
+Fi_s = Fi(:,t);
+Ki_s = Ki(:,:,t);
+L_s  =Li(:,:,:,t);
+if t<smpl
+  t_steady = t+1;
+  P  = cat(3,P(:,:,1:t),repmat(P(:,:,t),[1 1 smpl-t_steady+1]));
+  Fi = cat(2,Fi(:,1:t),repmat(Fi_s,[1 1 smpl-t_steady+1]));
+  Li  = cat(4,Li(:,:,:,1:t),repmat(L_s,[1 1 smpl-t_steady+1]));
+  Ki  = cat(3,Ki(:,:,1:t),repmat(Ki_s,[1 1 smpl-t_steady+1]));
+end
+while t<smpl
+  t=t+1;
+  a1(:,t) = a(:,t);
+  for i=1:pp
+    v(i,t)      = Y(i,t) - a(mf(i),t) - trend(i,t);
+    if Fi_s(i) > crit
+      a(:,t) = a(:,t) + Ki_s(:,i)*v(i,t)/Fi_s(i);
+    end
+  end
+  a(:,t+1) = T*a(:,t);
+  for jnk=1:nk,
+    aK(jnk,:,t+jnk)	= T^jnk*a(:,t);
+  end
+end
+a1(:,t+1) = a(:,t+1);
+ri=r;
+t = smpl+1;
+while t>d+1 & t>2,
+  t = t-1;
+  for i=pp:-1:1
+    if Fi(i,t) > crit
+      ri(:,t)=transpose(Z(i,:))/Fi(i,t)*v(i,t)+transpose(Li(:,:,i,t))*ri(:,t);
+    end
+  end
+  r(:,t-1) = ri(:,t);
+  alphahat(:,t)	= a1(:,t) + P1(:,:,t)*r(:,t-1);
+  etahat(:,t)		= QRt*r(:,t);
+  ri(:,t-1) = transpose(T)*ri(:,t);
+end
+if d
+  r0 = zeros(mm,d); r0(:,d) = ri(:,d);
+  r1 = zeros(mm,d);
+  for t = d:-1:2
+    for i=pp:-1:1
+      if Finf(i,t) > crit & ~(t==d & i>options_.diffuse_d),  % use of options_.diffuse_d to be sure of DKF termination
+					     %r1(:,t) = transpose(Z)*v(:,t)/Finf(i,t) + ... BUG HERE in transpose(Z)
+					     r1(:,t) = transpose(Z(i,:))*v(i,t)/Finf(i,t) + ...
+						       transpose(L0(:,:,i,t))*r0(:,t) + transpose(Linf(:,:,i,t))*r1(:,t);
+					     r0(:,t) = transpose(Linf(:,:,i,t))*r0(:,t);
+      elseif Fstar(i,t) > crit % step needed whe Finf == 0
+	r0(:,t)=transpose(Z(i,:))/Fstar(i,t)*v(i,t)+Li(:,:,i,t)'*r0(:,t);
+      end
+    end
+    alphahat(:,t)	= a1(:,t) + Pstar1(:,:,t)*r0(:,t) + Pinf1(:,:,t)*r1(:,t);
+    r(:,t-1)		= r0(:,t);
+    etahat(:,t)		= QRt*r(:,t);
+    r0(:,t-1) = transpose(T)*r0(:,t);
+    r1(:,t-1) = transpose(T)*r1(:,t);
+  end
+  r0_0 = r0(:,1);
+  r1_0 = r1(:,1);
+  for i=pp:-1:1
+    if Finf(i,1) > crit,
+      %r1_0 = transpose(Z)*v(:,1)/Finf(i,1) + ... %bug with Z here
+      r1_0 = transpose(Z(i,:))*v(i,1)/Finf(i,1) + ...
+	     transpose(L0(:,:,i,1))*r0_0 + transpose(Linf(:,:,i,1))*r1_0;
+      r0_0 = transpose(Linf(:,:,i,1))*r0_0;
+    elseif Fstar(i,1) > crit, % step needed when Finf=0
+      r0_0=transpose(Z(i,:))/Fstar(i,1)*v(i,1)+Li(:,:,i,1)'*r0_0;
+    end
+  end
+  %alphahat(:,1)  	= a(:,1) + Pstar(:,:,1)*r0_0 + Pinf(:,:,1)*r1_0; %this line is buggy
+  alphahat(:,1)  	= a1(:,1) + Pstar1(:,:,1)*r0_0 + Pinf1(:,:,1)*r1_0;
+  etahat(:,1)		= QRt*r(:,1);
+else
+  r0 = ri(:,1);
+  for i=pp:-1:1
+    if Fi(i,1) > crit
+      r0=transpose(Z(i,:))/Fi(i,1)*v(i,1)+transpose(Li(:,:,i,1))*r0;
+    end
+  end 
+  %alphahat(:,1)	= a(:,1) + P(:,:,1)*r0;  % this line is buggy
+  alphahat(:,1)	= a1(:,1) + P1(:,:,1)*r0;
+  etahat(:,1)	= QRt*r(:,1);
+end
+epsilonhat = Y-alphahat(mf,:)-trend;
+
diff --git a/tags/v_3.062/matlab/DiffuseLikelihood1.m b/tags/v_3.062/matlab/DiffuseLikelihood1.m
new file mode 100644
index 0000000000..1beb7beacd
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseLikelihood1.m
@@ -0,0 +1,90 @@
+function LIK = DiffuseLikelihood1(T,R,Q,Pinf,Pstar,Y,trend,start)
+% stephane.adjemian@cepremap.cnrs.fr [07-19-2004]
+%
+% Same as DiffuseLikelihoodH1 without measurement error.
+  global bayestopt_ options_
+  
+  mf = bayestopt_.mf;
+  smpl = size(Y,2);
+  mm   = size(T,2);
+  pp   = size(Y,1);
+  a    = zeros(mm,1);
+  dF = 1;
+  QQ   = R*Q*transpose(R);
+  t    = 0;
+  lik  = zeros(smpl+1,1);
+  LIK  = Inf;
+  lik(smpl+1) = smpl*pp*log(2*pi);
+  notsteady   = 1;
+  crit        = options_.kalman_tol;
+  reste       = 0;
+  while rank(Pinf,crit) & t < smpl
+    t     = t+1;
+    v  	  = Y(:,t)-a(mf)-trend(:,t);
+    Finf  = Pinf(mf,mf);
+    if rcond(Finf) < crit 
+      if ~all(abs(Finf(:)) < crit)
+	return
+      else
+	iFstar	= inv(Pstar(mf,mf));
+	dFstar	= det(Pstar(mf,mf));
+	Kstar	= Pstar(:,mf)*iFstar;
+	lik(t)	= log(dFstar) + transpose(v)*iFstar*v;
+	Pinf	= T*Pinf*transpose(T);
+	Pstar	= T*(Pstar-Pstar(:,mf)*transpose(Kstar))*transpose(T)+QQ;
+	a		= T*(a+Kstar*v);
+      end
+    else
+      lik(t)	= log(det(Finf));
+      iFinf	= inv(Finf);
+      Kinf	= Pinf(:,mf)*iFinf;					%%	premultiplication by the transition matrix T is removed (stephane) 
+      Fstar	= Pstar(mf,mf);
+      Kstar	= (Pstar(:,mf)-Kinf*Fstar)*iFinf; 	%%	premultiplication by the transition matrix T is removed (stephane)
+      Pstar	= T*(Pstar-Pstar(:,mf)*transpose(Kinf)-Pinf(:,mf)*transpose(Kstar))*transpose(T)+QQ;
+      Pinf	= T*(Pinf-Pinf(:,mf)*transpose(Kinf))*transpose(T);
+      a		= T*(a+Kinf*v);					
+    end  
+  end
+  if t == smpl                                                           
+    error(['There isn''t enough information to estimate the initial' ... 
+	   ' conditions of the nonstationary variables']);                   
+  end                                                                    
+  F_singular = 1;
+  while notsteady & t < smpl
+    t  = t+1;
+    v  	  = Y(:,t)-a(mf)-trend(:,t);
+    F  = Pstar(mf,mf);
+    oldPstar  = Pstar;
+    dF = det(F);
+    if rcond(F) < crit 
+      if ~all(abs(F(:))<crit)
+	return
+      else
+	a         = T*a;
+	Pstar     = T*Pstar*transpose(T)+QQ;
+      end
+    else
+      F_singular = 0;
+      iF        = inv(F);
+      lik(t)    = log(dF)+transpose(v)*iF*v;
+      K         = Pstar(:,mf)*iF; %% premultiplication by the transition matrix T is removed (stephane)
+      a         = T*(a+K*v);		%% --> factorization of the transition matrix...
+      Pstar     = T*(Pstar-Pstar(:,mf)*iF*Pstar(mf,:))*transpose(T)+QQ;	%% ... idem (stephane)
+    end
+    notsteady = ~(max(max(abs(Pstar-oldPstar)))<crit);
+  end
+  if F_singular == 1
+    error(['The variance of the forecast error remains singular until the' ...
+	  'end of the sample'])
+  end
+  reste = smpl-t;
+  while t < smpl
+    t = t+1;
+    v = Y(:,t)-a(mf)-trend(:,t);
+    a = T*(a+K*v);
+    lik(t) = transpose(v)*iF*v;
+  end
+  lik(t) = lik(t) + reste*log(dF);
+
+
+  LIK    = .5*(sum(lik(start:end))-(start-1)*lik(smpl+1)/smpl);% Minus the log-likelihood.
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/DiffuseLikelihood3.m b/tags/v_3.062/matlab/DiffuseLikelihood3.m
new file mode 100644
index 0000000000..9c274c835a
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseLikelihood3.m
@@ -0,0 +1,222 @@
+function LIK = DiffuseLikelihood3(T,R,Q,Pinf,Pstar,Y,trend,start)%//Z,T,R,Q,Pinf,Pstar,Y)
+% changes by M. Ratto [April 2005]
+% introduced new global variable id_ for termination of DKF
+% introduced a persistent fmax, in order to keep track the max order of
+% magnitude of the 'zero' values in Pinf at DKF termination
+% new icc counter for Finf steps in DKF
+% new termination for DKF
+% likelihood terms for Fstar must be cumulated in DKF also when Pinf is non
+% zero. this bug is fixed.
+%
+% [4/5/2005] correctyed bug in the modified verson of Ratto for rank of Pinf 
+% introduced a specific crit1 for the DKF termination
+%
+% stepane.adjemian@cepremap.cnrs.fr [07-19-2004]
+% 
+%   See "Filtering and Smoothing of State Vector for Diffuse State Space
+%   Models", S.J. Koopman and J. Durbin (2003, in Journal of Time Series 
+%   Analysis, vol. 24(1), pp. 85-98).  
+%
+%	Case where F_{\infty,t} is singular ==> Univariate treatment of multivariate
+%	time series.
+%
+%   THE PROBLEM:
+% 
+%   y_t =   Z_t * \alpha_t + \varepsilon_t
+%   \alpha_{t+1} = T_t  * \alpha_t + R_t * \eta_t
+% 
+%   with:
+% 
+%   \alpha_1 = a + A*\delta + R_0*\eta_0
+%
+%   m*q matrix A and m*(m-q) matrix R_0 are selection matrices (their
+%   columns constitue all the columns of the m*m identity matrix) so that 
+%
+%       A'*R_0 = 0 and A'*\alpha_1 = \delta
+%
+%   We assume that the vector \delta is distributed as a N(0,\kappa*I_q)
+%   for a given  \kappa > 0. So that the expectation of \alpha_1 is a and
+%   its variance is P, with
+%
+%       P = \kappa*P_{\infty} + P_{\star}
+%
+%           P_{\infty} = A*A'
+%           P_{\star}  = R_0*Q_0*R_0'
+%
+%   P_{\infty} is a m*m diagonal matrix with q ones and m-q zeros. 
+%
+% 
+%   and where:
+% 
+%   y_t             is a pp*1 vector
+%   \alpha_t        is a mm*1 vector
+%   \varepsilon_t   is a pp*1 multivariate random variable (iid N(0,H_t))
+%   \eta_t          is a rr*1 multivariate random variable (iid N(0,Q_t))
+%   a_1             is a mm*1 vector
+% 
+%   Z_t     is a pp*mm matrix
+%   T_t     is a mm*mm matrix
+%   H_t     is a pp*pp matrix
+%   R_t     is a mm*rr matrix
+%   Q_t     is a rr*rr matrix
+%   P_1     is a mm*mm matrix
+% 
+% 
+%   FILTERING EQUATIONS:
+% 
+%   v_t = y_t - Z_t* a_t
+%   F_t = Z_t * P_t * Z_t' + H_t
+%   K_t = T_t * P_t * Z_t' * F_t^{-1}
+%   L_t = T_t - K_t * Z_t
+%   a_{t+1} = T_t * a_t + K_t * v_t
+%   P_{t+1} = T_t * P_t * L_t' + R_t*Q_t*R_t'
+% 
+%
+%   DIFFUSE FILTERING EQUATIONS:
+%
+%   a_{t+1} = T_t*a_t + K_{\ast,t}v_t
+%   P_{\infty,t+1} = T_t*P_{\infty,t}*T_t'
+%   P_{\ast,t+1}  = T_t*P_{\ast,t}*L_{\ast,t}' + R_t*Q_t*R_t'
+%   K_{\ast,t}   = T_t*P_{\ast,t}*Z_t'*F_{\ast,t}^{-1}
+%   v_t = y_t - Z_t*a_t
+%   L_{\ast,t} = T_t - K_{\ast,t}*Z_t
+%   F_{\ast,t}  = Z_t*P_{\ast,t}*Z_t' + H_t
+global bayestopt_ options_
+
+mf = bayestopt_.mf;
+pp     = size(Y,1);
+mm     = size(T,1);
+smpl   = size(Y,2);
+a      = zeros(mm,1);
+QQ     = R*Q*transpose(R);
+t      = 0;
+lik	   = zeros(smpl+1,1);	
+lik(smpl+1) = smpl*pp*log(2*pi);		%% the constant of minus two times the log-likelihood
+notsteady 	= 1;
+crit      	= options_.kalman_tol;
+crit1      	= 1.e-6;
+newRank	 	= rank(Pinf,crit1);
+icc=0;
+while newRank & t < smpl
+  t = t+1;
+  for i=1:pp
+    v(i) 	= Y(i,t)-a(mf(i))-trend(i,t);
+    Fstar 	= Pstar(mf(i),mf(i));
+    Finf	= Pinf(mf(i),mf(i));
+    Kstar 	= Pstar(:,mf(i));
+    if Finf > crit & newRank,  %added newRank criterion 
+      icc=icc+1;
+      Kinf	= Pinf(:,mf(i));
+      a		= a + Kinf*v(i)/Finf;
+      Pstar	= Pstar + Kinf*transpose(Kinf)*Fstar/(Finf*Finf) - ...
+	  (Kstar*transpose(Kinf)+Kinf*transpose(Kstar))/Finf;
+      Pinf	= Pinf - Kinf*transpose(Kinf)/Finf;
+      lik(t) 	= lik(t) + log(Finf);
+      % start new termination criterion for DKF
+      if ~isempty(options_.diffuse_d),  
+	newRank = (icc<options_.diffuse_d);  
+	%if newRank & any(diag(Pinf(mf,mf))>crit)==0; %  M. Ratto this line is BUGGY
+	if newRank & (any(diag(Pinf(mf,mf))>crit)==0 & rank(Pinf,crit1)==0); 
+	  options_.diffuse_d = icc;
+	  newRank=0;
+	  disp('WARNING: Change in OPTIONS_.DIFFUSE_D in univariate DKF')
+	  disp(['new OPTIONS_.DIFFUSE_D = ',int2str(icc)])
+	  disp('You may have to reset the optimisation')
+	end
+      else
+	%newRank = any(diag(Pinf(mf,mf))>crit);     % M. Ratto this line is BUGGY 
+	newRank = (any(diag(Pinf(mf,mf))>crit) | rank(Pinf,crit1));                 
+	if newRank==0, 
+	  P0=	T*Pinf*transpose(T);
+	  %newRank = any(diag(P0(mf,mf))>crit);   % M. Ratto this line is BUGGY
+	  newRank = (any(diag(Pinf(mf,mf))>crit) | rank(P0,crit1));   
+	  if newRank==0, 
+	    options_.diffuse_d = icc;
+	  end
+	end                    
+      end,
+      % end new termination and checks for DKF and fmax
+    elseif Fstar > crit 
+      %% Note that : (1) rank(Pinf)=0 implies that Finf = 0, (2) outside this loop (when for some i and t the condition
+      %% rank(Pinf)=0 is satisfied we have P = Pstar and F = Fstar and (3) Finf = 0 does not imply that
+      %% rank(Pinf)=0. [st�phane,11-03-2004].	  
+      %if rank(Pinf,crit) == 0
+      % the likelihood terms should alwasy be cumulated, not only
+      % when Pinf=0, otherwise the lik would depend on the ordering
+      % of observed variables
+      lik(t) = lik(t) + log(Fstar) + v(i)*v(i)/Fstar;
+      %end
+      a	= a + Kstar*v(i)/Fstar;
+      Pstar = Pstar - Kstar*transpose(Kstar)/Fstar;
+    else
+      % disp(['zero F term in DKF for observed ',int2str(i),' ',num2str(Fi)])
+    end
+  end 
+%     if all(abs(Pinf(:))<crit),
+%         oldRank = 0;
+%     else
+%         oldRank = rank(Pinf,crit);
+%     end
+    if newRank,
+        oldRank = rank(Pinf,crit1);
+    else
+        oldRank = 0;
+    end
+	a 		= T*a;
+	Pstar 	= T*Pstar*transpose(T)+QQ;
+	Pinf	= T*Pinf*transpose(T);
+%     if all(abs(Pinf(:))<crit),
+%         newRank = 0;
+%     else
+%     	newRank = rank(Pinf,crit);
+%     end
+    if newRank,
+        newRank = rank(Pinf,crit1);  % new crit1 is used 
+    end
+	if oldRank ~= newRank
+		disp('DiffuseLiklihood3 :: T does influence the rank of Pinf!')	
+	end  
+end
+if t == smpl                                                           
+  error(['There isn''t enough information to estimate the initial' ... 
+	 ' conditions of the nonstationary variables']);                   
+end   
+while notsteady & t < smpl
+  t = t+1;
+  oldP = Pstar;
+  for i=1:pp
+    v(i) = Y(i,t) - a(mf(i)) - trend(i,t);
+    Fi   = Pstar(mf(i),mf(i));
+    if Fi > crit
+      Ki		= Pstar(:,mf(i));
+      a		= a + Ki*v(i)/Fi;
+      Pstar 	= Pstar - Ki*transpose(Ki)/Fi;
+      lik(t) 	= lik(t) + log(Fi) + v(i)*v(i)/Fi;
+    else
+      %disp(['zero F term for observed ',int2str(i),' ',num2str(Fi)])
+    end
+  end	
+  a 			= T*a;
+  Pstar 		= T*Pstar*transpose(T) + QQ;
+  notsteady 	= ~(max(max(abs(Pstar-oldP)))<crit);
+end
+while t < smpl
+  t = t+1;
+  Pstar = oldP;
+  for i=1:pp
+    v(i) = Y(i,t) - a(mf(i)) - trend(i,t);
+    Fi   = Pstar(mf(i),mf(i));
+    if Fi > crit
+      Ki 		= Pstar(:,mf(i));
+      a 		= a + Ki*v(i)/Fi;
+      Pstar 	= Pstar - Ki*transpose(Ki)/Fi;
+      lik(t)    	= lik(t) + log(Fi) + v(i)*v(i)/Fi;
+    else
+      %disp(['zero F term for observed ',int2str(i),' ',num2str(Fi)])
+    end
+  end	
+  a = T*a;
+end
+
+LIK = .5*(sum(lik(start:end))-(start-1)*lik(smpl+1)/smpl);
+
diff --git a/tags/v_3.062/matlab/DiffuseLikelihoodH1.m b/tags/v_3.062/matlab/DiffuseLikelihoodH1.m
new file mode 100644
index 0000000000..51fe5ec6e2
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseLikelihoodH1.m
@@ -0,0 +1,161 @@
+function LIK = DiffuseLikelihoodH1(T,R,Q,H,Pinf,Pstar,Y,trend,start)
+% stephane.adjemian@cepremap.cnrs.fr [07-19-2004]
+%
+%   See "Filtering and Smoothing of State Vector for Diffuse State Space
+%   Models", S.J. Koopman and J. Durbin (2003, in Journal of Time Series 
+%   Analysis, vol. 24(1), pp. 85-98).  
+%
+%   THE PROBLEM:
+%
+%   y_t =   Z_t * \alpha_t + \varepsilon_t
+%   \alpha_{t+1} = T_t  * \alpha_t + R_t * \eta_t
+%
+%   with:
+%
+%   \alpha_1 = a + A*\delta + R_0*\eta_0
+%
+%   m*q matrix A and m*(m-q) matrix R_0 are selection matrices (their
+%   columns constitue all the columns of the m*m identity matrix) so that 
+%
+%       A'*R_0 = 0 and A'*\alpha_1 = \delta
+%
+%   We assume that the vector \delta is distributed as a N(0,\kappa*I_q)
+%   for a given  \kappa > 0. So that the expectation of \alpha_1 is a and
+%   its variance is P, with
+%
+%       P = \kappa*P_{\infty} + P_{\star}
+%
+%           P_{\infty} = A*A'
+%           P_{\star}  = R_0*Q_0*R_0'
+%
+%   P_{\infty} is a m*m diagonal matrix with q ones and m-q zeros. 
+%
+%
+%   and where:
+%
+%   y_t             is a pp*1 vector
+%   \alpha_t        is a mm*1 vector
+%   \varepsilon_t   is a pp*1 multivariate random variable (iid N(0,H_t))
+%   \eta_t          is a rr*1 multivariate random variable (iid N(0,Q_t))
+%   a_1             is a mm*1 vector
+%
+%   Z_t     is a pp*mm matrix
+%   T_t     is a mm*mm matrix
+%   H_t     is a pp*pp matrix
+%   R_t     is a mm*rr matrix
+%   Q_t     is a rr*rr matrix
+%   P_1     is a mm*mm matrix
+%
+%
+%   FILTERING EQUATIONS:
+%
+%   v_t = y_t - Z_t* a_t
+%   F_t = Z_t * P_t * Z_t' + H_t
+%   K_t = T_t * P_t * Z_t' * F_t^{-1}
+%   L_t = T_t - K_t * Z_t
+%   a_{t+1} = T_t * a_t + K_t * v_t
+%   P_{t+1} = T_t * P_t * L_t' + R_t*Q_t*R_t'
+%
+%
+%   DIFFUSE FILTERING EQUATIONS:
+%
+%   a_{t+1} = T_t*a_t + K_{\infty,t}v_t
+%   P_{\infty,t+1} = T_t*P_{\infty,t}*L_{\infty,t}'
+%   P_{\ast,t+1}  = T_t*P_{\ast,t}*L_{\infty,t}' - K_{\infty,t}*F_{\infty,t}*K_{\ast,t}' + R_t*Q_t*R_t'
+%   K_{\infty,t}   = T_t*P_{\infty,t}*Z_t'*F_{\infty,t}^{-1}
+%   v_t = y_t - Z_t*a_t
+%   L_{\infty,t} = T_t - K_{\infty,t}*Z_t
+%   F_{\infty,t} = Z_t*P_{\infty,t}*Z_t'
+%   K_{\ast,t}  = (T_t*P_{\ast,t}*Z_t' + K_{\infty,t}*F_{\ast,t})*F_{\infty,t}^{-1}
+%   F_{\ast,t}  = Z_t*P_{\ast,t}*Z_t' + H_t
+%
+%	Matrix Finf is assumed to be non singular. If this is not the case we have
+%   to switch to another algorithm (NewAlg=3).
+%
+%	start = options_.presample
+  global bayestopt_ options_
+  
+  mf = bayestopt_.mf;
+  smpl = size(Y,2);
+  mm   = size(T,2);
+  pp   = size(Y,1);
+  a    = zeros(mm,1);
+  dF = 1;
+  QQ   = R*Q*transpose(R);
+  t    = 0;
+  lik  = zeros(smpl+1,1);
+  LIK  = Inf;
+  lik(smpl+1) = smpl*pp*log(2*pi);
+  notsteady   = 1;
+  crit        = options_.kalman_tol;
+  reste       = 0;
+  while rank(Pinf,crit) & t < smpl
+    t     = t+1;
+    v  	  = Y(:,t)-a(mf)-trend(:,t);
+    Finf  = Pinf(mf,mf);
+    if rcond(Finf) < crit 
+      if ~all(abs(Finf(:))<crit)
+	return
+      else
+	iFstar	= inv(Pstar(mf,mf)+H);
+	dFstar	= det(Pstar(mf,mf)+H);
+	Kstar	= Pstar(:,mf)*iFstar;
+	lik(t)	= log(dFstar) + transpose(v)*iFstar*v;
+	Pinf	= T*Pinf*transpose(T);
+	Pstar	= T*(Pstar-Pstar(:,mf)*transpose(Kstar))*transpose(T)+QQ;
+	a		= T*(a+Kstar*v);
+      end
+    else
+      lik(t)	= log(det(Finf));
+      iFinf	= inv(Finf);
+      Kinf	= Pinf(:,mf)*iFinf;					%%	premultiplication by the transition matrix T is removed (stephane) 
+      Fstar	= Pstar(mf,mf)+H;
+      Kstar	= (Pstar(:,mf)-Kinf*Fstar)*iFinf; 	%%	premultiplication by the transition matrix T is removed (stephane)
+      Pstar	= T*(Pstar-Pstar(:,mf)*transpose(Kinf)-Pinf(:,mf)*transpose(Kstar))*transpose(T)+QQ;
+      Pinf	= T*(Pinf-Pinf(:,mf)*transpose(Kinf))*transpose(T);
+      a		= T*(a+Kinf*v);					
+    end  
+  end
+  if t == smpl                                                           
+    error(['There isn''t enough information to estimate the initial' ... 
+	   ' conditions of the nonstationary variables']);                   
+  end                                                                    
+  F_singular = 1;
+  while notsteady & t < smpl
+    t  = t+1;
+    v  = Y(:,t)-a(mf)-trend(:,t);
+    F  = Pstar(mf,mf)+H;
+    oldPstar  = Pstar;
+    dF = det(F);
+    if rcond(F) < crit 
+      if ~all(abs(F(:))<crit)
+	return
+      else
+	a         = T*a;
+	Pstar     = T*Pstar*transpose(T)+QQ;
+      end
+    else  
+      F_singular = 0;
+      iF		  = inv(F);
+      lik(t)    = log(dF)+transpose(v)*iF*v;
+      K         = Pstar(:,mf)*iF; %% premultiplication by the transition matrix T is removed (stephane)
+      a         = T*(a+K*v);		%% --> factorization of the transition matrix...
+      Pstar     = T*(Pstar-Pstar(:,mf)*iF*Pstar(mf,:))*transpose(T)+QQ;	%% ... idem (stephane)
+    end
+    notsteady = ~(max(max(abs(Pstar-oldPstar)))<crit);
+  end
+  if F_singular == 1
+    error(['The variance of the forecast error remains singular until the' ...
+	   'end of the sample'])
+  end
+  reste = smpl-t;
+  while t < smpl
+    t = t+1;
+    v = Y(:,t)-a(mf)-trend(:,t);
+    a = T*(a+K*v);
+    lik(t) = transpose(v)*iF*v;
+  end
+  lik(t) = lik(t) + reste*log(dF);
+  LIK    = .5*(sum(lik(start:end))-(start-1)*lik(smpl+1)/smpl);% Minus the
+							       % log-likelihood.
+							       
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/DiffuseLikelihoodH3.m b/tags/v_3.062/matlab/DiffuseLikelihoodH3.m
new file mode 100644
index 0000000000..83e0555702
--- /dev/null
+++ b/tags/v_3.062/matlab/DiffuseLikelihoodH3.m
@@ -0,0 +1,203 @@
+function LIK = DiffuseLikelihoodH3(T,R,Q,H,Pinf,Pstar,Y,trend,start)
+% changes by M. Ratto
+% introduced new global variable id_ for termination of DKF
+% introduced a persistent fmax, in order to keep track the max order of
+% magnitude of the 'zero' values in Pinf at DKF termination
+% new icc counter for Finf steps in DKF
+% new termination for DKF
+% likelihood terms for Fstar must be cumulated in DKF also when Pinf is non
+% zero. this bug is fixed.
+%
+% stephane.adjemian@cepremap.cnrs.fr [07-19-2004]
+% 
+%   See "Filtering and Smoothing of State Vector for Diffuse State Space
+%   Models", S.J. Koopman and J. Durbin (2003, in Journal of Time Series 
+%   Analysis, vol. 24(1), pp. 85-98).  
+%
+%	Case where F_{\infty,t} is singular ==> Univariate treatment of multivariate
+%	time series.
+%
+%   THE PROBLEM:
+% 
+%   y_t =   Z_t * \alpha_t + \varepsilon_t
+%   \alpha_{t+1} = T_t  * \alpha_t + R_t * \eta_t
+% 
+%   with:
+% 
+%   \alpha_1 = a + A*\delta + R_0*\eta_0
+%
+%   m*q matrix A and m*(m-q) matrix R_0 are selection matrices (their
+%   columns constitue all the columns of the m*m identity matrix) so that 
+%
+%       A'*R_0 = 0 and A'*\alpha_1 = \delta
+%
+%   We assume that the vector \delta is distributed as a N(0,\kappa*I_q)
+%   for a given  \kappa > 0. So that the expectation of \alpha_1 is a and
+%   its variance is P, with
+%
+%       P = \kappa*P_{\infty} + P_{\star}
+%
+%           P_{\infty} = A*A'
+%           P_{\star}  = R_0*Q_0*R_0'
+%
+%   P_{\infty} is a m*m diagonal matrix with q ones and m-q zeros. 
+%
+% 
+%   and where:
+% 
+%   y_t             is a pp*1 vector
+%   \alpha_t        is a mm*1 vector
+%   \varepsilon_t   is a pp*1 multivariate random variable (iid N(0,H_t))
+%   \eta_t          is a rr*1 multivariate random variable (iid N(0,Q_t))
+%   a_1             is a mm*1 vector
+% 
+%   Z_t     is a pp*mm matrix
+%   T_t     is a mm*mm matrix
+%   H_t     is a pp*pp matrix
+%   R_t     is a mm*rr matrix
+%   Q_t     is a rr*rr matrix
+%   P_1     is a mm*mm matrix
+% 
+% 
+%   FILTERING EQUATIONS:
+% 
+%   v_t = y_t - Z_t* a_t
+%   F_t = Z_t * P_t * Z_t' + H_t
+%   K_t = T_t * P_t * Z_t' * F_t^{-1}
+%   L_t = T_t - K_t * Z_t
+%   a_{t+1} = T_t * a_t + K_t * v_t
+%   P_{t+1} = T_t * P_t * L_t' + R_t*Q_t*R_t'
+% 
+%
+%   DIFFUSE FILTERING EQUATIONS:
+%
+%   a_{t+1} = T_t*a_t + K_{\ast,t}v_t
+%   P_{\infty,t+1} = T_t*P_{\infty,t}*T_t'
+%   P_{\ast,t+1}  = T_t*P_{\ast,t}*L_{\ast,t}' + R_t*Q_t*R_t'
+%   K_{\ast,t}   = T_t*P_{\ast,t}*Z_t'*F_{\ast,t}^{-1}
+%   v_t = y_t - Z_t*a_t
+%   L_{\ast,t} = T_t - K_{\ast,t}*Z_t
+%   F_{\ast,t}  = Z_t*P_{\ast,t}*Z_t' + H_t
+global bayestopt_ options_
+  
+mf = bayestopt_.mf;
+pp     = size(Y,1);
+mm     = size(T,1);
+smpl   = size(Y,2);
+a      = zeros(mm,1);
+QQ     = R*Q*transpose(R);
+t      = 0;
+lik    = zeros(smpl+1,1);
+lik(smpl+1) = smpl*pp*log(2*pi); %% the constant of minus two times the log-likelihood 
+notsteady 	= 1;
+crit      	= options_.kalman_tol;
+crit1      	= 1.e-6;
+newRank	  	= rank(Pinf,crit1);
+icc = 0;
+while newRank & t < smpl %% Matrix Finf is assumed to be zero
+  t = t+1;
+  for i=1:pp
+    v(i) 	= Y(i,t)-a(mf(i))-trend(i,t);
+    Fstar 	= Pstar(mf(i),mf(i))+H(i,i);
+    Finf	= Pinf(mf(i),mf(i));
+    Kstar 	= Pstar(:,mf(i));
+    if Finf > crit & newRank
+      icc = icc + 1;
+      Kinf	= Pinf(:,mf(i));
+      a		= a + Kinf*v(i)/Finf;
+      Pstar	= Pstar + Kinf*transpose(Kinf)*Fstar/(Finf*Finf) - ...
+	  (Kstar*transpose(Kinf)+Kinf*transpose(Kstar))/Finf;
+      Pinf	= Pinf - Kinf*transpose(Kinf)/Finf;
+      lik(t) 	= lik(t) + log(Finf);
+      % start new termination criterion for DKF
+      if ~isempty(options_.diffuse_d),  
+	newRank = (icc<options_.diffuse_d);  
+	%if newRank & any(diag(Pinf(mf,mf))>crit)==0; %  M. Ratto this line is BUGGY
+	if newRank & (any(diag(Pinf(mf,mf))>crit)==0 & rank(Pinf,crit1)==0); 
+	  options_.diffuse_d = icc;
+	  newRank=0;
+	  disp('WARNING: Change in OPTIONS_.DIFFUSE_D in univariate DKF')
+	  disp(['new OPTIONS_.DIFFUSE_D = ',int2str(icc)])
+	  disp('You may have to reset the optimisation')
+	end
+      else
+	%newRank = any(diag(Pinf(mf,mf))>crit);     % M. Ratto this line is BUGGY 
+	newRank = (any(diag(Pinf(mf,mf))>crit) | rank(Pinf,crit1));                 
+	if newRank==0, 
+	  P0=	T*Pinf*transpose(T);
+	  %newRank = any(diag(P0(mf,mf))>crit);   % M. Ratto this line is BUGGY
+	  newRank = (any(diag(Pinf(mf,mf))>crit) | rank(P0,crit1));   
+	  if newRank==0, 
+	    options_.diffuse_d = icc;
+	  end
+	end                    
+      end,
+      % end new termination and checks for DKF and fmax
+    elseif Finf > crit 
+      %% Note that : (1) rank(Pinf)=0 implies that Finf = 0, (2) outside this loop (when for some i and t the condition
+      %% rank(Pinf)=0 is satisfied we have P = Pstar and F = Fstar and (3) Finf = 0 does not imply that
+      %% rank(Pinf)=0. [st�phane,11-03-2004].	  
+      %if rank(Pinf) == 0
+      % the likelihood terms should alwasy be cumulated, not only
+      % when Pinf=0, otherwise the lik would depend on the ordering
+      % of observed variables
+      lik(t)	= lik(t) + log(Fstar) + v(i)*v(i)/Fstar;
+      %end
+      a 	= a + Kstar*v(i)/Fstar;
+      Pstar	= Pstar - Kstar*transpose(Kstar)/Fstar;					
+    else
+      % disp(['zero F term in DKF for observed ',int2str(i),' ',num2str(Fi)])
+    end
+  end
+  if newRank
+    oldRank = rank(Pinf,crit1);
+  else
+    oldRank = 0;
+  end
+  a 		= T*a;
+  Pstar 	= T*Pstar*transpose(T)+QQ;
+  Pinf	= T*Pinf*transpose(T);
+  if newRank
+    newRank = rank(Pinf,crit1);
+  end
+  if oldRank ~= newRank
+    disp('DiffuseLiklihoodH3 :: T does influence the rank of Pinf!')	
+  end		 		
+end
+if t == smpl                                                           
+  error(['There isn''t enough information to estimate the initial' ... 
+	 ' conditions of the nonstationary variables']);                   
+end                                                                    
+while notsteady & t < smpl
+  t = t+1;
+  for i=1:pp
+    v(i) = Y(i,t) - a(mf(i)) - trend(i,t);
+    Fi   = Pstar(mf(i),mf(i))+H(i,i);
+    if Fi > crit
+      Ki	= Pstar(:,mf(i));
+      a		= a + Ki*v(i)/Fi;
+      Pstar 	= Pstar - Ki*transpose(Ki)/Fi;
+      lik(t) 	= lik(t) + log(Fi) + v(i)*v(i)/Fi;
+    end
+  end	
+  oldP 		= Pstar;
+  a 		= T*a;
+  Pstar 	= T*Pstar*transpose(T) + QQ;
+  notsteady 	= ~(max(max(abs(Pstar-oldP)))<crit);
+end
+while t < smpl
+  t = t+1;
+  for i=1:pp
+    v(i) = Y(i,t) - a(mf(i)) - trend(i,t);
+    Fi   = Pstar(mf(i),mf(i))+H(i,i);
+    if Fi > crit
+      Ki 		= Pstar(:,mf(i));
+      a 		= a + Ki*v(i)/Fi;
+      Pstar 	= Pstar - Ki*transpose(Ki)/Fi;
+      lik(t) 	= lik(t) + log(Fi) + v(i)*v(i)/Fi;
+    end
+  end	
+  a = T*a;
+end
+LIK = .5*(sum(lik(start:end))-(start-1)*lik(smpl+1)/smpl);
+
diff --git a/tags/v_3.062/matlab/DsgeLikelihood.m b/tags/v_3.062/matlab/DsgeLikelihood.m
new file mode 100644
index 0000000000..888f6124bb
--- /dev/null
+++ b/tags/v_3.062/matlab/DsgeLikelihood.m
@@ -0,0 +1,173 @@
+function [fval,cost_flag,ys,trend_coeff,info] = DsgeLikelihood(xparam1,gend,data)
+% stephane.adjemian@cepremap.cnrs.fr [09-07-2004]
+%
+% Adapted from mj_optmumlik.m
+global bayestopt_ exo_nbr dr_ estim_params_ Sigma_e_ options_ xparam1_test
+  global trend_coeff_
+
+  fval = [];
+  cost_flag = [];
+  ys = [];
+  trend_coeff = [];
+
+  xparam1_test = xparam1;
+  cost_flag   = 1;
+  nobs 	= size(options_.varobs,1);
+
+  if options_.mode_compute ~= 1 & any(xparam1 < bayestopt_.lb)
+    k = find(xparam1 < bayestopt_.lb);
+    fval = bayestopt_.penalty+sum((bayestopt_.lb(k)-xparam1(k)).^2);
+    cost_flag = 0;
+    return;
+  end
+  if options_.mode_compute ~= 1 & any(xparam1 > bayestopt_.ub)
+    k = find(xparam1 > bayestopt_.ub);
+    fval = bayestopt_.penalty+sum((xparam1(k)-bayestopt_.ub(k)).^2);
+    cost_flag = 0;
+    return;
+  end
+  Q = Sigma_e_;
+  for i=1:estim_params_.nvx
+    k =estim_params_.var_exo(i,1);
+    Q(k,k) = xparam1(i)*xparam1(i);
+  end
+  offset = estim_params_.nvx;
+  if estim_params_.nvn
+    H = zeros(nobs,nobs);
+    for i=1:estim_params_.nvn
+      k = estim_params_.var_endo(i,1);
+      H(k,k) = xparam1(i+offset)*xparam1(i+offset);
+    end
+    offset = offset+estim_params_.nvn;
+  end	
+  if estim_params_.ncx
+    for i=1:estim_params_.ncx
+      k1 =estim_params_.corrx(i,1);
+      k2 =estim_params_.corrx(i,2);
+      Q(k1,k2) = xparam1(i+offset)*sqrt(Q(k1,k1)*Q(k2,k2));
+      Q(k2,k1) = Q(k1,k2);
+    end
+    [CholQ,testQ] = chol(Q);
+    if testQ 	%% The variance-covariance matrix of the structural innovations is not definite positive.
+		%% We have to compute the eigenvalues of this matrix in order to build the penalty.
+		a = eig(Q);
+		k = a<0;
+		if k > 0
+		  fval = bayestopt_.penalty+sum(-a(k));
+		  cost_flag = 0;
+		  return
+		end
+    end
+    offset = offset+estim_params_.ncx;
+  end
+  if estim_params_.nvn & estim_params_.ncn 
+    for i=1:estim_params_.ncn
+      k1 = options_.lgyidx2varobs(estim_params_.corrn(i,1));
+      k2 = options_.lgyidx2varobs(estim_params_.corrn(i,2));
+      H(k1,k2) = xparam1(i+offset)*sqrt(H(k1,k1)*H(k2,k2));
+      H(k2,k1) = H(k1,k2);
+    end
+    [CholH,testH] = chol(H);
+    if testH
+      a = eig(H);
+      k = a<0;
+      if k > 0
+	fval = bayestopt_.penalty+sum(-a(k));
+	cost_flag = 0;
+	return
+      end
+    end
+    offset = offset+estim_params_.ncn;
+  end
+  for i=1:estim_params_.np
+    assignin('base',deblank(estim_params_.param_names(i,:)),xparam1(i+offset));
+  end
+  Sigma_e_ = Q;
+  %------------------------------------------------------------------------------
+  % 2. call model setup & reduction program
+  %------------------------------------------------------------------------------
+  [T,R,SteadyState,info] = dynare_resolve;
+  if info(1) == 1 | info(1) == 2 | info(1) == 5
+    fval = bayestopt_.penalty+1;
+    cost_flag = 0;
+    return
+  elseif info(1) == 3 | info(1) == 4 | info(1) == 20
+    fval = bayestopt_.penalty+info(2)^2;
+    cost_flag = 0;
+    return
+  end
+  if options_.loglinear == 1
+    constant = log(SteadyState(bayestopt_.mfys));
+  else
+    constant = SteadyState(bayestopt_.mfys);
+  end
+  if bayestopt_.with_trend == 1
+    trend_coeff = zeros(nobs,1);
+    for i=1:nobs
+      trend_coeff(i) = evalin('base',bayestopt_.trend_coeff{i});
+    end
+    trend = constant*ones(1,gend)+trend_coeff*(1:gend);
+  else
+    trend = constant*ones(1,gend);
+  end
+  start = options_.presample+1;
+  np    = size(T,1);
+  mf    = bayestopt_.mf;
+  %------------------------------------------------------------------------------
+  % 3. Initial condition of the Kalman filter
+  %------------------------------------------------------------------------------
+  if options_.lik_init == 1		% Kalman filter
+    Pstar = lyapunov_symm(T,R*Q*transpose(R));
+    Pinf	= [];
+  elseif options_.lik_init == 2	% Old Diffuse Kalman filter
+    Pstar = 10*eye(np);
+    Pinf	= [];
+  elseif options_.lik_init == 3	% Diffuse Kalman filter
+    Pstar = zeros(np,np);
+    ivs = bayestopt_.i_T_var_stable;
+    Pstar(ivs,ivs) = lyapunov_symm(T(ivs,ivs),R(ivs,:)*Q* ...
+				   transpose(R(ivs,:)));
+    Pinf  = bayestopt_.Pinf;
+  end
+  %------------------------------------------------------------------------------
+  % 4. Likelihood evaluation
+  %------------------------------------------------------------------------------
+  if estim_params_.nvn
+    if options_.kalman_algo == 1
+      LIK = DiffuseLikelihoodH1(T,R,Q,H,Pinf,Pstar,data,trend,start);
+      if isinf(LIK) & ~estim_params_.ncn %% The univariate approach considered here doesn't 
+					 %%	apply when H has some off-diagonal elements.
+					 LIK = DiffuseLikelihoodH3(T,R,Q,H,Pinf,Pstar,data,trend,start);
+      elseif isinf(LIK) & estim_params_.ncn
+	LIK = DiffuseLikelihoodH3corr(T,R,Q,H,Pinf,Pstar,data,trend,start);
+      end
+    elseif options_.kalman_algo == 3
+      if ~estim_params_.ncn %% The univariate approach considered here doesn't 
+			    %%	apply when H has some off-diagonal elements.
+			    LIK = DiffuseLikelihoodH3(T,R,Q,H,Pinf,Pstar,data,trend,start);
+      else
+	LIK = DiffuseLikelihoodH3corr(T,R,Q,H,Pinf,Pstar,data,trend,start);
+      end	
+    end	  
+  else
+    if options_.kalman_algo == 1
+      LIK = DiffuseLikelihood1(T,R,Q,Pinf,Pstar,data,trend,start);
+      if isinf(LIK)
+	LIK = DiffuseLikelihood3(T,R,Q,Pinf,Pstar,data,trend,start);
+      end
+    elseif options_.kalman_algo == 3
+      LIK = DiffuseLikelihood3(T,R,Q,Pinf,Pstar,data,trend,start);
+    end 	
+  end
+  if imag(LIK) ~= 0
+    likelihood = bayestopt_.penalty;
+  else
+    likelihood = LIK;
+  end
+  % ------------------------------------------------------------------------------
+  % Adds prior if necessary
+  % ------------------------------------------------------------------------------
+  lnprior = priordens(xparam1,bayestopt_.pshape,bayestopt_.p1,bayestopt_.p2,bayestopt_.p3,bayestopt_.p4);
+  fval    = (likelihood-lnprior);
+  
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/DsgeSmoother.m b/tags/v_3.062/matlab/DsgeSmoother.m
new file mode 100644
index 0000000000..9ff8748626
--- /dev/null
+++ b/tags/v_3.062/matlab/DsgeSmoother.m
@@ -0,0 +1,114 @@
+function [alphahat,etahat,epsilonhat,ahat,SteadyState,trend_coeff] = DsgeSmoother(xparam1,gend,Y)
+% stephane.adjemian@cepremap.cnrs.fr [09-07-2004]
+%
+% Adapted from mj_optmumlik.m
+global bayestopt_ exo_nbr dr_ estim_params_ Sigma_e_ options_ xparam1_test
+global trend_coeff_
+
+alphahat 	= [];
+epsilonhat	= [];
+etahat		= [];
+nobs 		= size(options_.varobs,1);
+smpl        = size(Y,2);
+
+Q = Sigma_e_;
+for i=1:estim_params_.nvx
+	k =estim_params_.var_exo(i,1);
+	Q(k,k) = xparam1(i)*xparam1(i);
+end
+offset = estim_params_.nvx;
+if estim_params_.nvn
+	H = zeros(nobs,nobs);
+	for i=1:estim_params_.nvn
+		k = estim_params_.var_endo(i,1);
+		H(k,k) = xparam1(i+offset)*xparam1(i+offset);
+	end
+end	
+offset = offset+estim_params_.nvn;
+for i=1:estim_params_.ncx
+	k1 =estim_params_.corrx(i,1);
+	k2 =estim_params_.corrx(i,2);
+	Q(k1,k2) = xparam1(i+offset)*sqrt(Q(k1,k1)*Q(k2,k2));
+	Q(k2,k1) = Q(k1,k2);
+end
+offset = offset+estim_params_.ncx;
+
+if estim_params_.nvn & estim_params_.ncn 
+	for i=1:estim_params_.ncn
+		k1 = options_.lgyidx2varobs(estim_params_.corrn(i,1));
+		k2 = options_.lgyidx2varobs(estim_params_.corrn(i,2));
+		H(k1,k2) = xparam1(i+offset)*sqrt(H(k1,k1)*H(k2,k2));
+		H(k2,k1) = H(k1,k2);
+	end
+	offset = offset+estim_params_.ncn;
+end	
+for i=1:estim_params_.np
+	assignin('base',deblank(estim_params_.param_names(i,:)),xparam1(i+offset));
+end
+Sigma_e_ = Q;
+%------------------------------------------------------------------------------
+% 2. call model setup & reduction program
+%------------------------------------------------------------------------------
+[T,R,SteadyState] = dynare_resolve;
+if options_.loglinear == 1
+	constant = log(SteadyState(bayestopt_.mfys));
+else
+	constant = SteadyState(bayestopt_.mfys);
+end
+trend_coeff = zeros(nobs,1);
+if bayestopt_.with_trend == 1
+	trend_coeff = zeros(nobs,1);
+	nx1 = estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+estim_params_.ncn;
+	for i=1:nobs
+    	trend_coeff(i) = evalin('base',bayestopt_.trend_coeff{i});
+	end
+	trend = constant*ones(1,gend)+trend_coeff*(1:gend);
+else
+	trend = constant*ones(1,gend);
+end
+start = options_.presample+1;
+np    = size(T,1);
+mf    = bayestopt_.mf;
+% ------------------------------------------------------------------------------
+%  3. Initial condition of the Kalman filter
+% ------------------------------------------------------------------------------
+% 
+%  C'est ici qu'il faut d�terminer Pinf et Pstar. Si le mod�le est stationnaire,
+%  alors il suffit de poser Pstar comme la solution de l'�uation de Lyapounov et
+%  Pinf=[].
+% 
+if options_.lik_init == 1		% Kalman filter
+  Pstar = lyapunov_symm(T,R*Q*transpose(R));
+  Pinf	= [];
+elseif options_.lik_init == 2 % Old Diffuse Kalman filter
+  Pstar = 10*eye(np);
+  Pinf	= [];
+elseif options_.lik_init == 3 % Diffuse Kalman filter
+  Pstar = zeros(np,np);
+  ivs = bayestopt_.i_T_var_stable;
+  Pstar(ivs,ivs) = lyapunov_symm(T(ivs,ivs),R(ivs,:)*Q* ...
+			transpose(R(ivs,:)));
+  Pinf  = bayestopt_.Pinf;
+end
+% -----------------------------------------------------------------------------
+%  4. Kalman smoother
+% -----------------------------------------------------------------------------
+if estim_params_.nvn
+	if options_.kalman_algo == 1
+		[alphahat,epsilonhat,etahat,ahat] = DiffuseKalmanSmootherH1(T,R,Q,H,Pinf,Pstar,Y,trend,nobs,np,smpl,mf);
+		if all(alphahat(:)==0)
+			[alphahat,epsilonhat,etahat,ahat] = DiffuseKalmanSmootherH3(T,R,Q,H,Pinf,Pstar,Y,trend,nobs,np,smpl,mf);
+		end
+	elseif options_.kalman_algo == 3
+		[alphahat,epsilonhat,etahat,ahat] = DiffuseKalmanSmootherH3(T,R,Q,H,Pinf,Pstar,Y,trend,nobs,np,smpl,mf);
+	end	
+else
+	if options_.kalman_algo == 1
+		[alphahat,etahat,ahat] = DiffuseKalmanSmoother1(T,R,Q,Pinf,Pstar,Y,trend,nobs,np,smpl,mf);
+		if all(alphahat(:)==0)
+			[alphahat,etahat,ahat] = DiffuseKalmanSmoother3(T,R,Q,Pinf,Pstar,Y,trend,nobs,np,smpl,mf);
+		end
+	elseif options_.kalman_algo == 3
+		[alphahat,etahat,ahat] = DiffuseKalmanSmoother3(T,R,Q,Pinf,Pstar,Y,trend,nobs,np,smpl,mf);
+	end		
+end
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/DsgeVarLikelihood.m b/tags/v_3.062/matlab/DsgeVarLikelihood.m
new file mode 100644
index 0000000000..8c34d5741e
--- /dev/null
+++ b/tags/v_3.062/matlab/DsgeVarLikelihood.m
@@ -0,0 +1,234 @@
+function [fval,cost_flag,ys,trend_coeff,info,PHI,SIGMAu,tmp2] = DsgeVarLikelihood(xparam1,gend)
+% stephane.adjemian@ens.fr [06-17-2005]
+
+global bayestopt_ exo_nbr dr_ estim_params_ Sigma_e_ options_ xparam1_test trend_coeff_ 
+global dsge_prior_weight targ_ xparam_ dr_
+
+nvx = estim_params_.nvx;
+nvn = estim_params_.nvn;
+ncx = estim_params_.ncx;
+ncn = estim_params_.ncn;
+np  = estim_params_.np;
+nx = nvx+nvn+ncx+ncn+np;
+ns = nvx+nvn+ncx+ncn;
+
+info = [ ];
+
+mYY = evalin('base', 'mYY');
+mYX = evalin('base', 'mYX');
+mXY = evalin('base', 'mXY');
+mXX = evalin('base', 'mXX');
+
+fval = [];
+cost_flag = [];
+ys = [];
+trend_coeff = [];
+
+xparam_tmp = xparam1;
+
+if strcmpi(targ_,'deep')
+  indx = strmatch('dsge_prior_weight',estim_params_.param_names,'exact');
+  if ~isempty(indx)
+    if indx == 1
+      xparam1 = [xparam_tmp(1:ns);xparam_(ns+1);xparam_tmp(ns+1:end)];
+    elseif indx == np
+      xparam1 = [xparam_tmp(1:end);xparam_(end)];
+    else
+      xparam1 = [xparam_tmp(1:ns+indx-1);xparam_(ns+indx);xparam_tmp(ns+indx:end)];
+    end
+  end
+elseif strcmpi(targ_,'lambda')
+    indx = strmatch('dsge_prior_weight',estim_params_.param_names,'exact');
+    if ~isempty(indx)
+      xparam1 = xparam_;
+      xparam1(indx) = xparam_tmp;
+    end 
+else
+  xparam1 = xparam_tmp;
+end  
+
+xparam1_test = xparam1;
+cost_flag  = 1;
+nobs = size(options_.varobs,1);
+
+if options_.mode_compute ~= 1 & any(xparam1 < bayestopt_.lb)
+  k = find(xparam1 < bayestopt_.lb);
+  fval = bayestopt_.penalty*min(1e3,exp(sum(bayestopt_.lb(k)-xparam1(k))));
+  cost_flag = 0;
+  return;
+end
+
+if options_.mode_compute ~= 1 & any(xparam1 > bayestopt_.ub)
+  k = find(xparam1 > bayestopt_.ub);
+  fval = bayestopt_.penalty*min(1e3,exp(sum(xparam1(k)-bayestopt_.ub(k))));
+  cost_flag = 0;
+  return;
+end
+
+Q = Sigma_e_;
+for i=1:estim_params_.nvx
+  k = estim_params_.var_exo(i,1);
+  Q(k,k) = xparam1(i)*xparam1(i);
+end
+offset = estim_params_.nvx;
+if estim_params_.nvn
+  H = zeros(nobs,nobs);
+  for i=1:estim_params_.nvn
+    k = estim_params_.var_endo(i,1);
+    H(k,k) = xparam1(i+offset)*xparam1(i+offset);
+  end
+  offset = offset+estim_params_.nvn;
+end 
+if estim_params_.ncx
+  for i=1:estim_params_.ncx
+    k1 =estim_params_.corrx(i,1);
+    k2 =estim_params_.corrx(i,2);
+    Q(k1,k2) = xparam1(i+offset)*sqrt(Q(k1,k1)*Q(k2,k2));
+    Q(k2,k1) = Q(k1,k2);
+  end
+  [CholQ,testQ] = chol(Q);
+  if testQ%% The variance-covariance matrix of the structural innovations is not definite positive.
+	  %% We have to compute the eigenvalues of this matrix in order to build the penalty.
+    a = eig(Q);
+    k = a<0;
+    if k > 0
+      fval = bayestopt_.penalty*min(1e3,exp(sum(-a(k))));
+      cost_flag = 0;
+      return
+    end
+  end
+  offset = offset+estim_params_.ncx;
+end
+if estim_params_.nvn & estim_params_.ncn 
+  for i=1:estim_params_.ncn
+    k1 = options_.lgyidx2varobs(estim_params_.corrn(i,1));
+    k2 = options_.lgyidx2varobs(estim_params_.corrn(i,2));
+    H(k1,k2) = xparam1(i+offset)*sqrt(H(k1,k1)*H(k2,k2));
+    H(k2,k1) = H(k1,k2);
+  end
+  [CholH,testH] = chol(H);
+  if testH
+    a = eig(H);
+    k = a<0;
+    if k > 0
+      fval = bayestopt_.penalty*min(1e3,exp(sum(-a(k))));
+      cost_flag = 0;
+      return
+    end
+  end
+  offset = offset+estim_params_.ncn;
+end
+for i=1:estim_params_.np
+  assignin('base',deblank(estim_params_.param_names(i,:)),xparam1(i+offset));
+end
+%%% Le probl�me est ici quand on n'optimise pas sur dsge prior weight
+indx = strmatch('dsge_prior_weight',estim_params_.param_names,'exact');
+if ~isempty(indx)
+  dsge_prior_weight = xparam1(ns+indx);
+end
+Sigma_e_ = Q;
+
+%------------------------------------------------------------------------------
+% 2. call model setup & reduction program
+%------------------------------------------------------------------------------
+[T,R,SteadyState,info] = dynare_resolve;
+if info(1) == 1 | info(1) == 2 | info(1) == 5
+  fval = bayestopt_.penalty;
+  cost_flag = 0;
+  return
+elseif info(1) == 3 | info(1) == 4 | info(1) == 20
+  fval = bayestopt_.penalty*min(1e3,exp(info(2)));
+  cost_flag = 0;
+  return
+end
+if options_.loglinear == 1
+  constant = log(SteadyState(bayestopt_.mfys));
+else
+  constant = SteadyState(bayestopt_.mfys);
+end
+if bayestopt_.with_trend == 1
+  trend_coeff = zeros(nobs,1);
+  for i=1:nobs
+    trend_coeff(i) = evalin('base',bayestopt_.trend_coeff{i});
+  end
+  trend = constant*ones(1,gend)+trend_coeff*(1:gend);
+else
+  trend = constant*ones(1,gend);
+end
+
+%------------------------------------------------------------------------------
+% 3. theorretical moments (second order)
+%------------------------------------------------------------------------------
+tmp = lyapunov_symm(T,R*Q*R');
+
+tmpbis = R*Q*R';
+tmpbis = tmpbis(bayestopt_.mf,bayestopt_.mf);
+
+NumberOfObservedVariables = size(options_.varobs,1);
+NumberOfLags = options_.varlag;
+k = NumberOfObservedVariables*NumberOfLags ;
+TheoreticalAutoCovarianceOfTheObservedVariables = zeros(NumberOfObservedVariables,NumberOfObservedVariables,NumberOfLags+1);
+if estim_params_.nvn
+  TheoreticalAutoCovarianceOfTheObservedVariables(:,:,1) = tmp(bayestopt_.mf,bayestopt_.mf)+H;
+else
+  TheoreticalAutoCovarianceOfTheObservedVariables(:,:,1) = tmp(bayestopt_.mf,bayestopt_.mf);
+end    
+for lag = 1:NumberOfLags
+  tmp = T*tmp;
+  if estim_params_.nvn
+    TheoreticalAutoCovarianceOfTheObservedVariables(:,:,lag+1) = tmp(bayestopt_.mf,bayestopt_.mf) + H;
+  else
+    TheoreticalAutoCovarianceOfTheObservedVariables(:,:,lag+1) = tmp(bayestopt_.mf,bayestopt_.mf);
+  end
+end
+GYX = zeros(NumberOfObservedVariables,k);
+for i=1:NumberOfLags
+  GYX(:,(i-1)*NumberOfObservedVariables+1:i*NumberOfObservedVariables) = ...
+      TheoreticalAutoCovarianceOfTheObservedVariables(:,:,i+1);
+end
+GXX = kron(eye(NumberOfLags),TheoreticalAutoCovarianceOfTheObservedVariables(:,:,1));
+for i = 1:NumberOfLags-1
+  tmp1 = diag(ones(NumberOfLags-i,1),i); 
+  tmp2 = diag(ones(NumberOfLags-i,1),-i);
+  GXX = GXX + kron(tmp1,TheoreticalAutoCovarianceOfTheObservedVariables(:,:,i+1));
+  GXX = GXX + kron(tmp2,TheoreticalAutoCovarianceOfTheObservedVariables(:,:,i+1)');
+end
+GYY = TheoreticalAutoCovarianceOfTheObservedVariables(:,:,1);
+
+assignin('base','GYY',GYY);
+assignin('base','GXX',GXX);
+assignin('base','GYX',GYX);
+
+if ~isinf(dsge_prior_weight) 
+  SIGMAu = dsge_prior_weight*gend*TheoreticalAutoCovarianceOfTheObservedVariables(:,:,1) + mYY ;
+  tmp1 = dsge_prior_weight*gend*GYX + mYX;
+  tmp2 = inv(dsge_prior_weight*gend*GXX+mXX);
+  SIGMAu = SIGMAu - tmp1*tmp2*tmp1';
+  SIGMAu = SIGMAu / (gend*(dsge_prior_weight+1));
+  PHI = tmp2*tmp1';
+  prodlng1 = sum(gammaln(.5*((1+dsge_prior_weight)*gend- ...
+			     NumberOfObservedVariables*NumberOfLags ...
+			     +1-(1:NumberOfObservedVariables)')));
+  prodlng2 = sum(gammaln(.5*(dsge_prior_weight*gend- ...
+			     NumberOfObservedVariables*NumberOfLags ...
+			     +1-(1:NumberOfObservedVariables)')));  
+  lik = .5*NumberOfObservedVariables*log(det(dsge_prior_weight*gend*GXX+mXX)) ...
+	+ .5*((dsge_prior_weight+1)*gend-k)*log(det((dsge_prior_weight+1)*gend*SIGMAu)) ...
+	- .5*NumberOfObservedVariables*log(det(dsge_prior_weight*gend*GXX)) ...
+	- .5*(dsge_prior_weight*gend-k)*log(det(dsge_prior_weight*gend*(GYY-GYX*inv(GXX)*GYX'))) ...
+	+ .5*NumberOfObservedVariables*gend*log(2*pi)  ...
+	- .5*log(2)*NumberOfObservedVariables*((dsge_prior_weight+1)*gend-k) ...
+	+ .5*log(2)*NumberOfObservedVariables*(dsge_prior_weight*gend-k) ...
+	- prodlng1 + prodlng2;
+else % cod� par SM (s�rement pas exact... Que font ici les moments empiriques ?).    
+  tmp1 = GYX;
+  tmp2 = inv(GXX);
+  PHI  = tmp2*tmp1';
+  SIGMAu = GYY - tmp1*tmp2*tmp1;
+  % � finir de corriger...
+  lik  = -.5*sum(diag(inv(tmp2)*(mYY-2*tmp1'*mYX'+tmp1'*mXX*tmp1))) ...
+	-(gend/2)*log(det(tmp2));
+end      
+
+lnprior = priordens(xparam1,bayestopt_.pshape,bayestopt_.p1,bayestopt_.p2,bayestopt_.p3,bayestopt_.p4);
+fval = (lik-lnprior);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/EvalWelfare.m b/tags/v_3.062/matlab/EvalWelfare.m
new file mode 100644
index 0000000000..d0a4e72f26
--- /dev/null
+++ b/tags/v_3.062/matlab/EvalWelfare.m
@@ -0,0 +1,105 @@
+function EvalWelfare(vName,pltOpt,NumberOfDraws)
+% stephane.adjemian@ens.fr
+%
+% vName is a string designing the name of the welfare variable in the mod file. 
+%   
+global options_ oo_ lgy_ ys_ fname_ dr_ info
+
+options_.order = 2;
+options_ = set_default_option(options_,'dr_algo',0);
+options_ = set_default_option(options_,'simul_algo',0);
+subindx = subset();
+
+if isempty(NumberOfDraws)
+  B = 500;
+else
+  B = NumberOfDraws; 
+end
+
+% [1] How many mh files and simulations ?
+if options_.mh_nblck == 1
+  files = eval(['dir(''' fname_ '_mh*.mat'');']);
+else% More than one block
+  files = eval(['dir(''' fname_ '_mh*_blck1.mat'');']);
+end
+nn = size(files,1);
+METRO = zeros(nn,3);
+for i = 1:nn
+  file = files(i);
+  eval(['load ' file.name ';'])
+  METRO(i,1) = i-1;
+  METRO(i,2) = size(x2,1);
+  if i>1
+    METRO(i,3) = METRO(i,2)+METRO(i-1,3);
+  else
+    METRO(i,3) = METRO(i,2);
+  end
+end
+TotalNumberOfDraws = METRO(end,3);
+% [2] Take some draws from the metropolis and compute the welfare.
+% [2.1] Set some parameters:
+B = min(B,TotalNumberOfDraws);
+WelfDistribution = zeros(B,1);
+kk = dr_.order_var;
+windx = strmatch(vName,lgy_(kk,:),'exact');
+% [2.2] Get the posterior mean:
+deep = get_posterior_parameters('posterior_mean');
+% [2.3] Compute the posterior distribution of Welfare:
+hfid = waitbar(0,'Posterior welfare distribution...');
+compt = 0;
+ys = ys_;
+for i=1:B
+  linea = 1+floor(rand*TotalNumberOfDraws);
+  tmp = find(METRO(:,3)<linea);
+  if isempty(tmp)
+    FileNumber = 1;
+    linee = linea;
+  else
+    FileNumber = tmp(end)+1;
+    linee = linea-METRO(tmp(end),3);
+  end
+  file = files(FileNumber);
+  eval(['load ' file.name ';'])
+  DEEP = x2(linee,:);
+  deep(subindx) = DEEP(subindx);
+  set_parameters(deep);
+  [dr,info] = resol(ys,0);
+  if ~info(1)
+    ys = dr.ys;
+    WelfDistribution(i) = ys(kk(windx))+.5*dr.ghs2(windx);
+  else
+    WelfDistribution(i) = Inf;
+    compt = compt+1;
+  end
+  waitbar(i/B,hfid);
+end
+close(hfid);
+indx = find(~isinf(WelfDistribution));
+WelfareDistribution = WelfDistribution(indx);
+oo_.Welfare.PosteriorDraws = WelfareDistribution;
+oo_.Welfare.PosteriorMean = mean(WelfareDistribution);
+oo_.Welfare.posteriorStd = std(WelfareDistribution);
+% [3] Non parametric estimation of the posterior density.
+% [3.1] Set some parameters:
+number_of_grid_points = 2^9;      % 2^9 = 512 !... Must be a power of two.
+bandwidth = 0;                    % Rule of thumb optimal bandwidth parameter.
+kernel_function = 'gaussian';     % Gaussian kernel for Fast Fourrier Transform approximaton.
+% [3.2] Compute the optimal bandwidth parameter:
+optimal_bandwidth = mh_optimal_bandwidth(WelfareDistribution,length(indx),bandwidth,kernel_function); 
+% [3.3] Estimation of the posterior density:
+[x1,f1] = kernel_density_estimate(WelfareDistribution,number_of_grid_points,...
+    optimal_bandwidth,kernel_function);
+oo_.Welfare.PosteriorDensity.abscissa = x1;
+oo_.Welfare.PosteriorDensity.density = f1;
+disp(['Percentage of mh-draws violating the B&K conditions: ' num2str(compt/B*100)  '%.'])
+disp(' ')
+% [4] Plot.
+if pltOpt
+  figure('Name','Posterior distribution of the Welfare.')
+  plot(x1,f1,'-k','linewidth',2)
+  axis tight
+  box on
+  xlabel('Welfare')
+  ylabel('Posterior density')
+end
+options_.order = 1;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/GetPosteriorStatistics.m b/tags/v_3.062/matlab/GetPosteriorStatistics.m
new file mode 100644
index 0000000000..710d27fa2b
--- /dev/null
+++ b/tags/v_3.062/matlab/GetPosteriorStatistics.m
@@ -0,0 +1,97 @@
+  function [MeanX,MedianX,StdX,DistribX,HPDX] = GetPosteriorStatistics(gend,B,infotype)
+  % stephane.adjemian@gmail.com [05-26-2005]
+  global options_ fname_ lgy_ lgx_ lgy_TeX_ lgx_TeX_ dr_ bayestopt_ oo_
+  
+  deciles = [round(0.1*B) ...
+	     round(0.2*B)...
+	     round(0.3*B)...
+	     round(0.4*B)...
+	     round(0.5*B)...
+	     round(0.6*B)...
+	     round(0.7*B)...
+	     round(0.8*B)...
+	     round(0.9*B)];
+ 
+ tmp = zeros(B,1);
+  
+  if strcmpi(infotype,'SmoothedVariables')
+    PrintOnScreen = 'Smooth variables';
+    NumberOfX = size(lgy_,1);
+    SaveName = 'SmoothedVariables';
+    XNames = lgy_(dr_.order_var,:);
+    NonGenericName = '_smooth';
+    varname = 'smooth';
+  elseif strcmpi(infotype,'SmoothedShocks')
+    PrintOnScreen = 'Smooth structural shocks...';
+    NumberOfX = size(lgx_,1);
+    SaveName = 'SmoothedShocks';
+    XNames = lgx_;
+    NonGenericName = '_innovation';
+    varname = 'innov';
+  elseif strcmpi(infotype,'SmoothedObservationErrors');  
+    PrintOnScreen = 'Smooth measurement error...';
+    NumberOfX = size(options_.varobs,1);
+    SaveName = 'SmoothedMeasurementErrors';
+    XNames = options_.varobs;
+    NonGenericName = '_error';
+    varname = 'error';
+  elseif strcmpi(infotype,'FilteredVariables');  
+    PrintOnScreen = 'Filtered variables...';
+    NumberOfX = size(lgy_,1);
+    SaveName = 'FilteredVariables';
+    XNames = lgy_(dr_.order_var,:);
+    NonGenericName = '_filter';
+    varname = 'filter';
+  end
+  eval(['sfile = size(dir(''' fname_ NonGenericName '*.mat''),1);'])
+  disp(['MH: ' PrintOnScreen '...'])
+  MeanX = zeros(NumberOfX,gend);
+  MedianX = zeros(NumberOfX,gend);
+  StdX = zeros(NumberOfX,gend);
+  DistribX = zeros(NumberOfX,gend,9);
+  HPDX = zeros(NumberOfX,gend,2);
+  for i = 1:NumberOfX
+     for t = 1:gend
+	   StartLine = 0;
+	   for file = 1:sfile;
+	     instr = [fname_ NonGenericName int2str(file)];
+	     eval(['load ' instr]);
+	     eval(['X = stock_' varname ';'])
+	     MeanX(i,t) = MeanX(i,t)+sum(X(i,t,:),3);
+	     DeProfundis = size(X,3);
+	     tmp(StartLine+1:StartLine+DeProfundis) = squeeze(X(i,t,:)); 
+	     StartLine = StartLine+DeProfundis;
+	   end
+	   tmp = sort(tmp);
+	   MedianX(i,t) = tmp(round(B*0.5));
+	   StdX(i,t) = std(tmp);
+	   DistribX(i,t,:) = reshape(tmp(deciles),1,1,9);
+	   tt = floor(options_.mh_conf_sig*B);
+	   a = 1; 
+	   b = tt;
+	   tmp2 = [1;tt;tmp(tt)-tmp(1)];
+	   while b <= B
+	     tmp1 = [a;b;tmp(b)-tmp(a)];
+	     a = a + 1;
+	     b = b + 1;
+	     if tmp1(3,1) < tmp2(3,1)
+	       tmp2 = tmp1;     
+	     end    
+	  end
+	  HPDX(i,t,1) = tmp(tmp2(1,1));
+	  HPDX(i,t,2) = tmp(tmp2(2,1));
+    end
+    disp(['    Variable: ' deblank(XNames(i,:))]);	
+  end
+  clear X;
+  MeanX = MeanX/B;
+  for i=1:NumberOfX
+    eval(['oo_.Posterior' SaveName '.Mean.' deblank(XNames(i,:)) ' = MeanX(i,:)'';']);
+    eval(['oo_.Posterior' SaveName '.Median.' deblank(XNames(i,:)) ' = MedianX(i,:)'';']);
+    eval(['oo_.Posterior' SaveName '.Std.' deblank(XNames(i,:)) ' = StdX(i,:)'';']);
+    eval(['oo_.Posterior' SaveName '.Distribution.' deblank(XNames(i,:)) ' = squeeze(DistribX(i,:,:))'';']);
+    eval(['oo_.Posterior' SaveName '.HPDinf.' deblank(XNames(i,:)) ' = squeeze(HPDX(i,:,1))'';']);
+    eval(['oo_.Posterior' SaveName '.HPDsup.' deblank(XNames(i,:)) ' = squeeze(HPDX(i,:,2))'';']);
+  end
+  disp(['MH: ' PrintOnScreen ', done!'])
+  disp(' ')
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/MakeSmoothVariablesPlots.m b/tags/v_3.062/matlab/MakeSmoothVariablesPlots.m
new file mode 100644
index 0000000000..878a2ed7fc
--- /dev/null
+++ b/tags/v_3.062/matlab/MakeSmoothVariablesPlots.m
@@ -0,0 +1,292 @@
+ function MakePlots(Type,Distrib,Mean,gend)
+% 
+  global options_ fname_ lgy_ lgx_ lgy_TeX_ lgx_TeX_ dr_ bayestopt_
+  
+  TeX  = options_.TeX;
+  dim  = size(Distrib,3);
+  
+  if strcmpi(Type,'SmoothedVariables')
+    generic = 'SmoothedVariables';
+    figname = 'Smoothed variables';
+    AllNames = lgy_(dr_.order_var,:);
+    if TeX
+      AllTeXNames = lgy_TeX_(dr_.order_var,:);
+    end
+    [nbplt,nr,nc,lr,lc,nstar] = pltorg(size(lgy_,1));
+    numb = size(lgy_,1);
+  elseif strcmpi(Type,'SmoothedShocks')
+    generic = 'SmoothedShocks';
+    figname = 'Smoothed shocks';
+    AllNames = lgx_;
+    if TeX
+      AllTeXNames = lgx_TeX_;
+    end
+    [nbplt,nr,nc,lr,lc,nstar] = pltorg(size(lgx_,1));
+    numb = size(lgx_,1);
+  elseif strcmpi(Type,'SmoothedObservationErrors')
+    generic = 'SmoothedObservationErrors';
+    figname = 'Smoothed observation errors';
+    nvobs = size(options_.varobs,1);
+    numb = 0;
+    index = [];
+    for i=1:nvobs
+      if max(abs(Mean(i,10:end))) > 0.00000001
+	numb = numb + 1;
+	index = cat(1,index,i);
+      end
+    end
+    Distrib = Distrib(index,:,:);
+    Mean = Mean(index,:);
+    [nbplt,nr,nc,lr,lc,nstar] = pltorg(numb);
+    AllNames = options_.varobs(index,:);
+    if TeX
+      AllTeXNames = options_.varobs_TeX(index,:);
+    end
+  elseif strcmpi(Type,'Historical&SmoothedObservableVariables')
+    generic = 'HistoricalAndSmoothedVariables';
+    figname = 'Historical and smoothed observed variables.';
+    numb = size(options_.varobs,1);
+    [nbplt,nr,nc,lr,lc,nstar] = pltorg(numb);
+    AllNames = options_.varobs;
+    if TeX
+      AllTeXNames = options_.varobs_TeX;
+    end
+    Distrib = Distrib(bayestopt_.mf,:);
+  elseif strcmpi(Type,'FilteredVariables')
+    generic = 'FilteredVariables';
+    figname = 'Filtered variables';
+    AllNames = lgy_(dr_.order_var,:);
+    if TeX
+      AllTeXNames = lgy_TeX_(dr_.order_var,:);
+    end
+    [nbplt,nr,nc,lr,lc,nstar] = pltorg(size(lgy_,1));
+    numb = size(lgy_,1);
+  end    
+  
+  if TeX
+    fidTeX = fopen([fname_ '_' generic '.TeX'],'w');
+    fprintf(fidTeX,'%% TeX eps-loader file generated by metropolis.m (Dynare).\n');
+    fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+    fprintf(fidTeX,' \n');
+  end
+  
+  if nbplt == 1
+    hh = figure('Name',figname);
+    NAMES = [];
+    if TeX, TEXNAMES = [], end
+    for i=1:numb
+      set(0,'CurrentFigure',hh)
+      subplot(nr,nc,i);
+      test = ~(all(all(Distrib(i,:,:)>0)) | all(all(Distrib(i,:,:)<0)));
+      if test & ~strcmpi(Type,'Historical&SmoothedObservableVariables')  
+	plot([1 gend],[0 0],'-r','linewidth',0.5);
+      end
+      hold on
+      for j = 1:min(9,dim)
+	plot(1:gend,Distrib(i,:,j),'-g','linewidth',0.5)
+      end
+      plot(1:gend,Mean(i,:),'-k','linewidth',1)
+      xlim([1 gend]);
+      box on
+      hold off      
+      ih = figure('Visible','off');
+      set(0,'CurrentFigure',ih)
+      if test & ~strcmpi(Type,'Historical&SmoothedObservableVariables') 
+	plot([1 gend],[0 0],'-r','linewidth',0.5);
+      end
+      hold on
+      for j = 1:min(9,dim)
+	plot(1:gend,Distrib(i,:,j),'-g','linewidth',0.5)
+      end
+      plot(1:gend,Mean(i,:),'-k','linewidth',1)
+      xlim([1 gend]);
+      box on
+      hold off
+      name = deblank(AllNames(i,:));
+      NAMES   = strvcat(NAMES,name);
+      if ~isempty(options_.XTick)
+	set(gca,'XTick',options_.XTick)
+	set(gca,'XTickLabel',options_.XTickLabel)
+      end
+      eval(['print -depsc2 ' fname_ '_' generic '_' name]);
+      eval(['print -dpdf ' fname_ '_' generic '_' name]);
+      saveas(ih,[fname_ '_' generic '_' name '.fig']);
+      if TeX
+	texname = deblank(AllTeXNames(i,:));
+	TEXNAMES = strvcat(TEXNAMES,['$' texname '$']);
+      end
+      set(0,'CurrentFigure',hh)
+      title(name,'Interpreter','none')
+      if ~isempty(options_.XTick)
+	set(gca,'XTick',options_.XTick)
+	set(gca,'XTickLabel',options_.XTickLabel)
+      end
+    end
+    eval(['print -depsc2 ' fname_ '_' generic int2str(1)]);
+    eval(['print -dpdf ' fname_ '_' generic int2str(1)]);
+    saveas(hh,[fname_ '_' generic int2str(1) '.fig']);
+    if options_.nograph, close(hh), end
+    if TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:numb
+	fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering \n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_%s%s}\n',fname_,generic,int2str(1));
+      fprintf(fidTeX,'\\caption{%s.}',figname);
+      fprintf(fidTeX,'\\label{Fig:%s:%s}\n',generic,int2str(1));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+  else
+    for plt = 1:nbplt-1
+      hh = figure('Name',figname);
+      NAMES = [];
+      TEXNAMES = [];
+      for i=1:nstar
+	k = (plt-1)*nstar+i;
+	set(0,'CurrentFigure',hh)
+	subplot(nr,nc,i);
+	test = ~(all(all(Distrib(k,:,:)>0)) | all(all(Distrib(k,:,:)<0))); 
+	if test & ~strcmpi(Type,'Historical&SmoothedObservableVariables')
+	  plot([1 gend],[0 0],'-r','linewidth',0.5);
+	end
+	hold on
+	for j = 1:min(9,dim)
+	  plot(1:gend,Distrib(k,:,j),'-g','linewidth',0.5)
+	end
+	plot(1:gend,Mean(k,:),'-k','linewidth',1)
+	xlim([1 gend]);
+	box on
+	hold off
+	name = deblank(AllNames(k,:));
+	NAMES = strvcat(NAMES,name);
+	ih = figure('Visible','off');
+	set(0,'CurrentFigure',ih)
+	if test & ~strcmpi(Type,'Historical&SmoothedObservableVariables')  
+	  plot([1 gend],[0 0],'-r','linewidth',0.5);
+	end
+	hold on
+	for j = 1:min(9,dim)
+	  plot(1:gend,Distrib(k,:,j),'-g','linewidth',0.5)
+	end
+	plot(1:gend,Mean(k,:),'-k','linewidth',1)
+	xlim([1 gend]);
+	box on
+	hold off
+	if ~isempty(options_.XTick)
+	  set(gca,'XTick',options_.XTick)
+	  set(gca,'XTickLabel',options_.XTickLabel)
+	end
+	eval(['print -depsc2 ' fname_ '_' generic '_' name]);
+	eval(['print -dpdf ' fname_ '_' generic '_' name]);
+	saveas(ih,[fname_ '_' generic '_' name '.fig']);
+	if TeX
+	  texname = deblank(AllTeXNames(k,:));
+	  TEXNAMES = strvcat(TEXNAMES,['$' texname '$']);    
+	end
+	set(0,'CurrentFigure',hh)
+	title(name,'Interpreter','none')
+	if ~isempty(options_.XTick)
+	  set(gca,'XTick',options_.XTick)
+	  set(gca,'XTickLabel',options_.XTickLabel)
+	end
+      end
+      eval(['print -depsc2 ' fname_ '_' generic int2str(plt)]);
+      eval(['print -dpdf ' fname_ '_' generic int2str(plt)]);
+      saveas(hh,[fname_ '_' generic int2str(plt) '.fig']);
+      if options_.nograph, close(hh), end
+      if TeX
+	fprintf(fidTeX,'\\begin{figure}[H]\n');
+	for jj = 1:nstar
+	  fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
+	end    
+	fprintf(fidTeX,'\\centering \n');
+	fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_%s%s}\n',fname_,generic,int2str(plt));
+	fprintf(fidTeX,'\\caption{%s.}',figname);
+	fprintf(fidTeX,'\\label{Fig:%s:%s}\n',generic,int2str(plt));
+	fprintf(fidTeX,'\\end{figure}\n');
+	fprintf(fidTeX,' \n');
+      end    
+    end
+    hh = figure('Name',figname);
+    NAMES = [];
+    TEXNAMES = [];
+    for i=1:numb-(nbplt-1)*nstar
+      k = (nbplt-1)*nstar+i;
+      set(0,'CurrentFigure',hh)
+      if lr ~= 0
+	subplot(lr,lc,i);
+      else
+	subplot(nr,nc,i);
+      end
+      test = ~(all(all(Distrib(k,:,:)>0)) | all(all(Distrib(k,:,:)<0)));
+      if test & ~strcmpi(Type,'Historical&SmoothedObservableVariables') 
+	plot([1 gend],[0 0],'-r','linewidth',0.5);
+      end
+      hold on
+      for j = 1:min(9,dim)
+	plot(1:gend,Distrib(k,:,j),'-g','linewidth',0.5)
+      end
+      plot(1:gend,Mean(k,:),'-k','linewidth',1)
+      xlim([1 gend]);
+      box on
+      hold off
+      name = deblank(AllNames(k,:));
+      NAMES    = strvcat(NAMES,name);
+      ih = figure('Visible','off');
+      set(0,'CurrentFigure',ih)
+      if test & ~strcmpi(Type,'Historical&SmoothedObservableVariables')  
+	plot([1 gend],[0 0],'-r','linewidth',0.5);
+      end
+      hold on
+      for j = 1:min(9,dim)
+	plot(1:gend,Distrib(k,:,j),'-g','linewidth',0.5)
+      end
+      plot(1:gend,Mean(k,:),'-k','linewidth',1)
+      xlim([1 gend]);
+      box on
+      hold off
+      if ~isempty(options_.XTick)
+	set(gca,'XTick',options_.XTick)
+	set(gca,'XTickLabel',options_.XTickLabel)
+      end
+      eval(['print -depsc2 ' fname_ '_' generic  '_' name]);
+      eval(['print -dpdf ' fname_ '_' generic '_' name]);
+      saveas(ih,[fname_ '_' generic '_' name '.fig']);
+      if TeX
+	texname  = deblank(AllTeXNames(k,:));
+	TEXNAMES = strvcat(TEXNAMES,['$' texname '$']);
+      end
+      set(0,'CurrentFigure',hh)
+      title(name,'Interpreter','none');
+      if ~isempty(options_.XTick)
+	set(gca,'XTick',options_.XTick)
+	set(gca,'XTickLabel',options_.XTickLabel)
+      end
+    end
+    eval(['print -depsc2 ' fname_ '_' generic int2str(nbplt)]);
+    eval(['print -dpdf ' fname_ '_' generic int2str(nbplt)]);
+    saveas(hh,[fname_ '_' generic int2str(nbplt) '.fig']);
+    if options_.nograph, close(hh), end
+    if TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:size(NAMES,1);
+	fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering \n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_%s%s}\n',fname_,generic,int2str(nbplt));
+      fprintf(fidTeX,'\\caption{%s.}',figname);
+      fprintf(fidTeX,'\\label{Fig:%s:%s}\n',generic,int2str(nbplt));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,'\n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+  end
+
+
+
+
diff --git a/tags/v_3.062/matlab/VarSampleMoments.m b/tags/v_3.062/matlab/VarSampleMoments.m
new file mode 100644
index 0000000000..a76761e102
--- /dev/null
+++ b/tags/v_3.062/matlab/VarSampleMoments.m
@@ -0,0 +1,57 @@
+function [YtY,XtY,YtX,XtX,Y,X] = VarSampleMoments(FirstObservation,LastObservation,qlag,trend);
+global options_
+
+X = [];
+Y = [];
+YtY = [];
+YtX = [];
+XtY = [];
+XtX = [];
+
+
+if exist(options_.datafile)
+  eval(options_.datafile);
+else
+  eval(['load ' options_.datafile]);
+end
+data = [ ];
+for i=1:size(options_.varobs,1)
+    data = [data eval(deblank(options_.varobs(i,:)))];
+end
+
+if qlag > FirstObservation
+    disp('VarSampleMoments :: not enough data to initialize! Try to increase FirstObservation.')
+    return
+end
+NumberOfObservations = LastObservation-FirstObservation+1;
+NumberOfVariables = size(data,2);
+if trend == -1% No constant
+    X = zeros(NumberOfObservations,NumberOfVariables*qlag);
+elseif trend == 0;% Constant
+    X = zeros(NumberOfObservations,NumberOfVariables*qlag+1);
+    indx = NumberOfVariables*qlag+1;
+elseif trend == 1;% Constant + Trend
+    X = zeros(NumberOfObservations,NumberOfVariables*qlag+2);
+    indx = NumberOfVariables*qlag+1:NumberOfVariables*qlag+2;
+else
+    disp('varols :: trend must be equal to -1,0 or 1!')
+    return
+end
+% I build matrices Y and X  
+Y = data(FirstObservation:LastObservation,:);
+for t=1:NumberOfObservations
+    line = t + FirstObservation-1;
+    for lag = 1:qlag
+        X(t,(lag-1)*NumberOfVariables+1:lag*NumberOfVariables) = data(line-lag,:);
+    end
+    if trend == 0
+        X(t,indx) = 1;
+    elseif trend == 1
+        X(t,indx) = [ 1 , t ];
+    end
+end 
+
+YtY = Y'*Y;
+YtX = Y'*X;
+XtY = X'*Y;
+XtX = X'*X;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/asamin.dll b/tags/v_3.062/matlab/asamin.dll
new file mode 100755
index 0000000000000000000000000000000000000000..4f0cb237fa1abf2dde685d18f222468d5c3ccbeb
GIT binary patch
literal 56832
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

literal 0
HcmV?d00001

diff --git a/tags/v_3.062/matlab/asamin.m b/tags/v_3.062/matlab/asamin.m
new file mode 100644
index 0000000000..813a2749ac
--- /dev/null
+++ b/tags/v_3.062/matlab/asamin.m
@@ -0,0 +1,160 @@
+%  ASAMIN A gateway function to Adaptive Simulated Annealing (ASA)
+%
+%  ASAMIN is a matlab gateway function to Lester Ingber's Adaptive
+%  Simulated Annealing (ASA)
+%
+%  Copyright (c) 1999-2001  Shinichi Sakata. All Rights Reserved. 
+%
+%  $Id: asamin.m,v 1.1 2004/01/16 10:46:59 michel Exp $
+%
+%  Usage:
+%
+%  asamin ('set')
+%
+%    lists the current value of each option.
+%
+%  asamin ('set', opt_name)
+%
+%    shows the current value of the option given by a character string
+%    opt_name; e.g., 
+%
+%        asamin ('set', 'seed')
+%
+%  asamin ('set', opt_name, opt_value)
+%
+%    set the value opt_value to the option opt_name; e.g.,
+%
+%        asamin ('set', 'seed', 654342)
+%        asamin ('set', 'asa_out_file', 'example.log')
+%
+%  The valid options in these commands are:
+%
+%    rand_seed
+%    test_in_cost_func
+%    use_rejected_cost
+%    asa_out_file
+%    limit_acceptances
+%    limit_generated
+%    limit_invalid
+%    accepted_to_generated_ratio
+%    cost_precision
+%    maximum_cost_repeat
+%    number_cost_samples
+%    temperature_ratio_scale
+%    cost_parameter_scale
+%    temperature_anneal_scale
+%    include_integer_parameters
+%    user_initial_parameters
+%    sequential_parameters
+%    initial_parameter_temperature
+%    acceptance_frequency_modulus
+%    generated_frequency_modulus
+%    reanneal_cost
+%    reanneal_parameters
+%    delta_x
+%
+%    rand_seed is the seed of the random number generation in ASA. 
+%
+%    If test_in_cost_func is set to zero, the cost function should
+%    simply return the value of the objective function. When
+%    test_in_cost_func is set to one, asamin () calls the cost
+%    function with a threshold value as well as the parameter
+%    value. The cost function needs to judge if the value of the cost
+%    function exceeds the threshold as well as compute the value of
+%    the cost function when asamin () requires. (See COST FUNCTION
+%    below for details.)
+%
+%    All other items but use_rejected_cost belong to structure
+%    USER_OPTIONS in ASA. See ASA_README in the ASA package for
+%    details. The default value of use_rejected_cost is zero. If you
+%    set this option to one, ASA uses the current cost value to
+%    compute certain indices, even if the current state is rejected by
+%    the user cost function, provided that the current cost value is
+%    lower than the cost value of the past best state. (See COST
+%    FUNCTION below about the user cost function.)
+%
+%  asamin ('reset')
+%    resets all option values to the hard-coded default values.
+%
+%  [fstar,xstar,grad,hessian,state] = ...
+%     asamin ('minimize', func, xinit, xmin, xmax, xtype,...
+%              parm1, parm2, ...)
+%
+%     minimizes the cost function func (also see COST FUNCTION below).
+%     The argument xinit specifies the initial value of the arguments
+%     of the cost function. Each element of the vectors xmin and xmax
+%     specify the lower and upper bounds of the corresponding
+%     argument.  The vector xtype indicates the types of the
+%     arguments. If xtype(i) is -1 if the i'th argument is real;
+%     xtype(i) is 1 if the i'th argument is integer. If this argument
+%     should be ignored in reannealing, multiply the corresponding
+%     element of xtype by 2 so that the element is 2 or -2. All
+%     parameters following xtype are optional and simply passed to the
+%     cost function each time the cost function is called.
+%
+%     This way of calling asamin returns the following values:
+%
+%     fstar
+%       The value of the objective function at xstar.
+%     xstar
+%       The argument vector at the exit from the ASA routine. If things go
+%       well, xstar should be the minimizer of "func".
+%     grad
+%       The gradient of "func" at xstar.
+%     hessian
+%       The Hessian of "func" at xstar.
+%     state
+%       The vector containing the information on the exit state. 
+%       state(1) is the exit_code, and state(2) is the cost flag. See 
+%       ASA_README for details.
+%
+%
+%     
+%  COST FUNCTION
+%
+%  If test_in_cost_func is set to zero, asamin () calls the "cost
+%  function" (say, cost_func) with one argument, say x (the real cost
+%  function is evaluated at this point). Cost_func is expected to
+%  return the value of the objective function and cost_flag, the
+%  latter of which must be zero if any constraint (if any) is
+%  violated; otherwise one.
+%
+%  When test_in_cost_func is equal to one, asamin () calls the "cost
+%  function" (say, cost_func) with three arguments, say, x (at which
+%  the real cost function is evaluated), critical_cost_value, and
+%  no_test_flag. Asamin expects cost_func to return three scalar
+%  values, say, cost_value, cost_flag, and user_acceptance_flag in the
+%  following manner.
+%   
+%    1. The function cost_func first checks if x satisfies the
+%    constraints of the minimization problem. If any of the
+%    constraints is not satisfied, cost_func sets zero to cost_flag
+%    and return. (user_acceptance_flag and cost_value will not be used
+%    by asamin () in this case.) If all constraints are satisfied, set
+%    one to cost_flag, and proceed to the next step.
+%   
+%    2. If asamin () calls cost_func with no_test_flag==1, cost_func
+%    must compute the value of the cost function, set it to cost_value
+%    and return. When no_test_flag==0, cost_func is expected to judge
+%    if the value of the cost function is greater than
+%    critical_cost_value. If the value of the cost function is found
+%    greater than critical_cost_value, cost_func must set zero to
+%    user_acceptance_flag and return. (asamin () will not use
+%    cost_value in this case.) On the other hand, if the value of the
+%    cost function is found no greater than critical_cost_value,
+%    cost_func must compute the cost function at x, set it to
+%    cost_value, and set one to user_acceptance_flag.
+%   
+%  Remark: To understand the usefulness of test_in_cost_func == 1,
+%  note that it is sometimes easier to check if the value of the cost
+%  function is greater than critical_cost_value than compute the value
+%  of the cost function. For example, suppose that the cost function g
+%  is implicitly defined by an equation f(g(x),x)=0, where f is
+%  strictly increasing in the first argument, and evaluation of g(x)
+%  is computationally expensive (e.g., requiring an iterative method
+%  to find a solution to f(y,x)=0). But we can easily show that
+%  f(critical_cost_value,x) < 0 if and only if g(x) >
+%  critical_cost_value. We can judge if g(x) > critical_cost_value by
+%  computing f(critical_cost_value,x). The value of g(x) is not
+%  necessary.
+%
diff --git a/tags/v_3.062/matlab/beta_rnd.m b/tags/v_3.062/matlab/beta_rnd.m
new file mode 100644
index 0000000000..18462d1821
--- /dev/null
+++ b/tags/v_3.062/matlab/beta_rnd.m
@@ -0,0 +1,34 @@
+function rnd = beta_rnd (n, a, b)
+% PURPOSE: random draws from the beta(a,b) distribution
+%--------------------------------------------------------------
+% USAGE: rnd = beta_rnd(n,a,b)
+% where:   n = size of the vector of draws
+%          a = beta distribution parameter, a = scalar 
+%          b = beta distribution parameter  b = scalar 
+% NOTE: mean = a/(a+b), variance = ab/((a+b)*(a+b)*(a+b+1))
+%--------------------------------------------------------------
+% RETURNS: n-vector of random draws from the beta(a,b) distribution
+%--------------------------------------------------------------
+% SEE ALSO: beta_d, beta_pdf, beta_inv, beta_rnd
+%--------------------------------------------------------------
+
+% written by:
+% James P. LeSage, Dept of Economics
+% University of Toledo
+% 2801 W. Bancroft St,
+% Toledo, OH 43606
+% jlesage@spatial-econometrics.com
+
+   
+  if (nargin ~= 3)
+  error('Wrong # of arguments to beta_rnd');
+  end;
+  
+if any(any((a<=0)|(b<=0)))
+   error('Parameter a or b is nonpositive')
+end
+
+a1n = gamm_rnd(n,a,1);
+a1d = gamm_rnd(n,b,1);
+rnd = a1n./(a1n+a1d);
+
diff --git a/tags/v_3.062/matlab/bfgsi.m b/tags/v_3.062/matlab/bfgsi.m
new file mode 100644
index 0000000000..be2ef0e4f6
--- /dev/null
+++ b/tags/v_3.062/matlab/bfgsi.m
@@ -0,0 +1,25 @@
+function H = bfgsi(H0,dg,dx)
+% H = bfgsi(H0,dg,dx)
+% dg is previous change in gradient; dx is previous change in x;
+% 6/8/93 version that updates inverse hessian instead of hessian
+% itself.
+% Copyright by Christopher Sims 1996.  This material may be freely
+% reproduced and modified.
+if size(dg,2)>1
+   dg=dg';
+end
+if size(dx,2)>1
+   dx=dx';
+end
+Hdg = H0*dg;
+dgdx = dg'*dx;
+if (abs(dgdx) >1e-12)
+   H = H0 + (1+(dg'*Hdg)/dgdx)*(dx*dx')/dgdx - (dx*Hdg'+Hdg*dx')/dgdx;
+else
+   disp('bfgs update failed.')
+   disp(['|dg| = ' num2str(sqrt(dg'*dg)) '|dx| = ' num2str(sqrt(dx'*dx))]);
+   disp(['dg''*dx = ' num2str(dgdx)])
+   disp(['|H*dg| = ' num2str(Hdg'*Hdg)])
+   H=H0;
+end
+save H.dat H
diff --git a/tags/v_3.062/matlab/bicgstab.m b/tags/v_3.062/matlab/bicgstab.m
new file mode 100644
index 0000000000..9b1b4bd40e
--- /dev/null
+++ b/tags/v_3.062/matlab/bicgstab.m
@@ -0,0 +1,32 @@
+function [x,status]=bicgstab(func,b,x,tole,kmax,varargin)
+  status = 0;
+  r=b-feval(func,x,varargin{:});
+  rh_0 = r;
+  rh = r;
+  rho_0 = 1;
+  alpha = 1;
+  w = 1;
+  v = 0;
+  p = 0;
+  k = 0;
+  rho_1 = rh_0'*r;
+  tolr = tole*norm(b);
+  
+  while norm(r) > tolr & k < kmax
+    k = k+1;
+    beta = (rho_1/rho_0)*(alpha/w);
+    p = r+beta*(p-w*v);
+    v = feval(func,p,varargin{:});
+    alpha = rho_1/(rh_0'*v);
+    r = r-alpha*v;
+    t = feval(func,r,varargin{:});
+    w = (t'*r)/(t'*t);
+    rho_0 = rho_1;
+    rho_1 = -w*(rh_0'*t);
+    x = x+alpha*p+w*r;
+    r = r-w*t;
+  end
+if k == kmax
+  status = 1;
+  warning(sprintf('BICSTABN didn''t converge after %d iterations: norm(r) = %g',kmax,norm(r)));
+end
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/bksup.m b/tags/v_3.062/matlab/bksup.m
new file mode 100644
index 0000000000..c46e0e0bf5
--- /dev/null
+++ b/tags/v_3.062/matlab/bksup.m
@@ -0,0 +1,49 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function d1 = bksupk(ny,fid,jcf,icc1)
+
+global ykmax_ iter_ c ncc
+
+icf = [1:jcf-1] ;
+ir = [(iter_-1)*ny+1:ny*iter_] ;
+irf = icc1+(iter_-1)*ny ;
+d1 = zeros(iter_*ny,1) ;
+
+ofs = (((iter_-1)*ny+1)-1)*ncc*8 ;
+junk = fseek(fid,ofs,-1) ;
+c = fread(fid,[ncc,ny],'float64') ;
+c = c' ;
+
+d1(ir) = c(:,jcf) ;
+ir = ir-ny ;
+
+i = 2 ;
+
+while i <= ykmax_ | i <= iter_
+	irf1 = selif(irf,irf<iter_*ny) ;
+
+	ofs = (((iter_-i)*ny+1)-1)*ncc*8 ;
+	junk = fseek(fid,ofs,-1) ;
+	c = fread(fid,[ncc,ny],'float64') ;
+	c = c' ;
+
+	d1(ir) = c(:,jcf) - c(:,1:size(irf1,1))*d1(irf1) ;
+	ir = ir - ny ;
+	irf = irf - ny ;
+	i = i + 1 ;
+end
+
+while i <= iter_
+
+	ofs = (((iter_-i)*ny+1)-1)*ncc*8 ;
+	junk = fseek(fid,ofs,-1) ;
+	c = fread(fid,[ncc,ny],'float64') ;
+	c = c' ;
+
+	d1(ir) = c(:,jcf)-c(:,icf)*d1(irf) ;
+	ir = ir-ny ;			
+	irf = irf-ny ;
+	i = i+1;
+end
+
+return ;
diff --git a/tags/v_3.062/matlab/bksup1.m b/tags/v_3.062/matlab/bksup1.m
new file mode 100644
index 0000000000..72baca569c
--- /dev/null
+++ b/tags/v_3.062/matlab/bksup1.m
@@ -0,0 +1,17 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function d = bksup1(ny,jcf,iyf,c)
+
+global iter_
+
+ir = [(iter_-2)*ny+1:ny+(iter_-2)*ny] ;
+irf = iyf+(iter_-1)*ny ;
+icf = [1:size(iyf,2)] ;
+d = c(:,jcf) ;
+
+for i = 2:iter_
+	d(ir) = c(ir,jcf)-c(ir,icf)*d(irf) ;
+	ir = ir-ny ;
+	irf = irf-ny ;
+end
+
diff --git a/tags/v_3.062/matlab/bksupk.m b/tags/v_3.062/matlab/bksupk.m
new file mode 100644
index 0000000000..773861f62e
--- /dev/null
+++ b/tags/v_3.062/matlab/bksupk.m
@@ -0,0 +1,43 @@
+function d1 = bksupk(ny,fid,jcf,icc1)
+
+global ykmax_ iter_
+
+icf = [1:jcf-1] ;
+ir = [(iter_-1)*ny+1:ny*iter_] ;
+irf = icc1+(iter_-1)*ny ;
+d1 = zeros(iter_*ny,1) ;
+
+ofs = (((iter_-1)*ny+1)-1)*jcf*8 ;
+junk = fseek(fid,ofs,-1) ;
+c = fread(fid,[jcf,ny],'float64')' ;
+
+d1(ir) = c(:,jcf) ;
+ir = ir-ny ;
+
+i = 2 ;
+
+while i <= ykmax_ | i <= iter_
+	irf1 = selif(irf,irf<=iter_*ny) ;
+
+	ofs = (((iter_-i)*ny+1)-1)*jcf*8 ;
+	junk = fseek(fid,ofs,-1) ;
+	c = fread(fid,[jcf,ny],'float64')' ;
+
+	d1(ir) = c(:,jcf) - c(:,1:size(irf1,1))*d1(irf1) ;
+	ir = ir - ny ;
+	irf = irf - ny ;
+	i = i + 1 ;
+end
+
+while i <= iter_
+
+	ofs = (((iter_-i)*ny+1)-1)*jcf*8 ;
+	junk = fseek(fid,ofs,-1) ;
+	c = fread(fid,[jcf,ny],'float64')' ;
+
+	d1(ir) = c(:,jcf)-c(:,icf)*d1(irf) ;
+	ir = ir-ny ;			
+	irf = irf-ny ;
+	i = i+1;
+end
+
diff --git a/tags/v_3.062/matlab/brm.m b/tags/v_3.062/matlab/brm.m
new file mode 100644
index 0000000000..a36ace354b
--- /dev/null
+++ b/tags/v_3.062/matlab/brm.m
@@ -0,0 +1,30 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function [e_1, e_2, e_inf]=brm(v,nbr,drop)
+  global y_ iy_ iter_ ykmin_ ykmax_ it_ endo_nbr ex_ fname_
+  
+  i=(iy_ > 0)' ;
+  iyr0 = find(i(:)) ;
+
+  ex_old = ex_;
+  ex_ = ex_(drop+1:end,:);
+  y = y_(:,drop+1:end);
+  y = y(:);
+  
+  iter = iter_ - drop - ykmin_ - ykmax_;
+
+  z = zeros(endo_nbr,iter);
+  fh = str2func([fname_ '_ff']);
+  for it_ = ykmin_+1 : iter+ykmin_
+    z(:,it_) = feval(fh,y(iyr0));
+    iyr0 = iyr0 + endo_nbr;
+  end
+  
+    t1 = z(nbr,:)';
+    t2 = v(drop+1:end-2);
+    t = t1./t2;
+  e_1 = log10(mean(abs(t)));
+  e_2 = log10(var(t));
+  e_inf = log10(max(abs(t)));
+
+  ex_ = ex_old;
diff --git a/tags/v_3.062/matlab/bseastr.m b/tags/v_3.062/matlab/bseastr.m
new file mode 100644
index 0000000000..5b30f61bc0
--- /dev/null
+++ b/tags/v_3.062/matlab/bseastr.m
@@ -0,0 +1,33 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function x = bseastr(s1,s2)
+
+m = size(s1,1) ;
+x = zeros(m,1) ;
+s1=upper(deblank(s1));
+s2=upper(deblank(s2));
+
+for im = 1:m
+	key = s1(im,:) ;
+	h = size(s2,1) ;
+	l = 1 ;
+	while l <= h
+		mid = round((h+l)/2) ;
+		temp = s2(mid,:) ;
+		if ~ strcmp(key,temp)
+ 			for i = 1:min(length(key),length(temp))
+				if temp(i) > key(i)
+					h = mid - 1 ;
+					break 
+				else
+					l = mid + 1 ;
+					break 
+				end
+			end
+		else
+			x(im) = mid ;
+			break 
+		end
+	end
+end
+
diff --git a/tags/v_3.062/matlab/calib.m b/tags/v_3.062/matlab/calib.m
new file mode 100644
index 0000000000..aee57e1f70
--- /dev/null
+++ b/tags/v_3.062/matlab/calib.m
@@ -0,0 +1,183 @@
+function [Sigma_e_,info] = calib(var_indices,targets,var_weights,nar,cova,Sigma_e_)
+  global ys_ endo_nbr exo_nbr lgy_ lgx_ ykmin_ vx options_
+  
+  ncstr = 0;
+  ni = size(var_indices,1);
+  for i=1:nar+3
+    ncstr = ncstr + size(var_indices{i},1);
+  end
+  if cova
+    if ncstr < exo_nbr*(exo_nbr+1)/2
+      error(['number of preset variances is smaller than number of shock' ...
+	     ' variances and covariances to be estimated !'])
+    end
+  else
+    if ncstr < exo_nbr
+      error(['number of preset variances is smaller than number of shock' ...
+	     ' variances to be estimated !'])
+    end
+  end
+  
+  check_model;
+  
+  % computes approximate solution at order 1
+  [dr_, info] = resol(ys_,0);
+
+  if info(1)
+    print_info(info);
+  end  
+
+  ghx = dr.ghx;
+  ghu = dr.ghu;
+  npred = dr.npred;
+  nstatic = dr.nstatic;
+  kstate = dr.kstate;
+  order = dr.order_var;
+  iv(order) = [1:endo_nbr];
+  iv = iv';
+  nx = size(ghx,2);
+
+  ikx = [nstatic+1:nstatic+npred];
+  
+  A = zeros(nx,nx);
+  A(1:npred,:)=ghx(ikx,:);
+  offset_r = npred;
+  offset_c = 0;
+  i0 = find(kstate(:,2) == ykmin_+1);
+  n0 = size(i0,1);
+  for i=ykmin_:-1:2
+    i1 = find(kstate(:,2) == i);
+    n1 = size(i1,1);
+    j = zeros(n1,1);
+    for j1 = 1:n1
+      j(j1) = find(kstate(i0,1)==kstate(i1(j1),1));
+    end
+    A(offset_r+1:offset_r+n1,offset_c+j)=eye(n1);
+    offset_r = offset_r + n1;
+    offset_c = offset_c + n0;
+    i0 = i1;
+    n0 = n1;
+  end
+  ghu1 = [ghu(ikx,:);zeros(nx-npred,exo_nbr)];
+%  IA = speye(nx*nx)-kron(A,A);
+%  kron_ghu = kron(ghu1,ghu1);
+  
+  % vx1 such that vec(sigma_x) = vx1 * vec(Sigma_e_) (predetermined vars) 
+vx1 = [];
+  % vx1 = IA\kron_ghu;
+  IA = [];
+  kron_ghu = [];
+  
+  % computes required variables and indices among required variables
+  iiy = [];
+  for i=1:nar+3
+    if i ~= 3 & ~isempty(var_indices{i})
+      iiy = union(iiy, iv(var_indices{i}(:,1)));
+    end
+  end
+  if ~isempty(var_indices{2})
+    iiy = union(iiy, iv(var_indices{2}(:,2)));
+  end
+  ny = size(iiy,1);
+
+  for i=1:nar+3
+    if i ~= 3 & ~isempty(var_indices{i})
+      var_indices{i}(:,1) = indnv(iv(var_indices{i}(:,1)),iiy);
+    end
+    if i ~= 2 & i ~= 3 & ~isempty(var_indices{i})
+      var_indices{i} = sub2ind([ny ny],var_indices{i},var_indices{i});
+    end
+  end
+  if ~isempty(var_indices{2})
+    var_indices{2}(:,2) = indnv(iv(var_indices{2}(:,2)),iiy);
+    var_indices{2} = sub2ind([ny ny],var_indices{2}(:,1),var_indices{2}(:,2));
+  end
+  if ~isempty(var_indices{3})
+    var_indices{3} = sub2ind([exo_nbr exo_nbr],var_indices{3}(:,1),var_indices{3}(:,2));
+  end
+  if isempty(Sigma_e_)
+    Sigma_e_ = 0.01*eye(exo_nbr);
+    b = 0.1*ghu1*ghu1';
+  else
+    b = ghu1*Sigma_e_*ghu1';
+    Sigma_e_ = chol(Sigma_e_+1e-14*eye(exo_nbr));
+  end
+  options=optimset('LargeScale','on','MaxFunEvals',20000*ny,'TolX',1e-4, ...
+		   'TolFun',1e-4,'Display','Iter','MaxIter',10000);
+%  [Sigma_e_,f]=fminunc(@calib_obj,Sigma_e_,options,A,ghu1,ghx(iiy,:),ghu(iiy,:),targets,var_weights,var_indices,nar);
+  [Sigma_e_,f]=fmincon(@calib_obj,diag(Sigma_e_).^2,-eye(exo_nbr),zeros(exo_nbr,1),[],[],[],[],[],options,A,ghu1,ghx(iiy,:),ghu(iiy,:),targets,var_weights,var_indices,nar);
+  Sigma_e_ = diag(Sigma_e_);
+  
+  objective = calib_obj2(diag(Sigma_e_),A,ghu1,ghx(iiy,:),ghu(iiy,:), ...
+			 targets,var_weights,var_indices,nar);
+  if ~options_.noprint
+    disp('CALIBRATION')
+    disp('')
+    if ~isempty(var_indices{1})
+      disp(sprintf('%16s %14s %14s %14s %14s','Std. Dev','Target','Obtained','Diff'));
+      str = '   ';
+      for i=1:size(var_indices{1},1)
+	[i1,i2] = ind2sub([ny ny],var_indices{1}(i));
+	str = sprintf('%16s: %14.2f %14.2f %14.2f',lgy_(order(iiy(i1)),:),targets{1}(i),objective{1}(i),objective{1}(i)-targets{1}(i));
+	disp(str);
+      end
+    end
+    if ~isempty(var_indices{2})
+      disp(sprintf('%32s %14s %14s','Correlations','Target','Obtained','Diff'));
+      str = '   ';
+      for i=1:size(var_indices{2},1)
+	[i1,i2]=ind2sub([ny ny],var_indices{2}(i));
+	str = sprintf('%16s,%16s: %14.2f %14.2f %14.2f',lgy_(order(iiy(i1)),:), ...
+		      lgy_(order(iiy(i2)),:),targets{2}(i),objective{2}(i),objective{2}(i)-targets{2}(i));
+	disp(str);
+      end
+    end
+    if ~isempty(var_indices{3})
+      disp(sprintf('%32s %16s %16s','Constrained shocks (co)variances','Target','Obtained'));
+      str = '   ';
+      for i=1:size(var_indices{3},1)
+	[i1,i2]=ind2sub([exo_nbr exo_nbr],var_indices{3}(i));
+	if i1 == i2
+	  str = sprintf('%32s: %16.4f %16.4f',lgx_(order(i1),:), ...
+			targets{3}(i),objective{3}(i));
+	else
+	  str = sprintf('%16s,%16s: %16.4f %16.4f',lgx_(order(i1),:), ...
+			lgx_(order(i2), :),targets{3}(i),objective{3}(i));
+	end
+	disp(str);
+      end
+    end
+    flag = 1;
+    for j=4:nar+3
+      if ~isempty(var_indices{j})
+	if flag
+	  disp(sprintf('%16s %16s %16s','Autocorrelations','Target','Obtained'));
+	  str = '   ';
+	  flag = 0;
+	end
+	for i=1:size(var_indices{j},1)
+	  [i1,i2] = ind2sub([ny ny],var_indices{j}(i));
+	  str = sprintf('%16s(%d): %16.4f %16.4f',lgy_(order(iiy(i1)),:), ...
+			j-3,targets{j}(i),objective{j}(i));
+	  disp(str);
+	end
+      end
+    end    
+    
+    disp('');
+    disp('Calibrated variances')
+    str = '   ';
+    for i=1:exo_nbr
+      str = [str sprintf('%16s',lgx_(i,:))];
+    end
+    disp(str);
+    disp('');
+    str = '      ';
+    for i=1:exo_nbr
+      str = [str sprintf('%16f',Sigma_e_(i,i))];
+    end
+    disp(str);
+  end % end if options_.noprint
+
+  
+  % 10/9/02 MJ
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/calib_obj.m b/tags/v_3.062/matlab/calib_obj.m
new file mode 100644
index 0000000000..9495c0987c
--- /dev/null
+++ b/tags/v_3.062/matlab/calib_obj.m
@@ -0,0 +1,67 @@
+% targets and iy order: 1) variances 2) correlations 
+% 3) constraints on Sigma_e_ itself 4) autocorrelations
+function f=calib_obj(Sigma_e_,A,ghu1,ghx,ghu,targets,var_weights,iy,nar)
+  global vx fold
+  
+  Gamma_y = cell(nar+1,1);
+%  Sigma_e_ = Sigma_e_'*Sigma_e_;
+  Sigma_e_=diag(Sigma_e_);
+  nx = size(ghx,2);
+  b=ghu1*Sigma_e_*ghu1';
+  vx = [];
+  if isempty(vx)
+    vx = lyapunov_symm(A,b);
+  else
+    [vx,status] = bicgstab(@f_var,b(:),vx(:),1e-8,50,A,nx);
+    if status
+      vx = lyapunov_symm(A,b);
+    else
+      vx=reshape(vx,nx,nx);
+    end
+  end
+  Gamma_y{1} = ghx*vx*ghx'+ ghu*Sigma_e_*ghu';
+  f = 0;
+  if ~isempty(targets{1})
+    e = targets{1}-sqrt(Gamma_y{1}(iy{1}));
+    f = e'*(var_weights{1}.*e);
+  end
+
+  sy = sqrt(diag(Gamma_y{1}));
+  sy = sy *sy';
+  if ~isempty(targets{2})
+    e = targets{2}-Gamma_y{1}(iy{2})./(sy(iy{2})+1e-10);
+    f = f+e'*(var_weights{2}.*e);
+  end
+  
+  if ~isempty(targets{3})
+    e = targets{3}-sqrt(Sigma_e_(iy{3}));
+    f = f+e'*(var_weights{3}.*e);
+  end
+  
+  % autocorrelations
+  if nar > 0
+    vxy = (A*vx*ghx'+ghu1*Sigma_e_*ghu');
+    
+    Gamma_y{2} = ghx*vxy./(sy+1e-10);
+    if ~isempty(targets{4})
+      e = targets{4}-Gamma_y{2}(iy{4});
+      f = f+e'*(var_weights{4}.*e);
+    end
+    
+    for i=2:nar
+      vxy = A*vxy;
+      Gamma_y{i+1} = ghx*vxy./(sy+1e-10);
+      if ~isempty(targets{i+3})
+	e = targets{i+3}-Gamma_y{i+1}(iy{i+3});
+	f = f+e'*(var_weights{i+3}.*e);
+      end
+    end
+  end
+  if isempty(fold) | f < 2*fold
+    fold = f;
+    vxold = vx;
+  end
+  % 11/04/02 MJ generalized for correlations, autocorrelations and
+  %             constraints on Sigma_e_
+  % 01/25/03 MJ targets std. dev. instead of variances
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/calib_obj2.m b/tags/v_3.062/matlab/calib_obj2.m
new file mode 100644
index 0000000000..82c4bee57b
--- /dev/null
+++ b/tags/v_3.062/matlab/calib_obj2.m
@@ -0,0 +1,46 @@
+% targets and iy order: 1) variances 2) correlations 
+% 3) constraints on Sigma_e_ itself 4) autocorrelations
+function objective=calib_obj2(Sigma_e_,A,ghu1,ghx,ghu,targets,var_weights,iy,nar)
+  global vx fold
+  
+  objective = cell (nar+3);
+  Gamma_y = cell(nar+1,1);
+  Sigma_e_=diag(Sigma_e_);
+  nx = size(ghx,2);
+  b=ghu1*Sigma_e_*ghu1';
+  vx = lyapunov_symm(A,b);
+  Gamma_y{1} = ghx*vx*ghx'+ ghu*Sigma_e_*ghu';
+  if ~isempty(targets{1})
+    objective{1} = sqrt(Gamma_y{1}(iy{1}));
+  end
+
+  sy = sqrt(diag(Gamma_y{1}));
+  sy = sy *sy';
+  if ~isempty(targets{2})
+    objective{2} = Gamma_y{1}(iy{2})./(sy(iy{2})+1e-10);
+  end
+  
+  if ~isempty(targets{3})
+    objective{3} = Sigma_e_(iy{3});
+  end
+  
+  % autocorrelations
+  if nar > 0
+    vxy = (A*vx*ghx'+ghu1*Sigma_e_*ghu');
+    
+    Gamma_y{2} = ghx*vxy./(sy+1e-10);
+    if ~isempty(targets{4})
+      objective{4} = Gamma_y{2}(iy{4});
+    end
+    
+    for i=2:nar
+      vxy = A*vxy;
+      Gamma_y{i+1} = ghx*vxy./(sy+1e-10);
+      if ~isempty(targets{i+3})
+	objecitve{i+3} = Gamma_y{i+1}(iy{i+3});
+      end
+    end
+  end
+
+  % 11/04/02 MJ generalized for correlations, autocorrelations and
+  %             constraints on Sigma_e_
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/check.m b/tags/v_3.062/matlab/check.m
new file mode 100644
index 0000000000..3072f2eea8
--- /dev/null
+++ b/tags/v_3.062/matlab/check.m
@@ -0,0 +1,69 @@
+% Copyright (C) 2001 Michel Juillard
+%
+
+function result = check
+  global fname_ ys_ eigenvalues_ lambda_ dynatol_ it_ ykmin_ valf_ ex_ ...
+      exe_ xkmin_ xkmax_ options_
+  
+  temp_options = options_;
+  tempex = ex_;
+  if ~valf_
+    ex_ = ones(xkmax_+xkmin_+1,1)*exe_';
+  end
+  
+  options_ = set_default_option(options_,'noprint',0);
+  options_ = set_default_option(options_,'order',1);  
+  options_ = set_default_option(options_,'dr_algo',0);  
+
+  [dr, info] = resol(ys_,1);
+  
+  if info(1) ~= 0 & info(1) ~= 3 & info(1) ~= 4
+    print_info(info);
+  end  
+
+  ex_ = tempex;
+  
+  eigenvalues_ = dr.eigval;
+  nyf = nnz(dr.kstate(:,2)>ykmin_+1);
+  [m_lambda,i]=sort(abs(eigenvalues_));
+  
+  if options_.noprint == 0
+    disp(' ')
+    disp('EIGENVALUES:')
+    disp(sprintf('%16s %16s %16s\n','Modulus','Real','Imaginary'))
+    z=[m_lambda real(eigenvalues_(i)) imag(eigenvalues_(i))]';
+    disp(sprintf('%16.4g %16.4g %16.4g\n',z))
+    options_ = set_default_option(options_,'qz_criterium',1.000001);
+    disp(sprintf('\nThere are %d eigenvalue(s) larger than 1 in modulus ', ...
+		 nnz(abs(eigenvalues_) > options_.qz_criterium)));
+    disp(sprintf('for %d forward-looking variable(s)',nyf));
+    disp(' ')
+    if info(1) == 0
+      if dr.rank == nyf
+	disp('The rank condition is verified.')
+      else
+	disp('The rank conditions ISN''T verified!')
+      end
+      disp(' ')
+    end
+  end
+  
+  % keep lambda_ for backward compatibility
+  lambda_ = eigenvalues_;
+
+  options_ = temp_options;
+  
+  % 2/9/99 MJ: line 15, added test for absence of exogenous variable.
+  % 8/27/2000 MJ: change JACOB call. Added ...,1 to cumsum()
+  % 6/24/01 MJ: added count of abs(eigenvalues) > 1
+  % 2/21/02 MJ: count eigenvalues > 1[+1e-5]
+  % 01/22/03 MJ: warning(warning_state) needs parentheses for Matlab 6.5
+  % 03/20/03 MJ: changed name of global from lambda to lambda_ to avoid
+  %              name conflicts with parameters
+  % 05/21/03 MJ: replace computation by dr1.m and add rank check
+  % 06/05/03 MJ: corrected bug when xkmin_ > 0
+  
+
+
+
+
diff --git a/tags/v_3.062/matlab/check_mh.m b/tags/v_3.062/matlab/check_mh.m
new file mode 100644
index 0000000000..64b9512e3a
--- /dev/null
+++ b/tags/v_3.062/matlab/check_mh.m
@@ -0,0 +1,24 @@
+function check_mh(fname)
+  eval(['load ' fname]);
+  nb = size(x3,3);
+  np = size(x2,2);
+  nr = size(x2,1);
+  
+  j1 = ceil(0.5*nr);
+  x = [j1:100:nr];
+  z = [];
+  for i=1:np
+    y1 = zeros(size(x),nb);
+    for k=1:nb
+      for j=1:length(x)
+	y1(j,k) = mean(x2(1:x(j),i,k));
+      end
+    end
+    my_subplot(i,np,4,5,'MH convergence');
+    plot([y1])
+    xmin = min(min(x2(:,i,:)));
+    xmax = max(max(x2(:,i,:)));
+    z = [z; [i sum(sum(x3(:,i,:) < xmin))/nr sum(sum(x3(:,i) > xmax))/nr]];
+  end
+  disp(z)
+     
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/check_model.m b/tags/v_3.062/matlab/check_model.m
new file mode 100644
index 0000000000..7189ca2488
--- /dev/null
+++ b/tags/v_3.062/matlab/check_model.m
@@ -0,0 +1,18 @@
+function check_model()
+  global iy_ ykmin_ ykmax_ xkmin_ xkmax_ iy_ exo_det_nbr
+  
+  xlen = xkmin_ + xkmax_ + 1;
+  if ~ iy_(ykmin_+1,:) > 0
+  error ('RESOL: Error in model specification: some variables don"t appear as current') ;
+end
+
+if xlen > 1
+  error (['RESOL: stochastic exogenous variables must appear only at the' ...
+	  ' current period. Use additional endogenous variables']) ;
+end
+
+if (exo_det_nbr > 0) & (ykmin_ > 1 | ykmax_ > 1)
+  error(['Exogenous deterministic variables are currently only allowed in' ...
+	 ' models with leads and lags on only one period'])
+end
+
diff --git a/tags/v_3.062/matlab/cols.m b/tags/v_3.062/matlab/cols.m
new file mode 100644
index 0000000000..b63a5b4f1f
--- /dev/null
+++ b/tags/v_3.062/matlab/cols.m
@@ -0,0 +1,2 @@
+function nc=cols(x)
+  nc = size(x,2);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/compdist.m b/tags/v_3.062/matlab/compdist.m
new file mode 100644
index 0000000000..363b463c0a
--- /dev/null
+++ b/tags/v_3.062/matlab/compdist.m
@@ -0,0 +1,171 @@
+function compdist(xparam1, x2, pltopt, figurename)
+global bayestopt_  estim_params_ lgx_ lgy_ options_
+
+% NOTE: If pltopt ~= 'All' compdist.m just draws prior densities.  
+
+%% Set density estimation parameters:
+number_of_grid_points = 2^9;      % 2^9 = 512 !... Must be a power of two.
+bandwidth = 0;                    % Rule of thumb optimal bandwidth parameter.
+kernel_function = 'gaussian';     % You can switch to: 'epanechnikov', 'quartic', 'triangle', 
+% 'triweight', 'uniform' or 'cosinus' kernels (iff bandwidth=0, see posterior_density_estimate.m). 
+truncprior = 10^(-3);             
+  
+  
+npar=length(xparam1);
+nruns=length(x2);
+icol=ceil(sqrt(npar));
+iraw=icol;
+if (icol-1)*(icol-2)>=npar
+    iraw = icol-2;
+    icol=icol-1;
+elseif (icol)*(icol-2)>=npar
+    iraw = icol-2;
+elseif icol*(icol-1)>=npar
+    iraw=icol-1;
+end
+
+pmean=bayestopt_.pmean;
+pshape=bayestopt_.pshape; 
+p1 = bayestopt_.p1;
+p2 = bayestopt_.p2;
+p3 = bayestopt_.p3;
+p4 = bayestopt_.p4;
+  
+figure('Name',figurename)
+for i=1:npar;
+  if i<=estim_params_.nvx
+    vname = deblank(lgx_(estim_params_.var_exo(i,1),:));
+    nam=['SE_{',vname,'}'];
+  elseif  i<=(estim_params_.nvx+estim_params_.nvn)
+    deblank(options_.varobs(estim_params_.var_endo(i-estim_params_.nvx,1),:));
+    nam=['SE_{EOBS_',vname,'}'];
+  elseif  i<=(estim_params_.nvx+estim_params_.nvn+estim_params_.ncx)
+    j = i - (estim_params_.nvx+estim_params_.nvn);
+    k1 = estim_params_.corrx(j,1);
+    k2 = estim_params_.corrx(j,2);
+    vname = [deblank(lgx_(k1,:)) ',' deblank(lgx_(k2,:))];
+    nam=['CC_{',vname,'}'];
+  elseif  i<=(estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
+              estim_params_.ncn)
+    j = i - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx);
+    k1 = estim_params_.corrn(j,1);
+    k2 = estim_params_.corrn(j,2);
+    vname = [deblank(lgx_(k1,:)) ',' deblank(lgx_(k2,:))];
+    nam=['CC_{EOBS_',vname,'}'];
+  else
+    j = i - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
+      estim_params_.ncn);
+    nam = deblank(estim_params_.param_names(j,:));
+  end
+  subplot(iraw, icol, i);   
+  if strcmpi(pltopt,'all'); % Estimation of the density...
+      [abscissa,ff,h] = posterior_density_estimate(x2(round(options_.mh_drop*nruns):end,i),...
+                      number_of_grid_points,bandwidth,kernel_function);
+      plot(abscissa,ff,'-k','linewidth',2); 
+  end;
+  a = 0;
+  b = 0;
+  if pshape(i) == 1;     %/* BETA Prior */
+      density = inline('((bb-x).^(b-1)).*(x-aa).^(a-1)./(beta(a,b)*(bb-aa)^(a+b-1))','x','a','b','aa','bb');
+      mu = (p1(i)-p3(i))/(p4(i)-p3(i));
+      stdd = p2(i)/(p4(i)-p3(i));
+      a = (1-mu)*mu^2/stdd^2 - mu;
+      b = a*(1/mu - 1);
+      aa = p3(i);
+      bb = p4(i);
+      infbound = qbeta(truncprior,a,b)*(bb-aa)+aa;
+      supbound = qbeta(1-truncprior,a,b)*(bb-aa)+aa;
+      stepsize = (supbound-infbound)/200;
+      abscissa = infbound:stepsize:supbound;
+      f = density(abscissa,a,b,aa,bb);
+      if strcmpi(pltopt,'all');
+          top = max([max(ff);max(f)]);
+      end;
+  elseif pshape(i) == 2; %/* GAMMA PRIOR */
+%      density = inline('((x/b).^(a-1)).*exp(-x/b)*inv(b*gamma(a))','x','a','b');
+      mu = p1(i)-p3(i);
+      b  = p2(i)^2/mu;
+      a  = mu/b;
+      infbound = mj_qgamma(truncprior,a)*b; 
+      supbound = mj_qgamma(1-truncprior,a)*b;
+      stepsize = (supbound-infbound)/200;
+      abscissa = infbound:stepsize:supbound;
+%      f = density(abscissa,a,b);
+      f = exp(lpdfgam(abscissa,a,b));
+      abscissa = abscissa + p3(i);
+      if strcmpi(pltopt,'all');
+          top = max([max(ff);max(f)]);
+      end;
+  elseif pshape(i) == 3; %/* GAUSSIAN PRIOR */
+      density = inline('inv(sqrt(2*pi)*b)*exp(-0.5*((x-a)/b).^2)','x','a','b');
+      a = p1(i);
+      b = p2(i);
+      infbound = qnorm(truncprior,a,b); 
+      supbound = qnorm(1-truncprior,a,b);
+      stepsize = (supbound-infbound)/200;
+      abscissa = infbound:stepsize:supbound;
+      f = density(abscissa,a,b);  
+      if strcmpi(pltopt,'all');
+          top = max([max(ff);max(f)]);
+      end;
+  elseif pshape(i) == 4; %/* INVGAMMA PRIOR type 1 */
+      density = inline('2*inv(gamma(nu/2))*(x.^(-nu-1))*((s/2)^(nu/2)).*exp(-s./(2*x.^2))','x','s','nu');
+      nu = p2(i);
+      s  = p1(i);
+      a  = nu/2;
+      b  = 2/s;
+      infbound = 1/sqrt(mj_qgamma(1-10*truncprior,a)*b); 
+      supbound = 1/sqrt(mj_qgamma(10*truncprior,a)*b);
+      stepsize = (supbound-infbound)/200;
+      abscissa = infbound:stepsize:supbound;
+      f = density(abscissa,s,nu);  
+      if strcmpi(pltopt,'all');
+          top = max([max(ff);max(f)]);
+      end;
+  elseif pshape(i) == 5; %/* UNIFORM PRIOR */
+      density = inline('(x.^0)/(b-a)','x','a','b');
+      a  = p1(i);
+      b  = p2(i);
+      infbound = a; 
+      supbound = b;
+      stepsize = (supbound-infbound)/200;
+      abscissa = infbound:stepsize:supbound;
+      f = density(abscissa,a,b);  
+      if strcmpi(pltopt,'all');
+          top = max([max(ff);max(f)]);
+      end;
+  elseif pshape(i) == 6; %/*  INVGAMMA PRIOR type 2 */        
+      density = inline('inv(gamma(nu/2))*(x.^(-.5(nu+2)))*((s/2)^(nu/2)).*exp(-s./(2*x))','x','s','nu');
+      nu = p2(i);
+      s  = p1(i);
+      a  = nu/2;
+      b  = 2/s;
+      infbound = 1/(qgamma(1-truncprior,a)*b); 
+      supbound = 1/(qgamma(truncprior,a)*b);
+      stepsize = (supbound-infbound)/200;
+      abscissa = infbound:stepsize:supbound;
+      f = density(abscissa,s,nu);  
+      if strcmpi(pltopt,'all');
+          top = max([max(ff);max(f)]);
+      end;
+  end;
+  hold on;
+  k = [1:length(f)];
+  if pshape(i) ~= 5 
+    [junk,k1] = max(f);
+    if k1 == 1 | k1 == length(f)
+      k = find(f < 10);
+    end
+  end
+  hh = plot(abscissa(k),f(k),'-k','linewidth',2);
+  set(hh,'color',[0.7 0.7 0.7]);
+  if strcmpi(pltopt,'all');
+      plot( [xparam1(i) xparam1(i)], [0,top], '--g', 'linewidth', 2);
+  end;
+  title(nam,'Interpreter','none');
+  hold off;
+end;
+drawnow
+
+% 12/01/03 MJ adapted from M. Ratto's version
+% 02/16/04 SA correction to the generalized beta distibution over interval [aa,bb].
diff --git a/tags/v_3.062/matlab/csminit.m b/tags/v_3.062/matlab/csminit.m
new file mode 100644
index 0000000000..4835b77120
--- /dev/null
+++ b/tags/v_3.062/matlab/csminit.m
@@ -0,0 +1,190 @@
+function [fhat,xhat,fcount,retcode] = csminit(fcn,x0,f0,g0,badg,H0,varargin)
+% [fhat,xhat,fcount,retcode] = csminit(fcn,x0,f0,g0,badg,H0,...
+%                                       P1,P2,P3,P4,P5,P6,P7,P8)
+% retcodes: 0, normal step.  5, largest step still improves too fast.
+% 4,2 back and forth adjustment of stepsize didn't finish.  3, smallest
+% stepsize still improves too slow.  6, no improvement found.  1, zero
+% gradient.
+%---------------------
+% Modified 7/22/96 to omit variable-length P list, for efficiency and compilation.
+% Places where the number of P's need to be altered or the code could be returned to
+% its old form are marked with ARGLIST comments.
+%
+% Fixed 7/17/93 to use inverse-hessian instead of hessian itself in bfgs
+% update.
+%
+% Fixed 7/19/93 to flip eigenvalues of H to get better performance when
+% it's not psd.
+%
+%tailstr = ')';
+%for i=nargin-6:-1:1
+%   tailstr=[ ',P' num2str(i)  tailstr];
+%end
+%ANGLE = .03;
+ANGLE = .005;
+%THETA = .03;
+THETA = .3; %(0<THETA<.5) THETA near .5 makes long line searches, possibly fewer iterations.
+FCHANGE = 1000;
+MINLAMB = 1e-9;
+% fixed 7/15/94
+% MINDX = .0001;
+% MINDX = 1e-6;
+MINDFAC = .01;
+fcount=0;
+lambda=1;
+xhat=x0;
+f=f0;
+fhat=f0;
+g = g0;
+gnorm = norm(g);
+%
+if (gnorm < 1.e-12) & ~badg % put ~badg 8/4/94
+   retcode =1;
+   dxnorm=0;
+   % gradient convergence
+else
+   % with badg true, we don't try to match rate of improvement to directional
+   % derivative.  We're satisfied just to get some improvement in f.
+   %
+   %if(badg)
+   %   dx = -g*FCHANGE/(gnorm*gnorm);
+   %  dxnorm = norm(dx);
+   %  if dxnorm > 1e12
+   %     disp('Bad, small gradient problem.')
+   %     dx = dx*FCHANGE/dxnorm;
+   %   end
+   %else
+   % Gauss-Newton step;
+   %---------- Start of 7/19/93 mod ---------------
+   %[v d] = eig(H0);
+   %toc
+   %d=max(1e-10,abs(diag(d)));
+   %d=abs(diag(d));
+   %dx = -(v.*(ones(size(v,1),1)*d'))*(v'*g);
+%      toc
+   dx = -H0*g;
+%      toc
+   dxnorm = norm(dx);
+   if dxnorm > 1e12
+      disp('Near-singular H problem.')
+      dx = dx*FCHANGE/dxnorm;
+   end
+   dfhat = dx'*g0;
+   %end
+   %
+   %
+   if ~badg
+      % test for alignment of dx with gradient and fix if necessary
+      a = -dfhat/(gnorm*dxnorm);
+      if a<ANGLE
+         dx = dx - (ANGLE*dxnorm/gnorm+dfhat/(gnorm*gnorm))*g;
+         dfhat = dx'*g;
+         dxnorm = norm(dx);
+         disp(sprintf('Correct for low angle: %g',a))
+      end
+   end
+   disp(sprintf('Predicted improvement: %18.9f',-dfhat/2))
+   %
+   % Have OK dx, now adjust length of step (lambda) until min and
+   % max improvement rate criteria are met.
+   done=0;
+   factor=3;
+   shrink=1;
+   lambdaMin=0;
+   lambdaMax=inf;
+   lambdaPeak=0;
+   fPeak=f0;
+   lambdahat=0;
+   while ~done
+      if size(x0,2)>1
+         dxtest=x0+dx'*lambda;
+      else
+         dxtest=x0+dx*lambda;
+      end
+      % home
+      f = eval([fcn '(dxtest,varargin{:})']);
+      %ARGLIST
+      %f = feval(fcn,dxtest,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13);
+      % f = feval(fcn,x0+dx*lambda,P1,P2,P3,P4,P5,P6,P7,P8);
+      disp(sprintf('lambda = %10.5g; f = %20.7f',lambda,f ))
+      %debug
+      %disp(sprintf('Improvement too great? f0-f: %g, criterion: %g',f0-f,-(1-THETA)*dfhat*lambda))
+      if f<fhat
+         fhat=f;
+         xhat=dxtest;
+         lambdahat = lambda;
+      end
+      fcount=fcount+1;
+      shrinkSignal = (~badg & (f0-f < max([-THETA*dfhat*lambda 0]))) | (badg & (f0-f) < 0) ;
+      growSignal = ~badg & ( (lambda > 0)  &  (f0-f > -(1-THETA)*dfhat*lambda) );
+      if  shrinkSignal  &   ( (lambda>lambdaPeak) | (lambda<0) )
+         if (lambda>0) & ((~shrink) | (lambda/factor <= lambdaPeak))
+            shrink=1;
+            factor=factor^.6;
+            while lambda/factor <= lambdaPeak
+               factor=factor^.6;
+            end
+            %if (abs(lambda)*(factor-1)*dxnorm < MINDX) | (abs(lambda)*(factor-1) < MINLAMB)
+            if abs(factor-1)<MINDFAC
+               if abs(lambda)<4
+                  retcode=2;
+               else
+                  retcode=7;
+               end
+               done=1;
+            end
+         end
+         if (lambda<lambdaMax) & (lambda>lambdaPeak)
+            lambdaMax=lambda;
+         end
+         lambda=lambda/factor;
+         if abs(lambda) < MINLAMB
+            if (lambda > 0) & (f0 <= fhat)
+               % try going against gradient, which may be inaccurate
+               lambda = -lambda*factor^6
+            else
+               if lambda < 0
+                  retcode = 6;
+               else
+                  retcode = 3;
+               end
+               done = 1;
+            end
+         end
+      elseif  (growSignal & lambda>0) |  (shrinkSignal & ((lambda <= lambdaPeak) & (lambda>0)))
+         if shrink
+            shrink=0;
+            factor = factor^.6;
+            %if ( abs(lambda)*(factor-1)*dxnorm< MINDX ) | ( abs(lambda)*(factor-1)< MINLAMB)
+            if abs(factor-1)<MINDFAC
+               if abs(lambda)<4
+                  retcode=4;
+               else
+                  retcode=7;
+               end
+               done=1;
+            end
+         end
+         if ( f<fPeak ) & (lambda>0)
+            fPeak=f;
+            lambdaPeak=lambda;
+            if lambdaMax<=lambdaPeak
+               lambdaMax=lambdaPeak*factor*factor;
+            end
+         end
+         lambda=lambda*factor;
+         if abs(lambda) > 1e20;
+            retcode = 5;
+            done =1;
+         end
+      else
+         done=1;
+         if factor < 1.2
+            retcode=7;
+         else
+            retcode=0;
+         end
+      end
+   end
+end
+disp(sprintf('Norm of dx %10.5g', dxnorm))
diff --git a/tags/v_3.062/matlab/csminwel.m b/tags/v_3.062/matlab/csminwel.m
new file mode 100644
index 0000000000..4caca896b8
--- /dev/null
+++ b/tags/v_3.062/matlab/csminwel.m
@@ -0,0 +1,274 @@
+function [fh,xh,gh,H,itct,fcount,retcodeh] = csminwel(fcn,x0,H0,grad,crit,nit,varargin)
+%[fhat,xhat,ghat,Hhat,itct,fcount,retcodehat] = csminwel(fcn,x0,H0,grad,crit,nit,varargin)
+% fcn:   string naming the objective function to be minimized
+% x0:    initial value of the parameter vector
+% H0:    initial value for the inverse Hessian.  Must be positive definite.
+% grad:  Either a string naming a function that calculates the gradient, or the null matrix.
+%        If it's null, the program calculates a numerical gradient.  In this case fcn must
+%        be written so that it can take a matrix argument and produce a row vector of values.
+% crit:  Convergence criterion.  Iteration will cease when it proves impossible to improve the
+%        function value by more than crit.
+% nit:   Maximum number of iterations.
+% varargin: A list of optional length of additional parameters that get handed off to fcn each
+%        time it is called.
+%        Note that if the program ends abnormally, it is possible to retrieve the current x,
+%        f, and H from the files g1.mat and H.mat that are written at each iteration and at each
+%        hessian update, respectively.  (When the routine hits certain kinds of difficulty, it
+%        write g2.mat and g3.mat as well.  If all were written at about the same time, any of them
+%        may be a decent starting point.  One can also start from the one with best function value.)
+global bayestopt_
+  [nx,no]=size(x0);
+nx=max(nx,no);
+Verbose=1;
+NumGrad= isempty(grad);
+done=0;
+itct=0;
+fcount=0;
+snit=100;
+%tailstr = ')';
+%stailstr = [];
+% Lines below make the number of Pi's optional.  This is inefficient, though, and precludes
+% use of the matlab compiler.  Without them, we use feval and the number of Pi's must be
+% changed with the editor for each application.  Places where this is required are marked
+% with ARGLIST comments
+%for i=nargin-6:-1:1
+%   tailstr=[ ',P' num2str(i)  tailstr];
+%   stailstr=[' P' num2str(i) stailstr];
+%end
+f0 = feval(fcn,x0,varargin{:});
+%ARGLIST
+%f0 = feval(fcn,x0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13);
+% disp('first fcn in csminwel.m ----------------') % Jinill on 9/5/95
+if f0 > 1e50, disp('Bad initial parameter.'), return, end
+if NumGrad
+   if length(grad)==0
+      [g badg] = numgrad(fcn,x0, varargin{:});
+      %ARGLIST
+      %[g badg] = numgrad(fcn,x0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13);
+   else
+      badg=any(find(grad==0));
+      g=grad;
+   end
+   %numgrad(fcn,x0,P1,P2,P3,P4);
+else
+   [g badg] = feval(grad,x0,varargin{:});
+   %ARGLIST
+   %[g badg] = feval(grad,x0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13);
+end
+retcode3=101;
+x=x0;
+f=f0;
+H=H0;
+cliff=0;
+while ~done
+  bayestopt_.penalty = f;
+  g1=[]; g2=[]; g3=[];
+   %addition fj. 7/6/94 for control
+   disp('-----------------')
+   disp('-----------------')
+   %disp('f and x at the beginning of new iteration')
+   disp(sprintf('f at the beginning of new iteration, %20.10f',f))
+   %-----------Comment out this line if the x vector is long----------------
+   %      disp([sprintf('x = ') sprintf('%15.8g %15.8g %15.8g %15.8g\n',x(1:12))]);
+   %-------------------------
+   itct=itct+1;
+   [f1 x1 fc retcode1] = csminit(fcn,x,f,g,badg,H,varargin{:});
+   %ARGLIST
+   %[f1 x1 fc retcode1] = csminit(fcn,x,f,g,badg,H,P1,P2,P3,P4,P5,P6,P7,...
+   %           P8,P9,P10,P11,P12,P13);
+   % itct=itct+1;
+   fcount = fcount+fc;
+   % erased on 8/4/94
+   % if (retcode == 1) | (abs(f1-f) < crit)
+   %    done=1;
+   % end
+   % if itct > nit
+   %    done = 1;
+   %    retcode = -retcode;
+   % end
+   if retcode1 ~= 1
+      if retcode1==2 | retcode1==4
+         wall1=1; badg1=1;
+      else
+         if NumGrad
+            [g1 badg1] = numgrad(fcn, x1,varargin{:});
+            %ARGLIST
+            %[g1 badg1] = numgrad(fcn, x1,P1,P2,P3,P4,P5,P6,P7,P8,P9,...
+            %                P10,P11,P12,P13);
+         else
+            [g1 badg1] = feval(grad,x1,varargin{:});
+            %ARGLIST
+            %[g1 badg1] = feval(grad, x1,P1,P2,P3,P4,P5,P6,P7,P8,P9,...
+            %                P10,P11,P12,P13);
+         end
+         wall1=badg1;
+         % g1
+         save g1 g1 x1 f1 varargin;
+         %ARGLIST
+         %save g1 g1 x1 f1 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13;
+      end
+      if wall1 % & (~done) by Jinill
+         % Bad gradient or back and forth on step length.  Possibly at
+         % cliff edge.  Try perturbing search direction.
+         %
+         %fcliff=fh;xcliff=xh;
+         Hcliff=H+diag(diag(H).*rand(nx,1));
+         disp('Cliff.  Perturbing search direction.')
+         [f2 x2 fc retcode2] = csminit(fcn,x,f,g,badg,Hcliff,varargin{:});
+         %ARGLIST
+         %[f2 x2 fc retcode2] = csminit(fcn,x,f,g,badg,Hcliff,P1,P2,P3,P4,...
+         %     P5,P6,P7,P8,P9,P10,P11,P12,P13);
+         fcount = fcount+fc; % put by Jinill
+         if  f2 < f
+            if retcode2==2 | retcode2==4
+                  wall2=1; badg2=1;
+            else
+               if NumGrad
+                  [g2 badg2] = numgrad(fcn, x2,varargin{:});
+                  %ARGLIST
+                  %[g2 badg2] = numgrad(fcn, x2,P1,P2,P3,P4,P5,P6,P7,P8,...
+                  %      P9,P10,P11,P12,P13);
+               else
+                  [g2 badg2] = feval(grad,x2,varargin{:});
+                  %ARGLIST
+                  %[g2 badg2] = feval(grad,x2,P1,P2,P3,P4,P5,P6,P7,P8,...
+                  %      P9,P10,P11,P12,P13);
+               end
+               wall2=badg2;
+               % g2
+               badg2
+               save g2 g2 x2 f2 varargin
+               %ARGLIST
+               %save g2 g2 x2 f2 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13;
+            end
+            if wall2
+               disp('Cliff again.  Try traversing')
+               if norm(x2-x1) < 1e-13
+                  f3=f; x3=x; badg3=1;retcode3=101;
+               else
+                  gcliff=((f2-f1)/((norm(x2-x1))^2))*(x2-x1);
+                  [f3 x3 fc retcode3] = csminit(fcn,x,f,gcliff,0,eye(nx),varargin{:});
+                  %ARGLIST
+                  %[f3 x3 fc retcode3] = csminit(fcn,x,f,gcliff,0,eye(nx),P1,P2,P3,...
+                  %         P4,P5,P6,P7,P8,...
+                  %      P9,P10,P11,P12,P13);
+                  fcount = fcount+fc; % put by Jinill
+                  if retcode3==2 | retcode3==4
+                     wall3=1; badg3=1;
+                  else
+                     if NumGrad
+                        [g3 badg3] = numgrad(fcn, x3,varargin{:});
+                        %ARGLIST
+                        %[g3 badg3] = numgrad(fcn, x3,P1,P2,P3,P4,P5,P6,P7,P8,...
+                        %                        P9,P10,P11,P12,P13);
+                     else
+                        [g3 badg3] = feval(grad,x3,varargin{:});
+                        %ARGLIST
+                        %[g3 badg3] = feval(grad,x3,P1,P2,P3,P4,P5,P6,P7,P8,...
+                        %                         P9,P10,P11,P12,P13);
+                     end
+                     wall3=badg3;
+                     % g3
+                     badg3
+                     save g3 g3 x3 f3 varargin;
+                     %ARGLIST
+                     %save g3 g3 x3 f3 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13;
+                  end
+               end
+            else
+               f3=f; x3=x; badg3=1; retcode3=101;
+            end
+         else
+            f3=f; x3=x; badg3=1;retcode3=101;
+         end
+      else
+         % normal iteration, no walls, or else we're finished here.
+         f2=f; f3=f; badg2=1; badg3=1; retcode2=101; retcode3=101;
+      end
+   else 
+      f2=f;f3=f;f1=f;retcode2=retcode1;retcode3=retcode1;
+   end
+   %how to pick gh and xh
+   if f3<f & badg3==0
+      ih=3
+      fh=f3;xh=x3;gh=g3;badgh=badg3;retcodeh=retcode3;
+   elseif f2<f & badg2==0
+      ih=2
+      fh=f2;xh=x2;gh=g2;badgh=badg2;retcodeh=retcode2;
+   elseif f1<f & badg1==0
+      ih=1
+      fh=f1;xh=x1;gh=g1;badgh=badg1;retcodeh=retcode1;
+   else
+      [fh,ih] = min([f1,f2,f3]);
+      disp(sprintf('ih = %d',ih))
+      %eval(['xh=x' num2str(ih) ';'])
+      switch ih
+         case 1
+            xh=x1;
+         case 2
+            xh=x2;
+         case 3
+            xh=x3;
+      end %case
+      %eval(['gh=g' num2str(ih) ';'])
+      %eval(['retcodeh=retcode' num2str(ih) ';'])
+      retcodei=[retcode1,retcode2,retcode3];
+      retcodeh=retcodei(ih);
+      if exist('gh')
+         nogh=isempty(gh);
+      else
+         nogh=1;
+      end
+      if nogh
+         if NumGrad
+            [gh badgh] = numgrad(fcn,xh,varargin{:});
+         else
+            [gh badgh] = feval(grad, xh,varargin{:});
+         end
+      end
+      badgh=1;
+   end
+   %end of picking
+   %ih
+   %fh
+   %xh
+   %gh
+   %badgh
+   stuck = (abs(fh-f) < crit);
+   if (~badg)&(~badgh)&(~stuck)
+      H = bfgsi(H,gh-g,xh-x);
+   end
+   if Verbose
+      disp('----')
+      disp(sprintf('Improvement on iteration %d = %18.9f',itct,f-fh))
+   end
+   if Verbose
+      if itct > nit
+         disp('iteration count termination')
+         done = 1;
+      elseif stuck
+         disp('improvement < crit termination')
+         done = 1;
+      end
+      rc=retcodeh;
+      if rc == 1
+         disp('zero gradient')
+      elseif rc == 6
+         disp('smallest step still improving too slow, reversed gradient')
+      elseif rc == 5
+         disp('largest step still improving too fast')
+      elseif (rc == 4) | (rc==2)
+         disp('back and forth on step length never finished')
+      elseif rc == 3
+         disp('smallest step still improving too slow')
+      elseif rc == 7
+         disp('warning: possible inaccuracy in H matrix')
+      end
+   end
+   f=fh;
+   x=xh;
+   g=gh;
+   badg=badgh;
+end
+% what about making an m-file of 10 lines including numgrad.m
+% since it appears three times in csminwel.m
diff --git a/tags/v_3.062/matlab/datatomfile.m b/tags/v_3.062/matlab/datatomfile.m
new file mode 100644
index 0000000000..dcee78ca43
--- /dev/null
+++ b/tags/v_3.062/matlab/datatomfile.m
@@ -0,0 +1,44 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function dynatype (s,var_list)
+% DYNATYPE :	DYNATYPE ( [ 'filename' ] )
+%		This optional command saves the simulation
+%		results in a text file. The name of each 
+%		variable preceeds the corresponding results.
+%		This command must follow SIMUL.
+
+global lgy_ lgx_ y_ endo_nbr
+
+%fid=fopen([s,'.m'],'w') ;
+sm=[s,'.m'];
+fid=fopen(sm,'w') ;
+
+n = size(var_list,1);
+if n == 0
+  n = endo_nbr;
+  ivar = [1:n]';
+  var_list = lgy_;
+else
+  ivar=zeros(n,1);
+  for i=1:n
+    i_tmp = strmatch(var_list(i,:),lgy_,'exact');
+    if isempty(i_tmp)
+      error (['One of the specified variables does not exist']) ;
+    else
+      ivar(i) = i_tmp;
+    end
+  end
+end
+
+
+for i = 1:n
+	fprintf(fid,[lgy_(ivar(i),:), '=['],'\n') ;
+	fprintf(fid,'\n') ;
+	fprintf(fid,'%15.8g\n',y_(ivar(i),:)') ;
+   	fprintf(fid,'\n') ;
+   	fprintf(fid,'];\n') ;
+  	fprintf(fid,'\n') ;
+end
+fclose(fid) ;
+
+return ;
diff --git a/tags/v_3.062/matlab/dbeta.m b/tags/v_3.062/matlab/dbeta.m
new file mode 100644
index 0000000000..36d0c37888
--- /dev/null
+++ b/tags/v_3.062/matlab/dbeta.m
@@ -0,0 +1,16 @@
+function d = dbeta(x,a,b)
+%DBETA    The beta density function
+%
+%         f = dbeta(x,a,b)
+
+%       Anders Holtsberg, 18-11-93
+%       Copyright (c) Anders Holtsberg
+
+if any(any((a<=0)|(b<=0)))
+   error('Parameter a or b is nonpositive')
+end
+
+I = find((x<0)|(x>1));
+
+d = x.^(a-1) .* (1-x).^(b-1) ./ beta(a,b);
+d(I) = 0*I;
diff --git a/tags/v_3.062/matlab/dcompare.m b/tags/v_3.062/matlab/dcompare.m
new file mode 100644
index 0000000000..8544909b43
--- /dev/null
+++ b/tags/v_3.062/matlab/dcompare.m
@@ -0,0 +1,42 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function dcompare(s1)
+
+global dsmpl_ iter_
+global nvx nvy x y lag1
+
+ftest(s1,0) ;
+
+i = [lag1(1):size(x,2)-lag1(2)+1]' ;
+
+if size(dsmpl_,1) == 1
+	error(['DSAMPLE not specified.']) ;
+end
+
+if dsmpl_(3) > 0
+	if dsmpl_(3) == 2
+		if dsmpl_(1)<0 | dsmpl_(2)>size(x,2)-lag1(2)
+			error ('Wrong sample.') ;
+		end
+		i = [dsmpl_(1)+lag1(1):dsmpl_(2)+lag1(1)]' ;
+	elseif dsmpl_(3) == 1
+		if dsmpl_(1)>size(x,2)-lag1(2)
+			error ('Wrong sample.') ;
+		end
+		i = [lag1(1):dsmpl_(1)+lag1(1)]' ;
+	end
+end
+
+j = bseastr(nvx,nvy) ;
+
+if stop
+	return ;
+end
+
+z = mean(mean(abs(x(j,i)-y(j,i)))) ;
+
+disp (['The mean absolute difference between set ' s1(1,:) 'and set ' s1(2,:)]) ;
+disp (['is : ' num2str(z)]) ;
+return ;
+
+
diff --git a/tags/v_3.062/matlab/dgamma.m b/tags/v_3.062/matlab/dgamma.m
new file mode 100644
index 0000000000..c94be4e8d7
--- /dev/null
+++ b/tags/v_3.062/matlab/dgamma.m
@@ -0,0 +1,15 @@
+function f = dgamma(x,a,b)
+%DGAMMA   The gamma density function
+%
+%         f = dgamma(x,a)
+
+%       Anders Holtsberg, 18-11-93
+%       Copyright (c) Anders Holtsberg
+
+if any(any(a<=0))
+   error('Parameter a is wrong')
+end
+
+f = (x./b) .^ (a-1) .* exp(-x./b) ./ (b.*gamma(a));
+I0 = find(x<0);
+f(I0) = zeros(size(I0));
diff --git a/tags/v_3.062/matlab/diffext.m b/tags/v_3.062/matlab/diffext.m
new file mode 100644
index 0000000000..26263c23eb
--- /dev/null
+++ b/tags/v_3.062/matlab/diffext.m
@@ -0,0 +1,74 @@
+function [J] = diffext(f,x,options,varargin)
+%---------------------------------------------------------------------------
+%DIFFEXT   Numerical approximation for hessian.
+%          The method is Richardson`s extrapolation.
+% Sample call
+%   [D,err,relerr,n] = diffext('f',x,delta,toler)
+% Inputs
+%   f        name of the function
+%   x        differentiation point
+%   options  matrix of algorithm parameters
+%   delta    error goal (1e-12)
+%   toler    relative error goal (1e-12)
+% Return
+%   J        Jacobian
+%
+% NUMERICAL METHODS: MATLAB Programs, (c) John H. Mathews 1995
+%
+% Modified F. Collard, August 2001
+%---------------------------------------------------------------------------
+  global gstep_
+  if nargin>3;
+    if ~isempty(options);
+      delta=options(1);
+      toler=options(2);
+    else
+      delta=1e-12;
+      toler=1e-12;
+    end
+  else
+    delta=1e-12;
+    toler=1e-12;
+  end;
+  ff=feval(f,x,varargin{:});
+  nx=size(x,1);
+  nf=size(ff,1);
+  J=zeros(nf,nx);
+  for fi=1:nf;
+    for xi=1:nx;
+      err = 1;
+      relerr = 1;
+      h=max(abs(x(xi)), gstep_)*eps^(1/3) ;
+      dx = zeros(nx,1);
+      dx(xi)=h;      
+      j = 1;
+      fs=feval(f,x+dx,varargin{:});
+      fm=feval(f,x-dx,varargin{:});
+      D(1,1) = (fs(fi) - fm(fi))/(2*h);
+      while relerr>toler & err>delta & j<12
+	h = h/2;
+	dx(xi)=h;      
+	fs=feval(f,x+dx,varargin{:});
+	fm=feval(f,x-dx,varargin{:});
+	D(j+1,1) = (fs(fi) - fm(fi))/(2*h);
+	for k = 1:j,
+	  D(j+1,k+1) = D(j+1,k) + (D(j+1,k)-D(j-1+1,k))/(4^k -1);
+	end
+	err = abs(D(j+1,j+1)-D(j,j));
+	relerr = 2*err/(abs(D(j+1,j+1))+abs(D(j,j))+eps);
+	j = j+1;
+      end
+      n=size(D,1);
+      J(fi,xi)=D(n,n);
+      clear D;
+    end
+  end
+
+% 10/12/2001 MJ modified initial h
+
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/disp_dr.m b/tags/v_3.062/matlab/disp_dr.m
new file mode 100644
index 0000000000..1269d2557c
--- /dev/null
+++ b/tags/v_3.062/matlab/disp_dr.m
@@ -0,0 +1,200 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function disp_dr(dr,order,var_list)
+global lgy_ lgx_ endo_nbr exo_nbr ykmin_
+  
+nx =size(dr.ghx,2);
+nu =size(dr.ghu,2);
+k = find(dr.kstate(:,2) <= ykmin_+1);
+klag = dr.kstate(k,[1 2]);
+
+k1 = dr.order_var;
+
+nvar = size(var_list,1);
+if nvar == 0
+  nvar = length(k1);
+  ivar = [1:nvar];
+else
+  ivar=zeros(nvar,1);
+  for i=1:nvar
+    i_tmp = strmatch(var_list(i,:),lgy_(k1,:),'exact');
+    if isempty(i_tmp)
+      disp(var_list(i,:));
+      error (['One of the variable specified does not exist']) ;
+    else
+      ivar(i) = i_tmp;
+    end
+  end
+end
+disp('POLICY AND TRANSITION FUNCTIONS')
+% variable names
+str = '                        ';
+for i=1:nvar
+  str = [str sprintf('%16s',lgy_(k1(ivar(i)),:))];
+end
+disp(str);
+%
+% constant
+%
+str = 'Constant            ';
+flag = 0;
+for i=1:nvar
+  x = dr.ys(k1(ivar(i)));
+  if order > 1
+    x = x + dr.ghs2(ivar(i))/2;
+  end
+  if abs(x) > 1e-6
+    flag = 1;
+    str = [str sprintf('%16.6f',x)];
+  else
+    str = [str '               0'];
+  end
+end
+if flag
+  disp(str)
+end
+if order > 1
+  str = '(correction)        ';
+  flag = 0;
+  for i=1:nvar
+    x = dr.ghs2(ivar(i))/2;
+    if abs(x) > 1e-6
+      flag = 1;
+      str = [str sprintf('%16.6f',x)];
+    else
+      str = [str '               0'];
+    end
+  end
+  if flag
+    disp(str)
+  end
+end
+%
+% ghx
+%
+for k=1:nx
+  flag = 0;
+  str1 = sprintf('%s(%d)',lgy_(k1(klag(k,1)),:),klag(k,2)-ykmin_-2);
+  str = sprintf('%-20s',str1);
+  for i=1:nvar
+    x = dr.ghx(ivar(i),k);
+    if abs(x) > 1e-6
+      flag = 1;
+      str = [str sprintf('%16.6f',x)];
+    else
+      str = [str '               0'];
+    end
+  end
+  if flag
+    disp(str)
+  end
+end
+%
+% ghu
+%
+for k=1:nu
+  flag = 0;
+  str = sprintf('%-20s',lgx_(k,:));
+  for i=1:nvar
+    x = dr.ghu(ivar(i),k);
+    if abs(x) > 1e-6
+      flag = 1;
+      str = [str sprintf('%16.6f',x)];
+    else
+      str = [str '               0'];
+    end
+  end
+  if flag
+    disp(str)
+  end
+end
+
+if order > 1
+  % ghxx
+  for k = 1:nx
+    for j = 1:k
+      flag = 0;
+      str1 = sprintf('%s(%d),%s(%d)',lgy_(k1(klag(k,1)),:),klag(k,2)-ykmin_-2, ...
+		     lgy_(k1(klag(j,1)),:),klag(j,2)-ykmin_-2);
+      str = sprintf('%-20s',str1);
+      for i=1:nvar
+	if k == j
+	  x = dr.ghxx(ivar(i),(k-1)*nx+j)/2;
+	else
+	  x = dr.ghxx(ivar(i),(k-1)*nx+j);
+	end
+	if abs(x) > 1e-6
+	  flag = 1;
+	  str = [str sprintf('%16.6f',x)];
+	else
+	  str = [str '               0'];
+	end
+      end
+      if flag
+	disp(str)
+      end
+    end
+  end
+  %
+  % ghuu
+  %
+  for k = 1:nu
+    for j = 1:k
+      flag = 0;
+      str = sprintf('%-20s',[lgx_(k,:) ',' lgx_(j,:)] );
+      for i=1:nvar
+	if k == j
+	  x = dr.ghuu(ivar(i),(k-1)*nu+j)/2;
+	else
+	  x = dr.ghuu(ivar(i),(k-1)*nu+j);
+	end
+	if abs(x) > 1e-6
+	  flag = 1;
+	  str = [str sprintf('%16.6f',x)];
+	else
+	  str = [str '               0'];
+	end
+      end
+      if flag
+	disp(str)
+      end
+    end
+  end
+  %
+  % ghxu
+  %
+  for k = 1:nx
+    for j = 1:nu
+      flag = 0;
+      str1 = sprintf('%s(%d),%s',lgy_(k1(klag(k,1)),:),klag(k,2)-ykmin_-2, ...
+		     lgx_(j,:));
+      str = sprintf('%-20s',str1);
+      for i=1:nvar
+	x = dr.ghxu(ivar(i),(k-1)*nu+j);
+	if abs(x) > 1e-6
+	  flag = 1;
+	  str = [str sprintf('%16.6f',x)];
+	else
+	  str = [str '               0'];
+	end
+      end
+      if flag
+	disp(str)
+      end
+    end
+  end
+end
+
+% $$$   dr.ghx
+% $$$   dr.ghu
+% $$$   dr.ghxx
+% $$$   dr.ghuu
+% $$$   dr.ghxu
+
+% 01/08/2001 MJ  added test for order in printing quadratic terms
+% 02/21/2001 MJ pass all variable names through deblank()
+% 02/21/2001 MJ changed from f to g format to write numbers
+% 10/09/2002 MJ corrected error on constant whith subset of variables 
+
+
+
diff --git a/tags/v_3.062/matlab/disp_moments.m b/tags/v_3.062/matlab/disp_moments.m
new file mode 100644
index 0000000000..9a6eb2a96d
--- /dev/null
+++ b/tags/v_3.062/matlab/disp_moments.m
@@ -0,0 +1,86 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function disp_moments(y,var_list)
+global lgy_ endo_nbr ykmin_ options_ oo_ options_
+  
+warning off
+% Useless ? Already done in stoch_simul...
+nvar = size(var_list,1);
+if nvar == 0
+  nvar = endo_nbr;
+  ivar = [1:nvar]';
+else
+  ivar=zeros(nvar,1);
+  for i=1:nvar
+    i_tmp = strmatch(var_list(i,:),lgy_,'exact');
+    if isempty(i_tmp)
+      error (['One of the variable specified does not exist']) ;
+    else
+      ivar(i) = i_tmp;
+    end
+  end
+end
+  
+y = y(ivar,options_.drop+ykmin_+1:end)';
+
+m = mean(y);
+y = y - repmat(m,size(y,1),1);
+s2 = mean(y.*y);
+s = sqrt(s2);
+oo_.mean = m;
+oo_.var = y'*y/size(y,1);
+
+labels = deblank(lgy_(ivar,:));
+
+if options_.nomoments == 0 & ~options_.noprint
+  z = [ m' s' s2' (mean(y.^3)./s2.^1.5)' (mean(y.^4)./(s2.*s2)-3)' ];
+  title='MOMENTS OF SIMULATED VARIABLES';
+  if options_.hp_filter > 1
+    title = [title ' (HP filter, lambda = ' ...
+	     int2str(options_.hp_filter) ')'];
+  end
+  headers=strvcat('VARIABLE','MEAN','STD. DEV.','VARIANCE','SKEWNESS', ...
+		  'KURTOSIS');
+  table(title,headers,labels,z,size(labels,2)+2,16,6);
+end
+
+if options_.nocorr == 0 & ~options_.noprint
+  corr = (y'*y/size(y,1))./(s'*s);
+  title = 'CORRELATION OF SIMULATED VARIABLES';
+  if options_.hp_filter > 1
+    title = [title ' (HP filter, lambda = ' ...
+	     int2str(options_.hp_filter) ')'];
+  end
+  headers = strvcat('VARIABLE',lgy_(ivar,:));
+  table(title,headers,labels,corr,size(labels,2)+2,8,4);
+end
+  
+ar = options_.ar;
+options_ = set_default_option(options_,'ar',5);
+ar = options_.ar;
+if ar > 0
+  autocorr = [];
+  for i=1:ar
+    oo_.autocorr{i} = y(ar+1:end,:)'*y(ar+1-i:end-i,:)./((size(y,1)-ar)*s'*s);
+    autocorr = [ autocorr diag(oo_.autocorr{i}) ];
+  end
+  if ~options_.noprint
+    title = 'AUTOCORRELATION OF SIMULATED VARIABLES';
+    if options_.hp_filter > 1
+      title = [title ' (HP filter, lambda = ' ...
+	       int2str(options_.hp_filter) ')'];
+    end
+    headers = strvcat('VARIABLE',int2str([1:ar]'));
+    table(title,headers,labels,autocorr,size(labels,2)+2,8,4);
+  end
+end
+  
+  warning on
+% 10/03/02 MJ corrected order std. dev var in printed report.
+% 01/02/03 MJ added correlation and autocorrelation
+% 01/19/03 MJ corrected variable name truncation
+% 02/18/03 MJ added subtitle for HP filter
+% 03/02/03 MJ added ykmin_ to the number of entries of y
+% 04/28/03 MJ modified handling of options_
+% 06/23/03 MJ added warning off
+% 03/04/05 SA added silent mode
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/disp_th_moments.m b/tags/v_3.062/matlab/disp_th_moments.m
new file mode 100644
index 0000000000..93e8b54850
--- /dev/null
+++ b/tags/v_3.062/matlab/disp_th_moments.m
@@ -0,0 +1,360 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function disp_th_moments(dr,var_list)
+global endo_nbr exo_nbr lgy_ lgx_ Gamma_y lgx_orig_ord_ options_ oo_
+global lgy_TeX_ lgx_TeX_ fname_ options_
+
+TeX = options_.TeX;
+MaxCol = 6;
+
+nvar = size(var_list,1);
+if nvar == 0
+  nvar  = length(dr.order_var);
+  ivar  = transpose(1:nvar);
+  var_list = lgy_;
+else
+  ivar=zeros(nvar,1);
+  if TeX
+    var_listTeX = [];
+  end
+  for i=1:nvar
+    i_tmp = strmatch(var_list(i,:),lgy_,'exact');
+    if isempty(i_tmp)
+      error (['One of the variable specified does not exist']) ;
+    else
+      ivar(i) = i_tmp;
+      if TeX
+	var_listTeX = strvcat(var_listTeX,deblank(lgy_TeX_(i_tmp,:)));
+      end
+    end	
+  end
+end
+
+[Gamma_y,ivar] = th_autocovariances(dr,ivar);
+m = dr.ys(ivar);
+
+i1 = find(abs(diag(Gamma_y{1})) > 1e-12);
+s2 = diag(Gamma_y{1});
+sd = sqrt(s2);
+if options_.order == 2
+  m = m+Gamma_y{options_.ar+3};
+end
+  
+z = [ m sd s2 ];
+oo_.mean = m;
+oo_.var = Gamma_y{1};
+for i=1:options_.ar
+  oo_.autocorr{i}=Gamma_y{i+1};
+end
+
+if TeX
+  filename = [fname_ '_Posterior_ThMoments1.TeX'];
+  fidTeX = fopen(filename,'w');
+  fprintf(fidTeX,'%% TeX-table generated by disp_th_moments (Dynare).\n');
+  fprintf(fidTeX,['%% ' datestr(now,0)]);
+  fprintf(fidTeX,' \n');
+  fprintf(fidTeX,' \n');
+  fprintf(fidTeX,'{\\tiny \n')
+  fprintf(fidTeX,'\\begin{table}\n');
+  fprintf(fidTeX,'\\centering\n');
+  fprintf(fidTeX,'\\begin{tabular}{l|cc} \n');
+  fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+  fprintf(fidTeX,' Variable  & Theoretical expectation & Theoretical variance \\\\ \n');
+  fprintf(fidTeX,'\\hline \\\\ \n');
+  for i=1:nvar
+    fprintf(fidTeX,'$%s$ & %7.3f & %7.3f \\\\ \n',...
+	    deblank(var_listTeX(i,:)),...
+	    m(i),...
+	    oo_.var(i,i));
+  end
+  fprintf(fidTeX,'\\hline\\hline \n');
+  fprintf(fidTeX,'\\end{tabular}\n ');    
+  fprintf(fidTeX,'\\caption{Posterior expectations and variances.}\n ');
+  fprintf(fidTeX,'\\label{Table:Posterior:ThMoments:1}\n');
+  fprintf(fidTeX,'\\end{table}\n');
+  fprintf(fidTeX,'} \n')
+  fprintf(fidTeX,'%% End of TeX file.\n');
+  fclose(fidTeX);
+end
+
+
+lh = size(deblank(lgy_(ivar,:)),2)+2;
+if options_.nomoments == 0
+  if ~options_.noprint
+    title='THEORETICAL MOMENTS';
+    if options_.hp_filter > 1
+      title = [title ' (HP filter, lambda = ' int2str(options_.hp_filter) ')'];
+    end
+    headers=strvcat('VARIABLE','MEAN','STD. DEV.','VARIANCE');
+    table(title,headers,deblank(lgy_(ivar,:)),z,lh,11,4);
+    if exo_nbr > 1
+      disp(' ')
+      title='VARIANCE DECOMPOSITION (in percent)';
+      if options_.hp_filter > 1
+	title = [title ' (HP filter, lambda = ' ...
+		 int2str(options_.hp_filter) ')'];
+      end
+      headers = lgx_;
+      headers(lgx_orig_ord_,:) = headers;
+      headers = strvcat(' ',headers);
+      table(title,headers,deblank(lgy_(ivar(i1),:)),100*Gamma_y{options_.ar+2}(i1,:), ...
+	    lh,8,2);
+    end
+    if TeX
+      PostDeComp = Gamma_y{options_.ar+2};
+      ntabs = ceil(exo_nbr/MaxCol);
+      reste = exo_nbr-(ntabs-1)*MaxCol;
+      TeXheaders(lgx_orig_ord_,:) = lgx_TeX_;
+      filename = [fname_ '_Posterior_ThDeComp.TeX'];
+      fidTeX = fopen(filename,'w');
+      fprintf(fidTeX,'%% TeX-table generated by disp_th_moments (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      for tab = 1:ntabs-1
+	fprintf(fidTeX,'{\\tiny \n')
+	fprintf(fidTeX,'\\begin{table}\n');
+	fprintf(fidTeX,'\\centering\n');
+	fprintf(fidTeX,'\\begin{tabular}{l|cccccc} \n');
+	fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+	fprintf(fidTeX,' Variable  & $%s$ & $%s$ & $%s$ & $%s$ & $%s$ & $%s$ \\\\ \n',...
+		deblank(TeXheaders((tab-1)*MaxCol+1,:)),...
+		deblank(TeXheaders((tab-1)*MaxCol+2,:)),...
+		deblank(TeXheaders((tab-1)*MaxCol+3,:)),...
+		deblank(TeXheaders((tab-1)*MaxCol+4,:)),...
+		deblank(TeXheaders((tab-1)*MaxCol+5,:)),...
+		deblank(TeXheaders((tab-1)*MaxCol+6,:)));
+	fprintf(fidTeX,'\\hline \\\\ \n');
+	for i=1:nvar
+	  fprintf(fidTeX,'$%s$ & %4.2f & %4.2f & %4.2f & %4.2f & %4.2f & %4.2f \\\\ \n',...
+		  deblank(var_listTeX(i,:)),...
+		  PostDeComp(i,(tab-1)*MaxCol+1),...
+		  PostDeComp(i,(tab-1)*MaxCol+2),...
+		  PostDeComp(i,(tab-1)*MaxCol+3),...
+		  PostDeComp(i,(tab-1)*MaxCol+4),...
+		  PostDeComp(i,(tab-1)*MaxCol+5),...
+		  PostDeComp(i,(tab-1)*MaxCol+6));
+	end
+	fprintf(fidTeX,'\\hline\\hline \n');
+	fprintf(fidTeX,'\\end{tabular}\n ');
+	fprintf(fidTeX,'\\caption{Variance decomposition}\n');
+	fprintf(fidTeX,'\\label{Table:Posterior:ThDeComp:%s}\n',int2str(tab));
+	fprintf(fidTeX,'\\end{table}\n');
+	fprintf(fidTeX,'} \n')
+	fprintf(fidTeX,' \n');
+      end
+      if reste == 6
+	fprintf(fidTeX,'{\\tiny \n')
+	fprintf(fidTeX,'\\begin{table}\n');
+	fprintf(fidTeX,'\\centering\n');
+	fprintf(fidTeX,'\\begin{tabular}{l|cccccc} \n');
+	fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+	fprintf(fidTeX,' Variable  & $%s$ & $%s$ & $%s$ & $%s$ & $%s$ & $%s$ \\\\ \n',...
+		deblank(TeXheaders((ntabs-1)*MaxCol+1,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+2,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+3,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+4,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+5,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+6,:)));
+	fprintf(fidTeX,'\\hline \\\\ \n');
+	for i=1:nvar
+	  fprintf(fidTeX,'$%s$ & %4.2f & %4.2f & %4.2f & %4.2f & %4.2f & %4.2f \\\\ \n',...
+		  deblank(var_listTeX(i,:)),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+1),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+2),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+3),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+4),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+5),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+6));
+	end
+	fprintf(fidTeX,'\\hline\\hline \n');
+	fprintf(fidTeX,'\\end{tabular}\n ');    
+	fprintf(fidTeX,'\\caption{Variance decomposition.}\n ');
+	fprintf(fidTeX,'\\label{Table:Posterior:ThDeComp:%s}\n',int2str(ntabs));
+	fprintf(fidTeX,'\\end{table}\n');
+	fprintf(fidTeX,'} \n')
+	fprintf(fidTeX,' \n');
+	fprintf(fidTeX,'%% End Of TeX File.')
+	fclose(fidTeX);
+      elseif reste == 5
+	fprintf(fidTeX,'{\\tiny \n')
+	fprintf(fidTeX,'\\begin{table}\n');
+	fprintf(fidTeX,'\\centering\n');
+	fprintf(fidTeX,'\\begin{tabular}{l|ccccc} \n');
+	fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+	fprintf(fidTeX,' Variable  & $%s$ & $%s$ & $%s$ & $%s$ & $%s$ \\\\ \n',...
+		deblank(TeXheaders((ntabs-1)*MaxCol+1,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+2,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+3,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+4,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+5,:)));
+	fprintf(fidTeX,'\\hline \\\\ \n');
+	for i=1:nvar
+	  fprintf(fidTeX,'$%s$ & %4.2f & %4.2f & %4.2f & %4.2f & %4.2f \\\\ \n',...
+		  deblank(var_listTeX(i,:)),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+1),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+2),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+3),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+4),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+5));
+	end
+	fprintf(fidTeX,'\\hline\\hline \n');
+	fprintf(fidTeX,'\\end{tabular}\n ');    
+	fprintf(fidTeX,'\\caption{Variance decomposition}\n ');
+	fprintf(fidTeX,'\\label{Table:Posterior:ThDeComp:%s}\n',int2str(ntabs));
+	fprintf(fidTeX,'\\end{table}\n');
+	fprintf(fidTeX,'} \n')
+	fprintf(fidTeX,' \n');
+	fprintf(fidTeX,'%% End Of TeX File.')
+	fclose(fidTeX);
+      elseif reste == 4
+	fprintf(fidTeX,'{\\tiny \n')
+	fprintf(fidTeX,'\\begin{table}\n');
+	fprintf(fidTeX,'\\centering\n');
+	fprintf(fidTeX,'\\begin{tabular}{l|cccc} \n');
+	fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+	fprintf(fidTeX,' Variable  & $%s$ & $%s$ & $%s$ & $%s$ \\\\ \n',...
+		deblank(TeXheaders((ntabs-1)*MaxCol+1,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+2,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+3,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+4,:)));
+	fprintf(fidTeX,'\\hline \\\\ \n');
+	for i=1:nvar
+	  fprintf(fidTeX,'$%s$ & %4.2f & %4.2f & %4.2f & %4.2f \\\\ \n',...
+		  deblank(var_listTeX(i,:)),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+1),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+2),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+3),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+4));
+	end
+	fprintf(fidTeX,'\\hline\\hline \n');
+	fprintf(fidTeX,'\\end{tabular}\n ');    
+	fprintf(fidTeX,'\\caption{Variance decomposition}\n ');
+	fprintf(fidTeX,'\\label{Table:Posterior:ThDeComp:%s}\n',int2str(ntabs));
+	fprintf(fidTeX,'\\end{table}\n');
+	fprintf(fidTeX,'} \n')
+	fprintf(fidTeX,' \n');
+	fprintf(fidTeX,'%% End Of TeX File.')
+	fclose(fidTeX);
+      elseif reste == 3
+	fprintf(fidTeX,'{\\tiny \n')
+	fprintf(fidTeX,'\\begin{table}\n');
+	fprintf(fidTeX,'\\centering\n');
+	fprintf(fidTeX,'\\begin{tabular}{l|ccc} \n');
+	fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+	fprintf(fidTeX,' Variable  & $%s$ & $%s$ & $%s$ \\\\ \n',...
+		deblank(TeXheaders((ntabs-1)*MaxCol+1,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+2,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+3,:)));
+	fprintf(fidTeX,'\\hline \\\\ \n');
+	for i=1:nvar
+	  fprintf(fidTeX,'$%s$ & %4.2f & %4.2f & %4.2f \\\\ \n',...
+		  deblank(var_listTeX),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+1),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+2),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+3));
+	end
+	fprintf(fidTeX,'\\hline\\hline \n');
+	fprintf(fidTeX,'\\end{tabular}\n ');    
+	fprintf(fidTeX,'\\caption{Variance decomposition}\n ');
+	fprintf(fidTeX,'\\label{Table:Posterior:ThDeComp:%s}\n',int2str(ntabs));
+	fprintf(fidTeX,'\\end{table}\n');
+	fprintf(fidTeX,'} \n')
+	fprintf(fidTeX,' \n');
+	fprintf(fidTeX,'%% End Of TeX File.')
+	fclose(fidTeX);
+      elseif reste == 2
+	fprintf(fidTeX,'{\\tiny \n')
+	fprintf(fidTeX,'\\begin{table}\n');
+	fprintf(fidTeX,'\\centering\n');
+	fprintf(fidTeX,'\\begin{tabular}{l|cc} \n');
+	fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+	fprintf(fidTeX,' Variable  & $%s$ & $%s$ \\\\ \n',...
+		deblank(TeXheaders((ntabs-1)*MaxCol+1,:)),...
+		deblank(TeXheaders((ntabs-1)*MaxCol+2,:)));
+	fprintf(fidTeX,'\\hline \\\\ \n');
+	for i=1:nvar
+	  fprintf(fidTeX,'$%s$ & %4.2f & %4.2f \\\\ \n',...
+		  deblank(var_listTeX),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+1),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+2));
+	end
+	fprintf(fidTeX,'\\hline\\hline \n');
+	fprintf(fidTeX,'\\end{tabular}\n ');    
+	fprintf(fidTeX,'\\caption{Variance decomposition}\n ');
+	fprintf(fidTeX,'\\label{Table:Posterior:ThDeComp:%s}\n',int2str(ntabs));
+	fprintf(fidTeX,'\\end{table}\n');
+	fprintf(fidTeX,'} \n')
+	fprintf(fidTeX,' \n');
+	fprintf(fidTeX,'%% End Of TeX File.')
+	fclose(fidTeX);
+      elseif reste == 1
+	fprintf(fidTeX,'{\\tiny \n')
+	fprintf(fidTeX,'\\begin{table}\n');
+	fprintf(fidTeX,'\\centering\n');
+	fprintf(fidTeX,'\\begin{tabular}{l|c} \n');
+	fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+	fprintf(fidTeX,' Variable  & $%s$ \\\\ \n',...
+		deblank(TeXheaders((ntabs-1)*MaxCol+1,:)));
+	fprintf(fidTeX,'\\hline \\\\ \n');
+	for i=1:nvar
+	  fprintf(fidTeX,'$%s$ & %4.2f \\\\ \n',...
+		  deblank(var_listTeX),...
+		  PostDeComp(i,(ntabs-1)*MaxCol+1));
+	end
+	fprintf(fidTeX,'\\hline\\hline \n');
+	fprintf(fidTeX,'\\end{tabular}\n ');    
+	fprintf(fidTeX,'\\caption{Variance decomposition}\n ');
+	fprintf(fidTeX,'\\label{Table:Posterior:ThDeComp:%s}\n',int2str(ntabs));
+	fprintf(fidTeX,'\\end{table}\n');
+	fprintf(fidTeX,'} \n')
+	fprintf(fidTeX,' \n');
+	fprintf(fidTeX,'%% End Of TeX File.')
+	fclose(fidTeX);
+      end	
+    end
+  end
+end
+
+if options_.nocorr == 0 & ~options_.noprint
+    disp(' ')
+    title='MATRIX OF CORRELATIONS';
+    if options_.hp_filter > 1
+      title = [title ' (HP filter, lambda = ' int2str(options_.hp_filter) ')'];
+    end
+    labels = deblank(lgy_(ivar,:));
+    headers = strvcat('Variables',labels(i1,:));
+    corr = Gamma_y{1}(i1,i1)./(sd(i1)*sd(i1)');
+    table(title,headers,labels(i1,:),corr,lh,8,4);
+end
+  
+if options_.ar > 0
+  for i=1:options_.ar
+    oo_.autocorr{i} = Gamma_y{i+1};
+  end
+  if ~options_.noprint
+    disp(' ')
+    title='COEFFICIENTS OF AUTOCORRELATION';
+    if options_.hp_filter > 1
+      title = [title ' (HP filter, lambda = ' int2str(options_.hp_filter) ')'];
+    end
+    labels = deblank(lgy_(ivar(i1),:));
+    headers = strvcat('Order ',int2str([1:options_.ar]'));
+    z=[];
+    for i=1:options_.ar
+      z(:,i) = diag(Gamma_y{i+1}(i1,i1));
+    end
+    table(title,headers,labels,z,0,8,4);
+  end
+end
+  
+% 10/09/02 MJ 
+% 10/18/02 MJ added th_autocovariances() and provided for lags on several
+% periods
+% 10/30/02 MJ added correlations and autocorrelations, uses table()
+%             Gamma_y is now a cell array.
+% 02/18/03 MJ added subtitles for HP filter
+% 05/01/03 MJ corrected options_.hp_filter
+% 05/21/03 MJ variance decomposition: test exo_nbr > 1
+% 05/21/03 MJ displays only variables with positive variance
+% 04/03/05 SA added silent mode
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/dlognorm.m b/tags/v_3.062/matlab/dlognorm.m
new file mode 100644
index 0000000000..4dcfed5508
--- /dev/null
+++ b/tags/v_3.062/matlab/dlognorm.m
@@ -0,0 +1,16 @@
+function f = dlognorm(x,lambda,zeta)
+%DLOGNORM  The log-normal density function
+% 
+%          f = dlognorm(x,lambda,zeta)
+
+%       Copyright (c) Halfdan Grage, Anders Holtsberg
+
+if any(any(zeta<=0))
+   error('Parameter zeta is wrong')
+end
+
+neg = find(x <= 0);
+[n1,n2] = size(neg);
+x(neg) = ones(n1,n2);
+f = dnorm(log(x),lambda,zeta)./x;
+f(neg) = zeros(n1,n2);
diff --git a/tags/v_3.062/matlab/dnorm.m b/tags/v_3.062/matlab/dnorm.m
new file mode 100644
index 0000000000..53e7974dba
--- /dev/null
+++ b/tags/v_3.062/matlab/dnorm.m
@@ -0,0 +1,11 @@
+function  f = dnorm(x,m,s)
+%DNORM 	  The normal density function
+%
+%         f = dnorm(x,Mean,StandardDeviation)
+
+%       Anders Holtsberg, 18-11-93
+%       Copyright (c) Anders Holtsberg
+
+if nargin<3, s=1; end
+if nargin<2, m=0; end
+f = exp(-0.5*((x-m)./s).^2)./(sqrt(2*pi)*s);
diff --git a/tags/v_3.062/matlab/dr1.m b/tags/v_3.062/matlab/dr1.m
new file mode 100644
index 0000000000..fefc49c4b9
--- /dev/null
+++ b/tags/v_3.062/matlab/dr1.m
@@ -0,0 +1,635 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function [dr,info]=dr1(dr,task)
+
+% info = 1: the model doesn't define current variables uniquely
+% info = 2: problem in mjdgges.dll info(2) contains error code
+% info = 3: BK order condition not satisfied info(2) contains "distance"
+%           absence of stable trajectory
+% info = 4: BK order condition not satisfied info(2) contains "distance"
+%           indeterminacy
+% info = 5: BK rank condition not satisfied
+
+  global jacobia_ iy_ ykmin_ ykmax_ gstep_ exo_nbr exo_det_nbr endo_nbr
+  global ex_ ex_det_ valf_ it_ exe_ exe_det_ xkmin_ xkmax_ stdexo_
+  global fname_ means_ Sigma_e_ lgy_
+  global eigval options_ M_ olr_state_
+
+
+  info = 0;
+  
+  options_ = set_default_option(options_,'loglinear',0);
+  options_ = set_default_option(options_,'noprint',0);
+  options_ = set_default_option(options_,'olr',0);
+  options_ = set_default_option(options_,'olr_beta',1);
+  options_ = set_default_option(options_,'qz_criterium',1.000001);
+
+xlen = xkmax_ + xkmin_ + 1;
+klen = ykmin_ + ykmax_ + 1;
+iyv = iy_';
+iyv = iyv(:);
+iyr0 = find(iyv) ;
+it_ = ykmin_ + 1 ;
+
+if exo_nbr == 0
+  exe_ = [] ;
+end
+
+tempex = ex_;
+
+it_ = ykmin_ + 1;
+if options_.olr
+  z = repmat(zeros(endo_nbr,1),1,klen);
+else
+  z = repmat(dr.ys,1,klen);
+end
+z = z(iyr0) ;
+jacobia_=real(jacob_a('ff1_',[z(:); exe_;exe_det_])) ;
+
+ex_ = tempex ;
+tempex = [];
+
+% expanding system for Optimal Linear Regulator
+if options_.olr
+  bet = options_.olr_beta;
+  jacobia1 = [];
+  n_inst = size(options_.olr_inst,1);
+
+  if ~isfield(olr_state_,'done')
+    olr_state_.done = 1;
+    olr_state_.old_ykmin_ = ykmin_;
+    olr_state_.old_ykmax_ = ykmax_;
+    olr_state_.old_endo_nbr = endo_nbr;
+    olr_state_.old_iy_ = iy_;
+    
+    for i=1:endo_nbr
+      temp = ['mult_' int2str(i)];
+      lgy_ = strvcat(lgy_,temp);
+    end
+    endo_nbr = 2*endo_nbr-n_inst;
+    ykmin_ = max(ykmin_,ykmax_);
+    ykmax_ = ykmin_;
+  end    
+  nj = olr_state_.old_endo_nbr-n_inst;
+  offset_min = ykmin_ - olr_state_.old_ykmin_;
+  offset_max = ykmax_ - olr_state_.old_ykmax_;
+  newiy = zeros(2*ykmin_+1,nj+olr_state_.old_endo_nbr);
+  jacobia_ = jacobia_(1:nj,:);
+  for i=1:2*ykmin_+1
+    if i > offset_min & i <= 2*ykmin_+1-offset_max
+      [junk,k1,k2] = find(olr_state_.old_iy_(i-offset_min,:));
+      if i == ykmin_+1
+	jacobia1 = [jacobia1 [jacobia_(:,k2); 2*options_.olr_w]];
+      else
+	jacobia1 = [jacobia1 [jacobia_(:,k2); ...
+		    zeros(olr_state_.old_endo_nbr,length(k1))]];
+      end
+      newiy(i,k1) = ones(1,length(k1));
+    end
+    i1  = 2*ykmin_+2-i;
+    if i1 <= 2*ykmin_+1-offset_max & i1 > offset_min 
+      [junk,k1,k2] = find(olr_state_.old_iy_(i1-offset_min,:));
+      k3 = find(any(jacobia_(:,k2),2));
+      x = zeros(olr_state_.old_endo_nbr,length(k3));
+      x(k1,:) = bet^(-i1+ykmin_+1)*jacobia_(k3,k2)';
+      jacobia1  = [jacobia1 [zeros(nj,length(k3)); x]];
+      newiy(i,k3+olr_state_.old_endo_nbr) = ones(1,length(k3));
+    end      
+  end
+  jacobia1 = [jacobia1 [jacobia_(:,end-exo_nbr+1:end); ...
+		    zeros(olr_state_.old_endo_nbr, exo_nbr)]];
+  newiy = newiy';
+  newiy = find(newiy(:));
+  iy_ = zeros(endo_nbr*(ykmin_+ykmax_+1),1);
+  iy_(newiy) = [1:length(newiy)]';
+  iy_ =reshape(iy_,endo_nbr,ykmin_+ykmax_+1)';
+  jacobia_ = jacobia1;
+  clear jacobia1
+  % computes steady state
+  resid = feval([fname_ '_fff'],zeros(olr_state_.old_endo_nbr,1));
+  if resid'*resid < 1e-12
+    dr.ys =[dr.ys; zeros(nj,1)];
+  else
+    AA = zeros(endo_nbr,endo_nbr);
+    for i=1:ykmin_+ykmax_+1
+      [junk,k1,k2] = find(iy_(i,:));
+      AA(:,k1) = AA(:,k1)+jacobia_(:,k2);
+    end
+    dr.ys = -AA\[resid; zeros(nj,1)];
+  end
+end
+% end of code section for Optimal Linear Regulator
+
+klen = ykmin_ + ykmax_ + 1;
+dr=set_state_space(dr);
+kstate = dr.kstate;
+kad = dr.kad;
+kae = dr.kae;
+nstatic = dr.nstatic;
+nfwrd = dr.nfwrd;
+npred = dr.npred;
+nboth = dr.nboth;
+order_var = dr.order_var;
+nd = size(kstate,1);
+
+sdyn = endo_nbr - nstatic;
+
+k0 = iy_(ykmin_+1,order_var);
+k1 = iy_(find([1:klen] ~= ykmin_+1),:);
+b = jacobia_(:,k0);
+
+if ykmax_ == 0;  % backward models
+  a = jacobia_(:,nonzeros(k1'));
+  dr.ghx = zeros(size(a));
+  m = 0;
+  for i=ykmin_:-1:1
+    k = nonzeros(iy_(i,order_var));
+    dr.ghx(:,m+[1:length(k)]) = -b\a(:,k);
+    m = m+length(k);
+  end
+  if exo_nbr
+    nz = nnz(iy_);
+    dr.ghu = -b\jacobia_(:,nz+1:end);
+  end
+  dr.eigval = eig(transition_matrix(dr));
+  dr.rank = 0;
+  if any(abs(dr.eigval) > options_.qz_criterium)
+    temp = sort(abs(dr.eigval));
+    nba = nnz(abs(dr.eigval) > options_.qz_criterium);
+    temp = temp(nd-nba+1:nd)-1-options_.qz_criterium;
+    info(1) = 3;
+    info(2) = temp'*temp;
+  end
+  return;
+end
+
+%forward--looking models
+if nstatic > 0
+  [Q,R] = qr(b(:,1:nstatic));
+  aa = Q'*jacobia_;
+else
+  aa = jacobia_;
+end
+a = aa(:,nonzeros(k1'));
+b = aa(:,k0);
+b10 = b(1:nstatic,1:nstatic);
+b11 = b(1:nstatic,nstatic+1:end);
+b2 = b(nstatic+1:end,nstatic+1:end);
+nz = nnz(iy_);
+if exo_nbr
+  fu = aa(:,nz+[1:exo_nbr]);
+end
+clear aa;
+
+% buildind D and E
+d = zeros(nd,nd) ;
+e = d ;
+
+k = find(kstate(:,2) >= ykmin_+2 & kstate(:,3));
+d(1:sdyn,k) = a(nstatic+1:end,kstate(k,3)) ;
+k1 = find(kstate(:,2) == ykmin_+2);
+e(1:sdyn,k1) =  -b2(:,kstate(k1,1)-nstatic);
+k = find(kstate(:,2) <= ykmin_+1 & kstate(:,4));
+e(1:sdyn,k) = -a(nstatic+1:end,kstate(k,4)) ;
+k2 = find(kstate(:,2) == ykmin_+1);
+k2 = k2(~ismember(kstate(k2,1),kstate(k1,1)));
+d(1:sdyn,k2) = b2(:,kstate(k2,1)-nstatic);
+
+if ~isempty(kad)
+  for j = 1:size(kad,1)
+    d(sdyn+j,kad(j)) = 1 ;
+    e(sdyn+j,kae(j)) = 1 ;
+  end
+end
+
+if ~exist('mjdgges')
+  % using Chris Sim's routines
+  use_qzdiv = 1;
+  [ss,tt,qq,w] = qz(e,d);
+  [tt,ss,qq,w] = qzdiv(options_.qz_criterium,tt,ss,qq,w);
+  ss1=diag(ss);
+  tt1=diag(tt);
+  warning_state = warning;
+  warning off;
+  dr.eigval = ss1./tt1 ;
+  warning warning_state;
+  nba = nnz(abs(dr.eigval) > options_.qz_criterium);
+else
+  use_qzdiv = 0;
+  [ss,tt,w,sdim,dr.eigval,info1] = mjdgges(e,d,options_.qz_criterium);
+  if info1
+    info(1) = 2;
+    info(2) = info1;
+    return
+  end
+  nba = nd-sdim;
+end
+
+nyf = sum(kstate(:,2) > ykmin_+1);
+
+if task == 1
+  dr.rank = rank(w(1:nyf,nd-nyf+1:end));
+  dr.eigval = eig(e,d);
+  return
+end
+
+if nba ~= nyf
+  temp = sort(abs(dr.eigval));
+  if nba > nyf
+    temp = temp(nd-nba+1:nd-nyf)-1-options_.qz_criterium;
+    info(1) = 3
+  elseif nba < nyf;
+    temp = temp(nd-nyf+1:nd-nba)-1-options_.qz_criterium;
+    info(1) = 4;
+  end
+  info(2) = temp'*temp;
+  return
+end
+
+np = nd - nyf;
+n2 = np + 1;
+n3 = nyf;
+n4 = n3 + 1;
+% derivatives with respect to dynamic state variables
+% forward variables
+w1 =w(1:n3,n2:nd);
+if condest(w1) > 1e9;
+  info(1) = 5;
+  info(2) = condest(w1);
+  return;
+else
+  gx = -w1'\w(n4:nd,n2:nd)';
+end  
+
+% predetermined variables
+hx = w(1:n3,1:np)'*gx+w(n4:nd,1:np)';
+hx = (tt(1:np,1:np)*hx)\(ss(1:np,1:np)*hx);
+
+k1 = find(kstate(n4:nd,2) == ykmin_+1);
+k2 = find(kstate(1:n3,2) == ykmin_+2);
+dr.ghx = [hx(k1,:); gx(k2(nboth+1:end),:)];
+
+%lead variables actually present in the model
+j3 = nonzeros(kstate(:,3));
+j4  = find(kstate(:,3));
+% derivatives with respect to exogenous variables
+if exo_nbr
+  a1 = b;
+  aa1 = [];
+  if nstatic > 0
+    aa1 = a1(:,1:nstatic);
+  end
+  dr.ghu = -[aa1 a(:,j3)*gx(j4,1:npred)+a1(:,nstatic+1:nstatic+ ...
+						  npred) a1(:,nstatic+npred+1:end)]\fu;
+end
+
+% static variables
+if nstatic > 0
+  temp = -a(1:nstatic,j3)*gx(j4,:)*hx;
+  j5 = find(kstate(n4:nd,4));
+  temp(:,j5) = temp(:,j5)-a(1:nstatic,nonzeros(kstate(:,4)));
+  temp = b10\(temp-b11*dr.ghx);
+  dr.ghx = [temp; dr.ghx];
+  temp = [];
+end
+
+if options_.loglinear == 1
+    k = find(dr.kstate(:,2) <= ykmin_+1);
+    klag = dr.kstate(k,[1 2]);
+    k1 = dr.order_var;
+
+    dr.ghx = repmat(1./dr.ys(k1),1,size(dr.ghx,2)).*dr.ghx.* ...
+	     repmat(dr.ys(k1(klag(:,1)))',size(dr.ghx,1),1);
+    dr.ghu = repmat(1./dr.ys(k1),1,size(dr.ghu,2)).*dr.ghu;
+end
+
+%necessary when using Sims' routines
+if use_qzdiv
+  gx = real(gx);
+  hx = real(hx);
+  dr.ghx = real(dr.ghx);
+  dr.ghu = real(dr.ghu);
+end
+
+%exogenous deterministic variables
+if exo_det_nbr > 0
+  f1 = sparse(jacobia_(:,nonzeros(iy_(ykmin_+2:end,order_var))));
+  f0 = sparse(jacobia_(:,nonzeros(iy_(ykmin_+1,order_var))));
+  fudet = sparse(jacobia_(:,nz+exo_nbr+1:end));
+  M1 = inv(f0+[zeros(endo_nbr,nstatic) f1*gx zeros(endo_nbr,nyf-nboth)]);
+  M2 = M1*f1;
+  dr.ghud = cell(M_.ex_det_length,1);
+  dr.ghud{1} = -M1*fudet;
+  for i = 2:M_.ex_det_length
+    dr.ghud{i} = -M2*dr.ghud{i-1}(end-nyf+1:end,:);
+  end
+end
+
+if options_.order == 1
+  return
+end
+
+% Second order
+tempex = ex_ ;
+
+%hessian = real(hessext('ff1_',[z; exe_]))' ;
+kk = flipud(cumsum(flipud(iy_(ykmin_+1:end,order_var)),1));
+if ykmin_ > 0
+  kk = [cumsum(iy_(1:ykmin_,order_var),1); kk];
+end
+kk = kk';
+kk = find(kk(:));
+nk = size(kk,1)+exo_nbr+exo_det_nbr;
+k1 = iy_(:,order_var);
+k1 = k1';
+k1 = k1(:);
+k1 = k1(kk);
+k2 = find(k1);
+kk1(k1(k2)) = k2;
+kk1 = [kk1 length(k1)+1:length(k1)+exo_nbr+exo_det_nbr];
+kk = reshape([1:nk^2],nk,nk);
+kk1 = kk(kk1,kk1);
+hessian = zeros(endo_nbr,nk^2);
+hessian(:,kk1(:)) = real(hessian_sparse('ff1_',[z; exe_;exe_det_])) ;
+
+ex_ = tempex ;
+clear tempex
+
+n1 = 0;
+n2 = np;
+zx = zeros(np,np);
+zu=zeros(np,exo_nbr);
+for i=2:ykmin_+1
+  k1 = sum(kstate(:,2) == i);
+  zx(n1+1:n1+k1,n2-k1+1:n2)=eye(k1);
+  n1 = n1+k1;
+  n2 = n2-k1;
+end
+kk = flipud(cumsum(flipud(iy_(ykmin_+1:end,order_var)),1));
+k0 = [1:endo_nbr];
+gx1 = dr.ghx;
+hu = dr.ghu(nstatic+[1:npred],:);
+zx = [zx; gx1];
+zu = [zu; dr.ghu];
+for i=1:ykmax_
+  k1 = find(kk(i+1,k0) > 0);
+  zu = [zu; gx1(k1,1:npred)*hu];
+  gx1 = gx1(k1,:)*hx;
+  zx = [zx; gx1];
+  kk = kk(:,k0);
+  k0 = k1;
+end
+zx=[zx; zeros(exo_nbr,np);zeros(exo_det_nbr,np)];
+zu=[zu; eye(exo_nbr);zeros(exo_det_nbr,exo_nbr)];
+[n1,n2] = size(zx);
+if n1*n1*n2*n2 > 1e7
+  rhs = zeros(endo_nbr,n2*n2);
+  k1 = 1;
+  for i1 = 1:n2
+      for i2 = 1:n2
+	rhs(:,k1) = hessian*kron(zx(:,i1),zx(:,i2));
+	k1 = k1 + 1; 
+      end
+  end
+else
+  rhs = hessian*kron(zx,zx);
+end
+rhs = -rhs;
+
+%lhs
+n = endo_nbr+sum(kstate(:,2) > ykmin_+1 & kstate(:,2) < ykmin_+ykmax_+1);
+A = zeros(n,n);
+B = zeros(n,n);
+[junk,k1,k2] = find(iy_(ykmin_+ykmax_+1,order_var));
+gx2 = dr.ghx(k1,:);
+A(1:endo_nbr,1:endo_nbr) = jacobia_(:,iy_(ykmin_+1,order_var));
+A(1:endo_nbr,nstatic+1:nstatic+npred)=...
+    A(1:endo_nbr,nstatic+[1:npred])+jacobia_(:,k2)*gx2(:,1:npred);
+% variables with the highest lead
+k1 = find(kstate(:,2) == ykmin_+ykmax_+1);
+if ykmax_ > 1
+  k2 = find(kstate(:,2) == ykmin_+ykmax_);
+  [junk,junk,k3] = intersect(kstate(k1,1),kstate(k2,1));
+else
+  k2 = [1:endo_nbr];
+  k3 = kstate(k1,1);
+end
+% Jacobian with respect to the variables with the highest lead
+B(1:endo_nbr,end-length(k2)+k3) = jacobia_(:,kstate(k1,3)+endo_nbr);
+offset = endo_nbr;
+k0 = [1:endo_nbr];
+for i=1:ykmax_-1
+  k1 = find(kstate(:,2) == ykmin_+i+1);
+  [k2,junk,k3] = find(kstate(k1,3));
+  A(1:endo_nbr,offset+k2) = jacobia_(:,k3+endo_nbr);
+  n1 = length(k1);
+  A(offset+[1:n1],nstatic+[1:npred]) = -gx(k1,1:npred); 
+  A(offset+[1:n1],offset+[1:n1]) = eye(n1);
+  n0 = length(k0);
+  E = eye(n0);
+  if i == 1
+    [junk,junk,k4]=intersect(kstate(k1,1),[1:endo_nbr]);
+  else
+    [junk,junk,k4]=intersect(kstate(k1,1),kstate(k0,1));
+  end
+  i1 = offset-n0+n1;
+  B(offset+[1:n1],offset-n0+[1:n0]) = -E(k4,:);
+  k0 = k1;
+  offset = offset + n1;
+end
+D = [rhs; zeros(n-endo_nbr,size(rhs,2))];
+if exist('gensylv')
+  C = hx;
+  dr.ghxx = gensylv(2,A,B,C,D);
+else
+  C = kron(hx,hx); 
+  x0 = sylvester3(A,B,C,D);
+  dr.ghxx = sylvester3a(x0,A,B,C,D);
+end
+
+%ghxu
+%rhs
+hu = dr.ghu(nstatic+1:nstatic+npred,:);
+%kk = reshape([1:np*np],np,np);
+%kk = kk(1:npred,1:npred);
+%rhs = -hessian*kron(zx,zu)-f1*dr.ghxx(end-nyf+1:end,kk(:))*kron(hx(1:npred,:),hu(1:npred,:));
+if n1*n1*n2*exo_nbr > 1e7
+  rhs = zeros(endo_nbr,n2*exo_nbr);
+  k1 = 1;
+  for i1 = 1:n2
+      for i2 = 1:exo_nbr
+	rhs(:,k1) = hessian*kron(zx(:,i1),zu(:,i2));
+	k1 = k1 + 1; 
+      end
+  end
+else
+  rhs = hessian*kron(zx,zu);
+end
+nyf1 = sum(kstate(:,2) == ykmin_+2);
+hu1 = [hu;zeros(np-npred,exo_nbr)];
+B1 = [B(1:endo_nbr,:);zeros(size(A,1)-endo_nbr,size(B,2))];
+rhs = -[rhs; zeros(n-endo_nbr,size(rhs,2))]-B1*dr.ghxx*kron(hx,hu1);
+
+%lhs
+dr.ghxu = A\rhs;
+
+%ghuu
+%rhs
+kk = reshape([1:np*np],np,np);
+kk = kk(1:npred,1:npred);
+if n1*n1*exo_nbr*exo_nbr > 1e7
+  rhs = zeros(endo_nbr,exo_nbr*exo_nbr);
+  k1 = 1;
+  for i1 = 1:exo_nbr
+      for i2 = 1:exo_nbr
+	rhs(:,k1) = hessian*kron(zu(:,i1),zu(:,i2));
+	k1 = k1 + 1; 
+      end
+  end
+else
+  rhs = hessian*kron(zu,zu);
+end
+
+rhs = -[rhs; zeros(n-endo_nbr,size(rhs,2))]-B*dr.ghxx*kron(hu1,hu1);
+
+%lhs
+dr.ghuu = A\rhs;
+
+dr.ghxx = dr.ghxx(1:endo_nbr,:);
+dr.ghxu = dr.ghxu(1:endo_nbr,:);
+dr.ghuu = dr.ghuu(1:endo_nbr,:);
+
+
+% dr.ghs2
+% derivatives of F with respect to forward variables
+% reordering predetermined variables in diminishing lag order
+O1 = zeros(endo_nbr,nstatic);
+O2 = zeros(endo_nbr,endo_nbr-nstatic-npred);
+LHS = jacobia_(:,iy_(ykmin_+1,order_var));
+RHS = zeros(endo_nbr,exo_nbr^2);
+kk = find(kstate(:,2) == ykmin_+2);
+gu = dr.ghu; 
+guu = dr.ghuu; 
+Gu = [dr.ghu(nstatic+[1:npred],:); zeros(np-npred,exo_nbr)];
+Guu = [dr.ghuu(nstatic+[1:npred],:); zeros(np-npred,exo_nbr*exo_nbr)];
+E = eye(endo_nbr);
+iy_ordered = flipud(cumsum(flipud(iy_(ykmin_+1:end,order_var)),1));
+if ykmin_ > 0
+  iy_ordered = [cumsum(iy_(1:ykmin_,order_var),1); iy_ordered];
+end
+iy_ordered = iy_ordered';
+iy_ordered = iy_ordered(:);
+k1 = find(iy_ordered);
+iy_ordered(k1) = [1:length(k1)]';
+iy_ordered =reshape(iy_ordered,endo_nbr,ykmin_+ykmax_+1)';
+kh = reshape([1:nk^2],nk,nk);
+kp = sum(kstate(:,2) <= ykmin_+1);
+E1 = [eye(npred); zeros(kp-npred,npred)];
+H = E1;
+hxx = dr.ghxx(nstatic+[1:npred],:);
+for i=1:ykmax_
+  for j=i:ykmax_
+    [junk,k2a,k2] = find(iy_(ykmin_+j+1,order_var));
+    [junk,k3a,k3] = find(iy_ordered(ykmin_+j+1,:));
+    RHS = RHS + jacobia_(:,k2)*guu(k2a,:)+hessian(:,kh(k3,k3))* ...
+	  kron(gu(k3a,:),gu(k3a,:));
+  end
+
+  % LHS
+  [junk,k2a,k2] = find(iy_(ykmin_+i+1,order_var));
+  LHS = LHS + jacobia_(:,k2)*(E(k2a,:)+[O1(k2a,:) dr.ghx(k2a,:)*H O2(k2a,:)]);
+  
+  if i == ykmax_ 
+    break
+  end
+  
+  kk = find(kstate(:,2) == ykmin_+i+1);
+  gu = dr.ghx*Gu;
+  GuGu = kron(Gu,Gu);
+  guu = dr.ghx*Guu+dr.ghxx*GuGu;
+  Gu = hx*Gu;
+  Guu = hx*Guu;
+  Guu(end-npred+1:end,:) = Guu(end-npred+1:end,:) + hxx*GuGu;
+
+  H = E1 + hx*H;
+end
+RHS = RHS*Sigma_e_(:);
+dr.fuu = RHS;
+RHS = -RHS-dr.fbias;
+dr.ghs2 = LHS\RHS;
+
+% deterministic exogenous variables
+if exo_det_nbr > 0
+  hud = dr.ghud{1}(nstatic+1:nstatic+npred,:);
+  zud=[zeros(np,exo_det_nbr);dr.ghud{1};gx(:,1:npred)*hud;zeros(exo_nbr,exo_det_nbr);eye(exo_det_nbr)];
+  R1 = hessian*kron(zx,zud);
+  dr.ghxud = cell(M_.ex_det_length,1);
+  kf = [endo_nbr-nyf+1:endo_nbr];
+  kp = nstatic+[1:npred];
+  dr.ghxud{1} = -M1*(R1+f1*dr.ghxx(kf,:)*kron(dr.ghx(kp,:),dr.ghud{1}(kp,:)));
+  Eud = eye(exo_det_nbr);
+  for i = 2:M_.ex_det_length
+    hudi = dr.ghud{i}(kp,:);
+    zudi=[zeros(np,exo_det_nbr);dr.ghud{i};gx(:,1:npred)*hudi;zeros(exo_nbr+exo_det_nbr,exo_det_nbr)];
+    R2 = hessian*kron(zx,zudi);
+    dr.ghxud{i} = -M2*(dr.ghxud{i-1}(kf,:)*kron(hx,Eud)+dr.ghxx(kf,:)*kron(dr.ghx(kp,:),dr.ghud{i}(kp,:)))-M1*R2;
+  end
+  R1 = hessian*kron(zu,zud);
+  dr.ghudud = cell(M_.ex_det_length,1);
+  kf = [endo_nbr-nyf+1:endo_nbr];
+
+  dr.ghuud{1} = -M1*(R1+f1*dr.ghxx(kf,:)*kron(dr.ghu(kp,:),dr.ghud{1}(kp,:)));
+  Eud = eye(exo_det_nbr);
+  for i = 2:M_.ex_det_length
+    hudi = dr.ghud{i}(kp,:);
+    zudi=[zeros(np,exo_det_nbr);dr.ghud{i};gx(:,1:npred)*hudi;zeros(exo_nbr+exo_det_nbr,exo_det_nbr)];
+    R2 = hessian*kron(zu,zudi);
+    dr.ghuud{i} = -M2*dr.ghxud{i-1}(kf,:)*kron(hu,Eud)-M1*R2;
+  end
+  R1 = hessian*kron(zud,zud);
+  dr.ghudud = cell(M_.ex_det_length,M_.ex_det_length);
+  dr.ghudud{1,1} = -M1*R1-M2*dr.ghxx(kf,:)*kron(hud,hud);
+  for i = 2:M_.ex_det_length
+    hudi = dr.ghud{i}(nstatic+1:nstatic+npred,:);
+    zudi=[zeros(np,exo_det_nbr);dr.ghud{i};gx(:,1:npred)*hudi+dr.ghud{i-1}(kf,:);zeros(exo_nbr+exo_det_nbr,exo_det_nbr)];
+    R2 = hessian*kron(zudi,zudi);
+    dr.ghudud{i,i} = -M2*(dr.ghudud{i-1,i-1}(kf,:)+...
+			  2*dr.ghxud{i-1}(kf,:)*kron(hudi,Eud) ...
+			  +dr.ghxx(kf,:)*kron(hudi,hudi))-M1*R2;
+    R2 = hessian*kron(zud,zudi);
+    dr.ghudud{1,i} = -M2*(dr.ghxud{i-1}(kf,:)*kron(hud,Eud)+...
+			  dr.ghxx(kf,:)*kron(hud,hudi))...
+	-M1*R2;
+    for j=2:i-1
+      hudj = dr.ghud{j}(kp,:);
+      zudj=[zeros(np,exo_det_nbr);dr.ghud{j};gx(:,1:npred)*hudj;zeros(exo_nbr+exo_det_nbr,exo_det_nbr)];
+      R2 = hessian*kron(zudj,zudi);
+      dr.ghudud{j,i} = -M2*(dr.ghudud{j-1,i-1}(kf,:)+dr.ghxud{j-1}(kf,:)* ...
+			    kron(hudi,Eud)+dr.ghxud{i-1}(kf,:)* ...
+			    kron(hudj,Eud)+dr.ghxx(kf,:)*kron(hudj,hudi))-M1*R2;
+    end
+    
+  end
+end
+% 01/08/2001 MJ put return on iorder == 1 after defining dr.kstate and dr.kdyn
+% 01/17/2001 MJ added dr.delta_s: correction factor for order = 2
+% 01/21/2001 FC correction of delta_s for more than 1 shock
+% 01/23/2001 MJ suppression of redundant sum() in delta_s formula
+% 02/22/2001 MJ stderr_ replaced by Sigma_e_
+% 08/24/2001 MJ changed the order of the variables, separates static
+%               variables and handles only one instance of variables both
+%               in lead and lag
+% 08/24/2001 MJ added sigma to state variables as in Schmitt-Grohe and
+%               Uribe (2001)
+% 10/20/2002 MJ corrected lags on several periods bug
+% 10/30/2002 MJ corrected lags on several periods bug on static when some
+%               intermediary lags are missing
+% 12/08/2002 MJ uses sylvester3 to solve for dr.ghxx
+% 01/01/2003 MJ added dr.fbias for iterative for dr_algo == 1
+% 02/21/2003 MJ corrected bug for models without lagged variables
+% 03/02/2003 MJ fixed second order for lag on several periods
+% 05/21/2003 MJ add check call argument and make computation for CHECK
+% 06/01/2003 MJ added a test for xkmax_ > 1 and order > 1
+% 08/28/2003 MJ corrected bug in computation of 2nd order (ordering of
+%               forward variable in LHS)
+% 08/29/2003 MJ use Sims routine if mjdgges isn't available
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/dr11.m b/tags/v_3.062/matlab/dr11.m
new file mode 100644
index 0000000000..743b0aa5ee
--- /dev/null
+++ b/tags/v_3.062/matlab/dr11.m
@@ -0,0 +1,256 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function dr=dr11(iorder,dr,check)
+
+global jacobia_ iy_ ykmin_ ykmax_ gstep_ exo_nbr endo_nbr
+global ex_ valf_ it_ exe_ xkmin_ xkmax_ ys_ stdexo_
+global fname_ means_ Sigma_e_ lgy_ options_
+global eigval
+% hack for Bayes
+global dr1_test_ bayestopt_
+
+options_ = set_default_option(options_,'loglinear',0);
+
+xlen = xkmax_ + xkmin_ + 1;
+klen = ykmin_ + ykmax_ + 1;
+iyv = iy_';
+iyv = iyv(:);
+iyr0 = find(iyv) ;
+it_ = ykmin_ + 1 ;
+
+
+if exo_nbr == 0
+  exe_ = [] ;
+end
+
+if ~ iy_(ykmin_+1,:) > 0
+  error ('Error in model specification: some variables don"t appear as current') ;
+end
+
+if ~check
+  if xlen > 1
+    error (['SS: stochastic exogenous variables must appear only at the' ...
+	    ' current period. Use additional endogenous variables']) ;
+  end
+end
+  
+if ykmax_ > 1 & iorder > 1
+  error (['Models with leads on more than one period can only be solved' ...
+	  ' at order 1'])
+end
+
+dr=set_state_space(dr);
+kstate = dr.kstate;
+kad = dr.kad;
+kae = dr.kae;
+nstatic = dr.nstatic;
+nfwrd = dr.nfwrd;
+npred = dr.npred;
+nboth = dr.nboth;
+order_var = dr.order_var;
+nd = size(kstate,1);
+
+sdyn = endo_nbr - nstatic;
+
+
+tempex = ex_;
+
+it_ = ykmin_ + 1;
+z = repmat(dr.ys,1,klen);
+z = z(iyr0) ;
+%jacobia_=real(diffext('ff1_',[z; exe_])) ;
+jacobia_=real(jacob_a('ff1_',[z; exe_])) ;
+
+ex_ = tempex ;
+tempex = [];
+
+nz = size(z,1);
+k1 = iy_(find([1:klen] ~= ykmin_+1),:);
+b = jacobia_(:,iy_(ykmin_+1,order_var));
+a = b\jacobia_(:,nonzeros(k1')); 
+if any(isinf(a(:)))
+  dr1_test_(1) = 5;
+  dr1_test_(2) = bayestopt_.penalty;
+end
+if exo_nbr
+  fu = b\jacobia_(:,nz+1:end);
+end
+
+if ykmax_ == 0 & ykmin_ == 1;  % backward model with one lag
+  dr.ghx = -a;
+  dr.ghu = -fu;
+  return;
+elseif ykmax_ == 0 & ykmin_ > 1 % backward model with lags on more than
+			       % one period
+  e = zeros(endo_nbr,nd);				
+  k = find(kstate(:,2) <= ykmin_+1 & kstate(:,4));
+  e(:,k) = -a(:,kstate(k,4)) ;
+  dr.ghx = e;
+  dr.ghu = -fu;
+  return;
+end
+
+% buildind D and E
+d = zeros(nd,nd) ;
+e = d ;
+
+k = find(kstate(:,2) >= ykmin_+2 & kstate(:,3));
+d(1:sdyn,k) = a(nstatic+1:end,kstate(k,3)) ;
+k1 = find(kstate(:,2) == ykmin_+2);
+a1 = eye(sdyn);
+e(1:sdyn,k1) =  -a1(:,kstate(k1,1)-nstatic);
+k = find(kstate(:,2) <= ykmin_+1 & kstate(:,4));
+e(1:sdyn,k) = -a(nstatic+1:end,kstate(k,4)) ;
+k2 = find(kstate(:,2) == ykmin_+1);
+k2 = k2(~ismember(kstate(k2,1),kstate(k1,1)));
+d(1:sdyn,k2) = a1(:,kstate(k2,1)-nstatic);
+
+if ~isempty(kad)
+  for j = 1:size(kad,1)
+    d(sdyn+j,kad(j)) = 1 ;
+    e(sdyn+j,kae(j)) = 1 ;
+  end
+end
+
+options_ = set_default_option(options_,'qz_criterium',1.000001);
+  
+if  ~exist('mjdgges')
+  % using Chris Sim's routines
+  use_qzdiv = 1;
+  [ss,tt,qq,w] = qz(e,d);
+  [tt,ss,qq,w] = qzdiv(options_.qz_criterium,tt,ss,qq,w);
+  ss1=diag(ss);
+  tt1=diag(tt);
+  warning_state = warning;
+  warning off;
+  eigval = ss1./tt1 ;
+  warning warning_state;
+  nba = nnz(abs(eigval) > options_.qz_criterium);
+else
+  use_qzdiv = 0;
+  [ss,tt,w,sdim,eigval,info] = mjdgges(e,d,options_.qz_criterium);
+  if info & info ~= nd+2;
+    error(['ERROR' info ' in MJDGGES.DLL']);
+  end
+  nba = nd-sdim;
+end
+
+nyf = sum(kstate(:,2) > ykmin_+1);
+
+if check
+  dr.rank = rank(w(1:nyf,nd-nyf+1:end));
+  dr.eigval = eigval;
+  return
+end
+
+eigenvalues = sort(eigval);
+
+if nba > nyf;
+%  disp('Instability !');  
+  dr1_test_(1) = 3; %% More eigenvalues superior to unity than forward variables ==> instability.
+  dr1_test_(2) = (abs(eigenvalues(nd-nba+1:nd-nyf))-1-1e-5)'*...
+      (abs(eigenvalues(nd-nba+1:nd-nyf))-1-1e-5);% Distance to Blanchard-Khan conditions (penalty)
+  return
+elseif nba < nyf;
+%  disp('Indeterminacy !');    
+  dr1_test_(1) = 2; %% ==> Indeterminacy. 
+  dr1_test_(2) = (abs(eigenvalues(nd-nyf+1:nd-nba))-1-1e-5)'*...
+      (abs(eigenvalues(nd-nyf+1:nd-nba))-1-1e-5);% Distance to Blanchard-Khan conditions (penality)    
+  %% warning('DR1: Blanchard-Kahn conditions are not satisfied. Run CHECK to learn more!');
+  return
+end
+
+np = nd - nyf;
+n2 = np + 1;
+n3 = nyf;
+n4 = n3 + 1;
+% derivatives with respect to dynamic state variables
+% forward variables
+
+if condest(w(1:n3,n2:nd)) > 1e9
+%  disp('Indeterminacy !!');
+  dr1_test_(1) = 2; 
+  dr1_test_(2) = 1;
+  return
+end
+
+warning_state = warning;
+lastwarn('');
+warning off;
+gx = -w(1:n3,n2:nd)'\w(n4:nd,n2:nd)';
+
+if length(lastwarn) > 0;
+%  disp('Indeterminacy !!');
+  dr1_test_(1) = 2; 
+  dr1_test_(2) = 1;
+  warning(warning_state);
+  return
+end
+
+% predetermined variables
+hx = w(1:n3,1:np)'*gx+w(n4:nd,1:np)';
+hx = (tt(1:np,1:np)*hx)\(ss(1:np,1:np)*hx);
+
+lastwarn('');
+if length(lastwarn) > 0;
+%  disp('Singularity problem in dr11.m');
+  dr1_test_(1) = 2; 
+  dr1_test_(2) = 1;
+  warning(warning_state);
+  return
+end
+
+k1 = find(kstate(n4:nd,2) == ykmin_+1);
+k2 = find(kstate(1:n3,2) == ykmin_+2);
+dr.ghx = [hx(k1,:); gx(k2(nboth+1:end),:)];
+  
+%lead variables actually present in the model
+j3 = nonzeros(kstate(:,3));
+j4  = find(kstate(:,3));
+% derivatives with respect to exogenous variables
+if exo_nbr
+  a1 = eye(endo_nbr);
+  aa1 = [];
+  if nstatic > 0
+    aa1 = a1(:,1:nstatic);
+  end
+  dr.ghu = -[aa1 a(:,j3)*gx(j4,1:npred)+a1(:,nstatic+1:nstatic+ ...
+						  npred) a1(:,nstatic+npred+1:end)]\fu;
+
+
+    lastwarn('');
+    if length(lastwarn) > 0;
+%    disp('Singularity problem in dr11.m');
+        dr1_test_(1) = 2; 
+        dr1_test_(2) = 1;
+        return
+    end
+end
+warning(warning_state);
+
+% static variables
+if nstatic > 0
+  temp = -a(1:nstatic,j3)*gx(j4,:)*hx;
+  j5 = find(kstate(n4:nd,4));
+  temp(:,j5) = temp(:,j5)-a(1:nstatic,nonzeros(kstate(:,4)));
+  dr.ghx = [temp; dr.ghx];
+  temp = [];
+end
+
+if options_.loglinear == 1
+    k = find(dr.kstate(:,2) <= ykmin_+1);
+    klag = dr.kstate(k,[1 2]);
+    k1 = dr.order_var;
+
+    dr.ghx = repmat(1./dr.ys(k1),1,size(dr.ghx,2)).*dr.ghx.* ...
+	     repmat(dr.ys(k1(klag(:,1)))',size(dr.ghx,1),1);
+    dr.ghu = repmat(1./dr.ys(k1),1,size(dr.ghu,2)).*dr.ghu;
+end
+
+% necessary when using Sims' routines
+if use_qzdiv
+  gx = real(gx);
+  hx = real(hx);
+  dr.ghx = real(dr.ghx);
+  dr.ghu = real(dr.ghu);
+end
diff --git a/tags/v_3.062/matlab/dr2.m b/tags/v_3.062/matlab/dr2.m
new file mode 100644
index 0000000000..e1d6e7c0b7
--- /dev/null
+++ b/tags/v_3.062/matlab/dr2.m
@@ -0,0 +1,11 @@
+% Copyright (C) 2001 Michel Juillard
+%
+% function used for dr_algo == 1
+function ghs2=dr2(ys,dr)
+  global fname_
+  
+  dr.ys = ys;
+  fh = str2func([fname_ '_fff']);
+  dr.fbias = 2*feval(fh,dr.ys);
+  dr=dr1(dr,0);
+  ghs2 = dr.ghs2;
diff --git a/tags/v_3.062/matlab/draw_prior_density.m b/tags/v_3.062/matlab/draw_prior_density.m
new file mode 100644
index 0000000000..1a4fcfbf62
--- /dev/null
+++ b/tags/v_3.062/matlab/draw_prior_density.m
@@ -0,0 +1,91 @@
+
+function [x,f,abscissa,dens,binf,bsup] = draw_prior_density(indx);
+% stephane.adjemian@cepremap.cnrs.fr [07-15-2004]
+
+global bayestopt_
+
+pmean   = bayestopt_.pmean;
+pshape  = bayestopt_.pshape; 
+p1      = bayestopt_.p1;
+p2      = bayestopt_.p2;
+p3      = bayestopt_.p3;
+p4      = bayestopt_.p4;
+
+truncprior = 10^(-3);
+
+if pshape(indx) == 1     %/* BETA Prior */
+    density = inline('((bb-x).^(b-1)).*(x-aa).^(a-1)./(beta(a,b)*(bb-aa)^(a+b-1))','x','a','b','aa','bb');
+    mu = (p1(indx)-p3(indx))/(p4(indx)-p3(indx));
+    stdd = p2(indx)/(p4(indx)-p3(indx));
+    a = (1-mu)*mu^2/stdd^2 - mu;
+    b = a*(1/mu-1);
+    aa = p3(indx);
+    bb = p4(indx);
+    infbound = qbeta(truncprior,a,b)*(bb-aa)+aa;
+    supbound = qbeta(1-truncprior,a,b)*(bb-aa)+aa;
+    stepsize = (supbound-infbound)/200;
+    abscissa = infbound:stepsize:supbound;
+    dens = density(abscissa,a,b,aa,bb);
+elseif pshape(indx) == 2  %/* GAMMA PRIOR */
+    mu = p1(indx)-p3(indx);
+    b  = p2(indx)^2/mu;
+    a  = mu/b;
+    infbound = mj_qgamma(truncprior,a)*b; 
+    supbound = mj_qgamma(1-truncprior,a)*b;
+    stepsize = (supbound-infbound)/200;
+    abscissa = infbound:stepsize:supbound;
+    dens = exp(lpdfgam(abscissa,a,b));
+    abscissa = abscissa + p3(indx);
+elseif pshape(indx) == 3  %/* GAUSSIAN PRIOR */
+    density = inline('inv(sqrt(2*pi)*b)*exp(-0.5*((x-a)/b).^2)','x','a','b');
+    a = p1(indx);
+    b = p2(indx);
+    infbound = qnorm(truncprior,a,b); 
+    supbound = qnorm(1-truncprior,a,b);
+    stepsize = (supbound-infbound)/200;
+    abscissa = infbound:stepsize:supbound;
+    dens = density(abscissa,a,b);  
+elseif pshape(indx) == 4  %/* INVGAMMA PRIOR type 1 */
+    density = inline('2*inv(gamma(nu/2))*(x.^(-nu-1))*((s/2)^(nu/2)).*exp(-s./(2*x.^2))','x','s','nu');
+    nu = p2(indx);
+    s  = p1(indx);
+    a  = nu/2;
+    b  = 2/s;
+    infbound = 1/sqrt(mj_qgamma(1-10*truncprior,a)*b); 
+    supbound = 1/sqrt(mj_qgamma(10*truncprior,a)*b);
+    stepsize = (supbound-infbound)/200;
+    abscissa = infbound:stepsize:supbound;
+    dens = density(abscissa,s,nu);  
+elseif pshape(indx) == 5  %/* UNIFORM PRIOR */
+    density = inline('(x.^0)/(b-a)','x','a','b');
+    a  = p1(indx);
+    b  = p2(indx);
+    infbound = a; 
+    supbound = b;
+    stepsize = (supbound-infbound)/200;
+    abscissa = infbound:stepsize:supbound;
+    dens = density(abscissa,a,b);  
+elseif pshape(indx) == 6  %/*  INVGAMMA PRIOR type 2 */        
+    density = inline('inv(gamma(nu/2))*(x.^(-.5(nu+2)))*((s/2)^(nu/2)).*exp(-s./(2*x))','x','s','nu');
+    nu = p2(indx);
+    s  = p1(indx);
+    a  = nu/2;
+    b  = 2/s;
+    infbound = 1/(qgamma(1-truncprior,a)*b); 
+    supbound = 1/(qgamma(truncprior,a)*b);
+    stepsize = (supbound-infbound)/200;
+    abscissa = infbound:stepsize:supbound;
+    dens = density(abscissa,s,nu);  
+end 
+
+k = [1:length(dens)];
+if pshape(indx) ~= 5 
+    [junk,k1] = max(dens);
+    if k1 == 1 | k1 == length(dens)
+        k = find(dens < 10);
+    end
+end
+binf = abscissa(k(1));
+bsup = abscissa(k(length(k)));
+x = abscissa(k);
+f = dens(k);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/dsample.m b/tags/v_3.062/matlab/dsample.m
new file mode 100644
index 0000000000..1d1dd97812
--- /dev/null
+++ b/tags/v_3.062/matlab/dsample.m
@@ -0,0 +1,36 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function dsample(s1,s2)
+% DSAMPLE :	DSAMPLE(d1,d2)
+%		This optional command permits to reduce the number of
+%		periods considered in following output commands. 
+%               If only one argument is 
+%		provided, output is from period 1 to the period 
+%		specified in the DSAMPLE command. If two arguments are
+%		present output is done for the interval between the 
+%		two periods.
+%               DSAMPLE without arguments reset the sample to the one 
+%               specified by PERIODS 
+		
+global dsmpl_ iter_
+
+dsmpl_ = zeros(2,1) ;
+
+if s1 > iter_ | s2 > iter_
+  t = ['DYNARE dsample error: one of the arguments is larger than the one' ...
+       ' specified in PERIODS'];
+  error(t);
+end
+
+if nargin == 0
+	dsmpl_(1) = 1 ;
+	dsmpl_(2) = iter_ ;
+elseif nargin == 1
+	dsmpl_(1) = 1 ;
+	dsmpl_(2) = s1 ;
+else
+	dsmpl_(1) = s1 ;
+	dsmpl_(2) = s2 ;
+end
+
+% 02/23/01 MJ added error checking
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/dy_date.m b/tags/v_3.062/matlab/dy_date.m
new file mode 100644
index 0000000000..b32531a2d1
--- /dev/null
+++ b/tags/v_3.062/matlab/dy_date.m
@@ -0,0 +1,6 @@
+function y=dy_date(year,period)
+  global start_date freq_
+  
+  y = freq_*(year-start_date(1))+period-start_date(2)+1;
+  
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/dyn2vec.m b/tags/v_3.062/matlab/dyn2vec.m
new file mode 100644
index 0000000000..8fd5cb60a8
--- /dev/null
+++ b/tags/v_3.062/matlab/dyn2vec.m
@@ -0,0 +1,59 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function [z,zss]=dyn2vec(s1,s2);
+
+  global lgy_ lgx_ y_ ys_ ykmin_ xkmin_ ex_ dsmpl_
+
+  if dsmpl_ == 0
+    k = [1:size(y_,2)];
+  else
+    k = [ykmin_+dsmpl_(1):ykmin_+dsmpl_(2)];
+  end
+
+  if nargin == 0
+    if nargout > 0
+      t = ['DYNARE dyn2vec error: the function doesn''t return values when' ...
+	   ' used without input argument'];
+      error(t);
+    end
+    for i=1:size(y_,1)
+      assignin('base',deblank(lgy_(i,:)),y_(i,k)');
+    end
+    return
+  else
+    j = strmatch(s1,lgy_,'exact'); 
+    if ~ isempty(j)
+      z = y_(j,k)';
+    else
+      j = strmatch(s1,lgx_,'exact');
+      if ~ isempty(j)
+	if dsmpl_ == 0
+	  z = ex_(:,j);
+	else
+	  z = ex_(xkmin_+dsmpl_(1):xkmin_+dsmpl_(2));
+	end
+      else
+	t = ['DYNARE dyn2vec error: variable ' deblank(s1(i,:)) ' doesn''t' ...
+	     ' exist.'] ;
+	error (t) ;
+      end
+    end
+  end
+
+  if nargout == 0
+    if nargin == 1
+      assignin('base',s1,z);
+    elseif nargin == 2
+      assignin('base',s2,z);
+    end
+  else
+    zss=ys_(j);
+  end
+  
+% 02/23/01 MJ redone, incorporating FC's improvements
+% 08/24/01 MJ replaced globlize by internal assignin
+% 08/24/01 MJ added 'exact' to strmatch (thanks to David Vavra)
+% 01/31/03 MJ added provision for alternative name of variable
+
+
+
diff --git a/tags/v_3.062/matlab/dyn_bvar.m b/tags/v_3.062/matlab/dyn_bvar.m
new file mode 100644
index 0000000000..cdc2c9caf5
--- /dev/null
+++ b/tags/v_3.062/matlab/dyn_bvar.m
@@ -0,0 +1,202 @@
+function dyn_bvar(maxnlags,tau,d,lambda,mu,omega,train,flat,breaks)
+% stephane.adjemian@cepremap.cnrs.fr [21 april, 2004]
+
+
+global options_
+
+eval(options_.datafile);
+dataset = [ ];
+
+for i=1:size(options_.varobs,1)
+    dataset = [dataset eval(deblank(options_.varobs(i,:)))];
+end    
+
+default_nlags  = 8;
+default_const  = 1;
+default_tau    = 3;
+default_d      = 0.5;
+default_lambda = 5;
+default_mu     = 2;
+default_omega  = 1;
+
+if nargin == 0
+    maxnlags =  default_nlags;
+    tau      =  default_tau;
+    d        =  default_d;
+    lambda   =  default_lambda;    
+    mu       =  default_mu;
+    omega    =  default_omega;
+    breaks   = [];
+    train    = [];
+    flat     = 0;
+elseif nargin == 1
+    tau    =  default_tau;
+    d      =  default_d;
+    lambda =  default_lambda;    
+    mu     =  default_mu;
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 2
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    d      =  default_d;
+    lambda =  default_lambda;    
+    mu     =  default_mu;
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 3
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    lambda =  default_lambda;    
+    mu     =  default_mu;
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 4
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau   = default_tau;
+    end
+    if isempty(d)
+        d     = default_d;
+    end   
+    mu     =  default_mu;
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 5
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau   = default_tau;
+    end   
+    if isempty(d)
+        d     = default_d;
+    end   
+    if isempty(lambda)
+        lambda =  default_lambda;    
+    end    
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 6
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    if isempty(d)
+        d = default_d;
+    end   
+    if isempty(lambda)
+        lambda = default_lambda;
+    end   
+    if isempty(mu)
+        mu = default_mu;
+    end   
+    train  = [];
+    flat   = 0;
+    breaks = [];
+elseif nargin == 7
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    if isempty(d)
+        d = default_d;
+    end   
+    if isempty(lambda)
+        lambda = default_lambda;
+    end   
+    if isempty(mu)
+        mu = default_mu;
+    end
+    if isempty(omega)
+        omega = default_omega;
+    end   
+    flat   = 0;
+    breaks = [];
+elseif nargin == 8
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(const)
+        const = default_const;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    if isempty(d)
+        d = default_d;
+    end   
+    if isempty(lambda)
+        lambda = default_lambda;
+    end   
+    if isempty(mu)
+        mu = default_mu;
+    end
+    if isempty(omega)
+        omega = default_omega;
+    end
+    breaks = [];
+    train  = [];
+elseif nargin == 9
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(const)
+        const = default_const;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    if isempty(d)
+        d = default_d;
+    end   
+    if isempty(lambda)
+        lambda = default_lambda;
+    end   
+    if isempty(mu)
+        mu = default_mu;
+    end
+    if isempty(omega)
+        omega = default_omega;
+    end
+    train = [];
+    flat  = 0;
+elseif nargin > 9
+    disp('dyn_bvar :: too many arguments.')
+end
+
+mnprior.tight = tau;
+mnprior.decay = d;
+vprior.sig = std(dataset(options_.first_obs+options_.presample-maxnlags:options_.first_obs+options_.presample-1,:))';
+vprior.w = omega;
+
+
+for lag = 1:maxnlags
+    ydata = dataset(options_.first_obs+options_.presample-lag:options_.first_obs+options_.presample+options_.nobs-1,:);
+    w=mgnldnsty(ydata,lag,ones(options_.nobs+lag,1),breaks,lambda,mu,mnprior,vprior,train,flat);
+    disp(' ')
+    fprintf('The marginal log density of the BVAR(%g) model is equal to %10.4f \n',lag,w);
+    disp(' ')
+end
+
diff --git a/tags/v_3.062/matlab/dyn_bvar2.m b/tags/v_3.062/matlab/dyn_bvar2.m
new file mode 100644
index 0000000000..356e1fa184
--- /dev/null
+++ b/tags/v_3.062/matlab/dyn_bvar2.m
@@ -0,0 +1,206 @@
+function dyn_bvar(maxnlags,tau,d,lambda,mu,omega,train,flat,breaks)
+% stephane.adjemian@cepremap.cnrs.fr [22 april, 2004]
+
+
+global options_
+
+eval(options_.datafile);
+dataset = [ ];
+
+for i=1:size(options_.varobs,1)
+    dataset = [dataset eval(deblank(options_.varobs(i,:)))];
+end    
+
+default_nlags  = 8;
+default_const  = 1;
+default_tau    = 3;
+default_d      = 0.5;
+default_lambda = 5;
+default_mu     = 2;
+default_omega  = 1;
+
+if nargin == 0
+    maxnlags =  default_nlags;
+    tau      =  default_tau;
+    d        =  default_d;
+    lambda   =  default_lambda;    
+    mu       =  default_mu;
+    omega    =  default_omega;
+    breaks   = [];
+    train    = [];
+    flat     = 0;
+elseif nargin == 1
+    tau    =  default_tau;
+    d      =  default_d;
+    lambda =  default_lambda;    
+    mu     =  default_mu;
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 2
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    d      =  default_d;
+    lambda =  default_lambda;    
+    mu     =  default_mu;
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 3
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    lambda =  default_lambda;    
+    mu     =  default_mu;
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 4
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau   = default_tau;
+    end
+    if isempty(d)
+        d     = default_d;
+    end   
+    mu     =  default_mu;
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 5
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau   = default_tau;
+    end   
+    if isempty(d)
+        d     = default_d;
+    end   
+    if isempty(lambda)
+        lambda =  default_lambda;    
+    end    
+    omega  =  default_omega;
+    breaks = [];
+    train  = [];
+    flat   = 0;
+elseif nargin == 6
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    if isempty(d)
+        d = default_d;
+    end   
+    if isempty(lambda)
+        lambda = default_lambda;
+    end   
+    if isempty(mu)
+        mu = default_mu;
+    end   
+    train  = [];
+    flat   = 0;
+    breaks = [];
+elseif nargin == 7
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    if isempty(d)
+        d = default_d;
+    end   
+    if isempty(lambda)
+        lambda = default_lambda;
+    end   
+    if isempty(mu)
+        mu = default_mu;
+    end
+    if isempty(omega)
+        omega = default_omega;
+    end   
+    flat   = 0;
+    breaks = [];
+elseif nargin == 8
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(const)
+        const = default_const;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    if isempty(d)
+        d = default_d;
+    end   
+    if isempty(lambda)
+        lambda = default_lambda;
+    end   
+    if isempty(mu)
+        mu = default_mu;
+    end
+    if isempty(omega)
+        omega = default_omega;
+    end
+    breaks = [];
+    train  = [];
+elseif nargin == 9
+    if isempty(maxnlags)
+        maxnlags = default_nlags;
+    end   
+    if isempty(const)
+        const = default_const;
+    end   
+    if isempty(tau)
+        tau = default_tau;
+    end   
+    if isempty(d)
+        d = default_d;
+    end   
+    if isempty(lambda)
+        lambda = default_lambda;
+    end   
+    if isempty(mu)
+        mu = default_mu;
+    end
+    if isempty(omega)
+        omega = default_omega;
+    end
+    train = [];
+    flat  = 0;
+elseif nargin > 9
+    disp('dyn_bvar :: too many arguments.')
+end
+
+mnprior.tight = tau;
+mnprior.decay = d;
+
+yy = dataset(1:options_.first_obs+options_.presample-1,:);
+bb = inv(yy(1:size(yy,1)-1,:)'*yy(1:size(yy,1)-1,:))*yy(1:size(yy,1)-1,:)'*yy(2:size(yy,1),:);
+rr = yy(2:size(yy,1),:)-yy(1:size(yy,1)-1,:)*bb;
+vprior.sig = sqrt(diag(rr'*rr/(size(yy,1)-1)))';
+vprior.w = omega;
+
+% mgnldnsty(ydata,lags,xdata,breaks,lambda,mu,mnprior,vprior,train,flat)
+
+for lag = 1:maxnlags
+    ydata = dataset(options_.first_obs+options_.presample-lag:options_.first_obs+options_.presample+options_.nobs-1,:);
+    w=mgnldnsty(ydata,lag,ones(options_.nobs+lag,1),breaks,lambda,mu,mnprior,vprior,train,flat);
+    disp(' ')
+    fprintf('The marginal log density of the BVAR(%g) model is equal to %10.4f \n',lag,w);
+    disp(' ')
+end
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/dynare.m b/tags/v_3.062/matlab/dynare.m
new file mode 100644
index 0000000000..4c3e19471a
--- /dev/null
+++ b/tags/v_3.062/matlab/dynare.m
@@ -0,0 +1,32 @@
+% Copyright (C) 2001 Michel Juillard
+%
+%	DYNARE ( 'Filename' )
+%	This command runs the .MOD file (or .DYN) specified in Filename.
+%	Filename could be enter with or without the .MOD extension.
+function dynare(fname,varargin)
+
+if ~ isstr(fname)
+	error ('The argument in DYNARE must be a text string.') ;
+end
+
+pathfile = mfilename('fullpath');
+command = [pathfile,'_m ',fname];
+for i=2:nargin
+  command = [command ' ' varargin{i-1}];
+end
+[status, result] = dos (command) ;
+if status
+  error(result)
+end
+
+if ~ isempty(find(abs(fname) == 46))
+	fname = fname(:,1:find(abs(fname) == 46)-1) ;
+end
+
+evalin('base',fname) ;
+
+
+% MJ 2/9/99: replace clear function by clear ff_
+% MJ 4/7/00: change the path of dynare_m
+% MJ 02/26/01: replaced local variable x by fname
+% MJ 09/19/01: evaluates mod script in 'base' workspace
diff --git a/tags/v_3.062/matlab/dynare_estimation.m b/tags/v_3.062/matlab/dynare_estimation.m
new file mode 100644
index 0000000000..fd6098f679
--- /dev/null
+++ b/tags/v_3.062/matlab/dynare_estimation.m
@@ -0,0 +1,1353 @@
+function dynare_estimation(varlist)
+global options_ bayestopt_ estim_params_ lgy_ lgx_ Sigma_e_ exo_nbr endo_nbr
+global lgy_ lgx_ fname_ oo_  trend_coeff_  iy_ ykmin_ lgx_TeX_ lgy_TeX_
+global dsge_prior_weight ys_
+
+
+
+options_.varlist = varlist;
+
+options_.lgyidx2varobs = zeros(size(lgy_,1),1);
+for i = 1:size(lgy_,1)
+  tmp = strmatch(deblank(lgy_(i,:)),options_.varobs,'exact');
+  if ~isempty(tmp)
+    options_.lgyidx2varobs(i,1) = tmp;
+  end           
+end
+
+options_ = set_default_option(options_,'first_obs',1);
+options_ = set_default_option(options_,'prefilter',0);
+options_ = set_default_option(options_,'presample',0);
+options_ = set_default_option(options_,'lik_algo',1);
+options_ = set_default_option(options_,'lik_init',1);
+options_ = set_default_option(options_,'nograph',0);
+options_ = set_default_option(options_,'mh_conf_sig',0.90);
+options_ = set_default_option(options_,'mh_replic',20000);
+options_ = set_default_option(options_,'mh_drop',0.5);
+options_ = set_default_option(options_,'mh_jscale',0.2);
+options_ = set_default_option(options_,'mh_init_scale',2*options_.mh_jscale);
+options_ = set_default_option(options_,'mode_file','');
+options_ = set_default_option(options_,'mode_compute',4);
+options_ = set_default_option(options_,'mode_check',0);
+options_ = set_default_option(options_,'prior_trunc',1e-10);
+options_ = set_default_option(options_,'load_mh_file',0);
+options_ = set_default_option(options_,'loglinear',0);
+options_ = set_default_option(options_,'unit_root_vars',[]);
+options_ = set_default_option(options_,'XTick',[]);
+options_ = set_default_option(options_,'XTickLabel',[]);
+options_ = set_default_option(options_,'bayesian_irf',0);
+options_ = set_default_option(options_,'bayesian_th_moments',0);
+options_ = set_default_option(options_,'TeX',0);
+options_ = set_default_option(options_,'irf',40);
+options_ = set_default_option(options_,'relative_irf',0);
+options_ = set_default_option(options_,'order',1);
+options_ = set_default_option(options_,'ar',5);
+options_ = set_default_option(options_,'dr_algo',0);
+options_ = set_default_option(options_,'linear',1);
+options_ = set_default_option(options_,'drop',0);
+options_ = set_default_option(options_,'replic',1);
+options_ = set_default_option(options_,'hp_filter',0);
+options_ = set_default_option(options_,'forecast',0);
+options_ = set_default_option(options_,'smoother',0);
+options_ = set_default_option(options_,'moments_varendo',0);
+options_ = set_default_option(options_,'filtered_vars',0);
+options_ = set_default_option(options_,'kalman_algo',1);
+options_ = set_default_option(options_,'kalman_tol',10^(-12));
+options_ = set_default_option(options_,'diffuse_d',[]);
+options_ = set_default_option(options_,'nk',1);
+options_ = set_default_option(options_,'varlag',4);
+options_ = set_default_option(options_,'Opt6Iter',3);
+options_ = set_default_option(options_,'Opt6Numb',40000);
+options_ = set_default_option(options_,'ExcludedParams',[]);
+options_ = set_default_option(options_,'ParamSubSet','All');
+
+optim_options = optimset('display','iter','LargeScale','off',...
+             'MaxFunEvals',100000,'TolFun',1e-8,'TolX',1e-6);
+
+if isfield(options_,'optim_opt')
+  eval(['optim_options = optimset(optim_options,' options_.optim_opt ');']);
+end
+
+n_varobs = size(options_.varobs,1);
+dr = set_state_space([]);
+
+% load data
+rawdata = read_variables(options_.datafile,options_.varobs,[]);
+
+k = [];
+k1 = [];
+for i=1:n_varobs
+  k = [k strmatch(deblank(options_.varobs(i,:)),lgy_(dr.order_var,:), ...
+          'exact')];
+  k1 = [k1 strmatch(deblank(options_.varobs(i,:)),lgy_, 'exact')];
+end
+
+% check initial parameter values and creates bayestopt_
+pnames=['     ';'beta ';'gamm ';'norm ';'invg ';'unif ';'invg2'];
+[xparam1,estim_params_,bayestopt_,lb,ub]=set_prior(estim_params_);
+if any(bayestopt_.pshape > 0)
+  plot_priors
+else
+  options_.mh_replic = 0;
+end
+
+bayestopt_.mf = k;
+bayestopt_.mfys = k1;
+
+% set options for recursive forecast if necessary
+options_ = set_default_option(options_,'nobs',size(rawdata,1)-options_.first_obs+1);
+if options_.nobs(1) == options_.nobs(end) % no recursive estimation
+  options_ = set_default_option(options_,'mh_nblck',2); 
+  options_ = set_default_option(options_,'nodiagnostic',0);
+else
+  options_ = set_default_option(options_,'mh_nblck',1); 
+  options_ = set_default_option(options_,'nodiagnostic',1);
+end
+
+bounds = prior_bounds(bayestopt_);
+bounds(:,1)=max(bounds(:,1),lb);
+bounds(:,2)=min(bounds(:,2),ub);
+if any(xparam1 < bounds(:,1)) | any(xparam1 > bounds(:,2))
+  find(xparam1 < bounds(:,1))
+  find(xparam1 > bounds(:,2))
+  error('Initial parameter values are outside parameter bounds')
+end
+lb = bounds(:,1);
+ub = bounds(:,2);
+bayestopt_.lb = lb;
+bayestopt_.ub = ub;
+
+if isempty(trend_coeff_)
+  bayestopt_.with_trend = 0;
+else
+  bayestopt_.with_trend = 1;
+  bayestopt_.trend_coeff = {};
+  for i=1:n_varobs
+    if i > length(trend_coeff_) | isempty(trend_coeff_{i})
+      bayestopt_.trend_coeff{i} = '0';
+    else
+      bayestopt_.trend_coeff{i} = trend_coeff_{i};
+    end
+  end
+end
+
+bayestopt_.penalty=1e8;             % penalty 
+
+
+nvx = estim_params_.nvx;
+nvn = estim_params_.nvn;
+ncx = estim_params_.ncx;
+ncn = estim_params_.ncn;
+np  = estim_params_.np ;
+nx = nvx+nvn+ncx+ncn+np;
+
+check_model;
+
+%static solver
+if exist([fname_ '_steadystate'])
+  bayestopt_.static_solve = [fname_ '_steadystate'];
+else
+  bayestopt_.static_solve = 'dynare_solve';
+end
+
+% Initialization with unit-root variables
+if ~isempty(options_.unit_root_vars)
+  n_ur = length(options_.unit_root_vars);
+  i_ur = zeros(n_ur,1);
+  for i=1:n_ur
+    i1 = strmatch(options_.unit_root_vars{i},lgy_(dr.order_var,:),'exact');
+    if isempty(i1)
+      error('Undeclared variable in unit_root_vars statement')
+    end
+    i_ur(i) = i1;
+  end
+  i_stable = ones(endo_nbr,1);
+  i_stable(i_ur) = zeros(n_ur,1);
+  i_stable = find(i_stable);
+  if ykmin_ > 1
+    l1 = flipud([cumsum(iy_(1:ykmin_-1,dr.order_var),1);ones(1, ...
+                          endo_nbr)]);
+    n1 = nnz(l1);
+    bayestopt_.Pinf = zeros(n1,n1);
+    l2 = find(l1');
+    l3 = zeros(endo_nbr,ykmin_);
+    l3(i_ur,:) = l1(:,i_ur)';
+    l3 = l3(:);
+    i_ur1 = find(l3(l2));
+    bayestopt_.Pinf(i_ur1,i_ur1) = diag(ones(1,length(i_ur1)));
+    l3 = zeros(endo_nbr,ykmin_);
+    l3(i_stable,:) = l1(:,i_stable)';
+    l3 = l3(:);
+    bayestopt_.i_T_var_stable = find(l3(l2));
+  else
+    n1 = endo_nbr;
+    bayestopt_.Pinf = zeros(n1,n1);
+    bayestopt_.Pinf(i_ur,i_ur) = diag(ones(1,length(i_ur)));
+    l1 = ones(endo_nbr,1);
+    l1(i_ur,:) = zeros(length(i_ur),1);
+    bayestopt_.i_T_var_stable = find(l1);
+  end
+  options_.lik_init = 3;
+else
+  i_stable = [1:endo_nbr]';
+end % if ~isempty(options_.unit_root_vars)
+bayestopt_.i_var_stable = i_stable;
+
+if isempty(options_.datafile)
+  error('ESTIMATION: datafile option is missing')
+end
+
+if isempty(options_.varobs)
+  error('ESTIMATION: VAROBS is missing')
+end
+
+
+% if jscale isn't specified for an estimated parameter, use
+% global option options_.jscale, set to 0.2, by default
+k = find(isnan(bayestopt_.jscale));
+bayestopt_.jscale(k) = options_.mh_jscale;
+
+% transform data 
+if options_.loglinear == 1
+  rawdata = log(rawdata);
+end
+if ~isreal(rawdata)
+  error(['There are complex values in the data. Probably  a wrong' ...
+     ' transformation'])
+end
+
+% load a previous posterior mode if any
+if length(options_.mode_file) > 0
+  eval(['load ' options_.mode_file ';']);
+  if exist('Scale')
+    options_.mh_jscale = Scale;
+    bayestopt_.jscale = ones(length(xparam1),1)*Scale;
+  end
+  if exist('PostMean')
+    MeanPar = PostMean;
+  end  
+end
+
+% compute sample moments if needed (var-dsge)
+if ~isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) | ~isempty(dsge_prior_weight)
+    evalin('base',['[mYY,mXY,mYX,mXX,Ydata,Xdata] = ' ...
+	   'VarSampleMoments(options_.first_obs,options_.first_obs+options_.nobs-1,options_.varlag,-1);'])
+end
+
+iter1 = 1;
+for iter1 = 1:length(options_.nobs)
+  gend = options_.nobs(iter1);
+  if options_.prefilter == 1
+    bayestopt_.mean_varobs = mean(rawdata(options_.first_obs+(0:gend-1),:),1);
+    data = rawdata(options_.first_obs+(0:gend-1),:)'-...
+	   repmat(bayestopt_.mean_varobs',1,gend);
+  else
+    data = rawdata(options_.first_obs+(0:gend-1),:)';
+  end  
+  initial_estimation_checks(xparam1,gend,data);
+  if options_.mode_compute > 0
+    if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+      fh=str2func('DsgeLikelihood');
+    else
+      fh=str2func('DsgeVarLikelihood');        
+    end
+    if options_.mode_compute == 1
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	[xparam1,fval,exitflag,output,lamdba,grad,hessian_fmincon] = ...
+            fmincon(fh,xparam1,[],[],[],[],lb,ub,[],optim_options,gend,data);
+      else
+	[xparam1,fval,exitflag,output,lamdba,grad,hessian_fmincon] = ...
+            fmincon(fh,xparam1,[],[],[],[],lb,ub,[],optim_options,gend);
+      end
+    elseif options_.mode_compute == 2
+      %   asamin('set','maximum_cost_repeat',0);
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	[fval,xparam1,grad,hessian_asamin,exitflag] = ...
+	    asamin('minimize','DsgeLikelihood',xparam1,lb,ub,-ones(size(xparam1)),gend,data);   
+      else
+	[fval,xparam1,grad,hessian_asamin,exitflag] = ...
+	    asamin('minimize','DsgeVarLikelihood',xparam1,lb,ub,-ones(size(xparam1)),gend);   
+      end  
+    elseif options_.mode_compute == 3
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	[xparam1,fval,exitflag] = fminunc(fh,xparam1,optim_options,gend,data);
+      else
+	[xparam1,fval,exitflag] = fminunc(fh,xparam1,optim_options,gend);
+      end  
+    elseif options_.mode_compute == 4
+      H0 = 1e-4*eye(nx);
+      crit = 1e-7;
+      nit = 1000;
+      verbose = 2;
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	[fval,xparam1,grad,hessian_csminwel,itct,fcount,retcodehat] = ...
+	    csminwel('DsgeLikelihood',xparam1,H0,[],crit,nit,gend,data);
+	disp(sprintf('Objective function at mode: %f',fval))
+	disp(sprintf('Objective function at mode: %f',DsgeLikelihood(xparam1,gend,data)))
+      else
+	[fval,xparam1,grad,hessian_csminwel,itct,fcount,retcodehat] = ...
+	    csminwel('DsgeVarLikelihood',xparam1,H0,[],crit,nit,gend);
+	disp(sprintf('Objective function at mode: %f',fval))
+	disp(sprintf('Objective function at mode: %f',DsgeVarLikelihood(xparam1,gend)))
+      end
+    elseif options_.mode_compute == 5
+      flag = 0;
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	[xparam1, hh, gg, fval] = newrat('DsgeLikelihood',xparam1,[],[],flag,gend,data);
+	eval(['save ' fname_ '_mode xparam1 hh gg fval;']);
+      else
+	[xparam1, hh, gg, fval] = newrat('DsgeVarLikelihood',xparam1,[],[],flag,gend);
+	eval(['save ' fname_ '_mode xparam1 hh gg fval;']);
+      end
+    elseif options_.mode_compute == 6% New routine!
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	fval = DsgeLikelihood(xparam1,gend,data);
+      else
+	fval = DsgeVarLikelihood(xparam1,gend);
+      end      
+      OldMode = fval;
+      if ~exist('MeanPar')
+	MeanPar = xparam1;
+      end  
+      for i=1:options_.Opt6Iter
+	if exist('hh')
+	  CovJump = inv(hh);
+	else% The covariance matrix is initialized with the prior
+	  % covariance (a diagonal matrix)
+	  stdev = bayestopt_.pstdev;
+	  indx = find(isinf(stdev));
+	  stdev(indx) = 10*ones(length(indx),1);
+	  CovJump = diag(stdev).^2;
+	end
+	OldPostVar = CovJump;
+	if i == 1;
+	  if options_.Opt6Iter > 1
+	    [xparam1,PostVar,Scale,PostMean] = ...
+		metropolis99(xparam1,gend,data,bounds,options_.Opt6Numb,options_.mh_jscale,'',MeanPar,CovJump);
+	  else
+	    [xparam1,PostVar,Scale,PostMean] = ...
+		metropolis99(xparam1,gend,data,bounds,options_.Opt6Numb,options_.mh_jscale,'LastCall',MeanPar,CovJump);
+	  end
+	  options_.mh_jscale = Scale;
+	  mouvement = max(max(abs(PostVar-OldPostVar)));
+	  if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	    fval = DsgeLikelihood(xparam1,gend,data);
+	  else
+	    fval = DsgeVarLikelihood(xparam1,gend);
+	  end
+	  disp(['Change in the covariance matrix = ' num2str(mouvement) '.'])
+	  disp(['Mode improvement = ' num2str(abs(OldMode-fval))])
+	  OldMode = fval;
+	else
+	  OldPostVar = PostVar;
+	  if i<options_.Opt6Iter
+	    [xparam1,PostVar,Scale,PostMean] = ...
+		metropolis99(xparam1,gend,data,bounds,options_.Opt6Numb,options_.mh_jscale,'',PostMean,PostVar);
+	  else
+	    [xparam1,PostVar,Scale,PostMean] = ...
+		metropolis99(xparam1,gend,data,bounds,options_.Opt6Numb,options_.mh_jscale,'LastCall',PostMean,PostVar);
+	  end
+	  options_.mh_jscale = Scale;
+	  mouvement = max(max(abs(PostVar-OldPostVar)));
+	  if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	    fval = DsgeLikelihood(xparam1,gend,data);
+	  else
+	    fval = DsgeVarLikelihood(xparam1,gend);
+	  end
+	  disp(['Change in the covariance matrix = ' num2str(mouvement) '.'])
+	  disp(['Mode improvement = ' num2str(abs(OldMode-fval))])
+	  OldMode = fval;
+	end
+	options_.mh_jscale = Scale;
+	bayestopt_.jscale = ones(length(xparam1),1)*Scale;
+      end
+      hh = inv(PostVar);
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	fval = DsgeLikelihood(xparam1,gend,data);
+      else
+	fval = DsgeVarLikelihood(xparam1,gend);
+      end
+    end
+    if options_.mode_compute ~= 5 & options_.mode_compute ~= 6 
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	hh = reshape(hessian('DsgeLikelihood',xparam1,gend,data),nx,nx);
+	eval(['save ' fname_ '_mode xparam1 hh fval;']);
+      else
+	hh = reshape(hessian('DsgeVarLikelihood',xparam1,gend),nx,nx);
+	eval(['save ' fname_ '_mode xparam1 hh fval;']);
+      end
+    end
+    if options_.mode_compute ~= 6
+      eval(['save ' fname_ '_mode xparam1 hh;']);
+    elseif options_.mode_compute == 6
+      eval(['save ' fname_ '_mode xparam1 hh Scale PostMean;']);
+    end
+  end
+
+  if options_.mode_check == 1
+    mode_check(xparam1,0,hh,gend,data,lb,ub);
+  end
+
+  if options_.mode_compute ~= 6
+    hh = generalized_cholesky(hh);
+    invhess = inv(hh);
+  else
+    invhess = PostVar;
+  end
+  stdh = sqrt(diag(invhess));
+  if any(bayestopt_.pshape > 0)
+    disp(' ')
+    disp('RESULTS FROM POSTERIOR MAXIMIZATION')
+    tstath = zeros(nx,1);
+    for i = 1:nx
+      tstath(i) = abs(xparam1(i))/stdh(i);
+    end
+    tit1 = sprintf('%10s %7s %8s %7s %6s %4s %6s\n',' ','prior mean', ...
+           'mode','s.d.','t-stat','prior','pstdev');
+    if np
+      ip = nvx+nvn+ncx+ncn+1;
+      disp('parameters')
+      disp(tit1)
+      for i=1:np
+    disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ...
+             deblank(estim_params_.param_names(i,:)), ...
+             bayestopt_.pmean(ip),xparam1(ip),stdh(ip),tstath(ip), ...
+             pnames(bayestopt_.pshape(ip)+1,:), ...
+             bayestopt_.pstdev(ip)));
+    eval(['oo_.posterior_mode.parameters.' deblank(estim_params_.param_names(i,:)) ' = xparam1(ip);']);
+    eval(['oo_.posterior_std.parameters.' deblank(estim_params_.param_names(i,:)) ' = stdh(ip);']); 
+    ip = ip+1;
+      end
+    end
+    if nvx
+      ip = 1;
+      disp('standard deviation of shocks')
+      disp(tit1)
+      for i=1:nvx
+    k = estim_params_.var_exo(i,1);
+        disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ...
+             deblank(lgx_(k,:)),bayestopt_.pmean(ip),xparam1(ip), ...
+             stdh(ip),tstath(ip),pnames(bayestopt_.pshape(ip)+1,:), ...
+             bayestopt_.pstdev(ip))); 
+        Sigma_e_(k,k) = xparam1(ip)*xparam1(ip);
+    eval(['oo_.posterior_mode.shocks_std.' deblank(lgx_(k,:)) ' = xparam1(ip);']);
+    eval(['oo_.posterior_std.shocks_std.' deblank(lgx_(k,:)) ' = stdh(ip);']); 
+    ip = ip+1;
+      end
+    end
+    if nvn
+      disp('standard deviation of measurement errors')
+      disp(tit1)
+      ip = nvx+1;
+      for i=1:nvn
+        disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ...
+             deblank(options_.varobs(estim_params_.var_endo(i,1),: ...
+                         )),bayestopt_.pmean(ip), ...
+             xparam1(ip),stdh(ip),tstath(ip), ...
+             pnames(bayestopt_.pshape(ip)+1,:), ...
+             bayestopt_.pstdev(ip)));
+    eval(['oo_.posterior_mode.measurement_errors_std.' deblank(options_.varobs(estim_params_.var_endo(i,1),:)) ' = xparam1(ip);']);
+    eval(['oo_.posterior_std.measurement_errors_std.' deblank(options_.varobs(estim_params_.var_endo(i,1),:)) ' = stdh(ip);']); 
+        ip = ip+1;
+      end
+    end
+    if ncx
+      disp('correlation of shocks')
+      disp(tit1)
+      ip = nvx+nvn+1;
+      for i=1:ncx
+    k1 = estim_params_.corrx(i,1);
+        k2 = estim_params_.corrx(i,2);
+        name = [deblank(lgx_(k1,:)) ',' deblank(lgx_(k2,:))];
+        disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ...
+             bayestopt_.pmean(ip),xparam1(ip),stdh(ip),tstath(ip),  ...
+             pnames(bayestopt_.pshape(ip)+1,:), bayestopt_.pstdev(ip)));
+        Sigma_e_(k1,k2) = xparam1(ip)*sqrt(Sigma_e_(k1,k1)*Sigma_e_(k2,k2));
+        Sigma_e_(k2,k1) = Sigma_e_(k1,k2);
+    eval(['oo_.posterior_mode.shocks_corr.' deblank(lgx_(k1,:)) '_' deblank(lgx_(k2,:)) ' = xparam1(ip);']);
+    eval(['oo_.posterior_std.shocks_corr.' deblank(lgx_(k1,:)) '_' deblank(lgx_(k2,:)) ' = stdh(ip);']); 
+        ip = ip+1;
+      end
+    end
+    if ncn
+      disp('correlation of measurement errors')
+      disp(tit1)
+      ip = nvx+nvn+ncx+1;
+      for i=1:ncn
+        k1 = estim_params_.corrn(i,1);
+        k2 = estim_params_.corrn(i,2);
+        name = [deblank(lgy_(k1,:)) ',' deblank(lgy_(k2,:))];
+        disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ...
+             bayestopt_.pmean(ip),xparam1(ip),stdh(ip),tstath(ip), ...
+             pnames(bayestopt_.pshape(ip)+1,:), bayestopt_.pstdev(ip)));
+    eval(['oo_.posterior_mode.measurement_errors_corr.' deblank(lgy_(k1,:)) '_' deblank(lgy_(k2,:)) ' = xparam1(ip);']);
+    eval(['oo_.posterior_std.measurement_errors_corr.' deblank(lgy_(k1,:)) '_' deblank(lgy_(k2,:)) ' = stdh(ip);']); 
+    ip = ip+1;
+      end
+    end
+    %%% Laplace approximation to the marginal log density:
+    if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+        md_Laplace = .5*size(xparam1,1)*log(2*pi) + .5*log(det(invhess)) ...
+        - DsgeLikelihood(xparam1,gend,data);
+    else
+        md_Laplace = .5*size(xparam1,1)*log(2*pi) + .5*log(det(invhess)) ...
+        - DsgeVarLikelihood(xparam1,gend);
+    end
+    oo_.MarginalDensity.LaplaceApproximation = md_Laplace;    
+    disp(' ')
+    disp(sprintf('Log data density [Laplace approximation] is %f.',md_Laplace))
+    disp(' ')
+  else
+    disp(' ')
+    disp('RESULTS FROM MAXIMUM LIKELIHOOD')
+    tstath = zeros(nx,1);
+    for i = 1:nx
+      tstath(i) = abs(xparam1(i))/stdh(i);
+    end
+    tit1 = sprintf('%10s %10s %7s %6s\n',' ', ...
+           'Estimate','s.d.','t-stat');
+    if np
+      ip = nvx+nvn+ncx+ncn+1;
+      disp('parameters')
+      disp(tit1)
+      for i=1:np
+        disp(sprintf('%12s %8.4f %7.4f %7.4f', ...
+             deblank(estim_params_.param_names(i,:)), ...
+             xparam1(ip),stdh(ip),tstath(ip)));
+    eval(['oo_.mle_mode.parameters.' deblank(estim_params_.param_names(i,:)) ' = xparam1(ip);']);
+    eval(['oo_.mle_std.parameters.' deblank(estim_params_.param_names(i,:)) ' = stdh(ip);']); 
+        ip = ip+1;
+      end
+    end
+    if nvx
+      ip = 1;
+      disp('standard deviation of shocks')
+      disp(tit1)
+      for i=1:nvx
+    k = estim_params_.var_exo(i,1);
+        disp(sprintf('%12s %8.4f %7.4f %7.4f', ...
+             deblank(lgx_(k,:)),xparam1(ip), ...
+             stdh(ip),tstath(ip)));
+        Sigma_e_(k,k) = xparam1(ip)*xparam1(ip);
+    eval(['oo_.mle_mode.shocks_std.' deblank(lgx_(k,:)) ' = xparam1(ip);']);
+    eval(['oo_.mle_std.shocks_std.' deblank(lgx_(k,:)) ' = stdh(ip);']); 
+    ip = ip+1;
+      end
+    end
+    if nvn
+      disp('standard deviation of measurement errors')
+      disp(tit1)
+      ip = nvx+1;
+      for i=1:nvn
+    disp(sprintf('%12s %8.4f %7.4f %7.4f', ...
+             deblank(options_.varobs(estim_params_.var_endo(i,1),: ...
+                         )), ...
+             xparam1(ip),stdh(ip),tstath(ip)))
+    eval(['oo_.mle_mode.measurement_errors_std.' deblank(options_.varobs(estim_params_.var_endo(i,1),:)) ' = xparam1(ip);']);
+    eval(['oo_.mle_std.measurement_errors_std.' deblank(options_.varobs(estim_params_.var_endo(i,1),:)) ' = stdh(ip);']);      
+    ip = ip+1;
+      end
+    end
+    if ncx
+      disp('correlation of shocks')
+      disp(tit1)
+      ip = nvx+nvn+1;
+      for i=1:ncx
+        k1 = estim_params_.corrx(i,1);
+        k2 = estim_params_.corrx(i,2);
+        name = [deblank(lgx_(k1,:)) ',' deblank(lgx_(k2,:))];
+        disp(sprintf('%12s %8.4f %7.4f %7.4f', name, ...
+             xparam1(ip),stdh(ip),tstath(ip)));
+        Sigma_e_(k1,k2) = xparam1(ip)*sqrt(Sigma_e_(k1,k1)*Sigma_e_(k2,k2));
+        Sigma_e_(k2,k1) = Sigma_e_(k1,k2);
+    eval(['oo_.mle_mode.shocks_corr.' deblank(lgx_(k1,:)) '_' deblank(lgx_(k2,:)) ' = xparam1(ip);']);
+    eval(['oo_.mle_std.shocks_corr.' deblank(lgx_(k1,:)) '_' deblank(lgx_(k2,:)) ' = stdh(ip);']);      
+        ip = ip+1;
+      end
+    end
+    if ncn
+      disp('correlation of measurement errors')
+      disp(tit1)
+      ip = nvx+nvn+ncx+1;
+      for i=1:ncn
+    k1 = estim_params_.corrn(i,1);
+    k2 = estim_params_.corrn(i,2);
+    name = [deblank(lgy_(k1,:)) ',' deblank(lgy_(k2,:))];
+    disp(sprintf('%12s %8.4f %7.4f %7.4f', name, ...
+             xparam1(ip),stdh(ip),tstath(ip)));
+    eval(['oo_.mle_mode.measurement_error_corr.' deblank(lgy_(k1,:)) '_' deblank(lgy_(k2,:)) ' = xparam1(ip);']);
+    eval(['oo_.mle_std.measurement_error_corr.' deblank(lgy_(k1,:)) '_' deblank(lgy_(k2,:)) ' = stdh(ip);']);      
+    ip = ip+1;
+      end
+    end
+  end
+
+  if any(bayestopt_.pshape > 0) & options_.TeX %%%% Bayesian estimation (posterior mode) Latex output
+    if np
+      filename = [fname_ '_Posterior_Mode_1.TeX'];
+      fidTeX = fopen(filename,'w');
+      fprintf(fidTeX,'%% TeX-table generated by dynare_estimation (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM POSTERIOR MAXIMIZATION (parameters)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n')
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lcccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. & Posterior mode & s.d. \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      ip = nvx+nvn+ncx+ncn+1;
+      for i=1:np
+    fprintf(fidTeX,'$%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n',...
+        deblank(estim_params_.tex(i,:)),...
+        deblank(pnames(bayestopt_.pshape(ip)+1,:)),...
+        bayestopt_.pmean(ip),...
+        estim_params_.param_vals(i,6),...
+        xparam1(ip),...
+        stdh(ip));
+    ip = ip + 1;    
+      end
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from posterior parameters (parameters)}\n ');
+      fprintf(fidTeX,'\\label{Table:Posterior:1}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n')
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if nvx
+      TeXfile = [fname_ '_Posterior_Mode_2.TeX'];
+      fidTeX = fopen(TeXfile,'w');
+      fprintf(fidTeX,'%% TeX-table generated by dynare_estimation (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM POSTERIOR MAXIMIZATION (standard deviation of structural shocks)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lcccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. & Posterior mode & s.d. \\\\ \n')
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      ip = 1;
+      for i=1:nvx
+    k = estim_params_.var_exo(i,1);
+    fprintf(fidTeX,[ '$%s$ & %4s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n'],...
+        deblank(lgx_TeX_(k,:)),...
+        deblank(pnames(bayestopt_.pshape(ip)+1,:)),...
+        bayestopt_.pmean(ip),...
+        estim_params_.var_exo(i,7),...
+        xparam1(ip), ...
+        stdh(ip)); 
+    ip = ip+1;
+      end
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from posterior parameters (standard deviation of structural shocks)}\n ');
+      fprintf(fidTeX,'\\label{Table:Posterior:2}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n')
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if nvn
+      TeXfile = [fname_ '_Posterior_Mode_3.TeX'];
+      fidTeX  = fopen(TeXfile,'w');
+      fprintf(fidTeX,'%% TeX-table generated by dynare_estimation (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM POSTERIOR MAXIMIZATION (standard deviation of measurement errors)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lcccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. &  Posterior mode & s.d. \\\\ \n')
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      ip = nvx+1;
+      for i=1:nvn
+    fprintf(fidTeX,'$%s$ & %4s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n',...
+        deblank(options_.varobs_TeX(estim_params_.var_endo(i,1),:)), ...
+        deblank(pnames(bayestopt_.pshape(ip)+1,:)), ...        
+        bayestopt_.pmean(ip), ...
+        estim_params_.var_endo(i,7),...        
+        xparam1(ip),...
+        stdh(ip)); 
+    ip = ip+1;
+      end
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from posterior parameters (standard deviation of measurement errors)}\n ');
+      fprintf(fidTeX,'\\label{Table:Posterior:3}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if ncx
+      TeXfile = [fname_ '_Posterior_Mode_4.TeX'];
+      fidTeX = fopen(TeXfile,'w');
+      fprintf(fidTeX,'%% TeX-table generated by dynare_estimation (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM POSTERIOR MAXIMIZATION (correlation of structural shocks)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lcccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. &  Posterior mode & s.d. \\\\ \n')
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      ip = nvx+nvn+1;
+      for i=1:ncx
+    k1 = estim_params_.corrx(i,1);
+    k2 = estim_params_.corrx(i,2);
+    fprintf(fidTeX,[ '$%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n'],...
+        [deblank(lgx_TeX_(k1,:)) ',' deblank(lgx_TeX_(k2,:))], ...
+        deblank(pnames(bayestopt_.pshape(ip)+1,:)), ...
+        bayestopt_.pmean(ip), ...
+        estim_params_.corrx(i,8), ...
+        xparam1(ip), ...
+        stdh(ip));
+    ip = ip+1;
+      end
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from posterior parameters (correlation of structural shocks)}\n ');
+      fprintf(fidTeX,'\\label{Table:Posterior:4}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if ncn
+      TeXfile = [fname_ '_Posterior_Mode_5.TeX'];
+      fidTeX = fopen(TeXfile,'w');
+      fprintf(fidTeX,'%% TeX-table generated by dynare_estimation (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM POSTERIOR MAXIMIZATION (correlation of measurement errors)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lcccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. &  Posterior mode & s.d. \\\\ \n')
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      ip = nvx+nvn+ncx+1;
+      for i=1:ncn
+    k1 = estim_params_.corrn(i,1);
+    k2 = estim_params_.corrn(i,2);
+    fprintf(fidTeX,'$%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n',...
+        [deblank(lgy_(k1,:)) ',' deblank(lgy_(k2,:))], ...
+        pnames(bayestopt_.pshape(ip)+1,:), ...
+        bayestopt_.pmean(ip), ...
+        estim_params_.corrn(i,8), ...
+        xparam1(ip), ...
+        stdh(ip));
+    ip = ip+1;
+      end
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from posterior parameters (correlation of measurement errors)}\n ');
+      fprintf(fidTeX,'\\label{Table:Posterior:5}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end 
+  end    
+
+
+  if any(bayestopt_.pshape  > 0)  & (options_.mh_replic | options_.load_mh_file)  % not ML estimation
+    bounds = prior_bounds(bayestopt_);
+    bayestopt_.lb = bounds(:,1);
+    bayestopt_.ub = bounds(:,2);
+    if any(xparam1 < bounds(:,1)) | any(xparam1 > bounds(:,2))
+      find(xparam1 < bounds(:,1))
+      find(xparam1 > bounds(:,2))
+      error('Mode values are outside prior bounds. Reduce prior_trunc.')
+    end
+    metropolis(xparam1,invhess,gend,data,rawdata,bounds);
+    get_posterior_parameters('posterior_mean');
+    dr_ = resol(ys_,0);
+  end
+
+  % computes smoothed variables for posterior_mode or posterior_mean, if
+  % metropolis). Except if options_.smoother or recursive forecast
+  
+  if ~options_.smoother & options_.nobs(1) == options_.nobs(end) 
+    [atT,innov,measurement_error,filtered_state_vector,ys,trend_coeff] ...
+	= DsgeSmoother(xparam1,gend,data);
+    for i=1:endo_nbr
+      eval(['oo_.SmoothedVariables.' deblank(lgy_(dr.order_var(i),:)) ' = atT(i,:)'';']);
+      eval(['oo_.FilteredVariables.' deblank(lgy_(dr.order_var(i),:)) ' = filtered_state_vector(i,:)'';']);
+    end
+    [nbplt,nr,nc,lr,lc,nstar] = pltorg(exo_nbr);
+    if options_.TeX
+      fidTeX = fopen([fname_ '_SmoothedShocks.TeX'],'w');
+      fprintf(fidTeX,'%% TeX eps-loader file generated by dynare_estimation.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+      fprintf(fidTeX,' \n');
+    end    
+    if nbplt == 1
+      hh = figure('Name','Smoothed shocks');
+      NAMES = [];
+      if options_.TeX, TeXNAMES = [], end
+      for i=1:exo_nbr
+    subplot(nr,nc,i);
+    plot(1:gend,innov(i,:),'-k','linewidth',1)
+    hold on
+    plot([1 gend],[0 0],'-r','linewidth',.5)
+    hold off
+    xlim([1 gend])
+    name    = deblank(lgx_(i,:));
+    NAMES   = strvcat(NAMES,name);
+    if ~isempty(options_.XTick)
+      set(gca,'XTick',options_.XTick)
+      set(gca,'XTickLabel',options_.XTickLabel)
+    end
+    if options_.TeX
+      texname = lgx_TeX_(i,1);
+      TeXNAMES   = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+    end
+    title(name,'Interpreter','none')
+    eval(['oo_.SmoothedShocks.' deblank(lgx_(i,:)) ' = innov(i,:)'';']);
+      end
+      eval(['print -depsc2 ' fname_ '_SmoothedShocks' int2str(1)]);
+      eval(['print -dpdf ' fname_ '_SmoothedShocks' int2str(1)]);
+      saveas(hh,[fname_ '_SmoothedShocks' int2str(1) '.fig']);
+      if options_.nograph, close(hh), end
+      if options_.TeX
+    fprintf(fidTeX,'\\begin{figure}[H]\n');
+    for jj = 1:exo_nbr
+      fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+    end    
+    fprintf(fidTeX,'\\centering \n');
+    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_SmoothedShocks%s}\n',fname_,int2str(1));
+    fprintf(fidTeX,'\\caption{Smoothed shocks.}');
+    fprintf(fidTeX,'\\label{Fig:SmoothedShocks:%s}\n',int2str(1));
+    fprintf(fidTeX,'\\end{figure}\n');
+    fprintf(fidTeX,'\n');
+    fprintf(fidTeX,'%% End of TeX file.\n');
+    fclose(fidTeX);
+      end    
+    else
+      for plt = 1:nbplt-1
+    hh = figure('Name','Smoothed shocks');
+    set(0,'CurrentFigure',hh)
+    NAMES = [];
+    if options_.TeX, TeXNAMES = [], end
+    for i=1:nstar
+      k = (plt-1)*nstar+i;
+      subplot(nr,nc,i);
+      plot([1 gend],[0 0],'-r','linewidth',.5)
+      hold on
+      plot(1:gend,innov(k,:),'-k','linewidth',1)
+      hold off
+      name = deblank(lgx_(k,:));
+      NAMES = strvcat(NAMES,name);
+      if ~isempty(options_.XTick)
+        set(gca,'XTick',options_.XTick)
+        set(gca,'XTickLabel',options_.XTickLabel)
+      end
+      xlim([1 gend])
+      if options_.TeX
+        texname = lgx_TeX_(k,:);
+        TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+      end    
+      title(name,'Interpreter','none')
+      eval(['oo_.SmoothedShocks.' deblank(name) ' = innov(k,:)'';']);
+    end
+    eval(['print -depsc2 ' fname_ '_SmoothedShocks' int2str(plt)]);
+    eval(['print -dpdf ' fname_ '_SmoothedShocks' int2str(plt)]);
+    saveas(hh,[fname_ '_SmoothedShocks' int2str(plt) '.fig']);
+    if options_.nograph, close(hh), end
+    if options_.TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:nstar
+        fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering \n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_SmoothedShocks%s}\n',fname_,int2str(plt));
+      fprintf(fidTeX,'\\caption{Smoothed shocks.}');
+      fprintf(fidTeX,'\\label{Fig:SmoothedShocks:%s}\n',int2str(plt));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,'\n');
+    end    
+      end
+      hh = figure('Name','Smoothed shocks');
+      set(0,'CurrentFigure',hh)
+      NAMES = [];
+      if options_.TeX, TeXNAMES = [], end
+      for i=1:exo_nbr-(nbplt-1)*nstar
+    k = (nbplt-1)*nstar+i;
+    if lr ~= 0
+      subplot(lr,lc,i);
+    else
+      subplot(nr,nc,i);
+    end    
+    plot([1 gend],[0 0],'-r','linewidth',0.5)
+    hold on
+    plot(1:gend,innov(k,:),'-k','linewidth',1)
+    hold off
+    name     = deblank(lgx_(k,:));
+    NAMES    = strvcat(NAMES,name);
+    if ~isempty(options_.XTick)
+      set(gca,'XTick',options_.XTick)
+      set(gca,'XTickLabel',options_.XTickLabel)
+    end
+    xlim([1 gend])
+    if options_.TeX
+      texname  = lgx_TeX_(k,:);
+      TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+    end
+    title(name,'Interpreter','none')
+    eval(['oo_.SmoothedShocks.' deblank(name) ' = innov(k,:)'';']);
+      end
+      eval(['print -depsc2 ' fname_ '_SmoothedShocks' int2str(nbplt)]);
+      eval(['print -dpdf ' fname_ '_SmoothedShocks' int2str(nbplt)]);
+      saveas(hh,[fname_ '_SmoothedShocks' int2str(nbplt) '.fig']);
+      if options_.nograph, close(hh), end
+      if options_.TeX
+    fprintf(fidTeX,'\\begin{figure}[H]\n');
+    for jj = 1:size(NAMES,1);
+      fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+    end    
+    fprintf(fidTeX,'\\centering \n');
+    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_SmoothedShocks%s}\n',fname_,int2str(nbplt));
+    fprintf(fidTeX,'\\caption{Smoothed shocks.}');
+    fprintf(fidTeX,'\\label{Fig:SmoothedShocks:%s}\n',int2str(nbplt));
+    fprintf(fidTeX,'\\end{figure}\n');
+    fprintf(fidTeX,'\n');
+    fprintf(fidTeX,'%% End of TeX file.\n');
+    fclose(fidTeX);
+      end    
+    end
+    %%
+    %%  Smooth observational errors...
+    %%
+    yf = zeros(gend,n_varobs);
+    if options_.prefilter == 1
+      yf = atT(bayestopt_.mf,:)+repmat(bayestopt_.mean_varobs',1,gend);
+    elseif options_.loglinear == 1
+      yf = atT(bayestopt_.mf,:)+repmat(log(ys(bayestopt_.mfys)),1,gend)+...
+       trend_coeff*[1:gend];
+    else
+      yf = atT(bayestopt_.mf,:)+repmat(ys(bayestopt_.mfys),1,gend)+...
+       trend_coeff*[1:gend];
+    end
+    if nvn
+      number_of_plots_to_draw = 0;
+      index = [];
+      for i=1:n_varobs
+    if max(abs(measurement_error(10:end))) > 0.000000001
+      number_of_plots_to_draw = number_of_plots_to_draw + 1;
+      index = cat(1,index,i);
+    end
+    eval(['oo_.SmoothedMeasurementErrors.' deblank(options_.varobs(i,:)) ...
+          ' = measurement_error(i,:)'';']);
+      end
+      [nbplt,nr,nc,lr,lc,nstar] = pltorg(number_of_plots_to_draw);
+      if options_.TeX
+    fidTeX = fopen([fname_ '_SmoothedObservationErrors.TeX'],'w');
+    fprintf(fidTeX,'%% TeX eps-loader file generated by dynare_estimation.m (Dynare).\n');
+    fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+    fprintf(fidTeX,' \n');
+      end    
+      if nbplt == 1
+    hh = figure('Name','Smoothed observation errors');
+    set(0,'CurrentFigure',hh)
+    NAMES = [];
+    if options_.TeX, TeXNAMES = [], end
+    for i=1:number_of_plots_to_draw
+      subplot(nr,nc,i);
+      plot(1:gend,measurement_error(index(i),:),'-k','linewidth',1)
+      hold on
+      plot([1 gend],[0 0],'-r','linewidth',.5)
+      hold off
+      name    = deblank(options_.varobs(index(i),:));
+      NAMES   = strvcat(NAMES,name);
+      if ~isempty(options_.XTick)
+        set(gca,'XTick',options_.XTick)
+        set(gca,'XTickLabel',options_.XTickLabel)
+      end
+      if options_.TeX
+        texname = options_.varobs_TeX(index(i),:);
+        TeXNAMES   = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+      end
+      title(name,'Interpreter','none')
+    end
+    eval(['print -depsc2 ' fname_ '_SmoothedObservationErrors' int2str(1)]);
+    eval(['print -dpdf ' fname_ '_SmoothedObservationErrors' int2str(1)]);
+    saveas(hh,[fname_ '_SmoothedObservationErrors' int2str(1) '.fig']);
+    if options_.nograph, close(hh), end
+    if options_.TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:number_of_plots_to_draw
+        fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering \n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_SmoothedObservationErrors%s}\n',fname_,int2str(1));
+      fprintf(fidTeX,'\\caption{Smoothed observation errors.}');
+      fprintf(fidTeX,'\\label{Fig:SmoothedObservationErrors:%s',int2str(1));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,'\n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end    
+      else
+    for plt = 1:nbplt-1
+      hh = figure('Name','Smoothed observation errors');
+      set(0,'CurrentFigure',hh)
+      NAMES = [];
+      if options_.TeX, TeXNAMES = [], end
+      for i=1:nstar
+        k = (plt-1)*nstar+i;
+        subplot(nr,nc,i);
+        plot([1 gend],[0 0],'-r','linewidth',.5)
+        hold on
+        plot(1:gend,measurement_error(index(k),:),'-k','linewidth',1)
+        hold off
+        name = deblank(options_.varobs(index(k),:));
+        NAMES = strvcat(NAMES,name);
+        if ~isempty(options_.XTick)
+          set(gca,'XTick',options_.XTick)
+          set(gca,'XTickLabel',options_.XTickLabel)
+        end
+        if options_.TeX
+          texname = options_.varobs_TeX(k,:);
+          TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+        end    
+        title(name,'Interpreter','none')
+      end
+      eval(['print -depsc2 ' fname_ '_SmoothedObservationErrors' int2str(plt)]);
+      eval(['print -dpdf ' fname_ '_SmoothedObservationErrors' int2str(plt)]);
+      saveas(hh,[fname_ '_SmoothedObservationErrors' int2str(plt) '.fig']);
+      if options_.nograph, close(hh), end
+      if options_.TeX
+        fprintf(fidTeX,'\\begin{figure}[H]\n');
+        for jj = 1:nstar
+          fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+        end    
+        fprintf(fidTeX,'\\centering \n');
+        fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_SmoothedObservationErrors%s}\n',fname_,int2str(plt));
+        fprintf(fidTeX,'\\caption{Smoothed observation errors.}');
+        fprintf(fidTeX,'\\label{Fig:SmoothedObservationErrors:%s}\n',int2str(plt));
+        fprintf(fidTeX,'\\end{figure}\n');
+        fprintf(fidTeX,'\n');
+      end    
+    end
+    hh = figure('Name','Smoothed observation errors');
+    set(0,'CurrentFigure',hh)
+    NAMES = [];
+    if options_.TeX, TeXNAMES = [], end
+    for i=1:number_of_plots_to_draw-(nbplt-1)*nstar
+      k = (nbplt-1)*nstar+i;
+      if lr ~= 0
+        subplot(lr,lc,i);
+      else
+        subplot(nr,nc,i);
+      end    
+      plot([1 gend],[0 0],'-r','linewidth',0.5)
+      hold on
+      plot(1:gend,measurement_error(index(k),:),'-k','linewidth',1)
+      hold off
+      name     = deblank(options_.varobs(index(k),:));
+      NAMES    = strvcat(NAMES,name);
+      if ~isempty(options_.XTick)
+        set(gca,'XTick',options_.XTick)
+        set(gca,'XTickLabel',options_.XTickLabel)
+      end
+      if options_.TeX
+        texname  = options_.varobs_TeX(index(k),:);
+        TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+      end
+      title(name,'Interpreter','none');
+    end
+    eval(['print -depsc2 ' fname_ '_SmoothedObservationErrors' int2str(nbplt)]);
+    eval(['print -dpdf ' fname_ '_SmoothedObservationErrors' int2str(nbplt)]);
+    saveas(hh,[fname_ '_SmoothedObservationErrors' int2str(nbplt) '.fig']);
+    if options_.nograph, close(hh), end
+    if options_.TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:size(NAMES,1);
+        fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering \n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_SmoothedObservedErrors%s}\n',fname_,int2str(nbplt));
+      fprintf(fidTeX,'\\caption{Smoothed observed errors.}');
+      fprintf(fidTeX,'\\label{Fig:SmoothedObservedErrors:%s}\n',int2str(nbplt));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,'\n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end    
+      end
+    end 
+    %%
+    %%  Historical and smoothed variabes
+    %%
+    if nvn 
+      [nbplt,nr,nc,lr,lc,nstar] = pltorg(n_varobs);
+      if options_.TeX
+    fidTeX = fopen([fname_ '_HistoricalAndSmoothedVariables.TeX'],'w');
+    fprintf(fidTeX,'%% TeX eps-loader file generated by dynare_estimation.m (Dynare).\n');
+    fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+    fprintf(fidTeX,' \n');
+      end    
+      if nbplt == 1
+    hh = figure('Name','Historical and smoothed variables');
+    NAMES = [];
+    if options_.TeX, TeXNAMES = [], end
+    for i=1:n_varobs
+      subplot(nr,nc,i);
+      plot(1:gend,yf(i,:),'-r','linewidth',1)
+      hold on
+      plot(1:gend,rawdata(options_.first_obs+(0:gend-1),i),'-k','linewidth',1)
+      hold off
+      name    = deblank(options_.varobs(i,:));
+      NAMES   = strvcat(NAMES,name);
+      if ~isempty(options_.XTick)
+        set(gca,'XTick',options_.XTick)
+        set(gca,'XTickLabel',options_.XTickLabel)
+      end
+      xlim([1 gend])
+      if options_.TeX
+        texname = options_.varobs_TeX(i,1);
+        TeXNAMES   = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+      end
+      title(name,'Interpreter','none')
+    end
+    eval(['print -depsc2 ' fname_ '_HistoricalAndSmoothedVariables' int2str(1)]);
+    eval(['print -dpdf ' fname_ '_HistoricalAndSmoothedVariables' int2str(1)]);
+    saveas(hh,[fname_ '_HistoricalAndSmoothedVariables' int2str(1) '.fig']);
+    if options_.nograph, close(hh), end
+    if options_.TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:n_varobs
+        fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering \n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_HistoricalAndSmoothedVariables%s}\n',fname_,int2str(1));
+      fprintf(fidTeX,'\\caption{Historical and smoothed variables.}');
+      fprintf(fidTeX,'\\label{Fig:HistoricalAndSmoothedVariables:%s}\n',int2str(1));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,'\n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end    
+      else
+    for plt = 1:nbplt-1
+      hh = figure('Name','Historical and smoothed variables');
+      set(0,'CurrentFigure',hh)
+      NAMES = [];
+      if options_.TeX, TeXNAMES = [], end
+      for i=1:nstar
+        k = (plt-1)*nstar+i;
+        subplot(nr,nc,i);
+        plot(1:gend,yf(k,:),'-r','linewidth',1)
+        hold on
+        plot(1:gend,rawdata(options_.first_obs+(0:gend-1),k),'-k','linewidth',1)
+        hold off
+        name = deblank(options_.varobs(k,:));
+        NAMES = strvcat(NAMES,name);
+        if ~isempty(options_.XTick)
+          set(gca,'XTick',options_.XTick)
+          set(gca,'XTickLabel',options_.XTickLabel)
+        end
+        xlim([1 gend])
+        if options_.TeX
+          texname = options_.varobs_TeX(k,:);
+          TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+        end    
+        title(name,'Interpreter','none')
+      end
+      eval(['print -depsc2 ' fname_ '_HistoricalAndSmoothedVariables' int2str(plt)]);
+      eval(['print -dpdf ' fname_ '_HistoricalAndSmoothedVariables' int2str(plt)]);
+      saveas(hh,[fname_ '_HistoricalAndSmoothedVariables' int2str(plt) '.fig']);
+      if options_.nograph, close(hh), end
+      if options_.TeX
+        fprintf(fidTeX,'\\begin{figure}[H]\n');
+        for jj = 1:nstar
+          fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+        end    
+        fprintf(fidTeX,'\\centering \n');
+        fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_HistoricalAndSmoothedVariables%s}\n',fname_,int2str(plt));
+        fprintf(fidTeX,'\\caption{Historical and smoothed variables.}');
+        fprintf(fidTeX,'\\label{Fig:HistoricalAndSmoothedVariables:%s}\n',int2str(plt));
+        fprintf(fidTeX,'\\end{figure}\n');
+        fprintf(fidTeX,'\n');
+      end    
+    end
+    hh = figure('Name','Historical and smoothed variables');
+    set(0,'CurrentFigure',hh)
+    NAMES = [];
+    if options_.TeX, TeXNAMES = [], end
+    for i=1:n_varobs-(nbplt-1)*nstar
+      k = (nbplt-1)*nstar+i;
+      if lr ~= 0
+        subplot(lr,lc,i);
+      else
+        subplot(nr,nc,i);
+      end    
+      plot(1:gend,yf(k,:),'-r','linewidth',1)
+      hold on
+      plot(1:gend,rawdata(options_.first_obs+(0:gend-1),k),'-k','linewidth',1)
+      hold off
+      name = deblank(options_.varobs(k,:));
+      NAMES    = strvcat(NAMES,name);
+      if ~isempty(options_.XTick)
+        set(gca,'XTick',options_.XTick)
+        set(gca,'XTickLabel',options_.XTickLabel)
+      end
+      xlim([1 gend])
+      if options_.TeX
+        texname  = options_.varobs_TeX(k,:);
+        TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+      end
+      title(name,'Interpreter','none');
+    end
+    eval(['print -depsc2 ' fname_ '_HistoricalAndSmoothedVariables' int2str(nbplt)]);
+    eval(['print -dpdf ' fname_ '_HistoricalAndSmoothedVariables' int2str(nbplt)]);
+    saveas(hh,[fname_ '_HistoricalAndSmoothedVariables' int2str(nbplt) '.fig']);
+    if options_.nograph, close(hh), end
+    if options_.TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:size(NAMES,1);
+        fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering \n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_HistoricalAndSmoothedVariables%s}\n',fname_,int2str(nbplt));
+      fprintf(fidTeX,'\\caption{Historical and smoothed variables.}');
+      fprintf(fidTeX,'\\label{Fig:HistoricalAndSmoothedVariables:%s}\n',int2str(nbplt));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,'\n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end    
+      end % if nbplt == 1
+    end   % if nvn
+  end     % if ~((any(bayestopt_.pshape > 0) & options_.mh_replic) 
+          % | (any(bayestopt_.pshape > 0) & options_.load_mh_file)) | ~options_.smoother  
+
+  if options_.nobs(1) < options_.nobs(end)  % recursive estimation
+    if isempty(varlist)
+      varlist = lgy_;
+    end
+    for i = 1:size(varlist,1)
+      eval(['oo_.RecursiveForecast.Mean.' varlist(i,:) '(' int2str(iter1) ',:) =' ...
+            ' oo_.Forecast.Mean.' varlist(i,:) ';']); 
+      eval(['oo_.RecursiveForecast.Median.' varlist(i,:) '(' int2str(iter1) ',:) =' ...
+            ' oo_.Forecast.Median.' varlist(i,:) ';']); 
+      eval(['oo_.RecursiveForecast.Std.' varlist(i,:) '(' int2str(iter1) ',:) =' ...
+            ' oo_.Forecast.Std.' varlist(i,:) ';']); 
+      eval(['oo_.RecursiveForecast.HPDinf.' varlist(i,:) '(' int2str(iter1) ',:) =' ...
+            ' oo_.Forecast.HPDinf.' varlist(i,:) ';']); 
+      eval(['oo_.RecursiveForecast.HPDsup.' varlist(i,:) '(' int2str(iter1) ',:) =' ...
+            ' oo_.Forecast.HPDsup.' varlist(i,:) ';']); 
+      eval(['oo_.RecursiveForecast.HPDTotalinf.' varlist(i,:) '(' int2str(iter1) ',:) =' ...
+            ' oo_.Forecast.HPDTotalinf.' varlist(i,:) ';']); 
+      eval(['oo_.RecursiveForecast.HPDTotalsup.' varlist(i,:) '(' int2str(iter1) ',:) =' ...
+            ' oo_.Forecast.HPDTotalsup.' varlist(i,:) ';']); 
+    end
+    iter1 = iter1+1;    
+  end
+end        % end for gend=options_.nobs(1):options_.nobs(end)
+
+if options_.nobs(1) < options_.nobs(end) & options_.forecast > 1
+  if isempty(varlist)
+    varlist = lgy_;
+    nvar    = size(lgy_,1);
+    SelecVariables = transpose(1:nvar);
+  else
+    nvar = size(varlist,1);
+    SelecVariables = [];
+    for i=1:nvar
+      if ~isempty(strmatch(varlist(i,:),lgy_,'exact'))
+    SelecVariables = [SelecVariables;strmatch(varlist(i,:),lgy_, ...
+                          'exact')];
+      else
+    error(['Estimation: ' varlist(i,:) ' isn''t an endogenous' ...
+           'variable'])
+      end   
+    end
+    IdObs    = zeros(n_varobs,1);
+    for j=1:n_varobs
+      for i=1:nvar
+    iobs = strmatch(options_.varobs(j,:),varlist,'exact');
+      end
+      if ~isempty(iobs)
+    IdObs(j,1) = iobs;
+      end    
+    end 
+  end
+  k = 3+min(options_.nobs(end)-options_.nobs(1)+options_.forecast, ...
+      size(rawdata,1)-options_.nobs(1));
+  data2 = rawdata(end-k+1:end,:);
+  [nbplt,nr,nc,lr,lc,nstar] = pltorg(nvar);
+  for i = 1:size(varlist,1)
+    if mod(i,nstar) == 1
+      hfig = figure('Name','Out of sample forecasts');
+    end
+    subplot(nr,nc,i)
+    hold on
+    if any(i==IdObs)
+      k2 = find(i==IdObs);
+      if options_.loglinear == 1
+    plot(1:k,exp(data2(end-k+1:end,k2))','-k','linewidth',2);
+      else
+    plot(1:k,data2(k2,end-k+1:end,k2)','-k','linewidth',2);
+      end
+      offsetx = 3;
+    else
+      offsetx = 0;
+    end      
+    for j=1:options_.nobs(end)-options_.nobs(1)+1
+      y = eval(['oo_.RecursiveForecast.Mean.' varlist(i,:) '(j,:)']);
+      y1 = eval(['oo_.RecursiveForecast.HPDinf.' varlist(i,:) '(j,:)']);
+      y2 = eval(['oo_.RecursiveForecast.HPDsup.' varlist(i,:) '(j,:)']);
+      y3 = eval(['oo_.RecursiveForecast.HPDTotalinf.' varlist(i,:) '(j,:)']);
+      y4 = eval(['oo_.RecursiveForecast.HPDTotalsup.' varlist(i,:) '(j,:)']);
+      plot(offsetx+[j:j+options_.forecast-1],y,'-b','linewidth',2)
+      plot(offsetx+[j:j+options_.forecast-1],y1,'--g', ...
+       'linewidth',1.5)
+      plot(offsetx+[j:j+options_.forecast-1],y2,'--g', ...
+       'linewidth',1.5)
+      plot(offsetx+[j:j+options_.forecast-1],y3,'--r', ...
+       'linewidth',1.5)
+      plot(offsetx+[j:j+options_.forecast-1],y4,'--r','linewidth',1.5)
+    end
+%    set(gca,'XTick',offsetx+[1 10 20 30 40 50 60 70 80 90]);
+%    set(gca,'XTickLabel',{'1';'10';'20';'30';'40';'50';'60';'70';'80';'90'});
+    %   xlim([1 options_.forecast+10]);
+    if any(k==IdObs)
+      plot([offsetx+1 offsetx+1],ylim,'-c')
+    end
+    box on
+    title(deblank(varlist(i,:)),'Interpreter','none')
+    hold off
+  end
+end
+
+
+
+
+
+
+
+      
+% SA 07-31-2004     * Added TeX output.
+%                   * Prior plots are done by calling plot_priors.m.
+%                   * All the computations related to the metropolis-hastings are made
+%                   in a new version of metropolis.m.
+%                   * Corrected a bug related to prior's bounds.
+%                   * ...
+%                   * If you do not want to see all the figures generated by dynare, you can use the option
+%                   nograph. The figures will be done and saved in formats eps, pdf and fig (so that you
+%                   should be able to modify the plots within matlab) but each figure will be erased from the
+%                   workspace when completed.
+% SA 08-04-2004     Corrected a bug related to the display of the Smooth shocks and variables plots,
+%                   for ML and posterior mode estimation. 
+% SA 09-03-2004     Compilation of TeX appendix moved to dynare.m.                                                                                                                                                                         h
diff --git a/tags/v_3.062/matlab/dynare_m.exe b/tags/v_3.062/matlab/dynare_m.exe
new file mode 100644
index 0000000000000000000000000000000000000000..e19c15a99b599081fc3fbbbe5b61b9bdd915c83d
GIT binary patch
literal 728110
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
Ul?L5w0A1@1SxpLwFGS}J05A&Fq5uE@

literal 0
HcmV?d00001

diff --git a/tags/v_3.062/matlab/dynare_resolve.m b/tags/v_3.062/matlab/dynare_resolve.m
new file mode 100644
index 0000000000..2ccfef4173
--- /dev/null
+++ b/tags/v_3.062/matlab/dynare_resolve.m
@@ -0,0 +1,14 @@
+function [A,B,ys,info] = dynare_resolve()
+  global ys_ dr_
+  
+  [dr_,info] = resol(ys_,0);
+  
+  if info(1) > 0
+    A = [];
+    B = [];
+    ys = [];
+    return
+  end
+  
+  [A,B] = kalman_transition_matrix(dr_);
+  ys = dr_.ys;
diff --git a/tags/v_3.062/matlab/dynare_solve.m b/tags/v_3.062/matlab/dynare_solve.m
new file mode 100644
index 0000000000..1c77442182
--- /dev/null
+++ b/tags/v_3.062/matlab/dynare_solve.m
@@ -0,0 +1,85 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function [x,check] = dynare_solve(func,x,varargin)
+  global gstep_ options_ debug_
+  
+  options_ = set_default_option(options_,'solve_algo',2);
+  check = 0;
+  func = str2func(func);
+  if options_.solve_algo == 0
+    if ~isempty(which('fsolve')) & sscanf(version('-release'),'%d') >= 13;
+      options=optimset('fsolve');
+      options.MaxFunEvals = 20000;
+      options.TolFun=1e-8;
+      options.Display = 'off';
+      [x,fval,exitval,output] = fsolve(func,x,options,varargin{:});
+      if exitval > 0
+	check = 0;
+      else
+	check = 1;
+      end
+      return
+    else 
+      options_.solve_algo = 1;
+    end
+  end
+
+  if options_.solve_algo == 1
+    nn = size(x,1) ;
+    [x,check]=solve1(func,x,1:nn,1:nn,varargin{:});
+  elseif options_.solve_algo == 2
+    nn = size(x,1) ;
+    %    tolf = eps^(2/3) ;
+    tolf = 1e-9;
+
+    fjac = zeros(nn,nn) ;
+
+    fvec = feval(func,x,varargin{:});
+
+    i = find(~isfinite(fvec));
+    
+    if ~isempty(i)
+      if debug_
+	disp(['STEADY:  numerical initial values incompatible with the following' ...
+	      ' equations'])
+	disp(i')
+	error('exiting ...')
+      else
+	check = 1;
+	return
+      end
+    end
+    
+    f = 0.5*fvec'*fvec ;
+
+    if max(abs(fvec)) < 0.01*tolf
+      return ;
+    end
+
+    dh = max(abs(x),gstep_*ones(nn,1))*eps^(1/3);
+    for j = 1:nn
+      xdh = x ;
+      xdh(j) = xdh(j)+dh(j) ;
+      fjac(:,j) = (feval(func,xdh,varargin{:}) - fvec)./dh(j) ;
+    end
+
+    [j1,j2,r,s] = dmperm(fjac);
+    
+    for i=length(r)-1:-1:1
+      [x,check]=solve1(func,x,j1(r(i):r(i+1)-1),j2(r(i):r(i+1)-1),varargin{:});
+      if check
+	if debug_
+	  error(sprintf('Solve block = %d check = %d\n',i,check));
+	else
+	  return
+	end
+      end
+    end
+    [x,check]=solve1(func,x,1:nn,1:nn,varargin{:});
+      
+  end
+%    fvec1 = feval(func,x,varargin{:})
+
+  % 08/28/03 MJ add a final call to solve1 for solve_algo == 1 in case
+  %             initvals generates 'false' zeros in the Jacobian
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/dynasave.m b/tags/v_3.062/matlab/dynasave.m
new file mode 100644
index 0000000000..d4e326e32b
--- /dev/null
+++ b/tags/v_3.062/matlab/dynasave.m
@@ -0,0 +1,37 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function dynasave(s,var_list)
+% DYNASAVE :	DYNASAVE ( [ 'filename' ] )	
+%		This optional command saves the simulation results
+%		in a .MAT file.
+
+  global endo_nbr lgy_ y_
+
+  n = size(var_list,1);
+  if n == 0
+    n = endo_nbr;
+    ivar = [1:n]';
+    var_list = lgy_;
+  else
+    ivar=zeros(n,1);
+    for i=1:n
+      i_tmp = strmatch(var_list(i,:),lgy_,'exact');
+      if isempty(i_tmp)
+	error (['One of the specified variables does not exist']) ;
+      else
+	ivar(i) = i_tmp;
+      end
+    end
+  end
+
+
+%  dyn2vec(var_list(1),var_list(1));
+eval([var_list(1) '=y_(ivar(1),:)'';'])
+eval(['save ' s ' ' var_list(1) ' -mat'])
+  for i = 2:n
+%    dyn2vec(var_list(i),var_list(i));
+    eval([var_list(i) '=y_(ivar(i),:)'';'])
+    eval(['save ' s ' ' var_list(i) ' -append -mat'])
+  end
+
+
diff --git a/tags/v_3.062/matlab/dynatype.m b/tags/v_3.062/matlab/dynatype.m
new file mode 100644
index 0000000000..531369fa2e
--- /dev/null
+++ b/tags/v_3.062/matlab/dynatype.m
@@ -0,0 +1,39 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function dynatype (s,var_list)
+% DYNATYPE :	DYNATYPE ( [ 'filename' ] )
+%		This optional command saves the simulation
+%		results in a text file. The name of each 
+%		variable preceeds the corresponding results.
+%		This command must follow SIMUL.
+
+global lgy_ lgx_ y_ endo_nbr
+
+fid=fopen(s,'w') ;
+
+n = size(var_list,1);
+if n == 0
+  n = endo_nbr;
+  ivar = [1:n]';
+  var_list = lgy_;
+else
+  ivar=zeros(n,1);
+  for i=1:n
+    i_tmp = strmatch(var_list(i,:),lgy_,'exact');
+    if isempty(i_tmp)
+      error (['One of the specified variables does not exist']) ;
+    else
+      ivar(i) = i_tmp;
+    end
+  end
+end
+
+
+for i = 1:n
+	fprintf(fid,lgy_(ivar(i),:),'\n') ;
+	fprintf(fid,'\n') ;
+	fprintf(fid,'%15.8g\n',y_(ivar(i),:)') ;
+end
+fclose(fid) ;
+
+return ;
diff --git a/tags/v_3.062/matlab/equiv.m b/tags/v_3.062/matlab/equiv.m
new file mode 100644
index 0000000000..7da01d1525
--- /dev/null
+++ b/tags/v_3.062/matlab/equiv.m
@@ -0,0 +1,6 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function y=equiv(x)
+ys_=x;
+taylor;
+y=newt('ff20_',ys_);
diff --git a/tags/v_3.062/matlab/f_var.m b/tags/v_3.062/matlab/f_var.m
new file mode 100644
index 0000000000..042336fd15
--- /dev/null
+++ b/tags/v_3.062/matlab/f_var.m
@@ -0,0 +1,4 @@
+function b=f_var(x,a,nx)
+  x=reshape(x,nx,nx);
+  b=x-a*x*a';
+  b=b(:);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/fbeta.m b/tags/v_3.062/matlab/fbeta.m
new file mode 100644
index 0000000000..b4b82d2194
--- /dev/null
+++ b/tags/v_3.062/matlab/fbeta.m
@@ -0,0 +1,6 @@
+function e = fbeta(p2,p,p1,perc)
+% must restrict p2 such that a>0 and b>0 ....
+  a = (1-p1)*p1^2/p2^2 - p1;
+  b = a*(1/p1 - 1);
+
+  e = p - pbeta(perc,a,b);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/ff1_.m b/tags/v_3.062/matlab/ff1_.m
new file mode 100644
index 0000000000..57cbf5b652
--- /dev/null
+++ b/tags/v_3.062/matlab/ff1_.m
@@ -0,0 +1,15 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function y=ff1_(x)
+global it_ exo_nbr exo_det_nbr ex_ ex_det_ xkmin_ ykmin_ fname_ M_
+
+n1 = size(x,1) - exo_nbr - exo_det_nbr;
+ex_(it_+xkmin_-ykmin_,:) = x(n1+[1:exo_nbr])';
+if M_.ex_det_length > 0
+  ex_det_(it_,:) = x(end-exo_det_nbr+1:end)';
+end
+fh = str2func([fname_ '_ff']);
+y=feval(fh,x(1:n1));
+
+
+
diff --git a/tags/v_3.062/matlab/ff2_.m b/tags/v_3.062/matlab/ff2_.m
new file mode 100644
index 0000000000..119cf5f77b
--- /dev/null
+++ b/tags/v_3.062/matlab/ff2_.m
@@ -0,0 +1,14 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function y=ff2_(x)
+global np_ endo_nbr nf_ ex_ it_ ykmin_ xkmin_ exo_nbr jp_ jf_ kf_ exe_
+y=zeros(np_+endo_nbr+nf_,1);
+y(1:np_)=x(1:np_);
+ex_(it_-ykmin_+xkmin_,:)=x(np_+1:np_+exo_nbr)';
+y(np_+jp_)=h1_(y(1:np_),ex_(it_-ykmin_+xkmin_,:)');
+y(np_+jf_)=g1_(y(1:np_),ex_(it_-ykmin_+xkmin_,:)');
+y(kf_)=g1_(y(np_+jp_),exe_);
+y=ff_(y);
+
+
+
diff --git a/tags/v_3.062/matlab/ff2a_.m b/tags/v_3.062/matlab/ff2a_.m
new file mode 100644
index 0000000000..72042518ff
--- /dev/null
+++ b/tags/v_3.062/matlab/ff2a_.m
@@ -0,0 +1,4 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function z=ff2a_(y,dr)
+  z=fff_(y)+dr.delta_s;
diff --git a/tags/v_3.062/matlab/ff_simul.m b/tags/v_3.062/matlab/ff_simul.m
new file mode 100644
index 0000000000..880b976b96
--- /dev/null
+++ b/tags/v_3.062/matlab/ff_simul.m
@@ -0,0 +1,10 @@
+function z=ff_simul(x,y1,m,state,tempu,o1,o2,o3,delta)
+  global fname_ dr_
+
+  fh = str2func([fname_ '_ff']);
+  tempx = [x(dr.order_var(o1:o2))-dr.ys(dr.order_var(o1:o2)); state];
+  tempxx = kron(tempx,tempx);
+  tempxu = kron(tempx,tempu);
+%  y2 = dr.ys(dr.order_var)+dr.ghs2/2+dr.ghx*tempx+dr.ghu*tempu+0.5*(dr.ghxx*tempxx+dr.ghuu*tempuu)+dr.ghxu*tempxu;
+  y2(dr.order_var(o3:end)) = m+dr.ghx(o3:end,:)*tempx+0.5*dr.ghxx(o3:end,:)*tempxx+dr.ghxu(o3:end,:)*tempxu;
+  z=feval(fh,(y1; x; y2))+delta;
diff --git a/tags/v_3.062/matlab/ff_simul1.m b/tags/v_3.062/matlab/ff_simul1.m
new file mode 100644
index 0000000000..d93084bcae
--- /dev/null
+++ b/tags/v_3.062/matlab/ff_simul1.m
@@ -0,0 +1,7 @@
+function z=ff_simul1(x,y1,m,state,o1,o2,o3,k)
+  global fname_ dr_
+
+  fh = str2func([fname_ '_ff']);
+  tempx = [x(dr_.order_var(o1:o2))-dr_.ys(dr_.order_var(o1:o2)); state];
+  y2 = m+dr_.ghx(o3:end,:)*tempx;
+  z=feval(fh,[y1; x; y2(k)]);
diff --git a/tags/v_3.062/matlab/ff_simul2.m b/tags/v_3.062/matlab/ff_simul2.m
new file mode 100644
index 0000000000..742727b94f
--- /dev/null
+++ b/tags/v_3.062/matlab/ff_simul2.m
@@ -0,0 +1,9 @@
+function z=ff_simul2(x,y1,m,state,o1,o2,o3,k)
+  global fname_ dr_
+
+  fh = str2func([fname_ '_ff']);
+  tempx = [x(dr_.order_var(o1:o2))-dr_.ys(dr_.order_var(o1:o2)); state];
+  tempxx = kron(tempx,tempx);
+%  y2 = dr.ys(dr.order_var)+dr.ghs2/2+dr.ghx*tempx+dr.ghu*tempu+0.5*(dr.ghxx*tempxx+dr.ghuu*tempuu)+dr.ghxu*tempxu;
+  y2 = m+dr_.ghx(o3:end,:)*tempx+0.5*dr_.ghxx(o3:end,:)*tempxx;
+  z=feval(fh,[y1; x; y2(k)])+dr_.fuu;
diff --git a/tags/v_3.062/matlab/fff.m b/tags/v_3.062/matlab/fff.m
new file mode 100644
index 0000000000..38533b5d17
--- /dev/null
+++ b/tags/v_3.062/matlab/fff.m
@@ -0,0 +1,12 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function x=fff(y)
+
+global ykmin_ ykmax_ iy_
+
+iyr = find(reshape(iy_'>0,(ykmin_+ykmax_+1)*size(iy_,2),1)) ;
+y = kron(ones(ykmin_+ykmax_+1,1),y) ;
+y = y(iyr,:) ;
+x = ff_(y) ;
+
+return ; 
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/ffill.m b/tags/v_3.062/matlab/ffill.m
new file mode 100644
index 0000000000..c95cf4954d
--- /dev/null
+++ b/tags/v_3.062/matlab/ffill.m
@@ -0,0 +1,24 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function [a,b] = ffill(x,ixc,y)
+
+xc = size(x,1) ;
+
+if isempty(y)
+  b = [ixc; 0];
+  a = [x zeros(size(x,1),1)];
+else
+  yc = size(y,1) ;
+  b = [ixc;yc] ;
+
+  if xc > yc
+    a = [x [y;zeros(xc-yc,size(y,2))]] ;
+  elseif yc > xc
+    a = [[x;zeros(yc-xc,size(x,2))] y] ;
+  else
+    a = [x y] ;
+  end
+
+end
+
+% 2001/09/1 MJ corrected for absent lags
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/fgamma.m b/tags/v_3.062/matlab/fgamma.m
new file mode 100644
index 0000000000..5ed62a90f6
--- /dev/null
+++ b/tags/v_3.062/matlab/fgamma.m
@@ -0,0 +1,4 @@
+function e = fgamma(p2,p,p1,perc)
+  b = p2^2/p1;
+  a = p1/b;
+  e = p - pgamma(perc,a,b);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/figamm.m b/tags/v_3.062/matlab/figamm.m
new file mode 100644
index 0000000000..067a957b70
--- /dev/null
+++ b/tags/v_3.062/matlab/figamm.m
@@ -0,0 +1,2 @@
+function e = figamm(p2,p,p1,perc)
+  e = p - pgamma(1/perc,p2/2,2/p1);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/fnorm.m b/tags/v_3.062/matlab/fnorm.m
new file mode 100644
index 0000000000..f842fbc2a8
--- /dev/null
+++ b/tags/v_3.062/matlab/fnorm.m
@@ -0,0 +1,2 @@
+function e = fnorm(p2,p,p1,perc)
+  e = p - pnorm(perc,p1,p2);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/forcst.m b/tags/v_3.062/matlab/forcst.m
new file mode 100644
index 0000000000..afabf58728
--- /dev/null
+++ b/tags/v_3.062/matlab/forcst.m
@@ -0,0 +1,58 @@
+function [yf,var_yf] = forcst(dr,y0,k,var_list)
+  global endo_nbr exo_nbr ykmin_ Sigma_e_ ex_ options_ lgy_
+  
+  options_.periods = k;
+  make_ex_;
+  yf = simult_(y0,dr,ex_(1:k,:),1);
+
+  [A,B] = kalman_transition_matrix(dr);
+  
+  sigma_u = B*Sigma_e_*B';
+  sigma_y = 0;
+  
+  for i=1:k
+    sigma_y = sigma_y+sigma_u;
+    var_yf(i,dr.order_var) = diag(sigma_y(1:endo_nbr,1:endo_nbr))';
+    if i == k
+      break
+    end
+    sigma_u = A*sigma_u*A';
+  end
+
+  nvar = size(var_list,1);
+  if nvar == 0
+    nvar = endo_nbr;
+    ivar = [1:nvar];
+  else
+    ivar=zeros(nvar,1);
+    for i=1:nvar
+      i_tmp = strmatch(var_list(i,:),lgy_,'exact');
+      if isempty(i_tmp)
+	disp(var_list(i,:));
+	error (['One of the variable specified does not exist']) ;
+      else
+	ivar(i) = i_tmp;
+      end
+    end
+  end
+
+  for i=1:nvar
+    my_subplot(i,nvar,2,3,'Forecasts');
+    
+    plot([-ykmin_+1:0],y0(ivar(i),1:ykmin_),'b-',...
+	 [1:k],yf(ivar(i),ykmin_+1:end),'g-',...
+	 [1:k],yf(ivar(i),ykmin_+1:end)'+2*sqrt(var_yf(:,ivar(i))),'g:',...
+	 [1:k],yf(ivar(i),ykmin_+1:end)'-2*sqrt(var_yf(:,ivar(i))),'g:',...
+	 [1 k],repmat(dr.ys(ivar(i)),1,2),'r-');
+    title(lgy_(ivar(i),:));
+  end
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/forcst2.m b/tags/v_3.062/matlab/forcst2.m
new file mode 100644
index 0000000000..06c712078d
--- /dev/null
+++ b/tags/v_3.062/matlab/forcst2.m
@@ -0,0 +1,44 @@
+function yf=forcst2(y0,horizon,dr,n)
+  global Sigma_e_ endo_nbr exo_nbr options_ ykmin_
+  
+  options_ = set_default_option(options_,'simul_seed',0);
+  order = options_.order;
+  seed = options_.simul_seed;
+
+  k1 = [ykmin_:-1:1];
+  k2 = dr.kstate(find(dr.kstate(:,2) <= ykmin_+1),[1 2]);
+  k2 = k2(:,1)+(ykmin_+1-k2(:,2))*endo_nbr;
+
+  it_ = ykmin_ + 1 ;
+
+  % eliminate shocks with 0 variance
+  i_exo_var = setdiff([1:exo_nbr],find(diag(Sigma_e_) == 0));
+  nxs = length(i_exo_var);
+
+  chol_S = chol(Sigma_e_(i_exo_var,i_exo_var));
+
+  if seed == 0
+    randn('state',sum(100*clock));
+  else
+    randn('state',seed);
+  end
+  
+  if ~isempty(Sigma_e_)
+    e = randn(nxs,n,horizon);
+  end
+  
+  B1 = dr.ghu(:,i_exo_var)*chol_S';
+
+  yf = zeros(endo_nbr,horizon+ykmin_,n);
+  yf(:,1:ykmin_,:,:) = repmat(y0,[1,1,n]);
+  
+  j = ykmin_*endo_nbr;
+  for i=ykmin_+(1:horizon)
+    tempx1 = reshape(yf(:,k1,:),[j,n]);
+    tempx = tempx1(k2,:);
+    yf(:,i,:) = dr.ghx*tempx+B1*squeeze(e(:,:,i-ykmin_));
+    k1 = k1+1;
+  end
+  
+  yf(dr.order_var,:,:) = yf;
+  yf=permute(yf,[2 1 3]);  
diff --git a/tags/v_3.062/matlab/forcst2a.m b/tags/v_3.062/matlab/forcst2a.m
new file mode 100644
index 0000000000..4022108232
--- /dev/null
+++ b/tags/v_3.062/matlab/forcst2a.m
@@ -0,0 +1,23 @@
+function yf=forcst2a(y0,dr,e)
+  global Sigma_e_ endo_nbr exo_nbr options_ ykmin_
+  
+  horizon = size(e,1);
+  options_ = set_default_option(options_,'simul_seed',0);
+  order = options_.order;
+
+  k1 = [ykmin_:-1:1];
+  k2 = dr.kstate(find(dr.kstate(:,2) <= ykmin_+1),[1 2]);
+  k2 = k2(:,1)+(ykmin_+1-k2(:,2))*endo_nbr;
+
+  yf = zeros(horizon+ykmin_,endo_nbr);
+  yf(1:ykmin_,:) = y0';
+  
+  j = ykmin_*endo_nbr;
+  for i=ykmin_+(1:horizon)
+    tempx = yf(k1,:)';
+    yf(i,:) = tempx(k2)'*dr.ghx';
+    k1 = k1+1;
+  end
+  
+   yf(:,dr.order_var) = yf;
+   
diff --git a/tags/v_3.062/matlab/forecast.m b/tags/v_3.062/matlab/forecast.m
new file mode 100644
index 0000000000..60c3e5a678
--- /dev/null
+++ b/tags/v_3.062/matlab/forecast.m
@@ -0,0 +1,45 @@
+% Copyright (C) 2005 Michel Juillard
+%
+function forecast(var_list)
+  global options_ dr_ ys_ endo_nbr exo_nbr exo_det_nbr ykmin_ y_ ex_det_ 
+  global lgy_ lgx_det_ oo_ exe_det_
+  
+  old_options = options_;
+  options_ = set_default_option(options_,'periods',40);
+  if options_.periods == 0
+    options_.periods = 40;
+  end
+  
+  if size(y_,2) < ykmin_
+    y0 = repmat(ys_,ykmin_);
+  else
+    y0 = y_(:,1:ykmin_);
+  end
+  
+  if exo_det_nbr == 0
+    [yf,var_yf] = forcst(dr_,y0,options_.periods,var_list);
+  else
+    if options_.periods > size(ex_det_,1)
+      ex = zeros(options_.periods,exo_nbr);
+      ex_det_ = [ ex_det_; repmat(exe_det_',options_.periods- ...
+				  size(ex_det_,1),1)];
+    elseif options_.periods < size(ex_det_,1)
+      ex = zeros(size(ex_det_,1),exo_nbr); 
+    end
+    [yf,int_width] = simultxdet(y0,dr_,ex,ex_det_,options_.order, ...
+				  var_list);
+  end
+  
+  for i=1:endo_nbr
+    eval(['oo_.forecast.Mean.' lgy_(i,:) '= yf(' int2str(i) ',:)'';']);
+    eval(['oo_.forecast.HPDinf.' lgy_(i,:) '= yf(' int2str(i) ',2:end)''-' ...
+		    ' int_width(:,' int2str(i) ');']);
+    eval(['oo_.forecast.HPDsup.' lgy_(i,:) '= yf(' int2str(i) ',2:end)''+' ...
+		    ' int_width(:,' int2str(i) ');']);
+  end
+
+  for i=1:exo_det_nbr
+    eval(['oo_.forecast.Exogenous.' lgx_det_(i,:) '= ex_det_(:,' int2str(i) ');']);
+  end
+  
+  options_ = old_options;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/fs_dyn.m b/tags/v_3.062/matlab/fs_dyn.m
new file mode 100644
index 0000000000..602b8b6ee3
--- /dev/null
+++ b/tags/v_3.062/matlab/fs_dyn.m
@@ -0,0 +1,9 @@
+function fs_dyn(a,b)
+  nu=b;
+  s=b*a^2;
+  mu=sqrt(s/2)*gamma((nu-1)/2)/gamma(nu/2);
+  sigma=sqrt(s/(nu-2)-mu^2);
+
+  disp('     FS to DYNARE conversion for inverse gamma parameters')
+  disp(sprintf('          Frank''s parameters: %f %f',a,b))
+  disp(sprintf('          mu = %f       sigma = %f',mu,sigma))
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/ftest.m b/tags/v_3.062/matlab/ftest.m
new file mode 100644
index 0000000000..61d380270f
--- /dev/null
+++ b/tags/v_3.062/matlab/ftest.m
@@ -0,0 +1,69 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function ftest (s1,s2)
+
+global nvx nvy x y lag1
+
+if size(s1,1) ~= 2
+	error ('Sp�cifiez deux fichiers pour la comparaison.') ;
+end
+
+for i = 1:2
+	if ~ isempty(find(abs(s1(i,:)) == 46))
+		error ('Entrez les noms de fichiers sans extensions.') ;
+	end
+end
+
+s1 = [s1 [' ';' ']] ;
+file1 = [s1(1,1:min(find(abs(s1(1,:)) == 32))-1) '.BIN'] ;
+file2 = [s1(2,1:min(find(abs(s1(2,:)) == 32))-1) '.BIN'] ;
+
+fid=fopen(file1,'r') ;
+n1 = fread(fid,1,'int') ;
+n2 = fread(fid,1,'int') ;
+n3 = fread(fid,1,'int') ;
+lag1 = fread(fid,4,'int') ;
+nvx = fread(fid,[n1,n3],'int') ;
+x = fread(fid,[n1,n2],'float64') ;
+fclose(fid) ;
+nvx = setstr(nvx) ;
+
+fid=fopen(file2,'r') ;
+n1 = fread(fid,1,'int') ;
+n2 = fread(fid,1,'int') ;
+n3 = fread(fid,1,'int') ;
+lag2 = fread(fid,4,'int') ;
+nvy = fread(fid,[n1,n3],'int') ;
+y = fread(fid,[n1,n2],'float64') ;
+fclose(fid) ;
+nvy = setstr(nvy) ;
+
+if size(x,1) ~= size(y,1)
+	error ('FTEST: The two files don''t have the same number of variables.');
+end
+
+for i = 1:size(x,1)
+	if ~ strcmp(nvx(i,:),nvy(i,:))
+		error ('FTEST: The two files don''t have the same  variables.') ;	
+	end
+end
+
+if nnz(lag1 - lag2) > 0
+	error ('FTEST: Leads and lags aren''t the same in both files.') ;
+end
+
+j = zeros(size(s2,1),1);
+for i=1:size(s2,1)
+	k = strmatch(s2(i,:),nvx,'exact') ;
+	if isempty(k)
+	  t = ['FTEST: Variable ' s2(i) 'doesn''t exist'] ;
+	  error (t) ;
+	else
+	  j(i) =k;
+	end
+end
+
+y = y(j,:) ;
+x = x(j,:) ;
+
+%06/18/01 MJ replaced beastr by strmatch
diff --git a/tags/v_3.062/matlab/fx_.m b/tags/v_3.062/matlab/fx_.m
new file mode 100644
index 0000000000..84f4b6370c
--- /dev/null
+++ b/tags/v_3.062/matlab/fx_.m
@@ -0,0 +1,10 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function y=fx_(x)
+global ys_ ykmin_ ykmax_ it_ iy_ xkmin_ ex_ fname_
+y=repmat(ys_,ykmin_+ykmax_+1,1);
+iyr0=find(reshape(iy_',size(iy_,1)*size(iy_,2),1));
+y=y(iyr0);
+ex_(it_+xkmin_-ykmin_,:)=x';
+fh = str2func([fname_ '_ff']);
+y=feval(fh,y);
diff --git a/tags/v_3.062/matlab/gamm_rnd.m b/tags/v_3.062/matlab/gamm_rnd.m
new file mode 100644
index 0000000000..757461bac3
--- /dev/null
+++ b/tags/v_3.062/matlab/gamm_rnd.m
@@ -0,0 +1,72 @@
+function gb = gamm_rnd(nrow,m,k)
+% PURPOSE: a matrix of random draws from the gamma distribution
+%---------------------------------------------------
+% USAGE: r = gamm_rnd(n,m,k)
+% where: n = the size of the vector drawn 
+%        m = a parameter such that the mean of the gamma = m/k
+%        k = a parameter such that the variance of the gamma = m/(k^2)
+%        note: m=r/2, k=2 equals chisq r random deviate 
+%---------------------------------------------------
+% RETURNS:
+%        r = an n x 1 vector of random numbers from the gamma distribution      
+% --------------------------------------------------
+% SEE ALSO: gamm_inv, gamm_pdf, gamm_cdf
+%---------------------------------------------------
+% NOTE: written by: Michael Gordy, 15 Sept 1993
+%                   mbgordy@athena.mit.edu
+%---------------------------------------------------
+% REFERENCES: Luc Devroye, Non-Uniform Random Variate Generation, 
+%            New York: Springer Verlag, 1986, ch 9.3-6.
+
+if nargin ~= 3
+error('Wrong # of arguments to gamm_rnd');
+end;
+
+ncol = 1;
+gb=zeros(nrow,ncol);
+if m<=1
+  % Use RGS algorithm by Best, p. 426
+  c=1/m; 
+  t=0.07+0.75*sqrt(1-m);
+  b=1+exp(-t)*m/t;
+  for i1=1:nrow
+    for i2=1:ncol
+       accept=0;
+       while accept==0
+          u=rand; w=rand; v=b*u;
+          if v<=1
+             x=t*(v^c);
+             accept=((w<=((2-x)/(2+x))) | (w<=exp(-x)));
+          else
+             x=-log(c*t*(b-v));
+             y=x/t;
+             accept=(((w*(m+y-m*y))<=1) | (w<=(y^(m-1))));
+          end
+       end
+       gb(i1,i2)=x;
+    end
+  end
+else
+  % Use Best's rejection algorithm XG, p. 410
+  b=m-1;
+  c=3*m-0.75;
+  for i1=1:nrow
+    for i2=1:ncol
+       accept=0;
+       while accept==0
+          u=rand;  v=rand;
+          w=u*(1-u);  y=sqrt(c/w)*(u-0.5);
+          x=b+y;
+          if x >= 0
+             z=64*(w^3)*v*v;
+             accept=(z<=(1-2*y*y/x)) ...
+                    | (log(z)<=(2*(b*log(x/b)-y)));
+          end
+       end
+       gb(i1,i2)=x;
+    end
+  end
+end
+gb=gb/k;    
+    
+
diff --git a/tags/v_3.062/matlab/gcompare.m b/tags/v_3.062/matlab/gcompare.m
new file mode 100644
index 0000000000..052b521333
--- /dev/null
+++ b/tags/v_3.062/matlab/gcompare.m
@@ -0,0 +1,41 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function gcompare(s1,s2)
+% GCOMPARE :	GCOMPARE ( [ 'file1' ; 'file2' ] , [ 'var1' ; 'var2' ...] )	
+%		This optional command plots the trajectories of a list of
+%		variables in two different simulations. One plot is drawn
+%		for each variable. The trajectories must have been previously
+%		saved by the instruction DYNASAVE. The simulation in file1
+%		is refered to as the base simulation.
+
+
+global dsmpl_ iter_ ykmin_
+global nvx nvy x y lag1
+
+ftest(s1,s2) ;
+
+ix = [1-lag1(1):size(x,2)-lag1(1)]' ;
+i = [lag1(1):size(ix,1)-lag1(2)+1]' ;
+
+if dsmpl_ == 0
+        i = [ykmin_:size(y,2)]' ;
+else
+	i = [dsmpl_(1):dsmpl_(2)]' ;
+end
+
+for k = 1:size(x,1)
+	figure ;
+	plot (ix(i),x(k,i),ix(i),y(k,i)) ;
+	xlabel (['Periods']) ;
+	title (['Variable ' s2(k,:)]) ;
+	l = min(i) + 1;
+	ll = max(i) - 1 ;
+	text (l,x(k,l),s1(1,:)) ;
+	text (ll,y(k,ll),s1(2,:)) ;
+end
+
+% 06/18/01 MJ corrected treatment of dsmpl_
+% 06/24/01 MJ removed color specification
+
+
+
diff --git a/tags/v_3.062/matlab/generalized_cholesky.m b/tags/v_3.062/matlab/generalized_cholesky.m
new file mode 100644
index 0000000000..f32f03ef78
--- /dev/null
+++ b/tags/v_3.062/matlab/generalized_cholesky.m
@@ -0,0 +1,54 @@
+% proc gmchol(A);
+%    /* calculates the Gill-Murray generalized choleski decomposition */
+%    /* input matrix A must be non-singular and symmetric */
+%    /* Author: Jeff Gill. Part of the Hessian Project. */
+%    local i,j,k,n,sum,R,theta_j,norm_A,phi_j,delta,xi_j,gamm,E,beta_j;
+
+function AA = generalized_cholesky(A);
+
+n = rows(A);
+R = eye(n);
+E = zeros(n,n);
+norm_A = max(sum(abs(A))');
+gamm   = max(abs(diag(A))); 
+delta = max([eps*norm_A;eps]);
+
+for j = 1:n; 
+    theta_j = 0;
+    for i=1:n;
+        somme = 0;
+        for k=1:i-1;	
+	        somme = somme + R(k,i)*R(k,j);
+        end;
+        R(i,j) = (A(i,j) - somme)/R(i,i);
+	    if (A(i,j) -somme) > theta_j;
+	        theta_j = A(i,j) - somme;
+        end;
+	    if i > j;
+	        R(i,j) = 0;
+        end;
+    end;
+    somme = 0;
+    for k=1:j-1;	
+        somme = somme + R(k,j)^2;
+    end;
+    phi_j = A(j,j) - somme;
+    if j+1 <= n;
+        xi_j = max(abs(A((j+1):n,j)));
+    else;
+        xi_j = abs(A(n,j));
+    end;
+    beta_j = sqrt(max([gamm ; (xi_j/n) ; eps]));
+    if all(delta >= [abs(phi_j);((theta_j^2)/(beta_j^2))]);
+        E(j,j) = delta - phi_j;
+    elseif all(abs(phi_j) >= [((delta^2)/(beta_j^2));delta]);
+        E(j,j) = abs(phi_j) - phi_j;
+    elseif all(((theta_j^2)/(beta_j^2)) >= [delta;abs(phi_j)]);
+        E(j,j) = ((theta_j^2)/(beta_j^2)) - phi_j;
+    end;
+    R(j,j) = sqrt(A(j,j) - somme + E(j,j));
+end;
+AA = R'*R;
+
+
+
diff --git a/tags/v_3.062/matlab/generalized_cholesky2.m b/tags/v_3.062/matlab/generalized_cholesky2.m
new file mode 100644
index 0000000000..c60dd456e0
--- /dev/null
+++ b/tags/v_3.062/matlab/generalized_cholesky2.m
@@ -0,0 +1,122 @@
+% /*
+% **  By Jeff Gill, April 2002.
+% **
+% **  This procedure produces:
+% **
+% **  y = chol(A+E), where E is a diagonal matrix with each element as small
+% **  as possible, and A and E are the same size.  E diagonal values are 
+% **  constrained by iteravely updated Gerschgorin bounds.  
+% **
+% **  REFERENCES:
+% **
+% **  Jeff Gill and Gary King. 1998. "`Hessian not Invertable.' Help!"
+% **  manuscript in progress, Harvard University.
+% **
+% **  Robert B. Schnabel and Elizabeth Eskow. 1990. "A New Modified Cholesky
+% **  Factorization," SIAM Journal of Scientific Statistical Computating,
+% **  11, 6: 1136-58.
+% **
+% **
+% **
+% **  St�phane Adjemian (2003): translation from Gauss to Matlab.  
+% */
+function AA = generalized_cholesky2(A)
+
+n = size(A,1);
+L = zeros(n,n);
+deltaprev = 0;
+gamm = max(abs(diag(A))); 
+tau = eps^(1/3);
+
+if  min(eig(A)) > 0;
+    tau = -1000000;
+end;
+
+norm_A = max(sum(abs(A))');
+gamm = max(abs(diag(A))); 
+delta = max([eps*norm_A;eps]);
+Pprod = eye(n);
+  
+if n > 2; 
+    for k = 1,n-2;
+         if min((diag(A(k+1:n,k+1:n))' - A(k,k+1:n).^2/A(k,k))') < tau*gamm ...
+                & min(eig(A((k+1):n,(k+1):n))) < 0;
+            [tmp,dmax] = max(diag(A(k:n,k:n)));
+            if A(k+dmax-1,k+dmax-1) > A(k,k);
+                P = eye(n);
+                Ptemp = P(k,:); 
+                P(k,:) = P(k+dmax-1,:); 
+                P(k+dmax-1,:) = Ptemp;
+                A = P*A*P;
+                L = P*L*P;
+                Pprod = P*Pprod;
+             end;
+             g = zeros(n-(k-1),1);
+             for i=k:n;  
+                if i == 1;
+	                sum1 = 0;
+                else;
+	                sum1 = sum(abs(A(i,k:(i-1)))');
+	            end;
+                if i == n;
+	                sum2 = 0;
+                else;
+                    sum2 = sum(abs(A((i+1):n,i)));
+	            end; 
+                g(i-k+1) = A(i,i) - sum1 - sum2;
+             end; 
+             [tmp,gmax] = max(g);
+             if gmax ~= k;
+                P = eye(n);
+                Ptemp  = P(k,:); 
+                P(k,:) = P(k+dmax-1,:); 
+                P(k+dmax-1,:) = Ptemp;
+                A = P*A*P;
+                L = P*L*P;
+                Pprod = P*Pprod;
+             end; 
+             normj = sum(abs(A(k+1:n,k)));
+             delta = max([0;deltaprev;-A(k,k)+normj;-A(k,k)+tau*gamm]);
+             if delta > 0;
+               A(k,k) = A(k,k) + delta;
+               deltaprev = delta;
+             end;
+         end; 
+         A(k,k) = sqrt(A(k,k));
+         L(k,k) = A(k,k); 
+         for i=k+1:n; 
+            if L(k,k) > eps; 
+                A(i,k) = A(i,k)/L(k,k); 
+            end;
+	        L(i,k) = A(i,k);
+            A(i,k+1:i) = A(i,k+1:i) - L(i,k)*L(k+1:i,k)';
+            if A(i,i) < 0; 
+                A(i,i) = 0; 
+            end;
+         end;
+    end;
+end;
+A(n-1,n) = A(n,n-1);
+eigvals  = eig(A(n-1:n,n-1:n));
+dlist    = [ 0 ; deltaprev ;...
+        -min(eigvals)+tau*max((inv(1-tau)*max(eigvals)-min(eigvals))|gamm) ]; 
+if dlist(1) > dlist(2); 
+    delta = dlist(1);   
+else;
+    delta = dlist(2);
+end;
+if delta < dlist(3);
+    delta = dlist(3);
+end;
+if delta > 0;
+    A(n-1,n-1) = A(n-1,n-1) + delta;
+    A(n,n) = A(n,n) + delta;
+    deltaprev = delta;
+end;
+A(n-1,n-1) = sqrt(A(n-1,n-1));
+L(n-1,n-1) = A(n-1,n-1);
+A(n,n-1) = A(n,n-1)/L(n-1,n-1);
+L(n,n-1) = A(n,n-1);
+A(n,n) = sqrt(A(n,n) - L(n,(n-1))^2);
+L(n,n) = A(n,n);
+AA = Pprod'*L'*Pprod';
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/gensylv.dll b/tags/v_3.062/matlab/gensylv.dll
new file mode 100755
index 0000000000000000000000000000000000000000..72754a104aa749503d1108677334bce6f588704d
GIT binary patch
literal 176128
zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P<Y7(1_lN``CWVrTR6`u?qKves~D1zS*%b{
zl%HOdn5&SSn3tDdqL7rTP*j?ykeR38;vcM#o1c=Z$IHv50yR0nm4U&Bk)5I4>Mz{N
z2Mm15+>A^X40TKl3~QJe7`zx57zChr0uuuRLrn&l&jfKdBh>w1BORE*f}u;9!Tw@k
zP=M$KX#kl4HHLwKnZXC7L4cXz0Xv9+11m5y%n`*QM}e?jNoqw20|UdCS|*75Kz;>9
z0+N{t3=9c+DTyVC3=9k#K;j_3gS_7aB0vHV?7+ZqK(7d*u!Wm}fnfm?0|O5O149dj
zItRU^;$o042TzcpsPZ6j5N-gOmkKct97dp!1StjC4^jZd4h#$qdYKS);4l<mW?<l8
zU|^U8QVdnZz`y`;UusT%G6N(m6_^<q#26SDW?`svLg*T0(IW&xJD)bck?1V_(_PBb
z8T+I8A7e>OXNd|+cc?&Thzdt{C`YG=%8O^;7#W)1@HGEp>^xke)B3HHr<<2yLtRGe
z$x;Es+nqPMV}Ep){^@)Zdx(eOMI-|Q!|T_*Thu`AZ#__Y;e|U$<m80j5;cb7EGnR4
z<AsVi6T@P#5eG`7j)PP(EEd>Mm+_+eJ0rsjvG0rwFH8Ub|Nr8R7!$*BaAGz*@Onn)
zH?Vs-I%EHIi-L7uD$(qg1!-)4&0=}Eh_{=$^+2f>m{a^2<n-BMObmtxz*Ze+0hc;2
zD#Vx=x?@4kJv`z61&Bef&-88sxdLpy#BmoD4v?YUp&Z9uR9HYZfy~kuV`6AMz(4g+
z=bKpmZHGJ#L*0W*{eMv=hR!#!hbJIFXy?<|m*zhh8K6R;olnEVf*arXurV<7mcHm*
z`sC;T|Gjhf{QUpF`3+C!);mA{|3BV(<>&wZ8!p#o9B;kx^Z)-3ZFL#J$6Fu#{Qv*4
zP)){*h~JD1$6F8l{Qn<Rl1Fs=szi0Wa&(6(WHEHt%5;}X1a`-Y1a<ogbcgbUhXn@)
z1@yMw`1}8Vzze@<28QM%DiAKj2vC*`cp;j?z|cDtqzEDkG8hyBy*VHa0?luDdV4``
z41Cf3n~|aUh(K@Zm*}|o*ux;1y$F4vAPs*J4%M}H%g_J+8A~La-|%$r-2wI)$kqS<
z|NkHU;t~TBD2;XZf+TwPzWDk7f8Yz<>mbv4x(y)C0G0F^&zTt*!n@-*0{&m_oeEM0
zau~}VkU{~7GLV5Uimo#<ybS*T|9|sQiSD^4e*XX84GyF3tw(<T|KGV4WKHK>kc*ms
zF!HxJgH--t;%^E24+?RRyFiYAp$#&|`~Uy{@bp1)e6h5{<7<aVO~#8AKat}ruG?25
zzB^Q*+f^ouvAb5HyHq5wJ60g5+m|PxJCp+wH;`z1F)tDn{3^XjAq<MI@E55`3=Hv*
z2#e@;RS5`s@fj3@y$}BW|KG`@@*>oZfuXxrr*|tTYC72=!32&}6O|V`vOuPSBXue$
zQiEP>`w0$B<Vc+h(h1QA3YXv)O;BCPkqQn}h$2uNguVFt4_t6`w}L`D;6>b3khwgN
zXv2uqAZVoaf+Lkj<%Rw(kaFZmoqH82QuiW7>RfQ7&IMW133d_QNDTuS1B%oMzKJD8
znH36-3c01l;I>MlLUCbfVo|C>E?7nnmQkVk6`g|XPs~e!YEf{47?zP(ma0&ak*ZLf
zn47AQSDKrYTBMMlrcjh$UaZFe)#waSo0JN*R*wN%aQ5y|2Zb|KnTtY3VzEMbQGQ-J
zl1a(=Ii<OI#rWI^)em(Ns67UDR&IV#ssdEILP<tq9@JG6AmtG#gT``nyGnG2igdcZ
z>1OUO<>{^!=nVZ}?aWdl)cl4ggF&<=<3-;Na0GQTTeCq#9YCTLFwt(`57vw&poEnH
zmWYQ+#Isn+Lxd|q>OG*sVJwznHD&<;-LY?iyZHlOJdk8y=q~-xd_=&~jip5NxGTp3
z(V7fsqI@Z|gOQ>08<YnscQPJ;4Ewzu?4;K_Ao<l76s=${r&c5;m*i9`m?~uE6_l1J
zBo?KEq5&>%sE}WzV5E>=T7r-Tm+#>Gz6Vr3hrZ}s3Mw!<r>=pN&%IN7z@^v{c=^2I
z=l}l_?R6PJ$6GgmifZYaj2An;f}PY{E5KSJ)%=F%c<Y3ppzQJgf5ro`nv5475GQy0
za(FiXWaMw}VrF3Ib`=3df&oHp*ozI@7#X@_MY>BxZtm>@m1n*pY28yntZh7Lol`qN
zLe(tYZam$wBAt6{K-@r%&ejqTqZiDr7KrGaTJiJ$|C?(;s&CJ20JA|x1a|H%`1$|;
z3u}-iTS00%TXTN?{~r<dLIWf;6=Y0jYX(Rt=!NJuMuxb~))bJ@tss2?FPOG5GDLQR
zP3+zamgog3?%oPACAhOS;phMV0pWpRFJ}Jz|G#@KNVIz^NJaAz8K?%Z>D|KJaV*{Z
z-CIE#I;X~ftPtqzjrjThe-?x0t?oLO&Z!|k|Njr~mJ9BUJ@KMyD<ebqRFHIcFUUJ_
z@tv&!pvoiY#e8uFhVHE(PWN7rIn76S_}3o~2nc&&x|NY3E<PamMGYGR10;-D85kI%
zyP=*D-O9)i-wn1js(UZU*znF)ACRdpyu=w8qIyerM0QUF33T^@Ozw?6!N2}s*m2hb
zj0_A6ovwR2LysJH-QlwgT=IjW8`QRc@sATy($;b?^0!=LU|?vj<zOmt>@MX2MK;*k
zy}l<p*`QhjAua=@l^2V-K{YZcxq+%X(J$a61xx+izC7JiLH=w$$O6#=vMwMXFzAK%
z7Dk3n7M1R;pjc{t!xQ$xatl~*KsPvLgog*bPzQ_fbngX4dq8mb3$ZOA@6QFLnW%u^
z7wj-Iz@gj<3Vn#TyQhMJCLk;@=*8n7|Nl21F?eYJsz=}Obhm;u2fR45nUNtHVsK}x
z2PoQJ?A*-A5Y;^wlAc_C{{J8RV%cVJa&iF0H8{S)UQ7n7+6vMV**z7cth*N^pT*EU
z7wiCVj0Qk_3#!QiyIVod3xcGA-l;48{{J5q91tED^ddb76znR!dqH9l9gu2MFPed&
zcPl~^WKO4v%8O;mAPoX9lmCI6VGu2#Xvkm?ugQ2ZeKR-&UxxnyOZU!2m;frXgI}aU
z^f&Ld05^C{pz#T69L1i1m<CaJmXm=YqI<6mC}1GsAX{D>`wpo#dqEO`FVxS0?BnU3
z3aZ|^B_Ikx2@Tv93hJ)r2>5@!7hL&*T>oPeNVxz+87LvVNIS>K@N(MU|Nkd|8bf<$
zfWjGE2zAe$0%{D+1=-UHb}hKxR0l;Os4-*(W-#-&Ko~6iEf(PB5hz82eDHz?WU}o4
z|Nqe|MkpWLp4RAg<>(Dy>2_f0bp6ro#L^wa(dqi9*Y!`Qi;6(6t3aoV3P-mqPiKe<
zPp69tORwvXP8O9HmKzx%t><2F%e;3#$U?Ar5}mPMK<aD%bk}n9MzD02{^%}XX+F-<
z%kmYZ2&DV+MMj3>?ku2C0(D~CIl7%$I*VA2Gs&#1%Q)sFz}Owk0kM~(Gem_2q$S}0
z|Nq^wU%E?wbk{<92jKD_)ITC@Uoz?TJ@`j~eV;F&`LDBxrP~>={|YFvubFiF7;xFA
z0g5nJp6*fsP(;RZbh>_k#a!*5-fD1U2wz}i=yd1kcKy&<%mR(b<ILd5a~5FiF8$FN
z%h6r?=eVl?IErJxbh`3%zKMO=4NB#`Wem{v6F9vPW8dQQ<k=^UVPAJBN4Kj$uNO<F
z6HB)%&v8d^B7`KoPDhSoP67<EhbKUrd7+(8iBk{FPv}%|X;N8ga!G!XLSBA}LUMjy
zNn&PRY6@t$t+=!RBBjR=23De%Tu{IOvltOR;bFneZ)CbdK`p#)UykNOEZtEoy@f2t
z89|}ld4qrb@nenx3<n=DGdpo~hl;fR?~G&V3}oqa<EY^7WwGiG<*{~RsdGEdqGH0t
z!0<xz47kSWJbc_mh39~LO$MkpZOp*H0P0FVlds8mk)8_XaC|VR14*(-EUe4ulu>!{
z{uHR-k^y%lCqQyNtUXFa_jR5o<i6u6*xl!k)qUXj6M@CI03@P8vE1nhivLbW4$uey
zT6~kB9$fzX=#J%pjM8*F^Ryl)VQZ)sU?|l%<}AR_?Z(m@#?tG}(&^07?Zg7I)rq6i
zkpna$0~(nDjX;2kH^q~T46o0<=0!<DjwL0jxdkN(CHV@8#l@NFc?$VusYN-71qGRT
z=?akagRg^usUNCGp**uBLm?$IEiJVuHLpY=Cp9m<B%>I;e*?{*;PMsh#UH%^ES<G~
zx;<EWoms5CS@>J$f!aw`EQ}?p(5gd51ypc@O6?bOLABQnP>CJ;1zKn~SFkXaUhOX8
zIQWpc+kvCk#?bOdv6tnCB6tGrILQb~i#!ZUH5uSk%HfBUIzb8XSQ7RG;CF(Nf$@ap
z5B}!D|NsA6ekfk^G6Pf}LQ}pz)L;j=!5*NIucZ?($|G|9yY|Qb|DB}zcg6{H|Hh*E
z_gW%$|Hd6h^=~<<f9;_LBm5hV#lPV4g`?Y*qxk?!=b=v558Vzd%|94ROuKzKx+7Uy
zZ`Ubz`+m6jt~-#Um**(B{=U)q4O%|k6=FQ)QTp@ljpid9;Bw(lcNE8Q*Eb+#pz%bI
z8G$UVmpU(0xE%b!V(I#(R;=^>K7|c+89Nmi7#Kb;ZGPSG-}TMwYrQO2L7KWlKXiL>
zFrKhHT)gJyy9sxNn-6nX9xnR+dJcGeve$|K^>+050y(~+LV)2o1E@qSVefX}X+2QN
z0?Sw@jxsX5{sb?tn%@vmKLbNOXgo8P1C*s9Ra^->IG2|Sf+{)iNaaiCql^r_WuT_~
ziwKbZr*QkaeK~@=Lsjm&@-!c0>2_qf>nhUi$#L^w=VAW!x19LbAL^C4d6&7D<=|b0
zo2PD^ym|V@shcP7_{!WobMMr>SN9&>Jb72*u5@(lVNiI6c0TQOeF2WLoZi?QcU^fp
zUC;EouIXe^xf{FSxa$${Fr@1VgZ8?N<E|H$sMTb2re1k*^%*0>UDpN2U2lN8Jl(D$
z-M%8t2UxlTS-L$~x*a$=L+^C@KIn9P((TI88Kc5;HwN6~I_|mwRC~WL1EoiZUWi>U
zOrC?Pf*f#^Hy@RN8@%PX>jqF08C0Mxc*Dp5E<Y^py7GWWJVoxte(3dJ0aan3w&ojX
zf#Le2+mWT)6V%W{G(1H>%}f^+o?h1vkVfa5P9GHkkhwdSK^mTD;StjtdjlRAh>$RY
zgv17QNJyN1%E$nBtw6W00FGeb>5Ng~fchU~KPX^WR9@I%goM^JP)NjpL!$E=uCSQ$
znvntO-sU&p_BJToSvn6Ld?n9#p*vLI;*U<(FQ9;dHox%&38-xi3JY*s{0k^Z<}QT<
z$pmnCYe2%gH-P1CEGRdFhKQiXLR<C7p&FvX0Wu;8Y6P?*gywIsc@cMAIlxUq1yFmi
zR0UN2$Le&~YTS)|ao1I#)Ah>T*avrACGN)F0GYJn_y7N(e$Im5|Nq~0z0nz~)9ret
zvsR-!_Dg4}N_Xv_?$RH3V<qmoKIn8+xEm{Q*Y(BSSdPv&v9B3H?guAsn{HQ?yRIDF
zAYD40u2;HC6(E)&Y^qV=x$F9((?kW7SYJH;^Z!36<u;T)ZvdGL6+QzM2H6p#!UA##
zi^_{_fBye(D81hR;?|0Q+~~@2H<qXQhz%$jUrzt?|39LA)9d=8`Ar2hWyO90r7{+k
z&e9*9pw=xczu7=inV=RVm8CvLN@X0NRvWg=)+wU`O<^ydurM&(ja|^|x(1p!K>>OG
zF*w(v^m%Y4Fyohu3=_cpA)?&t1aa>{sC&0QBGJ85u(?;B1ot+-Aj!QR5cd{pL&BGp
zRQH--b8r45;=}jyb4CW$6i!tOJ(F}Uh6%7{I=uaBcpKE$EoZTgXQ|<8J_2bZcYf;*
zW9fF|;9r0FF3W|^7!?-h<18w@+BF$>V^la^{9nY#08)SJ^*JQ-n%{u?L!ms~z8syk
ze?VnIEvO^bTL^0SA7=!W;NVt2(Jg-S16W$rmp~<%iwX<4#a|kUy@By}A81Gusml#6
z52)?F>H7(}?`i~g_r=o1ec$(Cao;WE@H55XzP)?t5q{wW-8VHHd-%y>aUVv137p`N
z`bv<N4Sc+ZH1#*%bv_Mlej@^E4@9u^27ua^;EsbAN9V1B517&VKX(}!4|?4=aqnR1
z*P91!{<{0%{)2f{T%{a$Z#EwhiH<#d_r_frl^1P47#Uu_1J|!0^TWGcIl_Xw3s?+q
z_g1iU{<QpDs|u~wKrJ3eXnwr;@b1I=59XEe-M#4yQdIK@RQeyjd*k&7ME(Yu7mVy!
z2~eX2>e$Y2VE5g82y$O^EM&eJTz|=sQy#pZhglvN9srL(+<XTK^}8a69GZXd*L}Zx
zBla+;yeA~z`Lx@Wqp_9;w0Nk5DfX~O>F?vN9H91h?CV3|`l9&_2dL){QgEC_1>D{{
z_W%EXQ0sZZgwP!z0gw|w#Zl{}IuU3<LfZ%Y>koRB{z4fq0r!W$fZCX#F7XdY<B6ve
zK611YWcaaeR{{R@@L?qul^2KhLI-$wprc8h#Vno9BHgY6$D9Qik2BjWtIOzgmgsgB
z>2#JssS+U}15b~H?AHVhBZdle9^+sC2{x?7qVmFtZ2M6<>}VXP#1zn|Pg!bFab|v=
zf_G7V9%QgbA+0DsR{_G-V?c<52Z2!fqrI+Qz)8xd)AdEK>xoVlmE*1tAkF+I0pM!!
z&0ix>wfN!1yIYJ5-L5>K>4sQPcdomX1C-!BSeg%mTlrxuouFX|(D>IeHvxv@Y~Vn3
z69EOPn?$#(M5mh!IKJFOK<$tJpqU^)iSAGy{`Cht-B>K0SW1N<PIzH_8`SLe0p}Rl
z$kO?pj0~NwN5JDshLCY3DQGGA+^{AC?D8|9PTmXFU_^P;T?*0x9%MT1dIp@_OjKSp
zgC-r1@*H;sYv^{p02(EBJph_q;rR6b|8dtdpl(LD?*Y*Cx!D6o21qIZ_m6OgR~RI`
zbWI@PweKcX!|VK?|Npz=AmMcwExed-VTRXy&=e_A;dM2TP<RD{CMmIp*NqS8;l*|z
z7G9wAiAa131)0g&ItnSN1tl2@HVOuMp#B@a^cMpO&x59r@XWix$N(CsbdvD^CnG0t
zGTH&^4;%ueOAiVD^%pxsk8~dDc0f@w_4oh(-L;?vF#PL}cNa-OqnCgEu})Wk?ofel
z*CVjyPA)1up#F~tXpo8J#hq9G|AR{BP@dxqpv2tmBmzn(Ad;usNdn9UMM$@kOm`@U
zN9%!3Cz%RZ8qU9g87JJ^L238^C=Dl=K+>=>_B8AmfD|X8ARQ=aSVZN;{;iA*%@}dA
z2b6|g-Xr3~bq^@B72O5RmlH_8Ns#b1G>3%uziZgS+vC^&|DE9Qu8`nge;r$RtN!}`
zzq=F?-p9J55aE58KzQf8q#(TiU&9RV*;|PX?~8tf!rLD-Pl`Rfue?PMZ>Bp$gm(rc
zyu~aa;oWx?65hTX-9aqSG}?TSrPKF7=Y@k0m_Z@UqVnPgXg=Qe2q^7&v2=$X==S9}
z?gXA>=mZVW^Bi*&U_8zUNv#5%jw0PoBAt#B-A)pnjxwN8(@q{0XhHZQ_x1n(&;s`m
zcx?`(z(q<_z863v6TaXi^!^RPlcC^bCVQKa0os#=*N^z}a~{OMY?cuJ&bva4e>te<
z-`ZDj|6aO+NGv$~`~Nk%e|2wR`WM_D_|YB910J6T4R5i4Mkj<oC5N*>r<+K(vq-0#
zM7J}j_Un%Q(fI*1GXDlL-WCpC(gPhFS4hh*f{wW><QJqCC4%O4Z1ot>$0H>`<AtF-
z-LV|qPArzrETy8IGAf{$eX;fhczhT<WOx`>ZO+())V*l1gcLfKNQKUeYu<>Y4{EEy
zCS>9^GNP?V0{72&I%QNqZGcdY&KebtUPqSRDi-jf(E^s^OeM?fGP)zd&4F^3&L|ep
zB%Y&4r;|XpqeQ2ZNVlU*r;|jtj7m3Xm1&I%Xk6wnN_zyf?va+}gBv?G-L*WR)=RiR
zx4T3qw6M?r`u~6D;cj;k{`EI{S?+>b5}=Z^V>74-xzZcP(iwZ^xa$Q*P|&%a0F4EM
zX2P5}dR<Q(X9M+OpxN-4>kUSb#`iD(|3A(K4iI;NPB(#WcM(u>aF^(GlW2yF1;Hl*
zq3vB*e;=#+&VRw`z89eQbtS`n{$#liU;ZwE<Zn$|NdDe;f#~)RB%DBj<O&WXP+L&~
zT*<qE2W2mR{{O!_OoV^^q3%!~w6+iXMMPGHCHlqdL6HV(`SBcpwiW$B@#dn!g4R~N
z>48Z6*xQQX>%jGFcPK}<>xJV?pqPfVH9<|p7n0XNt9hZ_76SEa6(oE-?I7VZ?>yDQ
zXY;53|GWJ}u(qY2pT`WJ=5@q|&rWwj;bXoQU-<mILVWl%K*A@(9uhuv=Rm_7JfJ3@
zFK7WrcPwan8dM{Kr#g=_gYp()!qZit(^&x2*8p|vBs!fT>BkwIekOnX|G&E!5<bT|
zol*K4$HD7sAXOhM{UomihYxsu5T1e}u&1EuZio;<Dn4PAti&38!E@^}cwz^U|9kQD
z$J!v_)8POKpSZJB3!mZ-|NnPaL&E1cTKFtKi<y3$*AO2*<*s<c=f^61;j`-!3E|TN
z37?yeknpiP18HA4$#e&ac)*JJj`y(kYk@@P!EOf`{`J>9Izx|i2a13S98mK)^*v~5
z4y65hxZ6ttRJlUiWBlt6cKaRy%|L@1Mm{P$ppt$msIvFv=?>-Sb`*isfygzUN2ilS
z>j8MbAp8twcz#|53Qtfgp9j`2NWz}lG+hv(*^RYduzV#XKz+gG6=Xmc)T;+~X<uYs
zBtAb*f`q50GbB9Uox&EL7Vlu;3F&`<f)o;*;9eRiJVoFA{}1YB`5u83;N4XcouHr#
zQDNa<e;gXJurOs&c@YZg1`r*d?58oqbMZ=I!}F#Sq3{e}fiFBIFAyJ|Ga%tP(FGEo
z^G-s;Qvw`P-A>@5>ctyacvgrY`d27Qj=n+ZUx`3Nkbga){*?_VU_qNhc#boG3eRpQ
z0Z=~zMDk$vZNdFn33$4le-bmCtyf@#b2j#LTj)qAoZl~lgfsSfcH=ol2GIOnFP`#o
z9wdA}x<bO&?gX~*?RX6f-vSZ-_18eXszcolDB+v>8YTZD!uKG7{_CCRi2f_d;R{+%
z(R>889=Z*hjCMsS7jT5HpaY@s?O%#7d;`yd(lOfjBDlRT0U8i-QQ=r9B2=Hzd_VzI
zN`eYM7L^w~Obp;fn&5dWhN9HuOg+$eWQw7JqXHNpiFxLwK|~pH^3x3s6jCx1(-rda
zi*i8<84{C<^%PQziWCeL+#pg42r*AAVulJ~TA6ueVG1bfFvScNK&rIR)WOA6QyB6}
za}|<u@{_ZRLF?w+z|P4@EJ{xWZ3zL1LxjQVs#1&c5y}+6V)<!lV83MMDS$LHB<JUq
zr52^9rhrU>V7ORba;ic}evY1kf&xQMVsQyP0HEq}6DvSFJQOlZQi~u$5Id0gAYq20
z)Eqt7h7(X28Y(DYh<WCvVTidE<wL|E>$Jeu!}TJGf%KMS=B6rWI0u9(6sIN^Yl7{~
z&CJWpEzMO(%}h_tD@)8NO;teapMv{WGTpJDQGWpsx0(!aS4#ji;^pU7lhNCJ1GGe*
zMWwSu1=N3Jd6DrEygmu6wzv5OL>8nx$*m>>uF45nm9qk<0q&y0Q--WW9z{t6R7n@I
zl0P4i>~aPV8M~<P%tKak6Gce{)RaxgO12>@Y3@L{_!zRP2`H*&AXME#R+WXKY6U{o
zJ7iTZP*qIspb!M@(uTT=)g38}&Y`F}fG|rES=9;@RVNUtbdgmxp{TlmQ00iMD&_+t
zL$@<a>jD1Og^b|xM*!?ZXA7wNLXlOUdxsqQpk*PTXwF1d68#=oi38M>T4W^_P$dwH
zB%n$rA}cwHq9g!h%TgqHP?K%ZdqxIO;_7YYU}RwEtbr^@a!~;%Ly(4@?ll=N&b))E
zlEAL&EJ)QdxGD|osvd$=HNaI_U|01Oq$&!o$^*M9PLG<57bb935l~gfk(@5;0iF$c
z!S@bSVMEpmK;|!Cs(PD$Kx%0oLy%f%Rs@C1t+$K}FCYH{txzdZ1C7sv2G&D4x;<F#
zItX-nv2=6XjS{%)pwY?I?ZI(3N~6<@quWE~u7gLXmrS>Z#N8;5PA`dW4~0%I1^#Uw
zCLLZT-5v&=UIzTzJZw6=Y`Q%xI=w8qJsdi{9J)P1I=w==Jpwwt0=hjS?m8rNdPQ`5
zWZaEPxa&~R>6Ov#QE@k_pwp|Oy91QT?lyq-4tI8e*xenV40U%FNaSwA1W@wq0*Q2Y
zfU?ltSr8ErySrl#0|Ud|h6P|XAa-{LC<EP{1roX20NPsL*##2m?l=NcISV2JVt03d
zGf@|a?Ct<f6?Jxj$nFkMwz=Ez0Bk0R-Q95otQRD5x8Va=93;}+0m?deXF)_j?CuUw
z0eH880TgjvAa-{LsL;DR3nX&40kojKvkN5B-2sZEyR#r7Aa-{LD6!scPyp)%vAa7!
z3G?nOkjUKz1F$$qq`L!@6z|RgiQH{)0E>e}x;sFL@9r#!2#DR?0ZM3h8v?*;!0cHd
z_T7dAMh1rN22cXKI}60_Yyz=k59g+qWaOtHS84Gj`8f=^i52mArMdB-s)`}0I383j
z!4;)2fP~{gRUSkFt}-n?wW!FD0Ze%^lx3Dd_)vx?LuMIN1j_JaNQ;Nm)(mO!&}y0?
zEgoDkGo-~sD`SSD<ovu8M?)y>$&i|v9-o_;$B>&?0<i$f@PvuDF_fhyL!_V#Pln`z
z(s)oU2wyf2TCeX5T5rkI9V^gm$#fjFk%*y$=Qy*eUrokwCeYYmb0r5;2~RiEah7Hq
zznTn(PNwEc37CivOhf@D5(yKrfQcl+L>you*)Wj+m`D{&BmySV3=_$KiFCn4DqtcL
zp&~m$SqLUL3nmE4KQO_?FhNijf(fpH34(G9OmHhq5R^$^g8N{Cpu7PSJOL8~WdoSt
z1(+ZxC%^=6!306s04DedCJ4$2Fu_+aK~QFZ34VeJf^q^(@Hb2llnr2lEdG!P+6l@D
zFhO3JASg4y1jS&2pgaH*l!pjL#~y~xf`Hr0p!L6Z9XLQMM`CKB3nvldgUxS1=LLYy
z=V0iJ{R7$@0b+y3jX;S9wnRc0q>)9X^YDwGHK0xmXhx`00Cdy>cxzHgQE4heT4GLd
zD#rXvw<||O1q(xo$Z=PW9f36&u`id`z=!dVyK?LetjT!&3X~fYOESw+K@IfMqGAvW
zwB7@}o})W}rS(#&@Nrj;pI`&hKn8$!VI6nnU=FIuc>NmT-`-Xc&<6hfAlHWlH@^A9
zz`)QuR|2#OBSwXzyA-s|3Opln0JK(eF9&FO1X#;XkPgtAO2gZru77VUNUF1!2c*+Q
zh2=Pl3Mg~ExLM7}&}_%ldAvlk(?n%ANYjf@h#DSH=z)gmL7@ktJ8e{6%mk^g<6!D_
z<0w%C)o2<2{{QcEQ30>Gbw*a14^}C`)axbzQ5lCzr7Kva0#mP>0z{<<E|t<?l@?6B
zZWa)gS-4bwtYTznu5)1Ob#s8IJOJ9PkIkLO!72lodffsbD!1WMITx%lf~nUn0-`bp
zm&#(W$_%Dnw+x6%CtNB$!73}5dfh4@DkX5Kln1HY2QFHA+dvdV{R>dMWAoShN=Am}
zec)23w+%!=)bGHhem__}xIpS{15pt59k|r@gVlq}s@^sb1yNstOMN_8J-8U_Z39sd
z^&Ys?>x0#UOSs-P5Cu^$flK}W3Xp%ng<o$Qh=Qnp0b0L+Equ;{)q~5$-Zl^gQ9lEh
z`uSk>;3BiP4MaiIXW&ww4^|H@O?%rw6hyrRF7@_c_27cGw+%!=)N|lc&kt4)E`xj9
zKoms%4bb`lZ2rAp4hkP|@!Z=6q9E#5;8MRHtlol=fq|*F4MaiISKv}#4^|H@)O*`N
z6hu9EJp(rP_=DAh%lqCo5LE)|cD|56G9S4(Q7C6*XgmTc{yKkv*Dcv9FmN#_*rcSU
zC6?xt*ny6cK$;)Q!Lr_J31s|gQzT^kst&Zb9W)xIbDYU!MO{YoAxL2wdZbeXG=~qK
zf6BZB?lFPl1H3pZRN%Pl88%P@)I|ln@+w3{pgR;aVh!3P0UF6>EdVw3SX5rv<uQQQ
z)3|bUPAFkyU|_9aWMJ5(v%D^&)Aayogl7UspxYH>B4~d+|M~-<lDgX!vWm-<gS7@~
z(v)MMaW8@WCClnEc7qH6txG7C=ya0kbdu5h02*U--2qxi<GZ7C7s$}YLo+~HXMo6V
zSAovZJ;z<ofHo_GmV$xz1H*=ySm%HgvZ%Z;fY{L;x(76a?7E{9yygb9{O}NH6=7%S
z7Kqa)fOy@mpg}v(hHki{!7F;YT{&3yKn=Wq6y#`;?$9j|cXo$z>;QS7vk7EE<DnZM
zb)g%&Lpi#eK*4j|^$e&+f((Cwmmb+(|Np<!bxn6D$9}M<T?M*J*L3azX#}k;0{cS)
zq`vb4>m873EGjQDLAHXH9Bt?fkmwFw(-|Ps?aFbi;RmQ@19fI0i_~6R6k}k3uFX&b
zEj&2_+YQ6h?Rus=^g{Cw#?H_cC2q|>m`c)`e=wI+H2+}XZ<zwxF871AR2;mY2|6&`
z?YaU~6Xxv%EyD+OU>HE*0CFZsxZD_Y-~`8Rkl(vQIaooy@0<lD!P5qyn)QW|F#`j9
zwHya4DBeJNts#1M!t{dTwzCUNBJ_SULeUFLe)>5K3@@WVXX_yE*X@Ol?_$dzTOj%4
zQVb-2#BG8!ja>2N56|;t=MTATYUPiT!=R)_+x#H_v4eW~WB(zLqbbQBvR6pYAD$pv
ziO3%th2i;wZ6j!$gYx|0w+(Cl2sa=ie+U_%q;XjOkcQ~RpFghYqv(a@5B^M2^T!cL
z{`eFR$scy>iO3(I{o1g0G<d8BRN50)fBZ|QR{jV%07`1K%^x53gYBSR{+JIokdplI
z_X6qp<0QydBJ#&X0eJp+ww5~iLvJ(I{9&$3ME>}sgObK!`Qx_^STFwku?<x(EPuRD
zB{hFsf#eUNWJvyyTSG+t;5-SbKR~r0iTUGR3bpcw$zE{UrD^->!XB_4)XN|BU;`=1
zA9v4^o<CNCY$YOp6!OCJ$1%_f6e_f@_%>k8AL3fzG>*T0bx9Lz{<y6P){8%XOheTR
z%OB^Hu;!0Y$o_>K{%x*0ouMxfyFH$?*JX6L9)~nKkGsAxOM_&S?<+vd)If)U9%q1d
zL-@D39`6hVZI=MGZeM&o2FW9!CM@ne0_r?q^g(td;?5&`Na}+K>;k7><UF#c8?6tr
z1>6VOf};<zgJ2(I%}%f#-Jv_ceUL2}eUJ?#_Ccb-28witZot<E0rfC&^+9%?0_Bkv
zD1DF>1o|LPcR<$TxUK>BK~~`EgZOg6^T?v*xayE4B~G9|ND`<IQUdOSfF@s>f3TJc
zPk{G7mVi17@77?=AK%r$X&it4*rbLvf9!_n#h*XQQ1!y{$NG5E^2Zmn{1KK3$sgC3
z63QP}50jlgX2nq}e|*>mPP;VCA3YE|sFy#i!3I*2KV}{$J%1eCN?iWXWrydFrX`f;
zk8>-r=8x;jMC6Z2%2@NqY=~a``6CQfFD!rb$B>pkSUOPakFp#{{@A{VQ2y9@0FpoO
zx3RF+A63!R${!at(>{OXK<uDi{*VS6NJ;*vJVJW@a0S^4YGV<oKX_T-`6Fo|<@saX
zGOYPyy8;pUqeua3{-}oN#h*XSQ1!y{M}8z}`9lOPe@x4V<d5m|3FVKed&$lpQ4!S2
z9~(B%K7aT??4Vx$_`M$FXiD-&<U!K&hbqV$MC6aRpt(};p6eG*^C-_BeT%W?kLj{R
z<c}a(tob7vq8ESu5JS}q%OCz>Sn~(?d@0C0ai{B^Ue`I`LGLY)E$2H_IzT5&9cU^A
z<&7gRs^@^bbOJKE4(@`uE&xq?fM*4ulL+8*iq3ShsC0(5yzpA{|9`h{3uw2Q>w|7b
znd7btK=*rex<2W3od7v-v;#C73?Be@Q2}k>0(E0RLeP=x7sj3p40l~Sz_Z%>z}=cq
zj=Qr!lWKQeCv@%tE%WKz1X|Q{cNS>o476>8fq~(LPaSAEbVIN2iDRwx|NsAI?DT;w
zEOT7|8d7@^vyXuRBE!(_+5kF%rST7F-5iSw=yDRMTVJq&Old6v&6J079BVBG8Pweb
z+IV)?$)J1E3D8UeXl?<l<Zg@#=;&0?shP)J7l5W|UTm8UvIV4#0dznbSQ%&vrjY@(
zT=xWIfZs)hqxm2Q$bH>SVDa9Z|DgSjkl<obd9h$M14B1h5Tw^fg$1gPMdiiQwJ@pX
zN)|@`mah;$fEO}A!uy32XaPfO3d9eFw>w)CK+Il{Kxb<Vi0#VJIoAfnm;|!^IHSyp
zx{U4yP;eNY?Cb>{B-}YQ<p2NwhL<{9BR~hy9uVp71u;5XeL&hABs!-CfMyR^96DP)
zKq8Fbt*xNzPZ+ux{$F4`U<nql;pqnJXs(dptmg*JYcO=Sf^;_Q1(6K=EuiQ;&Z1%f
zS`+6A*8ifZhLNGO)dghiRFI|MlyIySbWZ?d=U$MzK~rg<UQGozBLhT&p&P8>IE#t}
z0|P_%RFF51yDk9DLUlT^ywC?5sRA;x7v!;SM~>sJ3qXkrocdZpG9UxPO&J-wdqF&i
z5#8Xh11+=z2j6jq5Ku^ka&&gFFo7~HI72{s?JrhKf@)k)mU{7FCTu<uJR5nOMI{8u
ze~YR?{sSH73rXJKAU@V=4o+)RLE@cT!ExZC!UEdDvFQ{jO@X8tx?4fgFGWGgg+)aK
zl<q^orhyJa><;DV?gcX-sS1=%n?R8Yi5t)qAIP^a4kds>2&@n^{Rr~OOT+*F|2OOf
z<r{`l9q9ZOXptUl9_*Y1+`HXVD?n>NL{whPoCg}jYv>eF=`CY;AzjAE@cLxKUU1?s
zInX^7l#5<J+Q8Uypkx!oVVyiGudhSb<8;pj`LVkfWLWF%&R(7W|Nob8HtYravoyH7
z7ZlOmQ$fP5Cp)KVK&3&cfT2{SyA>qR*$UDPvVp$^oG`(uzLQ1eWga-HL1_qdibO*x
zBg5-6kiY{)a{-7y7jz=C>w@mkC7}5{u&4N2(m<*G2UE%F<{!-bEe>EF3xA6mn8C{5
zaszZO^$#}wmb?G{{|8xI(g;Z}AZsK`85zJfqb=nJbCJ&L1l`J1oS##cs-dX>z7GI=
z4?uoia;hGKdum>4QDRPTWlmXYaY<?s_|y;vhAJ2E{59x&z{WQ{pebf>`F-3KR(P91
z3U8+haN!N|<nC#p*x_i{1)kpIZ!LwC6re<Z98!|Mun1sac##Y`?b&q-DD{9-3vBjv
z0_gNW=>FXOstn-rtaL&*xFqWiVCilIP0V(hfVV$`=B8gn>47V|?g<k>rR1^h4p6b#
zdAPd)tT04{r|~d&Ce}v<G?y*_$u^*)vtB5G1`gXm39;ArM7KaENX3Wd10ZEA-C%K8
zZe>yFcH;Pdp}P%~uDeUYZZuH=C+pivpyn3nNH$1m*&V=x>Beok3=A&{H-JKBN_Q!T
z=7j)op>&%?rTGZU4O5-6nvBji(2C2u^D-de1?m{R;P(e5{}bSy{l1_|>sTWwR6%=<
zVPWaB7PP?~oc%ve1!aFwEWxrr_;}u~5>O2_1GK{VLn&l0co3*qa8Y3q2iXgnwFT$7
z7YBI33%bF_^mdnmbU+WF0GBtQJ??hJpbaGw$6X<Aa$R!V6|A+>wFeTeFZQefS1F(x
zyF0W8RF1rwg=L!wIBkLmXUL^tptPBsk(!*Xke{beTv=R_nyaHwo{^cHp^#Y&KI#~p
za#Iv4Q%lhI$3xDqY<vScBec_XO|NUuan~h~#>EO7aQfU3Py<SzTRK@(UPw;?#R5Ei
zw%h}isE}idj=N3(x%<ToUvRL4n;@Yau!PwHI`YFyqO-LIR1Wzz@UK77d7=|skbsVA
zU{QGyPznm^8<3K!8?5fQ>lIMS@Ahrz4870^IS$kJLAP%Ucs~8O>lx6d^6mhM?gG#X
z3s4kmemdrQ2h@r{)bSHQix6IXQUND4P*MdiPUz$TB|whO3$WUq<%PdCC@Zw|hMs_I
zeFUvb1TXObr_?}kkhj2h6m<Kx^oH)}c9iLklz`n~5Te4vzaDgkGpNL7fJ_j6*niv=
zl&wHF9Dw!&xgP0tJp&5GQc$BSlmm2m0gp=KA@G7_aLM~3TZDn(?p#PQ-vUw^CBndP
zXD>(qoaRC86R^t8Mv$(?gP?`Xpu_{N>h4B?HVM2?69yRqs)f5lTR@3OR2XCkNB~?d
zg9dfM>U%@abnXC|z-j=>{jH!{_HHEj4y#G){{O!_7u-zn<!C$zE(3aDMRV!8|Nrmo
z1xZ3G!%&WHu-;zZGo712Ml~J+FPNSRDvR$%aDd9$h3i2Ef@(rYtq<~C?|P6qATjVd
zMX={UT0p@x6J$c;LD16b&R&!M|Nlchw-W3yP({)`73>}nl^0XN?g5K|m3F&w+>PXb
zEST&7nQ$C>m(?FHcqD=X4U~ByiFUCds2$J)a@327pn?FD9Z(8_#sX0C>;N^sT~v4`
zR6xpt9Hg?~xGQKNm*K^BPNagswF9)~33NgPG=G4sFwF;@i&3J+(0o*)xpo3$cj%PP
zsh|c-2|M)e1E^ULN4{Vc1UVb*QbfgdVH)^6*IwxQ59oPRi0KIzaOQpUpca&QKY*-_
zn*h$dki}8mlR%|$>m~ly_n^j?D@XSPP`eT&09u;|N+T0Mg?sCz63K2R$O0;GW^`cr
ze*tzrB6Nuls3!nh9TO=4%0;+W$ADUQFGK`D9s)050_la#ZpuRRf`?o|D{H{L3-J0U
zP_Vn60k_s~@PqY&`UfDru-=oPCnyF%=W)GIn*iz?LN*3sIQ^v(sFi`@A&&nSUj7EH
zJN?#t6nVAKkrEHkNPPxqq`nF~Qa=s4T1XPw9)ge89|480-BeKL3uC>IJ3lx?_QBTt
zfHHFDCNK#~fME46m>|9aRa_un!9s)^q8ERE@)#dDL|}ShA@biHdw&u#pM{ZLLLliy
zpaGs<^!n(KUNrf@p@VZa1Dsx-fa+Grf;Z&QdCLpdi$A@rfapa}FAv?|>E&DRz@!(x
z$yn2iIK)@@)5|3ulsJc_m)ktx5W$~brlIPErI+)rB&C-WNO}oqf~S{%-B{DhU-a??
zbd?X;<;zcQun+O4mo41j&;ixO$mwM-L@)mIQUTG6o?bS(fEy5?>hxI#Bdm+HyBm>o
zddnCvOB>K)e^gOWY4i5q|No%#F)1r=&P~9Yey($YLkNHRnZyMSAy}CKOFy$Adhw^9
zFjT#;^waMQO+TIA794v0&)Z{*<=HbJ@Wmd~R>g+F`#-?vGr5A!XFAU80$NN98lZ9p
z4bZ&ESppjB73g%f0H0H01G|S3R{s#vuS1M}P&=<Xz~(pu$nw@prCgx1HX-}}z%lnf
zfaUcY2p?=8$?8GpPsMU{2irjW*Ltax4{=ic%rr(wvH@B10_HKq`6i8Tey}otw!VOF
z1)2+5Ox-O2>VJWnn72VPEGqwlI6&7h*n5GFHv#W=aRZ%ZsakBMn!*J=iLn=U9}xI{
zHc&SQbRJf%KzFbWsLJmH<xyvg-mRd%IjF_5qNOGS)K3H*`R>dD?ka-LNACOx2?(hB
zx*3}fvh+^)|L@<w?-vvgH9l%+XlN*T`TY=R>tQL|!B+y!2bmZyb^dO?$*lQN^K^v_
z_~0v7@F^hmi$D!6kW)HufSX!|2Mlj_wCIDJ@cKIF#4IMzfmxs-w@wk2{{bAG$6tcl
zuvpLcautAVp$3hqF@T&4YH)+EzF>I)y2|M|Gt0`l4A4DshaEbh;(VZqHpt;$i2XU>
z^U3~n<1^3g@BjbU%-gpR9s!Oe3gF<kQZ42JT|@v4FYtL)y<0o}{{J7`_@;*moKd@L
z1$qM<Izj8s11y>kfCC$Jxf3WFG~2+@@S=GkBSYuM2^57l|3YwhgT^$W;eE;QcE=Qb
zkZWFF2WL;P`+}R_=yZq5bjM0`yK?Zazjd4e)R*f#2I||perP_%f^^u|>~v5O1ZpfZ
zbcb>ra}!|fjN<4H{Qy1M3v|LB==cnY;|?sKz8ZM>gbaB3goLH*8~)zOpmZ0?16rvc
zdZY83;ce?!nc5;y<q#^+?fa(NL88<3LAUE0#zUQ<cfd<!K6E=sbO*734xxAb&>8xo
zJM>1k14nliOLq|mXw({VkuEg6yF*2~U0*QX;$I(n#hHKoLFUjq{OhmZWx3WJ`sA+6
zp>Ed)j0de_WooYfcYV|C3U*QtDET!X(E+DOlEb4rZCHngA81nsIHh1GAm{Tz?gCXv
z$;?g71D&&53_htZw=}0DvmhrkIk6-&KMy`=2Dx$*JYohu|G3xn1GtD<10FAX((4Lp
zS|4}40~wNdPy%jsyfEknwL0Fs=xzo#Il6rXjx&K$Dd>21N14vh8K6V3yg)-OpfL&X
zAw(RVu2Y&1a)3q~d?$dK>-SR_89EPl`%VBSw<*w@r#d4!x_x;%12~{bw%c_^cc4VK
zufQ<}0Y=aQs{jd5&)=7$(@_R=NwA|tw=a*SqYQuRR*;KB=XCpW+<eg;%5yh%MYp5O
z&3E0t0(WC~bh<9+c9Q9IT>?D@)pY}S%4G|P8z=zYKf=@P0V>&bdR;*?_XfSLJ33ud
zG<sdPbh@ah^tx{7bWxG%bzRZvq9W4kx&$&evj8+V1DX>GQBmmhQ2`y{1v*HAg`u-1
z1JvmSQLdl~5QY~H&Y)HcC^TQNHiJq6PzZxlIcPQpbQRUSL{JyE2Q=2D0Mh89!XXds
z-}-cdx5yuN1@#RXUR?S0|39b#0$oYf9SYI`9qR&H1!^M&B``98?%xoAY5|Aw8BpmK
z3hG0@V44LQ={f<5oo?R_&;S8L2edznH~y=j@!t!L|3+N#@5|90%F}$1qdQ8X(|5vg
zSFly!6Mv?Fk^qa!i~C6<EB+l3@!yC&{^N;`{~rY7KaN2B&%lWPHgNny?gN6<IiTdi
zqVnR}bjbPV;PL^B{5CXsNPDZ-ndLY$s7wIm^~oS5u^f>0<4e_8==ckKe7^Zj4)jV9
zP?sEbjYtDHv0d2E2TE*LUdYvh3imnCHnZWSoA0axB<{v8sI35vT!qd7l?#Oe2Olwm
zGG(`;1mh>roEPj09`M8|_(qnn1t7nJ@AByly#dNCDhok(vn;rI5_AOq-JA2uZ0^P`
z`0qNW+m!=)0ZDi09P0pynrYC12Wb5Uz5d6v9(;2~GjvVv-5akDLz-#0t|yt&!U((n
z1~UGO-T!S+|Mx@vUx(>`85I9ZbXS5-t^seZ<6nOP6b`+vAU_{`#LV~$DKuUL%|{Od
zg#~C~V1YFZWNIcM&Oe3uzYg91#|ikq8T+U@==|;C(j;gFR*;jJoSK`OSE2(uItZys
zORY#wO-)HnK_5>CpXXx(YQ2I^x03)};1&C!+f{(^Mt78i<&DnRH}$;Tl``F~B8)$*
zon#Of0V>2Gojd!WA2PlOyJ`(o{=SI&ipX`K#vy1_5!CR176pnI&}2J9x9bN>*BAV~
zy`X`rL*N<f&>Nk;SD?wp@V4de+RSd(7vR(7UN9c&cD>OVdI8*qVgcVX`UG?dPw0d0
z&@0^zkS5g~P)8M--ayv~guY?C!N2~Hb9d+k#tYq{Prygi-Qiz<5!|eL0B%-&U_5B~
zyXNA5*B9NfA1q^E)U-824{(J#1Zp0*KUD#`#>iIyd?fG>&<6P0Ki$qU){YXT9Nl3O
z*1-}b9<UnfPZUxZ!Rn|eq&n(_)fenxbSM&39(C8rSXauFZfL#4-`B*zz|eZ2uCCMd
zOt+`N%@?3E_?#uWqXjxcZ*;oe>2-b68TzI>40PS9L9gorNL_pfQWxKV)Wx6#E&>{?
z24Bp20+QU1bk?4@8+zex?1Rn_6`f8W6@|_itQGT%b=IK%!WYnee9#+I;pI`|8_=*I
zmh~Pz;4FDScnT;>9(mDS1*!i)dpmioog_+Gt({~_;$Y!*2ITA30?^E}iwX}cz;clS
z3_P$3o`rhxA9Rqviwa}{YbsO|v|fkIVTq``sEUACSR~Q<jlb_DI1Ksw9)e7S%ujY+
z0F~OHE<9wR&dW~F+E7rFDE7+T*oJN=iJR~4#!l#jtg>*DflLR3+D70hpKd46`S6{t
z9bg7Wr)v+05hT#*Is?@F_YeRDYOm{zP8Sse$O;vWUe_K-tbi7($n?54fLlml)4+`+
z@O(2kZoqcpi4o|8<qJ_OP=*5g89D+VJP|%oc%l+id4i$`+;{>PvETsg4qXCK-8nVq
z|Ns9l<R^lPIIt<*tsoIlMI=>^aXu$xei&pRmiV3oiSMsdA@M!C0uubbpyTwd9c4<{
zy8|UG4<TawRyb&#0yOgAG2RG@9~TuCP%(lO<GddcnWY<7jCX`FGJx{SeUKTDIELO%
zh=^pC4$vwhP$Yxey$#)tD3R<4i)2UW{2wSvL5<!Ha2vR%8`Orr0*&Day2P-t1$qn@
z_QPZN8F*(pC_)Itux&pghQTX;K<!wIT1JKt=%@?f{5%5^zxSs@;&*o$B7SAC#qY0B
zZ1Fo46gQahs|&i;fKZNJ5yA*wCQvES`k%k=F(^l0;_tf+G7%EnohMLpw0IjVNBi=C
za&+t!aHfXlXh#Wf?gsUukux<YM>|S%dkP?OG^k{Bok3Y%29>Z#rK`p?q;3y*sn82g
zGxV5l?}f+opHd?8a&Rw}nD(oN9~6VA&miq7oaOgCNPM5135oC1C6M?AmwK4xH%|z*
z*j@>W8_d|Y2VJT_D7JS6F*39s;O~11G6NF77`fT31r)(NH(zx7LW*oqFE*3|9Iv4D
zL7=JpP###pjg+TDIY80uB!P%yNU2S`JPnR;$fB?p@h0doJ+~Vk(?TUg#&l*kBBtS`
zc1k6ry-a9)!zVSZ#8VIDJ~{&FVF@HXe3=bN54(#%=>c@P6S$0&=)9<Tu(KCbobz{x
zGJ+Z`{C(e{SrjyH3th;95rxG~paK~bg`jvtFOcE2F1$c?lt76&a9sc{kU0)MV(#`3
z=yturcoEcG<mrw8E%ni%G~4286v3+CNk-_Ad7%>?nXW}BkqK+<+zSBZ7EnzK8p2?h
z1!+R>1EqA#+#>i2x$c8%LT~N#_(NChpjYsq1sN~wIuS_)yoL`{{9Be|?^=Kd%!o=q
zAw`LKpqrl|=Lr%>KdT_=$7CKP{ZtoFC;b>V48in+To?oypr@Y+?eO#iI?<)^2)u%a
zrJs3z$mz#n4kZ0t#-4sIJ|`mm`1s;WKmXdWq@SN96s8|N)cJ<SH=v`XK=;Lla&(u1
zZmtB~7waa`9VgRyQ1fP|@16?wZZ8ST6D9B)zo+>k^|Bh~L4x5GQZT%@@(kg5<eq4Z
z4<kc&?H=n|p3+U-wIbI35~ZuUy=1KYWl9%;YMpM-5UJ~tn=d+DL47RHB|E++y1fKI
zo2Wq}@FJkWlh`xe5dyugZ|=rkV7ztnU3VPmT`*AR%ST106ErG{)I2~M6@6i-ht~N5
zb#vkEHSl-{#$x*okjyq=0VK2W<$}@}bg{hvv?zwRmB1^#Ue|!CQUQ=hT_1qjLm{AR
zjKM7v&}4-xxX%chs&WC{h6`T3<?#=mDj?m77i@3gDc3s}G~Wz4x}&!Yw0;P>h7i&D
z2%YibD){ChNYBG{2B_PyxCq?sfRsN-qZmk6=s?HkE78(V^P3D%{~SC&3rab@0-#GA
zOMi4buvj}wlyY|m%k&nqSO>Bo(odK-Qu;Zt0Fr)~K`S$%#qf(MPq3#S881-lq%ObH
z^+dNH2RNB@M+<bjv2=!>=?>@UbiLE<&I0XRyS@Q+(ZM6+pw78MuPdl?E(02G0*{b`
zI_Er)&N*mhU}uPmN+)Q9JVphSo<Qg2fs(@uMIH2X06w`7K3|H{{{bx4!7`=X-Odsq
z|2rc4-wTWXLA5t1tAM&-FQz=k;eSth`X5wYzEIRA)Bkwl-xG`f)luUA5f1-*fc;;E
zH~x>if)0aYIPQ9df#JjcP7>1rsA#~E6vVX9f&z4YJ~{F4fyMupDE@zl!~gCB<bQBd
z5Yt5WKe*9?L_o@qywcpH)FOraG==2+9LVHeQD%BZi9&W!ex3rN9O?WPx&t(A*ZCAY
zqX(*QA)Uk>+dAqpApM74*B6jA!M)&JF5tn5hJxjw0=DJF+H`1Z23&wbwg&A0O&LM9
z$Gmvk1u9)Rtes@|Thl?O?}qa12T2=#1GSz*1v>YFcF}-V19*Yf@Is1H(A4^i<nI6f
zJGX+?yLS6>7#^^8l;H0LwWqsbOIf?41UfGse8AitB*S<Eq@_DhVkc-V8pNO#p!*L&
zTc~<LHoOR_1~->Ls|EtWHzNpuCh9`KJB>JcLpwS}RCa-uA%iq`P6cau*aIrmPxShN
zjv50k24ny)bO7&NdEqh{v<;7^H}piWZwJ^ai05BOgO>?*fY!A4x`HOsc7TnA=&Gv&
z83{HI>{5v6jJp5-|AUw3f@Uee43Kww1VN*MkfrFot|#_^!VTo1tzg#~gN%a3$cw9K
zSlioquAuf3Xh}vVi;Cd^NTh(9-b*26z7KMmUvLkR=DWe$XF$avcnq6G1vys5UEtkn
z&~6W~FS@6Kc0z&oe1P^Kl>{~aU@A3+uB7jEJpqn(Bv-sBs{Q{T68+uaT~DA{mU-Er
z`Wh+lU~YclQVR<?xKLv4|NpP&p|8imk)99WPtOjkAnEyT3jXvg3mQfXMM=-#crm;U
zP0!%S!IqvUcl`g~ITv4g_7XVwfSK_`=f&<I(6xp<-GQLVVir(3Wl`AyPA?%U9FRDC
z(NaMmJ-eu|KvJHF3RH_=7bpmEr00?eIMVZNcF;03Sd{DsCuSBENW{HZR}C_9#cr_U
zSX4Uaf|KTnYGTrJCu*8X1{noU&#Wof(la;>y_o4lAW=slC+gF;aVBa=*~6mp!W}g6
z3R#vybb2;C3CfF*!ex2Y|NrnrybGL9Aw|f!3|#5CqzW8zhTlM@fD_G&iB;IrGq`AO
zej@-X8bSp?caS<t^hR=YSF?bo?_59hvWS7MfGy^@%W|ySmFMOG#zQwB@~^+%D{}2F
z)6D}nAKpB5_tpIepef6$?pT4F@47u@?n*g#`o6I|eeYwfRk!a4{`IFjzd^^xz(zRt
zih!;>=3jrE@kFo4wNBS3{Ogb3;W^gr`hoG_9WCqFH+Q9Ku6Fy1fCl_y1)2}CfNo9p
z<ltX_h=2X%UY3J*crM;$xcBg`MDq~=@CfbA12+%dJbCjW1mAjj|G_-|Hqi2hZr2Yt
z-+|`3N_ik&>W=2<_LS*m5$p7Q0rFU>fZJV}!=UN8L;UNnTb{csa{1oRTF=g(o%g$A
zKk%==hdN)??JD5bD+0RUg@64;#v7m}yvTL_^#|`V^|Bnl%Wzld#;JQR?@EAta@e}`
zMa_ATFG4|6TOeOJvUG!dae;sR;a-u8AUy}~GTb?JSL&rcXn(_vyEk5H{RiD7fPB6q
zcs@}8w0t5Kbdz*%0Y`TQ$N}A9pu3<tT|a<l<GSNG?y`XVaq|HG`r|hrcDlY{Ji)*I
zP%qEnyNsyulzsEv&6D>&-IX*vY3<8XtJCfJrt?~N?T1d+7ZZ9}EW1Nr@UK61^8n*1
z{`J@H@Emru_T}jnxqL_Ku2jtfkas{U<9I;c350kDSEPXYQ&=Nr7HG|vFDR{mF6HFm
zUw^)rg{wP^rMnCi#dl>u35|dKk6spQ!`uAp4_U|Z+!Z-??`N%5XYG^D>yU|EXnN{p
z;Req@9tSP)y6$Wp%hStp>@EW&b)JMpN6ih8yFr$L6BF)eu!ThfXiG{_etEI2YKjiH
zkz)&5Nm-O%uArJ?#l@g%re~ZEI;|GAK1`;&mZRGpya}n>UE(;4%A2({8KBDk#VQ3*
z9tG`uW-vTp?JiNn(|iPa!$gT1!*Ldse`{+px?Mkj5A|kwQLO;Fb6%#_w6~lCw4OLz
zqVt9`I1?S}4r2jFX?GaMU6w<~Syb59)nwd_QDJ%E2GLY=@i>bL-@2NN7p4k~4F6p}
zbh~~4**NQU53Cx4wBMl9+eqEOOn9>mx;zVXD^YPtQE4*hPSyN0h2p}}#G+K_G&pF=
z8&aNu`^#UN-$cL<=k1LB(pmbWv-S^SBg!doulddE^`J`d!;2fSpb!CHt_Er^g@QH=
za)7$P&~1x9Zi4Cxj?P2J8NfRx9Aqq=BuXV9jkgzGacFH+*x=1W8_?nv$PJe3AkB~U
zNF_D6VF_x1GQ1GKhE!&Uf^<NK{my{)w}2W7Q>{V6Hdt>vkGc!$okLxJ0MxbiNCqt?
zAt5|2K*Hnq21t0Eh`}EoFK*xq535)l;c?NL*zjP#N+>*9t#F2i*B$imut-7+j~C(l
zLA`*meb+kbGJ+vH4R;%Ct;v9FOz&+4Z5IYrRC~euxweA#m37VqHS;=`f?6~$mPLb`
zO*_F=A7rPyh{}r#MW8l{KzE=_>!s2(=rWnk6WxI<%?DU|V{deOuz=Q#I)JVi<^U}&
zfbAayt)2!o55VUfw1PG?zYqaUl)2sjT~!Kq&WroepjHBCZ7aBv0hMQ<WgU((ou@%7
z0zE<3AM$`!>A{;CAhS9_ttcNAmKO~5|Nnzplc0TFh6k*jMfiK-!F?1C!;>I!h5!Hm
zTYE|H_kw!HpsH>zNCZ@9^nzQ*ASZ%0A#}!onq?rPU*tA}`#TW*GGP5O{Jl#-<>_1y
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
QtShW*tQ$b369cUQ0G;M_g#Z8m

literal 0
HcmV?d00001

diff --git a/tags/v_3.062/matlab/get_posterior_parameters.m b/tags/v_3.062/matlab/get_posterior_parameters.m
new file mode 100644
index 0000000000..1f51ce6983
--- /dev/null
+++ b/tags/v_3.062/matlab/get_posterior_parameters.m
@@ -0,0 +1,56 @@
+function xparam=get_posterior_parameters(type)
+  global estim_params_ oo_ Sigma_e_ lgx_ options_
+  
+  nvx = estim_params_.nvx;
+  nvn = estim_params_.nvn;
+  ncx = estim_params_.ncx;
+  ncn = estim_params_.ncn;
+  np  = estim_params_.np;
+  
+  xparam = zeros(nvx+nvn+ncx+ncn+np,1);
+  
+  m = 1;
+  for i=1:nvx
+    k1 = estim_params_.var_exo(i,1);
+    name1 = deblank(lgx_(k1,:));
+    xparam(m) = eval(['oo_.' type '.shocks_std.' name1]);
+    Sigma_e_(k1,k1) = xparam(m)^2;
+    m = m+1;
+  end
+  
+  for i=1:nvn
+    k1 = estim_params_.var_endo(i,1);
+    name1 = deblank(options_.varobs(k1,:));
+    xparam(m) = eval(['oo_.' type '.measurement_errors_std.' name1]);
+    m = m+1;
+  end
+  
+  for i=1:ncx
+    k1 = estim_params_.var_exo(i,1);
+    k2 = estim_params_.var_exo(i,1);
+    name1 = deblank(lgx_(k1,:));
+    name2 = deblank(lgx_(k2,:));
+    xparam(m) = eval(['oo_.' type '.shocks_corr.' name1 '_' name2]);
+    Sigma_e_(k1,k2) = xparam(m);
+    Sigma_e_(k2,k1) = xparam(m);
+    m = m+1;
+  end
+  
+  for i=1:ncn
+    k1 = estim_params_.var_endo(i,1);
+    k2 = estim_params_.var_endo(i,1);
+    name1 = deblank(options_.varobs(k1,:));
+    name2 = deblank(options_.varobs(k2,:));
+    xparam(m) = eval(['oo_.' type '.measurement_errors_corr.' name1 '_' name2]);
+    m = m+1;
+  end
+
+  for i=1:np
+    name1 = deblank(estim_params_.param_names(i,:));
+    xparam(m) = eval(['oo_.' type '.parameters.' name1]);
+    assignin('base',name1,xparam(m));
+    m = m+1;
+  end
+  
+
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/get_the_name.m b/tags/v_3.062/matlab/get_the_name.m
new file mode 100644
index 0000000000..df70a381f8
--- /dev/null
+++ b/tags/v_3.062/matlab/get_the_name.m
@@ -0,0 +1,59 @@
+function [nam,texnam] = get_the_name(k,TeX)
+% stephane.adjemian@cepremap.cnrs.fr [07-13-2004]
+global lgx_ lgy_ lgx_TeX_ estim_params_ options_
+
+nam = [];
+texnam = [];
+
+if k <= estim_params_.nvx
+    vname = deblank(lgx_(estim_params_.var_exo(k,1),:));
+    nam=['SE_',vname];
+    if TeX
+      %        tname  = deblank(lgx_TeX_(estim_params_.var_exo(k,1),:));
+      tname = vname;
+      texnam = ['$ SE_{' tname '} $'];
+    end
+elseif  k <= (estim_params_.nvx+estim_params_.nvn)
+    vname = deblank(options_.varobs(estim_params_.var_endo(k-estim_params_.nvx,1),:));
+    nam=['SE_EOBS_',vname];
+    if TeX
+      %  tname  =
+      %  deblank(options_.TeX_varobs(estim_params_.var_endo(k-estim_params_.nvx,1),:));
+      tname = vname;
+        texnam = ['$ SE_{' tname '} $'];
+    end
+elseif  k <= (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx)
+    jj = k - (estim_params_.nvx+estim_params_.nvn);
+    k1 = estim_params_.corrx(jj,1);
+    k2 = estim_params_.corrx(jj,2);
+    vname = [deblank(lgx_(k1,:)) '_' deblank(lgx_(k2,:))];
+    nam=['CC_',vname];
+    if TeX
+        % tname  = [deblank(lgx_TeX_(k1,:)) ',' deblank(lgx_TeX_(k2,:))];
+	tname = vname;
+        texnam = ['$ CC_{' tname '} $'];
+    end
+elseif  k <= (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
+		            estim_params_.ncn)
+    jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx);
+    k1 = estim_params_.corrn(jj,1);
+    k2 = estim_params_.corrn(jj,2);
+    vname = [deblank(lgy_(k1,:)) '_' deblank(lgy_(k2,:))];
+    nam=['CC_EOBS_' vname];
+    if TeX
+        % tname  = [deblank(lgy_TeX_(k1,:)) ',' deblank(lgy_TeX_(k2,:))];
+	tname = vname;
+        texnam =['$ CC_{' tname '} $'];
+    end
+else
+    jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+estim_params_.ncn); 
+    nam = deblank(estim_params_.param_names(jj,:));
+    if TeX
+        % texnam = ['$ '  deblank(estim_params_.tex(jj,:))  ' $'];
+        texnam = nam;
+    end    
+end
+
+
+% SA 07-15-2004 Added TeX names.
+% SA 12-02-2004 Changed non-TeX names format.
diff --git a/tags/v_3.062/matlab/hessext.m b/tags/v_3.062/matlab/hessext.m
new file mode 100644
index 0000000000..2b49ce8bd0
--- /dev/null
+++ b/tags/v_3.062/matlab/hessext.m
@@ -0,0 +1,86 @@
+function [H] = hessext(f,x,options,varargin)
+%---------------------------------------------------------------------------
+%HESSEXT   Numerical approximation for hessian.
+%          The method is Richardson`s extrapolation.
+% Sample call
+%   [H] = hessext(f,x,options,varargin)
+% Inputs
+%   f        name of the function
+%   x        differentiation point
+%   options  matrix of algorithm parameters
+%   delta    error goal (1e-12)
+%   toler    relative error goal (1e-12)
+% Return
+%   J        Jacobian
+%
+% NUMERICAL METHODS: MATLAB Programs, (c) John H. Mathews 1995
+%
+% Modified F. Collard, August 2001
+%---------------------------------------------------------------------------
+  if nargin>3;
+    if ~isempty(options);
+      delta=options(1);
+      toler=options(2);
+    else
+      delta=1e-12;
+      toler=1e-9;
+    end
+  else
+    delta=1e-12;
+    toler=1e-9;
+  end;
+  ff=feval(f,x,varargin{:});
+  nx=size(x,1);
+  nf=size(ff,1);
+  H=sparse(nx*nx,nf);
+  for fi=1:nf;
+    for xi=1:nx;
+      for xj=xi:nx;
+	err = 1;
+	relerr = 1;
+	h = 0.997;
+	dx = zeros(nx,1);
+	dy = zeros(nx,1);
+	dx(xi)=h;      
+	dy(xj)=h;      
+	j = 1;
+	fss=feval(f,x+dx+dy,varargin{:});
+	fsm=feval(f,x+dx-dy,varargin{:});
+	fms=feval(f,x-dx+dy,varargin{:});
+	fmm=feval(f,x-dx-dy,varargin{:});
+	D(1,1) = (fss(fi) -fsm(fi)-fms(fi)+ fmm(fi))/(4*h*h);
+	while relerr>toler & err>delta
+	  h = h/2;
+	  dx = zeros(nx,1);
+	  dy = zeros(nx,1);
+	  dx(xi)=h;      
+	  dy(xj)=h;      
+	  fss=feval(f,x+dx+dy,varargin{:});
+	  fsm=feval(f,x+dx-dy,varargin{:});
+	  fms=feval(f,x-dx+dy,varargin{:});
+	  fmm=feval(f,x-dx-dy,varargin{:});
+	  D(j+1,1) = (fss(fi) -fsm(fi)-fms(fi)+ fmm(fi))/(4*h*h);
+	  for k = 1:j,
+	    D(j+1,k+1) = D(j+1,k) + (D(j+1,k)-D(j,k))/(4^k -1);
+	  end
+	  err = abs(D(j+1,j+1)-D(j,j));
+	  relerr = 2*err/(abs(D(j+1,j+1))+abs(D(j,j))+eps);
+	  j = j+1;
+	  if j == 20
+	    error(sprintf('Hessian evalutation didn''t converge. Equation %d, variables %d %d, relerr %e',fi,xi,xj,relerr))
+	  end
+	end
+	n=size(D,1);
+	H((xi-1)*nx+xj,fi)=D(n,n);
+	H((xj-1)*nx+xi,fi)=D(n,n);
+	D=0;
+      end
+    end
+  end
+
+% 10/12/2001 MJ modified initial h
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/hessian.m b/tags/v_3.062/matlab/hessian.m
new file mode 100644
index 0000000000..911a8e25f9
--- /dev/null
+++ b/tags/v_3.062/matlab/hessian.m
@@ -0,0 +1 @@
+% Copyright (C) 2001 Michel Juillard
%
% computes second order partial derivatives
% uses Abramowitz and Stegun (1965) formulas 25.3.24 and 25.3.27 p. 884
function hessian_mat = hessian(func,x,varargin)
global gstep_

func = str2func(func);
n=size(x,1);
%h1=max(abs(x),gstep_*ones(n,1))*eps^(1/3);
h1=max(abs(x),sqrt(gstep_)*ones(n,1))*eps^(1/6);
h_1=h1;
xh1=x+h1;
h1=xh1-x;
xh1=x-h_1;
h_1=x-xh1;
xh1=x;

f0=feval(func,x,varargin{:});
f1=zeros(size(f0,1),n);
f_1=f1;

for i=1:n
    xh1(i)=x(i)+h1(i);
    f1(:,i)=feval(func,xh1,varargin{:});
    xh1(i)=x(i)-h_1(i);
    f_1(:,i)=feval(func,xh1,varargin{:});
    xh1(i)=x(i);
    i=i+1;
end
xh_1=xh1;
hessian_mat = zeros(size(f0,1),n*n);
for i=1:n
    if i > 1
        k=[i:n:n*(i-1)];
        hessian_mat(:,(i-1)*n+1:(i-1)*n+i-1)=hessian_mat(:,k);
    end 
    hessian_mat(:,(i-1)*n+i)=(f1(:,i)+f_1(:,i)-2*f0)./(h1(i)*h_1(i));
    temp=f1+f_1-f0*ones(1,n);
        for j=i+1:n
        xh1(i)=x(i)+h1(i);
        xh1(j)=x(j)+h_1(j);
        xh_1(i)=x(i)-h1(i);
        xh_1(j)=x(j)-h_1(j);
        hessian_mat(:,(i-1)*n+j)=-(-feval(func,xh1,varargin{:})-feval(func,xh_1,varargin{:})+temp(:,i)+temp(:,j))./(2*h1(i)*h_1(j));
        xh1(i)=x(i);
        xh1(j)=x(j);
        xh_1(i)=x(i);
        xh_1(j)=x(j);
        j=j+1;
    end
    i=i+1;
end

% 11/25/03 SA Created from Hessian_sparse (removed sparse)
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/hessian2.m b/tags/v_3.062/matlab/hessian2.m
new file mode 100644
index 0000000000..4589fc7d67
--- /dev/null
+++ b/tags/v_3.062/matlab/hessian2.m
@@ -0,0 +1,511 @@
+function hessian2(xparam1,gend,data)
+% source Schorfheide
+%/* filename:    lbdhess.g
+%** description: The program computes the hessianfit at the posterior mode 
+%** created:     05/05/00
+%/******************************************************** 
+%/* Compute hessianfit, element by element, fine tune with dxscale
+%   Compute hessianfit for two step-seize (dx) and take average to prevent singularity  
+%/******************************************************** 
+npara = length(xparam1);
+para = xparam1;
+ndx = 1;%6
+%dx =  exp(-seqa(6,2,ndx));
+%dx =  exp([-6:-2:-16]);
+dx =  exp([-10]);
+hessianfit = zeros( npara, npara );
+gradx = zeros(ndx,1);
+grady = zeros(ndx,1);
+gradxy = zeros(ndx,1);
+hessdiag = zeros(ndx,1);
+dxscale = ones(npara,1);
+%  dxscale(5,1)=10;
+%  dxscale(13,1)=10;
+%  dxscale(17,1)=10;
+%  dxscale(8,1)=.10;
+%  dxscale(11,1)=.10;
+%  dxscale(31,1)=.10;
+  
+
+%/* Compute Diagonal elements first
+%*/
+seli = 1;
+fx  = mj_optmumlik(para,gend,data,1);
+%do until seli > npara;
+while seli <= npara;
+%     locate 1,1;
+%     "hessianfit Element    (" seli seli ")";
+     i=1;
+     while i <= ndx;
+      paradx = para;
+      parady = para;
+      paradx(seli) = paradx(seli) + dx(i)*dxscale(seli);
+      parady(seli) = parady(seli) - dx(i)*dxscale(seli);
+      paradxdy = paradx;
+      paradxdy(seli) = paradxdy(seli) - dx(i)*dxscale(seli);
+%     fx  = optmumlik20(para,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+fdx  = mj_optmumlik(paradx,gend,data,1);
+%      fdx  = optmumlik20(paradx,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+fdy  = mj_optmumlik(parady,gend,data,1);
+   %   fdy  = optmumlik20(parady,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+%     fdxdy  = optmumlik20(paradxdy,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      fdxdy  = fx;
+      gradx(i) = -( fx - fdx )/ (dx(i)*dxscale(seli));
+      grady(i) = ( fx - fdy )/ (dx(i)*dxscale(seli));
+      gradxy(i) = -(fx -fdxdy)/ sqrt( (dx(i)*dxscale(seli))^2 + (dx(i)*dxscale(seli))^2 );
+      hessdiag(i) = -( 2*fx - fdx - fdy)/(dx(i)*dxscale(seli))^2; 
+      hessdiag(i) = -( fx - fdx - fdy + fdxdy )/(dx(i)*dx(i)*dxscale(seli)*dxscale(seli));
+      i = i+1;
+  end;
+%     "Values";
+%     -hessdiag';
+     hessianfit(seli,seli) = -1*(hessdiag(1));
+%     hessianfit(seli,seli) = -0.5*(hessdiag(3)+hessdiag(4));
+%     locate 6,1;
+%     "Value Used:" hessianfit[seli,seli];
+   seli = seli+1
+end;
+
+diag(hessianfit)
+
+%/* Now compute off-diagonal elements
+%** Make sure that correlations are between -1 and 1
+%** errorij contains the index of elements that are invalid
+%*/
+errorij = [ 0 0 0];
+
+seli = 1;
+for seli = 1:npara;
+%   selj = seli+1;
+   for selj =seli+1:npara;
+       disp([seli selj]);
+%     locate 1,1;
+%     "hessianfit Element    (" seli selj ")";
+     i=1;
+     while i <= ndx;
+      paradx = para;
+      parady = para;
+      paradx(seli) = paradx(seli) + dx(i)*dxscale(seli);
+      parady(selj) = parady(selj) - dx(i)*dxscale(selj);
+      paradxdy = paradx;
+      paradxdy(selj) = paradxdy(selj) - dx(i)*dxscale(selj);
+%      fx  = optmumlik20(para,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+fdx  = mj_optmumlik(paradx,gend,data,1);
+%      fdx  = optmumlik20(paradx,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+fdy  = mj_optmumlik(parady,gend,data,1);
+%      fdy  = optmumlik20(parady,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+fdy  = mj_optmumlik(paradxdy,gend,data,1);
+%      fdxdy  = optmumlik20(paradxdy,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      gradx(i) = -( fx - fdx )/ (dx(i)*dxscale(seli));
+      grady(i) = ( fx - fdy )/ (dx(i)*dxscale(selj));
+      gradxy(i) = -(fx -fdxdy)/ sqrt( (dx(i)*dxscale(selj))^2 + (dx(i)*dxscale(seli))^2 );
+      hessdiag(i) = -( 2*fx - fdx - fdy)/(dx(i)*dxscale(seli))^2; 
+      hessdiag(i) = -( fx - fdx - fdy + fdxdy )/(dx(i)*dx(i)*dxscale(seli)*dxscale(selj));
+      i = i+1;
+     end;
+%     "Values";
+%     -hessdiag';
+
+%     hessianfit(seli,selj) = -0.5*(hessdiag(3)+hessdiag(4));
+     hessianfit(seli,selj) = -1*(hessdiag(1));
+     
+     if ( hessianfit(seli,seli) == 0 ) | (hessianfit(selj,selj) == 0);
+        corrij = 0;
+     else;
+        corrij = hessianfit(seli,selj)/sqrt(hessianfit(seli,seli)*hessianfit(selj,selj));
+    end;
+
+     if (corrij < -1) | (corrij > 1);
+        hessianfit(seli,selj)=0;
+        errorij = [ errorij [seli selj corrij] ];
+    end;   
+     hessianfit(selj,seli) = hessianfit(seli,selj);
+
+%     locate 6,1;
+%     "Value Used: " hessianfit[seli,selj];
+%     "Correlation:" corrij;
+%     "Number of Errors:" rows(errorij)-1;
+%     selj=selj+1;
+ end;
+%   seli = seli+1;
+end;
+
+%cls;
+disp('Errors')
+disp(errorij);
+
+
+%/*******************************************************************************
+
+bbbb=xparam1;
+%  func =fval;
+%  grad=grad;
+%  retcode=exitflag
+  opfhessfit = (-hessianfit);
+  invhess=inv(opfhessfit);
+  stdh=sqrt(diag(invhess));
+  pr =length(xparam1);
+  tstath=zeros(pr,1);
+  i = 1; while i <= pr ; %do until i>pr;
+    tstath(i)=abs(bbbb(i))/stdh(i);
+  i=i+1; end ; %endo;
+%tstath
+%  print "t-stats. from the Hessian";
+  disp('print "t-stats. from the Hessian" ') ;
+ disp([xparam1 stdh tstath]);   
+
+bbbb=xparam1;
+%  func =fval;
+%  grad=grad;
+%  retcode=exitflag
+ % opfhessfit = (-hessianfit);
+ % invhess=inv(opfhessfit*.5+opfhess*.5);
+ % stdh=sqrt(diag(invhess));
+ % pr =length(xparam1);
+ % tstath=zeros(pr,1);
+ % i = 1; while i <= pr ; %do until i>pr;
+ %   tstath(i)=abs(bbbb(i))/stdh(i);
+ % i=i+1; end ; %endo;
+%tstath
+%  print "t-stats. from the Hessian";
+ % disp('print "t-stats. from the Hessian" ') ;
+% disp([xparam1 stdh tstath]);   
+
+%opfhessfit = -hessianfit*.5+opfhess*.5;
+hessian=opfhessfit;
+
+
+
+return;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+npara = length(xparam1);
+para = xparam1;
+ndx = 1;%6
+%dx =  exp(-seqa(6,2,ndx));
+%dx =  exp([-6:-2:-16]);
+dx =  exp([-10]);
+hessianfit = zeros( npara, npara );
+gradx = zeros(ndx,1);
+grady = zeros(ndx,1);
+gradxy = zeros(ndx,1);
+hessdiag = zeros(ndx,1);
+dxscale = ones(npara,1);
+
+
+%/* Compute Diagonal elements first
+%*/
+seli = 1;
+%do until seli > npara;
+while seli <= npara;
+%     locate 1,1;
+%     "hessianfit Element    (" seli seli ")";
+     i=1;
+     while i <= ndx;
+      paradx = para;
+      parady = para;
+      paradx(seli) = paradx(seli) + dx(i)*dxscale(seli);
+      parady(seli) = parady(seli) - dx(i)*dxscale(seli);
+      paradxdy = paradx;
+      paradxdy(seli) = paradxdy(seli) - dx(i)*dxscale(seli);
+      fx  = optmumlik20(para,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      fdx  = optmumlik20(paradx,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      fdy  = optmumlik20(parady,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      fdxdy  = optmumlik20(paradxdy,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      gradx(i) = -( fx - fdx )/ (dx(i)*dxscale(seli));
+      grady(i) = ( fx - fdy )/ (dx(i)*dxscale(seli));
+      gradxy(i) = -(fx -fdxdy)/ sqrt( (dx(i)*dxscale(seli))^2 + (dx(i)*dxscale(seli))^2 );
+      hessdiag(i) = -( 2*fx - fdx - fdy)/(dx(i)*dxscale(seli))^2; 
+      hessdiag(i) = -( fx - fdx - fdy + fdxdy )/(dx(i)*dx(i)*dxscale(seli)*dxscale(seli));
+      i = i+1;
+  end;
+%     "Values";
+%     -hessdiag';
+     hessianfit(seli,seli) = -1*(hessdiag(1));
+%     hessianfit(seli,seli) = -0.5*(hessdiag(3)+hessdiag(4));
+%     locate 6,1;
+%     "Value Used:" hessianfit[seli,seli];
+   seli = seli+1;
+end;
+
+%/* Now compute off-diagonal elements
+%** Make sure that correlations are between -1 and 1
+%** errorij contains the index of elements that are invalid
+%*/
+errorij = [ 0 0 0];
+
+seli = 1;
+for seli = 1:npara;
+   selj = seli+1
+   while selj <= npara;
+%     locate 1,1;
+%     "hessianfit Element    (" seli selj ")";
+     i=1;
+     while i <= ndx;
+      paradx = para;
+      parady = para;
+      paradx(seli) = paradx(seli) + dx(i)*dxscale(seli);
+      parady(selj) = parady(selj) - dx(i)*dxscale(selj);
+      paradxdy = paradx;
+      paradxdy(selj) = paradxdy(selj) - dx(i)*dxscale(selj);
+      fx  = optmumlik20(para,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      fdx  = optmumlik20(paradx,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      fdy  = optmumlik20(parady,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      fdxdy  = optmumlik20(paradxdy,q,h2,aa,mf,gitno,gst,gobs,gend,gstart,nlags,rawdata,lpd);
+      gradx(i) = -( fx - fdx )/ (dx(i)*dxscale(seli));
+      grady(i) = ( fx - fdy )/ (dx(i)*dxscale(selj));
+      gradxy(i) = -(fx -fdxdy)/ sqrt( (dx(i)*dxscale(selj))^2 + (dx(i)*dxscale(seli))^2 );
+      hessdiag(i) = -( 2*fx - fdx - fdy)/(dx(i)*dxscale(seli))^2; 
+      hessdiag(i) = -( fx - fdx - fdy + fdxdy )/(dx(i)*dx(i)*dxscale(seli)*dxscale(selj));
+      i = i+1
+  end;
+%     "Values";
+%     -hessdiag';
+
+%     hessianfit(seli,selj) = -0.5*(hessdiag(3)+hessdiag(4));
+     hessianfit(seli,selj) = -1*(hessdiag(1));
+     
+     if ( hessianfit(seli,seli) == 0 ) or (hessianfit(selj,selj) == 0);
+        corrij = 0;
+     else;
+        corrij = hessianfit(seli,selj)/sqrt(hessianfit(seli,seli)*hessianfit(selj,selj));
+    end;
+
+     if (corrij < -1) or (corrij > 1);
+        hessianfit(seli,selj)=0;
+        errorij = [ errorij [seli selj corrij] ];
+    end;   
+     hessianfit(selj,seli) = hessianfit(seli,selj);
+
+%     locate 6,1;
+%     "Value Used: " hessianfit[seli,selj];
+%     "Correlation:" corrij;
+%     "Number of Errors:" rows(errorij)-1;
+     selj=selj+1
+ end;
+%   seli = seli+1;
+end;
+
+%cls;
+disp('Errors')
+disp(errorij);
+
+
+%/*******************************************************************************
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%new;
+%closeall;
+%library user, pgraph, lbdlib;
+%format /mb1 /ros 16,8;
+%cls;
+
+%/******************************************************** 
+%**      Estimate the DSGE Model
+%**      Models: 1 = RBC
+%**              2 = LBD
+%**              3 = LBD + Effort
+ 
+%mspec  = 3;
+%mprior = 2;
+%npara  = 12;
+
+%/******************************************************** 
+%** Import data on output growth and inflation: series (nobs,2)
+%** observations from 1954:III to 1997:IV: 
+%**
+%** YY is composed of gdpq_cld and blsh_cl
+%*/
+%#include c:\projects\active\persist\Gauss\prog_t03\loaddata.g
+%loadm path = ^lpath para_names;
+%
+%/******************************************************** 
+%** Load Posterior Mode Estimates
+
+%lpara = lpath $+ "\\" $+ lmodel $+ lprior $+ "mode";
+%open fhpara = ^lpara for read;
+%para = readr(fhpara,npara);
+%closeall fhpara;
+
+%"Parameter   | Estimate ";
+%outmat = para_names'~para;
+%let mask[1,2] = 0 1;
+%%let fmt[2,3] =
+%   "-*.*s " 10 4
+%   "*.*lf " 10 4;
+%d = printfm(outmat,(0 ~ 1),fmt);
+
+%"";
+%"Prior*Likelihood at Mode";
+%fcn(para);
+%"Press Key to Continue";
+%k = keyw;
+%cls;
+% $$$  
+% $$$ /*
+% $$$ goto evalhess;
+% $$$ */
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ /* Initialize Output files
+% $$$ */
+% $$$ ohess = lpath $+ "\\" $+ lmodel $+ lprior $+ "hess";
+% $$$ create fhhess=^ohess with hess, npara, 8;
+% $$$ wr    = writer(fhhess,hessianfit[1:npara,1:npara]);
+% $$$ closeall fhhess;
+% $$$    
+% $$$ 
+% $$$ 
+% $$$ 
+% $$$ /* Load hessianfit, compute penalty
+% $$$ */
+% $$$ evalhess:
+% $$$ 
+% $$$ lhess = lpath $+ "\\" $+ lmodel $+ lprior $+ "hess";
+% $$$ open fhhess = ^lhess for read;
+% $$$ HHm   = readr( fhhess,npara );
+% $$$ closeall fhhess;
+% $$$ 
+% $$$ /* hessianfit is of reduced rank. Keep zero rows and columns and do SVD
+% $$$ */
+% $$$ if mspec == 1;
+% $$$    rankHHm = 9;
+% $$$ elseif mspec == 2;
+% $$$    rankHHm = 11;
+% $$$ else;
+% $$$    rankHHm = 12;
+% $$$ endif;
+% $$$ 
+% $$$ /* Create Inverse by Singular Value Decomposition
+% $$$ */
+% $$$ {u , s, v} = svd1(HHM);
+% $$$ invHHMdet = 1;
+% $$$ 
+% $$$ i = 1;
+% $$$ do until i > npara;
+% $$$    if i > rankHHM;
+% $$$       s[i,i] = 0;
+% $$$    else;
+% $$$       s[i,i]    = 1/s[i,i];
+% $$$       invHHMdet = invHHMdet*s[i,i];
+% $$$    endif;
+% $$$    i = i+1;
+% $$$ endo;
+% $$$ 
+% $$$ invHHM  = u*s*u';
+% $$$ sigmult = u*sqrt(s);
+% $$$ 
+% $$$ "Determinant of minus hessianfit";
+% $$$ invHHMdet;
+% $$$ "sqrt(Diagonal of Inverse hessianfit)";
+% $$$ sqrt(diag(invHHM));
+% $$$ 
+% $$$ "Post Mode Penalty";
+% $$$ penalt = (rankHHM/2)*ln(2*pi) + 0.5*ln(invHHMdet);
+% $$$ penalt;
+% $$$ 
+% $$$ /* Initialize Output files
+% $$$ */
+% $$$ omult = lpath $+ "\\" $+ lmodel $+ lprior $+ "mult";
+% $$$ create fhmult=^omult with MULT, npara, 8;
+% $$$ wr = writer(fhmult,sigmult);
+% $$$ 
+% $$$ closeall fhmult;
+% $$$ end;
+% $$$ 
+% $$$ 
+% $$$ %/****************************************************/
+% $$$ %/*                 PROCEDURES                       */
+% $$$ %/****************************************************/
+% $$$ 
+% $$$ 
+% $$$ %proc (1) = fcn(para);
+% $$$ %local lnpY, lnprio1, lnprio2, obsmean, obsvar;
+% $$$ 
+% $$$ %{lnpy, obsmean, obsvar} = evallbd( para,mspec,T0,YY);
+% $$$ 
+% $$$ %/* Evaluate the Prior density
+% $$$       
+% $$$ %  lnprio1 = priodens( para, pmean, pstdd, pshape);
+% $$$ %  lnprio2 = priomuphi( para );
+% $$$ 
+% $$$ %retp(real(lnpY+lnprio1+lnprio2));  
+% $$$ %endp;
+% $$$ 
+% $$$ /***************************************************************************
+% $$$ */
+% $$$ 
+% $$$ proc (1) = priomuphi(para);
+% $$$ local muphi, lnprio;
+% $$$ muphi = para[7:8];
+% $$$ if mspec > 1;
+% $$$    lnprio = -ln(2*pi) - 0.5*ln(det(muphi_v0))
+% $$$             - 0.5*(muphi - muphi_m0)'*inv(muphi_v0)*(muphi - muphi_m0);
+% $$$ else;
+% $$$    lnprio = 0;
+% $$$ endif;
+% $$$ retp(lnprio);
+% $$$ endp;
+% $$$ 
+% $$$ 
+% $$$ 
diff --git a/tags/v_3.062/matlab/hessian_sparse.m b/tags/v_3.062/matlab/hessian_sparse.m
new file mode 100644
index 0000000000..6f26a0b6a0
--- /dev/null
+++ b/tags/v_3.062/matlab/hessian_sparse.m
@@ -0,0 +1 @@
+% Copyright (C) 2001 Michel Juillard
%
% computes second order partial derivatives
% uses Abramowitz and Stegun (1965) formulas 25.3.24 and 25.3.27 p. 884
function hessian_mat = hessian_sparse(func,x,varargin)
global gstep_

func = str2func(func);
n=size(x,1);
%h1=max(abs(x),gstep_*ones(n,1))*eps^(1/3);
h1=max(abs(x),sqrt(gstep_)*ones(n,1))*eps^(1/6);
h_1=h1;
xh1=x+h1;
h1=xh1-x;
xh1=x-h_1;
h_1=x-xh1;
xh1=x;

f0=feval(func,x,varargin{:});
nf = size(f0,1);
f1=zeros(nf,n);
f_1=f1;

for i=1:n
    xh1(i)=x(i)+h1(i);
    f1(:,i)=feval(func,xh1,varargin{:});
    xh1(i)=x(i)-h_1(i);
    f_1(:,i)=feval(func,xh1,varargin{:});
    xh1(i)=x(i);
    i=i+1;
end
xh_1=xh1;
hessian_mat = spalloc(nf,n*n,3*nf*n);
for i=1:n
    if i > 1
        k=[i:n:n*(i-1)];
        hessian_mat(:,(i-1)*n+1:(i-1)*n+i-1)=hessian_mat(:,k);
    end 
    hessian_mat(:,(i-1)*n+i)=sparse((f1(:,i)+f_1(:,i)-2*f0)./(h1(i)*h_1(i)));
    temp=f1+f_1-f0*ones(1,n);
        for j=i+1:n
        xh1(i)=x(i)+h1(i);
        xh1(j)=x(j)+h_1(j);
        xh_1(i)=x(i)-h1(i);
        xh_1(j)=x(j)-h_1(j);
        hessian_mat(:,(i-1)*n+j)=sparse(-(-feval(func,xh1,varargin{:})-feval(func,xh_1,varargin{:})+temp(:,i)+temp(:,j))./(2*h1(i)*h_1(j)));
        xh1(i)=x(i);
        xh1(j)=x(j);
        xh_1(i)=x(i);
        xh_1(j)=x(j);
        j=j+1;
    end
    i=i+1;
end

% 10/03/02 MJ used the 7 points formula
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/hpfast.m b/tags/v_3.062/matlab/hpfast.m
new file mode 100644
index 0000000000..e93fa16f45
--- /dev/null
+++ b/tags/v_3.062/matlab/hpfast.m
@@ -0,0 +1,106 @@
+% Copyright (C) 2001 Michel Juillard
+%
+% Fast hpfiltering:
+%
+% [c,t]=hpfast(y,lambda)
+%
+% Inputs:
+%
+% y: 			vector (nx1) containing the series you wish to filter
+% lambda:	smoothing parameter (default: quarterly 1600)
+%
+% Outputs:
+% 
+% c:			Cyclical component (deviations from trend)
+%	t:			Trend component
+%
+function [d,t]=hpfast(y,s)
+if nargin<2;
+  s = 1600;
+end;
+iopt 	= 0;
+y			= y(:);
+n 		= length(y);
+d1		= zeros(n,1);
+t			= zeros(n,1);
+
+v = zeros(3*n,6);
+if iopt ~= 1,
+  ss=s;
+  nn=n;
+  v11=1;
+  v22=1;
+  v12=0;
+  for i=3:n;
+    x=v11;
+    z=v12;
+    v11=1/s + 4*(x-z) + v22;
+    v12=2*x - z;
+    v22=x;
+    det1=v11*v22-v12*v12;
+    v(i,1)=v22/det1;
+    v(i,3)=v11/det1;
+    v(i,2)=-v12/det1;
+    x=v11+1;
+    z=v11;
+    v11=v11-v11*v11/x;
+    v22=v22-v12*v12/x;
+    v12=v12-z*v12/x;
+  end;
+end;
+%
+%  Forward pass 
+%
+m1=y(2);
+m2=y(1);
+for i=3:n;
+  x=m1;
+  m1=2*m1-m2;
+  m2=x;
+  t(i-1,1)= v(i,1)*m1 + v(i,2)*m2;
+  d1(i-1,1)=v(i,2)*m1+v(i,3)*m2;
+  det1=v(i,1)*v(i,3)-v(i,2)*v(i,2);
+  v11=v(i,3)/det1;
+  v12=-v(i,2)/det1;
+  z=(y(i)-m1)/(v11+1);
+  m1=m1+v11*z;
+  m2=m2+v12*z;
+end
+t(n,1)=m1;
+t(n-1,1)=m2;
+%
+% Backward pass
+%
+m1=y(n-1);
+m2=y(n);
+for i=n-2:-1:1;
+  i1=i+1;
+  ib=n-i+1;
+  x=m1;
+  m1=2*m1 - m2;
+  m2=x;
+%
+% Combine info for y(.lt.i) with info for y(.ge.i)
+%
+  if i > 2;
+    e1=v(ib,3)*m2+v(ib,2)*m1+t(i,1);
+    e2=v(ib,2)*m2+v(ib,1)*m1+d1(i,1);
+    b11=v(ib,3)+v(i1,1);
+    b12=v(ib,2)+v(i1,2);
+    b22=v(ib,1)+v(i1,3);
+    det1=b11*b22-b12*b12;
+    t(i,1)=(-b12*e1+b11*e2)/det1;
+  end
+%
+% End of combining
+%
+	det1=v(ib,1)*v(ib,3)-v(ib,2)*v(ib,2);
+	v11=v(ib,3)/det1;
+  v12=-v(ib,2)/det1;
+  z=(y(i)-m1)/(v11+1);
+  m1=m1+v11*z;
+  m2=m2+v12*z;
+end
+t(1,1)=m1;
+t(2,1)=m2;
+d=y-t;
diff --git a/tags/v_3.062/matlab/indnv.m b/tags/v_3.062/matlab/indnv.m
new file mode 100644
index 0000000000..9419ed7085
--- /dev/null
+++ b/tags/v_3.062/matlab/indnv.m
@@ -0,0 +1,17 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function a=indnv(x,y)
+
+a = zeros(size(x)) ;
+
+for i = 1:size(x,1)
+  j = find( x(i) == y );
+  if isempty(j)
+    a(i) = NaN;
+  else
+    a(i) = j;
+  end
+end
+
+
+
diff --git a/tags/v_3.062/matlab/initial_estimation_checks.m b/tags/v_3.062/matlab/initial_estimation_checks.m
new file mode 100644
index 0000000000..b244e1a5ff
--- /dev/null
+++ b/tags/v_3.062/matlab/initial_estimation_checks.m
@@ -0,0 +1,26 @@
+function initial_estimation_checks(xparam1,gend,data)
+global bayestopt_ estim_params_ exo_nbr dsge_prior_weight
+  
+nv = size(data,1);
+  
+if nv > exo_nbr + estim_params_.nvn
+  error(['Estimation can''t take place because there are less shocks than' ...
+     'observed variables'])
+end
+  
+r = rank(data);
+if r < nv
+  error(['Estimation can''t take place because the data are perfectly' ...
+     ' correlated']);
+end
+
+if ~isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) | ~isempty(dsge_prior_weight)
+  [fval,cost_flag,ys,trend_coeff,info] = DsgeVarLikelihood(xparam1,gend);
+else
+  [fval,cost_flag,ys,trend_coeff,info] = DsgeLikelihood(xparam1,gend,data);
+end
+
+if info(1) > 0
+  disp('Error in computing likelihood for initial parameter values')
+  print_info(info)
+end
diff --git a/tags/v_3.062/matlab/initvalf_.m b/tags/v_3.062/matlab/initvalf_.m
new file mode 100644
index 0000000000..37c8d98020
--- /dev/null
+++ b/tags/v_3.062/matlab/initvalf_.m
@@ -0,0 +1,103 @@
+function initvalf_(fname,period,varargin)
+  global lgy_ lgx_ lgr_ y_ ex_ valf_ ykmin_ xkmin_ ykmax_ xkmax_ iter_ ...
+      y_start_date ex_start_date freq_ start_date
+
+  if ~isempty(strfind(upper(fname),'.XLS'))
+    [data,names_v]=xlsread(fname);
+  else
+    load(fname);
+  end
+  
+  if length(period) == 2
+    period = dy_date(period(1),period(2));
+  end
+  
+  if period - max(ykmin_,xkmin_) < 0
+    error(['INITVALF_: not enough data points in database for number of' ...
+	   ' lags. Start later!'])
+  end
+  
+  if nargin > 2
+    if strcmp(upper(varargin{1}),'SERIES')
+      series = 1 ;
+    elseif strcmp(upper(varargin{1}),'MAT')
+      series = 0 ;
+    else
+      error(['INITVALF: unknown option ' varargin{1}])
+    end
+  else
+    series = 0 ;
+  end
+  
+  y1 = floor((period-ykmin_)/freq_);
+  p1 = period-ykmin_-freq_*y1;
+  y_start_date(2) = start_date(2) + p1-1;
+  if y_start_date(2) > freq_
+    y_start_date(2) = y_start_date(2) - freq_;
+    y1 = y1 + 1;
+  end
+  y_start_date(1) = start_date(1)+y1;
+  
+  y1 = floor((period-xkmin_)/freq_);
+  p1 = period-xkmin_-freq_*y1;
+  ex_start_date(2) = start_date(2) + p1-1;
+  if y_start_date(2) > freq_
+    ex_start_date(2) = ex_start_date(2) - freq_;
+    y1 = y1 + 1;
+  end
+  ex_start_date(1) = start_date(1)+y1;
+  
+  clear y1, p1;
+  
+  valf_ = 1;
+  y_ = [];
+  ex_ = [];
+  
+  for i=1:size(lgy_,1)
+    if series == 1
+      x = eval([lgy_(i,:) '(period-ykmin_:period+iter_+ykmax_-1);']);
+      y_ = [y_; x'];
+    else
+      k = strmatch(upper(lgy_(i,:)),names_v,'exact');
+      if isempty(k)
+	error(['INITVALF: ' lgy_(i,:) ' not found'])
+      end
+      x = data(:,k);
+      y_ = [y_; x(period-ykmin_:period+iter_+ykmax_-1)']; 
+    end
+  end
+  
+  for i=1:size(lgx_,1)
+    if series == 1
+      x = eval([lgx_(i,:) '(period-xkmin_:period+iter_+xkmax_-1);']);
+      ex_ = [ex_ x];
+    else
+      k = strmatch(upper(lgx_(i,:)),names_v,'exact');
+      if isempty(k)
+	error(['INITVALF: ' lgx_(i,:) ' not found'])
+      end
+      x = data(:,k);
+      ex_ = [ex_ x(period-xkmin_:period+iter_+xkmax_-1)]; 
+    end
+  end
+    
+% $$$   if any(isnan(y_(:,1))) | any(isnan(ex_(1,:)))
+% $$$     error('INITVALF: missing value in first period')
+% $$$   end
+% $$$   
+% $$$   if any(isnan(y_(:,end))) | any(isnan(ex_(end,:)))
+% $$$     error('INITVALF: missing value in last period')
+% $$$   end
+  
+% 8/23/01 MJ changed argument 'FILE' to 'MAT'
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/inverse_gamma_specification.m b/tags/v_3.062/matlab/inverse_gamma_specification.m
new file mode 100644
index 0000000000..5c84738720
--- /dev/null
+++ b/tags/v_3.062/matlab/inverse_gamma_specification.m
@@ -0,0 +1,50 @@
+function [s,nu] = inverse_gamma_specification(mu,sigma,type)
+%
+% mu    --> expectation
+% sigma --> standard deviation
+% type = 1 --> Inverse Gamma 1
+% type = 2 --> Inverse Gamma 2
+%
+% stephane.adjemian@cepremap.cnrs.fr [01/14/2004]
+
+
+sigma2 = sigma^2;
+mu2 = mu^2;
+
+if type == 2;       % Inverse Gamma 2   
+   nu   = 2*(2+mu2/sigma2);
+   s    = 2*mu*(1+mu2/sigma2);
+elseif type == 1;   % Inverse Gamma 1 
+    if sigma2 < Inf;
+      nu = sqrt(2*(2+mu2/sigma2));
+      nu2 = 2*nu;
+      nu1 = 2;
+      err = 2*mu2*gamma(nu/2)^2-(sigma2+mu2)*(nu-2)*gamma((nu-1)/2)^2;
+      while abs(nu2-nu1) > 1e-12
+	if err > 0
+	  nu1 = nu;
+	  if nu < nu2
+	    nu = nu2;
+	  else
+	    nu = 2*nu;
+	    nu2 = nu;
+	  end
+	else
+	  nu2 = nu;
+	end
+	nu =  (nu1+nu2)/2;
+	err = 2*mu2*gamma(nu/2)^2-(sigma2+mu2)*(nu-2)*gamma((nu-1)/2)^2;
+      end
+      s = (sigma2+mu2)*(nu-2);
+    else;
+        nu  = 2;
+        s   = 2*mu2/pi;
+    end;   
+else;
+   s  = -1;
+   nu = -1;
+end;
+
+% 01/18/2004 MJ replaced fsolve with secant
+%               suppressed chck
+%	        changed order of output parameters
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/irf.m b/tags/v_3.062/matlab/irf.m
new file mode 100644
index 0000000000..aaea7433ae
--- /dev/null
+++ b/tags/v_3.062/matlab/irf.m
@@ -0,0 +1,42 @@
+function y_=irf(dr, e1, long_, drop_, replic, iorder)
+  global lgy_ ykmin_ endo_nbr exo_nbr exe_ ykmin_ xkmin_ Sigma_e_ iter_ lgx_
+
+  old_iter = iter_;
+  iter_ = long_;
+  
+  temps = repmat(dr.ys,1,ykmin_);
+
+  y_	= 0;
+  if iorder == 1
+    iter_ = long_;
+    y1_ = repmat(dr.ys,1,iter_);
+    ex2_ = zeros(iter_,exo_nbr);
+    ex2_(1,:) = e1';
+    y2_ = simult_(repmat(dr.ys,1,ykmin_),dr,ex2_,iorder);
+    y_ = y2_(:,ykmin_+1:end)-y1_;
+  else
+    % eliminate shocks with 0 variance
+    i_exo_var = setdiff([1:exo_nbr],find(diag(Sigma_e_) == 0));
+    nxs = length(i_exo_var);
+    ex1_ = zeros(long_+drop_+xkmin_,exo_nbr);
+    ex2_ = ex1_;
+    chol_S = chol(Sigma_e_(i_exo_var,i_exo_var));
+
+    for j = 1: replic
+      randn('seed',j);
+      ex1_(:,i_exo_var) = randn(long_+drop_+xkmin_,nxs)*chol_S;
+      ex2_ = ex1_;
+      ex2_(drop_+1,:) = ex2_(drop_+1,:)+e1';   
+      y1_ = simult_(repmat(dr.ys,1,ykmin_),dr,ex1_,iorder);
+      y2_ = simult_(repmat(dr.ys,1,ykmin_),dr,ex2_,iorder);
+      y_ = y_+(y2_(:,ykmin_+drop_+1:end)-y1_(:,ykmin_+drop_+1:end));
+    end
+    y_=y_/replic;
+  end
+  iter_ = old_iter;
+
+% 01/18/02 MJ corrected for many lags
+% 03/11/22 MJ input is now entire shock vector e1 (for orthogonalized
+%              IRFs)
+
+
diff --git a/tags/v_3.062/matlab/jacob.m b/tags/v_3.062/matlab/jacob.m
new file mode 100644
index 0000000000..84f2f02825
--- /dev/null
+++ b/tags/v_3.062/matlab/jacob.m
@@ -0,0 +1,21 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function jacob(func,z)
+		
+global d1_ jacobia_ gstep_
+
+func = str2func(func);
+z = reshape(z,max(size(z)),1) ;
+d1_ = feval(func,z) ;
+nz = size(z,1) ;
+jacobia_ = zeros(size(d1_,1),nz) ;
+dh = max(abs(z), gstep_*ones(nz,1))*eps^(1/3) ;
+xdh = z ;
+for j = 1:nz
+	xdh(j) = xdh(j)+dh(j) ;
+	h = xdh(j)-z(j) ;
+	jacobia_(:,j) = ((feval(func,xdh)-d1_)/h) ;
+	xdh(j) = z(j) ;
+end
+
+% 8/27/2000 modified with function name MJ
diff --git a/tags/v_3.062/matlab/jacob2.m b/tags/v_3.062/matlab/jacob2.m
new file mode 100644
index 0000000000..08df299499
--- /dev/null
+++ b/tags/v_3.062/matlab/jacob2.m
@@ -0,0 +1,56 @@
+% Copyright (C) 2001 Michel Juillard
+%
+% computes second order partial derivatives
+% uses Abramowitz and Stegun (1965) formulas 25.3.24 and 25.3.27 p. 884
+function jacob2_=jacob2(func,x)
+global gstep_
+
+func = str2func(func);
+n=size(x,1);
+%h1=max(abs(x),gstep_*ones(n,1))*eps^(1/3);
+h1=max(abs(x),sqrt(gstep_)*ones(n,1))*eps^(1/6);
+h_1=h1;
+xh1=x+h1;
+h1=xh1-x;
+xh1=x-h_1;
+h_1=x-xh1;
+xh1=x;
+
+f0=feval(func,x);
+f1=zeros(size(f0,1),n);
+f_1=f1;
+
+for i=1:n
+	xh1(i)=x(i)+h1(i);
+	f1(:,i)=feval(func,xh1);
+	xh1(i)=x(i)-h_1(i);
+	f_1(:,i)=feval(func,xh1);
+	xh1(i)=x(i);
+	i=i+1;
+end
+xh_1=xh1;
+jacob2_=spalloc(size(f0,1),n*n,3*n);
+for i=1:n
+	if i > 1
+		k=[i:n:n*(i-1)];
+		jacob2_(:,(i-1)*n+1:(i-1)*n+i-1)=jacob2_(:,k);
+	end	
+	jacob2_(:,(i-1)*n+i)=sparse((f1(:,i)+f_1(:,i)-2*f0)./(h1(i)*h_1(i)));
+	temp=f1+f_1-f0*ones(1,n);
+        for j=i+1:n
+		xh1(i)=x(i)+h1(i);
+		xh1(j)=x(j)+h_1(j);
+		xh_1(i)=x(i)-h1(i);
+		xh_1(j)=x(j)-h_1(j);
+		jacob2_(:,(i-1)*n+j)=sparse(-(-feval(func,xh1)-feval(func,xh_1)+temp(:,i)+temp(:,j))./(2*h1(i)*h_1(j)));
+		xh1(i)=x(i);
+		xh1(j)=x(j);
+		xh_1(i)=x(i);
+		xh_1(j)=x(j);
+		j=j+1;
+	end
+	i=i+1;
+end
+
+% 10/03/02 MJ used the 7 points formula
+
diff --git a/tags/v_3.062/matlab/jacob_a.m b/tags/v_3.062/matlab/jacob_a.m
new file mode 100644
index 0000000000..a07cfc9c6e
--- /dev/null
+++ b/tags/v_3.062/matlab/jacob_a.m
@@ -0,0 +1,26 @@
+% Copyright (C) 2001 Michel Juillard
+%
+% symmetric formula to compute the Jacobian
+%
+function jacobia_=jacob_a(func,z)
+		
+global d1_ gstep_
+
+func = str2func(func);
+z = reshape(z,max(size(z)),1) ;
+d1_ = feval(func,z) ;
+nz = size(z,1) ;
+jacobia_ = zeros(size(d1_,1),nz) ;
+dh = max(abs(z), gstep_*ones(nz,1))*eps^(1/3) ;
+xdh1 = z ;
+xdh2 = z ;
+for j = 1:nz
+	xdh1(j) = z(j)-dh(j) ;
+	xdh2(j) = z(j)+dh(j) ;
+	h = xdh2(j)-xdh1(j) ;
+	jacobia_(:,j) = ((feval(func,xdh2)-feval(func,xdh1))/h) ;
+	xdh1(j) = z(j) ;
+	xdh2(j) = z(j) ;
+end
+
+% 10/03/02 MJ creation
diff --git a/tags/v_3.062/matlab/kalman_transition_matrix.m b/tags/v_3.062/matlab/kalman_transition_matrix.m
new file mode 100644
index 0000000000..1cbc37ea0d
--- /dev/null
+++ b/tags/v_3.062/matlab/kalman_transition_matrix.m
@@ -0,0 +1,32 @@
+% makes transition matrices out of ghx and ghu for Kalman filter
+% still needs to eliminate unobserved static variables
+% order of variables s p b f p_1
+
+function [A,B] = kalman_transition_matrix(dr)
+  global ykmin_ exo_nbr 
+  nx = size(dr.ghx,2)+dr.nfwrd+dr.nstatic;
+  kstate = dr.kstate;
+  ikx = [dr.nstatic+1:dr.nstatic+dr.npred];
+  
+  A = zeros(nx,nx);
+  k0 = kstate(find(kstate(:,2) <= ykmin_+1),:);
+  i0 = find(k0(:,2) == ykmin_+1);
+  n0 = size(dr.ghx,1);
+  A(1:n0,dr.nstatic+1:dr.nstatic+dr.npred) = dr.ghx(:,1:dr.npred);
+  A(1:n0,dr.nstatic+dr.npred+dr.nfwrd+1:end) = dr.ghx(:,dr.npred+1:end);
+  B = zeros(nx,exo_nbr);
+  B(1:n0,:) = dr.ghu;
+  offset_col = dr.nstatic;
+  for i=ykmin_:-1:2
+    i1 = find(k0(:,2) == i);
+    n1 = size(i1,1);
+    j = zeros(n1,1);
+    for j1 = 1:n1
+      j(j1) = find(k0(i0,1)==k0(i1(j1),1));
+    end
+    if i == ykmin_-1
+      offset_col = dr.nstatic+dr.nfwrd;
+    end
+    A(n0+i1-dr.npred,offset_col+i0(j))=eye(n1);
+    i0 = i1;
+  end
diff --git a/tags/v_3.062/matlab/kernel_density_estimate.m b/tags/v_3.062/matlab/kernel_density_estimate.m
new file mode 100644
index 0000000000..aeb1e9e94b
--- /dev/null
+++ b/tags/v_3.062/matlab/kernel_density_estimate.m
@@ -0,0 +1,58 @@
+function [abscissa,f] = kernel_density_estimate(data,number_of_grid_points,bandwidth,kernel_function) 
+%%  This function aims at estimating a continuous density. A kernel density 
+%%  estimator is used (see Silverman [1986]). 
+%% 
+%%  * Silverman [1986], "Density estimation for statistics and data analysis". 
+%%
+%%  The code is adapted from Anders Holtsberg's matlab toolbox (stixbox). 
+%%
+%%  stephane.adjemian@cepremap.cnrs.fr [07/16/2004]. 
+
+if size(data,2) > 1 & size(data,1) == 1 
+    data = transpose(data); 
+elseif size(data,2)>1 & size(data,1)>1 
+    error('kernel_density_estimate :: data must be a one dimensional array.'); 
+end
+test = log(number_of_grid_points)/log(2);
+if (abs(test-round(test)) > 10^(-12))
+    error('kernel_density_estimate :: The number of grid points must be a power of 2.');
+end
+
+n = size(data,1); 
+
+
+%% KERNEL SPECIFICATION...
+if strcmpi(kernel_function,'gaussian') 
+    k    = inline('inv(sqrt(2*pi))*exp(-0.5*x.^2)'); 
+elseif strcmpi(kernel_function,'uniform') 
+    k    = inline('0.5*(abs(x) <= 1)'); 
+elseif strcmpi(kernel_function,'triangle') 
+    k    = inline('(1-abs(x)).*(abs(x) <= 1)'); 
+elseif strcmpi(kernel_function,'epanechnikov') 
+    k    = inline('0.75*(1-x.^2).*(abs(x) <= 1)'); 
+elseif strcmpi(kernel_function,'quartic') 
+    k    = inline('0.9375*((1-x.^2).^2).*(abs(x) <= 1)'); 
+elseif strcmpi(kernel_function,'triweight') 
+    k    = inline('1.09375*((1-x.^2).^3).*(abs(x) <= 1)'); 
+elseif strcmpi(kernel_function,'cosinus') 
+    k    = inline('(pi/4)*cos((pi/2)*x).*(abs(x) <= 1)'); 
+end     
+
+
+%% COMPUTE DENSITY ESTIMATE... Gaussian kernel should be used (FFT).
+a  = min(data) - (max(data)-min(data))/3;
+b  = max(data) + (max(data)-min(data))/3;
+abscissa = linspace(a,b,number_of_grid_points)';
+d  = abscissa(2)-abscissa(1); 
+xi = zeros(number_of_grid_points,1);
+xa = (data-a)/(b-a)*number_of_grid_points; 
+for i = 1:n;
+    indx = floor(xa(i));
+    temp = xa(i)-indx;
+    xi(indx+[1 2]) = xi(indx+[1 2]) + [1-temp,temp]';
+end;    
+xk = [-number_of_grid_points:number_of_grid_points-1]'*d;
+kk = k(xk/bandwidth);
+kk = kk / (sum(kk)*d*n);
+f = ifft(fft(fftshift(kk)).*fft([xi ;zeros(size(xi))]));
+f = real(f(1:number_of_grid_points));
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/linear.m b/tags/v_3.062/matlab/linear.m
new file mode 100644
index 0000000000..e34f39b638
--- /dev/null
+++ b/tags/v_3.062/matlab/linear.m
@@ -0,0 +1,87 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function linear(x)
+%	LINEAR : LINEAR (x,'filename')
+
+global iy_ ykmin_ ykmax_ xkmin_ xkmax_ jacobia_
+global lgy_ lgx_ iter_ fname_
+
+x = reshape(x,max(size(x)),1) ;
+xx = x ;
+nn = size(iy_,2) ;
+nv = max(iy_(size(iy_,1),:)) ;
+indic = zeros(0,0) ;
+
+if size(x,1) == nv
+	r = find(reshape(iy_'>0,(ykmin_+ykmax_+1)*nn,1)) ;
+	n = abs(lgy_) ;
+	n = kron(ones(ykmin_+ykmax_+1,1),n) ;
+	n = setstr(n(r,:)) ;
+	m = [-ykmin_:ykmax_]'*ones(1,nn) ;
+	m = reshape(m',(ykmin_+ykmax_+1)*nn,1) ;
+	m = m(r) ;
+elseif size(x,1) == nn
+	l = iy_>0 ;
+	l = l.*kron(ones(size(iy_,1),1),[1:nn]) ;
+	i = nonzeros(reshape(iy_,size(iy_,1)*nn,1)) ;
+	j = nonzeros(reshape(l,size(iy_,1)*nn,1)) ;
+	s = ones(1,max(iy_(size(iy_,1),:))) ;
+	indic = sparse(i,j,s,nv,nn) ;
+	x = indic*x ;
+	n = lgy_ ;
+	m = zeros(nn,1) ;
+else
+	error ('Wrong number of arguments in LINEAR.') ;
+end
+
+jacob([fname_ '_ff'],x) ;
+
+if ~ isempty(indic)
+	jacobia_=jacobia_*indic ;
+	clear indic ;
+end
+
+fprintf (1,'Periods  :  ') ;
+fprintf (1,'%4g \n',iter_) ;
+fprintf (1,'Endogenous variables : ') ; fprintf (1,'\n') ;
+fprintf (1,lgy_) ;
+fprintf (1,'\n') ;
+fprintf (1,'Exogenous variables : ') ; fprintf (1,'\n') ;
+fprintf (1,lgx_) ;
+fprintf (1,'\n') ;
+fprintf (1,'Linearization around :') ;
+fprintf (1,'\n') ;
+
+for i = 1:size(n,1) ;
+	fprintf (1,n(i,:)) ; fprintf (1,'(%1g)',m(i)) ;
+	fprintf (1,' = %15.6f \n',xx(i)) ;
+end
+
+fprintf (1,'\n') ;
+
+for i = 1:size(jacobia_,1)
+	for j = 1:size(jacobia_,2)
+		if jacobia_(i,j) ~= 0
+			if jacobia_(i,j) == 1
+				if j == 1
+					fprintf (1,n(j,:)) ; fprintf (1,'(%1g)',m(j)) ;
+				else
+					fprintf (1, ' + ') ; fprintf (1,n(j,:)) ; fprintf (1,'(%1g)',m(j)) ;
+				end
+			elseif jacobia_(i,j) == -1
+				fprintf (1,' - ') ; fprintf (1,n(j,:)) ; fprintf (1,'(%1g)',m(j)) ;
+			elseif jacobia_(i,j) > 0
+				if j>1, fprintf (1,' + ') ; end
+				fprintf (1,'%15.6g',jacobia_(i,j)) ;
+				fprintf (1,'*') ; fprintf (1,n(j,:)) ; fprintf (1,'(%1g)',m(j)) ;
+			else
+				fprintf (1,'%15.6g',jacobia_(i,j)) ;
+				fprintf (1,'*') ; fprintf (1,n(j,:)) ; fprintf (1,'(%1g)',m(j)) ;
+			
+			end
+		end
+	end
+	fprintf (1,'\n') ;
+end
+
+return ;
diff --git a/tags/v_3.062/matlab/list_variables.m b/tags/v_3.062/matlab/list_variables.m
new file mode 100644
index 0000000000..08fd8f21fc
--- /dev/null
+++ b/tags/v_3.062/matlab/list_variables.m
@@ -0,0 +1,34 @@
+function list_variables()
+  global lgy_ iy_ ykmin_ ykmax_ endo_nbr
+  
+  ipred = find(sum(iy_(1:ykmin_,:),1))';
+  ifwrd = find(sum(iy_(ykmin_+2:end,:),1))';
+  iboth = intersect(ipred,ifwrd);
+  istatic = setdiff([1:endo_nbr]',union(ipred,ifwrd));
+  disp('Purely predetermined variables')
+  ipred1 = setdiff(ipred,iboth);
+  if isempty(ipred1)
+    disp('    none')
+  else
+    disp(lgy_(ipred1,:))
+  end
+  disp('Purely forward-looking variables')
+  ifwrd1 = setdiff(ifwrd,iboth);
+  if isempty(ifwrd1)
+    disp('    none')
+  else
+    disp(lgy_(ifwrd1,:))
+  end
+  disp('Variables that are both forward-looking and predetermined')
+  if isempty(iboth)
+    disp('    none')
+  else
+    disp(lgy_(iboth,:))
+  end
+  disp('Static variables')
+  if isempty(istatic)
+    disp('    none')
+  else
+    disp(lgy_(istatic,:))
+  end
+  
diff --git a/tags/v_3.062/matlab/lnsrch.m b/tags/v_3.062/matlab/lnsrch.m
new file mode 100644
index 0000000000..11efadc092
--- /dev/null
+++ b/tags/v_3.062/matlab/lnsrch.m
@@ -0,0 +1,86 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function [x,f,fvec,check]=lnsrch(xold,fold,g,p,stpmax,func,varargin)
+
+  alf = 1e-4 ;
+  tolx = 3.7e-11 ;
+  alam = 1;
+  
+  nn = size(xold,1) ;
+  summ = sqrt(sum(p.*p)) ;
+  if ~isfinite(summ)
+    error(['Some element of Newton direction isn''t finite. Jacobian maybe' ...
+	   ' singular or there is a problem with initial values'])
+  end
+  
+  if summ > stpmax
+    p=p.*stpmax/summ ;
+  end
+
+  slope = g'*p ;
+  
+  test = max(abs(p)'./max([abs(xold)';ones(1,nn)])) ;
+  alamin = tolx/test ;
+
+  if alamin > 0.1
+    alamin = 0.1;
+  end
+  
+  while 1
+    if alam < alamin
+      check = 1 ;
+      return
+    end
+    
+    x = xold + (alam*p) ;
+    fvec = feval(func,x,varargin{:}) ;
+    f = 0.5*fvec'*fvec ;
+
+    if any(isnan(fvec))
+      alam = alam/2 ;
+      alam2 = alam ;
+      f2 = f ;
+      fold2 = fold ;
+    else
+
+      if f <= fold+alf*alam*slope
+	check = 0;
+	break ;
+      else
+	if alam == 1
+	  tmplam = -slope/(2*(f-fold-slope)) ;
+	else
+	  rhs1 = f-fold-alam*slope ;
+	  rhs2 = f2-fold2-alam2*slope ;
+	  a = (rhs1/(alam^2)-rhs2/(alam2^2))/(alam-alam2) ;
+	  b = (-alam2*rhs1/(alam^2)+alam*rhs2/(alam2^2))/(alam-alam2) ;
+	  if a == 0
+	    tmplam = -slope/(2*b) ;
+	  else
+	    disc = (b^2)-3*a*slope ;
+
+	    if disc < 0
+	      error ('Roundoff problem in nlsearch') ;
+	    else
+	      tmplam = (-b+sqrt(disc))/(3*a) ;
+	    end
+
+	  end
+
+	  if tmplam > 0.5*alam
+	    tmplam = 0.5*alam;
+	  end
+
+	end
+
+	alam2 = alam ;
+	f2 = f ;
+	fold2 = fold ;
+	alam = max([tmplam;(0.1*alam)]) ;
+      end
+    end
+  end
+
+% 01/14/01 MJ lnsearch is now a separate function
+% 01/12/03 MJ check for finite summ to avoid infinite loop when Jacobian
+%             is singular or model is denormalized
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/lnsrch1.m b/tags/v_3.062/matlab/lnsrch1.m
new file mode 100644
index 0000000000..1f7e7e2854
--- /dev/null
+++ b/tags/v_3.062/matlab/lnsrch1.m
@@ -0,0 +1,95 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function [x,f,fvec,check]=lnsrch(xold,fold,g,p,stpmax,func,j1,j2,varargin)
+
+  x = [];
+  f = [];
+  fvec = [];
+  alf = 1e-4 ;
+  tolx = 3.7e-11 ;
+  alam = 1;
+  
+  x = xold;
+  nn = length(j2);
+  summ = sqrt(sum(p.*p)) ;
+  if ~isfinite(summ)
+    warning(['Some element of Newton direction isn''t finite. Jacobian maybe' ...
+	   ' singular or there is a problem with initial values'])
+    check = 1;
+    return
+  end
+  
+  if summ > stpmax
+    p=p.*stpmax/summ ;
+  end
+
+  slope = g'*p ;
+  
+  test = max(abs(p)'./max([abs(xold(j2))';ones(1,nn)])) ;
+  alamin = tolx/test ;
+
+  if alamin > 0.1
+    alamin = 0.1;
+  end
+  
+  while 1
+    if alam < alamin
+      check = 1 ;
+      return
+    end
+    
+    x(j2) = xold(j2) + (alam*p) ;
+    fvec = feval(func,x,varargin{:}) ;
+    fvec = fvec(j1);
+    f = 0.5*fvec'*fvec ;
+
+    if any(isnan(fvec))
+      alam = alam/2 ;
+      alam2 = alam ;
+      f2 = f ;
+      fold2 = fold ;
+    else
+
+      if f <= fold+alf*alam*slope
+	check = 0;
+	break ;
+      else
+	if alam == 1
+	  tmplam = -slope/(2*(f-fold-slope)) ;
+	else
+	  rhs1 = f-fold-alam*slope ;
+	  rhs2 = f2-fold2-alam2*slope ;
+	  a = (rhs1/(alam^2)-rhs2/(alam2^2))/(alam-alam2) ;
+	  b = (-alam2*rhs1/(alam^2)+alam*rhs2/(alam2^2))/(alam-alam2) ;
+	  if a == 0
+	    tmplam = -slope/(2*b) ;
+	  else
+	    disc = (b^2)-3*a*slope ;
+
+	    if disc < 0
+	      warning ('Roundoff problem in nlsearch') ;
+	      check = 1;
+	      return
+	    else
+	      tmplam = (-b+sqrt(disc))/(3*a) ;
+	    end
+
+	  end
+
+	  if tmplam > 0.5*alam
+	    tmplam = 0.5*alam;
+	  end
+
+	end
+
+	alam2 = alam ;
+	f2 = f ;
+	fold2 = fold ;
+	alam = max([tmplam;(0.1*alam)]) ;
+      end
+    end
+  end
+
+% 01/14/01 MJ lnsearch is now a separate function
+% 01/12/03 MJ check for finite summ to avoid infinite loop when Jacobian
+%             is singular or model is denormalized
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/lpdfbeta.m b/tags/v_3.062/matlab/lpdfbeta.m
new file mode 100644
index 0000000000..46106ca265
--- /dev/null
+++ b/tags/v_3.062/matlab/lpdfbeta.m
@@ -0,0 +1,7 @@
+function ldens = lpdfbeta(x,a,b);
+% log BETA PDF
+  ldens = gammaln(a+b) - gammaln(a) - gammaln(b) + (a-1)*log(x) + (b-1)*log(1-x);
+
+% 10/11/03 MJ adapted from a GAUSS version by F. Schorfheide, translated
+%             to Matlab by R. Wouters.  
+%             use Matlab gammaln instead of lngam
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/lpdfgam.m b/tags/v_3.062/matlab/lpdfgam.m
new file mode 100644
index 0000000000..67e781d99d
--- /dev/null
+++ b/tags/v_3.062/matlab/lpdfgam.m
@@ -0,0 +1,7 @@
+function  ldens = lpdfgam(x,a,b);
+% log GAMMA PDF 
+  ldens = -gammaln(a) -a*log(b)+ (a-1)*log(x) -x/b ;
+
+% 10/11/03  MJ adapted from an earlier GAUSS version by F. Schorfeide,
+%              translated to MATLAB by R. Wouters  
+%              use MATLAB gammaln rather than lngam
diff --git a/tags/v_3.062/matlab/lpdfgbeta.m b/tags/v_3.062/matlab/lpdfgbeta.m
new file mode 100644
index 0000000000..f1ba841e45
--- /dev/null
+++ b/tags/v_3.062/matlab/lpdfgbeta.m
@@ -0,0 +1,7 @@
+function ldens = lpdfgbeta(x,a,b,aa,bb);
+% log (generalized) BETA PDF 
+ldens = -betaln(a,b) + (a-1)*log(x-aa) + (b-1)*log(bb-x) - (a+b-1)*log(bb-aa);
+%gammaln(a+b) - gammaln(a) - gammaln(b)
+%betaln(a,b)
+%pause
+% 02/16/04 SA Interval [aa,bb] is the support of the probability density function. 
diff --git a/tags/v_3.062/matlab/lpdfig.m b/tags/v_3.062/matlab/lpdfig.m
new file mode 100644
index 0000000000..8365ffa5a0
--- /dev/null
+++ b/tags/v_3.062/matlab/lpdfig.m
@@ -0,0 +1,8 @@
+function ldens = lpdfig(x,a,b)
+% log INVERSE GAMMA
+   ldens = log(2) - gammaln(b/2) + (b/2).*log(a/2) - ( (b+1)/2 ).*log(x.^2) - a./(2*x.^2);
+
+% 10/11/03 MJ adapted from an earlier GAUSS version by F. Schorfeide,
+%             then translated to Matlab by R. Wouters
+%             uses Matlab gammaln rather than lngam
+% 12/01/03 MJ modified according to MR suggestion
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/lpdfig1.m b/tags/v_3.062/matlab/lpdfig1.m
new file mode 100644
index 0000000000..8375dbe755
--- /dev/null
+++ b/tags/v_3.062/matlab/lpdfig1.m
@@ -0,0 +1,12 @@
+function ldens = lpdfig1(x,s,nu)
+% log INVERSE GAMMA (type 1)
+%
+% X ~ IG1(s,nu)
+% X = sqrt(Y) where Y ~ IG2(s,nu) and Y = inv(Z) with Z ~ G(nu/2,2/s) (Gamma distribution) 
+% 
+% See L. Bauwens, M. Lubrano and J-F. Richard [1999, appendix A] for more
+% details.
+%
+% stephane.adjemian@cepremap.cnrs.fr [01/16/2004]
+
+ldens = log(2) - gammaln(nu/2) - (nu/2).*log(2/s) - (nu+1)*log(x) - .5*s./(x.^2);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/lpdfig2.m b/tags/v_3.062/matlab/lpdfig2.m
new file mode 100644
index 0000000000..8030683cd1
--- /dev/null
+++ b/tags/v_3.062/matlab/lpdfig2.m
@@ -0,0 +1,12 @@
+function ldens = lpdfig2(x,s,nu)
+% log INVERSE GAMMA (type 2)
+%
+% X ~ IG2(s,nu)
+% X = inv(Z) where Z ~ G(nu/2,2/s) (Gamma distribution) 
+% 
+% See L. Bauwens, M. Lubrano and J-F. Richard [1999, appendix A] for more
+% details.
+%
+% stephane.adjemian@cepremap.cnrs.fr [01/16/2004]
+
+ldens = - gammaln(nu/2) - (nu/2)*log(2/s) - .5*(nu+2)*log(x) -.5*s./x;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/lpdfnorm.m b/tags/v_3.062/matlab/lpdfnorm.m
new file mode 100644
index 0000000000..a7d690fbe9
--- /dev/null
+++ b/tags/v_3.062/matlab/lpdfnorm.m
@@ -0,0 +1,9 @@
+function  f = lpdfnorm(x,m,s)
+%LPDFNORM The log of the normal density function
+%
+%         f = lpdfnorm(x,Mean,StandardDeviation)
+
+if nargin<3, s=1; end
+if nargin<2, m=0; end
+f = -log(s)-log(2*pi)/2-((x-m)./s).^2/2;
+
diff --git a/tags/v_3.062/matlab/lyapunov_symm.m b/tags/v_3.062/matlab/lyapunov_symm.m
new file mode 100644
index 0000000000..1294bf3619
--- /dev/null
+++ b/tags/v_3.062/matlab/lyapunov_symm.m
@@ -0,0 +1,49 @@
+% solves x-a*x*a'=b for b (and then x) symmetrical
+function [x,info]=lyapunov_symm(a,b)
+  info = 0;
+  n = size(b,1);
+  if n == 1
+    x=b/(1-a*a);
+    return
+  end
+  x=zeros(n,n);
+  [u,t]=schur(a);
+  b=u'*b*u;
+  for i=n:-1:2
+    if t(i,i-1) == 0
+      if i == n
+	c = zeros(n,1);
+      else
+	c = t(1:i,:)*(x(:,i+1:end)*t(i,i+1:end)')+...
+	    t(i,i)*t(1:i,i+1:end)*x(i+1:end,i);
+      end
+      q = eye(i)-t(1:i,1:i)*t(i,i);
+      x(1:i,i) = q\(b(1:i,i)+c);
+      x(i,1:i-1) = x(1:i-1,i)';
+    else
+      if i == n
+	c = zeros(n,1);
+	c1 = zeros(n,1);
+      else
+	c = t(1:i,:)*(x(:,i+1:end)*t(i,i+1:end)')+...
+	    t(i,i)*t(1:i,i+1:end)*x(i+1:end,i)+...
+	    t(i,i-1)*t(1:i,i+1:end)*x(i+1:end,i-1);
+	c1 = t(1:i,:)*(x(:,i+1:end)*t(i-1,i+1:end)')+...
+	     t(i-1,i-1)*t(1:i,i+1:end)*x(i+1:end,i-1)+...
+	     t(i-1,i)*t(1:i,i+1:end)*x(i+1:end,i);
+      end
+      q = [eye(i)-t(1:i,1:i)*t(i,i) -t(1:i,1:i)*t(i,i-1);...
+	   -t(1:i,1:i)*t(i-1,i) eye(i)-t(1:i,1:i)*t(i-1,i-1)];
+      z =  q\[b(1:i,i)+c;b(1:i,i-1)+c1];
+      x(1:i,i) = z(1:i);
+      x(1:i,i-1) = z(i+1:end);
+      x(i,1:i-1)=x(1:i-1,i)';
+      x(i-1,1:i-2)=x(1:i-2,i-1)';
+      i = i - 1;
+    end
+  end
+  if i == 2
+    c = t(1,:)*(x(:,2:end)*t(1,2:end)')+t(1,1)*t(1,2:end)*x(2:end,1);
+    x(1,1)=(b(1,1)+c)/(1-t(1,1)*t(1,1));
+  end
+  x=u*x*u';
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/make_ex_.m b/tags/v_3.062/matlab/make_ex_.m
new file mode 100644
index 0000000000..d4c28a19aa
--- /dev/null
+++ b/tags/v_3.062/matlab/make_ex_.m
@@ -0,0 +1,64 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function make_ex_
+  global exe_ ex_ ex0_ xkmin_ xkmax_ exo_nbr options_ exe_det_ ex_det_ ...
+      exo_det_nbr ex_det0_ ykmin_ ykmax_
+  
+  options_ = set_default_option(options_,'periods',0);
+  
+  if isempty(exe_)
+    exe_ = zeros(exo_nbr,1);
+  end
+  
+  if exo_det_nbr > 1 & isempty(exe_det_)
+    exe_det_ = zeros(exo_det_nbr,1);
+  end
+  
+  if isempty(ex_)
+    if isempty(ex0_)
+      ex_ = [ones(xkmin_+options_.periods+xkmax_,1)*exe_'];
+    else
+      ex_ = [ones(xkmin_,1)*ex0_';ones(options_.periods+xkmax_,1)*exe_'];
+    end
+  elseif size(ex_,2) < length(exe_)
+    k = size(ex_,2)+1:length(exe_)
+    if isempty(ex0_)
+      ex_ = [ex_ ones(xkmin_+size(ex_,1)+xkmax_,1)*exe_(k)'];
+    else
+      ex_ = [ex_ [ones(xkmin_,1)*ex0_(k)'; ones(size(ex_,1)-xkmin_+xkmax_, ...
+						1)*exe_(k)']];
+    end
+  elseif size(ex_,1) < xkmin_+xkmax_+options_.periods
+    if isempty(ex0_)
+      ex_ = [ex_; ones(xkmin_+options_.periods+xkmax_-size(ex_,1),1)*exe_'];
+    else
+      ex_ = [ones(xkmin_,1)*ex0_'; ex_; ones(options_.periods+xkmax_-size(ex_, ...
+						  1),1)*exe_'];
+    end
+  end
+  
+  if exo_det_nbr > 0
+    if isempty(ex_det_)
+      if isempty(ex_det0_)
+	ex_det_ = [ones(ykmin_+options_.periods+ykmax_,1)*exe_det_'];
+      else
+	ex_det_ = [ones(ykmin_,1)*ex_det0_';ones(options_.periods+ykmax_,1)*exe_det_'];
+      end
+    elseif size(ex_det_,2) < length(exe_det_)
+      k = size(ex_det_,2)+1:length(exe_det_)
+      if isempty(ex_det0_)
+	ex_det_ = [ex_det_ ones(ykmin_+size(ex_det_,1)+ykmax_,1)*exe_det_(k)'];
+      else
+	ex_det_ = [ex_det_ [ones(ykmin_,1)*ex_det0_(k)'; ones(size(ex_det_,1)-ykmin_+ykmax_, ...
+						  1)*exe_det_(k)']];
+      end
+    elseif size(ex_det_,1) < ykmin_+ykmax_+options_.periods
+      if isempty(ex_det0_)
+	ex_det_ = [ex_det_; ones(ykmin_+options_.periods+ykmax_-size(ex_det_,1),1)*exe_det_'];
+      else
+	ex_det_ = [ones(ykmin_,1)*ex_det0_'; ex_det_; ones(options_.periods+ykmax_-size(ex_det_, ...
+						  1),1)*exe_det_'];
+      end
+    end
+  end
+	     
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/make_y_.m b/tags/v_3.062/matlab/make_y_.m
new file mode 100644
index 0000000000..21cd0104d0
--- /dev/null
+++ b/tags/v_3.062/matlab/make_y_.m
@@ -0,0 +1,36 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function make_y_
+  global ys_ y_ ys0_ ykmin_ ykmax_ endo_nbr options_
+  
+  options_ = set_default_option(options_,'periods',0);
+  
+  if isempty(ys_)
+    ys_ = ones(endo_nbr,1);
+  end
+  
+  
+  if isempty(y_)
+    if isempty(ys0_)
+      y_ = [ys_*ones(1,ykmin_+options_.periods+ykmax_)];
+    else
+      y_ = [ys0_*ones(1,ykmin_);ys_*ones(1,options_.periods+ykmax_)];
+    end
+  elseif size(y_,1) < length(ys_)
+    k = size(y_,1)+1:length(ys_)
+    if isempty(ys0_)
+      y_ = [y_; ys_(k)*ones(1,ykmin_+size(y_,1)+ykmax_)];
+    else
+      y_ = [y_; [ys0_(k)*ones(1,ykmin_); ys_(k)*ones(1,size(y_,2)-ykmin_+ ...
+						     ykmax_)]];
+    end
+  elseif size(y_,2) < ykmin_+ykmax_+options_.periods
+    if isempty(ys0_)
+      y_ = [y_ ys_*ones(1,ykmin_+options_.periods+ykmax_-size(y_,2),1)];
+    else
+      y_ = [ys0_*ones(1,ykmin_) y_  ys_*ones(1,options_.periods+ykmax_-size(y_, ...
+						  2))];
+    end
+  end
+    
+	     
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/marginal_density.m b/tags/v_3.062/matlab/marginal_density.m
new file mode 100644
index 0000000000..ce178c7c00
--- /dev/null
+++ b/tags/v_3.062/matlab/marginal_density.m
@@ -0,0 +1,48 @@
+function marginal = marginal_density(x2,logpost2)
+global fname_ options_
+
+nruns = size(x2,1);
+nblck = size(x2,3);
+npara = size(x2,2);
+
+B = 1;
+T = nruns-round(options_.mh_drop*nruns)+1;
+N = T*nblck;
+simulations = zeros(N,npara);
+lposterior   = zeros(N,1);
+
+while B <= nblck;
+    simulations((B-1)*T+1:B*T,:) = x2(round(options_.mh_drop*nruns):nruns,:,B);
+    lposterior((B-1)*T+1:B*T) = logpost2(round(options_.mh_drop*nruns):nruns,B);
+    B = B + 1;
+end;    
+
+lpost_mode = max(lposterior);
+
+MU = mean(simulations)';
+SIGMA = zeros(npara,npara);
+for i=1:N;
+    SIGMA = SIGMA + (simulations(i,:)'-MU)*(simulations(i,:)'-MU)';
+end;
+SIGMA = SIGMA/N;
+
+DetSIGMA = det(SIGMA);
+InvSIGMA = inv(SIGMA);
+marginal = [];
+
+for p = 0.1:0.1:0.9;
+    critval = qchisq(p,npara);
+    tmp = 0;
+    for i = 1:N;
+        deviation  = (simulations(i,:)-MU')*InvSIGMA*((simulations(i,:)-MU'))';
+        if deviation <= critval;
+	  lftheta = -log(p)-(npara*log(2*pi)+log(DetSIGMA)+deviation)/2;
+	  tmp = tmp + exp(lftheta - lposterior(i)+lpost_mode);
+        end;    
+    end;
+    marginal = cat(1,marginal,[p,lpost_mode-log(tmp/N)]); 
+end;    
+    
+
+
+
diff --git a/tags/v_3.062/matlab/matrictint.m b/tags/v_3.062/matlab/matrictint.m
new file mode 100644
index 0000000000..eb95193c84
--- /dev/null
+++ b/tags/v_3.062/matlab/matrictint.m
@@ -0,0 +1,35 @@
+function w=matrictint(S,XXi,T)
+%function w=matrictint(S,XXi,T)
+%  S:  usually sample cross product matrix of LS residuals
+% XXi:  inv(X'X) matrix for rhs variables
+%  T:  number of observations
+%  w:  log of integrated posterior for SUR or RF VAR with det(Sigma)^(-(m+1)/2) Jeffreys-like prior
+%  To get the log of the integral of the likelihood for a VAR with T observations, 
+%   k rhs variables in each equation, and m equations, set T=T-m-1 and subtract .5*m*(m+1)*log(2*pi).
+% We are integrating the exponential of -.5*T*m*log(2*pi)-.5*(T+m+1)*log(det(Sigma))-.5*trace(Sigma\S(beta)).
+k=size(XXi,1);
+m=size(S,1);
+[cx,p]=chol(XXi);
+[cs,q]=chol(S);
+%cx=cschol(XXi);
+%cs=cschol(S);
+if any(diag(cx)<100*eps)
+    error('singular XXi')
+end
+if any(diag(cs<100*eps))
+    error('singular S')
+end
+w=(-T+k+(m-1)/2)*m*.5*log(pi)-(T-k)*sum(log(diag(cs)))+m*sum(log(diag(cx)))+ggammaln(m,(T-k)/2);
+
+function lgg=ggammaln(m,ndf)
+%function gg=ggamma(m,ndf)
+% From 8.2.22 on p.427 of Box and Tiao, this is the log of generalized
+% gamma divided by gamma(.5)^(.5*m*(m-1))
+if ndf<=(m-1)/2
+    error('too few df in ggammaln')
+else
+    %lgg=.5*m*(m-1)*gammaln(.5); % normalizing factor not used in Wishart integral
+    garg=ndf+.5*(0:-1:1-m);
+    lgg=sum(gammaln(garg));
+end
+    
diff --git a/tags/v_3.062/matlab/mcmc_diagnostic.m b/tags/v_3.062/matlab/mcmc_diagnostic.m
new file mode 100644
index 0000000000..9216d49104
--- /dev/null
+++ b/tags/v_3.062/matlab/mcmc_diagnostic.m
@@ -0,0 +1,172 @@
+function mcmc_diagnostic(x2)
+% 
+% See S. Brooks and Gelman [1998, Journal ]
+%
+
+global estim_params_ lgx_ options_
+
+nblck = size(x2,3);
+npar  = size(x2,2);
+nruns = size(x2,1)
+
+origin = 1000;
+step_size = 100;
+
+det_W = zeros(nruns,1);
+det_B = zeros(nruns,1);
+det_V = zeros(nruns,1);
+R     = zeros(nruns,1);
+ligne = 0;
+
+for iter = origin:step_size:nruns;
+    ligne = ligne + 1; 
+    W = zeros(npar,npar);
+    B = zeros(npar,npar);
+    linea = ceil(0.5*iter);
+    n = iter-linea+1;
+    muB = mean(mean(x2(linea:iter,:,:),3),1)';  
+    for j = 1:nblck;
+        muW  = mean(x2(linea:iter,:,j))';
+        B = B + (muW-muB)*(muW-muB)';
+        for t = linea:iter;
+            W = W + (x2(t,:,j)'-muW)*(x2(t,:,j)-muW');     
+        end;    
+    end;
+    W = inv(nblck*(n-1))*W;
+    B = n*inv(nblck-1)*B;
+    V = inv(n)*(n-1)*W + (1+inv(nblck))*B/n;
+    det_W(ligne,1) = det(W);
+    det_B(ligne,1) = det(B);
+    det_V(ligne,1) = det(V);
+    lambda = max(eig(inv(n*W)*B));
+    R(ligne,1) = (n-1)/n + lambda*(nblck+1)/nblck;
+end;    
+
+det_W = det_W(1:ligne,1);
+det_V = det_V(1:ligne,1);
+R     = R(1:ligne,1);
+
+figure('Name','MCMC multivariate diagnostic');
+subplot(2,1,1);
+plot(origin:step_size:nruns,R,'-k','linewidth',2);
+subplot(2,1,2);
+plot(origin:step_size:nruns,det_W,'--r','linewidth',2);
+hold on;
+plot(origin:step_size:nruns,det_V,'--b','linewidth',2);
+hold off;
+
+
+[R_interval,R_c1,R_c2] = mcmcdiags(x2,0.2,3,4,origin,step_size);
+pages = floor(npar/4);
+k = 0;
+
+% pages
+for i = 1:pages;
+    figure('Name','MCMC univariate diagnostic');
+    boxplot = 1;
+    for j = 1:4;
+        k = k+1;
+        if k <= estim_params_.nvx;
+            vname = deblank(lgx_(estim_params_.var_exo(k,1),:));
+            nam=['SE_{',vname,'}'];
+        elseif  k <= (estim_params_.nvx+estim_params_.nvn);
+            vname = deblank(options_.varobs(estim_params_.var_endo(k-estim_params_.nvx,1),:));
+            nam=['SE_{EOBS_',vname,'}'];
+        elseif  k <= (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx);
+            jj = k - (estim_params_.nvx+estim_params_.nvn);
+            k1 = estim_params_.corrx(jj,1);
+            k2 = estim_params_.corrx(jj,2);
+            vname = [deblank(lgx_(k1,:)) ',' deblank(lgx_(k2,:))];
+            nam=['CC_{',vname,'}'];
+        elseif  k <= (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
+		estim_params_.ncn)
+            jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx);
+            k1 = estim_params_.corrn(jj,1);
+            k2 = estim_params_.corrn(jj,2);
+            vname = [deblank(lgx_(k1,:)) ',' deblank(lgx_(k2,:))];
+            nam=['CC_{EOBS_',vname,'}'];
+        else
+            jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+estim_params_.ncn);
+            nam = deblank(estim_params_.param_names(jj,:));
+        end
+        xx = origin:step_size:nruns;
+        for crit = 1:3;
+            if crit == 1;
+                plt1 = R_interval(:,k,1);
+                plt2 = R_interval(:,k,2);
+                namnam  = [nam , ', R_{interval}']; 
+            elseif crit == 2;
+                plt1 = R_c1(:,k,1);
+                plt2 = R_c1(:,k,2);
+                namnam  = [nam , ', R_{c1}'];
+            elseif crit == 3;    
+                plt1 = R_c2(:,k,1);
+                plt2 = R_c2(:,k,2);
+                namnam  = [nam , ', R_{c2}'];
+            end;
+            subplot(4,3,boxplot);
+            plot(xx,plt1,'-b');
+            hold on;
+            plot(xx,plt2,'-r');
+            hold off;
+            title(namnam,'Interpreter','none');
+            boxplot = boxplot + 1;
+        end;
+    end;
+end;
+reste = npar-k;
+figure('Name','MCMC univariate diagnostic');
+boxplot = 1;
+for j = 1:reste;
+    k = k+1;
+    if k <= estim_params_.nvx;
+        vname = deblank(lgx_(estim_params_.var_exo(k,1),:));
+        nam=['SE_{',vname,'}'];
+    elseif  k <= (estim_params_.nvx+estim_params_.nvn);
+        vname = deblank(options_.varobs(estim_params_.var_endo(k-estim_params_.nvx,1),:));
+        nam=['SE_{EOBS_',vname,'}'];
+    elseif  k <= (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx);
+        jj = k - (estim_params_.nvx+estim_params_.nvn);
+        k1 = estim_params_.corrx(jj,1);
+        k2 = estim_params_.corrx(jj,2);
+        vname = [deblank(lgx_(k1,:)) ',' deblank(lgx_(k2,:))];
+        nam=['CC_{',vname,'}'];
+    elseif  k <= (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
+		estim_params_.ncn)
+        jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx);
+        k1 = estim_params_.corrn(jj,1);
+        k2 = estim_params_.corrn(jj,2);
+        vname = [deblank(lgx_(k1,:)) ',' deblank(lgx_(k2,:))];
+        nam = ['CC_{EOBS_',vname,'}'];
+    else
+        jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+estim_params_.ncn);
+        nam = deblank(estim_params_.param_names(jj,:));
+    end
+    xx = origin:step_size:nruns;
+    for crit = 1:3;
+        if crit == 1;
+            plt1 = R_interval(:,k,1);
+            plt2 = R_interval(:,k,2);
+            namnam  = [nam , ', R_{interval}']; 
+        elseif crit == 2;
+            plt1 = R_c1(:,k,1);
+            plt2 = R_c1(:,k,2);
+            namnam  = [nam , ', R_{c1}'];
+        elseif crit == 3;    
+            plt1 = R_c2(:,k,1);
+            plt2 = R_c2(:,k,2);
+            namnam  = [nam , ', R_{c2}'];
+        end;
+        subplot(reste,3,boxplot);
+        plot(xx,plt1,'-b');
+        hold on;
+        plot(xx,plt2,'-r');
+        hold off;
+        title(namnam,'Interpreter','none');
+        boxplot = boxplot + 1;
+    end;
+end;    
+    
+    
+    
+
diff --git a/tags/v_3.062/matlab/mcmcdiags.m b/tags/v_3.062/matlab/mcmcdiags.m
new file mode 100644
index 0000000000..9b896f604f
--- /dev/null
+++ b/tags/v_3.062/matlab/mcmcdiags.m
@@ -0,0 +1,114 @@
+function [R_interval,R_c1,R_c2] = mcmcdiags(x2,alpha,c1,c2,origin,step_size);
+% This function computes univariate mcmc diagnostics. See S. Brooks and A.
+% Gelman "General Methods for Monitoring Convergence of Iterative
+% Simulations".
+% 
+% stephane.adjemian@cepremap.cnrs.fr [01/05/2004] 
+
+global fname_
+
+
+f1 = [fname_ '_MH_diagnostics_1'];
+f2 = [fname_ '_MH_diagnostics_2'];
+
+
+npar  = size(x2,2);  
+nruns = size(x2,1);
+nblck = size(x2,3);
+ligne = 0;
+LIGNE = 0;
+
+R_interval = zeros(nruns,npar,2);
+MU1   = zeros(1,npar,nblck);
+
+BigArray  = cat(2,x2,zeros(nruns,npar,nblck));
+for i = 1:npar;
+    for j = 1:nblck;
+        [tmp,indx] = sort(BigArray(:,i,j));
+        BigArray(:,i,j) = tmp;
+        BigArray(:,i+npar,j) = indx;
+    end;
+end;
+save(f1,'BigArray');
+clear BigArray;
+BigMatrix = zeros(nruns*nblck,2*npar);
+tmp = (1:nruns)';
+for i=1:npar;
+    for j=1:nblck;
+        BigMatrix((j-1)*nruns+1:j*nruns,i) = x2(:,i,j);
+        BigMatrix((j-1)*nruns+1:j*nruns,npar+i) = tmp;
+    end;
+    pmt = sortrows([BigMatrix(:,i),BigMatrix(:,npar+i)],1);
+    BigMatrix(:,i) = pmt(:,1);
+    BigMatrix(:,npar+i) = pmt(:,2);    
+end;   
+save(f2,'BigMatrix');
+clear BigMatrix;
+
+load(f2);
+for iter  =  origin:step_size:nruns;
+    ligne = ligne + 1;
+    linea = ceil(0.5*iter);
+    n = iter-linea+1;
+    cinf = round(nblck*n*alpha/2);
+    csup = round(nblck*n*(1-alpha/2));
+    for i=1:npar;
+        linie = find(BigMatrix(:,npar+i) >= linea & ...
+            BigMatrix(:,npar+i)<=iter);
+        tmp = BigMatrix(linie,i); 
+        R_interval(ligne,i,1) = tmp(csup)-tmp(cinf);
+    end;
+end;
+clear BigMatrix;LIGNE = ligne;ligne = 0;
+R_interval = R_interval(1:LIGNE,:,:);
+load(f1);
+for iter  = origin:step_size:nruns;
+    ligne = ligne+1;
+    linea = ceil(0.5*iter);
+    n = iter-linea+1;
+    cinf = round(n*alpha/2);
+    csup = round(n*(1-alpha/2));
+    for i=1:npar;
+        for j=1:nblck;
+            linie = find(BigArray(:,npar+i,j) >= linea & ...
+                BigArray(:,npar+i,j)<=iter);
+            tmp = BigArray(linie,i,j); 
+            R_interval(ligne,i,2) = tmp(csup)-tmp(cinf);
+        end;    
+    end;
+end;
+clear BigArray;ligne = 0;
+
+R_c1 = zeros(LIGNE,npar,2);
+R_c2 = zeros(LIGNE,npar,2);
+
+for iter  = origin:step_size:nruns;
+    ligne  = ligne + 1; 
+    linea  = ceil(0.5*iter);
+    n      = iter-linea+1;
+    selvec = linea:iter;
+    MEAN1  = zeros(n,npar,nblck);
+    MEAN2  = zeros(n,npar,nblck);
+    tmp = x2(selvec,:,:);                    
+    mu1 = mean(mean(tmp,3),1);
+    mu2 = mean(tmp,1);
+    for j=1:nblck;
+        MU1(1,:,j) = mu1;
+    end;    
+    for t = 1:n;
+        MEAN1(t,:,:) = MU1;
+        MEAN2(t,:,:) = mu2;
+    end;    
+    R_c1(ligne,:,1) = sum(sum(abs(tmp-MEAN1).^c1,3),1)/(nblck*n-1);
+    R_c2(ligne,:,1) = sum(sum(abs(tmp-MEAN1).^c2,3),1)/(nblck*n-1);
+    R_c1(ligne,:,2) = sum(sum(abs(tmp-MEAN2).^c1,3),1)/(nblck*(n-1));
+    R_c2(ligne,:,2) = sum(sum(abs(tmp-MEAN2).^c2,3),1)/(nblck*(n-1));
+end;    
+
+R_c1 = R_c1.^(1/c1);
+R_c2 = R_c2.^(1/c2);
+
+delete([f1 '.mat'])
+delete([f2 '.mat'])
+
+% 2004/1/12 SA corrected bug line 59
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/mcompare.m b/tags/v_3.062/matlab/mcompare.m
new file mode 100644
index 0000000000..b5b8d13bc2
--- /dev/null
+++ b/tags/v_3.062/matlab/mcompare.m
@@ -0,0 +1,54 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function mcompare(s1,s2)
+% MCOMPARE :	MCOMPARE ( [ 'file1' ; 'file2' ] , [ 'var1' ; 'var2' ...] )	
+%		This optional command plots the relative differences between
+%		two different simulations for a list of variables. One plot 
+%		is drawn for each variable. The trajectories must have been
+%		previously saved by the instruction DYNASAVE. The simulation
+%		in file1 serves as the base simulation and the ploted quantity
+%		is equal to the difference between the two simulation reported
+%		to the first one. If, for a given variable, zero is one of the
+%		value of the base simulation, the absolute difference is ploted
+%		instead of the relative one.
+
+global dsmpl_ iter_
+global nvx nvy x y lag1
+
+ftest(s1,s2) ;
+
+ix = [1-lag1(1):size(x,2)-lag1(1)]' ;
+i = [lag1(1):size(ix,1)-lag1(2)+1]' ;
+
+if size(dsmpl_,1) == 1
+	error(['DSAMPLE not specified.']) ;
+end
+
+if dsmpl_(3) > 0
+	if dsmpl_(3) == 2
+		if dsmpl_(1)<0 | dsmpl_(2)>size(x,2)-lag1(2)
+			error ('Wrong sample.') ;
+		end
+		i = [dsmpl_(1)+lag1(1):dsmpl_(2)+lag1(1)]' ;
+	elseif dsmpl_(3) == 1
+		if dsmpl_(1)>size(x,2)-lag1(2)
+			error ('Wrong sample.') ;
+		end
+		i = [lag1(1):dsmpl_(1)+lag1(1)]' ;
+	end
+end
+
+for k = 1:size(x,1)
+	figure ;
+	x1 = x(k,i) ;
+	y1 = y(k,i) ;
+	if nnz(x1) < length(x1)
+		plot(ix(i),(y1-x1)) ;
+	else
+		plot(ix(i),(y1-x1)./x1) ;
+	end
+	xlabel(['Periods']) ;
+	title(['Variable ' s2(k)]) ;
+end
+
+return ;
diff --git a/tags/v_3.062/matlab/metropolis.m b/tags/v_3.062/matlab/metropolis.m
new file mode 100644
index 0000000000..7e28c970f0
--- /dev/null
+++ b/tags/v_3.062/matlab/metropolis.m
@@ -0,0 +1,3932 @@
+function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
+% stephane.adjemian@cepremap.cnrs.fr [07-31-2004]
+% Adapted from an older version of metropolis.m 
+
+  global bayestopt_ exo_nbr dr_ estim_params_ Sigma_e_ options_ xparam_test
+  global lgy_ lgx_ fname_ ys_ xkmin_ xkmax_ ykmin_ ykmax_ endo_nbr
+  global oo_ lgx_orig_ord_ lgy_TeX_ lgx_TeX_
+  global dsge_prior_weight
+
+  TeX       = options_.TeX;
+  nruns     = options_.mh_replic;
+  truns     = options_.mh_replic*options_.mh_nblck;
+  nblck     = options_.mh_nblck;
+  nvx       = estim_params_.nvx;
+  nvn       = estim_params_.nvn;
+  ncx       = estim_params_.ncx;
+  ncn       = estim_params_.ncn;
+  np        = estim_params_.np ;
+  nx        = nvx+nvn+ncx+ncn+np;
+  npar      = length(xparam1);
+  nvobs     = size(options_.varobs,1);
+  horizon = options_.forecast;
+
+  % options_.load_mh_file = -1;
+  
+
+  %% Determine the value of MAX_nruns, MAX_nforc, MAX_nsmoo and MAX_ninno values
+  MaxNumberOfBytes = 1000000;%% This value should be adjusted
+  MAX_nruns = ceil(MaxNumberOfBytes/(npar+2)/8);
+  MAX_nforc = ceil(MaxNumberOfBytes/((options_.forecast+ykmin_)*length(ys_))/8);
+  MAX_nsmoo = ceil(MaxNumberOfBytes/((endo_nbr)*gend)/8);
+  MAX_ninno = ceil(MaxNumberOfBytes/(exo_nbr*gend)/8);
+  MAX_nerro = ceil(MaxNumberOfBytes/(size(options_.varobs,1)*gend)/8);
+  MAX_nfilt = ceil(MaxNumberOfBytes/((endo_nbr)*gend)/8);
+  if options_.bayesian_irf
+    MAX_nirfs_dsge = ceil(MaxNumberOfBytes/(options_.irf*length(ys_)*exo_nbr)/8);
+    if ~isempty(dsge_prior_weight)
+      MAX_nirfs_dsgevar = ceil(MaxNumberOfBytes/(options_.irf*nvobs*exo_nbr)/8)
+    end
+  end
+  MAX_nthm1 = ceil(MaxNumberOfBytes/(length(ys_)*8));
+  MAX_nthm2 = ceil(MaxNumberOfBytes/(length(ys_)*length(ys_)*8));
+  MAX_nthm3 = ceil(MaxNumberOfBytes/(length(ys_)*exo_nbr*8));
+  MAX_nthm4 = ceil(MaxNumberOfBytes/(length(ys_)*options_.ar*8));
+
+  d     = chol(vv);
+  options_.lik_algo = 1;
+
+  if nruns
+    if options_.load_mh_file == 0
+      % Delete old mh files...
+      if nblck > 1
+	disp('MH: Multiple chains mode.')
+      else
+	disp('MH: One Chain mode.')
+      end
+      files = eval(['dir(''' fname_ '_mh*.mat'');']);
+      if length(files)
+	delete([fname_ '_mh*.mat']);
+	disp('MH: Old _mh files succesfully erased!')
+      end   
+      nops = 0;         % Number Of Past Simulations.
+      lfile = -1;       % Index for the last mh file.
+      if nblck > 1
+	disp('MH: Searching for initial values...')
+	ix2 = zeros(1,npar,nblck);
+	ilogpo2 = zeros(1,nblck);
+	for j=1:nblck
+	  validate  = 0;
+	  init_iter = 0;
+	  trial     = 1;
+	  while validate == 0 & trial <= 10 
+	    candidate = options_.mh_init_scale*randn(1,npar)*d + transpose(xparam1);
+	    if all(candidate' > mh_bounds(:,1)) & all(candidate' < mh_bounds(:,2)) 
+	      ix2(1,:,j) = candidate;
+	      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+                ilogpo2(1,j) = -DsgeLikelihood(ix2(1,:,j)',gend,data);
+	      else
+                ilogpo2(1,j) = -DsgeVarLikelihood(ix2(1,:,j)',gend);
+	      end
+	      j = j+1;
+	      validate = 1;
+	    end
+	    init_iter = init_iter + 1;
+	    if init_iter > 100 & validate == 0
+	      disp(['MH: I couldn''t get a valid initial value in 100 trials.'])
+	      disp(['MH: You should Reduce mh_init_scale...'])
+	      disp(sprintf('MH: Parameter mh_init_scale is equal to %f.',options_.mh_init_scale))
+	      options_.mh_init_scale = input('MH: Enter a new value...  ');
+	      trial = trial+1;
+	    end
+	  end
+	  if trial > 10 & ~validate
+	    error(['MH: I''m unable to find a starting value for block ' int2str(j)]);
+	  end
+	end
+	disp('MH: Initial values found!')
+	disp(' ')
+      else
+	candidate = transpose(xparam1);
+	if all(candidate' > mh_bounds(:,1)) & all(candidate' < mh_bounds(:,2)) 
+	  ix2 = candidate;
+	  if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	    ilogpo2 = -DsgeLikelihood(ix2',gend,data);
+	  else
+	    ilogpo2 = -DsgeVarLikelihood(ix2',gend);
+	  end
+	  disp('MH: Initialization at the posterior mode.')
+	  disp(' ')
+	else
+	  disp('MH: Initialization failed...')
+	  error('MH: The posterior mode lies outside the prior bounds.')
+	end
+      end
+      save([fname_ '_MhInitialization'],'ix2','ilogpo2');
+    elseif options_.load_mh_file == 1
+      disp('MH: I''m loading past metropolis-hastings simulations...')
+      if nblck>1
+	files = eval(['dir(''' fname_ '_mh*_blck*.mat'');']);
+	bfiles = eval(['dir(''' fname_ '_mh0_blck*.mat'');']);
+	lfile = length(files)/length(bfiles)-1;
+      else
+	files = eval(['dir(''' fname_ '_mh*.mat'');']);
+	bfiles = 1;
+	ifiles = eval(['dir(''' fname_ '_MhInitialization.mat'');']);
+	if isempty(ifiles)
+	  lfile = length(files)-1;
+	else
+	  lfile = length(files)-2;
+	end
+      end
+      if ~length(files)
+	error('MH: FAILURE :: there is no MH file to load here!')    
+      end
+      past_number_of_blocks = length(bfiles);
+      if length(bfiles)>0 & past_number_of_blocks ~= nblck
+	disp('MH: The specified number of blocks doesn''t match with the previous number of blocks!')
+	disp(['MH: You declared ' int2str(nblck) ' blocks, but the previous number of blocks was ' int2str(past_number_of_blocks) '.'])
+	disp(['MH: I will run the Metropolis-Hastings with ' int2str(past_number_of_blocks) ' blocks.' ])
+	nblck = past_number_of_blocks;
+	options_.mh_nblck = nblck;
+      end
+      %lfile = length(files)/nblck-1;
+      if nblck == 1
+	instr = [fname_ '_mh' int2str(lfile)];
+	eval(['load ' instr]);
+	clear post2;
+	nops = size(logpo2,1);  
+	ix2 = x2(nops,:);   
+	ilogpo2 = logpo2(nops);
+	clear x2  logpo2;     
+	for file = 0:lfile-1
+	  instr = [fname_ '_mh' int2str(file)];
+	  eval(['load ' instr]);
+	  clear post2 x2;
+	  nops = nops + size(logpo2,1);
+	end
+      else 
+	for b = 1:nblck
+	  instr = [fname_ '_mh' int2str(lfile) '_blck' int2str(b)];
+	  eval(['load ' instr]);
+	  clear post2;
+	  nops = length(logpo2);
+	  ix2(1,:,b) = x2(nops,:);  
+	  ilogpo2(b) = logpo2(nops);
+	  clear x2  logpo2;     
+	end
+	for file = 0:lfile-1
+	  instr = [fname_ '_mh' int2str(file) '_blck1'];
+	  eval(['load ' instr]);
+	  clear post2 x2;
+	  nops = nops + length(logpo2);
+	  clear logpo2;
+	end
+      end
+      % nops is the Number Of Past Simulations. 
+      disp(['MH: ... It''s done. I''ve loaded ' int2str(nops) 'simulations.'])
+      disp(' ')
+    elseif options_.load_mh_file == -1%%% Not ready...
+      instr = [fname_ '_MhInitialization'];
+      eval(['load ' instr]);
+      nblck = length(ilogpo2);
+      options_.mh_nblck = nblck;
+      % Count the total number of saved mh files
+      AllMhFiles = eval(['dir(''' fname_ '_mh*_blck*.mat'');']);
+      TotalNumberOfMhFiles = length(AllMhFiles);
+      % Count the number of saved mh files per block
+      NumberOfMhFilesPerBlock = zeros(nblck,1); 
+      for i = 1:nblck
+	BlckMhFiles = eval(['dir(''' fname_ '_mh*_blck' int2str(i) '.mat'');']);
+	NumberOfMhFilesPerBlock(i) = length(BlckMhFiles);
+      end
+      NumberOfMhFilesPerBlock
+      return
+    end    
+    isux = 0; 
+    if nblck == 1
+      hh   = waitbar(0,'Please wait... Metropolis-Hastings...');
+      set(hh,'Name','Metropolis-Hastings')
+      if nruns <= MAX_nruns
+	x2 = zeros(nruns,npar); 
+	x2(1,:) = ix2(1,:);
+	logpo2 = zeros(nruns,1);    
+	logpo2(1) = ilogpo2;    
+      else
+	x2 = zeros(MAX_nruns,npar);
+	x2(1,:) = ix2(1,:);
+	logpo2 = zeros(MAX_nruns,1);
+	logpo2(1) = ilogpo2;
+      end
+      irun = ~options_.load_mh_file;    %%%% irun=0 <-- previous files are loaded
+      rruns = nruns-irun;
+      j=1;
+      while j<=rruns
+	irun = irun + 1;
+	if irun <= MAX_nruns
+	  par = randn(1,npar)*d;
+	  par = par.*bayestopt_.jscale' + ix2;  
+	  if all(transpose(par) > mh_bounds(:,1)) & all(transpose(par) < mh_bounds(:,2))
+	    if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	      logpost = -DsgeLikelihood(transpose(par),gend,data);
+	    else
+	      logpost = -DsgeVarLikelihood(transpose(par),gend);
+	    end
+	  else
+	    logpost = -inf;
+	  end    
+	  if logpost > -inf & log(rand) < logpost - ilogpo2
+	    x2(irun,:) = par; 
+	    ix2 = par;
+	    logpo2(irun) = logpost; 
+	    ilogpo2 = logpost;
+	    isux = isux + 1;
+	  else    
+	    x2(irun,:) = ix2;
+	    logpo2(irun) = ilogpo2;
+	  end   
+	  prtfrc = j/nruns;
+	  waitbar(prtfrc,hh,sprintf('%f done, acceptation rate %f',prtfrc,isux/j));
+	else
+	  post2 = exp(logpo2);
+	  save([fname_ '_mh' int2str(lfile+1)],'x2','logpo2','post2');
+	  clear x2 logpo2 post2;
+	  x2 = zeros(MAX_nruns,npar);
+	  logpo2 = zeros(MAX_nruns,1);
+	  lfile = lfile + 1;
+	  irun = 0;
+	  j = j - 1;
+	end
+	j = j + 1;
+      end
+      if nruns <= MAX_nruns
+	post2 = exp(logpo2);
+	save([fname_ '_mh' int2str(lfile+1)],'x2','logpo2','post2');
+	clear post2 x2 logpo2;
+      elseif irun <= MAX_nruns    
+	x2 = x2(1:irun,:);
+	logpo2 = logpo2(1:irun,1); 
+	post2 = exp(logpo2);
+	save([fname_ '_mh' int2str(lfile+1)],'x2','logpo2','post2');
+	clear post2 x2 logpo2;
+      end
+      close(hh)
+      disp(sprintf('Acceptation rate : %f',isux/nruns))
+    else
+      disp('Acceptation rates :')
+      for b=1:nblck
+	hh   = waitbar(0,'Please wait... Metropolis-Hastings...');
+	set(hh,'Name',['Metropolis-Hastings, Block ',int2str(b)]);
+	if nruns <= MAX_nruns
+	  x2 = zeros(nruns,npar);   
+	  x2(1,:) = ix2(1,:,b);
+	  logpo2 = zeros(nruns,1);  
+	  logpo2(1) = ilogpo2(1,b); 
+	else
+	  x2 = zeros(MAX_nruns,npar);
+	  x2(1,:) = ix2(1,:,b);
+	  logpo2 = zeros(MAX_nruns,1);
+	  logpo2(1) = ilogpo2(1,b);
+	end 
+	irun  = ~options_.load_mh_file; % Previous files are loaded <-- irun=0
+	rruns = nruns-irun;
+	isav = 0;
+	isux = 0;
+	j = 1;
+	while j <= rruns
+	  irun = irun + 1;
+	  if irun <= MAX_nruns
+	    par = randn(1,npar)*d;
+	    par = par.*transpose(bayestopt_.jscale) + ix2(1,:,b);  
+	    if all(transpose(par) > mh_bounds(:,1)) & all(transpose(par) < mh_bounds(:,2))
+	      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+		logpost = -DsgeLikelihood(transpose(par),gend,data);
+	      else
+		logpost = -DsgeVarLikelihood(transpose(par),gend);
+	      end
+	    else
+	      logpost = -inf;
+	    end    
+	    if logpost > -inf & log(rand) < logpost - ilogpo2(1,b)
+	      x2(irun,:) = par; 
+	      ix2(1,:,b) = par;
+	      logpo2(irun) = logpost; 
+	      ilogpo2(1,b) = logpost;
+	      isux = isux + 1;
+	    else    
+	      x2(irun,:) = ix2(1,:,b);
+	      logpo2(irun) = ilogpo2(1,b);
+	    end 
+	    prtfrc = j/nruns;
+	    waitbar(prtfrc,hh,sprintf('%f done, acceptation rate %f',prtfrc,isux/j));
+	  else
+	    post2 = exp(logpo2);
+	    save([fname_ '_mh' int2str(lfile+1+isav) '_blck' int2str(b)],'x2','logpo2','post2');
+	    clear post2;
+	    x2 = zeros(MAX_nruns,npar);
+	    logpo2 = zeros(MAX_nruns,1);
+	    isav = isav + 1;
+	    irun = 0;
+	    j=j-1;
+	  end
+	  j = j+1; 
+	end
+	if nruns <= MAX_nruns
+	  post2 = exp(logpo2);
+	  save([fname_ '_mh' int2str(lfile+isav+1) '_blck' int2str(b)],'x2','logpo2','post2');
+	  clear post2 x2 logpo2;
+	elseif irun <= MAX_nruns    
+	  x2 = x2(1:irun,:);
+	  logpo2 = logpo2(1:irun,1); 
+	  post2 = exp(logpo2);
+	  save([fname_ '_mh' int2str(lfile+isav+1) '_blck' int2str(b)],'x2','logpo2','post2');
+	  clear post2 x2 logpo2;
+	end
+	disp(sprintf('Block %d: %f',b,isux/nruns))
+	close(hh)
+      end
+    end
+    disp(' ')
+    disp(['MH: Total number of iterations       : ' int2str(nops+nruns) '.'])
+  end %end if nruns
+  if nblck == 1
+    files = eval(['dir(''' fname_ '_mh*.mat'');']);
+    nfile = length(files)-2;
+    number_of_simulations_per_file = zeros(nfile+1,1);
+    instr = [fname_ '_mh' int2str(0)];
+    eval(['load ' instr]);
+    clear x2 post2;
+    number_of_simulations_per_file(1) = length(logpo2);
+    if nfile >= 1
+      for file = 1:nfile
+	instr = [fname_ '_mh' int2str(file)];
+	eval(['load ' instr]);
+	clear post2 x2;
+	number_of_simulations_per_file(file+1) = length(logpo2);
+      end
+    end
+    clear logpo2;
+    if ~nruns
+      tmp  = cumsum(number_of_simulations_per_file);
+      nops = tmp(nfile+1); clear tmp;
+    end
+  else
+    files = eval(['dir(''' fname_ '_mh*_blck1.mat'');']);   
+    nfile = length(files)-1;
+    number_of_simulations_per_file = zeros(nfile+1,1);
+    instr = [fname_ '_mh' int2str(0) '_blck' int2str(1)];
+    eval(['load ' instr]);
+    clear x2 post2;
+    number_of_simulations_per_file(1) = length(logpo2);
+    if nfile >= 1
+      for file = 1:nfile
+	instr = [fname_ '_mh' int2str(file) '_blck1'];
+	eval(['load ' instr]);
+	clear post2 x2;
+	number_of_simulations_per_file(file+1) = length(logpo2);
+      end
+    end
+    clear logpo2;
+    if ~nruns
+      tmp  = cumsum(number_of_simulations_per_file);
+      nops = tmp(nfile+1); clear tmp;
+      bfiles = eval(['dir(''' fname_ '_mh0_blck*.mat'');']);
+      past_number_of_blocks = length(bfiles);
+      if past_number_of_blocks ~= nblck
+	nblck = past_number_of_blocks;
+	options_.mh_nblck = nblck;
+      end
+    end
+  end
+  cumulated_number_of_simulations_per_file = cumsum(number_of_simulations_per_file);
+  disp(['MH: Number of mh files             : ' int2str(nfile+1) ' per block.'])
+  disp(['MH: Total number of generated files    : ' int2str((nfile+1)*nblck) '.'])
+  disp(['MH: Total number of iterations         : ' int2str(nops+nruns) '.'])
+  disp('MH: Number of simulations per file: ')
+  for i=0:nfile
+    disp(sprintf('    The number of simulations in file %d is: %d.',i,number_of_simulations_per_file(i+1)))
+  end
+  disp(' ')
+  nsim = nops+nruns;
+  %
+  %%
+  %%%
+  %%%%
+  %%%%% MCMC convergence diagnostics
+  %%%%
+  %%%
+  %%
+  %
+  origin = 1000;
+  if ~options_.nodiagnostic & nblck > 1 & nsim > origin
+    %%
+    %%  Univariate diagnostic : Brooks and Gelman (1998).
+    %%
+    step_size   = ceil((nsim-origin)/100);  % So that the computational time does not 
+    ALPHA       = 0.2;                      % increase too much with the number of simulations. 
+    time = 1:nsim;
+    xx = origin:step_size:nsim;
+    number_of_lines = length(xx);
+    tmp = zeros(nsim*nblck,3);
+    UDIAG = zeros(number_of_lines,6,npar);
+    if nsim < origin
+      error('MH: The number of simulations is to small to compute the MCMC convergence diagnostics.')
+    end
+    if TeX
+      fidTeX = fopen([fname_ '_UnivariateDiagnostics.TeX'],'w');
+      fprintf(fidTeX,'%% TeX eps-loader file generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+      fprintf(fidTeX,' \n');
+    end
+    disp('MH: Univariate convergence diagnostic, Brooks and Gelman (1998):')
+    for j=1:npar
+      fprintf('    Parameter %d...  ',j);
+      for b = 1:nblck
+    startline = 0;
+    for n = 0:nfile
+      instr = [fname_ '_mh' int2str(n) '_blck' int2str(b)];
+      eval(['load ' instr]);
+      clear logpo2 post2;
+      tmp((b-1)*nsim+startline+1:(b-1)*nsim+cumulated_number_of_simulations_per_file(n+1),1) = x2(:,j);
+      clear x2;
+      startline = startline+number_of_simulations_per_file(n+1);
+    end 
+      end
+      tmp(:,2) = kron(transpose(1:nblck),ones(nsim,1));
+      tmp(:,3) = kron(ones(nblck,1),transpose(time)); 
+      tmp = sortrows(tmp,1);
+      ligne   = 0;
+      for iter  = origin:step_size:nsim
+    ligne = ligne+1;
+    linea = ceil(0.5*iter);
+    n     = iter-linea+1;
+    cinf  = round(n*ALPHA/2);
+    csup  = round(n*(1-ALPHA/2));
+    CINF  = round(nblck*n*ALPHA/2);
+    CSUP  = round(nblck*n*(1-ALPHA/2));
+    temp  = tmp(find((tmp(:,3)>=linea) & (tmp(:,3)<=iter)),1:2);
+    UDIAG(ligne,1,j) = temp(CSUP,1)-temp(CINF,1);
+    moyenne = mean(temp(:,1));%% Pooled mean.
+    UDIAG(ligne,3,j) = sum((temp(:,1)-moyenne).^2)/(nblck*n-1);
+    UDIAG(ligne,5,j) = sum(abs(temp(:,1)-moyenne).^3)/(nblck*n-1);
+    for i=1:nblck
+      pmet = temp(find(temp(:,2)==i));
+      UDIAG(ligne,2,j) = UDIAG(ligne,2,j) + pmet(csup,1)-pmet(cinf,1);
+      moyenne = mean(pmet,1); %% Within mean. 
+      UDIAG(ligne,4,j) = UDIAG(ligne,4,j) + sum((pmet(:,1)-moyenne).^2)/(n-1);
+      UDIAG(ligne,6,j) = UDIAG(ligne,6,j) + sum(abs(pmet(:,1)-moyenne).^3)/(n-1);
+    end
+      end
+      fprintf('Done! \n');
+    end
+    UDIAG(:,[2 4 6],:) = UDIAG(:,[2 4 6],:)/nblck;
+    disp(' ')
+    clear pmet temp moyenne CSUP CINF csup cinf n linea iter tmp;    
+    pages = floor(npar/3);
+    k = 0;  
+    for i = 1:pages
+      h = figure('Name','MCMC univariate diagnostic (Brooks and Gelman,1998)');
+      boxplot = 1;
+      if TeX
+    NAMES = [];
+    TEXNAMES = [];
+      end
+      for j = 1:3 % Loop over parameters
+    k = k+1;
+    [nam,namtex] = get_the_name(k,TeX);
+    for crit = 1:3% Loop over criteria
+      if crit == 1
+        plt1 = UDIAG(:,1,k);
+        plt2 = UDIAG(:,2,k);
+        namnam  = [nam , ' (Interval)']; 
+      elseif crit == 2
+        plt1 = UDIAG(:,3,k);
+        plt2 = UDIAG(:,4,k);
+        namnam  = [nam , ' (m2)'];
+      elseif crit == 3    
+        plt1 = UDIAG(:,5,k);
+        plt2 = UDIAG(:,6,k);
+        namnam  = [nam , ' (m3)'];
+      end
+      if TeX
+        NAMES = strvcat(NAMES,deblank(namnam));
+        TEXNAMES = strvcat(TEXNAMES,deblank(namtex));
+      end
+      subplot(3,3,boxplot);
+      plot(xx,plt1,'-b');     % Pooled
+      hold on;
+      plot(xx,plt2,'-r');     % Within (mean)
+      hold off;
+      xlim([xx(1) xx(number_of_lines)])
+      title(namnam,'Interpreter','none')
+      boxplot = boxplot + 1;
+    end
+      end
+      eval(['print -depsc2 ' fname_ '_udiag' int2str(i)]);
+      eval(['print -dpdf ' fname_ '_udiag' int2str(i)]);
+      saveas(h,[fname_ '_udiag' int2str(i) '.fig']);
+      if options_.nograph, close(h), end
+      if TeX
+    fprintf(fidTeX,'\\begin{figure}[H]\n');
+    for jj = 1:size(NAMES,1)
+      fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
+    end    
+    fprintf(fidTeX,'\\centering \n');
+    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_udiag%s}\n',fname_,int2str(i));
+    fprintf(fidTeX,'\\caption{Univariate convergence diagnostics for the Metropolis-Hastings.\n');
+    fprintf(fidTeX,'The first, second and third columns are respectively the criteria based on\n');
+    fprintf(fidTeX,'the eighty percent interval, the second and third moments.}');
+    fprintf(fidTeX,'\\label{Fig:UnivariateDiagnostics:%s}\n',int2str(i));
+    fprintf(fidTeX,'\\end{figure}\n');
+    fprintf(fidTeX,'\n');
+      end
+    end
+    reste = npar-k;
+    if reste
+      if reste == 1
+    nr = 3;
+    nc = 1;
+      elseif reste == 2;
+    nr = 2;
+    nc = 3;
+      end
+      if TeX
+    NAMES = [];
+    TEXNAMES = [];
+      end
+      h = figure('Name','MCMC univariate diagnostic (Brooks and Gelman, 1998)');
+      boxplot = 1;
+      for j = 1:reste
+    k = k+1;
+    [nam,namtex] = get_the_name(k,TeX);
+    for crit = 1:3
+      if crit == 1
+        plt1 = UDIAG(:,1,k);
+        plt2 = UDIAG(:,2,k);
+        namnam  = [nam , ' (Interval)']; 
+      elseif crit == 2
+        plt1 = UDIAG(:,3,k);
+        plt2 = UDIAG(:,4,k);
+        namnam  = [nam , ' (m2)'];
+      elseif crit == 3    
+        plt1 = UDIAG(:,5,k);
+        plt2 = UDIAG(:,6,k);
+        namnam  = [nam , ' (m3)'];
+      end
+      if TeX
+        NAMES = strvcat(NAMES,deblank(namnam));
+        TEXNAMES = strvcat(TEXNAMES,deblank(namtex));
+      end
+      subplot(nr,nc,boxplot);
+      plot(xx,plt1,'-b');                   % Pooled
+      hold on;
+      plot(xx,plt2,'-r');                   % Within (mean)
+      hold off;
+      xlim([xx(1) xx(number_of_lines)]);
+      title(namnam,'Interpreter','none');
+      boxplot = boxplot + 1;
+    end
+      end
+      eval(['print -depsc2 ' fname_ '_udiag' int2str(pages+1)]);
+      eval(['print -dpdf ' fname_ '_udiag' int2str(pages+1)]);
+      saveas(h,[fname_ '_udiag' int2str(pages+1) '.fig']);
+      if options_.nograph, close(h), end
+      if TeX
+    fprintf(fidTeX,'\\begin{figure}[H]\n');
+    for jj = 1:size(NAMES,1);
+      fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
+    end    
+    fprintf(fidTeX,'\\centering \n');
+    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_udiag%s}\n',fname_,int2str(pages+1));
+    if reste == 2
+      fprintf(fidTeX,'\\caption{Univariate convergence diagnostics for the Metropolis-Hastings.\n');
+      fprintf(fidTeX,'The first, second and third columns are respectively the criteria based on\n');
+      fprintf(fidTeX,'the eighty percent interval, the second and third moments.}');
+    elseif reste == 1
+      fprintf(fidTeX,'\\caption{Univariate convergence diagnostics for the Metropolis-Hastings.\n');
+      fprintf(fidTeX,'The first, second and third rows are respectively the criteria based on\n');
+      fprintf(fidTeX,'the eighty percent interval, the second and third moments.}');
+    end
+    fprintf(fidTeX,'\\label{Fig:UnivariateDiagnostics:%s}\n',int2str(pages+1));
+    fprintf(fidTeX,'\\end{figure}\n');
+    fprintf(fidTeX,'\n');
+    fprintf(fidTeX,'% End Of TeX file.');
+    fclose(fidTeX);
+      end
+    end % if reste > 0
+    clear UDIAG;
+    %%
+    %% Multivariate diagnostic.
+    %%
+    if TeX
+      fidTeX = fopen([fname_ '_MultivariateDiagnostics.TeX'],'w');
+      fprintf(fidTeX,'%% TeX eps-loader file generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+      fprintf(fidTeX,' \n');
+      NAMES = [];
+    end
+    tmp = zeros(nsim*nblck,3);
+    MDIAG = zeros(number_of_lines,6);
+    for b = 1:nblck
+      startline = 0;
+      for n = 0:nfile
+    instr = [fname_ '_mh' int2str(n) '_blck' int2str(b)];
+    eval(['load ' instr]);
+    clear x2 post2;
+    tmp((b-1)*nsim+startline+1:(b-1)*nsim+cumulated_number_of_simulations_per_file(n+1),1) = logpo2;
+    startline = startline+number_of_simulations_per_file(n+1);
+      end   
+    end
+    clear logpo2;
+    tmp(:,2) = kron(transpose(1:nblck),ones(nsim,1));
+    tmp(:,3) = kron(ones(nblck,1),transpose(time)); 
+    tmp = sortrows(tmp,1);
+    ligne   = 0;
+    for iter  = origin:step_size:nsim
+      ligne = ligne+1;
+      linea = ceil(0.5*iter);
+      n     = iter-linea+1;
+      cinf  = round(n*ALPHA/2);
+      csup  = round(n*(1-ALPHA/2));
+      CINF  = round(nblck*n*ALPHA/2);
+      CSUP  = round(nblck*n*(1-ALPHA/2));
+      temp  = tmp(find((tmp(:,3)>=linea) & (tmp(:,3)<=iter)),1:2);
+      MDIAG(ligne,1) = temp(CSUP,1)-temp(CINF,1);
+      moyenne = mean(temp(:,1));%% Pooled mean.
+      MDIAG(ligne,3) = sum((temp(:,1)-moyenne).^2)/(nblck*n-1);
+      MDIAG(ligne,5) = sum(abs(temp(:,1)-moyenne).^3)/(nblck*n-1);
+      for i=1:nblck
+	pmet = temp(find(temp(:,2)==i));
+	MDIAG(ligne,2) = MDIAG(ligne,2) + pmet(csup,1)-pmet(cinf,1);
+	moyenne = mean(pmet,1); %% Within mean. 
+	MDIAG(ligne,4) = MDIAG(ligne,4) + sum((pmet(:,1)-moyenne).^2)/(n-1);
+	MDIAG(ligne,6) = MDIAG(ligne,6) + sum(abs(pmet(:,1)-moyenne).^3)/(n-1);
+      end
+    end
+    MDIAG(:,[2 4 6],:) = MDIAG(:,[2 4 6],:)/nblck;  
+    h = figure('Name','Multivatiate diagnostic');
+    boxplot = 1;
+    for crit = 1:3
+      if crit == 1
+	plt1 = MDIAG(:,1);
+	plt2 = MDIAG(:,2);
+	namnam  = 'Interval'; 
+      elseif crit == 2
+	plt1 = MDIAG(:,3);
+	plt2 = MDIAG(:,4);
+	namnam  = 'm2';
+      elseif crit == 3    
+	plt1 = MDIAG(:,5);
+	plt2 = MDIAG(:,6);
+	namnam  = 'm3';
+      end
+      if TeX
+	NAMES = strvcat(NAMES,namnam);
+      end
+      subplot(3,1,boxplot);
+      plot(xx,plt1,'-b');  % Pooled
+      hold on
+      plot(xx,plt2,'-r');  % Within (mean)
+      hold off
+      xlim([xx(1) xx(number_of_lines)])
+      title(namnam,'Interpreter','none');
+      boxplot = boxplot + 1;
+    end
+    eval(['print -depsc2 ' fname_ '_mdiag']);
+    eval(['print -dpdf ' fname_ '_mdiag']);
+    saveas(h,[fname_ '_mdiag.fig']);
+    if options_.nograph, close(h), end
+    if TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:3
+	fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),' ');
+      end    
+      fprintf(fidTeX,'\\centering \n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_mdiag}\n',fname_);
+      fprintf(fidTeX,'\\caption{Multivariate convergence diagnostics for the Metropolis-Hastings.\n');
+      fprintf(fidTeX,'The first, second and third rows are respectively the criteria based on\n');
+      fprintf(fidTeX,'the eighty percent interval, the second and third moments. The different \n');
+      fprintf(fidTeX,'parameters are aggregated using the posterior kernel.}');
+      fprintf(fidTeX,'\\label{Fig:MultivariateDiagnostics}\n');
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,'\n');
+      fprintf(fidTeX,'% End Of TeX file.');
+      fclose(fidTeX);
+    end
+  end % End of if ~options_.nodiagnostic
+  %%
+  %% Now i discard some simulations...
+  %%
+  trun = cumulated_number_of_simulations_per_file(nfile+1);
+  irun = floor(options_.mh_drop*trun)+1;
+  ffil = 0;       % The first MH file we have to read...
+  ifil = irun;    % and the first line we have to read in this file.
+  for ffil = 0:nfile
+    if irun <= cumulated_number_of_simulations_per_file(ffil+1)
+      break
+    end
+    ifil = ifil-number_of_simulations_per_file(ffil+1);
+  end
+  trun = trun-irun+1;
+  fprintf('MH: I''ll use mh-files %d to %d.\n',ffil,nfile);
+  fprintf('MH: In mh-file number %d i''ll start at line %d.\n',ffil,ifil);
+  fprintf('MH: Finally the total number of simulations is %d.\n',trun);
+  disp(' ');
+  %
+  %%
+  %%%
+  %%%%
+  %%%%% Modified harmonic mean
+  %%%%
+  %%%
+  %%
+  %
+  fprintf('MH: I''m computing the posterior mean... ');
+  MU = zeros(1,npar);
+  lpost_mode = -Inf;
+  for  b = 1:nblck
+    if nblck > 1
+      instr = [fname_ '_mh' int2str(ffil) '_blck' int2str(b)];
+    else
+      instr = [fname_ '_mh' int2str(ffil)];
+    end
+    eval(['load ' instr]); clear post2;
+    MU(1,:) = MU(1,:) + sum(x2(ifil:end,:),1);
+    lpost_mode = max(lpost_mode,max(logpo2(ifil:end,1)));
+  end
+  for n = ffil+1:nfile
+    for b = 1:nblck
+      if nblck > 1
+	instr = [fname_ '_mh' int2str(n) '_blck' int2str(b)];
+      else
+	instr = [fname_ '_mh' int2str(n)];
+      end
+      eval(['load ' instr]);
+      clear post2;
+      MU(1,:) = MU(1,:) + sum(x2,1);
+      lpost_mode = max(lpost_mode,max(logpo2));
+    end
+  end
+  clear x2 logpo2;
+  MU = MU/(trun*nblck);
+  fprintf(' Done!\n');
+  fprintf('MH: I''m computing the posterior covariance matrix... ');
+  SIGMA = zeros(npar,npar);
+  for b = 1:nblck
+    if nblck > 1
+      instr = [fname_ '_mh' int2str(ffil) '_blck' int2str(b)];
+    else
+      instr = [fname_ '_mh' int2str(ffil)];
+    end  
+    eval(['load ' instr]);
+    clear post2 logpo2;
+    SIGMA = SIGMA + transpose(x2(ifil:end,:)-ones(size(x2(ifil:end,:),1),1)*MU)*...
+	    (x2(ifil:end,:)-ones(size(x2(ifil:end,:),1),1)*MU);
+  end               
+  for n = ffil+1:nfile
+    for b = 1:nblck
+      if nblck > 1
+	instr = [fname_ '_mh' int2str(n) '_blck' int2str(b)];
+      else
+	instr = [fname_ '_mh' int2str(n)];
+      end
+      eval(['load ' instr]);
+      clear post2 logpo2;
+      SIGMA = SIGMA + transpose(x2-ones(size(x2,1),1)*MU)*(x2-ones(size(x2,1),1)*MU);
+    end             
+  end
+  clear x2;
+  SIGMA =  SIGMA/(trun*nblck);%<=== Variance of the parameters (ok!)
+  fprintf(' Done!\n');
+  disp(' ');
+  disp('MH: I''m computing the posterior log marginale density (modified harmonic mean)... ');
+  detSIGMA = det(SIGMA);
+  invSIGMA = inv(SIGMA);
+  marginal = zeros(9,2);
+  linee = 0;
+  check_coverage  = 1;
+  increase        = 1;
+  while check_coverage
+    for p = 0.1:0.1:0.9;
+      critval = qchisq(p,npar);
+      tmp = 0;
+      for k = ffil:nfile
+    inst = [fname_ '_mh' int2str(k)];
+    if k == ffil
+      i1 = ifil;
+    else
+      i1 = 1;
+    end
+    EndOfFile = number_of_simulations_per_file(k+1);
+    for b=1:nblck
+      if nblck > 1
+        instr = [inst '_blck' int2str(b)];
+      else
+        instr = inst;
+      end  
+      load(instr,'x2','logpo2');
+      for i = i1:EndOfFile
+        deviation  = (x2(i,:)-MU)*invSIGMA*(x2(i,:)-MU)';
+        if deviation <= critval
+          lftheta = -log(p)-(npar*log(2*pi)+log(detSIGMA)+deviation)/2;
+          tmp = tmp + exp(lftheta - logpo2(i)+lpost_mode);
+        end
+      end
+    end 
+      end
+      clear x2 logpo2;
+      linee = linee + 1;    
+      marginal(linee,:) = [p,lpost_mode-log(tmp/(trun*nblck))];
+    end
+    if abs((marginal(9,2)-marginal(1,2))/marginal(9,2)) > 0.01 | isinf(marginal(1,2))
+      if increase == 1
+	disp('MH: The support of the weighting density function is not large enough...')
+	disp('MH: I increase the variance of this distribution.')
+	increase = 1.2*increase;
+	invSIGMA = inv(SIGMA*increase);
+	detSIGMA = det(SIGMA*increase);
+	linee    = 0;   
+      else
+	disp('MH: Let me try again.')
+	increase = 1.2*increase;
+	invSIGMA = inv(SIGMA*increase);
+	detSIGMA = det(SIGMA*increase);
+	linee    = 0;
+	if increase > 20
+	  check_coverage = 0;
+	  clear invSIGMA detSIGMA increase;
+	  disp('MH: There''s probably a problem with the modified harmonic mean estimator.')    
+	end    
+      end    
+    else
+      check_coverage = 0;
+      clear invSIGMA detSIGMA increase;
+      disp('MH: Modified harmonic mean estimator, done!')
+    end
+  end
+  %
+  %%
+  %%%
+  %%%%
+  %%%%% Highest Probability Intervals (coverage is given by options_.mh_conf_sig)
+  %%%%
+  %%%
+  %%
+  %
+  disp(' ')
+  fprintf('MH: I''m computing the Highest Probability Intervals... ');
+  post_mean = transpose(MU);
+  n = trun*nblck;
+  n1    = round((1-options_.mh_conf_sig)*n);
+  k = zeros(n1,1);
+  tmp = zeros(n,1);
+  if nblck == 1
+    for i = 1:npar
+      EndOfFile = number_of_simulations_per_file(ffil+1)-ifil+1;
+      instr = [fname_ '_mh' int2str(ffil)];
+      eval(['load ' instr]);
+      clear post2 logpo2;
+      tmp(1:EndOfFile) = x2(ifil:end,i);
+      OldEndOfFile = EndOfFile;
+      for f = ffil+1:nfile
+	NewEndOfFile = number_of_simulations_per_file(f+1);
+	instr = [fname_ '_mh' int2str(f)];
+	eval(['load ' instr]);
+	clear post2 logpo2;
+	tmp(OldEndOfFile+1:OldEndOfFile+NewEndOfFile) = x2(:,i);
+	OldEndOfFile = OldEndOfFile + NewEndOfFile;
+      end
+      clear x2;
+      tmp = sort(tmp);
+      j2 = n-n1;
+      for j1 = 1:n1
+	k(j1) = tmp(j2)-tmp(j1);
+	j2 = j2 + 1;
+      end
+      [kmin,k1] = min(k);
+      min_interval(i,:) = [tmp(k1) tmp(k1)+kmin];
+    end
+    clear tmp;
+  else
+    for i = 1:npar
+      EndOfFile = number_of_simulations_per_file(ffil+1)-ifil+1;
+      NewStartLine = 0;
+      inst = [fname_ '_mh' int2str(ffil)];
+      for b = 1:nblck
+	instr = [inst '_blck' int2str(b)];
+	eval(['load ' instr]);
+	clear post2 logpo2;
+	tmp(NewStartLine+1:NewStartLine+EndOfFile,1) = x2(ifil:end,i);
+	NewStartLine = NewStartLine + EndOfFile;
+      end
+      for f = ffil+1:nfile
+	EndOfFile = number_of_simulations_per_file(f+1);
+	inst = [fname_ '_mh' int2str(f)];
+	for B = 1:nblck
+	  instr = [inst '_blck' int2str(b)];
+	  eval(['load ' instr]);
+	  clear post2 logpo2;
+	  tmp(NewStartLine+1:NewStartLine+EndOfFile,1) = x2(:,i);
+	  NewStartLine = NewStartLine + EndOfFile;
+	end
+      end
+      clear x2;
+      tmp = sort(tmp);
+      j2 = n-n1;
+      for j1 = 1:n1
+	k(j1) = tmp(j2)-tmp(j1);
+	j2 = j2 + 1;
+      end
+      [kmin,k1] = min(k);
+      min_interval(i,:) = [tmp(k1) tmp(k1)+kmin];
+    end
+    clear tmp;
+  end
+  fprintf(' Done!\n');
+  %
+  %%
+  %%%
+  %%%%
+  %%%%% Print results
+  %%%%
+  %%%
+  %%
+  %%
+  %% [1] On screen
+  %%
+  disp(' ');
+  disp(' ')
+  marginal
+  disp(' ')
+  disp(' ')
+  disp('ESTIMATION RESULTS')
+  disp(' ')
+  disp(sprintf('Log data density is %f.',mean(marginal(:,2))))
+  oo_.MarginalDensity.ModifiedHarmonicMean = mean(marginal(:,2));
+  pnames=['     ';'beta ';'gamm ';'norm ';'invg ';'unif ';'invg2'];
+  tit2 = sprintf('%10s %7s %10s %14s %4s %6s\n',' ','prior mean', ...
+         'post. mean','conf. interval','prior','pstdev');
+  ip = nvx+nvn+ncx+ncn+1;
+  if np
+    disp(' ')
+    disp('parameters')
+    disp(tit2)
+    for i=1:np
+      disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ...
+           deblank(estim_params_.param_names(i,:)), ...
+           bayestopt_.pmean(ip),post_mean(ip),min_interval(ip,:), ...
+           pnames(bayestopt_.pshape(ip)+1,:), ...
+           bayestopt_.pstdev(ip)));
+      eval(['oo_.posterior_mean.parameters.' deblank(estim_params_.param_names(i,:)) ' = post_mean(ip);']);
+      eval(['oo_.posterior_hpdinf.parameters.' deblank(estim_params_.param_names(i,:)) ' = min_interval(ip,1);']); 
+      eval(['oo_.posterior_hpdsup.parameters.' deblank(estim_params_.param_names(i,:)) ' = min_interval(ip,2);']);
+      ip = ip+1;
+    end
+  end
+  if nvx
+    ip = 1;
+    disp(' ')
+    disp('standard deviation of shocks')
+    disp(tit2)
+    for i=1:nvx
+      k = estim_params_.var_exo(i,1);
+      disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ...
+           deblank(lgx_(k,:)),bayestopt_.pmean(ip),post_mean(ip), ...
+           min_interval(ip,:),pnames(bayestopt_.pshape(ip)+1,:), ...
+           bayestopt_.pstdev(ip))); 
+      Sigma_e_(k,k) = post_mean(ip)*post_mean(ip);
+      eval(['oo_.posterior_mean.shocks_std.' deblank(lgx_(k,:)) ' = post_mean(ip);']);
+      eval(['oo_.posterior_hpdinf.shocks_std.' deblank(lgx_(k,:)) ' = min_interval(ip,1);']); 
+      eval(['oo_.posterior_hpdsup.shocks_std.' deblank(lgx_(k,:)) ' = min_interval(ip,2);']);
+      ip = ip+1;
+    end
+  end
+  if nvn
+    disp(' ')
+    disp('standard deviation of measurement errors')
+    disp(tit2)
+    ip = nvx+1;
+    for i=1:nvn
+      disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ...
+           deblank(options_.varobs(estim_params_.var_endo(i,1),:)),...
+           bayestopt_.pmean(ip), ...
+           post_mean(ip),min_interval(ip,:), ...
+           pnames(bayestopt_.pshape(ip)+1,:), ...
+           bayestopt_.pstdev(ip)));
+      eval(['oo_.posterior_mean.measurement_errors_std.' deblank(options_.varobs(estim_params_.var_endo(i,1),:)) ' = post_mean(ip);']);
+      eval(['oo_.posterior_hpdinf.measurement_errors_std.' deblank(options_.varobs(estim_params_.var_endo(i,1),:)) ' = min_interval(ip,1);']); 
+      eval(['oo_.posterior_hpdsup.measurement_errors_std.' deblank(options_.varobs(estim_params_.var_endo(i,1),:)) ' = min_interval(ip,2);']);            
+      ip = ip+1;
+    end
+  end
+  if ncx
+    disp(' ')
+    disp('correlation of shocks')
+    disp(tit2)
+    ip = nvx+nvn+1;
+    for i=1:ncx
+      k1 = estim_params_.corrx(i,1);
+      k2 = estim_params_.corrx(i,2);
+      name = [deblank(lgx_(k1,:)) ',' deblank(lgx_(k2,:))];
+      disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ...
+           bayestopt_.pmean(ip),post_mean(ip),min_interval(ip,:), ...
+           pnames(bayestopt_.pshape(ip)+1,:), ...
+           bayestopt_.pstdev(ip)));
+      eval(['oo_.posterior_mean.shocks_corr.' deblank(lgx_(k1,:)) '_' deblank(lgx_(k2,:)) ' = post_mean(ip);']);
+      eval(['oo_.posterior_hpdinf.shocks_corr.' deblank(lgx_(k1,:)) '_' deblank(lgx_(k2,:)) ' = min_interval(ip,1);']); 
+      eval(['oo_.posterior_hpdsup.shocks_corr.' deblank(lgx_(k1,:)) '_' deblank(lgx_(k2,:)) ' = min_interval(ip,2);']);      
+      Sigma_e_(k1,k2) = post_mean(ip)*sqrt(Sigma_e_(k1,k1)*Sigma_e_(k2,k2));
+      Sigma_e_(k2,k1) = Sigma_e_(k1,k2);
+      ip = ip+1;
+    end
+  end
+  if ncn
+    disp(' ')
+    disp('correlation of measurement errors')
+    disp(tit2)
+    ip = nvx+nvn+ncx+1;
+    for i=1:ncn
+      k1 = estim_params_.corrn(i,1);
+      k2 = estim_params_.corrn(i,2);
+      name = [deblank(lgy_(k1,:)) ',' deblank(lgy_(k2,:))];
+      disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ...
+           bayestopt_.pmean(ip),post_mean(ip),min_interval(ip,:), ...
+           pnames(bayestopt_.pshape(ip)+1,:), ...
+           bayestopt_.pstdev(ip))); 
+      eval(['oo_.posterior_mean.measurement_errors_corr.' deblank(lgy_(k1,:)) '_' deblank(lgy_(k2,:)) ' = post_mean(ip);']);
+      eval(['oo_.posterior_hpdinf.measurement_errors_corr.' deblank(lgy_(k1,:)) '_' deblank(lgy_(k2,:)) ' = min_interval(ip,1);']); 
+      eval(['oo_.posterior_hpdsup.measurement_errors_corr.' deblank(lgy_(k1,:)) '_' deblank(lgy_(k2,:)) ' = min_interval(ip,2);']);      
+      ip = ip+1;
+    end
+  end
+  %%
+  %% [1] In a TeX file
+  %%
+  if TeX 
+    if np
+      ip = nvx+nvn+ncx+ncn+1;
+      fidTeX = fopen([fname_ '_MH_Posterior_1.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM METROPOLIS HASTINGS (parameters)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. & Post. mean & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      for i=1:np
+	fprintf(fidTeX,' $%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f & %7.4f \\\\ \n',...
+		deblank(estim_params_.tex(i,:)), ...
+		deblank(pnames(bayestopt_.pshape(ip)+1,:)), ...
+		bayestopt_.pmean(ip), ...
+		bayestopt_.pstdev(ip), ...
+		post_mean(ip), ...
+		min_interval(ip,1), ...
+		min_interval(ip,2));
+	ip = ip+1;
+      end   
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from Metropolis Hastings (parameters)}\n ');
+      fprintf(fidTeX,'\\label{Table:MhPosterior:1}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if nvx
+      ip = 1;
+      fidTeX = fopen([fname_ '_MH_Posterior_2.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM METROPOLIS HASTINGS (standard deviation of structural shocks)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. & Post. mean & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      for i=1:nvx
+	k = estim_params_.var_exo(i,1);
+	fprintf(fidTeX,' $%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f & %7.4f \\\\ \n',...
+		deblank(lgx_TeX_(k,:)),...
+		deblank(pnames(bayestopt_.pshape(ip)+1,:)), ...
+		bayestopt_.pmean(ip), ...
+		bayestopt_.pstdev(ip), ...
+		post_mean(ip), ...
+		min_interval(ip,1), ...
+		min_interval(ip,1));
+	ip = ip+1;
+      end
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from Metropolis Hastings (standard deviation of structural shocks)}\n ');
+      fprintf(fidTeX,'\\label{Table:MhPosterior:2}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if nvn
+      ip = nvx+1;
+      fidTeX = fopen([fname_ '_MH_Posterior_3.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM METROPOLIS HASTINGS (standard deviation of measurement errors)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. & Post. mean & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      for i=1:nvn
+	fprintf(fidTeX,' $%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f & %7.4f \\\\ \n',...
+		deblank(options_.varobs_TeX(estim_params_.var_endo(i,1),:)), ...
+		deblank(pnames(bayestopt_.pshape(ip)+1,:)), ...
+		bayestopt_.pmean(ip), ...
+		bayestopt_.pstdev(ip), ...
+		post_mean(ip), ...
+		min_interval(ip,1), ...
+		min_interval(ip,2));
+	p = ip+1;
+      end
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from Metropolis Hastings (standard deviation of measurement errors)}\n ');
+      fprintf(fidTeX,'\\label{Table:MhPosterior:3}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if ncx
+      ip = nvx+nvn+1;
+      fidTeX = fopen([fname_ '_MH_Posterior_4.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM METROPOLIS HASTINGS (correlation of structural shocks)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. & Post. mean & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      for i=1:ncx
+	k1 = estim_params_.corrx(i,1);
+	k2 = estim_params_.corrx(i,2);
+	name = [deblank(lgx_TeX_(k1,:)) ',' deblank(lgx_TeX_(k2,:))];
+	fprintf(fidTeX,' $%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f & %7.4f \\\\ \n',...
+		name, ...
+		deblank(pnames(bayestopt_.pshape(ip)+1,:)), ...
+		bayestopt_.pmean(ip), ...
+		bayestopt_.pstdev(ip), ...
+		post_mean(ip), ...
+		min_interval(ip,1), ...
+		min_interval(ip,2));
+	ip = ip+1;
+      end
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from Metropolis Hastings (correlation of structural shocks)}\n ');
+      fprintf(fidTeX,'\\label{Table:MhPosterior:4}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if ncn
+      ip = nvx+nvn+ncx+1;
+      fidTeX = fopen([fname_ '_MH_Posterior_5.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,'%% RESULTS FROM METROPOLIS HASTINGS (correlation of measurement errors)\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|lccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,'  & Prior distribution & Prior mean  & Prior s.d. & Post. mean & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      for i=1:ncn
+	k1 = estim_params_.corrn(i,1);
+	k2 = estim_params_.corrn(i,2);
+	name = [deblank(lgy_TeX_(k1,:)) ',' deblank(lgy_TeX_(k2,:))];
+	fprintf(fidTeX,' $%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f & %7.4f \\\\ \n',...
+		name, ...
+		deblank(pnames(bayestopt_.pshape(ip)+1,:)), ...
+		bayestopt_.pmean(ip), ...
+		bayestopt_.pstdev(ip), ...
+		post_mean(ip), ...
+		min_interval(ip,1), ...
+		min_interval(ip,2));
+	ip = ip+1;
+      end
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Results from Metropolis Hastings (correlation of structural shocks)}\n ');
+      fprintf(fidTeX,'\\label{Table:MhPosterior:5}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+  end % if TeX
+  %                                                               
+  %%                                                              
+  %%%                                                             
+  %%%%                                                            
+  %%%%% Plot posterior distributions
+  %%%%                                                            
+  %%%                                                             
+  %%                                                              
+  %                                                               
+  figurename = 'Priors and posteriors';
+  if TeX    
+    fidTeX = fopen([fname_ '_PriorsAndPosteriors.TeX'],'w');
+    fprintf(fidTeX,'%% TeX eps-loader file generated by metropolis.m (Dynare).\n');
+    fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+    fprintf(fidTeX,' \n');
+  end
+  [nbplt,nr,nc,lr,lc,nstar] = pltorg(npar);
+  if nbplt == 1
+    h1 = figure('Name',figurename);
+    if TeX
+      TeXNAMES = [];
+    end    
+    NAMES    = []; 
+    for i=1:npar
+      [borneinf,bornesup,x1,x2,f1,f2,top,nam,texnam] = ...
+      posterior_distribution(i,nfile,ffil,ifil,...
+                 nblck,n,number_of_simulations_per_file,TeX);
+      eval(['oo_.posterior_density.' deblank(nam) ' = [x1,f1];']);
+      eval(['oo_.prior_density.' deblank(nam) ' = [x2,f2];']); 
+      if TeX
+	TeXNAMES = strvcat(TeXNAMES,texnam);
+      end    
+      NAMES = strvcat(NAMES,nam);
+      subplot(nr,nc,i);
+      hh = plot(x2,f2,'-k','linewidth',2);
+      set(hh,'color',[0.7 0.7 0.7]);
+      hold on;
+      plot(x1,f1,'-k','linewidth',2);
+      plot( [xparam1(i) xparam1(i)], [0,1.1*top], '--g', 'linewidth', 2);
+      box on;
+      axis([borneinf bornesup 0 1.1*top]);
+      title(nam,'Interpreter','none');
+      hold off;
+      drawnow
+    end
+    eval(['print -depsc2 ' fname_ '_PriorsAndPosteriors' int2str(1)]);
+    eval(['print -dpdf ' fname_ '_PriorsAndPosteriors' int2str(1)]);
+    saveas(h1,[fname_ '_PriorsAndPosteriors' int2str(1) '.fig']);
+    if TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:npar
+	fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_PriorsAndPosteriors%s}\n',fname_,int2str(1));
+      fprintf(fidTeX,'\\caption{Priors and posteriors.}');
+      fprintf(fidTeX,'\\label{Fig:PriorsAndPosteriors:%s}\n',int2str(1));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if options_.nograph, close(h1), end
+  else
+    for plt = 1:nbplt-1
+      hplt = figure('Name',figurename);
+      if TeX
+	TeXNAMES = [];
+      end    
+      NAMES    = []; 
+      for index=1:nstar
+	names = [];
+	i = (plt-1)*nstar + index;
+	[borneinf,bornesup,x1,x2,f1,f2,top,nam,texnam] = ...
+	    posterior_distribution(i,nfile,ffil,ifil,...
+				   nblck,n,number_of_simulations_per_file,TeX);
+	eval(['oo_.posterior_density.' deblank(nam) ' = [x1,f1];']);
+	eval(['oo_.prior_density.' deblank(nam) ' = [x2,f2];']);                     
+	if TeX
+	  TeXNAMES = strvcat(TeXNAMES,texnam);
+	end    
+	NAMES = strvcat(NAMES,nam);
+	subplot(nr,nc,index);
+	hh = plot(x2,f2,'-k','linewidth',2);
+	set(hh,'color',[0.7 0.7 0.7]);
+	hold on;
+	plot(x1,f1,'-k','linewidth',2);
+	plot( [xparam1(i) xparam1(i)], [0,1.1*top], '--g', 'linewidth', 2);
+	box on;
+	axis([borneinf bornesup 0 1.1*top]);
+	title(nam,'Interpreter','none');
+	hold off;
+	drawnow;
+      end  % index=1:nstar
+      eval(['print -depsc2 ' fname_ '_PriorsAndPosteriors' int2str(plt)]);
+      eval(['print -dpdf ' fname_ '_PriorsAndPosteriors' int2str(plt)]);
+      saveas(hplt,[fname_ '_PriorsAndPosteriors' int2str(plt) '.fig']);
+      if TeX
+	fprintf(fidTeX,'\\begin{figure}[H]\n');
+	for jj = 1:nstar
+	  fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+	end    
+	fprintf(fidTeX,'\\centering\n');
+	fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_PriorsAndPosteriors%s}\n',fname_,int2str(plt));
+	fprintf(fidTeX,'\\caption{Priors and posteriors.}');
+	fprintf(fidTeX,'\\label{Fig:PriorsAndPosteriors:%s}\n',int2str(plt));
+	fprintf(fidTeX,'\\end{figure}\n');
+	fprintf(fidTeX,' \n');
+      end    
+      if options_.nograph, close(hplt), end
+    end % plt = 1:nbplt-1
+    hplt = figure('Name',figurename);
+    if TeX
+      TeXNAMES = [];
+    end    
+    NAMES    = []; 
+    for index=1:npar-(nbplt-1)*nstar
+      i = (nbplt-1)*nstar +  index;
+      [borneinf,bornesup,x1,x2,f1,f2,top,nam,texnam] = ...
+	  posterior_distribution(i,nfile,ffil,ifil,...
+				 nblck,n,number_of_simulations_per_file,TeX);
+      eval(['oo_.posterior_density.' deblank(nam) ' = [x1,f1];']);
+      eval(['oo_.prior_density.' deblank(nam) ' = [x2,f2];']);             
+      if TeX
+	TeXNAMES = strvcat(TeXNAMES,texnam);
+      end
+      NAMES = strvcat(NAMES,nam);
+      if lr
+	subplot(lc,lr,index);
+      else
+	subplot(nr,nc,index);
+      end    
+      hh = plot(x2,f2,'-k','linewidth',2);
+      set(hh,'color',[0.7 0.7 0.7]);
+      hold on;
+      plot(x1,f1,'-k','linewidth',2);
+      plot( [xparam1(i) xparam1(i)], [0,1.1*top], '--g', 'linewidth', 2);
+      box on;
+      axis([borneinf bornesup 0 1.1*top]);
+      title(nam,'Interpreter','none');
+      hold off;
+      drawnow;
+    end  % index=1:npar-(nbplt-1)*nstar
+    eval(['print -depsc2 ' fname_ '_PriorsAndPosteriors' int2str(nbplt)]);
+    eval(['print -dpdf ' fname_ '_PriorsAndPosteriors' int2str(nbplt)]);
+    saveas(hplt,[fname_ '_PriorsAndPosteriors' int2str(nbplt) '.fig']);
+    if TeX
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:npar-(nbplt-1)*nstar
+	fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_PriorsAndPosteriors%s}\n',fname_,int2str(nbplt));
+      fprintf(fidTeX,'\\caption{Priors and posteriors.}');
+      fprintf(fidTeX,'\\label{Fig:PriorsAndPosteriors:%s}\n',int2str(nbplt));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    if options_.nograph, close(hplt), end
+  end
+  %                                                               
+  %%                                                              
+  %%%                                                             
+  %%%%                                                            
+  %%%%% Je (re)fais mes comptes... I should be able to skip this part (already done) 
+  %%%%                                                            
+  %%%                                                             
+  %%                                                              
+  %                                                               
+  FLN = zeros(nfile-ffil+1,3);% Describes the number of lines in each file
+  if nblck == 1
+    instr1 = [fname_ '_mh'];
+    instr2 = '';
+  else  % I only consider draws from the first chain. This is correct
+    % if and only if the metropolis-hastings did converge.
+    instr1 = [fname_ '_mh'];
+    instr2 = '_blck1';
+  end   
+  eval(['load ' instr1 int2str(ffil) instr2]);
+  clear post2 x2;
+  FLN(1,1) = ffil;                            % File number   
+  FLN(1,2) = size(logpo2(ifil:end,:),1);      % Number of simulations in this file (density) 
+  FLN(1,3) = FLN(1,2);                        % Cumulative Distribution Function
+  if nfile-ffil+1>1
+    linee = 1;
+    for n = ffil+1:nfile
+      linee = linee+1;
+      instr = [instr1 int2str(n) instr2];
+      eval(['load ' instr]);
+      clear post2 x2;
+      FLN(linee,1) = n;
+      FLN(linee,2) = size(logpo2,1);
+      FLN(linee,3) = FLN(linee-1,3) + FLN(linee,2);  
+    end
+    clear logpo2
+    nruns = FLN(linee,3);
+  else
+    nruns = FLN(1,3);    
+  end
+  FLN(:,3) = FLN(:,3)/nruns;% I'm scaling the CDF
+  nvar     = endo_nbr;
+  B        = min(500,nruns);
+  deciles = [round(0.1*B) ...
+	     round(0.2*B)...
+	     round(0.3*B)...
+	     round(0.4*B)...
+	     round(0.5*B)...
+	     round(0.6*B)...
+	     round(0.7*B)...
+	     round(0.8*B)...
+	     round(0.9*B)];
+  %                                                               
+  %%                                                              
+  %%%                                                             
+  %%%%                                                            
+  %%%%% SDGE-based forecasts, smooth and filtered variables, IRFs and theoretical moments 
+  %%%%                                                            
+  %%%                                                             
+  %%                                                              
+  %                                                               
+  if options_.forecast | options_.smoother | options_.filtered_vars
+    deep = MU;
+    subindx = subset();
+    % [1] I delete some old files...    
+    disp(' ')
+    disp(' ')
+    if options_.forecast
+      files = eval(['dir(''' fname_ '_forecast*.mat'');']);
+      if length(files)
+	delete([fname_ '_forecast*.mat']);
+	disp(['MH: Old ' fname_ '_forecast files deleted! '])
+      end
+    end
+    if options_.smoother        
+      files = eval(['dir(''' fname_ '_smooth*.mat'');']);
+      if length(files)
+	delete([fname_ '_smooth*.mat']);
+	disp(['MH: Old ' fname_ '_smooth files deleted! '])
+      end
+      files = eval(['dir(''' fname_ '_innovation*.mat'');']);
+      if length(files)
+	delete([fname_ '_innovation*.mat']);
+	disp(['MH: Old ' fname_ '_innovation files deleted! '])
+      end
+      files = eval(['dir(''' fname_ '_error*.mat'');']);
+      if length(files)
+	delete([fname_ '_error*.mat']);
+	disp(['MH: Old ' fname_ '_error files deleted! '])
+      end
+    end
+    if options_.filtered_vars
+      files = eval(['dir(''' fname_ '_filter*.mat'');']);     
+      if length(files)                                        
+	delete([fname_ '_filter*.mat']);                    
+	disp(['MH: Old ' fname_ '_filter files deleted! ']) 
+      end                                                         
+    end
+    disp(' ')
+    disp(' ')
+    % [2] Initialization...    
+    ex_      = zeros(horizon+xkmin_+xkmax_,exo_nbr);
+    yyyy     = zeros(nvar,ykmin_);
+    IdObs    = bayestopt_.mfys;
+    if options_.forecast 
+      if B <= MAX_nforc
+	stock_forcst = zeros(options_.forecast+ykmin_,nvar,B);
+	stock_forcst1 = zeros(options_.forecast+ykmin_,nvar,B);
+      else
+	stock_forcst = zeros(options_.forecast+ykmin_,nvar,MAX_nforc);
+	stock_forcst1 = zeros(options_.forecast+ykmin_,nvar,MAX_nforc);
+      end
+    end 
+    if options_.smoother
+      if B <= MAX_nsmoo
+	stock_smooth = zeros(endo_nbr,gend,B);
+      else
+	stock_smooth = zeros(endo_nbr,gend,MAX_nsmoo);
+      end
+      if B <= MAX_ninno 
+	stock_innov  = zeros(exo_nbr,gend,B);
+      else
+	stock_innov  = zeros(exo_nbr,gend,MAX_ninno);
+      end
+      if nvn & B <= MAX_nerro
+	%stock_error = zeros(gend,nvobs,B);
+	stock_error = zeros(nvobs,gend,B);
+      else nvn & B > MAX_nerro
+	%stock_error = zeros(gend,nvobs,MAX_nerro);
+	stock_error = zeros(nvobs,gend,MAX_nerro);
+      end
+    end
+    if options_.filtered_vars
+      if B <= MAX_nfilt
+	stock_filter = zeros(endo_nbr,gend+1,B);
+      else
+	stock_filter = zeros(endo_nbr,gend+1,MAX_nfilt);
+      end
+    end
+    h = waitbar(0,'SDGE model based forecasts...');
+    % [3]   CoRe    
+    % [3.1] First we consider the case with measurement error
+    if nvn
+      % [3.1.1] More than one _mh file 
+      if nfile-ffil+1>1			
+	if options_.forecast
+	  sfil_forc = 0;
+	  irun_forc = 0;  			
+	end
+	if options_.smoother
+	  sfil_smoo = 0;
+	  sfil_inno = 0;
+	  sfil_erro = 0;
+	  irun_smoo = 0;
+	  irun_inno = 0;
+	  irun_erro = 0;
+	end
+	if options_.filtered_vars
+	  sfil_filt = 0;
+	  irun_filt = 0;  			
+	end
+	% [3.1.1.1] Loop in the metropolis
+	for b = 1:B;
+	  if options_.forecast
+	    irun_forc = irun_forc+1;
+	  end
+	  if options_.smoother
+	    irun_smoo = irun_smoo+1;
+	    irun_inno = irun_inno+1;
+	    irun_erro = irun_erro+1;
+	  end
+	  if options_.filtered_vars
+	    irun_filt = irun_filt+1;  			
+	  end    			
+	  % FIRST, I choose an _mh file (where the posterior distribution is stored)
+	  choose_an_mh_file = rand;
+	  mh_file_number = FLN(find(choose_an_mh_file>=FLN(:,3)),1);
+	  if isempty(mh_file_number)
+	    mh_file_number = ffil;
+	  else    
+	    mh_file_number = mh_file_number(1);
+	  end    
+	  eval(['load ' instr1 int2str(mh_file_number) instr2]);
+	  clear post2 logpo2;
+	  % SECOND, I choose a vector of structural parameters (a line in the _mh file) 
+	  DEEP  = x2(floor(rand*FLN(find(mh_file_number == FLN(:,1)),2))+1,:);
+	  deep(subindx) = DEEP(subindx);
+	  % THIRD, I estimate the smooth and filtered variables. I need the smoothed variables
+	  % to estimate the state of the model at the end of the sample. 
+	  [atT,innov,obs_err,filtered_state_vector,ys,trend_coeff] = DsgeSmoother(transpose(deep),gend,data);
+	  % FOURTH, smoothed and filtered variables are saved if needed
+	  if options_.smoother
+	    if irun_erro < MAX_nerro
+	      stock_error(:,:,irun_erro) = obs_err;
+	    else
+	      stock_error(:,:,irun_erro) = obs_err;
+	      sfil_erro = sfil_erro + 1;
+	      instr = [fname_ '_error' int2str(sfil_erro) ' stock_error;'];
+	      eval(['save ' instr]);
+	      irun_erro = 0;
+	      stock_error  = zeros(gend,nvobs,MAX_nerro);
+	    end
+	    if irun_smoo < MAX_nsmoo
+	      stock_smooth(:,:,irun_smoo) = atT(1:endo_nbr,1:gend);
+	    else
+	      stock_smooth(:,:,irun_smoo) = atT(1:endo_nbr,1:gend);
+	      sfil_smoo = sfil_smoo + 1;
+	      instr = [fname_ '_smooth' int2str(sfil_smoo) ' stock_smooth;'];
+	      eval(['save ' instr]);
+	      irun_smoo = 0;
+	      stock_smooth = ...
+		  zeros(endo_nbr,gend,MAX_nsmoo);
+	    end	
+	    if irun_inno < MAX_ninno
+	      stock_innov(:,:,irun_inno) = innov;
+	    else
+	      stock_innov(:,:,irun_inno) = innov;
+	      sfil_inno = sfil_inno + 1;
+	      instr = [fname_ '_innovation' int2str(sfil_inno) ' stock_innov;'];
+	      eval(['save ' instr]);
+	      irun_inno = 0;
+	      stock_innov  = zeros(exo_nbr,gend,MAX_ninno);
+	    end	
+	  end
+	  if options_.filtered_vars
+	    if irun_filt < MAX_nfilt
+	      stock_filter(:,:,irun_filt) = filtered_state_vector;
+	    else
+	      stock_filter(:,:,irun_filt) = filtered_state_vector;
+	      sfil_filt = sfil_filt + 1;
+	      instr = [fname_ '_filter' int2str(sfil_filt) ' stock_filter;'];
+	      eval(['save ' instr]);
+	      irun_filt = 0;
+	      stock_filter = ...
+		  zeros(endo_nbr,gend+1,MAX_nfilt);
+	    end	
+	  end    			
+	  if options_.forecast
+	    % FIFTH, I update variable dr_ 
+	    dr_ = resol(ys_,0);
+	    % SIXTH, I do and save the forecasts (for all the endogenous variables)
+	    % The state of the economy at the end of the sample 
+	    % depends on the structural parameters.	    
+	    yyyy(:,1:ykmin_) = atT(1:endo_nbr,size(atT,2)-ykmin_+1:size(atT,2));
+	    yf = forcst2a(yyyy,dr_,ex_);
+	    if options_.prefilter == 1
+	      yf(:,IdObs) = yf(:,IdObs)+repmat(bayestopt_.mean_varobs', ...
+					       horizon+ykmin_,1);
+	    end
+	    yf(:,IdObs) = yf(:,IdObs)+(gend+[1-ykmin_:horizon]')*trend_coeff';
+	    if options_.loglinear == 1
+	      yf = yf+repmat(log(ys'),horizon+ykmin_,1);
+	      yf = exp(yf);
+	    else
+	      yf = yf+repmat(ys',horizon+ykmin_,1);
+	    end
+	    stock_forcst(:,:,irun_forc) = yf;
+	    yf1 = forcst2(yyyy,horizon,dr_,1);
+	    if options_.prefilter == 1
+	      yf1(:,IdObs,:) = yf1(:,IdObs,:)+ ...
+		  repmat(bayestopt_.mean_varobs',[horizon+ykmin_,1,1]);
+	    end
+	    yf1(:,IdObs,:) = yf1(:,IdObs,:)+repmat((gend+[1-ykmin_:horizon]')* ...
+		trend_coeff',[1,1,1]);
+	    if options_.loglinear == 1
+	      yf1 = yf1 + repmat(log(ys'),[horizon+ykmin_,1,1]);
+	      yf1 = exp(yf1);
+	    else
+	      yf1 = yf1 + repmat(ys',[horizon+ykmin_,1,1]);
+	    end
+	    stock_forcst1(:,:,irun_forc) = yf1;
+	    if irun_forc == MAX_nforc
+	      sfil_forc = sfil_forc + 1;
+	      save([fname_ '_forecast' int2str(sfil_forc)],'stock_forcst','stock_forcst1');
+	      irun_forc = 0;
+	      stock_forcst = zeros(horizon+ykmin_,nvar,MAX_nforc);
+	      stock_forcst1 = zeros(horizon+ykmin_,nvar,MAX_nforc);
+	    end
+	  end		
+	  waitbar(b/B,h);    
+	end % of loop [3.1.1.1]
+	if options_.smoother
+	  if irun_smoo
+	    stock_smooth = stock_smooth(:,:,1:irun_smoo);
+	    sfil_smoo = sfil_smoo + 1;
+	    instr = [fname_ '_smooth' int2str(sfil_smoo) ' stock_smooth;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_smooth;
+	  if irun_inno
+	    stock_innov = stock_innov(:,:,1:irun_inno);
+	    sfil_inno = sfil_inno + 1;
+	    instr = [fname_ '_innovation' int2str(sfil_inno) ' stock_innov;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_innov;
+	  if irun_erro
+	    stock_error = stock_error(:,:,1:irun_erro);
+	    sfil_erro = sfil_erro + 1;
+	    instr = [fname_ '_error' int2str(sfil_erro) ' stock_error;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_error;
+	end
+	if options_.forecast	
+	  if irun_forc
+	    stock_forcst = stock_forcst(:,:,1:irun_forc);  
+	    stock_forcst1 = stock_forcst1(:,:,1:irun_forc);  
+	    sfil_forc = sfil_forc + 1;
+	    save([fname_ '_forecast' int2str(sfil_forc)],'stock_forcst','stock_forcst1');
+	  end
+	  clear stock_forcst stock_forcst1
+	end
+	if options_.filtered_vars	
+	  if irun_filt
+	    stock_filter = stock_filter(:,:,1:irun_filt);
+	    sfil_filt = sfil_filt + 1;
+	    instr = [fname_ '_filter' int2str(sfil_filt) ' stock_filter;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_filter;
+	end
+      else % [3.1.2] Just one _mh file
+	if options_.forecast
+	  sfil_forc = 0;
+	  irun_forc = 0;  			
+	end
+	if options_.smoother
+	  sfil_smoo = 0;
+	  sfil_inno = 0;
+	  sfil_erro = 0;
+	  irun_smoo = 0;
+	  irun_inno = 0;
+	  irun_erro = 0;
+	end
+	if options_.filtered_vars
+	  sfil_filt = 0;
+	  irun_filt = 0;  			
+	end
+	eval(['load ' instr1 int2str(ffil) instr2]);
+	NumberOfSimulations = length(logpo2);
+	clear post2 logpo2;
+	for b = 1:B;
+	  if options_.forecast
+	    irun_forc = irun_forc+1;
+	  end
+	  if options_.smoother
+	    irun_smoo = irun_smoo+1;
+	    irun_inno = irun_inno+1;
+	    irun_erro = irun_erro+1;
+	  end
+	  if options_.filtered_vars
+	    irun_filt = irun_filt+1;            
+	  end
+	  DEEP  = x2(floor(rand*NumberOfSimulations)+1,:); 
+	  deep(subindx) = DEEP(subindx);
+	  [atT,innov,obs_err,filtered_state_vector,ys,trend_coeff] = DsgeSmoother(transpose(deep),gend,data);
+	  if options_.smoother
+	    if irun_erro < MAX_nerro
+	      stock_error(:,:,irun_erro) = obs_err;
+	    else
+	      stock_error(:,:,irun_erro) = obs_err;
+	      sfil_erro = sfil_erro + 1;
+	      instr = [fname_ '_error' int2str(sfil_erro) ' stock_error;'];
+	      eval(['save ' instr]);
+	      irun_erro = 0;
+	      stock_error  = zeros(gend,nvobs,MAX_nerro);
+	    end
+	    if irun_smoo < MAX_nsmoo
+	      stock_smooth(:,:,irun_smoo) = atT(1:endo_nbr,1:gend);
+	    else
+	      stock_smooth(:,:,irun_smoo) = atT(1:endo_nbr,1:gend);
+	      sfil_smoo = sfil_smoo + 1;
+	      instr = [fname_ '_smooth' int2str(sfil_smoo) ' stock_smooth;'];
+	      eval(['save ' instr]);
+	      irun_smoo = 0;
+	      stock_smooth = ...
+		  zeros(endo_nbr,gend,MAX_nsmoo);
+	    end 
+	    if irun_inno < MAX_ninno
+	      stock_innov(:,:,irun_inno) = innov;
+	    else
+	      stock_innov(:,:,irun_inno) = innov;
+	      sfil_inno = sfil_inno + 1;
+	      instr = [fname_ '_innovation' int2str(sfil_inno) ' stock_innov;'];
+	      eval(['save ' instr]);
+	      irun_inno = 0;
+	      stock_innov  = zeros(exo_nbr,gend,MAX_ninno);
+	    end
+	  end
+	  if options_.filtered_vars
+	    if irun_filt < MAX_nfilt                                             
+	      stock_filter(:,:,irun_filt) = filtered_state_vector;             
+	    else                                                                 
+	      stock_filter(:,:,irun_filt) = filtered_state_vector;             
+	      sfil_filt = sfil_filt + 1;                                       
+	      instr = [fname_ '_filter' int2str(sfil_filt) ' stock_filter;'];  
+	      eval(['save ' instr]);                                           
+	      irun_filt = 0;                                                   
+	      stock_filter = ...                                               
+		  zeros(endo_nbr,gend+1,MAX_nfilt);     
+	    end                                                                  
+	  end
+	  if options_.forecast
+	    dr_ = resol(ys_,0);
+	    yyyy(:,1:ykmin_) = atT(1:endo_nbr,size(atT,2)-ykmin_+1:size(atT,2));
+	    yf = forcst2a(yyyy,dr_,ex_);
+	    if options_.prefilter == 1
+	      yf(:,IdObs) = yf(:,IdObs)+repmat(bayestopt_.mean_varobs', ...
+					       horizon+ykmin_,1);
+	    end
+	    yf(:,IdObs) = yf(:,IdObs)+(gend+[1-ykmin_:horizon]')*trend_coeff';
+	    if options_.loglinear == 1
+	      yf = yf+repmat(log(ys'),horizon+ykmin_,1);
+	      yf = exp(yf);
+	    else
+	      yf = yf+repmat(ys',horizon+ykmin_,1);
+	    end
+	    stock_forcst(:,:,irun_forc) = yf;
+	    yf1 = forcst2(yyyy,horizon,dr_,1);
+	    if options_.prefilter == 1
+	      yf1(:,IdObs,:) = yf1(:,IdObs,:)+ ...
+		  repmat(bayestopt_.mean_varobs',[horizon+ykmin_,1,1]);
+	    end
+	    yf1(:,IdObs,:) = yf1(:,IdObs,:)+repmat((gend+[1-ykmin_:horizon]')* ...
+						   trend_coeff',[1,1,1]);
+	    if options_.loglinear == 1
+	      yf1 = yf1 + repmat(log(ys'),[horizon+ykmin_,1,1]);
+	      yf1 = exp(yf1);
+	    else
+	      yf1 = yf1 + repmat(ys',[horizon+ykmin_,1,1]);
+	    end
+	    stock_forcst1(:,:,irun_forc) = yf1;
+	    if irun_forc == MAX_nforc
+	      sfil_forc = sfil_forc + 1;
+	      save([fname_ '_forecast' int2str(sfil_forc)],'stock_forcst','stock_forcst1');
+	      irun_forc = 0;
+	      stock_forcst = zeros(horizon+ykmin_,nvar,MAX_nforc);
+	      stock_forcst1 = zeros(horizon+ykmin_,nvar,MAX_nforc);
+	    end
+	  end   
+	  waitbar(b/B,h);    
+	end % of the loop over the metropolis simulations
+	if options_.smoother
+	  if irun_smoo
+	    stock_smooth = stock_smooth(:,:,1:irun_smoo);
+	    sfil_smoo = sfil_smoo + 1;
+	    instr = [fname_ '_smooth' int2str(sfil_smoo) ' stock_smooth;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_smooth;
+	  if irun_inno
+	    stock_innov = stock_innov(:,:,1:irun_inno);
+	    sfil_inno = sfil_inno + 1;
+	    instr = [fname_ '_innovation' int2str(sfil_inno) ' stock_innov;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_innov;
+	  if irun_erro
+	    stock_error = stock_error(:,:,1:irun_erro);
+	    sfil_erro = sfil_erro + 1;
+	    instr = [fname_ '_error' int2str(sfil_erro) ' stock_error;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_error;
+	end
+	if options_.forecast    
+	  if irun_forc
+	    stock_forcst = stock_forcst(:,:,1:irun_forc);  
+	    stock_forcst1 = stock_forcst1(:,:,1:irun_forc);  
+	    sfil_forc = sfil_forc + 1;
+	    save([fname_ '_forecast' int2str(sfil_forc)],'stock_forcst','stock_forcst1');
+	  end
+	  clear stock_forcst stock_forcst1
+	end
+	if options_.filtered_vars
+	  if irun_filt
+	    stock_filter = stock_filter(:,:,1:irun_filt);
+	    sfil_filt = sfil_filt + 1;
+	    instr = [fname_ '_filter' int2str(sfil_filt) ' stock_filter;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_filter;           
+	end
+      end
+    else % [3.2]    Second we consider the case without measurement error
+      if nfile-ffil+1>1
+	if options_.forecast
+	  sfil_forc = 0;
+	  irun_forc = 0;  			
+	end
+	if options_.smoother
+	  sfil_smoo = 0;
+	  sfil_inno = 0;
+	  sfil_erro = 0;
+	  irun_smoo = 0;
+	  irun_inno = 0;
+	  irun_erro = 0;
+	end
+	if options_.filtered_vars
+	  sfil_filt = 0;
+	  irun_filt = 0;  			
+	end
+	for b = 1:B;
+	  if options_.forecast
+	    irun_forc = irun_forc+1;
+	  end
+	  if options_.smoother
+	    irun_smoo = irun_smoo+1;
+	    irun_inno = irun_inno+1;
+	    irun_erro = irun_erro+1;
+	  end
+	  if options_.filtered_vars
+	    irun_filt = irun_filt+1;  			
+	  end	    
+	  choose_an_mh_file = rand;
+	  mh_file_number = FLN(find(choose_an_mh_file>=FLN(:,3)),1);
+	  if isempty(mh_file_number)
+	    mh_file_number = ffil;
+	  else    
+	    mh_file_number = mh_file_number(1);
+	  end    
+	  eval(['load ' instr1 int2str(mh_file_number) instr2]);
+	  clear post2 logpo2;
+	  DEEP  = x2(floor(rand*FLN(find(mh_file_number == FLN(:,1)),2))+1,:);
+	  deep(subindx) = DEEP(subindx);
+	  [atT,innov,obs_err,filtered_state_vector,ys,trend_coeff] = DsgeSmoother(transpose(deep),gend,data);
+	  if options_.smoother
+	    %if irun_erro < MAX_nerro
+	    %	stock_error(:,:,irun_erro) = obs_err;
+	    %else
+	    %	stock_error(:,:,irun_erro) = obs_err;
+	    %	instr = [fname_ '_error' int2str(sfil_erro) ' stock_error;'];
+	    %	eval(['save ' instr]);
+	    %	sfil_erro = sfil_erro + 1;
+	    %	irun_erro = 0;
+	    %	stock_error  = zeros(gend,nvobs,MAX_nerro);
+	    %end
+	    if irun_smoo < MAX_nsmoo
+	      stock_smooth(:,:,irun_smoo) = atT(1:endo_nbr,1:gend);
+	      if options_.prefilter == 1
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+repmat(bayestopt_.mean_varobs',1,gend);
+	      elseif options_.loglinear == 1
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+...
+		    repmat(log(ys(bayestopt_.mfys)),1,gend)+...
+		     trend_coeff*[1:gend];
+	      else
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+...
+		    repmat(ys(bayestopt_.mfys),1,gend)+...
+		     trend_coeff*[1:gend];
+	      end
+	    else
+	      stock_smooth(:,:,irun_smoo) = atT(1:endo_nbr,1:gend);
+	      if options_.prefilter == 1
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+repmat(bayestopt_.mean_varobs',1,gend);
+	      elseif options_.loglinear == 1
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+...
+		    repmat(log(ys(bayestopt_.mfys)),1,gend)+...
+		     trend_coeff*[1:gend];
+	      else
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+...
+		    repmat(ys(bayestopt_.mfys),1,gend)+...
+		     trend_coeff*[1:gend];
+	      end
+	      sfil_smoo = sfil_smoo + 1;
+	      instr = [fname_ '_smooth' int2str(sfil_smoo) ' stock_smooth;'];
+	      eval(['save ' instr]);
+	      irun_smoo = 0;
+	      stock_smooth = ...
+		zeros(endo_nbr,gend,MAX_nsmoo);
+	    end	
+	    if irun_inno < MAX_ninno
+	      stock_innov(:,:,irun_inno) = innov;
+	    else
+	      stock_innov(:,:,irun_inno) = innov;
+	      sfil_inno = sfil_inno + 1;
+	      instr = [fname_ '_innovation' int2str(sfil_inno) ' stock_innov;'];
+	      eval(['save ' instr]);
+	      irun_inno = 0;
+	      stock_innov  = zeros(exo_nbr,gend,MAX_ninno);
+	    end	
+	  end
+	  if options_.filtered_vars
+	    if irun_filt < MAX_nfilt
+	      stock_filter(:,:,irun_filt) = filtered_state_vector;
+	    else
+	      stock_filter(:,:,irun_filt) = filtered_state_vector;
+	      sfil_filt = sfil_filt + 1;
+	      instr = [fname_ '_filter' int2str(sfil_filt) ' stock_filter;'];
+	      eval(['save ' instr]);
+	      irun_filt = 0;
+	      stock_filter = ...
+		 zeros(endo_nbr,gend+1,MAX_nfilt);
+	    end
+	  end
+	  if options_.forecast	    
+	    dr_ = resol(ys_,0);
+	    for j = 1:nvar 
+	      yyyy(j,1:ykmin_) = atT(j,size(atT,2)-ykmin_+1:size(atT,2));
+	    end
+	    yf = forcst2a(yyyy,dr_,ex_);
+	    if options_.prefilter == 1
+	      yf(:,IdObs) = yf(:,IdObs)+repmat(bayestopt_.mean_varobs', ...
+					       horizon+ykmin_,1);
+	    end
+	    yf(:,IdObs) = yf(:,IdObs)+(gend+[1-ykmin_:horizon]')*trend_coeff';
+	    if options_.loglinear == 1
+	      yf = yf+repmat(log(ys'),horizon+ykmin_,1);
+	      yf = exp(yf);
+	    else
+	      yf = yf+repmat(ys',horizon+ykmin_,1);
+	    end
+	    stock_forcst(:,:,irun_forc) = yf;
+	    yf1 = forcst2(yyyy,horizon,dr_,1);
+	    if options_.prefilter == 1
+	      yf1(:,IdObs,:) = yf1(:,IdObs,:)+ ...
+		  repmat(bayestopt_.mean_varobs',[horizon+ykmin_,1,1]);
+	    end
+	    yf1(:,IdObs,:) = yf1(:,IdObs,:)+repmat((gend+[1-ykmin_:horizon]')* ...
+		trend_coeff',[1,1,1]);
+	    if options_.loglinear == 1
+	      yf1 = yf1 + repmat(log(ys'),[horizon+ykmin_,1,1]);
+	      yf1 = exp(yf1);
+	    else
+	      yf1 = yf1 + repmat(ys',[horizon+ykmin_,1,1]);
+	    end
+	    stock_forcst1(:,:,irun_forc) = yf1;
+	    if irun_forc == MAX_nforc
+	      sfil_forc = sfil_forc + 1;
+	      save([fname_ '_forecast' int2str(sfil_forc)],'stock_forcst','stock_forcst1');
+	      irun_forc = 0;
+	      stock_forcst = zeros(horizon+ykmin_,nvar,MAX_nforc);
+	      stock_forcst1 = zeros(horizon+ykmin_,nvar,MAX_nforc);
+	    end
+	  end
+	  waitbar(b/B,h);    
+	end
+	if options_.smoother
+	  if irun_smoo
+	    stock_smooth = stock_smooth(:,:,1:irun_smoo);
+	    sfil_smoo = sfil_smoo + 1;
+	    instr = [fname_ '_smooth' int2str(sfil_smoo) ' stock_smooth;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_smooth;
+	  if irun_inno
+	    stock_innov = stock_innov(:,:,1:irun_inno);
+	    sfil_inno = sfil_inno + 1;
+	    instr = [fname_ '_innovation' int2str(sfil_inno) ' stock_innov;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_innov;
+	end
+	if options_.forecast	
+	  if irun_forc
+	    stock_forcst = stock_forcst(:,:,1:irun_forc);  
+	    stock_forcst1 = stock_forcst1(:,:,1:irun_forc);  
+	    sfil_forc = sfil_forc + 1;
+	    save([fname_ '_forecast' int2str(sfil_forc)],'stock_forcst','stock_forcst1');
+	  end
+	  clear stock_forcst stock_forcst1
+	end
+	if options_.filtered_vars	
+	  if irun_filt
+	    stock_filter = stock_filter(:,:,1:irun_filt);
+	    sfil_filt = sfil_filt + 1;
+	    instr = [fname_ '_filter' int2str(sfil_filt) ' stock_filter;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_filter;
+	end
+      else % just one _mh file
+	if options_.forecast
+	  sfil_forc = 0;
+	  irun_forc = 0;  			
+	end
+	if options_.smoother
+	  sfil_smoo = 0;
+	  sfil_inno = 0;
+	  %sfil_erro = 1;
+	  irun_smoo = 0;
+	  irun_inno = 0;
+	  %irun_erro = 0;
+	end
+	if options_.filtered_vars
+	  sfil_filt = 0;
+	  irun_filt = 0;  			
+	end	  		
+	eval(['load ' instr1 int2str(ffil) instr2]);
+	NumberOfSimulations = length(logpo2);
+	clear post2 logpo2;
+	for b = 1:B;
+	  if options_.forecast
+	    irun_forc = irun_forc+1;
+	  end
+	  if options_.smoother
+	    irun_smoo = irun_smoo+1;
+	    irun_inno = irun_inno+1;
+	    %irun_erro = irun_erro+1;
+	  end
+	  if options_.filtered_vars
+	    irun_filt = irun_filt+1;  			
+	  end	    
+	  DEEP  = x2(floor(rand*NumberOfSimulations)+1,:); 
+	  deep(subindx) = DEEP(subindx);
+	  [atT,innov,obs_err,filtered_state_vector,ys,trend_coeff] = DsgeSmoother(deep',gend,data);
+           % removing lagged variables when ykmin_ > 1
+           filtered_state_vector = filtered_state_vector(1:endo_nbr,:);
+	  if options_.smoother
+	    if irun_smoo < MAX_nsmoo
+	      stock_smooth(:,:,irun_smoo) = atT(1:endo_nbr,1:gend);
+	      if options_.prefilter == 1
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+repmat(bayestopt_.mean_varobs',1,gend);
+	      elseif options_.loglinear == 1
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+...
+		    repmat(log(ys(bayestopt_.mfys)),1,gend)+...
+		     trend_coeff*[1:gend];
+	      else
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+...
+		    repmat(ys(bayestopt_.mfys),1,gend)+...
+		     trend_coeff*[1:gend];
+	      end
+	    else
+	      stock_smooth(:,:,irun_smoo) = atT(1:endo_nbr,1:gend);
+	      if options_.prefilter == 1
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+repmat(bayestopt_.mean_varobs',1,gend);
+	      elseif options_.loglinear == 1
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+...
+		    repmat(log(ys(bayestopt_.mfys)),1,gend)+...
+		     trend_coeff*[1:gend];
+	      else
+		stock_smooth(bayestopt_.mf,:,irun_smoo) = atT(bayestopt_.mf,:)+...
+		    repmat(ys(bayestopt_.mfys),1,gend)+...
+		     trend_coeff*[1:gend];
+	      end
+	      sfil_smoo = sfil_smoo + 1;
+	      instr = [fname_ '_smooth' int2str(sfil_smoo) ' stock_smooth;'];
+	      eval(['save ' instr]);
+	      irun_smoo = 0;
+	      stock_smooth = ...
+		  zeros(endo_nbr,gend,MAX_nsmoo);
+	    end	
+	    if irun_inno < MAX_ninno
+	      stock_innov(:,:,irun_inno) = innov;
+	    else
+	      stock_innov(:,:,irun_inno) = innov;
+	      sfil_inno = sfil_inno + 1;
+	      instr = [fname_ '_innovation' int2str(sfil_inno) ' stock_innov;'];
+	      eval(['save ' instr]);
+	      irun_inno = 0;
+	      stock_innov  = zeros(exo_nbr,gend,MAX_ninno);
+	    end	
+	  end
+	  if options_.filtered_vars
+	    if irun_filt < MAX_nfilt
+	      stock_filter(:,:,irun_filt) = filtered_state_vector;
+	    else
+	      stock_filter(:,:,irun_filt) = filtered_state_vector;
+	      sfil_filt = sfil_filt + 1;
+	      instr = [fname_ '_filter' int2str(sfil_filt) ' stock_filter;'];
+	      eval(['save ' instr]);
+	      irun_filt = 0;
+	      stock_filter = ...
+		  zeros(endo_nbr,gend+1,MAX_nfilt);
+	    end	
+	  end    			
+	  if options_.forecast	    
+	    dr_ = resol(ys_,0);
+	    yyyy(:,1:ykmin_) = atT(1:endo_nbr,size(atT,2)-ykmin_+1:size(atT,2));
+	    yf = forcst2a(yyyy,dr_,ex_);
+	    if options_.prefilter == 1
+	      yf(:,IdObs) = yf(:,IdObs)+repmat(bayestopt_.mean_varobs', ...
+					       horizon+ykmin_,1);
+	    end
+	    yf(:,IdObs) = yf(:,IdObs)+(gend+[1-ykmin_:horizon]')*trend_coeff';
+	    if options_.loglinear == 1
+	      yf = yf+repmat(log(ys'),horizon+ykmin_,1);
+	      yf = exp(yf);
+	    else
+	      yf = yf+repmat(ys',horizon+ykmin_,1);
+	    end
+	    stock_forcst(:,:,irun_forc) = yf;
+	    yf1 = forcst2(yyyy,horizon,dr_,1);
+	    if options_.prefilter == 1
+	      yf1(:,IdObs,:) = yf1(:,IdObs,:)+ ...
+		  repmat(bayestopt_.mean_varobs',[horizon+ykmin_,1,1]);
+	    end
+	    yf1(:,IdObs,:) = yf1(:,IdObs,:)+repmat((gend+[1-ykmin_:horizon]')* ...
+						   trend_coeff',[1,1,1]);
+	    if options_.loglinear == 1
+	      yf1 = yf1 + repmat(log(ys'),[horizon+ykmin_,1,1]);
+	      yf1 = exp(yf1);
+	    else
+	      yf1 = yf1 + repmat(ys',[horizon+ykmin_,1,1]);
+	    end
+	    stock_forcst1(:,:,irun_forc) = yf1;
+	    if irun_forc == MAX_nforc
+	      sfil_forc = sfil_forc + 1;
+	      save([fname_ '_forecast' int2str(sfil_forc)],'stock_forcst','stock_forcst1');
+	      irun_forc = 0;
+	      stock_forcst = zeros(horizon+ykmin_,nvar,MAX_nforc);
+	      stock_forcst1 = zeros(horizon+ykmin_,nvar,MAX_nforc);
+	    end
+	  end   
+	  waitbar(b/B,h);    
+	end
+	if options_.smoother
+	  if irun_smoo
+	    stock_smooth = stock_smooth(:,:,1:irun_smoo);
+	    sfil_smoo = sfil_smoo + 1;
+	    instr = [fname_ '_smooth' int2str(sfil_smoo) ' stock_smooth;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_smooth;
+	  if irun_inno
+	    stock_innov = stock_innov(:,:,1:irun_inno);
+	    sfil_inno = sfil_inno + 1;
+	    instr = [fname_ '_innovation' int2str(sfil_inno) ' stock_innov;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_innov;
+	end
+	if options_.forecast    
+	  if irun_forc
+	    stock_forcst = stock_forcst(:,:,1:irun_forc);  
+	    stock_forcst1 = stock_forcst1(:,:,1:irun_forc);  
+	    sfil_forc = sfil_forc + 1;
+	    save([fname_ '_forecast' int2str(sfil_forc)],'stock_forcst','stock_forcst1');
+	  end
+	  clear stock_forcst stock_forcst1
+	end
+	if options_.filtered_vars   
+	  if irun_filt
+	    stock_filter = stock_filter(:,:,1:irun_filt);
+	    sfil_filt = sfil_filt + 1;
+	    instr = [fname_ '_filter' int2str(sfil_filt) ' stock_filter;'];
+	    eval(['save ' instr]);
+	  end
+	  clear stock_filter;
+	end   
+      end
+    end
+    close(h);
+  end
+  %%
+  %% Only a subset of variables may be treated    
+  %%
+  varlist = options_.varlist;
+  if isempty(varlist)
+    varlist = lgy_;
+    nvar    = size(lgy_,1);
+    SelecVariables = transpose(1:nvar);
+  else
+    nvar = size(varlist,1);
+    SelecVariables = [];
+    for i=1:nvar
+      if ~isempty(strmatch(varlist(i,:),lgy_,'exact'))
+    SelecVariables = [SelecVariables;strmatch(varlist(i,:),lgy_,'exact')];
+      end   
+    end
+    IdObs    = zeros(nvobs,1);
+    for j=1:nvobs
+      for i=1:nvar
+    iobs = strmatch(options_.varobs(j,:),varlist,'exact');
+      end
+      if ~isempty(iobs)
+    IdObs(j,1) = iobs;
+      end    
+    end 
+  end
+  if TeX
+    varlist_TeX = [];
+    for i=1:nvar
+      varlist_TeX = strvcat(varlist_TeX,lgy_TeX_(SelecVariables(i),:));
+    end
+  end
+  %%                                    %%
+  %% Now I treat the forecasts (plots)  %%   
+  %%                                    %%
+  if options_.forecast
+    tmp = zeros(B,1);
+    tmp_big = zeros(B,1);
+    fprintf('MH: Out of sample forecasts...\n');
+    MeanForecast = zeros(options_.forecast,nvar);
+    MedianForecast = zeros(options_.forecast,nvar);
+    StdForecast = zeros(options_.forecast,nvar);
+    HPD   = zeros(options_.forecast,nvar,2);
+    StdForecast_total = zeros(options_.forecast,nvar);
+    HPD_total   = zeros(options_.forecast,nvar,2);
+    for step = 1:options_.forecast % ... Suffering is one very long moment.
+      truestep = step+ykmin_;
+      for i = 1:nvar;
+	StartLine = 0;
+	StartLine1 = 0;
+	for file = 1:sfil_forc;
+	  load([fname_ '_forecast' int2str(file)]);
+	  MeanForecast(step,i) = MeanForecast(step,i)+sum(stock_forcst(truestep,SelecVariables(i),:),3);
+	  DeProfundis = size(stock_forcst,3); 
+	  DeProfundis1 = size(stock_forcst1,3); 
+	  tmp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_forcst(truestep,SelecVariables(i),:)); 
+	  tmp_big(StartLine1+1:StartLine1+DeProfundis1) = squeeze(stock_forcst1(truestep,SelecVariables(i),:)); 
+	  StartLine = StartLine+DeProfundis;
+	  StartLine1 = StartLine1+DeProfundis1;
+	end
+	tmp = sort(tmp);
+	tmp_big = sort(tmp_big);
+	MedianForecast(step,i) = tmp(round(B*0.5));
+	StdForecast(step,i) = std(tmp);
+	StdForecast_total(step,i) = std(tmp_big);
+	t = floor(options_.mh_conf_sig*B);
+	a = 1; 
+	b = t;
+	tmp2 = [1;t;tmp(t)-tmp(1)];
+	while b <= B
+	  tmp1 = [a;b;tmp(b)-tmp(a)];
+	  a = a + 1;
+	  b = b + 1;
+	  if tmp1(3) < tmp2(3)
+	    tmp2 = tmp1;     
+	  end    
+	end
+	HPD(step,i,1) = tmp(tmp2(1));
+	HPD(step,i,2) = tmp(tmp2(2));
+	t = floor(options_.mh_conf_sig*B);
+	a = 1; 
+	b = t;
+	tmp2_big = [1;t;tmp_big(t)-tmp_big(1)];
+	while b <= B
+	  tmp1_big = [a;b;tmp_big(b)-tmp_big(a)];
+	  a = a + 1;
+	  b = b + 1;
+	  if tmp1_big(3) < tmp2_big(3)
+	    tmp2_big = tmp1_big;     
+	  end    
+	end
+	HPD_total(step,i,1) = tmp_big(tmp2_big(1));
+	HPD_total(step,i,2) = tmp_big(tmp2_big(2));
+      end
+      disp(['    Period = ' int2str(step)]);
+    end
+    MeanForecast = MeanForecast/B;
+    [nbplt,nr,nc,lr,lc,nstar] = pltorg(nvar);
+    if TeX
+      fidTeX = fopen([fname_ '_BayesianForecasts.TeX'],'w');
+      fprintf(fidTeX,'%% TeX eps-loader file generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+      fprintf(fidTeX,' \n');
+      NAMES = [];
+      TEXNAMES = [];
+    end    
+    for plt = 1:nbplt
+      if TeX
+    NAMES = [];
+    TEXNAMES = [];
+      end
+      hfig = figure('Name','Out of sample forecasts');
+      for i = 1:nstar
+    k = (plt-1)*nstar+i;
+    if k > nvar
+      break
+    end
+    subplot(nr,nc,i)
+    hold on
+    if any(k==IdObs)
+      idx = find(k==IdObs);
+      if options_.loglinear == 1
+        plot(1:10+options_.forecast,...
+             [exp(data(idx,size(data,2)-10+1:end))';...
+              MeanForecast(:,k)],'-b','linewidth',2)
+      else
+        plot(1:10+options_.forecast,...
+             [data(idx,size(data,2)-10+1:end)';...
+              MeanForecast(:,k)],'-b','linewidth',2)
+      end
+      offsetx = 10;
+    else
+      plot(1:options_.forecast,MeanForecast(:,k),'-b', ...
+         'linewidth',2)
+      offsetx = 0;
+    end   
+    plot(offsetx+[1:options_.forecast],HPD(:,k,1),'--g', ...
+         'linewidth',1.5)
+    plot(offsetx+[1:options_.forecast],HPD(:,k,2),'--g', ...
+         'linewidth',1.5)
+    plot(offsetx+[1:options_.forecast],HPD_total(:,k,1),'--r', ...
+         'linewidth',1.5)
+    plot(offsetx+[1:options_.forecast],HPD_total(:,k,2),'--r','linewidth',1.5)
+    set(gca,'XTick',offsetx+[1 10 20 30 40 50 60 70 80 90]);
+    set(gca,'XTickLabel',{'1';'10';'20';'30';'40';'50';'60';'70';'80';'90'});
+    %   xlim([1 options_.forecast+10]);
+    if any(k==IdObs)
+      plot([11 11],ylim,'-c')
+    end
+    box on
+    title(deblank(varlist(k,:)),'Interpreter','none')
+    hold off
+    eval(['oo_.Forecast.Mean.' deblank(varlist(k,:)) ' = MeanForecast(:,k)'';']);
+    eval(['oo_.Forecast.Median.' deblank(varlist(k,:)) ' = MedianForecast(:,k)'';']);
+    eval(['oo_.Forecast.Std.' deblank(varlist(k,:)) ' = StdForecast(:,k)'';']);
+    eval(['oo_.Forecast.HPDinf.' deblank(varlist(k,:)) ' = squeeze(HPD(:,k,1))'';']);
+    eval(['oo_.Forecast.HPDsup.' deblank(varlist(k,:)) ' = squeeze(HPD(:,k,2))'';']);
+    eval(['oo_.Forecast.HPDTotalinf.' deblank(varlist(k,:)) ' = squeeze(HPD_total(:,k,1))'';']);
+    eval(['oo_.Forecast.HPDTotalsup.' deblank(varlist(k,:)) ' = squeeze(HPD_total(:,k,2))'';']);
+    if TeX
+      NAMES = strvcat(NAMES,deblank(varlist(k,:)));
+      TEXNAMES = strvcat(TEXNAMES,['$ ' deblank(varlist_TeX(k,:)) ' $']);
+    end
+      end
+      eval(['print -depsc2 ' fname_ '_Forecasts' int2str(plt)]);
+      eval(['print -dpdf ' fname_ '_Forecasts' int2str(plt)]);
+      saveas(hfig,[fname_ '_Forecasts' int2str(plt) '.fig']);
+      if options_.nograph, close(hfig), end
+      if TeX
+    fprintf(fidTeX,'\\begin{figure}[H]\n');
+    for jj = 1:nstar
+      fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
+    end    
+    fprintf(fidTeX,'\\centering \n');
+    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Forecasts%s}\n',fname_,int2str(plt));
+    fprintf(fidTeX,'\\caption{DSGE posterior mean forecats with HPD intervals.}');
+    fprintf(fidTeX,'\\label{Fig:Forecasts:%s}\n',int2str(plt));
+    fprintf(fidTeX,'\\end{figure}\n');
+    fprintf(fidTeX,' \n');
+      end
+    end
+    fprintf('MH: Out of sample forecasts, done!\n')
+    disp(' ')
+  end
+  %%
+  %% Smooth variables and Filtered variables (all endogenous variables are considered here)        
+  %%
+  if options_.smoother
+    [MeanSmooth,MedianSmooth,StdSmooth,DistribSmooth,HPDSmooth] = GetPosteriorStatistics(gend,B,'SmoothedVariables');    
+    [MeanInnov,MedianInnov,StdInnov,DistribInnov,HPDInnov] = GetPosteriorStatistics(gend,B,'SmoothedShocks');
+    if nvn
+      [MeanError,MedianError,StdError,DistribError,HPDError] = GetPosteriorStatistics(gend,B,'SmoothedObservationErrors');
+    end
+    %%
+    %% Now I plot the smooth -structural- shocks
+    %%
+    MakeSmoothVariablesPlots('SmoothedShocks',DistribInnov,MeanInnov,gend)
+    %%
+    %% Smoothed variables (observed and unobserved)
+    %%
+    MakeSmoothVariablesPlots('SmoothedVariables',DistribSmooth,MeanSmooth,gend)
+    %%
+    %% Smoothed observation error
+    %%
+    if nvn
+      MakeSmoothVariablesPlots('SmoothedObservationErrors',DistribError,MeanError,gend)
+      %%
+      %% Historical and smoothed variabes
+      %%
+      MakeSmoothVariablesPlots('Historical&SmoothedObservableVariables',...
+                   MeanSmooth,rawdata(options_.first_obs+(0:gend-1),:),gend)
+    end  
+    %%
+    %%
+    %%
+  end % options_.smoother
+  if options_.filtered_vars % Filtered variables.
+    [MeanFilter,MedianFilter,StdFilter,DistribFilter,HPDFilter] = GetPosteriorStatistics(gend,B,'FilteredVariables');
+    MakeSmoothVariablesPlots('FilteredVariables',DistribFilter,MeanFilter,gend)
+  end          
+  %%
+  %%    Posterior IRFs. Instead of displaying the IRFs associated to the posterior mean
+  %%    of the structural parameters (by calling stoch_simul after estimation), 
+  %%    metropolis.m will display the posterior mean of the IRFs and the deciles of 
+  %%    the IRFs' posterior distribution. All the results are saved in the global 
+  %%    structure oo_ (posterior medians, posterior standard deviations and posterior HPD   
+  %%    intervals are also computed and saved).
+  %%
+  if options_.bayesian_irf
+    deep = MU;
+    subindx = subset();
+    nirfs = options_.irf;
+    if ~isempty(dsge_prior_weight)
+      files = eval(['dir(''' fname_ '_irf_dsgevar*.mat'');']);     
+      if length(files)                                        
+	delete([fname_ '_irf_dsgevar*.mat']);                    
+	disp(['MH: Old ' fname_ '_irf_dsgevar files deleted! ']) 
+      end
+      files = eval(['dir(''' fname_ '_irf_dsge*.mat'');']);     
+      if length(files)                                        
+	delete([fname_ '_irf_dsge*.mat']);                    
+	disp(['MH: Old ' fname_ '_irf_dsge files deleted! ']) 
+      end
+    else
+      files = eval(['dir(''' fname_ '_irf_dsge*.mat'');']);     
+      if length(files)                                        
+	delete([fname_ '_irf_dsge*.mat']);                    
+	disp(['MH: Old ' fname_ '_irf_dsge files deleted! ']) 
+      end      
+    end    
+    if B <= MAX_nirfs_dsge
+      stock_irf_dsge = zeros(nirfs,size(lgy_,1),exo_nbr,B);
+    elseif nvn & B > MAX_nirfs
+      stock_irf_dsge = zeros(nirfs,size(lgy_,1),exo_nbr,MAX_nirfs_dsge);
+    end
+    if ~isempty(dsge_prior_weight)
+      if B <= MAX_nirfs_dsgevar
+	stock_irf_dsgevar = zeros(nirfs,nvobs,exo_nbr,B);
+      else
+	stock_irf_dsgevar = zeros(nirfs,nvobs,exo_nbr,MAX_nirfs_dsgevar);
+      end
+      [mYY,mXY,mYX,mXX,Ydata,Xdata] = ...
+	  VarSampleMoments(options_.first_obs,options_.first_obs+options_.nobs-1,options_.varlag,-1);
+      NumberOfLags = options_.varlag;
+      NumberOfLagsTimesNvobs = NumberOfLags*nvobs;
+      COMP_draw = diag(ones(nvobs*(NumberOfLags-1),1),-nvobs);
+    end
+    h = waitbar(0,'Bayesian IRFs...');
+    if nfile-ffil+1>1
+      sfil_irf_dsge = 0;
+      irun_irf_dsge = 0;
+      sfil_irf_dsgevar = 0;
+      irun_irf_dsgevar = 0;
+      for b = 1:B;
+	irun_irf_dsge = irun_irf_dsge+1;
+	tmp_dsge = zeros(nirfs,size(lgy_,1),exo_nbr);
+	if ~isempty(dsge_prior_weight)
+	  irun_irf_dsgevar = irun_irf_dsgevar+1;
+	  tmp_dsgevar = zeros(nirfs,nvobs*exo_nbr);
+	end
+	choose_an_mh_file = rand;
+	mh_file_number = FLN(find(choose_an_mh_file>=FLN(:,3)),1);
+	if isempty(mh_file_number)
+	  mh_file_number = ffil;
+	else    
+	  mh_file_number = mh_file_number(1);
+	end
+	eval(['load ' instr1 int2str(mh_file_number) instr2]);
+	clear post2 logpo2;
+	DEEP  = x2(floor(rand*FLN(find(mh_file_number == FLN(:,1)),2))+1,:);
+	deep(subindx) = DEEP(subindx);
+	% dsge
+	set_parameters(deep);
+	dr_ = resol(ys_,0);
+	SS(lgx_orig_ord_,lgx_orig_ord_)=Sigma_e_+1e-14* ...
+	    eye(exo_nbr);
+	cs = transpose(chol(SS));
+	tit(lgx_orig_ord_,:) = lgx_;
+	for i = 1:exo_nbr
+	  if SS(i,i) > 1e-13
+	    y=irf(dr_,cs(lgx_orig_ord_,i),nirfs,options_.drop, ...
+		  options_.replic, options_.order);
+	    if options_.relative_irf
+	      y = 100*y/cs(i,i); 
+	    end
+	    for j = 1:size(lgy_,1)
+	      if max(y(j,:)) - min(y(j,:)) > 1e-10 
+		tmp_dsge(:,j,i) = transpose(y(j,:));
+	      end
+	    end
+	  end
+	end
+	if irun_irf_dsge < MAX_nirfs_dsge
+	  stock_irf_dsge(:,:,:,irun_irf_dsge) = tmp_dsge;
+	else
+	  stock_irf_dsge(:,:,:,irun_irf_dsge) = tmp_dsge;
+	  sfil_irf_dsge = sfil_irf_dsge + 1;
+	  instr = [fname_ '_irf_dsge' int2str(sfil_irf_dsge) ' stock_irf_dsge;'];
+	  eval(['save ' instr]);
+	  irun_irf_dsge = 0;
+	  stock_irf_dsge = zeros(nirfs,size(lgy_,1),exo_nbr,MAX_nirfs_dsge);
+	end
+	% bvar-dsge 
+	if ~isempty(dsge_prior_weight)
+	  [fval,cost_flag,ys,trend_coeff,info,PHI,SIGMAu,iXX] = DsgeVarLikelihood(deep',gend);
+	  DSGE_PRIOR_WEIGHT = floor(gend*(1+dsge_prior_weight));
+	  tmp1 = SIGMAu*gend*(dsge_prior_weight+1);
+          val  = 1;
+          tmp1 = chol(inv(tmp1))'; 
+	  while val;
+	    % draw from the marginal posterior of sig
+	    tmp2 = tmp1*randn(nvobs,DSGE_PRIOR_WEIGHT-NumberOfLagsTimesNvobs);
+	    SIGMAu_draw = inv(tmp2*tmp2');
+            % draw from the conditional posterior of PHI
+	    VARvecPHI = kron(SIGMAu_draw,iXX);
+	    PHI_draw  = PHI(:) + chol(VARvecPHI)'*randn(nvobs*NumberOfLagsTimesNvobs,1);
+	    COMP_draw(1:nvobs,:) = reshape(PHI_draw,NumberOfLagsTimesNvobs,nvobs)';
+	    % Check for stationarity
+	    tests = find(abs(eig(COMP_draw))>0.9999999999);
+	    if isempty(tests)
+	      val=0;
+	    end
+	  end
+	  % Get rotation
+	  if dsge_prior_weight > 0
+	    Atheta(dr_.order_var,:) = dr_.ghu*sqrt(Sigma_e_);
+	    A0 = Atheta(bayestopt_.mfys,:);
+	    [OMEGAstar,SIGMAtr] = qr2(A0');
+	  end
+          % SIGMAu_draw = A0*A0';
+	  SIGMAu_chol = chol(SIGMAu_draw)';
+	  SIGMAtrOMEGA = SIGMAu_chol*OMEGAstar';
+	  PHIpower = eye(NumberOfLagsTimesNvobs);
+	  irfs = zeros (nirfs,nvobs*exo_nbr);
+	  tmp3 = PHIpower(1:nvobs,1:nvobs)*SIGMAtrOMEGA;
+	  irfs(1,:) = tmp3(:)';
+	  for t = 2:nirfs
+	    PHIpower = COMP_draw*PHIpower;
+	    tmp3 = PHIpower(1:nvobs,1:nvobs)*SIGMAtrOMEGA;
+	    irfs(t,:)  = tmp3(:)';
+	  end            
+	  for j = 1:(nvobs*exo_nbr)
+	    if max(irfs(:,j)) - min(irfs(:,j)) > 1e-10 
+	      tmp_dsgevar(:,j) = (irfs(:,j));
+	    end
+	  end
+	  if irun_irf_dsgevar < MAX_nirfs_dsgevar
+	    stock_irf_dsgevar(:,:,:,irun_irf_dsgevar) = reshape(tmp_dsgevar,nirfs,nvobs,exo_nbr);
+	  else
+	    stock_irf_dsgevar(:,:,:,irun_irf_dsgevar) = reshape(tmp_dsgevar,nirfs,nvobs,exo_nbr);
+	    sfil_irf_dsgevar = sfil_irf_dsgevar + 1;
+	    instr = [fname_ '_irf_dsgevar' int2str(sfil_irf_dsgevar) ' stock_irf_dsgevar;'];,
+	    eval(['save ' instr]);
+	    irun_irf_dsgevar  = 0;
+	    stock_irf_dsgevar = zeros(nirfs,nvobs,exo_nbr,MAX_nirfs_dsgevar);
+	  end
+	end
+	waitbar(b/B,h);    
+      end
+      clear tmp;
+      if irun_irf_dsge
+	stock_irf_dsge = stock_irf_dsge(:,:,:,1:irun_irf_dsge);
+	sfil_irf_dsge = sfil_irf_dsge + 1;
+	instr = [fname_ '_irf_dsge' int2str(sfil_irf_dsge) ' stock_irf_dsge;'];
+	eval(['save ' instr]);
+      end
+      clear stock_irf_dsge;
+      if ~isempty(dsge_prior_weight)
+	if irun_irf_dsgevar
+	  stock_irf_dsgevar = stock_irf_dsgevar(:,:,:,1:irun_irf_dsgevar);
+	  sfil_irf_dsgevar = sfil_irf_dsgevar + 1;
+	  instr = [fname_ '_irf_dsgevar' int2str(sfil_irf_dsgevar) ' stock_irf_dsgevar;'];
+	  eval(['save ' instr]);
+	end
+	clear stock_irf_dsgevar;
+      end
+    else
+      sfil_irf_dsge = 0;
+      irun_irf_dsge = 0;
+      if ~isempty(dsge_prior_weight)
+	sfil_irf_dsgevar = 0;
+	irun_irf_dsgevar = 0;
+      end
+      eval(['load ' instr1 int2str(ffil) instr2]);
+      NumberOfSimulations = length(logpo2);
+      clear post2 logpo2;
+      for b = 1:B;
+	irun_irf_dsge = irun_irf_dsge+1;
+	tmp_dsge = zeros(nirfs,size(lgy_,1),exo_nbr);
+	if ~isempty(dsge_prior_weight)
+	  irun_irf_dsgevar = irun_irf_dsgevar+1;
+	  tmp_dsgevar = zeros(nirfs,nvobs*exo_nbr);	  
+	end
+	DEEP = x2(floor(rand*NumberOfSimulations)+1,:);
+	deep(subindx) = DEEP(subindx);
+	% dsge
+	set_parameters(deep);
+	dr_ = resol(ys_,0);
+	SS(lgx_orig_ord_,lgx_orig_ord_) = Sigma_e_+1e-14*eye(exo_nbr);
+	SS = transpose(chol(SS));
+	tit(lgx_orig_ord_,:) = lgx_;
+	for i = 1:exo_nbr
+	  if SS(i,i) > 1e-13
+	    y=irf(dr_,SS(lgx_orig_ord_,i), options_.irf, options_.drop, ...
+		  options_.replic, options_.order);
+	    if options_.relative_irf
+	      y = 100*y/cs(i,i); 
+	    end
+	    for j = 1:size(lgy_,1)
+	      if max(y(j,:)) - min(y(j,:)) > 1e-10 
+		tmp_dsge(:,j,i) = transpose(y(j,:));
+	      end
+	    end
+	  end
+	end
+	if irun_irf_dsge < MAX_nirfs_dsge
+	  stock_irf_dsge(:,:,:,irun_irf_dsge) = tmp_dsge;
+	else
+	  stock_irf_dsge(:,:,:,irun_irf_dsge) = tmp_dsge;
+	  sfil_irf_dsge = sfil_irf_dsge + 1;
+	  instr = [fname_ '_irf_dsge' int2str(sfil_irf_dsge) ' stock_irf_dsge;'];
+	  eval(['save ' instr]);
+	  irun_irf_dsge = 0;
+	  stock_irf_dsge = zeros(nirfs,size(lgy_,1),exo_nbr,MAX_nirfs_dsge);
+	end
+	% bvar-dsge
+	if ~isempty(dsge_prior_weight)
+	  [fval,cost_flag,ys,trend_coeff,info,PHI,SIGMAu,iXX] = DsgeVarLikelihood(deep',gend);
+	  DSGE_PRIOR_WEIGHT = floor(gend*(1+dsge_prior_weight));
+          tmp1 = SIGMAu*gend*(1+dsge_prior_weight);
+	  tmp1 = chol(inv(tmp1))';
+          val = 1;
+	  while val;
+	    % draw from the marginal posterior of sig
+	    tmp2 = tmp1*randn(nvobs,DSGE_PRIOR_WEIGHT-NumberOfLagsTimesNvobs);
+	    SIGMAu_draw = inv(tmp2*tmp2');
+	    % draw from the conditional posterior of PHI
+	    VARvecPHI = kron(SIGMAu_draw,iXX);
+	    PHI_draw  = PHI(:) + chol(VARvecPHI)'*randn(nvobs*NumberOfLagsTimesNvobs,1);
+	    COMP_draw(1:nvobs,:) = reshape(PHI_draw,NumberOfLagsTimesNvobs,nvobs)';
+	    % Check for stationarity
+	    tests = find(abs(eig(COMP_draw))>0.9999999999);
+	    if isempty(tests)
+	      val=0;
+	    end
+	  end
+	  % Get rotation
+	  if dsge_prior_weight > 0
+	    Atheta(dr_.order_var,:) = dr_.ghu*sqrt(Sigma_e_);
+	    A0 = Atheta(bayestopt_.mfys,:);
+	    [OMEGAstar,SIGMAtr] = qr2(A0');
+	  end
+	  SIGMAu_chol = chol(SIGMAu_draw)';
+	  SIGMAtrOMEGA = SIGMAu_chol*OMEGAstar';
+	  PHIpower = eye(NumberOfLagsTimesNvobs);
+	  irfs = zeros (nirfs,nvobs*exo_nbr);
+	  tmp3 = PHIpower(1:nvobs,1:nvobs)*SIGMAtrOMEGA;
+	  irfs(1,:) = tmp3(:)';
+	  for t = 2:nirfs
+	    PHIpower = COMP_draw*PHIpower;
+	    tmp3 = PHIpower(1:nvobs,1:nvobs)*SIGMAtrOMEGA;
+	    irfs(t,:)  = tmp3(:)';
+	  end
+	  for j = 1:(nvobs*exo_nbr)
+	    if max(irfs(:,j)) - min(irfs(:,j)) > 1e-10 
+	      tmp_dsgevar(:,j) = (irfs(:,j));
+	    end	
+	  end	
+	  if irun_irf_dsgevar < MAX_nirfs_dsgevar
+	    stock_irf_dsgevar(:,:,:,irun_irf_dsgevar) = reshape(tmp_dsgevar,nirfs,nvobs,exo_nbr);
+	  else
+	    stock_irf_dsgevar(:,:,:,irun_irf_dsgevar) = reshape(tmp_dsgevar,nirfs,nvobs,exo_nbr);
+	    sfil_irf_dsgevar = sfil_irf_dsgevar + 1;
+	    instr = [fname_ '_irf_dsgevar' int2str(sfil_irf_dsgevar) ' stock_irf_dsgevar;'];,
+	    eval(['save ' instr]);
+	    irun_irf_dsgevar = 0;
+	    stock_irf_dsgevar = zeros(nirfs,nvobs,exo_nbr,MAX_nirfs_dsgevar);
+	  end
+	end
+	waitbar(b/B,h);
+      end
+      if irun_irf_dsge
+	stock_irf_dsge = stock_irf_dsge(:,:,:,1:irun_irf_dsge);
+	sfil_irf_dsge = sfil_irf_dsge + 1;
+	instr = [fname_ '_irf_dsge' int2str(sfil_irf_dsge) ' stock_irf_dsge;'];
+	eval(['save ' instr]);
+      end
+      clear stock_irf_dsge;
+      if ~isempty(dsge_prior_weight)
+	if irun_irf_dsgevar
+	  stock_irf_dsgevar = stock_irf_dsgevar(:,:,:,1:irun_irf_dsgevar);
+	  sfil_irf_dsgevar = sfil_irf_dsgevar + 1;
+	  instr = [fname_ '_irf_dsgevar' int2str(sfil_irf_dsgevar) ' stock_irf_dsgevar;'];
+	  eval(['save ' instr]);
+	end
+	clear stock_irf_dsgevar;    
+      end
+    end
+    close(h)
+    %%
+    %%  Now i compute some statistics (mean, median, std, deciles, HPD intervals)
+    %%
+    %%  DSGE:
+    tmp = zeros(B,1);
+    MeanIRF_dsge = zeros(nirfs,nvar,exo_nbr);
+    MedianIRF_dsge = zeros(nirfs,nvar,exo_nbr);
+    StdIRF_dsge = zeros(nirfs,nvar,exo_nbr);
+    DistribIRF_dsge = zeros(nirfs,nvar,exo_nbr,9);
+    HPDIRF_dsge = zeros(nirfs,nvar,exo_nbr,2);
+    if ~isempty(dsge_prior_weight)
+      SelecVariables = bayestopt_.mfys;
+      nvar = length(SelecVariables);
+    end
+    fprintf('MH: Posterior IRFs (dsge)...\n')
+    for i = 1:exo_nbr
+      for j = 1:nvar
+	for k = 1:nirfs
+	  StartLine = 0;
+	  for file = 1:sfil_irf_dsge;
+	    instr = [fname_ '_irf_dsge' int2str(file)];
+	    eval(['load ' instr]);
+	    MeanIRF_dsge(k,j,i) = MeanIRF_dsge(k,j,i)+sum(stock_irf_dsge(k,SelecVariables(j),i,:),4);
+	    DeProfundis = size(stock_irf_dsge,4); 
+	    tmp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_irf_dsge(k,SelecVariables(j),i,:)); 
+	    StartLine = StartLine+DeProfundis;
+	  end
+	  tmp = sort(tmp);
+	  MedianIRF_dsge(k,j,i) = tmp(round(B*0.5));
+	  StdIRF_dsge(k,j,i) = std(tmp);
+	  DistribIRF_dsge(k,j,i,:) = reshape(tmp(deciles),1,1,1,9);
+	  tt = floor(options_.mh_conf_sig*B);
+	  a = 1; 
+	  b = tt;
+	  tmp2 = [1;tt;tmp(tt)-tmp(1)];
+	  while b <= B
+	    tmp1 = [a;b;tmp(b)-tmp(a)];
+	    a = a + 1;
+	    b = b + 1;
+	    if tmp1(3,1) < tmp2(3,1)
+	      tmp2 = tmp1;     
+	    end
+	  end
+	  HPDIRF_dsge(k,j,i,1) = tmp(tmp2(1,1));
+	  HPDIRF_dsge(k,j,i,2) = tmp(tmp2(2,1));
+	end
+	disp(['    Variable: ' deblank(lgy_(SelecVariables(j),:)) ', orthogonalized shock to ' deblank(tit(i,:))])  
+      end
+    end
+    clear stock_irf_dsge;
+    MeanIRF_dsge = MeanIRF_dsge/B;
+    for i = 1:exo_nbr
+      for j = 1:nvar
+	eval(['oo_.PosteriorIRF.Dsge.Mean.' ...
+	      deblank(lgy_(SelecVariables(j),:)) '_' deblank(tit(i,:)) ' = MeanIRF_dsge(:,j,i);']);
+	eval(['oo_.PosteriorIRF.Dsge.Median.' ...
+	      deblank(lgy_(SelecVariables(j),:)) '_' deblank(tit(i,:)) ' = MedianIRF_dsge(:,j,i);']);
+	eval(['oo_.PosteriorIRF.Dsge.Std.' ...
+	      deblank(lgy_(SelecVariables(j),:)) '_' deblank(tit(i,:)) ' = StdIRF_dsge(:,j,i);']);
+	eval(['oo_.PosteriorIRF.Dsge.Distribution.' ...
+	      deblank(lgy_(SelecVariables(j),:)) '_' deblank(tit(i,:)) ' = squeeze(DistribIRF_dsge(:,j,i,:));']);
+	eval(['oo_.PosteriorIRF.Dsge.HPDinf.' ...
+	      deblank(lgy_(SelecVariables(j),:)) '_' deblank(tit(i,:)) ' = squeeze(HPDIRF_dsge(:,j,i,1));']);
+	eval(['oo_.PosteriorIRF.Dsge.HPDsup.' ...
+	      deblank(lgy_(SelecVariables(j),:)) '_' deblank(tit(i,:)) ' = squeeze(HPDIRF_dsge(:,j,i,2));']);
+      end
+    end
+    if ~isempty(dsge_prior_weight)% BVAR-DSGE:
+      tmp = zeros(B,1);
+      MeanIRF_dsgevar = zeros(nirfs,nvar,exo_nbr);
+      MedianIRF_dsgevar = zeros(nirfs,nvar,exo_nbr);
+      StdIRF_dsgevar = zeros(nirfs,nvar,exo_nbr);
+      DistribIRF_dsgevar = zeros(nirfs,nvar,exo_nbr,9);
+      HPDIRF_dsgevar = zeros(nirfs,nvar,exo_nbr,2);
+      disp('')
+      fprintf('MH: Posterior IRFs (bvar-dsge)...\n')
+      for i = 1:exo_nbr
+	for j = 1:nvobs
+	  for k = 1:nirfs
+	    StartLine = 0;
+	    for file = 1:sfil_irf_dsgevar
+	      instr = [fname_ '_irf_dsgevar' int2str(file)];
+	      eval(['load ' instr]);
+	      MeanIRF_dsgevar(k,j,i) = MeanIRF_dsgevar(k,j,i)+sum(stock_irf_dsgevar(k,j,i,:),4);
+	      DeProfundis = size(stock_irf_dsgevar,4); 
+	      tmp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_irf_dsgevar(k,j,i,:)); 
+	      StartLine = StartLine+DeProfundis;
+	    end
+	    tmp = sort(tmp);
+	    MedianIRF_dsgevar(k,j,i) = tmp(round(B*0.5));
+	    StdIRF_dsgevar(k,j,i) = std(tmp);
+	    DistribIRF_dsgevar(k,j,i,:) = reshape(tmp(deciles),1,1,1,9);
+	    tt = floor(options_.mh_conf_sig*B);
+	    a = 1; 
+	    b = tt;
+	    tmp2 = [1;tt;tmp(tt)-tmp(1)];
+	    while b <= B
+	      tmp1 = [a;b;tmp(b)-tmp(a)];
+	      a = a + 1;
+	      b = b + 1;
+	      if tmp1(3,1) < tmp2(3,1)
+		tmp2 = tmp1;     
+	      end    
+	    end
+	    HPDIRF_dsgevar(k,j,i,1) = tmp(tmp2(1,1));
+	    HPDIRF_dsgevar(k,j,i,2) = tmp(tmp2(2,1));
+	  end
+	  disp(['    Variable: ' deblank(options_.varobs(j,:)) ', orthogonalized shock to ' deblank(tit(i,:))])  
+	end   
+      end
+      clear stock_irf_dsgevar;
+      MeanIRF_dsgevar = MeanIRF_dsgevar/B;
+      for i = 1:exo_nbr
+	for j = 1:nvobs
+	  eval(['oo_.PosteriorIRF.BvarDsge.Mean.' ...
+		deblank(options_.varobs(j,:)) '_' deblank(tit(i,:)) ' = MeanIRF_dsgevar(:,j,i);']);
+	  eval(['oo_.PosteriorIRF.BvarDsge.Median.' ...
+		deblank(options_.varobs(j,:)) '_' deblank(tit(i,:)) ' = MedianIRF_dsgevar(:,j,i);']);
+	  eval(['oo_.PosteriorIRF.BvarDsge.Std.' ...
+		deblank(options_.varobs(j,:)) '_' deblank(tit(i,:)) ' = StdIRF_dsgevar(:,j,i);']);
+	  eval(['oo_.PosteriorIRF.BvarDsge.Distribution.' ...
+		deblank(options_.varobs(j,:)) '_' deblank(tit(i,:)) ' = squeeze(DistribIRF_dsgevar(:,j,i,:));']);
+	  eval(['oo_.PosteriorIRF.BvarDsge.HPDinf.' ...
+		deblank(options_.varobs(j,:)) '_' deblank(tit(i,:)) ' = squeeze(HPDIRF_dsgevar(:,j,i,1));']);
+	  eval(['oo_.PosteriorIRF.BvarDsge.HPDsup.' ...
+		deblank(options_.varobs(j,:)) '_' deblank(tit(i,:)) ' = squeeze(HPDIRF_dsgevar(:,j,i,2));']);
+	end
+      end
+    end
+    %%
+    %%  Finally I build the plots.
+    %%
+    if TeX
+      fidTeX = fopen([fname_ '_BayesianIRF.TeX'],'w');
+      fprintf(fidTeX,'%% TeX eps-loader file generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+      fprintf(fidTeX,' \n');
+    end
+    tit(lgx_orig_ord_,:) = lgx_;
+    if TeX; titTeX(lgx_orig_ord_,:) = lgx_TeX_; end;
+    for i=1:exo_nbr
+      number_of_plots_to_draw = 0;
+      index = [];
+      if ~~isempty(dsge_prior_weight) 
+	for j=1:nvar
+	  if MeanIRF_dsge(1,j,i)
+	    number_of_plots_to_draw = number_of_plots_to_draw + 1;
+	    index = cat(1,index,j);
+	  end
+	end
+      else% BVAR-DSGE
+	number_of_plots_to_draw = nvar;
+	index = (1:nvar)';
+      end
+      [nbplt,nr,nc,lr,lc,nstar] = pltorg(number_of_plots_to_draw);  
+      if nbplt == 1
+	if options_.relative_irf
+	  hh = figure('Name',['Relative response to orthogonalized shock to ' tit(i,:)]);
+	else
+	  hh = figure('Name',['Orthogonalized shock to ' tit(i,:)]);
+	end
+	NAMES = [];
+	if TeX; TEXNAMES = []; end;
+	for j=1:number_of_plots_to_draw
+	  set(0,'CurrentFigure',hh)
+	  subplot(nr,nc,j);
+	  plot([1 nirfs],[0 0],'-r','linewidth',0.5);% zero line.
+	  hold on
+	  for k = 1:9
+	    plot(1:nirfs,DistribIRF_dsge(:,index(j),i,k),'-k','linewidth',0.5,'Color',[0 0 0])
+	    if ~isempty(dsge_prior_weight)
+	      plot(1:nirfs,DistribIRF_dsgevar(:,j,i,k),'-k','linewidth',0.5,'Color',[0.80 0.80 0.80])
+	    end
+	  end
+	  plot(1:nirfs,MeanIRF_dsge(:,index(j),i),'-k','linewidth',3,'Color',[0 ...
+		    0 0])
+	  if ~isempty(dsge_prior_weight)
+	    plot(1:nirfs,MeanIRF_dsgevar(:,j,i),'-k','linewidth',3,'Color',[0.80 ...
+		    0.80 0.80])
+	  end
+	  xlim([1 nirfs]);
+	  hold off
+	  name = deblank(lgy_(SelecVariables(index(j)),:));
+	  NAMES = strvcat(NAMES,name);
+	  if TeX
+	    texname = deblank(lgy_TeX_(SelecVariables(index(j)),:));
+	    TEXNAMES = strvcat(TEXNAMES,['$' texname '$']);
+	  end
+	  title(name,'Interpreter','none')
+	end
+	if isempty(dsge_prior_weight)
+	  eval(['print -depsc2 ' fname_ '_Bayesian_IRFdsge_' deblank(tit(i,:))]);
+	  eval(['print -dpdf ' fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:))]);
+	  saveas(hh,[fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) '.fig']);
+	else
+	  eval(['print -depsc2 ' fname_ '_Bayesian_IRFbvardsge_' deblank(tit(i,:))]);
+	  eval(['print -dpdf ' fname_  '_Bayesian_IRFbvardsge_' deblank(tit(i,:))]);
+	  saveas(hh,[fname_  '_Bayesian_IRFbvardsge_' deblank(tit(i,:)) '.fig']);	  
+	end
+	if options_.nograph, close(hh), end
+	if TeX
+	  fprintf(fidTeX,'\\begin{figure}[H]\n');
+	  for jj = 1:number_of_plots_to_draw
+	    fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
+	  end    
+	  fprintf(fidTeX,'\\centering \n');
+	  if ~~isempty(dsge_prior_weight)
+	    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRFdsge_%s}\n',fname_,deblank(tit(i,:)));
+	  else
+	    fprintf(fidTeX,['\\includegraphics[scale=0.5]{%s_Bayesian_IRFbvardsge_%s}\n',fname_,deblank(tit(i,:))]);
+	  end  
+	  if options_.relative_irf
+	    fprintf(fidTeX,['\\caption{Bayesian relative IRF.}']);
+	  else
+	    if ~~isempty(dsge_prior_weight)
+	      fprintf(fidTeX,'\\caption{Bayesian IRF (DSGE model).}');
+	    else
+	      fprintf(fidTeX,'\\caption{Bayesian IRF (BVAR-DSGE model).}');
+	    end
+	  end
+	  if ~~isempty(dsge_prior_weight)
+	    fprintf(fidTeX,'\\label{Fig:BayesianIRFdsge:%s}\n',deblank(tit(i,:)));
+	  else
+	    fprintf(fidTeX,'\\label{Fig:BayesianIRFbvardsge:%s}\n',deblank(tit(i,:)));
+	  end  
+	  fprintf(fidTeX,'\\end{figure}\n');
+	  fprintf(fidTeX,' \n');
+	end    
+      elseif nbplt > 1
+	for fig = 1:nbplt-1
+	  if options_.relative_irf
+	    hh = figure('Name',['Relative response to orthogonalized' ...
+				' shock to ' tit(i,:) ' figure ' int2str(fig) '.']);
+	  else
+	    hh = figure('Name',['Orthogonalized shock to ' tit(i,:) ...
+				' figure ' int2str(fig) '.']);
+	  end
+	  NAMES = [];
+	  if TeX; TEXNAMES = []; end;
+	  for j=1:nstar
+	    jj = (fig-1)*nstar + j;
+	    subplot(nr,nc,j);
+	    plot([1 nirfs],[0 0],'-r','linewidth',0.5)
+	    hold on
+	    for k = 1:9
+	      plot(1:options_.irf,DistribIRF_dsge(:,index(jj),i,k),'-k','linewidth',0.5,'Color',[0 0 0])
+	      if ~isempty(dsge_prior_weight)
+		plot(1:nirfs,DistribIRF_dsgevar(:,jj,i,k),'-k','linewidth',0.5,'Color',[0.80 0.80 0.80])
+	      end
+	    end
+	    plot(1:nirfs,MeanIRF_dsge(:,index(jj),i),'-k','linewidth',3,'Color',[0 0 0])
+	    if ~isempty(dsge_prior_weight)
+	      plot(1:nirfs,MeanIRF_dsgevar(:,jj,i),'-k','linewidth',3,'Color',[0.80 0.80 0.80])
+	    end
+	    xlim([1 nirfs]);
+	    hold off
+	    name = deblank(lgy_(SelecVariables(index(jj)),:));
+	    NAMES = strvcat(NAMES,name);
+	    if TeX
+	      texname = deblank(lgy_TeX_(SelecVariables(index(jj)),:));
+	      TEXNAMES   = strvcat(TEXNAMES,['$' texname '$']);
+	    end
+	    title(name,'Interpreter','none')
+	  end
+	  if ~~isempty(dsge_prior_weight)
+	    eval(['print -depsc2 ' fname_ '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(fig)]);
+	    eval(['print -dpdf ' fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(fig)]);
+	    saveas(hh,[fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(fig) '.fig']);
+	  else
+	    eval(['print -depsc2 ' fname_ '_Bayesian_IRFbvardsge_' deblank(tit(i,:)) int2str(fig)]);
+	    eval(['print -dpdf ' fname_  '_Bayesian_IRFbvardsge_' deblank(tit(i,:)) int2str(fig)]);
+	    saveas(hh,[fname_  '_Bayesian_IRFbvardsge_' deblank(tit(i,:)) int2str(fig) '.fig']);
+	  end
+	  if options_.nograph, close(hh), end
+	  if TeX
+	    fprintf(fidTeX,'\\begin{figure}[H]\n');
+	    for jj = 1:nstar
+	      fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
+	    end    
+	    fprintf(fidTeX,'\\centering \n');
+	    if ~~isempty(dsge_prior_weight)
+	      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRFdsge_%s%s}\n',fname_,deblank(tit(i,:)),int2str(fig));
+	    else
+	      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRFbvardsge_%s%s}\n',fname_,deblank(tit(i,:)),int2str(fig));
+	    end
+	    if options_.relative_irf == 1
+	      fprintf(fidTeX,['\\caption{Bayesian relative IRF.}']);
+	    else
+	      if ~~isempty(dsge_prior_weight)
+		fprintf(fidTeX,'\\caption{Bayesian IRF (DSGE model).}');
+	      else
+		fprintf(fidTeX,['\\caption{Bayesian IRF (BVAR-DSGE model).}']);
+	      end
+	    end
+	    if ~~isempty(dsge_prior_weight)
+	      fprintf(fidTeX,'\\label{Fig:BayesianIRFdsge:%s:%s}\n',deblank(tit(i,:)), int2str(fig));
+	    else
+	      fprintf(fidTeX,'\\label{Fig:BayesianIRFbvardsge:%s:%s}\n',deblank(tit(i,:)), int2str(fig));
+	    end
+	    fprintf(fidTeX,'\\end{figure}\n');
+	    fprintf(fidTeX,' \n');
+	  end    
+	end
+	hh = figure('Name',['Orthogonalized shock to ' tit(i,:) ' figure ' int2str(nbplt) '.']);
+	NAMES = [];
+	if TeX; TEXNAMES = []; end;
+	for j=1:number_of_plots_to_draw -(nbplt-1)*nstar
+	  jj = (nbplt-1)*nstar + j;
+	  subplot(nr,nc,j);
+	  plot([1 nirfs],[0 0],'-r','linewidth',0.5);
+	  hold on
+	  for k = 1:9
+	    plot(1:options_.irf,DistribIRF_dsge(:,index(jj),i,k),'-k','linewidth',0.5,'Color',[0 0 0])
+	    if ~isempty(dsge_prior_weight)
+	      plot(1:nirfs,DistribIRF_dsgevar(:,jj,i,k),'-k','linewidth',0.5,'Color',[0.80 0.80 0.80])
+	    end
+	  end
+	  plot(1:nirfs,MeanIRF_dsge(:,index(jj),i),'-k','linewidth',3,'Color',[0 0 0])
+	  if ~isempty(dsge_prior_weight)
+	    plot(1:nirfs,MeanIRF_dsgevar(:,jj,i),'-k','linewidth',3,'Color',[0.80 0.80 0.80])
+	  end  
+	  xlim([1 nirfs]);
+	  hold off
+	  name = deblank(lgy_(SelecVariables(index(jj)),:));
+	  NAMES = strvcat(NAMES,name);
+	  if TeX
+	    texname = deblank(lgy_TeX_(SelecVariables(index(jj)),:));
+	    TEXNAMES   = strvcat(TEXNAMES,['$' texname '$']);
+	  end
+	  title(name,'Interpreter','none')
+	end
+	if ~~isempty(dsge_prior_weight)
+	  eval(['print -depsc2 ' fname_ '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(nbplt)]);
+	  eval(['print -dpdf ' fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(nbplt)]);
+	  saveas(hh,[fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(nbplt) '.fig']);
+	else
+	  eval(['print -depsc2 ' fname_ '_Bayesian_IRFbvardsge_' deblank(tit(i,:)) int2str(nbplt)]);
+	  eval(['print -dpdf ' fname_  '_Bayesian_IRFbvardsge_' deblank(tit(i,:)) int2str(nbplt)]);
+	  saveas(hh,[fname_  '_Bayesian_IRFbvardsge_' deblank(tit(i,:)) int2str(nbplt) '.fig']);	  
+	end  
+	  if options_.nograph, close(hh), end
+	if TeX
+	  fprintf(fidTeX,'\\begin{figure}[H]\n');
+	  for jj = 1:nstar
+	    fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
+	  end    
+	  fprintf(fidTeX,'\\centering \n');
+	  if ~~isempty(dsge_prior_weight)
+	    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRFdsge_%s%s}\n',fname_,deblank(tit(i,:)),int2str(nbplt));
+	    fprintf(fidTeX,'\\caption{Bayesian IRF (DSGE model).}');
+	    fprintf(fidTeX,'\\label{Fig:BayesianIRFdsge:%s:%s}\n',deblank(tit(i,:)), int2str(nbplt));
+	  else
+	    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRFbvardsge_%s%s}\n',fname_,deblank(tit(i,:)),int2str(nbplt));
+	    fprintf(fidTeX,'\\caption{Bayesian IRF (BVAR-DSGE model).}');
+	    fprintf(fidTeX,'\\label{Fig:BayesianIRF:%s:%s}\n',deblank(tit(i,:)), int2str(nbplt));
+	  end
+	  fprintf(fidTeX,'\\end{figure}\n');
+	  fprintf(fidTeX,' \n');
+	end    
+      else % nbplt = 0
+	disp('There''s nothing to plot here!')
+      end
+    end
+    if TeX
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end
+    fprintf('MH: Posterior IRFs, done!\n');
+  end
+  %%
+  %%    Posterior theoretical moments. Instead of displaying the posterior moments 
+  %%  associated to the posterior mean of the structural parameters (by calling 
+  %%  stoch_simul after estimation), metropolis.m will display the posterior mean 
+  %%  of the theoretical moments and the posterior HPD intervals of theoretical
+  %%  moments. All the results are saved in the global structure oo_ (posterior 
+  %%  medians, posterior standard deviations and posterior deciles are also
+  %%    computed and saved).
+  %%
+  if ~isempty(options_.unit_root_vars)
+    vartan = []; 
+    for i=1:nvar
+      if isempty(strmatch(deblank(varlist(i,:)),options_.unit_root_vars,'exact'))       
+	vartan = strvcat(vartan,varlist(i,:));
+      end
+    end
+  else
+    vartan = varlist;
+  end
+  if options_.moments_varendo & ~isempty(vartan)
+    deep = MU;
+    subindx = subset();
+    nvar    = size(vartan,1);
+    ivar = zeros(nvar,1);
+    for i = 1:nvar
+      ivar(i) = strmatch(vartan(i,:),lgy_,'exact');
+    end
+    nar = options_.ar;
+    if B <= MAX_nthm1
+      stock_thm1 = zeros(nvar,B);
+    elseif B > MAX_nthm1
+      stock_thm1 = zeros(nvar,MAX_nthm1);
+    end
+    if B <= MAX_nthm2
+      stock_thm2 = zeros(nvar,nvar,B);
+    elseif B > MAX_nthm2
+      stock_thm2 = zeros(nvar,nvar,MAX_nthm2);
+    end
+    if B <= MAX_nthm3
+      stock_thm3 = zeros(nvar,exo_nbr,B);
+    elseif B > MAX_nthm3
+      stock_thm3 = zeros(nvar,exo_nbr,MAX_nthm3);
+    end
+    if B <= MAX_nthm4
+      stock_thm4 = zeros(nvar,nar,B);
+    elseif B > MAX_nthm4
+      stock_thm4 = zeros(nvar,nar,MAX_nthm4);
+    end
+    h = waitbar(0,'Posterior theoretical moments...');
+    if nfile-ffil+1>1
+      sfil_thm1 = 0;
+      irun_thm1 = 0;
+      sfil_thm2 = 0;
+      irun_thm2 = 0;
+      sfil_thm3 = 0;
+      irun_thm3 = 0;
+      sfil_thm4 = 0;
+      irun_thm4 = 0;
+      for b = 1:B;
+	irun_thm1 = irun_thm1+1;
+	irun_thm2 = irun_thm2+1;
+	irun_thm3 = irun_thm3+1;
+	irun_thm4 = irun_thm4+1;
+	choose_an_mh_file = rand;
+	mh_file_number = ...
+	    FLN(find(choose_an_mh_file>=FLN(:,3)),1);
+	if isempty(mh_file_number)
+	  mh_file_number = ffil;
+	else    
+	  mh_file_number = mh_file_number(1);
+	end    
+	eval(['load ' instr1 int2str(mh_file_number) instr2]);
+	clear post2 logpo2;
+	DEEP  = x2(floor(rand*FLN(find(mh_file_number == FLN(:,1)),2))+1,:);
+	deep(subindx) = DEEP(subindx);
+	set_parameters(deep);
+	dr_ = resol(ys_,0);
+	Gamma_y = th_autocovariances(dr_,ivar);
+	if options_.order == 2
+	  m_mean = dr_.ys(ivar) + Gamma_y{options_.ar+3};
+	else
+	  m_mean = dr_.ys(ivar);
+	end
+	variance =  Gamma_y{1};
+	if irun_thm1 < MAX_nthm1
+	  stock_thm1(:,irun_thm1) = m_mean;
+	else
+	  stock_thm1(:,irun_thm1) = m_mean;
+	  sfil_thm1 = sfil_thm1 + 1;
+	  instr = [fname_ '_thm1' int2str(sfil_thm1) ' stock_thm1;'];
+	  eval(['save ' instr]);
+	  irun_thm1 = 0;
+	  stock_thm1 = zeros(nvar,MAX_nthm1);
+	end
+	if irun_thm2 < MAX_nthm2
+	  stock_thm2(:,:,irun_thm2) = variance;
+	else
+	  stock_thm2(:,:,irun_thm2) = variance;
+	  sfil_thm2 = sfil_thm2 + 1;
+	  instr = [fname_ '_thm2' int2str(sfil_thm2) ' stock_thm2;'];
+	  eval(['save ' instr]);
+	  irun_thm2 = 0;
+	  stock_thm2 = zeros(nvar,nvar,MAX_nthm2);
+	end
+	if irun_thm3 < MAX_nthm3
+	  stock_thm3(:,:,irun_thm3) = Gamma_y{nar+2};
+	else
+	  stock_thm3(:,:,irun_thm3) = Gamma_y{nar+2};
+	  sfil_thm3 = sfil_thm3 + 1;
+	  instr = [fname_ '_thm3' int2str(sfil_thm3) ' stock_thm3;'];
+	  eval(['save ' instr]);
+	  irun_thm3 = 0;
+	  stock_thm3 = zeros(nvar,exo_nbr,MAX_nthm3);
+	end
+	if irun_thm4 < MAX_nthm4
+	  for lag = 1:nar
+	    stock_thm4(:,lag,irun_thm4) = diag(Gamma_y{1+lag});
+	  end	
+	else
+	  for lag = 1:nar
+	    stock_thm4(:,lag,irun_thm4) = diag(Gamma_y{1+lag});
+	  end	
+	  sfil_thm4 = sfil_thm4 + 1;
+	  instr = [fname_ '_thm4' int2str(sfil_thm4) ' stock_thm4;'];
+	  eval(['save ' instr]);
+	  irun_thm4 = 0;
+	  stock_thm4 = zeros(nvar,nar,MAX_nthm4);
+	end
+	waitbar(b/B,h);    
+      end
+      clear m_mean variance Gamma_y;
+      if irun_thm1
+	stock_thm1 = stock_thm1(:,1:irun_thm1);
+	sfil_thm1 = sfil_thm1 + 1;
+	instr = [fname_ '_thm1' int2str(sfil_thm1) ' stock_thm1;'];
+	eval(['save ' instr]);
+      end
+      clear stock_thm1;
+      if irun_thm2
+	stock_thm2 = stock_thm2(:,:,1:irun_thm2);
+	sfil_thm2 = sfil_thm2 + 1;
+	instr = [fname_ '_thm2' int2str(sfil_thm2) ' stock_thm2;'];
+	eval(['save ' instr]);
+      end
+      clear stock_thm2;
+      if irun_thm3
+	stock_thm3 = stock_thm3(:,:,1:irun_thm3);
+	sfil_thm3 = sfil_thm3 + 1;
+	instr = [fname_ '_thm3' int2str(sfil_thm3) ' stock_thm3;'];
+	eval(['save ' instr]);
+      end
+      clear stock_thm3;
+      if irun_thm4
+	stock_thm4 = stock_thm4(:,:,1:irun_thm4);
+	sfil_thm4 = sfil_thm4 + 1;
+	instr = [fname_ '_thm4' int2str(sfil_thm4) ' stock_thm4;'];
+	eval(['save ' instr]);
+      end
+      clear stock_thm4;
+    else        
+      sfil_thm1 = 0;
+      irun_thm1 = 0;
+      sfil_thm2 = 0;
+      irun_thm2 = 0;
+      sfil_thm3 = 0;
+      irun_thm3 = 0;
+      sfil_thm4 = 0;
+      irun_thm4 = 0;
+      eval(['load ' instr1 int2str(ffil) instr2]);
+      NumberOfSimulations = length(logpo2);
+      clear post2 logpo2;
+      ivar1 = find(ismember(ivar,bayestopt_.i_var_stable));
+      ivar1 = ivar(ivar1);
+      for b = 1:B;
+	irun_thm1 = irun_thm1+1;
+	irun_thm2 = irun_thm2+1;
+	irun_thm3 = irun_thm3+1;
+	irun_thm4 = irun_thm4+1;
+	DEEP  = x2(floor(rand*NumberOfSimulations)+1,:);
+	deep(subindx) = DEEP(subindx);
+	set_parameters(deep);
+	dr_ = resol(ys_,0);
+	Gamma_y = th_autocovariances(dr_,ivar1);
+	if options_.order == 2
+	  m_mean = dr_.ys(ivar) + Gamma_y{options_.ar+3};
+	else
+	  m_mean = dr_.ys(ivar);
+	end
+	variance = Gamma_y{1};
+	if irun_thm1 < MAX_nthm1
+	  stock_thm1(:,irun_thm1) = m_mean;
+	else
+	  stock_thm1(:,irun_thm1) = m_mean;
+	  sfil_thm1 = sfil_thm1 + 1;
+	  instr = [fname_ '_thm1' int2str(sfil_thm1) ' stock_thm1;'];
+	  eval(['save ' instr]);
+	  irun_thm1 = 0;
+	  stock_thm1 = zeros(nvar,MAX_nthm1);
+	end
+	if irun_thm2 < MAX_nthm2
+	  stock_thm2(:,:,irun_thm2) = variance;
+	else
+	  stock_thm2(:,:,irun_thm2) = variance;
+	  sfil_thm2 = sfil_thm2 + 1;
+	  instr = [fname_ '_thm2' int2str(sfil_thm2) ' stock_thm2;'];
+	  eval(['save ' instr]);
+	  irun_thm2 = 0;
+	  stock_thm2 = zeros(nvar,nvar,MAX_nthm2);
+	end
+	if irun_thm3 < MAX_nthm3
+	  stock_thm3(:,:,irun_thm3) = Gamma_y{nar+2};
+	else
+	  stock_thm3(:,:,irun_thm3) = Gamma_y{nar+2};
+	  sfil_thm3 = sfil_thm3 + 1;
+	  instr = [fname_ '_thm3' int2str(sfil_thm3) ' stock_thm3;'];
+	  eval(['save ' instr]);
+	  irun_thm3 = 0;
+	  stock_thm3 = zeros(nvar,exo_nbr,MAX_nthm3);
+	end
+	if irun_thm4 < MAX_nthm4
+	  for lag = 1:nar
+	    stock_thm4(:,lag,irun_thm4) = diag(Gamma_y{1+lag});
+	  end	
+	else
+	  for lag = 1:nar
+	    stock_thm4(:,lag,irun_thm4) = diag(Gamma_y{1+lag});
+	  end	
+	  sfil_thm4 = sfil_thm4 + 1;
+	  instr = [fname_ '_thm4' int2str(sfil_thm4) ' stock_thm4;'];
+	  eval(['save ' instr]);
+	  irun_thm4 = 0;
+	  stock_thm4 = zeros(nvar,nar,MAX_nthm4);
+	end
+	waitbar(b/B,h);    
+      end
+      clear m_mean variance Gamma_y;
+      if irun_thm1
+	stock_thm1 = stock_thm1(:,1:irun_thm1);
+	sfil_thm1 = sfil_thm1 + 1;
+	instr = [fname_ '_thm1' int2str(sfil_thm1) ' stock_thm1;'];
+	eval(['save ' instr]);
+      end
+      clear stock_thm1;
+      if irun_thm2
+	stock_thm2 = stock_thm2(:,:,1:irun_thm2);
+	sfil_thm2 = sfil_thm2 + 1;
+	instr = [fname_ '_thm2' int2str(sfil_thm2) ' stock_thm2;'];
+	eval(['save ' instr]);
+      end
+      clear stock_thm2;
+      if irun_thm3
+	stock_thm3 = stock_thm3(:,:,1:irun_thm3);
+	sfil_thm3 = sfil_thm3 + 1;
+	instr = [fname_ '_thm3' int2str(sfil_thm3) ' stock_thm3;'];
+	eval(['save ' instr]);
+      end
+      clear stock_thm3;
+      if irun_thm4
+	stock_thm4 = stock_thm4(:,:,1:irun_thm4);
+	sfil_thm4 = sfil_thm4 + 1;
+	instr = [fname_ '_thm4' int2str(sfil_thm4) ' stock_thm4;'];
+	eval(['save ' instr]);
+      end
+      clear stock_thm4;
+    end     
+    close(h)
+    %%
+    %%  Now i compute some statistics (mean, median, std, deciles, HPD intervals)
+    %%
+    MeanMean = zeros(nvar,1);
+    MedianMean = zeros(nvar,1);
+    StdMean = zeros(nvar,1);
+    DistribMean = zeros(nvar,9);
+    HPDMean = zeros(nvar,2);
+    tmp = zeros(B,1);
+    for i = 1:nvar
+      StartLine = 0;
+      for file = 1:sfil_thm1 
+	instr = [fname_ '_thm1' int2str(file)];
+	eval(['load ' instr]);
+	DeProfundis = size(stock_thm1,2);
+	tmp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_thm1(i,:));
+	StartLine = StartLine+DeProfundis;
+      end
+      tmp = sort(tmp);
+      MeanMean(i) = mean(tmp);
+      MedianMean(i) = tmp(round(B*0.5));
+      StdMean(i) = std(tmp);
+      DistribMean(i,:) = reshape(tmp(deciles),1,9);
+      tt = floor(options_.mh_conf_sig*B);
+      a = 1; 
+      b = tt;
+      tmp2 = [1;tt;tmp(tt)-tmp(1)];
+      while b <= B
+	tmp1 = [a;b;tmp(b)-tmp(a)];
+	a = a + 1;
+	b = b + 1;
+	if tmp1(3,1) < tmp2(3,1)
+	  tmp2 = tmp1;     
+	end    
+      end
+      HPDMean(i,1) = tmp(tmp2(1,1));
+      HPDMean(i,2) = tmp(tmp2(2,1));
+    end
+    disp(' ')
+    disp(' ')
+    disp('POSTERIOR THEORETICAL EXPECTATION')
+    disp(' ')
+    titre = sprintf('%15s \t %6s \t %6s \t %6s \t %6s \t %6s\n',...
+            'Variables',...
+            'mean  ',...
+            'median',...
+            'std   ',...
+            'HPDinf',...
+            'HPDsup');
+    disp(titre)
+    for i=1:nvar
+      disp(sprintf('%15s \t %6.3f \t %6.3f \t %6.3f \t %6.3f \t %6.3f',...
+           deblank(lgy_(ivar(i),:)), ...
+           MeanMean(i),...
+           MedianMean(i),...
+           StdMean(i),...
+           HPDMean(i,1),...
+           HPDMean(i,2)));
+      eval(['oo_.PosteriorTheoreticalMoment.Expectation.Mean.' deblank(lgy_(ivar(i),:)) ' = MeanMean(i);']);
+      eval(['oo_.PosteriorTheoreticalMoment.Expectation.Median.' deblank(lgy_(ivar(i),:)) ' = MedianMean(i);']);
+      eval(['oo_.PosteriorTheoreticalMoment.Expectation.Std.' deblank(lgy_(ivar(i),:)) ' = StdMean(i);']);
+      eval(['oo_.PosteriorTheoreticalMoment.Expectation.HPDinf.' deblank(lgy_(ivar(i),:)) ' = HPDMean(i,1);']);
+      eval(['oo_.PosteriorTheoreticalMoment.Expectation.HPDsup.' deblank(lgy_(ivar(i),:)) ' = HPDMean(i,2);']);
+    end
+    if TeX
+      fidTeX = fopen([fname_ '_PosteriorTheoreticalExpectation.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{l|ccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,' Variables & mean & median  & std & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      for i=1:nvar
+	fprintf(fidTeX,' $%s$ & %6.3f & %6.3f & %6.3f & %6.3f & %6.3f \\\\ \n',...
+		deblank(lgy_TeX_(ivar(i),:)), ...
+		MeanMean(i),...
+		MedianMean(i),...
+		StdMean(i),...
+		HPDMean(i,1),...
+		HPDMean(i,2));
+      end   
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Posterior theoretical expectation.}\n ');
+      fprintf(fidTeX,'\\label{Table:PosteriorTheoreticalExpectation}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end 
+    MeanVariance = zeros(nvar,nvar,1);
+    MedianVariance = zeros(nvar,nvar,1);
+    StdVariance = zeros(nvar,nvar,1);
+    DistribVariance = zeros(nvar,nvar,9);
+    HPDVariance = zeros(nvar,nvar,2);
+    for i = 1:nvar
+      for j=1:nvar
+	StartLine = 0;
+	tmp = zeros(B,1);
+	for file = 1:sfil_thm2 
+	  instr = [fname_ '_thm2' int2str(file)];
+	  eval(['load ' instr]);
+	  DeProfundis = size(stock_thm2,3);
+	  tmp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_thm2(i,j,:));
+	  StartLine = StartLine+DeProfundis;
+	end 
+	tmp = sort(tmp);
+	MeanVariance(i,j) = mean(tmp);
+	MedianVariance(i,j) = tmp(round(B*0.5));
+	StdVariance(i,j) = std(tmp);
+	DistribVariance(i,j,:) = reshape(tmp(deciles),1,1,9);
+	tt = floor(options_.mh_conf_sig*B);
+	a = 1; 
+	b = tt;
+	tmp2 = [1;tt;tmp(tt)-tmp(1)];
+	while b <= B
+	  tmp1 = [a;b;tmp(b)-tmp(a)];
+	  a = a + 1;
+	  b = b + 1;
+	  if tmp1(3,1) < tmp2(3,1)
+	    tmp2 = tmp1;     
+	  end    
+	end
+	HPDVariance(i,j,1) = tmp(tmp2(1,1));
+	HPDVariance(i,j,2) = tmp(tmp2(2,1));
+      end   
+    end
+    disp(' ')
+    disp(' ')
+    disp('POSTERIOR THEORETICAL VARIANCES AND COVARIANCES')
+    disp(' ')
+    titre = sprintf('%15s \t %15s \t %9s \t %9s \t %9s \t %9s \t %9s\n',...
+            'Variables',...
+            'Variables',...
+            'mean  ',...
+            'median',...
+            'std   ',...
+            'HPDinf',...
+            'HDPsup');
+    disp(titre)
+    for i=1:nvar
+      for j=i:nvar
+	disp(sprintf('%15s \t %15s \t %9.3g \t %9.3g \t %9.3g \t %9.3g \t %9.3g',...
+		     deblank(lgy_(ivar(i),:)), ...
+		     deblank(lgy_(ivar(j),:)), ...
+		     MeanVariance(i,j),...
+		     MedianVariance(i,j),...
+		     StdVariance(i,j),...
+		     HPDVariance(i,j,1),...
+		     HPDVariance(i,j,2)));
+	eval(['oo_.PosteriorTheoreticalMoment.Variance.Mean.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = MeanVariance(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Variance.Median.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = MedianVariance(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Variance.Std.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = StdVariance(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Variance.HPDinf.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = HPDVariance(i,j,1);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Variance.HPDsup.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = HPDVariance(i,j,2);']);
+      end       
+    end
+    if TeX
+      fidTeX = fopen([fname_ '_PosteriorTheoreticalVariance.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{ll|ccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,' Variables & Variables & mean & median  & std & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      for i=1:nvar
+	for j=i:nvar
+	  fprintf(fidTeX,' $%s$ & $%s$ & %6.3f & %6.3f & %6.3f & %6.3f & %6.3f \\\\ \n',...
+		  deblank(lgy_TeX_(ivar(i),:)), ...
+		  deblank(lgy_TeX_(ivar(j),:)), ...
+		  MeanVariance(i,j),...
+		  MedianVariance(i,j),...
+		  StdVariance(i,j),...
+		  HPDVariance(i,j,1),...
+		  HPDVariance(i,j,2));
+	end     
+      end   
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Posterior theoretical variances and covariances.}\n ');
+      fprintf(fidTeX,'\\label{Table:PosteriorTheoreticalVariances}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end 
+    MeanCorrelation = zeros(nvar,nvar,1);
+    MedianCorrelation = zeros(nvar,nvar,1);
+    StdCorrelation = zeros(nvar,nvar,1);
+    DistribCorrelation = zeros(nvar,nvar,9);
+    HPDCorrelation = zeros(nvar,nvar,2);
+    tmpp    = zeros(B,1);
+    tmppp   = zeros(B,1);
+    for i = 1:nvar
+      for j=1:nvar
+	StartLine = 0;
+	tmp = zeros(B,1);
+	for file = 1:sfil_thm2 
+	  instr = [fname_ '_thm2' int2str(file)];
+	  eval(['load ' instr]);
+	  DeProfundis = size(stock_thm2,3);
+	  tmp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_thm2(i,j,:));
+	  tmpp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_thm2(i,i,:));
+	  tmppp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_thm2(j,j,:));
+	  StartLine = StartLine+DeProfundis;
+	end
+	tmp = sort(tmp./sqrt(tmpp.*tmppp));
+	MeanCorrelation(i,j) = mean(tmp);
+	MedianCorrelation(i,j) = tmp(round(B*0.5));
+	StdCorrelation(i,j) = std(tmp);
+	DistribCorrelation(i,j,:) = reshape(tmp(deciles),1,1,9);
+	tt = floor(options_.mh_conf_sig*B);
+	a = 1; 
+	b = tt;
+	tmp2 = [1;tt;tmp(tt)-tmp(1)];
+	while b <= B
+	  tmp1 = [a;b;tmp(b)-tmp(a)];
+	  a = a + 1;
+	  b = b + 1;
+	  if tmp1(3,1) < tmp2(3,1)
+	    tmp2 = tmp1;     
+	  end    
+	end
+	HPDCorrelation(i,j,1) = tmp(tmp2(1,1));
+	HPDCorrelation(i,j,2) = tmp(tmp2(2,1));
+      end   
+    end
+    clear tmpp tmppp;
+    disp(' ')
+    disp(' ')
+    disp('POSTERIOR THEORETICAL CORRELATIONS')
+    disp(' ')
+    titre = sprintf('%15s \t %15s \t %6s \t %6s \t %6s \t %6s \t %6s\n',...
+            'Variables',...
+            'Variables',...
+            'mean  ',...
+            'median',...
+            'std   ',...
+            'HPDinf',...
+            'HPDsup');
+    disp(titre)
+    for i=1:nvar-1
+      for j=i+1:nvar
+	disp(sprintf('%15s \t %15s \t %6.3f \t %6.3f \t %6.3f \t %6.3f \t %6.3f',...
+		     deblank(lgy_(ivar(i),:)), ...
+		     deblank(lgy_(ivar(j),:)), ...
+		     MeanCorrelation(i,j),...
+		     MedianCorrelation(i,j),...
+		     StdCorrelation(i,j),...
+		     HPDCorrelation(i,j,1),...
+		     HPDCorrelation(i,j,2)));
+	eval(['oo_.PosteriorTheoreticalMoment.Correlation.Mean.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = MeanCorrelation(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Correlation.Median.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = MedianCorrelation(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Correlation.Std.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = StdCorrelation(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Correlation.HPDinf.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = HPDCorrelation(i,j,1);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Correlation.HPDsup.' deblank(lgy_(ivar(i),:)) '_' deblank(lgy_(ivar(j),:)) ' = HPDCorrelation(i,j,2);']);
+      end       
+    end
+    if TeX
+      fidTeX = fopen([fname_ '_PosteriorTheoreticalCorrelation.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{ll|ccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,' Variables & Variables & mean & median  & std & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      for i=1:nvar-1
+	for j=i+1:nvar
+	  fprintf(fidTeX,' $%s$ & $%s$ & %6.3f & %6.3f & %6.3f & %6.3f & %6.3f \\\\ \n',...
+		  deblank(lgy_TeX_(ivar(i),:)), ...
+		  deblank(lgy_TeX_(ivar(j),:)), ...
+		  MeanCorrelation(i,j),...
+		  MedianCorrelation(i,j),...
+		  StdCorrelation(i,j),...
+		  HPDCorrelation(i,j,1),...
+		  HPDCorrelation(i,j,2));
+	end
+      end   
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Posterior theoretical correlations.}\n ');
+      fprintf(fidTeX,'\\label{Table:PosteriorTheoreticalCorrelations}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end 
+    MeanDecomp = zeros(nvar,exo_nbr,1);
+    MedianDecomp = zeros(nvar,exo_nbr,1);
+    StdDecomp = zeros(nvar,exo_nbr,1);
+    DistribDecomp = zeros(nvar,exo_nbr,9);
+    HPDDecomp = zeros(nvar,exo_nbr,2);
+    for i = 1:nvar
+      for j=1:exo_nbr
+	StartLine = 0;
+	for file = 1:sfil_thm3 
+	  instr = [fname_ '_thm3' int2str(file)];
+	  eval(['load ' instr]);
+	  DeProfundis = size(stock_thm3,3);
+	  tmp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_thm3(i,j,:));
+	  StartLine = StartLine+DeProfundis;
+	end
+	tmp = sort(tmp);
+	MeanDecomp(i,j) = mean(tmp);
+	MedianDecomp(i,j) = tmp(round(B*0.5));
+	StdDecomp(i,j) = std(tmp);
+	DistribDecomp(i,j,:) = reshape(tmp(deciles),1,1,9);
+	tt = floor(options_.mh_conf_sig*B);
+	a = 1; 
+	b = tt;
+	tmp2 = [1;tt;tmp(tt)-tmp(1)];
+	while b <= B
+	  tmp1 = [a;b;tmp(b)-tmp(a)];
+	  a = a + 1;
+	  b = b + 1;
+	  if tmp1(3,1) < tmp2(3,1)
+	    tmp2 = tmp1;     
+	  end    
+	end
+	HPDDecomp(i,j,1) = tmp(tmp2(1,1));
+	HPDDecomp(i,j,2) = tmp(tmp2(2,1));
+      end   
+    end
+    disp(' ')
+    disp(' ')
+    disp('POSTERIOR THEORETICAL VARIANCE DECOMPOSITION')
+    disp(' ')
+    titre = sprintf('%15s \t %15s \t %6s \t %6s \t %6s \t %6s \t %6s\n',...
+            'Variables',...
+            'Sources',...
+            'mean  ',...
+            'median',...
+            'std   ',...
+            'HPDinf',...
+            'HDPsup');
+    disp(titre)
+    lgx1(lgx_orig_ord_,:) = lgx_;
+    for i=1:nvar
+      for j=1:exo_nbr
+	disp(sprintf('%15s \t %15s \t %6.3f \t %6.3f \t %6.3f \t %6.3f \t %6.3f',...
+		     deblank(lgy_(ivar(i),:)), ...
+		     deblank(lgx1(j,:)), ...
+		     MeanDecomp(i,j),...
+		     MedianDecomp(i,j),...
+		     StdDecomp(i,j),...
+		     HPDDecomp(i,j,1),...
+		     HPDDecomp(i,j,2)));
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.Mean.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = MeanDecomp(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.Median.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = MedianDecomp(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.Std.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = StdDecomp(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.HPDinf.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = HPDDecomp(i,j,1);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.HPDsup.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = HPDDecomp(i,j,2);']);
+      end       
+    end
+    if TeX
+      fidTeX = fopen([fname_ '_PosteriorTheoreticalVarianceDecomposition.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{ll|ccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,' Variables & Sources & mean & median  & std & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      lgx_TeX1(lgx_orig_ord_) = lgx_Tex_;
+      for i=1:nvar
+	for j=1:exo_nbr
+	  fprintf(fidTeX,' $%s$ & $%s$ & %6.3f & %6.3f & %6.3f & %6.3f & %6.3f \\\\ \n',...
+		  deblank(lgy_TeX_(ivar(i),:)), ...
+		  deblank(lgx_TeX1(j,:)), ...
+		  MeanDecomp(i,j),...
+		  MedianDecomp(i,j),...
+		  StdDecomp(i,j),...
+		  HPDDecomp(i,j,1),...
+		  HPDDecomp(i,j,2));
+	end     
+      end   
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Posterior theoretical variance decomposition.}\n ');
+      fprintf(fidTeX,'\\label{Table:PosteriorTheoreticalVarianceDecomposition}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end 
+    MeanAutoCorr = zeros(nvar,nar,1);
+    MedianAutoCorr = zeros(nvar,nar,1);
+    StdAutoCorr = zeros(nvar,nar,1);
+    DistribAutoCorr = zeros(nvar,nar,9);
+    HPDAutoCorr = zeros(nvar,nar,2);
+    for i = 1:nvar
+      for j=1:nar
+	StartLine = 0;
+	for file = 1:sfil_thm4 
+	  instr = [fname_ '_thm4' int2str(file)];
+	  eval(['load ' instr]);
+	  DeProfundis = size(stock_thm4,3);
+	  tmp(StartLine+1:StartLine+DeProfundis) = squeeze(stock_thm4(i,j,:));
+	  StartLine = StartLine+DeProfundis;
+	end
+	tmp = sort(tmp);
+	MeanAutoCorr(i,j) = mean(tmp);
+	MedianAutoCorr(i,j) = tmp(round(B*0.5));
+	StdAutoCorr(i,j) = std(tmp);
+	DistribAutoCorr(i,j,:) = reshape(tmp(deciles),1,1,9);
+	tt = floor(options_.mh_conf_sig*B);
+	a = 1; 
+	b = tt;
+	tmp2 = [1;tt;tmp(tt)-tmp(1)];
+	while b <= B
+	  tmp1 = [a;b;tmp(b)-tmp(a)];
+	  a = a + 1;
+	  b = b + 1;
+	  if tmp1(3,1) < tmp2(3,1)
+	    tmp2 = tmp1;     
+	  end    
+	end
+	HPDAutoCorr(i,j,1) = tmp(tmp2(1,1));
+	HPDAutoCorr(i,j,2) = tmp(tmp2(2,1));
+      end   
+    end
+    disp(' ')
+    disp(' ')
+    disp('POSTERIOR THEORETICAL AUTOCORRELATION')
+    disp(' ')
+    titre = sprintf('%15s \t %3s \t %6s \t %6s \t %6s \t %6s \t %6s\n',...
+            'Variables',...
+            'Lag',...
+            'mean  ',...
+            'median',...
+            'std   ',...
+            'HPDinf',...
+            'HDPsup');
+    disp(titre)
+    for i=1:nvar
+      for j=1:nar
+	disp(sprintf('%15s \t %3s \t %6.3f \t %6.3f \t %6.3f \t %6.3f \t %6.3f',...
+		     deblank(lgy_(ivar(i),:)), ...
+		     [int2str(j) ' '], ...
+		     MeanAutoCorr(i,j),...
+		     MedianAutoCorr(i,j),...
+		     StdAutoCorr(i,j),...
+		     HPDAutoCorr(i,j,1),...
+		     HPDAutoCorr(i,j,2)));
+	eval(['oo_.PosteriorTheoreticalMoment.AutoCorrelation.Mean.' deblank(lgy_(ivar(i),:)) '_lag' int2str(j) ' = MeanAutoCorr(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.AutoCorrelation.Median.' deblank(lgy_(ivar(i),:)) '_lag' int2str(j) ' = MedianAutoCorr(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.AutoCorrelation.Std.' deblank(lgy_(ivar(i),:)) '_lag' int2str(j) ' = StdAutoCorr(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.AutoCorrelation.HPDinf.' deblank(lgy_(ivar(i),:)) '_lag' int2str(j) ' = HPDAutoCorr(i,j,1);']);
+	eval(['oo_.PosteriorTheoreticalMoment.AutoCorrelation.HPDsup.' deblank(lgy_(ivar(i),:)) '_lag' int2str(j) ' = HPDAutoCorr(i,j,2);']);
+      end       
+    end
+    if TeX
+      fidTeX = fopen([fname_ '_PosteriorTheoreticalAutocorrelation.TeX'],'w');
+      fprintf(fidTeX,'%% TeX-table generated by metropolis.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0)]);
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'{\\tiny \n');
+      fprintf(fidTeX,'\\begin{table}\n');
+      fprintf(fidTeX,'\\centering\n');
+      fprintf(fidTeX,'\\begin{tabular}{ll|ccccc} \n');
+      fprintf(fidTeX,'\\hline\\hline \\\\ \n');
+      fprintf(fidTeX,' Variables & Lag & mean & median  & std & HPD inf & HPD sup  \\\\ \n');
+      fprintf(fidTeX,'\\hline \\\\ \n');
+      for i=1:nvar
+	for j=1:nar
+	  fprintf(fidTeX,' $%s$ & $%s$ & %6.3f & %6.3f & %6.3f & %6.3f & %6.3f \\\\ \n',...
+		  deblank(lgy_TeX_(ivar(i),:)), ...
+		  int2str(j), ...
+		  MeanAutoCorr(i,j),...
+		  MedianAutoCorr(i,j),...
+		  StdAutoCorr(i,j),...
+		  HPDAutoCorr(i,j,1),...
+		  HPDAutoCorr(i,j,2));
+	end     
+      end   
+      fprintf(fidTeX,'\\hline\\hline \n');
+      fprintf(fidTeX,'\\end{tabular}\n ');    
+      fprintf(fidTeX,'\\caption{Posterior theoretical auto-correlation.}\n ');
+      fprintf(fidTeX,'\\label{Table:PosteriorTheoreticalAutoCorrelation}\n');
+      fprintf(fidTeX,'\\end{table}\n');
+      fprintf(fidTeX,'} \n');
+      fprintf(fidTeX,'%% End of TeX file.\n');
+      fclose(fidTeX);
+    end 
+  end % options_.moments_varendo
+  
+  %% Un dernier petit coup de DsgeLikelihood juste pour remettre les parametres
+  %% structurels et la matrice de variance-covariance aux valeurs qui
+  %% correspondent a la moyenne posterieure (en vue d'une utilisation �ventuelle
+  %% de stoch_simul apr�s le Metropolis-Hastings).
+  [lnprior,cost_flag,ys,trend_coeff] = DsgeLikelihood(post_mean,gend,data);
+  %% Now I save the seeds (If the user wants to start another MH, he can start from the
+  %% previous state of the random number generator by using the command "LoadPreviousSeed"
+  %% before the estimation command)
+  Seed.NormalDeviates  = randn('state');
+  Seed.UniformDeviates = rand('state');
+  save LastSeed Seed;
+  %% That's All!
+
+
+  % SA 08-18-2004       * Corrected a bug in forecasts (HPD intervals).
+  %                 * metropolis.m now displays "true bayesian" smooth shocks. The mean
+  %                 - across the metropolis draws - of the smooth shocks instead of the 
+  %                 smooth shocks obtained from the posterior mean are displayed.
+  %                 * Added "true bayesian" smooth measurement error.
+  %                 * Added "true bayesian" smooth variables (all the variables in the 
+  %                 state vector).
+  %                 * Added deciles for the posterior distribution of the smooth shocks,
+  %                 variables and measurement errors (green curves).
+  % SA 08-19-2004       * Added posterior IRFs.
+  % SA 08-21-2004       * Added posterior theoretical moments.
+  % SA 08-23-2004     * Added correction to the modified harmonic mean estimator of the
+  %                   log-marginal density. The variance of the weighting distribution
+  %                   automatically increases if needed (to be revised).)
+  % SA 12-02-2004       * Changed architecture for the global structure oo_ 
diff --git a/tags/v_3.062/matlab/metropolis99.m b/tags/v_3.062/matlab/metropolis99.m
new file mode 100644
index 0000000000..5d8edbbc0a
--- /dev/null
+++ b/tags/v_3.062/matlab/metropolis99.m
@@ -0,0 +1,262 @@
+function [PostMod,PostVar,Scale,PostMean] = ...
+    samaxwell(xparam1,gend,data,mh_bounds,NumberOfIterationsForInitialization,init_scale,info,MeanPar,VarCov)
+% stephane.adjemian@cepremap.cnrs.fr [11-22-2005]
+global bayestopt_ exo_nbr dr_ estim_params_ Sigma_e_ options_ xparam_test
+global lgy_ lgx_ fname_ ys_ xkmin_ xkmax_ ykmin_ ykmax_ endo_nbr mean_varobs
+global oo_ lgx_orig_ord_ lgy_TeX_ lgx_TeX_ dsge_prior_weight
+nvx   	= estim_params_.nvx;
+nvn   	= estim_params_.nvn;
+ncx   	= estim_params_.ncx;
+ncn   	= estim_params_.ncn;
+np    	= estim_params_.np ;
+ns      = nvx+nvn+ncx+ncn; 
+nx    	= nvx+nvn+ncx+ncn+np;
+npar  	= length(xparam1);
+nvobs 	= size(options_.varobs,1);
+options_.lik_algo = 1;
+MaxNumberOfTuningSimulations = 100000;
+MaxNumberOfClimbingSimulations = 20000;
+AcceptanceTarget = 0.33;
+
+%% [1] I build a covariance matrix for the jumping distribution.
+stdev = bayestopt_.pstdev;
+indx = find(isinf(stdev));
+stdev(indx) = 10*ones(length(indx),1);
+CovJump = diag(stdev).^2;
+if nargin == 9
+  CovJump = VarCov;
+end
+ModePar = xparam1;
+%% [2] For this covariance matrix I tune the scale parameter.
+hh = waitbar(0,'Tuning of the scale parameter...');
+set(hh,'Name','Tuning of the scale parameter (1)')
+j = 1; jj  = 1;
+isux = 0;
+jsux = 0;
+test = 0;
+% TEST = 0;
+ix2 = ModePar;% initial condition! 
+if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+  ilogpo2 = -DsgeLikelihood(ix2,gend,data);% initial posterior density
+else
+  ilogpo2 = -DsgeVarLikelihood(ix2,gend);% initial posterior density
+end
+mlogpo2 = ilogpo2;
+dd = transpose(chol(CovJump));
+while j<=MaxNumberOfTuningSimulations
+  proposal = init_scale*dd*randn(npar,1) + ix2;
+  if all(proposal > mh_bounds(:,1)) & all(proposal < mh_bounds(:,2))
+    if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+      logpo2 = -DsgeLikelihood(proposal,gend,data);
+    else
+      logpo2 = -DsgeVarLikelihood(proposal,gend);
+    end
+  else
+    logpo2 = -inf;
+  end
+  % I move if the proposal is enough likely...
+  if logpo2 > -inf & log(rand) < logpo2 - ilogpo2
+    ix2 = proposal; 
+    if logpo2 > mlogpo2
+      ModePar = proposal;
+      mlogpo2 = logpo2;
+    end
+    ilogpo2 = logpo2;
+    isux = isux + 1;
+    jsux = jsux + 1;
+  else
+    % ... otherwise I don't move.
+  end	
+  prtfrc = j/MaxNumberOfTuningSimulations;
+  waitbar(prtfrc,hh,sprintf('%f done, acceptation rate %f',prtfrc,isux/j));
+  if  j/500 == round(j/500)
+    test1 = jsux/jj;
+    test2 = isux/j;
+    cfactor = (test1/AcceptanceTarget)^1.0*(test2/AcceptanceTarget)^0.0;
+    if cfactor>0
+      init_scale = init_scale*cfactor;
+    end
+    jsux = 0; jj = 0;
+    if test1>AcceptanceTarget*0.90 & test1<AcceptanceTarget*1.10
+      test = test+1;
+    end
+    if test>6
+      break
+    end
+  end
+  j = j+1;
+  jj = jj + 1;
+end
+close(hh);
+%% [3] One block metropolis, I update the covariance matrix of the jumping distribution
+hh = waitbar(0,'Metropolis-Hastings...');
+set(hh,'Name','Looking for the posterior covariance...')
+j = 1;
+isux = 0;
+% ix2 = xparam1;% initial condition! 
+if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & Isempty(dsge_prior_weight)
+  ilogpo2 = -DsgeLikelihood(ix2,gend,data);
+else
+  ilogpo2 = -DsgeVarLikelihood(ix2,gend);
+end
+dd = transpose(chol(CovJump));
+while j<=NumberOfIterationsForInitialization
+  proposal = init_scale*dd*randn(npar,1) + ix2;
+  if all(proposal > mh_bounds(:,1)) & all(proposal < mh_bounds(:,2))
+    if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+      logpo2 = -DsgeLikelihood(proposal,gend,data);
+    else
+      logpo2 = -DsgeVarLikelihood(proposal,gend);
+    end
+  else
+    logpo2 = -inf;
+  end
+  % I move if the proposal is enough likely...
+  if logpo2 > -inf & log(rand) < logpo2 - ilogpo2
+    ix2 = proposal; 
+    if logpo2 > mlogpo2
+      ModePar = proposal;
+      mlogpo2 = logpo2;
+    end
+    ilogpo2 = logpo2;
+    isux = isux + 1;
+    jsux = jsux + 1;
+  else
+    % ... otherwise I don't move.
+  end	
+  prtfrc = j/NumberOfIterationsForInitialization;
+  waitbar(prtfrc,hh,sprintf('%f done, acceptation rate %f',prtfrc,isux/j));
+  % I update the covariance matrix and the mean:
+  oldMeanPar = MeanPar;
+  MeanPar = oldMeanPar + (1/j)*(ix2-oldMeanPar);
+  CovJump = CovJump + oldMeanPar*oldMeanPar' - MeanPar*MeanPar' + ...
+                 (1/j)*(ix2*ix2' - CovJump - oldMeanPar*oldMeanPar');
+  j = j+1;
+end
+close(hh);
+%% [4 & 5] I tune the scale parameter (with the new covariance matrix) if
+%% this is the last call to the routine, and I climb the hill (without
+%% updating the covariance matrix)...
+if strcmpi(info,'LastCall')
+  % MeanPar = xparam1;  
+  % ModePar = xparam1; I'm stupid!
+  hh = waitbar(0,'Tuning of the scale parameter...');
+  set(hh,'Name','Tuning of the scale parameter (2)')
+  j = 1; jj  = 1;
+  isux = 0;
+  jsux = 0;
+  test = 0;
+  % ix2 = ModePar;% initial condition! Again stupid 
+  if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+    ilogpo2 = -DsgeLikelihood(ix2,gend,data);% initial posterior density
+  else
+    ilogpo2 = -DsgeVarLikelihood(ix2,gend);% initial posterior density
+  end
+  dd = transpose(chol(CovJump));
+  while j<=MaxNumberOfTuningSimulations
+    proposal = init_scale*dd*randn(npar,1) + ix2;
+    if all(proposal > mh_bounds(:,1)) & all(proposal < mh_bounds(:,2))
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	logpo2 = -DsgeLikelihood(proposal,gend,data);
+      else
+	logpo2 = -DsgeVarLikelihood(proposal,gend);
+      end
+    else
+      logpo2 = -inf;
+    end
+    % I move if the proposal is enough likely...
+    if logpo2 > -inf & log(rand) < logpo2 - ilogpo2
+      ix2 = proposal;
+      if logpo2 > mlogpo2
+	ModePar = proposal;
+	mlogpo2 = logpo2;
+      end
+      ilogpo2 = logpo2;
+      isux = isux + 1;
+      jsux = jsux + 1;
+    else
+      % ... otherwise I don't move.
+    end
+    prtfrc = j/MaxNumberOfTuningSimulations;
+    waitbar(prtfrc,hh,sprintf('%f done, acceptation rate %f',prtfrc,isux/j));  
+    if  j/500 == round(j/500) 
+      test1 = jsux/jj;
+      test2 = isux/j;  
+      cfactor = (test1/AcceptanceTarget)^1.0*(test2/AcceptanceTarget)^0.0;
+      init_scale = init_scale*cfactor;
+      jsux = 0; jj = 0;
+      if test1>AcceptanceTarget*0.90 & test1<AcceptanceTarget*1.10
+	test = test+1;
+      end
+      if test>6
+	break
+      end
+    end
+    j = j+1;
+    jj = jj + 1;
+  end
+  close(hh);
+  PostVar = CovJump;
+  PostMean = MeanPar;
+  Scale = init_scale;
+  %%
+  %% Now I climb the hill
+  %%
+  hh = waitbar(0,' ');
+  set(hh,'Name','Now I am climbing the hill...')
+  j = 1; jj  = 1;
+  jsux = 0;
+  test = 0;
+  dd = transpose(chol(CovJump));
+  init_scale = eye(length(dd))*init_scale;
+  indx = strmatch('dsge_prior_weight',estim_params_.param_names,'exact');
+  while j<=MaxNumberOfClimbingSimulations
+    proposal = init_scale*dd*randn(npar,1) + ModePar;
+    if all(proposal > mh_bounds(:,1)) & all(proposal < mh_bounds(:,2))
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	logpo2 = -DsgeLikelihood(proposal,gend,data);
+      else
+	logpo2 = -DsgeVarLikelihood(proposal,gend);
+      end
+    else
+      logpo2 = -inf;
+    end
+    if logpo2 > mlogpo2% I move if the proposal is higher...
+      ModePar = proposal;
+      mlogpo2 = logpo2;
+      jsux = jsux + 1;
+    else
+      % otherwise I don't move...
+    end
+    prtfrc = j/MaxNumberOfClimbingSimulations;
+    waitbar(prtfrc,hh,sprintf('%f done, acceptation rate %f',prtfrc,jsux/jj));  
+    if  j/200 == round(j/200) 
+      test1 = jsux/jj;
+      %cfactor = (test1/AcceptanceTarget)^1.0*(test2/AcceptanceTarget)^0.0;
+      %init_scale = init_scale*cfactor;
+      jsux = 0; 
+      jj = 0;
+      if test1<0.001
+	test = test+1;
+      end
+      if test>4% If I do not progress enough I reduce the scale parameter
+               % of the jumping distribution (cooling down the system).
+	if isempty(indx)
+          init_scale = init_scale/1.10;
+        else
+          init_scale = init_scale/1.10;
+          % USEFUL IF THE MODEL IS TRUE:
+          % init_scale(indx+ns,indx+ns) = init_scale(indx+ns,indx+ns)*1.10/1.001; 
+        end
+      end
+    end
+    j = j+1;
+    jj = jj + 1;
+  end
+  close(hh);
+else
+  PostVar = CovJump;
+  PostMean = MeanPar;
+  Scale = init_scale;
+end
+PostMod = ModePar;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/mgnldnsty.m b/tags/v_3.062/matlab/mgnldnsty.m
new file mode 100644
index 0000000000..9a0cbc7f89
--- /dev/null
+++ b/tags/v_3.062/matlab/mgnldnsty.m
@@ -0,0 +1,50 @@
+function w=mgnldnsty(ydata,lags,xdata,breaks,lambda,mu,mnprior,vprior,train,flat)
+%function w=mgnldnsty(ydata,lags,xdata,breaks,lambda,mu,mnprior,vprior,train,flat)
+% ydata:        endogenous variable data matrix, including initial condition dates.
+% xdata:        exogenous variable data matrix, including initial condition dates.
+% breaks:       breaks in the data.  The first lags data points after a break are used
+%               as new initial conditions, not data points for the fit.
+% lambda:       weight on the co-persistence prior dummy observation.  (5 is reasonable)
+%               lambda>0 => x variables included; lambda<0 => x variables excluded;
+% mu:           weight on variable-by-variable sum of coeffs dummy obs. (1 is reasonable)
+% mnprior.tight:weight on the Minnesota prior dummies.  Prior std dev on first lag is
+%               1/mnprior.tight
+% mnprior.decay:prior std dev on lag j is 1/j^decay
+% vprior.sig:   vector of nv prior std dev's of equation shocks
+% vprior.w:     weight on vcv dummies.  (1 is reasonable; higher values tighten up.)
+% train:        If present and non-zero, this is the point in the sample at which the
+%               "training sample" ends.  Prior x likelihood to this point is weighted to
+%               integrate to 1, and therefore is treated as if it were itself the prior.
+%               To do a pure training sample prior, set lambda=mu=0, mnprior=vprior=[],
+%               train>lags.  
+%
+%flat:          Even with lambda=mu=0, vprior=mnprior=[], det(Sigma)^(-(nv+1)/2) is used
+%               as a "prior", unless flat=1.  flat, if present, must be 1 or 0.
+%               flat=1 is likely not to work unless train is reasonably large.
+if nargin<10,flat=0;end
+[T,nv]=size(ydata);
+[Tx,nx]=size(xdata);
+if Tx ~= T, error('ydata and xdata length mismatch'),end
+[ydum,xdum,pbreaks]=varprior(nv,nx,lags,mnprior,vprior);
+var=rfvar3([ydata;ydum],lags,[xdata;xdum],[breaks;T;T+pbreaks],lambda,mu);
+Tu=size(var.u,1);
+w=matrictint(var.u'*var.u,var.xxi,Tu-flat*(nv+1))-flat*.5*nv*(nv+1)*log(2*pi);
+if nargin>8
+    if ~isempty(train) & train>0
+        if train <= lags
+            error('end of training sample <= # of lags')
+        end
+        Tp=train;
+        tbreaks=breaks(find(breaks<train));
+    else
+        Tp=lags;
+        tbreaks=[];
+    end
+else
+    Tp=lags;
+    tbreaks=[];
+end
+varp=rfvar3([ydata(1:Tp,:);ydum],lags,[xdata(1:Tp);xdum],[tbreaks;Tp;Tp+pbreaks],lambda,mu);
+Tup=size(varp.u,1);
+wp=matrictint(varp.u'*varp.u,varp.xxi,Tup-flat*(nv+1)/2)-flat*.5*nv*(nv+1)*log(2*pi);
+w=w-wp;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/mh_optimal_bandwidth.m b/tags/v_3.062/matlab/mh_optimal_bandwidth.m
new file mode 100644
index 0000000000..f7350bea8c
--- /dev/null
+++ b/tags/v_3.062/matlab/mh_optimal_bandwidth.m
@@ -0,0 +1,150 @@
+function optimal_bandwidth = mh_optimal_bandwidth(data,n,bandwidth,kernel_function) 
+%%  This function gives the optimal bandwidth parameter of a kernel estimator 
+%%  used to estimate a posterior univariate density from realisations of a 
+%%  Metropolis-Hastings algorithm.  
+%% 
+%%  * M. Skold and G.O. Roberts [2003], "Density estimation for the Metropolis-Hastings algorithm". 
+%%  * Silverman [1986], "Density estimation for statistics and data analysis". 
+%%
+%%  data            :: a vector with n elements.
+%%  bandwidth       :: a scalar equal to 0,-1 or -2. For a value different from 0,-1 or -2 the
+%%                     function will return optimal_bandwidth = bandwidth.
+%%  kernel_function :: 'gaussian','uniform','triangle','epanechnikov',
+%%                     'quartic','triweight','cosinus'.
+%%
+%%  stephane.adjemian@cepremap.cnrs.fr [07-15-2004] <-- [01/16/2004] 
+
+
+%% KERNEL SPECIFICATION...
+if strcmpi(kernel_function,'gaussian') 
+    k    = inline('inv(sqrt(2*pi))*exp(-0.5*x.^2)'); 
+    k2   = inline('inv(sqrt(2*pi))*(-exp(-0.5*x.^2)+(x.^2).*exp(-0.5*x.^2))'); % second derivate of the gaussian kernel 
+    k4   = inline('inv(sqrt(2*pi))*(3*exp(-0.5*x.^2)-6*(x.^2).*exp(-0.5*x.^2)+(x.^4).*exp(-0.5*x.^2))'); % fourth derivate... 
+    k6   = inline('inv(sqrt(2*pi))*(-15*exp(-0.5*x.^2)+45*(x.^2).*exp(-0.5*x.^2)-15*(x.^4).*exp(-0.5*x.^2)+(x.^6).*exp(-0.5*x.^2))'); % sixth derivate... 
+    mu02 = inv(2*sqrt(pi)); 
+    mu21 = 1; 
+elseif strcmpi(kernel_function,'uniform') 
+    k    = inline('0.5*(abs(x) <= 1)'); 
+    mu02 = 0.5; 
+    mu21 = 1/3; 
+elseif strcmpi(kernel_function,'triangle') 
+    k    = inline('(1-abs(x)).*(abs(x) <= 1)'); 
+    mu02 = 2/3; 
+    mu21 = 1/6; 
+elseif strcmpi(kernel_function,'epanechnikov') 
+    k    = inline('0.75*(1-x.^2).*(abs(x) <= 1)'); 
+    mu02 = 3/5; 
+    mu21 = 1/5;     
+elseif strcmpi(kernel_function,'quartic') 
+    k    = inline('0.9375*((1-x.^2).^2).*(abs(x) <= 1)'); 
+    mu02 = 15/21; 
+    mu21 = 1/7; 
+elseif strcmpi(kernel_function,'triweight') 
+    k    = inline('1.09375*((1-x.^2).^3).*(abs(x) <= 1)'); 
+    k2   = inline('(105/4*(1-x.^2).*x.^2-105/16*(1-x.^2).^2).*(abs(x) <= 1)'); 
+    k4   = inline('(-1575/4*x.^2+315/4).*(abs(x) <= 1)'); 
+    k6   = inline('(-1575/2).*(abs(x) <= 1)'); 
+    mu02 = 350/429; 
+    mu21 = 1/9;     
+elseif strcmpi(kernel_function,'cosinus') 
+    k    = inline('(pi/4)*cos((pi/2)*x).*(abs(x) <= 1)'); 
+    k2   = inline('(-1/16*cos(pi*x/2)*pi^3).*(abs(x) <= 1)'); 
+    k4   = inline('(1/64*cos(pi*x/2)*pi^5).*(abs(x) <= 1)'); 
+    k6   = inline('(-1/256*cos(pi*x/2)*pi^7).*(abs(x) <= 1)'); 
+    mu02 = (pi^2)/16; 
+    mu21 = (pi^2-8)/pi^2;     
+else
+    disp('mh_optimal_bandwidth :: ');
+    error('This kernel function is not yet implemented in Dynare!');        
+end     
+
+
+%% OPTIMAL BANDWIDTH PARAMETER....
+if bandwidth == 0;  %  Rule of thumb bandwidth parameter (Silverman [1986] corrected by 
+                    %  Skold and Roberts [2003] for Metropolis-Hastings). 
+    sigma = std(data); 
+    h = 2*sigma*(sqrt(pi)*mu02/(12*(mu21^2)*n))^(1/5); % Silverman's optimal bandwidth parameter. 
+    A = 0; 
+    for i=1:n; 
+        j = i; 
+        while j<= n & data(j,1)==data(i,1); 
+            j = j+1; 
+        end;     
+        A = A + 2*(j-i) - 1; 
+    end; 
+    A = A/n; 
+    h = h*A^(1/5); % correction 
+elseif bandwidth == -1;     % Adaptation of the Sheather and Jones [1991] plug-in estimation of the optimal bandwidth 
+                            % parameter for metropolis hastings algorithm. 
+    if strcmp(kernel_function,'uniform')      | ... 
+       strcmp(kernel_function,'triangle')     | ... 
+       strcmp(kernel_function,'epanechnikov') | ... 
+       strcmp(kernel_function,'quartic'); 
+       error('I can''t compute the optimal bandwidth with this kernel... Try the gaussian, triweight or cosinus kernels.'); 
+    end;         
+    sigma = std(data); 
+    A = 0; 
+    for i=1:n; 
+        j = i; 
+        while j<= n & data(j,1)==data(i,1); 
+            j = j+1; 
+        end;     
+        A = A + 2*(j-i) - 1; 
+    end; 
+    A = A/n; 
+    Itilda4 = 8*7*6*5/(((2*sigma)^9)*sqrt(pi)); 
+    g3      = abs(2*A*k6(0)/(mu21*Itilda4*n))^(1/9); 
+    Ihat3 = 0; 
+    for i=1:n; 
+        Ihat3 = Ihat3 + sum(k6((data(i,1)-data)/g3)); 
+    end;     
+    Ihat3 = -Ihat3/((n^2)*g3^7); 
+    g2      = abs(2*A*k4(0)/(mu21*Ihat3*n))^(1/7); 
+    Ihat2 = 0; 
+    for i=1:n; 
+        Ihat2 = Ihat2 + sum(k4((data(i)-data)/g2)); 
+    end;     
+    Ihat2 = Ihat2/((n^2)*g2^5); 
+    h       = (A*mu02/(n*Ihat2*mu21^2))^(1/5);    % equation (22) in Skold and Roberts [2003] --> h_{MH} 
+elseif bandwidth == -2;     % Bump killing... We construct local bandwith parameters in order to remove 
+                            % spurious bumps introduced by long rejecting periods.   
+    if strcmp(kernel_function,'uniform')      | ... 
+       strcmp(kernel_function,'triangle')     | ... 
+       strcmp(kernel_function,'epanechnikov') | ... 
+       strcmp(kernel_function,'quartic'); 
+        error('I can''t compute the optimal bandwidth with this kernel... Try the gaussian, triweight or cosinus kernels.'); 
+    end;         
+    sigma = std(data); 
+    A = 0; 
+    T = zeros(n,1); 
+    for i=1:n; 
+        j = i; 
+        while j<= n & data(j,1)==data(i,1); 
+            j = j+1; 
+        end;     
+        T(i) = (j-i); 
+        A = A + 2*T(i) - 1; 
+    end; 
+    A = A/n; 
+    Itilda4 = 8*7*6*5/(((2*sigma)^9)*sqrt(pi)); 
+    g3      = abs(2*A*k6(0)/(mu21*Itilda4*n))^(1/9); 
+    Ihat3 = 0; 
+    for i=1:n; 
+        Ihat3 = Ihat3 + sum(k6((data(i,1)-data)/g3)); 
+    end;     
+    Ihat3 = -Ihat3/((n^2)*g3^7); 
+    g2      = abs(2*A*k4(0)/(mu21*Ihat3*n))^(1/7); 
+    Ihat2 = 0; 
+    for i=1:n; 
+        Ihat2 = Ihat2 + sum(k4((data(i)-data)/g2)); 
+    end;     
+    Ihat2 = Ihat2/((n^2)*g2^5); 
+    h = ((2*T-1)*mu02/(n*Ihat2*mu21^2)).^(1/5); % Note that h is a column vector (local banwidth parameters). 
+elseif bandwidth > 0 
+    h = bandwidth; 
+else
+    disp('mh_optimal_bandwidth :: ');
+    error('Parameter bandwidth must be a real parameter value or equal to 0,-1 or -2.'); 
+end
+
+optimal_bandwidth = h;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/mj_optmumlik.m b/tags/v_3.062/matlab/mj_optmumlik.m
new file mode 100644
index 0000000000..c41c97aa20
--- /dev/null
+++ b/tags/v_3.062/matlab/mj_optmumlik.m
@@ -0,0 +1,223 @@
+% Program calculating the posterior density 
+% 1. define xparam
+% 2. call model setup & reduction program
+% 3. prepare state space variables and kalman-filter setup
+% 4. evaluate likelihood with kalman filter
+% 5. evaluate prior
+%------------------------------------------------------------------------------
+%------------------------------------------------------------------------------
+function [fval,cost_flag,atT,innov,ys,trend_coeff] = ...
+      mj_optmumlik(xparam1,gend,rawdata,algo);
+
+% algo = 1: computes filter + likelihood
+% alog = 2: computes filter + likelihood + smoother
+
+global bayestopt_ exo_nbr dr_ estim_params_ Sigma_e_ options_ xparam_test ...
+    dr1_test_ trend_coeff_
+
+xparam_test = xparam1;
+cost_flag = 1;
+if options_.mode_compute ~= 1 & any(xparam1 < bayestopt_.lb)
+  k = find(xparam1 < bayestopt_.lb);
+  fval = bayestopt_.penalty+sum(bayestopt_.lb(k)-xparam1(k));
+  cost_flag = 0;
+  return;
+end
+if options_.mode_compute ~= 1 & any(xparam1 > bayestopt_.ub)
+  k = find(xparam1 > bayestopt_.ub);
+  fval = bayestopt_.penalty+sum(xparam1(k)-bayestopt_.ub(k));
+  cost_flag = 0;
+  return;
+end
+
+nobs = size(options_.varobs,1);
+
+q = Sigma_e_;
+for i=1:estim_params_.nvx
+  k =estim_params_.var_exo(i,1);
+  q(k,k) = xparam1(i)*xparam1(i);
+end
+
+offset = estim_params_.nvx;
+h = zeros(nobs,nobs);
+for i=1:estim_params_.nvn
+  k =estim_params_.var_endo(i,1);
+  h(k,k) = xparam1(i+offset)*xparam1(i+offset);
+end
+
+offset = offset+estim_params_.nvn;
+for i=1:estim_params_.ncx
+  k1 =estim_params_.corrx(i,1);
+  k2 =estim_params_.corrx(i,2);
+  q(k1,k2) = xparam1(i+offset)*sqrt(q(k1,k1)*q(k2,k2));
+  q(k2,k1) = q(k1,k2);
+end
+
+offset = offset+estim_params_.ncx;
+for i=1:estim_params_.ncn
+  k1 =estim_params_.corrn(i,1);
+  k2 =estim_params_.corrn(i,2);
+  h(k1,k2) = xparam1(i+offset)*sqrt(h(k1,k1)*h(k2,k2));
+  h(k2,k1) = h(k1,k2);
+end
+
+offset = offset+estim_params_.ncn;
+for i=1:estim_params_.np
+   assignin('base',deblank(estim_params_.param_names(i,:)),xparam1(i+offset));
+end
+
+%------------------------------------------------------------------------------
+% 2. call model setup & reduction program
+%------------------------------------------------------------------------------
+
+[A,B,ys] = dynare_resolve;
+
+if dr1_test_(1) == 1
+    fval = bayestopt_.penalty*exp(dr1_test_(2));
+    cost_flag = 0;
+    return;
+elseif dr1_test_(1) == 2;
+    fval = bayestopt_.penalty*exp(dr1_test_(2));
+    cost_flag = 0;
+    return;
+elseif dr1_test_(1) == 3;
+    fval = bayestopt_.penalty*exp(dr1_test_(2));
+    cost_flag = 0;
+    return;    
+end
+
+if options_.loglinear == 1
+  ys1 = log(ys(bayestopt_.mfys));
+else
+  ys1 = ys(bayestopt_.mfys);
+end
+
+aa = A;
+
+np = size(A,1);
+mf = eye(np);
+mf = bayestopt_.mf;
+
+% Set initial values                                             @
+
+
+at = zeros(np,gend+1);            
+gconst = log(2*pi);
+lik = zeros(gend,1);
+
+if options_.lik_init == 1
+  p0 = lyapunov_symm(aa,B*q*B');
+elseif options_.lik_init == 2
+  p0=eye(np)*10.0; 
+end
+pt = p0;        
+BqB = B*q*B';
+
+trend_coeff = zeros(nobs,1);
+if bayestopt_.with_trend == 1
+  nx1 = estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
+	estim_params_.ncn;
+  for i=1:nobs
+    trend_coeff(i) = eval(bayestopt_.trend_coeff{i});
+  end
+end
+
+not_steady = 1;
+ldetf_old = NaN;
+warning_state = warning;
+warning off;
+if algo == 1
+  for t = 1:gend
+    if not_steady
+      ptt1 = aa*pt*aa'+BqB;               
+      f = ptt1(mf,mf)+h;    
+      ldetf = log(det(f));
+      finv = inv(f);                    
+      if any(isinf(finv)) | ~isreal(ldetf)
+	disp('singularity in Kalman filter');
+        fval = bayestopt_.penalty;
+	warning(warning_state);
+	cost_flag = 0;
+	dr1_test_(1) = 4;
+	return
+      end
+      pt = ptt1-ptt1(:,mf)*finv*ptt1(mf,:);
+      if abs(ldetf-ldetf_old) < 1e-12
+	not_steady = 0;
+      end
+      ldetf_old = ldetf;
+    end
+    att1 = aa*at(:,t);                
+    v  = rawdata(t,:)'-att1(mf,:)-ys1;
+    if bayestopt_.with_trend == 1
+      v = v - trend_coeff*t;
+    end
+    at(:,t+1) = att1+ptt1(:,mf)*finv*v;   
+    if t > options_.presample
+      lik(t,1) = ldetf+v'*finv*v;
+    end
+  end 
+elseif algo == 2
+  PPt = zeros(np^2,gend);
+  for t = 1:gend
+    if not_steady
+      ptt1 = aa*pt*aa'+BqB;               
+      f = ptt1(mf,mf)+h;    
+      ldetf = log(det(f));
+      finv = inv(f);                    
+      if any(isinf(finv)) | ~isreal(ldetf)
+%        disp('singularity in Kalman filter');
+        fval = bayestopt_.penalty;
+	warning(warning_state);
+	cost_flag = 0;
+	dr1_test_(1) = 4;
+	return
+      end
+      pt = ptt1-ptt1(:,mf)*finv*ptt1(mf,:);
+      if abs(ldetf-ldetf_old) < 1e-12
+	not_steady = 0;
+      end
+      ldetf_old = ldetf;
+    end
+    att1 = aa*at(:,t);                
+    v  = rawdata(t,:)' - att1(mf,:) - ys1;
+    if bayestopt_.with_trend == 1
+      v = v - trend_coeff*t;
+    end
+    at(:,t+1) = att1+ptt1(:,mf)*finv*v;   
+    PPt(:,t) = pt(:);
+    if t > options_.presample
+      lik(t,1) = ldetf+v'*finv*v;
+    end
+  end 
+  atT =zeros(np,gend+1);
+  atT(:,gend+1) = at(:,gend+1);
+  innov = zeros(exo_nbr,gend);
+  for t = gend:-1:1
+    pt = reshape(PPt(:,t),np,np);
+    ptt1 = aa*pt*aa'+BqB;
+    Pstar = pt*aa'*pinv(ptt1);
+    atT(:,t) = at(:,t)+Pstar*(atT(:,t+1)-aa*at(:,t));
+    shocks1 = atT(:,t+1)-aa*atT(:,t);
+    innov(:,t) = B\shocks1;
+  end
+end
+
+warning(warning_state);
+
+likelihood = 0.5*sum(nobs*gconst+lik(options_.presample+1:end));
+
+if imag(likelihood) ~= 0
+  
+   likelihood = 10000000;
+end
+
+% ------------------------------------------------------------------------------
+% PRIOR SPECIFICATION
+% ------------------------------------------------------------------------------
+
+lnprior = priordens(xparam1, bayestopt_.pshape, bayestopt_.p1, bayestopt_.p2, bayestopt_.p3, bayestopt_.p4 );
+
+fval = (likelihood-lnprior);
+
+% 11/18/03 MJ changed input parameters for priordens()
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/mj_qgamma.m b/tags/v_3.062/matlab/mj_qgamma.m
new file mode 100644
index 0000000000..cf927c253e
--- /dev/null
+++ b/tags/v_3.062/matlab/mj_qgamma.m
@@ -0,0 +1,30 @@
+function x = mj_qgamma(p,a)
+%MJ_QGAMMA   The gamma inverse distribution function
+%
+%         x = mj_qgamma(p,a)
+
+%        Anders Holtsberg, 18-11-93
+%        Copyright (c) Anders Holtsberg
+% MJ 02/20/04 uses lpdfgam() to avoid overflow in dgamma
+%
+  
+if any(any(abs(2*p-1)>1))
+   error('A probability should be 0<=p<=1, please!')
+end
+if any(any(a<=0))
+   error('Parameter a is wrong')
+end
+
+x = max(a-1,0.1);
+dx = 1;
+while any(any(abs(dx)>256*eps*max(x,1)))
+%   dx = (pgamma(x,a) - p) ./ dgamma(x,a,1);
+   dx = (pgamma(x,a) - p) ./ exp(lpdfgam(x,a,1));
+   x = x - dx;
+   x = x + (dx - x) / 2 .* (x<0);
+end
+
+I0 = find(p==0);
+x(I0) = zeros(size(I0));
+I1 = find(p==1);
+x(I1) = zeros(size(I1)) + Inf;
diff --git a/tags/v_3.062/matlab/mjdgges.dll b/tags/v_3.062/matlab/mjdgges.dll
new file mode 100755
index 0000000000000000000000000000000000000000..346c607564c7cfa770bb8d4c7a7a407e4def88fc
GIT binary patch
literal 242176
zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P<Y7(1_lN``CWVrTR6`u?qKves~D1zS*%b{
zl%HOdn5&SSn3tDdqL7rTP*j?ykeR38;vcM#o1c=Z$IHv50yR0nm4U&Bk)2^ynWjBd
zh~WVPpAt7ClLbQ^GXujqW(I~03=9kcP&@(T+LjD3p9$h_MyUJ2`WLW(1rID{0sD)A
zK>?x{qyc0G)EI^Y76u=Xh5{Cb5;hP62X0_tFp<I`M}e?jNoqw20|Ns`4Ku`jAishl
z0m;k+28IN^l*E!m1_lNNkhej82dQZSaS#d}7#I%d6+sl5faDi2GcbVs)P_Y}QgJaz
zr@=Y~28Io&@*r^#ZUC8=3Na5HMhPqo3``6R3_Ymo!S-fC)PcjWfQ5m9gMope4~x2@
z)SUce21r;ourM&lFfcGo!&C>de-zU%1VTHXHouYREdA46%F`M9qxm0WNls^p3QM;u
zM<<I)x2r&>iwegJw>V~o<~Kae{}?+Dm)Nv^E9G9uu%SJp^+2h-;qA^F-LXHqOaFAf
zi9N)_@S1l5GI$Zqz`*eOPUpAYJ?bD|wH_!v@WLG=wsS&ni5kOk78Ou2@`9z3nPD-+
z%o3^NAe9V@1va#2ym%eQ%<!Ttj+x<Q>i_@$U!196W;o8k!@$5`c;Iz==QptXIXYwi
zbc=#@Un<e;mIY~Se$8Texrn!$x%EJ)7MN4~xl=^tMRf%;gW&<NRmWMtrO=Cr3TB4x
zSdjY<PxyZUV$ka|z1u*p0Glsy+(m^2WPG<P$8i@G4v_hsEGjSfE0`Ht5AaVt)cGcs
zf7>CC!%+9&Qh&dknW6Jd>|vw;0-MkA;%Ff=1IQAE4ec2qXDw*Ycwv|bRSj`T?|!&@
zIABWTlA%iACI&NvG59g`mN7uXJGAp@cvx`r8<TEVk-H2xYagX`yFSX|*us<6>H6Si
z?t|O0cW&lB>UO;o(CPZ(g<T9YL#OMFh^TJY7g-zuFZ5!V8M;GX#CN)0iOAvzdLb9X
z%n%vf>3X5t^~J#lELj}Q2Lu8-UEjQ51!+76(Z>?-;#)K`Lwx7q-r5fl-L5bA*B<~G
z_Ar{6p*QqJr;SRl@0;N6T7kgs*ehYZzE6U>OD}{61$4XK2n!DAcI62Ku{nYQf-(+>
zwPa*m5NyfFxCA1u2)1Orn8m`t(0nA}w(FB_SBdUWneN&f-KAIVO5Aq+(Cw<y?R%j+
zR^hHhx9f{umqR}+50&dcgAbDa?lRu7Z$8d(SL!Zf^C6DrgB*A4nvZeZm2N)FVR@+R
zVQ=b}=(u>47=i~anBg1g;_mJmtWcC%SejXsTC7k~p07|`SejUrs!)`gn4^%JSW=Xk
zoLa1qpQccfk*ZLfn47AQl9`*DSDcxjr^f&`1vlaA1vcMGp(H<FAvZCvQX#*zq@c7!
zA+adEG&eP`q!_;u2>s>x3i(9}B^gDjsS25SC`KqiTnqL=iXH<rfMDqhoL+3YT?M*J
zd757^b=QhC|6t^AZ(?F#Xs+d8<L{3EvEJ}>vj@ER8_CQN-Rb%S#C{mb%n;RixZ9m2
z;KkEOP(peT0p^?lbM8cd6s?J5W@tVl&~l(etQlfN7fgh|Wj!MUsF=wx5N^qMaR?$F
zki`%j{2~<0;pt=p^W334Hx@A00><UYV#s35Vtk<v6W{@HgI|cl_ySM`Y#<l8i9~d>
z1-y6_0dne%h;BEQfERbcoGTICZX5wGE<}Jl<a(jojVIv6VX(}Zh;BE5fEU}qoD&ev
z%m`+N?l6%~*CP=@FXn(a=8>JQ2f|)V0I50#34@jhu)mvY1(-Ws_wct&VPIf5&icTk
zBZIptpXWI16OWDzMurdeowvGcZ}6|beDD$TpU#U1Uow4O+Ig|NbkD(;Ox?9tJ})&q
z*?O{sC#{>U`504LCwud8Ca?%gmsp2*=e=&%1BSP|ea{5<*1ibqj=gbTN2U1)M|bI!
zfNs|#0o|@A0=iu<1cnEM1>cQ*@#4Yn|Nr3$zITfnsC)rMiaSTZi!0$^_jXsXbTcdl
zIkVFi<iwXT|Ns9-PA_2fEO7NL2l!j8{{8<C682{ae6bc{Ov?fOR^@;H|69gB;ct}!
zGam4_3jX{5-#YdVe=Eno|NmbK|NH;H^IP*9o{R~g=syh6`Ev5#|NlW11++W^$zKp|
z$#{Ja;)>ADr`@g`cNw}}d2XBlQ3A0b`sS&72k(M|_r|Gvr*59S_459MZ%17DryNlI
z&%nTdTmqx!MZaJdch|rmH-!LSpO8>@k07_woE&hLRB-VRat{m&>-+|4Z-T<=|9?=6
z8N~VkZ@Yra+kGGv!HsYBFfuT7yDD_YYIKJ>bTf3eM*RQ(zni<WHv~j89d}XT0jUHP
z`~u=F8K9~K#P4hk0Lg=E;1{>089{YSi?bL5gW;vlsU`pa|A%SlcIDX((g4#4GZ0ia
zEr#mbEy}=Pc(Sv%0IE+=yd|T%RschbjmnDxX-0-_--ymu8?f~O$3bQ@G+X@VpK_@6
z8~?Un{C%;a3=FNe`TJZ&85p|3>RJ!*w|p02VCeRh=oW0f)OnG=<Aw+WL-Q}j&I|lK
z+dwj<3YKjAy+$CWYs7JepCHqHBfu^PY2j~W2T7F%bhEV{;O~1S%)roHD$y->+(ktJ
z<buu;6`sx#6_H+^yP&Yvym_2O#YDU%qc>6<6c9qtkduJW0wAg5E-Dfh5WWnkA^bv=
zixFgK^8xm5KK}Iwn-7S0w(5Y~(FzLB)&u;l%)$%|w;^J#KHa4OcO|;nEN|5Ew*D{W
z>;^geEl7E61gJs5-?~(YfuZ$(sSwE5hOOU9CAwX8Agz|hBcNCZS0bQfdz?i@QoJR@
z@EgdfAm6+=^oaq~>H)>W-MJFbSOLqd_{6}_>$~CRi<>7qeN<R_LwDQ_-Er?{r-;hk
z*bOg)J~1$K$13b#VEAC)T`P0fbw_8b3dl{a5;uQ!ZdLgI|9_{83Ja*c*6r$ZoJB=S
zyd|TvMun%-MMb1DMg<h*5+Hl-Yz5hRw-u!0=E=KL1^)m4fA8nrxgh?FH!nfS?B;>a
zsXqVz|G#<gZtRMi?{1#F`|$pQyEo_Yx6Kx0V7S`~(gG7|Zv+Y5fSdR7{)2h^ZK)u^
z*abU47IwCR%<2Y{prHOF01g3=`?_5<x@$qrC9uo7V^um`R0O(ReL8DYSUPJ|IG}Fl
zc@YA2*WK6&2={bO_4xn)|GY9`gp20!xAzDzFx*9VPXS0Uwgc)OkhbovAhPuvf9qd<
zP&Sq5_EqVQRp=JzuGQ%DQ4#1ZV(i>%04nZE8@hWzjLs4jneI{_P$+l1%5=u4@bt!<
z`_WmWBGPNa)$2Q_Ge$+F^Y_8W%%C{vb#3W%QIY6%G5*n6qN32bmj@I<J}NrU6w%qr
z0TOUg(Kzm+VgL%J7YEieFm%^Sbo;h+hc;-Qa_XE~1Bzev&bcfg8f-#$tdHgi#_Qcv
zK}Co|XKMw>fsX(A*B|N*Rp~W3)Y}Tu18%x&^oE@K(cKHOrgtkyU1x|2M|WsIr;7?t
zugmWry|Gt7Eq#z*J6jnbjuGi*>Wop5=#2$=Mn?08L#OMN7c*8eFm(5V%dXHCP;Trk
zz0m9Qzq9qozyJUF*PrNil{wC$A}!vMaqtl{D4olIawpG;UKg$(-QcpW(?vz08>;+Z
zx35Ys%fVh3rXQf#?GDxG1_woNFWBWiDjXmeb^9uGx~Rx>LmU>OA^~!^j|wP#Xmo>0
zP76?wb(W~;bl%ha(HWy+;Lz!M;kb*62}t}!>q1cZ1kc;N3=F-oN4ocd3c=R@{H+^!
z7#KQBR7|>Ed3r+|Izv<hx_vpiYbC%@8|ngyJ04IZ^Qb^vBGT=u0ZNeFwIC-bbi3Mg
z`lv{B`#N;GsHk+idUV#P$aMOsXmp0C=ybZM7#w#|0lV<Hi;4}{MaG?=Vojmfw*}O-
z@=+1!uI1?th1lq8(CgX&4h&Zrge4N)t|px!Dm>kx8l5gGI^C`okOXK0G9P56kBUaO
zFDN-Wbhm<1NN0_TLU*l0XNZbQcc=@<f4wCfp!8|c8KPoyoJ9px=5&^*xb&9J>4v1H
z&;W2?Mu42y8KdISS)$?tj`btQT~q=<qQ_lSLO}G3OO~KQeopJj68F}Vbrzt;w}9ov
zdeQFKh)!;3$yw`jSN`R%U;qF2+6Y<xtmo9c*c}?t$@Tg{w{Jvm6l164>uaE*UCi=g
z-P_l<;bkVGCShg*#T%%&02LJJTp%7en;zhAWd!kDCAtN?I;Z{trM!+$3=9mN7rK2d
zzF%m5z}#JH;?>!E;otxN-K7TIu_2vPPk>Z)I&v~FbegDiPX$ReAL9U(EzQR{K)K<6
zs7NPs^I?|eR*)RW|6Yi>vlti{pzR@$MzADE7bsu<4;ASR=jdeab>rv;Th<w(!qUm2
z(tHq<ZaKix0-eq*y>0?%@&cVcDiC>z=Hm*T&K$jN63xdHKzS8zQ1d|vsH#q9p60^>
z5Qix=uLU`bg}*ZwR9~>Dfa<nxSB2iWpcLL2qr%ed8`3)!l)6E_0tIoc45;+!j#UAr
zTOUv&GU@g;0Ovzjht3ief$mZZP|4L@YttE{BGVn~(HWwm(H#m(ye8eQE}cFqD!siK
zpi-ekMW?s)MrVzRLGRuKkbsMdMQ4nPO=pOTL#L05OJ|LWM{n&3P}1q$3ThvAhX!=_
zf{MFtSD)UP6QJA~&>K4kT(l%~)~JMZmZ(H%o^a@NJ#pMcB?eSszYviJ^)BWx^0zdw
zgCZT|F;Eg<1M%j9eAarKzqOMMR1$%c$4UMcK~VE5R03M2TY$<)BR~F*UknTkcU?Ca
z-tGpsx9++wxOuX3?iEnF@HOa;wYWR?1&AGLa@TdoUDp*iPu-pS0Mzzu-SY4M|GRT<
z{QLhO(SN?n1gdU8&Bu9FOeGa}8Sl1&6yI$HnQ`;b%|ka&-uQI$<c+V8Hs(D3_FJqB
z40l^WrrbPo<MYjf_rBgdbN9{t2X}AJ<8LbgN#3{%f{fjJ!A@=kxs366x2w#Znjb&9
zU43poyen{r`>ym|hC7^hCGRra;kqmJzZImm`49)hPmEx<HXr0@KFq-gHo%X+Gw}ca
z|95Y6w?gwv%NJ1a)S?8BxgUSWT}E*5bbd7af7f+Kx2s8asKs5^j_z24&ek)aaQN{3
z!d=%1%?}to`8&6>fT~85oA2&2z``K9+tuRc!5bg%GTc0H<J;X=kcL5f8w&%&&BHej
z-8^~k(~Zy2&?wWp%hU~adbh6%<BvNv2jL#%x+`^;0piVWu)TLU?n*R+Ss-6^w}L7-
zxVIUP`|)>(u`n=n&fNfV<Hhc&V7Golji0c)j5iP6_;mB&jc;J*^0(h+#_lY}?zx~4
z?RHgR{C%h9#*gk;P`C?&LcF^bWW`-(kb~|rgF+wTn49kyk3&4;0IB-!I&pw)sbVUL
zyX(k-W^)u)n@#UJa&*rHRh$@Bdve^3<bYf5!ErZ&<1X_ZFOIuW9L-=S2{a!PfH<WY
z9Hvao2L%|9H@{=z@B9i%x}a2b<L-^_t>6sujlcCJC<VaML#q{-2Ws1c+U#Dx{{IK(
zobFN`!`q#$F8`tY&Q=FdPI8qv4r)0wbj~#aaV`8i_x=DCryYX7{{Qa|wdgK2>8>^C
zocaY69iQRjd!05a-K}7;5=dM0f2hdKcXydP4}pWKG`=df^->9Ix2w*72E&uBmpXev
z#+OKRgB{R%pp*~Pq-N~)jc7i=)X6xZ8EhCw^D&O*<B)U#a_IkFkXt&Zg4huER<^yY
z`1$|;gyy{<^B7Bb!G7y(1@T_*GCa_Fsg$d`7o@)RWC<%&63ji&d8mY~+f}ETfoTV*
zN7s4@qN}8(8ypg?2VSN_N?ln{*U43)x3mM)2m&=@Vkdx_JK)kdRHL_c4yacJ;(?mm
zp!ytC26y_X$aIFND0J4Ss2q1u(EwMbORs?Pl?2$FQj6m(DsqtC3JXX#x+$RE45*L<
zRsWz89L1#QD+~-TRsa3}f1E`{9^}AK1yEDe2h=K&=#5<fcVMkdZ|Mq<L*T}Pnk+Hk
zz7=ScR|Mo(xC2?h4m1EY&QTo)sx&|i4OHKPI%wby2H2f0DxhWz!nfNmGca_Ansob0
z;Pxrlgiaq75x8$dz%44&aLc{S!0=M@FQ}k<x#<s>G6YlLBK5{g28dMK@BjZniTvE}
z|Nmdw{Qm#{F4N6JH@@CHc<=MgQ_v!-T<7NDo2T!6ym{*0M`&@y-!|nJNG+^n22}`*
z$6qFb1i_i>^<$_#cE7*@4(i%<yGr!dwtzZX-E$2<t?|+ZaQ*5l(OWtP)MDta^#FCq
zTvS*TKs_=a6`9_U8<4iIt4n8yiUcS=!SPxG?hNRFQpj;wr(iW31H(&>pK$AXU17Zu
z7Zrit(3b9432-CP)u+4G1{B$#c6fKFLvIPV;^hD(22cmEL`4Er(SxE6)IbEaRgb%<
zpxR{*va9b0r~xI>T^rHO)_j1ull^7h4@hW!`1b#Q^ABeJ-gRIGQ;i|0bp&p^AT_HX
zjU3Eo)ys-+|NnQIsC1r#Duy<6x<f;{YfU;YcQQ2}X6bGPwb?qif|_I9r3Rp8S}UmO
z(|nBM^(1J28kAMQf!+b~E-1rv$6EB3g0dn9hzIg9sM}kj0#4TO^c154Y7;4dS~l=x
zE_;!I;pOtL;Lrt|TPx99x&WLlLk)UkSHNt*p6U@P9+Xy*^Y_sUNcr0YcdAEqVF}cQ
z$R<@^U|@Lp{R`NIilF@MD$(uh0vhS@0P#XSKz$ZaGCS^~BH#c?U?QMYb=*Zo1~eJ?
zB60!)!%M!;C?<r0k_r#l1aKFIr87iD1k|HJHVJNm_yo|<gH5+<3$&lt-3uC_0?C8Y
zYHz@Q{`IFA5BBn$?w$*(wn5pLfBog|xu71MH{+phSC!7#6P>YVdSlP@id^W7QQ_!y
zJ<%QO0CGF1ff}O11L}5yI{z<zbwe!kZRrM&gY^df=U;!Jm*sNjRFI{;At!!xyMj77
zJdhq^_grY-RRGeD?Br1ajh=u~SGR8f$k^W4BcQ^#n-Sa*k5Pg2YmdBm(9FQ_^7%(_
zz<?tkl#@Zp2wVzxhidf3f|3|KQGv3Ni;4uuH=y(t15RI%vfT%%Y(II9f#Kzv_u#^5
zI*7XYvgtjFCBE=<)eS0@L1i@9lI~bgrx#oh_qxvM^nsSmka8L%g(y-}K$dKO2exDp
zh`RZ*7ew87S^N&U{d$~5MOC~d<NJ-?+AE!|S3tcOQ27t4+FuxaV_<mc^A=@%6*{&C
zO8453Dv1L$um;Kzpacdk-b)~bv<*ZaJirDUt9!BL8v{c(U-JQW@F*L*C3r-Qzjx7_
z|NkK)ZZD_5L3Us3fBu%KZ~p&($q5k#^&OaAHiJ0e`8V)5Voi2;sfHz6tx$Jt#Bt{D
z|NsAgx%)N5+1;fMpkc#0zHV?|sP%S<kmZG1zHZ-$<BT6c3Mah=6=xn`MPl9HK2qx?
z{+8<3|NmQ_;O{L4NrQ&>-h&jUzJ@k}UiX2U2rnH#)_@%X9e?f)jX2Kq8>H6qHE6sV
z6i}eC+wM|OVZZ^(4xqdVqB~7gUdXb6M{is2z54$j?D)SRt^Z#A{}1h7f`=CWfdpT^
z0-MJOYJ<GI^XmV9$o!~_3X35qqr38e;tgaj+<X?57kgPj=9fr<UAr4JN8i~B>MXq!
z1X)p{#;_Y~-0zqFp`-R7_kzu<1<z!nm}jH%A{W`beGv0NU9p#)AQMW|81{k9D}MR^
zKV;lI$j2`@z{$nk-O14#R6c{pzk{3K#B|q!9L(aN*OJj)3K|XphfSvqC<%i{y<af0
zGBR|!K7a_ZIO-t=z+paoagPP0<Oyin6_jGZQ>0FMEg79GAY;HL!qskK0R;tri<AJU
z=zRd{Jm!N3_MU*4Df|o!$Jsyu4N3|8ttud?P=Riy)&nJ+-L)#+?5zh%g_@7VKt^ui
z^QWNj0@(<1f{O}@ji6C>Td<|2$3czOSdnf<OJ@ESLna2WL!CihkHrjT8I>1oU~T*@
zd3>OT(F0I|{J{Vj{EHRoHt%Nc{H}SNzvBsL975zMXw<vgSE1WggYhEcq0V!izDGKL
zbYAWZJ@EZP=g;PM9L=venjbKGcKYt%?_A9b9@=8*4pjlwvoR_hptkK{j!qHKz!lGn
z)jdoM{`?)CprI4cJio6>x2q1QL<W_cE-E}Px_X!xKyBM#j$Sv=_$v!Yo<{{VumBo4
ze31o{7wB~ZRbS}xUNCuyUN`XYR`X#6&@cxN*rE{dm@dx?l^!OB=Jzc8o#mk3MeLK-
z+x#uCAn*kR0V7fn@IZnfR0b3Trx*`*UhDKd(fOnEbZ6)p^dQ*7-)R9E-DBx?g#|(L
zVaRF*(C7xwixu4%K@bWLf)Ev+7wz5ngCHFyk0S`&Ve)u`K(QMs2tet~1$TnE$_Po^
zy4;{t@&Ht79%2TibCGU==3k8bEms&B7&<RDzhvr-`rqk$hri=6sJB<D(aQp!H0k!e
z(_6##qq|h$`^Dym%#0tJUorO<{NV3=$H~BOv-TbTcGq`lybPdK0dMZI-OPP+JNCuR
z+;`ofFD!4BsDf&ZZeNXFmy18TLv^}+!6^xxAi(KD;00SN$SWMp?>M~wgDiJrWPr{p
z-(^EH9nEYLf@ZI3VZv~s+mBx7|GoY{Pz*a%Vgjo8yInPULoWOP)zYA51!xfqDB3|u
zS>Q!1Hp4#jI{)kS|3I=~0@w_D(d+!T*Z&2YVX6dOcDNZ7gbK~?6q;YNH0R!7;qN>E
z8m6k1=#CZWX73iZyujabj*)@ELGw`O;m*(-{2d2iQ4Gx<3f;apK(Wktp*!?OZ^4i6
zmzp0jd-8W`vr{9El|T+W4(f?J|M$JY-{AyGao;G9-&0Lk;+Lb>nX%WO11%H@$8Rk*
z!vuPrnR@*NNH)v>n_&{Y&dk035@?1Ij^D?PObpG(K_ww*ygBy<Jbs^mGIR4!P%A~G
zTMV3;uY-aXo|&)kcN~MoG&D0`0Y!6nsSH|XP6my^QJk4AK`wm{&CFN$J3K+Ifvw-7
zJic!=V2N*X^K&mY!^q9g4%iGMH$Q)_N6F7u;PDO3&)k+L_*;6u|Nrlxd9d?vr|$*+
zj=Jxlku{B87D#?BmFf1q&|AawqdW8h;|HYtJeQFg`8f#WKv;ghz~8~}9n}7$Jbr)G
zVToUI^YdD4hLM|}6R;UZZhjW7L&?t<pz-^1=hy%LLG8KCpj9xxnE88yzzn9E6ts#E
zqnagL70$242-^R?7eE7}$2go{{s4`AIs8Dg2Bo07RYKSjE4-Gt{r~^J^(24Gm*4;Y
zH~(bj@9hCIsN%f?HCViNr5REby)*(1<5BLtXuOtyy?2SfMfK<Z|IMJ-JMsg>po;e%
zR%7wr4Or}D{rLa?F6G{<!D|WFdnfr@(m(@vpx9#sGpOP{CTup}fyEwZjExH3n_Gn?
z4B?i5y!RS){V}Lr?FwpFmtuCrOjKUfeq#Wwu4-NJ<^TVe|2{&-IiG)qj&p7YGni`B
zK<gyBT~+)+{iJSR9Z<)LMFrHU@KND;5n0c~@UrLg|NmfBwJP1Ekj{jS3TV{ig;hNh
zLwD_-?$R^eu_s<{MROl$l)B^-)IJw51I<3r)CWrU<z*cc!%N9exa>Ps2eNNRcj=Mt
z*aH~$b;^Kx&McrHK_5?eQScQU7%c^#|NnoP`Vl-#bDTxRO%FVNRQjRQ^#jO@Abp_T
z_=^vZ85mxk`~Vq<fsK#23Umv!UgGa)2K8rSML^4?>aswqTKFvw)^J0HbAl`n)`=Zw
z0}rF*qU%@bW@tT7p#o7U*6pif$;jX9{^9@s<80qR<0Lj8U}H3okF)&(iD<z^mQOg&
z_6H;+{sA_A!Ui63VTbcwR9L|MEXYc3l<^N1l^3~Rz(LTu8#G|&qQV01!-rxf9TAlm
zPEe&2ph`hO+U<*}lt<--I8<pWNGTh51f}dfWCSH3IK&UU#4yA?*wqiRwh%PzG66b1
z1Q}0hd{YBz0lF%5muhs!+H^B?y3Xl#&FJRq^qtWy+!;Crvi7XoHRibM1ki8+XwhEF
z0dY_dF$K)t0%mhGTd?xCy$}O+A~TM&gIv-bngJRF;cpER0k6txum_LBuz*75h1eOe
zSfhPQ#@)G~#Q>n}1eW=88Z=7Fac3)7)O8QY(&Mh6rTh$c=Ym!VbTc>qU@T#6{=r<w
ze%!SIr0KY83rJb>4<`N=Pca6D<{vElEe_yyji70T7HzN?D}RfU7z4v`*A9^4Zr7I9
z1EnmjmrB@=yLNy~=`Qu?hD}Z$ckKZy;sB3-K~_U`p7P@FxCu&qt|Fc14FBJJ*Bimo
zc>%OUgb_Sfx?Plk!Lk>$Ad0_tE_fXyh}~T(!}#Ma%dxxQ^=qw(q6`fDUC|(E=Rd6n
zO1Qd9J^r(S7QJx%2QRv6KFreXI*0MN7k`JIC}>_9Jn4C_6K(xKw`&h5i?@OT7wTBo
zIo+{6ps8e#wGN<xkL$u9|AM`OnD6X%ozo0nM!?YwwvdVOc=Ic!%5`^dbjNaZ3-?z2
zZ~o87-xe(lT5QR}-x367F!Q&(6#|K{^0zz@VqoZ%=>_e2YW~g0-*ZZcfdLv&pfSDR
zZr6xz-<aDhD$Pe&?oI`*?*grxPw3tXlI=9Gl;rQt6#^xp37`?QBoH$;<2dsx(1?w1
zMmHl!R0bsK3Rd6_8jz^<=#G`>X7A><JW;{{Qcwk2z!BQedZ|RU+c%&aw6;<Ll3I^D
zuz=PwLROg`cLZ~~`MO;@Kmj(5k%7VRzu_grZ=JO#c7xP)p6?93;NMw#r8D*ne@7xX
zKg{SZRq2kEIrxCN6TF<U+jS0@EdyGn@&gj(FPS>Qv&H<KkJ!Kia~u=wL1U5<y|E`i
z^R(TeGMy$Wy`>jGr8Q_V&x;ifj11kb;K^B#0?+~-S5T=5)(D!ic+mz@0iF-<1}~cg
zIinY3DdWBFSQ*CCt^fHuK+EYnzkwI$xJvZ;UH}c}gNja&?VT(ty{;#~(;e0hj10Y@
zCqNTg5H+A87PKM_I>rf7{z43@2<%CaB+MYjW8JM_dk=#g90Oj7)a!ZyJW%)0o{^!~
z_X0?wM1=*W18OyBZox%G;Kd$$Muu*%u?VA@-!t)dI)he|xSr^)4Y~R2j_-xL;&<aY
zKvByL&2!*{<O$7k;6;A?9s1x%F);iFTJ^ORyg0R1r`vZ1WQxA|kOF8$+g{KLgznfm
z;JH1}^nCLHj?Pxl%qeKd20X{p9V!D7>;<pT?FB7IXg<Wz30W=!p5F&8wgN9gg{-3N
z2Cqc!oT~wf_NgLZ614uPb1!&V9Aph4cx~5&?${nsj@t@aeh<ly&EQ#nj&9!>;2Z~X
z9S3B61xGV@`2a^V*mWGu;6-*E&0ym=n!)pu9E@N`GPZ)O{tsS{+uRCr07o;}eH_iL
zAct@?gO@l$i;n-0;OYbo)ZYcKQR;S$fMh-JBu1x1;}KAK4<3p}YcGHXnguPVf{G6Q
z-v6K+Hy0GnH{W&p&gtF@67IawT`JQ#7qkY1fBivlnFd~ZQN;u*LVLhPD7a8+Er2h!
z18JYpJr|_CyHo|F?Z#b~V?V(9_?usV3sW9Yz0BX@0U8as?9JbC2`oAVvf8A(c1CyT
z9RBqmy21WE_?-FRBj#R@ADvs@fCjO^zV8OJJNG^TiPTzjP6aKY>J9kO%ksUUkiDUy
zh`phqfW4u6D_Fr^kSyaT#-H95*$8QVEYdy*X>lylx(I3chUNnb80J?tf+j9t?U&j)
zkcG<K;3c!&p)&mIk9YTirWhGNbjKX})9rHTM|Y@7XCzA}WA|Rr-1KpG(7-jrarZyq
zy2y0~G)Q_ui4Pnkpm0U#25WuU`uG3;&TD=Zecj-M(!CdyYPw@*G{4|ze$UbEJEs%8
za0j%S_($hn&`Onq51Bi^f4|=RoVgpk?imu2o!|XC_ktF5SNefMkMRU392sx<@pl;h
z|NnmivKTS!=65WWr(b>p^;y9Y#Za=h8O&g=T>xP))$oH1@`Ks*x}zJM;yeE}6#Q?1
z_y)`ZI})<4hw&EUiPtAV!QAaSr@I%FHoIeGx=SNKtB1k08{@%lm(xGGYfk^^Wb3SB
z>1H|I9deqb(~YAujHi1lD0g*(t8B)LaCL41opmChWeO~(yJJqXbh=A)#>;fas(^Ab
zc&$1A`h!qS5W`DO|LJsB=qy+1yazHLtVg3WUI%0bc%BlW`rME1m~($R-3>b9O}bgm
zb;q1z>2$Z~jJJWzNrP57Z3UHGy|p*)wt|{Foi!=~ko6y+8T9U6P%#49w9q{jw9E|D
zY?=b9b--oK9q_tJ(8Lu;3^YRxUnAtAqH;I(#tXMs3=G{{L5Zuo?oYSdkH+r|3=9q6
zka_6?+O-3ppXvsOo(E)!{Y&LPkRD9i&;S2l3W64mxE=r{%Fff^;u>0XdqYa?3bSrk
z5yStz1uUS5fu(<N(a>_01KuKmHg}FenmgW=ce`C1Ko$EZR?ys4N9!g2mY1N>%i0#u
z%4!o9kj4cdOS?-wI?s2r^#(9@y6))aJMIeF#?1g()UJ7+fBo^!+AY1c3m6Y{x-LPi
zAFELj>2_VxTe<|aw!}B0J2n9{liw?Hu-i2RR6B!~-GeL6q%WYR$pTPgVIw00g9m@h
zV^E>aqS6EkXvore*BRZuDqj5S5A~WH>;|ulKlp&T*T>*TcPVIk-Jsid2mktOpz^Xr
zMW9#aT5pKN5763)Ue_(4Jno{x16pMpy8*H`b_-|~0eDrqYXtxLi{Pr=H=;Lo2WasQ
zXxhO9B*p>W2H*l-25tg!bcu>Z=e2{+SU_uL8P73Z>U2?Y>5T=gf^g`Ljp-~=@#tpO
zywK_Tpx5<5r;CbDZ|I(G*M!axm5}2uDv*`gE-C>pg8nlwyu1rp=+%tHi`}JjdS#%#
z<X?Xc>`{py-Lar$=^&5xnq2M;G5FE#D$`rK1?<V#4G>QXbh|2G_hE?&4`@SBj0y{?
zFX3JStssJU3GCGv6^QR+RBWI=1bG(h#n>2#FW>aKzIiDMYC^__^cI6wIM!acD~*VM
zP(-*c0oe+gxmf~=e9+<>Z~_1Y3JbVxlM31l;|h-aHIT@EgeCGpYu!Py-yN&c%X7Fp
zb`B&B@UOoNX*BlwaQpx*gaS=>id^mu5%|&Tx&zd_>JF9Zjor}cqXG&zP*_3M;Db^_
zCuo6xh>A&f=oU}{=#AY1N(zvrAu`>r5uhOga0)mGif>pbTt4_1<ZuPX)7`!?poR9m
zEEm8j!J?ZH6!)M|!4vmke;F8FKEx9DL&t}p)csNt6z`=W-L(>T-8k;lUbq{_(aryI
z)mPBs2#;=8aC2UmfBm7(&>h{@$5~WB>HN4W_?UuTnPa^ypkj%kw*-`|=V<=y^xe{3
zE7Mt`V!*%t7XSK-piKrc_j_X`Kr7BAdR@2l)@}f$7SKM98Won_+8v<H6`;Zcl;CSr
zR61)^Y>@IaBpa)Ax~OP?79~Nma4*Y6Q0v`A#R8O>eN;e;mRvyT^8(|ggAZ63Pk>_7
zMa83=5tdzhefM<wsDx-<=nZ`W+8Ybb%%FW50WW%gg9=TVURRLASbANzbRGoN7m!UP
zpv@x^pmYVbx!ZLIsQ=L&tH8e=)H~7Wb`9w+Rq2dT5dk%i!OQj|Kp6~_>}phadTlOu
z`l#4+UOe~^w0X*c@gU<RQ0R2m#`Kng${PhxX<DM<&|CVV(?`Xl*LM#zjJw%EtM@?(
z@kM8hN&v|9FweZW^$S$aN_2C)Wcu>|KWH&y>6~u)&e$FN>pyq1LreAEU`A-ceh?Je
zzFT^IxAfY40Oej#30k@X+^YetngZ|dis&p+0j&jXv2V!$MF40e8F;PQ-&D{hlO5fm
zGe8<Z9fA@S3I6rBdP6})7DsnzM6b*ZP!-Vas&Sk}1*9LQ7ZR^q_}3ro<v9def%alU
zDtJE~B-4W@V0{%p-NO<Uj@}T9AK-)%q5?`NkaCcxxAp?a^&y~*5TL?d0F(@TzzgGK
zKrxOIF9w|@Dk}WzFMtBSL<O`RNTFBeV&}Ea7!`|d-xyGVU!&sC9UH=U3|s)#CNN%t
z26tx+s0P>r%KE*bZ#qL%d^%m<bk?YVR;z{d#)5W5fXn?CaX&%HC8F2&MR)0r<E|^f
z)vD{3<F0E!tmCdHKotM_W4)y-j=P=#_mX*3I$d9YDoS{V543$UMn&MoMMFl0oA0_^
zeeSxR0QKos+!cT{@LP8=fCf9ZfE)BaD4la~`m5d1>-z+^?Z>-oBM`RtiX88BeS+?Q
z7a<VKV*}upgLf3(m7Z5BStWiPd=SWSXUG^ptVB2W%Z1<n|G(>cq1!c}yHw)lfg309
zGTixj=itp>H&5RDb?@Z8pLZp?`Ce8-Rr&hdJaCus=E)nUZhX9P5Tpcz!OA3Gnu8j`
z(D5|Lz)!c^pU&1h|Nj54wS_dGZocad1&{wgmZ?`Um8cwdh4huCg4BT*kh67*f!3~r
zn^F+%-C#pNO^|Ef{{QcGJpgGzI&``ousqo5d!(eK+m#1&MuD#ccoabZyi_+7w7-y}
z+ZR;!uz-ppP$CRH(CMS1(CZ6Yswe<T_#r9=y`g(RxdXKG%SS~Aw22GS`T!L{Dxgg|
z;F1bd1ekQY#&o)<SiIm-0gYYkX+2Oc2OfGV;r;J=06c8<(irSSP)61Su}U+Jvq3t8
z4Xp=C6uN7Dx?=;5vx8F9ad%K=WI&1)P!Rwgm-+b~<j)YKM8d#u+yQjx3&U{-(6Jm0
zFVFu5O(a6wlgC+9I_x3i$8SK196AyK9zWi2mVx1=AZVPqL=ARcMYn58_g>KWlcfcJ
z@3gld%fN$6-5_RY#&M<>pyA!xxBvfx_Yc3+0g1bMbe`)L=$6pD#=rhEbi}Kd1=Po9
zusmGL)Ooo1H)D-D<F{T%Hp^q3;Nh)WwodTY-)697jQqXtK#LIXy@8th`Vus~fEuwU
zphkAvb&F~K;9q};@c_bDp5}vWoxLCzd%oTYcGK&(NbPCM6SX;@A)z04Sq_7T7E5)j
zw7bEBgrK2u{ub^xAU}Hi2aPy&bG-cX8n#joa^43l6|%J+C>4b4tmt-N0j0Q0pp}cU
z9?i^5ua6-1D|Neybh~u?0V&uBQsC<GpW*cqgghku*JePHJ*vx;s}!Lw0}Xldw*<iq
zfTSPi*Z==dfVs!*PwRnF0jPsOQz$JeAk`4}oJZJ)<Q`^_0<e45-@WnD{Pq9;FvCFB
zm2yGCV;*Rwq^n0W1JlbsFca#ZmzA#|eVa+IKx_J6{r|rUlzLxYc?mM71<c;^^8bJI
z@sd!9Zm!moou~LaW-u@?H2-AmJi*@snw+q7oda4YnsJ;Fv?2ZFmlvQ3O~%d>HA$AP
zGiv#|T{Dh@ro{ihy!8SULsME0)bWA#Y?`-zD-pKzol?u!4N8xn{{R2~ayv*#tP98o
zb)wz10^R1V-}qY=zWD#&@&bSFOpvT^#&O0EAhq2uVDlH#!6nJdVo;+9G_VSu56OA)
zANjn4<E|6HUUPT>nJ;kl3wCk?PZ)T(y9P#uc|y}EDBB|N2YZkvP%?ywMM97BdSDMK
zXdx#jK++d%eqj%IqnApzuMYUAg6>j|?pU7gT7k~iDWKsR#?ICWAeyPOwFgAIdUS)<
zID!{)cABVw`nMaxTQWLZJ3x(8=t9XC^0&dWDJ>g)85j(|fqmP#wFb0ds5J&eLgu12
zhJ$AuP}WwycybG(^|cQJgW+w6*0~KJO|2y$61<L-1*_JTP_5=5t^YgsR{Z<_e?KTZ
zz|AKSNYT~J20GNFhtr3FA)wpWr`t6EIu0(`&Cv~ZUGq=yxd#XMw|(MoUFroY0Yi?1
z#)1BK$A*Ann!h#Ei-7^OfqXe=TVkmQcx7pyy%z&R^Ini6nfY5jcrq|F|7YfJS?UR@
z$z?zjVNBify|qg~K?ZWvaTb+L;Vl`OHyk=$m%LcI2|VEf3d_4wZ~XoL|BmeiNbrCs
zWbV#=@b~}!7xfTTo5MlVG8g_r4uk+1_9Ar?c$YC~%(q5`rMnjtd3SojN?263z}0ty
zw%m(=bo4s^2Mv?>g4WFQ^oktoEx85Sug(G5=U$>B@ZygZBSZI8aNN6sHmb1Poht!~
zVu)!7b3iR6P}i;cKmYn)y&^xlU3GeWZh?ANpoMolFSb}QGTdziIpj_+$bh@8Am4${
z5SR-({$n10bF~Kp!(A{3q7b44RHuVZDFCl-0ME@ddxI5%1t6xhf=q-QQZSFdSrsIG
z<K~NdA7Likohty^ANLS+GC}iychK<wH(zwS%G~?dT`O{TE(0h<OLUv}Ix}h>>ue1H
zrLV0!{{H{Z-|-AI+BrAk&;S43Q$b0)^I-Q@5PkDq_g+w-@UK4w2_4Oko%gz9Ee<|o
z?(B{E^Z$S6L6B6a3FGI^xj%mY|F8M8^LRHnFEM`VoC;b!!N2|oL_qU+x2pl;vCgd@
ze*gd94Ys~JR-=0>$X3P^cU=zufOrjj{sOp>)(Xl)pdy~n9h3k&KUCOt$0~p}ESUW6
zl{wW=#@^6S%--Npq25r&-_TIZ-{4Up(@-Yf&`>Pi;87viP$u8dd`zLCSiYh8u!2YB
zx$ag_CTTrT5&<f&1-vQ(x?4fM=q`2Xl{waVt@B3b+yYRwe);?5=Eux_om>C>{{Nr9
zGs2C50W=uce1OBNLIzacfOriB{0$8S;tdT2-~rd>S1gq;p#BO~=$;GmCgYFp63AF;
zXE956sYWMrcPl7RAej?9GX&ZN42lZI6Wt-l{&c$>`_a7>6q226onb7^$2hvdWep?5
zol`*xy%Q|o4KAsg!NzegUS~Ym+zPUh<9{nCK>vfo_kS-qdOQ0-$>K(LtxUH(xQ??t
z4XPcUGJ)pvQb4H!Tv~z3@^DvB#uC{D$}^o)b3k%pol_G)N#)+ncbdoU&iw!y(EWVy
zF^lGB#@nEiS~5TziJj$|56gD827naK-2zTivEX5Mkb@y<sCzDmeeeMbXw>{M^Y<Iy
z?|;AD*}4RjiuNjiOr0z7_y2#(UXY9UTMoK__7{WlO!r)nNcUEd_U6}2o%i|I|LdH)
z;qU+d-CIF2y)t&)wF-A#?*F*?5VpguX&npbJQ%}Eoj&(}^!okp47vZOv)2ct2OMrU
z-*rQHwHo~EPjt7Y{QLhOln9R_C&K%no&r1(N`k5mNRaFWDes&LiZ;#b6%kOMJ!0-|
z1=~=n!N2}+FVDH|QUy?VzC`#(uZ!RhaB?kRZ}5jE*8=_qe`s<o5O45DB-a9Pa`Hz?
zu94lfBHiL%6@idk3AM)8g@66A&TG9g2Rko<S4jGG-r(<aW=2Y@3b6Tgoaq&uqM!zX
zz18ij06Jx()WGl(<B#r`gMYeR4*uu{M@py5xgVgZt(bFvx=S?-Z+C{A_yaoIA?Cyn
zXcU9}51L7+wO~Ba9Ro?voiXSCbh@1X(Y+NEI-TG+>*lgNSCa}!P2J!iHoV<A7nGD*
z50r{nZUv>h&aI$ySI5@b3*!Cn1tqHrE^q>Vc?}ekU`Ih}yH1X7v7qi)A873+-FO64
z(}QQ0?%wD;53X37-!nl<J^qg6plR2WhTjZtclO%+{r}(afZ?Uitrma(|G)XJbFK*}
zF}50j$f+TJ!0SW0=Yk}mxqB-}it$EwtOi=C1v+dJ;u}z@1)9ch{nq)R!X31$VJgVf
zUXzR6y&#i%Wln?B19`=lXSc6Nx1d*rV|Oda^_>^HOI^Sz09=ZJlfezpNO}Q#1GvbN
z1kaCPEw8qMoCWn4sMG@am+=GWWC<Tg!3D}f_gK1pH9A@Db-S7zX91ba&>3=rr5hYz
z5WOHR7KqdWGNqH{TxZNV7Dq^p!Z;P=Qb?iI*$a|~<Qm3SP;fAU!~8!u%ppaWKYu5v
z0=jzx6u-5w){OW|@qdtodD{O$?O101UU4vksfHJn#J!piaJ*#w|NlRzUg&k^==}8h
z1$ci^H#qnqZtad$04*KYXec=hn#cj=Vu)85KQxpa`rq&pRM3DH{~iAWwPOvKfo#XD
zKd5#<njp}81Szjd6~HYH4aOS{CC5M(fl@y-pG*Z6ApGl(GhS#YIrzWfr4VRyZ!4&(
zhZc6=LaG~_A-y~Ab<SM_DpJ>f=$s2Oq*ungyH*3OzytNk3{Qe$>;4Z=X$J}3?x`T1
z-Fv~MCAgFWjS7Q{QgBB9&UoRj%fTPLG8Z9bV7ITr-PjqRL3Nvtpjm=m-x;8R;$9bv
zADuiZy}lDb>jHXRJ3u2|pfSf6#k!0Ph9@DK4KFbs1NZYk{OAqs==AyUr@IxDb-^Rc
z;4BRqtho{1k^w1CKs)U~yo1k}H4k?7_JEE+tFimh8zc9l(|1p=>mHDOpvivFfEs9g
zibdr`a|{zhZ)it1I7GTzLH>dp3T~>v3<X&VYJ0e9^z!_Gq`Tf4z8|233>rhMoxs2T
zFnGjW=3uXn+>h?9VC!QKbjql7mVyQ;SYC+7FfqWI4E!yJLGw&5DjXmech3bS&hDvD
z>jl7KzAliu8e}SHEYIX7#Fd~07m&^L5}<m4<zTljXzwFSCy&aDEzwL2FEc^&O0A%X
z>O7=*3RXrP0o6WxL22>ebLQ{&JNIV%0WJ300zSXavKN$W!Oi^=@4MiW<)DchT+4QE
z1xYu*U;<ev!`AJpaM$Gqa`hNv3u@>q7=AN62{xp&<i?LqpBsPfLK7iKJ0#G$!8Un=
zLhBxA5LlzLwF9(7)#V_PdF}sAzz2n?cFqOq^nw-Bp`bpWt4McgNVh<56=SE}%W%-K
z3gE^`XKMjypIR%Z(C>yeKuUSKdqJX*B7aAET3XuowO|EcWe0!AAN<9nd8pTB661gC
zy&wtxmK(;Ph61RW4T+ELUQmnm4(|g{I&;+kwNJr~h2E*4HC&*R0eVeNK$@g?V>duj
zBLDis-LWbMA2RpW7=8fFcYvyH@Hzp|P<k)RG0^N~ZwccE&?Yexm0sTl=$L!&R?zB(
zUijQ7Xh60TvcFm7MfzC=hMO<$f_ExHrcZAky!jA}Pu_h3Zl#NW9Dn2H>AR1?+<!*k
zM*FEdy&(VGb!`Cm9HvhA{r~^G?p_epJ$DMIN!onYh=Jke$-8sGVn{NbzB6vVyLtNV
z>-!Jx-s+5<GmpP@rV(h^Gma0ep%v6cxcLHP?mYfxCq4#-yEpH$z6fv0xZ4Wqblo_4
z@6^pxAnBVY?}pBp$KNK($G~vo<K0$J_W`c)Cof3j&C_>!L7MKJzIpiOLy#YCo`z_;
zz{|h@K7`;A*k8Lq%5U8`dGl0vFDRXN?*+y3y^}Xjc7xNs=1<SNp$#`rLel<S@b*>y
zjslP_u!HaPLK=dg#C7u!B=WjL6>c5|m5mXgS^RfQ-L(qfRS2LQbMx@cQ;hfS_<Z`&
zc?&c%)_LvbL&h6758OO>H+06$(|3H1|G0Uk^FAbn^RNHF_`SPS<Bre2A2(0m1uxCH
zdFI~Zo2PC*gv1O;6tr$^-rcDUzyJR)=DK?ms_ekc7oc+%=JB`f;$dL8`R?YayN^I2
zKaam_Iu8Q_e@h1sC`Rwzy4woU2{}dQ-Y1YNPD0nBfjtQE(#^x&;QVv%6xcI|7;oI+
zISxA45z(-1HURDV12;WA`8!`h8urjU0}6=lRuFmfAhbdPcWFJk_kslZ*PrN~3t=1r
zrSH%gj6b_;H5hO7#!k57bMD8@lb~?vt?jt?@^0*mJ3Qw=hduOy4@Bz}QR&?Z+LjJF
z@&Po(0Gj^0I~NotFACKe8M?QE%<TqOYY-Q7f=eLHLtdRzJ3w_;hYe^j7F=w0e(L-V
z3Hi>CpxS6IXs88LR6{C@sVDyY|F3zl^HXQ<0Z@k&+?(WIf4Ot-5l~m*BRFVIbhm;U
zhn=50r|tlWe$xEV*}CP=|NjRcF@yRDQ#XLMf;$(dI(zp(WEd}WPUZOX|3BjoNFmYL
z3aZ&5Vc)$MR8<{($jra~21MlGbLP&ycR)Hp>+V*74BQGLJLfI{v0W89_r3rz=7Q|%
z+<OJ&><^4LI$L=_qFX_tpy7hO4?q$p7(aBjvVbI7LEbnBGLiwr1&5p^IJEftKXHN%
zeggTU^&~&|6u-N!6S^V#=7N-iPA~#jbBu?(w}QOVd8-?2AK0-MKtXYy@!0q45Fa!@
zXYAZt0_xD7Klp&zzq9oWNWq8By#jwg-P%IXrpSXg4}wlJy2E$#$j#Gt{C?a!c=HH2
z>)$+e#}AYy_->xM8~5YhOOUF&ayJj%;l6q5j`xpyhd`MOl7?@dy2E|*<Q?xHH&5M-
z{&DZ&UFq&tkXyQYK^FCjNOaEy+1z@vm&KUB<0A(H!%djA9AIlbP^|R;S<7+r)ZK_5
zH;>#rb?@QL!#7XfmAHBM4%f}ocf5YwI}FkUwff{8uOBy0-{HD>@@^DJ`N?~aK?k1P
zm4euL^Kkc8kW(0MFn+qjar4w250J}`+&l%!f~W6z{J44Q4#&;YAge$Y9Rgc)=nmJ-
zQy_~_{m69_Y}u*1Q6N7`b?*fk+`Sd#HO60zADUk>@pmeN))RtGC+Y=_;z6==>&f2Y
z|NJdKK^1zaNH>=!f5&}x(CJhYy1~PYy~Y1Q@fvHxzy4VFUQl}OWjWj{^84mN&zlGD
zaNRrva^t;&;7|yiaq}eDbsYCz-8^|$>aGNTM<;0GBUr5$2UxKO2eN7}u(u)Vqd><k
z@pt$kbO=Cn2%zW?00oo)*oG*9yAcBX9l~H8(6r(u0g{)1CV|iypum#2dGd~j#J!hy
zqa>OSDcp^aXg;9e$=?ZD76dv>rh6(V+4uU+fHhM<m2~%BP=O9^jPtL*cbDZ5sEx^T
zi19aQlCxLjmf?TU1Y57~1aNawh2w54s5Q#-;-3=e1XqpYETHwz44pMMSs<o1A7HWu
zH*)LPAT83)gWBNEBY#H__&Bf$-L(qcb3vs6D8Rve-(Hsc-E%>?oPYf_#v9#pLD{&o
z^#-WhCvv^>Jman2h##FNI;VoN(f13@uRvSS{X6%HfOAkWD^gMhr5SGIFaf0(?t3rq
zN;MyX9KG$y-(kVZz|eVP0zCbLG;ts_odl;*u6vI_v2s@moaZD!5r4;v0~EkW5qs*6
z2S~_^<K9ECvM6xe-;Lk^<;y!>&?tnYU~sDO010^sK+TQ<Mf}OT5dsj?q0xtw$Y7BS
zN@hrL+WeA*zta|;%0WdmsH}p8FSx=1^-f$ny61wToPYf_a1euv%3hJ{-QePo@dhYV
zTc3c6qZ5q3V4>T29v;3D;P3_A7J(8}1j83J{4tEex3vP)-#x(J0@|Gl8nl$~=I^kD
zre*NRV0SO5zP#(&0c!lXy7Y>i=;is)d9QP7#qa<BzhCRT)%=XP^SoE*R2fih(+U#h
z@0<hLS_vzH`N72tJfWPr!+-PS9gcf1@5+Ntke6saz~K#9h~D`NB`$_mvVDz|Z2z}{
zk}agS)(vS9w1PqrQfqc^1(i*Vt)OC}*XB_7Tu`OY*b1)nTS1j@=U!0F+uaLlw=m8H
zH6eOsJ}_<trFO<%Q1Si07gU8ew}P4gprz4&{{IIps|Hb>;A$K)#__)w+%)R^@%{h*
zmojfbhuqw~@iHE?_3#^i3uw@``5!ZXZ!oBR`;V!{@a949n+NakgNlYbNCm;kJCGOz
zWmI^Sy_Ee2I@h@K^38*w*zBzYmkxJ05yd>H-aC1R^WMX|l6OIo{CWXsU>iE04Jxu<
z*8PP{MS^??+PTtO2pR|Z0d@(ZX5vN|38|U5!Sx2b(0geOPI#cae)C}G&+fUPk`!E#
zfGT5fvjN!zP$L3VNrQY7{iE~n-H0FE;KKKH7uZpq&@<1r|AOu&s{u1eb(9;p9||hw
zL2YHYlTLOXzT*jM6M&luhi`(L38(IOf?6aVKkmJ}8~LO2C&EcRU?(a3ghrh>jKK%)
z(Ss_t-h%%xK}Ugu6+Q>;d<HkjK%3!zeEa|ZWeuoVJQbX_z)gS9IqF+M0nT{2doL*c
zfI9BIA?81NO>W$cozd$GUNO{LI|01Gp##)C1&zai25DYAmj;i;xGKN~>3nXmyj=Sg
z<hYklKL7uJ_vYQ3;2nH-Z`{50G7Geo55C_WBvlAf13CZ>(qnaPxOwvB0<hRi$4?+r
z?%sN70cN~p0#i3%ynONzB=K@5m;xQk3F_E6Kx$$B7AXl(-yGECg!awB;~96sT^>;1
zF9mee;`-~590wh-0uOqD4%1S&<8$EyWQYgUFaqbwyK@sj!?NIUpYC4J@C&4(hjdTx
zwt{4Do&=9m-0?a1q1#pA&QDM`86*y|_KwemACOToaNh&uf_onse}QHYpw7BGR{@lF
zPC~2)byp##^RGX~cmp(AcIV{HQ#U@|om&7JFFtk0=lYL(pFoyG`~}UQf%>1_r5X_1
zZk~h;Xmrm7h0C3qV;{P~!yb^?3=jVGA0TE!R71#{XBf|Q`)b_r`ThekTnG_{kT=hO
zhS$N}XV3_=!X2N3KW?6e7<z~2^UYI`umla^PX$?d<MYi^j6Wd#ZT|Jw?tShpJ;C_v
zF3UxTy*JO^@j1+K^X!e2H_zYkISfkqJcn<d>TR9z@BjZB-*29}@%`rcdw*}9yYcAe
znY(i{Kt4Wur{?01Uf&Cl(7xLW^7hS>Hy%Uq-Kn6kh6TsnR!|__=>>=Ax#KJ<AHrKQ
zpxl$7wQqNNLE1sXiJ*nzpm8)%+wb19n+I;3zIW{AsT(J6p1g7T=DB+hZ=SyQ6wE(!
zXDQf<)Ax?tJauO&NdL{#cVkc7J9OvdonEjLPu`8aaCa(*30h{J&&S9B2?0oAISyG+
z28k2ck}hylRP#pj3(zD1xW~%I!NAZx7gQH?gIkJ_!OVk?L3=*H{Wq4s|Nno#{ry(w
z+z+6J%+xm^vh@d;`~xO=z=>4^Omcuy2e_vW8NB1~4*}f=0G{N~hV=hBK<8fE1&2MP
zLEAkQWHO|)+Fh%0@BuTVN5OcA@mDuEFY&Lx2^pc|Uw^)PFUSRqKe}rbKv52Ic`wh2
zUY1+n&fynOF$~so@Hz8cM$l#_M~*wbH*TK1<M`v=!5g6Ap1Y1eZalmj`Qzq+JH8k0
zXx^2)<9p+-BgegmcOy9%f8J#PX>x#Sa)4-pY^ZYp>5G8s)3_@E(&qru7s1gz6=XBx
z1;5HJQ278V6uZGo96&4Pr@DaZnA^Pt|M^=$$3b+*iga81LprVe9Wuh8;scZvL9@!B
z>bCP@_f!xK9xi||uJMD8X1D2;xzH=}qnG8xT_%t#86ZAmhIx$n#>2bP5N~PSl>#}B
z;oif$690QaML&PXY9R)OyG|S+oiP77bHMaEbKH1%H=3jQumHq>Ebv*ihXg>TKt0)f
zKmcM?Wy9SYkVIp6sk;^AJ4p0Eax!?FQG@XWMC>lhVMsLJd<dEgIB}N+G>Qh9z83~L
z2vp)jBOhWEIFUk(hfXg1fb^m6x*X&{n01)(2T0)NL(n+hJpShWpj!%V+;yFC^We<`
z(9ylqkl~woHxKbQ&w$8-R~bOoO1Aa#gU79I+<bTQ#m$4D^?;xb^GRsd0gb_dA`+T;
zK>d#!XKtQsKEQnAG^FeYcia!&Japsqy@Q~e9&Y}+^XuNxI|uK5xq15L1JHmPC|YkG
zzIXcOY0x;}-Ovl5QHLAwp4(yVxu5|V{*E7@!^6OXK;7VBFG#wFjBkO~rGi6-fBiX7
zxmc^v%W|B#6_hbMTNyy}2`tyUr-E{1_g+wrWIW#OssPFp?mrk$b+&4NvIIn(*N^5G
z9G$Hyplo{syrU8_&fR&#qq9{3+!=`gkDzwX1)1A<@s2;JP2de8oFF+NbjDpLP&SBy
zW`q16cjJG6(ugx?xFGsR=UkBK-E%>vb?yb(-Fln9<2Nq@L-$k=uN!PTO7dldB|*j;
z5ARAsQXg{iMN6`d@FeR9O0tn0%?I%&+2+?wmHnXf3W`fe@uqpWb8f)j|Nom0Gx2vM
zgE|_};s{ilz#;(51`o4iM1Tf30w5)x04xH)Mc-afVF-!<4MYSOfFl5`4jKVE=n>G}
z3UZDEf9HPCNUHmf&Wqi1K^j0=)fp7LH&5OnIs!nZcZ2=cxff)&Gk-@S4=DUWobFbT
z^gx6^yqD((+F2SZ(k<l;Id}?I7eHp4z_HW|X72@+Ea1QgalxtoM>nYVccItjN9R-<
z(C`J%iOw6Hy$*l=|3^#Ddo4hL+-d?&)qdOz3=luFLyAn)G}nBP1D@=f4}psQyX^NK
zg1d&@b3rC_LQDf&*?JpdAAiS3&?N?7ySu?M-K`)yA@)FvW>kCNmVh!0xM-$Q+6K?0
z8eTFy*<Gt)cpKD72G2e*emKqoUWL;ca-5~p=Qu}a%yFLXt)O82-x~s|upw1)rzhx~
zVDO+4q|FAI(`$ag3?7F*2AS}J%(r#>Dli`I6*+$J88c{dw%0}MM{n&6&_!?}H+yS4
zz++jV6F{Ttkbx}Fk}-i7h63PLd#%E87SMtdhEAXREZx1J(QR$;)Ej@tEl@Ueod7BK
zA*DQM_zJve22`VjYA}9hyxuDVU3mqm5x_MhXh98VYF>fyL$AmW*n~$XXxCI{s|u(=
z0xnp=tr;1Rr%xa!l@lJFtuEk1!jC*s%yknqQtX8?Wa|Yg2f1#7hejbI#ZttM6!(HG
z?gqQ2*F><p7i43vjRa^=sULZyn7{xvxWa*q6wBQ_e24$$={x@DBgOupkz)RvC-251
zj}*&8EWddebXWn%F^tFV@PS9a?;Qe}3aa=(BjYzu-Ql}=`fl70@Q^fUq!=_B4(faR
zgT|CWokehC=q6+Y#UC^p9uF$|p%x&FM;$3{1&<W(1$8u95A>G*=WqE98Yy-a=>`q<
z)IvszJAXjN8$b~cZ2=wZuC)P;uJIi2Ww{O+8{oto8{h<w?tpsJlAy6-Rq!}2XdJ;4
zG9rLFR_uv1RvZZ#D}KcW8sh}(01X+Qy5oT|R_qBHRrG+26-PqGir0g6fV=o7?|5R4
z6?;Ml8(-dylxRK(9V_-m8Y>3Ra6o1TA=$0lR|8bNPX&dM;eXIDEvO2*%W|-n<skq1
zd!R1E-Pjq7mwQESf^(Vg4A6)%WWfUHrXA2}mnV4`8M;F?j<ehXEf(&qxy8~A9vg<N
zvd}z_7$XKxp&xw63<_)T^dzMH56WtwJxbR=qw_2ry&{)8TQxvcT*Qw~@F5J$j2EGe
zh94fCtsbB<IPeF5Cnsrx#Qyvp=Rh|=+_(uFpc{H)#Gn&T;bX**<uKsMJxGXa9`;5A
zHaM<P0~-{#py&pz&AZmia=aH5*w;H-bwGh#@uL&mK0^dHsD<VO3+z8kpwtRYd!T^h
zM+~l?0?iWL;fIaLgT~6d`8y7RmO=g)!hwxEve`WqJYal@zvavg&~ko}ZVpfWjsrJ9
zn~WxO?*%m$Aj6)Zv^^J;oj^6Bs|)}7`@JGJdSyOzp8I|cG-7<e^FrrV@LJe&ew|wb
zz_kD;X`{xT{2k{&$L|j1QDfxEj+d3!L1SHaZ@etH{{MgTUQp;T@V9`@C4q35`Frnz
z#%jSb@Bv98$7>gZ#+(jze!O|`4tK8;q-^HutwtH=1<ky2fk#)R?@D2g*Zv2!+xLQ2
z=P>ZMfNqay26LGCdtZSDZowR|vp|J8WLl9QdFU0AT|iX@c<>gKKVE`{AiL*+a^B5@
zou|P0>Qv`_&{XfqJD#8>0BC9!JOc>s3VDL+yT~7RK_j=Xry=&ofQLUnfzHqay8;w!
za1JQgKx4RI8L<2O;nSW32bULv#&P$8ieV)8{f2bTP~8Xaufg0G|D*FbhWlDz!?)Ei
zMiF=%7nDsv<G3j>VMv=06wsh`o>8FT`+MI&Y2#%tXpb*=ffPvQ7wEXP`Cq^?;-Fon
zaG5U9*<*T;vDMm7p!M)j(^_XiM^aycPV5H-+ua*4qd)!se-nJU=RE$VYET~mGAspd
z$wI~w5aSErVPx<K=v|hBcjuk}9hV3m9RRg$`PU!6JNE#n;RhZ{V7viR1D1spy2n5V
zsT>3i9^7pO>AZOawDbgo!Q%pD2H*ugH&1~Vh(l)JAqwxdf=mUC5rVaygxGTPG*tY>
z&69Vwf@Gk36%O7wdlNLae&hVjGxr|de0THQy(c%%LNy(_`S9l1yKnD5xO-<_nK~p4
zKsOzN^n=z@fo(c<@Au79Hy_+QdGplE*!Q5h4$!&<kV|hqgt(RC?v0xVZhXG^5aPm{
zhar;CfCSy92r>|?05s-Ota$h4ozr(tfi6qAbNVJ|9l<Gxo56Pcd<Tlg*LRUy;RJ#n
z<W5jfLdJo>K@YMK(mux%^dS3gp1yhNC8#XFd-G*7$m*LfZ6MSO@I=we>7X5f;J5~z
zAzb{w6Fd&`vH>Iv?l(Xuv%pF~4bJr^x=TSD^Ih)!=&rf<r_=RBXYHA8mV4bH_gFez
zFLZ`p>8`oQ)9rE(bhaB0Xe1UoT-#ZD2jb*T*BiYo=XyhafDVsf>8-s0872nJK^XoA
zwZUGn{sdjCX$Tu8f({QIXSoM%a{1h2=?uBY(OGkk=OqhhmmFj$96U}98Rqin2G#ke
zI$K*nNfg|5>)r}t_llf{t<*bq@F6qfDNwVZgz-af)Q?URmF8Chz2IYHz>U9N(3*qZ
zsT!d3kz!OhdiR13UFw|+I$sGiRniN&Llkta1!zrajSA>u8PN86g%@pqKx??}f=@5G
zc@n&jk-sgNn}OlxgNCi3?X?XJTkS!siyOB3gQ&Y;L%YGt3n6Vp@bnF6+#NKz0G`R{
zmAL>}t90-=bFYZJ<_CvP*CV~IM|!<}fUeVf1>OYfqr%hM3%ZyTx=UW57kttZ$UEQ_
zg)S-*FFFmG7(ffjw}Ofz_?lO6{|&b06+BG>8Z|rkjJa3jAY`<g@e^o$YcKd7u+FIs
zpgQ6eN9WWUPzZy!GeFmKNoZc^28(vKR{Z_{-=WiWO|R=3&@>bHTqw|%UeGSx7mOfx
zfVYHLg4cWT_nZf<S^_sFEFoidJ<cEzaK8q0gvuq*Kss!UqcxEOG^h)@y$!Mm40Q1v
zbSejY{!e!-(w2;akjtq$YfgUwC9%^VAbMaEI2WK^ywF*5_=Dm9&YHs@Wi_XNfY_)1
z+zkP3Dgu`V{B6fTovOJYueIK;NCcf@VsinsdI}T}jQ_r0>b&3lh}pl_?+1TpF*|$@
z1?W_z=7SvG75bfrI!`n}4{vHH0&V@_Z)hk2ZT}H(Xeg3zXg;I>+X?iVrSfX`R#5J3
z{Z<kP8q*f`s_=w#XgaS!n_-~s8^_T$Z=7L+TkKUK0b0?HZP7lY42909frsHxR=d_J
zbeF31%A9~qok6k<XsQLWRu$CLj@{53BKZL_-v&D0z8BnY<zIgTymU20MWL7Fes2wU
zwJT@=xQ$A0E$H4(9>{qP0`TRou&Z=bUeqjt<Q&i$L7+kByEo@mvGKQj1>FPa+Hms)
zB%UBkVL^)^K}FFG$QUkY{mI?AFTmB*u@86WdVtn6g0?|{yIyx&L45x82SMY@cjsDw
zHW+~=ASQN$yUn2CZje?7P#fwH=t!@-tswS|bD()B1CW8>JbmZXy)$>g1;x$N_a5DC
z1(|m9?2Xem&)zt9^W2?Ykjk5<@0|w^QA4i`zIp22lba_&H4><@xjPkf&+N^IH_zM!
zpX&t@2TeoWoeJ7A394Z3P6eG(1yXVEAb3L`$W0G#p1OA!#D}IuSr!I{UhrvQz2IAl
zLD{}{F6g>p(9KaXDl9Lozk_lK$TG;Kzo0+^;k&J1<4@jv0IB`Ji)`n90DBP>QV@?r
zi!jgv){~(650u+LtK#k*f_nNiNEEbm`Q{mrQ*VN1*N)t61qZ;xdq==)l+WDpZMb>z
z-Vx~1<%jnU-#m5i^v#o?1+U;udV-+7*2z1)Alq*qx^e2}DM%!NZnXjhJm`+An-A{J
zJpc-VlXvH?03GSn3li-G-+TosczVIIy?a4-5rWPq+`0f1!!arxcjwOd{r~?9<8PpF
z0O<kUpm6hGZ|jbK|Nr0F3o)~kMdik)n+NWKuP(iL=x!@W&&^Z!zTG@>w-sdF%`-Pn
z-#mHa%+2$6!S|xxJazBPy=PD-pSe2~WX!#j&@^%84)_qho2Tv_1jR3Cz3YwBH&5R<
zbMw^QxgaOpI|O3w_zh}}-38y!cy}(yIWPWx0l5-f!<4A7^iEv?jt@|{+yUPk2D;n2
z6=dGsR<Q0fcjun?{r~?BP-ElNonCPCfTHx|y+e2Bf<oZ#T#ykjmVyp{sx^V8^;io?
z2I}@TxZ4WSfAb*7cXvY$e*iUGz@^=(JH6nn6m#$cB;M|v1}*4@i5~xO^CXOY@CSr-
z^TFMi<3B+As`i4a+D>q_)y-jfp1<eNDNxfCv<>s-JJ?>o)&r1jTl}q=r~d!91TUNI
z+zT47d>L>G)J6g|)j+wgw-t0dXzy0YMWUd<xOoz^edNaJP7@VKzJ{i_vv;S0BMUUs
zdloz!1U@+cnpV$1%LH(izIo=}shg*7oPz2+eRnE2%1_<_mlNQ*q|<ljYCuyQ$m)9s
z@6NpeN=gx*L6HPnSP#mVphSAN6(n)<6sV?$q?dV+Bvhnz_txE8AU}ieA%~<L$VI!5
z+e0CV`lTAE)PmlW3i9mTR<O;dK=-8H`wCwpe(J_qP_RSg&fPqF@7%p3_uhaK6DV1M
zXi!3Yc^x#00l9{0D(L3N-o2nwrPBs<D-Fww8K02d4+&3@%jXpd--XW8-36BfFF%4d
zXn@ae?Ck}eFW3tfzS{~i^XAD;8BnGH-@ShC)7`n?WC_ljFU-I;fTH4VE6DsCpCAT8
zuYo;q^Asp@?(~ARfC{6VCqWAzZa#PkTHD?Warho}P+RZrjhEghAUn0pKxd4D4&hb?
zGmv*tfsSrN+NlLPV{IDvAaZ8@-Wo82sYV1;3wk#n;DFY|FOxw7^1YyTOy}>0!v77O
z9~;U*+p9n#@bfGX?IZAz2YBER)=KL3b%8Y5_}3rmwK)hG4*`wJgEq@Rnn|F$!IAgr
z^g=F1_fZjf!KA^&@Y3cxcr!X=FA&&p$Vy&>6*dSfAT3eQ;U^%=K$F&R%fL;(7!{FT
zWXoR6S7%~)dHNfY72ry~8@!7PW(EKH)7`Ney)37DL)f7En?Oyp-l?G0ZfA&!2><%y
zpwqy>EwWx0z8}5dcCjXSAxdxTicT37$eIXHmIPmkSG(ecD#&JM(2^wRpdF-Fco=Nc
zVbG$26wq#8j~~r1V0R*E{^|@}(YqJa+U^Zq0jkKlT_L;dAq`saeN3P`p+!1tR3u&;
zR%2p#c^<MR=`grweD}u7W4A$zlU_QU{r~^&?U#Sg{QrOV&dcX#{{O!X-cbx`I6>xp
zp=}@V)=$tFVW|Qnpl^T{{e)`Vbpfrg0lE6-0q{b8kb6OUKkl8n>vHJB%>y?dLbk@t
zD>J@(>)y{ht)TtPkOJ*4m<>JM`Q{7oG0q?CZyvl0zL)vsL6Ea<+`R$Wn*-W+kF5DM
zC>{O&|KIRZXUM@HVDgXQrPlwQQ(Hi5oLc{ZTAz^qI%F{kxQ_<jp>+t<SyuopEP`~|
zK&t^hK&E+a9=IDigYm=710dO(r=SH2s9Ha8^E9ZP1uDrvyD;Vz3*5a0;()W}ft#mp
zp1k=2<kNZlZ3&<uf6$(w$B^5ZyR6tjJ5w}46AK{!{JIBPA_ZC^4C&C{JPBE91aS>y
z>kT+8LGzE`MMw8eftM=W=>@Iq0u>41W=#<{c$;l!E6B&K|4aG0_d;0wEq<UAT)`7+
zkg81c17ya`qqB7dc&&}!@&ErJJ*dtPou9k+f^rFHDb7b{{`H6W*Prj4I|npX9Bb2E
ztI^py1H=aR4tqsTcYf@gIt3&E?vwC?c5{Q4U}=8poZ0}I=lldZRjjuKRJ6*R2i<Z%
zw+Eyev{c|KsHp0kS_0zF%>Zo-Io`Rq2Bhgb;|<0WotGiK($3ZbkP7g$3nWkuJ_IcS
z>g??RZS6P=T3$0Z1*8Pr8v|`hnE=@~;@vqn0c2cj1(?hMs{yO@Rp^y5=mr~n*X8Dq
z-VpX5y(~9Dd9l}b255sNc=7@?PY9X60A)9x7pz}EyV^l}EPZaUbo;^<`gONLyZ~}K
z;|EY-(hK&wiwaL~i2M)G#gM*7K=)b6sPx9d=OIA``>24<Y7zl$Z+oGk%*4>$3l5yQ
zpy29u)nNP#8Wnco2VLXJ(hWAW+ZA*|6Ax&9#rHt3?*Y(~eP7VFQ1EOfxVIXjBJtw3
z5@_!vXl4u41N;k4{ovGaphO(Jrv)5`p$fe`26uc;{kR)*>c?I1-b2GnpiML2TyvM@
z26QZkzZrB_efLz5vkVV3ALjsF(<Ni%2HOGP0@?upiuLZfppa*TrVvo5cTWXH660KO
z5`mPX;Q1ZKR#0elw}Rs2e=8_;F-`^foe`W={)7F>I2RPIjNn*e1jq3IR#1HY?**sY
zPEd3C<>VuvHWJ8yZt&K2$i7C)5Bxm}$N&F-*|Q&XOccC6>ILaXt1LoAz>9foK)b9$
zLD3`8%W@F3_tiy(rMng6aB#4KZmnxkWMX)^33Mz2q?HCPMId=e^SpoO-X-AN!~k;A
zTu_q?vZ%wmbFRnV|Np_$yc0nEen{T2`3g$^-Ju$wqt#>#dU+1rb-DGU*M<K_ugERX
z*aIjjhIT+>I7Ed9mK;GRYFB*(4fTM}r-SbZx84e}hQBADiGiWljj^-U0c;s4VtW1l
zb@na*xo-WzUKzH|xpP1cdd%E;vvckYkg8blnRTsG{{H{ZcoTF(sE-N{<6+3q2{;kg
z9soH>^8+Xa+o&`jVCoH>&<Q&93)DISr(jU!10IHoQ($7~-V08A|M^>cLASKk{fBgS
z!MmRC_lg+zvRu5&auKAwdn(8QjHf`xBl{TUThQcT&j)bE3svZD1v&gU%OOzEb^06v
zMG)j<8c1WH7Zkp*IvTu+wKqf%G+qYEF`z^JLR2Imk<uF@2|B=$Me|s%>k-f}iyvdB
z?-5Y6gPIw$<w2u88r`j+FzYPc0~vPgEd}4y3LczuQ2}o|hV<GcdRcCE&js1t8^Vm-
z90;8NYYVU(?Db*((Hpx5w8Pm)h2@0>$O`DNOsV+)UQpWU-U^B`{?1!}|Nnov^B__a
z1niJ*@ahwo_qt<Uz{M@7i3MtHn4AXfY%WpZf$nzhwE^w0W&tf$<^df-De~f|923Lq
zsqoAIF6O&qL6`J`{Q}7s{OkX9`-=36{O+v-?f>Bc867&I6MP4sNH5D_a3Sg10lLTg
zMTr~}!%HPlet;xtKgRA@jm}=MC)OYA6=Cb;x!fyqxHm=|9M;|7Is#O@f=1k8CxFhF
z)coYt8G4{M^gySGN_Qye4n5F-AP0CwwJ6AVYfvNq7N|q;^6?Ky2j}JSAE@V-fn@LA
zdU^N<Xp44<8iV2gmm3fL|L+MobL3_F?*IQGdzvA$&CveRie3NzgN|umxAXu1=HJZx
zz0<)A<R)_K&j0^GE#S^i-L0Srr{)73uOD@OgESAiOF^gMF#doZFaWNfPe9Hv5ZnoF
zQvKNurmlgg8!xv&sFv;EYkIeWHb|F>bk~BfSv~>c#d?4SiaJYFKx4oHpd*<;o7q9N
z1MK+87oWr!7+y+lLzoaM((MY0K_0LPzMw0MLDwuJOaL7k>!SiXiV1R2^9GO!=eB~T
zCs9vfeCf6aZ0yc(@JV{LM><`PfO`F)^a4IfFRhM&;icl9|Nkd+gOA5*Jy6Qm9UF3-
z8MKl7rO(#?|G~`;*O23&HG2PFT7fMQ0o~NnIdu=H@agyns)=GHzz19PT?2Dux}_~I
zcg_Xf@Kn$0VR;yIC|byI2JoFLKem9JsbVPr75wr4|Nobd!Gbz)LGXPo=Rkt74j_Z;
z_#g{h;kWdH90b0lcO_Vn2Uw9%_uLB5=APRnV%Du7$AL~-3pvj89%MxWNFi9X`3GZ-
zoaI6O-rOz!|AS89N(D*zh8$;n3sM-q1$NBZZD<D!bRh#nH^@rxL2G6p<scsT!Wa#h
z@|SNn|NjrYlXgGk=q=Qf$-MeNCzF+k?f@MHv>$X=ODDLjcsUoL@c=fBf+!k62eCml
zrfmNI-|+v-Sde}h@L6hDExy<bwpe;6$l@Jfi@|#-JHb)@^5v%g|Dm`0V6}b{RQoQF
z_I+UMr-EvN&aI%c%3iM8^#4ETs2MP4F32p%v2LKl$w280qzkkX9YnuygPH{ngHG@<
zH4q1ZPfmNO3^MCd=Ty)kZ!g6*K~AoN+!qYF?8e>QBgiGpv$qUXSs-EPxpj~ZGdRBB
z=hJ~wq^m-=uSR#MK{o^F3Y1!&?oyjh*CXAGpxTb9({)d`s|C`rbdaDdSk{u!>AC~v
zg%{mDpity*QDX-kR1P{$i{ZE{=nQEFXrzNQz*NIM917J{54u7Ga*#RbToH!jpzO!c
z?YgG*0DoUN8v{e@ZT>zN&~b3J0^Q=RmpZ4W{0E&QrUnx76#?Iw(#Hql)Jk;oTVAZ^
z^Z+H{L{`x4#GqseK0~fmhn0b$xpoaRf6D_F1_n?G*fJG#$`a^uCD09#ebbpiu3rI)
zjLyrTeciDO_&XMY!YFn{=SAnv*d>}b`8(=B0;MauLl5-2{Rdy{aH#WCug$SumiwLO
z!8ZwbfiHpm2{H}rljCmSlRuk}ad=iZcYf&n23`ut06mZk^`Ot=4xpQ57>+xLfMW2t
zg9L<<0a48d6q;YMR37~AyPz|6MFm%PsX(_Fcn23~(BD;}Tew@IGjv7gP0fqVFPS=h
z=kRwN0Ue9wd!+LM=r}IWwF?KkeUE@no-hHee`jF)-nqBt|NsA*=elc;bVBX|xCS}P
zQ}ah>YYu2qs~0qI3q24Kx?ig^c1gGE3e6keFL-pi&fxFR2HCO~q#ANzc=uM2p`Eo;
zI%6kvmUc|&cAe5&d!svc3Fti7!`&{oK6IDd`qCSEqSHnNyz7>y)AdHT>ypmWJD^sh
zYfrc9gl^v+#uL2-A3zJGT~t^=_pg+I?}q1ik^3BU?4N+)NzfVdHTQmW`rP}|8~di)
zwWr&+qq}wm<H2sGP8pTn!XM2qL1O_dnxG9Novv>{U6~RU9%%a(+=YPL7$fmwrWg|g
z$bqFxx<e0iyY_%CHClhIv$O?tT;sLQ(1z|%m4nZi89y-|>Spit`qBIfWHOKD4bU;x
zAu24O7Gms+PS+Qp{)7x@NCI@~3W^nGAS*(*v|i$G?FP-N`!4CN{NEjWpxbpxx33ES
z`umLM7;p5--0Tj49D~*Cdjs4UzR($Z2OK^<pp7fwb8=h^z<nf;<3qrK!t)~H87NRx
zx_ukEU6(MPFg)4mbLa<{{L}3#(;eCZ%6=1;wPbX=9sxC}Kupk(6zC3sBjB-|&<lvh
zTemOxmT9p4CqUyhFDgWt7<yg7r*Dg>fT9i*khM=h$CtoNh8YW*xC0%C^TI`xiJ`l6
zL+iIv-~YZdI%}8kcYXxj9Ok+LdQ$3MP}*Vy-yzT)dV~>jZ0uA}Li+DJrviNXmc+}x
zzyJR?9sym31wLV`w+wVhCI`s<-L5U&zMxV_0L+Uu0W}a^cYvC3pw^)P<SZP}Dc_)$
z9O!By9u-h~4%EbWv0Q|S;bkf)g@1#2pu2WSx9c95H@ahW{6T|0zAe2Xhr3<(fC340
z5H|QmA&`OHv7ml33n;09Z#|ND5eza@6I9Rs=WhWWv()^bnZNfNXz|H^rW!Fw!RCo5
z4_@B>{r~@Q2k=!VoyR&a9(Mp=ck=q$aTb+AP+Zjtbo-is3d{x&&(#9dKmpBwgWT8w
zDuh9k$}ULForAm#3@<f7rb0~!73g-=ftyfj0P1&uX5ru_fEr9CNG8;SOt|+8+%_s*
z25uY0f=?Naf!uclD$-tfl`=5AOb0DL`o-9Jfxo8>R4CReShCl0A7=v}{o3&hbjKrO
z=Y^WIZeI;cMv%n!|NsBL%m=NZaoy5-pv0}a)}Wi+@<NSK>w!AGZr2UqBa?kCx*4ro
zK_z?*=&q}NdyrGuK7+KHfV9?HbhE#HcAV`iNJI%F5^B)R^m-4t+I&43OuYo9E9k9t
z|3N1yK`yNO0%n4nZ=l;XjzeyZyY~~`HmP2Q<<!)5t)R-SMDV!l22j<o8`Ma68G+DL
zgH2N<nkG=w;3a5G+VJ*E8IWE`MT*rzTZmra<E~pk79Mw91GaMG4|rPytCegR+Q61p
z{Q#Zi3qITYWge)<Fkym=e~^1%kb+x&QF&rfigSKWX>MM5W^t-dYFde3zCuY+VqS4U
zesL<ucF=WpAag)YfSvD$+J2A#-Jj>n0lGi$Mz<>uB$0PQ@51VK6*$hKa$+4gTv--C
zXpUv;;78O;oPmhRfYQ}*7ZnANr7w0BGca_zo&X*6%>g}LSORqCS?vk%nVc&8>yHN*
z9=Hv;Wlb8?aIxwZZvOwDf64*SJ&6xNjfRsI9F`aP`-(xW3pP-sgH9UfZ?yx-9pG<$
z2&%MPdAd1TPxAMPurV-n`d%>n29Dk4+7pa*e4rzTT~AoE^Y<{bGB8-ip5X8K3~Ddb
z3UteZc)d?q7#J+?@%P>ZEug)n`Ki0~L~qsq&L5rkXMV3e(H(jMbYi0G8O95ihwGR+
zkN3JWcAnNe+!=d>zhgEizm(qS4gcTmd!sXS3;+6KnkTw_x3r$DDCiCq={)`Ya<9pu
z&QHycnLA5cI?wramiF*>YJ={90YwDEaVJQV;t+>th5d14q2o@FbHkm$=Y}75f;1<b
zAk7IUNOQso(wsO1X-;&<-eA1(-}eZAXEpc$Egr~hTo^OxkS+c`&^<8SAn%;{e!sJJ
zPv=j~i=8KCe*fPcdd8_U^omEP>jC}_(5ddAQ~s}a$DRQ#Jt?vH;oTX#q1$y&ckG$Y
z(lwxJy>>}w>735kDV?q>I$dXUx-RJU73dDV0y?n2JM@G@XXpdVLv^g3t`9m7b-P~a
zF6CjoV9mzg*AA*HW3TiU|L?B7(H$z%?YjijXOHFREq&3;@~gLo@kh7sm2PIxG)H&s
znobjy?otI%U`jZ2y1sy1|H1+qtm$=q(pjP+(Fq!btWg0~&oVEV6c`!0OCR|0cPs|Q
zi0g*#+AH0$H$ZpmxZdDj|3mXWXq$R>=#JJ)6&2mCBA~M`du4uf-e`Wv+!@=^dD*)&
zb^?Fr0?<7v3?Kk))PWB|bcf{^3fg<GSSk;8yWU_t?#JI*3W}cEJ>9M=x_uWg)^6x7
zox$k3hS7HkW9b~m+9`~+SN{7R;O|`e@BjbXt{1vP74AwQ)tjI*20^D{gD)5cEhuXK
z396Dnj%M&eIQyl^|Ns9X4(_}K74CNJ0F4A(KF*@Dd|gXMcPK}1?F-OZ%j-Zq-z&YP
z4?rzYrsFOu8eE`o3|#`Mq%==}VxZgiMz`w}P*vPrI)#5d=pF_Y(1G~9ET_AD=k$WE
z;&zqj4ZQ=p><QFz05#HlR6wI53Y{)0GB5bW85z1`B|x`;vZ(9;Sr~c+WcMCOxxoQ)
z5vYCxyM?jamj`r3$Q#hWfIxTX15m3EbccuyD8F?3Ug@k+k?F3zq6xaCP(ky8L#OM9
z?${f>t{<RQ_xe5nHFtV_?|`lk>2<OC4?2s^M@0j42xjaO&`@a&^AE^T&^o=fAXi&-
zx~Ld{cKXSHt^)zp*5EVykGrV2fc$yfMa2UYC@;P}XJB{<I)Ab|_J-z9(D53j9H3U;
z?_QA`-LV4QY`vv#I(^^t`hEZni*%PtX#M~v;1{4<4wyk_VL|R4;s7;gpMV?=zF~-`
zSL8RS;nwK_PTMjs^kf+sUON5x4<77!0BU=H278Wx8K4*kmlmFg66EDdP;&t++W8SG
z+#TA|e2C-qWk@gI@c+wKAT=y17eL`(%F!Ll1BwDrao+6<Zf1d+P~cJ>)E@Ow5jpOn
zg1uyakjuc(dF<c|c@M>7-L3-G2K>Ffpd<sj(m|!0qucdFr|%v9^#?m$FLYa39_R0E
z2G##8Dpx>N#*gk;xWzNOYX!dl?Dhp+jwArL9#rkr;I_Wg^~8&~T+l74Or3{oxWM(x
zOT}OR|AWi@*Y6?zg$Q$j+7_+~kh}oS2_NiVuKojV7=e8L{Z?=3ht5!NY=P_tRbVd+
za~K$2wt;3|Vg<UTTW@#9c2uxfp049Q4rzi^fTpE?G1gdj$4XcVgBnGk4(iK9knm5&
z&Qmqgme=`vgMNa~!f5pZH(0>KK=wbOhx5O_w+mE7zTO9IzNr0#j>){d2dUjBObGQs
z?XN-V>*hB(pk)`O9H7L;07*YcJ$uN=M8h^v&;AX_KOkFPY^(t_e)wDX7(spG7a*~2
zW{*zSC;T1TL4}^{4p0Gd+!fsChn08TzC7KfFS;2mkJT}C9`mcH=&s$;?JCn9D$*<S
zqq}xTFUzmaPn`!l?{~WH>HGlN1jg*u8M>gdpqsHfk_B`RC3|N)OY?CKzY5#V)15!N
znY*i5IvG1FS-PD$x~q9Q9XUEHdAgkix~oMx9R)foMY^3Ox~pZH4=Z#!N_1ArG#^xG
ze#cUI{6DBa_MzMN4WsK0M&B*}eV_1mf=)bXK9U3OOSB#+ncw__xwgIe2UCq$H=`e_
z^)Ep^k?um4-fE6+#?E4vPUddkJ>8`Xnh$ckz63p?zi}J5X@fePRb34UHA7I{1q!YQ
z6+O_+%%B#ME9kUMhHiu7u1i3b^>Nn~Aj+?^^gws%f!1&Q9aBI#BK8O<%zT%0ho0!Q
zxzQaf!gwCEhSv2A=t`nb-LWeefA?1WfQ4VL_m9rdHT<36;R%djbOQw={5~-9!_)Ub
zw<{z(PcZr(X?9(~(d@c}<G=3%{!YjL|Np-P?JH<KP%;sGfD5R;!V$1hpsK9&Oy|w+
z>ObAiKRWCFbbjx2`_Wyx=Jlm+VXw~6JNzBtpd;~JuRzk*1rP<wmj-?nmEE-$IzNE}
z2b`c>uk_j+1cgIq?TzLKpro{+^JnM%%52Q!WCsd|31s^p=J_j(z8C)c-r?`e0(p8J
z=v09NB}+glsRxIL3qc-6O-VPpOE-X163+Z;16tr4%Yl?hA-x8JU7$?*0iH>DDj~`3
zASk){3Uo6bcYOmY&pQt_zhdePeZk)`7bN4#(`^AcpE&l7x8?878+A;bzr8C`yK6sy
zuG1+6E#m0B-^+5S)AdZZShpWb=e_Ts?K%FPwHNq1)j_BB3v_z0fR1RY(1w(hkozt=
zLBgE@9GxCKodE)!9wMCq5}h70pz*5LER_#I(Pr`A_050Z7nLob!iU-NIH*DFzYkQL
zR8)2T==}Npg5mAv2h5(8C7?@tMU36<GIYDj+>N>LquccZ<6-}b5Ku!5I{pMw!eiVW
zDsz_sG?m-!`{6DF<LO=>V@6ai6DpUv`4|gW1Y~0KdzQ-W%|~ot<-lrC>@|a8Pa0&r
zh_OGK6J92RqOeo~G?Es_(#^IH9K!J|o$Q_GyJJ7RK8e_W0y^6sv=Rz@pb}`!Rr5cl
z8oo{eZ%F99+zMKCDA4)4(}Shk^$e(K^%zuSTD}Bb(h41JHr$1!Tv0BEL^SB;N>Hf!
z3Upg^);{TGv^-wN-0Aw{Kj=!SH=t1E@0juL|NrjNH=V!TI!hmDey%9(c74+w`k~k3
zf48d)|N2wCHYYl7^zwZFexdVz^8;r8-ohW1S)lecQ+E{$_*Ts3V;tTUmYp9bbc3$p
z=&pkn!ED`OET9rNkf$5M6zB{T>1OLLV*wSuh2X;XHB03wkOM9L`#$N8eb5>EhQBi(
z9DV}bY%l*pGR#s?koSUuT&z1(#JiiR+Y4l|ALt^2mqj4ep(35XyNg)5nK}#qbe`*U
z{PFr)cc?%&Q|CcXP%EJWbQ=-an&Xgi0+gK7K%IwBnO>7ap!Ry{4QL|n7U=e1=`20b
z`LFpMQ@87lN<VO_1t(^`*SwH{bSMdyA&{QCV?Qv)Uit5Pr?Ts%8py4sCtAOi9Br;W
z!Cbqvx%LE84L3Z(Ur*^2=#Bpej_w<v=ziKA%F}K2^6MYSD87%Mi+_-BU=T)!JR}Hw
zQ4J`if%@T&3=9mQYyhdx8{eE^09DH1``^1=6`;4&ch~A1cLh}-4BfF7unXTqIiS~+
zLKhr?I_n3z%{xo?K<=aJ6j1>+=nVE@Np$N<Kz;EYpo+^yg~bp_3FJ0y@O?EeI!Zuu
z)}5{!x?N40E&g}A?%<ztu=PNv?-u?RAJEu*tN^IVE8H16r<<b_bT9M{(59u2pbJky
zBR~8t%Ro%fkT$3X-wEQlih!?2?#KagAk%0SoYt;$`1@{wI^wPt#~DDar|wt_&>R<k
z>tS$sOaZ0;Zdab(&==5)e!6`*dSh>aM!mXAr}Wl70N)=tq0{#PcsR}VMQ7<7NUq}v
zfcQ=T6yh(grZIspkn#l$VfgH8$>^>HwQE_7_O)byj-&;TanyjvUqRv$ArQ^*kqodQ
zACf?=O^427b*%e97Y22^&S?I@$lt@k!oUF9K@n>K>Iu6V+;&}XR|4dX62s#xDj+Mq
z-vITBT<?HJ>_A05xP5ssk%6J{2q@yg1s9|g?gkB~mA(KCSg=FJ(7=--CE}p=o<-~b
zQU%oZV0WnjWRwOx68XXY^;*y!$^RI4f?V7gd!$ax@?WhG=<)^7?HAnwmcRIWrZO=w
zSe~ol2HllyY5A}7M@{K*7Zn3YSPOKAf@WY%z&y|t5~z300qV86Du5=sK?BelpbiRX
zwO)-1OLr}3=3A!Q6?ESpPjBfJ(3N=LVfhdhg-*~Vk}fJ5oh2$dFAPN(8E(5S=q@$5
zEBBHal+S#3fO@h&K^0o;2GD%=eb8N{Gr#}a1+pEqxWt38^TYQWovv%TUBPK=6<DoE
zH}i4VB_K86fu%K?r#eqF9_qX>^Ly<Yk52Fybj8%p(hHjRd)+}TSLROF3&&YhEI{!d
zdZ4%ZKPZFPgLu9&p!sQs4ec5H>#rYoQBjD1L_D}#3+n@eZn)$Dov_5v8^ZXb+jS0T
zioZKl1$-ybonBW^|B?eVs{y$W7u5aibrA#&>r1?l;b3F{k2&zS+y=D-!9`x|3b58Q
zprinHlq*lK?-|f&1|;x#KyCw#Zi8k8TvSB5T|sLMdP6UOE(Hdy1E~c$TLt87kQ+g6
z?&SfUP;=Zx#Re2C-L-pqLvDgrkH~<|t#?sT=ynC&sN?{Wg!N`U_}3qY^=LuMSzUFy
zeL?Fm4Z2+odPB~GbnEoig6`Wh>8w$)c)@s+0W_1xc=&%WXikW~LmyNv`AT$Kz67nC
z1of&JK@)4Bo0?9%1g%g7HxQ1yt^nEE>3Zg6AgHn|T?3w=?L71nw5++?cLOL5u>br2
z|MipOkShf{FM#@nuApl$7-sg?-uPZSqcgUp+qVUDt#mACAqzNjclti*j0KHdfU|h7
z?~Bf3pjnk}SB~D$2cVqR>Dtik+R*9xpxd>l)Ah}Z3rUbdAQn^zfQpCiP*7%v6aqEi
zt9f}qQ45MdP^TAbA@Dj5R0uG29^~%@o!AJ@XD`=*772o9Wg%nM??4+C!2E94IiQL7
z?Cw$pOE%DbY8KG@)Pz8tc+iM@jYoH_jwL&265rxD6L?9$H*j|qRJhcrbeEb~vhnvm
z1`BNgt%<t<W?CF)`11e%|CgtJLHmrauY&D<y%9q7LCcd`i{tFz8T^I6K<ml6LoJRo
zfhKNVP6YEoIl&W@6I?;Pag?r4CyUC9+B|S8rBxqfXRHNu!9>`v|No)I5J<llSU;%L
zz|e0C)&B&vAJ*66I3uX;dnty{52{FN1weJ!98euL<K_CFkct#qf4jK51_rrdAKwmv
z4Q}_AF@Ta7$ZTBW+n_;nkX@xJ-JtR9?pU5q*DH{c6I}MksDKj1ilg94lcfPdbF@Kd
zku?xn0!qWH1(2;TZpJV$bRGw_T{uAFrl<JVUk@_81Rc<p0JZxix?MS%e}k?|>kPdB
zT2#W{v4n+z0d!JH4`}}S7bAa9F}NBOu@vC%wE&F`vw<QFGR*x0v<NozLhGecm2Ov#
z?oys^iEcLVK=k3(+oiJIwK7Q8Qhu;+JOc78xK8Q(cHH#@s3tJ{*8HEb)AdXphvj|#
z9?;1J*0m@2d)9$!g8Tfv%Rux!{@!_@BMok8e(Eg||KIrm+@_!T{l7=2>k<BrOW+!L
z3#fbB?JLpC0$Q30S{eZA&2`4E==9yw`SbhDPS+ist{Xaimq61;x9bYaADylb>X<ug
zA9RPV>2|#WI$|(XpqJ%Pcj%U0AEqDOp&Xr{6`>!xnL2q?Ky$Xfd%(LLKR`!(L5;r<
z6%J4p3NB$mH+F+opMvH!MP8f|1fA*ppz{N0H8hVkBYz)go}aOH4dcIV*A0xWTe^LB
zfaXzs_b|Gy0FRA>u5*BmZ&==|<Gt;Arn^+;uH4H*paRYHN^jl&?oa{#^*?%Le)Zab
z*E;t4$o~LMO)&SyJ^?L&kL3Zo@JTl_sL1J!eF2(0?Tx(ynvMj^yZ|{G>{^N5680aE
zdzb}4i=tjg3NkXh?mo_<(tZ>&0P71HqhaX-@sP${L05@zXnyGS1<h6pIP`|z=yZJp
z2@xKU;fR4%k#1LTeE=Gw1dp>WXJlmP4SfL_XPp5_yDW1cGzZ95&>$<=K1NV^2kNkd
zK7cwKG{OoV?1T@W-p~ZyQ>+0VVSUo=dj&N34ylwt)eUGc_PC3R11IRj1{W0>kki2R
zjSOVe)d+Hbo&acZvG0~%7tjztNJ<By&;V4q`rhbtQ8DTCQL%v4M=z#aVqkb_4yqMU
z+w<Tw`O*zEp1`8A0Tg7e9NoU4vI`~CcDjJq27m?=@n>F{NW>T>XaeXdXuQvr2ee;S
zpfmJFC%DRWJ=4tzy03NtfA3Mqpy8IIEg79BIzdeau)Q<8eR;lvnib$815}eAcTvG>
zGpNJ>ttsGnF*5?xC_mBsgNeU44P-nd%f5^Pbt#UssDKJ1tOJx2!WkG|@`0)z#Qm_~
z8MYcZ%ftM=`$5;`xn2NO8CyU@zL3dW&<HW4hPVytf9wJkVK1BE_0@6k^cq+IJiY)O
znJoSdEtUO(16<tQog96fI=_Lmf^t9TUS$aVz#c+#fSSh)3=Ap`vu1+8PWu{>b?y(V
zTI^x{9Ut(Nod{?>L##<RL#OK!&@!b3-L4#vUJR&S5jfqF0qK{Z)GIGuq=PG^mdCoF
zbrL+?Osxm_J5K9@>Se~xL;OA4K;oq$mSX(9ow^JR$C<%JDKjV_LO^^-%L0_@89~dV
zTzNo6aw&J?5s;(6<tEJb?o!NJ%|zuzI@AHypw?)p0_fJ$Se4^Upz!Es?_};~_o&ze
zUWui193;lzaoiDnb2HNH-Us`N{^O3I!W1OS0}4Xq>Any4{2ibX%j1sVNk5O{jv^2x
zVD53y93V)ECuoAl5j+#<aokY`q6Ex64w@JQDFJn8k2@-W;>F{*qY6X`n0wp_%;WC>
zwZ)G+YCx6fK$L*F$DP1D{tnQ7xZ{onP$ec1C1CDxCoqq{V=pLAI$D5~9Cx$<sc1gv
zaNG$Z-~<sk<lw>I2^vm$*$*yiJFH!g@V9hmGl15Cun3-R$>@&73~?Ei7hh8$QJyOc
zit;0!Q$d^Nx<flaQ^>U{ox<JVErXrxmdyMuCLo8nsIUlujPu1bjz{IiGKg`loFG@Q
zcN>Gtz60Ido#0KE-R7OXb2`6kp6}dy2fX(4GN@WS0lIY3*Py#r2XxDo2xBh~bFU10
zZ`F^^y*{A5O^!dh!O9_*8FsgVw1U=<F?#eC|LENN1awLoc&{OU=S&#}hU3oQr6S#>
zJjb2ED@Bewf(4E{LU>LPo)ehYZPyLnsml1HyVl^i%W;UD%W;S#TQ_)DY%hx&hEy$2
zH+wIO1L!C>gX1p8p!$wM^s#sEy#R7KOFM>CDNi?>;kRCv2C$8tCC7gle(Nkb{-^UE
z#37wiL4NM+1>M`|(CIp-8|<^z1D#-R^LI=H<&3!?+3sGDN=QqqyOsysO$Fsia5@29
zXwJX@$t2)B!obii-t9UEbhCrOahF3-_a1_|w{}i1i#vvRC{H&N$dgzDhp9VsPA^Ln
zj*w}<Zd2%-<8F{icQ<erZ9XP&+!@SrI_?aXXg(|e&A!JSAp!>ly4kyH4Hz$ASmnyo
z&CqM()a`0;+~o(<OFtl90*&K#?gd@@+RIXpPj?e;-JqjEdRg`x{s;S|v*r-^5Q9U1
znqB8GHLnFFLni*tYEVkARp<^?={D~KCzo!c<18wmSm^u=D(*mq^^0{oKs$LriQ?{D
zP%BCEG$<#4_m}f`+>r!r)$ayp5zTX*z7smP@_-j_f<`I3Lzi@yF6nj^09~6EItO&m
z>sHWC<b#ixJFjbg2OZzJpjYNR=zd?{37vD7fSfZItQ~X+?}CF5m^BY|wk`k(w}ONj
zfAxx->h1-p15GM1diPfS=q>!g-{~m{I&k*~MCz{N574zq^Z2{|N-!|+w|<uZ-&OSp
zbazzOR<O`|2?hqxRn5M0x|w@L8bMp2T`vB(@#x0GyD=AkbTfB{PUw|sV7v_4Om*+k
zy_a`mZvN<Q1v$MNyrKHP>jcJQjQ9Wdf?UPl0cs6GdRCC}^1Ezz*>9eNI)V>uBL}i0
zj){ZZbwHeKN5oEGJk|{k80WiejK`5|GXooKAdckacVZyhUWhR;fNHnUIo+U1^j?;x
z?oflfE{CALKJ=rTv6rWT@#bBZQ$HYHJ_Yr1v+D#Vn01WDo7aN;%*5X*4jQbfRe+_O
z|E_cX_kzwG04?iN={9%?-Z&n+qdWG%aaZt=U9X6A^I@hSNFV5qtpcbbp9{JJ{%+`o
z8z=5g1)cVAhgah?=zeC<F2wFqp5EF6-E%=H57fzL1C5NxoNmeJWohn?HRugF3>uAK
z>1G3MT;Kz(cY{ba_WB$K-J#6$;>$Ni&;sS|S{}&8<ZixhcDNxT4UDIHeJ+DkvUIa|
zi@^=xX<)qA8*&<CIM0iX-xxs`aUHmM@aE||kWKgCJ<i>B-K8p>;G(i~FX&)}ZZ^>M
zFd(<`cjStK21R(fEuiJ%-YcLIRb+p6t--;iAT}$gwvf5rd8*fhxqB{1gz<N8-4D=p
zPoNvnIuCb(j?R1yx*f&~ax*M{=SdL;hC9qRPc<LrxWnFjoWrxivh!Bw4^VsU=BYbO
zH&5MRxOwW16X?iA2N2;TaP!n12N2;Tar0F3A%!~*5}+BImn@a%?}B}D^WcqBH&5R2
z-2e%ln}=_lxp(kRFE}37g0_A_#Sh(hc;mz!@YP*+AmZR#$zU5q!Dn+Qh=3MfPhsS5
z;Rm^ME9ek{yRkd&vKpKQ_nvt`adY!fHzcfF4SGWl+&Br^qE_<bM{n#7P*3T`tDC3p
zfsS$K=q){Pw-uBGZl1b37qkQU-YW?IPA`ae^W;6K_}#gnox(48o`ZUO3Lry3eRva<
zZozJ5P<IAoX}7Nd<AvUugFiq^R(fkUytwxaqS^$si-@J0xmyyZ6eVGS7D03~bqj*p
z>>zU(FF;eAz>7N{KucB>x_x;-2W)`GI~lvJ;f9zrF#hYVHRuib4oX5CV3&x1Oz15+
z{sXkk<Ha11eqWVt=1y=0-fh_FI;Zoa=0W}rPzBH{bG-9J=Q&Ub$L!Y|{DZ&K9CUm)
z_zWLVKR?#s4ioqmpl;VWcUwUL(rw51<BrSWA9rI8|M>4Z$CJNf31}vvi~%~Ib{C?z
zmZuw{x7!@9mGJ{iBSg_1C(v=^-KBH7*&$~4x)?B`D-pOGC4eN)gf1@uxwZ+eq{aX=
zHFwA5_mAe6EO%pm|L828!{3<(DnLRNx|yJ%;HuJX0I5hiKSS#n7I0Of4mug+9Vnqg
z{R7EXhPQ7X=yaW+d8~6Q=wJi>j@6(U%;Vjm3%XtBbeAsZ_LVsJfSG^&FHpU6sB`O<
zfB*k$equb;?YpFNDkz(Ehfd&Mf3e$l$-#%rnkSfD1v=05vRvp6ozU6322|&`8uWs$
zcK~xh%hX#z&9!du#fG3`tGdBwB6NdKRRFc=m_49P!_LqApnJGMs_!y@&NrD?#Z<z4
zhtc^i6Ecr+D@a8%=%{s&(-;r^?}hl|F(~rD1BGz^f>aVVtGg9qP&e462=y#?9669I
z2Xi5|<Iy32szbn;pbiOC9THF-%?A}=)-<mL`H+RbQwtRLwLIOv2Hotz-L-Qdl|rwH
zJL3;`&?OZ24&IIV_~U;sC;@cV&Z!UumGQ1B-FA>7x7*+)=z80`H$Vevu`1mHo#69W
zx{V<z1C*CKT_<$*{sHZl?>GlKX%ad8bbbe=9c^&w&EH`PIuhP>LU$-nZ^3`iVtuY|
zuxX&xoxPy48Pr^XCK!WGaL{(UE&!c$*$R^F<vG+n6%;?6y`a-uK$FWnAG%8gdReY@
zgLU<m2>j><A2ieJBlx4&Mc@a-kh^TK)W8XeFy}iAcNsCon!#3bG#}(>KE~nC-vJuP
zBTsKd37PtA$kWH)2|8XV7!=E~6ChFC4Xz9C_}u)_?K+`Xq~4kF5GbxM{`e1$tj^d8
z6{3*-TemT^NoxKQ)LFQD10)O+i{<GpJph_sGEo7Syd0qNwL6xF5gezG_yc8L(4j!x
z%wV1H`rXE@yVRi9=O3u%=Xr7A9V0_`El;oOfld|`$N?qb5*ut{Z^$uF84hY6a3l0P
zFrJ5Np9t2j0zP((`40G;lWuWH_1ft=NAu9VkNh1{pnebJzKvL&ULW=!y)|q<dP|sp
zbYAYf04nAgz4<#Aaf4ffHxG2X&S7Q-71W>$R6r+8fG=}xs|KB{e)|q1_~3qi@X-?x
ziD-xfTk~;H61gkae2nA2>l`o0iq}rifd=2YOL-vXvUQgl-0?Z~14+9mL_0J1J_}@X
zzj84!+`WB=vAdM#t|X|DHRt95P-TE=#1V)}XO6qkpyS>BIgpHB2$6H-Xg)5`d|2Qv
z_!a?hC*&0qe<x_k#a&i#lke622cTo1+M~HZ2jqcbB=!cRLRaW@Jpef$>u&4~&{|3M
zZew_5%L9(gkaM7D;^<}vCk9Am%hTRla}HGL3%t;I35jFh3m~IfL1PV_ETBC+EO%os
zbhCF0!;NEc09EtgNC%k)igbu+HVyDd7kF{!1tUXuE2!!E-*pNkvMpVw+?@+*^wbN0
zh6x!Vb=pgdui)i`pg{~!e+o44^WvK>=px@6A3^OWi~o?*pFoE_-IY;!;k25G;m%f2
zFY9LQI{xjh>(Y1`c+xsu*W7$@@8HecHMi%2X4!7$u7jM(1=7O58nm}t1*@)ZR|Sx!
z*oK?A>$({rZi2KnzH1)u+zVQc!r$=?G?M^sW%t&e0hNED0^Z%FbNJWa==S9So&Cph
zt2c)2M>iv=5#9@G;ez4?v;teiq0<#KL&@=?>ItYtGzWAcV(5}?{@xnUIQs(r^}o79
z1sLz&b@}z9H}F5`h5=WJn-4*ktJKK-0JZO9Pjs{0oy!550+aza$G~ffPe6u&IbJ9~
zVPt^bM-AGXyr8>wPB&k7tOVl;=vgN}?z$WX-y97(zGNPMvl!?&z#Dg3LE#DtoKGu3
zJCrm)cZPJ=&cPZ+H^AW<yW(c<x|{F1Ls#5&`S$~48Yne3?Ph0SxC2h0;BW*f>W*yy
zZH~Ka4W3f&yj9EA4Q5%pHq<e9yEa%}sAKB9aF^BMbW29-ftv^UTXMl?qkzUE?b#U^
zR)P{i3DcdE7k}`#sKW$qoPY`OVhVj`gK9&lx``>YA5&;4rcgJ!Pzn2u6ED-jS1@*m
z&grhz04>{hRk<5;{YU5Z?$RZlEGqu6P80w7@4Ye~LDB!B;}K{MTc8(oAGk_)=>pJU
z4=`oju@e02zjv~z+<e%}^BGhIL*n>F@FQ4!GJZgdxi_H0{g7hLVg)GXbigqeOKi;D
zL&V%fR?L{I1;^ZVXw3a09COZKM}cCFixnCLuxR?k0u?~S$qh`QeV9U^Nj`8IKxpj3
zR8@c}6oxK@9CNO7x_x!-#vJ_N@V^(7tvg-kR0x0?O=6Iy(Mu`N97d@^x2sAwRH)kk
zGSt`kS@U;i?VQfJpz&OO@UmY>GaNL0Q!C)vUCIL*zk!qxEayQ}`n7XFn?OR?e{{2f
zCQ5rtPjs3<Rz95QcGUna!~xB3ftI<yD7eYU(CxaQJ5-^Y3tk3*N`MggAK+5{OgB47
z1Lz!y5)~G3{yzhnG6fw_VtkX40X(n(a#{sS$r=f2LAok*$EtK2KpP6ikg)>Id!TKp
zTkn9|el{;atK=4R-tYEZ&>boP+F9bNbMPT^XD?{o-ofY0n&*2>thz&&fR^C8F6jgx
z1=#$a1Jvf*djw>}`Wu~7_kaqh8{M%2pdqOXy*A9<b3w*;w}MDe4bJS%-+2bq{ispl
z00r?}kXBf&0;+33r!c18096|x8PMrDB`Tnq9+plX(8?@u_xObiSOLgk&8;A19H3zr
zkll>O|M!Bd;_t|L{{KIyBilU{q@ddst{J?xfkov71K13(WUNXj%o6arQivt@uQM`q
z_ktC)f~@M4QE5KN!Fa3_d`n1oE66@jmW8>V@i@r77b~taGJqyI!3V*B%!SE=OM@<u
zp<qvUgAIjAHXjyX1YLK}0x=gf;s+|`IY7$@!a#a_RY3Yd<{<}!HApH}1=TEwmpf%t
zV4>1{NTPEp=&EqW<6z&{sBpYs1nF!A34+a(0q+Nex#q>=YoHha`LG)t|Bzr-U_8!v
zu6ZpefLZuE=l%Qt|0U})@B;moiJ&czKbZM@mB9?Angmc_bVGa^iU|A|6_!pBl^4w*
z^IgGSYCg;Xb^!}q(Th}&EI4>NAqLC^xrFf;ByJh+zuX6!4gjSfNc12@u8#@}D9DsS
zCb)v573L>Ug9w~hKud#OFo6{Gf{y=#gk2{%opyrFg9RJo@t5ZR|NlqoPv5=qayRIZ
zzZ)+>bAoqoyj%<6ErU?=Ar$Cn#Je|MP6YGrvO1gw?Hz4Bz~A}g7x)|#R*%yy85e(i
zzwz=iXekGz0}DQn0DM(s<nRCg@2G;>dM~p;8g9Pi2T?a(w*3TYe_0QqKpQCT-gsFE
z;blRnWC#@lrjV^(4>>{wVf8%F9tp60`aj|JIe=8%eEIY{*rJ?o@P#VS{`K7(FQXub
z$eBYZ(B{*-H(oviA1U{80fcJ!0!b4qzWo3HGVlwiT;TzANI{*zm*Ss6$A$2>1b+Dc
zAG|5}&wCJqsm2b{w?lNs2@V86h5;B4z1;a8bQTn7DB`Ze4_LpD{SG7e5Cyzr2{0pG
zH-Xk*{(TF*+;j(+!Bk@i8SC-vuH}IZCCNiZdqC4HH$a^a#AwpXCeRV#kP#$bo;%K<
z<M_J;AsuaqCdLb$x9+$c{{cSu6Wl;_1kDh9d_4oY-sA3#m!DsQ!v5}!yEk6G0f%FW
z3wRHK)@zX4m}*2oLz|x9vCW&OnvZk56ohEFdDrbn=l9NwkYSe_2Rjenb@*}P5cp8@
zldn(RJoWPXtN;IRo_eYI8gy9B7B$f11?ad~P@58bf-dARU>TJc&*n2R+-(I7OM{M&
z2eq*wP0O1nUp{^TX@-La6;L&8#G(nT>g3DWP)(RN)nL&CR(0|vH&heYjE5kHf*b^D
zs=8y*1XgwO<>BWL=Yh>Y(IkXL6Ij*BmoiXIU^7rO-JORS5MWg&UtWQhdsff?|9`pa
z+5i7H-@P<{0ZH19PyYXZ8TA-+UQX$e&aL3dR`AKH-Frc7@6Onk*4yBQgbH}rZaXsr
zL$Cio(76x4I(yH6M$|xqa-cf&;4@~;gWawY2Olx_+6Z>;1s#2+`GN6J=Tsd~O?w#B
z&UanX9Xf~cN3Y4jZr25!TS4mr883hif!eDAGHNc!K+u(Uhd{k+u=Fm_qNbbgI;W<9
z6tserHNWHN+?oO6?gf$HQ9RI*=G~<WIuCY-F6q1h8XSbo!`=rE;vIYh8^`Nx1x*_B
zck1zgM)SaCLKM38++_zJmCE0Gh=YNFziSVu*TD!CS`QXl2|A_RwTJOK<44FeuY-3d
z_}(x6jx(U1KA7E&VO|kfa}Kh3@nE4y4h9C0Vcrnax@&tne{|MPfSBOWiR2`GuzF2o
zBV@orpuSPJ>jaP~5JSA14={DQ_P`6Mm!KK4*7u<E9J^kE`YbRn-2n?-V`pGs1dntv
zeuNyn=-qsP8PkAuVAU&-4VVoUnu=sVGdKWPy!ksnf=)NS(G8xw?+l#)NleFGXMnm%
zoqH?(gEqU)fu1K3s&O~w&<{)3Is7f)Bm7)DKxcY{3V3vH1t|obUIsqVy1N!M+1Sf+
zt2>ql)Kc|f1D}ZqUYNzB?Fu>-kHw+W^$BRz5{nA7w+TAE?M2~9P`5^+yB9Qa1s>)*
z2pZsH?hWDl(Obg*1GGi61hl}p1GE&12UOK_X#Q{j?P?BD;Q=jkexY}gk>NJzf;Etn
zx@&dr#@zp589RZ$1$2l4yo=<zr1KtZNXf6eRsgiHS>|}RE9ew49*@pe5per<Np~-Z
z0Xmj~=QwEHEvO-2qw?a^2~Z;rBn8SGHY(krpcApcV^*MnN!JB1qd_`lK6S>Z@bvN=
z0yXPi^q*j4Xs(^X$lr1ld|=KDCjQnXtPBkQT|2tr`MR_N8X=_<Ku2GK*6s3lEW8Ig
zzN!V>l3t+sp}TfTckGhRR?w9-ogcu54o>jYywC~0NFF3`yc2xXlI9J_A)ei?6F}R<
z!8bs5f)7~ho(j_2UE0xl2{a?nkqyeqb2~uCEx!XTZSMu0@z}i;bl?)Gc^)g!4c5$f
z9JIF>d}&GNUeIxXo!3DJiO%Wu_|e%4I_nd1tfn(Kw>y9e6!0h;vw!Da8&HeBlZS<Y
z;Vxt6eQ1sqVgzMk&^Cwexgh0tnV}Lt89)-B85kIv4}%8RygI@1z446v9os;oCaoal
z(9v9kd7#t$_`5&{nxJK^m0<HgJJCC1=Xkl_b>x6rGyyEp1zHOZ9_+pA0Ff!Js;ao_
zDB#sw%>-6inpKqnHPb-=A`(#*cGpqDtG62B=u(d=H<$_uhzheR6UY#<0%+UhVHPj`
zPJc*uA6$lamd-iuIs;U6cKdcf&Io$h1v+4~c1}0Ac-Q<5xz-Al(tdV_f@Vwj*IxrC
zGl@=cdC)5Y8Sv)n26H=G=YZxrS*~^7Vm#Ol=5(Ix>;+A^fT9R=;nq9o)TRqKJ{E(n
zBxD1-mcO+h92*TFAz1m70~QKlWMF^{f_w9KfEKNHe!2?@7XDT(unK8pP3&MH(A4~0
zCk}6@;g7%p4ccso2>g9uG4QCmlK@QNOt4@(0|UcdM`%b_R%PFHl7J{EjR6Nc*wj*w
zD$vDq&4(1cAsYto-th0No%3=TxM2GazPJK39aX!8aVscoGwuZ?>;JA3{`Z3ORVQeh
z&`TH4sl_*5U$}eY^_jajUZ1#o<Mk2Pdepl&UhlYj<MkFK{))RdUN1r7&$xTz^%Nw2
z$K4yRTM+!0puL)RZ@kO{pNDhz2KZo{yEk42gA>BbaE$(dD@4K$rrz{Fr11;#0J!1i
z1MLub-GxM4sa2K!T}XtL%2)9~BkH9pI1pZb10@K=eB_OnPa)#>K)LhV-5W2jg6inG
zpd@nF`3EFeJ*(`xr-D+_T_>oBdX+%;R*)LdwXL9}^SbHojhC}PW<wf&z3}tGTOsDx
z!OSm(@RK1FXt6s|{|D4a2Hn{T_Sj?48vGwjHO@#S1nAyu{w~nHS7;>!=!|v#u8W`x
zvCvA0m$N}DEy2Z6=Y3H79a6h41KoYrwE#3213tMK<~ROU&~dT+U7)Syol`-@N_Q`~
zD4Pl@vU;N#U*>`;1Xuz6QuHQh;Xc&A-L5U2khN~EM?Cmj(?CaV`|5yBQw3F`4B$mn
zAM8;#x?j10XfJp7f*Nq$p*`BZJ)NNw_&bz9g<I?b&@o-$7Fl=g1kiEjpe=VxI>A?w
zfE!kzqx`!|mw+z^1vTLgK4b2l3K9fw17FYyJ{`RIHAm-M&;fa!ry=Joe!txOm>G1+
zF}SGfJmJwf7j%q%C-?#l{?2RQN&qyW1}}&AfV1*iQ0|6h_?cj#Mn(n(#?OquJUi!t
zH1Kz1VrupWs|1x7@X|sDECiaCLDCGj?H@SnzX4@^m~Eh4I{aNH8BlD4Ygh}`06Ovo
zZUd+&ud2Z`y)>mN7OJQ;ph^Zw0e`0pILmd1_ISPg0>1yNc`YbVIhxmk8pRyVYe7w5
zj^?$Xb}h$$-#Pz#!R_qMkD&gj7pRL1EjlLLz47|+-5am>Bl7?2&3A9SUXR3IeD}ud
z`AGc9cW=DzN8&f%z3~z>)c{`a3%aBZ?6{Yiu<`)3NaXH~mwpi8AdK<@JfU&pr6o)~
zXqf_NGgmyQ*Z`eZAqi$M)p&J-qYfIFr6yIHu<((r5<m(c$a<n1FP}qlFla#V?v0l>
zVfh<0Ez#Wzx+@8^{0o%VN+YZMx?4eqV#0D?sd<%RH#jLmQfYTD=*kw59gyVn610i?
z?v0nA;u*S}3tpapO}_Cm6J}om#2J1N%I+)5cuMPk{uZe(p#DEIfA7K1AO^^zkVBRs
zslK-7E(5rj<8Q447YU%#rJ>~~e`_{aC>3;uIJic22lXOAJrM7gMW6rwKknKCuCKv2
zQ^3kg{#H}4E`3nh0`C04{LSAg4VDoF%Ygbp`$0Qmy1^HgLNDl;3+n4IUVyY^7(c!Q
zwGa^J36yGdgUS<y?pl@O;9WJxLA5LNAV=`(%@6iS3pPL4zdUjYJn<zA9wY+ok8p(_
zB?sQ;_)>#`;pO~Gpw2&IjaYZBj3qmNZ!Sm^Gib}_%cM)N9ZZiQtI-|6a-d_LUb=yp
zu(iC{7h~VD1TPJ4{dDpFf9OFD&^b8NRpXnW>P{ilNkSGZp{nbGs#|pN|NrBlrP2Ri
z9=Hfy{XSuWd$5a-W3aQ2PpF4eU{vQf$a;3rc^tJG-K9F9JtFL#u5TdgT_HPBSp<Hy
zWPmyYpb{E1mItC=C|iOy{5}DVVSwtSFb>e7swe;XTR@A#yIn<YzPrl+J{_OGRS?{z
z;szba3E36I23pE~4YU)tR-qfTO_UR~>7S|fKq&|8IE>>gDuNJeS-{ri2!htBiQIf~
z<0EK0zQkRIo1mMK4&Hot^U%#hpn;GZ-;i$TDFxlci+uFIFB|CSf6&RCcW>Oib=>s@
z$l*5+cgH?yz0Kdc3)GzTRp>VK<L_7n-Y2vHB;Q-c0NP?N?p5K}?Yp7#dbca+dMVJs
zOU)0N{X1_|M%`t&aq_MN_=qKKNcjU6xa+`i<K*24j=K&5AX?zAg9L~MFKT<mQhBS}
z^$nxz2EWRMpk*O1K;fqcE}cMwPIqs-{0=&{?_|m5=AX>9b3tb#@!Vzbf?D*t=Pq;S
zuU==61=6pd-@WmAZ*%PvM*fy0&`zw{Crtb;Gnm0~!OY)sj0wzQ;cxi@YLV7HVdZb(
zg0R?1Snl3<-3VU$FVM~2&D|X<(;L9p8G57FhOxJtsk8J>Z;2x#=-z-Iouya0g^#;F
zU<3t|A>#$V&eAjd9h<=c1wKCnG(d61@>CsD=c#VjJKd!ZG(T9o-l%2ncD<o_sPk}z
zZ+GdD?pl>zmhYX{drfY1UItgJ{=IHLDm{>bPz}N+6ng(%A9#X8@W_APGnK7(Z@k<N
z3b5NH2bzB~*RF5=%~XRNVDmuZavwT>-8gwS?#JtAcW=A|wG5%-eV~I&eHFUdpuX!3
zU~&MTad`!t79d_c07?rWf5kq~yaC=ZJrNWTp;tN&YaXib?XEr0?W@wu^0V_gC~5S{
zfKKG{?{)rB=?d`=IC&87x9-|EjI{^+DtqtVczF+WJi*D5!=RL~2|Xn&yzBg<^9I;s
z(LY{41MiA~wU(EHt_&_w1FaVUO|8j0cg9}nX6roe4@=;nJ|9EpvF^|-mY?dFIzM?;
zM1hY;Q|aY7+<Ce4M5pfpkZ+nFGJAK%uBr4x@`@o+dlVu}D8{;7-}o`Q?(wgjaQDVb
zE{LCwg8Z}+-A^;_GIZVoCG~FC1)$>zo`7mj@TMY2>I+rqHuB@|SOkuM2i>(YPMx7A
zy4fuc)iHG*@~Q~y_I&_4T%uN`H}XIK`Wv8=aIeFXTj#+_x4VotPTrMlKFHx!q1Ab!
z^Ba-w4?W@68Tz2I2Xws;_&BSQL!h*_5t7yzL75X|=<5Y{89IOUdVn&g1SoU9lm%^X
zLYiNIrZey|A3y$%x!^nmKDY=}(u6)hc*VQhcL$at#~tEgaGKH}*8TrMdx$|N5BXKj
z0Hy!m|Npl_Q`H9a7?_V%zPyb3jof}ORp_?!=kM4Jb~yN`B~aNd1wB8=yY+VGt%`(h
z-z}i4_*l+$-s|>V!g!+d=J$)BW9nSzG{4~R>nvSS8HD5w($f>@q#ti^5wOJ{94Xs=
zfqirkl%|%V`)EqH>zvL{puzZ)cOyXi-(Nqvd*dbOFt5&UcW>T20J?||RD*ypxXLOM
zxO)>;MI3s013Z;;+!cJ{)Xf7oKD|5!7P))t<(8iq^D{SJuRG47BJ>M1;{-aC%k=|j
zZW&a4f*TWa6c`v@ii36&$I5_?Sm5tq1N8$yQ_ig?`8%G125@Shu<*A$gRofnTR?63
z=GrIB_41&d*utRJ$1c!8nrz?y|Ns9IG_3^A`LCaWPV$gyy<NfI8}PsL0{C3BLzb68
z=Y4_OBCS6_V`2iJb1XVtFH|V>2LA87c<`mXr{XEg&<phf-L6lXU$8X)U@RA~j=fL<
zJ0{EzbRSji6P6OK=GrH$C1TCBPuTcdEkK6(Ug&j+WPAxad8pg<f`cVHe-CJ-?CU$d
z!HkyT{5_zF@7E_$+NYKW`CIfsyS^a1`96OC|KIXp>BpCXU@`E~^LIgaOhL{=z4RS^
z&Zq>WHGtaInP&iQgn;TLP?Mq>p<EK1@_dMLP=get+y|jt3Y&5Vh;mQ^6r@}hp<Ei9
zazTi4(1ucw@^|0hZkNHP{E<G`?W_!t=HGsVa#?K3H|vAdO+CoJ?V?xnDYnkgCoj9d
z!P|Av?dB7F{XN}Wq5H`h7!K6mWc|b3ngMI&)qsX7V+BB)D;T;<IXYdhbTf7fLzV%x
z9w_AjU8mN3qz1f)@NVo1Xmj)fb1RnipFRV_UDp+$wo4$Ww|k@8_~tvmii4ni<QB(W
z!Oeo+GKS7yUi=-CK&7?sk#1L!UYQe}7dmf#zt9=Gp!0Y01Lo$}O#Gdo1HkVxg0dfI
zHPbx)W>7cv?hSA$9SN<dq2mWA%IZNK-y3%wIpA80<L}<M>nMQW+k^NL2);bXScT?S
zER|ckU9T{@9`WPv1TEix$qMQhmNDGD`T9OI!9wSQU++ib&qw8h`<{1ig8P@C&;Xq$
z1|FROEgS}&C?tdA=3;J;{TyB|c|q;Ho3B43%W**DUZ1~v^Yu4G@PEV>{7ZCU!QZ-r
zm4Ttb&XB+50BEcj9&4YlY0HIcYnjBvz;O2lXqCQQ=P$2{oX(4#|G=d*_)sDl{!Y+Z
zcBFwA1_p4QgFH6Fz;N7w1JpP=?!W_~1R#_Mgo5nkbbuW3dH@{iko3{b?b+#jfxiQE
zUJ&@MWCn)LpPm)D-JxeX|ACXq1yD;;rZaZQ_e;%>m_bLNcZP$K8FTYtj++nfFn}A~
zo)u=Dx9&1Q_;;N^5)K@oX19~T&4+g!1nx!%+;x&@KBNHRN!*P9x4&PqRGtAR((c$R
zjIn3_`(CJQ?)>F-^BsQ&Bj`RJUr>CVgeJs0;1t$;ki(0=<ME&W|L-#1gh_$=43G%p
z?>K=fH3Lc4T4br>T9}S$D8flF;d&HdcbG8fiY~a-#X2zIKor%2P~lD+P`v=^Vc)&^
z`t9ADuP@!b`Fi`^o3H2Gz4^Kkbgecx?Y#t@l6Uv!OL@?6=_URa(B(?aznJ-ZL8o;!
z|6-~UxyuZi<%WcA^8t>R^`H?1=3f7QaG~zlCC!I9US9(pfdU%UY6e|*2-?pFs)EHJ
ziN_0kUL`p7yj%;qF$k147<$A1A;e!_h4<f~Mb2j|iT7^oiWh6Oz@=czR7M5{!*7O{
z3{Q53KG+Z1tP46#rSt~q%5Gyn{*L#c5~ub`=ZDUZ-!C*j0FB{!cE^fz`X1o#d;r?%
zAEUz3?aR~a`T$fj|6p#-=ncKW_#3?K9(>=9z>B6T1_nR=j-^PdLvMhN8|Za?!1x=c
z4RkvXX!%!26$3+WC}<gKuj>QQIw8j2AgK@)&=!6UkOd&KU+5C2j18+YxSgQG0YX#+
zUfi!_U}%2F!rvJUic!}aH-Fvneelv6)D}9x-{STkG-Scd-^&kXFxBXS+=c3E#@~J*
zcYzPrzX96z|DwB+f#Ky{(AW_uh(b|<s1y`LpsNo=R6x33#8)yfbeA4@y&Q4g95nvE
zV2QsMA2eWPR?Bp73+kmMmho^<J#zDaAAiS9P#l5|CxaeWc{lV1sG!R2_604v#a5G4
zmfvLr<<*-H@3`K$8+)U|vGWAld1`kVAd;as?mBSXe0cBRT@XtE&H@(^uUNqR*c+7>
z?z-N%dFn1`LuRoUsIz{B(e;EMe<$cr_q#V<UH}bc-g^C_^+3r~&<S!4pz>b$E~8iT
zK~P}?cEn5Y@(sq`@PA;z8wc;k-gtfI?v0m|L7H#81np6T)!q|8vug|t4)Yyg<C~$K
zPn+LpbjE^?o9!(9(_PAOm-()U%H7x(FAml+G2CU{z}=d0*Y(BCQ;?Rc{9U%2CvW}&
z;k$BorMqK)beI0=d=q;ZT8-Yl@%lBwwh0qlgPj8Wf_y`L{2{d(ICC;EID~dSZF~bN
z$C_;!CbVZT@V6XbVqiGV3g&<|{kVPrUESsS1hkf`*YykNRBO=KP=QfLMz8A&&;&JT
zH`)R)_YLU0Ezm(#6O1}CUaaL{V7Tr2;jXNMQAfsY*C%&nFBo-XG}nG%;BNs<V;*PS
zVAPQTa>#MkEnwCMdvFU^+x1DO>yd>ZZQY_SMjfDgUphngG}j(sC=~_wp>}~w0@n?l
zp<7;p9FHytQd((u^TnOg9d~0px?MZELwi6czJ%`Sbv^Q30xT`x?Ro^XG_2G0$X(YR
zcYM)RcDo*Fe!$pzphWbp>jqS5kiEUGM=n})yB=vhP|EaL9IFYh_uO^eaF^A9r#0i=
z&%3gqAba@*)StreI0FMNkAtiNITzLAJ32%6V0auP2vQ31_y#18gABpp@eQE8mWUt%
zsYLep4peE773dzvV#4b^-L5;jL-#BOdAU=x#Hb_VE-Q$AhZhv7cV!#EDdNRl*#t1-
z&0X05qmGP)pj6Z?y2Pj>WAOn{w2K}w>d3hH;*KdOJ>8AHaM$(1T~?6H&6D6<P|WmN
z6k;%FFT!2d3-?aml?BOnyMmT;g0?p(@L*}v`m2CymlCmsAUAb`-Ph@Qqcil*ODXVi
zA27{|*fa~lG=nVyI}xh+E~tkGw^<3B=Bvt3n?d0KOWa_a7occX#-@1&Ofx9>x<y++
zK?HGjGKyvuY?`BCnn9VcTl5M-vl@zKRcxB&V46WWwp$dGTcLh_2`aqdepbV#`Jocj
z&!EWe7EM9e44U9ZM3p)=%}XGfg^|(*#OBvU2%Q?(bY{VHf|6FZXb9Ze*A@t!n%Hz2
zKy(T&1SPv}(J649-L5yfK^Nov=nVbS?fRoT^iQX2M`viyUDuA2hmp%w0qD6h3{W}}
zRL(ZPsc5!kffTa-pqrXl!5mP5;0nHB^0@0AP`P&86>|21>mLXYJcNDR^$mzO;jZfo
zP*nv<|5Z#SOt0PUy8gIv;BM@XUe_Psq8fBa5z7m99tMWHu`fVnG-x>y$gz!|7#J8D
zI$c+EhOX&#1s$Qs^5Ow#uT|`e*UOH(egGH6u3td*z{~=jQP1*XH$)M{@*mL52ew@P
zuImSo<sVQrbU`${K6}^o#$DD9L2v;Wd!gI)MR(|%PS+Eip=Ss=%pGFHUDp?PTrb?L
zoyWi3bslu*(VUyPb8gEr7<Xjc%$;|e6~wq3`{AzZhr6s3pjNE_`Hw{fEH(owHUTtu
z96ALS3JW?zm-M<W0M%<RZh^Lh#XbNv=~z@iUU5-jd2tjh_yQc_D4ymy&icWqBLg%V
z@tO<51_d41GMEDvfQ&|S0N7C=le57lqgfXQ7JSic3o@IbL>ALt0(QaN%?mc@05<19
z&S_+M@ro0aICdOoeE_a^LCv)TcU@6DsdCqK$6ePG(8w-ldMyld85cww$ot1x1&pCp
zIBAJC=s#E|H1b@3+&hVpfZf1u#F~JSqfQ>8?DeefP>zM5q|nLK9m=y1<Sr0PU?C_t
zK`fDlAkTI(ojeR0)&@lw0|V^*CkD`5JOj8b1j>8Owj7Xb3YzUY&I;y$vuOuN8~j*X
zaI53E>mE>sfu4j5IR@9^IE#vcaR+EHg(bik)KCJqn;;Ry^Wwwr|Nn2Zf)w11y|56Z
z0CaR{LpSIGjVqn4pf!4(Q$aJ`&9w~-rP5$)AT6F&P<ym<DrlSEOHkJbyA()UW$Mir
zcfczU@6H7+>FI6-lT$(S^T<~8x;B8?Lk$d-Cf%+LkoHi+U9cPOfG=mmuf5x~0n$j)
zx(jw2ZaoN>_qsNKT22k%mXi+gcD<g|4Ys2j?0-lt04b3dCm45Rbc&`JcVygkop6`c
zKonZwfYLCl1(bIHbo42xEIiO1dIVYufDMEMXfK2f%Acp%K-mMFT|vbGq@>&i7M#)R
zIs>%7!IhvPZD92mAeMrPBaq33aKVNI_Ihx82IO{dYo?s(wctV!uN&->PS*>ap;wNx
zf<(Z{juqrTP+FUC7c6+!^#Uw+vc3d0s6ocLb|Az+gUpabg%Usq?(l-lgxvZL^);xZ
znsD>LjgvP{+&c*|9?Y5xN{qeW<Nz)xH-dJb#h!p{P40F*(H(jQZ%8&GtA~|7ptF_l
z#)3A!f<y8`cjy(ohS*>;L>(-6;pKbKU<Ig_0r?3Yju`0zn%`V^-1~SJbV(4XdD`g;
zDoBpIHh@Ncq2vC&t_}Y=z!`|?wa#7F1)%otTu|DD2NdXXT~Jgm1CPQjn9%F`;y=Ud
z<Grpsz_l-=Lg@rc-hfpoJ3xU4>ehoY{fh}K3=FVkz94tt^E_NrG+5IcupQtU9xekq
zvki2c3@B-X+9xpMKv4%NM-UMR*92N`dK}ck08O_)uy%b?THEdV#@h8mX=%6X18dhe
zrM%s)4;DKZcVxVD1UHHwbceptJk)ui`3G~U6u8u4c75OhR&m_*52!YHDFIQ~*%|^`
z7zQS-UEkDkcDueo7K7+v<(be9u0vlw1UEoImh!iPdUM^bPpn-(@VEAW+m=tdLmz<b
z?F1hX)4UgS3JgOf+jsDpHxMpkscyIHgU(hTu(cr4+Vx2-XSeGUWHGR{FH0bnb+&?b
zMt6frYu6_rH$FiY11mm`aHB0)8^SH1l~K)mK_u8MAO?iX$lp32>~2tC^0!U~vmbP}
zf>s}OgGq#SU@_M>+F)T&xSD{y0UFoqZUvDDZ-96ZF=kd!jR6Vxm&;(rgLW5pgZCIC
zj7Nx}`3BT>e$d$px^}4>Od|9k#5y78xPVDSEP@tIb%Vt^TXn#}4I-^wKY&8;1F{&J
zoz1qO_+}_Eht#K_^m3d<MPNdE#)}JbObo|aR2)RXT{RX^nggX%&;-kiC6Y`GFXVZc
z7><Lt`+y3<=Gs3Dr5w$*KNw1xUUNajLB@51Rdl-kInLSuYn8CJfLXAC1y+#Ro#31P
zVEG-)`One37j*p}LnYH|qq|`3;EWHNG3W&!`vcB*9iVLd0z7FU3$g;5_jjXJ_aMiE
zEb4Xr0~$U9t$R0sv<5^9j5{)3fL1nxS}UN!0Ms(!0p}(VOQ75JOD9veuLyEIz}Okc
z(j6+X5M(4sQf48@?ru?#*E%7R3JXCNfFxBGf~@EkEdkYtAjy-5CxFM61VBgfhVtBH
zxWjZe_6Mx@@}V>I%U#zGCl7<wRDj0I16V-ET!JKyyMo&n&=yX&tH5oByU+skxa$f~
zR2+8&b>SF5r(uHEVBK~701CHQXzLeN>wzwLyBqrgbd^cy7g)vpp&P^o)p0O!P`3ca
zKF}F@WCE!7;Q9etp;a-Ju)g#G%?-F-xQi-k1{OVmCJMUN@2=|sG*Qs9nC?&xP-rlC
zbTYxZBq0AnefR-XMWFd$C#aSI`9R<{!yVrjchP+~6D)rNbWd978b}AH+f@J*kTal#
zW3THBP{lF>l*9z@x}Lb>`r>Zvi3z=~fBrMPeuN|7oWRCDxa<1hPU!{=OF^qHL8nEy
zuIL6?3JNluma@KF2Qtg`z#Z2IcViDg?Y(~zHeLvdO%MjBgNWm<A3!+@>huYq`%n&a
zf-W`^=w|qS!_xIdJ#V+`i%!=M5a-_mTMLr-P|DHm`k~YH$!l(~f+t`FVCin(CyWO{
zl83(E>UI^-7U;ZSd9aQPYW9!U9Nn%@7!P!Uy44b34a}}Tz!AjL&A{yX#{qP$TIie3
z3kQG5AABL-%OY^`2jc-y#nAkNu~Zmza<v6hDK}{1GgP8m$g2}{_d~M<LkX%7$8Cn2
zFF+A|q1zS0et8#k9NY<z=b=+npj^Pv>AL5*D`+(pL$B)|P|WQC#hk-k*8_KaFWiki
z0O}jPfVDSxAWb1i(grniK+VPj;L-v-(*us^FaH@{Zw70Frs!g(*F2Dh3M|D)fKtp3
zxV<|-_U-`Ls|j}P9p4joV>k4=Zh)LN%i^HWn(;yoG&uyf;1uYjT5!7zTr`|K3>^dp
zMJHs00&*T8IG!ayrS8P`j2C{AOyEq+qN1P#E`&Kiix|M}R~7+D@qmgrs1&GN21{{>
zFfqJnW&;=AP<<ddh8O>(m>8h;!YFswkRZ3fAh)1EH=jVaKp!`cAQz_~myjUO0RP~~
zP`|*Spg^C%Kp&5wkRYcZcc%a+AIIPjSEs1ZP+$Kb57&?&7x&<h&TnVWoPnO*3yQD?
zd$7Ms)Ifc=<~JFgv0u7lIXX*!beBqW*8b^cZvMet?($!yRYkcqV?u&*Yeo?gernX3
z@!qI4<EK$;hLLe=hK+G+hMRF~Mu2f^Mxk+Q26A}q_z$Y=V!w2k{^+g+543|yc~B^U
zul+dD37#rp0bMo$nkM=y#l*nB&G!WVwx7N3^P7K2mgn+s3q8r=*z0?;!}WOQ`3~0;
zy-pwr{<gn-3=I6+LQnPjGs1)pLWEBD`ZK|VS|LJbdi|MULY{n}-Ha^!+iK53Ea7kC
z1*`HsaU62DdBe|O{+74A3=9oFUHDs`@Pbw%fY<Ug{B-7TIRTc4;&0i{3u*;!X+2OX
z&>gw~JQUq}iN6IjcMb9-XdOkb@5$cUBcR<{kn7cXK!PvCq?j0beNThV{1yQpUIS7N
zZcV$W@POzSUnD^)ZuW*A0)>zd<UU`JUeF{0h<<Sil=hfGr%Jb!bArxBW~$=^&8xRC
zvN3>;N(65$1`XvdfTll?F1T(MNhSu+DvTJ=WpOSlEQ^#{GkQyJK&GcSKu!QD1<@~V
zN`RD>^6Ul;%5~m&sRuoOcPU6q?G1>(P_-<BXkp(CI*9o7X^<;cfK-RxfZSe#s=5NK
zy5tf_*=mq7@NL={K@td2wi={t9Y`5==W0QefiBTz*$7gG-HFU#W&ACXpoKLqDlA(-
zO0m1|hBzny_*+10P(hY&2PwsF>RO1>R?r@pm#0Cqgf^f<16X!pi-QKR;!@BIC?x#B
z{(ij*5~3`7u<7vu>)~&C0@~IAxuM(*#01~V)5-^Cf^Ly$DFz*30kM1^HiMWU2DN&F
zHc)JHy<y{C!eQgf-zp7_-2)&`f>R$TB2d!K2{A}`$U&7J0x7LM1aUS8iqg4IrJq3)
z+b$|BM?gw_4|Vc@LIqW65mYH?dK?tW$3RL;4?$BTimC2UrE{UCo&YJu?p7J7(jutR
zQy`_--TF}!;w^Wm(la2X*xh;zqO|qhpa1_~ivLAg{|5;KmUGyGd;(ZksWZrTc=B5&
zSQ&roM9><4SA}K^2mbj7`M2HlZhri*`LM#vO3;ozNX%ZqW{oCTf2jf78tkc>39O92
zRSUG^$<E>REU42#A%qd-S4ALU^A}<FC2V%D1*<E`1m6(O-*OJLG!o*}E7+9RftB;O
zf=;IZIrkbU$gw*YbYDBDz^eZJ|3A2BdszrNvmT`DCP){!Fn9^tZ2_%*Ap1R_p1On0
zb_R&;Eg(<51ReYjReTSd;>*I|5NMqQT5Jm|FtHZ`D<Dc+PJ^yPbx~n?0CFEVZ-c@W
zRHnkq)>^1i&@mezuRI1Rg?MEFDC|J@-9yR-upowhTd4koU!b*%8^G(Ue*ORdx}(!Z
z#qc)BM69Jh8$??x_^MDB6&7$&j@^Z~g+Tr;<=WlAz`*eGFX)z27Znz8X^!3ZtH2sc
z&Vwumm*&`A-V9N;0;CLFnq!al7>Ke)kTP&-j@^}}U}gL*VaTO9cK2~Xl(riE{Qn<(
z9UQjwg0<|uAP5c$J!s<o2wG$ci(ag*e|Z_Saj<kt>o@*Z@H{2>GNe|}=neQDF#eXc
zpo`)m83b!79SgRSzZJALwW0QgJAZ36)K+l$jJ+V!fM{y*L@uAPm!y9MKwjc+ffeQ8
z@)>(cdI_o&R+NLwXY9q}a;Q>RQ4TJjvAeYfsuWg~gG!%X>~0N&Duos0;PM%(TVINU
z*3E!dl|!>M_WTbu5Ofpj%WOntjXnSKgF_0uv+*S>viacqh(YNSYgU^L)u#e&XyM6f
z1z@G6TwnuVPWtvAbm0iTtY#0^KrpLGK$H>6Y9IMPJ}e=W)lPwx@wa>eoref(IAPCf
z^Px(QLzRLXPS}fs5<Vt|m-D~={|}8YtQpWBYTkeFpdzT5(+aw443ZyPK|4sH*(wZS
z5Y}wP1~I5r@9Y2n{78)-IjBSNWUkY^pits(0bhCRqQU}h{9sS83!q9tdp<$w15f5E
zg(_u)W?4L$%L}UX8nl^$Cv(X|m9B;=#gn<d@IbuP09A@RbG<kTQQG?P^Z)-Z13>#|
zz&Q=lKZZsh*8DaBqOqk5bSzg8f&7*XQQRsI4G}~o`f@+ijo>yE)`ItiDp+?Z*KW}A
z+n4U2;kBd9=l}m-uScxMJMOv#)D?bd`U$iba|4(y@ag~mP97Cdr}J2cE9lZW7Er|t
zk^@!TAo@iJ4->=7Qy*apL%|9|Al)>O0=PnLkitH=LSL{#XnzhxArnYp5L_W{6K`@e
zF}xImE5vQ$29UyAAO8Q}0qSqRECaDX?dX>|A3)(D(k<4_09o4}06Ee3X6=D)*8?|r
zUnsR^q(M$A-FGv0-|g5PH**hkyY6^t3^D@b>X(`zmJz5)AP-_mf>@#-z#B#1K$=f1
zA0RZx7p2yW7a}Vd7+!vP4_5F)sWs#EUC0PWXy?=5ZdVTeZ35k{Jp9`v3=de`;-7M$
z^+2gI|F%>7+b;J;&TsxLS<c-2QlU2r%6z3@c);=^|C9sKv9NI(h-uLEfea7qi;hIq
za4~$a554)K^J)0a7h%DTZ$LM#g2t#qIY7JGIJ#X$x-Gh0CGIlZoeG-sx%unnDah3C
z&677i-8^+Sw&Ui>yRj4Q#x~q#Id#|N6vtgA&}K@|Lh6$@AKpB5^Wn|Ipq2CY4&OWo
zUJwad2Fc$%6SR)t24sE~x;B!(xdbeD^ToYSH&5L-dGqAm&>eS9-8loY;KjXDcVlmW
zSPwvJwOIb$WdohM3v$2)&_Xzue;hYK_JQ_to`J5r76lu37kq4R^AFHe{*Ak?9XC%y
zMXtd_?wtlX4I+N`_PjFZo2Twh1ueMjo(sBu=;phdr$DEX-M!h}3leR7{Qv*|`gz4{
zji8fK8aly(onWPRTR{rIhjkse`4Da*e_IqM0|V%Ae~>iUrlL6N;9b`ZH&1p$EPM#^
zJH%a`t}E^x?2KJ=*L4MCzjgCD(9uY-D?kF^xz?K}p%P1>5>vsh+6wmTL70h+&p^He
z&0>}=x$C+BswD}mWdX?U7oej`@02dM`Qql88z({Y#piCEx_SD>$D3zwe7<?+-l>~s
zZ=422*alEU-F1C&<1B~)3(I-@O<O@nCf&Sy2V~l5u--Eu=BXQJZ=Sr9`v62-xOwL8
zRL~6R&C~bJfColz+&gvS<h@rn58mOuVBDGkN&qK7vHIe!>w%l6Zk)M!3KE^*(Nq2=
zMt0E6Adr;<HxJ%Bb?+e95x?&EPJqShJpN|zocu$`iOj9@K)ZaqW<WOog3{AzP<jF%
zk6R29JaF$YNGm8&gVyxky)}=&$%~DF;l|4whi{&~cL<uOL8%^u!S|xvJPC2`JpN{W
z&@BDUn<t^;v}JO4Z-H0ifc)!w0dzmbje9Te^nyHn<KxX!pfTN(5YM!gu!1}Tat-J#
zWl*fmgCt2vk}4L13Ew=4EDjns<milG0cnI>X@jDTznKR#-3`9$21Q$~Mkjw~JWF?|
z4$_@npyfO}Kv54eZ61F!c)!SvZdZw$FYYqjJaF&yUDp*iPv7xfaPu@Mbms9l_kpIX
zZ`^fVaPuHYcE`<=H%{Gr0g}9XYu?@18T?H#AQi3)V7nrkY{2{-H$LAx1x|Ox0(Wmf
zJ0RfwG&f(|b=`6E1;_=UXlee#406>1Xowbxf@MJ=2{ICNHbODW-5WPwfDS6H)w#<6
zx;_RJd!XXz<^hmH<`uKuy?OH>C{iHt1lrAa_X+5Hu;zY{;Wuxdym9vCnY+*KKe%~j
z-W}H&cX)3Yw`LTx-Mw@3=*=@X&p;IiffV0>Wc+#j&BhS!3#dR98-EJ}Gw3wzn`gl1
zVZXWm;O^~t{B5g2+h{;bqCgIQ2)4EZBy<Dhlan{jfCBFn<i?nr;DzL%MAsY&x+mh~
z-MOH%DInLFbi2xcE;sVk0iDl&SK=<yjWc(p?lM9H3S_+?69dD&(>G6b*J|9A>}CR8
zMjk5D$=+Gc0@~rr)Ex!7u{@5Y+f@f??>*?GSN<;0c_iJg8r>4z1uUK5)Y1tqGoXdu
zLvTRyH`jya%Wl9DJSb2>5?}{|PBglE1EROPRsvZ&EKWe-c=O~ukQ3pd%-_rnGV>O=
zTm@ANkSYYUx$!QjN`M3yXrl-ymZ7N#<XKQ%cJsx}Q{b?M9JpQ<3|h7WPiw^%ccEc?
z3RK8}3@%o@d+Xjw&_xTS8h0h`@ZFVbJOVNZyq^t{3h&-{efRFo*T-P%>mf#hLU~@X
z*xj3uNCO!NiL9HaUa!1+<Mj*p{*=2nz_xa~D%|m1a985>JoNnqH(!FL$`R^sy%Yr>
zECSoVb{l-a5JLXu%jKY!;y0N5t(TxvX~5QiPN1{~ZA(LHf5Ih{KoVsPpwkRqDuTLe
zkYk1J-h8<RdA#oK&6mX}d~i~Q_*WU`U*tpzsxDtf!CSp|Z@j(@2{}mn7i8aE*B#*5
zBybQ2-j#US2~rNV|MpAJW+;UJ?z~(H8dHP&@5aj<G(IOP|L%>K*Fo1gLe0DJ@+5em
z2oXNHDEyl*tx@<lUj7GP3=C5bsv5wxBuc@Fv%D=;xq0B`DNy*_y*aOwuQQINnCI@z
zZeNYNk}ubR4}pFC2_-yky?pl*X?*m?!IvA6`8N;Td;GEku}%2qscu)5dk4E?b?ypu
zyK3B(xGViK?HA&Fqq{d>IwI@83u|Z{x^epEp_>nH9E8`xMarP0H~~~xHh>D|8z&Go
zWXH>!KmPykEn|QQy*vrw-@O5f^bI#p-8c<usDXBloCRO4l>6Z3X=r_Y_TEEKWq$f@
zEVxd%aqrB{lQ&M^jXiPmWJBrshC8k&pe60eo2On{gUm(T-w8V83baoaDZaze_<AV(
zTQ47gcD};Z-+rlz#%D(1-+cKD)cJ+0zxA>mji2-tX;&<$F^^c+3A^9(1N^)p*v?oR
zQ2ATS(H+av&Cp#c(0ZUWv|AoL<F$AKXvxG)&kBv3FFL;kF9dNR-3ia$2*w*f@5UVa
z(J2cOtzhYve|_)njqXqxuujO0nu{+OcVsjlu>luC6BdGbKUm9^{;RYuv2V@jEo0bY
z-<ko!ZqBV42`;S}&plf+?7Uhtn(Z0+TcVj6K(k%2P2>#rtr;)Mr!X??0{INox|aak
z)y)rfrzd~MNl<~y%3<G{(Rrft{9RT7`_>Hb9ytG-FK)i$?-T-6J+<%nx4XWB_JQ8q
zb-DKA<{`-ODf7S;?xDLe*M4-1f_w#%1m%Z${7n}a85nLHxtaUscI=Crx$nAbML?7J
zF4O-&R62Qff_3nB%w=R?faDU8Zeom1!7%#fK~%#bW`oQF6;b${3ECr$>P+&@0<B}A
zj#)(^sOF&huK6Vk#Dn~uCqWA`K-J6*(1tUa;|!oa?G6wDPD(E~AeZMip1fWK328|A
zeB%k~c}O>&y!?z@zub88aypXvujk!(@=_agdddO*7SIjZpc&TQyMIAD2bpS;Z<3Qv
ziZqZs>WPs^Al`i0@%R7#8&6(eyURv6c@&x7IC8TVl-@j%lPw}4f;ODNQz6s>(6LZA
zp1eMe=7*PApvnq<zF&78=vF>oiOy=4#^>N}6LTkHXC+Iws|=`B!ocv-5mY_dfDSST
zkCK2hpjiVW!{QCb9T|{lSzz3e(ajIehmc%YQ3c9-;9LjJr~cp}PySBO%0<HihW|TV
zuKnq};oMns?T3?Rg-5T*wd0WcQhS}5n-8-bhuoTq(sW0@U6+C3xD#ZjwG()!b@L&G
z=9es$yTO((1i8!b(oWEdV9*h;pnHLQj{VsIo|j<;l^T#_lnFWn<UmO?IL1MjYJm1G
ziWvTP_5?Z0@PB8`wLebaUG0#=puk5K?*^OV242q5`SbNf@DZ?`sG$Q|*9H!y4V{b(
z-M$jtjNO6opaX3|UHk!5qKbY2kv1wXR`!FgU68m7Ey(1-zUaK^+3EX)zvD6k0|O}P
zeMN4*0LA^ycgI~Hfbv4;r@P=n4pxSBGu}MZ>3Zib)7{tiAIvM}xO)Rq^nqHi^Z1*t
zurM%yu1|p#U9K;zUGMO>f-bS^c74!%h@<%+%YWAg|9zi;t>^CmU3394^9C+66R?<h
zgTEED0uHO0;DZJr4LH!SE`#Bv9iT|+<OLP8AP<W^Fz(1${KU8;qr&gz3-EbTkdn36
z>3=}4^Z(l{DxEAUkjm%Y&%3N3<u^~>I0PDSx%uGcNl>Bf<at*XBo4_1;3{eN-5cGt
zGN5Au7$AqCK@va)Xb&zcC@#7~CGIjoyI}mym7p5uJ~%b|g98Jcg!wx>Ks_RGb<+6*
zoV3AbH&}qGlhb!YFLe7}=#IStE}y|Mz<U!Udh;|yywm5}kItBD(3%3Q3Ou;e^bu6>
zA3|j1SV)~R8LHCBAL0@Ij(wndjcjWw@mm9NzZ1kRa=ZaLnD+*5Z%}OhY6b=d+L>SE
zjmK=K=J)Wr33LrFBn5+xj*!^_DhQ6Vf$}3HO^JN}|Nq9L*PCxVdI?&OedE!~m;XQ_
zFPo4noufA%z2t&cI<G<J+<>mF*bc39vcTyEl4`)|g!t4{q=n>-o2UJ|(GwFSeqZ{4
z>YhihuOQpR1}Qg)O0~q=WAq>7_t#fI4Nz!*<mTy@=6~V$3xJl7LN{hZ<spIl@(yV3
zAEfQZL-6UWP~oG9juBM-jfXGQLH!>a6>zza+)P}20JNyMyAoPe-E}$kV<AZB=0gw@
zJT6tmR3f?%RC_i5V5#SJSPWvm1Wg=w%fAF&f`L}DzxW3#(b;=>9J*a40%7IQjRSW@
z8B97d?lQoNkhXoGY2OkR7SLhdkQoyWP>leu8KyOZ?%<MG2-4PV%3{)y(aGFd%<{4g
zbR`CCs2fcCxrDd}NBX#h^p=6!L7?S!pd)iYtNdUXRHs4MAE0Xh(cAZpZ*;(05M;W2
zRk}lMx*57-Lpoj8bi3+wTXy@Jbk?ruHs~x}(p|~{;>UE>F6d?g-3spN0$O-E19Dy@
zWTg(v0WZi(NRX}YSrE|||NnQoPU&{#X}12)Kjjerwolyxy<Y#De=_p7o9Hkwbh}Og
zEnd(BF>6IYH*E`a^YgDi$atU=yuZkUzlRqj2T^udn}MPE7Yl!zt`_LN_?Y8Npc9<B
zV`D%^MwRm325afA4Y(^`qJ5l2<)Bw<#`hb&rEfZ2-@sA;XiDUT-nIY#8;^ke4(@%l
zek=WWoJHk~S8GOhtU!0I2x!(0q#3mFHAaP}vqnV#x{+Vx0>qmVP+A6L-f<Td(Bf%^
z7t5}Jyn6z)zMDnm3PdFf$RLnzaHQ9O55B-}O2W1O|3Meix*j?13OYoa;kYaKJjrfG
z(5k;a9!=2c5>r~g@wYH)GB7m1VCr;z(k<`J-vLt99Xg}ibxC)vLwBjh!AH!X<Jza@
zfLgk(pi@ITOH_EeeZecwZa|#J@xZG!1F|kl;E7jj#tWfFP_sjzvqpsn6bv9`kma*r
zm7t^wR`$99bPo^6WX9v&V6z#Ic~_)@EpWxO0DOlI#Da|=ovs8e=mIHgMYDjv(+ae%
z)b#}DxWT^9>Yxi31wbb?@%QWjt%36u>2^J0&B))g4zyv|wF8tGyGtAVI=9AvFSK9>
z%__Qr4i5*d-|h8%0$QO7niZ-Q0qv~{l>l8^RieTHI)~0zqtiu21a$bPE9k-_p6*(c
zP8SuKZdU`)X(!#GHk~ml65X*Doh~XG-L4LuJ}L^GB`PYQ)s!_VI=!_QI%8BoN=<r0
z&m4EX0?LWU(Karh0SR`xs91EzMs&Nnbe5>Nbo+XA)~I-Nx~SN6yT)|-s5o@SsQ7e-
zs04JnsDvDMQHcQg>BXNu28NsOKs(q#135Rr7dUSQ<>go&&?;U={+24x8J9np`CAH^
zK<7%F>2~!2?Suv&fdRUu`QFdF63w*@OeG@!T|55wg2Sg1bSCf1N1&BqwH=K7Euif(
zAT_0Tnrl0lO0OMfQ8^CEB(4G7;N^=lAh&>OlUh(%@pQZDfU;R<j0))DBv1^CfKIr0
zA)gLP&;cMhs0kn?-OSx`pu;b~W|X?{uRq)!E6`b@A_2OBp;zP}C`>^YGPtOSytte8
z|9^L_$K6)Y!0=u9m!6<eKFIJNWW5*Y=&n!?kW(1DOEtP{bwGK-H=x^9;4Tx)5|E{!
z^a;w&kRj$y9~BXpi(FJ#z>X~fTLsbyl>r$V>H=E94RTS83P-oE04N23_NsI<cN@Zu
z_fe66TmjJ;qayM`3uKO~NVkMHe+TG%^KRD}-K7rQ;7de1TS2F3ce^eDWzSa7!Nj2K
z)*XtOZ$v-~CL#HzvKEptOYmpRAdoV!`JmgPKxQ)@_vY^aEsX(Nf<O0*fONZpq5*I2
ze_I2}{UA>uTheLv|NnpRVMd^>DBYzZ-L(QYe|58Ui}SBPbnhhNfq-sTA4v6h^VhwP
zcO_m{gX{d4C7_vo*9oAMV0f~#7c^~W89Jdp;D0NK*&REfJM=_1gk2laT`JHS)BcC?
za%b#>ZZXTy3AGyCt`ly)>-JsK9XkPhtK`A%QVGTz$kq9V|E?2WukNj4>~@Xlo(eM6
zvSz}cPMZn*Een+y7$8F6wtaW0NGJF<NT*Kl_-MD7C3tgjeaL_C%w%^jXsdB|X#`|i
zvAgyN=l~_3wm*zNJ0ViSmKST)yIogwp1b)DbZA(t0{{9CjOXsUeEtDzU99;Jw&L{?
zkc(m?y1_PC)=d7>X)~F>g&E``-zlvp`CDEHf!3fy%CXP}ug<BUEmr&;THFi_-QcMT
zh%1_pF?DVQWnRq>2cI!Pw*En6AZNWFe8AM%3fgpc99sB=df+RPkb2l3?7P7`2fO!z
zjPINa+N#)kyK^rn5coShxj<ETM0YR9?C#hZ-K7z|HH<9Xy`V$8JNH61>@7L?nECtd
zgAbS)KX%Rqoy`6HMkn}6h0eL)t3Mzo?9W{QuBAY?1$6d;PR#Fa1(Oh8R{Vi*J3o1K
z?kxe;0UVuE-+*+KPUxKK^Z);U&(713t1mQvJGWlyj6K5NF^Q9b!M_uHM`|}H-Aw5A
zozOk?3Fw{zm+gPLOC360Te@ZXkGq1`_;-U9dUwY5bl%iF*zG#QvD5bi|N7(IwHCcH
z$G{hoxA3n&bnqE-uaDf1P9GJEZr_$(nd6XaWIYc)VD9V%-AmhBBk`j<c0p$^XvZY~
z`kURp2E8ITyM34R#)$oZSP#04F;t_M=M?Bpnr_H#k0B}w-JvVMx0x&Sid^i5m=z-M
zquX^2_+}P~UY3L1z8t+SY(IKSpMa01IsrOQ2s9TOqoUCrYXT}@drLvP4mi4fWk5w;
zcd1Tih>8TLvI19KE}bzdI^A<Y@zPnNV$fT=15^a|`rd%lTo*b+R7`q9w{+I1IP}(T
z098VrJ}RJk$pc;s)gaYEWgVdC-_UxXj<q{Brjr>o1LC>`G?mKedIpl#+4x(|vokP2
z0twVs0dLgg?*J{i>8_pe{Q_irdh-M3?otQPl>&P~^E}{-X*3Q#XKsGQ47p2zzf+Q*
zfdN#6cZUk}`hwie0zPhx2h<z^-Q0IFjgg@@bVoP1^x^<tCkSqJfEB!0odzngKxTt(
z>jP~M<?jGpA^`1XfDLxVVla!!ivonfAu24LpbHt13=V?I`U-Tnf{X`S%%j2xx-*dj
z;ldYMAO}F)25KIIT@Bjy1m5fXf(K-Z?~d+Jm?@xJf<!P)d6EkEBo?<E1IhaCfI0+Z
zM2rdt<1vIQK!L-e@?suT9mF}HHV~wV2MMZ%R76lUuLT7a3xDTrP_CH^&UxS)oiy)v
z?ged_<?qk~H9K5qfUX+d3d-G}irm+MfBmiQ&>6ip$GX8;z1PIDyH=x@=LTfcZLbVJ
zD2jVQCVamDx~X$&$G`voK@t9d*|W13bTbHlrwb1>#=+Z;dwt)45`E|n#^2yDc6|d2
z#~0^PAfW<Q2aX_6;J88$!+<MWo&xe1$Rbc00NKsoQ2-i}FM}j3u=d{29U$WoVb<yT
zrq>m;k^DtE$Qs`lkX_KAW9&dl0b~m}4&l}~fRu&q=my`S1aUQ}mIM_CAd^8!jqx|=
zFnJdhNPzRhG{BX>41R$eFE5fA8G3!+K+FYMj~=;T_k*1acF>FMAPpdgfXwaneF4$~
z3K)p#aQ9AtDFcNJ+=a-g24OHb9O6M5;Nbu=jYp*uGaM|E5y9QO78Kkp{GF3A(h+|L
zXenN|?~Lxy9>}#%{OeDH3WG<?j29R`^qQRL_FV#MD}k<jodCLRX#I_DaGk+;sM}Qo
zM9k=wxz+g#R04x<mx7GLF?w}Q^#CdFe9y_i&|ND4GM^phYfvm`Ug!;d0d+WJKiZ3y
zBuGl~?dgUq?X7(S>F{%Co&fbELsVE^#3V5?bngWj553UpSa&PPZH$Lo|MPb|2Au>4
znW%-1M|Aswt!G5Heh1k47vNB5QF*}%vtFPZuC&{?2P|Ep0<j;O7;hyqGJt#p_Hnnb
z04Rw;T!7FD^CX%r^FdmD(X0R)4=Pw;$sJTIyeI)F1zUkIzxh2Af2TI64vrP+2Cu*B
zHg@Pdta+?+D`<|NzvBvco$ie8sS7}n4Jr!`_u3qSTq6a#rx#on@UOoGDh^y{fXaei
zkjCy>NPBn*NEdjY{lVwV;1N~N&R!pIOvbZAO9WQ|%zVnC^5SR$BSSA}8XnYwMZTOD
zRNTH;o&ZXaAmc&#A7mwehXzvqcNIX&^@y^$0Awh*Yz75MCn&vxo8^$q8w8RCWipVt
z;D|!cmaYPzi(j=s>U_b~6R2PYnSxY{@PK5AFy%=+G<|})AdtEUyr&A{mSgcS4}xNz
z@i*f!SbBpL{JpM_f?*!W6o`*N?f|(5$wv)vQy7mmuLT7YwEPEE@1-7~^&`!-6BzmX
zXR&}<&Y(qGkR~#Jk0>((!~b4TbF8}++&XieP{H5rI>Dn8%zat<?f?H~aJ!BL(gOb9
z3u;jEck+X-%W=H`UgU%5(QX7)Eu}o&Y@qIbO9iY)n@^xeD-Z6`f?LX+++Y9yhmH%C
z2Hcf<$@=d9|7LLK7IZ%txO00E+_^ms>+X@*xpj*8{~uIs`x5Big1U_S>korExV<*u
z&TWkf4`_tp1p~;0SXk#)`X%VbE>M5ARs__QW$cdC>Gll(^=Dl@?lQo7o1h4-0r#_c
zpncgG6#-CV4(bh1e-+%HT@?QRe|Ic$f3{YnJJbOr4;pd+-Bk?k&w|_ny6^&{KWlTi
zvqnYaMHI-KQju;sZ~hKYBOSFr3%cSKR7O8w?rdEFYL?fi@DS+FuFNB<KidRS)(SEo
zR04s_2KQ${mk$xqpLGH01~+r?_Ge{5$}lW}^k>)q{r?}_pN)m~XPI&LXKNw-*)q^v
zDoXi(oJ9pRKng7`W0!!2*1!V38r`KW{Gb{Qv=$k3{Z^<#ug%Tw*cH7#c0anoeI5Sw
zH$YclvfS#8VgJ$H3hKag#;7QC$Ibw0bam(zxdHB5go=Rn(z~c|bc4n`EI{4qZtxQ4
zP9GH=(6OU0yjn95mEI9Z@4=-LG|CdAA^{oQ0u4B5fD|5gQ857-(dnY10vg$IQ89RN
zwG33ifLz+`I|J$`m{<7MpXdg;<pji&y*^?;x=Ss(L+9|XztGEatrv9He60xRqIu8&
zTd57Wf`vE|+@gdz5Hzf&`2)0j8d4LvsPI4%DyYa)067xWSvl^a0(K?HYn?7Cpk0q(
z*S;_+V`O+)@f*D292~;n@ajei@>-4Vt)LbW$ifd^tr?&|^aWkM2{y3X6|{vIY}RoX
z6|nnyMeg^;9QpwcbJsP!wJ*Roh}X*SuRqoqqM`#at+Pf&rkCYluP-QAB|rgI`U2!x
z9~GX?67cvj=x|_z7n4dE8M;diARR%lk?@f0c6ERSX7^rH7oO^lb%A*q9x*X02E8ID
zK$kj(sOW$inm#HVpbo3A3C!gXV>*36PCEwb8oH=}omTs%xAp|6g9sW614ZzQ-zAI;
zFZH2EB)<dQZ2+2lngC`n)dYg-lWt!ul`fCUi-1U2M&^K3H{j!6Aa#uqNVXSLIsOON
z@{H$RT7jlPKm%zwYVrRO@JbF;J%O66NR`~f2v8aX83-y6K<xs^(L66f1wL&3B4|>f
z<J<rLFIm1pZatI+UFHSy(rVCUUO$*>lEGdAw`@T{$D@K&_k$81#Puamr$E)c0N4Jm
zu$DB;yDxmfZUVKR|AYH9jK^L&fByd;*$QxvwKwz)<8RQ;ex%NeAlM36uL9&@5p1pL
zSK%OUgE~gty&#J^!KW87o&&F|oB;B##YfQc6lVV3YoHs<e;~ygq}oUFAdkw6S>d4G
z1h_o{vJ=z>Kx&WFfNcZyXaDztdVq|_UN(GydZ-kZ3}D{xG*Nls4btH2&}pL5Te<@@
z5Yg$Q0#6PvbV0JQ8r|R?a(Af%sA<v-y?Pa7{7caFbKR~UkhLY?6VN}{Lk75xL&gRD
zI=6z(QsVE>2i>p%84Cn&Q|Jb-+wBgG&^&SQF;nMUk^leyJ2W3+>4Y3_G<O52Hkuj$
zYEweURxo=nsM*pT^`|qorJDmXoCP@$$+Oe9r}LcVJ-6l$|2s=hK#pkQ?+5^mbU~~Q
zZD~Hh)Y%Fe59@Yq0e4<OhXs0cwt|L#AOkm@QyD-FWY-0qQ-6T0-V2ff591j0${g%=
zUDI14^`mnu<nmkz{`JQ}LrmZsgL`YFest~y-(6fA(HmpI(p}pF8hD;702=d-VFHZ@
zb<X_*GBmaaq|xSBx9fu5600AbTfcxB$)Iuc83!LTgIgIrAc^kUCEss%&fNpj6Y2o!
zCT;!j@Be?s!=U!{ea6d-KRWmB00k5HM(*ydpdjn^)#%)N1*GakXX_D=&Q_3q$R(BC
zt`UsKI=6;^g~4Pmn2dGkcKFlT3LYh3gbeI-Zw2u@I*&t6QS|C|ozV$CRZ;VMcc}&c
z`a|xWwMTk+4nq!H?2Y00(d|12JU+Ih*XA5VH+aYmR2hO!W8`0d9W;_4a=m*mh}#Pu
zAzJ||_G%S+S&nzt!biw#R3L>M3#i}&wR6Cs3M%!wOJzW9BhbhhXlk!S1vF0~)9q>l
z881`l-V2VHP|$>r38>NRqhiqQ3z`FP=xznY1E>b-ExpiLqoUDUy9HDU^oDNej8U=Z
zjRhSS51JZ+jGDQq_;l8&1ayWVjhZ=>B1X+ZV>+2Yi>qHi=ZHaTyw{_Smw^sK$2VTK
z1r!UQi=5%(Wf7oc(D{=ae_v^4FuuN0bug&70htZzD?!|VIbMcTq#*iB4j_Xey$evO
z0xDgQdKXF{Sx`?0WOgU0Y{%YT`V|B(pJ1jSl}~p-vP77&1*#6*#Kq_@O$&l~5>!%y
z3ME*P25Md-e3S<=1>z%+Z$R!r@=*ZX6i|N&6jaduQa9Ro83%X{5_!A~l%+7n%RpHX
zX}k=i3)DxhUDDkPVnfHv4j_-0#eid6g%cX%;DQLVgA5v?0gWiVm=_2N+c(`{b>J!u
zG=TF4l+s<mdl@0!$?`x@@PI4=r2&xLXyav|LJcymgp?3Kwm>RRbC5NlNP?&X4c~zy
z92AB~6`%l28OSEE0`wFCaVN-Nu=DQ+AUmH2v<8s_G3*74!WTP0%0SkG%!NAh7}U?O
zboaZ{^#xo*J4^$}y<mqxTnZU+fh$V@DFY3Efy@Psso{1mBpmcX8bA&KnG0%cK#T=x
zg=`&#1UE+jBDkB^f`S{zc-a)__)6~?P}ZLcDxJZ1`yT9eT>@&%y3PQV@vRp?vaU-I
zV`C>kWjuI|8fa_`bpI)T=VS17li<NA_<$EEGa$MNJ3#Ff&<UOy{?KL_fw3_Mf6&+%
z$oOus8$iu8kkyc}vFo6VL%tC?9`@A_Y9-oW6)5_^16JT@2M<b~@`H|tfxQhG4};iB
za6GIZq?NewuoRF|G+*Hv4`Tu6c=&i2_>N{@2T){z#=}6>D~|CnkVe>e*d0(jwt_@J
z^)=|)7SGP!6mX7@XMyH;94+aszOe8E=W<Z6A+@BZ`+^c2$aqlx23bJVcvu3+P)KPA
zDhWY}8L2dM0?C3BJIGvcCPL31knu1nkUE^>VSjue4sRu3$`z<O?B)A5AD9P0Ng8+g
z-Ul)T;v<l6K)yoqQ32c(Q27oDCTRJN7!T{73u+Bo&IQkk_JbBxLK?4@r4wpQn%9CF
zM=bxrv%~*;K?i{HcOC(cgn^o(EdN3G$b%cVosnPv|9|QG7TkF~0a|G>7u3e-c14UA
zl=gIoYJd|ETd&NoUY<jsf$dgM8?!fr;|HQo4eE!6s3`Q-p3wXNI*Jh7HUu3a4;mhD
zmFe^WEd<g5cmF_3E__r#=aGSW(ITKOF{qaf>u!Rk3}Ic)7gs>DSiS<?;3nL078S4~
zYiGc_t*#FI>woo{`~Wptp{_Fc0nUJsp0w`~Sg*Uc^n~UQ&>@9;L2Xe`5es&i3Cv~C
z`ASgNxkg2zGeiZ{^@k5mfE?B7gVgP}PGe+vISI792RhOM4LR`X7hqS0DnMF{AP0cP
zH^B9-2F#Z*AHsUhy)uWoU6+9S=dmuJ*5zJMgC4Y`r`P0QH~8M}UKjHpy``W#T_iv^
z;MSh#^nKCY3u>7|+L)lw<p7OiK-!p~FxLV1wfjL6Y`zXq=Rn=-ItLVp5SLoO+}OPp
z6#x9|kHehV4R!`r$Ibvb7PJ5b#eE=Gz3DA|14<9zHZa(IJ}Lr`_N+v=s}0DtpdkW~
z+d6AhbU@+y;&lom19(X$sAu`^H?(It0nC8)EO8V%4xXUu8CTCz$rF|*|M!CO663L#
zR-l!dc*X<Xdq4^UU&yFFS}AtX17;woq5+kQo#4U}b3EYZ|Nk!qenQ3rtiMCObQ+Wq
z5#s@nDjL+m??ucsBAN&(P^UmzB%s0q<QmX;0jLs!HxX<>Zt4ZK5B`JOY>ek#CWE$X
zfjkM;3YvHlQR(#sO=g0M8>ChUBghKSBrez~p>IIdFUTU-H=yYUxD~hDLEZ*6{JN)t
zEb43pwHO$$A;tqDU_&0?phF&bM{&A9=7C2_;oWwmQJfr*Y%8eA{=XO0!eu=6ash0B
z1M7HzHAsUi@_2v?(s+O@NVXN!PwAcuG8D8HqZMrKz3x~I#^2!a058Y_oR=T({QvLO
z30}1GGWZT?`2GkZf1liq|Nme9yAF=czE{^l>%*piZf(DR9dx2c18D8_%gfjQ|A*`X
z0-ca5(0ZwJD(Fxa{=OV=3reJ$qxB?zUm)nnys4nu)0=-W^7j~l<Z5NQTR|e0?6rK|
zwK2!p!B=ojy88crXD>(`w1Bk-boW7btqPLL*qGzYKR}D1GC(R3X6^%>J6)@Tq|!I$
zIO8{vO1rE7|2O|)?7YC=(+5%&YGTP$%h&B1bDZG|NL~&k|C6!vL``;gtqs^cAX`3x
z<e0Ah|KHsT@)GC@RLgE(7fVK{-VY%8M^`}dpndn2%>2DquKfQGI+E%PNHjF&IMW-D
zntfMb*R&r1Ev$ylSAv&9z3u~3;G4R@tWI#4yacV^M&^TRA7uVMP=f{Jfj=M%VnNn{
zy!#i#^S=T)-UwXKxq^}!Xj>X+T7w5X*vz8x;=yiEq?Yn^gZv3v*!)roWP~eEx4_GP
zm!YnOEDwJ9_%dWuqf3apYlL&>H;@^isE6%e%mE#6TMJ&Ue52b{;5a*I#bq}~FH0|I
zqfn>o6_3ty{5|tP%c)!)K#Q6$IPgz7)OwPC+admra&88O=AVq6r}%qfxEUBMLvQf+
zCUY?`9B2Ox8r%_Yy;RC~+x1F!sm)!vZt>PjC7Q=sR4$aaW_-WZTl=9i^h0M2xHknp
z9rne}mH+?4u5q8xdZ6?(C{1!S|75It*<EVVE!O;tu}-Ty_C~MMznkwsl~b%pFN?rk
zm%~3GD`}WYczUD$ci!rh11(tPgWi~Id8$^W+x13o(SMMp54|#C-K8RTS?<B~utWC+
zb-P-0OEmvxtTXB^z0vCow&GZKsYox21oApLk#1j$UT5%xR;)=UV>ef~aOYvm)1XZz
z47Ez#zBhWE!4@6t_62KYIS8|ebss3)EpPF+i2wip-|`lJ?+eiMVCaM9UrhWh`#`s_
z|6=5CnGX_lHR&zA)6LQ8`vf*#+Z*-2`8Q}yIOw=6*E^tS?2Z-a72)djVzlP2R{@6$
z*yh8%G6LP9B6nGC!E9zf?s^AgcV~%;3Fw^aP|$*H2T%_qRsyuD*Hr}64DAjDH6VCE
z3w(V*YdAqGRz*M~Krt!;-LasG8M?GrqBj(Ddz%KRX7o`}==FU7UZLv>T8OIx8tMVn
zkD#SdFUof_Fm$uG9w<%kc74+Adx!C0bL|7BPTwab2Hma})*Q7Q-JuU&DuU8VtVMUN
zO(*wl*DH7BUw-@h|3BLPcu*7ug8g@)SB4A8f2CWiHXnC=0NP*ndKJi;Qj1Qums>y+
zOvvkBk0Zh?kl9+eUKJEzj*Q)*BA{e(xL1bbuFEX}^bkAlqGE8Pyfp)KI!-KT&8|sz
zC}<jp1vLC2qXJsk2yT?gfYz=<0!gIXRRJ`W*&Pa+&XDMK)#!{-QR$6j?DhrCDJnpg
zN6Ykvg04aWhhgjoaG<%USakZR*npOny|CK_2{`^%&}FdQp?5$9Z_8&;!RvYhw372l
zckC0;E`S@|u_AX}4s(DVUdmU+1NG-FPyzubEMriDfqR3aI~KHt)&%USP?2t5NCMyi
zHUGO~K`sXEU<6Hgb%#O|fCA`x$8KK($bg_uXN-zWZ!9PQsDKgxsM+bG0#a%L8ib8e
z0X6DC9<_N<xfA9I&`dI@K?+KIz5@SUpLB<Umy^5lfCj<4eL;;(NI1uWw6b)&g4(k@
zkQ6BZNs$WOzBZuQU{Hz-Q31_Hfjt3gh=b;md{ittV^lyYR6rqIqXIHW<Hgq<3=E)>
zr<AAL_laYt?~|9!pu1XKpLBzhNiXOeLf0qVwHBT1FB?FuEZF{VM9d3-PJjmGoKPN6
zaDn4nq!SeRpfOS&h<jKdZj}K=H@NKx3N8gu0L7??KoSNxd_q*fxhDqPo6vy9J0#A%
zKu%=`9pz~Ta-#2(=7UTxy&&f{LITGXw6Yr1w1vf9tO7Xu!a@-;Wep8FP+Wq8E<{BJ
zvb<3Q5>5(`ga{6%7!?UfT!IoQXeA^f3GUtwjlGsb;MxirNYTIk|8M@s#NQeL3c6B@
z|7@Tv><w!6{$u2CwFGT63jPmT^)C#P(1h(r>I{9-d9k<j4y-)uc75OhTC~s(+F1%s
zw9P-6>Qq4)J@PLoQ{Lzm;RYw~%OAkWyNam<sU$Oi=E)ir2XgXch>A>aD5&59XGl;E
zjfG~&JD`*bTIUH`<7(6C`vDSO;E;K-bQ?5OS|@`1@B5_N^^PXIR1*M~YW)46t8rg~
zybkgV_EPI=)n!<zbqdt1pdbhkDFS=Z6rv&kDU85HQ;Z4^Bt3$QCU7vk>2y(n1p_om
zYIM8a0hL71FnEI;1`D^s!k`y)x+=7Ax(_Oxe4pHW2QFCu!RluYc>RpEbP_=?oj_ZQ
zz!@7<J%u7lCmy8I3AuWLmbIXa51zP1E}aZIL0e8hMG|xeN{EUD$W!3D>Gl=|hHn1W
zll-l}LHQoE?AMi}J5=Pq?-S7e1<>U;Jdkow0bUlwf~*0TPH-ncvzP>A#R#~*^icun
z0DA&fI>o41bcSG-PT?RofU|rSBsGEdF24kAXare#2VU_IieY%1f@2sS-{2SqCGE)n
zkoW^fGC0aXopMO!16o=Ks@%cp8x%S(4sK>(=$3E2&EE<-g|*xFN%Kplm&u^RXi8KJ
zAVoOBK_cC>EQHKJP5}i_%l&`<|Gz8)l`fEFBhY5&Sx}E4R>4xZmhU+G&;S4bzij&o
zKEI?pRHIv}^>&>E=xz?7)=MRFP#qH)7#J)s*YY1{{|-_f4pLsC#?T#W&@J40sZIoR
zk_UI|$r7>Ve~g_UYvL?V)p8$a{|Zv8{S~xQ$ONp8#qv`f_i=V`4@4Lw?rYI4*m|iB
zD*hRy{`VKq%BL%qp%?gj-+uwM+4)<afBFCaIQvJC^qnvN|AY5)zn;AdR9(MJ{r~?z
zgry0Z%7l0n+TVbP&-w!EuN`Lx_ZDV+0UZHTqQ-FC6*P#-@G=Y}Fku4dj+XGS;N~~r
zi%Dulx=SUx1zIoh_c?;HsjEP@1poTWofl?)|J`}elfOfok%8ghW9H5i-Jv|4u^(=}
z>pcDaa`R(mkIvXPH(&5~ZUXJ0W&&@C2Tj1uVPs&q`4Dt|6Xbx8wmL=zhC4rRp1g75
z4&RMKcjfNNgRbE?<jLO=4O%`}qQ-C+p&R4`6y2b`fmn1SX?X|Q&5vv$DBkgFnT@KY
ztPYQIrjh_82bCFPQQG{Hg}>7rbY1q1yEmGTaDewkf(mYE{M`F^<HQ}dyK=8DLi*Ep
zZ@fMZVL{H<fXlZ*MDN~sSqaKgu=WN_9y~hH3p$_aC8+5KKMx5m{}6O$6IlK_bZhj>
z-2eao!{wX7qAx)!6IyTcw}2L$H~(hl@3sB+|9|surW$)#uriexAbVO8!_%IOhhBpA
z1Hz1c{rc{W*Uu5!b&<7;VblJ4GF<PwyEk6H0`JU)5W%jHZ~%2TL5CS2`lG(!!*m!y
zjf1{rObiSjpzen26HtpAvIe=^6*L>o@nU8iBLjRrWbBT4{H^Is3=CDg-M$icC1D*&
z*eP<IGO%?QFB(C|tTBUhf}0gL9~Lp)d~i1wv|KBp4ZKH}1(Y3M7`B3knG@SuGw#NM
zhe^T0Qmz00-*ugF^W>e{6?bD-fX)`Y>$(Dz5kLpiwe^B;nD4FKaK|<StaAh8JO*Em
z-p~hb-Hdl*XMhH*YE)P}I$a-td<AV$g0A^cGi7AB>pBB;LG;Nx+;^p+hJ)Q%z6W$1
z14lP|Z|$8<8x@aE*E<m1EU*CShy@P=cFL&SjRmjKe=!Y|Z^2%LxbNo4c@Xd3Jkaeb
zaqkgmyG-Z>P}JR(=w|G+QR(&-ff{_5`Q}N`Q1ji;8KB<by_cXZx-dUocu`}*$k6%0
z1LRm~{*FFSqH|r*dCcz)_g!KBjz$IshC9A1I*&KMXSyp~kq2TQY<|gnSGXb?#6H&i
zj^(a!g$Iazy!k!rUEvB-5c^>BOSZeh6-prXvF3N|cZDnX@A$50e!+29x^mu2b&xeT
zUMfH+&<e-9H(m-sc-#<*1w#FWtTP04B=6n;d$!w`<BoD~?U~-t12;ZGee2QbdIq!u
z66Dno6&8?JA(3(KCB&zoEsS?#54`9zhQy2X%O#+WC8#{R@p2{dc{<&$5=d)v7#P4i
z_aI3fOv2JRto;kVF9%#Wd$4qa&UkHn`2YX^`nwFBzJEGHe}FGf1szxjiZ{raMF%=V
ze{}l(0m*>R1DscEefQSQcQ+5-gdJ8{rBEVq_ZBENZ=ATp8qnFAar4)`lbvs34|je8
z9R%?D%iUYAA3*Zm-5ak_j))EIeA?~GahIXnmFMO|5G4RQ#t+1V7=QEhyqgb;+3wx~
z9dmXQ>HyFYiwAGM0||lLdH3eLD#H@hyEpIrzVq|WubZcDoB&k`H&21+dx!2F1UV=6
zFgQPe&l9_O_vY*OcW=HvKVgDvKrmPw7ETZvcHc4V{4MxB$Ojl04%9<@0x4f_vM%Uq
z%>b1m`$4%Bbgb<iP}>0FCxM#>?#7<zmbm#4e2^h%E(x+0|1S9Ixtk9`&Y#CW{UHCg
zi>;SBLm!kV-#mGDE=XOs>xuoK!G+G)6WzXNAnH30cb1;%JO>J^cc2q6Z$b}3Y%ODD
zVBqg^0u?ZzgP3l2yNZA|dv(W3+?BX_@~-sVP|)Fpp)0^wMm_+|9Dr_wy6d_EbjV_<
z!d=ij35bxn>$>5t9O$|-iRS-|{4IIlTASl8L-T(o{uTj728QPU%=|6e8Ni2Nf==Rm
zck^U-0ZX?8sHlLP;|e;h_8aJeW|(xXNT)<+0Sib)cR5S9JXBdx%3aq5-L3+l!ymy%
zZx%U2*V+_ob$;r+0lEGWwCj_tGmNG22q;(~wIA~MO6QHvPp@zF!p}##djnL!-h2SE
z?e*5qZ=mBWAH1Fcug|(&Wp2JRyuA-p_TOayshU^J4&m?bc2xm61|rDT2=xTmfhb~~
zu?sp&m%RM-@BjY^_|4P6Vjd5M7}UIl5c3r9xDT6o93b;R>FDlFc+f*lbo+-fo^{vt
z1}M&BWkAub0*Y>lZdZl75_er!+?57byLWG)r0<iUBaDx`J^`ifdHn4%;563l`vkNJ
z7Ig0W-P<=0-T<e=yRjGM@weUv-Cxsn71UCD0Xk6j-Cfp(F3{n*H~v9#^xd2D?!3Ht
z>Tc+P8z=6@?f_lZddGFg&0qYjpnb;tU0tBM!xeO<@xdDhyIn=@@OE^yX59IE=iJS+
zAV*8we0TF4$iX}Az5^X!+Ug0m5p-`KsIa+t5_~WUe=F#q7XGeXprm@^uIq^%3=9ko
zh9@CQQb8xO-M!h_3(9EoAbAUN0@DnTQ{UY@4Km~It$9TiH%~%0B0}3+HxC$Ix^c2|
zDoE!}kdd9>#j|%<Cv>%DKum(<@J?_phKSre1wPBV^u*26H$L4wdGFKR&=q%l58OO;
z$9KieQ#TIY_<Zy9y<ed7g>T%A-S9H<&;S27Pu_g+dJ^co-UBy5#|hj#b?*!4<mJ1r
zCm@cWSIl(t!M)!%Pu)BC5_B5Y-CM6O-@SYHF539zy(9My-E}>1?=y(_1X6wT;2qYA
zuGWluCtvFS$4nm}BTgam)6GLSPJ^T8WiDuu%D20&7jArdsSIiig0mqg$nV~GxePYm
zayPVNKNF}4eE9BM&~o&9zi*yA&Z1J#1!>@bN;Js1z@Q_lK?{RH<sE2A_1(Fkjc6}S
zYX1Mf3tmBc*R=zByzyzUkHMR~=iLS0VtE(5?6)lK?oHSc9KI5u(^o+~g`21E3eGFD
zyL$%|*xjxoH;;gJv_ql;5;f3BIe9nq#@*NzH$H)q>B+mX8*Y5MdHUw5m-65`{O0K!
zr$EEKQm>EPy?ysK_&`{YEF-ichNg$Rw_e`-1DWao*SEp0PDu611A9=-0O}9vEIcr=
zJp;5Rpi}}h)|LX=LE{Q83qW~y9)ByS^sdspdjmQZ;wp07odr}%b=Pv-mFQ;gj)xqV
z+k8X^TngU33AU%(6`ud+@wdKXWMHV0xO)TC4-!FY7kse4EBE^7-J6}?ZXSfxub{Ma
z^U%#BH&21`_dNdQ`Jilf<1VX#Nk<0s3}ODJtB~At`|j<#tO_O_8HShcoN~GYKG^f-
z5qL9!zZrBM#oZgAXqs1i7nCGGO&<}^L3yCFI&Yi?Rl#?Dg8FB7*+A`tyAqujJSs9F
zwn2*<$axWWPToA}aaXK@<>txPpFt*pI{vXdcNswKLXeFh3@(lN+dhKYT<kaBfoqR4
zk(&>?T}AH7Hx#fpG?cM7yu1XGz5%}V>+X%$+acE6z4<Z})SCi(2Nd#mZ{Cf)F|Vi^
z6v>8{CfqscbmtWKjCRO@+Mok}i=#jXm)-!|T6_=Et|RC<8Aym>_~#{PgWla6FG1@E
zK>e+oua|(l2{ttptEqR)?n=G<3i8bDm!N57h(}=Q@8(NQaK=RNUm~{;L3=?av}PDy
z>J$YfK+sYKP)YvcOa-`;ad1Lw#$8zf6UZI!V3|!7|Nq~y1qt1iQF$TrjS+OG?IDo5
z*avX!pexlu(tp1)GTf<sa1(Ow;&B!gkV2R$*im<Pcu!1d%|JRb?Zpe<ivRyxZ<k7f
zPf<Q_R}_@E?)|(g3rc-2pMc807p=E%9^mf)-Ti$NsXY3A805$jraPxD{^oDl$H2e<
z5xH>!CbkfZSPO<&Nj9p!k{~p`B^qA=jn97L#LIk8O1g3L<V(=0$Ds3}!85R6252M&
z%mA%G2QxskZ(s%=OcyJR0b2TT^VIj-t+#Ld<nNUH|NsBR-`{V)o;zW}1YdtoH`m@W
zQ0>M5YJ1*fm6-}@Z-Ppd8ql2yu^gcJ(KDcNX@S;Dr97Y}Q1g)*NGTD!qEiO6IEO`G
zD!2qjnbdv3HxJaOTmfnjCW7-nxM>L<9O|~{{O4D(y*H4t^Md8^&d?K`zv`Ge4|(x-
zfKI6Hc0JPz8r>7%Uw@;Q<!0yQPS+)!7r$TZbY0N=klCBR^ANZZyx=YaD8GX8**yN{
z<>1n!*>wSjS4B{_?*h;;#$84v1@&MBcO5z4V#V=yZ`^ehK=AEBd<g_!{_c(Dg9^>B
zSSq*rb^D&+@AUrv|NqOsi2CW~>-*3Q13u6F?#<Wx(fIRG`7c3h#qQpG3EKY%YUBj}
z|Np=FCo_MqE||eoqtG3@;4U-52|Raifc^9mv`*sg&DWohJYCEQm3)2b?#<U<@4}-)
z5L<NA&w)ip>p~U=h6Zax{+89CQw-tSgs^GzfNN`+3u&Ik@^o8w{_?8G>Acwa@B78(
zhs>b!PFyAUJ58Aw7?3Ik28QMX99|XnC_={_I6&Q?;|@F!3N$0naNGfWbmwsg35cK!
zh-y9n4*G+jv}e)z!vmahI$ihhcYuaFL22iAXXp;=+8uSw-LX5oD~h^H&-7OQ2Mu)J
z;$Q#o`=#bb%)Kl>JMVY<O89pk<L`_Dr9!smV;nah-eJ5e*?f@0yTYRLQ|F1hOgA6i
zVYn*+y6ofO9S4rP5gd1&1a3aO;~;Q1Lg22GMDrm95KrQ6gapV{uURV3fQD49|NHLg
z_T9nX3CgRTzr1d~<L|f+y2#I0;w~ff{C56kP~QTSkT|^fI}U>Gp+!hR8j#HgK~l?5
zr9gMQ!*q2cOBL6`giBC_lVHNJD8lYAVK)?E9hk5_im)J5xYGud(uF~CH($TKd-L_B
zyEk8NzkBoboVzz)H{QJo9y$jd&kZVNZoUM~4S_C0T@M<M`^C)PI~B}esu8)%=8YWS
z;32%b44uDw3lOpJ`W7fFfUY<KXN6s$vk!kV)rdjTjTd-h5I8NpoDVuO2$VJ$dc*%A
z#9v>9<T7Y!B#b2;-;G`IqIM>DxVi;2kkjqTWBASRWT)>P!%O=?EuqfZE06?MdZRP+
zLbpNZcfSh1?$|TEj{m{aJ_5ZWhdY1tMlxF7uVd=G(dqi6xAqC>3>DCZlMA3hCD4cx
z=;|PesjV5HC6+IIU;h8^*Lkyo9h`z+Z@TMx;pVS9zBgX(1|7-{DLF;3xb?-A8L+I{
zG68(d`b%H%u<G3#-M&1ap^0uwh+F^pb(S9C?>Gf2+CndM{_1sP>~uX~c^q7rRwVQ~
z{_plZ(_JdSzy2Vo0BwHA+$(de^O|4hjmnI>;M{rh;T_itcVjP97=zji3=nSUg}V+M
zpj##Gf>;7@7C7<0Vgd7GFH~Ltc?ddcB6|16f8QhBz6ba_i$H1O#>;D<6IE}$e%X4m
zWO?&X=Gy+|pG-BvcNx5z4}hW`Z0pN%kXq)>Prc3@pyS-{#$I@R7j$YmNbil8pvnx~
z@P!h7&Tc+InduoNKKbRTMSl4TB}IvO#Rd7rsiAq9C7}fcAi+G{(!9))5SUC5w0;BC
z2jG;$fH)Ts(td7y16qUx>bUw^bcZ^Cjy&f8wWVW4Kuc&DL3^;7z@wTH-Jn}^`_w>-
zS$t)>8CwtV_eruafR-__9GKmj(H#ofZj4e1f{v(Rn+{2KeYy+`$6VisKvU_#*;wk#
zThkzF4~c;fItMj&4q;Qb399ZD7Xt(ID8|Fs)OA7C1+jvT4^-&3^Y5&^!Qa6N9(uXa
zUHhQh_r~`N-K8ebLs+_FZ92hQ|M)xSfL588sIYYV$}}J20IvlJwP5@W*}ni<!X@xy
zc5B9q8wQLF|9x-pcWh-~U_k31f_4OU`&xk3I>e~(F#ZNDjDVbN0?|9i0JMixrZ)_7
za1TTcXp$1N6c(%mG(P*H6r?QFqSp^RF9}*W8KMGq5aVxT)BHfnTxELwB$|&YfZPj~
z?sf%D0)mcQMi{7Kz{t>?dxM3)GYYg6fkovADE3?xx?^oXA$}6X^99{N0$!U@>Ht~*
z5u*ZX>2REbgfh>q*{vC%H6+JfR3sSYv}SaMsDM^ZfDQu$E&R{{9m@%t?}XAOpxO?!
z${2J;><bgnYFJl=?pld%`ECo#-~9c{K{Y4D9lf#dyK6!2=jbk#>5g>(?ZfX5)d4L4
z0Uh|{3wGi?s52geoKXTkUJ}(AK49l!I0Mwa1vvv$2ftVgTCeIV(G41;fjDCZXyzK?
zjP6*O?plzSS-`<j3Z7U6t(x+6=#B-=1#`THx&a&%F)E-*ZipLdR6xg2ffinYmX~7<
z4o(Jewy^*QhbqV&%pRStSNJ<lf|_=rCWZ$(!P_pI4{>x(1sz-k>5ux#bW3{kcYvC5
z-CIGz-L*E5BjTFhadi7W>HO5W6}0fN^Ik8@amZ-Q_iLT^4?bjWe#Y$IxfgU`S!D^h
z<h!GFSBmkJcZC_KV1V^+7$Bl|9XMbN0T=^R_CeUquURUuHn)PT=je`ozzDuE>%Z?6
z{!Y+wijbNJGJe~51XQws+sduqN)|T%W3Fv({>M}!c$dMu`2f@o@J!cThHkKdoxks7
z{J0zOqZ@o#R5$oM6vk7{2RL4zInJU2N_^d+D!nX!K_wX|se<C5+t)<%cW3N}-r5h{
zr3&C(>ajA62SNMK8838$4`~FQ1qNBk1S+9KI6w&&yulx|bU+5Q%pSDV9Gs4QR6rBw
zpgjTbGz*HX7Z=PJ8D2gB)xRt%U|UN~klX=wnXd}m9ibq12z19<FdhW0H(>nGT?<;f
zBmqj&uAmel0=5itCID#l6?j#H3pmkgK&3#7uE6d9*$+yzpgi=#1LTg2e;~!=Y|s)N
z(EjdVFoUT^A6(?P!b&Vy2>?346jWM)ixV{+aEbL&9<)RPRKUf8l*5#ChgyJEILUw(
z{ejMs;d${*8?@#c)F1+tj;=Qtf4`myiDhWX`vsB_PzwGR0uv!l`~h0`<f_mu;MEy=
zfxiQEGibN#h3?QN;KKI;bYCB6yDY2-E;Rw!135^pvldngyMj*01eKxS{g50W-@u&w
zA_VM0kQt1}{`+3w?*MgOAt8ZBmmEl!uLR_fHb{BNcnnm$m#Bb>OH?a9YJoOdp(_>v
z?ZU%Ud<3KzydfBFEGV2^K?~eaj0GK$Gaas&@mO>21s48JC*(p|qq`JT+CWO7SR2S{
zH3iV^P_7Q0pgp|A70jSChfx}W5)>$5flHzJ&Y&Y26uN6=y5+m=K!q~s=$Yft($H0+
z+ZXH(P{|7_b-;`I1iC|cK)Z*1R761KbB&5hXN-zQX9#4`JE(Am*AFF-`r){X3WhUK
z3S|k9Gkg_5H?UZCOMsjKx<MG`j97*4Qcx&Df+JL=8=RTIMRB*UO?NHmC<#d21lmG_
zTqwipC(xds8WpU;0n2CL;F#dV$j}Wcl+W;YnEd|#-|)ZT0mzPd$e!-*Scz_K&x(p}
z@JMX8t4TNbbja>dn_iO}y)3^v&v%~cJPa*^L0vKb&JUe?L5BoYrrc$2KFo1P<E}*W
z0S?a!)6QGaVeq?5Ai=v%9CtFHeXu(jh#uIT3|Rl`B}?U%Zr2ChrB4{aCu%Zo1&s#(
z_dUbk30iLQvITUa#if$v&A*syCpZ6Msu8-&?1``v(g|no{MqZqaYyg2T=!fPQ1AON
z$LkxgLe}*OxG3u`HR+B007}H&p(>CKIV|A9FV>=$=ND+d4yY*Y2JJxy-5d&v9MH1F
z8WjOhxeG4c96(1gc7jqyiHZ!olyy-7tvLmkZm>iM3jG&ZhKvj^`Tv23&%kABDbyjL
zs0JPI!2%NHU;n*378HfxQnZ)n7ii&mjfz082)LXDo&D%40a^?SS}F#f`~|g3K<jxy
z3n+QIT|sRKNHJTZ0$S7wIwuBR+=CqS;-LW}!^{8BVs<0AbY<r6Edn!`YD~d}i!ZEj
z0q-tE$=ELrs(}hkP?7ZC_X6Xwmlm+XHdF#)Jy<zt(SQs1WLt3K>_s<N7ih#DvWvRY
z^#bF)?pPbf->-Xn%kZ{z7j#3)+a6F$H&mh93cC2P^PeAohb6eZ`=C44=HLV7PS*x#
zdg~6A==Qw>J~sz!e|M+}D6Tbsbl1u-p6K;C^aHedpcdSK1l6lAUaNu{tPTHN?=T+r
z<L|f&ZmfVxhHj>AOIUH-?F(9M$pbRQgz-eTuS{>q@gJaOC=aMk0i8F@@nR9GLEup@
zUy1Hog>J@f@$OnsRPl8C-qE}OazLm_cP+d{40RW%6<njj@gfr0pbCGmj}%CCjR=Y%
zT;0A3-Igywi_<_SVq1gEEL8!u2f+snfl3F^!r&Mc0nH!1JjY-~Q>_i8Fk%6hkfoq@
zE2#O1+F}ktY9{(XO2p0*?4=Pn8FJZy0vx%CY6Lpt8&)XG^!mOBHG{xS)L5PFQcz+R
z0G)##3Ti=v4tMA*Q316@G(de1&^9Viq1=h=3`nB`f1%uL3#l7iCA#e(g|a%L!QLIJ
zqWK%-3b4mrHM)I4`5as(_uAY7ZE^ywM2!V4oCY}n++6li5dfVR4X+(QO=cGrP;Cmz
z))<Zfl@0KU>YEKC12l1W3ww2jp5X7847$qN6*LeHy=e;4{sdJbpp&S-gVL#QOXvM=
zSDRjw6P-7{Uobq`{D9fN^AmsPN6_E_Q+KIE^C6CIHqh;fcHN~WpwxSZ@dx9HJ2}UG
zfNu2y6}BI}`8z;&Z@|`j++_lFVc0>**1Ws+j^+o@3CusbYfV7fj{mqD14{Q#?mBTW
z9>g%YyH*0E3Tn9Ple<m=j0Zti0Vs6iH48Krhh*Fx%^!>(x=X<}!p&kl*!-G>zcUuJ
zjR>@$=mDc^%YV@L?Q772%QVQU#TL+sYvB8S{(%OoelXSO-DUFbt_6n!lAjncJj8eq
zGVj9%y3Z#Tlx2mxWAA8Q=ngeuywUmlPR^kpcViCy==Ocm8^-Z^6{sPu`5UyP9@0kl
z)c}<xp!`$|I%)*8$`;h(1h01mwa0a!l@Ms#DJWTiDjZl<1KqI+S|AL{T;MVsv~CrY
zSwIN{lu%x%f*N+E3ZP9;cHI&$LqStEp!2kRWgwNBt4(j{hvU#@e5?tiqTm4SX#<~r
zuLC`i3RKg8HhqBX1~<t;r-gx<F*Pcn?GteOVFz)6>;}03<dzo;wHO&*hJbF1G65-M
z!P-WC(+VlGuY3ZnK~?Csh9+xpnH>x&vqQmU_9N!b&<@Zoi=igqUB!^X+V=^pu)YHt
zb_2DDdtKQ7ch^dQhP!N3dU+0k_D;SqQvlt()B!5APy6wAfL30B8hO47-R#|h=!N!$
z-WtaLFyp#?pYX5$+3jo6EAkW6@C5Dp<WYI?R320)fei%J0!zWUO9qq+7`w&c2G&Aq
z0Z>yPW?ruk`+s-vF*hc?ET^C={6RxRlOZN{)`IGlitz4G8BiI_1iF6%?8)v>6U`qm
zQ@U$G{so5tR{y#|3<LT1uwMli=mt=Wm*Cxbr3&44AhTm7K-nCrGzaaJ5YYV59qRxu
z&B3t-D$zhK+FqXH-L;@b18QjwY1JS){-6>)1iVljqXYvd3L6Vhz{wyDIK(2C<~-fC
z;3hVtG<N`nIH>Ug8T+VF5$P@k9kBx{AbG&0xDS?bj}mYf62p3wCiYfybZ7V@mFA#c
zEGXN7{0_=OwIB;2rMbyX(86#R&^BrtP<Ofp>{m#88@a6w$|OE2ptcrBFNR}a83k06
zzR)m7l;+m{{2eDi*QUFI?nYziE|u5~a(FkNCx3?^I6L%!OYjSwCptfUztFiAw5p-=
zT=N5Fzs{|oD~9+x|3gc28CYqq&DLFdr`Lt;e|PB<{`JQ|Em{@{XHQtM&ffuAy8>+w
z-DLvx&p~wnR$VYX-K8>jogj4u7IiKXj3^2Pz(qe+g-j?4K_xqGwV<ounqRWObnthA
zuC)6PE!}(k`8&^n%J!~zkP-#7SruHigN_*h-Q{L@m&voclt8G!41c)`v^&UG2Gsls
zz0=LuZQLFE1T@U@p|^zTKmYpA-Qe{kowx2XyEPx;xRdko2l!6AyD=YsboYWH;`Ib*
zA>Lgo0WWl6JqZQSU<jyl5Npxx3rZytpsk>;pnfCh`V3Ix57aXN_cTC-FQ|`!ZF~fy
z;MW1S;}k$y+@f3Rr53#4N4No8@PkVB?pk=kAFBd7_sc~EXTc9TiUE|SW3U(epu7z)
z_*bYfGQ8CM1KzIy9qGne_J62{#MF&9|Nld7MPk7^(tQG|ZUTXk?gdbF5}@{ftwJ}y
zXQ%HGSZV*D^91-vVaPzYCwP1XGzH7w84Vv_0Sy9yDio|^MxP`>V@5~#J3xz3Ae|qX
z?oiO~JkXE~xM7bN5<e;l8Y{8r_2U4Ie1lr*SjVg9!Ia@2)-H!B17A}Uqr%gCOabgh
zP~`?4Y5-RTFMK6I!`esChqYBe#kz|Mq+Jdg)&`Bt%5;~4+Uuag9aOJC+Zd3d4AeM9
zZ6SlYkDv+xe^C}|1S(gNhqX%(<tlhs8&rOSZYh8aYpZmJDu6~$K*QRu;1mxkb3tun
zSn-b1PzR+z7jTJ-;S5kI2}*$+3=9k}t{H-yf!t>R-KPqx*jzOr!`G1DsFmq11?51{
zModVv2fc<vZKs3WfTv`K<pgla?gw%QsDXZfzvI(O(D?)tK*P4(p(fx_ZP5BOP$Q7p
zqoSz0bVBE0(5MplrjPHJdwIS?)(>`<KIuH)d9e8vNAqLm&d@0bpD}xOg0JnVjJV6*
zd>k@{{K=z2zw>wJx4X>X5$aEOouT4)ogw4bpYA$KG#^%g$Tq(Kk6(lA=je8Q!00;R
zKWN$xG;aRV>m_LEOv$F^-^{i1K|3q>?y`Hpt$E#Zm%Y0eq!A>P`QvWnkM7VZ-L0T;
zZ^lorufW=rrH}z>&^`6B;2Is2yn1>5b(g*XUGoDg)A-kahYVbBbk{ocihSq<4_wG}
zmx3C|pjZKoRCJ;an<#)f(vX8~O+fW1wDD;HV!zN)U}ShH3>iHES=sIS0#f*bE;<8`
zo`6I_=em@Fx@h3h6UdwoxFHQXEeUkpMyUm8?;v7W1(Zx(K^;g5P{9p4Hy4x)K;1Ra
zHoO|hc{CsgfRZ4Hez91dk>MrtUq}ge7CdOe%-=f&%)l6=?)C*utFeIQN)Tm8qbRt*
zd6@toHv#2Xc;nL50(^c8c<%_uix5%JU<;@~163rkHl40VnvZcX{(e0TTCqdtH}H*D
zCsaXP>+u}Y7U%Zt^xebX!3Sz~xIXBveF7>wA21($&I~F&U1vZ`RL{;{(Ctk8ovE;b
zG*p7|AE+Gd1RtgZ9_E2L`^9PzP}ZEmc=$ia>`kCU!5{;}P%T)-wktqdd?i39NS3Iu
zF#cma3>u=20S_9X8tw;D2^wCS0V<%uDn&r!v7jjrRFx_qm97Y7pspA8!RcSZPzN{X
z?qT8Y^usnX4Jx#{@r+D^(j2HzgLVAjoqouWEa4_1t1e{p0WmV2i6~b=O;lfy7oi23
z4XA7dHBmv$W>7zk12ifEYN^M7$5|jvXBVV#7?3kch$vU<bU^(m<dJDm7Y$yng8CHj
zc5|o-XaE%Cj95@h8C1o98XfRpC_%Fy)TIRNA9n$}5u<!ZDObVsF|G>T9G;!NJNP@M
zKLHi33qVEdao0H@3KS$9o)y{Mv2#G<(%=#4Zr269HitS-b^iW-sdF!Qy!R1v=Xvm;
zbjtt#|0}~$2c`8oZ;><_T?-zKu3f-bI_E!VMG$B}`sJU;|NpmMD%k=Whh6|0hvr8a
zhko627uz88ZCKM0F$moq3aWjfW535CMHYA#4?ds_+VswH475cZ)Q&3!om~VT&;<=5
zz{^=4&>5;cpFnL%@Sq-ej1JU<0FCEC%2^9gP=k8?FYZe*GQ5<76sDlK>kfq$rln81
zUBS))C2Y{atcam#xJ?4RJQqNPr4MKiHfT^4qyb#Wg2t%9Cn10bs3F789H8SRAofEX
z4H~Tg4^o56^-dQRofiQh=Wsxa)MMb1l$pP`3(R1uF#=`zZeLi@gJnS4KmeSR|NHJ?
zJp2+gT?p0znN<TNPtfoI@@fJGh<Z@QE;V61+}#Q)<{1BVy6$;B88-d}El;toybvgb
zl&9eFXjg@93*@m4@M%M?;IR$Rc=QrbY>+e%ox~4nVlDyo@h?*}5G@HZ$Q5i5Xe@*L
zf#?f-pzwtnMD9RzH;N(H2BLjmbeF1hGj+$xzzUvF1x?T)?VvSIkTDAI+!!cILFp4T
z^U}+63^FtgZr*|hWRY99pg{{4@GXvnOX6yEkSCFwmd1zy3{VTV6x4a+=&scPmBJ;U
zfdYl@Py^5@@sJ@tkQFfZK}urKWrT<|B%r1_D63$UfG928FQ91>_y8Yhj!*-sLhyY7
z8IA@Iqqss>ae$k(pnJ(mHNY1D_&PwQVZcGsD{>#wD3$<^^MNXa7!?ul$T_H$<3mKD
zoT!F8jL})Ug}>w9Jy5|6x&WL3)FYMh=I{6i9x7XbeIOciuoh?p0z3c<8ieS^I}i<O
zJ)o^O8bagIEB^a#;qL@p>hSW~T}Vj*ACLY{`gk<xG}yZ&j7N97LdJr7LqC8<)j~j*
zpK3tvI_2pGr43NS3Eac2Q2~udgR&B+a);93x(9T24mgcK)*69J_s$S3t>LNQ<`yj1
zybOU2OO!&~02<Qrg^x#rCc8lMAROJX8laJBP;~~mApvAJbjg(nG@VL-dIz1*#sj=A
zbiv{VK@moVm%#+aqhs<RG2wCt(gwyi9=(R_@#tlopmx+6P}xnL@#s*Hfv#W!L1j1<
z#-o`bCQ@fSdK(9*(1bb<Wjq>GErNsb1!y$^BWU#!cvcZoc#80^KLlEW2A%8+1r1We
z%TL6JG$>iX+m$uo;a^BG1}fNbj7EbxX`s#;xSzgE5#&Av(9owvw;ZT6jX@OZpryOu
zk#BIR-5u-DT?#soh66M{9|~Hb1U+&H<S<BqUIM+52T`bl7X}hs_#qE=2J+yzA5x(X
zYJ7n*Af!;&==KHG63{~ZR(CDPO$wmPyj?+UI)PsBNHr`};2jP~p$=N_1?pXcoQzS=
zfSP~skm*rCF4XxubZ&x5^bOE9He_s?!;`;*3)D#r-2lqSCRoR&LDw$ucftyI0;8}<
zW78X9quIE|g;^wEW442DP<n$uf9F-up!C=4kYWWsC=Dy%NgI?th-FY3H05g2>jN5;
zK8+ZZb_5SfpMwobpZn3>3yJ~6ptLV+K-dAcyrotF)OP@#090xNIao=i+t&oN@D+59
zZ49_X1@}K-gEyTesOR&7OJwN43@j0W=oiz$Z93?>DvOue@X{aV2Af`R=@02+fR;Ld
z#$mc+RY2oF1WJF<v^i){8Zzqxsez!SKge!SLI!2^7s7mu3@^1ngVHGH&m41o@AoqI
z5`2fHn=^dbICL>NVuiV1K4f7zc<DKGSOt_3Kp50G11%$kttSV~-hk%beKkOLgfV~)
zWMJ%cJ<-k7dZ3iM@d!v7yeJfup%qSnPT~U%{GhBK1g(ran*m8T^30&c+almI0J_;c
zI$ifv>^knc1~k|S>gvWS9Crn`vN~NibjB_LIRrZ1(;d3x=DWL0;Jt<Xt*044`}mK7
zZYd1^-+HO@8h^(uaC_`TcdQEk`j5RVpHX*QRMbH?>v%zT>r~_(cL49#@q%vHsfdAY
z+3`B=0N%4x;eFge0Td)&#~oBabcNM%2MrLz>$rmsh_28)?qC37cpY~z0nrr_#~my{
zjN=YAAgcL*gBN5IL9^=y4)<o)B^=GJYdHS9t^f@hb!vb%rhqO>=yqLUc(Ob83}_nl
z82|bkovu52S*-869QtuL_CTl4p&vWJ+d6y>{pofEkB=yxLM*t4^z=Zha~WQwr9*;Q
z7qa+S2^1lqbKyak2b8`5tsCj~U84EJ0eb4ZiwaA3APaaNS_hQ4x_vi5P7?s{5s>K&
zeF8dz4SZf6^whdFpk?H}EH`^&m_R)hiEh^ukPf{}#3|54RG|C%6apZw(*Ozenj8Y%
zHS(ecyzE2*w1>lW$6eP0;HzX*dPOYm#$5XWS^^on<2Z|oHps!HC%Roh$D;`Fum9W$
z-i8lKTn49FGkRq{g0`uE1_)&AK;0snQ{biRpsU|NQ@3D89CuMsfG$;6f#w_yQ2KhI
zsSg@^TGGwd9mWD4D!=!mGvwZ%m!O0GJ4^3?Z-=^boJ9p>6KDfWHzO>tZuGj|0Ij#}
zX6z0GEfLiLnG2fJb-e%yFVNOL@CebG&d@8pp%;36n16s43xk3u7Bm_v(H#o9Z42Z!
zQ0Rar13=5{drd(1>4EA$aA3Uzm9gEmBHiqr2Rn~@bh>Wg@0bC~>SYYwu?jce-F5l>
z1GGmFbdXK!EpQ&V0;*PSbe_`u#oqziXx{C5qPP5ix33E5AZ?k0y)M6h46dB;-*-#r
zcm9rppaa!hMY=g&DuK?@D*ylb8Dt?cG{0M(uMq`##PtNoBRm$}wJLXG&i{CQ;O-4j
zY5-+`?ov=*KrL!aR9+;dK=J_iOb%ZW&{?yg65W#BY`x|GHE(pso?-mKzy2QRc6D&}
zI_`1^RGBjzcRBP2l*>Su{;{Zla}HCtV7IRb=pu<5p!C4_1C$yWyL~~ubk{q*u6Mv`
z!sX|W?vS5<K=&Gg5`3rYg>Kg~kYoW#4E*blgVRE&1n9JT@X_@Gy*#%%eZV)?fzmBF
z$AB_{>j_ZHA7l)ujRne*{OgY~{(vn1P<df)1v=*D0H`Ep>JAm@=IRcW&^*ETgYgDv
zk<M`z6&Fzc2|dvr3o?fVl#sh!RruFmgXI<e_4gTn_3~U`{M{=8I-0bb8Dt+QcYyBw
z0gWBUYJd*42l*E~TLf|>%x9p)i=44u+yE`kaaFkM^5e(LU~r8t0&<#UHxoFVdrR2C
z6U?y^y)1Ty-#`Zqf{L?}!#}{MigcD7{?i?+&|CTfn&-M1LE~5;>tA#;bqj*-839$|
zzAB&?cmN9hH{CA3e{`4p1_d@a%s}DV2|A@o0&)sTXX%sfQkh<vAKk7eK+`kLuR({x
zg1Y}Qz2*Nw*WJaaNHG5B6#*^fhi5xbSc7u(i|ZDU@bwkwjuq)<>=y3!J)?P{HwNU7
zo87(=y&~3kV=n%92|A`9x{nJ+`J|?mxcCRT8wEkma0V6spyUJ_UxU=A&2N0b)tm}w
zC-R+cSB~SLgB}>bN56G+g6c+J9?)j23J%K){C#$ywmb8`|NsAYGlR}T-~=fEogxi7
zC~ga=q3SBod97Qbx0+G&U*}K$jvJr~5z;K^j^*eU_Tuk23qC*L4rmi{tqADa1(xH3
zt32p-y#wB~*c~bY-XqQJ*jaPvkKt{<&X_|#_&Y(v+n_8g*LmNczXP;28B$Di`|?;z
z^7pucj<0k656YOn9NmnThxvORff@p(GM%@&UGH@J-ni>>??-p32><#McXStAY|UtX
z#nj6p30ekNk=1K*4!W1H`89Lrhstb7&>(hWdR4eV+eaue(6$7$DFJOrK-&?}Rs^&W
z0or2wily?Pe|PK+{!Vw$+Uz4f;09Cc$&%Hey@WlWy@XiyhZch7XV^f=sMn37^VV@U
zPzR6U^);w_x_xhG-smp91KQUI3b~J<t1(zq81MD+eCjTh=?=N~r`zQoXrUF)oQvQ}
zk^@#Ifh%>_2cRPDMd%9#hL@n_Cf%-gdW-*ee(Ws0!N2}Qcc_Trw_X;>&XPm0%zEfg
zcPUSID93RYl?fMHGrF02L*Iam=nZ|Lc>~m-=w>_aqM`zFC1@DFR|K@8m_hRf$bqh)
zLQVkWj$WP<-L5jdC0sv1lYYG=pxfZ?fc8Fsqv$YrcvAu@4eAKWbi0Da5fxteOk`kq
zDFNE99{K;}3CP}^DHmHazTW`3!xiilP$>rru^0Tl|Np-PU({VH(9PF+vVz6(U>)~y
z&@ATvmmB^-&#SKyv2?w|-@D+?|NqCCe}md$Q~y8@XMg?lI5TL)<;!N+nI%4cF8)Ej
zMnNIa{0+;`HQk`Sb~>QRN(RvON>`3<?oQta$3gC3fHcim3a%nrYoLxSsEz$%ckKWF
z;3MKdl^9DQk`jn6NP})FNY(Lf*E^u22O_}vUjVe`49w?XW?%r_7;pfb#|0pz$YL-@
z1iZhqqYcFIm4Fs0H~9NhLH%$xkY~HuKt;+^NGSr=+EM}Hl!|~tjK3ut%#i>qYl#DM
z?zDd6ZvmYx39_^q)WmeX0t%(h!{Ed7yKC=&B%(pL5%|71?s^8~&(7Ez-M&{eZ}gfl
zc7B-o{ijE#>j}tIY-j8S&_dGtov~{UK4(7okh!yVPj86DkIoyNp+`V%pHANcoxVF@
z=^YXTpkppT#R16FHQj8Tz89d0uk?xG$?niC-LW^iU1j*!Ut_%7U2@|`cg>AIojx~U
z?dKbRx?RtJW^ik+wq|tuf{y6`ZDL~Z0JlapKojP^7kXVz{OI-t4RlC!yBhS0T<rGU
z1D-?=5&Y5Z3)<ev(;ceQ$)f_Ppjbd{Yj8bv1k|Df-C+D;ejn(9Jekgt8$UX0K$c$V
zjy=E_d!##b2V>|SM%OKjt{WI#*D$)?059bQ9en{ihyqq$bo+{Q*WT!61UJ@Sbh~co
zbUpJ@477DR^v!YC3!tEVxd1ey<qAGm6g+_Ovg+Ue|DY&H0i9>{6jD$^+f&C`REn;G
zvrFlRPS+2hniig29(ex$|FRm?3@cG%fU0l)&DeRP#;n^{!IH6-`#2l;>{d{|17Gz}
zBi0?O1G<u78z?8Tf$xD>{TG&b9)pv^>%&k7fC_Df<7|IGIjjwI7cr<?cbpA;J}T&<
zVeo!PP@}E_6f58k4hP78u&e^=KlVm}8+EOsVEaH-;!A7L0YmWf%s~1pLHa{6`=25z
zFMOf;&w?^L8z|Af{0(VXL;VXnAVlKjVpw*c0Itv7T?2!RAoV#czsG<ShAM!nSB6g4
z2ggBYI5B{$=Z*v5Ou_@sJ{>DSXTben<nNiv$iQIf`k<EWI1?xYKpkiPR!|-R9oSRL
z)6LN>-g(0EVjWZG1rKny7`%717gUpj+VimZ=yrY38~z`>|NTO*JEP@^PS+#7GS@mo
zFVr!0f?9h#IX7D~dP5HX(EJH5e?e#GOMv=$Cg2^GpxcZ)eNXhp$o&9aRTO)slLa&`
z&H@^Rej&f+|Nm}R9&3vljsLz^x@(VA2!LG2@wyX!9$fR07;v?PNS_xB4|Ip}^vYOv
z`wHB3x%uO6?2S&Bn?H7dT0NaEH~)0|g6fKdo2?n$jF3FS((C&Knw~)mb|G~I<d#(d
zkn2HBzbD<UXF#Vqf*Noxpsi>RKx<rT1$sq}ce{#!d;z-q64G=AZ_RyS)Xl)qT`K@O
zj4$T?kC&h$W{$I{q}&82_Ru$-Xm!J9xBvfN>ivhN)t8B&Jj4V}P!J|KZG?f2n1eO#
zz%;lbhC~QBJ%i6<6u8L%Itb>#P0-=Gr(iv^<_Dld-45LNbn^k|oUM8M&7gR_anSJ6
z&4c$oLWEjD#VCJQ6G-L38y}%(OQk`$M+`6BeF8qR%?*5H8|d`kn}_dxgdI24%ned^
z^2TY1s^+(#bHu=hIf74kDw4blI^6Ka-5a2c22J0Fmts3F90tWIL+gQ3ewd0~pp5qV
z$<0F`$K5=6@AQqsHxGi(qxyXF)ZG{NAKW}O@7~#)hi>o|+y)&^ckfFTQ%T{?(;z9s
zOY^FjO2Q%PARK#Sj^@pi2xX!m<~;tX2l;0m-~b)t_%a7{UcwFVp~@iFyacVh0x|C1
zco_(mf^t9`ogqvR`O*|g4thKkNF0J+ilWMbZWMx)LJ)Zn`SLU9h$v_Xy#!5Lfkf}#
zczGM;d?>Jjm&ZW~0Thf-HCvJSFPDRO;N&sEFT^FpJvh<`lui)%gFUEk1qx$`*oXZN
z5C#LJJZXGm16t$hDg)XTAIs6r&|MqR*=hpbXRFf9(d}x|*=qpe8Fg;e0nw!{pu<RQ
zI;U#<{r}(aQa3|qs|rZmHKv=dvsVFBI)W|eoEiWcoP-?AG2t$j_J?&Ss6_2N#@});
z3{+e3G+Qw7w=EB4VCV*2TLa1w-Jvm%;wmi^bY~36U~tI}Ivr33Y^y+L?+?%+F#;1T
zr-DT4gZ{UI1$sfeZr70Rxgc(*&x}8y%VGp9FP0c|&jtCf^MnWJ4uQknu@a0Y?y?*P
z5A0QOm2&)V1!;Y~z8Oq2y<XPq#RxH_J2V7reJ9VXZeJ1S&bePeb6~AJAeRVQP6g5R
z3IAI`qTRh9UUzIrH<;V$)BFciZVNzEl~{Fyb=`c|4GG=3Al0Bo0OO7BSOrwqfTUh8
zYzAv!dOf2zim}@_q<bpJmQI<85SMjc(7XX*dGN14-1@DPoxdeQi-DoL)Z^w0NK+8p
ze*a+K4Gx~Wb3H%@!yI7JJk$v`xO3`<KmY&pchoa6F!b6qcJ37boum#aZXoBqb+>|q
zx&!_|7@bpD{{H{()V&o%bxvgfg@FacaR1KVorgO2g4UO4e(v>V?CiDq3%Y*_9G;z1
z-+(Rp3#zN;g4A@kf)iG#Mt3iW3qBx5p?fQc-3z+o5tRHo_dWo{a;*dZ`h$?GjzRX#
z1=-EN{ut=0<`C{5om20C6io%|G&$Z~Ytao(o1I&4fUI192vmf(g4FcZ2><Aw3li<z
zdj+HiV*FMRyR&r<NTe0yqt3ktKry@*)IvY_fVq1wNUC%04p7DI!||iD7u1yR^%3~d
z-3oT))-52d;E?I;T?5iO7c_dtzy3mZE6A;#Tc>~o_s;qA|3Bk}&ej@`^0^?Jx_d#n
zsB>=&NCd1F60(f9x}ioK?3@ZZqo}(Vq`Y%(1jvYEj3+v`R)Dnhf(-873UX*?YXL~4
z6%@{$z2I#_TN6Omw)%k9KYoLj$K7*5$-KKZq#K-Zx?Se~>1-AG`~SZ~cQ1(QY!v{7
zG0XJssi5f7Jkfcu^Kxga#ozz``PUy}JODZ^zZEq7%-^z6oPnYFCsRqx|6Y)#-CMyH
zZ3UTMA<+${{W`&d$n`lmJ+b@;C%^x_;N;gi{qO((jYmL561c91l$?<Lcc9CSTD<tc
zHkD3m{>@Z6@i>dhj=QZHy?Zl2MNJKO86(RKXj!udLJO?9+nVvB{xt(bcc?)(*n{0$
zLHQrzOYpVY6Tr#iA85nf&(7W+Q0Tdw`_Ub9?oW3wsF>?)1zFGy4v@~dIe-8EXFT5R
z^6y7?%)dX~TS2-zTMIye1vb8OZV5PyK6dwlLeP`(Sa-~)Kiw{$et<^T=k|aULQ0_4
z4iFoxiGTe~#v7fj9iT&^Tn_z!*u{AG?%Wk%B_LPab-DF}fBgxFAMVcG0CL8O&ej%?
zb3+Y4WA#v72k*`WwUfJBK|Z<batdVc-MJV3{{IhBbayW36otDkzkYPr8r+@B02(%P
z`TnCj<oh4c2E?r(Cv>)gI=Y=xWsoIH4LVybKsD4<8<6l+u*EL-e{|Q}|I-P%iGHsO
zNXF&bkM5Xje>%ap({;`TorKs84bRS2&{#KUz88{7=B9u&fHMyyy?b?D=3jrKb1LYX
z#LlS=phSMJyXNDcZkLZg8bMnx8#?#qfb{GI<(<yf3=kVS0NULP($!sS0Uc*(tpG_v
zih!x0<L>!Ep$E!`j0d}2&j08RIsd1#wF9gOl!>6)ruKlUXP4tYx@#3~KDaw~21o%Y
zbU>lB6=W?`VJqmC_s*%{+xI|nA>aRWwt_AaL^uI_vv4;g<CdKN1GcpnY!_(fTtjCo
z=&Ie$t>9~HK`sKRsa5D~1>J?(4K9M9!-`u$%>>57-9GpKbi3UD(FodT+R)ki1{5DZ
zJHZzsc9&fL)9rHo2gr7a>03d^6?Sh06$hQ*t3<((407sLP*DQ)##GQv?ciouXR8Eg
zsITVcpKh0%u;2!te+^mX35o<zWORa$SLu$m=<WrX4T~30JE_~{^pEb6(|<ar{sE=S
zxuD{r6TIB7yVVAixuGrtEfWQewpBBB9`@$%0QKd&r-F)|?p9DF9(=^yIW-4dXr=rH
zUw6j=%E#SPK|Dx>0qRAA#e6mR*B=61DcTCQvKOSSH^lHqZ!g&L5EYi*Ek{8M4nb?3
zOH_DX6g>x3j1JwsAj3d?P_Qwr;I@m43b?=kRWl;Ty0?PO@)7&dyA^Dfj|xj~&tI@v
zCZI_bo)>B$v$lc^>IN5$j9^E&F&_8k?^p*pmj~i<SS1H@HfZ}8#HlQYdR-WQ^iBoa
z0Gbd38__AE(%S=ZwvP(Wi+#@+7`kCj1e=I#P^m*NvTH$`S)eX9QR&?RaWKf|6<||9
z7D3$E+zN6z6UeolpkxjTj1`~~buOr2?`?%P;UEQUZ|n)sZG63@E5Iw#K}$1SR775s
z^nzRlQrUW-j<wr2rjrqLkOvcJaL1p6fdMqO*4qm)4>WNO8n*x!*u7gpZ4i)=Fl#~G
zF3_NPXNii$i#;6-3^!lgZ3QWUc5Fa5i+p7VwG~CW1weOOg39fV^PrOmZ$JX4doQ>x
zQR;9Iy1HJYvo!-$>s<hES@P<fs_^^&fBw!JY=~Q*r-Ez%4J1NtU<V}zP=|ldWd?>`
zupH<RM9}r2kR7X_K>?7O7qc&eJPtA)boX-x*e$l8p(oH4rLF?Ky<l^FR9H~WO+lFJ
zDgd&!6J$1cu|5yjTxVnj-Mt_Sz{)_EK%ZlTp3((TDgjaowg+_4188#;npxj3!94*9
z2aq2?1|35<3Z#`q<;59<QjDvh!R}gp3FcqWU2w3gpg~d)6MDf>1-fGFMFYqzh`T}|
zH_n3G2HwK}ad<r3EYO9}ps-`%?>r1Dcfp2qmwMdcyDJB7Y<EM;5OC%Omm&P?Z+LXJ
zrhpn@)r|Zd#-Jg_UQn^#Jr|URA?1iCXnm%u!@)<)j2C)A195Xf8X!eS=T;3+Dp-G_
z+f{?{P&dS=l2boAx2pX9{~wf67`^#BmqSjY1825wuuN|+I05^put0Mw_{bj6@F}>^
zcp>?ifuVN_IJ@<NO9Rm5Ypo!=KoJN^<)F|4rE*y2eevuO14H*#u(KgLAkLf$($wq0
z*x3v6HskTu+r2EGAdct+8wl}8FVC^gUXYvlJHQj}E-GNx_JV_~yA>n@x`%Eq$Pi>}
zd$-&L7h)wUEH6^PE&$sHDcTTz14UX1xK#x<7Vc=nN1#*%Dn?M8E~0Yq88hSIPOx>1
z$Ghi(@**QRth>Qw+QG-njB`PbLX>PQ5Ld#&24)4wu`f<N1SL3JE`w<SDTQf!F&(T0
z<T6MB2eF;;IK<lKwV*V>#NT=O-~a#3dqM3}M*jXJP)}qls5@o371Y<_?==OT0KuXH
z>a{{jb!b%r8f2Xds>Qmuf~qReh#y!DXkP0^cPproeefAGq#M&4!uF$^y>~B2c_-*N
znK^esiAVE9XKMs#+^`o!cGrTgispeNmhN6q;~#P%7-(cn0<^UNeA^miSCq(tyR8|Z
z8>T@srXV(G%POd64_cW6qF+?LVqoY7_q)1VLHz^JOvzo)I5TMWg9YSNkgK3I18C1I
zBTQ>=Zw#mj4ZhOcM)OB!D~Jnme7CDhXN-zO_grvKq6WN89O4wv#x2l-A?T7-kdwg9
zg)SNbJL%a=28NeUKZDQU0Xd)>+@|XV`yRX+1Y9q|!xwbaPxoAKi`qv;1+-=nazYbW
zt1swe9gz)?cD)A3I&g;$)R+g^+r1a6&j2*b2#%-Dy`WGARad<%$9lJdA^^0|7PONT
zvPs7T<VaAE!vf-k=}QKN?p}~d5U0Yz5LWksgAuf*5*%WX)<0+&7sy#4_tt{;UV<Hm
z9zDGxhr3%r4SA4bd*^~e7&0Hs(YqCtN+7uwJS)X=9I|{^q8EIYK6uG{EhriUK=S~g
z>q0wgR198pg67T~q1!nA|Nj5~C8*;Cny9Jx3B8+J9L!*<2?v$gpamx28Vyt&Au51Q
z9+em8&VZ^_a9Itj;6Qg*gG*y@k-iqB09=Rs?**0DjK^N?{sC^8flGAIRkM)#9J~ij
zqf-X7Dw5+x*%<}~P!SXhI$sR5as{j!<d_%HAQNLXy1|BampXuIl<rng{oL6Kvf-sC
zXhHx!zJB+{%QrtE7J`~6-L*WuQ$ei?kY9Rx!5y^F08o;GhMA2@cdZX-c|K?-B<S2n
z@X2^3Dhe->${845F8KNXKO`G>_kvOoq+8|3zy4h3=gzGwK#kW@3C0uMHOKyRyBzz`
zxfj&!L+%KI`Vi-SbcdY#0~(EjbpODyI~COZ>kc*GUw;E)DC3Rpm_vWMT@L-|>}>#b
z=fD<r&aDBBpxy4A+X51s3+gL&wpM`H;2xnj|N7I6C%QwR_D@{{%Al=~?jT4l)c%rl
ze>z)1eL;v_-QaP#&aI&9ZM#bi_}Aa+4pm^h(d`2@rgsn6m>pniz{VT~&C+)J-1`IR
zfOWPW0Ly{LGkTAJoOsf&bL$dNTl_PqYqk~CK8FlvFdpu9x%H#F=GLFi-Y+1PmpVUo
zPW=GVUut1^sk8M3hzah1!TJbqz+K}LQ2htHYtH=v^$k0xg8HF`m!Qg8L0weP5ov!w
zrvC421zp<IxmN?!6RTC|1Ybek9RleJ8QwPh-?<mmF@^PKK(~wcP6f3{J6jDv9i+M7
z4lC5EZeI<UEe;^_zy(kzr02R9<Tw8HKOkYr_@lez;Gb@ngFiaAg2sv=m0c$|OG3Na
z$Gbs&&zPToAbn5BmD&*9opV74cJZ%22ilLj6_ipLPjtr||I_Vq{0HRJx6Zks1I&Bp
zg3~T|Z~+vj=YMq9oc{w}pJk%bTY93iwxzdrMW<^+XAI;hK~U-kl@g#@<;Ax~P#p>K
zD`xBaA}hF&%L2(K(8i01N-ucq4^(}EP4ZFU0UfFX%^?ymTxzklyKBM2#3J1m{`?(p
zpe=4t{oV~8^X-PTxF0fi$7*!8#(-MfKfYh+>;><*{n`8gw9#4y)aL4p1#N9bZy_TU
zIWJsJFfc&c&Y)%`s67j6h9I?%l}~`Y3^JMVSU1=%#>4*n9pF3YK?eH@AX=hugLzb5
zygrU>Fvw7l;YbFbI?lk*Jr(5m?pBcTFwKmYA^iYQNyB&y<f<4I4p0|iCdfo^fePv(
zfST4I6T$oCz{T8)3XlRwI~Z&tsAC2<74CQ>6Wu`?ASPn(9H=1__zFOr3365^j|wa>
z;N~9&m$F}v5h&QNfE0jT2Qz{3aPxZ>{!Y;O<B;xGcdf@A{=4$s;H=U;7gQF&icV0z
z02Oq#pmO~G|No5lI$gg1==Ayir+X`?c<F8hZH4dd1?2@KxmpKkx&ap~-L0S<p50SH
z*@1ukN65$=<Ht^y^FKO6&i{doqjkGBbcePeMB(i>(1-$LI2<y#&fi=5`v3p#S`lco
zYA&d)25O0e7g}_)gHk@I@c<cOKKK~40!;waFz*fF{?Q9*F@&hdXnyDg-JS6t(q02?
zlml;3VCin11L}F~1vN6kCzT`CZi~Edmt$mrw57UBMY>x-gTI|ND!qF_{_724{?QE?
z@n!=})PqiI@KIsWya8!#b+>|saAA(?tWg24DTV9~1v?MCJ;+5x;>9CbMuwLYUm@C5
zt{UCFpc)Gl^`Lf0_g)aMR|K?(PNf?%n-ePmX$*lD8q|U|?8|_?3~Pw7fbxGY%VE$G
zJ5b<28zU|%0?_I-MunqyFR0A|YCwTnpdjs_b!(s&)C+kbMh1u*KnFiSo6fNYo!~|i
zXqPIuMg{ftAx$8dOF=99Kn8)9SVD$aO2Ef`DuCU<a=3Rcw9O^}nu!9PnH2&)3JBDo
z)c|RPyI`&$Bg4zD(6-PQ@J?1{{@zJo22)K0C@*w}B6Z6BK~4af06H@2!eLN{2Gm~%
z<wZ~?24!ZXqGA1E%rfVtDP&{{oYlKy1wiM%$UsY1P+1LXi@YcUX#^d54O+~|g5K4S
z0Lg-ju<pH}5~sV=p*vQC@n82|P+`e<_@yhT2?SYBclXB2YEUH%D&kyuAOQpN1E>)1
z4)p<#o3N<#f`{ZmEw*mg0B|J&YNflVNPsqWy~xO8V0dW?O1@<bUi>X#oD2-jKN<O3
z?O%Ye{^V~pdjV?|8D7F@7j3-&vi~z^m>j9%2DN-3t)uR};PwxAupD&eG`JlEZp-km
zzu#SJz<3x|XLn8ow|y>kP6f4x3@>#~1+{@dG^l+8YB_+~L7m_>52%F&Y9bh(?1VI4
zrh?iwAhn=I47BY78ip<b4MRg3FQCDI&aI%v3wV7045&4?71W~X_EqQv4=_R|Y`|4L
zNHOD&?iff_-}o7HBVOlRP(!5~JT(Jr#(>m$cg{Tl8t7U7nejt+2t-FWc<ce%_-F;U
ze!y0AP6f4zx~GCBc0e;GCqSpS!}WkfVR}HV9sc#FA&sKWsh~zrcc=y93D9tTH+X98
z=7U}qtL|C_=y-hyq!|Iz4{jHMM~fj%BgSLhph4b{?|%%x!5T-9rVvC2WMsK>DyX3Z
zvglyvR&WamG*wV@>Q8qsxMBwn$D%fsK+PjqQwdb6f(jE~4aN)I;PHCY))K6p1Tu?%
z{b597s@vD0b1SGmfVGxDqaWZYGLVss7a&cy?ixtwLYhjD(LKnKxxITqjVVy215R6v
zhr3H41J<DA4rxt+%G}x&ouw_H_7jel)1C@Ymd4(4`VMP3p^aOjwwzqhT25RgSX)ku
zp)DuSh~*Jb;(?7=?ge?g6EZRhYCt__?%W#zT9pnN#EjKA_?+3RbE*Wm-P8qZHz5~d
zNPRdFl^0z536x?l_ksGhAS)Qp{qKdig@_T$P5Y3|1(l4T5)!F&oQO~WYLtL1fHz7&
z1uw#xFVa9xaK+QlbOo6OX)=Whbhm=d0=3mdR2Yw;nI#2Mim$Qsb1%HbhcF2H=;t|v
zQi$t7O*QB`NKh^DV(nf~asfF9G-3$~JJb<N)Fu+R#Mui<&)vPSCQ>P^iFCiy<=>A^
zpMQU#4XR#Hk<z^vlqJA3R3L4P2O%w|&YE+7Izf|X;Kb6s6>KngeiqVb0-atAZZ~z;
zIw0Cc(8g6O*x=9>P&NhYVLaIF+5l=&ftptE29y_Q01UjI0M>vqdG!B(H@Mx@-3pok
z@2(X&_!u^@Rl@wEo4q?!r+04xs4r=wqIm*z@>(m1*9&gRfvX?zG&;0_1RCdtT*<ub
z7$_})nnRFbvhG&UWICv^76URCREzcQO@Wx(UF!lGE(7tpTR}7H;6zoU0yYVB1OVtl
z<WNxabuVZh9<*Q)JogV?#xDSAhJogMYE(FSYa28#fVSd62DV%qz)p140WaSN&0_F@
zi~+Ad05#m$K<?<?3ZB8QQDFhO0yL1+3m&=yH6>kbz*RZuXpLCVxQxh)vqu>iUjBIi
z9-!a=H^M-zGEj{P8=UN}m4GzKWFSql-npO<gB<H70ZL=wXaecz>;=g{I&7f37hF_$
zU}JHhU9zAhbD%I#cyU7*)Z7FI&|Hv4&^d}cD&2cQ?9RC$aZuYU)&<n61iJ}5{?uIx
z8lwWYDf!nQhnNg%njLph0lNcvtPIpQ6alqXJ7ZK7UStR}GQ7M9ZDhgE4M~MIvLItj
zt^!ECrQe_y3dnDu?o!q+cy`2|$2@nz@))FaVm$Ve6Sa*6oijomV-ng0o@HVI9Yz6O
zZv<|Ufg<R|_njaUK_w`tX*Cs;eLGu0nHSW|y2kh$GR6d6=5qJOOFK~e2GqU^<$=st
zfeL}{SRY6e7~~aDW2;j{r8_hLJhBAZ1013P-#Gt*Bb9;S<quF14z8LY9hvS@36IXh
z(1DrO7ofHXxJk~x{xEcS=0vxz0qQ_g_g+wI1vcCSE)Z@Ys#kEsYAdKc0$X<gV*7P&
z1>MKj`H_G9`A*0vO|1pv!S0w-f4W^x{pkDzSz`ii;DASx_}5>AHag~lhL;!*f#;87
zuK$6~qlIcf+E<+)pt|OQ+Fqdbkl?}rG_C|4*n$j-ggSJC%c)Lqp$8cU0Ucx03#w*&
zYgaIS=mn32z{kUUR75%<qa5JT5@_uW?lXd#(4ce+4)PKe9`JAndm$)3L8gI+J3?bR
znYy9-QCgKyD{V;6p+-fdcQ2@6-wE!PbAU~YfmhrTFG6#$R@&!SK;35IhC2e_!yO?Y
z7Ie5n1YB(|X9kbKaC9S22!c`)EK`JTCy*&jwu8J3G8xoA2iZm3aL1o*$OeO|P_$b6
z_BPOP2gtzgR*>;9SK%D)SOqc>Qr}{qA?ySxfYjY!6G7PrZtAh_R*+qche2H|=m1It
zNCU(~?86=A2nC>)1<0A;N&qt40WuG6K4iFq4df|E=>n5M9mjsU6*D;T4|jkv6%oT7
zh#?KI25=hgo(iedF@`kYbuXysK^?r<aSK-WLMqtqR`AldQcw*H9zuZBQlKFOf!?j)
z(Unl0PEaijtvJCIaW{CK8)%U|s8tN!Cg=(pk>`1#vLCeiL8QAEwEV4`4b)T);f4-O
zfX=Gw2CsqxjY@#)53oNVwI#gHd&v$RhzBL&Zb;VO3o6(^6Cq$RaQ^RXbpVb3x@y2y
ztGIwBzC><7sz0z@u@b$#AZt2#KsQ2kgAM5f*Z;kHL7ID64ufhY2nXbg7pb5Iq^|*}
zrmIn5>7EO<7F^_mDm!ou2R3^vR7wQoBJh+Ds8;RV3MOS#dRY#F4HVhO!0@sXv~S@6
zf6FS+)*R3sI38dI!GVM6n?cPPQ27E%)u0RpY91psjmtJ;CbyTbQ7bj90|&MsjW`Dm
z<Uz9F{M5Y{lqo>98)V=BRP3M*96;Cm-Ms-h!xmJ(kvo2%5y!v)zVx*_*5l?2@bo-n
z|KM?F$PLI-L5po6i%UDf%RRk1rv`xgJZd-o|A#CO?FP@acJKWHstJ8VG(R|Wwt|BD
z;B%(tgDjnUb3lb?uMXz=Q;<;iRxk-}t#&(LU9ku@tlO>=ydD>{7Im-0-~azLPdhh%
z_}>Yh8SiZM0lR57XypK;rUp-&Kt?<~pe<j}V$&0#DLrsU7*YZ--T<vkYPA8aOFIYg
zPUlt^kVm$HENMQ#)Y)nQ8eeg-`q3RL(b;MOl7m+F$GS@mdTpSSfW0wRKf1v#>zr!<
za?SeV-Frb=JNJr!43Ih2-3l_ew?yhk_gs)Mom+K4hJne>Rt*pv?2yj60-$!wRt^x^
zDgzb=nb_IN17?F%cDAyB*x*T~?!AclF2<V>e|7ePS}mZ89lU0-8>$f8@HobJqPrL5
zrp{K-xLP;Ziq5SJAOp8TMtnZNn>?MpPeANmkSu74(^ilhI(sjG;&khs-=LL~jG&du
zAb#r$kkVGL>-W9^vG;;p+1dI4#BK%qXYUn|%DE>%Wa|yEILHy5tw+FYkj0&?2f%EQ
z>D^mF=5$V70utE^HXrPu&ej<qk+~3)LFRN$odXh?3QldUpwmRVT|+vz?g3e}cL&I!
zhdO&#fOvBkfXJx^hy)4Vf6)yV>Fx!IcRT&*1TWfk=mZbLKpIuug5BUHXqtyQ&v$|s
z(ekhV#rPkza27Iz(Xv7eGyum`V%)qIWDLuH@T&3uy`bb-Ij^}Dl-5}w>(T%Bg7Z=5
z*FXRNzr1+`yn~Rx<sUEDfYSZVznDsQ!PdiqN8muK6Oh-!qO6n1Kfu7yJr@)!plcVV
zf&#hQ<>HU-nu~uRjZWx@p3BW2;L#QEN^9iCX6IILBeYb(qqFr4D0~jWM$}F)o(9h-
z*4zUvt^`#8;2?nxB<%$)e`SOZA9j~Yz$E5?l<tK@^b8Oiw7@px-=FTips4Nyw^yMf
zf>0Sq+qAn>p%XkL*bVVU4P@Ub#CK4`TS1FoJNI4z8+-0YcgeXwpu-bdL07QB7g&NN
zVPOColIz?H9*L_}0Ii0E1OsU8HDt+t=T^|1q&IBR6f}Jany@_w8+q$&<p9qvf^<Me
z-8!f8{QLi(@gQi~DQF=mR1|rsZLI?6@WNJ5Ab`jIz^VN1T+rkuh<|r3c*YX87PZs>
zYQ)qKkX2Jb*`TvE0K|5I&LV=B+d>0jZwg3eFDQj~gO=#}T>Aq$bsM~dwzC(!s1_8k
zKL7r7wibYtf+ub}drLs<UQi_SBdwnWjT5?@f-e#Uuc9qA=-dlhJlhS<K;RY9pa`tB
z=tN#B3!2dZxvv-G5||IbD`25M0Ii7yyRZhdi1-I+26r!bB`atg1Qd1P0oTq}2GC+v
zh$FYMfY_xL{OfNp-UN*ngC>?cTS2>TAcLK-FaX{B%m|tCE&(M_(1KT33IMHx?XETG
z-U`b8uz2hSxgK;qVdqrv`qmQ2Dqg6bR?zwMom;`D1w+T6L0hdDV2jp3tE?~=zIN{Y
z11|AzbRP5T1ubC%FMowpL~}s_4Z2vVbqgq4&253S6*xeRnC__{9%R%AKB^E4Uj7PN
zTLLn)doD;@uaEGL-YKxvqb$(L9Pl-KJTHp(fY!o0bfX##Ti*g57B~z#DPk(vtQf8z
zutl#i$SdDK%Tm=rW`PZYER=$*x^iYb?uT{xt1sx7ESL@55aU@6_PQ{^7V9FGzw)TS
zJP@M7^J4#Qh?`-q1P2E!2taK+o<mUM@VT}UWD0nh9mJi@t)TE^0=X7-`Ri8Dlsse{
z8q|b_j5veFl5JFaV^@GD-(yt3gIX_2lRynTc#jmc{1w!so(eVr+%yJtSRj2+cy|^y
zats<js8Nx4aUm9KCsdLH(g_8P9B%-1Cp%6;XWl_0#}G3iEkAIA=>b(};5k|_w*!=Z
zAfwA(ol_k^`a8d{LA#^4CdrSj09gqhp9M9%kw-vRgQQwPmVi2<Ak!HS|L=vk3$#HH
zG&&3F=7RfkAWtK8z+U8mG(-Aj=;j84q(HqpkkMdCNbe401I!3UNbgPqq!ha;ydbHm
zAU)k+H-ZdeybKvL?sgS`83Y=KdbFH@q1zYXNASo1xC8OxI7kXK?hJPeXxzEG6=W{V
z2&h};fRti)OCv}M><UCkHLnGQ6bs}OGn8p{a5EZKV1V;5(kj<AzyJRS7ZHY_wko*b
z!@tTEqybVwbZ+$k#W{SHD@djnyvo%DX_f0$q*bnv3G?2m;5k<o705!t?pBa;Xncb6
zE~q8(LU#u!-Ggj^6%ODP@t`GM;LHh91k0c=7(j}_&VdvYopZsC31DPA4&5jK&e*ND
zLB}sZ_8CHK?FCyP@}YAo$PxS<pmYYxMc~qKD=4twt5qTHgjv};=PRh}g)M%MQ2|{Q
z$Md2bG?+3MY$&*C1{xkNQDFhC5QG^EGvS5zc2M6AG|dlL$qI2gq~rjNhJ#n_GR_4#
zjPW>RfomsZ2`t#B&^4|QXF*3oFhk}UXn+H{WEke6Zm_SRAr8^v173v-4*eIKK|>r!
zr5GdFI?x(dkW-r1f`XO_lFqvKf?BYad%??E`^!M%{NU|>mf*e_e{U;fq3cA@B2jQN
z4l?csYC3{fT!w0N&js~s!1JV__HwU@buZ7a?plFfnNQu|E>CX=$B%Ay(5<(<;B9`r
z@P!eYAG&>YpsOdgf|}pZ;d9V6M6NQR;XKef|4z^i5I*1|@xV(vp^GuWD=0f-R6t8U
z!HYEE3pA&I#xHyYx~GCF%Hu35V8??;9pTP)b>LtBtJehDzv^xUyFA3;2l$*Z3($fE
zNYVxkSAd4aAufk4d+pu}>J9XQX9_?g1fZ1%pwov-L3jDefR@98mP~=JaS2fY9Ss6L
z#Rs%r0p#4y60ldmPJRKJZ+ofu1+h>A>}E(q8RS^7(|r}X!F4{!F(6YwJx=g7N#G#p
z-U{l<U@j#+2+iXmDhi<LZ!RdAf(qbX$hy}U6@gx!<Gn6?KS0Yhy0?PD3c9qVMun%_
zSEakwrE@E2PNUluv;<kDdn>q?135w*w5?s|g*IrUWiQBjcvyoI1-QipcYZABGDYxu
zV2CZCr6DkH_=0Xw1qTHz_P}dkL6sLM!JsVqfUJQ9twieu9U3MNb~t1Xr+Y8R`JkyJ
z&;jDUE}h_YDBZ1K7lRHag&cMd@`u5T(!C4}FU6o!6c<5jV&#5=_8IfH#DJH=GV}NT
z{sCGXi)~FTtcVA#h~2XgXHB>eBn2+tA@v`klz%z@$N&GJcmUNeHQ@Dn;EDxgU^Yk>
z=*&~ly+oiQhXZotIat99Uyy7osFnuR=)K_jrxjFXbjNCRgX=ZMbBvc!=PM3@*09z}
zbWa6!o4dh%Ztws;Xd_st0<<Hy6|`^_(oF&NI=W-d|AEaefR=7Rx~h;piyoZ^J6r#N
zD~<Dp{~-${7(aHGN`U4MK=TNldqL|ox~GB$3%d70I^v*}8j#rm!vl~tt(~o)RUP0K
zJa`)*XiZ1wT+jpqxJwZ8?+?gu(3;gw@O(mdsDk0`&b^@J9Nl}tJ^HzzRjS=3kco?K
zUjs;MyL&3Qa}Qpi3R&F&TYU*xq5)a7(Rmu&lP$UU2egC*ykY^mC<C<QqH`;FQ3j}|
zfMpRXs7nW0S)%jr|9@DI0n`TsEusMR@Vdc63Z1a!sjc9J7a_m@fKCMi`3bz*6uhhg
zWD00a1!QF^cq=KW_u{Jo2`b2bNoXFP>jLUw%>_9Xv8v$)d;!E>&;&AUH3eu*9jN~T
z>z9KxA+Mu=tgPtvb--#8Xn|dC?FrbL3RJ^-A+t2#tzV$!rl8dmD>^|dnm}z?l<64I
z;xy3yFCWnUuW(R90NwxwP04`NLMG6lD=~Rg;Omt*;4?6wvrs{IPJ@=Toe#p=0Iq;8
zod7L5{fyM~?flt26|}Adv})o3Gk8d@0o3@7)#&`uIkg7bya6pbwE?B(&T!b`30$)<
z=jS3%mVm}_K@%oO<GAbQf_w?G1eDo9Hh^bgB0#5qLDpx1b3O9pC%iCWQF)P%Vm`=h
zkR3?o`+*dITh86BAX}idKe%i_*a#YAhEAQxf;51a=YxtGkZCR|ERabqu%;J(=D@uK
z4iTuip#5mro5iO=8X!)<J{hwLp#aoehdC3v_7oH*FfT)!$dz;8MJP-LbuuObqyX$+
zgdfo-V<20>AX%k*E2wmWj?aSU82HzJ=!UO7{oLtt|3|0K{Xfw0OYqzUbnPiZuGRsv
zny9-M$uRI53h?*_Xl(-HX|PG473Sb|+1;@%kfjqb=l_6~PIR||Mma6PTi5yfMKIb`
zx^KXBKDd4dkMZ_Sh19hgy*%dKr2@S&C%St<<CTyWH+Xslba<H#sBHo|JO^|rj^>Zv
zz2KHOc+~-D&q|F7=(=(qP?H683My>zBy7zlXkQ4Z`UN$PU-Z5J9ZF*YtwBQtpe-ec
zg^;Ej*jmszI1p<g=iq=%*Zj~6z6Bh%G8H^v3R-vpTI=cp-U0+(K8n?5VbHD=?bnc%
z5TK?&_f$|o!v`TC?H|Yu@Zc70_g;`Z|N29)1qj{Xaau^2K~}ByvK)jghXDB-)C2=f
zvw)gmF_3$YU!3~{8qfrp1KCRiF|(6L1#$!gXrK$a<K{SY87riA<^Vacm*r6JR8YKw
zO$QG@gBFIsdIF#(X}2qA5e0a81ZWG+i?~k=3@_QCvqp^I$s%U{UQjC+bU`A4<)(=<
zK|KpRvqlaxL8T2SM|JmtvKixH#&a*NAtOQH+znc8S_|4_16j-uDsVyf;J#o7X~a2e
z^l}Dhe;C+U(0u?7P{V(B?*$c;jOW11O=0IN-M#U$9W<i=J1?U77bAa*9Bjp?+e^?0
zG!uWT?Mu*fC1{Sp@TB2?(C{T_OGwGBKb?EQBgBw>{@@X5NW^<}_JZ0SofrAnpXh`%
zPQXLw;Bj0P(8S6K$o7AbSuv1pE3irv)YgEE=RsQ<pAkdJhTjZNc5Vf=GGH|~xUI4m
z<TOZ&q_Y>)66tpN^`qP87kt+YXn?k}7qqUyqw`p2s{&|R1AHI>sAvJZjPXOa&*4Aa
zE{9>;?pwi474X7NsB6G0Q@ec)7>{+=eE!qz^7)71H<&X(%TT-bg63tQduyOuMmo2G
z)`~)!E}-SI;D!lg<tTLZDQHy(|N29Qmq4e&SagGqD|I>i1GZPDb1JC$0cjd_ZUr|}
zzClK%4Zn461vO#1w}N~FX|8~qN<KgTK-Pgmaz$q^Xay)9e}V>{p*1ad5Wlk*)TV(f
zYXL1X{rm&$UGPRvSd#|SB7u1w+^_-fl?0#aqQUq9GTqc&0}0Pgl(r4Xv7p`$crhtx
z>lH*1WW1vjygm+e4HBeO2M-t^ts3q2fvkz`>;*M)U@aVok%xQ1jT*)ey`?K)>OjpP
z*9OEEcknKpPTv+#RsszLfSW0>b`EHTSdSklPhz%nz?;yZg_DR1q`?C>08~UFw{xC*
zVr}OffVOi$1AP*pp<&n(QSfLUWK9jUtpmC;PNTE60%dT|0^G`3h}6mf*W<{I2++XS
z%PH`32QvJ{_zyGy5`yTbyf`)m<V%q0pus(eTacEBVz0(0g3N`i`v?^P4Rv&usBkd;
zgIrn%F0WqXfs}w9)eUhwlBFn1LR>)#A!fNEn}yU?QUWO<#;l){85kfD0&OEf{Of|`
z-)kTxFzdRff;<lP0E-IaWl)O_=HVA>K?)(3LI(X9|A7v$L-NLpuF0U~wICxHPdBdx
zg&n>nqM)J<nj4@knHz|f3}P1zBn5yoGNdH~&aNV$!(Wa;mx%g&{{z}|(+zLfYz3PQ
z&Il-~!BregH8=xx_kwZ=WXF7WX$z<U<l4Y^5!A-%1kH4`g64f;?VRVJb8S(^k6a&v
zwhMqph#-Rt-L9ZR`WZj>%G~Jg1q*|Bwstdt_Fi^R1<wV8R;qwbw*<FpAS>&@)vl`!
zXs8`j?}8dXpd18h=fIi-;7a%9D^Qcx1~gFz9(w|fLrn$kN$F+>SpeB)(;chRDWanJ
zp&L3O4wiQ{0mUlJQ1Af0iwdY84%$cpsntR28#`VxFuW{y1a7*3({1-uP*6fV*J+~y
zslh<U*MNf<bnXabuoOI$0?KaCRVCe!S#8jX?5-{#@4Z+%8<h9Jj@b(`6B6>EwS?fx
z22}g)1<8UIf$jxOiNjJ}Z!c(#56JnwEXN?@Q7)jtGl*}&W(Up&B|NaHV0VGWz9A(%
z%#iL-3+U<~@X}K7$P0KKjEPDw%OS9-7%u)j3v@IA*wm?@R08%ts1FS{)YqbOD`@o&
zC>%l?@OppUECz;``=P@!>%j{~nfZJDzzo<(46e?T(F9PmBQ=*GS<eS48}m<q6<hy%
zK^c$n@XJrXkfJeG0PD)p8~r#}j_&P;nFtzyDRltdS_dj-8UJ;*f^0w<iGiF?b@#?g
zMNr$J7qn^v)OLYvIDxLd1Z_M4pB&W<ok|DwsUc%8-kspCf9Ea!_18M*I)GY0hd>kY
z;9-nj&{7l7t!Ll^reO6dxMj5$6c^x;nUYg~K)SC(CdnaVxDc};4WjN+3&ukrZ@{K~
z!BsMJ`W)QifUVF1HG}xqABV5ggtmL2qYtnG2D-cxTu(zr4Uj8h*dA9O6%kM+3tHZ}
z0<swv=kiWyJ^Mn#9Te#BIu<;c20A+dQpZAO(?nDt6JID5HDp3fq!Tom*6f6}j+KGd
zv7oVp@6fRX@E8J?4Xg#A+7-NkwFJb1uIMxY*Rp>It>|p-MN6)ryo)@MmIOXA2V^p+
z*9)=>JeCjx8cRT&e+#O8a89Smqu7CEJmFstsJH>=nO2ZZpv(!&w+LI2#uLthG~gRg
zSOZc3sVS#|+}sT@7x#EVHAn-z#sqcPK%*2$^>`FQ0cbn{=1k~#0>}=yiy_m0nmq)@
z6F5K$!0tl$5$|{cIJ*&13zx#i4EBQZC#)j=0a@V;n*D*4(f|H{wsv%bmw>@)&DR*U
zCO_y#G;m_>hU_b!3aToht0jE}x?MFOje5q*&;?>!!3!s4Zgew(_9gT}DjO3O%^$s6
zL5n1zb1bdkMPDW0QW3o75nQahg3giVd7(EIwAdHCfDF7B7t(a-t`&gge2^88IveT`
z&^}qPG0^_94d@~{@Ky*=H3ga!fn3B6I+B9t#knaA3@^=YBNe$|4?_F!A}Zaz;D9St
zfSL}e^uW!3&{<o(V1MidI|3ZUu(}SsfDSSS0M158HEJ}dsR}U`+$De|mTs^CpdLSD
z{V8~_8KgRd>__c{gy&X}Kls-l2Q5GcFE#~Lo4qWDx<f%VHb*za>JadD6M+|RCo?d-
z1a+4{$7_I2dT9nN6a5UWzzB5s3p(Ms5z=@BWk=*9!M_t!@PU$icP}U(fIIxti0JT(
zfi&Xm@c-xlb@;)?LOT3Y!G{0t-U}+r7_Wgl{Lu5w@7{R%9CS7{i^`<C;FF8N%Wyke
zK@~hGWI&B4(3$ctjNkqH|1x|X=)h+1iSM0LSwID2ANb-j(1j|kC;9u{GcYiK59;Rc
z0bLW*9V=tWT+7$(8grZhboTp8rB(mI3*k=i_kgZI>yA}{%m4WQ|Nl!Sko+&k&I|lK
zZJ-Pks{@w@pY{D{C20JCvGYPra(Ao=SS~c?IMWx9-eVxSpNyR+Y8<+KZ7dm~_I?7%
zty&3Mh6-|U^AE-v$?jMe&>`YeK%yYGeE_LxTM0dz`Sk<v-2CgE5NaBjdI`$v5SAPK
z5NGhxA<(I{pcA%Vx`K@JjXBQv7i66I%K!f%yL?zc1A?G%1P$|nk}HUQVf^pkf6!rR
zzgGPJ-wpBv_yB0emGGOiAm{tKmFDCG1p9@!1^G+>-y6k%03dTf_a1=G35JM%u!qnp
z4xsbFk;M1I#&=-n|IPu|ixS<X8lYV$44th%eu1J^q1&R{)uVIo7Z6XbbM6NaE!a8r
z4X9ZKHXC%FE=TiE#=6vQR}0Yj{dF<jwKm=It+(rfEl<_^gKi{XW4vH_qTZ#~M7Z-4
zsCly$)P(Al5$Zg}zy6x#ty(6~B^fT30<}8bt{%r3K*8S$x^KtwMlDn4jezc0hubVF
z%|}@7N>6A!0&*$%SkU7vDmA8U8NFLU10cP7LAO|en)IMK$p+K53{VJnKxly;)3%Hk
zjnf$zKpX0z`f#d?oDLc@mFNyN>F$Muf=IU%Xp|KcwxBlmaTb*Vkj2IS`PY90bxkIK
zcp@KqOKw4~lK`(i@0|<sC8&J@s>8u8^!WOJ|3Q~xxSDkLf<qKEYbpaW7HT9&b+7w>
z{`ChzdJsk*>n-^OHoCi3p%=X97i6B{H;`+<x0bwMssH!?IEzXN#KSD0r0`<K6|h*T
zX<NqKxi>&D=Ar_Tsk`#;f48fH;U&Y9cea9LI>8HAdm-nXf{z^oO|*7y1r-pz;DZf2
z_kxz8BDoXlLIIHHL9PKE4+RUQyK@ix`v3n$e%-(S;QlB$BurF#w}RHU@~=MtDoJ|x
zg3j~;#S$oXI$J?!5Q5?l<fj*@-v9r1`#SVa1&`Z>sPMon25l7rE#rs*9}obsJO(@<
z4i3i`e`^0hG=ewMw}LGe0UgrF!oU6i+%o7!qE7IE7cYKz{r`Wr6%-72!KbR-Jb8zA
zfoWUD&678O-2n&8y_0uaK|Z>95_|^X+#SFE|DVU-{7Z*{;Vzidycc8>6MsvM3IhYw
zt=+B`5chZc+Vsu^CsN2lY0wl6=nydmSa5a5fbVVx`{v*S)?OP>pA>YUoCGLvUub~*
z6l&8QYXLXe29#33H9Pp+3Xn38MjiuDv~^p7?^6N?2s{m$wD<1$3eF=nDk3kg*8Kb5
z3r?opp&+wBN9328wq<}i-k^*D$~c{nA$}2%;Sd8stX`gm-YsXr3%*NKBzm`kBB-0W
z+X{5oVTp=HFHbw@`W3LsDQ7|UfzD<CbHPWzfoA-Br*eR%=|C<A&73jx&IKil&JY#Q
z=}<1cHVwT!e?i7}`luN6f@fEIdqHJ&r;Cb3Z|#lVR#4>uS_}a)_PC3R4T$cHQSs=k
zQSs^YQ337B3wfcm`2YW1pnTBnYSV4dIrY!4|Ns5?J05_}X8iE|Lg)A92h9Hbov#%c
zK=Ht`!L%)-+ZB`{dBEwBMWwqHqy-eLQ#3%UctJBVFV=ug+KIL3-V2iJX71(L-#wQH
zv`+kBcPq$O?tYyuXF-$1opa8D=8-$W3i&%Sq0M?w;Nr8Y2V#|v3dajakX2JbhJ((q
z?gd*2YL0>3*DKTM*lD8z>W_k~?VNHKWE;%%&X&7iH-I%Ae8}26M-%LW7!{5euNpvY
zK(Mi3Y4A}fU^7807G*jaL8pH}f&=U$N2u8tW=?^a8KT1RVj8u~L~^GS$V~Qbh#U8U
z+zawE<KgCaERdk?+ynMAio5tbXM-+Ma8cm_rHSrZ8)zvkqte?8N;RM(+iFx;V08v~
za{;J70veqKEyMItk$5q4&j0`2Q$ea*FO~3hmwFs$10|!Ejgak5;9LsI(o;cM9&|t}
zIEi*%1GVOQ!TLaFet=fKflgBa6^o#qvoD&afZ7~jV-J+B>~^&P-<8rW&^Z?rvtIli
zLGla?cfmmpO0g0UpZBtKGT!jIJLM>7nRBlrV<$LK@^{F|GcfeBG$6|{!Q_6+VaPGV
z<ZfWfvB2cEV#=|?<R)RtvBBi>G3D4{az2=H98kGVDexr;pz%IXQQ31BR9b+7t~=DB
zcP?nx2B>iaibqJ?fd*Qk>uo{T!M&L13u-Mx0+hcMwD=v=h6fk<pu)&Sg{8L_WF%;l
zn2!oi?^KYHy<0&VQ0gv7+aA1q_XV#fvYDVfbeu({98@%fI`o2@EucZ|&d<HQpz<74
zT|r7w(26CHqd<rHbwaOp1(m0u<y<o$b+Qb|C!hgLSosK=q=hzAP*z91*f9e%bO0)1
zyInz5An3Lo9~IERDCibB&|YlNF*2Y#hZT;qs6ee@0l5-p9cZ~17HbSZP5>30p!5t|
zjP=5E252iF$Rf~=BS>Nft!V=-F#zq61%-KuicarVP+)>R2MH2TVFR^X1ms7krC@(z
zu^iQpSEhpo<w2!9=pYbet3Y?E#Hh&h&IKQNTcV=S3qCanhfmQh>U04w7R2t;c#x&w
zJzl-N;LHmeGVxIX-=zdTpcov($5~V=AW;U+>aZFVR9S<<?ZwPeaNP--6$LFC1r;Bl
zqT@4EA1LF4=8U0X4X(oBdSgL)dsl$&51R@OPEdOWW(uU4gV%0ZkbdxtA1K>^(qivc
z&~zrK-iG)9l)RxX!Rd<YCE(^CG)MG;VgYngBdA>ko&E<o9<+TD+^_?k!>r<koH3q*
z8j~z4mC%d<Yw2?I_JZ>mxM2ZWO$%urfQKvQf*t0f0#2tOr^3Ru6SQ{EMMVJ?lbs<d
zpliuNOFj)i;SEc#FD^PFJ0S()ges5|Kn+E3e1@oSK&<Qq?<xa_N{EU;FC?r>R74=z
zA1UR6qX#s#4{Dgeo#3OQ(OCjXNGMM5Lvg~xpa1_Go;18|cnQ*c245!$?h|%G_9yz<
zbj}5}pgX}W>TXF$!Pj}ukH5o*5!~$H0JSwhr5~i_joj!E;pp|b^`N&E+%^IqHVkSn
zgHjhLVqQ2qfT|Nv)#2a=F_*ssbTWRoug$>+tlgm&-IDO;u82x6B-Qf>^oHDg(Ax_(
z33Mbnq~!(5<vuC`FW%c@nz<O%?<T@baLXB71tQFJQ4x4C8^g?sU}D^e%RF!U|NsAk
zD?z^sE^tNp5_I%Fq~#8)FuF?}dJ)w#DCI$llbgRlE(DeSpk4+j6@m&aNE`p|+y|gO
z%WR}-n!okmckmJ(P%4A8BtVr(3@DX>(p&FTa2XY&!qW>rc@31%yJJ1Td#!y`6hJG1
zd%;&XfD#<Ee1;^r8WqstYbxMu=Ar`H4}+T4RVRRY-yXe?bH71F45-TjUVrRx9Fp-s
zW`c@e&`odfyac_y8=jC$R5V~EB1%F&+7F6pP{4r393;Mj#vE)wX&I7|4ZlII&jL5u
zcY<_66Eb)&Vz*Q$xK)NdA%hN`109Y6jw4X(nLt9WvIRMX_=F5Hzn4HlR>NW@zJ!cy
zCa#2c$p+n>xDzrl<~7;iNyv9wL5UI30lj$=e5DqD(^nBtBN5d91m9G|-+WydBmh!<
zw-qFO^CVQl`73Bv7L-hPfChgcWkl!a=GROWDWJ3iYI<~odqtpf0@UFH)fb@hNb_2+
zA7f`P=oI133%wAUM+Fp>;Hsk6grnEz+73`p^M!630|O*CdRK6CgR9Tiiy(Bjs|o-5
zZ{2gjLnyu?-Js1kGDu?`y-xo@Yu05BcDqXS`dt12G7pl+Kpjs=J_E0h?&bLaX|ID)
zI;c7QLOc&ze}URapn@Bmqd}z@q^%+WZKZ&+2gs{X8r(_&RmGre2g@R`Rv0v!pte%<
z`oXOf@UB7!P}{8=+`NQY2O7yh*eKJ>bIkBtC#a<cY5^izW-#kP{XS%CL5(I@?FMg+
z?e1d$?UVUn4;q~5gyc7frQpGs?otPkt>9h9y;H$a1TM{cd5%FwS31G>`}9ImF=XTe
z)Jz4%F(__9Vf%vJ3N*SR)9q@~Jrz6-1v&``95>)$1yK3s2D;t{6xh%qhhC9`-L49~
zKA(PcmpXu=3S<x@H2Bva0NW035rftOSLDE=2h>JFZrgzt4nmri21xBWSolE018V~k
zYxMMk=D%7&?WpchJkbL>n+MdQ1YZHK14<jcb3vPbusDIJD3SnK3yy(qUk6ASfEP%E
zYE|S>rVte#P>s-Qa<H=%WFM%>_M+PYG}r{nsgNoQHpB$Ux8IJi^0#(=1Qq@^kiiQH
z$jAk_thIqO8d$(t7d*NIx@gTsg#$VFqLjUmauU=IdePJbYCfTsv*1~&P;i66*8)7q
z2_7niwiZ|fK(};++yLEA3bqrJh(K0>%`?Jc-fWD<0>nIU>!z251Jqmg!D1e06X_$+
za0j^3fHi0;{JY6?+q6blu>@))_}X+!zB~e2T_0-Fy%k&@xr%gifl2~U)rQtu?hX9U
zzy4aU%mql#uD9egXcGz#q{q<h3ObLUrSmkXp9*U~ylBq^4LYLdCy?2w`3c=7c%FhZ
zTEXQTsGbL{g*VRp_aB^bA*0-&Vhj}Ruqc3))h||qhDksZlc16wrV6AHni4_r1yc-3
zhP{x)2wIO0(i`fs6LeK3%Jp!drGube0i-1F>;=ylGIf6DUw=>YM)M1%&Q{QPT(_%D
zvjro6e;f}31E{EXbuhdQHp}o*XUvBm-H>j9&xb$Vt`=bNUX$6KQ@(-@h3M@03fip#
z)_$1_G~RC0Ef1P1a24scgO!EdrJw;%P`jzu$NE2{CIR`ZyHtXI{b`V2K_y3LiHZuS
zy(a>?eH2{8gL=&|zkYzuD(m*OK`P)SdLbpLi;4_1+k!fOJ}Lr`umYF;y*9@>YgBZ)
zYi+=X>+67K)*yA5t4TLMq80-UVS^iy7Z^`K%Sh0rd)>Ywy`U=10#v1eZu$as@IZUr
zAU21nNPvn<8PFkyJTLsyK?S8ux35X}R&Y5i*zIf6c^%wx2X9aVr!pTE0ml3Oputf7
z_5ZqKLG3?Kn85uXqap#?<pv(R1pB|Y<{Id#BG8%z(9v|R3ZPS8J0T~)sz5vr3lv!O
z19FteVbJKs3oGz!A=o*wCf&l_u{NC-y17A_1yp%M6SM&13CNH(!t2MoYh`+Qj)OWg
zH5Y$?di9{C;&88nYyh9N!vncWTjE7v8f13B)d5=1fMe4|MFH+a7O+T(3J0jl17(a7
z@S<~wCwY#8s#=h{K-D=Y6~H`&y!#H8mR=;cL-&q@@(Fmr9WsjpF&c6vZ;6UPugxLw
z9FdC(xS<X*9^~y8OH%*+@7@b8JA6&L!SQqf98X}!fZ_>Sn=sz+fW-{xAeC4V&{;38
z7QHdoK?xFcmpJG|X8}+_0!oJPyEj1b3u_$o+B9^#f_BYmfU<n=6v${esN#f-Zh#Z&
zi-~QZX<e|B@J5seG>$;dsTDzrqEOIrz@Q@pIY6x~P%Q~MN^w^T$fw}=C(WlaH1p~5
zR?x~eu#*rzwT8tFJW2lOoeL_opxy=DqluCvL8GzVwV=J4VE@*rNI)kILB2kc3@XAw
zDG@ZL2FhR1)CEt2pppkP%m*K1gY3h=-daK0{|Qfl4_iR%RzTSoG<yhY41mUOz#V$f
zE~*;v91v=%(*wE6m7`mt^)`R&Wzb=Cp*)bQP#=NrV2?F{WR-5=&WoU(DFTpwS+|7c
zP5!<Opcx0J|E&igEr0&LgOC1$Y7_xTK?<qQKrOlMS`ld41+~Y)qtUPw3~K0tZdY-Y
z09~H}4XzsSepeYt3I!*BSh|I0Ko=EoGYeL_z=PmkGidGsoMe4X!258)t<G*=5l~Qg
zfHr?XawVue2O5q7?O?Sz2%C)txdL<oASlgBybw(K_rE(7TzW$0r{Q_2+gAY;TOOcg
z9iX7~QIUcA5OkHOs{?3(7<5c1L<KbP1c_wGoFY*^dLaVxNvKSBEo>?mG&2M7Of6^{
zi^HS46qJ%cQ4N{S1)Z%9X%F%o>TCriW@vpc@xndv-~X3N55YqXpri*WXnGz0!{R~n
zbT8-vRZw#ul#6{qgVh3{<5K5>gg_&0pbgZ$EXR9mF8lzM_V9|112TaI8s<QaFj%?;
z7crpLHP%v77u3iDO@xEmjopw%0ktB%k^e!r_OaaWwgM$%Xol;J`SGK>RscMo1P+Pb
zy`Zh=pdBfo@>cVNLnnAUKj^F>S5O#%7IuRR#20P}psGLyGUd??4jgbZ>_RWgb&!#v
zCf!n?6apQLhXqS-$c-Oh>%f&|?_SWpSx|QnQZ;FUE~?{k0M$g09ks5Yej%v+1{z8S
zbw^=Q4Gs&~ol2l07db3mXo4E1p{S0l{LjDsM=uL#4?Jj{0LXDHuwZ~W3K|BWO*Nnq
zAxPgA>?jTg@VP@E8Boa!>Oz7>y+P%WO*|+hOuEHif>%oUnso04t+nWm)#+yJ2Jhbj
z)rsJg4I1nOPdkGuEKpOVm*sHpTu^Ta659sg22d<$Wfmy2g8DtMfP<A`*fK6grqu+s
z5`A?*{)D&%v{?-7IZ(+9@fJ!Q11d#1I$J^R?qxX$T6FIMx<TCl>`osQkb@*%1jqgR
z|I!LH4;*XK-3wk<QmfL<jN-?Gpefg0@NhTG<-MRwkw9Zw5}=R+4R?Xs1uiN&phb*G
z%>z&}z~VblM;Bas!iyyDdQj_Ar5o-F(6ltzcaWwQC<BA45>WC3c?C4e&<b)c)FqH9
z1dyK~>rSg<|NVa%3R))PY6EK6mCAGrbTfkM9`KqE#zWwNj}r$UG57MEgLFrFeYilw
z9~_-GL5HQ4itw*L4LW_dgy{#UnP8#<S{4qP&VmeTm#FZ7`rx2T8EnphiZal88}@E-
z(DCXQdPR<bW*fWNyZJ%<6TLpiIKVfE-Rx!uO$3`XK-Q1+PWcL|D|<~CdwuTh=mg!T
z;G?4P;;aIAE~pzkJ<`qIE#7&WfBiwwwX_$yLyoa@vmEOTx%a2j<sRtpXYtPO{Ob=g
zUg$14#?$R`oCC66vD4-LhhCP>&XW6IdTWlp01wgjip=ibauwW*Xt@fqw{tsaCsg-#
z&{n<9cF;=d?sm|2a;OpQpr!Af+d<n7UOxK_8mutsj+FtOqy{QC5dmm&y4T0(2P6<d
zZLnV76`)x-NGSHo90Lt4l}P;n%?pO^fCL&#Z|n(B3p7MUpz~AnAr4Ue3kecXA=L{$
zg%8|T1~s>0z{961FSf~p8jm)hJ^A2HO}8IUw;Km^(WK8kmd=lzEcd$Ey31HPU2bx8
zmfYm&X6l{_@^7z6LpNl>&J=Kur?Ump|GC%Q3p&lO8@yZ-Y7qFy!cOq9Z!gz;0@nth
z$sowQBXoorJdp_=_WBGeR6xZqC}o0rc%Wu5Y#<oaHUjlOU%ZI|O;&-2siD(M(7q;k
zG6Xba1MQT8!U3l#%Rr`pCsBIAlUFc3kSZFKz(A{2z|&<QS7Ep!4Wu7@b{o1*7s!z&
zAh(0M(-=B+qW=AVY5MyA|GPI{ibAN<55c@65Na=k+6JN4L#P!HYT-lhKuWj7%jpmQ
z|DOO_{{~vOS#b|^@&hw}FAJE#RFe!UT|h%WkR=~}plJlqU|Dyq1!&Y0x+cR0w2X-3
z#j1D)hHfnD5^yg{csb`TcttE^QAMl;yh`SPS=1?`@*)Ui?pDw`2hijVcp#*kt5>GM
zf$?;AFL;f|7RY*sf1N#$)g53pFF~i0^&;*^YXz;Fhs@RXPW1rIu(yJa3<R}@ZbHh_
zUeH0<HxJ$c56av;30hFwI~R1}TJKiS-R^h5gS?>mz!DXKdk=3Oy3-3fm-FW7n-6cE
zybD%%^We>gH&5LGF9QdOUHJ9?KZri@>;M0IFYnF;S@2?$5ok-O4ruJO732=+;xZo<
zmhQbipegOSp!3oo6&7?y1Nf5RZt#E}<f>u#8h?@AxdtFT;FH#lv#6|qOwfX-&p_1*
zDCL4;4Ahf+u_F;YfByeJXo(YKF)K)Y?^KXKK---`gD7Ctpcz*e74R4pxG@%^BJrXs
z5j3C<^2*&-kjEgy=}nhGXJ&yqh>)4Iy`ZcEYTERIFBj{b3qGkEv?~F;{u-1qK-KwL
zL-0W$JiS{%heAL`ltAa*^n%xeK|KO<5-1aZJOZLYh0%-m37`eT;PMi(H$noY1G3?a
z1Edl~$KC{x<3Ud722bR7Zv`z@z6)Mwee)zJ2D|ry_Jl$X2)y~Q8|?bdy`a?-kh1sQ
zLC8EpXR8P3$i1yT|Nj361p#<u@;zwHx~mDKecBD$h7PGIT|qqvP)*re{2z1|K`p3f
zDFC|iOymQki_+_J>j$K%0BSUVI^8iU;Bo^LW4$KFL7D%Beb~SMkYoa>^g*2taODM3
z3#xcQEu|V2NZ$f;d>!BTF-EH<xEwaLk9%Anbh;0C;27jQ9m8+nCKSS6P*WY$k^+?+
z$ZZX%J5bvhkIQh4>w`y<J9|MB#h`Ej&$;!2mmR{=Y429hb!4EvTCd1)&<tiTctRO8
z4-CC#%|zvekrJq$1P?+&x<jBAE;xEXAr9`zfo5Eeg95y}7S;^~ZK?OU@B>sMf_ABb
z7S@ADszAdvJjZ(>$s9DOzc>UmRs~%p0x}KU>wrWEs9y$}?WD?}{;pD3#DF@1@Zlhs
zm7pL3*$Nu20L2Y>yhaDIm=qL0y>mgw`yVGWmTXHwhr%HS^<gmpvK6!iN#r0TW;!7^
ziGa4VfX1%3DG(gg-*OXF7nyX|LT19iWe%i61z8miF3Lb#=)mJzJiSi;o%q*-J6xUM
z3k!OCK?NYZ*D3;P=Rj_SV0m#o1~d``Y8ru>vEc4gw=k$&02OlGu`-<|Dxj{liwfA1
zUY^6fPX9rviGTfZr%v!ycfB@;dm-g6XmuQ<tOeb(1={kQ2{Jua1T<R&Sr07$Zh(P8
z0<@0BgsIo&bFaza-k57Yx=RJR*+4D>C%GCG9?c8AQ$Z(FcZ#Thk`Aau0iOvEYS%*6
zU4a^40xwuWcFYC)pw^^YytnE<|N7tEu`<0ZRv_oH{04PwyV)ScCTQrjyH-K-0>}>z
zy;DI4z=LKMdO>9@s7wZRhCl@<*d?tX=@(0)LCt&_!%LtxIXGCmCBcQ&hi+F9#?QxD
zZh%&^cZS?xF}&R^2<?J;fmUMonh12pd}ry7<vGp*T42G@&D?sRw4mFSqno4kB!5fR
z#sB|7BiE3%@q0mCgKoBNU(k7A;NS+`Qw@s?&_x?2H$ioA?_7{$du<MaJ>x3?&1vAC
z1!y-mXzUbJ8@-7FoiK3`+<pKX*A4Dhb(ezH$AA+Nc&|LDuf@OqR4-&;x!2}gcPVHM
zF-z}WP^tlS5<qQW$O^6!6_FQHLB?8wYE)2_25z82!xl982M);Iy`X9YbW#hXZmUrN
z-8jPY;+EF`|1ULug4<xMm;e8V>`Q==J|RVkdBp|!#i@Sz3MDXhC+K!QPyj>m2YXQC
z6x1FI?R?t&20UUakOo?S%h4J81(ae-e{`4fbk_dqt`+D6Zx-VK=>WBtK=cdNv*6tl
zEoT`R816FPd<U65n^z@J%GVwHrMvV;ckQ3fH?fB&9A{Ax1RD$*5dsatfYTe~K0O|T
zH1IY71&y>e(3Q#}-L9aGz#0}1VI58e1_nr18Z=5F)9niCcdERwT+G1G8~UQtL<Jmo
z%-!Cg;|?W2x<LKaPS+RRt|HJTz3&@PyBd_*K_x5L01;4G3mW<bpTw{5LTViY!%O%7
z(Do^^XV~~#^dV8i((MWwOp*e*vqpskFYsXZLfIlTFBF5kAb{cp==QVDQm7X|gKi=a
zpGds40J#?w=bpV~44@c+MC=Ffnb@G|B+%{^X#9qU1vkFQ0UccFD$>o+32B$Oax_~o
z@waHOftSm(WVB^;`%3gq1sxRuie#`rtjIo)(cQH?pf)O~0ss&8NPr|kb)QFPD@c7e
zI3Pt{1Zpub+-2p+0PS`V0L}KXcOGwk&jeX}4cqV19V(&up*QaT%@@7BpktKpx_tTp
z%AFuHyF&$F$5((_cQ+4o&IO&-eB;o~lQ$mSJPE#?0JJ!o1El!wTnW%c^>Y<Kr#XM<
zl{o}1@?unY?#?~&_y7MF&559zgy(K6hzB0(6aZ<v2in=e(j6<I`JuBFbc{wXgcSMQ
z$)W<$3aWEJO2M<NHjvin-~a#b_<a5W+I=vOzim4U1H;`LcW>MUpBjBP=JOBGPGetz
zZkJC#x??{5=?0%M4Ljol<QM4CDRV)s!R}Zd&_#3~KvVj@65y5nA|U%9MH0vxy)qv`
z&I6tM;nv#<qCjhJL%>@uctA=))7mc{#xOAWS8#R5@^mx5TmlO4Ql4(m`9<LH>5i4~
z=mhKS?FE_83u#aCfbKL0pTY?X^%pOb85nN9>#pUw`QqlmZuYw_hkx8Sba&2CQ1n2#
zkM71C{?X0f*$Z05{vS;8cgzC~frAH!4nAW3eyejT__985^6Cxz-+8%nDriak&4Zvb
z&|D?DOL=;2xVvKo?v(ug(HqHlcPgj=zT0vZWX+9}cjtf^cU?~WxN-7s%!wb}Y@o|8
zK&Q6wcj$s_s+H&!xeH3>u$DE*I>zh#>u+@K1s~c{E6~ewt{c1?iSb9T&5h2zpo@=t
zU0-z11sT))o`dm1?}P|Y9k>^C=F7on%$==IK$l$o=mwk6{GOw8FX%Ax?!6!l->)}6
zXZG&g3%bm(bM76`mC2o;-3xaax@#qFoV>%;e2C-D8i=zYuJ4`;(tVeK@xzUicetAm
zbKJ=}|Ko1V`5*tmS2%ZqrTIIifVMzf?w$%!3^9xw)g-7HTrdOfGTb<M#~aN$s3I@8
zH4s$-SdH=$Ks8IE`LF_Zg%Zt&6kuwb*MdTVg})QjSG;=z8eQG45;q^-I}D1f?p{zN
zLz2YJhxZQhcmDeO|Nq^a&<dfv>NtxED8+V%O7w08<u`cg;wl0vSVB}-Ko@U-rYS)q
z_!1HsZ5g0h9#D7C1Cm2u{7?l=+$exr04^$!#2pH%5qLnSae<H11|?{L7aPR>|8G13
zD(N8m(_o5gd3v{kJ5!(wt9(JdCU8;E2_8`3dGRuVf#GE+sHcA8r8H<w*nj?(*nj{3
zH~(km@8t(Gm}*=ojP;ktK<8!51*OPtaH8uDmALEt<HpH59iSA68WY{Epacz(_V{rp
z=hTn8F{gfXPX#Ad@NxOw;Plwt3QEU~uNHt36gZJHes~!S@kt=4biDZzbZmSt=z1Fl
z$oUA+cqtRQ+X^Z<yIm#j#(enk5;PQkw-sD!yGq=Aar5LImk&QcGI!^K1Yd$KLOsr+
z!T_o#N(Fj-Pk>epcgKqKLVB|`Dhl1MpoQ@qkd8K}Z_+#W1SqSOsEB}iJkUP2fItSg
z%2xqZEHCDRhV^QBKu21DA|D(pu+q0z<Z$m?(0TTt{uao*7mo3uVFgfe(d`N{6Exrt
zN?M?8SnyN@G6#}~d{hKHpw$Vqg4&?WzyOML(BMD}c-#w|nBWCrKr{ox&0ioDprJa*
zY!tY-y<-b<_FZt3@r9Nz*p%MA;3NgT4IJ!_8nBsQU%Z$S2THRN-Jzg?ITnz1kTaoY
z@jz9BI*8zs|AiRn^hQ^SZeP#@6=+n71yqef&k+QxhVBIev0uCh166G*kP&x~72UC*
z#sLecaUcRJ-$4x&9#C@$GT1Nj0@VEL_SFD|TZxJUsGbF#KN}003FiP+-;jQk2x!m=
zv}X7?Xc<u~Xr>R;ECB}+XoT!RGH7sGqC1x7?p*NA44_~FU-br7^5Q@;Xz&9h0~)ZH
zR}NZM3zh+04(2P-U8~R?Dg&y?Kx6ix0hJIHftPNeHEJ^8rW`ElLG5#Rq<F_NFudLd
zYU+S-KrkdVgDL`0I|r1GK<yj|{{d)m@_&d5NO}kFuk9_p5#0D@4#-!oplQ2q@QyQ(
z*5fQH9}3zsI$h7acr^>WTk~T<TgKg3&{jprR?W+^{{8O_eQ>ArK&J?J?>)FpbT{<D
z9orvZr8iz!%=-7gJC>u{SD-ia4Jelswq<~trl1jVP{L#=Y|8*w^AaEyq~+xL1{7PM
z?wyn(D5Y?8b9A0+e#O)ox`)4GD+2=qbU%1+9HZvV&e$FN9ep6@ho0$$tPH#bn!k_{
z?~I+(9m~_pa=1Ho4&$ND&>79IIC`Cbbe{fxx%n}3XKX{~Y46V19{$doObiTnUB3T-
z)LI&MC7KU#cvjd>fQa4ExGMo>d2!sy;J6#X0pSST$q=|3ApqfktAz}SyAcx22NarL
zvQ!@V@4KhFbO&e^I7c_f%OKE5W2^$|O+>LApny2;qQU|8x{S(;+X0|N#M8~)9eU=j
z%kdw*j-Zu}cU>PqhR1Fk=oR6(>vHYK&677yL4?4GiN76O_1@?_<<)tvGjt1ohYaYv
zN7pkqUmSeE{QX9!>k{zza<}W5UcdjHr#pQ&+&lnkd4zKGx-s_h7<b3=+$lNz<8J5$
zkaupJyc_cUM>kjJq0ZBqhxt3IK$G>L#WQC*eb;pRF5zE)p_k=jw=WOliEiIBy&@O7
zUDtGmE@*zmaquB?XXuLN7aX0gQ#x;aztH@Exzn|!^M*&K>jeJJi=h6{jk`?Uu2UFK
z-8gxNqxk@b_nn;YKkmkS|Iz6>g}-ApC>mX-z}mxinIP)GYC^vM0P|1X@!+`k668V{
zR{)g@j)K=L_g;dGt=xV0#(&=}-K87&JO6@8{Ttn-9Nm1NfCrsi5(wIt3<~|;+85xC
zIjF961ucK)0f}~oz5s190S){M6t-o&=$2z(XgmVSE8t4>?v2-rn`>JbN<x}zTbOIz
zn`>K`Y83C@xXa{?>_@QkAzpm>57ZQmUC<r6=C1RP&cioO-SPSXacO7hl<v?KjHg~7
zynEy2b+A)kegIQ<Z@dKchVQa+fbx!vN^j`}(A3JkkD%cMSRT3?d*Q_z(AhMu3U^&E
z+~K$@(artx_22*hn`;{w_*)DiEN1>*VF-(<Mhq0!p2%tb<@Z1T|AR!kU1xOr&bj09
z<4)#}yOBRSZ+5%R=?<Oo`YgDZffM-4n-BZJ<x6nmn;vkq3V>$G7&=|AKyv|$N<t~P
zzJrt{?bE<TOkyc&5mPV?RK(oq^#zwQpt6`p1zf;nfEC_&aeXRi?2n^c;JE7rP^r~<
z0kj6tbqjxo3Nr(PcIbth?>a*_@OP+z+5w?!x@#|VyI$$`z0&y`lmkk64nAaN{H=Me
z*W_Mj=>k~6vPT_MW_FjZY5m6EaS!bL1)U$eW3PO_*!+T{`5|+s>kQBV`=J*)eW!GO
z@Zj&<2Wp19&bZ5P^C6@o)U=eDf#L4W&e}7bp(hw)XE^!scT545U5N8@x>3~Up{noo
zVnmg<gUkDZ%<J`HLY3!3muE(mzXvMi!0rL-Z$8A*{Emgcv;6=6|IMxoINbmHZs70a
z1o3JwF!HxFft26q4!vL*dZt9DyOgKf_e^&z2YCIS%Q?`pQx;Gq3$C5ObtP!g^^2SK
zpvlM!-L+>x^=Zw7KbD~<_*=A?7(lfOM?q;@hF7=imCn!=-M&2Cp({W&8A!0Z^a^Nr
z(dJ;cD|lgq2Y8kgbozL&47gMJq5)*E?}_fx3!u8eXTzWF*el(xEAG1P0H52))62tl
z*X8sN&@2Kd{O{hJ$KSRFTnfr`8r+RJ{R5QmYcF(*xp!XF{8>>2(cT?;0jk~PaOY{p
zL*Fm=vi$2j2dW-i=QO|I@arsH!rv(dGAEYjuFK^gcPyZ_gGp~0Lw6|;s5AzNf$0iJ
z?QreKoeD_R0Ae9k3g^3hIl2YAT`%;;zUeOI=#){>Jk;%bp)>RixN9l^4he9ea8#7G
zWpu}0&^*!U`l8nrR0^?lyMn@~JM;qRs7;<;lf$5Z1kbl$0EL~%Va5-jCGeom0jRbG
zub7kpk23nGD7*-m!@%(0cS~pOg$l0jT8?h<mk&Wlfq__eU3YZHUg<6R&%ge2uZ$Sj
zSND)ZvP=ZjnGm=ebMHsv5m07^m3|*vZ}Yc&1N8!aGxPV}1T&awM7m3PJi!4139Od~
zK!u(wPv^(GE}+r;Id>|4+>Q9r?K<c6RcLbrlHcy$co_y#T6@92vv$Qx-hco9-|;;F
zuKvJr8oOg&F~{B59WT>B-KZNc<3X1-BDLS|-gv1D>axPlgS~s><!4X}3W<LhjXxPw
z;@x-|^XLD6@ObGT(3vmH{Jn-?22+g+avmxYLdnlBL5Bt2z47`}x9ftt4nLq7zla}2
z(d&J8Z@m5rDKditI=_LoyMT%*P`eCPKHdQrFg&2!p-VZs89>8|t}WmNoZzDIIE%`J
zs<w<5sT08^<isja2?<(I43>T2H}T*9yKLRAEq7Ut-E}#}ar4w&@Z9Rnlij_bxlGV>
zXg7G4^X9|GhyVZouZJ8xdhbvt`25AYZX7os-T~i=efQD*2Y2U!&S0F!-+YgQfdMpe
z3gX^%J#iPJ;^qAZ^Z1)LaWF7I6hee=zPR)8=BXPeZyvmP@~&LBYs(#;V|Qha-8^u|
zkK=9}#~q(z9Cu@maolCU%X0s&%Y6<=;|1h0xLaF6Ztd;`&Boq4qzZ8+=xWkV@Zo}Y
z!RII4eFe5%1?n=;F*jhBff*2&{a^>V3@iZFa^u&XlQ$3CJat$8=E*xe_ivuO;{&q(
zuFU<rG50yZe!qDN?C)Fi_?u>dPF=g%9jejos?+VOa#!#;D83kuJAu~OGTfEub~OOC
z{}~vLJAg%wyK#UjisNoPV9FiBa|iPvA#;cCuImC&pg_6c@aXn!fpU4y-IX~9W&51t
zxEphh1LD;?{CDM{EPsx>@i0-I`yiKteFpLf$Pb_aW>EH+$KQIIfq|ha@a~Onw(c+%
z&@wK@&OnxK-<EEda~$0v=XknHB|6<WK$$s=r@K_)uE5<0j&AmDf0j<RPCu4zm-`&u
zKKFS#-8ee^cp8s@k|iXk--KjSh&#JoCAwo}?)Yx#Ja(t_z#Z`Yu6HHw^n%g}LO>c+
z+xxL}Gj#fa4D4p^u4d_U=IC}+fX=5^^B{%f2m9j=kg#*$0rgy7H-hrV-J7p_AT~q#
zD|c_)Wk)XHo2^+v4fp#TAVEk=xakKtFSYcBfi_OF^oCyO<vG^b3%Y2h^F;Fj4$uY^
z(ABJ<Yt=zZ{J=HWi^W2q=}CizLiPqwfq9%oWlB|BMt3V%8|1h$ju}<pad@6?SMclx
zlq>S$IcVFht3fZ%{q9iE{T`sxU_iP-YfV7SOi=qCq!?7yfoRa6{fkYG3=D>sKxdKq
zsvHLu2Mos@!Pk=-o<s^21_pfTt25+2N2kwyo|lvVLdWMjO;oyFc_0H20==OJdVP0*
zh893IafpgYZ|DY)=RnJlLR4gWLl=OWkDwU<@GN$Sipq;MTmJpO`R=ak0!Uc4&R}9-
z;P09QY6!R<==N>tb)9k7b;Hercld4|yu*L*<;_DkPu`84aq}P~WAU83_wa7)1W*<`
z$8qyyukQp<5(N*Bv#8vAc{jG>#VOAJ|9eAU^!j$(1z&!B*9|n!&T_{W)PcMk`{Kn)
zPS9i}=uCNt8`^$?Iv=4EdR=FLx|pEL*IadaeL=Hppk-|w-L3{8FT8jt0NN#L&``t<
zI^+|y6af?m-M%fLmNF~~dRfka6r;zWssm`qK&MyaK4?_CI}|ii4APA?_CQ-ELR2JP
ze6VL=fRws!;L;3I@`6gVn-A|Dy32A5G~frxmd$#gQsu_o*co@-IY6b~UG|%&KuH#&
z`sPWH`uj-gK{I)GZ`^g=aMyLl9p3}s!t&JJ&<XcWK?0>|9%$yoMy1<TrPrUMvlle}
z*c*BS9Ma$pj0UJ54f5)Xll=ex_xf>k_D1{%uh|0m3pC;Y=7YipJn{mb{{gKa0%Zpg
z(BKGYmk%$v$pso1fn|uPAe%tJf~*U)lMJ##ROH1iI|hcApbhxoq^JVQg;PN`_xj!d
z4^=^32N`<dd7%w*T{uT4*xZ+~puxGDFG2St-o5$qENK4LwWHVf0ci38o=)z@K6v>P
zRLR?@^s?OVJk;4516oVtdjqmujs=t;d_eaHfv!RVdnH7Lqc`*dXd69bGzXOJK_jFJ
zFM2pY)7~Igf(DmB{s6B9)c}o6fKT{^lmpOUl6djQ7Bm{6(HqVIS`;3l!qXiJ3N%m>
z2H&&?4JK#+NxV1%QXi_*?b-s90cAs;V^BAO%!MUQl+s}eNS~`tcQ43mFs)#xftIO)
zhn>JBi4SB<4a^2bSd1;GR5^}P3ms><52~6vL+-P@%=-BsW&G#v4ba4^8wbc6ttpUT
zgcKN{1O)LGXrWLGFF137@(su=NagpzzT1@trF!h{1(|`IG(Zl7h9TJbpo0rQ!_g8i
zHrjxKQUwx}C|=Y62Ontf6DUF;DMjK%qYXx3$PRMLad&V%{Ic=K|Nj&2-gwCly4(of
z-n;qo?)U%yJK_8rFMUz?H(x4$N17z|@pJJH@(nTy34+u*koH;g8=r1h1<>M!Ql4&x
zPS+>ht{l)VtcwbZK}%Z(wn<=y_5c2Nx;}v1pTuI=0`BRe&J*8V_wRq_@ov`#pml!&
zp#Ed1KsQsT>kX*TUM2>H*8lu1rJ(7_Qh{!<)=T^y5g?AMNH;_40sana5T{h4o2~Ug
z1*f&^4gS8Hpk0{Ezd^%I%%I)#GeKP!SMVW-{4Jm@n%%A<;2j$+`d}Fe&^m$66Z|a-
zAa3b{)^GeR{)`ZN%|K?k-T}>)b{+#C9noF;0OTN1P**zkMR)BT%@4gY?437ee*fS3
z-J{d>3V#P^sRC^LraSaO>m~k{tDq{mRG^zp^919MPSD`q4Z};_u}?Hlbo<Kmmav2S
z9V~X;F$aHih8+B{3)BGUE;;z8Gvwf(UXj0`Xzq340`)j~KpiMo(549R7&&MMsP7w4
zvDfSS0+eaHeN{lcP>^cS#ct3v2RXw7)OG`{rh1|F0F;^~x?OK{b9INxfL!sU*9GK?
zgS|W!oiV3=be5d@)9reP@%Vq=D-~Rz%cb~Uf|e>YAMpXVhv5E;73pS%c<RMVHPCE$
z=$n_%KxaI;-T_tW;L*^R$3a(c{O51k`0xM!*H0lS3(}rB&Z1(}(w6c4MsMtgPS+2h
z*-cP+06xO9VD`WNulrEPBS7atnst{dShCe}A7}pg|NsA&VxT@3=n%>pv2I@-OGbY1
zl+$r$@ClTlauOVGuOCCG!>HyRX9k}Ic?s5jIL-_{4e}6-4^6xl*b=Y88t@{A)@0Bw
zU*>-xw{#)8W03wFXyvM93uyKnG;GfS3KGz86^I7iHg<P4#0b#Qvd5W0$?T;&$O!m)
zQBYcC=ybjD^7S8ZE)B{|&nR*64{{GO0*`0H@@EdHN$RW89m@gApI0CaD$q(8{*E``
zY{g^A#NWG;nStRrBgm!QjG(Mh0+Mot>|g480?J9Q0^J;zH~D+tF)%P3cRd4gC#bFj
z9mjkdEOY>r7CUcgp7N@w=`KCcd9mA7<om_uhs?b)A3Cr3b>86b1dXzwG~t>LaClX?
zfZdBCj@;k{^(VjwW*&DC0a<a}K>|X_fT-pJ3eB%rDi4Aazd*NSHwVa70-e`1?^%|f
zsnhMerg_e?^h~`<cj+0;%iW;|3=j13$n6Gaqf!yZi=ZhD(1=aUxj)@p|6R{?yIx^*
zJph^=FXiZ#dkI<v3mZE-@84N_g1_S$sL@r%018mo3*Dhtx{bSQMLIugo(2v29`0t;
z{Lov%{GWgQC&Np<EOOwZWjaHS|L6^U(^+!-Pj@XxZ}I=m(l@=OFF>_EbZYuIi^_%e
zwv2AZZhp{$L{?C#Pz$=pk3;hW;|<Wt6yFP=rfTS(UeM-(P|!Xio?e&ppo|Y%{Q_>&
zgn%#8k$@~yQFsvrTJ!14(Ot{aE!fT8?R!D<LT~7k-WulrowZN8Yh^%(*Mlx{4mtk^
zv=SZE3<1rrfQncN=)KONcfbv$0wd6o+})*DKxTz<bhCGJb=QImhYP(S%>TPxdHB~~
zyOVPM2WXL;FGsJ56li$4TcF#p^8z?H7&||LB7(o89po|BE8U@2z;_kwIrxZK^8(|K
zUYQe}A39@?bl(4dq4RU|dyeJ@%-)?pD@!5C72N)3U|_uHSK$dOU(jSo;x@lysoekH
z^}>JO6QD^5fo_hMx}dV+NDjCNYdui1u=xjbZ4>A&AW?|PesDLu1U10BU61tgSasez
z?f~jjF&uaJ14@jqFN4NOj6j3PKbiS^1;Gra8Zk)P_Ja0{n-6fj{03Ux%nZ`g>&(&l
z>9{kvrha|xIE%{Fc5tcZ`=-+sTztbzy{c*d{=Wn@7(urO3AbLVV6i+@#|=HD))h1+
z^MkQQ#M1Q&f3G>nct%i7_Y$<10aCy{J<bR&N2I_72Bf@jcMS?eEiZgP1xu&`D0wq<
zx;}t3Vj$(k32-&Y)6Lg<lD`AAOR@O}BY)3aMg|5;*9Wz1$C*GSCS;dm8c3-t2WW|j
zK{t2j2g`GHOr7UCORsc(|L=Q+zrzlci69rR^+L)+%@4gI?A@*cpcL`3H--tc>6W8A
z_5tJ1PTx1Zpt+vI-LV3_zHdMk8_Qvkif-_}Fc#1xCg>!em>(cL0xu^01nmgr0j={B
z=w|HpeW3YC^8>UJWBg@!lJQWts{m-U?QZOiPM-@uz&qSKeJ=dz4Smt=3p!Afp$C)|
zLD{oAR6z4XuMhkGPTv=xQCY@rUk=R=pqlzguj>;~a}K;hNClK(K?@hVV`VfyfL1><
z{^<2N1lk+K1Io5B;GLJCPMOS$!#Do_zYEG_93TUcTo?nYW^Z=83NZfiXS{Vc=E4t9
z6)O&kiBO(y=5DT+H~xV-vyfne)wjo4R9Jh!DJB%0VxSAm!S$ralz;zUUjxVf%Scew
z%LFRnp-gaE@B^6$9)R-?PE1Qx$j!{l%q`6gEhtDWLRt`*r(2qrS>lslo>~-|msx_m
zLeRzC)!E<Aa{{PBK(4<b^$%=*Lj&ZCQl9Qw1xQ{v?z#t*_#3PZOH?4sXjugMurvd&
zEdf=7CG5vt_kb+ucHPr@fWPGdsCHrlHS!KIGcbTt;d+peuL!7;Zvru0HI9RhEBFtZ
zyav~3HegX1sP&K$s&2W~+oftqLLcmr#&A*F1E8fV@9r{yJDF8XCD%dg6Co~U0gY(A
zcvAE4zv0Q|+C2<+V>cXkeE{+v|CEErU7vth$6Rmw9d`u{8ZkI_`tIm0V*vFoLhp35
zfd(3SV;_JPW`TEjgE~zt;PDYq@1kryXaeUB$kT323=Gz;JNR3YKuu2;71=(}vP*&9
z*xR5*4!xl#Ks)C^Gjfo{kSt0N*Kug~K^MljsDKvt%XEWQdV%*{f)02ECEVjKDh8k>
zlf66+-L9aycN5TXQ?JN*@a{4f6^$4C9H3=~7eIrsuAn0fLE|{a5cA>oSRm{HuW{}K
z?ePmyQ2^U#0xI9o?K}8@rB}uR)T4&n01L7j?64Q}*+CV~UDp$Ld@mexy&VY}E4X{}
zZtQ`1Rc!n%2SLk2Ad5Ibg=0WpTgHpMMhpyhT@QdJhHpN+<GTTT>QcEOX#5WnWo-N{
zpmi&tV2?cjYE6Oy9@OFjYv0Gp!0<8?JfjHdL4P~Wq5|?^w<|n^!2>G_kVQwJIv3P}
zvw;Kx2a@N}0=d%%d`g%OD4;<e7O?<@Dk#W7$>z9=3OHz9tYu?h==D7Tnl%EgFo8rb
zQf$I3LXS<*_!K0BL2-s0!XV>&Wk4|s8N30t{xx3C1o_eR0VrG`fjX~>sYLkZi|$g1
zdmp=9W$u{Wm4Hlj-gx-|c|PDci;71dj&kNf|G)n)4}lJ$M4G>gmALutE;Dr55Pw@S
zXhsE;E5Wr=>L2JC?JwP7;^3mm7i0){)&g28_(200l>0%k1)^UZSO6*&_*+364?!sw
zbj0famxADW4P2N_m@olS{xrYI0G)FlD*{?)$<XQg0n}Rst^V$71(gTPovtrHeM+X|
zuAo%{;0|mo2dK8|JjCA-1u9$~J!rku8G4~J^a_7VGa~~-^C5Zu4pU|ZhJ(LYy*fkB
z@OR{b>$)f1r7yZeA9UA#(EPx7q0{w9XKfFt8x{Ma)Adfb>yggbH#5K2KJe&tJ;C3h
z4A#=q9oo|!`{v*S=I&A+##^1P3%XrDKo=#<Vf@f*bD^_#0<68$U3;h7Ri-;+#~<s^
zH~cNfAZ>1WP<twN4tNG~LNCkZ?$8B{AG%9F^hW;Z^%3|1TB-Q`E^{|ycOXkAb7wFM
z<L|qYj32uh?=n+GB#;GUIEf}V=N{nT?@R-A!$TFixfp%#bh|$2E}g*W`sTmy3D7Yv
zwG;R|c|h`@;9zBR?fLI}hQD(iX!<LZqnpXn^#XrOC^!f&bl1MntbO9p>3XHx^+spy
zo9@^r;P8IHco@|61_$^a{tk7J>e3IO=6dX#?pjcLwU-6d_htZv`vyd~uVMVrYjUBp
zbP8H{gJusvv!raD$F*y(@OSJ61$^lmP-nw;L$A!W?$9ZWhr3-rFrIFH#nBnN;@|`3
z&WoL{TRM+5zvk!+UD64<jwW_T=db1m%wFBGJ32#W@ORDxE&5>WX6_DV=>*M2Fn+u%
z-R-)C@vwhI<XuehyNry7F%%Oo$auK<Jxk?sa1H<kdg+7i+9`~sZ~pu4=@t3j89If(
zlN~g}eIx_g3g&MC&wqn1$_N8V{9vk)xXb8|>IBBm-~|}nu~WKhSKM{}(e3}I+x<tU
z_n%JZA9v$_bjR-K_Fd9lJA?5v<Hy$ryF;%uAF_LS0F=!G<X_GMPc2sVbQ^&iDViTT
zOJDG>Kj;9;lfuVcAAs5@ouN-&rlVwSa25}SWejNh5tiR$Kohv^tq1t~_JXnqi^_p%
zZ5h3#7eJ*oxbUzBox~dY0JQHU^v2!T2RC2bDSZHH>)nmL@nRYHfK{HGFYYqD<^|gW
zBksCBxOwpA;k&LkZl1bv8a(WL^v36#hi*OuO}v4p)K@Zq)<fSsclX)-2Y2ty<L~NX
zU|=Y5yL;pA&AYem#$GVIeK&RosO=fM0<=~TJl+dBKLa%C$Mb?)6;y+*XuW;cbw|m>
zyEpFMXg(4HjtOx87-R;>0brZK8v?=gTABFW+c!^v4S&55x%~w);O4;_A9sU1eK+>P
z>t={MUKWGKGRqi1=Dl7A^WB6Ap?=5>z<{FE<jmsC{5%&Q$B>}l$Pj0rUgZ4(59}e~
z-S`GFZl=&3YXItkGjx}Vbh_?=3;{xxA+iX}z|ye$I}0=fxB)aw>Y~CTh@=EEV8{b<
z_KWLaRiH2fMISCz8^Nl!bh~Z<wUdnHK&vcvfCkrg$by(#S}*ap%F2RQS%4kW?F(8!
zi817oH49R!e3D^cfQ<HlDgyr2O)?A&-LVoNPN`($5s-($(Sq7OJkFvb1n~u=J$R)E
zJRvPN12iE$1LS;A6YIs^B2a@)<4)}i(B#mIyRI{C{Ja~x;I0I8JPFy4@cQn;Ot8yZ
zKu(7Ga)mSlL$|RXf5#V4LFBu~@PBu#Oy^$E97K1m4rr|zWELYvg{8X{B-$JL1hR;f
z!(;|%-QtrMURDeYcjdcVL0wAFar7Wn4u1R{i$D`7u1|V>pMaZ5Jm3vcAWbhMKsw?%
zP_;B4VDhUd>~wtsvH`S0Rs^Bpxg`U`-FN|X4a|NO4j>JfHf#fHkZ3-x0MXM7b~_8>
zVL$#(&?qBfzci@j2XYjsVs`~y83-Djf3Zyil!+E}m+IVgIram7_@<W>Xy3)n7k6Vp
zO9Q|m&|Rwnn(?hsVd*qcc~PeUisK!i=40#an-BS0ctt>C@ZbdXQW%tqB)YARyRHEh
zNXK1QfD-3j*At-i&Y)J*JpQh|!VC=jt=mCLUAKUe;cY>XOJ>|W3{lX01jN5{^YqO_
z-L5M-|K0o29lJ*JM=uX^=ZTr$e|vPce);$R|INev9a98BPFVw4AlM3;@BuBR0!w$!
z1x<Q%$Le_W`v30@`Tc{x(@Fqr&E2=)$$w=5kgNA}$I5_iWnwV^ZOOR#@aBP=XTh#0
zX1RO!=8>CcZ=3^7>d)hEe#6heaQD_-SI{&i6G#cD9BVqx&%ki+=e@Jt;OQgAL*1@x
z7!QJoWB+?WuH^5S2h!&{18QqKKWVlGfOKQnstvXEuImhl#SqJot%ut8osTs84)9^~
z<!nBPFA3Y1PNIDVSncB`+P*8ir1@_yFE;;G@Iw3t2~6Z*gaj;qrxmC#aOdV}Nd4kE
z1GI7$T&eK4U*iEKs|7bt-+c^9SnYiv{_XBiaIu=q%D|vmyP`XGO?T-E#(SL~I{(f5
zUc1Jl)3t}c!ya@WQ7mZswL5f8ug&kyy`c3by><V4c_6bDG92BmItL#ycTUau|NlSZ
z!OmXLdAbwsGIzUfx%m*3bsn;S7T0vU?&%Jd0d2hGF}UM%>c`#K33pv5fYRzo$Z8@`
zT5SWh#35@`=JB^lFf%aRJaxwxw5H_Y{Rbcg?aM(k^f&IhPPk)z^8jdK`K~l5q0i%Q
zvjWMuF1UH>-bc`KAdo9SyT$H?9=OX0UaxZsR<pP72TxK%i(Vm6FW?^|e}5;a=xqi2
z0=(#?+jY&s2h5DEAd^6i!8MG>A-Tr4r-BDsT)Y$kP2}DH^SVnl?y}wZbXV>s_;#9k
zRotbVplbW&bjXDjJfQOJ-cQf~eyk2?c$Nh+I1r=40cxw<l3`$Yne!7gBvhitaQ8-M
zEvN|YcHILS*!7j^4pq79dV+ub@jIY107XD%fkufzl?sRr+CT0Ko)*9P05pyTGVz2O
zDB-E}`d;a*y#m_I>H@xv4qRToh*ky_gDQ7j4*j_K5IhkLZEiru??A2;u)N0K`wEn*
zKpxcm1aeF0m2O{fEQa1-`~bETWHOSQK+Pa<@PXQ3FxP=*s%}02xyc0NCSM8gFdNt*
znjb(_hwBs2Y88k+7ZsKldzC=z6jXXe4DPyI{P8jh)X0GhltJ5vFq6A|CGPNA%m7^y
z1X>~xdI024(9&5K6^^@eB|xzgd*DSKsCsqPxa)cVv|9LXD@gn$=#Fm0eCf@*t_!-s
zaSci}cQ_z9r|mju&c{WC1!M*2z^qUen9UH2pq9Llf!e?Tam`(c*E4UPf;gbtSK{V@
zyK_0fJs_2PA3-CYp$9<01Bxh^ad%@6ytpm}iZE1Xf>s5#g7m&*2Q3AF&+p#6d-LU2
zP`euvEU*!PdHijSpl--bc($2WmU8bW#Al$qzyPW%?%tYL=5g=i-Pi+AC%Q`XLY>3{
z%Ih#kfgJe4Q3^DA)9nj(7w26`NbrFdYrF&v1Ax-_>+K-&WeUha;Ql_ObqY>JUKNF%
z7r|3UoxOiRV?7r=J9|N=rF6ThR8}Dk*D)}FCy<;$>!DDDNuNK0v{<`cHEtdN55|A6
zM=|i_3D8Y}dqJ*YD4Eg>W-#-ESKmQ6SV#E-LF-CD!+#8&rx1hxudjjJd-EhXTw^E9
z<L^=dUBK6p`uqR?my*B#|G#_d<-_0q|AUIyP;e1@4XKFj;P3ba8Y^;V1eL$FDxIzk
zy?+0@U3EIa7ej)2a_2jz*8KnfAJl9JRp|sTSv>fhxmU)D@p$K6@JhnkhJ(+UJNJUt
z6Ea@!-0K2L^~^U<gIqN4=E0i>Z=SvRu$b-c-J6GRp1pbG-Z#i%Nzh`wb9X}z+yt#<
zV!V0s#yR-tP8=Hp!_700q}&Z^0Nsr}z~5rQ20FPIv{13zcTaaMxKRSipx1xgICU3X
zoZoy1sbJdvf>x{Dxp^9tO2A7F=M}Tuy>;{8UDpXWPv4C_aP!o?pEpn4bp@?f1TDn8
zHIKhNjTKbfgG%$eH|O1a$KSex8MG#A6KG^7bOWf>p95lo3J=R;{5}7eK+12P1eLwe
zQ`uXefmd-I1l0u0_a5IobXWT3sqRovJ#>k`r4p<G<n&gMA3#?-`^xm%7~JvsiK8|G
zEl#@m0_383{B2i2-NBQfYz3}G@7|tQo(F1dO}JxyR~qb$yUaHqLaW$f|GPK3UDtHi
zuIZi%S}e#|+W@Ld4l{xmr!xLyYz0LUBRFCi!OKAz_ktYt-?xLm6STGM?yZ+=ej=~u
zxcz!PXoV`M<m#?PD^P4yV7b>t1vLH41F8`~1xlM3o&x3O$(MGZlydX#t(T^t0v4Qc
zq2(*QJSi)_3oc6_u~@DI&e-7U_awB!0Pi)wdGfCG%@;303#5^pdG9BzB<c25>2*B-
z=_j**)-QmZ_goaK^Ip#fTXGXxdL(yV?7R*xKm0)@Mj1*@2A3F)o!?Ld$u2KKHDIL$
z@><xJ%Ann#Crf5G|75OhZ2pP0Z~zT}K^)Qf3#D*?md~f|hE4!&tOk!{S4osWng;El
z)!nymp1gVL=E;|PK%5(QZ@er7GoZl>sgJ=eo_mj8P5~_y1Gf)ezqxw@)@#!I&<##L
zkg61PpF5}+-vhZjTI67NE2sbg)i`&-=Mq8+eb8JmXe|~fvAl>;0`1uYrLMc+^G9AT
z1+Nx|S<vfx1!@D>V9@@(+AHA3+#%3PGanU}*Go{`+YQdKEv=x==ZEGOOub?ME3&(5
z_wcX34n7R_I;cIv=yBuJ9j<!^D?IKxa)8)g9QO`Z7~ORg0CNQH9juVK>nPEDPyw`g
z2(<Cc<KDr_6X3vN{qz4nm;pMv4$J`E{t9Ni`VEx=6}!-GJ*e(xv^>V&3(C`-2eo}0
z_&Xkh8hoyMdc*#M3p4N`mykmAN9Q5XxSwlFH#nd6R{ZEZfz*TRJmJv^J^`yT`Yu!R
zA&wiT?(jDs=kUCDu)?wP2c-SYbmP<=j(Z31I)P+8z$}3qr|x(NfW$yv0dc_lw_dW`
zJ6L%h>~hc@Ghl`~xPAil78y#`Htz*7m}@6P7)&)HcbPm9*4{h#vJBL=2yN-^1(hmy
zoqlwlzj5l0=a0^V_YS_k3^wo@=x8udB0CFaK+?g@lb~R6Re_|3-dboY1=O+ub)=CB
zlNUBZShMO~aMJ{uWE_8i8n2M_4$8qVWq$qt4-NmDCqe1|<jd=zb$Ould+YA)mjb`Q
zwd3J0pq=7(Z-Uy!8r{AUcR@=QSwQIuJXirP&A=^@?VwIKsGkn1x=y{c`3ySz1k~^V
z9kT~Y#-K^!SkO*e&=M~O&?z{+5}<}<txR_)=wKwUp`cq_KxZt0?wW&~eFNGG4qjyi
zIye_J81Uk4E~vwF;^vE&`XI-F&Um<U^WDueFKa)6?0gvqrf!~oIpx#;|DgIG<chlx
zC9gh$m7E4sH&4GT`~+UFclQQVJ_;=H(i%+NJpD2dP5#seu>RFx>gMT}h9JA{yi^8J
z2#4r_rC;)cshg)?a(@C{ivmh0pgtE!7Lr<+`FmHt|NkGtVdC#;0<{iZA$|Sgd{D29
zxY31Tdr)PEJhD)v2pUy@^gc0rr7un2gS-Lr_3P_*Z@k`r_r}fBFB3r?$L0bH{No!W
zyFe6FyTL;Y$p!a8fp+KRMG$rKrR6)&4E_xG(9RZ6?+`q+bMMQ|Q{V<oG0WZC;E|s0
zQt&7b8)%g0U*|zj{*GGER7B_+NGG_r<j0S@t~2hw0rj$*BS8kSF<$e$aqz~^duRAN
zK&R~>q&3i``9K12-JpW%F0yXWp%)0<pcx|+={3-Zh1fk6#6#$=sE6q+&Oy>u5e64_
zMi$nE3rish^LHxz2bZj;U(S6GWlVuFx?zka7^4!#D1b52VT?E!BNWE)fiaw63@aGJ
z5XR7eG2~$kF&Kjvl-O>*^aRz8;AYItcQ1dw11))$0Cn~mx*3kUg0{#pbh@s1Dfk8?
z0Uiu|0UF+L#Z&`oRK9@q<2RRX1UG{DTX;bSzPKWi$~VwHL~v5+c3pAr3u@~4hcpVP
z09tbwtAkXB^osoMhKvGE1#P|Pj$H%Vvh5FQ=6iI`1+6aT@9YFMWT82Qzqts+V*+hE
zx^eW*&zmPf^Ahv;n?pdt_poGS$S4GV8)!%3y`T3^f(9=Rc7qo`Lxzvw<9|)iga;XQ
z{0QP<+H)BsjL)8xjNlQflb{he*ENuGff3b0=!joF$S6!30zty~YyeIBfqX*PhPR;P
zk7>hskT5<QmNF3MhvMS9=%yFP+{JBjnI*{GIAfr*4m8U0<o<(s#q4+QytH@&DmrhT
zerX0~+`aMo=-nHy7lBJp<v0KT_m(k$>YJCKX}r5PUV>INg5}sja`5{1#>*=pQ*XRn
z1*UGEe);@0ygml&4+2ZP1RYES)_)v)u<P9$FE4@{pf8t$shg)?u6vDKxqxIL^$9b7
zZwzQv++I+<!&H+8DmFlgs5lxkcwF!W52z|R2}v@Tf%NhRxGj43#_PLxZ@k_GcB%}>
zsnD!ZoB-Lrbo0nvhaX6JqnH9Kji7Z0l9el8A@|2_zGMfv3aK!d3QE4<!T?LX;R~ua
zOc*;q%>4e-qZ2$2z~2!Ct~)@}JH0Z$I_HAcJ%FZ{Z*_t<40Rp`AKu{6*$O)4i@y`J
zA{P|EkOCewI|(`!;D0YD>~9>r_lLiu2b8>BXWRuRq;e$LL-+nd1jDfjnxhGVEGU*l
z5<GbCPv!EPr*58px%4Hp+@JFjoJ2ul6A{cd1hX2ZvIxe=eEI)BXcH}HFs~W3i57II
zTJvwF8a0@&iiJ@veaQ=}Z*)NhL#xJO+3r?QP%)mm>+qu+95^=)LW1<(pVyng?)>`#
z>dr4OKyAyH8KA`mu@c?ZsFOY~MSg+y-Gb)xz^zQss<0QmwI@JrMpqs1sRN+dT#mc3
zCtg^wGcdgDeF{2cP@<a+yxzU@Fz6OH4^aCL)=|>@&>gx5+6}7(9dZIWr-SiBFZeu3
zmKTdb^O>$Xpfh#cyertdYbCnbUmpZ5yl3mK)d64q=X3l=XUy?GFJC-Cw5N}=sHo2X
zuh#*shyYLJfvg0t3pB|2_y48QV@N|3+JA@6Kk7o}FhMhopk3*ZY1n{T(EMYG4cPA1
z0~N}k#r9&|p$ed-<JTYk{|{Yof94T%RnP0k6OMy7TD;u(2;`&^H3q2pSm!rC)PT${
zT>xEk-wM(LnlaUz(U#F&3u>ODxTn)b<;7mG7XDUQknJuiEczg&u9!+$R9;MiD*Xhy
zrvb7WU-{Ah|7i33Ao~o!hJXe{Q0-$;dEpB+WD(d9&@|x7d!VDK;S=bP`S9j92B0oQ
ztq6GQi0>QzzD7`%1#L2E{>8}OvIxWj%_VobK54xKP7~k>dj5_wkc{gS(4xjL5YzXK
zCx3?vsDyC2{{ytlBvjz8%LmYuW(??nrTag+nHWLGq<0H2UiRegkV2?LC<CoEh`Ilx
zTY&Lecc?@+6XRh|{*DizJWrIF;1(l9B>^)*r+(apsO-k)&WbXqD!k@Z1VB~cH%kku
z3a?rGoqND5yA8lo_T8axI&XCQKGD1Ynjei|d^r`A%}d{O-q8HOzy45f0prUGkcg`U
zXtTr<5B}D0F!#;wu+Y%Z@2|UK-*mgaIru|f^H8rzkml#k*bn?I;0=eMt6@Q<X=m+`
z&JW;LTk~tCZeJeg0XmG`u}2W=W||Lj+?8%V%;DD=d!!<y^K`fG5zsm+*pjSnM~=Ia
z-GMxJojE$4IXZ)Rx*Y|&14Zsea@=(m=yVq73>N8jl;{qWxf>~P*IA;|S)wyoruneK
z-AK^L2WWBoMo=Q;X#UB>-v?Ur-5vX3AIJmFnm3ydGIyT%{;u=f!GH3apS(IlU+{O_
z1NpI(r}IKD52(w)@clxs41e<j=3W~<ug;&Hp$|Im@psmM5}4zUZnq!Zb$>b?e{@#<
z>1Mkd_oF+G<t}3<V`n5ww;M-y9nW34yN(>4jvSqpJk19s?#6L6ACvg+`+~m%6tJDX
zcRJ65&e*xp>3gN~V`u4w&eAiTr6;;wuYihX*Arm!2KWGkGawSQaP2NLc!Akn$!^y>
zcO5voT`$~q0Pp&a;{fXu=mzN%=yttvH$tG>^$duF1P?51?nX+0^(uh%D%_1%xErSc
z)~f;5s{z)l0oJS0?P$;)XmZ!tpwro)GuY&Aqybp31z4}e-FS<;aTZ{`4q&|wV7(4t
zy$;=hKHZKUcbz>tgMB)kJ(>?E+>P{TKA6z$dZ#<|!d-`e<^u_LodTK<CESe<Xg;2B
zH!h(0SVFVwnS^H76A8_(Hxim%uOu|*zF+|@Idr|l-}&g@|Nk#-|Nj3E>ZI=lCFLK?
z{Jq6s22+j0T}X_?fny{R8Y6X(7^wuuNE{+YB2i-Gr5>m;=l-MH`A2v0pHBB5o#lVJ
zneRsb==Ns0%ihV}>Ce*ZFVS7hb62|Cnd7cIM`t-tZ?QzDJICE<j_%qAowYAsH-KDa
z18UHLTqOo(Fx4pBW%R?E-aBKDy!;4i1Tl7(v-E~@bhCFBvUD<nvV(kg>4(nHBhBxa
zULORPsj%`?1eBC(c|iN}I`7q0cDsU$*1Ce`pNu8N{OfP_x=8*9HIXXfx<dsHK4iYj
zbcg@06yqt63SR`%3Bfc+Fm(`2MFdj}!Q_TBD_1lh5djw=JJQqA(!Rg$ywQ1a=Ea|y
z7kfoIHLsPVcYgA!h`h_*d9m{|c;p$B`&|Y2JC}gw5Wtg&%?CKV_&a);7#P6geK)~^
zHxJzL03D11qCv-^fN0pED6d#5Z-FKSIJza8f3xuSRe^@w{TTOw9H4o+`7mqejqmR|
z?;ZRnfAJSMD}Uhc05|a2zh43`di~J+i23G$UY--)HxJ%C)Oq6OVgAk;j0_An58v?s
z9WrwB2xxNi=0T_v4&CuUb%Mr!-w*s9;h+tTu5UUIbsh(;mOa*axYPAXr|Sc>`m@{j
z!Og>WJb&Dc{sA}F50p*2eV^PsbjMSm+xNxYNP%wOH#ZO5@szk5B>~l;a5q}v=8-!d
z8h0Z!ZXUejXK**(0IJ6Vtj7YX$Kh_215}U4-DnSxo`Aa%0U$jQcjF_VdJ@2T5}<lA
z?nY%m^%UHVE@(Ww05mCc<c>$h-G~ZSFz4W%z6J&chQ?zc-rf0N_Hhs!Vqj+nXwcX9
z#od_@2FUrH6F?dcf)w4I1!f-tu^U}qK&U4W>H&yq&i%mB>HCJi^EN2Efd-er_~jaK
zR|(Xs0^yf)L0S9~f6F9L&i=*B-wUdEntw6X7=n@nIJO8R7*K4zR0J&|I@0T?0g8!8
zP)u;%mArZ6jwi?6NDdG!a5qu_L`&R_l<188@Ot6h8!u;q>^{lgk_pPcpp8r3U<OkS
z|IGtlpd<p?v1I=D|Nol@dc*!f1ztY}XHz%<%dZ@u{94M>9V^mp(fXgiF96h-aTNg7
zryo4{TOf<2!PV=VZr2asE2?*aMo>WwAJDF#Zr3*;rXncS{qW%L5CGLXF6Vx9*UEs-
z7`n^eU8`{Oz+Lv6CvTkTt`)d>@Wz>&r|+G)dGg+wdk1fxy!Ytl$-6O^f832Z_k)?g
zyH<i(+=IUZw0ie0rG~VD8%`9tq{5X_S9F4oJ!?L~0WOO=FLZ~#(fk2wxdbqR4+ZG<
z{m^*<ByzCVgYo4CP{j^u%e?X6Z|woirT_G-H~>22<W}eB&U1Gex?L6SGC=1l{P;V6
zgZ#*R^U%#hcbOpTTyLDZdHTkgo2PD^y?OH9;d>A7N;MyXv|c><I}U?pYi@wcv%3tq
zb=^D+jTot$C+|w!JOrx0ojAa2Y)*p?>w}tq`rg5thi{$+M`0AWR6KOoLEx^F0DhI=
zLhI072Z_5*5?EE9y7%yI6lewoegq+Zr!Ta-4h|!54qOh}ihO{-1vEI)464pROWi;_
z0QK%NdxFE`FgQd&C;5Ov<m8RBH&5L=eD5V9L|%e+rrc%j{79Vg*UR9!2eDrPyl<_R
z2h@My?^6fOUxP9aXg#wOXpgSz2T*2d{>cc=H2f{M86X>=T3SH)guU~0^J}Kw0LGgS
z`8%>fd+bE6?*q+DcHZv{ee?Y~XjQuFi{@7x&Ci*eUo!J|z5vBH6L?wFL+}vv1(3jv
z&e9Lvt}ome4|(%<>;j$3R>p7_S=D?bRlR<UjG)v4x?~1qMsexg8=bx&{k?uns50IN
z8D>-&MVL(UF&4%{&97N1`|sZ94*k%4gs1ZYIIZ8k`T7BL!Vo-veD~(-ZD@Sd^Kfpy
zj0eZ@>m7G*zSILv$o}VVF$1k*2OZA~Ug`dysYVIOU&VrVVLta}JoNGjsKCDY`a`$t
z8}JEM(9zvup}RMZyM6$LDkzM+84tbQefQ?;&v$RU^afc7i33msfckNrH^AW!=@GnS
z?hWVQ?|cRdJ>=j#2ND2T-F%3{&6~etJ1ARSgieG(`{#EVkz%PIrs1w5M{gKHra1HN
zjn2>ycO3<K!w?n}J3~b!dc!~~4j|*a#j;@0=7S2&$5=oiKKJg8m!0tO@Vhr(KS2xM
zeQ5j{sQj1tAn)IJ=?V@v@Sy;p=Akht$U*rDe0<&yQ1cMUY5d?I2mAZw3$Vu5pYFPY
z4=n;OqbL@Dhc;Nz>qB>MzW#dm#>@Ml-SFU%d&qeKhL>KR2kp&=Whq#FqyegrYDGW`
zxCJ^xKeS%r@B0X<(Or3NzPrl+vg7Ve@UF6IX3+Ieovv>@_*+=Pm6i;s(t6VE`UbU@
zx(wD1?x}AEGe3CncYwx$p}_%}fA208xZ`u~#~l|?U3B?Jw>jg-?ot_MF^`JU?ot78
zHBicPhYyQ<C;@p>0`j7uL+aRGR)d<0i2Yd2M>HV$=*H_WpnBs&cPY3Ve5^Ns5qv8E
zxa#OGeWQ7TfBi8~?E#wG2W>gx==6Q!$q$}-=yv@8s+?UwlM}ulnjiepJP0};Lzjtx
zq4S&{e}^nsLZI{39nR*19Cw(&MWY{oM++#uGIrPUfJFIW;uQsVL2ds#2!VKX0Y7vB
zTXX>(bOC8}0j};^p1bTXGeJ|{pd<a7e=+m-z5Vz9zk}wX&Wp_lS@=6*85tN3{$%p(
z1a(v|fojcK0nkRQi`}I>y&}xb4;dMMbl1M<Jbag}^P2z71EBUae<x_n<>tZG|Gh;D
zcRYUdMkw5I`f)ev$IXLxz+MM8tnWB++>PP@F$L~83EYhm=&XIg-vLTOov{x(Z+3p_
zjJ?zO9kluV255IQxI^3>d*kMzJKjIKW6#`i{sHP^$KJVl_zw3ShPx8ou@7z@xZ};y
z9ed%9JE$ji^I&)El{=mScbq|{L$ykPwMyKLlW0EX&<)n@t#HRd;ckRN^8p8_85&?S
zG@6e)+>O?N8e`CW(BY1=LGxjUyHN(sha8$+FE}*2o^fb)ec;gSddH#J^@c-p?hB^Q
z*emd(-68GSIY{l<m;KNdB`68K1RZ_Y>&5<ZHYj`Fcv%af>Ol?N1I#bCfbubDe*ebH
zNVNQW^IbS7sKbJr-&lZhv9AQ^WS36Y5Bz;epn0?#pk9sucw9{oRQuiR=4`zLp1p&P
zsl8-iU;yn^2hHMimwxc$?`Q^RSdm_t8=zyyV_$$q&tu>8%7C|m_1gUCtbNeS0=k=o
z0d%H+?UT-*o!`O7`GZD|YWH;4erSHr)LDC^()BJA<Dom8j5q!69jq__&96ZD_YT5j
zu(6uof!1zZZa!iG&Wzo)ds_dO9BHoI!(6+rxpogz4ewnhKZwEi4!)k<UHgLZCTLe-
z>5;qcKkj(_=nj3uc<A22*EhReKXl&HJjTENV{aVeOL@@wDnCGb55bMW3dWbLpw!L@
z>Ljz@z4`L#zyJTi9oKH(58rb?fHYs5dGVj-wO*NRnm0jNm<yDJPkZxs`~o$+Z+0H<
z4&{M#WZyG&mx}Orf{u#6d-E<^^Dz$avAEv%4p!)PUhMpIm+1~CXo(8P9Z$%jl{=pB
zB`bG4!6Q<yL7u+eT>F6qG9J|%0qw=cegK8&an{Zs-`{m!?EH1{=fPj{nioC!J8pq0
zA{Ov)6zEWiSe{-HcE%f^<EcB3H9uzTj6DE8p!!bdb^gw;pwh+ZN4M{t-YN}HPAt%9
zJqZeZ=z1E^p~wgCItjqm(%kWoxOb4hqa4&6F1^wDsq+Us>vjI?tUb|Ld!Re^0BA2;
z>=|%2ym0T}UA8;i-LY5h9lYz#0nUCW?j5}AEYKZ$<BqpLckF?C2k$ya-0_kCi7J3{
zpSMDHEJ&Z5M)R?NJKh>l%?8cK1MYYmbjO1ATY&XjG#?HC>33*85OBxKq4`iiv+Id~
zX4eA&&8}Ahnq4mhG`pS&Xnx6b?_g)_4gOA0yXNIi(6s=u2SD>9=KufyfB75Kd_7rW
z4q9@i4O((00*WnfSajVx_!7KI@Wx%X&ff^Z*LUvTe5nq~kvCuJL#R*)1-e||E@;hg
z03=t!>Qfs~POOC-jpX}*zfTKXRSI-N@}W0~$KL7s0(Ed(2_)?L0#tV}ftbD@paap}
zt~{XO+iq8pyD>L@fb(-VJL5I*KsBf-iWvBYDFKaovxDU~fb%kL{h*FHZv7P{xb3cp
zz@yIwk3P_42GBuk4EJ^lfEq$aY#<rm_e1Bc?${Tar})=j?u}x6`4Uv=lzu=Oh&}@n
z0R^Q8e=BI~>yF7Po|C%4IR=u25B`v6ynOICljh-G6L3b+yr=n{AF_h(pI=2e=v<5s
zoxdPW&sR*Hpq-dJ{GIHe+sHxVs@<_Wnh$b-$5tU@(K{;aKx5H65ChfS&K%vrJfP9s
zK%Q=Af$m_DPDg>xK#^`|iEi+abEl(3XP^wI4f&3x@;E4Ia5Vp9<L?9Qa_Eg`1dTVd
z?*lo!^F-(Q@9z%&muEb6@E4QjFR#wfH~bx-TDaR)1Ul~A9m>-S+8y$y*M<vJ-u?tT
z-K+CnXXq3D&N5Kj!tqCU<)2QsADwl7x*5A8L1%Nuv2;6fbXS57((J4Q50yuXbh-(2
z#(@XPD`h&}Bs%M4x*Zj|BUL)x6guNnx*avTD|MO=T6DT;bk^xKAG7%H`-Z<G0aPCN
zKIlB%`5iP)?F$~G_Px;Qdj>R8eWJ7UNN4GR&eA=gp<V}Ywd{J~E@%fGXz-e&+jY;~
z2oBI-u!BIi>jBUpG-$Y5qTBVz-3W<p*9UhU6hH&U5enVT8r{J<osJrvfjVHb4DQAm
zz(<#1L(6;aMu3Nw9X!CMd4LC@1Hh&QfK7`4n-<aSoX{Pd(&?Dc8JGe#E#q!n2H3QM
zyYU5J(<;Djs{pyJ0W`b?GH?cjap!IWcv#Ez$lVzb#)G>Jkc@NU?hG)ac?Kw-O$JTz
zbT)$6ofAQ9kX;R+0j|6AKxE^w2Owpx7w$H!02RmcL1g1`h~SmG4Uo*b=k5#$<Hp^F
z9bokb?#_TP?%Ztv%~yjwI0M3XaJS(ESj~yMGr){yaEUM(w641GFv#T2MvzG7M6k#~
zkVvEJ2?%urLLGomdmz*U2z3WS-GES6Ak+m2bp}K==e}X#?-T(Iy?cXpC?DW&c?=p7
z1NCAm!3?IFgl@+l-I3t57zav=m7ug(2TqHT;ItSAPK%Y`v{(mDi;>{87za*^mEg2k
z2TqHTu(TKlO^Yu@K!v;ekM45NF6z$WKag{1nLE8%y4^Xt%XvW4Ld87Y?gHKZBA^K&
zZ;@_yiSBY4&{R;dOt-s2x4%lKvqGo0O0T~~cezftyGCcRPH(YAr?W<P?UT;hH!p2L
zJ>moWEnMJ(gP8eyUw~GS{$Q$+>1Oon4rD<s9XexoygUxN^Sh9x8`Ng+EN1B~|JTXf
ze3+v%cE{^8;PDG^dkxfDgN<QGwBF|LYXtSHTm>Kl8o8h&6@D`Ew}8?N(&#;ZM>nX?
zd${x1_sa(#GB-bF_Ursr>2dcaXnx-Vbo^(9F<O6^iSZOj9Hao9ZhpZ65~{r2e1r#F
z+_v5>(Q5w9T&oCLJ-`bx)dQj%ymFkq^FyzQB}m8XXP{$s@7{d9@b1mmhxV;rwMwh=
zM(54%?+*Ty@4TmZs+T2*@qp$r{+4;5=F%rG{*FEn1G-to_eJN&=9f&JzHd5z@OPSk
zmRa4r3*MpvGP}Y6rGE%I3?EeKbAaUTItV~0@cQ0Y5ZB*r{>{qY2fE#$*N+kG7SO0a
z8+_CsHs&u5YU;&)_<pIE=X~=cX7A1u{GFgp%HTnZdk1k?1hG${`GCQH-wz-Tf5$mc
z0eHL<G{S$d^AOtj{#~aZAXT7Y2v8db;%qmFv)w_rIvu?0pa53kqyeTJ4ZxJM1(<Sk
z08{SZxV-BS0OmPGfGNiWFy)*9rrZj^lzRo30vA|dRuiavYCHrg8^HWVQ0dfo5Y7je
zQ;mn={5DV$Ydi+$w?j%KI3HXjv4XguA$pLJ{GFhne0dzydAY>j@)6WS0S(1(1~Zsy
zOh^pTmsOyql;e+HXizYMEV=6l2|7ne&^bba&QYN=790z&XE)crU??$eu6@B=tJYlm
zf~iLE?#;UlUd;!<`d+Sv^t0GIPxXR^N$wqd{pjw^ms3HaHzDh<ZoWJW;T;80H;_+r
zfensKm@vW5#og7{SHU@C0wh^N+INj_&VY+tmF`#_&~4TX-L)K`Qz^MY=U*{__GW;F
zA3JSSK+7c<Zh$wEgO-(mL|<q||N9RYKL**_kFk(~CHmk0)^DAM`CFFrfL4fuX9n(o
znz3DAzC^b`XDDcZ4YY3xbmFEk4+8^8dL=h#ho3;VVCyCRjtL-+EA*t#au5f!EC$rR
zj0168?|=`5@&K`YRX~SAed7WhTlfKVNDgEWqxA?E)cV!~o!|{M{4ElowyCQ~w*cty
z0B#V+SLWusyNsYwBG5TGoX`a@r6S#~2B0${z<d5cM-t_6F))BPYVfzdVgzkMdIHiN
zYjBqttc1T6WEy`LXk4lDx<7x%ItI{bw2*yT-BUq(vOuRM&IRqd=yo;fHM!9Zc2ei%
z@1W~=nqM$=e&p{2jiNwKqk|qs*L;w}tHQPO1b96WD7+Y;8%apt&(dA`gmEj#djAU1
zZeP&JeOp1U0*|4B$M+kLfKmpmH0=hj#{v!bfl5>{h^xF1&Uy(tOyD?Zu@OVBAIEVw
z(D6?U5RW#$VtReP^SXb<+T*UEMhH~ct0J}Aw*holZLC4B$qA_cKi*|Vgh6G>%>#Eh
z?@EHb9nyIMl5nBpqeRcAmOf!DZSd#s&;}KopoKY|;P8K03Ld?DeZTc~$r4aqF&X4D
z9?%RJ#LCxAHxKmsaopj%D~IsN15nCTWMN<crPOlJO&*YgguFoK1$D%OCVyXa*Babq
zzj*+>E}Xyh4>);z1C3YQ0L|_SbPIU#cYw;O?%D_4rBAwjO?u=1^RK_x%W@O4J;)0h
zsTFn5X!SY{ItZSDp(6LV1NdZ2uj7!TF)L!AhhusjcL1M`S>b)$K>?I7ypB7lfanUV
z;|>}ihSzZi9S~iidECJO#PB-qU;?5mB#t{+fEdReY(P}=0S7Ps&LU7?ftC<?bh=*P
z@3;;+TE!KV9vMJq_k=#_E;Z?m_}}gNqT5%4fBj+p^|yL$?)91+?5yp9R@-;k?moKz
z06fwP>aTa#g0H;czsu}-?<DjZnOKF+Q{ApD-L*a6FZHq<hU`!5Jly<<xzn|y^GD}-
z|IWPu|NsB5EV+3Aa!Vou^um$&&RaJR+~EQZklj3R$BW~R19<xAz#T7vI}YIap#yik
zKr=vh9ALBSFIg(jfWrSx^Dz!a*Ovdj7x+6tCt>_|eE>S4u+t4xc7yg-fzExsd*k)h
z)=MQbn}0FaHiKqmMQ$GOM0Uc<EYQNk1CT2k?r?*T)4#)bSF-bGcWg)VVUE}5@7{Pl
z>F$l!eK${nc9nxl6WeZA0r1Fjw}4lLW_Rs_-uVCBu1~saP59Rz?ls|X^t$5%x&Mj3
zqXE<zEH${x23lVFvIy+9m)Q_1>CgZFUY($ms9HfM!?}Vk(qTC63aTC%y61v&v3F<e
z3I2}v;79|t;2A*K%y&vR=$K*+P-b(T(76@l`OdANd<(K(<alT39B2ju&$ob9IvxPI
zG#_*UQmjIE>6~7h!<`p8KX+~gZ6f-9q4Qev17^R@pPgGlr&REFg0$TQwGhFB!Cv<c
zR+x0&K<uAp01q2EK!=SS1R%pk4xkngblB(>c-W{L<n5aW?!LbNU|wltRruW--M%v2
zdqK{<!+BR8azY44ckG*H@JS{djIlHR`<~$M1Wm^Lcb(Af`h?MS%75Q86#}3%XWj`Z
z*B(Q{PVG1B)NjZsDczwmcQ|gI1nn`qEAe_UX#N7UNftaG2s(cRG#@B*m)Q$+MJH&8
z``*EqlK=nzzsubD2_(ed>(6oT;Ol#LZ@fGM+RB79KLIKr7N8UmNBBEBKz-U$jhio;
zk8yNv1uyGIDJ&$x+f#)>Ey*ETSR8;XI6UsU1XP%G`@ZO&3-TtYjsKdX({}-6=K|=y
zAn-neyWrjC;8H>oRD;$EbeGC>^WS9ymlEKyBi9GrvEcHi;y>uB@lb_cmVe!)OF9qt
z+I;Ff)%g!nY<$1e32F@cckTrp*UH}s>R#MDaEA{x^u-KbeCJtF*7>RP2J9FqGRu$B
zH{GEN7)zHhP6h42`0smwzZ0|)ycv8w1_!t>Il|wm22O2vZ@k?01GEbI^$Ab|qYgA4
z1ZrP`bixZ2Bo~6`6K@{q{Mj490dYCQU5VGX?%sIaaregS7V=7xWR#KwJlJ>RCFmH?
zyEk4+`~a6Ed-yvhfJ+iki<x0RsLj;57j(=;H~7vR&raVR{2d>`r3q*c5kt4{3Q&Op
zQ4$L(P&&7Q_9ipl@2uU>3BCiR^ILbQ#LWZUQr`R>wcr-!8qlqdz8iW?j(6Vgc74&g
z6`apra&(^R^xXoQr@jdue)jL&3)&9d4VLEb1Rc8u9$yCq6KDw9xbq{Vlmd%_2BMi5
z4?#wv!3@w)G?;-Hh`!qGYH$~l&Jg9vRFH%3aNd<_2A?SbDNjIR9E`DR{`>CW@3aO*
z7x=Uf4se;W;=k{n3IWiNr9>yVlzn*@9Lp~+eFH7~?*^ZH(p@TZhyUiuJAC&J-j#p7
z7<4=^s9b6Wt+Fuz8Tb>_zGw1gJOqy5dk0_2foj^=4c(zzK$qbChD*G@dH2T4@^7g7
zG19+*FRoy`(U#F$`T=%l0;t*b!pH94|CjFHKpU5CfR<}pbl2)wve)t)cm2S{z`*eG
z+n4|Uo56>pi+6`wfEIE;`SSn&an}#LAlVyVU@N&F?EtmyUmpZhFV{iTfDW^Kxdp-o
zHSJ!mfUrR)8o!(aV!NoYu;0MBdi%d0Xu&sss}58t2S_RS##7Y(f{4nCD^R73Af=FL
z_m@^*{{M&eK|q$kIv}v_$%_S0Jx4#o)q!llP*(v}H}^Bx=OB;1y!RQhEFQGb5PZIR
z;b+kOHxk{9ovwFYhI|GewhldCvfGs-EEsggF{s1P=LIUvT?M)gTEFr4*)lOOfM=#u
zKt=faYd7D4_HuV#nE4&F3-IPa{thP4$ic176QDVb=Euw)y*8kB5d(i`38-zz1aB?H
zfmZB21n<V+Z*ya0V7T+==9wEO?w!7Ki1C*ve+Os)9z6d9*8!Rgy9v_)Iv)&K$6bWU
zCqZlBVCq0Q8HYO1`5;j9$}+I2VJdNi$!j3XH@{@z?@R{Ok2mh#xcTeeNpSZ8l3#Cp
zxpCs&;n%ld<?r1aug^hbAoKZ9`B_NveVFp#ON+t%le;%wy8j1dJZOIaqW>i~=)QYU
z|LE?Gm;b@}6SQ6a|Ns9``JG^~mzzMdC%5@qwt>3(psgm=U<Ol-5iGozN|a%K6hii+
z=gWY9Fw<UtxO?OEo4ZWl$f{y0k%Q^rh3YuW_{;P4T8P!46(g_TgO?sX1UZ8F=EIkF
zK(k(u{a82Oy#$TNz<caIexWWQLB75UA<jV{|G@g|klRc(x_u2m^JEO5&N?G3BY-;N
z8=fOh-vgZ^?+Uu+=|!D4C<B6e;kw|1&cMCyJJ39}5lIWos24uo|NeKE@^rdB0hzk#
zd0Pf#M+ZuVeW3<2_jc#8<F24>1`PZy(}lr(qgGoX$oYF9=inF_c;y9h6Mw4^NGT+z
zL%Zq^Ku4mv%7BLuTMmJ%4+YTb4QSsQwDFa{3sfP27a=SJ^{r2K_NssuKp^f*sFmmz
z_o^uG28(xI?{?JzojMO0y7TY6QCR`$Z9zL*pw+q+UZ8-6rY96xXh#g%4}<o?pq(&i
z7Yy11gWpdO`+{*U$VGnqorV8F*NuZB4xAraPnIkKR|udL8=#pxEa%08+DwomYCz}3
z{{kO6!NBnP8mRkugbfn3plIt3#XQ<jMCC=lCpc(ZN}0j2(Q*vbwknnBX7lKDy}{oB
z>c<<NH2mM$3tIfvxmN>pZVjX(3tBhB>;b;LL=L2>6{O<kyY5<@?${T-Cda$Mhd*>~
z1?{iu+zL7$2ikj>3TiGRg<p3sNC|8#g^j<(8f09lLbvaO?$`%+**u$HGj;m*+&fuO
z*<Jgl^F+6=3jg}!-Fv~th#c&^*?H~z#m=eV<&O`UyF(vz{%C&1%-;!Gcmr$LLArz9
z73Q5ECxC_up#4ElM1Rl|(H{g)O(Xh)uURV3bc6Qal!$h_zUeOQ=?+!lU;m-o^#S9D
zJ3fbgbhm;$cUPhrOmj4Yca%XIcvtv4LACbX8~?$9(e3(z5gbhaeQ)r0ZUN0A@PUe#
zll(2<mL90?_kz~_A~z3sgKK_}Q$fpY4Z;1$UUz7NkNvKEckF}a*UYc4p^wMjcnL~J
zpuUi$e`oCl{*IM@|Nl3<-8mQ3t^jQh6YC6p-~~Fo_)KSL4`hc>cPmKp=DSW%zvxAG
z?S$^o2mI@Qbi3*>{sNzf4_d$n8qe|oMNX{3UFPmsoqH$mhFtyu2^(qfy6SG%p6=2I
z;PY@)K%sN+$K9CAKR`*v^+C6=L+7#1%b>fF|ATU>@0)Jd9?)(Z9&q*6U8>V7@~^vA
zrB{Tjb1G<`Vz0^ZUKYO2o4rLpI&Xcy)clCqv$x_0e<$eNftv@w=VaVryDQgxjKjMk
zxARx$2S_bIYI_|Nzo6@m&vb|ObcQ~t;OX}5@$B^NdHESs_}=&r4jJ$$0O&?e@THe`
zZ@fO=da0xvv|y+g6xh&4x;L_;z&A47JkY%t<d@FVcRYS{{=4H2I{LQr`0LAeZ@lgS
zwbwztzj{!ZLNnb7{*GV2|Nl2U2|4`^ba2gF(6Mpd2A#1Jdc*#MqU}iMb^ea03=EL{
z0-&*#&<WkKI{fP|fa9W<#|U((Yl#3Txq>rGuZ+PRpPN6xlMs+KSD;Z`*EhW)mpi9|
z`sknx6{^xJa|pEHw{tG&NG;GU)VDfY-++exKQzB!hHQ)Mo(opq*$$e@19#!Mnh$}G
zD>3Z60SW)R4B$?(1IHcE87y}l1nzi&+S-u*J9w<68GKI3^={V*pl)BR0{{Ahcer~+
z3_yo-#$5Z+`R~8)kqVC9y8kahrv&_O1^FM`bAJcQGPlwC&&_*5Ze-wZ0hf|s4l{o*
zXek6lhN(vAF0&`76Ap6fy@M}7KDf)=c@QD=`d)XfOgFnnr|SX!j_P0k{~LaTbUV6T
zCH8?Df87k7hder6_waXsno!+yL0yv0*a_hF1t|PuCv^MjfNn+xl@q--#&=zQ{wNXd
zc74-Z_n&|Lk6s@0?pl>QKIeb*x-oWM)I8Yfx}($e0e=VRoM(ut?ob_YetXa>bL-#(
z=3Wuz?pPJb0A#Po@6Pj#7a(JcorgPHe}EbTPCq(NeZSQFnxpv<vw!Da(7A5>;Oz(C
zi6!t56zCKgtIk{K<pU}46Z)dNR)K&0p*#G&GLZPW_oKUX2dIa`)$J?ME%@>;=y-PU
zSybRY?kP|dSs<S`1?tg)kBbKNXu;9)3lt>`p3Mh1z|OpP@FgfbAp^VJy&&J+b@<VF
z8g%T;&wB@7Ujel%z;&1_W*x?&^5V1;qz?NJ9c^6+Zf?tT8}x?#?+o1n$}to8JC=a%
zID;IJ;QONULg#gGDfQy}O~_q%-L7vS*ZqNG;m!9OkRx*;hx2rU*207HR*69OT+m2Z
zcc@A)k1^=<Nzll@xEFti4#-yU-E){t2>#AHptd@Ap9ZM?z~6Bcv;-U4o&yVmHgiCS
zCeb$AfUhySb@xW|JEqRk4g4KHL51gD&`6r$$(!#w!Pm!ihw4CwsY+GA8^A%G@?M)`
zplbFmJ7kuEjlTt4c$b3i0qW+v%K#oZ(F2t|u{xcnAjdg$Zw2XujIwS8t#gNrvbKW8
zN;*Gup7ZP63OawCzZ29eKpSl3@0bjlszpz4q?X6f@z>H9&Br+yw}L80@EzNrbHzZ#
z^p<Y$a2S8bWl$G(E@-r`x9)%URM7Y@Bls9xM)1XmoqIt|qnD20Li{!8(6^REP~8ej
zh0b6GQw_#otrobF?FJuai#%BSu^YUP9yDHi=I#yf+{fJ;-~#^cjhCQ-6Hx!%7}PTW
z)#1Wm2I?-E|KMFRoxggWIqq=Zm45x??v0mPpb?i^8Au5ODt*@Qcl`Yd>X<8l_Fp_{
zJpe01x?@!!#mF6>(?39U0%&T01C-)iU-bI@@4OB!{!jF>oQ6({_;()U@7xMWbdXsJ
zFaC~spcQ;4h@KA#mFbOR?2KK~&D0tDK=VeY>k9r3&}~MYx4LUz_;ts===^Z=UAONW
z{`KGa*Ix!_CmqdSol`-_x`L)GKo!bI$SH%pEQde`+JMW;yKM0E$O%e(t_t0?5_cK8
z+3%h7;P3bZO5JlIM(99JyzAw;-+8?AG~^h=&V!)F9;l3Heh4b}Kx?PEr-JyE6|nRO
zSzYW=k=%K+w~PVY-ebBe1=?N40bO-_0JJU^yy_Mt3K{{r;{@7y)_h2z`2}?RA2jsJ
z2p;qK@4JG((-quX{qMV`yL1VEC+O0gmx15|onBvQJy|jprJXKv^MD7qXoD_jewhSL
zS8ySSgS%Tnj&DB1@%jR2{QvHa*IjpSyle%v2ygSZ1cMS0sKW_5j2ATH1m1H6iOZLu
zVZ)mTI)C+gaDaAQfm4$YNaHvDmPEu@GUzs8W53SQ1^gXLKmY#^y3FH2cjyDZ&eERd
zS4^FubND+n!HGzr^Hb;N?%Efi66G!f<c8~R*Ejs@?}J<07eIX?lN-G@7duNEI`@Lt
za3T6nQ$c)KZ<vk0<vb`>OC@d|ymzvj&y&9cG(dFsX7^suBqC@YM+e-N>oxh&dA{4V
z!M}4aXfZIXUhDk8-{}fTx7?r#8q#w2<nPb~CEi<*_~ZgLib<T$0kv71TR~3c=nj1W
zIWO_Q?;QS4Q0wCEO-Si33TnW{z5#VTYE}5xA7(sp$LIJDczOkOAVCdikgq0!5~}Nq
z&U4+hJ>8)?->>nn|Iz%6xtHZv=P9qw!<D|E)Ce6<w(Yz@IM=-d@9G2(3@_mCgdV8!
z4s^oRjn^+*zm@E6{>NOqs`(#N4G(yZ32gT3nKut~UhIv4B!lO7Z-8%3-*xu}czgp?
z^_~EwBT%6SI=cnhPDP!en)na2fv@vtuN%i5ZcvN5doCzHfeO1TcW;1iV!V3;avgoC
z!d<qP7eU3AuS_>%=b=v58UKA}fSWQdAHfOC^#N${eCU+UWBeWZptR+yaPu9gAzJ(5
zF6hcFP|LdW6u7DSqVqKW`uqIrk7@qsbZr5hxhn!rXf`)`V?O=ptnKKWD+3zy+zKL*
zW(hBX(pN1ceX)D+ckBWUi{0#wZRtD+>V1ZGe81Rha=#N?D0ChN7ZaB|KXvW}H75Bx
zeUK6tw4mVcFaRa4n~?S^x#fkzU54gXkW)FjOJ6XSw*2><!ry5RDm89)$3AJj4eCDj
zbcep_E`0#bREMA)Bv{W1G^P$K+Cg)1paS+{=e2Ivp6?gCYjv6*GV`xL?AI%Eyz@q7
z2qZay+7cBm5H{fk#DCuz-M&4Yz7Hz6K)W{tUiyRU#+O~76R&Q(e$aZdWD97K@M6$V
z19*O$13ZiRdeY4Uou6P87buNwy?f*JM$o;nprv9bA@?qU3&6#o#P$<hv7#1$UEnm<
z8wP3dffHFPC_Y|ayL;p1QHVSCfznmzgYH@due<D>p*>*nPSAZzo1eF3fNuMYft)%G
z9>#7}|M&mp`FH>S!&`^gFK<|D0cstVYJ-&ReBPGPjlB`s23E%30vh^+j&^~DvM@%5
z<G|`l3c=03)=L#Jpnf)E>wyaQZt&WY8jJ2)4d`$>=w64HL2r?U(+xnw=?-tfgUZ~X
z;dGO?=)>v9T|a>Q_fiU?3Ou0B_ZB`}4QdBtIO?Q1$dCN3>EPj+58#3KTW=sivkSMM
zCqcD=T6D)<KY+*R7elq}25Ae$Jn=+C<wZ19n;l3gWZU7(9PmMC;C)edUY>gm8w&>w
zQil5YfyO7p6hfTA^*>~MviVI7C=r%|Z=qy>jtX|i3Ur#Nbh^F)MOMHc#P}q9u<^bb
z#Ha2&46uV^0<o#v4pk@5176+32rjHaTa;Sgf|ve?fNnD_6=^<F10HFE<b25ZGW33_
zAZ*4anEm??>X*6R=@tfU7;E5WVDJK6LiYe<12o-W)u{$?PzxU$+~HU~_|FvV!4`hd
z;>cQ+Zu#cljQlO@!Lx2JK$d{&CRdS8-zVLm8&*McPdDE|oe$k#=K7?&Q~`9$1-#zM
z1eKVjFK!+H^|wPG_<`0UmhRy1fb<96bi3~8j(x$u{#bXZL@&#+PS>8!W1xY6<_FBp
zubKHfkAOP+H*Oy2c2$53Nx5A30lI~-+f}7og7KCoe+T%a6ZrT`H)s)n${h~a7B+Cv
z#4Lu)6+q>J=JpXH-Exe#nqRV1ZUyc1ywiHAL=WV`&^MqCXY3RH^@loLcYu1`r8_`Z
zS}ELhIryX7SLKe+y&rdD?)~VNWQ=|C-}Qw*e<x_6-rXB7LD&7>z43Z;>w%IW(Dj{e
zpvijKJA9tqt_sb^IPRc&=cO>Hv33ybS!Aiw9#H5>G#}$=e#y*u3v>h}WMkrum!P9m
zz~l9h&BNdwcE?>I(N!t}8%zc5ed;a+jZY(5z$&1a35CRr7bsdnckp+xfdpgUfclXV
z{Of=Biu?d=F$<m2c^Ta0f5hDUp1Ipqfxi>f2DuArS|B%-DylkfK@$XMp#`Y@OHO;q
z^-k-75=l_a9lN8uRsuY@@q+ON=pq!*N~iy>p!P9%AX67q$K80j0d#)Hjn~IoFO@ig
zmcy8W8XH1)xWPj&kY?OV(7ER~4|e-1Aa$-l7ex8KXg&-IR!~bAdI;T1(2iVipn?Y2
z?%sIa3r=p$zZpAk@wb4Qh@eXc8G9@Kce=jdUw@r3^g-+Y?$QUHrB6El@pmYJ4)uKp
z>i>dP&V(x5bvcA+$ANk=ph=O?2i@$TpgpMhv-7wof5%NwF%kR1yYmKUPekk+{`H5u
zV<mc74)?nJ_;K?9C|%bgrR#2aO;F+o?Rf@E-tj=}>V!yvma&1QK*K*CA7D8Etg#{q
zEOW=>Me_><6q(8?p!G+f@Yevf7hHFM5?-tX|N2ASwNJW3RTxizjyDA*P@f+^?#BH1
z(JiGJ`=r}-haV^?IzcmAcW=B@038^A<Mp<?H(qbLd*k&w(DIlUpeg#-i$TV}@aS~i
z@%nhTtH{lFpzW+LJX#NQx?bsY-NE0H07`(RFS=tD?z((N1RFHaZyx9lebLR>c~JAB
zXXkPL4porq&^Ns%;A=d(U3V~k?u=ama&4$Yug#(E&?UVr=AGxhU+azf(Rr%*8M7C7
z7<U=8RJp_7{GQ_uXz9gk4o~QE?_Wskfsn@!e%x_@o_OK);f}+HyAdBiy?__ZuN3Y$
zyto?y3Q17G0baia3O{97!2!C)5ac4z!X^b!_#OLk$LIc!yD|4ccd2%RhT~pT@O0O{
z@b9eM@e({CapUE^pWrnaTUx)B*n%40hM>l`&>enHgo9s#dJmu!y`;C|189i%bn|P0
zJB~l@M*ir$_!`uFmWJdGO)v!-EdVoKciz46vJN~<2AM5m!CD)9(1+9pJ3uYzQk8Bw
zX!1`11$nIqs4igdbbZkaTJdtdv-S+*sn-9XJuw~1pu>?N<4fJ8ce;I_bh|3Fe(OAS
z*X6_y{uamznit)^Z@Nog_;>!`Uw^Q(7L?0DP155(Ko=I)?r46;R8a}a|GpCZ>yLvj
z=-~MQ+5j^FGzIhG`}O7*(8B^ME4zIaG;e{f*SN#c{DK3t@zJ3d(LbyOOJ4t>c?-Pl
z&IQc!_;K&xT`2PdgbB$Bkd2V1KnosS6+lOO$9(wFE!FM1Lo@ctf8R6U6b=f^mkvMv
z|8M<YvY;8XYaet3PV;}J8nJGWZGIq=!EU*C5Ik4|7VR#b021%~(ELK+jvvUE&F`4+
z9ejNTx)2dMpV#dQ&KlqY=s|^qd}r(n@7CL$u@^dHckp+d{Qm!cXY7V<(Ai*}H@idM
zfUeZ?odc>pV->#N>I_}Mc(c=WO{eb+(AiG0FS<h&S`XZHx%H!juiJG^=e_P&3C3f0
zd_Mo^_I=U(lBpsSbXx;xOm0T6%{|cCxd`wH;f(*fYhN@!VD1h3(fppdvg|H%^J|Vf
zT+Oe*gY9VR<+wom1wgw%LG*_^UZ4PV0A+?dUZA`I8*i_D0UF2zl^4Dn{)6@}z2NWo
z_3i)v=G-|PpdzMr1!L_R&*t129G$)!p!+~drh;nBMo^6j9!7^c;@&~<!p3gb8NFd2
zI)8%3YY&4`zTb~~2VY-@RzJ}8h_6bwB)Am=nb>;(x)r_jNjE>VhU`4$+39<LzoP)O
zgr!7{p&NAV<CE@Mh1Qdx%BDoD8|3ac-K7%#;IY{kj6d%99Q)Dj`l9oiL#OK=&12Br
zyS^_#skK(ZlYjk*UY7IVWkh>=MNV{vPU-fY(hJ!$+8g<!+xJOt$azp&{s>)3RJ)+E
z5OnMWcz_0!e9by<!q+2$BtRQ)LHkBAR}ev0B!YMEUhNJA<+JWs6>#f_nbGyhf8PV0
zhe5a9xW3@;=mU@KiF6CR1dVvKo-COO>Tb1xx?6&bhy3m`f$hI{@FjTot8@y;=FZP|
z{C;%)yLa&QUC_xn!mvQQ4!LvQ8f>IOckPS2E<b*BgDY*&yn}ytsRT-B)xPMw=-yd-
zMDu4wd3WiHUJ+<v{iZus!Vff^S*y^?^11Ug<Mmz^f$x_)YqxZsYJSYz{GP+Bx8O%*
z+FkbM<B+LG(5!+9Xm2bu+YmqB6ADRx7k+fR9{KNk0+f|Is=k26J3(Or8sKfcU9uFk
z#CjrVz)R>ZyC=-jdk0^FvUqpwmd<0H7eNc4?%x3wA+K*w05=1ULnfs?_}3rObbau$
z=*$2Au=OFwSyY1mv}N@Ae(3Z;>OZ<l{`>#(4`Lk<)>eCg7O4C!)qu9_BeC@fe86h>
zTR{8QpnV6dWw{DiT}cesy`T;wXz`VGcc_ddQ>`?t*BAa7<NQfbvxlMe0Dr4BWHAy4
zsNbmn8P;#ycia`y;gbRRMFzb80;^w^XoCIH0PE?!`2_D&Mq%?;30OTpc;@;zWYxvX
z9iRUH2k#FF1NY{@t5_lZIp}@fr83>I8lX`a&|T8tGeV*FT!VUa3S8|OovshMUE$rz
zP8O9HJP><YQb5}-e0e|}GyV>DFh>Bgr$dX20dkkOAQuCJB^!V5Nls9&?g^-$3?8@R
zZ=KG`z|dXF(+#@&y9G2L)Ez1SzHq)}EvTyW6#?zm0Iv!u6|EA!%M7}p56lJ4X?KBo
zS1u|nAoq2b!W{?ebb_t{OxFMf9)F8G$evIEkX20GeBGrg-D2S3dr)WaGY4qjh(Wi&
zan~!1paTXj@%NqLU|;~-b`aDVgB~cdii3f{i@!yS9i;xs&389Xb-K2I7k~4&%CUhq
ziAb=4t|ja|<;C9t+Q8fG+hTaY@OG!m`5)b`2AwhI|8z4j9`x$;ZQ<_#U1n-{8zTI}
z@HVO>X!ih4Nzjo8P-Fi<^}~#<$iktkA`q8^1uhABs2vzi?^FdZ%j)(OxyuONB2&d*
z%6s<)(nafcV>`NILGb~O8rZN0B$I&?*NgLN|Nh@~?Eo#uJ_1@cS9+(r)S%gpk-w!A
zG%9!lba8{2S7+#jiWSFQK{=G+<~y|cP;fP^0BTW#q6oag*bS0qK$il$^4w+Y3~lM=
zxOWmd2;J?vq4QLCtORrv`!MJVkI$X1bND+!hrWP%$t~Tb2H>Lnj?3{McVmwK=oVwV
z;MwWg!Vf-I8QwjE)Q@l-TrlM~4|L1j@#5$%HDJ7fDkgwMOad&{d`JPNv|EnxM)OOS
zPS=)7a7$kWG~&p>=z52-6jbf=cXEN7pf4wbhuvP^1C0`c=J&v>89?n>P{&OP)XH!1
zyu;n?Y5*FCce(!KZp`%`-3*L}IzwAtf-Xb=skqYZYXCZ{1}ZDrd64l|ZyZNwXbX5C
zy6Nr>aAz2_7}mg#ze5<5(_B}8SA4rFbo<@`wMXH>{t?vuas{6d#{u2`aSJ3AyQ14w
zqF3Zb=a0_IouO->o#0OJbx5GW_RtxX1)$M(kUJqAP0xzx&Rfv>3Az7(SnuN{KxqGm
z3aE7r4mRHve*B$2kU)zAZ=HMnpc%aSn4x3_gu%?;3#y+W9Ps!j>KJ=0XiNb#Qtu8O
z0cF1{4_>f6{qBv|lkeVm$p$*@1YDkiI%iiv_Z+*bG+Qw8w}7t%_Z8@7gxnB*_s{?T
z$6Y~Nqd`Zs-F(+8@}V<y52&LHYrmHAfD({*MPYZSO1JNhZl>-~iGvTAdreM(+N*oM
zU+gSB()^GabS+IUcuwY~XJ_bvPTwV!`QWwEuocvXogYEQg2jkjKV2%)?R%r!6`Ul_
z|F|1-9+Y4Xf|g3T?f}*JzBl+gK{MBPZ@d%*Z7&AT2{DvRYX&oz`FkO2I6$sKU;Yf5
zyzLI%13Esm^vGSOAKjq`Kw~%Dou|R)o?Hg)O_TKQj6K8OvFkS|h_--I+0A#|p`hU4
z@~lYccHIK%&6^zVJkcEsn(-=a_<o`D9C&X^>4M4v$d(k)A`ws%hm7?spxu8rx?{n<
zhh}_X(2egmzyYuYd{=ocBpHeS1|8g5G8@#mZihFn4|9M|P=U4pLFdJRk~GLgpuHo|
z^bD>Qo`cR_gZA%yTR<W1g9vX(#jpf)B@U#<xWf&L3W!uEZmB%nQo*>TEO1N7;+A5<
zE%hAK^=1aI|G9hP<xLRpCj25X{#MXZPyVhw;1Pt*6CV5>+d*CFU&ldbuQ7NWcLI%o
zGw^pT1YMWu1ZpsW1bILSg1@5&EC}8n=W*Og1R_`t7L)*SJdQibfN1`XB(NZOo1DjS
zC-62o{tjQTAb6{s$8jg{RyqC-(1MraPT=iw9><-)+vWJdeemN>kS%jgkS%kE96b0t
zK}WH^WCJ-ERKJ5(Qg!|S&EkS)bND;nf;NIM+~EdKy@2X}H2zsM{$4cxS~UJ#G=47{
zzZS%22A9%zZ@kR^fzkfF3tFQ6?q%o?P^JPmY<eC4gWK6xUMhb7{~y%m2DgDUkG=d0
zT9e_+1FCfyU)}+A=*k$5v#2O?wP*Ckq8>GWl=t8NmjXZj{|A*)Osxk>#gDr_0Y%kI
zO^`ms`DER$2B6cO_*(@*dm3DyfagtEL24lBA2hwp@bc+b*nX|!u1~--8IM3BC29=E
zU7vuG#mh@DzKaTrI#+uJQZp3Z(qmD1Q7Z>->9rPqh0LF5;8q$0Rq6&(>I&M}%kVPi
zEAre2X#T^+-8D!-0Wlr|X)iawvFUcz==S9S-6sQH5)E3Q?aBe(V%#wUH2Tj7+O=E;
zVu8+u2lW69AqPEz=7gXNp#L*5Fo5cBcTkIk6SNA&7Q~7bxcTlbGo(?)#@})ZG<@W$
z&}{(iJ%aWjECh>5fQ}Gm<Zo#QSIl59fR1KJW@KRKJnzrn0XnJhxa%EIet`9-x?N?u
zLtmgQ3I)y0cgG5JyK>xR?v}WB(wo177vzl4JD^!zo(tf9u|%iu15n?`pjYH#=f!T<
z2c4l;pzAuDUvhMY9_hRVYN+u;))q4M@_f8;5;V`>e1OBdqNwu_%>KJjDW<zpFedmY
zH8=-!+!>q$Th;NJrScf4W>x4mU@Qd<6fnBp@#pUZT^w;2x^NL%e>Ou;;<<a{^@Z-x
zBcRZ&2dx*XJ;KZnUToD|djxcG8lyL|6JLTB?smIg>E-zdTD9!(qw_}d0gf9dK?9rJ
zu@^uC+ppWe^IvywfV;AHZ@iv*9Fk~yt3VspG;5!{>;SE{1cf_jg!;Ja4N$m)!rS)+
zN<#_UDstrj1v#vt1UhiF+x150x$an%UXjC~BYrM)hMs`7mHawO&s64sD>!(ddRByY
zg4R>qWr7HS?w30W*&ln?N#MpwNc-rn6KHoVh=;yE78;ViZy0@V`15y$LMk@UB<@|%
zWb&nwg`io0Zct-V1hN1VVh?CBGicW^w0eUGcDtTvKEMIKSZmeY8?Tq$z45Z-AE>|q
zPonfz{^wu+PqX&LOD}Nq>m}$6Dp-0r&Y}_^+MdxH`k^xfsehl!`S1Tr1JIPRs{-i2
z;Zo2BCw5TZ`5>s}0p8#wYU%ohzjq_JMfCwZTMN3Y5L}?Vegf<BPJ-V=3z;804xRF>
z`UA=7konDENRPNgjRBIsq5WZ3nQlB&oCcEZ8L(artPFbbM-oy19pQ%06dGbvcLl0$
z4mYSX3_kr8S}0^8O>qh$b*CW1a**y5ixD<68zlez2lvobz~xXM18ja1TrxmML9ps{
zgSe*U6f4}-SbZl4Rd)?k{6Ob7K@&O=pz;FLe0<W)2D-TxGNSztGNAo}zXLQnbQ3zC
zgBb2=04>>t_a8tfLU+490CfhzizH(kK+`9_4c?tMx*^jipt%#!>{H3%A2$!&jrj>0
zS@vz{4h4<G@^^ra{OGQI)9rcyv>v)vqL<}(ckKbt+z%w=An||m0C+SRJiP3ACkN8=
zsi^CYRRJx;Xnw)bZLRssv%6LSE*FPK&JK?pdp9V6UiaO-(JieBnz=aO*IC=Z-}wvN
zaeJu*rd~h3d*k(eP|>E+E%Exs-5am3bi0DX<)tDxOTIqRT?(4xk?V|Y0FPte>5M(V
z-{A-f@X&^CUj@*>Jv<E6K*FFfERpVZJ<whH20Zt7jPXKuXv3Y7<KSSs_@mpm;pTzn
zmrRg7yr58a1%(QD(D6`r=z)Wem>IA4${g#gozq=Ahw&C@D_gJokM7!r=EuyvMc^Ur
zeDKUAU-LVTI~sQ-nqP2uRz!4u>ih=ouW8(s0L|?DxRZgH@5w-!@5w-&@A(fJH9pYk
z+EBsM?Ro%|EWjHk@7{R%8!|6>ul06`J!ovv7&Nvha)-~e`5nhyhI<dec7wM}faY=L
z^cH=%<MpHS1Za{V6FiUe^Yx{>H(r9)m)^YrzCRq)A_Bz<c)i{nMDYOW&w~bqK=U;G
zEeF7rY6EC22s8=lD+1bPW$4#gdWF9u6)`_q3R+{`?b>kH<@*oNfHpiXD&cXV2tEM=
zG*$~5-0pU50M7#6fhObcpk!Ry0Gg}_ec=W=h>X3nw4?K&=12Yx@cLdzdVuyH7;kmE
z9so@}zUeOQ0LSj(?pOuL%+H;i%itXw|6MygE7-w40Ub~PYNAOo#=huw-Sgk~N~dcB
ze+T5`%on{LjNP>gAeVRg?twcTbchK!BbKOlmo|V#<zprMx_w`O#+gBG2iaC~_(!*^
z3Mdzz`q3=`@=~ctcjyaH0Ccl;*Y4>AP0H4GR3t)EGh#fRc=v<WCt!DfXB#;4yu1hM
zg4}@Rp_k{u+?RsjjPnvSPIBB88h;|)0$!b=H~2eNgRVV&*InDt?W)il&j=cK?~FzG
z{U~U}!WXodO1?YvjX%g^pt9#zcWDFYs8|K0NGomV_7wrg7b85rnn2oJ8#+IMZj`B&
z@Zev6_~0YvUX$b9wF;fC2YO?~e)PJC{{XK51m&BG01(rg<4y)>^>~FHm?v;219Y}U
zg%0RMSc&Gt3U@M~wYO*GQP3jl8{jF42L4V^v3mE$OVC}acW=CYcK62XM|W?4jwt{S
zPF#b|O=2y{LxjQgR7(t~B!|!Ocp{~F(3vG7oux0pLl<ZGI|_gP|KAOoXZYUfx&R)Z
zpxMSyh3?vhyDp!8beA^xch(+ge#gY$Q3nbN(2-f-M0&87=XiJRf==HR-M$UrGgy~&
z{(_#t+WeBav$h2~!_ytRg1-|qwh11%0IiJhyZ5rfr1K^;{ey)$@4W=mo*XcS0E_`z
z4Gfxud|7$5JN5x&-QJt-&;#9|dC&{pt__SA?vxw^Ey?HxZBkRY8}si+x8#4<2FClK
z`N`TB{GH(W$!5s>WIK3%5;UXJ{2x4~;m3FgJUDpoCAcu@E?vNQsJnK>T{n>DJAdEd
z2Q7to$9(VQ>&vjjS1SVEoN|G`Ll4wpidE>0odQZ&z75@_Q#_hqGTmkCbUgsN=ma!P
z)?M2GI{07aSm%k(*beYfiOuhsL8nS8R91r9fZ$OE&wDQ`bUJTL0MFmNybIZ{^AfsW
z=jC0r{W>ozuS0S)O104GdI02(*aM6=K$Syx=oIk5&i`E-K=X^CQy|U4mlfZ^qaBmL
zr)7Z0$$o&gfG~rXhJc4RUcLnH24)7uEp!y5`6Va}ZcP9eKA?H;8~iPXpc1iGq}v>{
z=)JT7G;i&Dgwgd$>&b4=)gv$XJ9xjtH^M{P^Prhc&`k0ZP!k%I&pvj$HfVw_T)hQK
zVBqq}ue0<3xNwr_wfWFp+R^Ls{Rg;Q1I<-?-r>0SvLY2UcdU8K6EyAgvLYPL`*81N
zg(sZ%;@-;&YdG)0y_XfbaNdo3FDvBXybJeURtQ3PcRWrszi{xp_p-9PyYxZpH_%Ga
z1E5N^wgJ*^Vf+CqHNf+r3gFqrA3wU8yL}I69`8K--}gvo?Tb#(E!3b6GH7?Y!AsC?
zAZWSydJRa3q4QX$YXf+R#|iK*Cs2R6({)Sdad7GUhJXE!@3%W+*L2oy=#FjZ{0M5|
z-1NNba{otXX-7pVs5nySF5S>wD*>w7FL%c7=w<oNc&OL;N9XCzYn`Dz-!FHbYJSJj
z{FvFRGjs-jXDeuIhN1ZdXwL8*2Pmx>bbf;Le?a?>Ufy*8&sV>^>j0jwet8#dz8aq1
z_`wNmL$|L4D2*Nb(H#mZc)=5_wOc@AinR^=9pa#A&`=R@ExD%K$dl1^L#OYSm!Lh9
zt+z|sz-LnBfjV)&LFtac6XvdaFJFd(mKc}r=)Bln+jH0LN9Tvme|P+UG`|pNekXA6
z<?BnZ`9*LG7&O+Q>H6g5C)D{xW65@m`NgMy{{DYik2sG2YpYp+4^)Q2=NB!pwaMS`
zg4FQ0fQEdbZFj8Y@e#1Pk_1p68@wPD+x+4!JoAhDkmeURVa_kkhn{}`bpuxaIDp;2
z-wHaJ12)f?4w{#QoC{}#&3`;lJ)q^lus)YD{4|9L6N=-L6H6G-#!n3Y2RFZw0UgF0
z%hBoj0W|pQD$-pl0Xkwa_D(kgXcd_23(MojT|vioGSpUfyME~A*#S!IB0JozeeV==
z_p)$V-r#Qs9Y53U`b6_Wr|T2QWMW?@s9bQp!+62E_C=@botndj|2t#vSl7O&H3FSS
z<NK!bQ#Z>_%MZ0oork(zKWJX_>gL%|Aposkx)>chn4P^Uzq?!4zNoqASHXUaS;5(_
z@+Ty3s|R=cJ_+m&y%W^!`XJziUlIdo#Y3krNAnSZ-qbIk<)|-TCNeNU*@ru8U%Uj3
zhj+$42nfiSpw^zzS^6aG#WZmShUOyzorl5eTR`JXFdW+XG$7zOYl2rt2B_r;zHj|F
z>j%${4A5vo=bPBW#U+VFC7JmQ#c8Pwo!>$`pMuV+;OGu!Y5tX5=G@KQda^{TTNGqK
z^P|6=V8)BIL<WZA45<tZ3_CzXZ|aZexY)y>`GJ6dj7RG28Cj_>4oQRE^!jcuOVGgw
zEWH~VygD+v8$e|1ffDcTGKto2r4HTFt+z`QyLrLpKm6MXX1rhno1X?UA4I&K7ZjB7
z3S?~Bi)^T|&mg@p!vn7y1A?+xvzT8vYJx3nJy5c^o4NHsiPA!_p%4Bp2GK7zC4k&q
z1TqsufRBL)2!I${^g;w`>|@wKLNBEKjvju01Q-}l!w(kH5IQL_MWMK)C^Ih|vL83J
z^J!pUcPK{}ms1y0%YhPZixVY=U}ovpg$ke$5oo<s!v8`9?79@tnFI$;9u5e|Fwktz
z$Vz!pBgMe*`i+wXQ^~2$3$LH1<rn29mME0u=PM-V=N9B-CMTAprdV+?z?>c0Ez028
zk<s}ytn*s%!DlRuzqCP{3+FkQbY#>Ub-QwOwt<+SW9^+;x?Kf2ojJN)MLL~%IxjeN
zg0;dT6EdE<@I+xpM)LuOfGmkD#*BW=_KX)h;~5wtq85VEP!?mri(MKF3=m73j|jY;
z3v&o8{0uL3J`E2u{1yy4Rx6gHi@V{cLWxkX;{_Yea=u=XNpAf64)%rwTyTE<r1e{=
zWb1$aDF;+RTf#jQ4})B3(Rl-u3&3oF*PlW=p9TkZ$8vQ0@^lF|{8A|Kb2dEC@JpkF
zy*u^~C^;|u;L(xcuoy%(|6nRn&tk}82+U%90XoU6`G`R4feL}<H$1^Ff;pk7rSzEL
zf!BvRc?&!{GG1SFhM4-}^$JM(0*~JqehY4X!vnIlmWO{IbMuc1{&s6-28RDCtt#5>
z84-FAY@`dJVSIYiF#9!-+yN7Vxg`-Qw*~6veR}N~NxH;g4yaz3S?Kg>sF~>Eg!mtj
z^!?Cl&(PLK4aX`pJ}&cUX+J0#Wiez4yqNvx|9@vtSt}178H5$gP<h4I_n<897lnWR
z|L>GhIrxC3bB2dWN5+c}preyPNwAZhe<~!AzuxcM>-r%miy<KR#YNCaB&ZMv4O!`e
z&VSs;(EP%q`G*02JLs;7|0=ChblWpJzr`bk7q+lyAs|1CfIK!ck;SNCzu^J!Em&C$
z-L4<97y`0*UO0iy*b8O^1=j>naCN(WU_AU1v>mPWTM6^`*bi{EA}`DS{r?Z=vb;<O
z4Gx1wa~Z%)@ch$D(C#B>T(G`${rCUBa~HEsRf(WYR0%IsT=b<b*dQ=h?4<&X!}xl3
zmouYHafzx;aEYQ#L5b)-K?Vi}n}8A?uu_JwmtX$=|G!U&fq}vK^_zXd3=9mfzk#&m
zlsMY>l-Sx7l^E{h2Wbf^(Fo`Td$HG<G2q49U;qDu63<~!9DDwU`@%cm_3C|mVB;?A
z10AjP`Wx6L#+S0-lZoK#XCdX$|KMKN56y2B48L{9a%3@f#@-1CelhVE$ha&9&=SKB
z0a<J>KKuk(rT{9jUN|~8|FGn52hHI8S82VY4@yS|4BIm_p;*wUJ>!T$dq$a2d&Wrv
zi1-5|2n|vbW{hC>AhAJm`0!jjYUyP^_^y{;*EfOSgaOWLso<ay=mf_DXa!1l=$qC{
zB~}d<di*Vm!DrTi?mT1YVzzND3Aaft2?iy%7Xkj=u5SWhnYY))K_cKq*AGxA3$%VK
zRqhVu>E;Dhzum5PJUf{>!ED0=urdPFKI#tT>68MO9Isyl^twLDVh8{yj4KdRKn?<p
zwLb9=0IkP%eF3*Du-C;w^7RDJp-7;X8^h~e0lls-VA`i5wDY%u4!C-K4N`w~F@rsA
zqflbo{KCM7vs^Qv*Y!;nV?gkWM3^4PU5YJM;N%F(jPftlpzJJ$EIIJem7vU{Q1bKj
zu3pzS;b0@d;V26;1C*XYTkN}i-+<;FL1%L`Sm>2V9CrnWBP8@dftMxq@+9cQ3fC8)
zQV;C+8{fep2=aUBwU<)=|NjTO5mYAbMM&|tfEMC+yS@S24zdq)3t59TR!hWRru+jN
z0}r8Mgh{2>UT*ydS`u2K#;_k$Y#eue06OdrZmT;&Eq@DWvm&ysp#A(HTe(3QG$8!t
z@4u)PaUpB=1s5sZt}g<*Yaf8TAO7+*Xl;+{n;@_^z=3!JwCWmG@JoXysX&)owt!CR
z0b7zK3qHAfKWOp6an}b*pm{6*|NsB*R|col2cX3WFYUnV=fLgv<~IV}u^bK7nk6Z{
zrC$O9!h&CzKwQ;&poF*E^$V<xSH=LATn?+4N*{v@D^Tii{)SeXEcyzHC56sIh6h?N
zRqPE22nv3Y_wE1x*PA+Tyj}-u_QBd`UCb>9N_0BE*(j9cfZJQ35gl;JXLz9Xc8N$A
zvyDQDhmB5&y^UrGcgum&Yla89WB;5y3~s-9fZK1NWdK<W-J+nDSr$W37Sjtk(5$^P
z<Lj%SV98?0Vt)O`xr_Pr0a)r>Kf$@dTA}3E>mFqHK-z9u48g})L75YjeU7t&427^j
zO+^sv#R9Mo1zHc3@M+#yY~a<A0d<q%$>XdbE=U!qeW+Pt(Q>IodLc-x`G<eKAgBS#
z>EI03^ZKsi>n{zzG)q{UPyBzqzgrfh%DEFvy?*1_db0lT>jx8%+}G{O(fmV&zkLw{
zxJ6lE3M!ig&Dt|~%-S=A&Dt}h%-S<FpjgqYJwxBDJp&{U!XP$G4w(kY;ldz2#9)wq
zWOd+TEA}vG`w7GA?>j*2Dqers0a|za`sEJLgz4)?J3wnTUf+iFg|LyOdD(gS<#`Ip
z`6;OinRyB+`SEF)`Bn<5DO{?0TE$!p5CMj?+!6**c?qlUn%{tLivXQ0_W{&xaRprq
zYi+^b3tFxV>3(!xXnw;3>S@jZ_i!3OWWWp1bz;p&1e$*+^0$NTL;SDOdc&+eBf-2q
z<E(jm#y9i!3`YwHA0##b%3fp9p3z{55C_R2<K>p^8HX*~GqynKOP1{!_buBq-r>=M
ztRKYwYuTRB{DueIlL`PQrhsndfQ$gM_6&Hp>qT@B0|U6D*nC8xo1yhUiF&s!s6X5M
z{BI|i@#1D6sACK2I_>}wu-YapEThm2+=sN_0e5v?Kj;<}@a)Lwc4l$v1hYC>raFKG
zL_ygC+Wi9;jora4t>2EbDnN$`j<bUFfl@!Di&!GR(7>}JqxC=u|9{a3U{+}dxKU<!
z06aYLU$h{$BLh5**3AntWyb`NJt7@mogy8rm+Isef(+~yX$4vD;j|dUgBbnN3{*Kd
z{$C8z1y<z&mIaT@fyP@zK@t!zfLNU@Q$a>Ut|o-YK}0}Tp@L?fKu2nUmf3kgRUT&r
zIUO_>64)L3CMYcUzi2{iM+UfSSRdJXphB$M^^H5@v2NE7))xFd3;+KA53UWtanS9+
z(R!dn0d-&@G5{3*|3L$aC;o%)tqTaqr~n21{}+2fi`9<^yncGzRRARPLMMQM0kpx6
z2Vx#Wrz;0E!d^P^GcfczL45u)0~8D;Y7C&V^S`JA%!T}|pl$lyvY-fa?gUdWL2FS#
zzHA2_wgg(^aGdo)EM&L`e9<$63yQs$LZHgUnPu?@Q0%aRTFtBlUXY=nm*4*W|9>3J
z1qIH_=U{GwC)A)Dpjr#Eo}u{-PZmS3>z^!!fa9*9bLtshgn_y`Z(<LF$B$x<vmS_r
z7>Zorg5ntD2;^i1iVBDrC?P;tpy&j#4r41mCWLlAZGIz?#r49OADpNWcC{Wj&dLx6
zv6p|!f#a+fpsBa>4R|~OGCl>WpMtx2LH=qzS>n|EhR5)B7Q>6Ld<+Z=FT{3aL<PLa
z^kZP?ywQ9_pgZ;t!gz$?$R@`g289OKi>-VN44sExpO_G8cmO=&BMS0b>!ng9VofOK
zgZc-g5#;~ZN6U*cOHviU<8usPGBY2vo+LP+JC>svoc9?^SYONnC9yX=kTE_`nH+qa
zbpky61)u|e$5{iQY2r9*095P+{~J)14yy1tpra=fx}8}-MXfharz~i6s+Ywf5Y!{%
z1&#I~f}nQ-Xc!MNn1}2^SdbrQ1qCq37spvaX${2c6g}YCk+B#Q$S=|$%|_6YHqheD
z<E#r}J2D!)+B1%`f->WQ7!V7T=oiF+SfIk>f)$7bDr^j_L97k29T^j>+B05sfi6J;
zn~g~5-A)RNK?%FLN`tW^ruhv|&<kd6aQL<!DDeT04r-!i;we6$2z=4&1J0hzFIvD1
z@QsMU!5KBy?HPeD3VawCqPiu5Up!|6oAvr;=Qn6S7HlNifTN=is9XRQ$>4JN<xEhE
zG$5nH8eAwZhMIwPKYDP8e}Do5DAG$(b5rw56jCcvlS@ldQ$Ry}ko*T4pXKQ;<!HTK
z7Y45<vRJbiGYV|mGhRsffF0L*yH2hb)V_l&;orv=;PyfrBJExJ6fTh^lEs)&2GV=a
z8>|<UrWsy*^k!fH<+t!K(DoTuk>GA$j_z0<%R{{;T)j3D^)8kli}|`3yM!$+l<GJ-
zTYfD1Wcj<88`QEZ<#V?DUG&xPWOV0=xcJz^;0(AE)O^)E`1-Zs$&Q1D2Rbgi{?z%+
zvX%#K$a7~$%il$xEI$?>>teJ~C}nrF{8;q$^-i$vUXKT_H-hhv3J(KqAPD8?t_3-X
zr`JTl@<+Y7<*73EUKS3^Lq)=tpNhFa<L*pOmY<5gfkzKJ4_baI{@Po{;OS@isf)3L
zt?1k9XQ1{)uMEHCsWKMJTSfAgH;cI^K=s`$`eym5_(<osV@wJlQ+~YO!T8JaW-*ty
zm*vea<_@N!Z;ZcQ-<dEWH!&wCKUqVyR8t`>F*B#M2;8bsE#_kA1+U+Sw#Py7752j3
z3mm+lj!p?@Z|V=w&}J-XWHSI97h%l@95NK_+cN@Qq<S%cmdak3*q-r1QUR>%^*K<1
zm|9enUj%A6K}LcZGIMfL(-U(PO7k*H6!J=QlTwQqAW|i%DGHhS3VHb@3LrO@r=~EJ
z=HZk|$t+4uE<x8&oLX3#npcvUn1e2poS3IxqL7rBoLyXyn4GGRmYI{vkXM?M17<1Y
zCFZ6wK-3hMB$j{$86a-VFHuO&&&x|qE=f&c$WKdCNX<)8$WK!!N=?o$N?|A|D$Pqy
zEXmBz0|zL`6L}ydU<)$yK%?G8sTrwx#hFPtsR}un#U%=vc?G2<4Ed!cAY;;sQd1Sc
zZel1(O-xZJ%}cE)09&SzoRL_Rm|T)t!~hzl&&f~EOa^%jq+1~^Gc_j#EMAsal$i)J
zyQH!p6)Xbs4A>$Ng8?oN3fas&uvbB{40-t=cf$MuSC*V#ng?=Ya()pgh#87YlZumz
zG7Cx+((;QGijxy_5{ndIsu?o#$`W%jQxp=5iV`aoic^z8ApzC{o>WkP`Z6iMG%uwX
zEDkXXRU8uXVE==|4Z?@iCtv~fywq}aaI7e#R%8~J6hk8`v7i7H9VPi-IflIaJl%r)
z;>?oFvQ((YV2KQr7_neaeSc8lRRl_X<r$edsS1fXAa_(Mq~vGjr7L*q`!itC1{VrR
z%`M0;N-U}bI{+NG3K}840WO|F_L|^%kDPqa+zL|vsrijaw<|}$i$pgD2GAD5OgC_T
zX+6L{<p8|yS1q<u0OiWWf`Y^%P`L_9mZ?^de50D8zyONd6tI%iijvf#yu=(tK4L)R
z18|}O&F<tRmZauXDySC25rcxKKLaR?LDG=?gq-6TGV`G3<|Gz_BR@B>#7Y6u>(MC9
z13N&Iivit*Fm0fq<6;2$0~AB~Y2W~Y2*3&fNZ|k}1wcJ2EFrCtlbMuel&p{zAD@<3
zl9&UJp5(-woYWK@g~X)%qLR$KbUjU2|0^J%I}|kE()=r#zwHfZHpz+67Br*J-+qn}
zbbS4P{ua>Tg54}r117X*1O#TBa6<0E%yea7SeP=Y9n!|;Z{5zwzyPj%kF$bAL9NY|
zAcDW;5d#CmLQpFKG`i!&$iNWTd9d*%sHt)ACrd9&XXl}Vk60KlfG7?KCBS&0m&Gw4
z;{u9}>L43I<}@GS=?-8C>ULlOnfMqq_xIANJp)qQf@ZZ|{BdDm0C&K^9RU8;xeN>p
z0Ram^O(c*O(A`BlK7+M@+E1+qO7eF60dc!|K`pD+lO>@$*qqxl0=h*(ZLZc!C3ZUm
zLHrC!XXG%L3bF>=Z9AgS44siY?h4+uc-)mk$GJV@<jX={28Ibc44m6DULV+D0isrR
ze%oOWVoccK?cAR65_E7Xw4<02f?~d@3pmZcbo>vx!5O3$w5hzei~(G+fP9)Io5h$>
z<lLU|;-@nM19(jcsQwEG%$NXD4jQNe@q+?07J~S;i2g_53wIX=hL@KA{{Kgqrk%x@
zaRFr7YG($97h*0944|A}l$u;xRGgWghnSD-d>Rn&4LtwM#NP_Ka|qPqg-t3h2E{F;
z<qApxFZBNW|G#*OR|lm3+sUG`xWKz3<2dUKXp8kY>k26A1v5x#i#Jqh^8p2r>IGoc
z9o~>m%W>8j-jM#li>tr?|6jZXEV~0PdjiTj37T)!a%<1X04)@I!3ny$^N0ZC&H(WE
z19bN9o3jiff9rhEdVpe<)^8;l-QEJNC;3~!=d%?{fZEN%K`(wefue$^^LRINK<9_%
z6HL&h58W)S9g{#Q#hE4G#Zj;#fz|`1cF+~%pss&6%hm?4l46#y7mMIZq+fh<1T`f=
zOW<~Z!U@`AJltEx5SYaf-Yp#TA_bxvbY-`*%yDP%jwHhaudf<@dkH!;6?wcVJPhF<
zCjM6N8bfcE){`av-NB$6Dq6wg;l&co)f&ttMIc`>H=kn)c%kUTz|d{7737KLBM|?E
zb$hb}zWCt?^07ecflg*{^S)FLat8eid$6<XLD>%3*~gt_K>d`UEQaua7pozfk2`CC
zlo%d(eG?iIAbSG3L4h>`q6BV!$+F|lGN4^NuTM@e{06>54%vUf0iX+pV|iK+lo&1q
zbsbs{l*)n&99YhKvCM&ip;H315F9*b{Qtu1`_T0o0Ri2v0s+A<SRg~9ulK=gCJ3V_
ziJ^$0Jc*&4p-4N4p-7tn(f|avRZ5FeLH#pm`1*1*+Rm8Np26VWkx^2=aL%OmjLt)r
zC+hinS%g50y6=lYV$E-O0$!*&fJ3nJc<X@@$8K4WHqhMnz0RME$2xCWelF(fVsh$W
zbOg0$8-IgM<N=Kgyf|wQ(FnE)mMnsTG88@AGqMU_*g>Y7UavXM3bKoVg@NHEXtxE@
z`k8J~P^Yc)=|WK7In44<a2-eIg-%fruQ!0vS`?(OHWK2dUK5FKSI`IuTbC<G2b<e5
zHc(j!>d^%RznBCHQyG;PRS>^09=7~kEYZyimJJBx-^U!_{9+x%xvx+5rv5NI09rE=
z7#I-r;y9>i0oe#zK`;e+(<EelJ!Jg^FGvy`gq8<uWfp?NCzPW@gc0m&hs7Xi(ByyT
zx1gYaz!#t^+q=PfKn7lbw8Y`&LE|S@pu3g>v~}N`qxEEocDFN+H8_xJjRL@RP`4<^
znodyl;mi}z9nBH^B3=v<+NC_5weVq^TR;B)4+70)ykG#GcX&kL_5S>V)I3mg5Yh}y
z%P%U?Q_V?%)u-WM!HsWpKx-FEk-G7hfBpa89may_or9L&xPXo@DA7huyf1A*g+VGP
zSAhsvtV4Vm5RhT&4PJla1nFbHz6D)>GXqrCcJBa@owA_HvGspRWw#$k>&a5ZZa0P2
z110=j42G9%s!F(RqDt61gB1)9yj}!4J%Qo%r*3DK)&nJ=A}-*?OgnHWSiAA?w=863
zVCW8G>7058<o7o`-E5t$H$YVfm<%}H`rzMx&|(gT7tO+8U7(F?;LTBPGKQBrodqB^
z3w1HrRPncXvNAB(MDe#cf=qRj=nPf>DHjCsss&pA^Us4!ns+)&bURCQwq5~^X1Q^I
z>gn?=3=F+fU;O+3KQO2}j3+4I#byz(eGPj-f()hB;E+V?q0hGgg=97;BtgW>ji4TS
z7$g9*UtEOL1Fs)<y9q!FwByd;9iGRXK@%<v&{7s!nt@zl&%(gK51O?1YyP3i-_Fbk
z9?<vjZO@pH5YV3Sz_&fa*$;xZ2DE294S=v=Vzi`j*$)Y{fPgH9pcetw;2;AJk=V8V
zFI5eOghk+sGHcMt2SdP%y^u8uFH)^R<0LN|Kw~ea;C9Wkznx&l3omQ%NQyI9MJMy?
z%e}pzC}@7e(|Nx0TQ_6#L6+VL|Ns5_*ZkqX;-SVz4Gj$qB`>}o0$t%-%69OTK=VN+
zhD*&inKgg*Ix+^l;DWiT)0u_8rJs?3At(sq>Y#uZcR{w)iGUh!|4U@Ly#>0bf>K56
zN!T2%hvK15uuwoiH#osGpJ0O3#J#N`hXuUofZ4#`0y>5a<WlB<7mGea2gf>{Mfh7j
z{Q3XC+fAnRKxtujok;6{{+4@x{{Qb{w@EDFuyN#Xz3}J%|9~u}EQW68fEU-TpaIF>
zvIC^guJwP3N;f!on&IK3WCcompi7f>fQXkSfByf626zTY;6)&`3VIL#n(YFaTMse!
zWirT6n6Fr-g4+x*&+LY%X+2QFbKDtpc?`o#ZP21tgmQ4j3RB(#S1t^#f}wTm%deo^
zW!L(jzg6nr|Np_k;A|22BHI$06dry4|NrF&Py&E>PZpdE9{=qGGhR4bg1lD<%3C1f
zW$5q!{{zD^tU!fR;fqpe#q>BJ0OFD?hJY6rETF+wYKJYiezX9Y2s%V>2Z(sd{QLj^
z07weW013QMfExM$k~{(e7J|JR^kTUs)L{OWd{CwaRk_U&v6rAD9F9AKierXwh*QD?
zvKU^NSTHbj9`9sPd9ezj&=ypTl{s{qwSFs6=?43;8SdFIu+zYu1rYHv<JbTHfq~!<
z%K!<y*!l^am|j1CrQPtL7mAh)44pPAFE}CIe(45U>9Io{G`YJM<h5=$7HHsPID3Nz
zg%}_%d71P3|Nkxqo3s)E8#hoagEy+beEIAD|KrY}yNMZI-u?CeKe*(6x%Joo|3LxW
zZXA%N)LDpKpu&pd*Z==79e(})U(Argkj797U#}P*7Tg<qqxnq$XybM*M;O@l;1^Ax
z5V?8Wbp@!M)>*oyGj;=LK8DEryyJ0Tdq(q3=H?>;nm3#OGk5xKfu37Y!n)&WAm}Kd
zJv*L*)YS5@may)431a?d0j*A-asU$C;9<Z{*CU|(d87F>Bdj&o>$)P~xa$ef81sv{
zpnDy_kprt1A<Z^82^s@{)Rge{0H}rQ$^q#UW?Tqr2QPPg@z@Ns6qg57vYafjMDDb_
z@GxUwc(It50p7U+B@<&a(5lERhAgocGt3znUND<8fR-tPhEf?{EHh((_Qi`*lT-6j
z7;;k6K%-S@458qzX6Mt^17X44vY>er#CSS?E9gMb*4z9Ymp}&y-L5NzG-?($#CBx#
zif~&82-LVh=8+6qzm>`c2WJEXw`XMKy>R;gPHsE$KnFuW7U!Zb;azMB%1s~zuWu{_
zHvvJ7Q}O0EJl<If|3yIq@*uz8u77KI;Pvia7H-Q!_2#gaq2`HhUItK4?4ai1PB5$W
zcHMPQ{}GG+*ZUTN)b{dlGu~JXVs(O>X0Mln8*i52d74_*#UMBI@-TzdGTwlw0V{7k
z$=?ZDLJsjM2dKvd+Nd26kP#l-p7D|wbnNu)x=gSqAOX~Q%<@FNEO>tb7WaV5Ly(7#
z)$4SA=rjd29yL#B9tLf72cN-@83ZqXfZ8-X+~EFo>uvr{P{jdue&;R5L;M|}<490E
z0%<^lm$*SY7QOKG#L)Jqt4MdPfCp%uhV24SH-Wzev|Fk(_5<VL<F0Q&(}|$)w2uA2
z-vZiE-zD5~sg%9D^bO<Z*RMe9*L~k;-r!$<knup{BhZNfy#<UV%)JFn)}=gkmd9P+
zfU-lkE03k?n;P!k)Gwgcc6{vN383_-1&Q8n*Eh{a1RTI84S>}>etk{zd+Yx?CdPl=
zt~?%{t~{2dJp8>q3=9nZ72=Rw1JZ8*(cgSTz`yc+m+<#PAp1*o!1M3T5BT}_H7o)3
zV&SU5egMTFsJw7}!+5w$_`oaBG!y^6L#T?on8ErFKt(%QRFDlRJ@gWMY3dsuSPJcS
z1!YjEOKYFK4E_KAf0r=$hRt3UiB8uK$6Y}KRt(@tZE$)(^yfoCClqwo@-+Wq;co#2
z7x*5=+YF!)Ee`$`P<g_?U!e2i!JqP=5~5V3*Y!gfXo*ljV9<+HAqIx-&<~x*x?|sT
z{%Ag;pn0S9QYlwAFKFhq^<)X7N9%!#%+>>SVx8a_LPU=8E`8q}`l0nwsY|ylSn>Z-
zEyLT^v2SX)5Yg29hQ}E^U4!KPH#IL`-vtG~HeB%aF%Vz(^*h7cmcMHcfYJ*{XBISq
zn~w-s{;qlZdU>}%w+9RO2wnbt0xv=P(Lh%ibshwtsDdkfhJr>_!GY5R9_3@?Zz%*b
zIQUyYmre5Tm*~8A@E<sETqQv3hQNUn7W~2kbPu2Jhvp*+ttUHOUzGB}e9GSfx*QI?
z9Ird{O)rbMwJT3OSGTJG;}2_Bo;ua;Ql8dtbt2udpw2ClFT6|NBf_Th1LuuWmF`%9
z*4w4B-M&1nC+i+Tb)bau>oeA&0{lJT;Tl&S%?p}8a7Bmjht`v&#V|*fMuIk5xe6HG
z*1TYOxJJ+Lw&mqo@UC!hq%b)JbcViwM*%3}9>0wH4?AxJ9RAP@0x?JP0w^91*F1f_
z6%<=Yu{RyW*M0pCv~eX=K=Z=O$p8QU8~%R@>N9mqbQiF^T=4JzfBt<EFF}WMbu)Ax
z?mYGqv>a^$Qvbd4X>h<oP`%L|%h7tE)TWEsxx@80c=?rlZyAG?>+cdpkfZqb9SDH9
zx(ieZw;U*a0v=211}(aBwqP!~_4@sbyq}=0d8Myk?}U%9gUyE4Po<zW@TL0R&A<Pb
z$imA5Z`739{QH0DOR&+<Rc0?FAf|qJeGI%lAS@U<f9K27{DY;$-J`^wf4@<$<NwwJ
zb;4M(OY651P_>j50&#xx5dp&kP@_Qs==S<K|30JF`@4-^?}nKl3z~21yy4w?pbpe$
zMRFi`V&A*<K>Z8&5Cr;o1GIdO<pJ$jDCMyHU9ST%O1ifUv>pS8X|N&|t;VtZUH|s=
z{t2^Yg1}CDP_fLwpyB`zU+C@#P!Z$G(;W&bv_KmTTm`zpJH(rRvD|#Y-@*ktzmECl
zJJ6=;Z%159*>0Y^`QYZsyR073?HQoM0>2$`<!=RDa(MR^=p@62C$8Z2g$;ikN(&c)
zrr`I3PC@E)ebagpF(qHZ+*`>M)b0C1^JAy)i|)`DL7)vxKR{ckTt5T^8{U4=3z;?V
zJZAa3Mx@*I&0>&Ipr%#l2hhB3=QmK&f|bUgbPg(Su7gfv1^Gmv(^mvEA_>}+#RJk6
z7a#j_7c1yAL+jEP^+urkXdm8x@a+g|sqD>@Zg+SCqT4e-GMqP0zJ3ZWukYTtd*k(b
z5cv|aJNfR7*9&ekzXToTULFscut1*R%TGxKFC}9@9uI`XCpaC0LbeukAQ5O>VIpV<
zhPn9#d-D(3^7{WOtsi3AGbYBiXJkO}GAIq>6GQKbZO=H1grCN?XMphE*!B$3xb_V7
zxb_VDIEWo?aqSraaqSsNAiA47Fk?;(@|;1U4!A|h2%eq@co76yotVWH1{xF%e_;eV
z)ETlx3|z%<g>@Hmgmp)=1c$#c`}P0->qlYT&X8t*_=}^Q3=FR?HoxHs>-Ode><;D#
zf*7L9!ocu)Cs-Ub$OTuQ`uG3;*9*IySvpGvI$e>6yR1P=eNYC#IzhcrEGj`Ksbq1y
z^aU-9dc%{&@iO}V|NmiG3=k)N{`UVr_`GbevtPf0Rzojde*qOi{H>tlDqhC^`~SZ@
zJ`ZO!gY!FNeu}C21xxb}?sB{TDy@6s+B15~7_#HrGo<3%Gd{#&VwL#z45Rq=4Cnav
z43N6I`1TA?{Ta~B6`0W!ha3+#wIK1(4PFEj_~ImFVBo(fXbB2v)Un%%qtlh6^G)na
z(0OSA0o_g<0o_h40WbE0qTz107Yiiufd^GJPkg_%_&{t&hUJA?woXwH3tU*f-rDWN
z(hcS_9)gI!eg+l-w@)v4fHl3oJOLFz)<b~?ycq&s*lWSM8E{3Yvof9ELZNdp;B9`T
z9Q>`ItJ1sOSekz%*N648IDpqrg2o6Ti+frRlo&Nv>oAsNcY_AnN`yeeTR*%@xSD@>
z*Oxc{a489DuGU~Iu>%hfmde7$$)E#dpfZO6UeJQdIODJvoLZm}1kk`fKV-+=>yw}a
z_#zQf*1X;VQpX+m;-Mx3186xCXva*+GVnOLpB4kd>%+}IQeL-1(@Q`=#({X)%#HtJ
zaJT0r=<-=;sSaB26#yPT1<x^-IKz643nzGhRxp+t9cKlxK%Ls-tTQ|y^F@ZYL7hz5
zDIOge&KV%-7e_$jn@0qie<#;H0auv_^TUGoC4=_u-3Fzf?q*QnwH_$p>Yfamt7^Se
z%HMq0z_0QdaxetEV9@{%NxVi|{sUTX1F9cEWmI=8M=y^-uZV=@tuk4!1}lY9X3y83
zk1;ZMb}@A@c3$xGvb<6L1vH3$jE&*-cSwC4YIqV7wF02c2(cWNA8WP1jR8@JykiHG
zvy<h=T2YW-=|{_twcMKLIzNJzxp<cT1Q`ZTI$(yXvYwVJgQ~Wk5%Tyo_`Vhq(0ZU+
zp6*zI<E|4x^;)NE4`|h;F=)J26jV{PUMdmqb!M_W#NWGw5wxi8`wh!O{CzVR!N-*K
zv9K~QG}lV7@V9(sVPLq+2(RAwTepD(Zrpru+!dsl;kfG*Py}_mPU-d)VZ6b3qVuQb
z!PZN?g@5?_N+1_KcBF#nOZ**SEDQ|Izcu*#96^lN8lABVc7vwFn%{`@x~{kjJ}309
zj7o3@LlS6EWwknJ&Kb1H@rVNdzR(rT7L0enJC^xdUNAE-+?@;RxC8`bu>`&Npbm~R
zh%~4M`3Tz9euICX>x$+de*7)hKz)ZFdHgM)-CDiAD>_dTKi=8-qxmMY=1t8LoyW9G
zr&Lt<RfvJ>KTrz?(X92WeBT{ArS*2HQE%*uhT0VjCGuU&peh)%b@vhy--vc|x9^PR
zH#~@u(Owq@ZD@-SG)uA$qTavaEXYbk55m9l{p(%FT|qOq3@_C|2baFPc@osb=#9}{
z-SEV<Gj>VC9|!){e$c@mp-YZ4X&V?YbjL1n?u=d19lNBtR)mqiFNKMLp`n_Ifxkr_
zq|CPm)QM+iVqj=~&D8C?<hbh`&~#pxGh>J2zm@|fT+SdSbIXC!Z+;bmAorjKf$J1d
z=q~`(-=?5+)*HJ5bch}3u)F4ejQsuJYXe;uv>qt2>2_Vx{DP^|b%}NC68@%rpt;-H
zCC$f~I%}7}!xz?EFI~`lL;!R_UbpXp)|2&5tYeoHm4G}@7ttL$r`uJ;sWWtrrR$tJ
zaE{_{0kzI?1pdnw(0~DC{caY_eAhYMp&|~TO%SegEJNqiJ$}8t`3(>MK4(TmJiPP<
z6*M4G<^X4SgBRqISK#H;U=5g3ponRH!{Y}^ivhi{tKd3YztxFBB#<?=eye{43RXS1
zx|e4_!@aH(S`U<3qsp{?s{onM8@mE*c=KT<h$e8U4f9*`5dpV~_ph&mv_icLN>p3B
zUBQX&0BkrOHPO8Utug=|ND<o8={l$N5`PCT$Q7ZWgab_z&4-y9sz3?nGiU*F8AG?P
zh^6lw{@xJKz_aTdXNOMLIStkfrO#hp`uqQXgS7#FtL5MS|6le&#(9HZXsdv>CxcQ+
z^AR4+3l0I@u1hl5z*&ETGB`iK^!xk&|H2D}9U0vWY27RV%@0^qL6cT5CBa9*flke4
zc)9QQ|No4aUoHk;qw@0Fpa1_sDXs;yXR+}2an}i;;^}4W@BjaAo&>eg8=kmA#sV6?
zICT0>IqnKtBfwC~e)q;pbC3}?UmAeaGQQ;a{r|uB%Wt5uTUQZKCU|-9*Z=>j%6eL9
z;Q2yOxeDqp!1@oNp#DN|<C`_0d;~i5kEc6Spt)9rg}>!EsE@#4_`mU2I3oi?9e3}p
z761PK-vv5L4XI?U2B`v-tgWCR1UVbrJ!m~pA`2?KL1R#NSsT*ZGa%)G$DNa{2kL*`
zy#Xpdw?=>t+>=oW$|y^3&j@>wuf)L6Jr!&YXbhzFQi(z5$1cH!Uk3awpBX@NVV6J$
zCW6bwUwWm?j;|kegJZ7sWT^ne{BBY3AjqW>MhD9qbw&+)K~@-)D0?H7e~7}!yAo+2
zz{B!J=?yo{!`|pcgm>lpZm{oK50r*=%YrSqU24O>kIfCV6u`e?H)=8k6>%$|?Fmpb
z1CqY^_pyOeb?brB*RRijG$8fdK~0n_-PiAqgRKF@(Mx5}5I`A&BiQ>TKOncpuy&-k
zXE@wBS@HYsjhDOr{r^7!o;(`9I3RR`69(vr!@D<M=7KKAV|Zx-QVm`28VqU?g@QN0
z_=<qC3FwBc)=PCIorgQGfufy(q1#nrzc}c^-9w$OFAn~a?+kqdF5kLc-*o%F2=EUK
z3x44s4H~op4f-`7Fz9Gs;L(xM?fN1Jv^`8!7MvA2FM>?uJXm^S2gtDQPyx*!olL!8
zrO^J{;pQI<<?XGPDr7--=Yi4>!*K=>wPTw{N5(N$5NYuG63CqIx0|mq9A^Yce!mAk
z-e|&v)Vvh%0z~+vIBEkG)cy$uE$EBofHqY5TR~^qLyx0y0k5-0n-9M!2O7yv1<f>p
z2<S?7XnY0)WCUb^=fjO|f*XhM`S1=<Lk-@_Rqu8bIqnD=Z)a#dP|9g|;PrNJ_<>hh
z90yhGM+9Ck>HO9k`ywDHBO<FkBltyuJg8^^%`rtr1O>lvlm~}l>w%Jkpj7li5yF4H
zIVdP2F$>m4U3~-WjF+Ixg(rafFQECBy)XX$|KIqA2b8NzdAfZ$IzI<C{$pTbV8~*u
zW8Dp61c$%qhnU!UphO<DN+pXiIQ)gS90LP*ss}V$f1rdz^Iq$>`hA9%dQ-o2UI4Fs
zhPG7U^Bs`>FlbGm6HBj*!@<Way_>;dQ76#)zl0AoxB@<S1bm(cDCO-2$%emBlmq#X
zCyS{Qw4XWr#Yb7_{1sSSz|!?Y?cr`ek=BzXd%D9|S}&D=#=9WxVd!{tzzbeE2GEXg
zuv__CK}V|u1a!Mez-DAYQ(iBALenB>F-&5&n?~z_687V6;N?Nxp>GTiblP>=f>xD)
zik3jo)TS#3cw-dW<o+QUP_oDeB?}M%-oyh-4f!uru7jiD^<(G=@#|^bvY>g?@NPer
z@Zi7~B?w3Gw}9gR1(O_TUK=!X20D8uD4^T*LqPZo8&Gu(?x9FPO#-JFXnuO>{r~@e
z$TVbl0N8V9WI%x^0AA^H4m`0N{9=U+G*EcL1A<??0@Yj~6HC{1`$<4Oe%uYb;HmXw
z$%5uLJmD{ng0$4JL@b;#sXZeqApFG<By*($K@-sdF9IN9$KAlot-xn$O@KP`<t9k+
zGU2~!M^Q({1aSKuRF3^u?Lp($pz$Z5@u#5iThRCoX#5H^{sI(!Xy?-%paLWI5Dx>W
z0|M^fax6SDsXYU92x%!lsKX8FX!SzoQ~nEdi-IM+SbCjU7K50rCre+xz5z}35dEF8
ze-?h|ZqI1`@xMf~^+4z0Qt{&~Dh+w<8856C{rL|oGD_4K{)@~7DfBM=_WEu&@0afO
z48sGhCreK60*UsPF*tPlG_kavEdBm^2e^Ddn15hWdq(SlQZ=yi7lU|kE7ibOiomQq
zu@G+M1SI<&bc;gmyHs)xVP8xWOY7~@@2_`*f@4DHPLn0=8I3<dWarajvF<<?(2@!c
z#wG@a7N~g9t62EvDe(C<h6lPrIU0WbFOhD3#17uR+5C&Cgs=G*Q$7C<P#?YZQmGUu
zU^~Boxy`?rOFr!20F`>bSYAJQVJ^kMfC$fU$Z0MdhPQjm7`nteZgyU9Z+=kUe3<?6
z1I}YDmnvR^)~*?J{(zP~kb`8P@da+bfKP+LqrdsLe7QjLBZrntC7jJC{&(C28H{Ww
z%J_F!FlfKCuRvEUN9VbQ-vN;P+Ige-0e|xk9{%=YkbSim3PAg63kusaSPI)SoC@1B
zK<x6u_KaRM98}nzk%}ZA5YX%TB_Qwxc>j6mm(GKr;_Fh0NXL!l2L(0)C6e8xJdB@O
zZdWpO3xN*P5de)&cb<rgJ<Ry&^@}vn)yR#HKrPDVgG{fFflT`l5cuK~xT*W0^Wf_Z
z{QCu8KZdr41e*`Cyk6KX*nE)V^{mcsy^hSy5B_uu^m?$oUi@O61Oo%KVnc){sBOXk
zS|ajdz9a)f)Zz;s9T}j=gr(1bfQ15+L20u@ddCBBA}tZxv7itv!nqJC!Vb~_8Q;!$
zGO0b|MY1HQpaLzTRE4T3y#tZYVt5fI$-vOf3)0$rgs1gn$;;OVUVzpW9%luKf%5O`
z^$`Dn$6r8oO)L-S2A)#bF+HHh12brnvlDa-k;rjp@DcoJjot!3*gKs$I)iy$fYvg1
z^MajzvQ(v8^bg4GC%c(CokcpON<dwwg&?m6ytp9&cIxXT-MnCdfUN(4FD^@foCwk#
z5%u~I@^~<4u~WAzPZk4cooK*|DA2z7H?fD2-5bjRYG}Y63kqS07mZ>J3{jB*!7q0F
z|NsB>6BPA4pgqaXEXToK0;K`au}U0JUp06OFu{Dr^CAlr?=Wu}pm__~N~rICfzS5h
zdHoC=pU7VPAdck4ZE*Jx@*imbq{NHOqF~>EcTOCK1_7i!0^VN;@jrC``-^R$9ug=l
zLH%yfuG(&1P;7Jyf<|~Oqj>mRKov;0lSr?ZNb7+Tmd-=3Uv~2{Om5ErE0O%>Bmf#h
zbmFm;DA9%~>pWEY9F{UcoqVW&xgh?1aY&Sbq1#CWG!VzwdAZw(C*Z|>$eKQ=rc(CK
z8!tikhkzDmfFu6JIq(8ap4ZPTqj*ZEcRPu6UhZUkeI7Z`c8h^Vb6<k4$^}&;p`A}-
zU$TQ%-oV2zFc37HD$shVlm(P2z-_s!ph4^-0?=XJa1rG4FdzV2zIOZafQneD&I`>C
z3Yvc?l&CcSP^jl`Jy62h{6nBr+VB9_v>yf_e!%N@-Hsfu-%jXuWO@Dk#WfKI#C|bo
z`>d9ux16(~p0lci3(+KNe#6rn`yuRws3-$Nua5y^L{xC#3(#t#xXy#U<y;ZHu5SVY
zUrhh?|9|Jfh$zS4z!%<-MNypxA^z(UYxosZV%YF2poANAaF$Q$5=Xb!FMC~I1b|lC
zWifOyHb1BbFSQAHF(0P)^&P_lU5qcwz~O{mo`a?@JvcyfdI22Z%Fps*Ig8~*$pg^+
zz@YM3qC1u&IIY`RAno7_W~k{0LC4!40~M{HY5W5m0bytgK<l|c=iD4o04>UH#-ifi
zPw2&G-M(MCLqC8fprCexir~1|!=U~II6Nh~L34rvoi{*>e!W?m4|8aqXg<Ia@S+>i
zfa^Te3z_l?@3<WNLhaxG|B+GP8L-))V`{@#IzKcY<Iud&e1HYC*e493=}pJwfUxl3
z7ohQp$hd&u7g-25edrDa^|oN)0qa3QVgkKA?kdn-!O~m6(OLTew7d|sq7A%W;)4fh
zJ}&k{uZVQ76Qkvi;-uz7Or4=`EPwGggF0TIQmotO9!p?%$UTmrfd8SOB@v*mJZQU1
zKsU?0fNqz293WLla-bG%x5zw@Oef2{&X9W?-LY?AHWbYRA01!X-29)hEXTiF%<y*e
zf5vW>eVuHbBKyihdtIcNI$d8_{wNLynau(sP%Wsl3+xt|7X&gM#o{_ObW30Kx=1rx
z{wP}A{GYLW3M_<R&SpW?eH)^i1>$6u-WX}d*ZV<Ax_Rb-yw8H{eG5?60PIC%^)JQ2
zX}F95QGbHdhYV;Xcr6FCqteX>J+}sSUmfJ&NYKePpj(u?-N5^aKqEt)pEM73f|7-`
z>l^TP@=n(`0WZuzlVq+>BBBfrbh$nW4*>5!X+9#5*6lCQ>H47a1Uwsnmlc-OS-U<d
zVQKIeVCi-J&>j0Apx2E9l=`}2p9H^<{0=@x?1drZn3(1t%;lcFJfM@M8Nk`?@&gah
zijoT@!ri_v9IeGWeP0xFbVAqbbbja-W4zE?zyjF=)e5duU0=WgdIIQ-l7sx)LZ2Lb
z#N2s8mHo&6|C|@nI^6}p`vhS9Q&5jQlmj$-S}Ks%?IaKka(~C6#z&w<kwKl;p~3dz
z9cU3dAE<c*TKG{?*7*$_R3)+9p&Z|w1XxN;QNl|dRJen}i|zOS|DDGpqCmA#=MQN4
zun=1MxV~upUuxbR#{oJw22|Jxv|cLV?sj77ENS9!=yYO%_^~^JrMCdoRPKR!4phE_
z!qfLfK<DpXH;%@~Am;`I2ERD=6%wTPzJPmypdb}N3({8C53j+Y^9|baMa{1&;5H3t
z{{Z&z0H1pF;vT5*fQ84Cl2TZB#9#}L7bTGJcoFd88%SR)2PjCO!4VwrVj}d+D%U5i
z|4S{p!#FxY>xjDDcsgC*lz>*zXkM^(eN!X_2@Y74m-ZrRkIoOTzkmbe33`BR{qp~R
zZ|Iw#fX*LT49ySt170i!2aQPZi(QcEPEZ($p@k7R*}ZNCrJ*m-Py)B_gPY&jfX=*h
z5&%!S@weDAF)%=x7eQ-?9<cDYfHwYvDq05~=#?_v0W6@r5qiTi^bUVBXtNWj{Hwju
z?RtmtM|bFhi!Z>*<w|!=6G!Kd?s68*58x8~<d6UVK_?;{5$HSyD#Ux;IRb(^KR1G7
zyZIS^@Qd&t|NnzqZs$IOz1e(3ASfV<A?yX{kXvZI5z136(G9xs`bM|w4NKQMMXiW%
z>js@W&Unf)l&9!Tcjy(T&d@urZ$e7(?obX;0x-M;$q}8Q7g{fsx^=s982;~e;OTTd
z(_O$~`Keg8m&dN#^~}YW-60(u-A)|cQ9PEeJjH^Y=PbV$JvO}5dExaWaQlw&hNUY{
z(TCnj#@A0lNi2vbAfPk!1Sn&4yIu%*(eoXgVvoCmuBTw=bUo7TdIDrc=>h&`&|pJ%
z=!ND-{GdDFAk}nt?166A6O5mGLtk8c-CZ+-BM1~c-L6Lhz{c(U1PYKR-~j1%-2+;M
zz3S8d|DZcCjtE$W@)YxT-m@${P_*ME=tM72eE2@;`~eOM{-(R2L-jgi54^tH{D7&%
z6%?5fJl(>eahU`Epyz7^bi49^H*|q^=<bK?9so5W7lLZg!z|!t=56pPfAH`O=&t1n
z?=IpA3wqJ_=l}ngpu_&aM>rIKCVX5uy1_M^wE%xp6sRd3%F*Q{@Nyn#dH`}h0=Rz)
z8n>$Dc=7ks|NqeDB7dtmBLl-i22i6^0#uZM!`s@LzxfGhRw!De^>*n;NOQbfs`Yk>
zH(0*gS)`LGARs*Wg%V_3rdt$bLgz71Z>B`3o7<A3h^IF|q}xHH^+4$-!vmepBCX##
zrAm1aMwRY@I-xYH^;?M(XkylxrIV@KnWNK*#qbiW)$`3+fTiP5sSdO?1g!!<&5`L}
zq3M_JBRKX!V|yRKz3c8eP|M^EkLC|>R@etwBhq>3^)5uCcqe#Xo#%Bk*c;K1IOseE
z8p#5!oqZV(swlxdr{G{v&uJz%xP^QP)I0;72MnzrLpi#g1Uio$e8*jC|IJB&iND1Y
zG+G%2iSbrx5XYCJ^TWXh+}(i!jgS7bGca%->b%eyC~)uvx8;WtPKa1%pn&0l)^Gf+
zb3xO<2l!hc7qxJFa{!r{2a4keo^ET<#shm0$Mr?)ff7#30v7((k03szCgE@S$^g3Q
z=E;FF(B)m=^U^@KPy~S5ccA0eT%QDlzX0t|2A!i9`T}&Eiz7>S6bs`G%Mbjm%NZF!
z-M=S+pw>gci?VP3|3j9;g6<!v0F^_n|4Smf<5>K=Lmza9?BeJQy#r1Ut+z|mx_v>d
zojU>DF7sFd0{@4CvQO)QI=)^Jd61BIr^_^s*VlSk<hy<EwEpk(Y2zr}0W!vkr8|s;
z@la<NXzeTLFt`_d9H2$!9FXkR?a0%~)EUUr;3>cetHJ`nN5{E7fjIO0*Z==tpYQhN
zIPUsHp{zY4t=kdYpl&(9-vU~peBAYkLs@&q%Qv9OM`-?c<p}H+Za&Ns)EoLDDBy(-
zsIUYr0Bk)_`uOF1PzD0|#*rrg)CCB9!2{Vf_Oca}Ki}~5%4`J<0|mcmVF&fGL3=!1
zUzBJ!zu`IV02(-A2!4@;ka<(W4iyGBOkT?U`~TnYz)Nw^wyJ<`=H|mJ5P!5oS~85s
zz}f%F%Ojx4JYSB0fNn>gfWQ|S5b4fiFIWHl|Nq5KcF?L8=&%R4elh$Oy!(Jh2k7vu
z?plG)+Be<qES;_&ERPlYHU0)klxTs=9GC5&h~j{^dn<)IZ*+%>X#VJyVLHwNnr&lv
zeGb%HkJ-TC2AU~}ebamZ)HmpKePdnvp=gugNyAHq->iK<6e~jQ2VJ`zvl-MBQRsHr
z&e7>Iox{lur1lxeoN$&-4;EP5fs}%kbaObuk3<8zKe+MD9MD$x51<i^10}GngrH?y
zy{<csyY5I#OiT<o?z#s=A9p<fp^iYP6A<bQgt`Esu7Idxt~VH7yaq=HPa3F@Wd_x?
zZ+Hy9^~QE&iM%+#%D~Xu8}a}D|HUAin~w;9x&aIforjJ)@PGz?k2`=zVU9bnICQmV
z9CzRVQJv>OMu84S@9hOGP(9WPGQq&|XBl5_8H1-=7h?yrv*pk7uRB2JyBuR?(EJeI
z8@eMPD>3NBKgc0BhL<cq6-$HjPv-^A4-GY<9R?*{8y%fGd{}Q-ekuaZMfbYy0J%Tl
zg%!jD-J&2jg2r^eOlr^Qb>dk315EQY9}-v$8hq#k7sM|?HO<Dv*IS_R1L}P<f~L0^
z9WTBr{RmzW-W$3j7(An!r5F_O;uRYMgW;t}sQQK)(H)8WQxAZ&xQOm>YW^i(_Bx=~
zbq8b!T^Hg3aCp7U{Qv(yc)VAn*Y!uYuRs8(BzF}7rRl(+fES=6V!K2Cbi4ilb@b8N
zLpt4{3kg8y=YU4OActZ?Tg}i@>7iYX&SRaScRGD<blz{hR9b0yqs+haMCYyV-;TRp
z07X$}=#5U-E8VUVtp`e^yF+huhCYC5?Dm!Dc74zt`lOSwGmxdb^h&quh0f9!pymCc
zZ@OJyG#}9cR~fAbO1Z(=)9}*wZ=J_Fe{_f5`Tnib^+LDnjql$e=D(h28GENpx!YCZ
zxa$>=wNTqz50otH^nK7-`{Xs$fBbu0?{pq+{w!bWYF&G$oYk`QMv+dp>kZ8h(zSP>
zS6_p#ua$rs!QTR|almeWy#;E)>${NpADoD~L+@zb=(ySGdZzQk<wsq<XD+|sJk)XX
z^0Us+J6*nKI)8P$-njg#<L2e(5V_+WH#>iPFTK-wz0>u|_h*+=Z*(5C{8esa`K!bj
z><4hrfhxSGpaReJhUN*$>z%(qnje9zxdAf2GxWjb_uyNytX*%Eo#=MGqWMue^o~cT
z>y_8Lz+>+q0uuk-t|Fk}LtlZw?ogf}P~+?c=nP;;yh93JwEpF2{11=#|F62D5Ouz6
z4H|y~8h;5Ie-9e}2^#+g8vh6yUj${o?7yl28lMM^FM-DAK;yqbGye`6Uj<D)0~-Gi
zntB#A`73Dh3TW~V(BxmB@lDXw8=&!R(D)W;{10g6>7dDLpz&{@sXv3pcR^GC1x?-o
zO<o3#AA-hDK;vhi@l(+FIcWR{G=2aYKL&*l9`9b>`sY8i{08%ngZQA*ZNdc5l+1<h
zcJS>WAoc?&8&nC5;*l2upt(F4hWQ?J;xCBpFaeTIKx|xCLtjT<he;vaG04x;&s|R;
zBqLR!EHS4vRl(KQ(@!Bcu~H!kbYvd%bTlhnCLJaPh@7ngla8kaSi5JMjzVHuNotWo
zW?nJqG`GzBJROA+RI_sO^RtUV+7pwLQwvJKXSfyQq$U=pDkSIUf)7*7FD+4E0-FfZ
z>*=PDl#`#Ft&mu(kegVPotmOho>`KSnFlr*d_pnkT)O<ylFYnRkijlKj=s)DIuH}`
zOEOZ6$}@{o6^cs>3UVqTj!vy8$jMC3EXk?VW75&r1P2Q&yb>m2hL;ADf|izoKj?_N
zlA=n5l6(aw9Y-@ACWV5;qQu-(ke8w7c`@mD8tE`8WF)32FzGNQ<|)8V{Q?Ik6T~X8
zeaHkT?vVMQgLjbm6YSeF7TC9EY_V_8IBVaY@xs16<DY$dhJ-_VhOR?<hK)mehL1yg
zM!Z9NMxjG{MxR4_#ww`T9*6dfYYy!h?;P4Q7#!O(gdE#5v>n?sEFIf3f*jj33LM)r
z+8o<6<~g=!Y;$bSIOf=%aow>!<E3MJ#y`jQ3<Ib3i~=XjFhO>ofM<J#uxERQsAqeI
zglBt(lxKT}oG0W|oe7K#pa~EL14AQY6H_yD3rj~QXBSsDWc^@v4}Lp9<s4YuD1i|I
z;0_@JD4ZE<ICxlDIv5!kL>L$tKxYmd$ZyZ^WME)$<l|^za^htHZTbM+dcUBcJp;4^
z8z%1B%+kipl&mMf)T9Tp0Him9fq?<E20<E0zo(u6gA4-$LkR-|!-2x~j4C9#Qayn}
zkY<oPXf3)!QF}%^lDuOxGgG{t0N7ny7#J8X6t!naA<6qe%?9-ZJ`}ZQXd%ftHZzCm
z2{3@|25n_lC~nW_LX~HVg_;c-tlChFX*S4DphF}s6t`!{BI$M26JP*^iw7eE!-wMb
z4A4enSh#@PT&pMGp~nymvL5Vq&=}`~lJ*SHaq4h&dMseK^?=MMY0m&<b(mbRo`9bo
z3nWg~FfuSGl(uJhA=wY=lOJJZU??bU&sc~g?$*rO#?sCV@)p=^(9PPQu_Mr7T`;r3
z@fM^fpu@nxz`?}8aG<O`0~Gc!d8irTdIF((9Nu~Y8G0O`C}aTHX~D$6kWk*9QObx&
zA5is79(n>`H8D&K3=b;WGeDby(adD>fvRZ$jnY)LXMlz>(A1=W0u5x>5+())f$H`Q
zNld%IYCyX`PB1Yr7}T_9)G%SXCsR)#3F>qPklHUy3=A9U+B5u+%yR;TmRmC`lb@ad
zQ#C|2C|(sn1!_ZkMmrXBx9ABlA7#`7`_+S)fnh>Zd&W+rH~^dJ+{~J*C%}L$pMk<1
zl&%C?QRCc8kHuY&!$ptBQBS~8Ps9&Ig7Ot8Z+I{;FgUcfXMk1(qlFiKJKEbb6p`HK
zp~vC~w!=kFz(r5Q1H+DX>~?_MF^Y#*2+S(e1n*ncNMHfix1cr!2%99ZFjyq8FxVup
zFyv;Xq^GAA>!sx6FbIe+FxVx4hKF-gE8I%+AZOSPuP_-YzL`@1ibsfVQ%YGFmK3ru
zY(WzHQ_8}yr;vrgqY$A^ql|?ipooQ`07)#OjD?}1h=pMWl2}F=3&VmUgg%HZ#FHzE
zSQxexu`nDcVqrLgWX_Eu7KRr^EDS%2SQuD}Sr~YVSr{aWSr}A`Sr~MRSr|-;Sr}}J
zSr|NuSr|f!Sr}r9Sr{^kSr`h6Sr{scSr{6MSr~eXSs11ivoOplW?@)S%)+ptn1x|S
zF$=?yVitxA#VibWidh(56tggVC}v^!Q_RA^QNqF?Qo_QZP{P8XQ^LYvQNqID0@|7g
z^-e$u3qwo^3qwu`3qwT-3qwZ<3&VmE7KRNaEDSr4)LkfHVYpMm!tezoR?5P_Q_8|1
zQOd%gQp&<$Qi=#G7bNy*IDi5<9@OnCE@l9=<KjVkO!7d>{<Rt6Gm8^TN-7x`7-AUW
zOHy+S@)C0y7*rVI<5O~S^7B$FGC}Q4eTMk>+@$#A(xUj>#0mz6$qezSMMYpE816B|
zXXYm{FgyU6l?*->oFRfSz5vQ(_{Ru7G?{^&DX}C!lYv2)31X-iQ(AIPesL<ub&^bJ
zX*s3E;Bgg2rZn&gkxEQy1x1;8C7>%#RhZHWN=u3v)S1#i$7M5Ufap{P22BtRR?Wbm
z!<1H>nwrg^$COr*nv=s|z?23$ZW?TU1XE6aIs*ekB#1UNV2Ead983zbJCP|jH8;5c
z6a);(Aa-#o$jc0AOa<T*qd{sinF>lvk{K9^n2J(!^UJ_yRx%Z5rh^W`W?*2bVJe2Z
zwS}p;qzGzW2Z)`M3OYxMp$o*$OU^A|U|^UGVwdEX<}ffY%w{UdEda#`$RY;EloZF3
z{9H!{21f?xqSVBaRNvB))CxxihA9kgnR!sjgADGeB_MTviMgqcpe-(*pyRVa-SyNI
z&%ER!@a+f;3<gX=so*|7*boMWxlF-1si_4FSDC^SGfUj^i-I%r(sNS%ld@8iL7tw%
zkXzvlIuAdYfnf`X4R(P`erZxps&8URQDy}Lg8*Z0g?nm=FUYxq5VjwPEdyZ(WHK-?
z$U@mg3=9mWjJXw_#m=DnSW_z)7#OU;e2AGKecBAUsTHn8MZU%9Ar&A;fXYuKoLgL$
zTvP(CIvGR?SOyJ7c9%v03j;pv?Hc6g>SJsK@dX2eO#usDoRgW9TLD!ZP{6_f;-|s{
zK!G-j2S*49Ffb%AFfdpe^cu`DIBjs%;D>>Tp_ZYkVU%I2VZY%t!<~lnj20WMFj{Lg
z)uhg}!&KEw+iZ&27PGr%9p*dDKbmj1IAn3k;*!NJi)716%iEUKR;AWnHla3eZMT71
zl?n_Dpc4|C4RlOhOoL22OedJmFkNAK*7T|AcT-g}T{8!>0J9>qDzhfDX=Zljx#nxl
zFPU$)IB0R+;+X}vrLv`&rITfbWr1adWryWj%iWgeEZ<xHwUn?jvf{87vsSUrwXU}A
zw0>+YY$I)>Y@=^uZR29Q#P*AAf?cQGCOZ}TXnO_&$aqGN;S-zhw#s&2?BwmeKyGtj
z0QUz44O9)j80i`p880;6ZT!|a%d*b$veh>03pSf<=h-nZFa$u<F&Weu>@z4dyk{71
zlx*T<(QL8LqQ!EW<s!>HmTxSrtUv(?>d$o>&oq8u{La|hB;Mq+sk}Ku0RsbQ{=L(D
zxj91v1Gt}NXlr46#qN<E!vs)$#=!8<;EOqjMYu(_#V(6;7A<x&K=v+RU`SzLU`R12
zGB{^&&A`?$&~T#RB0~{lC1X?LFyj>Ca^tnevZi6C(@d|LDw;hs6EdG^wZ!VP)o-g5
z>mutd)`zTJZGvsmY}#$6+N`iSX|vPzovoH#qMe|<q`jiOE+`B(FfiCKFfiOUdTA78
zoNAnFTxxvF<b}z16L!-O(?ruU(>Bvbrn}AFm?v1d*zB~sW4Fuxiv4~2?;yPgKy@wy
zgOkA-!&`<=4L=wr8kHH%F<N3Y-T0>Q6XQR|PfS!y-<f_h{b$N%#%C5|kp)jHb1hd}
zZnivZdD>FkO4-WL%GS!&s@bZ>`j>T%?QUDp01pF$1p@<vt8t8Rwebw&1I9Ovbxci6
zSDIci{b(v_W^6XudZ+bM>z~&Cwr#cxY_HnBvo*B)V9)S?fx(4=fkD;atAUK+D#QDR
z+9ts!6HIoPyfoo7RWpq-Ei&C=%4=q1mTT5w#%eBZZf)LRKFNHwxxJl_-AudXpm6^H
z8E?_DY`5HMdDqg#3UufyBLnE5ymG^nMn8<yjl+yvjkg#xnYfr7HvMI~-9pte#<I<F
zt>pzvX)6z_a;t~d&Ncxy1vd3IeKvD!mfCE!*>7{%=BCYT+r_r)Y<Jk6vAtwF&2Em}
zBD)oK>+H7M9k4rUciQfP-8H*=cCYMy+i}@T*qhng*oWE|+gI98vfp68&HlXoTl>$T
za2H@?0Ig}`G0-wFFz_@;H^?<;GgxA<%HXiULxblAe+{G!6%EY|Lk*)1R~T+JoMZIK
z=(iEOv9xi%akX)W@f_pR#?Otv7>k>jo1~iLnN*l;GTC9mW-4GRWvXK8ZyIAd(R8Ni
zCevM}|IAp-dCjHGcbT6sKWBc+{E7K{b9oC@3q1=z3noi3OBqWg%jK4LEWcT5TZLN{
zSXElBwc2c@VjXB5ZvDpkleN5!s?B7ZnKp}U*4S*fIc#&<hR;^QR^8Uuw$Qf0w!?OU
z?R?wiwp(oX*<P@{X8YLot?g%920Jc00Xqf-Mus&E3=CflEsZ>kl8qXS<c(E~HH>wP
z4UA2UEsSl99gJO!J&b*f1B@S=aF|+~W|~eg-EMl%l+(<_EZwZbY_{1GGf8t7^L+DJ
z=10vxm`huPTU1!=v$$^|WNBrYY1wCa#PYeNh?S*PidDbW603(+Y}V%1an`NYYpkzZ
zi`zKcblL2*d1AwFYh{~iJHd9h?Q>fZJ0H73yG3><?LOFv+dJ9k+Rw0mXwP84$PmK7
zz#wMeXpmzt-QbYHTLTHhaKjeEm4<r^MU8`vqm7e|ON^(RxtYJS5VbV7s<w)-bG8q%
z&#-T{pJ+eVeu@1G`!)6(?6=tOu)kpc+Wv<<g99T2XpJ$Gft^8yL4m<cgQEs#44xVY
z8cG-%8pax?7}gptHe73X&M?iW*Jz5-4x@KQUyTBdqm5II3yt3ye>N61$u}uC=`opV
zGTUT}$z7AbCdQ_LrtPLnP1l)jHa%o|*YvCDZ&NWdMKcGpK(k3^d(4iQ{WMcHH!zPh
zZ#JJ`zSI1%`3G}J3wsMsi!6%=7Mzv>mL8UcmKBz-Ex%j-v1GI2w^Fv!v+}e`x9YT-
zXf@AjiB*vGQ)>|$B^yf{N1J4uY@2$Ub{i&JE?ZGsO<NON8{1^tY}+#1F59WLb8Ri{
zt3hcwfRUktfq{Y7K;2-r!D54T28RsJ8eBDCFyt^4HdHq>GPE*0ZTiMk#mv<#*R0WO
zv)M(n&t~H0C(S>Yt6PLybXcsnxM0C<sc9K+`PWjzs>W)$)gvn|>+{whtYvLnZPIPJ
zZPwacw0UDAZYyRNZFkr1yIr<@v3;HWB>TDcOYJY%->`oSD$Nog`J2gr%b?hx#o(KP
zyrH|Hzu|PlqlV86zZ-HGi5X2anq#!eXor!DakTMN<88*0CSE3OCTmT8nMj*@nr4~)
zwve&(wJf!qZn@j?t|g<DjFr392P*~ZFza^fmDcyI1#HZ1B5e9?ByC-6du+GcezKLa
zyKl!}uWKJ_Uv59!ey{yQ`#+#CDPUv(ji0L<EH>C;AZ@5_=wTRaSZBD$@UG!I!~cf7
zM!iNej20VhF$ys*HC}3b%-Gl@%4C|!UK1`;Mbk*rD$_>uC<`v@i`Mt8i)@zIu-Nw7
z&b3`{&(OdKstOtM4QdSp44n*{4JR5Z8GSS3GIueTuwb%0WVy-eimixUz1>c`H2drJ
z3=<f^_0KJXM#EW#?+r7J&KQBxa=vk?afk7A;{(RmjK3TIH&!x@G<{(vZ~oje&1$k$
zv`w$gR-3yv{<ht=>uhh@{<oF1Q@3-r^R^4OTWEL6?vmX-I}Lj?dq4Xy`y_jY1&j=!
zrOpQoE*Wqb${TtZMj7@PE;syZs9+RsblT{$5u-7uv7WIRI1jZN_ZqJ=-eY{n_=)ic
zV>1&Ma2nrha@ypk$#awMCaPwxX2E8yX6ww3m|ZgCGmkS*Gw(H@V}9IR#v;k$fW-%k
z2+K6fQp;M)PRrAlH!WGL1gwIr;;nM6TCJv9t+Lr>v(M&|4Zp3Pt(9$%ZME%5+q<^n
zb~<($b~Sc~?9SS$*&EtB+k4wb+t0LLZhy-Dnmxk?Mut5M3=9eex(3z;;ReYD`9|xF
zwi_Kc;xJY>Ha7M)E;pWUeB9X3B*~=HWP`~qlMg2UOr%VeOpQz{Oc$E2G~H?X-;~!3
z)Dp5aOE#}G?>66K{>GfiLcl`WVwuHJ3wFyA%Non&mg_AqTHdt$ZOLq<WTj>0VHIXo
zW>sg^Wp%;oo)xRLpmn%)s&%b(tMx?dRW=7~&e>eEv9$HKjkRsCeQ*2SR>n@<F5GUZ
z-D^8f`%3!@_RsC#+cO+s1T{Yx7!3prq72#%`VD3qJT!P`@W(*JP|48B*vZ(-IL>&!
z@jl~I#*d7-O(IQlO_rPNG5KM_V;W={Yr4bqxan2XyQVKq_04R}63hzBwwWCU=g;3}
zES3(I9+okdb1nB+p0IpiImPOqwW`fTn>jX1Y_8dSv|+OqvyHahWqZ-~zg@ijRQq%G
zckCH1FoNrRF#{C?BZGW{^9D?Y9)_mI+9ow7n@w0u*O;C+wKF%ixMCq<DP*<6>VlPm
zb)k)p9m4}g@SIYc(F~&nMk|a8%v#J&o82_iGPgFbF>f)yVeW5n!{U#Hfn|tgz2ySS
zqn2+h*{v+BURv>4n_4?sPq*G-{m%NEb)Ze8O^eM0n@2Wmwnesew##fc+Wxf_v@^2H
zwX3jeuzO|q!;arx*8Z6NU3-QPki5ZVU|~>gP-%SFIKZUDWTnYjlV>LKrZ%R9rgKcU
zneH_^XBK6iYu;u)-Ta{WEprA7Sqn!CPm4H<CW|8$FD$q$?JYYjH{1NR>9SpC`^c8f
z&d|=)uGVgz-C?^|b_@(mpr$8-jG?ZfpWz0>gND}(wT%3X@{HyfeKpE3*=AyInru45
zbdTv(Q$90ovjnqlv!!M%77`Zy7OO1&S}0mNTUJ<}u$*SQ#CDDC4qFBRCU9Fk->}*6
zl;I6SO(QF#I-@qD>qh3r=ZxPNtC_f%WSVrDY%;lE^3_Dl^t|aeQ)x4Gvs$xRW>?Ja
zn3<Y8nrE1on4dPkZyszBZ_!~f&EmKPpQXN~vt@{7lI0gmCM#YmX{#Gn->fvPy{y06
zTG$=6dugX??`fZAKimGK{abqm1txG@Nf;OzC>vH8wi)&r&NAF&c*Bsvh{H(4NX^L2
zDBS3{(KDm3M#jeB#+AnFjPIK%n6Ea!X#Ue&)56W7)MApwL5o)wyp~B;SytPvPFp>+
zO0iyP{m(kdro(21%{3c$yAC@+dsF*T`<eFJ>|fh67%(w_*0)L;*cxOQG#Sh@d}=6d
zG}TDO*uyx>c)sy1V-wRlvuS4Y%$AvLGuvl&%<P=mcQaOVFY^TRe)GlVpUjyoTr9FJ
z>Mb@}+^`V0^tFt)EVOL1Tw;0J^19_?%eR)|R%%wYR;^Yit*%&^Sle5dSWmJ(VSU3|
z#zx0xrp;%YM7w=<Pwb@amF>0d&F$^&o9w&nC)v-lUuM6~{=5BuP?_(*1a8x@8weXn
z8z>v(7?c>)7_=Dl7|bxZW^m8onE{`nl%bMgkYSWzlHm-)1%@jOuN(d~G%~U?@-u2M
z+G%vq=%SH>@dD#7#x5q4OrDu&nHrhenU<N>nRc1ZGUYVOG}~*&3vS6>FgLT9Yq8W~
zt;JT0y%t9;WGq!Ibu3LRZ7kPVKC!g1a<THU3bBf@O0n8+b=>N_)pe`;R^ryB)@{~(
z))%c`T7R@w1lRDnHmx?jHpgtv*%;Vb*rwR#*p}GV*iN!tXuHxj$*#_Bg55GZ4*N3u
zI{OLsyFq>oU;>x*%mzLNaR#LZEd~<|_8QzaU^3)2lrRi5j5l0v_{Q+NA(N4{k*Co#
zqiaTwjJ_E$8FLv68Jijh8lN=2Wz1;8X(DJ6Y_i(qxXERc+a`}q6ifq6lfbRjL#FIz
zg=UrD7zCC6Mdq8#cbOkDKV{Bs5oVENF~wqm#R`ju7V*~I)|0J|T3@ujY5mih*GAID
z*v8!^*yfbYO&eWXC);wndb@7B<#s#mj@mic``Cxr7una@x7jl!FoD~o+|ZbrVlc;G
ziNP0xKL#v@Jcc5MiH3U&1&t()6pb{E42>*}W*IFqT4l7!XqVArBTHj1<9WvGjpa<W
zOmj`^Ouft&o9#6_YIenp%RJY-!MwwKy7^giH;ZtK5{rozCoH~N=vanZ9=H5tDQabB
zwZvwt%>|oJHuARSwt03N?9SR<wfk?!Z7*tXZ|`oOXrFH1Za>+6nf+G#gW&eedwYfg
zCI%mH-?80bp}_@%I|fdMfrd4PQw*0Ft}|R|q;6ts;$w2b<b}xs(=DcVO(&W!Gv8pb
z+v1efH7jd7U%ME)O1n<GiFSWM@z%h^0GfB?F_1H`HgGraHxM@TF?2R6HtIE6ZnWO$
zgwbuI=SJ<utBq4kx=a?Extq6`PqdtAEn|DycA}lL{XzSO_Af!^Oke`{%^VFp4FU~L
z8E_gZ8@d_#87?qfZ@Asi*l4-YOS3GCUW?5Z-z|bI(=Df4{<74!O0b$}b;RnA)e`#;
zpw`g>CU6@@$DqYvmcdqoF9v@N5)AVUyAAgm1{sB!@R`jq`(<uz5p5A|b;pXynqdPI
zc;4N~w8iwXskm9W*%Gt!W+LVc7ns0(a%YQZ3x)?w;5qU$#z`i<CdW<Qo4hcWwy?7(
zx42}<@PP?Dzdy}jveg!=+g6;`^Q_NXv)OdmY_MUsb+pX{^;H>|!TQUMFI#-KkhXNT
zJZ$;dGRo?g)l?e>0f=0%$rBTP)6EvymXj@?TPj+4T7eo3%%CcmLD<09G~Be>bg`+r
zS+v<)^W)~%%sDIsEsQO^EdnhvED9~U!1?r{1-qq~WvpeT<z~whmX|HxSu$GjSxH%G
zSZ%V}VfD&N!CJ*y!&=AMz}m#x!rI2#!P>>z!`jC>z&gY_!aBw}!8*k{!#c;hz`De`
z!n($~!Meq|!@9?Mg7p;Z8P;>G7g#T`USYk)dV}>A>mAm6tPfZpu|8pa#`=Qw73&+;
zcdQ>+Ke2vc{l@x(^%v_O)_<%SY*=hKY<O%0Y(#7%Y-DT{Y*cJCY;<f4Y)ot{Y;0^C
zY+P(SY<z42Y(i`zY+`H@Y*K78Y;tT0Y)Wh@Y-(&8Y+7tOY<g@a*i5mRVKc{Ofz1+|
z6*g;ZHrQ;j*<rKC=77x+n-ex?Y%bVbvAJP$$L4{}6Pp({Z)`r;e6jgq^T&q4mc`cH
zw$FBo?F`#FwhL^R*sic$W4pn2i|r2EJ+=pIkJz5DJ!5;p_KNKd+dH-oY@gV^uzh3u
z!S;*o58FSs40bGb9Ckc*0(K&H5_U3n3U(@X8g@E%26iTP7Irpv4t6ef9(F!<0d^sF
zWp>x>@7O=Ee`5c_{*C<y`!DuCKxxr{nSlqie!+mnfWv^tK)^u6K*B)AK*2!8K*K=C
zz`(%7z{0@Bz`?-9z{9}DAiyBRAi^NVAi*HTAj2TXpunKSpu(WWpuwQUpu?cYV1mIE
zgBb>M3>FwHF<4=+#$bcN7K0rIdkhX37#Z3b7MWC-w3wVXxoPs)<d+GjsjR7<sk5n<
zX_0A#X^m-vX^UxxX^-gy(<!DiOy`&`FkNE0!gP)42GcF3J52YO9xy#(dcyRK=>^j(
zrZ-IQm_9IlV*0}Ljp+x|FQz|C|ClnEv6yj~EjQb0w%hEA*$uNhW)IAsn7uH2WA?%9
zi`fseKV}T(Ean{MJmv!CBIXk2GUf{AD&`vII_3uECgv9AHs%iIF6JKQKIQ@DA?6Y0
zG3F`eS?0y&73OW`Q_bg@?=?Sfe$)Jc`7`sk=6}uEEd(tjER-xPESxPoEFvu8Ez&G<
zEGjMPELtokS<JCmY_ZN_tHoK1%N9>8xGcpi<t!~My)C0Gi!IwMr(4dm+-7;y@|xvC
z%MX_SEzPVPth}s3tm3RPtct7_S*^3$ZFSx1jTNIcx3#FXrM0uQuXVU}k@YO=)z;gr
z4_KeFzGD5`n!|?AM#4tUM#V<Y#=^$Q#>XbmCfz36rqHI;rrM_7rq!m?rXM_ZG1q2=
z%{rT1Hn(ja+pyW{*_zn~*)FhMYkS!Cj_pg^4EsX+I#Ai>z|3I7$iSdyVrpV#;$aeD
z5@%9m(rmKaWR1x#lZz(TO`e*3H(@d5G8HzJGF3L!GBq}}G_^DJF%36OH7zu)Fl{vL
zFr92V({!Hc7Sn^K=S&})em3PdlQDBQ3p0y1OEoJtt1xRYYcrc*HqUIa**dc=X8X*}
zm|ZfvWA@U_*Sx@7$il#)%3^}W0gICs7cJ~8oh&^qV=YT9r&zAA+-`Z&^0DPB%O94E
zR-9JKR*qI#R_#_jR#UAOSS_>KZS~ITo7EqyMC&4O9lzQ7wDm>n>(&=+ZrFUWaklla
z^|1}G4Y7@|jj>IzO|i|e&9N=8EwQbzt+8#eZL#gJ?XjIeWG-Z|Q?b*vyKd)WA8KD{
zzr_ABDC`258GINS7`P3z4NMFI4C)Np3>F#eGmtP;G_*BrGh{LHG)gtfHL5UbH=1v>
z)#$a+2P1A{IpZYbJmV7M3C2^67a6ZNK5cx(_?ht!V<8hM6BQE+6E~9plQ5H5lVp=D
zlOmHUlX{aLles3VO*WdGFnMh9+eF4x2OI~frq@ly&CJYf&63Ts%qq>A%x0Mxn0uMW
znm3wHGv8tEZc%5k!Q!UH8w*KG3(FA8WtQhHnXI&}Dy{mg&R9uVTUjr#K5Bi{TEIrb
zCeP*+TKU9b%VR5GD`G2QD`Tr*t75BRt7B_mYhr6*Yh&wR>w*!sxwb{NEw)?j_ShY;
zJ7Raj?u^|9yDN4#?C#h-uzO<n!tSfxFFRg)8GCnoU;8lo1p5N}3j1dJZu`sjU+sT`
z!ZLxG0kj5gvB5Ees|L3Wo*29{_-nvyXk=((XlZoY=$TQw@mk}D#=nfaOct6vH_<Y6
zH_bGyH=Sj=)AYRQL-2@@vYDA#nAvf&Yi2LaY|NjSe=`@iNU~_RSZi_E;;zLv3qDJG
z%iET0R@zpERy9`BtmauAwz_Tg&`Qi&$=coexizbelTD`0bepv{TfrkQuC@zoAK8Ag
zWwH~pQ?fI%bFvGvOR{UXTVl7~?v&jfyU%w2>^SYU>@DnV?fvbO?eoARo-^!M*>A9C
zC}3s)%`u)bxL|O_;D*5+g9ipr3|<(#G5BEc#o&j*9|H!%&4$Me&l}z_d}#Q^kkv@W
z$iS%4sM~0s(R!o(MiItI#x=&1j29Vmn@F12m?W6wm`pWUVRGE$h}}iIk9NZLHumoJ
zdm-(U24-;oXraMO!wrTrjW!v@8ecd5Zv4-<+N9Z}+hm%_920g^AxkAoBTFaCAj>4n
zBFiSrNtTN&H(4ICykz;v@{=W#m5`N^m64T`RghJZRgqPb)g-G$R-3F2SzWSvWcA64
z$y&%-$=b-;$vVh7$-2n8$$FCYBI`}ohpfL?g9qX#Ff)MWV`L0`3?CRiF??b8#_)sT
z7sDThe+(InSd2J~c#H&$M2sYiWQ-JyRE#u?bc_s)OpGjyY>XU?T#P)7e2fB&LX0Ae
zVvG`u8jM<uI*fXZCKydInqhRr2(&1Z8QcbwF)%TRF{m(@VX(vCioq8H5kmt*AHx#E
w35FXCPZ+*2<T0`_N-%0MT48j?=!cPtv5#?!@fPD3#u6rjW7=xe71Rj<0B^>6RsaA1

literal 0
HcmV?d00001

diff --git a/tags/v_3.062/matlab/mode_check.m b/tags/v_3.062/matlab/mode_check.m
new file mode 100644
index 0000000000..342bced812
--- /dev/null
+++ b/tags/v_3.062/matlab/mode_check.m
@@ -0,0 +1,193 @@
+function mode_check(x,fval,hessian,gend,data,lb,ub)
+global bayestopt_ estim_params_ fname_ options_ dsge_prior_weight
+
+TeX = options_.TeX;
+[s_min,k] = min(diag(hessian))
+  
+disp('\nMODE CHECK\n')
+disp(sprintf('Fval obtained by fmincon: %f', fval))
+disp(bayestopt_.name)
+cname = bayestopt_.name{k};
+disp(sprintf('Most negative variance %f for parameter %d (%s = %f)',s_min,k,cname,x(k)))
+
+[nbplt,nr,nc,lr,lc,nstar] = pltorg(length(x));
+
+if TeX
+  fidTeX = fopen([fname_ '_CheckPlots.TeX'],'w');
+  fprintf(fidTeX,'%% TeX eps-loader file generated by mode_check.m (Dynare).\n');
+  fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+  fprintf(fidTeX,' \n');
+end
+
+
+if nbplt == 1
+  if TeX
+    NAMES = [];
+    TeXNAMES = [];
+  end    
+  hh = figure('Name','Check plots');
+  for k=1:length(x)
+    subplot(nr,nc,k)
+    [name,texname] = get_the_name(k,TeX);
+    if TeX
+      NAMES = strvcat(NAMES,name);
+      TeXNAMES = strvcat(TeXNAMES,texname);
+    end    
+    xx = x;
+    l1 = max(lb(k),0.8*x(k)); % kk -> k
+    l2 = min(ub(k),1.2*x(k)); % kk -> k
+    z = [l1:(l2-l1)/20:l2];
+    y = zeros(length(z),1);
+    for i=1:length(z)
+      xx(k) = z(i); % kk -> k
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	y(i) = DsgeLikelihood(xx,gend,data);
+      else
+	y(i) = DsgeVarLikelihood(xx,gend);
+      end    
+    end
+    plot(z,y)
+    hold on
+    yl=get(gca,'ylim');
+    plot([x(k) x(k)],yl,'c','LineWidth', 1);% kk -> k
+    title(name,'interpreter','none');
+    hold off
+    drawnow
+  end
+  eval(['print -depsc2 ' fname_ '_CheckPlots' int2str(1)]);
+  eval(['print -dpdf ' fname_ '_CheckPlots' int2str(1)]);
+  saveas(hh,[fname_ '_CheckPlots' int2str(1) '.fig']);
+  if options_.nograph, close(hh), end  
+  % TeX eps loader file
+  if TeX
+    fprintf(fidTeX,'\\begin{figure}[H]\n');
+    for jj = 1:length(x)
+      fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+    end    
+    fprintf(fidTeX,'\\centering \n');
+    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_CheckPlots%s}\n',fname_,int2str(1));
+    fprintf(fidTeX,'\\caption{Priors.}');
+    fprintf(fidTeX,'\\label{Fig:CheckPlots:%s}\n',int2str(1));
+    fprintf(fidTeX,'\\end{figure}\n');
+    fprintf(fidTeX,'\n');
+    fprintf(fidTeX,'%% End of TeX file.\n');
+    fclose(fidTeX);
+  end    
+else
+  for plt = 1:nbplt-1
+    if TeX
+      NAMES = [];
+      TeXNAMES = [];
+    end    
+    hh = figure('Name','Check plots');
+    for k=1:nstar
+      subplot(nr,nc,k)
+      kk = (plt-1)*nstar+k;
+      [name,texname] = get_the_name(kk,TeX);
+      if TeX
+	NAMES = strvcat(NAMES,name);
+	TeXNAMES = strvcat(TeXNAMES,texname);
+      end    
+      xx = x;
+      l1 = max(lb(kk),0.8*x(kk));
+      l2 = min(ub(kk),1.2*x(kk));
+      z = [l1:(l2-l1)/20:l2];
+      y = zeros(length(z),1);
+      for i=1:length(z)
+	xx(kk) = z(i);
+	if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	  y(i) = DsgeLikelihood(xx,gend,data);
+	else
+	  y(i) = DsgeVarLikelihood(xx,gend);
+	end
+      end
+      plot(z,y);
+      hold on
+      yl=get(gca,'ylim');
+      plot( [x(kk) x(kk)], yl, 'c', 'LineWidth', 1)
+      title(name,'interpreter','none')
+      hold off
+      drawnow
+    end    
+    eval(['print -depsc2 ' fname_ '_CheckPlots' int2str(plt)]);
+    eval(['print -dpdf ' fname_ '_CheckPlots' int2str(plt)]);
+    saveas(hh,[fname_ '_CheckPlots' int2str(plt) '.fig']);
+    if options_.nograph, close(hh), end
+    if TeX
+      % TeX eps loader file    
+      fprintf(fidTeX,'\\begin{figure}[H]\n');
+      for jj = 1:nstar
+	fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+      end    
+      fprintf(fidTeX,'\\centering \n');
+      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_CheckPlots%s}\n',fname_,int2str(plt));
+      fprintf(fidTeX,'\\caption{Check plots.}');
+      fprintf(fidTeX,'\\label{Fig:CheckPlots:%s}\n',int2str(plt));
+      fprintf(fidTeX,'\\end{figure}\n');
+      fprintf(fidTeX,' \n');
+    end
+  end
+  hh = figure('Name','Check plots');
+  k = 1;
+  if TeX
+    NAMES = [];
+    TeXNAMES = [];
+  end
+  while (nbplt-1)*nstar+k <= length(x)
+    kk = (nbplt-1)*nstar+k;
+    [name,texname] = get_the_name(kk,TeX);
+    if TeX
+      NAMES = strvcat(NAMES,name);
+      TeXNAMES = strvcat(TeXNAMES,texname);
+    end    
+    if lr ~= 0
+      subplot(lr,lc,k)
+    else
+      subplot(nr,nc,k)
+    end    
+    xx = x;
+    l1 = max(lb(kk),0.8*x(kk));
+    l2 = min(ub(kk),1.2*x(kk));
+    z = [l1:(l2-l1)/20:l2];
+    y = zeros(length(z),1);
+    for i=1:length(z)
+      xx(kk) = z(i);
+      if isempty(strmatch('dsge_prior_weight',estim_params_.param_names)) & isempty(dsge_prior_weight)
+	y(i) = DsgeLikelihood(xx,gend,data);
+      else
+	y(i) = DsgeVarLikelihood(xx,gend);
+      end
+    end
+    plot(z,y)
+    hold on
+    yl=get(gca,'ylim');
+    plot( [x(kk) x(kk)], yl, 'c', 'LineWidth', 1)
+    title(name,'interpreter','none')
+    hold off
+    k = k + 1;
+    drawnow
+  end
+  eval(['print -depsc2 ' fname_ '_CheckPlots' int2str(nbplt)]);
+  eval(['print -dpdf ' fname_ '_CheckPlots' int2str(nbplt)]);
+  saveas(hh,[fname_ '_CheckPlots' int2str(nbplt) '.fig']);
+  if options_.nograph, close(hh), end
+  if TeX
+    fprintf(fidTeX,'\\begin{figure}[H]\n');
+    for jj = 1:lr*lc
+      fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+    end    
+    fprintf(fidTeX,'\\centering \n');
+    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_CheckPlots%s}\n',fname_,int2str(nbplt));
+    fprintf(fidTeX,'\\caption{Check plots.}');
+    fprintf(fidTeX,'\\label{Fig:CheckPlots:%s}\n',int2str(nbplt));
+    fprintf(fidTeX,'\\end{figure}\n');
+    fprintf(fidTeX,' \n');
+    fprintf(fidTeX,'%% End of TeX file.\n');
+    fclose(fidTeX);
+  end
+end
+
+% SA 07-31-2004     * New default : no more than nine plots per figure.
+%                   * Figures are automatically saved in eps, pdf and fig formats.
+%                   * Figures are automatically closed (this should be an option).
+%                   * Creation of a TeX-loader file for the postcript file. 
diff --git a/tags/v_3.062/matlab/model_comparison.m b/tags/v_3.062/matlab/model_comparison.m
new file mode 100644
index 0000000000..7319cea376
--- /dev/null
+++ b/tags/v_3.062/matlab/model_comparison.m
@@ -0,0 +1,92 @@
+function PosteriorOddsTable = model_comparison(ModelNames,ModelPriors)
+% 05-30-2005
+%
+% type is a string  = Laplace
+%                   = ModifiedHarmonicMean
+% ModelPriors is a m*1 column vector
+% ModelNames is m*1 cell array
+
+global oo_ options_ fname_
+
+tmp_oo = oo_;
+if isfield(options_,'model_comparison_approximation')
+  type = options_.model_comparison_approximation;
+else
+  type = '';
+end
+
+if strcmp(type,'Laplace')
+  type = 'LaplaceApproximation';
+end
+
+NumberOfModels = size(ModelNames,1);
+MarginalLogDensity = zeros(NumberOfModels,1);
+if isempty(ModelPriors)
+  ModelPriors = ones(NumberOfModels,1);
+end
+
+% Get the estimates of the (logged) marginal densities
+
+init_loop = 1;
+if isempty(type)
+  if strcmp(ModelNames{1},fname_)
+    oo_ = tmp_oo;
+  else
+    load([ModelNames{1} '_results.mat' ],'oo_');
+  end
+  try
+    type = 'LaplaceApproximation';
+    eval(['MarginalLogDensity(1) =' ...
+	  ' oo_.MarginalDensity.LaplaceApproximation;']);
+  catch
+    try
+      type = 'ModifiedHarmonicMean';
+      eval(['MarginalLogDensity(1) = oo_.MarginalDensity.ModifiedHarmonicMean;']); 
+    catch
+      disp(['CompareModels :: I cant''t find any marginal density approximation associated to model ' ModelNames{1}])
+      return
+    end
+  end
+  init_loop = 2;
+end
+for i = init_loop:NumberOfModels
+  if strcmp(ModelNames{i},fname_)
+    oo_ = tmp_oo;
+  else
+    load([ModelNames{i} '_results.mat' ],'oo_');
+  end
+  try
+    eval(['MarginalLogDensity(i) = oo_.MarginalDensity.' type ';']) 
+  catch
+    if strcmpi(type,'LaplaceApproximation')
+      disp(['CompareModels :: I cant''t find the Laplace approximation associated to model ' ModelNames{i}])
+      return
+    elseif strcmpi(type,'ModifiedHarmonicMean')
+      disp(['CompareModels :: I cant''t find the modified harmonic mean estimate associated to model ' ModelNames{i}])
+      return
+    end
+  end
+end
+
+%MarginalDensity = exp(MarginalLogDensity);
+LogConstantOfIntegration  = sum(log(ModelPriors)+MarginalLogDensity);
+PosteriorProbabilities = log(ModelPriors) + MarginalLogDensity - ...
+    LogConstantOfIntegration;
+
+PosteriorOddsTable = exp(repmat(PosteriorProbabilities,1,NumberOfModels)- ...
+			 repmat(PosteriorProbabilities',NumberOfModels,1));
+
+% Now I display the posterior probabilities:
+if NumberOfModels == 2
+    disp(' ')
+    disp(['Posterior odd (' ModelNames{1} '/' ModelNames{2} ') =  ' num2str(PosteriorOddsTable(1,2))])
+    disp(' ')
+else
+    disp(' ')
+    disp(' Posterior probabilities:')
+    for i=1:NumberOfModels
+            disp([ 'Model ' int2str(i) ' (' ModelNames{i} ') = ' num2str(PosteriorProbabilities(i))])
+    end
+    disp(' ')
+end
+oo_ = tmp_oo;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/mr_hessian.m b/tags/v_3.062/matlab/mr_hessian.m
new file mode 100644
index 0000000000..5925d3446d
--- /dev/null
+++ b/tags/v_3.062/matlab/mr_hessian.m
@@ -0,0 +1,131 @@
+% Copyright (C) 2001 Michel Juillard
+%
+% computes second order partial derivatives
+% uses Abramowitz and Stegun (1965) formulas 25.3.24 and 25.3.27 p. 884
+%
+% Adapted by M. Ratto from original M. Juillard routine
+%
+function [hessian_mat, gg] = mr_hessian(func,x,hflag,varargin)
+global gstep_
+persistent h1
+
+func = str2func(func);
+f0=feval(func,x,varargin{:});
+n=size(x,1);
+%h1=max(abs(x),gstep_*ones(n,1))*eps^(1/3);
+%h1=max(abs(x),sqrt(gstep_)*ones(n,1))*eps^(1/6);
+if isempty(h1),
+    h1=max(abs(x),sqrt(gstep_)*ones(n,1))*eps^(1/4);
+end
+htol = 1.e-4;
+xh1=x;
+f1=zeros(size(f0,1),n);
+f_1=f1;
+
+for i=1:n,
+    xh1(i)=x(i)+h1(i);
+    fx=feval(func,xh1,varargin{:});
+    if abs(fx-f0)<htol | abs(fx-f0)>(5*htol),
+        c=mr_nlincon(xh1,varargin{:});
+        ic=0;
+        while c
+            h1(i)=h1(i)*0.9;
+            xh1(i)=x(i)+h1(i);
+            c=mr_nlincon(xh1,varargin{:});        
+            ic=1;
+        end   
+        if ic,
+            fx=feval(func,xh1,varargin{:});
+        end
+
+        icount = 0;
+        while abs(fx-f0)<htol & icount< 10,
+            icount=icount+1;
+            h1(i)=min(0.3*abs(x(i)), 1.e-3/(abs(fx-f0)/h1(i)));
+            xh1(i)=x(i)+h1(i);
+            c=mr_nlincon(xh1,varargin{:});
+            while c
+                h1(i)=h1(i)*0.9;
+                xh1(i)=x(i)+h1(i);
+                c=mr_nlincon(xh1,varargin{:});        
+            end        
+            fx=feval(func,xh1,varargin{:});
+        end
+        while abs(fx-f0)>(5*htol),
+            h1(i)=h1(i)*0.5;    
+            xh1(i)=x(i)+h1(i);
+            fx=feval(func,xh1,varargin{:});
+        end
+    end
+    f1(:,i)=fx;
+    xh1(i)=x(i)-h1(i);
+    c=mr_nlincon(xh1,varargin{:});
+    ic=0;
+    while c
+        h1(i)=h1(i)*0.9;
+        xh1(i)=x(i)-h1(i);
+        c=mr_nlincon(xh1,varargin{:});  
+        ic = 1;
+    end    
+    fx=feval(func,xh1,varargin{:});
+    f_1(:,i)=fx;
+    if ic,
+        xh1(i)=x(i)+h1(i);
+        f1(:,i)=feval(func,xh1,varargin{:});
+    end
+    xh1(i)=x(i);
+end
+
+h_1=h1;
+xh1=x;
+xh_1=xh1;
+gg=(f1'-f_1')./(2.*h1);
+
+if hflag,
+    hessian_mat = zeros(size(f0,1),n*n);
+    for i=1:n
+        if i > 1
+            k=[i:n:n*(i-1)];
+            hessian_mat(:,(i-1)*n+1:(i-1)*n+i-1)=hessian_mat(:,k);
+        end 
+        hessian_mat(:,(i-1)*n+i)=(f1(:,i)+f_1(:,i)-2*f0)./(h1(i)*h_1(i));
+        temp=f1+f_1-f0*ones(1,n);
+        for j=i+1:n
+            xh1(i)=x(i)+h1(i);
+            xh1(j)=x(j)+h_1(j);
+            xh_1(i)=x(i)-h1(i);
+            xh_1(j)=x(j)-h_1(j);
+            %hessian_mat(:,(i-1)*n+j)=-(-feval(func,xh1,varargin{:})-feval(func,xh_1,varargin{:})+temp(:,i)+temp(:,j))./(2*h1(i)*h_1(j));
+            temp1 = feval(func,xh1,varargin{:});
+            %c=mr_nlincon(xh1,varargin{:});
+            %if c, disp( ['hessian warning cross ', num2str(c) ]), end
+            
+            temp2 = feval(func,xh_1,varargin{:});
+            %c=mr_nlincon(xh_1,varargin{:});
+            %if c, disp( ['hessian warning cross ', num2str(c) ]), end
+            hessian_mat(:,(i-1)*n+j)=-(-temp1 -temp2+temp(:,i)+temp(:,j))./(2*h1(i)*h_1(j));
+            xh1(i)=x(i);
+            xh1(j)=x(j);
+            xh_1(i)=x(i);
+            xh_1(j)=x(j);
+            j=j+1;
+        end
+        i=i+1;
+    end
+    
+else
+    hessian_mat = zeros(size(f0,1),n*n);
+    for i=1:n,
+        dum = (f1(:,i)+f_1(:,i)-2*f0)./(h1(i)*h_1(i));
+        if dum>0,
+            hessian_mat(:,(i-1)*n+i)=dum;
+        else
+            hessian_mat(:,(i-1)*n+i)=gg(i)^2;
+        end                        
+    end
+end
+hh1=h1;
+save hess
+% 11/25/03 SA Created from Hessian_sparse (removed sparse)
+
+
diff --git a/tags/v_3.062/matlab/mr_nlincon.m b/tags/v_3.062/matlab/mr_nlincon.m
new file mode 100644
index 0000000000..2938ab986e
--- /dev/null
+++ b/tags/v_3.062/matlab/mr_nlincon.m
@@ -0,0 +1,123 @@
+% Program calculating the non-l;inear constraint for posterior mximisation
+% M. Ratto
+% adapted from mj_optmumlik.m
+%------------------------------------------------------------------------------
+%------------------------------------------------------------------------------
+function [c, ceq] = mr_nlincon(xparam1,gend,rawdata,algo);
+
+
+global bayestopt_ exo_nbr dr_ estim_params_ Sigma_e_ options_ xparam_test ...
+    trend_coeff_ 
+
+
+c=0;
+ceq=0;
+
+xparam_test = xparam1;
+cost_flag = 1;
+if options_.mode_compute ~= 1 && any(xparam1 < bayestopt_.lb)
+  k = find(xparam1 < bayestopt_.lb);
+  c = sum(bayestopt_.lb(k)-xparam1(k));
+  cost_flag = 0;
+  return;
+end
+if options_.mode_compute ~= 1 && any(xparam1 > bayestopt_.ub)
+  k = find(xparam1 > bayestopt_.ub);
+  c = sum(xparam1(k)-bayestopt_.ub(k));
+  cost_flag = 0;
+  return;
+end
+
+nobs = size(options_.varobs,1);
+
+Q = Sigma_e_;
+for i=1:estim_params_.nvx
+	k =estim_params_.var_exo(i,1);
+	Q(k,k) = xparam1(i)*xparam1(i);
+end
+offset = estim_params_.nvx;
+if estim_params_.nvn
+	H = zeros(nobs,nobs);
+	for i=1:estim_params_.nvn
+		k = estim_params_.var_endo(i,1);
+		H(k,k) = xparam1(i+offset)*xparam1(i+offset);
+	end
+	offset = offset+estim_params_.nvn;
+end	
+if estim_params_.ncx
+	for i=1:estim_params_.ncx
+		k1 =estim_params_.corrx(i,1);
+		k2 =estim_params_.corrx(i,2);
+		Q(k1,k2) = xparam1(i+offset)*sqrt(Q(k1,k1)*Q(k2,k2));
+		Q(k2,k1) = Q(k1,k2);
+	end
+	[CholQ,testQ] = chol(Q);
+	if testQ 	%% The variance-covariance matrix of the structural innovations is not definite positive.
+    			%% We have to compute the eigenvalues of this matrix in order to build the penalty.
+    	a = diag(eig(Q));
+		%fval = bayestopt_.penalty*min(1e3,exp(sum(-a(a<=0))));
+    	c =  sum(-a(a<=0));
+    	cost_flag = 0;
+		return
+	end
+	offset = offset+estim_params_.ncx;
+end
+if estim_params_.nvn & estim_params_.ncn 
+	for i=1:estim_params_.ncn
+		k1 = options_.lgyidx2varobs(estim_params_.corrn(i,1));
+		k2 = options_.lgyidx2varobs(estim_params_.corrn(i,2));
+		H(k1,k2) = xparam1(i+offset)*sqrt(H(k1,k1)*H(k2,k2));
+		H(k2,k1) = H(k1,k2);
+	end
+	[CholH,testH] = chol(H);
+	if testH
+		a = diag(eig(H));
+		if nobs == estim_params_.nvn
+			% fval = bayestopt_.penalty*min(1e3,exp(sum(-a(a<=0))));
+   			c = sum(-a(a<=0));
+   			cost_flag = 0;
+			return
+		else
+			if sum(abs(a)<crit) == nobs-estim_params_.nvn
+				if any(a<0)
+					% fval = bayestopt_.penalty*min(1e3,exp(sum(-a(a<0))));
+   					c = sum(-a(a<0));
+   					cost_flag = 0;
+					return					
+				else
+					% All is fine, there's nothing to do here...
+				end 					
+			else
+				fval = bayestopt_.penalty*min(1e3,exp(sum(-a(a<=0))));
+   				c = sum(-a(a<=0));
+   				cost_flag = 0;
+				return			
+			end 
+		end
+	end
+	offset = offset+estim_params_.ncn;
+end
+for i=1:estim_params_.np
+	assignin('base',deblank(estim_params_.param_names(i,:)),xparam1(i+offset));
+end
+Sigma_e_ = Q;
+
+
+%------------------------------------------------------------------------------
+% 2. call model setup & reduction program
+%------------------------------------------------------------------------------
+
+[A,B,ys,info] = dynare_resolve;
+if info(1) == 1 | info(1) == 2 | info(1) == 5
+  fval = bayestopt_.penalty;
+  cost_flag = 0;
+  return
+elseif info(1) == 3 | info(1) == 4 | info(1) == 20
+  fval = bayestopt_.penalty*min(1e3,exp(info(2)));
+  cost_flag = 0;
+  return
+end
+
+
+
+% 11/18/03 MJ changed input parameters for priordens()
diff --git a/tags/v_3.062/matlab/my_subplot.m b/tags/v_3.062/matlab/my_subplot.m
new file mode 100644
index 0000000000..f264c3dcde
--- /dev/null
+++ b/tags/v_3.062/matlab/my_subplot.m
@@ -0,0 +1,30 @@
+function my_subplot(i,imax,irow,icol,fig_title)
+% spreads subplots on several figures according to a maximum number of
+% subplots per figure
+%
+% INPUTS
+% i: subplot number
+% imax: total number of subplots
+% irow: maximum number of rows in a figure
+% icol: maximum number of columns in a figure
+% fig_title: title to be repeated on each figure
+  nfig_max = irow*icol;
+  if imax < nfig_max
+    icol = ceil(sqrt(imax));
+    irow=icol;
+    if (icol-1)*(icol-2) >= imax
+      irow = icol-2;
+      icol = icol-1;
+    elseif (icol)*(icol-2) >= imax
+      irow = icol-2;
+    elseif icol*(icol-1) >= imax
+      irow = icol-1;
+    end
+  end
+
+  i1 = mod(i-1,nfig_max);
+  if i1 == 0
+    figure('Name',fig_title);
+  end
+  
+  subplot(irow,icol,i1+1);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/newrat.m b/tags/v_3.062/matlab/newrat.m
new file mode 100644
index 0000000000..8f241a6174
--- /dev/null
+++ b/tags/v_3.062/matlab/newrat.m
@@ -0,0 +1,159 @@
+function [xparam1, hh, gg, fval] = newrat(func0,x,hh,gg,flag,varargin)
+%
+%  [xparam1, hh, gg, fval] = newrat(func0,x,hh,gg,flag,varargin)
+%
+%  Standard Newton search
+%
+%  flag = 0, to begin with a pure gradient search (the program shifts to
+%  pure Newton when improvement of pure gradient is below ftol)
+%
+%  flag = 1, to start with the compelte Newton search
+
+  global bayestopt_
+icount=0;
+nx=length(x);
+xparam1=x;
+lamtol=1.e-7;
+ftol=1.e-5;
+options=optimset('fminunc');
+options.MaxFunEvals=200;
+options.TolFun= 1.0000e-005;
+options.MaxIter=1;
+options.LargeScale='off';
+
+optim_options=optimset('fminsearch');
+optim_options.display='iter';
+optim_options.MaxFunEvals=1000;
+optim_options.TolFun= 1.0000e-003;
+optim_options.TolX= 1.0000e-006;
+
+
+func = str2func(func0);
+fval0=feval(func,x,varargin{:});
+if isempty(hh)
+    [dum, gg]=mr_hessian(func0,x,flag,varargin{:});
+    hh = reshape(dum,nx,nx);
+end
+disp(['Gradient norm ',num2str(norm(gg))])
+disp(['Minimum Hessian eigenvalue ',num2str(min(eig(hh)))])
+disp(['Maximum Hessian eigenvalue ',num2str(max(eig(hh)))])
+g=gg;
+h{1}=hh;
+check=0;
+if max(eig(hh))<0, disp('Negative definite Hessian! Local maximum!'), pause, end,
+while norm(gg)>1.e-3 & check==0,
+    icount=icount+1;
+    bayestopt_.penalty = fval0(icount);
+    disp([' '])
+    disp(['Iteration ',num2str(icount)])
+    x0=xparam1-inv(hh)*gg;
+    c=mr_nlincon(x0,varargin{:},1);
+    lam=1;
+    while c
+        lam=lam*0.9;
+        x0=xparam1-inv(hh)*gg.*lam;
+        c=mr_nlincon(x0,varargin{:},1);
+    end        
+    fval=feval(func,x0,varargin{:});
+%     if (fval0(icount)-fval)<ftol & flag==0,
+%         fvala=fval;
+%         x0a=x0;
+%         disp('Try to modify Hessian')
+%         x0=xparam1-inv(gg*gg')*gg;
+%         c=mr_nlincon(x0,varargin{:},1);
+%         lam=1;
+%         while c
+%             lam=lam*0.9;
+%             x0=xparam1-inv(gg*gg')*gg.*lam;
+%             c=mr_nlincon(x0,varargin{:},1);
+%         end        
+%         fval=feval(func,x0,varargin{:});
+%         if fvala<=fval, 
+%             x0=x0a;
+%             fval=fvala;
+%         end            
+%     end            
+    if (fval0(icount)-fval)<ftol,
+        disp('Try line search')
+        [lam,fval,EXITFLAG,OUTPUT,GRAD,HESSIAN]=fminunc(@lsearch, 0, options, func, xparam1, inv(hh)*gg , varargin{:});
+        x0=xparam1-inv(hh)*gg.*lam;
+    end
+    if (fval0(icount)-fval)<ftol & flag==1,
+        fvala=fval;
+        x0a=x0;
+        disp('Try gradient direction')
+        [lam,fval,EXITFLAG,OUTPUT,GRAD,HESSIAN]=fminunc(@lsearch, 0, options, func, xparam1, gg , varargin{:});
+        if fvala<=fval, 
+            x0=x0a;
+            fval=fvala;
+        else
+            x0=xparam1-gg*lam;
+            if (fval0(icount)-fval)>ftol,
+                flag=0;
+            end
+        end
+    end
+    if (fval0(icount)-fval)<ftol,
+        fvala=fval;
+        x0a=x0;
+        disp('Try some simplex iterations')
+        [x0,fval,EXITFLAG,OUTPUT] = fminsearch(func, xparam1, optim_options, varargin{:});
+        if fvala<fval, 
+            x0=x0a;
+            fval=fvala;
+        else
+            lam = NaN;
+        end
+    end
+    if (fval0(icount)-fval)<ftol*ftol & flag==1;,
+        %         if fvala<fval,
+        %             fval=fvala;
+        %             x0=x0a;
+        %         end
+        disp('No further improvement is possible!')
+        check=1;
+    else
+        
+        if (fval0(icount)-fval)<ftol & flag==0,
+            flag=1;
+        end
+        
+        xparam1=x0;
+        x(:,icount+1)=xparam1;
+        fval0(icount+1)=fval;
+        disp(['LAMBDA        ',num2str(lam)])
+        %disp(['DX norm       ',num2str(norm(inv(hh)*gg.*lam))])
+        disp(['DX norm       ',num2str(norm(x(:,end)-x(:,end-1)))])
+        disp(['FVAL          ',num2str(fval)])
+        disp(['Improvement   ',num2str(fval0(icount)-fval)])
+        
+        if norm(x(:,icount)-xparam1)>1.e-12,
+            %[dum, gg]=hessian('mj_optmumlik',xparam1,gend,data,1);
+            [dum, gg]=mr_hessian(func0,xparam1,flag,varargin{:});
+            hh = reshape(dum,nx,nx);
+        end
+        disp(['Gradient norm  ',num2str(norm(gg))])
+        disp(['Minimum Hessian eigenvalue ',num2str(min(eig(hh)))])
+        disp(['Maximum Hessian eigenvalue ',num2str(max(eig(hh)))])
+        if max(eig(hh))<0, disp('Negative definite Hessian! Local maximum!'), pause, end,
+        
+        h{icount+1}=hh;
+        g(:,icount+1)=gg;
+        save m1 x h g fval0
+    end
+end
+
+return
+
+%  
+function f00 = lsearch(lam,func,x,dx,varargin)
+
+
+x0=x-dx*lam;
+f00=feval(func,x0,varargin{:});
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/numgrad.m b/tags/v_3.062/matlab/numgrad.m
new file mode 100644
index 0000000000..03457df2fe
--- /dev/null
+++ b/tags/v_3.062/matlab/numgrad.m
@@ -0,0 +1,98 @@
+function [g, badg] = numgrad(fcn,x,varargin)
+% function [g badg] = numgrad(fcn,xvarargin)
+%
+delta = 1e-6;
+%delta=1e-2;
+n=length(x);
+tvec=delta*eye(n);
+g=zeros(n,1);
+%--------------------old way to deal with variable # of P's--------------
+%tailstr = ')';
+%stailstr = [];
+%for i=nargin-2:-1:1
+%   tailstr=[ ',P' num2str(i)  tailstr];
+%   stailstr=[' P' num2str(i) stailstr];
+%end
+%f0 = eval([fcn '(x' tailstr]); % Is there a way not to do this?
+%---------------------------------------------------------------^yes
+f0 = eval([fcn '(x,varargin{:})']);
+% disp(' first fcn in numgrad.m ------------------')
+%home
+% disp('numgrad.m is working. ----') % Jiinil on 9/5/95
+% sizex=size(x),sizetvec=size(tvec),x,    % Jinill on 9/6/95
+badg=0;
+for i=1:n
+   scale=1; % originally 1
+   % i,tveci=tvec(:,i)% ,plus=x+scale*tvec(:,i) % Jinill Kim on 9/6/95
+   if size(x,1)>size(x,2)
+      tvecv=tvec(i,:);
+   else
+      tvecv=tvec(:,i);
+   end
+   g0 = (eval([fcn '(x+scale*tvecv'', varargin{:})']) - f0) ...
+         /(scale*delta);
+   % disp(' fcn in the i=1:n loop of numgrad.m ------------------')% Jinill 9/6/95
+   % disp('          and i is')               % Jinill
+   % i                         % Jinill
+   % fprintf('Gradient w.r.t. %3d: %10g\n',i,g0) %see below Jinill 9/6/95
+% -------------------------- special code to essentially quit here
+   % absg0=abs(g0) % Jinill on 9/6/95
+   if abs(g0)< 1e15
+      g(i)=g0;
+      % disp('good gradient') % Jinill Kim
+   else
+      disp('bad gradient ------------------------') % Jinill Kim
+      % fprintf('Gradient w.r.t. %3d: %10g\n',i,g0) %see above
+      g(i)=0;
+      badg=1;
+      % return
+      % can return here to save time if the gradient will never be
+      % used when badg returns as true.
+   end
+end
+%-------------------------------------------------------------
+%     if g0 > 0
+%        sided=2;
+%        g1 = -(eval([fcn '(x-scale*tvec(:,i)''' tailstr]) - f0) ...
+%           /(scale*delta);
+%        if g1<0
+%           scale = scale/10;
+%        else
+%           break
+%        end
+%     else
+%        sided=1;
+%        break
+%     end
+%  end
+%  if sided==1
+%     g(i)=g0;
+%  else
+%     if (g0<1e20)
+%        if (g1>-1e20)
+%           g(i)=(g0+g1)/2;
+%        else
+%           g(i)=0;
+%           badg=1;
+%           disp( ['Banging against wall, parameter ' int2str(i)] );
+%        end
+%     else
+%        if g1>-1e20
+%           if g1<0
+%              g(i)=0;
+%              badg=1;
+%              disp( ['Banging against wall, parameter ' int2str(i)] );
+%           else
+%              g(i)=g1;
+%           end
+%        else
+%           g(i)=0;
+%           badg=1;
+%           disp(['Valley around parameter ' int2str(i)])
+%        end
+%     end
+%  end
+%end
+%save g.dat g x f0
+%eval(['save g g x f0 ' stailstr]);
+
diff --git a/tags/v_3.062/matlab/osr.m b/tags/v_3.062/matlab/osr.m
new file mode 100644
index 0000000000..df6c72a172
--- /dev/null
+++ b/tags/v_3.062/matlab/osr.m
@@ -0,0 +1,162 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function osr(var_list,params,W)
+  global iter_ ys_ dr_ y_ dr_ exo_nbr lgy_ lgx_ Sigma_e_ ykmin_ ykmax_ ...
+      endo_nbr options_ lgx_orig_ord_
+  
+  options_old = options_;
+  options_.order = 1;
+  options_.linear = 1;
+  options_ = set_default_option(options_,'ar',5);
+  options_ = set_default_option(options_,'irf',40);
+  options_ = set_default_option(options_,'dr_algo',0);
+  options_ = set_default_option(options_,'simul_algo',0);
+  options_ = set_default_option(options_,'drop',100);
+  options_ = set_default_option(options_,'replic',1);
+  options_ = set_default_option(options_,'nomoments',0);
+  options_ = set_default_option(options_,'nocorr',0);
+  options_ = set_default_option(options_,'simul_seed',[]);
+  options_ = set_default_option(options_,'hp_filter',0);
+  options_ = set_default_option(options_,'hp_ngrid',512);
+  options_ = set_default_option(options_,'simul',0);
+  options_ = set_default_option(options_,'periods',1);
+  options_ = set_default_option(options_,'TeX',0);
+  options_ = set_default_option(options_,'noprint',0);
+  if options_.simul & ~isempty(iter_) & options_.periods == 0
+    options_.periods = iter_;
+  end
+
+  iter_ = max(options_.periods,1);
+  options_.periods = iter_;
+  
+  make_ex_;
+
+  disp(' ')
+  disp('OPTIMAL SIMPLE RULE')
+  disp(' ')
+  [dr_,info] = osr1(params,W);
+  if info > 0
+    options_ = options_old;
+    return
+  elseif options_.noprint ~= 1
+      disp('MODEL SUMMARY')
+      disp(' ')
+      disp(['  Number of variables:         ' int2str(endo_nbr)])
+      disp(['  Number of stochastic shocks: ' int2str(exo_nbr)])
+      disp(['  Number of state variables:   ' ...
+	    int2str(length(find(dr_.kstate(:,2) <= ykmin_+1)))])
+      disp(['  Number of jumpers:           ' ...
+	    int2str(length(find(dr_.kstate(:,2) == ykmin_+2)))])
+      disp(['  Number of static variables:  ' int2str(dr_.nstatic)])
+      my_title='MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS';
+      labels = deblank(lgx_);
+      headers = strvcat('Variables',labels);
+      lh = size(labels,2)+2;
+      table(my_title,headers,labels,Sigma_e_,lh,10,6);
+      disp(' ')
+      disp_dr(dr_,options_.order,var_list);
+      if options_.order == 1 & options_.simul == 0 & options_.nomoments == 0
+	disp_th_moments(dr_,var_list);
+      elseif options_.simul == 1 | options_.nomoments == 0
+	if options_.periods == 0
+	  error('OSR error: number of periods for the simulation isn''t specified')
+	end
+	if options_.periods < options_.drop
+	  disp(['OSR error: The horizon of simulation is shorter' ...
+		' than the number of observations to be DROPed'])
+	  return
+	end
+	
+	y_ = simult(repmat(dr_.ys,1,ykmin_),dr_);
+	dyn2vec;
+	if options_.nomoments == 0
+	  disp_moments(y_,var_list);
+	end
+      end
+      
+      n = size(var_list,1);
+      if n == 0
+	n = length(dr_.order_var);
+	ivar = [1:n]';
+	var_list = lgy_;
+      else
+	ivar=zeros(n,1);
+	for i=1:n
+	  i_tmp = strmatch(var_list(i,:),lgy_,'exact');
+	  if isempty(i_tmp)
+	    error (['One of the specified variables does not exist']) ;
+	  else
+	    ivar(i) = i_tmp;
+	  end
+	end
+      end
+
+      if n < 13 & options_.irf > 0
+	if n == 1
+	  nr = 1;
+	  nc = 1;
+	elseif n == 2
+	  nr = 1;
+	  nc = 2;
+	elseif n <= 4
+	  nr = 2;
+	  nc = 2;
+	elseif n <= 6
+	  nr = 2;
+	  nc = 3;
+	elseif n <= 9
+	  nr = 3;
+	  nc = 3;
+	elseif n <= 12
+	  nr = 3;
+	  nc = 4;
+	end
+	olditer = iter_;
+	if options_.order == 1
+	  options_.replic = 1;
+	else
+	  if options_.replic == 0
+	    options_.replic = 50;
+	  end
+	end
+	SS(lgx_orig_ord_,lgx_orig_ord_)=Sigma_e_+1e-14*eye(exo_nbr);
+	cs = transpose(chol(SS));
+
+	for i = 1:exo_nbr
+	  if SS(i,i) > 1e-13
+	    figure('Name',['Shock to ' lgx_(i,:)]);
+	    y=irf(dr_,cs(lgx_orig_ord_,i), options_.irf, options_.drop, options_.replic, options_.order);
+	    for j = 1:n
+	      subplot(nr,nc,j);
+	      plot([y(ivar(j),:)']);
+	      title(var_list(j,:),'Interpreter','none');
+	      assignin('base',[deblank(var_list(j,:)) '_' deblank(lgx_(i,:))],y(ivar(j),:)');
+	    end
+	  end
+	  
+	end
+	iter_ = olditer;
+      end
+  end
+  options_ = options_old;
+  
+% 01/10/01 FC dr_ and y_ made global
+% 02/20/01 MJ ys_ removed from calling sequence for simult (all in dr_)
+% 02/23/01 MJ added dyn2vec()
+% 06/24/01 MJ steady -> steady_
+% 09/24/01 MJ dr_ made global
+% 08/28/02 MJ added var_list
+% 10/09/02 MJ no simulation and theoretical moments for order 1 
+% 10/14/02 MJ added plot of IRFs
+% 10/30/02 MJ options_ are now a structure
+% 01/01/03 MJ added dr_algo
+% 01/09/03 MJ set default values for options_ (correct absence of autocorr
+%             when order == 1)
+% 01/12/03 MJ removed call to steady_ as already checked in resol()
+% 01/31/03 MJ make IRF global with varname_shockname
+% 02/09/03 MJ ys_ reset with value declared in initval after computations
+% 02/18/03 MJ removed above change. ys_ shouldn't be affected by
+%             computations in this function
+%             new option SIMUL computes a stochastic simulation and save
+%             results in y_ and via dyn2vec
+% 04/03/03 MJ corrected bug for simulation with ykmin_ > 1
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/osr1.m b/tags/v_3.062/matlab/osr1.m
new file mode 100644
index 0000000000..bfc17203cf
--- /dev/null
+++ b/tags/v_3.062/matlab/osr1.m
@@ -0,0 +1,45 @@
+function [dr_,info]=osr1(params,weights)
+  global xkmax_ xkmin_ ykmin_ ykmax_ ys_ iy_ exo_nbr endo_nbr fname_ ...
+      dynatol_ options_ it_ dr_
+
+  it_ = ykmin_ + 1 ;
+
+  set_default_option(options_,'dr_algo',0);
+  
+  if exo_nbr == 0
+    exe_ = [] ;
+  end
+
+  check_model;
+  
+  np = size(params,1);
+  t0 = zeros(np,1);
+  for i=1:np
+    t0(i)=evalin('base',[params(i,:) ';']);
+  end
+  
+  [f,info] = osr_obj(t0,params,weights);
+  if info > 0
+    disp('OSR: bad initial value for the parameters');
+    return
+  end
+  [p,f]=fminsearch(@osr_obj,t0,[],params,weights);
+
+  [f,info] = osr_obj(p,params,weights);
+  if info > 0
+    disp(['OSR ends on a pathological case, try different initial values' ...
+	  ' for the parameters']);
+    return
+  else
+    disp('')
+    disp('OPTIMAL VALUE OF THE PARAMETERS:')
+    disp('')
+    for i=1:np
+      disp(sprintf('%16s %16.6g\n',params(i,:),p(i)))
+    end
+    disp(sprintf('Objective function : %16.6g\n',f));
+    disp(' ')
+    dr_=resol(ys_,0);
+  end
+
+  % 05/10/03 MJ modified to work with osr.m and give full report
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/osr_obj.m b/tags/v_3.062/matlab/osr_obj.m
new file mode 100644
index 0000000000..7302daace4
--- /dev/null
+++ b/tags/v_3.062/matlab/osr_obj.m
@@ -0,0 +1,61 @@
+% the beginning and the end of this function may be adapted by the userx
+function [loss,vx]=osr_obj(x,params,weights);
+  global ys_ Sigma_e_ endo_nbr exo_nbr optimal_Q_ it_ ykmin_ options_
+  
+  vx = [];
+  % set parameters of the policiy rule
+  np = size(params,1);
+  for i=1:np
+    assignin('base',deblank(params(i,:)),x(i))
+  end
+  
+  % don't change below until the part where the loss function is computed
+  it_ = ykmin_+1;
+  [dr_,info] = resol(ys_,0);
+  
+  switch info(1)
+   case 1
+    loss = 1e8;
+    return
+   case 2
+    loss = 1e8*min(1e3,info(2));
+    return
+   case 3
+    loss = 1e8*min(1e3,info(2));
+    return
+   case 4
+    loss = 1e8*min(1e3,info(2));
+    return
+   case 5
+    loss = 1e8;
+    return
+   case 20
+    loss = 1e8*min(1e3,info(2));
+    return
+   otherwise
+  end
+  
+  [A,B] = kalman_transition_matrix(dr_);
+  [vx, info] = lyapunov_symm(A,B*Sigma_e_*B');
+  if info > 0
+    loss = 1e8;
+    return
+  end
+  weights = weights(dr_.order_var,dr_.order_var);
+  vx = vx(1:endo_nbr,1:endo_nbr);
+  loss = weights(:)'*vx(:);
+  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/p2toperc.m b/tags/v_3.062/matlab/p2toperc.m
new file mode 100644
index 0000000000..4ac9d2b76c
--- /dev/null
+++ b/tags/v_3.062/matlab/p2toperc.m
@@ -0,0 +1,29 @@
+function y=p2toperc(x)
+  
+  n = size(x,1);
+  y = zeros(n,1);
+  
+  for i=1:n
+%    if x(i,6) == 0  have to wait until the 2nd part works
+    if 1
+      y(i) = x(i,3);
+    else
+      if x(i,3) < x(i,2)
+	p = 0.05;
+      else
+	p = 0.95;
+      end
+    
+      if x(i,1) == 1
+	y(i) = fsolve(@fbeta,1,p,x(i,2),x(i,3));
+      elseif x(i,1) == 2
+	y(i) = fsolve(@fgamma,1,p,x(i,2),x(i,3));
+      elseif x(i,1) == 3
+	y(i) = (x(i,3)-x(i,2))/qnorm(p,0,1);
+      elseif x(i,1) == 4
+	y(i) = fsolve(@figamm,1,p,x(i,2),x(i,3));
+      elseif x(i,1) == 5
+%	y(i) = fsolve(@fgamma,1,p,x(i,2));
+      end
+    end
+  end
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/pdfig.m b/tags/v_3.062/matlab/pdfig.m
new file mode 100644
index 0000000000..6f27e7ea89
--- /dev/null
+++ b/tags/v_3.062/matlab/pdfig.m
@@ -0,0 +1,2 @@
+function y=pdfig(x,a,b)
+  y=exp(lpdfig(x,a,b));
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/pgamma.m b/tags/v_3.062/matlab/pgamma.m
new file mode 100644
index 0000000000..1398967705
--- /dev/null
+++ b/tags/v_3.062/matlab/pgamma.m
@@ -0,0 +1,15 @@
+function F = pgamma(x,a)
+%PGAMMA   The gamma distribution function
+%
+%         F = pgamma(x,a)
+
+%       Anders Holtsberg, 18-11-93
+%       Copyright (c) Anders Holtsberg
+
+if any(any(a<=0))
+   error('Parameter a is wrong')
+end
+
+F = gammainc(x,a);
+I0 = find(x<0);
+F(I0) = zeros(size(I0));
diff --git a/tags/v_3.062/matlab/plot_priors.m b/tags/v_3.062/matlab/plot_priors.m
new file mode 100644
index 0000000000..684e51195b
--- /dev/null
+++ b/tags/v_3.062/matlab/plot_priors.m
@@ -0,0 +1,137 @@
+function plot_priors
+% stephane.adjemian@cepremap.cnrs.fr [07-31-2004]
+global bayestopt_ fname_ options_
+
+TeX = options_.TeX;
+
+figurename = 'Priors';
+npar = length(bayestopt_.pmean);
+[nbplt,nr,nc,lr,lc,nstar] = pltorg(npar);
+
+if TeX
+	fidTeX = fopen([fname_ '_Priors.TeX'],'w');
+	fprintf(fidTeX,'%% TeX eps-loader file generated by plot_priors.m (Dynare).\n');
+	fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+	fprintf(fidTeX,' \n');
+end
+if nbplt == 1
+    h1 = figure('Name',figurename);
+    if TeX
+        TeXNAMES = [];
+        NAMES    = []; 
+    end    
+    for i=1:npar
+        [x,f,abscissa,dens,binf,bsup] = draw_prior_density(i);
+        [nam,texnam] = get_the_name(i,TeX);
+        if TeX
+            TeXNAMES = strvcat(TeXNAMES,texnam);
+            NAMES = strvcat(NAMES,nam);
+        end    
+        subplot(nr,nc,i)
+        hh = plot(x,f,'-k','linewidth',2);
+        set(hh,'color',[0.7 0.7 0.7]);
+        box on
+        title(nam,'Interpreter','none')
+        drawnow
+    end
+    print('-depsc2',[fname_ '_Priors' int2str(1)]);
+    print('-dpdf',[fname_ '_Priors' int2str(1)]);
+    saveas(h1,[fname_ '_Priors' int2str(1) '.fig']);
+    if options_.nograph, close(h1), end
+    if TeX
+    	fprintf(fidTeX,'\\begin{figure}[H]\n');
+        for jj = 1:npar
+        	fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+        end    
+        fprintf(fidTeX,'\\centering\n');
+        fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Priors%s}\n',fname_,int2str(1));
+        fprintf(fidTeX,'\\caption{Priors.}');
+        fprintf(fidTeX,'\\label{Fig:Priors:%s}\n',int2str(1));
+        fprintf(fidTeX,'\\end{figure}\n');
+        fprintf(fidTeX,' \n');
+        fprintf(fidTeX,'%% End of TeX file.\n');
+        fclose(fidTeX);
+	end
+else
+    for plt = 1:nbplt-1
+        hplt = figure('Name',figurename);
+        if TeX
+            TeXNAMES = [];
+            NAMES    = []; 
+        end    
+        for index=1:nstar
+            names = [];
+            i = (plt-1)*nstar + index;
+            [x,f,abscissa,dens,binf,bsup] = draw_prior_density(i);
+            [nam,texnam] = get_the_name(i,TeX);
+            if TeX
+                TeXNAMES = strvcat(TeXNAMES,texnam);
+                NAMES = strvcat(NAMES,nam);
+            end    
+            subplot(nr,nc,index)
+            hh = plot(x,f,'-k','linewidth',2);
+            set(hh,'color',[0.7 0.7 0.7]);
+            box on
+            title(nam,'Interpreter','none')
+            drawnow
+        end  % index=1:nstar
+        print('-depsc2',[fname_ '_Priors' int2str(plt)]);
+        print('-dpdf',[fname_ '_Priors' int2str(plt)]);
+	saveas(hplt,[fname_ '_Priors' int2str(plt) '.fig']);
+    	if options_.nograph, close(hplt), end
+		if TeX
+            fprintf(fidTeX,'\\begin{figure}[H]\n');
+            for jj = 1:nstar
+                fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+            end    
+            fprintf(fidTeX,'\\centering\n');
+            fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Priors%s}\n',fname_,int2str(plt));
+            fprintf(fidTeX,'\\caption{Priors.}');
+            fprintf(fidTeX,'\\label{Fig:Priors:%s}\n',int2str(plt));
+            fprintf(fidTeX,'\\end{figure}\n');
+            fprintf(fidTeX,' \n');
+        end    
+    end % plt = 1:nbplt-1
+    hplt = figure('Name',figurename);
+    if TeX
+        TeXNAMES = [];
+        NAMES    = []; 
+    end    
+    for index=1:npar-(nbplt-1)*nstar
+        i = (nbplt-1)*nstar +  index;
+        [x,f,abscissa,dens,binf,bsup] = draw_prior_density(i);
+        [nam,texnam] = get_the_name(i,TeX);
+        if TeX
+            TeXNAMES = strvcat(TeXNAMES,texnam);
+            NAMES = strvcat(NAMES,nam);
+        end    
+        if lr
+            subplot(lc,lr,index);
+        else
+            subplot(nr,nc,index);
+        end    
+        hh = plot(x,f,'-k','linewidth',2);
+        set(hh,'color',[0.7 0.7 0.7]);
+        box on
+        title(nam,'Interpreter','none')
+        drawnow
+    end  % index=1:npar-(nbplt-1)*nstar
+    print('-depsc2',[ fname_ '_Priors' int2str(nbplt)]);
+    print('-dpdf',[ fname_ '_Priors' int2str(nbplt)]);
+    saveas(hplt,[fname_ '_Priors' int2str(nbplt) '.fig']);
+    if options_.nograph, close(hplt), end
+	if TeX
+        fprintf(fidTeX,'\\begin{figure}[H]\n');
+        for jj = 1:npar-(nbplt-1)*nstar
+            fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(jj,:)),deblank(TeXNAMES(jj,:)));
+        end    
+        fprintf(fidTeX,'\\centering\n');
+        fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Priors%s}\n',fname_,int2str(nbplt));
+        fprintf(fidTeX,'\\caption{Priors.}');
+        fprintf(fidTeX,'\\label{Fig:Priors:%s}\n',int2str(nbplt));
+        fprintf(fidTeX,'\\end{figure}\n');
+        fprintf(fidTeX,' \n');
+        fprintf(fidTeX,'%% End of TeX file.\n');
+        fclose(fidTeX);
+    end
+end
diff --git a/tags/v_3.062/matlab/pltorg.m b/tags/v_3.062/matlab/pltorg.m
new file mode 100644
index 0000000000..45fbc203e1
--- /dev/null
+++ b/tags/v_3.062/matlab/pltorg.m
@@ -0,0 +1,85 @@
+function [nbplt,nr,nc,lr,lc,nstar] = pltorg(number)
+% stephane.adjemian@cepremap.cnrs.fr [06-07-2004]
+nrstar = 3;
+ncstar = 3;
+nstar  = nrstar*ncstar;
+nbplt  = 0;
+nr     = 0;
+nc     = 0;
+lr     = 0;
+lc     = 0;
+if number == 1
+    nbplt = 1;
+    nr    = 1;
+    nc    = 1;
+elseif number == 2
+    nbplt = 1;
+    nr    = 2;
+    nc    = 1;
+elseif number == 3
+    nbplt = 1;
+    nr    = 3;
+    nc    = 1;
+elseif number == 4
+    nbplt = 1;
+    nr    = 2;
+    nc    = 2;
+elseif number == 5
+    nbplt = 1;
+    nr    = 3;
+    nc    = 2;
+elseif number == 6
+    nbplt = 1;
+    nr    = 3;
+    nc    = 2;    
+elseif number == 7
+    nbplt = 1;
+    nr    = 3;
+    nc    = 3;    
+elseif number == 8
+    nbplt = 1;
+    nr    = 3;
+    nc    = 3;
+elseif number == 9
+    nbplt = 1;
+    nr    = 3;
+    nc    = 3;
+else
+    if number/nstar == round(number/nstar)
+        nbplt = number/nstar;
+        nr    = nrstar;
+        nc    = ncstar;
+        lr    = nr;
+        lc    = nc; 
+    else
+        nbplt = ceil(number/nstar);
+        nr    = nrstar;
+        nc    = ncstar;
+        reste = number-(nbplt-1)*nstar;
+        if reste == 1
+            lr    = 1;
+            lc    = 1;
+        elseif reste == 2
+            lr    = 2;
+            lc    = 1;
+        elseif reste == 3
+            lr    = 3;
+            lc    = 1;
+        elseif reste == 4
+            lr    = 2;
+            lc    = 2;
+        elseif reste == 5
+            lr    = 3;
+            lc    = 2;
+        elseif reste == 6
+            lr    = 3;
+            lc    = 2;    
+        elseif reste == 7
+            lr    = 3;
+            lc    = 3;    
+        elseif reste == 8
+            lr    = 3;
+            lc    = 3;
+        end
+    end
+end    
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/pnorm.m b/tags/v_3.062/matlab/pnorm.m
new file mode 100644
index 0000000000..4e06ae79bf
--- /dev/null
+++ b/tags/v_3.062/matlab/pnorm.m
@@ -0,0 +1,11 @@
+function  p = pnorm(x,m,s)
+%PNORM 	  The normal distribution function
+%
+%         p = pnorm(x,Mean,StandardDeviation)
+
+%       Anders Holtsberg, 18-11-93
+%       Copyright (c) Anders Holtsberg
+
+if nargin<3, s=1; end
+if nargin<2, m=0; end
+p = (1+erf((x-m)./(sqrt(2).*s)))/2;
diff --git a/tags/v_3.062/matlab/posterior_density_estimate.m b/tags/v_3.062/matlab/posterior_density_estimate.m
new file mode 100644
index 0000000000..18e6da0329
--- /dev/null
+++ b/tags/v_3.062/matlab/posterior_density_estimate.m
@@ -0,0 +1,178 @@
+function [abscissa,f,h] = posterior_density_estimate(data,number_of_grid_points,bandwidth,kernel_function) 
+%%   
+%%  This function aims at estimating posterior univariate densities from realisations of a Metropolis-Hastings 
+%%  algorithm. A kernel density estimator is used (see Silverman [1986]) and the main task of this function is 
+%%  to obtain an optimal bandwidth parameter. 
+%% 
+%%  * Silverman [1986], "Density estimation for statistics and data analysis". 
+%%  * M. Skold and G.O. Roberts [2003], "Density estimation for the Metropolis-Hastings algorithm". 
+%%
+%%  The last section is adapted from Anders Holtsberg's matlab toolbox (stixbox).
+%%
+%%  stephane.adjemian@cepremap.cnrs.fr [01/16/2004]. 
+
+if size(data,2) > 1 & size(data,1) == 1; 
+    data = data'; 
+elseif size(data,2)>1 & size(data,1)>1; 
+    error('density_estimate: data must be a one dimensional array.'); 
+end;
+test = log(number_of_grid_points)/log(2);
+if ( abs(test-round(test)) > 10^(-12));
+    error('The number of grid points must be a power of 2.');
+end;
+
+n = size(data,1); 
+
+
+%% KERNEL SPECIFICATION...
+
+if strcmp(kernel_function,'gaussian'); 
+    k    = inline('inv(sqrt(2*pi))*exp(-0.5*x.^2)'); 
+    k2   = inline('inv(sqrt(2*pi))*(-exp(-0.5*x.^2)+(x.^2).*exp(-0.5*x.^2))'); % second derivate of the gaussian kernel 
+    k4   = inline('inv(sqrt(2*pi))*(3*exp(-0.5*x.^2)-6*(x.^2).*exp(-0.5*x.^2)+(x.^4).*exp(-0.5*x.^2))'); % fourth derivate... 
+    k6   = inline('inv(sqrt(2*pi))*(-15*exp(-0.5*x.^2)+45*(x.^2).*exp(-0.5*x.^2)-15*(x.^4).*exp(-0.5*x.^2)+(x.^6).*exp(-0.5*x.^2))'); % sixth derivate... 
+    mu02 = inv(2*sqrt(pi)); 
+    mu21 = 1; 
+elseif strcmp(kernel_function,'uniform'); 
+    k    = inline('0.5*(abs(x) <= 1)'); 
+    mu02 = 0.5; 
+    mu21 = 1/3; 
+elseif strcmp(kernel_function,'triangle'); 
+    k    = inline('(1-abs(x)).*(abs(x) <= 1)'); 
+    mu02 = 2/3; 
+    mu21 = 1/6; 
+elseif strcmp(kernel_function,'epanechnikov'); 
+    k    = inline('0.75*(1-x.^2).*(abs(x) <= 1)'); 
+    mu02 = 3/5; 
+    mu21 = 1/5;     
+elseif strcmp(kernel_function,'quartic'); 
+    k    = inline('0.9375*((1-x.^2).^2).*(abs(x) <= 1)'); 
+    mu02 = 15/21; 
+    mu21 = 1/7; 
+elseif strcmp(kernel_function,'triweight'); 
+    k    = inline('1.09375*((1-x.^2).^3).*(abs(x) <= 1)'); 
+    k2   = inline('(105/4*(1-x.^2).*x.^2-105/16*(1-x.^2).^2).*(abs(x) <= 1)'); 
+    k4   = inline('(-1575/4*x.^2+315/4).*(abs(x) <= 1)'); 
+    k6   = inline('(-1575/2).*(abs(x) <= 1)'); 
+    mu02 = 350/429; 
+    mu21 = 1/9;     
+elseif strcmp(kernel_function,'cosinus'); 
+    k    = inline('(pi/4)*cos((pi/2)*x).*(abs(x) <= 1)'); 
+    k2   = inline('(-1/16*cos(pi*x/2)*pi^3).*(abs(x) <= 1)'); 
+    k4   = inline('(1/64*cos(pi*x/2)*pi^5).*(abs(x) <= 1)'); 
+    k6   = inline('(-1/256*cos(pi*x/2)*pi^7).*(abs(x) <= 1)'); 
+    mu02 = (pi^2)/16; 
+    mu21 = (pi^2-8)/pi^2;     
+end;     
+
+
+%% OPTIMAL BANDWIDTH PARAMETER....
+
+if bandwidth == 0;  %  Rule of thumb bandwidth parameter (Silverman [1986] corrected by 
+                    %  Skold and Roberts [2003] for Metropolis-Hastings). 
+    sigma = std(data); 
+    h = 2*sigma*(sqrt(pi)*mu02/(12*(mu21^2)*n))^(1/5); % Silverman's optimal bandwidth parameter. 
+    A = 0; 
+    for i=1:n; 
+        j = i; 
+        while j<= n & data(j,1)==data(i,1); 
+            j = j+1; 
+        end;     
+        A = A + 2*(j-i) - 1; 
+    end; 
+    A = A/n; 
+    h = h*A^(1/5); % correction 
+elseif bandwidth == -1;     % Adaptation of the Sheather and Jones [1991] plug-in estimation of the optimal bandwidth 
+                            % parameter for metropolis hastings algorithm. 
+    if strcmp(kernel_function,'uniform')      | ... 
+       strcmp(kernel_function,'triangle')     | ... 
+       strcmp(kernel_function,'epanechnikov') | ... 
+       strcmp(kernel_function,'quartic'); 
+       error('I can''t compute the optimal bandwidth with this kernel... Try the gaussian, triweight or cosinus kernels.'); 
+    end;         
+    sigma = std(data); 
+    A = 0; 
+    for i=1:n; 
+        j = i; 
+        while j<= n & data(j,1)==data(i,1); 
+            j = j+1; 
+        end;     
+        A = A + 2*(j-i) - 1; 
+    end; 
+    A = A/n; 
+    Itilda4 = 8*7*6*5/(((2*sigma)^9)*sqrt(pi)); 
+    g3      = abs(2*A*k6(0)/(mu21*Itilda4*n))^(1/9); 
+    Ihat3 = 0; 
+    for i=1:n; 
+        Ihat3 = Ihat3 + sum(k6((data(i,1)-data)/g3)); 
+    end;     
+    Ihat3 = -Ihat3/((n^2)*g3^7); 
+    g2      = abs(2*A*k4(0)/(mu21*Ihat3*n))^(1/7); 
+    Ihat2 = 0; 
+    for i=1:n; 
+        Ihat2 = Ihat2 + sum(k4((data(i)-data)/g2)); 
+    end;     
+    Ihat2 = Ihat2/((n^2)*g2^5); 
+    h       = (A*mu02/(n*Ihat2*mu21^2))^(1/5);    % equation (22) in Skold and Roberts [2003] --> h_{MH} 
+elseif bandwidth == -2;     % Bump killing... We construct local bandwith parameters in order to remove 
+                            % spurious bumps introduced by long rejecting periods.   
+    if strcmp(kernel_function,'uniform')      | ... 
+       strcmp(kernel_function,'triangle')     | ... 
+       strcmp(kernel_function,'epanechnikov') | ... 
+       strcmp(kernel_function,'quartic'); 
+        error('I can''t compute the optimal bandwidth with this kernel... Try the gaussian, triweight or cosinus kernels.'); 
+    end;         
+    sigma = std(data); 
+    A = 0; 
+    T = zeros(n,1); 
+    for i=1:n; 
+        j = i; 
+        while j<= n & data(j,1)==data(i,1); 
+            j = j+1; 
+        end;     
+        T(i) = (j-i); 
+        A = A + 2*T(i) - 1; 
+    end; 
+    A = A/n; 
+    Itilda4 = 8*7*6*5/(((2*sigma)^9)*sqrt(pi)); 
+    g3      = abs(2*A*k6(0)/(mu21*Itilda4*n))^(1/9); 
+    Ihat3 = 0; 
+    for i=1:n; 
+        Ihat3 = Ihat3 + sum(k6((data(i,1)-data)/g3)); 
+    end;     
+    Ihat3 = -Ihat3/((n^2)*g3^7); 
+    g2      = abs(2*A*k4(0)/(mu21*Ihat3*n))^(1/7); 
+    Ihat2 = 0; 
+    for i=1:n; 
+        Ihat2 = Ihat2 + sum(k4((data(i)-data)/g2)); 
+    end;     
+    Ihat2 = Ihat2/((n^2)*g2^5); 
+    h = ((2*T-1)*mu02/(n*Ihat2*mu21^2)).^(1/5); % Note that h is a column vector (local banwidth parameters). 
+elseif bandwidth > 0; 
+    h = bandwidth; 
+else; 
+    error('density_estimate: bandwidth must be positive or equal to 0,-1 or -2.'); 
+end; 
+
+%% COMPUTE DENSITY ESTIMATE, using the optimal bandwidth parameter.
+%%
+%% This section is adapted from Anders Holtsberg's matlab toolbox
+%% (stixbox --> plotdens.m).
+
+
+a  = min(data) - (max(data)-min(data))/3;
+b  = max(data) + (max(data)-min(data))/3;
+abscissa = linspace(a,b,number_of_grid_points)';
+d  = abscissa(2)-abscissa(1); 
+xi = zeros(number_of_grid_points,1);
+xa = (data-a)/(b-a)*number_of_grid_points; 
+for i = 1:n;
+    indx = floor(xa(i));
+    temp = xa(i)-indx;
+    xi(indx+[1 2]) = xi(indx+[1 2]) + [1-temp,temp]';
+end;    
+xk = [-number_of_grid_points:number_of_grid_points-1]'*d;
+kk = k(xk/h);
+kk = kk / (sum(kk)*d*n);
+f = ifft(fft(fftshift(kk)).*fft([xi ;zeros(size(xi))]));
+f = real(f(1:number_of_grid_points));
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/posterior_distribution.m b/tags/v_3.062/matlab/posterior_distribution.m
new file mode 100644
index 0000000000..2e85102428
--- /dev/null
+++ b/tags/v_3.062/matlab/posterior_distribution.m
@@ -0,0 +1,72 @@
+function [borneinf,bornesup,x1,x2,f1,f2,top,nam,texnam] = ...
+    posterior_distribution(indx,number_of_mh_files,first_mh_file,first_line,...
+					number_of_blocks,number_of_simulations,...
+					number_of_simulations_per_file,TeX);
+% stephane.adjemian@cepremap.cnrs.fr [07-15-2004]
+
+global fname_ bayestopt_ estim_params_ options_
+
+number_of_grid_points = 2^9;      % 2^9 = 512 !... Must be a power of two.
+bandwidth = 0;                    % Rule of thumb optimal bandwidth parameter.
+kernel_function = 'gaussian';     % Gaussian kernel for Fast Fourrier Transform approximaton.  
+             
+
+mcsimulations = zeros(number_of_simulations,1);
+
+if number_of_blocks == 1
+	EndOfFile = number_of_simulations_per_file(first_mh_file+1)-first_line+1;
+	instr = [fname_ '_mh' int2str(first_mh_file)];
+	eval(['load ' instr]);
+	clear post2 logpo2;
+    mcsimulations(1:EndOfFile) = x2(first_line:end,indx);
+	OldEndOfFile = EndOfFile;
+	for f = first_mh_file+1:number_of_mh_files
+		NewEndOfFile = number_of_simulations_per_file(f+1);
+       	instr = [fname_ '_mh' int2str(f)];
+		eval(['load ' instr]);
+		clear post2 logpo2;
+		mcsimulations(OldEndOfFile+1:OldEndOfFile+NewEndOfFile) = x2(:,indx);
+		OldEndOfFile = OldEndOfFile + NewEndOfFile;
+	end
+	clear x2;
+else
+	EndOfFile = number_of_simulations_per_file(first_mh_file+1)-first_line+1;
+	NewStartLine = 0;
+	inst = [fname_ '_mh' int2str(first_mh_file)];
+	for b = 1:number_of_blocks
+		instr = [inst '_blck' int2str(b)];
+		eval(['load ' instr]);
+		clear post2 logpo2;
+       	mcsimulations(NewStartLine+1:NewStartLine+EndOfFile,1) = x2(first_line:end,indx);
+		NewStartLine = NewStartLine + EndOfFile;
+	end
+	for f = first_mh_file+1:number_of_mh_files
+		EndOfFile = number_of_simulations_per_file(f+1);
+       	inst = [fname_ '_mh' int2str(f)];
+		for B = 1:number_of_blocks
+			instr = [inst '_blck' int2str(b)];
+			eval(['load ' instr]);
+			clear post2 logpo2;
+			mcsimulations(NewStartLine+1:NewStartLine+EndOfFile,1) = x2(:,indx);
+			NewStartLine = NewStartLine + EndOfFile;
+		end
+	end
+	clear x2;
+end
+
+[nam,texnam] = get_the_name(indx,TeX);
+
+%% Kernel estimator of the posterior density:
+optimal_bandwidth = mh_optimal_bandwidth(mcsimulations,number_of_simulations,bandwidth,kernel_function); 
+[x1,f1] = kernel_density_estimate(mcsimulations,number_of_grid_points,...
+    optimal_bandwidth,kernel_function);
+binf1 = x1(1);
+bsup1 = x1(length(x1));
+
+%% Prior density:
+[x2,f2,abscissa,dens,binf2,bsup2] = draw_prior_density(indx);
+clear abscissa dens;
+
+borneinf = min(binf1,binf2);
+bornesup = max(bsup1,bsup2);
+top      = max([max(f1);max(f2)]);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/posterior_moments.m b/tags/v_3.062/matlab/posterior_moments.m
new file mode 100644
index 0000000000..ca76751dd0
--- /dev/null
+++ b/tags/v_3.062/matlab/posterior_moments.m
@@ -0,0 +1,25 @@
+function [post_mean, min_interval] = posterior_moments(x2)
+% computes mean and minimum interval from posterior draws generated by metropolis.m
+  global options_
+  
+  n = size(x2,1);
+  np = size(x2,2);
+  
+  post_mean = mean(x2(1:end,:))';
+  
+  n1 = round((1-options_.mh_conf_sig)*n);
+  k = zeros(n1,1);
+  for i = 1:np
+    x3 = sort(x2(1:end,i));
+  
+    j2 = n-n1;
+    for j1 = 1:n1
+      k(j1) = x3(j2)-x3(j1);
+      j2 = j2 + 1;
+    end
+    
+    [kmin,k1] = min(k);
+    
+    min_interval(i,:) = [x3(k1) x3(k1)+kmin];
+  end
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/print_info.m b/tags/v_3.062/matlab/print_info.m
new file mode 100644
index 0000000000..4ce5d9ea3a
--- /dev/null
+++ b/tags/v_3.062/matlab/print_info.m
@@ -0,0 +1,39 @@
+% Copyright (C) 2005 Michel Juillard
+%
+function print_info(info)
+  global options_
+
+  options_ = set_default_option(options_,'noprint',0);
+  
+  if ~options_.noprint
+    if info(1) > 10 & info(1) < 20
+      disp('Failure in dr_algo=2')
+      info(1) = info(1) - 10;
+    end
+    switch info(1)
+     case 1
+      error(['The model doesn''t determine the current variables' ...
+	     ' uniquely'])
+     case 2
+      error(['MJDGGES returns the following error code' ...
+	     int2str(info(2))])
+     case 3
+      error(['Blanchard Kahn conditions are not satisfied: no stable' ...
+	     ' equilibrium'])
+     case 4
+      error(['Blanchard Kahn conditions are not satisfied:' ...
+	     ' indeterminacy'])
+     case 5
+      error(['Blanchard Kahn conditions are not satisfied:' ...
+	     ' indeterminacy due to rank failure'])
+     case 20
+      error(['Impossible to find the steady state. Either the model' ...
+	     ' doesn''t have a unique steady state of the guess values' ...
+	     ' are too far from the solution']) 
+     case 30
+      error('Variance can''t be computed')
+     otherwise
+      error('This case shouldn''t happen. Contact the authors of Dynare')
+    end
+  end
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/prior_bounds.m b/tags/v_3.062/matlab/prior_bounds.m
new file mode 100644
index 0000000000..eaac03928c
--- /dev/null
+++ b/tags/v_3.062/matlab/prior_bounds.m
@@ -0,0 +1,46 @@
+function bounds = prior_bounds(bayestopt)
+  global options_
+  
+  pshape = bayestopt.pshape;
+  pmean = bayestopt.pmean;
+  p1 = bayestopt.p1;
+  p2 = bayestopt.p2;
+  p3 = bayestopt.p3;
+  p4 = bayestopt.p4;
+  
+  n = length(pmean);
+  bounds = zeros(n,2);
+  
+  for i=1:n
+    switch pshape(i)
+     case 1
+      mu = (pmean(i)-p3(i))/(p4(i)-p3(i));
+      stdd = p2(i)/(p4(i)-p3(i));
+      A = (1-mu)*mu^2/stdd^2 - mu;
+      B = A*(1/mu - 1);
+      bounds(i,1) = qbeta(options_.prior_trunc,A,B)*(p4(i)-p3(i))+p3(i);
+      bounds(i,2) = qbeta(1-options_.prior_trunc,A,B)*(p4(i)-p3(i))+p3(i);
+     case 2
+      b = p2(i)^2/(pmean(i)-p3(i));
+      a = (pmean(i)-p3(i))/b;
+      bounds(i,1) = mj_qgamma(options_.prior_trunc,a)*b+p3(i);
+      bounds(i,2) = mj_qgamma(1-options_.prior_trunc,a)*b+p3(i);
+     case 3
+      bounds(i,1) = qnorm(options_.prior_trunc,pmean(i),p2(i));
+      bounds(i,2) = qnorm(1-options_.prior_trunc,pmean(i),p2(i));
+     case 4
+      nu = p2(i);
+      mu = pmean(i);
+      beta = ( gamma( (nu-1)/2 ) / mu / gamma( nu/2 ) )^2;
+      a=2/beta;
+      bounds(i,1) = 1/sqrt(mj_qgamma(1-options_.prior_trunc,p2(i)/2)*beta);
+      bounds(i,2) = 1/sqrt(mj_qgamma(options_.prior_trunc,p2(i)/2)*beta);
+     case 5
+      bounds(i,1) = p1(i);
+      bounds(i,2) = p2(i);
+     otherwise
+      bounds(i,1) = -Inf;
+      bounds(i,2) = Inf;
+    end
+  end
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/priordens.m b/tags/v_3.062/matlab/priordens.m
new file mode 100644
index 0000000000..77e41eff9d
--- /dev/null
+++ b/tags/v_3.062/matlab/priordens.m
@@ -0,0 +1,48 @@
+function lnprior = priordens(para, pshape, p1, p2, p3, p4)
+
+% This procedure computes a prior density for
+% the structural parameters of the DSGE models
+% pshape: 0 is point mass, both para and p2 are ignored
+%         1 is BETA(mean,stdd)
+%         2 is GAMMA(mean,stdd)
+%         3 is NORMAL(mean,stdd)
+%         4 is INVGAMMA(s^2,nu)
+%         5 is UNIFORM [p3,p4]
+
+lnprior = 0;
+nprio = length(pshape);
+
+i = 1;
+while i <=  nprio;
+a = 0;
+b = 0;
+
+   if pshape(i) == 1;     % (generalized) BETA Prior 
+     mu = (p1(i)-p3(i))/(p4(i)-p3(i));
+     stdd = p2(i)/(p4(i)-p3(i));
+     a = (1-mu)*mu^2/stdd^2 - mu;
+     b = a*(1/mu - 1);
+     lnprior = lnprior + lpdfgbeta(para(i),a,b,p3(i),p4(i))   ;
+   elseif pshape(i) == 2; % GAMMA PRIOR 
+     b = p2(i)^2/(p1(i)-p3(i));
+     a = (p1(i)-p3(i))/b;
+     lnprior = lnprior + lpdfgam(para(i)-p3(i),a,b);
+   elseif pshape(i) == 3; % GAUSSIAN PRIOR 
+     lnprior = lnprior + lpdfnorm(para(i),p1(i),p2(i));
+   elseif pshape(i) == 4; % INVGAMMA1 PRIOR 
+     lnprior = lnprior + lpdfig1(para(i),p1(i),p2(i));
+   elseif pshape(i) == 5; % UNIFORM PRIOR 
+     lnprior = lnprior + log(1/(p2(i)-p1(i)));
+   elseif pshape(i) == 6; % INVGAMMA2 PRIOR 
+     lnprior = lnprior + lpdfig2(para(i),p1(i),p2(i));
+   end;
+  i = i+1;
+end;
+
+% 10/11/03 MJ adapted from an earlier version in GAUSS by F. Schorfheide
+%             and translated to Matlab by R. Wouters
+% 11/18/03 MJ adopted M.Ratto's suggestion for inverse gamma
+%             changed order of input parameters
+% 01/16/04 MJ added invgamma2
+%             for invgamma p2 is now standard error
+% 16/02/04 SA changed beta prior call
diff --git a/tags/v_3.062/matlab/qbeta.m b/tags/v_3.062/matlab/qbeta.m
new file mode 100644
index 0000000000..d20ce1ad62
--- /dev/null
+++ b/tags/v_3.062/matlab/qbeta.m
@@ -0,0 +1,26 @@
+function x = qbeta(p,a,b)
+%QBETA    The beta inverse distribution function
+%
+%         x = qbeta(p,a,b)
+
+%       Anders Holtsberg, 27-07-95
+%       Copyright (c) Anders Holtsberg
+
+if any(any((a<=0)|(b<=0)))
+   error('Parameter a or b is nonpositive')
+end
+if any(any(abs(2*p-1)>1))
+   error('A probability should be 0<=p<=1, please!')
+end
+b = min(b,100000);
+
+x = a ./ (a+b);
+dx = 1;
+while any(any(abs(dx)>256*eps*max(x,1)))
+   dx = (betainc(x,a,b) - p) ./ dbeta(x,a,b);
+   x = x - dx;
+   x = x + (dx - x) / 2 .* (x<0);
+   x = x + (1 + (dx - x)) / 2 .* (x>1);
+end
+
+
diff --git a/tags/v_3.062/matlab/qchisq.m b/tags/v_3.062/matlab/qchisq.m
new file mode 100644
index 0000000000..53095656da
--- /dev/null
+++ b/tags/v_3.062/matlab/qchisq.m
@@ -0,0 +1,16 @@
+function x = qchisq(p,a)
+%QCHISQ   The chisquare inverse distribution function
+%
+%         x = qchisq(p,DegreesOfFreedom)
+
+%        Anders Holtsberg, 18-11-93
+%        Copyright (c) Anders Holtsberg
+
+if any(any(abs(2*p-1)>1))
+   error('A probability should be 0<=p<=1, please!')
+end
+if any(any(a<=0))
+   error('DegreesOfFreedom is wrong')
+end
+
+x = qgamma(p,a*0.5)*2;
diff --git a/tags/v_3.062/matlab/qgamma.m b/tags/v_3.062/matlab/qgamma.m
new file mode 100644
index 0000000000..b8086e3e5d
--- /dev/null
+++ b/tags/v_3.062/matlab/qgamma.m
@@ -0,0 +1,27 @@
+function x = qgamma(p,a)
+%QGAMMA   The gamma inverse distribution function
+%
+%         x = qgamma(p,a)
+
+%        Anders Holtsberg, 18-11-93
+%        Copyright (c) Anders Holtsberg
+
+if any(any(abs(2*p-1)>1))
+   error('A probability should be 0<=p<=1, please!')
+end
+if any(any(a<=0))
+   error('Parameter a is wrong')
+end
+
+x = max(a-1,0.1);
+dx = 1;
+while any(any(abs(dx)>256*eps*max(x,1)))
+   dx = (pgamma(x,a) - p) ./ dgamma(x,a,1);
+   x = x - dx;
+   x = x + (dx - x) / 2 .* (x<0);
+end
+
+I0 = find(p==0);
+x(I0) = zeros(size(I0));
+I1 = find(p==1);
+x(I1) = zeros(size(I1)) + Inf;
diff --git a/tags/v_3.062/matlab/qnorm.m b/tags/v_3.062/matlab/qnorm.m
new file mode 100644
index 0000000000..953f2a0324
--- /dev/null
+++ b/tags/v_3.062/matlab/qnorm.m
@@ -0,0 +1,20 @@
+function  x = qnorm(p,m,s)
+%QNORM 	  The normal inverse distribution function
+%
+%         x = qnorm(p,Mean,StandardDeviation)
+
+%       Anders Holtsberg, 13-05-94
+%       Copyright (c) Anders Holtsberg
+
+if nargin<3, s=1; end
+if nargin<2, m=0; end
+
+if any(any(abs(2*p-1)>1))
+   error('A probability should be 0<=p<=1, please!')
+end
+if any(any(s<=0))
+   error('Parameter s is wrong')
+end
+
+x = erfinv(2*p-1).*sqrt(2).*s + m;
+
diff --git a/tags/v_3.062/matlab/qr2.m b/tags/v_3.062/matlab/qr2.m
new file mode 100644
index 0000000000..8355db3bc2
--- /dev/null
+++ b/tags/v_3.062/matlab/qr2.m
@@ -0,0 +1,11 @@
+function [Q,R] = qr2(X)
+% stephane.adjemian@ens.fr [12-07-2005]
+%
+% This routine performs a qr decomposition of matrix X such that the 
+% diagonal scalars of the upper-triangular matrix R are positive.
+[Q,R] = qr(X);
+indx = find(diag(R)<0);
+if ~isempty(indx)
+    Q(:,indx) = -Q(:,indx);
+    R(indx,:) = -R(indx,:);
+end
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/qzdiv.m b/tags/v_3.062/matlab/qzdiv.m
new file mode 100644
index 0000000000..9ea24723b1
--- /dev/null
+++ b/tags/v_3.062/matlab/qzdiv.m
@@ -0,0 +1,34 @@
+% from Chris Sims web site
+% http://eco-072399b.princeton.edu/yftp/gensys/mfiles/QZDIV.M
+%
+
+function [A,B,Q,Z] = qzdiv(stake,A,B,Q,Z)
+%function [A,B,Q,Z] = qzdiv(stake,A,B,Q,Z)
+%
+% Takes U.T. matrices A, B, orthonormal matrices Q,Z, rearranges them
+% so that all cases of abs(B(i,i)/A(i,i))>stake are in lower right 
+% corner, while preserving U.T. and orthonormal properties and Q'AZ' and
+% Q'BZ'.
+%
+[n jnk] = size(A);
+root = abs([diag(A) diag(B)]);
+root(:,1) = root(:,1)-(root(:,1)<1.e-13).*(root(:,1)+root(:,2));
+root(:,2) = root(:,2)./root(:,1);
+for i = n:-1:1
+   m=0;
+   for j=i:-1:1
+      if (root(j,2) > stake | root(j,2) < -.1) 
+         m=j;
+         break
+      end
+   end
+   if (m==0) 
+      return 
+   end
+   for k=m:1:i-1
+      [A B Q Z] = qzswitch(k,A,B,Q,Z);
+      tmp = root(k,2);
+      root(k,2) = root(k+1,2);
+      root(k+1,2) = tmp;
+   end
+end         
diff --git a/tags/v_3.062/matlab/qzswitch.m b/tags/v_3.062/matlab/qzswitch.m
new file mode 100644
index 0000000000..350fc9f160
--- /dev/null
+++ b/tags/v_3.062/matlab/qzswitch.m
@@ -0,0 +1,64 @@
+% from Chris Sims web site
+% http://eco-072399b.princeton.edu/yftp/gensys/mfiles/QZSWITCH.M
+%
+
+function [A,B,Q,Z] = qzswitch(i,A,B,Q,Z)
+%function [A,B,Q,Z] = qzswitch(i,A,B,Q,Z)
+%
+% Takes U.T. matrices A, B, orthonormal matrices Q,Z, interchanges
+% diagonal elements i and i+1 of both A and B, while maintaining
+% Q'AZ' and Q'BZ' unchanged.  If diagonal elements of A and B
+% are zero at matching positions, the returned A will have zeros at both
+% positions on the diagonal.  This is natural behavior if this routine is used
+% to drive all zeros on the diagonal of A to the lower right, but in this case
+% the qz transformation is not unique and it is not possible simply to switch
+% the positions of the diagonal elements of both A and B.
+ realsmall=sqrt(eps)*10;
+%realsmall=1e-3;
+a = A(i,i); d = B(i,i); b = A(i,i+1); e = B(i,i+1);
+c = A(i+1,i+1); f = B(i+1,i+1);
+		% A(i:i+1,i:i+1)=[a b; 0 c];
+		% B(i:i+1,i:i+1)=[d e; 0 f];
+if (abs(c)<realsmall & abs(f)<realsmall)
+	if abs(a)<realsmall
+		% l.r. coincident 0's with u.l. of A=0; do nothing
+		return
+	else
+		% l.r. coincident zeros; put 0 in u.l. of a
+		wz=[b; -a];
+		wz=wz/sqrt(wz'*wz);
+		wz=[wz [wz(2)';-wz(1)'] ];
+		xy=eye(2);
+	end
+elseif (abs(a)<realsmall & abs(d)<realsmall)
+	if abs(c)<realsmall
+		% u.l. coincident zeros with l.r. of A=0; do nothing
+		return
+	else
+		% u.l. coincident zeros; put 0 in l.r. of A
+		wz=eye(2);
+		xy=[c -b];
+		xy=xy/sqrt(xy*xy');
+		xy=[[xy(2)' -xy(1)'];xy];
+	end
+else
+	% usual case
+	wz = [c*e-f*b, (c*d-f*a)'];
+	xy = [(b*d-e*a)', (c*d-f*a)'];
+	n = sqrt(wz*wz');
+	m = sqrt(xy*xy');
+	if m<eps*100
+		% all elements of A and B proportional
+		return
+	end
+   wz = n\wz;
+   xy = m\xy;
+   wz = [wz; -wz(2)', wz(1)'];
+   xy = [xy;-xy(2)', xy(1)'];
+end
+A(i:i+1,:) = xy*A(i:i+1,:);
+B(i:i+1,:) = xy*B(i:i+1,:);
+A(:,i:i+1) = A(:,i:i+1)*wz;
+B(:,i:i+1) = B(:,i:i+1)*wz;
+Z(:,i:i+1) = Z(:,i:i+1)*wz;
+Q(i:i+1,:) = xy*Q(i:i+1,:);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/read_variables.m b/tags/v_3.062/matlab/read_variables.m
new file mode 100644
index 0000000000..38d821291d
--- /dev/null
+++ b/tags/v_3.062/matlab/read_variables.m
@@ -0,0 +1,25 @@
+% Copyright (C) 2005 Michel Juillard
+%
+% all local variables have complicated names in order to avoid name
+% conflicts with possible user variable names
+
+function dyn_data_01=read_variables(file_name_01,var_names_01,dyn_data_01)
+  
+  dyn_size_01 = size(dyn_data_01,1);
+  
+  if exist(file_name_01)
+    dyn_instr_01 = file_name_01;
+  else
+    dyn_instr_01 = ['load ' file_name_01];
+  end
+  
+  eval(dyn_instr_01);
+
+  
+  for dyn_i_01=1:size(var_names_01,1)
+    dyn_tmp_01 = eval(var_names_01(dyn_i_01,:));
+    if length(dyn_tmp_01) > dyn_size_01 & dyn_size_01 > 0
+      error('data size is too large')
+    end
+    dyn_data_01(:,dyn_i_01) = dyn_tmp_01;
+  end
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/reshapel.m b/tags/v_3.062/matlab/reshapel.m
new file mode 100644
index 0000000000..8352191e63
--- /dev/null
+++ b/tags/v_3.062/matlab/reshapel.m
@@ -0,0 +1,22 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function y=reshapel(x,m,n)
+%RESHAPEL Change size.
+%	RESHAPEL(X,M,N) returns the M-by-N matrix whose elements
+%	are taken linewise from X.  An error results if X does
+%	not have M*N elements.
+
+[mm,nn] = size(x);
+
+if mm*nn ~= m*n
+    error('Matrix must have M*N elements.')
+end
+
+[i,j,s] = find(x') ;
+if size(i,2) ~= 1,i = i';end
+k = (j-1)*nn+i ;
+j = rem(k-1,n)+1 ;
+i = (k-j)/n+1 ;
+y = full(sparse(i,j,s,m,n)) ;
+
+return ;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/resid.m b/tags/v_3.062/matlab/resid.m
new file mode 100644
index 0000000000..fd1cf89549
--- /dev/null
+++ b/tags/v_3.062/matlab/resid.m
@@ -0,0 +1,37 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function resid(iter_)
+  global valf_ ex_ y_ it_ exe_ ys_ ys0_ iy_ ykmin_ ykmax_ endval_ z
+  global fname_ xkmin_ xkmax_
+  
+  ex_ = ones(xkmin_+xkmax_+iter_,1)*exe_';
+  n = size(iy_,2);
+%  if ~ valf_ | size(y_,2) ~= iter_+ykmin_+ykmax_
+  if ~ valf_ 
+    if size(ys_,1) == 1 & ys_ == 0
+      ys_ = zeros(size(ys_,1),1) ;
+    end
+    y_ = ys_*ones(1,iter_+ykmin_+ykmax_) ;
+    if endval_ == 1
+      y_(:,1:ykmin_) = ys0_*ones(1,ykmin_) ;
+    end
+  end
+
+  i = iy_';
+  iyr0 = find(i(:));
+
+  y =y_(:);
+  z = zeros(n,iter_);
+  fh = str2func([fname_ '_ff']);
+  for it_=ykmin_+1:iter_+ykmin_
+    z(:,it_-ykmin_) = feval(fh,y(iyr0));
+    iyr0 = iyr0 + n;
+  end
+
+  disp([[1:iter_]' z']); 
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/resid0.m b/tags/v_3.062/matlab/resid0.m
new file mode 100644
index 0000000000..ec0223c816
--- /dev/null
+++ b/tags/v_3.062/matlab/resid0.m
@@ -0,0 +1,34 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function resid0
+  global iter_ valf_ ex_ y_ it_ exe_ ys_ iy_ ykmin_ ykmax_ endval_ z
+  global fname_
+  
+  n = size(iy_,2);
+%  if ~ valf_ | size(y_,2) ~= iter_+ykmin_+ykmax_
+  if ~ valf_ 
+    if size(ys_,1) == 1 & ys_ == 0
+      ys_ = zeros(size(ys_,1),1) ;
+    end
+    y_ = ys_*ones(1,iter_+ykmin_+ykmax_) ;
+    if endval_ == 1
+      y_(:,1:ykmin_) = ys0_*ones(1,ykmin_) ;
+    end
+  end
+
+  i = iy_';
+  iyr0 = find(i(:));
+
+  y =y_(:);
+  it_ = ykmin_+1;
+  fh = str2func([fname_ '_fff']);
+  z = feval(fh,ys_);
+
+
+  disp(z'); 
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/resol.m b/tags/v_3.062/matlab/resol.m
new file mode 100644
index 0000000000..b53fa17987
--- /dev/null
+++ b/tags/v_3.062/matlab/resol.m
@@ -0,0 +1,70 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function [dr,info]=resol(ys,check_flag)
+% info: same as dr1 
+% plus: 
+% 11 .... same as dr1 for dr_algo = 2
+% 20: can't find steady state info(2) contains sum of sqare residuals
+  
+global jacobia_ iy_ ykmin_ ykmax_ gstep_ exo_nbr exo_det_nbr endo_nbr
+global ex_ ex_det_ valf_ it_ exe_ exe_det_ xkmin_ xkmax_ 
+global fname_ means_ stderrs_ lgy_ maxit_
+global dynatol_ options_
+
+options_ = set_default_option(options_,'olr',0);
+info = 0;
+
+it_ = ykmin_ + 1 ;
+
+if exo_nbr == 0
+  exe_ = [] ;
+end
+
+% check if ys is steady state
+tempex = ex_;
+tempexdet = ex_det_;
+ex_ = repmat(exe_',xkmin_+xkmax_+1,1);
+if exo_det_nbr > 0 
+  ex_det_ = ones(ykmin_+1,1)*exe_det_';
+end
+fh = str2func([fname_ '_fff']);
+if max(abs(feval(fh,ys))) > dynatol_ & options_.olr == 0
+  if exist([fname_ '_steadystate'])
+    [dr.ys,check1] = feval([fname_ '_steadystate'],ys);
+  else
+    [dr.ys,check1] = dynare_solve([fname_ '_fff'],ys);
+  end
+  if check1
+    info(1) = 20;
+    resid = feval(fh,ys);
+    info(2) = resid'*resid; % penalty...
+    return
+  end
+else 
+  dr.ys = ys;
+end
+
+dr.fbias = zeros(endo_nbr,1);
+[dr,info] = dr1(dr,check_flag);
+
+if info(1)
+  return
+end
+
+if options_.dr_algo == 1 & options_.order > 1
+  dr.ys = dynare_solve('dr2',ys,dr);
+  dr.fbias = 2*feval([fname_ '_fff'],dr.ys);
+  [dr, info1] = dr1(dr,check_flag);
+  if info1(1)
+    info(1) = info(1)+10;
+    return
+  end
+end
+ex_det_ = tempexdet;
+ex_ = tempex;
+tempex = [];
+
+% 01/01/2003 MJ added dr_algo == 1
+% 08/24/2001 MJ uses Schmitt-Grohe and Uribe (2001) constant correction
+%               in dr.ghs2 
+% 05/26/2003 MJ added temporary values for ex_
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/rfrot.m b/tags/v_3.062/matlab/rfrot.m
new file mode 100644
index 0000000000..870634bee0
--- /dev/null
+++ b/tags/v_3.062/matlab/rfrot.m
@@ -0,0 +1,14 @@
+% Copyright (C) 2001 Michel Juillard
+%
+% apply fast Givens rotation to a pair of rows
+
+function [a] = rfrot(a, alph, bet, type)
+     if type == 1
+         tau = bet*a(1,:) + a(2,:);
+         a(2,:) = a(1,:) + alph*a(2,:);
+         a(1,:) = tau;
+     else
+         tau = a(1,:) + bet*a(2,:);
+         a(2,:) = alph*a(1,:) + a(2,:);
+         a(1,:) = tau;
+     end
diff --git a/tags/v_3.062/matlab/rfvar3.m b/tags/v_3.062/matlab/rfvar3.m
new file mode 100644
index 0000000000..cd16ab1f9f
--- /dev/null
+++ b/tags/v_3.062/matlab/rfvar3.m
@@ -0,0 +1,106 @@
+function var=rfvar3(ydata,lags,xdata,breaks,lambda,mu)
+%function var=rfvar3(ydata,lags,xdata,breaks,lambda,mu)
+% This algorithm goes for accuracy without worrying about memory requirements.
+% ydata:   dependent variable data matrix
+% xdata:   exogenous variable data matrix
+% lags:    number of lags
+% breaks:  rows in ydata and xdata after which there is a break.  This allows for
+%          discontinuities in the data (e.g. war years) and for the possibility of
+%          adding dummy observations to implement a prior.  This must be a column vector.
+%          Note that a single dummy observation becomes lags+1 rows of the data matrix,
+%          with a break separating it from the rest of the data.  The function treats the 
+%          first lags observations at the top and after each "break" in ydata and xdata as
+%          initial conditions. 
+% lambda:  weight on "co-persistence" prior dummy observations.  This expresses
+%          belief that when data on *all* y's are stable at their initial levels, they will
+%          tend to persist at that level.  lambda=5 is a reasonable first try.  With lambda<0,
+%          constant term is not included in the dummy observation, so that stationary models
+%          with means equal to initial ybar do not fit the prior mean.  With lambda>0, the prior
+%          implies that large constants are unlikely if unit roots are present.
+% mu:      weight on "own persistence" prior dummy observation.  Expresses belief
+%          that when y_i has been stable at its initial level, it will tend to persist
+%          at that level, regardless of the values of other variables.  There is
+%          one of these for each variable.  A reasonable first guess is mu=2.
+%      The program assumes that the first lags rows of ydata and xdata are real data, not dummies.
+%      Dummy observations should go at the end, if any.  If pre-sample x's are not available,
+%      repeating the initial xdata(lags+1,:) row or copying xdata(lags+1:2*lags,:) into 
+%      xdata(1:lags,:) are reasonable subsititutes.  These values are used in forming the
+%      persistence priors.
+% Code written by Christopher Sims.  This version 6/15/03.
+[T,nvar]=size(ydata);
+nox=isempty(xdata);
+if ~nox
+   [T2,nx]=size(xdata);
+else
+   T2=T;nx=0;xdata=zeros(T2,0);
+end
+% note that x must be same length as y, even though first part of x will not be used.
+% This is so that the lags parameter can be changed without reshaping the xdata matrix.
+if T2 ~= T, disp('Mismatch of x and y data lengths'),end
+if nargin<4
+   nbreaks=0;breaks=[];
+else
+   nbreaks=length(breaks);
+end
+breaks=[0;breaks;T];
+smpl=[];
+for nb=1:nbreaks+1
+   smpl=[smpl;[breaks(nb)+lags+1:breaks(nb+1)]'];
+end
+Tsmpl=size(smpl,1);
+X=zeros(Tsmpl,nvar,lags);
+for is=1:length(smpl)
+    X(is,:,:)=ydata(smpl(is)-(1:lags),:)';
+end
+X=[X(:,:) xdata(smpl,:)];
+y=ydata(smpl,:);
+% Everything now set up with input data for y=Xb+e 
+% ------------------Form persistence dummies-------------------
+if lambda~=0 | mu>0
+   ybar=mean(ydata(1:lags,:),1);
+   if ~nox 
+      xbar=mean(xdata(1:lags,:),1);
+   else
+      xbar=[];
+   end
+   if lambda~=0
+      if lambda>0
+         xdum=lambda*[repmat(ybar,1,lags) xbar];
+      else
+         lambda=-lambda;
+         xdum=lambda*[repmat(ybar,1,lags) zeros(size(xbar))];
+      end
+      ydum=zeros(1,nvar);
+      ydum(1,:)=lambda*ybar;
+      y=[y;ydum];
+      X=[X(:,:);xdum];
+   end
+   if mu>0
+      xdum=[repmat(diag(ybar),1,lags) zeros(nvar,nx)]*mu;
+      ydum=mu*diag(ybar);
+      X=[X;xdum];
+      y=[y;ydum];
+   end
+end
+[vl,d,vr]=svd(X(:,:),0);
+di=1../diag(d);
+B=vl'*y;
+B=(vr.*repmat(di',nvar*lags+nx,1))*B;
+u=y-X(:,:)*B;
+xxi=vr.*repmat(di',nvar*lags+nx,1);
+xxi=xxi*xxi';
+B=reshape(B,[nvar*lags+nx,nvar]); % rhs variables, equations
+By=B(1:nvar*lags,:);
+By=reshape(By,nvar,lags,nvar);% variables, lags, equations
+By=permute(By,[3,1,2]); %equations, variables, lags to match impulsdt.m
+if nox
+   Bx=[];
+else
+   Bx=B(nvar*lags+(1:nx),:)';
+end
+%logintlh=matrictint(u'*u,xxi,size(X,1)-nvar-1)-.5*nvar*(nvar+1)*log(2*pi);
+var.By=By;var.Bx=Bx;var.u=u;var.xxi=xxi;%var.logintlh=logintlh;  
+% Desired features: 1) automatic dummies for vcv prior
+%                   2) automatic calculation of integrated pdf, accounting
+%                      for the dummy variables as a prior
+%                   3) automatic dummies for "Minnesota prior"
diff --git a/tags/v_3.062/matlab/rndprior.m b/tags/v_3.062/matlab/rndprior.m
new file mode 100644
index 0000000000..b4b1d6824a
--- /dev/null
+++ b/tags/v_3.062/matlab/rndprior.m
@@ -0,0 +1,52 @@
+function y = rndprior(bayestopt_)
+
+pshape=bayestopt_.pshape;
+pmean=bayestopt_.pmean;
+p2=bayestopt_.p2;
+p3=bayestopt_.p3;
+p4=bayestopt_.p4;
+ 
+for i=1:length(pmean),
+    
+    switch pshape(i)
+        
+     case 1 %'beta'
+      mu = (pmean(i)-p3(i))/(p4(i)-p3(i));
+      stdd = p2(i)/(p4(i)-p3(i));
+      A = (1-mu)*mu^2/stdd^2 - mu;
+      B = A*(1/mu - 1);
+      y(1,i) = beta_rnd(1, A, B);
+      y(1,i) = y(1,i) * (p4(i)-p3(i)) + p3(i);
+      
+     case 2 %'gamma'
+      mu = pmean(i)-p3(i);
+      B = mu/p2(i)^2;              %gamm_rnd uses 1/B instead of B as param.
+      A = mu/B;
+      y(1,i) = gamm_rnd(1, A, B);
+      y(1,i) = y(1,i) + p3(i);
+      
+     case 3 %'normal'
+      MU = pmean(i);
+      SIGMA = p2(i);
+      y(1,i) = randn*SIGMA+ MU;
+      
+     case 4 %'invgamma'
+      nu = p2(i);
+      mu = pmean(i);
+      a = nu/2;;
+      b = ( gamma( (nu-1)/2 ) / mu / gamma( nu/2 ) )^2;
+      A = b/2;
+      B = 2/a;
+      y(1,i) = gamm_rnd(1, A, B);        
+      y(1,i) = 1/y(1,i)^(0.5);
+      
+     case 5 %'uniform'
+      y(1,i) = rand*(p4(i)-p3(i)) + p3(i);
+      
+    end
+end
+
+% initial version by Marco Ratto
+% 11/17/03 MJ made Uniform case 5
+% 11/17/03 MJ changed pstdd -> p2, lb -> p3, ub -> p4
+
diff --git a/tags/v_3.062/matlab/rows.m b/tags/v_3.062/matlab/rows.m
new file mode 100644
index 0000000000..86a85d7bb4
--- /dev/null
+++ b/tags/v_3.062/matlab/rows.m
@@ -0,0 +1,2 @@
+function nr=rows(x)
+  nr = size(x,1);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/rplot.m b/tags/v_3.062/matlab/rplot.m
new file mode 100644
index 0000000000..d3ca886174
--- /dev/null
+++ b/tags/v_3.062/matlab/rplot.m
@@ -0,0 +1,80 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function rplot(s1,rplottype)
+% RPLOT :		RPLOT ( ['var1'; 'var2';  ...] , rplottype )	
+%		This optionnal command creates the plot of the variable
+%		trajectory. By default, the entire simulation period is 
+%		ploted. The instruction DSAMPLE permits to reduce the 
+%		number of periods in the plot.
+		
+global lgy_ lgx_ y_ ykmin_ ykmax_ iter_
+global dsmpl_ ys_
+
+if nargin == 1
+	rplottype = 0;
+end
+
+col = ['y','c','r','g','b','w','m'] ;
+ix = [1 - ykmin_:size(y_,2)-ykmin_]' ;
+
+y = [];
+for k=1:size(s1,1)
+  if isempty(strmatch(s1(k,:),lgy_,'exact'))
+    error (['One of the variable specified does not exist']) ;
+  end
+
+  y = [y; y_(strmatch(s1(k,:),lgy_,'exact'),:)] ;
+end
+
+if dsmpl_ == 0
+        i = [ykmin_:size(y_,2)]' ;
+else
+	i = [dsmpl_(1)+ykmin_:dsmpl_(2)+ykmin_]' ;
+end
+
+t = ['Plot of '] ;
+if rplottype == 0
+	for j = 1:size(y,1)
+		t = [t s1(j,:) ' '] ;
+	end
+        figure ;
+        plot(ix(i),y(:,i)) ;
+	title (t,'Interpreter','none') ;
+	xlabel('Periods') ;
+	if size(s1,1) > 1
+	  legend(s1,0);
+	end
+elseif rplottype == 1
+	for j = 1:size(y,1)
+		figure ;
+		plot(ix(i),y(j,i)) ;
+		title(['Plot of ' s1(:,j)]) ;
+		xlabel('Periods') ;
+	end
+elseif rplottype == 2
+	figure ;
+	nl = max(1,fix(size(y,1)/4)) ;
+	nc = ceil(size(y,1)/nl) ;
+	for j = 1:size(y,1)
+		subplot(nl,nc,j) ;
+		plot(ix(i),y(j,i)) ;
+		hold on ;
+		plot(ix(i),ys_(j)*ones(1,size(i,1)),'w:') ;
+		xlabel('Periods') ;
+		ylabel([s1(:,j)]) ;
+		title(['Plot of ' s1(:,j)]) ;
+	end
+end
+
+% 02/28/01 MJ replaced bseastr by MATLAB's strmatch
+% 06/19/01 MJ added 'exact' to strmatch calls
+% 06/25/03 MJ correction when dsmpl_ ~= 0
+
+
+
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/selif.m b/tags/v_3.062/matlab/selif.m
new file mode 100644
index 0000000000..7c75d58991
--- /dev/null
+++ b/tags/v_3.062/matlab/selif.m
@@ -0,0 +1,12 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function x = selif(a,b)
+
+if size(b,2) ~= 1
+	error ('The second argument in SELIF must be � column vector') ;
+end
+
+x = a(find(b == 1),:) ;
+
+return ;
+
diff --git a/tags/v_3.062/matlab/set_default_option.m b/tags/v_3.062/matlab/set_default_option.m
new file mode 100644
index 0000000000..126a19f43f
--- /dev/null
+++ b/tags/v_3.062/matlab/set_default_option.m
@@ -0,0 +1,10 @@
+function options=set_default_option(options,field,default)
+  if ~isfield(options,field)
+    if sscanf(version('-release'),'%d') < 13
+      options = setfield(options,field,default);
+    else
+      eval('options.(field) = default;');
+    end
+  end
+  
+  % 06/07/03 MJ added ; to eval expression
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/set_parameters.m b/tags/v_3.062/matlab/set_parameters.m
new file mode 100644
index 0000000000..e6b3b7f6eb
--- /dev/null
+++ b/tags/v_3.062/matlab/set_parameters.m
@@ -0,0 +1,18 @@
+function set_parameters(xparam1)
+  global estim_params_ Sigma_e_
+  
+  for i=1:estim_params_.nvx
+    k =estim_params_.var_exo(i,1);
+    Sigma_e_(k,k) = xparam1(i)*xparam1(i);
+  end
+  offset = estim_params_.nvx+estim_params_.nvn;
+  for i=1:estim_params_.ncx
+    k1 =estim_params_.corrx(i,1);
+    k2 =estim_params_.corrx(i,2);
+    Sigma_e_(k1,k2) = xparam1(i+offset)*sqrt(Sigma_e_(k1,k1)*Sigma_e_(k2,k2));
+    Sigma_e_(k2,k1) = Sigma_e_(k1,k2);
+  end
+  offset = offset+estim_params_.ncx+estim_params_.ncn;
+  for i=1:estim_params_.np
+    assignin('base',deblank(estim_params_.param_names(i,:)),xparam1(i+offset));
+  end
diff --git a/tags/v_3.062/matlab/set_prior.m b/tags/v_3.062/matlab/set_prior.m
new file mode 100644
index 0000000000..c15b01fd7c
--- /dev/null
+++ b/tags/v_3.062/matlab/set_prior.m
@@ -0,0 +1,146 @@
+function [xparam1,estim_params_,bayestopt_,lb,ub]=set_prior(estim_params_)
+  global lgx_ lgy_ options_
+  
+  nvx = size(estim_params_.var_exo,1);
+  nvn = size(estim_params_.var_endo,1);
+  ncx = size(estim_params_.corrx,1);
+  ncn = size(estim_params_.corrn,1);
+  np = size(estim_params_.param_vals,1);
+  
+  estim_params_.nvx = nvx;
+  estim_params_.nvn = nvn;
+  estim_params_.ncx = ncx;
+  estim_params_.ncn = ncn;
+  estim_params_.np = np;
+  
+  xparam1 = [];
+  ub = [];
+  lb = [];
+  bayestopt_.pshape = [];
+  bayestopt_.pmean = [];
+  bayestopt_.pstdev = [];
+  bayestopt_.p1 = [];
+  bayestopt_.p2 = [];
+  bayestopt_.p3 = [];
+  bayestopt_.p4 = [];
+  bayestopt_.jscale = [];
+  bayestopt_.name = [];
+  if nvx
+    xparam1 = estim_params_.var_exo(:,2);
+    ub = estim_params_.var_exo(:,4); 
+    lb = estim_params_.var_exo(:,3); 
+    bayestopt_.pshape =  estim_params_.var_exo(:,5);
+    bayestopt_.pmean =  estim_params_.var_exo(:,6);
+    bayestopt_.pstdev =  estim_params_.var_exo(:,7);
+    bayestopt_.p3 =  estim_params_.var_exo(:,8);
+    bayestopt_.p4 =  estim_params_.var_exo(:,9);
+    bayestopt_.jscale =  estim_params_.var_exo(:,10);
+    bayestopt_.name = cellstr(lgx_(estim_params_.var_exo(:,1),:));
+  end
+  if nvn
+    for i=1:nvn
+      estim_params_.var_endo(i,1) = strmatch(deblank(lgy_(estim_params_.var_endo(i,1),:)),deblank(options_.varobs),'exact');
+    end
+    xparam1 = [xparam1; estim_params_.var_endo(:,2)];
+    ub = [ub; estim_params_.var_endo(:,4)]; 
+    lb = [lb; estim_params_.var_endo(:,3)]; 
+    bayestopt_.pshape = [ bayestopt_.pshape; estim_params_.var_endo(:,5)];
+    bayestopt_.pmean = [ bayestopt_.pmean; estim_params_.var_endo(:,6)];
+    bayestopt_.pstdev = [ bayestopt_.pstdev; estim_params_.var_endo(:,7)];
+    bayestopt_.p3 = [ bayestopt_.p3; estim_params_.var_endo(:,8)];
+    bayestopt_.p4 = [ bayestopt_.p4; estim_params_.var_endo(:,9)];
+    bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.var_endo(:,10)];
+    bayestopt_.name = cellstr(strvcat(char(bayestopt_.name),...
+				      lgy_(estim_params_.var_endo(:,1),:)));
+  end
+  if ncx
+    xparam1 = [xparam1; estim_params_.corrx(:,3)];
+    ub = [ub; max(min(estim_params_.corrx(:,5),1),-1)];
+    lb = [lb; max(min(estim_params_.corrx(:,4),1),-1)];
+    bayestopt_.pshape = [ bayestopt_.pshape; estim_params_.corrx(:,6)];
+    bayestopt_.pmean = [ bayestopt_.pmean; estim_params_.corrx(:,7)];
+    bayestopt_.pstdev = [ bayestopt_.pstdev; estim_params_.corrx(:,8)];
+    bayestopt_.p3 = [ bayestopt_.p3; estim_params_.corrx(:,9)];
+    bayestopt_.p4 = [ bayestopt_.p4; estim_params_.corrx(:,10)];
+    bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.corrx(:,11)];
+    bayestopt_.name = cellstr(strvcat(char(bayestopt_.name),...
+				      char(strcat(cellstr(lgx_(estim_params_.corrx(:,1),:)),...
+						  ',',...
+						  cellstr(lgx_(estim_params_.corrx(:,2),:))))));
+  end
+  if ncn
+    xparam1 = [xparam1; estim_params_.corrn(:,3)];
+    ub = [ub; max(min(estim_params_.corrn(:,5),1),-1)];
+    lb = [lb; max(min(estim_params_.corrn(:,4),1),-1)];
+    bayestopt_.pshape = [ bayestopt_.pshape; estim_params_.corrn(:,6)];
+    bayestopt_.pmean = [ bayestopt_.pmean; estim_params_.corrn(:,7)];
+    bayestopt_.pstdev = [ bayestopt_.pstdev; estim_params_.corrn(:,8)];
+    bayestopt_.p3 = [ bayestopt_.p3; estim_params_.corrn(:,9)];
+    bayestopt_.p4 = [ bayestopt_.p4; estim_params_.corrn(:,10)];
+    bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.corrn(:,11)];
+    bayestopt_.name = cellstr(strvcat(char(bayestopt_.name),...
+				      char(strcat(cellstr(lgy_(estim_params_.corrn(:,1),:)),...
+						  ',',...
+						  cellstr(lgy_(estim_params_.corrn(:,2),:))))));
+  end
+  if np
+    xparam1 = [xparam1; estim_params_.param_vals(:,1)];
+    ub = [ub; estim_params_.param_vals(:,3)];
+    lb = [lb; estim_params_.param_vals(:,2)];
+    bayestopt_.pshape = [ bayestopt_.pshape; estim_params_.param_vals(:,4)];
+    bayestopt_.pmean = [ bayestopt_.pmean; estim_params_.param_vals(:,5)];
+    bayestopt_.pstdev = [ bayestopt_.pstdev; estim_params_.param_vals(:,6)];
+    bayestopt_.p3 = [ bayestopt_.p3; estim_params_.param_vals(:,7)];
+    bayestopt_.p4 = [ bayestopt_.p4; estim_params_.param_vals(:,8)];
+    bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.param_vals(:, ...
+						  9)];
+    bayestopt_.name = cellstr(strvcat(char(bayestopt_.name),estim_params_.param_names));
+  end
+
+  bayestopt_.ub = ub;
+  bayestopt_.lb = lb;
+  
+  bayestopt_.p1 = bayestopt_.pmean;
+  bayestopt_.p2 = bayestopt_.pstdev;
+  
+  % generalized location parameters by default for beta distribution
+  k = find(bayestopt_.pshape == 1);
+  k1 = find(isnan(bayestopt_.p3(k)));
+  bayestopt_.p3(k(k1)) = zeros(length(k1),1);
+  k1 = find(isnan(bayestopt_.p4(k)));
+  bayestopt_.p4(k(k1)) = ones(length(k1),1);
+  
+  % generalized location parameter by default for gamma distribution
+  k = find(bayestopt_.pshape == 2);
+  k1 = find(isnan(bayestopt_.p3(k)));
+  bayestopt_.p3(k(k1)) = zeros(length(k1),1);
+  
+  % truncation parameters by default for normal distribution
+  k = find(bayestopt_.pshape == 3);
+  k1 = find(isnan(bayestopt_.p3(k)));
+  bayestopt_.p3(k(k1)) = -Inf*ones(length(k1),1);
+  k1 = find(isnan(bayestopt_.p4(k)));
+  bayestopt_.p4(k(k1)) = Inf*ones(length(k1),1);
+
+  k = find(bayestopt_.pshape == 4);
+  for i=1:length(k)
+    [bayestopt_.p1(k(i)),bayestopt_.p2(k(i))] = ...
+	inverse_gamma_specification(bayestopt_.pmean(k(i)),bayestopt_.pstdev(k(i)),1);
+  end
+  
+  k = find(bayestopt_.pshape == 5);
+  for i=1:length(k)
+    [bayestopt_.pmean(k(i)),bayestopt_.pstdev(k(i)),bayestopt_.p1(k(i)),bayestopt_.p2(k(i))] = ...
+	uniform_specification(bayestopt_.pmean(k(i)),bayestopt_.pstdev(k(i)),bayestopt_.p3(k(i)),bayestopt_.p4(k(i)));
+  end
+  
+  k = find(bayestopt_.pshape == 6);
+  for i=1:length(k)
+    [bayestopt_.p1(k(i)),bayestopt_.p2(k(i))] = ...
+	inverse_gamma_specification(bayestopt_.pmean(k(i)),bayestopt_.pstdev(k(i)),2);
+  end
+  
+  k = find(isnan(xparam1));
+  xparam1(k) = bayestopt_.pmean(k);
+  
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/set_shocks.m b/tags/v_3.062/matlab/set_shocks.m
new file mode 100644
index 0000000000..40f7497354
--- /dev/null
+++ b/tags/v_3.062/matlab/set_shocks.m
@@ -0,0 +1,27 @@
+% Copyright (C) 2003 Michel Juillard
+%
+% set
+function set_shocks(flag,k,ivar,values)
+  global ex_ exe_ ex_det_ exe_det_
+  
+  n1 = size(ex_,1);
+  n2 = size(ex_det_,1);
+  if k(end) > n1 
+    if flag <= 1
+      ex_ = [ex_; ones(k(end)-n1,1)*exe_'];
+    else
+      ex_det_ = [ex_det_; ones(k(end)-n2,1)*exe_det_'];
+    end
+  end  
+  
+  if flag == 0
+    ex_(k,ivar) = ones(length(k),1).*values;
+  elseif flag == 1
+    ex_(k,ivar) = ex_(k,ivar).*values;
+  elseif flag == 2
+    ex_det_(k,ivar) = ones(length(k),1).*values;
+  elseif flag == 3
+    ex_det_(k,ivar) = ex_det_(k,ivar).*values;
+  end
+
+  % 05/29/03 MJ
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/set_start_date.m b/tags/v_3.062/matlab/set_start_date.m
new file mode 100644
index 0000000000..dde57c0cb7
--- /dev/null
+++ b/tags/v_3.062/matlab/set_start_date.m
@@ -0,0 +1,6 @@
+function set_start_date(y,p,f)
+  global freq_ start_date
+  
+  freq_ = f;
+  start_date = [y;p];
+
diff --git a/tags/v_3.062/matlab/set_state_space.m b/tags/v_3.062/matlab/set_state_space.m
new file mode 100644
index 0000000000..ac549e99b3
--- /dev/null
+++ b/tags/v_3.062/matlab/set_state_space.m
@@ -0,0 +1,88 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function dr=set_state_space(dr)
+
+global iy_ ykmin_ ykmax_ exo_nbr endo_nbr
+global ex_ valf_ it_ exe_ xkmin_ xkmax_ ys_
+global fname_ lgy_
+
+
+xlen = xkmax_ + xkmin_ + 1;
+klen = ykmin_ + ykmax_ + 1;
+
+if ~ iy_(ykmin_+1,:) > 0
+  error ('Error in model specification: some variables don"t appear as current') ;
+end
+
+fwrd_var = find(any(iy_(ykmin_+2:end,:),1))';
+if ykmin_ > 0
+  pred_var = find(any(iy_(1:ykmin_,:),1))';
+  both_var = intersect(pred_var,fwrd_var);
+  pred_var = setdiff(pred_var,both_var);
+  fwrd_var = setdiff(fwrd_var,both_var);
+  stat_var = setdiff([1:endo_nbr]',union(union(pred_var,both_var),fwrd_var));  % static variables
+else
+  pred_var = [];
+  both_var = [];
+  stat_var = setdiff([1:endo_nbr]',fwrd_var);
+end
+nboth = length(both_var);
+npred = length(pred_var);
+nfwrd = length(fwrd_var);
+nstatic = length(stat_var);
+order_var = [ stat_var; pred_var; both_var; fwrd_var];
+
+% building kmask for z state vector in t+1
+if ykmin_ > 0
+  kmask = [];
+  if ykmax_ > 0 
+    kmask = [cumsum(flipud(iy_(ykmin_+2:end,order_var)),1)] ;
+  end
+  kmask = [kmask; flipud(cumsum(iy_(1:ykmin_,order_var),1))] ;
+else
+  kmask = cumsum(flipud(iy_(ykmin_+2:klen,order_var)),1) ;
+end
+
+kmask = kmask';
+kmask = kmask(:);
+i_kmask = find(kmask);          % index of nonzero entries in kmask
+nd = size(i_kmask,1);           % size of the state vector
+kmask(i_kmask) = [1:nd];
+
+% auxiliary equations
+
+% elements that are both in z(t+1) and z(t)
+k1 = find([kmask(1:end-endo_nbr) & kmask(endo_nbr+1:end)] );
+kad = [];
+kae = [];
+if ~isempty(k1)
+  kad = kmask(k1+endo_nbr);
+  kae = kmask(k1);
+end
+
+% composition of state vector
+% col 1: variable;           col 2: lead/lag in z(t+1); 
+% col 3: A cols for t+1 (D); col 4: A cols for t (E)
+kstate = [ repmat([1:endo_nbr]',klen-1,1) kron([klen:-1:2]',ones(endo_nbr,1)) ...
+	   zeros((klen-1)*endo_nbr,2)];
+kiy = flipud(iy_(:,order_var))';
+kiy = kiy(:);
+kstate(1:ykmax_*endo_nbr,3) = kiy(1:ykmax_*endo_nbr)-endo_nbr;  
+kstate(find(kstate(:,3) < 0),3) = 0;
+kstate(ykmax_*endo_nbr+1:end,4) = kiy((ykmax_+1)*endo_nbr+1:end);  
+% put in E only the current variables that are not already in D
+kstate = kstate(i_kmask,:);
+
+dr.order_var = order_var;
+dr.nstatic = nstatic;
+dr.npred = npred+nboth;
+dr.kstate = kstate;
+dr.kad = kad;
+dr.kae = kae;
+dr.nboth = nboth;
+dr.nfwrd = nfwrd;
+% number of forward variables in the state vector
+dr.nsfwrd = sum(kstate(:,2) > ykmin_+1);
+% number of predetermined variables in the state vector
+dr.nspred = sum(kstate(:,2) <= ykmin_+1);
+
diff --git a/tags/v_3.062/matlab/shocks_file.m b/tags/v_3.062/matlab/shocks_file.m
new file mode 100644
index 0000000000..c22efe3064
--- /dev/null
+++ b/tags/v_3.062/matlab/shocks_file.m
@@ -0,0 +1,44 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function []=shocks_file(ms_flag)
+  global options_ M_ exo_nbr exo_det_nbr lgx_ lgx_det_ ex_ exe_ ex_det_ exe_det_
+  
+  if isfield(options_,'shocks_file')
+    if exo_det_nbr > 0
+      x = read_variables(options_.shocks_file,lgx_det_,[]);
+      n = size(x,1);
+      M_.ex_det_length = n;
+      if size(ex_det_,1) >= n
+	if ms_flag == 1
+	  ex_det_(1:n,:) = ex_det_(1:n,:).*x;
+	else
+	  ex_det_(1:n,:) = x;
+	end
+      else
+	if ms_flag == 1
+	  ex_det_ = ones(n,1)*exe_det_';
+	  ex_det_ = ex_det_.*x;
+	else
+	  ex_det_ = x;
+	end
+      end
+    else
+      x = read_variables(options_.shocks_file,lgx_det_);
+      n = size(x,1);
+      if size(ex_,1) >= n
+	if ms_flag == 1
+	  ex_(1:n,:) = ex_(1:n,:).*x;
+	else
+	  ex_(1:n,:) = x;
+	end
+      else
+	if ms_flag == 1
+	  ex_ = ones(n,1)*exe_';
+	  ex_ = ex_.*x;
+	else
+	  ex_ = x;
+	end
+      end
+    end
+  end
+  
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/sim1.m b/tags/v_3.062/matlab/sim1.m
new file mode 100644
index 0000000000..5c3e9459ea
--- /dev/null
+++ b/tags/v_3.062/matlab/sim1.m
@@ -0,0 +1,98 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function sim1
+
+global iyp iyf dynatol_ slowc_ maxit_ scalv_ it_
+global iy_ ykmin_ ykmax_ xkmin_ xkmax_ ct_ jacobia_ d1_
+global iter_ y_ start_simul fname_
+
+ny = size(y_,1) ;
+nyp = nnz(iy_(1,:)) ;
+nyf = nnz(iy_(3,:)) ;
+nrs = ny+nyp+nyf+1 ;
+nrc = nyf+1 ;
+iyf = find(iy_(3,:)>0) ;
+iyp = find(iy_(1,:)>0) ;
+isp = [1:nyp] ;
+is = [nyp+1:ny+nyp] ;
+isf = iyf+nyp ;
+isf1 = [nyp+ny+1:nyf+nyp+ny+1] ;
+stop = 0 ;
+
+disp (['-----------------------------------------------------']) ;
+disp (['MODEL SIMULATION :']) ;
+fprintf('\n') ;
+
+if isempty(start_simul)
+  it_init = 2 ;
+else
+  it_init = start_simul;
+end
+
+h1 = clock ;
+for iter = 1:maxit_
+	h2 = clock ;
+
+	if ct_ == 0
+		c = zeros(ny*iter_,nrc) ;
+	else
+		c = zeros(ny*(iter_+1),nrc) ;
+	end
+
+	it_ = it_init ;
+	z = [y_(iyp,it_-1) ; y_(:,it_) ; y_(iyf,it_+1)] ;
+	jacob ([fname_ '_ff'],z)
+	jacobia_ = [jacobia_ -d1_] ;
+	ic = [1:ny] ;
+	icp = iyp ;
+	c (ic,:) = jacobia_(:,is)\jacobia_(:,isf1) ;
+	for it_ = it_init+1:iter_+1
+		z = [y_(iyp,it_-1) ; y_(:,it_) ; y_(iyf,it_+1)] ;
+		jacob ([fname_ '_ff'],z)
+		jacobia_ = [jacobia_ -d1_] ;
+		jacobia_(:,[isf nrs]) = jacobia_(:,[isf nrs])-jacobia_(:,isp)*c(icp,:) ;
+		ic = ic + ny ;
+		icp = icp + ny ;
+		c (ic,:) = jacobia_(:,is)\jacobia_(:,isf1) ;
+	end
+
+	if ct_ == 1
+		s = eye(ny) ;
+		s(:,isf) = s(:,isf)+c(ic,1:nyf) ;
+		ic = ic + ny ;
+		c(ic,nrc) = s\c(:,nrc) ;
+		c = bksup1(ny,nrc,iyf,c) ;
+		c = reshape(c,ny,iter_+1) ;
+		y_(:,it_init:iter_+2) = y_(:,it_init:iter_+2)+slowc_*c ;
+	else
+		c = bksup1(ny,nrc,iyf,c) ;
+		c = reshape(c,ny,iter_) ;
+		y_(:,it_init:iter_+1) = y_(:,it_init:iter_+1)+slowc_*c ;
+	end
+
+	err = max(max(abs(c./scalv_')));
+	disp([num2str(iter) ' -	err = ' num2str(err)]) ;
+	disp(['	Time of iteration 	:' num2str(etime(clock,h2))]) ;
+
+	if err < dynatol_
+		stop = 1 ;
+		fprintf('\n') ;
+		disp(['	Total time of simulation 	:' num2str(etime(clock,h1))]) ;
+		fprintf('\n') ;
+		disp(['	Convergency obtained.']) ;
+		fprintf('\n') ;
+		break
+	end
+end
+
+if ~ stop
+	fprintf('\n') ;
+	disp(['	Total time of simulation 	:' num2str(etime(clock,h1))]) ;
+	fprintf('\n') ;
+	disp(['WARNING : maximum number of iterations is reached (modify maxit_).']) ;
+	fprintf('\n') ;
+end
+disp (['-----------------------------------------------------']) ;
+return ;
+
+% 08/24/01 MJ added start_simul
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/simk.m b/tags/v_3.062/matlab/simk.m
new file mode 100644
index 0000000000..6898a57274
--- /dev/null
+++ b/tags/v_3.062/matlab/simk.m
@@ -0,0 +1,325 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function simk
+
+global dynatol_ maxit_ slowc_ scalv_
+global iy_ ykmin_ ykmax_ iyr0 ct_ jacobia_ d1_
+global gstep_ ys_ y_ it_ iter_
+global ncc timing_ broyden_ fname_
+
+func_name = [fname_ '_ff'];
+nk = ykmin_ + ykmax_ + 1 ;
+ny = size(iy_,2) ;
+icc1 = iy_(nk,:) > 0;
+
+for i = 1:ykmax_ -1
+  icc1 = [iy_(nk-i,:) | icc1(1,:); icc1] ;
+end
+
+icc1 = find(icc1') ;
+iy = iy_ > 0 ;
+isc = cumsum(sum(iy',1))' ;
+iyr0 = find(iy_') ;
+ncc1 = size(icc1,1) ;
+ncc = ncc1 + 1 ;
+ncs = size(iyr0,1) ;
+
+ky = zeros(ny,nk) ;            % indices of variables at each lead or lag
+lky = zeros(nk,1) ;
+for i = 1:nk
+  j = find(iy_(i,:))' ;
+  if isempty(j)
+    lky(i) = 0;
+  else
+    lky(i) = size(j,1) ;
+    ky(1:lky(i),i) = j ;
+  end
+end
+
+jwc = find(iy(2:ykmax_+1,:)') ; % indices of columns for
+                                % triangularization
+				% as many rows as lags in model
+
+if isempty(jwc)
+  jwc = 0 ;
+  ljwc = 0 ;
+  temp = icc1 ;
+else
+  ljwc = size(jwc,1) ;          % length of each row in jwc
+  temp = union(jwc,icc1) ;      % prepares next iteration
+end
+
+j1 = ky(1:lky(1),1) ;
+lj1 = lky(1) ;
+
+for i = 2:ykmin_
+  [j1,lj1] = ffill(j1,lj1,selif(temp+(i-1)*ny,temp <= ny)) ;
+  if ykmax_ == 1
+    if lky(i+ykmax_) > 0
+      [jwc,ljwc] = ffill(jwc,ljwc, ky(1:lky(i+ykmax_),i+ykmax_)+(ykmax_-1)*ny) ;
+      if ljwc(i) == 0
+ 	temp = icc1;
+      else
+ 	temp = union(jwc(1:ljwc(i),i),icc1) ;
+      end
+    else
+      [jwc,ljwc] = ffill(jwc,ljwc,[]) ;
+      temp = icc1 ;
+    end
+  else
+    temp = temp(lj1(i)+1:size(temp,1),:) - ny ;
+    if lky(i+ykmax_) > 0
+      [jwc,ljwc] = ffill(jwc,ljwc,[temp;ky(1:lky(i+ykmax_),i+ykmax_)+(ykmax_-1)*ny]);
+    else
+      [jwc,ljwc] = ffill(jwc,ljwc,temp) ;
+    end
+    temp = union(jwc(1:ljwc(i),i),icc1) ;
+  end
+end
+
+[j1,lj1] = ffill(j1,lj1,selif(temp+ykmin_*ny, temp <= ny)) ;
+ltemp = zeros(ykmin_,1) ;
+jwc1 = zeros(ncc1,ykmin_) ;
+
+for i = 1:ykmin_
+  temp = union(jwc(1:ljwc(i),i),icc1) ;
+  ltemp(i) = size(temp,1) ;
+  if ljwc(i) > 0
+    jwc(1:ljwc(i),i) = indnv(jwc(1:ljwc(i),i),temp) ;
+  end
+  jwc1(:,i) = indnv(icc1,temp) ;
+end
+
+h1 = clock ;
+
+disp (['-----------------------------------------------------']) ;
+disp ('MODEL SIMULATION') ;
+fprintf ('\n') ;
+
+for iter = 1:maxit_
+  h2 = clock ;
+  y_ = y_(:);
+  err_f = 0;
+  
+  fid = fopen('dynare.swp','w+') ;
+
+  it_ = 1+ykmin_ ;
+  ic = [1:ny] ;
+  iyr = iyr0 ;
+  i = ykmin_+1 ;
+  while (i>1) & (it_<=iter_+ykmin_)
+    h3 = clock ;
+    if broyden_ & iter > 1
+      d1_ = -feval(fh,y_(iyr));
+    else
+      jacob(func_name,y_(iyr)) ;
+      d1_ = -d1_ ;
+    end
+    err_f = max(err_f,max(abs(d1_)));
+    if lky(i) ~= 0
+      j1i = ky(1:lky(i),i) ;
+      w0 = jacobia_(:,isc(i-1)+1:isc(i)) ;
+    else
+      w0 = [];
+    end
+    ttemp = iy(i+1:i+ykmax_,:)' ;
+    jwci = find(ttemp) ;
+    if ~ isempty(jwci)
+      w = jacobia_(:,isc(i)+1:isc(i+ykmax_)) ;
+    end
+    j = i ;
+    while j <= ykmin_
+      if ~isempty(w0)
+
+	ofs = ((it_-ykmin_-ykmin_+j-2)*ny)*ncc*8 ;
+	junk = fseek(fid,ofs,-1) ;
+	c = fread(fid,[ncc,ny],'float64') ;
+	c = c' ;
+
+	if isempty(jwci)
+	  w = -w0*c(j1i,1:ncc1) ;
+	  jwci = icc1 ;
+	else
+	  iz = union(jwci,icc1) ;
+	  ix = indnv(jwci,iz) ;
+	  iy__ = indnv(icc1,iz) ;
+	  temp = zeros(size(w,1),size(iz,1)) ;
+	  temp(:,ix) = w ;
+	  temp(:,iy__) = temp(:,iy__)-w0*c(j1i,1:ncc1) ;
+	  w = temp ;
+	  jwci = iz ;
+	  clear temp iz ix iy__ ;
+	end
+	d1_ = d1_-w0*c(j1i,ncc) ;
+	clear c ;
+      end
+      j = j + 1 ;
+      if isempty(jwci)
+	j1i = [];
+	if lky(j+ykmax_) ~= 0
+	  jwci = ky(1:lky(j+ykmax_),j+ykmax_) + (ykmax_-1)*ny ;
+	  w = jacobia_(:,isc(j+ykmax_-1)+1:isc(j+ykmax_)) ;
+	else
+	  jwci = [] ;
+	end
+      else
+	j1i = selif(jwci,jwci<(ny+1)) ;
+	w0 = w(:,1:size(j1i,1)) ;
+	if size(jwci,1) == size(j1i,1)
+	  if lky(j+ykmax_) ~= 0
+	    jwci = ky(1:lky(j+ykmax_),j+ykmax_)+(ykmax_-1)*ny ;
+	    w = jacobia_(:,isc(j+ykmax_-1)+1:isc(j+ykmax_)) ;
+	  else
+	    jwci = [] ;
+	  end
+	else
+	  jwci = jwci(size(j1i,1)+1:size(jwci,1),:)-ny ;
+	  w = w(:,size(j1i,1)+1:size(w,2)) ; 
+	  if lky(j+ykmax_) ~= 0
+	    jwci = [ jwci; ky(1: lky(j+ykmax_),j+ykmax_)+(ykmax_-1)*ny] ;
+	    w = [w jacobia_(:,isc(j+ykmax_-1)+1:isc(j+ykmax_))] ;
+%	  else
+%	    jwci = [] ;
+	  end
+	end
+      end
+    end
+    jwci = [indnv(jwci,icc1);ncc] ;
+    w = [w d1_] ;
+    c = zeros(ny,ncc) ;
+    c(:,jwci) = w0\w ;
+    clear w w0 ;
+
+    junk = fseek(fid,0,1) ;
+    fwrite(fid,c','float64') ;
+    clear c ;
+
+    it_ = it_ + 1;
+    ic = ic + ny ;
+    iyr = iyr + ny ;
+    i = i - 1 ;
+  end
+  icr0 = (it_-ykmin_-ykmin_ -1)*ny ;
+  while it_ <= iter_+ykmin_
+    if broyden_
+      d1_ = -feval(fh,y_(iyr));
+    else
+      jacob(func_name,y_(iyr)) ;
+      d1_ = -d1_ ;
+    end
+    err_f = max(err_f,max(abs(d1_)));
+    w0 = jacobia_(:,1:isc(1)) ;
+    w = jacobia_(:,isc(1)+1:isc(1+ykmax_)) ;
+    j = 1 ;
+    while j <= ykmin_
+      icr = j1(1:lj1(j),j)-(j-1)*ny ;
+
+      ofs = ((icr0+(j-1)*ny+1)-1)*ncc*8 ;
+      junk = fseek(fid,ofs,-1) ;
+      c = fread(fid,[ncc,ny],'float64') ;
+      c = c' ;
+
+      temp = zeros(ny,ltemp(j)) ;
+      if ljwc(j) > 0
+	temp(:,jwc(1:ljwc(j),j)) = w ;
+      end
+      temp(:,jwc1(:,j))=temp(:,jwc1(:,j))-w0*c(icr,1:ncc1) ;
+      w = temp ;
+      clear temp ;
+      d1_ = d1_-w0*c(icr,ncc) ;
+      clear c ;
+      j = j + 1 ;
+      w0 = w(:,1:lj1(j)) ;
+      if ykmax_ == 1
+	w = jacobia_(:,isc(j+ykmax_-1)+1:isc(j+ykmax_)) ;
+      else
+	w = w(:,lj1(j)+1:size(w,2)) ;
+
+	if lky(j+ykmax_) > 0
+	  w = [w jacobia_(:,isc(j+ykmax_-1)+1:isc(j+ykmax_))] ;
+	end
+      end
+    end
+    c = w0\[w d1_] ;
+    d1_ = [] ;
+    clear w w0 ;
+    junk = fseek(fid,0,1) ;
+    fwrite(fid,c','float64') ;
+    clear c ;
+    it_ = it_ + 1 ;
+    ic = ic + ny ;
+    iyr = iyr + ny ;
+    icr0 = icr0 + ny ;
+  end
+  if ct_ == 1
+
+    ofs = (((it_-ykmin_-2)*ny+1)-1)*ncc*8 ;
+    junk = fseek(fid,ofs,-1) ;
+    c = fread(fid,[ncc,ny],'float64') ;
+    c = c' ;
+
+    for i = 1:ykmax_
+      w = tril(triu(ones(ny,ny+ncc1))) ;
+      w(:,jwc1(:,ykmin_)) = w(:,jwc1(:,ykmin_))+c(:,1:ncc1) ;
+      c = [w(:,ny+1:size(w,2))' c(:,ncc)]/w(:,1:ny) ;
+
+      junk = fseek(fid,0,1) ;
+      fwrite(fid,c','float64') ;
+
+      it_ = it_+1 ;
+      ic = ic + ny ;
+
+    end
+  end
+  y_ = reshape(y_,ny,iter_+ykmin_+ykmax_) ;
+  if ct_ == 1
+    hbacsup = clock ;
+    c = bksupk(ny,fid,ncc,icc1) ;
+    hbacsup = etime(clock,hbacsup) ;
+    c = reshape(c,ny,iter_+ykmax_)' ;
+    y(:,1+ykmin_:(iter_+ykmax_+ykmin_)) = y(:,1+ykmin_:(iter_+ykmax_+ykmin_))+slowc_*c' ;
+  else
+    hbacsup = clock ;
+    c = bksupk(ny,fid,ncc,icc1) ;
+    hbacsup = etime(clock,hbacsup) ;
+    c = reshape(c,ny,iter_)' ;
+    y_(:,1+ykmin_:(iter_+ykmin_)) = y_(:,1+ykmin_:(iter_+ykmin_))+slowc_*c' ;
+  end
+
+  fclose(fid) ;
+
+  h2 = etime(clock,h2) ;
+  [junk,i1] = max(abs(c));
+  [junk,i2] = max(junk);
+  global lgy_
+  disp(['variable ' lgy_(i2,:) ' period ' num2str(i1(i2))])
+  err = max(max(abs(c./scalv_'))) ;
+  disp ([num2str(iter) '-	err = ' num2str(err)]) ;
+  disp (['err_f = ' num2str(err_f)])
+  disp (['	Time of this iteration	: ' num2str(h2)]) ;
+  if timing_
+    disp (['	Back substitution		: ' num2str(hbacsup)]) ;
+  end
+  if err < dynatol_
+    h1 = etime(clock,h1) ;
+    fprintf ('\n') ;
+    disp (['	Total time of simulation	: ' num2str(h1)]) ;
+    fprintf ('\n') ;
+    disp (['	Convergence achieved.']) ;
+    disp (['-----------------------------------------------------']) ;
+    fprintf ('\n') ;
+    return ;
+  end
+end
+disp(['WARNING : the maximum number of iterations is reached.']) ;
+fprintf ('\n') ;
+disp (['-----------------------------------------------------']) ;
+return ;
+
+% 2/11/99 MJ took out reshapel
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/simul.m b/tags/v_3.062/matlab/simul.m
new file mode 100644
index 0000000000..c3329ee350
--- /dev/null
+++ b/tags/v_3.062/matlab/simul.m
@@ -0,0 +1,66 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function simul(dr)
+
+global scalv_ ct_ endval_ endo_nbr ex_ exe_
+global iy_ ykmin_ ykmax_ xkmin_ xkmax_
+global valf_ ys_ ys0_ y_ lgy_ iter_ options_
+
+if size(iy_,2)-nnz(iy_(ykmin_+1,:)) > 0
+  mess = ['DYNARE: error in model specification : variable ' lgy_(find(iy_(ykmin_+1,:)==0),:)] ;
+  mess = [mess ' doesn''t appear as current variable.'] ; 
+  error (mess) ;
+end
+
+options_ = set_default_option(options_,'simul_algo',0);
+if ~isfield(options_,'periods') & ~isempty(iter_)
+  options_.periods = iter_
+end
+options_ = set_default_option(options_,'periods',0);
+if options_.periods == 0
+  error('SIMUL: number of periods for the simulation isn''t specified')
+end
+iter_ = options_.periods;
+if options_.simul_algo == 0
+  if ~ valf_
+    make_y_;
+    make_ex_;
+  end
+
+  if isempty(scalv_) | scalv_ == 0
+    scalv_ = ys_ ;
+  end
+
+  scalv_= 1 ;
+
+  if ykmin_ ==1 & ykmax_ <= 1
+    sim1 ;
+  else
+    simk ;
+  end
+else
+  set_default_option('replic',1);
+  set_default_option('simul_seed',1);
+  if isfield(dr,'ghxx')
+    set_default_option('order',2);
+  else
+    set_defaut_option('order',1);
+  end
+  y_=simult(ys_,dr,options_);
+end
+
+dyn2vec;
+
+% 6/18/01 MJ added dyn2vec if 40 variables or less
+% 01/16/03 MJ use dyn2vec whatever the number of variables
+% 02/18/03 MJ added ys_ for calling simult
+% 05/24/03 MJ added options_ and options_.periods
+
+
+
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/simult.m b/tags/v_3.062/matlab/simult.m
new file mode 100644
index 0000000000..8cac65fea2
--- /dev/null
+++ b/tags/v_3.062/matlab/simult.m
@@ -0,0 +1,41 @@
+% Copyright (C) 2001 Michel Juillard
+%
+
+function y_=simult(ys, dr)
+global jacobia_ iy_ ykmin_ ykmax_ gstep_ exo_nbr endo_nbr
+global ex_ valf_ it_ exe_ xkmin_ xkmax_ ys_
+global fname_ means_ Sigma_e_ lgy_ options_
+
+order = options_.order;
+seed = options_.simul_seed;
+iter_ = options_.periods;
+
+it_ = ykmin_ + 1 ;
+
+% eliminate shocks with 0 variance
+i_exo_var = setdiff([1:exo_nbr],find(diag(Sigma_e_) == 0));
+nxs = length(i_exo_var);
+ex_ = zeros(xkmin_+xkmax_+iter_,exo_nbr);
+chol_S = chol(Sigma_e_(i_exo_var,i_exo_var));
+
+if isempty(seed)
+  randn('state',sum(100*clock));
+else
+  randn('state',seed);
+end
+if ~isempty(Sigma_e_)
+  ex_(:,i_exo_var) = randn(xkmin_+xkmax_+iter_,nxs)*chol_S;
+end
+y_ = simult_(ys,dr,ex_,order);
+
+
+
+% 02/20/01 MJ replaced ys by dr.ys
+% 02/22/01 MJ removed commented out lines
+%             removed useless temps
+%             stderr_ replaced by Sigma_e_
+% 02/28/01 MJ changed expression for Sigma_e_
+% 02/18/03 MJ added ys in the calling sequence for arbitrary initial values
+%             suppressed useless calling parameter istoch
+% 05/10/03 MJ removed repmat() in call to simult_() for lag > 1
+% 05/29/03 MJ test for 0 variances
diff --git a/tags/v_3.062/matlab/simult_.m b/tags/v_3.062/matlab/simult_.m
new file mode 100644
index 0000000000..5e0cc603eb
--- /dev/null
+++ b/tags/v_3.062/matlab/simult_.m
@@ -0,0 +1,66 @@
+% Copyright (C) 2001 Michel Juillard
+%
+
+function y_ = simult_(y0,dr,ex_,iorder)
+global endo_nbr ykmin_ xkmin_ it_ options_ iy_
+  iter = size(ex_,1)-xkmin_;
+  nx = size(dr.ghu,2);
+  y_ = zeros(size(y0,1),iter+ykmin_);
+  y_(:,1:ykmin_) = y0;
+  k1 = [ykmin_:-1:1];
+  k2 = dr.kstate(find(dr.kstate(:,2) <= ykmin_+1),[1 2]);
+  k2 = k2(:,1)+(ykmin_+1-k2(:,2))*endo_nbr;
+  k3 = iy_(1:ykmin_,:)';
+  k3 = find(k3(:));
+  k4 = dr.kstate(find(dr.kstate(:,2) < ykmin_+1),[1 2]);
+  k4 = k4(:,1)+(ykmin_+1-k4(:,2))*endo_nbr;
+  
+  options_ = set_default_option(options_,'simul_algo',0);
+  if options_.simul_algo == 1
+    o1 = dr.nstatic+1;
+    o2 = dr.nstatic+dr.npred;
+    o3 = o2-dr.nboth+1;
+    [junk, k5] = sort(dr.order_var(o1:o2));
+    [junk, k6] = sort(dr.order_var(o3:end));
+  end
+
+  if iorder == 1
+    for i = ykmin_+1: iter+ykmin_
+      tempx1 = y_(dr.order_var,k1);
+      tempx2 = tempx1-repmat(dr.ys(dr.order_var),1,ykmin_);
+      tempx = tempx2(k2);
+      if options_.simul_algo == 0
+	y_(dr.order_var,i) = dr.ys(dr.order_var)+dr.ghx*tempx+...
+	    dr.ghu*ex_(i+xkmin_-ykmin_,:)';
+      elseif options_.simul_algo == 1
+	it_ = i;
+	m = dr.ys(dr.order_var);
+	[y_(:,i), check] = dynare_solve('ff_simul1',y_(:,i-1),tempx1(k3), ...
+					m(o3:end),tempx(k4),o1,o2,o3,k6);
+      end
+      k1 = k1+1;
+    end
+  elseif iorder == 2
+    for i = ykmin_+1: iter+ykmin_
+      tempx1 = y_(dr.order_var,k1);
+      tempx2 = tempx1-repmat(dr.ys(dr.order_var),1,ykmin_);
+      tempx = tempx2(k2);
+      tempu = ex_(i+xkmin_-ykmin_,:)';
+      tempuu = kron(tempu,tempu);
+      if options_.simul_algo == 0
+	tempxx = kron(tempx,tempx);
+	tempxu = kron(tempx,tempu);
+	y_(dr.order_var,i) = dr.ys(dr.order_var)+dr.ghs2/2+dr.ghx*tempx+ ...
+	    dr.ghu*tempu+0.5*(dr.ghxx*tempxx+dr.ghuu*tempuu)+dr.ghxu*tempxu;
+      elseif options_.simul_algo == 1
+	it_ = i;
+	m = dr.ys(dr.order_var)+dr.ghs2/2;
+	tempx1 = y_(:,k1);
+	[y_(:,i), check] = dynare_solve('ff_simul2',y_(:,i-1),tempx1(k3), ...
+					m(o3:end),tempx(k4),o1,o2,o3,k6);
+      end
+      k1 = k1+1;
+    end
+  end
+
+% MJ 08/30/02 corrected bug at order 2
diff --git a/tags/v_3.062/matlab/simultxdet.m b/tags/v_3.062/matlab/simultxdet.m
new file mode 100644
index 0000000000..0bd531e975
--- /dev/null
+++ b/tags/v_3.062/matlab/simultxdet.m
@@ -0,0 +1,136 @@
+% Copyright (C) 2005 Michel Juillard
+%
+
+function [y_,var_yf]=simultexdet(y0,dr,ex_,ex_det, iorder,var_list)
+  global endo_nbr ykmin_ xkmin_ it_ options_ iy_ M_ exe_det_ Sigma_e_ lgy_
+
+  iter = size(ex_,1)-xkmin_;
+  nx = size(dr.ghu,2);
+  y_ = zeros(size(y0,1),iter+ykmin_);
+  y_(:,1:ykmin_) = y0;
+  k1 = [ykmin_:-1:1];
+  k2 = dr.kstate(find(dr.kstate(:,2) <= ykmin_+1),[1 2]);
+  k2 = k2(:,1)+(ykmin_+1-k2(:,2))*endo_nbr;
+  k3 = iy_(1:ykmin_,:)';
+  k3 = find(k3(:));
+  k4 = dr.kstate(find(dr.kstate(:,2) < ykmin_+1),[1 2]);
+  k4 = k4(:,1)+(ykmin_+1-k4(:,2))*endo_nbr;
+  
+  old_options = options_;
+  options_ = set_default_option(options_,'simul_algo',0);
+  options_ = set_default_option(options_,'conf_sig',0.9);
+  
+  if options_.simul_algo == 1
+    o1 = dr.nstatic+1;
+    o2 = dr.nstatic+dr.npred;
+    o3 = o2-dr.nboth+1;
+    [junk, k5] = sort(dr.order_var(o1:o2));
+    [junk, k6] = sort(dr.order_var(o3:end));
+  end
+  
+  nvar = size(var_list,1);
+  if nvar == 0
+    nvar = endo_nbr;
+    ivar = [1:nvar];
+  else
+    ivar=zeros(nvar,1);
+    for i=1:nvar
+      i_tmp = strmatch(var_list(i,:),lgy_,'exact');
+      if isempty(i_tmp)
+	disp(var_list(i,:));
+	error (['One of the variable specified does not exist']) ;
+      else
+	ivar(i) = i_tmp;
+      end
+    end
+  end
+
+  if iorder == 1
+    for i = ykmin_+1: iter+ykmin_
+      tempx1 = y_(dr.order_var,k1);
+      tempx2 = tempx1-repmat(dr.ys(dr.order_var),1,ykmin_);
+      tempx = tempx2(k2);
+      if options_.simul_algo == 0
+	y_(dr.order_var,i) = dr.ys(dr.order_var)+dr.ghx*tempx+dr.ghu* ...
+	    ex_(i+xkmin_-ykmin_,:)';
+	for j=1:min(iter+ykmin_-i-M_.ex_det_length+1,M_.ex_det_length)
+	  y_(dr.order_var,i) = y_(dr.order_var,i) + dr.ghud{j}*(ex_det(i+j-1,:)'-exe_det_');
+	end
+      elseif options_.simul_algo == 1
+	it_ = i;
+	m = dr.ys(dr.order_var);
+	[y_(:,i), check] = dynare_solve('ff_simul1',y_(:,i-1),tempx1(k3), ...
+					m(o3:end),tempx(k4),o1,o2,o3,k6);
+      end
+	
+      k1 = k1+1;
+    end
+  elseif iorder == 2
+    for i = ykmin_+1: iter+ykmin_
+      tempx1 = y_(dr.order_var,k1);
+      tempx2 = tempx1-repmat(dr.ys(dr.order_var),1,ykmin_);
+      tempx = tempx2(k2);
+      tempu = ex_(i+xkmin_-ykmin_,:)';
+      tempuu = kron(tempu,tempu);
+      if options_.simul_algo == 0
+	tempxx = kron(tempx,tempx);
+	tempxu = kron(tempx,tempu);
+	y_(dr.order_var,i) = dr.ys(dr.order_var)+dr.ghs2/2+dr.ghx*tempx+ ...
+	    dr.ghu*tempu+0.5*(dr.ghxx*tempxx+dr.ghuu*tempuu)+dr.ghxu* ...
+	    tempxu;
+	for j=1:min(iter+ykmin_-i-M_.ex_det_length+1,M_.ex_det_length)
+	  tempud = ex_det(i+j-1,:)'-exe_det_';
+	  tempudud = kron(tempud,tempud);
+	  tempxud = kron(tempx,tempud);
+	  tempuud = kron(tempu,tempud);
+	  y_(dr.order_var,i) = y_(dr.order_var,i) + dr.ghud{j}*tempud + ...
+	      dr.ghxud{j}*tempxud + dr.ghuud{j}*tempuud + ...
+	      0.5*dr.ghudud{j,j}*tempudud;
+	  for k=1:j-1
+	    tempudk = ex_det(i+k-1,:)'-exe_det_';
+	    tempududk = kron(tempudk,tempud);
+	    y_(dr.order_var,i) = y_(dr.order_var,i) + ...
+		dr.ghudud{k,j}*tempududk;
+	  end
+	end
+      elseif options_.simul_algo == 1
+	it_ = i;
+	m = dr.ys(dr.order_var)+dr.ghs2/2;
+	tempx1 = y_(:,k1);
+	[y_(:,i), check] = dynare_solve('ff_simul2',y_(:,i-1),tempx1(k3), ...
+					m(o3:end),tempx(k4),o1,o2,o3,k6);
+      end
+      k1 = k1+1;
+    end
+  end
+
+  [A,B] = kalman_transition_matrix(dr);
+  
+  sigma_u = B*Sigma_e_*B';
+  sigma_y = 0;
+  
+  for i=1:iter
+    sigma_y = sigma_y+sigma_u;
+    var_yf(i,dr.order_var) = diag(sigma_y(1:endo_nbr,1:endo_nbr))';
+    if i == iter
+      break
+    end
+    sigma_u = A*sigma_u*A';
+  end
+
+  fact = qnorm((1-options_.conf_sig)/2,0,1);
+  
+  for i=1:nvar
+    my_subplot(i,nvar,2,3,'Forecasts');
+    
+    interval_width = fact*sqrt(var_yf(:,ivar(i)));
+    
+    plot([-ykmin_+1:0],y0(ivar(i),1:ykmin_),'b-',...
+	 [1:iter],y_(ivar(i),ykmin_+1:end),'g-',...
+	 [1:iter],y_(ivar(i),ykmin_+1:end)'+interval_width,'g:',...
+	 [1:iter],y_(ivar(i),ykmin_+1:end)'-interval_width,'g:',...
+	 [1 iter],repmat(dr.ys(ivar(i)),1,2),'r-');
+    title(lgy_(ivar(i),:));
+  end
+
+  options_ = old_options;
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/solve1.m b/tags/v_3.062/matlab/solve1.m
new file mode 100644
index 0000000000..9175e892ab
--- /dev/null
+++ b/tags/v_3.062/matlab/solve1.m
@@ -0,0 +1,136 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function [x,check] = solve1(func,x,j1,j2,varargin)
+
+  global gstep_ fjac debug_ unit_root_ lgy_
+
+  nn = length(j1);
+  
+  fjac = zeros(nn,nn) ;
+  g = zeros(nn,1) ;
+
+  tolf = 100*eps^(2/3) ;
+  tolmin = 3.7e-11 ;
+  tolx = 3.7e-11 ;
+
+  stpmx = 100 ;
+  maxit = 2000 ;
+
+  check = 0 ;
+
+  fvec = feval(func,x,varargin{:});
+  fvec = fvec(j1);
+  
+  i = find(~isfinite(fvec));
+  
+  if ~isempty(i)
+    disp(['STEADY:  numerical initial values incompatible with the following' ...
+	  ' equations'])
+    disp(j1(i)')
+  end
+  
+  f = 0.5*fvec'*fvec ;
+
+  if max(abs(fvec)) < 0.01*tolf
+    return ;
+  end
+
+  stpmax = stpmx*max([sqrt(x'*x);nn]) ;
+  first_time = 1;
+  for its = 1:maxit
+
+    dh = max(abs(x(j2)),gstep_*ones(nn,1))*eps^(1/3);
+    for j = 1:nn
+      xdh = x ;
+      xdh(j2(j)) = xdh(j2(j))+dh(j) ;
+      t = feval(func,xdh,varargin{:});
+      fjac(:,j) = (t(j1) - fvec)./dh(j) ;
+      g(j) = fvec'*fjac(:,j) ;
+    end
+
+    if debug_
+      disp(['cond(fjac) ' num2str(cond(fjac))])
+    end
+    
+    if unit_root_
+      if first_time
+	first_time = 0;
+	[q,r,e]=qr(fjac);
+	n = sum(abs(diag(r)) < 1e-12);
+	fvec = q'*fvec;
+	p = e*[-r(1:end-n,1:end-n)\fvec(1:end-n);zeros(n,1)];
+	disp(' ')
+	disp('STEADY with unit roots:')
+	disp(' ')
+	if n > 0
+	  disp(['   The following variable(s) kept their value given in INITVAL' ...
+		' or ENDVAL'])
+	  disp(char(e(:,end-n+1:end)'*lgy_))
+	else
+	  disp('   STEADY can''t find any unit root!')
+	end
+      else
+	[q,r]=qr(fjac*e);
+	fvec = q'*fvec;
+	p = e*[-r(1:end-n,1:end-n)\fvec(1:end-n);zeros(n,1)];
+      end	
+%    elseif cond(fjac) > 10*sqrt(eps)
+    elseif cond(fjac) > 1/sqrt(eps)
+	fjac2=fjac'*fjac;
+	p=-(fjac2+sqrt(nn*eps)*max(sum(abs(fjac2)))*eye(nn))\(fjac'*fvec);
+    else
+      p = -fjac\fvec ;
+    end
+    xold = x ;
+    fold = f ;
+
+    [x,f,fvec,check]=lnsrch1(xold,fold,g,p,stpmax,func,j1,j2,varargin{:});
+
+    if debug_
+      disp([its f])
+      disp([xold x])
+    end
+      
+    if check > 0
+      den = max([f;0.5*nn]) ;
+      if max(abs(g).*max([abs(x(j2)');ones(1,nn)])')/den < tolmin
+	return
+      else
+	disp (' ')
+	disp (['SOLVE: Iteration ' num2str(its)])
+	disp (['Spurious convergence.'])
+	disp (x)
+	return
+      end
+
+      if max(abs(x-xold)./max([abs(x);ones(1,nn)])') < tolx
+	disp (' ')
+	disp (['SOLVE: Iteration ' num2str(its)])
+	disp (['Convergence on dX.'])
+	disp (x)
+	return
+      end
+    elseif f < tolf
+      return
+    end
+  end
+  
+  check = 1;
+  disp(' ')
+  disp('SOLVE: maxit has been reached')
+
+% 01/14/01 MJ lnsearch is now a separate function
+% 01/16/01 MJ added varargin to function evaluation
+% 04/13/01 MJ added test  f < tolf !!
+% 05/11/01 MJ changed tests for 'check' so as to remove 'continue' which is
+%             an instruction which appears only in version 6
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/steady.m b/tags/v_3.062/matlab/steady.m
new file mode 100644
index 0000000000..b134095e48
--- /dev/null
+++ b/tags/v_3.062/matlab/steady.m
@@ -0,0 +1,28 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function steady(linear)
+
+  global ys_ lgy_ ys0_ ykmin_ ykmax_ y_ options_
+
+  steady_;
+  
+  disp(' ')
+  disp('STEADY-STATE RESULTS:')
+  disp(' ')
+  for i=1:size(ys_,1)
+    disp(sprintf('%s \t\t %g',lgy_(i,:),ys_(i)));
+  end
+  
+% overwrites the initialization of y_ in case it was
+% set by initval
+  if isempty(ys0_)
+    y_(:,1:ykmin_) = ys_ * ones(1,ykmin_);
+  else
+    options_ =set_default_option(options_,'periods',1);
+    y_(:,ykmin_+1:ykmin_+options_.periods+ykmax_) = ys_ * ones(1,options_.periods+ykmax_);
+  end
+  
+% 06/24/01 MJ steady print results; steady_ doesn't
+% 09/22/01 FC corrected lgy(i,:)
+% 05/29/03 MJ sets initial values of y_
+
diff --git a/tags/v_3.062/matlab/steady_.m b/tags/v_3.062/matlab/steady_.m
new file mode 100644
index 0000000000..295784a73f
--- /dev/null
+++ b/tags/v_3.062/matlab/steady_.m
@@ -0,0 +1,43 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function steady_()
+
+  global it_ ex_ exe_ iy_ fname_ ex_det_ exe_det_
+  global ykmin_ ykmax_ ys_ xkmin_ xkmax_ exo_det_nbr
+
+  x = ys_ ;
+  xlen = xkmin_ + xkmax_ + 1 ;
+  nn = size(iy_,2) ;
+  it_ = ykmin_+1 ;
+  temp = ex_ ;
+  ex_ = ones(xlen,1)*exe_' ;
+
+  if exo_det_nbr > 0
+    tempdet = ex_det_ ;
+    ex_det_ = ones(ykmin_+1,1)*exe_det_' ;
+  end
+
+  if exist([fname_ '_steadystate'])
+    [ys_,check] = feval([fname_ '_steadystate'],x);
+  else
+    [ys_,check] = dynare_solve([fname_ '_fff'],x);
+  end
+
+  if check ~= 0
+    error('STEADY: convergence problems')
+  end
+
+  if exo_det_nbr > 0
+    ex_det_ = tempdet;
+  end
+  ex_ = temp ;
+
+% 06/24/01 MJ: steady_ no results printer; steady with printed results
+% 07/31/03 MJ: in case of convergence problem steady stops with an error
+
+
+
+
+
+
+
diff --git a/tags/v_3.062/matlab/stoch_simul.m b/tags/v_3.062/matlab/stoch_simul.m
new file mode 100644
index 0000000000..bedd0b386a
--- /dev/null
+++ b/tags/v_3.062/matlab/stoch_simul.m
@@ -0,0 +1,305 @@
+% Copyright (C) 2001 Michel Juillard
+%
+function info=stoch_simul(var_list)
+  global iter_ ys_ dr_ y_ dr_ exo_nbr lgy_ lgx_ Sigma_e_ ykmin_ ykmax_ 
+  global endo_nbr exo_nbr exe_ ex_ xkmin_ xkmax_ iter_ options_ lgx_orig_ord_
+  global fname_ lgx_TeX_ lgy_TeX_
+
+  options_ = set_default_option(options_,'TeX',0);  
+  options_ = set_default_option(options_,'order',2);
+  options_ = set_default_option(options_,'linear',0);
+  if options_.linear
+    options_.order = 1;
+  end
+  options_ = set_default_option(options_,'ar',5);
+  options_ = set_default_option(options_,'irf',40);
+  options_ = set_default_option(options_,'relative_irf',0);
+  options_ = set_default_option(options_,'dr_algo',0);
+  options_ = set_default_option(options_,'simul_algo',0);
+  options_ = set_default_option(options_,'drop',100);
+  if options_.order == 1
+    options_.replic = 1;
+  else
+    options_ = set_default_option(options_,'replic',50);
+  end
+  options_ = set_default_option(options_,'nomoments',0);
+  options_ = set_default_option(options_,'nocorr',0);
+  options_ = set_default_option(options_,'simul_seed',[]);
+  options_ = set_default_option(options_,'hp_filter',0);
+  options_ = set_default_option(options_,'hp_ngrid',512);
+  options_ = set_default_option(options_,'simul',0);
+  options_ = set_default_option(options_,'periods',0);
+  options_ = set_default_option(options_,'noprint',0);
+
+  TeX = options_.TeX;
+
+  if options_.simul & ~isempty(iter_) & options_.periods == 0
+    options_.periods = iter_;
+  end
+  iter_ = max(options_.periods,1);
+  if exo_nbr > 0
+    ex_= ones(iter_ + xkmin_ + xkmax_,1) * exe_';
+  end
+
+  check_model;
+
+  [dr_, info] = resol(ys_,0);
+
+  if info(1)
+    print_info(info);
+    return
+  end  
+
+  if ~options_.noprint
+    disp(' ')
+    disp('MODEL SUMMARY')
+    disp(' ')
+    disp(['  Number of variables:         ' int2str(endo_nbr)])
+    disp(['  Number of stochastic shocks: ' int2str(exo_nbr)])
+    disp(['  Number of state variables:   ' ...
+	  int2str(length(find(dr_.kstate(:,2) <= ykmin_+1)))])
+    disp(['  Number of jumpers:           ' ...
+	  int2str(length(find(dr_.kstate(:,2) == ykmin_+2)))])
+    disp(['  Number of static variables:  ' int2str(dr_.nstatic)])
+    my_title='MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS';
+    labels = deblank(lgx_);
+    headers = strvcat('Variables',labels);
+    lh = size(labels,2)+2;
+    table(my_title,headers,labels,Sigma_e_,lh,10,6);
+    disp(' ')
+    disp_dr(dr_,options_.order,var_list);
+  end
+
+  if options_.simul == 0 & options_.nomoments == 0
+    disp_th_moments(dr_,var_list); 
+  elseif options_.simul == 1
+    if options_.periods == 0
+      error('STOCH_SIMUL error: number of periods for the simulation isn''t specified')
+    end
+    if options_.periods < options_.drop
+      disp(['STOCH_SIMUL error: The horizon of simulation is shorter' ...
+	    ' than the number of observations to be DROPed'])
+      return
+    end
+    y_ = simult(repmat(dr_.ys,1,ykmin_),dr_);
+    dyn2vec;
+    if options_.nomoments == 0
+      disp_moments(y_,var_list);
+    end
+  end
+
+
+
+  if options_.irf 
+    n = size(var_list,1);
+    if n == 0
+      n = endo_nbr;
+      ivar = [1:n]';
+      var_list = lgy_;
+      if TeX
+	var_listTeX = lgy_TeX_;
+      end
+    else
+      ivar=zeros(n,1);
+      if TeX
+	var_listTeX = [];
+      end
+      for i=1:n
+	i_tmp = strmatch(var_list(i,:),lgy_,'exact');
+	if isempty(i_tmp)
+	  error (['One of the specified variables does not exist']) ;
+	else
+	  ivar(i) = i_tmp;
+	  if TeX
+	    var_listTeX = strvcat(var_listTeX,deblank(lgy_TeX_(i_tmp,:)));
+	  end
+	end
+      end
+    end
+    if TeX
+      fidTeX = fopen([fname_ '_IRF.TeX'],'w');
+      fprintf(fidTeX,'%% TeX eps-loader file generated by stoch_simul.m (Dynare).\n');
+      fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
+      fprintf(fidTeX,' \n');
+    end
+    olditer = iter_;% Est-ce vraiment utile ? Il y a la m�me ligne dans irf... 
+    SS(lgx_orig_ord_,lgx_orig_ord_)=Sigma_e_+1e-14*eye(exo_nbr);
+    cs = transpose(chol(SS));
+    tit(lgx_orig_ord_,:) = lgx_;
+    if TeX
+      titTeX(lgx_orig_ord_,:) = lgx_TeX_;
+    end
+    for i=1:exo_nbr
+      if SS(i,i) > 1e-13
+	y=irf(dr_,cs(lgx_orig_ord_,i), options_.irf, options_.drop, ...
+	      options_.replic, options_.order);
+	if options_.relative_irf
+	  y = 100*y/cs(i,i); 
+	end
+	irfs   = [];
+	mylist = [];
+	if TeX
+	  mylistTeX = [];
+	end
+	for j = 1:n
+	  if max(y(ivar(j),:)) - min(y(ivar(j),:)) > 1e-10
+	    irfs  = cat(1,irfs,y(ivar(j),:));
+	    mylist = strvcat(mylist,deblank(var_list(j,:)));
+	    if TeX
+	      mylistTeX = strvcat(mylistTeX,deblank(var_listTeX(j,:)));
+	    end
+	  end
+	end
+	number_of_plots_to_draw = size(irfs,1);
+	[nbplt,nr,nc,lr,lc,nstar] = pltorg(number_of_plots_to_draw);
+	if nbplt == 0
+	elseif nbplt == 1
+	  if options_.relative_irf
+	    hh = figure('Name',['Relative response to' ...
+				' orthogonalized shock to ' tit(i,:)]);
+	  else
+	    hh = figure('Name',['Orthogonalized shock to' ...
+				' ' tit(i,:)]);
+	  end
+	  for j = 1:number_of_plots_to_draw
+	    subplot(nr,nc,j);
+	    plot(1:options_.irf,transpose(irfs(j,:)),'-k','linewidth',1);
+	    hold on
+	    plot([1 options_.irf],[0 0],'-r','linewidth',0.5);
+	    hold off
+	    xlim([1 options_.irf]);
+	    title(deblank(mylist(j,:)),'Interpreter','none');
+	    assignin('base',[deblank(mylist(j,:)) '_' deblank(tit(i,:))],transpose(irfs(j,:)));
+	  end
+	  eval(['print -depsc2 ' fname_ '_IRF_' deblank(tit(i,:))]);
+	  eval(['print -dpdf ' fname_  '_IRF_' deblank(tit(i,:))]);
+	  saveas(hh,[fname_  '_IRF_' deblank(tit(i,:)) '.fig']);
+	  if TeX
+	    fprintf(fidTeX,'\\begin{figure}[H]\n');
+	    for j = 1:number_of_plots_to_draw
+	      fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{$%s$}\n'],deblank(mylist(j,:)),deblank(mylistTeX(j,:)));
+	    end
+	    fprintf(fidTeX,'\\centering \n');
+	    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_IRF_%s}\n',fname_,deblank(tit(i,:)));
+	    fprintf(fidTeX,'\\caption{Impulse response functions (orthogonalized shock to $%s$).}',titTeX(i,:));
+	    fprintf(fidTeX,'\\label{Fig:IRF:%s}\n',deblank(tit(i,:)));
+	    fprintf(fidTeX,'\\end{figure}\n');
+	    fprintf(fidTeX,' \n');
+	  end
+	  %				close(hh)
+	else
+	  for fig = 1:nbplt-1
+	    if options_.relative_irf == 1
+	      hh = figure('Name',['Relative response to orthogonalized shock' ...
+				  ' to ' tit(i,:) ' figure ' int2str(fig)]);
+	    else
+	      hh = figure('Name',['Orthogonalized shock to ' tit(i,:) ...
+				  ' figure ' int2str(fig)]);
+	    end
+	    for plt = 1:nstar
+	      subplot(nr,nc,plt);
+	      plot(1:options_.irf,transpose(irfs((fig-1)*nstar+plt,:)),'-k','linewidth',1);
+	      hold on
+	      plot([1 options_.irf],[0 0],'-r','linewidth',0.5);
+	      hold off
+	      xlim([1 options_.irf]);
+	      title(deblank(mylist((fig-1)*nstar+plt,:)),'Interpreter','none');
+	      assignin('base',[deblank(mylist((fig-1)*nstar+plt,:)) '_' deblank(tit(i,:))],transpose(irfs((fig-1)*nstar+plt,:)));
+	    end
+	    eval(['print -depsc2 ' fname_ '_IRF_' deblank(tit(i,:)) int2str(fig)]);
+	    eval(['print -dpdf ' fname_  '_IRF_' deblank(tit(i,:)) int2str(fig)]);
+	    saveas(hh,[fname_  '_IRF_' deblank(tit(i,:)) int2str(fig) '.fig']);
+	    if TeX
+	      fprintf(fidTeX,'\\begin{figure}[H]\n');
+	      for j = 1:nstar
+		fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{$%s$}\n'],deblank(mylist((fig-1)*nstar+j,:)),deblank(mylistTeX((fig-1)*nstar+j,:)));
+	      end
+	      fprintf(fidTeX,'\\centering \n');
+	      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_IRF_%s%s}\n',fname_,deblank(tit(i,:)),int2str(fig));
+	      if options_.relative_irf
+		fprintf(fidTeX,['\\caption{Relative impulse response' ...
+				' functions (orthogonalized shock to $%s$).}'],deblank(titTeX(i,:)));
+	      else
+		fprintf(fidTeX,['\\caption{Impulse response functions' ...
+				' (orthogonalized shock to $%s$).}'],deblank(titTeX(i,:)));
+	      end
+	      fprintf(fidTeX,'\\label{Fig:BayesianIRF:%s:%s}\n',deblank(tit(i,:)),int2str(fig));
+	      fprintf(fidTeX,'\\end{figure}\n');
+	      fprintf(fidTeX,' \n');
+	    end
+	    %					close(hh);
+	  end
+	  hh = figure('Name',['Orthogonalized shock to ' tit(i,:) ' figure ' int2str(nbplt) '.']);
+	  m = 0; 
+	  for plt = 1:number_of_plots_to_draw-(nbplt-1)*nstar;
+	    m = m+1;
+	    subplot(lr,lc,m);
+	    plot(1:options_.irf,transpose(irfs((nbplt-1)*nstar+plt,:)),'-k','linewidth',1);
+	    hold on
+	    plot([1 options_.irf],[0 0],'-r','linewidth',0.5);
+	    hold off
+	    xlim([1 options_.irf]);
+	    title(deblank(mylist((nbplt-1)*nstar+plt,:)),'Interpreter','none');
+	    assignin('base',[deblank(mylist((nbplt-1)*nstar+plt,:)) '_' deblank(tit(i,:))],transpose(irfs((nbplt-1)*nstar+plt,:)));
+	  end
+	  eval(['print -depsc2 ' fname_ '_IRF_' deblank(tit(i,:)) int2str(nbplt)]);
+	  eval(['print -dpdf ' fname_  '_IRF_' deblank(tit(i,:)) int2str(nbplt)]);
+	  saveas(hh,[fname_  '_IRF_' deblank(tit(i,:)) int2str(nbplt) '.fig']);
+	  if TeX
+	    fprintf(fidTeX,'\\begin{figure}[H]\n');
+	    for j = 1:m
+	      fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{$%s$}\n'],deblank(mylist((nbplt-1)*nstar+j,:)),deblank(mylistTeX((nbplt-1)*nstar+j,:)));
+	    end
+	    fprintf(fidTeX,'\\centering \n');
+	    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_IRF_%s%s}\n',fname_,deblank(tit(i,:)),int2str(nbplt));
+	    if options_.relative_irf
+	      fprintf(fidTeX,['\\caption{Relative impulse response functions' ...
+			      ' (orthogonalized shock to $%s$).}'],deblank(titTeX(i,:)));
+	    else
+	      fprintf(fidTeX,['\\caption{Impulse response functions' ...
+			      ' (orthogonalized shock to $%s$).}'],deblank(titTeX(i,:)));
+	    end
+	    fprintf(fidTeX,'\\label{Fig:IRF:%s:%s}\n',deblank(tit(i,:)),int2str(nbplt));
+	    fprintf(fidTeX,'\\end{figure}\n');
+	    fprintf(fidTeX,' \n');
+	  end
+	  %				close(hh);
+	end
+      end
+    end
+    iter_ = olditer;
+    if TeX
+      fprintf(fidTeX,' \n');
+      fprintf(fidTeX,'%% End Of TeX file. \n');
+      fclose(fidTeX);
+    end
+  end
+  % 01/10/01 FC dr_ and y_ made global
+  % 02/20/01 MJ ys_ removed from calling sequence for simult (all in dr_)
+  % 02/23/01 MJ added dyn2vec()
+  % 06/24/01 MJ steady -> steady_
+  % 09/24/01 MJ dr_ made global
+  % 08/28/02 MJ added var_list
+  % 10/09/02 MJ no simulation and theoretical moments for order 1 
+  % 10/14/02 MJ added plot of IRFs
+  % 10/30/02 MJ options_ are now a structure
+  % 01/01/03 MJ added dr_algo
+  % 01/09/03 MJ set default values for options_ (correct absence of autocorr
+  %             when order == 1)
+  % 01/12/03 MJ removed call to steady_ as already checked in resol()
+  % 01/31/03 MJ make IRF global with varname_shockname
+  % 02/09/03 MJ ys_ reset with value declared in initval after computations
+  % 02/18/03 MJ removed above change. ys_ shouldn't be affected by
+  %             computations in this function
+  %             new option SIMUL computes a stochastic simulation and save
+  %             results in y_ and via dyn2vec
+  % 04/03/03 MJ corrected bug for simulation with ykmin_ > 1
+  % 05/20/03 MJ eliminates exogenous shocks with 0 variance
+  % 05/20/03 MJ don't plot IRF if variation < 1e-10
+  % 11/14/03 MJ corrected bug on number of replications for IRF when
+  %             order=2
+  % 11/22/03 MJ replaced IRFs by orthogonalized IRFs
+  % 08/30/04 SA The maximum number of plots is not constrained for the IRFs and 
+  %			  all the plots are saved in *.eps, *.pdf and *.fig files (added
+  %			  fname_ as a global variable).
+  % 09/03/04 SA Tex output for IRFs added
diff --git a/tags/v_3.062/matlab/subset.m b/tags/v_3.062/matlab/subset.m
new file mode 100644
index 0000000000..a82ab1c977
--- /dev/null
+++ b/tags/v_3.062/matlab/subset.m
@@ -0,0 +1,80 @@
+function jndx = subset();
+% stephane.adjemian@ens.fr [11-30-2005]
+global options_ estim_params_ lgx_
+
+ExcludedParamNames = options_.ExcludedParams;
+VarObs = options_.varobs;
+VarExo = lgx_;
+info = options_.ParamSubSet;
+
+nvx = estim_params_.nvx;
+nvn = estim_params_.nvn;
+ncx = estim_params_.ncx;
+ncn = estim_params_.ncn;
+np  = estim_params_.np;
+nx  = nvx+nvn+ncx+ncn+np;
+
+if strcmpi(info,'All')
+  indx = (1:nx)';
+elseif strcmpi(info,'DeepParameters')
+  indx = (nvx+nvn+ncx+ncn+1:nx)';
+elseif strcmpi(info,'StructuralShocks')
+  indx = [(1:nvx),nvx+nvn+1:nvx+nvn+ncx]';
+elseif strcmpi(info,'StructuralShocksWithoutCorrelations')
+  indx = (1:nvx)';
+elseif strcmpi(info,'MeasurementErrors')
+  indx = [(nvx+1:nvx+nvn),(nvx+nvn+ncx+1:nvx+nvn+ncx+ncn)]';
+elseif strcmpi(info,'MeasurementErrorsWithoutCorrelations')
+  indx = (nvx+1:nvx+nvn)';
+elseif strcmpi(info,'AllWithoutMeasurementErrors')
+  indx = [(1:nvx),nvx+nvn+1:nvx+nvn+ncx,nvx+nvn+ncx+ncn+1:nx]';
+elseif strcmpi(info,'None')
+  indx = [];
+end
+
+if isempty(ExcludedParamNames)
+  jndx = indx;
+else
+  tt = [];
+  for i = 1:length(ExcludedParamNames)
+    tmp = strmatch(ExcludedParamNames{i},lgx_);
+    if ~isempty(tmp) & ( strcmpi(info,'All') | strcmpi(info,'StructuralShocks') | ...
+			 strcmpi(info,'StructuralShocksWithoutCorrelations') | ...
+			 strcmpi(info,'AllWithoutMeasurementErros') )
+      % The parameter the user wants to exclude is related to the size of the structural innovations.
+      if ncx
+	disp(['I cannot exclude some the structural variances if the'])
+	disp(['structural innovations are correlated...'])
+	error
+      end
+      tt = [tt;tmp];
+    elseif isempty(tmp) & nvn 
+      tmp = strmatch(ExcludedParamNames{i},options_.varobs);
+      if ~isempty(tmp) & ( strcmpi(info,'All') | strcmpi(info,'MeasurementErrors') | ...
+			 strcmpi(info,'MeasurementErrorsWithoutCorrelations') )
+	% The parameter the user wants to exclude is related to the size of the measurement errors variances.
+	tmp = nvx+tmp;
+	if ncn
+	  disp(['I cannot exclude some the measurement error variances if the'])
+	  disp(['measurement errors are correlated...'])
+	  error
+	end
+	tt = [tt;tmp];
+      end
+    else% Excluded parameters are deep parameters...
+      tmp = strmatch(ExcludedParamNames{i},estim_params_.param_names,'exact');
+      if ~isempty(tmp)
+	tt = [tt;nvx+nvn+ncx+ncn+tmp];
+      else
+	disp('The parameter you want to exclude is unknown!')
+	error
+      end
+    end
+  end
+  jndx = [];
+  for i=1:length(indx)
+    if ~any(indx(i)==tt)
+      jndx = [ jndx ; indx(i) ];
+    end
+  end
+end
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/sylvester3.m b/tags/v_3.062/matlab/sylvester3.m
new file mode 100644
index 0000000000..d75d01647a
--- /dev/null
+++ b/tags/v_3.062/matlab/sylvester3.m
@@ -0,0 +1,49 @@
+% solves a*x+b*x*c=d
+function x=sylvester3(a,b,c,d)
+  n = size(a,1);
+  m = size(c,1);
+  if n == 1
+    x=d./(a*ones(1,m)+b*c);
+    return
+  end
+  if m == 1
+    x = (a+c*b)\d;
+    return;
+  end
+  x=zeros(n,m);
+  [u,t]=schur(c);
+  [aa,bb,qq,zz]=qz(full(a),full(b),'real'); % available in Matlab version 6.0
+  d=qq*d*u;
+  i = 1;
+  while i < m
+    if t(i+1,i) == 0
+      if i == 1
+	c = zeros(n,1);
+      else
+	c = bb*(x(:,1:i-1)*t(1:i-1,i));
+      end
+      x(:,i)=(aa+bb*t(i,i))\(d(:,i)-c);
+      i = i+1;
+    else
+      if i == n
+	c = zeros(n,1);
+	c1 = zeros(n,1);
+      else
+	c = bb*(x(:,1:i-1)*t(1:i-1,i));
+	c1 = bb*(x(:,1:i-1)*t(1:i-1,i+1));
+      end
+      z = [aa+bb*t(i,i) bb*t(i+1,i); bb*t(i,i+1) aa+bb*t(i+1,i+1)]...
+	  \[d(:,i)-c;d(:,i+1)-c1];
+      x(:,i) = z(1:n);
+      x(:,i+1) = z(n+1:end);
+      i = i + 2;
+    end
+  end
+  if i == m
+    c = bb*(x(:,1:m-1)*t(1:m-1,m));
+    x(:,m)=(aa+bb*t(m,m))\(d(:,m)-c);
+  end
+  x=zz*x*u';
+  
+% 01/25/03 MJ corrected bug for i==m (sign of c in x determination)
+% 01/31/03 MJ added 'real' to qz call
diff --git a/tags/v_3.062/matlab/sylvester3a.m b/tags/v_3.062/matlab/sylvester3a.m
new file mode 100644
index 0000000000..d2b90b6042
--- /dev/null
+++ b/tags/v_3.062/matlab/sylvester3a.m
@@ -0,0 +1,17 @@
+% solves iteratively ax+bxc=d
+
+function x=sylvester3a(x0,a,b,c,d)
+a_1 = inv(a);
+b = a_1*b;
+d = a_1*d;
+e = 1;
+iter = 1;
+while e > 1e-8 & iter < 500
+  x = d-b*x0*c;
+  e = max(max(abs(x-x0)));
+  x0 = x;
+  iter = iter + 1;
+end
+if iter == 500
+  fprintf('Syvester3a : Only accuracy of %10.8f is achieved after 500 iterations. \n',e)
+end
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/table.m b/tags/v_3.062/matlab/table.m
new file mode 100644
index 0000000000..cf809b2da8
--- /dev/null
+++ b/tags/v_3.062/matlab/table.m
@@ -0,0 +1,26 @@
+% Copyright (C) 2002 Michel Juillard
+%
+function table(title,headers,labels,values,label_width,val_width, ...
+	       val_precis)
+  label_width = max(size(deblank(strvcat(headers(1,:),labels)),2)+2, ...
+		    label_width);
+  val_width = max(size(deblank(headers(2:end,:)),2)+2,val_width);
+  label_fmt = sprintf('%%-%ds',label_width);
+  header_fmt = sprintf('%%-%ds',val_width);
+  val_fmt = sprintf('%%%d.%df',val_width,val_precis);
+  if length(title) > 0
+    disp(sprintf('\n\n%s\n',title));
+  end
+  if length(headers) > 0
+    hh = sprintf(label_fmt,headers(1,:));
+    hh = [hh char(32*ones(1,floor(val_width/4)))];
+    for i=2:size(headers,1)
+      hh = [hh sprintf(header_fmt,headers(i,:))];
+    end
+    disp(hh);
+  end
+  for i=1:size(values,1)
+    disp([sprintf(label_fmt,labels(i,:)) sprintf(val_fmt,values(i,:))]);
+  end
+  
+% 10/30/02 MJ
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/testifft.m b/tags/v_3.062/matlab/testifft.m
new file mode 100644
index 0000000000..3efc8f2110
--- /dev/null
+++ b/tags/v_3.062/matlab/testifft.m
@@ -0,0 +1,21 @@
+a = [0.95 0.025; 0.025 0.95];
+
+ngrid = 512;
+freqs = 0 : ((2*pi)/ngrid) : (2*pi*(1 - .5/ngrid)); 
+
+im = sqrt(-1);
+  mathp_col = [];
+
+    for ig = 1:ngrid,
+      tpos  = exp( im*freqs(ig));
+      tneg  =  exp(-im*freqs(ig));
+      f_omega  =(1/(2*pi))*[inv(eye(2)-a*tneg);eye(2)]* ...
+		Sigma_e_*[inv(eye(2)-a'*tpos) eye(2)];
+      f_hp = f_omega;
+      mathp_col = [mathp_col ; (f_hp(:))'];    % store as matrix row
+                                               % for ifft
+    end;
+
+    % covariance of filtered series
+    imathp_col = real(ifft(mathp_col))*2*pi;
+    reshape(imathp_col(1,:),4,4)
diff --git a/tags/v_3.062/matlab/th_autocovariances.m b/tags/v_3.062/matlab/th_autocovariances.m
new file mode 100644
index 0000000000..77ed8e861f
--- /dev/null
+++ b/tags/v_3.062/matlab/th_autocovariances.m
@@ -0,0 +1,225 @@
+% Copyright (C) 2001 Michel Juillard
+%
+% computes the theoretical auto-covariances, Gamma_y, for an AR(p) process 
+% with coefficients dr.ghx and dr.ghu and shock variances Sigma_e_
+% for a subset of variables ivar (indices in lgy_)
+% Theoretical HP filtering is available as an option
+
+function [Gamma_y,ivar]=th_autocovariances(dr,ivar)
+  global lgy_ endo_nbr exo_nbr Sigma_e_ ykmin_ lgx_orig_ord_ options_
+
+  if sscanf(version('-release'),'%d') < 13
+    warning off
+  else
+    eval('warning off MATLAB:dividebyzero')
+  end
+  nar = options_.ar;
+  Gamma_y = cell(nar+1,1);
+  if isempty(ivar)
+    ivar = [1:endo_nbr]';
+  end
+  nvar = size(ivar,1);
+  
+  ghx = dr.ghx;
+  ghu = dr.ghu;
+  npred = dr.npred;
+  nstatic = dr.nstatic;
+  kstate = dr.kstate;
+  order = dr.order_var;
+  iv(order) = [1:length(order)];
+  nx = size(ghx,2);
+  
+  ikx = [nstatic+1:nstatic+npred];
+  
+  A = zeros(nx,nx);
+  k0 = kstate(find(kstate(:,2) <= ykmin_+1),:);
+  i0 = find(k0(:,2) == ykmin_+1);
+  i00 = i0;
+  n0 = length(i0);
+  A(i0,:) = ghx(ikx,:);
+  AS = ghx(:,i0);
+  ghu1 = zeros(nx,exo_nbr);
+  ghu1(i0,:) = ghu(ikx,:);
+  for i=ykmin_:-1:2
+    i1 = find(k0(:,2) == i);
+    n1 = size(i1,1);
+    j1 = zeros(n1,1);
+    j2 = j1;
+    for k1 = 1:n1
+      j1(k1) = find(k0(i00,1)==k0(i1(k1),1));
+      j2(k1) = find(k0(i0,1)==k0(i1(k1),1));
+    end
+%    A(i1,i0(j2))=eye(n1);
+    AS(:,j1) = AS(:,j1)+ghx(:,i1);
+    i0 = i1;
+  end
+  b = ghu1*Sigma_e_*ghu1';
+
+
+  [A,B] = kalman_transition_matrix(dr);
+  % index of predetermined variables in A
+  i_pred = [nstatic+(1:npred) endo_nbr+1:length(A)];
+  A = A(i_pred,i_pred);
+
+  [v,d] = eig(A);
+  abs_root = abs(diag(d));
+  i_ur = find(abs_root > 2-options_.qz_criterium & ...
+	      abs_root < options_.qz_criterium);
+
+  if ~isempty(i_ur)
+    % non-stationary variables have non-zero entries in eigenvectors
+    % associated with unit roots
+    ns_var = find(any(abs(v(1:npred,i_ur))>1e-7,2));
+
+    %right eigenvectors
+    v1 = inv(v);
+
+    % remove zero frequency from A
+    A = A-real(v(:,i_ur)*d(i_ur,i_ur)*v1(i_ur,:));
+    
+    % return only variance of stationary variables
+    i_ivar = find(~ismember(ivar,dr.order_var(ns_var+nstatic)));
+    ivar = ivar(i_ivar);
+  end
+  % order of variables with preset variances in ghx and ghu
+  iky = iv(ivar);
+  
+  aa = ghx(iky,:);
+  bb = ghu(iky,:);
+
+  if options_.order == 2
+    vx =  lyapunov_symm(A,b); 
+    Ex = (dr.ghs2(ikx)+dr.ghxx(ikx,:)*vx(:)+dr.ghuu(ikx,:)*Sigma_e_(:))/2;
+    Ex = (eye(n0)-AS(ikx,:))\Ex;
+    Gamma_y{nar+3} = AS(iky,:)*Ex+(dr.ghs2(iky)+dr.ghxx(iky,:)*vx(:)+dr.ghuu(iky,:)*Sigma_e_(:))/2;
+  end
+  if options_.hp_filter == 0
+    if options_.order < 2
+      vx =  lyapunov_symm(A,b);
+    end
+    Gamma_y{1} = aa*vx*aa'+ bb*Sigma_e_*bb';
+    k = find(abs(Gamma_y{1}) < 1e-12);
+    Gamma_y{1}(k) = 0;
+    
+    % autocorrelations
+    if nar > 0
+      vxy = (A*vx*aa'+ghu1*Sigma_e_*bb');
+
+      sy = sqrt(diag(Gamma_y{1}));
+      sy = sy *sy';
+      Gamma_y{2} = aa*vxy./sy;
+      
+      for i=2:nar
+	vxy = A*vxy;
+	Gamma_y{i+1} = aa*vxy./sy;
+      end
+    end
+    
+    % variance decomposition
+    if exo_nbr > 1
+      Gamma_y{nar+2} = zeros(length(ivar),exo_nbr);
+      SS(lgx_orig_ord_,lgx_orig_ord_)=Sigma_e_+1e-14*eye(exo_nbr);
+      cs = chol(SS)';
+      b1(:,lgx_orig_ord_) = ghu1;
+      b1 = b1*cs;
+      b2(:,lgx_orig_ord_) = ghu(iky,:);
+      b2 = b2*cs;
+      vx  = lyapunov_symm(A,b1*b1');
+      vv = diag(aa*vx*aa'+b2*b2');
+      for i=1:exo_nbr
+	vx1 = lyapunov_symm(A,b1(:,i)*b1(:,i)');
+	Gamma_y{nar+2}(:,i) = abs(diag(aa*vx1*aa'+b2(:,i)*b2(:,i)'))./vv;
+      end
+    end
+  else
+    lambda = options_.hp_filter;
+    ngrid = options_.hp_ngrid;
+    freqs = 0 : ((2*pi)/ngrid) : (2*pi*(1 - .5/ngrid)); 
+    tpos  = exp( sqrt(-1)*freqs);
+    tneg  =  exp(-sqrt(-1)*freqs);
+    hp1 = 4*lambda*(1 - cos(freqs)).^2 ./ (1 + 4*lambda*(1 - cos(freqs)).^2);
+    
+    mathp_col = [];
+    IA = eye(size(A,1));
+    IE = eye(exo_nbr);
+    for ig = 1:ngrid
+      f_omega  =(1/(2*pi))*( [inv(IA-A*tneg(ig))*ghu1;IE]...
+			     *Sigma_e_*[ghu1'*inv(IA-A'*tpos(ig)) ...
+		    IE]); % state variables
+      g_omega = [aa*tneg(ig) bb]*f_omega*[aa'*tpos(ig); bb']; % selected variables
+      f_hp = hp1(ig)^2*g_omega; % spectral density of selected filtered series
+      mathp_col = [mathp_col ; (f_hp(:))'];    % store as matrix row
+                                               % for ifft
+    end;
+
+    % covariance of filtered series
+    imathp_col = real(ifft(mathp_col))*(2*pi);
+
+    Gamma_y{1} = reshape(imathp_col(1,:),nvar,nvar);
+    
+    % autocorrelations
+    if nar > 0
+      sy = sqrt(diag(Gamma_y{1}));
+      sy = sy *sy';
+      for i=1:nar
+	Gamma_y{i+1} = reshape(imathp_col(i+1,:),nvar,nvar)./sy;
+      end
+    end
+    
+    %variance decomposition
+    if exo_nbr > 1 
+      Gamma_y{nar+2} = zeros(nvar,exo_nbr);
+      SS(lgx_orig_ord_,lgx_orig_ord_)=Sigma_e_+1e-14*eye(exo_nbr);
+      cs = chol(SS)';
+      SS = cs*cs';
+      b1(:,lgx_orig_ord_) = ghu1;
+      b2(:,lgx_orig_ord_) = ghu(iky,:);
+      mathp_col = [];
+      IA = eye(size(A,1));
+      IE = eye(exo_nbr);
+      for ig = 1:ngrid
+	f_omega  =(1/(2*pi))*( [inv(IA-A*tneg(ig))*b1;IE]...
+			       *SS*[b1'*inv(IA-A'*tpos(ig)) ...
+		    IE]); % state variables
+	g_omega = [aa*tneg(ig) b2]*f_omega*[aa'*tpos(ig); b2']; % selected variables
+	f_hp = hp1(ig)^2*g_omega; % spectral density of selected filtered series
+	mathp_col = [mathp_col ; (f_hp(:))'];    % store as matrix row
+						 % for ifft
+      end;
+
+      imathp_col = real(ifft(mathp_col))*(2*pi);
+      vv = diag(reshape(imathp_col(1,:),nvar,nvar));
+      for i=1:exo_nbr
+	mathp_col = [];
+	SSi = cs(:,i)*cs(:,i)';
+	for ig = 1:ngrid
+	  f_omega  =(1/(2*pi))*( [inv(IA-A*tneg(ig))*b1;IE]...
+				 *SSi*[b1'*inv(IA-A'*tpos(ig)) ...
+		    IE]); % state variables
+	  g_omega = [aa*tneg(ig) b2]*f_omega*[aa'*tpos(ig); b2']; % selected variables
+	  f_hp = hp1(ig)^2*g_omega; % spectral density of selected filtered series
+	  mathp_col = [mathp_col ; (f_hp(:))'];    % store as matrix row
+						   % for ifft
+	end;
+
+	imathp_col = real(ifft(mathp_col))*(2*pi);
+	Gamma_y{nar+2}(:,i) = abs(diag(reshape(imathp_col(1,:),nvar,nvar)))./vv;
+      end
+    end
+  end
+  if sscanf(version('-release'),'%d') < 13
+    warning on
+  else
+    eval('warning on MATLAB:dividebyzero')
+  end
+  
+  % 10/18/2002 MJ
+  % 10/30/2002 added autocorrelations, Gamma_y is now a cell array
+  % 01/20/2003 MJ added variance decomposition
+  % 02/18/2003 MJ added HP filtering (Thanks to Jean Chateau for the code)
+  % 04/28/2003 MJ changed handling of options
+  % 05/19/2003 MJ don't assume lags are in increasing order in building A
+  % 05/21/2003 MJ added global i_exo_var_,
+  %               variance decomposition: test exo_nbr > 1
+  % 05/29/2003 MJ removed global i_exo_var_
+  % 06/10/2003 MJ test release for warning syntax
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/transition_matrix.m b/tags/v_3.062/matlab/transition_matrix.m
new file mode 100644
index 0000000000..4d5e799ed1
--- /dev/null
+++ b/tags/v_3.062/matlab/transition_matrix.m
@@ -0,0 +1,24 @@
+% makes transition matrices out of ghx and ghu
+
+function [A,B] = transition_matrix(dr)
+  global ykmin_ exo_nbr 
+  nx = size(dr.ghx,2);
+  kstate = dr.kstate;
+  ikx = [dr.nstatic+1:dr.nstatic+dr.npred];
+  
+  A = zeros(nx,nx);
+  k0 = kstate(find(kstate(:,2) <= ykmin_+1),:);
+  i0 = find(k0(:,2) == ykmin_+1);
+  A(i0,:) = dr.ghx(ikx,:);
+  B = zeros(nx,exo_nbr);
+  B(i0,:) = dr.ghu(ikx,:);
+  for i=ykmin_:-1:2
+    i1 = find(k0(:,2) == i);
+    n1 = size(i1,1);
+    j = zeros(n1,1);
+    for j1 = 1:n1
+      j(j1) = find(k0(i0,1)==k0(i1(j1),1));
+    end
+    A(i1,i0(j))=eye(n1);
+    i0 = i1;
+  end
diff --git a/tags/v_3.062/matlab/uniform_specification.m b/tags/v_3.062/matlab/uniform_specification.m
new file mode 100644
index 0000000000..5d81f0bf97
--- /dev/null
+++ b/tags/v_3.062/matlab/uniform_specification.m
@@ -0,0 +1,12 @@
+% Copyright (C) 2004 Michel Juillard
+%
+function [m,s,p1,p2] = uniform_specification(m,s,p3,p4)
+    if ~(isnan(p3) | isnan(p4))
+      p1 = p3;
+      p2 = p4;
+      m = (p3+p4)/2;
+      s = (p4-p3)/(sqrt(12));
+    else
+      p1 = m-s*sqrt(3);
+      p2 = m+s*sqrt(3);
+    end
diff --git a/tags/v_3.062/matlab/union.m b/tags/v_3.062/matlab/union.m
new file mode 100644
index 0000000000..13fa308f6a
--- /dev/null
+++ b/tags/v_3.062/matlab/union.m
@@ -0,0 +1,12 @@
+function x = union(a,b)
+
+xx = sort([a;b]) ;
+x(1) = xx(1) ;
+for i = 2:size(xx,1)
+	if xx(i) ~= xx(i-1)
+		x =[x;xx(i)];
+	end
+end
+return ;
+
+
diff --git a/tags/v_3.062/matlab/var_index.m b/tags/v_3.062/matlab/var_index.m
new file mode 100644
index 0000000000..04d6106fe5
--- /dev/null
+++ b/tags/v_3.062/matlab/var_index.m
@@ -0,0 +1,11 @@
+% var_index(vname) returns the index of variable 'vname'
+% in its respective variable list (endogeneous, exogeneous)
+% input:
+%        vname     a string of character
+% output:
+%        i         a positive integer
+% an error message is given if vname isn't in the state vector
+function k=var_index(vname)
+  global lgy_
+  
+  k = strmatch(vname,lgy_,'exact');
diff --git a/tags/v_3.062/matlab/var_state_index.m b/tags/v_3.062/matlab/var_state_index.m
new file mode 100644
index 0000000000..c3e4f0865d
--- /dev/null
+++ b/tags/v_3.062/matlab/var_state_index.m
@@ -0,0 +1,15 @@
+% var_state_index(vname) returns the index of variable 'vname'
+% in the extended state space representation vector of the system
+% input:
+%        vname     a string of character
+%        order     a vector containing the composition of the state
+%                  vector. Normaly, dr_.order_var 
+
+% output:
+%        i         a positive integer
+% an error message is given if vname isn't in the state vector
+function i=var_state_index(vname,order)
+  global lgy_
+  
+  k = strmatch(vname,lgy_,'exact');
+  i = find(k==order);
\ No newline at end of file
diff --git a/tags/v_3.062/matlab/varprior.m b/tags/v_3.062/matlab/varprior.m
new file mode 100644
index 0000000000..04db6feea2
--- /dev/null
+++ b/tags/v_3.062/matlab/varprior.m
@@ -0,0 +1,54 @@
+function [ydum,xdum,breaks]=varprior(nv,nx,lags,mnprior,vprior)
+%function [ydum,xdum,breaks]=varprior(nv,nx,lags,mnprior,vprior)
+% ydum, xdum:   dummy observation data that implement the prior
+% breaks:       vector of points in the dummy data after which new dummy obs's start
+%                   Set breaks=T+[0;breaks], ydata=[ydata;ydum], xdum=[xdata;xdum], where 
+%                   actual data matrix has T rows, in preparing input for rfvar3
+% nv,nx,lags: VAR dimensions
+% mnprior.tight:Overall tightness of Minnesota prior
+% mnprior.decay:Standard deviations of lags shrink as lag^(-decay)
+% vprior.sig:   Vector of prior modes for diagonal elements of r.f. covariance matrix
+% vprior.w:     Weight on prior on vcv.  1 corresponds to "one dummy observation" weight
+%                   Should be an integer, and will be rounded if not.  vprior.sig is needed
+%                   to scale the Minnesota prior, even if the prior on sigma is not used itself.
+%                   Set vprior.w=0 to achieve this.
+% Note:         The original Minnesota prior treats own lags asymmetrically, and therefore
+%                   cannot be implemented entirely with dummy observations.  It is also usually
+%                   taken to include the sum-of-coefficients and co-persistence components
+%                   that are implemented directly in rfvar3.m.  The diagonal prior on v, combined
+%                   with sum-of-coefficients and co-persistence components and with the unit own-first-lag
+%                   prior mean generates larger prior variances for own than for cross-effects even in 
+%                   this formulation, but here there is no way to shrink toward a set of unconstrained 
+%                   univariate AR's.
+%-----------------------
+% 
+if ~isempty(mnprior)
+    xdum=zeros(lags+1,nx,lags,nv);
+    ydum=zeros(lags+1,nv,lags,nv);
+    for il=1:lags
+        ydum(il+1,:,il,:)=il^mnprior.decay*diag(vprior.sig);
+    end
+    ydum(1,:,1,:)=diag(vprior.sig);
+    ydum=mnprior.tight*reshape(ydum,[lags+1,nv,lags*nv]);
+    ydum=flipdim(ydum,1);
+    xdum=mnprior.tight*reshape(xdum,[lags+1,nx,lags*nv]);
+    xdum=flipdim(xdum,1);
+    breaks=(lags+1)*[1:(nv*lags)]';
+    lbreak=breaks(end);
+else
+    ydum=[];
+    xdum=[];
+    breaks=[];
+    lbreak=0;
+end
+if ~isempty(vprior) & vprior.w>0
+    ydum2=zeros(lags+1,nv,nv);
+    xdum2=zeros(lags+1,nx,nv);
+    ydum2(end,:,:)=diag(vprior.sig);
+    ydum=cat(3,ydum,ydum2);
+    xdum=cat(3,xdum,xdum2);
+    dimy=size(ydum);
+    ydum=reshape(permute(ydum,[1 3 2]),dimy(1)*dimy(3),nv);
+    xdum=reshape(permute(xdum,[1 3 2]),dimy(1)*dimy(3),nx);
+    breaks=[breaks;(lags+1)*[1:nv-1]'+lbreak];
+end
diff --git a/tags/v_3.062/parser.src/d.h b/tags/v_3.062/parser.src/d.h
new file mode 100644
index 0000000000..aa22390541
--- /dev/null
+++ b/tags/v_3.062/parser.src/d.h
@@ -0,0 +1,106 @@
+#define MAX_INDEX_NBR 10
+struct var {
+  char *name;
+  int endo_exo;   /* 0: exogenous; 1: endogenous; 2: loop index (numerical)*/
+  int nbr;
+  int original_nbr;
+};
+
+struct token {
+  int endo_exo;
+  int nbr;        /* >=0: variable, -1: string, -2: loop index, -3 indexed variable */
+  int lead_lag;
+  char *name;     /* string content or variable lead_lag name */
+  struct var *var_ptr; /* only for variables */
+};
+
+struct queue {
+  void **ptr;
+  int flag;
+  int imax;
+};
+
+struct loop {
+  int loop_index;
+  int loop_limit;
+  int loop_increment;
+  char *loop_index_name;
+};
+
+struct s_check{
+  int eq_nbr;
+  int determ;
+  int stoch;
+  int initval;
+  int endval;
+  int histval;
+  int steady;
+  int linear;
+  int stoch_simul;
+  int simul;
+  int check;
+  int olr;
+  int osr;
+};
+
+struct s_runtime_options{
+  int clearall;
+  int debug;
+};
+
+struct s_estim_params{
+  int param_type;
+  int var_type;
+  int var_nbr;
+  int var_nbr2;
+  char* param_name;
+  char* init_val;
+  char* lb;
+  char* ub;
+  char* prior;
+  char* mean;
+  char* std;
+  char* p3;
+  char* p4;
+  char* jscale;
+};
+  
+void add_var(char *, int), print_var(), print_model(struct queue *);
+void set_ll(struct queue *, char *, int), mark_pound(struct queue *);
+struct queue * create_queue(void *);
+struct queue * add_to_queue(struct queue *, void *);
+struct queue * copy_queue(struct queue *, struct queue *);
+struct token * create_var(struct var *); 
+struct token * token(char *, int nbr);
+struct queue * m_del(char *, struct queue *);
+struct var *var_search(const char *);
+struct loop *initial_loop(char *, char *, char *, char *);
+struct queue * do_loop(struct loop *, struct queue *);
+struct queue *operator_loop(struct loop *, struct queue *, char *);
+void var_output(struct token *, int);
+int * periods(char *, char *);
+void p_shocks(struct token *, struct queue *, struct queue *, int);
+void p_init(struct token *, struct queue *);
+void p_initval(void),p_endval(void),p_i_shocks(int);
+void dynare_init(char *, struct s_runtime_options);
+void print_iter(char *);
+void pe_initval(void);
+void pe_endval(void);
+int nbr_tmpvar;
+void print_rplot(void);
+void copy_update_indexed_var(struct token **, struct queue  *, int , char *, int);
+void print_model(struct queue *);
+void print_model1(struct queue *, int);
+void print_param(void);
+void p_optim_weights_init(void);
+void p_optim_weights(struct token *, struct queue *);
+void p_expression(struct queue *);
+void p_osr_params(char *);
+void p_osr(void);
+char* my_strcat(char*, char*);
+void p_estimated_elem(void);
+void estimated_elem_init(void);
+
+/*
+04/06/02 MJ added p_optim_weights_init and p_optim_weights p_expression p_osr_params p_osr
+*/
diff --git a/tags/v_3.062/parser.src/d.y b/tags/v_3.062/parser.src/d.y
new file mode 100644
index 0000000000..a7a3968678
--- /dev/null
+++ b/tags/v_3.062/parser.src/d.y
@@ -0,0 +1,889 @@
+%{
+#include <stdio.h>
+#include <string.h>
+#include "d.h"
+
+  extern FILE *f_out;
+  extern int yylineno, var_nbr, longname, dr_algo, simul_algo, drop, linear, order, replic, iter, nbr_tmpvar, ar, nocorr, nofunctions, nomoments, irf, hp_filter, hp_ngrid, simul, simul_seed;
+  extern double shock_size;
+  extern char * varexo;
+  extern struct s_check check;
+  int ms_flag, varlist_flag, tr_row, tr_col, permit_sigma_e_;
+  struct queue *model;
+  extern struct s_estim_params estim_params;
+  char* optim_string;
+  char* empty_string = "NaN";
+
+%}
+
+%union {
+        char *string;
+	struct queue *p_queue;
+	struct token *p_tok;
+        struct loop *p_loop;
+      }
+
+%token  END ENDVAL INITVAL HISTVAL MODEL PERIODS SHOCKS VALUES VAR VAREXO 
+%token VAREXO_DET VARRECUR EQUAL
+%token VARF VARP DEL SUM PROD TO MSHOCKS LONGNAMES PARAMETERS DYN2VEC RPLOT
+%token DO TO ENDO PROD BY DOLLAR STEADY STDERR DSAMPLE
+%token STOCH_SIMUL DR_ALGO SIMUL_ALGO SOLVE_ALGO 
+%token DROP LINEAR ORDER REPLIC AR
+%token SIGMA_E HP_FILTER HP_NGRID SIMUL_SEED
+%token RESOL SIMUL IRF DISP_DR DISP_MOMENTS D_CORR SHOCK_SIZE OPTIM_WEIGHTS
+%token OSR_PARAMS OSR CALIB_VAR CALIB AUTOCORR COVAR DYNATYPE DYNASAVE
+%token OLR OLR_INST OLR_BETA CHECK
+%token ESTIMATED_PARAMS GAMMA_PDF BETA_PDF NORMAL_PDF INV_GAMMA_PDF UNIFORM_PDF
+%token INV_GAMMA1_PDF INV_GAMMA2_PDF
+%token PREFILTER PRESAMPLE LIK_ALGO LIK_INIT CONF_SIG 
+%token ESTIMATION DATAFILE NOBS FIRST_OBS VAROBS QZ_CRITERIUM MH_REPLIC MH_DROP
+%token MH_JSCALE OPTIM MH_INIT_SCALE MODE_FILE MODE_COMPUTE MODE_CHECK
+%token PRIOR_TRUNC MH_MODE MH_NBLOCKS LOAD_MH_FILE LOGLINEAR
+%token UNIT_ROOT_VARS XTICK XTICKLABEL BAYESIAN_IRF RELATIVE_IRF
+%token TEX FORECAST SMOOTHER MOMENTS_VARENDO FILTERED_VARS 
+%token OBSERVATION_TRENDS ESTIMATED_PARAMS_INIT ESTIMATED_PARAMS_BOUNDS
+%token KALMAN_ALGO KALMAN_TOL DIFFUSE_D NK
+%token CORR MOMENTS FUNCTIONS DIAGNOSTIC PRINT GRAPH
+%token NOCORR NOMOMENTS NOFUNCTIONS NODIAGNOSTIC NOPRINT NOGRAPH
+%token MODEL_COMPARISON MODEL_COMPARISON_APPROXIMATION LAPLACE
+%token MODIFIEDHARMONICMEAN SHOCKS_FILE IRF_TYPE
+%token COMPILE_DEFINE COMPILE_IF COMPILE_ELSEIF COMPILE_ELSE COMPILE_ENDIF
+%token <string> INUMBER DNUMBER NAME OPERATORS POUND EOL INDEX EQ NE LE GE
+%token <p_tok> VAR_ID
+
+%type <p_queue> equation_list equation other_inst p_expr expression elem_exp 
+%type <p_queue> del_exp sum_exp prod_exp period_list value_list
+%type <p_queue> value_list1 value_list2 expr1 do_loop
+%type <p_queue> var_exp var_id_exp indexed_var_exp 
+%type <p_queue> triangular_matrix triangular_row
+%type <p_loop> loop_init
+%type <string> value prior filename filename_elem compile_operator
+%expect 5
+%%
+
+ statement_list: statement
+      | statement_list statement 
+      ;
+
+ statement: periods 
+      | var         
+      | varexo      
+      | varexo_det      
+      | varrecur
+      | model 
+      | initval
+      | endval 
+      | histval
+      | shocks
+      | mshocks
+      | obsolete
+      | longnames    {longname=1;}
+      | parameters
+      | dyn2vec
+      | rplot
+      | steady
+      | stoch_simul
+      | resol
+      | simul
+      | dsample
+      | check
+      | irf
+      | d_corr
+      | disp_dr
+      | disp_moments
+      | optim_weights
+      | osr_params
+      | osr
+      | calib_var
+      | calib
+      | dynatype
+      | dynasave
+      | sigma_e
+      | olr
+      | olr_inst
+      | estimated_params
+      | estimated_params_init
+      | estimated_params_bounds
+      | estimation
+      | varobs
+      | observation_trends
+      | unit_root_vars
+      | model_comparison
+      | compile_statement
+      | forecast
+      ;
+ 
+ longnames : LONGNAMES ';'
+      ;
+
+ periods : PERIODS INUMBER ';'{print_iter($2);}
+      | PERIODS '=' INUMBER ';' {print_iter($3);}
+      ;
+
+var : VAR {varlist_flag=1;} varlist ';' {print_endo();}
+      ;
+
+varexo : VAREXO {varlist_flag=0;} varlist ';' {print_exo();}
+      ;
+
+varexo_det : VAREXO_DET {varlist_flag=5;} varlist ';' {print_exo_det();}
+      ;
+
+ varrecur : VARRECUR {varlist_flag=3;} varlist ';' {print_recur();}
+      ;
+
+ varlist : varlist NAME '-' NAME {add_var_range($2,$4,varlist_flag);}
+      | varlist ',' NAME '-' NAME {add_var_range($3,$5,varlist_flag);}
+      | varlist NAME              {add_var($2,varlist_flag);}
+      | varlist ',' NAME          {add_var($3,varlist_flag);}
+      | NAME '-' NAME              {add_var_range($1,$3,varlist_flag);}
+      | NAME                       {add_var($1,varlist_flag);}
+      ; 
+
+ parameters : PARAMETERS {varlist_flag=4;} varlist ';' {print_param();}
+      ;
+
+ model : MODEL ';' equation_list END   {model=$3;print_model(model);}
+      | MODEL '(' LINEAR ')' ';' equation_list END   {check.linear=1;model=$6;p_option("linear","1");print_model(model);}
+      | MODEL ';' compile_statement equation_list END   {model=$4;print_model(model);}
+      | MODEL '(' LINEAR ')' ';' compile_statement equation_list END   {check.linear=1;model=$7;p_option("linear","1");print_model(model);}
+      ;
+
+ initval : INITVAL ';' {p_initval();} initval_list END 
+     {pe_initval();}
+      ;
+
+ endval : ENDVAL ';' {p_endval();} initval_list END
+     {pe_endval();}
+      ;
+
+ histval : HISTVAL ';' {p_histval();} histval_list END
+      ;
+
+ shocks: SHOCKS ';' {ms_flag=0;p_i_shocks(ms_flag);} shock_list END {p_e_shocks();}
+       | SHOCKS '(' options_shocks ')' ';' 
+                    {ms_flag=0;p_i_shocks(ms_flag);} shock_list END {p_e_shocks();}
+       ;
+
+ mshocks: MSHOCKS ';' {ms_flag=1;p_i_shocks(ms_flag);} shock_list END {p_e_shocks();}
+      | MSHOCKS '(' options_shocks ')' ';' 
+                      {ms_flag=1;p_i_shocks(ms_flag);} shock_list END {p_e_shocks();}
+      ;
+
+ options_shocks: option_shocks
+       | options_shocks ',' option_shocks
+       ;
+
+ option_shocks: o_shocks_file ; 
+
+ equation_list : equation_list equation {$$=add_to_queue($1,$2);}
+      | equation_list other_inst {$$=add_to_queue($1,$2);}
+      | equation_list do_loop {$$=copy_queue($$,$2);}
+      | equation {$$=create_queue($1);}
+      | equation compile_statement {$$=$1;}
+      | other_inst {$$=create_queue($1);}
+      | do_loop
+      ;
+
+ equation : expression EQUAL expression ';' 
+                 {$$=add_to_queue($1,token(" -(",-1));
+		  $$=copy_queue($$,$3);
+		  $$=add_to_queue($$,token(")",-1));}
+      | expression ';'
+      ;
+
+ other_inst : POUND p_expr EOL {$$=$2; mark_pound($$);}
+      ;
+
+ do_loop : DO loop_init ';' equation_list ENDO ';' {$$=do_loop($2,$4);}
+      ;
+
+ loop_init : NAME EQUAL INUMBER TO INUMBER  {$$=initial_loop($1,$3,$5,"1");}
+      | NAME EQUAL INUMBER TO INUMBER BY INUMBER {$$=initial_loop($1,$3,$5,$7);}
+      | INDEX EQUAL INUMBER TO INUMBER  {$$=initial_loop($1,$3,$5,"1");}
+      | INDEX EQUAL INUMBER TO INUMBER BY INUMBER {$$=initial_loop($1,$3,$5,$7);}
+      ;
+
+ p_expr : p_expr ';'  {$$ = $1;}
+      |  p_expr ';' expression  {$$ = add_to_queue($1,token(";",-1)); $$=copy_queue($$,$3);}
+      | expression {$$ = $1;}
+      ;
+
+ expression : expression elem_exp {$$=copy_queue($1,$2);}
+      | elem_exp
+      ;
+
+ elem_exp : '(' expression ')' { $$ = create_queue(token("(",-1));
+				 $$ = copy_queue($$,$2);
+				 $$ = add_to_queue($$,token(")",-1));}
+      | var_exp
+      | expr1
+      ;
+
+ expr1: NAME {$$ = create_queue(token($1,-1));}
+      | ',' {$$ = create_queue(token(",",-1));}
+      | OPERATORS {$$ = create_queue(token($1,-1));}
+      | ':' {$$ = create_queue(token(":",-1));}
+      | INUMBER {$$ = create_queue(token($1,-1));}
+      | DNUMBER {$$ = create_queue(token($1,-1));}
+      | INDEX {$$ = create_queue(token($1,-2));}
+      | del_exp
+      | sum_exp
+      | prod_exp
+      ;
+
+ var_exp : var_id_exp '(' INUMBER ')' {set_ll($1,$3,INUMBER);$$=$1;}
+      | var_id_exp '(' OPERATORS INUMBER ')' {set_ll($1,$4,INUMBER);$$=$1;}
+      | var_id_exp '(' INDEX ')' {set_ll($1,$3,INDEX);$$=$1;}
+      | var_id_exp '(' OPERATORS INDEX ')' {set_ll($1,$4,INDEX);$$=$1;}
+      | var_id_exp {set_ll($1,"0",INUMBER);$$=$1;}
+      ;
+
+ var_id_exp : VAR_ID {$$ = create_queue($1);}
+      | indexed_var_exp
+      ;
+
+ indexed_var_exp : indexed_var_exp DOLLAR INDEX {$$=add_to_queue($1,token($3,-3));}
+      | NAME DOLLAR INDEX {$$=create_queue(token($1,-3));$$=add_to_queue($$,token($3,-3));}
+      ;
+
+ del_exp : DEL '(' INUMBER ':' expression ')' {$$ = m_del($3,$5);}
+      ;
+
+ sum_exp : SUM '(' loop_init ':' expression ')'
+      {$$ = operator_loop($3,$5,"+");}
+      ;
+
+ prod_exp : PROD '(' loop_init ':' expression ')'
+      {$$ = operator_loop($3,$5,"*");}
+      ;
+
+ initval_list : initval_list initval_elem
+      | initval_elem
+      ;
+
+ initval_elem : VAR_ID EQUAL expression ';' {p_init($1,$3);}
+      | compile_statement
+      ;
+
+ histval_list : histval_list histval_elem
+      | histval_elem
+      | compile_statement
+      ;
+
+ histval_elem : VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_hist($1,$3,$6);}
+      ;
+
+ shock_list : shock_list shock_elem
+      | shock_elem
+      ;
+
+ shock_elem : VAR VAR_ID ';' PERIODS period_list ';' VALUES value_list ';'  {p_shocks($2,$5,$8,ms_flag);}
+            | VAR VAR_ID ';' STDERR expression ';' {simul_algo=1; p_stderr($2,$5);}
+            | VAR VAR_ID EQUAL expression ';' {simul_algo=1; p_variance($2,$2,$4);}
+            | VAR VAR_ID ',' VAR_ID EQUAL expression ';' {simul_algo=1; p_variance($2,$4,$6);}
+            | compile_statement
+            ;
+
+ period_list : period_list INUMBER  {$$=add_to_queue($1,periods($2,0));}
+      | period_list ',' INUMBER  {$$=add_to_queue($1,periods($3,0));}
+      | period_list INUMBER ':' INUMBER 
+                                 {$$=add_to_queue($1,periods($2,$4));}
+      | period_list ',' INUMBER ':' INUMBER 
+                                 {$$=add_to_queue($1,periods($3,$5));}
+      | INUMBER ':' INUMBER      {$$=create_queue(periods($1,$3));}
+      | INUMBER                  {$$=create_queue(periods($1,0));}
+      ;
+
+ value_list: value_list1        
+      | value_list2             
+      ;
+
+ value_list1: value_list1 DNUMBER  
+                        {$$=add_to_queue($1,create_queue(token($2,-1)));}
+      | value_list1 INUMBER  
+                        {$$=add_to_queue($1,create_queue(token($2,-1)));}
+      | DNUMBER         {$$=create_queue(create_queue(token($1,-1)));}
+      | INUMBER         {$$=create_queue(create_queue(token($1,-1)));}
+      ;
+
+ value_list2: value_list2 '(' expression ')' 
+                                 {$$=add_to_queue($1,$3);}
+      | '(' expression ')'       {$$=create_queue($2);}
+      ;
+
+ obsolete : VARF varlist3 ';' {fputs("Warning: VARF is an obsolete feature\n",stderr);} 
+      | VARP varlist3 ';' {fputs("Warning: VARP is an obsolete feature\n",stderr);}
+      ;
+
+ varlist3 : varlist3 NAME {;}
+      | varlist3 ',' NAME {;}
+      | NAME {;}
+      ;
+
+ dyn2vec : DYN2VEC ';' {dyn2vec(0);}
+      | DYN2VEC {nbr_tmpvar = 0;} varlist4 ';' {dyn2vec(1);}
+      ;
+
+ varlist4 : varlist4 NAME {add_tmpvar($2,0);}
+      | varlist4 NAME '=' NAME {add_tmpvar($2,$4);}
+      | varlist4 ',' NAME {add_tmpvar($3,0);}
+      | varlist4 ',' NAME '=' NAME {add_tmpvar($3,$5);}
+      | NAME  {nbr_tmpvar = 0; add_tmpvar($1,0);}
+      | NAME '=' NAME {nbr_tmpvar = 0; add_tmpvar($1,$3);}
+      ;
+
+ rplot : RPLOT {nbr_tmpvar = 0;} varlist4 ';' {print_rplot();}
+      ; 
+
+ steady : STEADY ';' {p_steady(model);}
+      | STEADY '(' steady_options ')' ';' {p_steady_linear(model);check.linear=1;}
+      ;
+
+ steady_options: steady_options ',' steady_option
+      | steady_option
+      ;
+
+ steady_option: o_solve_algo
+      | o_print
+      | o_noprint
+      ;
+
+ stoch_simul : STOCH_SIMUL ';' {p_stoch_simul(dr_algo,simul_algo,drop,linear,order,replic,ar,nocorr,nofunctions,nomoments,irf);}
+      | STOCH_SIMUL '(' options_list1 ')' ';' 
+                           {p_stoch_simul();}
+      | STOCH_SIMUL varlist4 ';' {p_stoch_simul();}
+      | STOCH_SIMUL '(' options_list1 ')' varlist4 ';' 
+                           {p_stoch_simul();}
+      ;
+
+ o_dr_algo: DR_ALGO '=' INUMBER {p_option("dr_algo",$3);};
+ o_solve_algo: SOLVE_ALGO '=' INUMBER {p_option("solve_algo",$3);};
+ o_simul_algo: SIMUL_ALGO '=' INUMBER {p_option("simul_algo",$3);};
+ o_linear: LINEAR {p_option("linear","1");};
+ o_order: ORDER '=' INUMBER {p_option("order",$3);};
+ o_replic: REPLIC '=' INUMBER {p_option("replic",$3);};
+ o_drop: DROP '=' INUMBER {p_option("drop",$3);};
+ o_ar: AR '=' INUMBER {p_option("ar",$3);};
+ o_corr: CORR {p_option("nocorr","0");};
+ o_nocorr: NOCORR {p_option("nocorr","1");};
+ o_function: FUNCTIONS {p_option("nofunctions","0");};
+ o_nofunction: NOFUNCTIONS {p_option("nofunctions","1");};
+ o_moments: MOMENTS {p_option("nomoments","0");};
+ o_nomoments: NOMOMENTS {p_option("nomoments","1");};
+ o_irf: IRF '=' INUMBER {p_option("irf",$3);};
+ o_hp_filter: HP_FILTER '=' INUMBER {p_option("hp_filter",$3);};
+ o_hp_ngrid: HP_NGRID '=' INUMBER {p_option("hp_ngrid",$3);};
+ o_periods: PERIODS '=' INUMBER {p_option("periods",$3);p_option("simul","1");};
+ o_simul: SIMUL {p_option("simul","1");};
+ o_simul_seed: SIMUL_SEED '=' INUMBER { p_option("simul_seed",$3)}
+             | SIMUL_SEED '=' '(' expression ')' { p_option_e("simul_seed",$4)}
+             ;
+ o_qz_criterium: QZ_CRITERIUM '=' INUMBER { p_option("qz_criterium",$3)}
+               | QZ_CRITERIUM '=' DNUMBER { p_option("qz_criterium",$3)}
+               ;
+ o_datafile: DATAFILE '=' NAME {p_s_option("datafile",$3);};   
+ o_nobs: NOBS '=' INUMBER {p_option("nobs",$3);}
+       | NOBS '=' '(' expression ')' {p_option_e("nobs",$4);}
+       ;
+/*
+       | NOBS '=' '[' INUMBER ':' INUMBER ']' {p_interval_option("nobs",$4,$6);};
+*/
+ o_first_obs: FIRST_OBS '=' INUMBER {p_option("first_obs",$3);};
+ o_prefilter: PREFILTER '=' INUMBER {p_option("prefilter",$3);};
+ o_presample: PRESAMPLE '=' INUMBER {p_option("presample",$3);};
+ o_lik_algo: LIK_ALGO '=' INUMBER {p_option("lik_algo",$3);}; 
+ o_lik_init: LIK_INIT '=' INUMBER {p_option("lik_init",$3);}; 
+ o_graph: GRAPH {p_option("nograph","0");}; 
+ o_nograph: NOGRAPH {p_option("nograph","1");}; 
+ o_print: PRINT {p_option("print","0");}; 
+ o_noprint: NOPRINT {p_option("noprint","1");}; 
+ o_conf_sig: CONF_SIG '=' DNUMBER {p_option("conf_sig",$3);}; 
+ o_mh_replic: MH_REPLIC '=' INUMBER {p_option("mh_replic",$3);}; 
+ o_mh_drop: MH_DROP '=' DNUMBER {p_option("mh_drop",$3);}; 
+ o_mh_jscale: MH_JSCALE '=' value {p_option("mh_jscale",$3);}; 
+ o_optim: OPTIM {p_optim_options("","",1);} '=' '(' optim_options ')'
+{p_optim_options("","",3);};
+ o_mh_init_scale :MH_INIT_SCALE '=' DNUMBER {p_option("mh_init_scale",$3);};
+ o_mh_init_scale :MH_INIT_SCALE '=' INUMBER {p_option("mh_init_scale",$3);};
+ o_mode_file : MODE_FILE '=' NAME {p_s_option("mode_file",$3);};
+ o_mode_compute : MODE_COMPUTE '=' INUMBER {p_option("mode_compute",$3);};
+ o_mode_check : MODE_CHECK {p_option("mode_check","1");};
+ o_prior_trunc : PRIOR_TRUNC '=' DNUMBER {p_option("prior_trunc",$3);};
+ o_mh_mode : MH_MODE '=' INUMBER {p_option("mh_mode",$3);};
+ o_mh_nblcks : MH_NBLOCKS '=' INUMBER {p_option("mh_nblck",$3);};
+ o_load_mh_file : LOAD_MH_FILE {p_option("load_mh_file","1");};
+ o_loglinear : LOGLINEAR {p_option("loglinear","1");};
+ o_diagnostic : DIAGNOSTIC {p_option("diagnostic","0");};
+ o_nodiagnostic : NODIAGNOSTIC {p_option("nodiagnostic","1");};
+ o_bayesian_irf : BAYESIAN_IRF {p_option("bayesian_irf","1");};
+ o_tex : TEX {p_option("TeX","1");};
+ o_forecast : FORECAST '=' INUMBER {p_option("forecast",$3);};
+ o_smoother : SMOOTHER {p_option("smoother","1");};
+ o_moments_varendo : MOMENTS_VARENDO {p_option("moments_varendo","1");};
+ o_filtered_vars : FILTERED_VARS {p_option("filtered_vars","1");};
+ o_relative_irf : RELATIVE_IRF {p_option("relative_irf","1");};
+ o_kalman_algo : KALMAN_ALGO '=' INUMBER {p_option("kalman_algo",$3);};
+ o_kalman_tol : KALMAN_TOL '=' value {p_option("kalman_tol",$3);};
+ o_diffuse_d : DIFFUSE_D '=' INUMBER {p_option("diffuse_d",$3);};
+ o_nk : NK '=' INUMBER {p_option("nk",$3);};
+ o_model_comparison_approximation: MODEL_COMPARISON_APPROXIMATION '=' LAPLACE {p_s_option("model_comparison_approximation","Laplace");}
+   | MODEL_COMPARISON_APPROXIMATION '=' MODIFIEDHARMONICMEAN {p_s_option("model_comparison_approximation","ModifiedHarmonicMean");}
+ o_olr_beta : OLR_BETA '=' value {p_option("olr_beta",$3);};
+ o_shocks_file : SHOCKS_FILE EQUAL NAME {p_s_option("shocks_file",$3);};
+
+
+ optim_option1: '\'' NAME '\'' ',' '\'' NAME '\'' {p_optim_options($2,$6,2);}
+              | '\'' NAME '\'' ',' value {p_optim_options($2,$5,2);}
+              ;
+
+ optim_options: optim_option1
+              | optim_options ',' optim_option1;
+              ;
+
+ o_list1 : o_dr_algo
+         | o_solve_algo
+         | o_simul_algo
+         | o_linear
+         | o_order
+         | o_replic
+         | o_drop
+         | o_ar
+         | o_corr
+         | o_function
+         | o_moments
+         | o_nocorr
+         | o_nofunction
+         | o_nomoments
+         | o_irf
+         | o_relative_irf
+         | o_hp_filter
+         | o_hp_ngrid
+         | o_periods
+         | o_simul
+         | o_simul_seed
+         | o_qz_criterium
+         | o_print
+         | o_noprint
+         ;
+
+ options_list1: options_list1 ',' o_list1
+              | o_list1
+              ;
+
+ resol : RESOL ';' {p_resol(dr_algo,linear,order,model);}
+      | RESOL '(' options_list2 ')' ';' {p_resol(dr_algo,linear,order,model);}
+      ;
+
+ options_list2 : options_list2 ',' DR_ALGO '=' INUMBER {dr_algo = atoi($5);}
+      | options_list2 ',' LINEAR {linear = 1;}
+      | options_list2 ',' ORDER '=' INUMBER {order = atoi($5);}
+      | DR_ALGO '=' INUMBER {dr_algo = atoi($3);}
+      | LINEAR {linear = 1;}
+      | ORDER '=' INUMBER {order = atoi($3);}
+      ;
+
+ simul : SIMUL ';' {p_simul(0,linear,order,replic);}
+       |SIMUL '(' options_list1 ')' ';' {p_simul(0,linear,order,replic);}
+       ;
+
+ dsample : DSAMPLE ';' {p_dsample(0);}
+         | DSAMPLE INUMBER ';' {p_dsample(1,$2);}
+         | DSAMPLE INUMBER INUMBER ';' {p_dsample(2,$2,$3);}
+         ; 
+
+ check : CHECK ';' {p_check();}
+       | CHECK '(' check_options ')' ';' {p_check();} 
+         ;
+
+ check_options: check_options ',' check_option
+       | check_option
+       ;
+
+ check_option: o_print
+       | o_noprint
+       | o_qz_criterium
+       | o_solve_algo
+       ;
+        
+ irf : IRF ';' {p_irf(varexo,shock_size,iter,drop,replic,order);}
+     | IRF '(' option_list_irf ')' ';' {p_irf(varexo,shock_size,iter,drop,replic,order);}
+     | IRF varlist4 ';' {p_irf(varexo,shock_size,iter,drop,replic,order);}
+     | IRF '(' option_list_irf ')' varlist4 ';' {p_irf(varexo,shock_size,iter,drop,replic,order);}
+     ;
+
+ option_list_irf : option_list_irf ',' VAREXO '=' NAME {varexo = $5;}
+                 | option_list_irf ',' SHOCK_SIZE '=' DNUMBER {shock_size = atof($5);} 
+                 | option_list_irf ',' PERIODS '=' INUMBER {iter = atoi($5);}
+                 | option_list_irf ',' DROP '=' INUMBER {drop = atoi($5);}
+                 | option_list_irf ',' REPLIC '=' INUMBER {replic = atoi($5);}
+                 | option_list_irf ',' ORDER '=' INUMBER {order = atoi($5);}
+                 | VAREXO '=' NAME {varexo = $3;}
+                 | SHOCK_SIZE '=' DNUMBER {shock_size = atof($3);}
+                 | PERIODS '=' INUMBER {iter = atoi($3);}       
+                 | DROP '=' INUMBER {drop = atoi($3);}
+                 | REPLIC '=' INUMBER {replic = atoi($3);}         
+                 | ORDER '=' INUMBER {order = atoi($3);}
+                 ;
+
+ d_corr : D_CORR ';' {p_d_corr();}
+        | D_CORR varlist4  ';' {p_d_corr();}
+        ;
+
+ disp_dr : DISP_DR ';' {p_disp_dr(order);}
+         | DISP_DR '(' ORDER '=' INUMBER ')' ';' {p_disp_dr(atoi($5));}
+         | DISP_DR varlist4 ';' {p_disp_dr(order);}
+         | DISP_DR '(' ORDER '=' INUMBER ')' varlist4 ';' {p_disp_dr(atoi($5));}
+         ;
+
+ disp_moments : DISP_MOMENTS ';' {p_disp_moments(drop,order);}
+              | DISP_MOMENTS '(' option_list_disp_moments ')' ';' {p_disp_moments(drop,order);}
+              | DISP_MOMENTS varlist4 ';' {p_disp_moments(drop,order);}
+              | DISP_MOMENTS '(' option_list_disp_moments ')' varlist4 ';' {p_disp_moments(drop,order);}
+              ;
+
+ option_list_disp_moments : option_list_disp_moments ',' DROP '=' INUMBER {drop = atoi($5);}  
+                          | option_list_disp_moments ',' ORDER '=' INUMBER {order = atoi($5);}
+                          | DROP '=' INUMBER {drop = atoi($3);}   
+                          | ORDER '=' INUMBER {order = atoi($3);}
+                          ;
+
+ optim_weights : OPTIM_WEIGHTS ';' {p_optim_weights_init();} optim_weights_list END
+               ;
+
+ optim_weights_list : optim_weights_list VAR_ID expression ';' {p_optim_weights1($2, $3);}
+                    | optim_weights_list VAR_ID ',' VAR_ID expression ';' {p_optim_weights2($2, $4, $5);}
+                    | VAR_ID expression ';' {p_optim_weights1($1, $2);}
+                    | VAR_ID ',' VAR_ID expression ';' {p_optim_weights2($1, $3, $4);}
+                    | compile_statement
+                    ;
+
+ osr_params : OSR_PARAMS osr_params_list ';'
+            ;
+
+ osr_params_list : osr_params_list ',' NAME {p_osr_params($3);}
+                 | osr_params_list NAME {p_osr_params($2);}
+                 | NAME {p_osr_params($1);}
+                 | compile_statement   
+                 ;
+
+ osr : OSR ';' {p_osr();}
+     | OSR '(' olr_options ')' ';' {p_osr();}
+     | OSR varlist4 ';' {p_osr();}
+     | OSR '(' olr_options ')' varlist4 ';' {p_osr();}
+     ;
+ 
+ olr : OLR ';' {p_olr();}
+     | OLR '(' olr_options ')' ';' {p_olr();}
+     | OLR varlist4 ';' {p_olr();}
+     | OLR '(' olr_options ')' varlist4 ';' {p_olr();}
+     ;
+ 
+ olr_option : o_olr_beta
+     | options_list1
+     ;
+ 
+ olr_options : olr_option
+     | olr_options ',' olr_option
+     ;
+
+ olr_inst : OLR_INST {p_olr_inst_init();} olr_inst_list ';'
+          ;
+
+ olr_inst_list : olr_inst_list ',' NAME {p_olr_inst($3);}
+              | olr_inst_list NAME {p_olr_inst($2);}
+              | NAME {p_olr_inst($1);}
+              ;
+
+ calib_var : CALIB_VAR ';' {p_calib_init();} calib_var_list END
+           ;
+
+ calib_var_list : calib_var_list VAR_ID EQUAL expression ';' {p_calib_var($2, $4,"1");}
+                | calib_var_list VAR_ID '(' DNUMBER ')' EQUAL expression ';' {p_calib_var($2,$7,$4);}
+                | calib_var_list VAR_ID '(' INUMBER ')' EQUAL  expression ';' {p_calib_var($2,$7,$4);}
+                |  calib_var_list VAR_ID ',' VAR_ID EQUAL expression ';' {p_calib_covar($2,$4,$6,"1");}
+                | calib_var_list VAR_ID ',' VAR_ID '(' DNUMBER ')' EQUAL expression ';' {p_calib_covar($2,$4,$9,$6);}
+                | calib_var_list VAR_ID ',' VAR_ID '(' INUMBER ')' EQUAL  expression ';' {p_calib_covar($2,$4,$9,$6);}
+                | calib_var_list AUTOCORR VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_ac($3,$5,$8,"1");}
+                | calib_var_list AUTOCORR VAR_ID '(' INUMBER ')' '(' DNUMBER ')' EQUAL expression ';' {p_calib_ac($3,$5,$11,$8);}
+                | calib_var_list AUTOCORR VAR_ID '(' INUMBER ')' '(' INUMBER ')' EQUAL  expression ';' {p_calib_ac($3,$5,$11,$8);}
+                | VAR_ID '(' DNUMBER ')' EQUAL expression ';' {p_calib_var($1,$6,$3);}
+                | VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_var($1,$6,$3);}
+                | VAR_ID EQUAL expression ';' {p_calib_var($1, $3, "1");}
+                | VAR_ID ',' VAR_ID '(' DNUMBER ')' EQUAL expression ';' {p_calib_covar($1,$3,$8,$5);}
+                | VAR_ID ',' VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_covar($1,$3,$8,$5);}
+                | VAR_ID ',' VAR_ID EQUAL expression ';' {p_calib_covar($1,$3,$5,"1");}
+                | AUTOCORR VAR_ID '(' INUMBER ')' '(' DNUMBER ')' EQUAL expression ';' {p_calib_ac($2,$4,$10,$7);}
+                | AUTOCORR VAR_ID '(' INUMBER ')' '(' INUMBER ')' EQUAL expression ';' {p_calib_ac($2,$4,$10,$7);}
+                | AUTOCORR VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_ac($2,$4,$7,"1");}
+                | compile_statement
+                ;
+
+ calib : CALIB ';' {p_calib(0);}
+       | CALIB '(' COVAR ')' ';' {p_calib(1);}
+       ;
+
+ dynatype : DYNATYPE '(' NAME ')'';' {p_dynatype($3,"");}
+          | DYNATYPE '(' NAME ')' varlist4 ';' {p_dynatype($3,"");}
+          | DYNATYPE NAME ';' {p_dynatype($2,"");}
+          | DYNATYPE '(' NAME '.' NAME ')'';' {p_dynatype($3,$5);}
+          | DYNATYPE '(' NAME '.' NAME ')' varlist4 ';' {p_dynatype($3,$5);}
+          | DYNATYPE NAME '.' NAME ';' {p_dynatype($2,$4);};
+
+ dynasave : DYNASAVE '(' NAME ')'';' {p_dynasave($3,"");}
+          | DYNASAVE '(' NAME ')' varlist4 ';' {p_dynasave($3,"");}
+          | DYNASAVE NAME ';' {p_dynasave($2,"");}
+          | DYNASAVE '(' NAME '.' NAME ')'';' {p_dynasave($3,$5);}
+          | DYNASAVE '(' NAME '.' NAME ')' varlist4 ';' {p_dynasave($3,$5);}
+          | DYNASAVE NAME '.' NAME ';' {p_dynasave($2,$4);};
+
+ sigma_e : SIGMA_E '=' '[' {tr_row = 0;} triangular_matrix ']' ';' {p_sigma_e($5);}
+         ;
+
+ triangular_matrix : triangular_matrix ';' {tr_col = 0;} triangular_row {++tr_row;tr_check(tr_row,tr_col);$$=add_to_queue($1,$4);}
+                   | {tr_col = 0;} triangular_row {++tr_row;tr_check(tr_row,tr_col);$$=create_queue($2);}
+                   ;
+
+ triangular_row : triangular_row ',' '(' expression ')' {$$=add_to_queue($1,$4);++tr_col;}
+                | triangular_row ',' DNUMBER {$$=add_to_queue($1,create_queue(token($3,-1)));++tr_col;}
+                | triangular_row ',' INUMBER {$$=add_to_queue($1,create_queue(token($3,-1)));++tr_col;}
+                | triangular_row '(' expression ')' {$$=add_to_queue($1,$3);++tr_col;}
+                | triangular_row DNUMBER {$$=add_to_queue($1,create_queue(token($2,-1)));++tr_col;}
+                | triangular_row INUMBER {$$=add_to_queue($1,create_queue(token($2,-1)));++tr_col;}
+                | '(' expression ')' {$$=create_queue($2);++tr_col;}
+                | DNUMBER {$$=create_queue(token($1,-1));$$=create_queue($$);++tr_col;}
+                | INUMBER {$$=create_queue(token($1,-1));$$=create_queue($$);++tr_col;}
+                ;
+
+ estimated_params : ESTIMATED_PARAMS ';' {p_estimated_init();} estimated_list END
+                  ;
+
+ estimated_list : estimated_list {estim_params_init();} estimated_elem {p_estimated_elem();}
+                | {estim_params_init();} estimated_elem {p_estimated_elem();}
+                | compile_statement
+                ;
+
+ estimated_elem : estimated_elem1 ',' estimated_elem2 ';'
+                ;
+
+ estimated_elem1 : STDERR VAR_ID {estim_params.param_type = 1; estim_params.var_nbr = $2->nbr+1; estim_params.var_type = $2->endo_exo;}
+                 | VAR_ID {estim_params.param_type = 2; estim_params.param_name = $1->name;}
+                 | CORR VAR_ID ',' VAR_ID {estim_params.param_type = 3; estim_params.var_nbr = $2->nbr+1; estim_params.var_nbr2 = $4->nbr+1; estim_params.var_type = $2->endo_exo;}
+                 ;
+
+ estimated_elem2 : value {estim_params.init_val=strdup($1);}
+                 | value ',' value ',' value {estim_params.init_val=strdup($1);estim_params.lb=strdup($3);estim_params.ub=strdup($5);}
+                 | prior ',' estimated_elem3 {estim_params.prior=strdup($1);}
+                 | value ',' prior ',' estimated_elem3 {estim_params.init_val=strdup($1);estim_params.prior=strdup($3);}
+                 | value ',' value ',' value ',' prior ',' estimated_elem3 {estim_params.init_val=strdup($1);estim_params.lb=strdup($3);estim_params.ub=strdup($5);estim_params.prior=strdup($7);}
+                 ;
+
+ estimated_elem3 : value ',' value {estim_params.mean=strdup($1);estim_params.std=strdup($3);}
+                 | value ',' value ',' value ',' value {estim_params.mean=strdup($1);estim_params.std=strdup($3);estim_params.p3=strdup($5);estim_params.p4=strdup($7);}
+                 | value ',' value ',' value ',' value ',' value {estim_params.mean=strdup($1);estim_params.std=strdup($3);estim_params.p3=strdup($5);estim_params.p4=strdup($7);estim_params.jscale=strdup($9);}
+                 ;
+
+ estimated_params_init: ESTIMATED_PARAMS_INIT ';' estimated_init_list END
+                      ;
+
+ estimated_init_list : estimated_init_list estimated_init_elem
+                     | estimated_init_elem
+                     | compile_statement
+                     ;
+
+ estimated_init_elem : STDERR VAR_ID ',' value ';' {p_estimated_init_elem1($2,$4);}
+                     | CORR VAR_ID ',' VAR_ID ',' value ';' {p_estimated_init_elem2($2,$4,$6);}
+                     | VAR_ID ',' value ';' {p_estimated_init_elem3($1,$3);}
+                     ;
+
+ estimated_params_bounds: ESTIMATED_PARAMS_BOUNDS ';' estimated_bounds_list END
+                      ;
+
+ estimated_bounds_list : estimated_bounds_list estimated_bounds_elem
+                     | estimated_bounds_elem
+                     | compile_statement
+                     ;
+
+ estimated_bounds_elem : STDERR VAR_ID ',' value ',' value ';' {p_estimated_bounds_elem1($2,$4,$6);}
+  | CORR VAR_ID ',' VAR_ID ',' value ',' value ';' {p_estimated_bounds_elem2($2,$4,$6,$8);}
+  | VAR_ID ',' value ',' value ';' {p_estimated_bounds_elem3($1,$3,$5);}
+  ;
+
+ prior : BETA_PDF {$$ = "1";}
+       | GAMMA_PDF {$$ = "2";}
+       | NORMAL_PDF {$$ = "3";}
+       | INV_GAMMA_PDF {$$ = "4";}
+       | INV_GAMMA1_PDF {$$ = "4";}
+       | UNIFORM_PDF {$$ = "5";}
+       | INV_GAMMA2_PDF {$$ = "6";}
+       ;
+
+ value : {$$ = empty_string;} /* empty */ 
+       | INUMBER
+       | DNUMBER
+       | NAME
+       | OPERATORS NAME {$$ = my_strcat($1,$2);}
+       ;
+
+ estimation : ESTIMATION ';' {p_estimation();}
+            | ESTIMATION '(' estimation_options ')' ';' {p_estimation();}
+            | ESTIMATION varlist4 ';' {p_estimation();}
+            | ESTIMATION '(' estimation_options ')' varlist4 ';' {p_estimation();}
+            ;
+
+ estimation_options : estimation_options ',' estimation_option
+                    | estimation_option
+                    | estimation_options ',' o_list1
+                    | o_list1
+                    ;
+
+ estimation_option : o_datafile
+                   | o_nobs
+                   | o_first_obs
+                   | o_prefilter
+                   | o_presample
+                   | o_lik_algo 
+                   | o_lik_init 
+                   | o_graph
+                   | o_nograph
+                   | o_conf_sig 
+                   | o_mh_replic
+                   | o_mh_drop
+                   | o_mh_jscale
+                   | o_optim
+                   | o_mh_init_scale 
+                   | o_mode_file 
+                   | o_mode_compute 
+                   | o_mode_check
+                   | o_prior_trunc 
+                   | o_mh_mode 
+                   | o_mh_nblcks 
+                   | o_load_mh_file 
+                   | o_loglinear
+                   | o_diagnostic
+                   | o_nodiagnostic
+                   | o_bayesian_irf
+                   | o_tex
+                   | o_forecast
+                   | o_smoother
+                   | o_moments_varendo
+                   | o_filtered_vars
+                   | o_kalman_algo
+                   | o_kalman_tol
+                   | o_diffuse_d
+                   | o_nk
+                   ;
+
+ varobs : VAROBS {nbr_tmpvar = 0;} varlist4 ';' {print_varobs();}
+        ;
+
+ observation_trends : OBSERVATION_TRENDS ';' {p_trend_init();} trend_list END
+                    ;
+
+ trend_list : trend_list trend_element
+            | trend_element
+            | compile_statement
+            ;
+
+ trend_element :  VAR_ID '(' expression ')' ';' {p_trend_element($1,$3);}
+               ;
+
+
+ unit_root_vars : UNIT_ROOT_VARS {nbr_tmpvar = 0;} varlist4 ';' {print_unit_root_vars();}
+                ;
+
+ model_comparison : MODEL_COMPARISON {nbr_tmpvar=0;} model_comparison_args
+ ;
+
+ model_comparison_args : filename_list1 ';' {p_model_comparison(0);}
+              | filename_list2 ';' {p_model_comparison(1);}
+              | '(' model_comparison_options ')' filename_list1 ';' {p_model_comparison(0);}
+              | '(' model_comparison_options ')' filename_list2 ';' {p_model_comparison(1);}
+              ;
+
+ model_comparison_options: model_comparison_options ',' model_comparison_option
+              | model_comparison_option
+              ;
+
+ model_comparison_option : o_model_comparison_approximation
+              | o_print
+              | o_noprint
+              ;
+
+ filename_list1 : filename {add_tmpvar($1,"");}
+        | filename_list1 ',' filename {add_tmpvar($3,"");}
+        ;
+
+ filename_list2 : filename '(' value ')' {add_tmpvar($1,$3);}
+        | filename_list2 ',' filename '(' value ')' {add_tmpvar($3,$5);}
+        ;
+
+ filename : filename_elem {$$=$1;}
+        | filename filename_elem {$$ = my_strcat($1,$2);}
+        ;
+
+ filename_elem : NAME
+        | '\\' {$$ = "\\";}
+        | '/' {$$ = "/";}
+        | ':' {$$ = ":";}
+        | '.' {$$ = ".";}
+        ;
+
+  compile_statement : compile_define_statement
+        | compile_if_statement
+        | compile_elseif_statement
+        | COMPILE_ELSE {compile_else();}
+        | COMPILE_ENDIF {compile_endif();}
+        ;
+
+  compile_define_statement:
+            COMPILE_DEFINE NAME ';' {compile_define($2);}
+          | COMPILE_DEFINE NAME INUMBER ';'{compile_define($2,$3);}
+	  ;
+
+  compile_operator: EQ 
+          | '<' {$$=strdup("<");} 
+          | '>' {$$=strdup(">");} 
+          | NE
+          | LE
+          | GE
+          ; 
+
+  compile_if_statement: 
+    COMPILE_IF NAME compile_operator INUMBER ';' {compile_if($2,$3,$4);};
+
+  compile_elseif_statement: 
+    COMPILE_ELSEIF NAME compile_operator INUMBER ';' {compile_elseif($2,$3,$4);};
+
+  forecast: FORECAST ';' {p_forecast();}
+          | FORECAST '(' forecast_options ')' ';' {p_forecast();}
+          | FORECAST varlist4 ';' {p_forecast();}
+          | FORECAST '(' forecast_options ')' varlist4 ';' {p_forecast();}
+          ;
+
+  forecast_options: forecast_option
+          | forecast_options ',' forecast_option
+          ;
+
+  forecast_option: o_periods
+          | o_conf_sig
+          ;
+
+
+%%
+int yyerror (char *s)
+     
+{
+  fprintf (stdout, "%s at line %d\n", s, yylineno);
+  exit(1);
+}
+
+/*
+03/15/03 MJ added varexo_st and option LINEAR for STEADY
+01/01/03 MJ corrected dynatype for filename extension and added dynasave
+04/06/02 MJ added optim_weights and optim_weights_list osr_params 
+            osr_params_list osr
+10/09/02 MJ added calib_var calib_var_list calib
+05/26/03 MJ added option LINEAR to MODEL
+08/28/03 MJ added option SOLVE_ALGO
+*/
diff --git a/tags/v_3.062/parser.src/dyn.l b/tags/v_3.062/parser.src/dyn.l
new file mode 100644
index 0000000000..e62f6e057f
--- /dev/null
+++ b/tags/v_3.062/parser.src/dyn.l
@@ -0,0 +1,309 @@
+%{
+#include <string.h>
+#include "d_tab.h"
+#include "d.h"
+int previous_state;
+int comment_level = 0;
+int lineno = 1;
+void yyerror(char *);
+int name_var(char *);
+%}
+
+
+
+%option stack
+%option yylineno
+%x CMT
+%x DYNARE1
+%x DYNARE2
+%x DYNARE3
+%x DYNARE4
+%x SKIP
+%x THRU
+
+%%
+
+
+
+ /* literal keywords token */
+
+_longnames {BEGIN DYNARE1; return LONGNAMES;}
+initvalf {BEGIN THRU; ECHO;}
+endval {BEGIN DYNARE2; return ENDVAL;}	       
+initval {BEGIN DYNARE2; return INITVAL;}
+histval {BEGIN DYNARE2; return HISTVAL;}
+model {BEGIN DYNARE2; return MODEL;}
+periods {BEGIN DYNARE1; return PERIODS;}
+shocks {BEGIN DYNARE2; return SHOCKS;}
+mshocks {BEGIN DYNARE2; return MSHOCKS;}
+var {BEGIN DYNARE1; return VAR;}
+varexo {BEGIN DYNARE1; return VAREXO;}
+varexo_det {BEGIN DYNARE1; return VAREXO_DET;}
+varrecur {BEGIN DYNARE1; return VARRECUR;}
+parameters {BEGIN DYNARE1; return PARAMETERS;}
+dyn2vec {BEGIN DYNARE1; return DYN2VEC;}
+dyn2gau {BEGIN DYNARE1; return DYN2VEC;}
+rplot {BEGIN DYNARE1; return RPLOT;}
+steady {BEGIN DYNARE1; return STEADY;}
+stoch_simul {BEGIN DYNARE1; return STOCH_SIMUL;}
+resol {BEGIN DYNARE1; return RESOL;}
+disp_dr {BEGIN DYNARE1; return DISP_DR;}
+disp_moments {BEGIN DYNARE1; return DISP_MOMENTS;}
+irf {BEGIN DYNARE1; return IRF;}
+d_corr {BEGIN DYNARE1; return D_CORR;}
+simul {BEGIN DYNARE1; return SIMUL;}
+dsample {BEGIN DYNARE1; return DSAMPLE;}
+check {BEGIN DYNARE1;  yylval.string=strdup(yytext); return CHECK;}
+optim_weights {BEGIN DYNARE2; return OPTIM_WEIGHTS;}
+osr_params {BEGIN DYNARE1; return OSR_PARAMS;}
+osr {BEGIN DYNARE1; return OSR;}
+calib_var {BEGIN DYNARE2; return CALIB_VAR;}
+calib {BEGIN DYNARE1; return CALIB;}
+dynatype {BEGIN DYNARE1; return DYNATYPE;}
+dynasave {BEGIN DYNARE1; return DYNASAVE;}
+sigma_e_ {BEGIN THRU; ECHO;}
+sigma_e {BEGIN DYNARE3; return SIGMA_E;}
+olr {BEGIN DYNARE1; return OLR;}
+olr_inst {BEGIN DYNARE1; return OLR_INST;}
+estimation {BEGIN DYNARE1; return ESTIMATION;}
+varobs {BEGIN DYNARE1; return VAROBS;}
+observation_trends {BEGIN DYNARE2; return OBSERVATION_TRENDS;}
+estimated_params_init {BEGIN DYNARE2; return ESTIMATED_PARAMS_INIT;}
+estimated_params_bounds {BEGIN DYNARE2; return ESTIMATED_PARAMS_BOUNDS;}
+estimated_params {BEGIN DYNARE2; return ESTIMATED_PARAMS;}
+unit_root_vars {BEGIN DYNARE1; return UNIT_ROOT_VARS;}
+model_comparison {BEGIN DYNARE1; return MODEL_COMPARISON;}
+forecast {BEGIN DYNARE1; return FORECAST;}
+
+<*>@define {yy_push_state(DYNARE1); return COMPILE_DEFINE;}
+<*>@if {yy_push_state(DYNARE1); return COMPILE_IF;}
+<*>@elseif {yy_push_state(DYNARE1); return COMPILE_ELSEIF;}
+<*>@else[ \t\n]*; {return COMPILE_ELSE;}
+<*>@endif[ \t\n]*; {return COMPILE_ENDIF;}
+
+<SKIP>. ;
+
+ /* \r is always ignored */
+<*>\r ;
+
+ /* comments */
+<*>[/][/].* ;
+<*>"/*" {yy_push_state(CMT); ECHO;}
+<CMT>[^*\n]* {ECHO;}
+<CMT>"*"+[^*/\n]* {ECHO;}
+<CMT>"*"+"/" {yy_pop_state(); ECHO;}
+<CMT>[\n] {ECHO;}
+
+ /* a semicolon in INITIAL state doesn't modify this state */
+; ECHO;
+
+ /* initial spaces or tabs are ignored */
+
+[ \t] ;
+
+ /* everything which is not a DYNARE command or a comment is ECHOED*/
+[^ \t\n;] {BEGIN THRU;ECHO;}
+<THRU>[^;\n] ECHO;
+<THRU>[;\n] {BEGIN INITIAL; ECHO;}
+ 
+<DYNARE1>; {BEGIN INITIAL; return yytext[0];}
+<DYNARE2,DYNARE3,DYNARE4>; {return yytext[0];}
+<DYNARE1,DYNARE2,DYNARE3,DYNARE4>[\(\)] {return yytext[0];}
+
+ /* var, periods and values in shock statements */
+<DYNARE2>var {return VAR;}
+<DYNARE2>periods {return PERIODS;}
+<DYNARE2>values {return VALUES;}
+<DYNARE2>stderr {return STDERR;}
+
+<DYNARE1>varexo {return VAREXO;}
+
+<DYNARE1,DYNARE2,DYNARE3>end[ \t\n]*; {BEGIN INITIAL; return END;}
+
+ /* lines starting with '#' */
+<DYNARE2>^# {BEGIN DYNARE4; return POUND;}
+<DYNARE4>[\n] {BEGIN DYNARE2; return EOL;}
+
+ /* do loops in models */
+<DYNARE2>do {return DO;}
+<DYNARE2>to {return TO;}
+<DYNARE2>by {return BY;}
+<DYNARE2>endo {return ENDO;}
+<DYNARE2>sum {return SUM;}
+<DYNARE2>prod {return PROD;}
+
+ /* options */
+<DYNARE1>dr_algo {return DR_ALGO;}
+<DYNARE1>simul_algo {return SIMUL_ALGO;}
+<DYNARE1>solve_algo {return SOLVE_ALGO;}
+<DYNARE1>drop {return DROP;}
+<DYNARE1,DYNARE2>linear {return LINEAR;}
+<DYNARE1>order {return ORDER;}
+<DYNARE1>replic {return REPLIC;}
+<DYNARE1>shock_size {return SHOCK_SIZE;}
+<DYNARE1>moments {return MOMENTS;}
+<DYNARE1>nomoments {return NOMOMENTS;}
+<DYNARE1>corr {return CORR;}
+<DYNARE1>nocorr {return NOCORR;}
+<DYNARE1>ar {return AR;}
+<DYNARE1>functions {return FUNCTIONS;}
+<DYNARE1>nofunctions {return NOFUNCTIONS;}
+<DYNARE1>irf {return IRF;}
+<DYNARE1>irf_type {return IRF_TYPE;}
+<DYNARE1>hp_filter {return HP_FILTER;}
+<DYNARE1>hp_ngrid {return HP_NGRID;}
+<DYNARE1>simul_seed {return SIMUL_SEED;}
+<DYNARE1>simul {return SIMUL;}
+<DYNARE1>periods {return PERIODS;}
+<DYNARE1>qz_criterium {return QZ_CRITERIUM;}
+<DYNARE1>optim {return OPTIM;}
+<DYNARE2>shocks_file {return SHOCKS_FILE;}
+
+ /* calib options */
+<DYNARE2>autocorr {return AUTOCORR;}
+
+ /* olr options */
+<DYNARE1>olr_beta {return OLR_BETA;}
+
+ /* estimation options */
+<DYNARE1>datafile {return DATAFILE;}
+<DYNARE1>nobs {return NOBS;}
+<DYNARE1>first_obs {return FIRST_OBS;}
+<DYNARE1>prefilter {return PREFILTER;} 
+<DYNARE1>presample {return PRESAMPLE;} 
+<DYNARE1>lik_algo  {return LIK_ALGO;}  
+<DYNARE1>lik_init  {return LIK_INIT;}  
+<DYNARE1>nograph   {return NOGRAPH;}  	  
+<DYNARE1>graph   {return GRAPH;}  	  
+<DYNARE1>noprint   {return NOPRINT;}  	  
+<DYNARE1>print   {return PRINT;}  	  
+<DYNARE1>conf_sig  {return CONF_SIG;}  
+<DYNARE1>mh_replic {return MH_REPLIC;} 
+<DYNARE1>mh_drop   {return MH_DROP;}   
+<DYNARE1>mh_jscale   {return MH_JSCALE;}   
+<DYNARE1>mh_init_scale {return MH_INIT_SCALE;}
+<DYNARE1>mode_file {return MODE_FILE;}
+<DYNARE1>mode_compute {return MODE_COMPUTE;}
+<DYNARE1>mode_check {return MODE_CHECK;}
+<DYNARE1>prior_trunc {return PRIOR_TRUNC;}
+<DYNARE1>mh_mode {return MH_MODE;}
+<DYNARE1>mh_nblocks {return MH_NBLOCKS;}
+<DYNARE1>load_mh_file {return LOAD_MH_FILE;}
+<DYNARE1>loglinear {return LOGLINEAR;}
+<DYNARE1>diagnostic {return DIAGNOSTIC;}
+<DYNARE1>nodiagnostic {return NODIAGNOSTIC;}
+<DYNARE1>xtick {return XTICK;}
+<DYNARE1>xticklabel {return XTICKLABEL;}
+<DYNARE1>bayesian_irf {return BAYESIAN_IRF;}
+<DYNARE1>tex {return TEX;}
+<DYNARE1>forecast {return FORECAST;}
+<DYNARE1>smoother {return SMOOTHER;}
+<DYNARE1>moments_varendo {return MOMENTS_VARENDO;}
+<DYNARE1>filtered_vars {return FILTERED_VARS;}
+<DYNARE1>relative_irf {return RELATIVE_IRF;}
+<DYNARE1>kalman_algo {return KALMAN_ALGO;}
+<DYNARE1>kalman_tol {return KALMAN_TOL;}
+<DYNARE1>diffuse_d {return DIFFUSE_D;}
+<DYNARE1>nk {return NK;}
+<DYNARE1>model_comparison_approximation {return MODEL_COMPARISON;}
+<DYNARE1>laplace {return LAPLACE;}
+<DYNARE1>modifiedharmonicmean {return MODIFIEDHARMONICMEAN;}
+
+ /* estimated_params priors */
+ <DYNARE2>gamma_pdf {return GAMMA_PDF;}
+ <DYNARE2>beta_pdf {return BETA_PDF;}
+ <DYNARE2>normal_pdf {return NORMAL_PDF;}
+ <DYNARE2>inv_gamma_pdf {return INV_GAMMA_PDF;}
+ <DYNARE2>inv_gamma1_pdf {return INV_GAMMA_PDF;}
+ <DYNARE2>inv_gamma2_pdf {return INV_GAMMA_PDF;}
+ <DYNARE2>uniform_pdf {return UNIFORM_PDF;}
+ <DYNARE2>corr {return CORR;}
+
+ /* spaces, tabs and EOL are ignored */ 
+<DYNARE1,DYNARE2,DYNARE3>[ \t\n] ;
+
+ /* names */
+<DYNARE1,DYNARE3>[A-Za-z_][A-Za-z0-9_]* {
+  yylval.string=strdup(yytext);
+  return NAME;}
+
+<DYNARE2,DYNARE4>[A-Za-z_][A-Za-z0-9_]* {
+  return name_var(strdup(yytext));}
+
+ /* floating-point numbers */
+<DYNARE1,DYNARE2,DYNARE3,DYNARE4>-?((([0-9]*\.[0-9]+)|([0-9]+\.))([edED][-+]?[0-9]+)?)|([0-9]+[edED][-+]?[0-9]+) {
+  yylval.string=strdup(yytext);
+  return DNUMBER;}
+
+ /* integer number */
+<DYNARE1,DYNARE2,DYNARE3,DYNARE4>-?[0-9]+ {
+  yylval.string=strdup(yytext); 
+  return INUMBER;}
+ 
+<DYNARE1,DYNARE2>: {return yytext[0];}
+<DYNARE2>= {return EQUAL;}
+<DYNARE1>"="+"=" {yylval.string=strdup(yytext); return EQ;}
+<DYNARE1>"<"+"=" {yylval.string=strdup(yytext); return LE;}
+<DYNARE1>">"+"=" {yylval.string=strdup(yytext); return GE;}
+<DYNARE1>"!"+"=" {yylval.string=strdup(yytext); return NE;}
+<DYNARE1,DYNARE3>= {return yytext[0];}
+<DYNARE2>, {return yytext[0];}
+<DYNARE2,DYNARE4>\$ {return DOLLAR;}
+<DYNARE1>\$ {return yytext[0];}
+<DYNARE3>] {BEGIN DYNARE1; return yytext[0];}
+<DYNARE3>\[ {return yytext[0];}
+<DYNARE1>, {return yytext[0];}
+<DYNARE1>' {return yytext[0];}
+<DYNARE1,DYNARE2,DYNARE3,DYNARE4>. {yylval.string=strdup(yytext); return OPERATORS;}
+<*>. {return yytext[0];}
+
+%%
+
+int yywrap()
+{
+ return 1;
+}
+ 
+ 
+int name_var(char *s)
+{
+  struct var *p;
+
+  p=var_search(s);
+  if (p == NULL){
+    yylval.string=s;
+    return NAME;
+  }
+  else if (p->endo_exo == 2){
+    yylval.string=s;
+    return INDEX;
+  }
+  else{
+    yylval.p_tok=create_var(p);
+    return VAR_ID;
+  }
+}
+ 
+void start_skipping(void)
+{
+  yy_push_state(SKIP);
+}
+
+void pop_flex_state(void)
+{
+  yy_pop_state();
+}
+
+/*
+01/01/03 MJ added DYNASAVE
+12/31/02 MJ corrected THRU mode to permit native lines without a final ;
+         MJ put back CMT mode for Gauss style comments (/ *...* /)
+04/06/02 MJ added OPTIM_WEIGHTS OSR_PARAMS OSR
+*/
+
+/*
+*/
+
+
+
+
diff --git a/tags/v_3.062/parser.src/dynare.c b/tags/v_3.062/parser.src/dynare.c
new file mode 100644
index 0000000000..56e2413680
--- /dev/null
+++ b/tags/v_3.062/parser.src/dynare.c
@@ -0,0 +1,3216 @@
+#ifdef MATLAB
+#undef GAUSS
+#undef SCILAB
+#define PLATEFORM "MATLAB"
+#define OPEN_COMMENTS "%"
+#define CLOSE_COMMENTS ""
+#define LEFT_PAREN "("
+#define RIGHT_PAREN ")"
+#define FILE_EXT "m"
+#elif defined GAUSS
+#undef MATLAB
+#undef SCILAB
+#define PLATEFORM "GAUSS"
+#define OPEN_COMMENTS "/*"
+#define CLOSE_COMMENTS "*/"
+#define LEFT_PAREN "["
+#define RIGHT_PAREN "]"
+#define FILE_EXT "gau"
+#elif defined SCILAB
+#undef GAUSS
+#undef MATLAB
+#define PLATEFORM "SCILAB"
+#define OPEN_COMMENTS "//"
+#define CLOSE_COMMENTS ""
+#define LEFT_PAREN "("
+#define RIGHT_PAREN ")"
+#define FILE_EXT "sci"
+#endif
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "d.h"
+#include "d_tab.h"
+
+typedef struct var * t_var_p;
+typedef struct queue * t_q_p;
+typedef struct token * t_t_p;
+
+int yydebug = 0;
+
+/* global for parser program */
+t_var_p var_list;
+t_q_p do_loop_list;
+int var_nbr, longname;
+int endo_nbr, exo_nbr, exo_det_nbr, recur_nbr, y_max_lead, y_max_lag, x_max_lead, x_max_lag, z_max_lead, z_max_lag;
+int *iy,*initval_check,*endval_check,*initval_check1;
+char **tmpvar_list;
+char * varexo;
+int var_order_alpha = 0;
+int stoch_shock_first_time = 1;
+int ex_det_length = 0;
+#if defined MATLAB || defined SCILAB
+int param_nbr=0;
+#endif
+struct s_check check;
+struct s_estim_params estim_params;
+int inst_nbr = 0;
+
+/* options, initialized in dynare_init */
+int dr_algo, simul_algo, drop, linear, order, replic, iter, nbr_tmpvar;
+int ar, irf, shock_size, nocorr, nofunctions, nomoments, hp_filter, hp_ngrid;
+int simul, simul_seed;
+
+int yyparse(void);
+int var_comp1(const void *, const void *);
+int var_comp2(const void *, const void *);
+void str_output(char *);
+void p_check(void);
+void run_checks(void);
+void set_options(int, char**,struct s_runtime_options*);
+void make_empty(char *);
+void p_model_comparison(int);
+
+FILE *f_out;
+char fname[200];
+
+int main(int argc, char **argv)
+{
+  extern FILE *yyin,*yyout;
+  char fn_in[200],fn_out[200],*cp,buffer[2000];
+  struct s_runtime_options runtime_options;
+  struct s_runtime_options* p_ro;
+  p_ro = &runtime_options;
+#ifdef GAUSS
+  char fn_in2[200];
+#endif
+  if (argc > 1){
+    strcpy(fname,argv[1]);
+#ifdef GAUSS
+    if ( (cp=strchr(fname,'.')) != NULL){
+      if (strcasecmp(cp,".MDL")==0 || strcasecmp(cp,".MOD")==0 ){
+	*cp='\0';
+      }
+      else{
+	fprintf(stdout,
+		"Error: %s is an invalid filename for DYNARE\n",
+		argv[1]);
+	exit(1);
+      }
+    }
+    strcpy(fn_in,fname);
+    strcpy(fn_out,fn_in);
+    strcat(fn_in,".mod");
+    strcat(fn_out,".gau");
+
+    yyin = fopen(fn_in,"r");
+    if (!yyin){
+      strcpy(fn_in2,fname);
+      strcat(fn_in2,".mdl");
+      yyin = fopen(fn_in2,"r");
+      if (!yyin){
+	fprintf(stdout,"DYNARE: could not open %s or %s\n",fn_in,fn_in2);
+	exit(1);
+      }
+    }
+#elif defined MATLAB || defined SCILAB
+    if ( (cp=strchr(fname,'.')) != NULL){
+      if (strcasecmp(cp,".MOD")==0){
+	*cp='\0';
+      }
+      else if (strcasecmp(cp,".DYN")==0){
+	*cp='\0';
+      }
+      else{
+	fprintf(stdout,
+		"Error: %s is an invalid filename for DYNARE with %s\n",
+		argv[1],PLATEFORM);
+	exit(1);
+      }
+    }
+
+    strcpy(fn_in,fname);
+    strcat(fn_in,".dyn");
+    yyin = fopen(fn_in,"r");
+    if (!yyin)
+      {
+	strcpy(fn_in,fname);
+	strcat(fn_in,".mod");
+	yyin = fopen(fn_in,"r");
+      }
+    if (!yyin){
+      fprintf(stdout,"DYNARE: could not open %s\n",fn_in);
+      exit(1);
+    }
+
+    strcpy(fn_out,fname);
+#ifdef MATLAB
+    strcat(fn_out,".m");
+#elif defined SCILAB
+    strcat(fn_out,".sci");
+#endif
+
+#endif
+    
+    yyout = fopen(fn_out,"w");
+    if (!yyout){
+      fprintf(stdout,"DYNARE: could not open %s\n",fn_out);
+      exit(1);
+    }
+    f_out=yyout;
+    /* set runtime options */
+    set_options(argc,argv,p_ro);
+  }
+  else{
+    fprintf(stdout,"Error: DYNARE needs the name of the model file\n");
+    exit(1);
+  }
+  if (runtime_options.debug == 1)
+    {
+      yydebug = 1;
+    }
+  dynare_init(fname,runtime_options);
+  yyparse();
+#if defined MATLAB
+  sprintf(buffer,"save('%s_results','oo_','dr_');\n",fname);
+  str_output(buffer);
+  str_output("diary off\n");
+#elif defined SCILAB
+  str_output("mclose(fh_log);\n");
+#elif defined GAUSS
+  str_output("end;\n");
+#endif
+  run_checks();
+  return 0;
+}
+
+void add_var(char *name,int endo_exo)
+{
+  var_list = (t_var_p)realloc(var_list,(var_nbr+1)*sizeof(struct var));
+  var_list[var_nbr].name=strdup(name);
+  var_list[var_nbr].endo_exo=endo_exo;
+  var_nbr++;
+}
+
+void add_var_range(char *name1, char *name2, int endo_exo)
+{
+  int i1, i2, i3;
+  char name[200],*p1,*p2;
+
+  p1=name1;
+  p2=name2;
+  i1=0;
+  while (*p1 == *p2)
+    {
+      p1++;
+      p2++;
+      i1++;
+    }
+
+  if (*p1 >= '0' && *p1 <= '9')
+    {
+      if (sscanf(p1,"%d",&i2) != 1)
+	{
+	  fprintf(stdout,"VAR, VAREXO or VARRECUR: error in name range expression\n");
+	  return;
+	}    
+      if (sscanf(p2,"%d",&i3) != 1)
+	{
+	  fprintf(stdout,"VAR, VAREXO or VARRECUR: error in name range expression\n");
+	  return;
+	}    
+      if (i3 < i2)
+	{
+	  fprintf(stdout,"VAR, VAREXO or VARRECUR: error in name range expression\n");
+	  return;
+	}
+    
+      var_list = (t_var_p)realloc(var_list,(var_nbr+i3-i2+1)*sizeof(struct var));
+      strncpy(name,name1,i1);
+      while (i2 <= i3)
+	{
+	  sprintf(name+i1,"%d\0",i2);
+	  var_list[var_nbr].name=strdup(name);
+	  var_list[var_nbr].endo_exo=endo_exo;
+	  var_nbr++;
+	  i2++;
+	}
+    }
+  else
+    {
+      fprintf(stdout,"VAR, VAREXO or VARRECUR: error in name range expression\n");
+      return;
+    }
+  return;
+}
+
+void sort_var()
+{
+  qsort(var_list,var_nbr,sizeof(struct var),var_comp1);
+}
+
+int var_comp1(const void *x1, const void *x2)
+{
+  return strcasecmp(((t_var_p)x1)->name,((t_var_p)x2)->name);
+}
+
+struct var *var_search(const char *key)
+{
+  return (t_var_p)bsearch(key,var_list,var_nbr,sizeof(struct var),var_comp2);
+}
+
+int var_comp2(const void *key, const void *element)
+{
+  return strcasecmp((char *)key,((t_var_p)element)->name);
+}
+
+struct queue *create_queue(void *p1)
+{
+  struct queue *p2;
+  p2=(struct queue *)calloc(1,sizeof(struct queue));
+  p2->ptr=(void **)calloc(1,sizeof(void *));
+  (p2->ptr)[0] = p1;
+  p2->imax = 1;
+  p2->flag = 0;
+  return p2;
+}
+
+struct queue *add_to_queue(struct queue *p, void *p1)
+{
+  p->ptr=(void **)realloc(p->ptr,(p->imax+1)*sizeof(void *));
+  (p->ptr)[p->imax]=p1;
+  p->imax++;
+  return p;
+}
+
+
+void free_queue(struct queue *p)
+{
+  free(p->ptr);
+  free(p);
+}
+
+struct queue *copy_queue(struct queue *p1, struct queue *p2)
+{
+  p1->ptr=(void **)realloc(p1->ptr,(p1->imax+p2->imax)*sizeof(void *));
+  memcpy(p1->ptr+p1->imax,p2->ptr,p2->imax*sizeof(void *));
+  p1->imax += p2->imax;
+  free_queue(p2);
+  return p1;
+}
+
+struct token *create_var(struct var *p)
+{ 
+    struct token *p1;
+    p1 = (struct token *)calloc(1,sizeof(struct token));
+    p1->endo_exo = p->endo_exo;
+    p1->nbr = p->nbr;
+    if (p1->endo_exo == 4){
+      p1->name = p->name; /* It's a parameter */
+    }
+    else {
+      p1->var_ptr = p; /* MJ 01/12/03 */
+      p1->name = NULL;  /* It's a variable, not a string */
+    }
+    return p1;
+}
+
+void set_ll1(struct token *p_v, int i)
+{
+  int *temp;
+
+  p_v->lead_lag=i;
+  if (p_v->endo_exo == 1){
+    if (i < -y_max_lag){
+      temp=(int *)calloc(y_max_lead-i+1,endo_nbr*sizeof(int));
+      memcpy(temp+(-i-y_max_lag)*endo_nbr,iy,(y_max_lag+y_max_lead+1)*endo_nbr*sizeof(int));
+      free(iy);
+      iy=temp;
+      y_max_lag = -i;
+    }
+    else if (i > y_max_lead){
+      iy=(int *)realloc(iy,(y_max_lag+i+1)*endo_nbr*sizeof(int));
+      memset(iy+(y_max_lag+y_max_lead+1)*endo_nbr,0,(i-y_max_lead)*endo_nbr*sizeof(int));
+      y_max_lead = i;
+    }
+    iy[p_v->nbr+(i+y_max_lag)*endo_nbr]=1;
+  }
+  else if (p_v->endo_exo == 0){
+    if (i < -x_max_lag) x_max_lag = -i;
+    else if (i > x_max_lead) x_max_lead = i;
+    }
+  else if (p_v->endo_exo == 3){
+    if (i < -z_max_lag) z_max_lag = -i;
+    else if (i > z_max_lead) z_max_lead = i;
+    }
+}
+
+void set_ll(struct queue *p_q, char *s, int c)
+{
+  int i;
+  struct token *p_v;
+
+  p_v = *(struct token **)p_q->ptr;
+  switch(c){
+  case INUMBER:
+    i=atoi(s);
+    set_ll1(p_v, i);
+    break;
+  case INDEX:
+    p_v->name=s;
+  }
+}
+
+struct queue *m_del(char *s, struct queue *p_q)
+{
+;
+}
+
+struct token *token(char *s, int nbr)
+{
+  struct token *p;
+  p=(struct token *)calloc(1,sizeof(struct token));
+  p->name = s;
+  p->nbr = nbr; /* > 0 : variable, -1: string, -2: loop index, -3: indexed variable */
+  p->endo_exo = 0;
+  return p;
+}
+
+void mark_pound(struct queue *p)
+{
+  p->flag=1;
+}
+
+int * periods(char *s1, char *s2)
+{
+  int *i;
+  i=(int *)calloc(2,sizeof(int));
+  i[0]=atoi(s1);
+  if (s2 == 0) i[1]=0;
+  else i[1]=atoi(s2);
+  return i;
+}
+
+void p_shocks(struct token *var, struct queue *per, struct queue *val, int ms_flag)
+{
+  int i,j,i1,i2,i_par,flag;
+  struct queue *p_q;
+  struct token **p_t;
+  char buffer[2000];
+  char* name;
+
+  check.determ = 1;
+  if (var->endo_exo != 0 && var->endo_exo != 5){
+    if (var->var_ptr != 0) name = var->var_ptr->name;
+    else name = var->name;
+    fprintf(stdout,"Error in SHOCKS: %s isn't an exogenous variable\n",name); 
+    return;
+  }
+  if (per->imax != val->imax){
+    fprintf(stdout,"Error in SHOCKS: periods and values don't match for shocks on variable %s\n",var->var_ptr->name);
+    return;
+  }
+  for (i=0; i < per->imax;i++){
+    i_par=0;
+    p_q = (struct queue *)val->ptr[i];
+    if (var->endo_exo == 0)
+      {
+	i1= ((int *)(per->ptr[i]))[0]+x_max_lag;
+	i2= ((int *)(per->ptr[i]))[1]+x_max_lag;
+	flag = 0;
+      }
+    else
+      {
+	i1= ((int *)(per->ptr[i]))[0];
+	i2= ((int *)(per->ptr[i]))[1];
+	ex_det_length = (i1 > ex_det_length) ? i1 : ex_det_length; 
+	ex_det_length = (i2 > ex_det_length) ? i2 : ex_det_length;
+	i1 += y_max_lag;
+	i2 += y_max_lag;
+	flag = 2;
+      }
+    if (i2 == x_max_lag){
+      if (ms_flag == 0)              /* mshocks */
+	{
+#ifdef GAUSS
+	  sprintf(buffer,"_ex[%d,%d]=",i1,var->nbr+1);
+#elif defined MATLAB || defined SCILAB
+	  sprintf(buffer,"set_shocks(%d,%d,%d,",flag,i1,var->nbr+1);
+	  i_par = 1;
+#endif
+	  str_output(buffer);
+	}
+      else
+	{
+#ifdef GAUSS
+	  sprintf(buffer,"_ex[%d,%d]=_ex[%d,%d]*(",i1,var->nbr+1,i1,var->nbr+1);
+	  i_par=1;
+#elif defined MATLAB || defined SCILAB
+	  sprintf(buffer,"set_shocks(%d,%d,%d,",flag+1,i1,var->nbr+1);
+	  i_par = 1;
+#endif
+	  str_output(buffer);
+	}
+    }
+    else{
+      if (ms_flag == 0)              /* mshocks */
+	{
+#ifdef GAUSS
+	  sprintf(buffer,"_ex[%d:%d,%d]=ones(%d,1).*",i1,i2+x_max_lag,var->nbr+1,i2-i1+x_max_lag+1);
+#elif defined MATLAB || defined SCILAB
+	  sprintf(buffer,"set_shocks(%d,[%d:%d],%d,",flag,i1,i2,var->nbr+1);
+	  i_par = 1;
+#endif
+	  str_output(buffer);
+	}
+      else{
+#ifdef GAUSS
+	sprintf(buffer,"_ex[%d:%d,%d]=_ex[%d:%d,%d].*(",i1,i2+x_max_lag,var->nbr+1,i1,i2+x_max_lag,var->nbr+1);
+#elif defined MATLAB || defined SCILAB
+	sprintf(buffer,"set_shocks(%d,[%d:%d],%d,",flag+1,i1,i2,var->nbr+1);
+#endif
+	i_par=1;
+	str_output(buffer);
+      }
+    }
+    p_t=(struct token **) p_q->ptr;
+    for (j=0;j < p_q->imax;j++){
+      if ((*p_t)->nbr == -1)  str_output((*p_t)->name);
+      else fprintf(stdout,"Reference to variable name isn't allowed in (m)shocks value statement");
+      p_t++;
+    }
+    if (i_par) str_output(")");
+    str_output(";\n");
+  }
+}
+
+void p_stderr(struct token  *var, struct queue *expression)
+{
+  char buffer[200];
+  check.stoch = 1;
+#ifdef GAUSS
+  if (stoch_shock_first_time)
+    {
+      sprintf(buffer,"_Sigma_e = zeros(%d,%d);\n",exo_nbr,exo_nbr);
+      str_output(buffer);
+      stoch_shock_first_time = 0;
+    }
+  sprintf(buffer,"_Sigma_e[%d,%d] = (",var->nbr+1,var->nbr+1);
+  str_output(buffer);
+  p_expression(expression);
+  str_output(")^2;\n");
+#elif defined MATLAB || defined SCILAB
+  if (stoch_shock_first_time)
+    {
+      sprintf(buffer,"Sigma_e_ = zeros(%d,%d);\n",exo_nbr,exo_nbr);
+      str_output(buffer);
+      stoch_shock_first_time = 0;
+    }
+  sprintf(buffer,"Sigma_e_(%d,%d) = (",var->nbr+1,var->nbr+1);
+  str_output(buffer);
+  p_expression(expression);
+  str_output(")^2;\n");
+#endif
+}
+
+void p_variance(struct token  *var1, struct token  *var2, struct queue *expression)
+{
+  char buffer[200];
+  check.stoch = 1;
+#ifdef GAUSS
+  if (stoch_shock_first_time)
+    {
+      sprintf(buffer,"_Sigma_e = zeros(%d,%d);\n",exo_nbr,exo_nbr);
+      str_output(buffer);
+      stoch_shock_first_time = 0;
+    }
+  sprintf(buffer,"_Sigma_e[%d,%d] = ",var1->nbr+1,var2->nbr+1);
+  str_output(buffer);
+  p_expression(expression);
+  str_output(";\n");
+  if (var1->nbr != var2->nbr)
+    {
+      sprintf(buffer,"_Sigma_e[%d,%d] = _Sigma_e[%d,%d];\n",var2->nbr+1,var1->nbr+1,var1->nbr+1,var2->nbr+1);
+      str_output(buffer);
+    }
+#elif defined MATLAB || defined SCILAB
+  if (stoch_shock_first_time)
+    {
+      sprintf(buffer,"Sigma_e_ = zeros(%d,%d);\n",exo_nbr,exo_nbr);
+      str_output(buffer);
+      stoch_shock_first_time = 0;
+    }
+  sprintf(buffer,"Sigma_e_(%d,%d) = ",var1->nbr+1,var2->nbr+1);
+  str_output(buffer);
+  p_expression(expression);
+  str_output(";\n");
+  if (var1->nbr != var2->nbr)
+    {
+      sprintf(buffer,"Sigma_e_(%d,%d) = Sigma_e_(%d,%d);\n",var2->nbr+1,var1->nbr+1,var1->nbr+1,var2->nbr+1);
+      str_output(buffer);
+    }
+#endif
+}
+
+void p_init(struct token *v, struct queue *q)
+{
+  char buffer[200];
+  int offset;
+
+  offset = v->var_ptr-var_list;
+  if (v->endo_exo == 1)
+    {
+      initval_check1[offset] = 1;
+#ifdef GAUSS
+      sprintf(buffer,"_ys[%d]=",v->nbr+1);
+#elif defined MATLAB || defined SCILAB
+      sprintf(buffer,"ys_(%d)=",v->nbr+1);
+#endif
+    }
+  else if (v->endo_exo == 0)
+    {
+      initval_check1[offset] = 1;
+#ifdef GAUSS
+      sprintf(buffer,"_exe[%d]=",v->nbr+1);
+#elif defined MATLAB || defined SCILAB
+      sprintf(buffer,"exe_(%d)=",v->nbr+1);
+#endif
+    }
+  else if (v->endo_exo == 3)
+    {
+#ifdef GAUSS
+      sprintf(buffer,"_recurs[%d]=",v->nbr+1);
+#elif defined MATLAB || defined SCILAB
+      sprintf(buffer,"recurs_(%d)=",v->nbr+1);
+#endif
+    }
+    else if (v->endo_exo == 5)
+    {
+#ifdef GAUSS
+      sprintf(buffer,"_exe_det[%d]=",v->nbr+1);
+#elif defined MATLAB || defined SCILAB
+      sprintf(buffer,"exe_det_(%d)=",v->nbr+1);
+#endif
+    }
+  str_output(buffer);
+
+  p_expression(q);
+  str_output(";\n");
+}
+
+void p_initval(void)
+{
+  char buffer[200];
+
+  check.initval = 1;
+  initval_check = (int *)calloc(var_nbr,sizeof(int));
+  initval_check1 = initval_check;
+
+#ifdef GAUSS
+  str_output("/* INITVAL */\n");
+  str_output("_valf = 0;\n_endval=0;\n");
+#elif defined MATLAB || defined SCILAB
+#ifdef MATLAB
+  str_output("% ");
+#else
+  str_output("// ");
+#endif
+  str_output("INITVAL \n");
+  str_output("valf_ = 0;\nendval_=0;\n");
+#endif
+  if(recur_nbr > 0){
+#ifdef GAUSS
+    sprintf(buffer,"_recurs = zeros(%d,1);\n",recur_nbr);
+#elif defined MATLAB || defined SCILAB
+    sprintf(buffer,"recurs_ = zeros(%d,1);\n",recur_nbr);
+#endif
+    str_output(buffer);
+  }
+#ifdef GAUSS
+  str_output("_ys0 = 0;\n");
+  str_output("_ex0 = 0;\n");
+  str_output("_recurs0 = 0;\n");
+#endif
+}
+
+void pe_initval(void)
+{
+#ifdef GAUSS
+  fputs("if exo_nbr > 0;\n",f_out);
+  fputs("  _ex=ones(_iter+_xkmin+_xkmax,1).*_exe';\n",f_out);
+  fputs("endif;\n",f_out);
+#elif defined MATLAB || defined SCILAB
+  fputs("y_=[ys_*ones(1,ykmin_)];\n",f_out);
+  fputs("if exo_nbr > 0;\n",f_out);
+  fputs("  ex_=[ones(xkmin_,1)*exe_'];\n",f_out);
+  fputs("end;\n",f_out);
+  fputs("if exo_det_nbr > 0;\n",f_out);
+  fputs("  ex_det_=[ones(ykmin_+1,1)*exe_det_'];\n",f_out);
+  fputs("end;\n",f_out);
+#endif
+}
+
+void p_endval(void)
+{
+  check.endval = 1;
+  endval_check = (int *)calloc(var_nbr,sizeof(int));
+  initval_check1 = endval_check;
+
+#ifdef GAUSS  
+  str_output("/* ENDVAL */\n");
+  str_output("_ys0=_ys;\n_ex0=_exe;\n_recurs0=_recurs;\n_endval=1;\n");
+#elif defined MATLAB || defined SCILAB
+#ifdef MATLAB
+  str_output("% ");
+#else
+  str_output("// ");
+#endif
+  str_output("ENDVAL \n");
+  str_output("ys0_=ys_;\nex0_=exe_;\nex_det0_=exe_det_;\nrecurs0_=recurs_;\nendval_=1;\n");
+#endif
+}
+
+void pe_endval(void)
+{
+#ifdef GAUSS
+  fputs("if exo_nbr > 0;\n",f_out);
+  fputs("  _ex[_xkmin+1:_iter+_xkmin+_xkmax,.]=ones(_iter+_xkmax,1).*_exe';\n",f_out);
+  fputs("endif;\n",f_out);
+#elif defined MATLAB || defined SCILAB
+  fputs("y_=[y_ ys_*ones(1,iter_+ykmax_)];\n",f_out);
+  fputs("if exo_nbr > 0;\n",f_out);
+  fputs("  ex_=[ones(xkmin_,1)*ex0_';ones(iter_+xkmax_,1)*exe_'];\n",f_out);
+  fputs("end;\n",f_out);
+  fputs("if exo_det_nbr > 0;\n",f_out);
+  fputs("  ex_det_=[ones(ykmin_+1,1)*ex_det0_';ones(iter_+ykmax_,1)*exe_det_'];\n",f_out);
+  fputs("end;\n",f_out);
+#endif
+}
+
+void p_hist(struct token *v, char *lag, struct queue *q)
+{
+  char buffer[200];
+  int offset;
+
+  offset = v->var_ptr-var_list;
+  if (v->endo_exo == 1)
+    {
+#ifdef GAUSS
+      sprintf(buffer,"_y[%d,_ykmin+(%s)]=",v->nbr+1,lag);
+#elif defined MATLAB || defined SCILAB
+      sprintf(buffer,"y_(%d,ykmin_+(%s))=",v->nbr+1,lag);
+#endif
+    }
+  else if (v->endo_exo == 0)
+    {
+      initval_check1[offset] = 1;
+#ifdef GAUSS
+      sprintf(buffer,"_ex[_xkmin+(%s),%d]=",lag,v->nbr+1);
+#elif defined MATLAB || defined SCILAB
+      sprintf(buffer,"ex_(xkmin_+(%s),%d)=",lag,v->nbr+1);
+#endif
+    }
+  else if (v->endo_exo == 5)
+    {
+      initval_check1[offset] = 1;
+#ifdef GAUSS
+      sprintf(buffer,"_ex_det[_xkmin+(%s),%d]=",lag,v->nbr+1);
+#elif defined MATLAB || defined SCILAB
+      sprintf(buffer,"ex_det_(ykmin_+(%s),%d)=",lag,v->nbr+1);
+#endif
+    }
+/*   else if (v->endo_exo == 3) */
+/*     { */
+/* #ifdef GAUSS */
+/*       sprintf(buffer,"_recurs[%d]=",v->nbr+1); */
+/* #elif defined MATLAB || defined SCILAB */
+/*       sprintf(buffer,"recurs_(%d)=",v->nbr+1); */
+/* #endif */
+/*     } */
+  str_output(buffer);
+
+  p_expression(q);
+  str_output(";\n");
+}
+
+void p_histval(void)
+{
+  char buffer[200];
+
+  check.histval = 1;
+
+#ifdef GAUSS
+  str_output("/* HISTVAL */\n");
+#elif defined MATLAB || defined SCILAB
+#ifdef MATLAB
+  str_output("% ");
+#else
+  str_output("// ");
+#endif
+  str_output("HISTVAL \n");
+#endif
+}
+  
+void print_endo()
+{
+  char buff[2000];
+  int i;
+  sort_var();
+
+#ifdef GAUSS  
+  str_output("\nlet");
+  if (longname) 
+    str_output(" string");
+  str_output(" _lgy = ");
+
+  for (i=0; i < var_nbr;i++)
+    {
+      if (var_list[i].endo_exo == 1)
+	{
+	  var_list[i].nbr=endo_nbr;
+	  if (endo_nbr > 0) str_output(", ");
+	  strcpy(buff,"\"");
+	  strcat(buff,var_list[i].name);
+	  strcat(buff,"\"");
+	  str_output(buff);
+	  endo_nbr++;
+	}
+    }
+  str_output(";\n");
+#elif defined MATLAB || defined SCILAB
+  for (i=0; i < var_nbr; i++)
+    {
+      if ( var_list[i].endo_exo == 1)
+	{
+	  if ( endo_nbr == 0 )
+	    {
+	      sprintf(buff,"lgy_ = '%s';\n",var_list[i].name);
+	    }
+	  else
+	    {
+#ifdef MATLAB
+	      sprintf(buff,"lgy_ = str2mat(lgy_,'%s');\n",var_list[i].name);
+#else
+	      sprintf(buff,"lgy_ = [lgy_;'%s'];\n",var_list[i].name);
+#endif
+	    }
+	  str_output(buff) ;
+	  var_list[i].nbr=endo_nbr ;
+	  endo_nbr++ ;
+	}
+    }
+#endif
+
+  sprintf(buff,"endo_nbr = %d;\n",endo_nbr);
+  str_output(buff);
+  iy=(int *)calloc(endo_nbr,sizeof(int));
+}      
+  
+void print_exo()
+{
+  char buff[2000];
+  int i;
+  int n = 0;
+
+  for(i = 0; i < var_nbr; ++i)
+    {
+      if (var_list[i].endo_exo == 0)
+	{
+	  var_list[i].original_nbr = n++;
+	}
+    }
+
+  sort_var();
+
+#ifdef GAUSS  
+  str_output("\nlet");
+  if (longname) 
+    str_output(" string");
+  str_output(" _lgx = ");
+
+  for (i=0; i < var_nbr; i++){
+    if (var_list[i].endo_exo == 0){
+      var_list[i].nbr=endo_nbr;
+      if (exo_nbr > 0) str_output(", ");
+      strcpy(buff,"\"");
+      strcat(buff,var_list[i].name);
+      strcat(buff,"\"");
+      str_output(buff);
+      exo_nbr++;
+    }
+  }
+  str_output(";\n");
+#elif defined MATLAB || defined SCILAB
+  for (i=0; i < var_nbr; i++)
+    {
+      if ( var_list[i].endo_exo == 0)
+	{
+	  if ( exo_nbr == 0 )
+	    {
+	      sprintf(buff,"lgx_ = '%s';\n",var_list[i].name);
+	    }
+	  else
+	    {
+#ifdef MATLAB
+	      sprintf(buff,"lgx_ = str2mat(lgx_,'%s');\n",var_list[i].name);
+#else
+	      sprintf(buff,"lgx_ = [lgx_;'%s'];\n",var_list[i].name);
+#endif
+	    }
+	  str_output(buff) ;
+	  var_list[i].nbr=exo_nbr ;
+	  exo_nbr++ ;
+	}
+    }
+  for (i=0; i < var_nbr; i++)
+    {
+      if ( var_list[i].endo_exo == 0)
+        {
+          if ( var_list[i].nbr == 0 )
+            {
+              sprintf(buff,"lgx_orig_ord_ = [%d",var_list[i].original_nbr+1);
+            }
+          else
+            {
+              sprintf(buff," %d",var_list[i].original_nbr+1);
+            }
+          str_output(buff);
+        }
+    }
+  if (exo_nbr > 0)
+    {
+      str_output("];\n");
+    }
+#endif
+
+  sprintf(buff,"exo_nbr = %d;\n",exo_nbr);
+  str_output(buff);
+}      
+  
+void print_exo_det()
+{
+  char buff[2000];
+  int i;
+
+  sort_var();
+
+#ifdef GAUSS  
+  str_output("\nlet");
+  if (longname) 
+    str_output(" string");
+  str_output(" _lgx_det = ");
+
+  for (i=0; i < var_nbr;i++){
+    if (var_list[i].endo_exo == 5){
+      var_list[i].nbr=exo_det_nbr;
+      if (exo_det_nbr > 0) str_output(", ");
+      strcpy(buff,"\"");
+      strcat(buff,var_list[i].name);
+      strcat(buff,"\"");
+      str_output(buff);
+      exo_det_nbr++;
+    }
+  }
+  str_output(";\n");
+#elif defined MATLAB || defined SCILAB
+  for (i=0; i < var_nbr; i++)
+    {
+      if ( var_list[i].endo_exo == 5)
+	{
+	  if ( exo_det_nbr == 0 )
+	    {
+	      sprintf(buff,"lgx_det_ = '%s';\n",var_list[i].name);
+	    }
+	  else
+	    {
+#ifdef MATLAB
+	      sprintf(buff,"lgx_det_ = str2mat(lgx_det_,'%s');\n",var_list[i].name);
+#else
+	      sprintf(buff,"lgx_det_ = [lgx_det_;'%s'];\n",var_list[i].name);
+#endif
+	    }
+	  str_output(buff) ;
+	  var_list[i].nbr=exo_det_nbr ;
+	  exo_det_nbr++ ;
+	}
+    }
+#endif
+
+  sprintf(buff,"exo_det_nbr = %d;\n",exo_det_nbr);
+  str_output(buff);
+}      
+  
+void print_recur()
+{
+  char buff[2000];
+  int i;
+
+  sort_var();
+
+#ifdef GAUSS  
+  str_output("\nlet");
+  if (longname) 
+    str_output(" string");
+  str_output(" _lgr = ");
+
+  for (i =0; < var_nbr, ++i){
+    if (var_list[i].endo_exo == 3){
+      var_list[i].nbr=endo_nbr;
+      if (recur_nbr > 0) str_output(", ");
+      strcpy(buff,"\"");
+      strcat(buff,var_list[i].name);
+      strcat(buff,"\"");
+      str_output(buff);
+      recur_nbr++;
+    }
+  }
+  str_output(";\n");
+#elif defined MATLAB || defined SCILAB
+  for (i=0; i < var_nbr; i++)
+    {
+      if ( var_list[i].endo_exo == 3)
+	{
+	  if ( recur_nbr == 0 )
+	    {
+	      sprintf(buff,"lgr_ = '%s';\n",var_list[i].name);
+	    }
+	  else
+	    {
+#ifdef MATLAB
+	      sprintf(buff,"lgr_ = str2mat(lgr_,'%s');\n",var_list[i].name);
+#else
+	      sprintf(buff,"lgr_ = [lgr_;'%s'];\n",var_list[i].name);
+#endif
+	    }
+	  str_output(buff) ;
+	  var_list[i].nbr=recur_nbr ;
+	  recur_nbr++ ;
+	}
+    }
+#endif
+
+  sprintf(buff,"recur_nbr = %d;\n",recur_nbr);
+  str_output(buff);
+}      
+  
+
+void str_output(char *str)
+{
+  int static column=0,p;
+  char *ps;
+  ps=str;
+  p=0;
+  while (*ps != '\n' && *ps != '\0') 
+    {
+      p++;
+      ps++;
+    }
+#ifdef GAUSS
+  if (column > 0 && (column+p) > 80)
+    {
+      fputc('\n',f_out);
+      column=0;
+    }
+#elif defined MATLAB
+  if (column > 0 && (column+p) > 76)
+    {
+      fputs(" ...\n",f_out);
+      column=0;
+    }
+#endif
+  fputs(str,f_out);
+  if (*ps == '\n')
+    {
+      while (*ps != '\0')
+	{
+	  if (*ps == '\n') p = 0;
+	  p++;
+	  ps++;
+	}
+      column=p;
+    }
+  else column += p;
+}
+
+void i_output(int i)
+{
+  char s[20];
+  sprintf(s,"%d",i);
+  str_output(s);
+}
+
+void print_model(struct queue *p)
+{
+  int i,j,k,m;
+  char buffer[200];
+
+  i=0;
+  j=1;
+  for ( k=1; k <= (y_max_lag+y_max_lead+1); k++)
+    {
+      if (k == 1)
+	{
+#ifdef GAUSS
+	  str_output("let _iy = ");
+#elif defined MATLAB || defined SCILAB
+	  str_output("iy_ = [");
+#endif
+	}
+      else
+	{
+#ifdef GAUSS
+	  str_output("let temp =");
+#elif defined MATLAB || defined SCILAB
+	  str_output("temp = [");
+#endif
+	}
+      for( m=0 ; m < endo_nbr ; m++ )
+	{
+	  if (iy[i] == 1)
+	    {
+	      iy[i] = j;
+	      str_output(" ");
+	      i_output(j);
+	      j++;
+	    }
+	  else 
+	    {
+	      str_output(" 0");
+	    }
+	  i++;
+	}
+#ifdef GAUSS
+      str_output(";\n");
+#elif defined MATLAB || defined SCILAB
+      str_output("];\n");
+#endif
+      if (k==1) 
+	{
+#ifdef GAUSS
+	  str_output("_iy = _iy';\n");
+#endif
+	}
+      else
+	{
+#ifdef GAUSS
+	  str_output("_iy = _iy | (temp');\n");
+#elif defined MATLAB || defined SCILAB
+	  str_output("iy_ = [ iy_ ; temp ];\n");
+#endif
+	}
+    }
+
+#ifdef GAUSS
+  str_output("_ykmin = ");
+  i_output(y_max_lag);
+  str_output(";\n_ykmax = ");
+  i_output(y_max_lead);
+  str_output(";\n_xkmin = ");
+  i_output(x_max_lag);
+  str_output(";\n_xkmax = ");
+  i_output(x_max_lead);
+  str_output(";\n_zkmin = ");
+  i_output(z_max_lag);
+  str_output(";\n_zkmax = ");
+  i_output(z_max_lead);
+  str_output(";\n");
+  sprintf(buffer,"_ys = zeros(%d,1);\n",endo_nbr);
+  str_output(buffer);
+  if (exo_nbr > 0)
+    {
+      sprintf(buffer,"_exe = zeros(%d,1);\n",exo_nbr);
+      str_output(buffer);
+    }
+#elif defined MATLAB || defined SCILAB
+  str_output("ykmin_ = ");
+  i_output(y_max_lag);
+  str_output(";\nykmax_ = ");
+  i_output(y_max_lead);
+  str_output(";\nxkmin_ = ");
+  i_output(x_max_lag);
+  str_output(";\nxkmax_ = ");
+  i_output(x_max_lead);
+  str_output(";\nzkmin_ = ");
+  i_output(z_max_lag);
+  str_output(";\nzkmax_ = ");
+  i_output(z_max_lead);
+  str_output(";\n");
+  sprintf(buffer,"ys_ = zeros(%d,1);\n",endo_nbr);
+  str_output(buffer);
+  if (exo_nbr)
+    {
+      sprintf(buffer,"exe_ = zeros(%d,1);\n",exo_nbr);
+      str_output(buffer);
+    }
+  if (exo_det_nbr)
+    {
+      sprintf(buffer,"exe_det_ = zeros(%d,1);\n",exo_det_nbr);
+      str_output(buffer);
+    }
+
+#endif
+print_model1(p,0);
+print_model1(p,1);
+}
+
+void print_model1(struct queue *p, int flag_steady)
+{
+  struct queue **p_q;
+  struct token **p_t;
+  int i,j,k;
+
+#ifdef GAUSS
+  if (flag_steady == 0)
+    {
+      str_output("\nproc _ff(y);\n");
+    }
+  else
+    {
+      str_output("\nproc _fff(y);\n");
+    }
+  str_output("local z;\n");
+
+  str_output("z=zeros(");
+  i_output(endo_nbr);
+  str_output(",1);\n");
+#elif defined MATLAB || defined SCILAB
+  FILE *f_temp;
+  char fmod_name[200];
+  
+  f_temp = f_out;
+  if (flag_steady == 0)
+    {
+      strcpy(fmod_name,fname);
+      strcat(fmod_name,"_ff.");
+      strcat(fmod_name,FILE_EXT);
+      f_out = fopen(fmod_name,"w");
+      strcpy(fmod_name,"\nfunction z=");
+      strcat(fmod_name,fname);
+      strcat(fmod_name,"_ff(y)\n");
+      str_output(fmod_name);
+    }
+  else
+    {
+      strcpy(fmod_name,fname);
+      strcat(fmod_name,"_fff.");
+      strcat(fmod_name,FILE_EXT);
+      f_out = fopen(fmod_name,"w");
+      strcpy(fmod_name,"\nfunction z=");
+      strcat(fmod_name,fname);
+      strcat(fmod_name,"_fff(y)\n");
+      str_output(fmod_name);
+    }
+
+  str_output("z=zeros(");
+  i_output(endo_nbr);
+  str_output(",1);\n");
+
+#ifdef MATLAB
+  str_output("global ex_ ex_det_ it_ recur_\n");
+#endif
+
+  param_nbr = 0;
+  for ( i=0; i < var_nbr; i++ )
+    {
+      if (var_list[i].endo_exo == 4){
+	var_list[i].nbr=param_nbr;
+	if ((param_nbr % 10)== 0 ) str_output("\nglobal ");
+	str_output(var_list[i].name);
+	str_output(" ");
+	param_nbr++;
+      }
+    }
+  str_output("\n");
+#endif
+
+  p_q=(struct queue **)p->ptr;
+  k=1;
+  for (i=0;i < p->imax;i++){
+    p_t=(struct token **)(*p_q)->ptr;
+    if ((*p_q)->flag == 0){
+#ifdef GAUSS
+      str_output("z[");
+      i_output(k);
+      str_output("] = ");
+#elif defined MATLAB || defined SCILAB
+      str_output("z(");
+      i_output(k);
+      str_output(") = ");
+#endif
+      k++;
+    }
+    for (j=0;j < (*p_q)->imax;j++){
+      if ((*p_t)->nbr == -1)  str_output((*p_t)->name);
+      else var_output(*p_t,flag_steady);
+      p_t++;
+    }
+    str_output(";\n");
+    p_q++;
+  }
+  // check number of equations
+  check.eq_nbr = k-1;
+#ifdef GAUSS
+  str_output("retp(z);\n");
+  str_output("endp;\n");
+#elif defined MATLAB || defined SCILAB
+  if (flag_steady == 1)
+    {
+      str_output("if ~isreal(z)\n");
+      str_output("  z = real(z)+imag(z).^2;\n");
+      str_output("end\n");
+    }
+  fclose(f_out);
+  f_out = f_temp;
+#endif
+}
+
+void var_output(struct token * p_t, int flag_steady)
+{
+  char buffer[200];
+  int i;
+  if (p_t->endo_exo == 1){
+#ifdef GAUSS
+    if (flag_steady == 0)
+      {      
+	sprintf(buffer,"y[%d]",iy[(y_max_lag+p_t->lead_lag)*(endo_nbr)+(p_t->nbr)]);
+      }
+    else
+      {
+	sprintf(buffer,"y[%d]",p_t->nbr+1);
+      }
+#elif defined MATLAB || defined SCILAB
+    if (flag_steady == 0)
+      {      
+	sprintf(buffer,"y(%d)",iy[(y_max_lag+p_t->lead_lag)*(endo_nbr)+(p_t->nbr)]);
+      }
+    else
+      {
+	sprintf(buffer,"y(%d)",p_t->nbr+1);
+      }
+#endif
+    str_output(buffer);
+  }
+  else if (p_t->endo_exo == 0){
+    i=p_t->lead_lag+x_max_lag-y_max_lag;
+#ifdef GAUSS
+    if (flag_steady == 1) sprintf(buffer,"_exe[%d]",p_t->nbr+1);
+    else if (i == 0) sprintf(buffer,"_ex[_it,%d]",p_t->nbr+1);
+    else sprintf(buffer,"_ex[_it%+d,%d]",i,p_t->nbr+1);
+#elif defined MATLAB || defined SCILAB
+    if (flag_steady == 1) sprintf(buffer,"exe_[%d]",p_t->nbr+1);
+    if (i == 0) sprintf(buffer,"ex_(it_,%d)",p_t->nbr+1);
+    else sprintf(buffer,"ex_(it_%+d,%d)",i,p_t->nbr+1);
+#endif
+    str_output(buffer);
+  }
+  else if (p_t->endo_exo == 3){
+    i=p_t->lead_lag+z_max_lag-y_max_lag;
+#ifdef GAUSS
+    if (flag_steady == 1) sprintf(buffer,"_recurs[%d]",p_t->nbr+1);
+    else if (i == 0) sprintf(buffer,"_recur[_it,%d]",p_t->nbr+1);
+    else sprintf(buffer,"_recur[_it%+d,%d]",i,p_t->nbr+1);
+#elif defined MATLAB || defined SCILAB
+    if (flag_steady == 1) sprintf(buffer,"recurs_[%d]",p_t->nbr+1);
+    else if (i == 0) sprintf(buffer,"recur_(it_,%d)",p_t->nbr+1);
+    else sprintf(buffer,"recur_(it_%+d,%d)",i,p_t->nbr+1);
+#endif
+    str_output(buffer);
+  }
+  else if (p_t->endo_exo == 4){
+    str_output(p_t->name);
+  }
+  else if (p_t->endo_exo == 5){
+    i=p_t->lead_lag;
+#ifdef GAUSS
+    if (flag_steady == 1) sprintf(buffer,"_exe_det[%d]",p_t->nbr+1);
+    else if (i == 0) sprintf(buffer,"_ex_det[_it,%d]",p_t->nbr+1);
+    else sprintf(buffer,"_ex_det[_it%+d,%d]",i,p_t->nbr+1);
+#elif defined MATLAB || defined SCILAB
+    if (flag_steady == 1) sprintf(buffer,"exe_det_[%d]",p_t->nbr+1);
+    if (i == 0) sprintf(buffer,"ex_det_(it_,%d)",p_t->nbr+1);
+    else sprintf(buffer,"ex_det_(it_%+d,%d)",i,p_t->nbr+1);
+#endif
+    str_output(buffer);
+  }
+}
+
+void p_i_shocks(ms_flag)
+{
+  char buff[2000];
+#ifdef GAUSS
+  str_output("/* (M)SHOCKS */\n");
+  str_output("if not _valf;\n");
+  str_output("  _ex[_xkmin+1:_iter+_xkmin+_xkmax,.]=ones(_iter+_xkmax,1).*_exe';\n");
+  str_output("endif;\n");
+#elif defined MATLAB
+  str_output("% (M)SHOCKS \n");
+  str_output("make_ex_;\n");
+  sprintf(buff,"shocks_file(%d);\n",ms_flag);
+  str_output(buff);
+#elif defined SCILAB
+  str_output("// (M)SHOCKS \n");
+  str_output("make_ex_();\n");
+#endif
+}
+
+void p_e_shocks(void)
+{
+  char buffer[2000];
+#if defined MATLAB || defined SCILAB
+  if (ex_det_length > 0)
+    {
+      sprintf(buffer,"M_.ex_det_length = %d;\n",ex_det_length);
+      str_output(buffer);
+    }
+#endif
+}
+
+void dynare_init(char* fname,struct s_runtime_options runtime_options)
+{
+  char buf[200];
+#ifdef GAUSS
+#ifdef OXGAUSS_GNU
+  str_output("library pgraph_gnu;\n");
+#else
+  str_output("library pgraph;\n");
+#endif
+#ifdef OXGAUSS
+  str_output("#include dynare1.src;\n");
+  str_output("#include dynare2.src;\n");
+  str_output("#include dynare3.src;\n");
+#endif
+  str_output("clear _scalv,_ex,_ys,_y,_exe,_recur,_recurs,_lgy,_lgx,_lgr;\n");
+  str_output("_dsmpl=0;\n_dynatol=0.00001;\n_maxit=10;\n_slowc=1;\n");
+  sprintf(buf,"_logname = \"%s.log\";\n",fname);
+  str_output(buf);
+  sprintf(buf,"output file = %s.log reset;\n",fname);
+  str_output(buf);
+#elif defined MATLAB
+  if (runtime_options.clearall == 1)
+    {
+      str_output("clear all\n");
+    }
+  str_output("global scalv_ ex_ ex_det_ recur_ recurs_ ys_ y_ exe_ exe_det_ lgy_ lgx_ lgx_det_ lgr_ dsmpl_ endval_\n");
+  str_output("global endo_nbr exo_nbr exo_det_nbr iy_  ykmin_  ykmax_  xkmin_  xkmax_ zkmin_ zkmax_ iter_\n"); 
+  str_output("global dynatol_ slowc_ maxit_ valf_ ys0_ recurs0_ ex0_ timing_ ct_ gstep_ Sigma_e_ fname_ lgx_orig_ord_ iter_ options_ dr_ oo_ trend_coeff_ eigenvalues_\n");
+  str_output("global M_\n");
+  str_output("M_.ex_det_length = 0;\n");
+  str_output("M_.dname = '");
+  str_output(fname);
+  str_output("';\n");
+  str_output("endo_nbr=0;exo_nbr=0;exo_det_nbr=0;\n");
+  str_output("dsmpl_=0;\ndynatol_=0.00001;\nmaxit_=10;\nslowc_=1;\ntiming_=0;\nct_=0;\ngstep_=1e-2;\n");
+  str_output("endval_=0;rplottype_=0;\nvalf_=0;\n");
+  str_output("y_=[];\nex_=[];\nex_det_=[];\n");
+  sprintf(buf,"fname_ = '%s';\n",fname);
+  str_output(buf);
+  sprintf(buf,"logname_ = '%s.log';\n",fname);
+  str_output(buf);
+  sprintf(buf,"diary off;\nwarning off;\ndelete %s.log;\nwarning on;\nwarning backtrace;\n",fname);
+  str_output(buf);
+  sprintf(buf,"diary %s.log;\n",fname);
+  str_output(buf);
+  str_output("options_ = [];\n");
+#elif defined SCILAB
+  str_output("clear\nclearglobal()\n");
+  str_output("global ex_ ex_det_ y_ ys_ dsmpl_ i_exo_var_ iter_ options_ dr_\n");
+  str_output("dsmpl_=0;\ndynatol_=0.00001;\nmaxit_=10;\nslowc_=1;\ntiming_=0;\nct_=0;\ngstep_=1e-2;\ndebug_=0;\nrecurs_=[];\nstart_simul=[];\n");
+  str_output("endval_=0;rplottype_=0;\nvalf_=0;\n");
+  sprintf(buf,"fname_ = '%s';\n",fname);
+  str_output(buf);
+  sprintf(buf,"logname_ = '%s.log';\n",fname);
+  str_output(buf);
+  str_output("fh_log=mopen(logname_,'w');\n");
+  sprintf(buf,"getf('%s_ff.sci');\n",fname);
+  str_output(buf);
+  sprintf(buf,"getf('%s_fff.sci');\n",fname);
+  str_output(buf);
+  str_output("options_=tlist('opt');\n");
+#endif
+
+  varexo=strdup("");
+  
+}
+
+
+void add_tmpvar(name1,name2)
+char *name1,*name2;
+{
+  int static tmpvar_size = 0;
+
+  if ( nbr_tmpvar+2 > tmpvar_size )
+    {
+      tmpvar_list = realloc(tmpvar_list, 200*sizeof(char *));
+      tmpvar_size += 200;
+    }
+
+  tmpvar_list[nbr_tmpvar] = name1;
+  nbr_tmpvar++;
+  tmpvar_list[nbr_tmpvar] = name2;
+  nbr_tmpvar++;
+}
+
+void dyn2vec(flag)
+     int flag;                           /* flag: one or two names */
+{
+  int i;
+  char buffer[200];
+  if (flag == 0)
+    {
+#if defined GAUSS
+      str_output("dyn2vec;\n");
+#elif defined MATLAB || defined SCILAB
+      str_output("global ");
+      for(i=0;i < var_nbr; i++)
+	{
+	  if (var_list[i].endo_exo == 1)
+	    {
+	      str_output(var_list[i].name);
+	      str_output(" ");
+	    }
+	}
+      str_output("\ndyn2vec;\n");
+#endif
+    }
+  else
+    {
+#ifdef GAUSS
+      str_output("clear ");
+      str_output(tmpvar_list[(tmpvar_list[1]?1:0)]);
+      for( i = 2; i < nbr_tmpvar; i+=2)
+	{
+	  str_output(", ");
+	  str_output(tmpvar_list[i+(tmpvar_list[i+1]?1:0)]);
+	}
+      str_output(";\n");
+      for( i = 0; i < nbr_tmpvar; i+=2)
+	{
+	  if (tmpvar_list[i+1])
+	    {
+	      sprintf(buffer,"dyn2vec %s %s;\n",tmpvar_list[i],tmpvar_list[i+1]);
+	    }
+	  else
+	    {
+	      sprintf(buffer,"dyn2vec %s;\n",tmpvar_list[i]);
+	    }
+	  str_output(buffer);
+	}
+#elif defined MATLAB || defined SCILAB
+      str_output("global ");
+      for( i = 0; i < nbr_tmpvar; i+=2)
+	{
+	  str_output(tmpvar_list[i+(tmpvar_list[i+1]?1:0)]);
+	  str_output(" ");
+	}
+      str_output("\n");
+      for( i = 0; i < nbr_tmpvar; i+=2)
+	{
+	  if (tmpvar_list[i+1] > 0)
+	    {
+	      sprintf(buffer,"dyn2vec('%s', '%s');\n",tmpvar_list[i],tmpvar_list[i+1]);
+	    }
+	  else
+	    {
+	      sprintf(buffer,"dyn2vec('%s');\n",tmpvar_list[i]);
+	    }
+	  str_output(buffer);
+	}
+#endif
+    }
+
+}
+
+void print_rplot(void)
+{
+  int i;
+  char buffer[200];
+
+#ifdef GAUSS
+  strcpy(buffer,"rplot");
+  for(i=0;i<nbr_tmpvar;i+=2)
+    {
+      strcat(buffer," ");
+      strcat(buffer,tmpvar_list[i]);
+    }
+  strcat(buffer," ;\n");
+#elif defined MATLAB || defined SCILAB
+  strcpy(buffer,"plot_list_ = '");
+  strcat(buffer,tmpvar_list[0]);
+  strcat(buffer,"';\n");
+  for(i=2;i<nbr_tmpvar;i+=2)
+    {
+#ifdef MATLAB
+      strcat(buffer,"plot_list_ = str2mat(plot_list_,'");
+      strcat(buffer,tmpvar_list[i]);
+      strcat(buffer,"');\n");
+#else
+      strcat(buffer,"plot_list_ = [plot_list_;'");
+      strcat(buffer,tmpvar_list[i]);
+      strcat(buffer,"'];\n");
+#endif
+    }
+  strcat(buffer,"rplot(plot_list_, rplottype_) ;\n");
+#endif
+  str_output(buffer);
+}
+
+
+void print_iter(char *s)
+{
+#ifdef GAUSS
+  fprintf(f_out,"\n_iter = %s;\n",s);
+#elif defined MATLAB || defined SCILAB
+  fprintf(f_out,"\niter_ = %s;\n",s);
+  fprintf(f_out,"options_.periods = %s;\n",s);
+#endif
+}
+
+struct loop *initial_loop (char *name, char *initial, char *limit, char *increment)
+{
+  struct loop *loop;
+
+  loop = (struct loop *)calloc(1,sizeof(struct loop));
+
+  loop->loop_index = atoi(initial);
+  loop->loop_limit = atoi(limit);
+  loop->loop_increment = atoi(increment);
+  loop->loop_index_name = strdup(name);
+
+  add_var(name,2);
+  var_list[var_nbr-1].nbr = 0;
+  sort_var();
+
+  return loop;
+}
+
+struct queue *do_loop(struct loop *loop, struct queue *q_eq1)
+{
+  struct queue *q_eq2,**p_q1,**p_q2;
+  int i;
+
+  q_eq2 = (struct queue *)calloc(1,sizeof(struct queue));
+
+  q_eq2->ptr = (void **)calloc(1,sizeof(void *));
+  q_eq2->imax = 0;
+  while (loop->loop_index <= loop->loop_limit)
+    {
+      q_eq2->ptr=(void **)realloc(q_eq2->ptr,(q_eq2->imax+q_eq1->imax)*sizeof(void *));
+      p_q1=(struct queue **)q_eq1->ptr;
+      p_q2=(struct queue **)q_eq2->ptr+q_eq2->imax;
+      q_eq2->imax += q_eq1->imax;
+      for (i=0;i < q_eq1->imax;i++){
+	*p_q2=(struct queue *)calloc(1,sizeof(struct queue));
+	(*p_q2)->flag=(*p_q1)->flag;
+	(*p_q2)->ptr=(void **)calloc((*p_q1)->imax,sizeof(struct token *));
+	(*p_q2)->imax=0;
+	copy_update_indexed_var((struct token **)(*p_q1)->ptr, *p_q2,(*p_q1)->imax,loop->loop_index_name,loop->loop_index);
+	p_q1++;
+	p_q2++;
+      }
+      loop->loop_index++;
+    }
+
+  return q_eq2;
+}
+
+void copy_update_indexed_var(struct token **p_t1, struct queue  *q2, int imax, char *index_name, int index)
+{
+  struct token **p_t3,**p_end;
+  char buffer[200];
+  int j, flag;
+  struct var *p_var;
+
+  p_end = p_t1+imax;
+  for (j=0;j < imax;j++){
+    if ((*p_t1)->nbr == -3){
+      flag=1;
+      for (p_t3=p_t1+1; p_t3 < p_end; p_t3++){
+	if ((*p_t3)->nbr != -3){
+	  break;
+	}
+	if ((*p_t3)->name != NULL ){
+	  if (strcmp(index_name,(*p_t3)->name) == 0){
+	    (*p_t3)->lead_lag = index;
+	  }
+	  else{
+	    flag=0;
+	  }
+	}
+      }
+      p_t3=p_t1;
+      if (flag == 1){
+	strcpy(buffer,(*p_t3)->name);
+	flag = 0;
+	for (p_t3=p_t1+1; p_t3 < p_end; p_t3++){
+	  if ((*p_t3)->nbr != -3){
+	    break;
+	  }
+	  if ((*p_t3)->name == NULL || strcmp(index_name,(*p_t3)->name) == 0){
+	    if (flag == 0){
+	      sprintf(buffer+strlen(buffer),"%d\0",(*p_t3)->lead_lag);
+	      flag = 1;
+	    }
+	    else{
+	      sprintf(buffer+strlen(buffer),"_%d\0",(*p_t3)->lead_lag);
+	    }
+	  }
+	  else{
+	    strcat(buffer,(*p_t3)->name);
+	  }
+	}
+	p_var=var_search(buffer);
+	if (p_var == NULL){
+	  fprintf(stdout,"%s is not an indexed variable\n",buffer);
+	}
+	else if (p_var->endo_exo == 3){
+	  add_to_queue(q2,token(p_var->name,-1));
+	}
+	else{
+	  add_to_queue(q2,create_var(p_var));
+	}
+	set_ll1((struct token *)(q2->ptr)[q2->imax-1],(*p_t1)->lead_lag);
+      }
+      else{
+	add_to_queue(q2,token((*p_t3)->name,(*p_t3)->nbr));
+	for (p_t3=p_t1+1; p_t3 < p_end; p_t3++){
+	  if ((*p_t3)->nbr != -3){
+	    break;
+	  }
+	  if ((*p_t3)->name == NULL || strcmp(index_name,(*p_t3)->name) == 0){
+	    add_to_queue(q2,token(NULL,-3));
+	    ((struct token *)(q2->ptr)[q2->imax-1])->lead_lag=(*p_t3)->lead_lag;
+	  }
+	  else{
+	    add_to_queue(q2,token((*p_t3)->name,-3));
+	  }
+	}
+      }      
+      j += p_t3-p_t1-1;
+      p_t1 = p_t3-1;
+    }
+    else if ((*p_t1)->nbr == -2 && strcmp(index_name,(*p_t1)->name) == 0){
+      sprintf(buffer,"%d\0",index);
+      add_to_queue(q2,token(strdup(buffer),-1));
+      ((struct token *)(q2->ptr)[q2->imax-1])->lead_lag=(*p_t1)->lead_lag;
+      ((struct token *)(q2->ptr)[q2->imax-1])->endo_exo=(*p_t1)->endo_exo;
+    }
+    else if ((*p_t1)->nbr == -1){
+      add_to_queue(q2,token((*p_t1)->name,-1));
+      ((struct token *)(q2->ptr)[q2->imax-1])->lead_lag=(*p_t1)->lead_lag;
+      ((struct token *)(q2->ptr)[q2->imax-1])->endo_exo=(*p_t1)->endo_exo;
+    }
+    else {
+      if ((*p_t1)->name == NULL || (strcmp(index_name,(*p_t1)->name) != 0)){
+	add_to_queue(q2,token((*p_t1)->name,(*p_t1)->nbr));
+	((struct token *)(q2->ptr)[q2->imax-1])->lead_lag=(*p_t1)->lead_lag;
+      }
+      else{
+	add_to_queue(q2,token(NULL,(*p_t1)->nbr));
+	set_ll1((struct token *)(q2->ptr)[q2->imax-1],index);
+      }
+      ((struct token *)(q2->ptr)[q2->imax-1])->lead_lag=(*p_t1)->lead_lag;
+      ((struct token *)(q2->ptr)[q2->imax-1])->endo_exo=(*p_t1)->endo_exo;
+    }
+    p_t1++;
+  }
+}
+
+struct queue *operator_loop(struct loop *loop, struct queue *q1, char *oper)
+{
+  struct queue *q2;
+
+  q2=create_queue(token("((",-1));
+  copy_update_indexed_var((struct token **)q1->ptr, q2,q1->imax,loop->loop_index_name,loop->loop_index);
+  loop->loop_index++;
+  add_to_queue(q2,token(")",-1));
+  while (loop->loop_index <= loop->loop_limit){
+      add_to_queue(q2,token(oper,-1));
+      q2=add_to_queue(q2,token("(",-1));
+      copy_update_indexed_var((struct token **)q1->ptr, q2,q1->imax,loop->loop_index_name,loop->loop_index);
+      add_to_queue(q2,token(")",-1));
+      loop->loop_index++;
+  }
+  add_to_queue(q2,token(")",-1));
+     
+  return q2;
+}
+
+void p_steady(struct queue *p)
+{
+  //  print_model1(p,1);
+  str_output("steady(0);\n");
+}
+
+void p_steady_linear(struct queue *p)
+{
+  //  print_model1(p,1);
+  str_output("steady(1);\n");
+}
+
+void print_param(void)
+{
+  int i;
+
+  sort_var();
+
+#if defined MATLAB || defined SCILAB
+  param_nbr = 0;
+  for ( i=0; i < var_nbr; i++ )
+    {
+      if (var_list[i].endo_exo == 4){
+	var_list[i].nbr=param_nbr;
+	if ((param_nbr % 10)== 0 ) str_output("\nglobal ");
+	str_output(var_list[i].name);
+	str_output(" ");
+	param_nbr++;
+      }
+    }
+  str_output("\n");
+#endif
+}
+
+void p_stoch_simul()
+{
+  char buffer[2000];
+  int i;
+  check.stoch_simul = 1;
+#ifdef SCILAB
+  str_output("global ");
+  for(i=0;i < var_nbr; i++)
+    {
+      if (var_list[i].endo_exo == 1)
+	{
+	  str_output(var_list[i].name);
+	  str_output(" ");
+	}
+    }
+  str_output("\n");
+#endif
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = [];\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  str_output("info=stoch_simul(var_list_);\n");
+#endif
+}
+
+void p_resol(int dr_algo, int linear, int order, struct queue *p)
+{
+  char buffer[200];
+  //  print_model1(p,1);
+  sprintf(buffer,"dr_ = resol(ys_,%d,%d,%d);\n",dr_algo,linear,order);
+  str_output(buffer);
+}
+
+void p_simul( void )
+{
+  check.simul = 1;
+  str_output("simul(dr_);\n");
+}
+
+void p_dsample(int nargs, char *arg1, char *arg2)
+{
+#ifdef GAUSS
+  str_output("dsample ");
+  if (nargs > 0)
+    {
+      str_output(arg1);
+    }
+  if (nargs > 1)
+    {
+      str_output(" ");
+      str_output(arg2);
+    }
+#elif defined MATLAB || defined SCILAB
+  str_output("dsample");
+  if (nargs > 0)
+    {
+      str_output("(");
+      str_output(arg1);
+      if (nargs > 1)
+	{
+	  str_output(",");
+	  str_output(arg2);
+	}
+      str_output(")");
+    }
+#endif  
+  str_output(";\n");
+}
+
+void p_check(void)
+{
+  check.check = 1;
+#if defined MATLAB || defined GAUSS
+  str_output("check;\n");
+#else
+  str_output("check();\n");
+#endif
+}
+
+void p_irf(char * varexo, double shock_size, int iter, int drop, int replic, int order)
+{
+  char buffer[200];
+  int i;
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = '';\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  sprintf(buffer,"y_=irf(dr_,'%s',%f,%d,%d,%d,%d,var_list_);\n",varexo,shock_size,iter+drop,drop,replic,order);
+#endif
+  str_output(buffer);
+}
+
+void p_d_corr()
+{
+  char buffer[2000];
+  int i,flag;
+  strcpy(buffer,"d_corr(");
+  flag = 0;
+  if (nbr_tmpvar == 0)
+    {
+      for (i=0; i < var_nbr; i++)
+	{
+	  if ( var_list[i].endo_exo == 1)
+	    {
+	      if (flag > 0)
+		{
+		  strcat(buffer,",");
+		}
+	      strcat(buffer,"'");
+	      strcat(buffer,var_list[i].name);
+	      strcat(buffer,"'");
+	      flag = 1;
+	    }
+	}
+    }
+  else
+    {
+      for(i=0;i<nbr_tmpvar;i+=2)
+	{
+	  if (flag > 0)
+	    {
+	      strcat(buffer,",");
+	    }
+	  strcat(buffer,"'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'");
+	  flag = 1;
+	}
+    }
+  strcat(buffer,");\n");
+  str_output(buffer);
+}
+
+void p_disp_dr(order)
+{
+  char buffer[200];
+  int i;
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = '';\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  sprintf(buffer,"disp_dr(dr_,%d,var_list_);\n",order);
+#endif
+  str_output(buffer);
+}
+
+void p_disp_moments(order)
+{
+  char buffer[200];
+  int i;
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = '';\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  sprintf(buffer,"disp_moments(y_,%d,var_list_);\n",order);
+#endif
+  str_output(buffer);
+}
+
+void p_optim_weights_init(void)
+{
+  str_output(OPEN_COMMENTS);
+  str_output(" OPTIM_WEIGHTS\n");
+  str_output(CLOSE_COMMENTS);
+
+#if defined MATLAB
+  str_output("optim_weights_ = sparse(endo_nbr,endo_nbr);\n");
+  str_output("obj_var_ = [];\n\n");
+#endif
+}
+
+void p_optim_weights1(struct token* p_t, struct queue* p_q)
+{
+  char buffer[200];
+
+  if (p_t->endo_exo != 1 && p_t->endo_exo != 3)
+    {
+      fprintf(stdout,"OPTIM_WEIGHTS ERROR: only endogenous variables can have weights" );
+      exit(1);
+    }
+
+  sprintf(buffer,"optim_weights_(%d,%d) = ",p_t->nbr+1,p_t->nbr+1);
+  str_output(buffer);
+  p_expression(p_q);
+  str_output(";\n");
+  sprintf(buffer,"obj_var_ = [obj_var_; %d];\n",p_t->nbr+1);
+  str_output(buffer);
+}
+
+void p_optim_weights2(struct token* p_t1, struct token* p_t2, struct queue* p_q)
+{
+  char buffer[200];
+
+  if ((p_t1->endo_exo != 1 && p_t1->endo_exo != 3) || (p_t2->endo_exo != 1 && p_t2->endo_exo != 3))
+    {
+      fprintf(stdout,"OPTIM_WEIGHTS ERROR: only endogenous variables can have weights" );
+      exit(1);
+    }
+
+  sprintf(buffer,"optim_weights_(%d,%d) = ",p_t1->nbr+1,p_t2->nbr+1);
+  str_output(buffer);
+  p_expression(p_q);
+  str_output(";\n");
+  sprintf(buffer,"optim_weights_(%d,%d) = optim_weights_(%d,%d);\n",p_t2->nbr+1,p_t1->nbr+1,p_t1->nbr+1,p_t2->nbr+1);
+  str_output(buffer);
+  sprintf(buffer,"obj_var_ = [obj_var_; %d];\n",p_t1->nbr+1);
+  sprintf(buffer,"obj_var_ = [obj_var_; %d];\n",p_t2->nbr+1);
+}
+
+void p_expression(struct queue* q)
+{
+  struct token** p_t;
+  char buffer[200];
+  int j;
+
+  p_t=(struct token **)q->ptr;
+  for (j=0;j < q->imax;j++){
+    if ((*p_t)->nbr == -1)  str_output((*p_t)->name);
+    else if ((*p_t)->endo_exo == 1)
+      {
+#ifdef GAUSS
+	sprintf(buffer,"_ys[%d]",(*p_t)->nbr+1);
+#elif defined MATLAB || defined SCILAB
+	sprintf(buffer,"ys_(%d)",(*p_t)->nbr+1);
+#endif
+	str_output(buffer);
+      }
+    else if ((*p_t)->endo_exo == 0)
+      {
+#ifdef GAUSS
+	sprintf(buffer,"_exe[%d]",(*p_t)->nbr+1);
+#elif defined MATLAB || defined SCILAB
+	sprintf(buffer,"exe_(%d)",(*p_t)->nbr+1);
+#endif
+ 	str_output(buffer);
+      }
+    else if ((*p_t)->endo_exo == 3)
+      {
+#ifdef GAUSS
+	sprintf(buffer,"_recurs[%d]",(*p_t)->nbr+1);
+#elif defined MATLAB || defined SCILAB
+	sprintf(buffer,"recurs_(%d)",(*p_t)->nbr+1);
+#endif
+ 	str_output(buffer);
+      }
+    else if ((*p_t)->endo_exo == 4)
+      {
+	sprintf(buffer,"%s",(*p_t)->name);
+ 	str_output(buffer);
+      }
+    else if ((*p_t)->endo_exo == 5)
+      {
+#ifdef GAUSS
+	sprintf(buffer,"_exe_det[%d]",(*p_t)->nbr+1);
+#elif defined MATLAB || defined SCILAB
+	sprintf(buffer,"exe_det_(%d)",(*p_t)->nbr+1);
+#endif
+ 	str_output(buffer);
+      }
+    p_t++;
+  }
+}
+
+void p_osr_params(char * name)
+{
+  static int flag = 0;
+  char buffer[200];
+
+#ifdef GAUSS
+  if ( flag == 0)
+    {
+      sprintf(buffer,"let string _osr_params = \"%s\";\n",name);
+      flag = 1;
+    }
+  else
+    {
+      sprintf(buffer,"osr_params = _osr_params | \"%s\";\n",name);
+    }
+#elif defined MATLAB
+  if ( flag == 0)
+    {
+      sprintf(buffer,"osr_params_ = '%s';\n",name);
+      flag = 1;
+    }
+  else
+    {
+      sprintf(buffer,"osr_params_ = str2mat(osr_params_,'%s');\n",name);
+    }
+#elif defined SCILAB
+  if ( flag == 0)
+    {
+      sprintf(buffer,"osr_params_ = '%s';\n",name);
+      flag = 1;
+    }
+  else
+    {
+      sprintf(buffer,"osr_params_ = [osr_params_;'%s'];\n",name);
+    }
+#endif
+  str_output(buffer);
+  str_output("\n");
+}
+
+void p_calib_init(void)
+{
+  int i;
+  char buffer[200];
+
+  str_output(OPEN_COMMENTS);
+  str_output(" CALIB_VAR ");
+  str_output(CLOSE_COMMENTS);
+  str_output("\n\n");
+
+#if defined MATLAB || defined SCILAB
+  for(i=1;i<4;++i)
+    {
+      sprintf(buffer,"calib_var_index{%d} = [];\ncalib_targets{%d} = [];\ncalib_weights{%d}=[];\n",i,i,i);
+      str_output(buffer);
+    }
+#endif
+}
+
+void p_calib_var(struct token* p_t, struct queue* p_q, char * weight)
+{
+  char buffer[200];
+  if (p_t->endo_exo == 1 || p_t->endo_exo == 3)
+    {
+      sprintf(buffer,"calib_var_index{1} = [calib_var_index{1};%d];\n",p_t->nbr+1);
+      str_output(buffer);
+      str_output("calib_targets{1} =[calib_targets{1}; ");
+      p_expression(p_q);
+      str_output("];\n");
+      sprintf(buffer,"calib_weights{1} = [calib_weights{1}; %s];\n",weight);
+      str_output(buffer);
+    }
+  else if (p_t->endo_exo == 0)
+    {
+      sprintf(buffer,"calib_var_index{3} = [calib_var_index{3};%d %d];\n",p_t->nbr+1,p_t->nbr+1);
+      str_output(buffer);
+      str_output("calib_targets{3} =[calib_targets{3}; ");
+      p_expression(p_q);
+      str_output("];\n");
+      sprintf(buffer,"calib_weights{3} = [calib_weights{3}; %s];\n",weight);
+      str_output(buffer);
+    }
+  else
+    {
+      printf("ERROR in CALIB: one of the targets isn't legitimate\n");
+    }
+}
+
+void p_calib_covar(struct token* p_t1, struct token* p_t2, struct queue* p_q, char * weight)
+{
+  char buffer[200];
+  if ((p_t1->endo_exo == 0 && p_t2->endo_exo == 1)|| (p_t1->endo_exo == 1 && p_t2->endo_exo == 0))
+    {
+      printf("ERROR in CALIB: can't target correlation between an endogenous and an exogenous variable\n");
+      exit(1);
+    }
+  else if (p_t1->endo_exo == 1 || p_t1->endo_exo == 3)
+    {
+      sprintf(buffer,"calib_var_index{2} = [calib_var_index{2};%d %d];\n",p_t1->nbr+1,p_t2->nbr+1);
+      str_output(buffer);
+      str_output("calib_targets{2} =[calib_targets{2}; ");
+      p_expression(p_q);
+      str_output("];\n");
+      sprintf(buffer,"calib_weights{2} = [calib_weights{2}; %s];\n",weight);
+      str_output(buffer);
+    }
+  else if (p_t1->endo_exo == 0)
+    {
+      sprintf(buffer,"calib_var_index{3} = [calib_var_index{2};%d %d];\n",p_t1->nbr+1,p_t2->nbr+1);
+      str_output(buffer);
+      str_output("calib_targets{3} =[calib_targets{3}; ");
+      p_expression(p_q);
+      str_output("];\n");
+      sprintf(buffer,"calib_weights{3} = [calib_weights{3}; %s];\n",weight);
+      str_output(buffer);
+    }
+  else
+    {
+      printf("ERROR in CALIB: one of the targets isn''t legitimate\n");
+      exit(1);
+    }
+}
+ 
+static int max_iar = 3;
+void p_calib_ac(struct token* p_t, char * ar, struct queue* p_q, char * weight)
+{
+  char buffer[200];
+  int i, iar;
+
+  iar = atoi(ar)+3;
+  if (iar > max_iar)
+    {
+      for(i=max_iar+1; i <= iar; ++i)
+	{
+	  sprintf(buffer,"calib_var_index{%d} = [];\ncalib_targets{%d} = [];\ncalib_weights{%d}=[];\n",i,i,i);
+	  str_output(buffer);
+	}
+      max_iar = iar;
+    }
+  sprintf(buffer,"calib_var_index{%d} = [calib_var_index{%d};%d];\n",iar,iar,p_t->nbr+1);
+  str_output(buffer);
+  sprintf(buffer,"calib_targets{%d} =[calib_targets{%d}; ",iar,iar);
+  str_output(buffer);
+  p_expression(p_q);
+  str_output("];\n");
+  sprintf(buffer,"calib_weights{%d} = [calib_weights{%d}; %s];\n",iar,iar,weight);
+  str_output(buffer);
+}
+
+void p_calib(int cova)
+{
+  char buffer[200];
+  sprintf(buffer,"Sigma_e_=calib(calib_var_index,calib_targets,calib_weights,%d,%d,Sigma_e_);\n",max_iar-3,cova);
+  str_output(buffer);
+}
+
+void p_dynatype(char *fname, char *ext)
+{
+  char buffer[2000];
+  int i;
+#ifdef SCILAB
+  str_output("global ");
+  for(i=0;i < var_nbr; i++)
+    {
+      if (var_list[i].endo_exo == 1)
+	{
+	  str_output(var_list[i].name);
+	  str_output(" ");
+	}
+    }
+  str_output("\n");
+#endif
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = [];\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  if (strlen(ext) == 0)
+    {
+      sprintf(buffer,"dynatype('%s',var_list_);\n",fname);
+    }
+  else
+    {
+      sprintf(buffer,"dynatype('%s.%s',var_list_);\n",fname,ext);
+    }
+#else
+  if (strlen(ext) == 0)
+    {
+      sprintf(buffer,"dynatype %s;\n",fname);
+    }
+  else
+    {
+      sprintf(buffer,"dynatype %s.%s;\n",fname,ext);
+    }
+
+#endif
+  str_output(buffer);
+}
+
+void p_dynasave(char *fname, char *ext)
+{
+  char buffer[2000];
+  int i;
+#ifdef SCILAB
+  str_output("global ");
+  for(i=0;i < var_nbr; i++)
+    {
+      if (var_list[i].endo_exo == 1)
+	{
+	  str_output(var_list[i].name);
+	  str_output(" ");
+	}
+    }
+  str_output("\n");
+#endif
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = [];\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  if (strlen(ext) == 0)
+    {
+      sprintf(buffer,"dynasave('%s',var_list_);\n",fname);
+    }
+  else
+    {
+      sprintf(buffer,"dynasave('%s.%s',var_list_);\n",fname,ext);
+    }
+#else
+  if (strlen(ext) == 0)
+    {
+      sprintf(buffer,"dynasave %s;\n",fname);
+    }
+  else
+    {
+      sprintf(buffer,"dynasave %s.%s;\n",fname,ext);
+    }
+
+#endif
+  str_output(buffer);
+}
+
+void p_sigma_e(struct queue *p_q)
+{
+  int up, i, j, i1, j1, p1, p2;
+  int* order;
+  int* po;
+  struct queue **p_q1;
+#if defined MATLAB || defined SCILAB
+  order = (int*)calloc(exo_nbr,sizeof(int));
+  po = order;
+  for (i = 0; i < var_nbr; ++i)
+    {
+      if (var_list[i].endo_exo == 0)
+	{
+	  *po++ = var_list[i].original_nbr;
+	}
+    }
+  str_output("Sigma_e_ = [\n");
+  p_q1 = (struct queue **)(p_q->ptr);
+  up = ((*p_q1)->imax > 1) ? 1 : 0;
+  for(i1=0; i1 < exo_nbr; ++i1)
+    {
+      if (i1 > 0)
+	{
+	  str_output(";\n");
+	}
+      i = order[i1];
+      for(j1=0; j1 < exo_nbr; ++j1)
+	{
+	  if (j1 > 0)
+	    {
+	      str_output(", ");
+	    }
+	  j = order[j1];
+	  if (j <= i)
+	    {
+	      if (up)
+		{
+		  p1 = j;
+		  p2 = i-j;
+		}
+	      else
+		{
+		  p1 = i;
+		  p2 = j;
+		}
+	    }
+	  else
+	    {
+	      if (up)
+		{
+		  p1 = i;
+		  p2 = j-i;
+		}
+	      else
+		{
+		  p1 = j;
+		  p2 = i;
+		}
+	    }
+		  p_expression(*(struct queue**)((*(struct queue**)(p_q1+p1))->ptr+p2));
+	}
+    }
+  str_output("\n];\n");
+  free(order);
+#endif
+}
+
+void tr_check(int row, int col)
+{
+  static int old_col = 0;
+  static int up_down = 0;
+  if (col == 0)
+    {
+      fprintf(stdout,"ERROR: empty row in Sigma_e!\n");
+      exit(1);
+    }
+  if ( row > exo_nbr || col > exo_nbr)
+    {
+      fprintf(stdout,"ERROR: Sigma_e has more rows or columns than exogenous variables in the model!\n");
+      exit(1);
+    }
+  if (old_col == 0)
+    {
+      old_col = col;
+      up_down = (col > 1) ? -1 : 1;
+    }
+  else
+    {
+      old_col += up_down;
+      if ( col != old_col)
+	{
+	  fprintf(stdout,"ERROR: Sigma_e isn't in triangular form!\n");
+	  exit(1);
+	}
+    }
+}
+
+void p_option(char *name, char *value)
+{
+  char buffer[2000];
+  sprintf(buffer,"options_.%s=%s;\n",name,value);
+  str_output(buffer);
+}
+
+void p_option_e(char *name, struct queue* expression)
+{
+  char buffer[2000];
+  sprintf(buffer,"options_.%s=",name);
+  str_output(buffer);
+  p_expression(expression);
+  str_output(";\n");
+}
+
+void p_s_option(char *name, char *value)
+{
+  char buffer[2000];
+  sprintf(buffer,"options_.%s='%s';\n",name,value);
+  str_output(buffer);
+}
+
+void p_osr()
+{
+  char buffer[2000];
+  int i;
+  check.osr = 1;
+#ifdef SCILAB
+  str_output("global ");
+  for(i=0;i < var_nbr; i++)
+    {
+      if (var_list[i].endo_exo == 1)
+	{
+	  str_output(var_list[i].name);
+	  str_output(" ");
+	}
+    }
+  str_output("\n");
+#endif
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = [];\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  str_output("osr(var_list_,osr_params_,optim_weights_);\n");
+#endif
+}
+
+void p_olr()
+{
+  char buffer[2000];
+  int i;
+  check.olr = 1;
+#ifdef SCILAB
+  str_output("global ");
+  for(i=0;i < var_nbr; i++)
+    {
+      if (var_list[i].endo_exo == 1)
+	{
+	  str_output(var_list[i].name);
+	  str_output(" ");
+	}
+    }
+  str_output("\n");
+#endif
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = [];\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  str_output("options_.olr = 1;\n");
+  str_output("options_.olr_w = optim_weights_;\n");
+  str_output("options_.olr_inst = olr_inst_;\n");
+  str_output("info = stoch_simul(var_list_);\n");
+  //  str_output("olr(var_list_,olr_inst_,obj_var_,optim_weights_);\n");
+#endif
+}
+
+void p_olr_inst_init()
+{
+  str_output("%OLR_INST\n");
+  str_output("olr_inst_ = [];\n");
+}
+
+void p_olr_inst(char* name)
+{
+  char buffer[2000];
+  sprintf(buffer,"olr_inst_ = strvcat(olr_inst_,'%s');\n",name);
+  str_output(buffer);
+  inst_nbr++;
+}
+
+void run_checks(void)
+ {
+  int i,flag;
+  if (check.olr && check.eq_nbr != endo_nbr - inst_nbr)
+    {
+      printf("ERROR: for OLR there must be %d equations for %d endogenous variables less %d instruments\n",endo_nbr-inst_nbr,endo_nbr,inst_nbr);
+      exit(1);
+    }
+  else if (check.eq_nbr != endo_nbr - inst_nbr)
+    {
+      printf("ERROR: there are %d equations for %d endogenous variables\n",check.eq_nbr,endo_nbr);
+      exit(1);
+    }
+
+  if (!check.linear && !check.initval)
+    {
+      printf("WARNING: there is no INITVAL, all variables initialized at 0\n");
+    }
+
+  if (!check.linear && check.initval)
+    {
+      flag = 1;
+      for(i=0;i<var_nbr;++i)
+	{
+	  if (initval_check[i] == 0 && ((var_list[i].endo_exo == 0 && check.determ) || var_list[i].endo_exo == 1))
+	    {
+	      if (flag)
+		{
+		  printf("WARNING: the following variables aren't initialized in INITVAL and therefore set to 0\n");
+		  flag =  0;
+		}
+	      printf("\t%s\n",var_list[i].name);
+	    }
+	}
+    }             
+
+  if (!check.linear && check.endval)
+    {
+      flag = 1;
+      for(i=0;i<var_nbr;++i)
+	{
+	  if (endval_check[i] == 0 && ((var_list[i].endo_exo == 0 && check.determ) || var_list[i].endo_exo == 1))
+	    {
+	      if (flag)
+		{
+		  printf("WARNING: the following variables aren't initialized in ENDVAL and therefore set to 0\n");
+		  flag =  0;
+		}
+	      printf("\t%s\n",var_list[i].name);
+	    }
+	}
+              
+    }
+}
+
+void p_estimated_init(void)
+{
+  str_output("global estim_params_\n");
+  str_output("estim_params_.var_exo = [];\nestim_params_.var_endo = [];\nestim_params_.corrx = [];\nestim_params_.corrn = [];\nestim_params_.param_names = [];\nestim_params_.param_vals = [];\n");
+}
+
+void estim_params_init(void)
+{
+  estim_params.var_nbr = 0;
+  estim_params.param_name=strdup("");
+  estim_params.init_val=strdup("NaN");
+  estim_params.mean=strdup("NaN");
+  estim_params.std=strdup("NaN");
+  estim_params.prior=strdup("NaN");
+  estim_params.lb=strdup("-Inf");
+  estim_params.ub=strdup("Inf");
+  estim_params.p3=strdup("NaN");
+  estim_params.p4=strdup("NaN");
+  estim_params.jscale=strdup("NaN");
+}
+
+void p_estimated_elem(void)
+{
+      /* missing tests for arguments */
+  char buffer[2000];
+
+  if (estim_params.param_type == 1 && estim_params.var_type == 0)
+    {
+      str_output("estim_params_.var_exo = [estim_params_.var_exo; ");
+      sprintf(buffer," %d,",estim_params.var_nbr);
+      str_output(buffer);
+    }
+  else if(estim_params.param_type == 1 && estim_params.var_type == 1)
+    {
+      str_output("estim_params_.var_endo = [estim_params_.var_endo; ");
+      sprintf(buffer," %d,",estim_params.var_nbr);
+      str_output(buffer);
+    }
+  else if(estim_params.param_type == 2)
+    {
+      sprintf(buffer,"estim_params_.param_names = strvcat(estim_params_.param_names,'%s');\n",estim_params.param_name);
+      str_output(buffer);
+      str_output("estim_params_.param_vals = [estim_params_.param_vals;");
+    }
+  else if (estim_params.param_type == 3 && estim_params.var_type == 0)
+    {
+      str_output("estim_params_.corrx = [estim_params_.corrx; ");
+      sprintf(buffer," %d,",estim_params.var_nbr);
+      str_output(buffer);
+      sprintf(buffer," %d,",estim_params.var_nbr2);
+      str_output(buffer);
+    }
+  else if(estim_params.param_type == 3 && estim_params.var_type == 1)
+    {
+      str_output("estim_params_.corrn = [estim_params_.corrn; ");
+      sprintf(buffer," %d,",estim_params.var_nbr);
+      str_output(buffer);
+      sprintf(buffer," %d,",estim_params.var_nbr2);
+      str_output(buffer);
+    }
+  sprintf(buffer," %s",estim_params.init_val);
+  str_output(buffer);
+  sprintf(buffer,", %s",estim_params.lb);
+  str_output(buffer);
+  sprintf(buffer,", %s",estim_params.ub);
+  str_output(buffer);
+  sprintf(buffer,", %s",estim_params.prior);
+  str_output(buffer);
+  sprintf(buffer,", %s",estim_params.mean);
+  str_output(buffer);
+  sprintf(buffer,", %s",estim_params.std);
+  str_output(buffer);
+  sprintf(buffer,", %s",estim_params.p3);
+  str_output(buffer);
+  sprintf(buffer,", %s",estim_params.p4);
+  str_output(buffer);
+  sprintf(buffer,", %s",estim_params.jscale);
+  str_output(buffer);
+  str_output("];\n");
+}
+  
+void p_estimated_elem1(struct token* id_var, char* init_val, char* lo_bound, char* up_bound, char* prior, char* p1, char *p2, char* p3, char *p4, char* jscale)
+{
+  char buffer[2000];
+  if (id_var->endo_exo == 0)
+    {
+      /* missing tests for arguments */
+      sprintf(buffer,"estim_params_.var_exo = [estim_params_.var_exo; %d %s %s %s %s %s %s %s %s %s];\n",id_var->nbr+1,init_val, lo_bound, up_bound, prior, p1, p2, p3, p4, jscale);
+    }
+  else if(id_var->endo_exo == 1)
+    {
+      /* missing tests for arguments */
+      sprintf(buffer,"estim_params_.var_endo = [estim_params_.var_endo; %d %s %s %s %s %s %s %s %s %s];\n",id_var->nbr+1,init_val, lo_bound, up_bound, prior, p1, p2, p3, p4, jscale);
+    }
+  str_output(buffer);
+}
+ 
+void p_estimated_elem2(struct token* id_var1, struct token* id_var2, char* init_val, char* lo_bound, char* up_bound, char* prior, char* p1, char *p2, char* p3, char *p4, char* jscale)
+{
+  char buffer[2000];
+  /* missing tests for arguments */
+  if (id_var1->endo_exo == 0 && id_var2->endo_exo == 0)
+    {
+      sprintf(buffer,"estim_params_.corrx = [estim_params_.corrx; %d %d %s %s %s %s %s %s %s %s %s];\n",id_var1->nbr+1,id_var2->nbr+1,init_val, lo_bound, up_bound, prior, p1, p2, p3, p4, jscale);
+    }
+  else if (id_var1->endo_exo == 1 && id_var2->endo_exo == 1)
+    {
+      sprintf(buffer,"estim_params_.corrn = [estim_params_.corrn; %d %d %s %s %s %s %s %s %s %s %s];\n",id_var1->nbr+1,id_var2->nbr+1,init_val, lo_bound, up_bound, prior, p1, p2, p3, p4, jscale);
+    }
+  else
+    {
+      printf("Shocks and measurement errors can't be correlated\n");
+      exit(1);
+    }
+  str_output(buffer);
+}
+ 
+void p_estimated_elem3(struct token* id_var, char* init_val, char* lo_bound, char* up_bound, char* prior, char* p1, char *p2, char* p3, char *p4, char *jscale)
+{
+  char buffer[2000];
+  sprintf(buffer,"estim_params_.param_names = strvcat(estim_params_.param_names,'%s');\n",id_var->name);
+  str_output(buffer);
+  /* missing tests for arguments */
+  sprintf(buffer,"estim_params_.param_vals = [estim_params_.param_vals; %s %s %s %s %s %s %s %s %s];\n",init_val, lo_bound, up_bound, prior, p1, p2, p3, p4, jscale);
+  str_output(buffer);
+}
+ 
+void p_estimated_elem1a(struct token* id_var, char* prior, char* p1, char *p2, char* p3, char *p4, char* jscale)
+{
+  char buffer[2000];
+  if (id_var->endo_exo == 0)
+    {
+      /* missing tests for arguments */
+      sprintf(buffer,"estim_params_.var_exo = [estim_params_.var_exo; %d %s -Inf Inf %s %s %s %s %s %s];\n",id_var->nbr+1, p1, prior, p1, p2, p3, p4, jscale);
+    }
+  else if(id_var->endo_exo == 1)
+    {
+      /* missing tests for arguments */
+      sprintf(buffer,"estim_params_.var_endo = [estim_params_.var_endo; %d %s -Inf Inf %s %s %s %s %s %s];\n",id_var->nbr+1, p1, prior, p1, p2, p3, p4, jscale);
+    }
+  str_output(buffer);
+}
+ 
+void p_estimated_elem2a(struct token* id_var1, struct token* id_var2, char* prior, char* p1, char *p2, char* p3, char *p4, char* jscale)
+{
+  char buffer[2000];
+  /* missing tests for arguments */
+  if (id_var1->endo_exo == 0 && id_var2->endo_exo == 0)
+    {
+      sprintf(buffer,"estim_params_.corrx = [estim_params_.corrx; %d %d %s -Inf Inf %s %s %s %s %s %s];\n",id_var1->nbr+1,id_var2->nbr+1, p1, prior, p1, p2, p3, p4, jscale);
+    }
+  else if (id_var1->endo_exo == 1 && id_var2->endo_exo == 1)
+    {
+      sprintf(buffer,"estim_params_.corrn = [estim_params_.corrn; %d %d %s -Inf Inf %s %s %s %s %s %s];\n",id_var1->nbr+1,id_var2->nbr+1, p1, prior, p1, p2, p3, p4, jscale);
+    }
+  else
+    {
+      printf("Shocks and measurement errors can't be correlated\n");
+      exit(1);
+    }
+  str_output(buffer);
+}
+ 
+void p_estimated_elem3a(struct token* id_var, char* prior, char* p1, char *p2, char* p3, char *p4, char *jscale)
+{
+  char buffer[2000];
+  sprintf(buffer,"estim_params_.param_names = strvcat(estim_params_.param_names,'%s');\n",id_var->name);
+  str_output(buffer);
+  /* missing tests for arguments */
+  sprintf(buffer,"estim_params_.param_vals = [estim_params_.param_vals; %s -Inf Inf %s %s %s %s %s %s];\n", p1, prior, p1, p2, p3, p4, jscale);
+  str_output(buffer);
+}
+
+void p_estimated_init_elem1(struct token* id_var, char* value)
+{
+  char buffer[2000];
+  if (id_var->endo_exo == 0)
+    {
+      /* missing tests for arguments */
+      sprintf(buffer,"tmp1 = find(estim_params_.var_exo(:,1)==%d);\nestim_params_.var_exo(tmp1,2) = %s;\n",id_var->nbr+1,value);
+    }
+  else if(id_var->endo_exo == 1)
+    {
+      /* missing tests for arguments */
+      sprintf(buffer,"tmp1 = find(estim_params_.var_endo(:,1)==%d);\nestim_params_.var_endo(tmp1,2) = %s;\n",id_var->nbr+1,value);
+    }
+  str_output(buffer);
+}
+ 
+void p_estimated_init_elem2(struct token* id_var1, struct token* id_var2, char* value)
+{
+  char buffer[2000];
+  /* missing tests for arguments */
+  if (id_var1->endo_exo == 0 && id_var2->endo_exo == 0)
+    {
+      sprintf(buffer,"tmp1 = find(estim_params_.corrx(:,1)==%d & estim_params.corrx(:,2)==%d);\nestim_params_.corrx(tmp1,3) = %s;\n",id_var1->nbr+1,id_var2->nbr+1,value);
+    }
+  else if (id_var1->endo_exo == 1 && id_var2->endo_exo == 1)
+    {
+      sprintf(buffer,"tmp1 = find(estim_params_.corrn(:,1)==%d & estim_params.corrn(:,2)==%d);\nestim_params_.corrn(tmp1,3) = %s;\n",id_var1->nbr+1,id_var2->nbr+1,value);
+    }
+  else
+    {
+      printf("Shocks and measurement errors can't be correlated\n");
+      exit(1);
+    }
+  str_output(buffer);
+}
+ 
+void p_estimated_init_elem3(struct token* id_var, char* value)
+{
+  char buffer[2000];
+  /* missing tests for arguments */
+  sprintf(buffer,"tmp1 = strmatch('%s',estim_params_.param_names,'exact');\nestim_params_.param_vals(tmp1,1) = %s;\n",id_var->name,value);
+  str_output(buffer);
+}
+ 
+void p_estimated_bounds_elem1(struct token* id_var, char* value1, char* value2)
+{
+  char buffer[2000];
+  if (id_var->endo_exo == 0)
+    {
+      /* missing tests for arguments */
+      sprintf(buffer,"tmp1 = find(estim_params_.var_exo(:,1)==%d);\nestim_params_.var_exo(tmp1,3) = %s;\nestim_params_.var_exo(tmp1,4) = %s;\n",id_var->nbr+1,value1,value2);
+    }
+  else if(id_var->endo_exo == 1)
+    {
+      /* missing tests for arguments */
+      sprintf(buffer,"tmp1 = find(estim_params_.var_endo(:,1)==%d);\nestim_params_.var_endo(tmp1,3) = %s;\nestim_params_.var_endo(tmp1,4) = %s;\n",id_var->nbr+1,value1,value2);
+    }
+  str_output(buffer);
+}
+ 
+void p_estimated_bounds_elem2(struct token* id_var1, struct token* id_var2, char* value1, char* value2)
+{
+  char buffer[2000];
+  /* missing tests for arguments */
+  if (id_var1->endo_exo == 0 && id_var2->endo_exo == 0)
+    {
+      sprintf(buffer,"tmp1 = find(estim_params_.corrx(:,1)==%d & estim_params.corrx(:,2)==%d);\nestim_params_.corrx(tmp1,4) = %s;\nestim_params_.corrx(tmp1,5) = %s;\n",id_var1->nbr+1,id_var2->nbr+1,value1,value2);
+    }
+  else if (id_var1->endo_exo == 1 && id_var2->endo_exo == 1)
+    {
+      sprintf(buffer,"tmp1 = find(estim_params_.corrn(:,1)==%d & estim_params.corrn(:,2)==%d);\nestim_params_.corrn(tmp1,4) = %s;\nestim_params_.corrn(tmp1,5) = %s;\n",id_var1->nbr+1,id_var2->nbr+1,value1,value2);
+    }
+  else
+    {
+      printf("Shocks and measurement errors can't be correlated\n");
+      exit(1);
+    }
+  str_output(buffer);
+}
+ 
+void p_estimated_bounds_elem3(struct token* id_var, char* value1, char* value2)
+{
+  char buffer[2000];
+  /* missing tests for arguments */
+  sprintf(buffer,"tmp1 = strmatch('%s',estim_params_.param_names,'exact');\nestim_params_.param_vals(tmp1,2) = %s;\nestim_params_.param_vals(tmp1,3) = %s;\n",id_var->name,value1,value2);
+  str_output(buffer);
+}
+ 
+void p_trend_init()
+{
+  str_output("trend_coeff_ = {};\n");
+}
+
+void p_trend_element(struct token* id_var, struct queue* expression)
+{
+  char buffer[20000];
+  struct token** p_t;
+  int j;
+
+  sprintf(buffer,"tmp1 = strmatch('%s',options_.varobs,'exact');\n",id_var->var_ptr->name);
+  str_output(buffer);
+  sprintf(buffer,"trend_coeff_{tmp1} = sprintf('");
+  p_t=(struct token **)expression->ptr;
+  for (j=0;j < expression->imax;j++)
+    {
+      strcat(buffer,(*p_t)->name);
+      ++p_t;
+    }
+  strcat(buffer,"');");
+  str_output(buffer);
+}
+
+void p_estimation(void)
+{
+  char buffer[2000];
+  int i;
+#ifdef SCILAB
+  str_output("global ");
+  for(i=0;i < var_nbr; i++)
+    {
+      if (var_list[i].endo_exo == 1)
+	{
+	  str_output(var_list[i].name);
+	  str_output(" ");
+	}
+    }
+  str_output("\n");
+#endif
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = [];\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  str_output("dynare_estimation(var_list_);\n");
+#endif
+}
+
+void print_varobs(void)
+{
+  int i;
+  char buffer[2000];
+  str_output("options_.varobs = [];\n");
+  for(i=0; i < nbr_tmpvar; i +=2)
+    {
+      sprintf(buffer,"options_.varobs = strvcat(options_.varobs,'%s');\n",tmpvar_list[i]);
+      str_output(buffer);
+    }
+}
+
+void print_unit_root_vars(void)
+{
+  int i;
+  char buffer[2000];
+  str_output("options_.unit_root_vars = {");
+  for(i=0; i < nbr_tmpvar; i +=2)
+    {
+      if (i != 0)
+	{
+	  str_output("; ");
+	}
+      sprintf(buffer,"'%s'",tmpvar_list[i]);
+      str_output(buffer);
+    }
+  str_output("};\n");
+}
+
+void p_optim_options(char* str1, char* str2, int task)
+{
+  static char optim_string[2000];
+  static int start;
+  switch(task){
+  case 1:
+    strcpy(optim_string,"options_.optim_opt = '");
+    start = 0;
+    return;
+  case 2:
+    if (start > 0)
+      {
+	strcat(optim_string,",");
+      }
+    else
+      {
+	start = 1;
+      }
+    strcat(optim_string,"''");
+    strcat(optim_string,str1);
+    strcat(optim_string,"'',");
+    if (str2[0] >= 'A' && str2[0] <= 'z')
+      {
+	strcat(optim_string,"''");
+	strcat(optim_string,str2);
+	strcat(optim_string,"''");
+      }
+    else
+      {
+	strcat(optim_string,str2);
+      }
+    return;
+  case 3:
+    strcat(optim_string,"';\n");
+    str_output(optim_string);
+  }
+}
+
+char* my_strcat(char* s1, char* s2)
+{
+  char* result;
+  result = calloc(strlen(s1)+strlen(s2),1);
+  strcpy(result,s1);
+  strcat(result,s2);
+  return result;
+}
+
+void set_options(int argc, char** argv,struct s_runtime_options* runtime_options)
+{
+  int i;
+  
+  /* default values */
+
+  runtime_options->clearall = 1;
+  runtime_options->debug = 0;
+
+
+  /* runtime arguments */
+  for (i=2; i < argc; ++i)
+    {
+      if (strcasecmp(argv[i],"NOCLEARALL") == 0)
+	{
+	  runtime_options->clearall = 0;
+	}
+      if (strcasecmp(argv[i],"DEBUG") == 0)
+	{
+	  runtime_options->debug = 1;
+	}
+    }
+}
+
+void p_model_comparison(int flag_model_prior)
+{
+  int i;
+  char buffer[2000];
+  str_output("ModelNames_ = {");
+  for(i=0; i < nbr_tmpvar; i +=2)
+    {
+      if (i != 0)
+	{
+	  str_output("; ");
+	}
+      sprintf(buffer,"'%s'",tmpvar_list[i]);
+      str_output(buffer);
+    }
+  str_output("};\n");
+  str_output("ModelPriors_ = [");
+  if (flag_model_prior)
+    {
+      for(i=1; i < nbr_tmpvar; i +=2)
+	{
+	  if (i != 0)
+	    {
+	      str_output("; ");
+	  }
+	  sprintf(buffer,"%s",tmpvar_list[i]);
+	  str_output(buffer);
+	}
+    }
+  str_output("];\n");
+  str_output("model_comparison(ModelNames_,ModelPriors_);\n");
+}
+
+void p_forecast()
+{
+  char buffer[2000];
+  int i;
+#ifdef SCILAB
+  str_output("global ");
+  for(i=0;i < var_nbr; i++)
+    {
+      if (var_list[i].endo_exo == 1)
+	{
+	  str_output(var_list[i].name);
+	  str_output(" ");
+	}
+    }
+  str_output("\n");
+#endif
+#if defined MATLAB || defined SCILAB
+  if (nbr_tmpvar == 0)
+    {
+      str_output("var_list_ = [];\n");
+    }
+  else
+    {
+      strcpy(buffer,"var_list_ = '");
+      strcat(buffer,tmpvar_list[0]);
+      strcat(buffer,"';\n");
+      for(i=2;i<nbr_tmpvar;i+=2)
+	{
+#ifdef MATLAB
+	  strcat(buffer,"var_list_ = str2mat(var_list_,'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"');\n");
+#else
+	  strcat(buffer,"var_list_ = [var_list_;'");
+	  strcat(buffer,tmpvar_list[i]);
+	  strcat(buffer,"'];\n");
+#endif
+	}
+      str_output(buffer);
+    }
+  str_output("forecast(var_list_);\n");
+#endif
+}
+
+/*
+02/22/01 MJ added test for nbr of equations != nbr endogenous variables
+            replaced stderr_ by Sigma_e_
+02/23/01 MJ added global statement for all endogenous variables before 
+            stoch_simul in MATLAB version
+	    added p_dsample
+02/28/01 MJ added "clear all" on top of MATLAB file
+            corrected expression for Sigma_e_ in p_shocks
+09/25/01 MJ added Scilab code
+09/26/01 MJ added p_keyword
+04/05/02 MJ corrected all compile warnings except m_del and \0 in format
+04/06/02 MJ added p_optim_weights() p_optim_weights_init() p_expression()
+            p_osr_params() p_osr()
+            LEFT_PAREN RIGHT_PAREN OPEN_COMMENTS CLOSE_COMMENTS
+10/09/02 MJ added p_calib_init() p_calib_var() p_calib()
+            removed ";\n" from p_expression, corrected calling functions
+10/20/02 MJ added automatic diary main() dynare_init()
+01/16/03 MJ corrected bug in dyn2vec without argument
+04/02/03 MJ added p_steady_linear()
+            now ys_,exe_,exe_stoch_ are set in print_model() instead of 
+	    p_initval()
+04/28/03 MJ added p_option() and changed handling of options
+05/02/03 MJ added p_olr(), p_olr_inst(), p_olr_inst_init()
+            modified p_optim_weights1() and added p_optim_weights2()
+05/18/03 MJ removed p_keyword(), modified p_steady() and p_steady_linear() 
+            added p_check(); 
+05/26/03 MJ added struct check and run_checks()
+05/29/03 MJ p_shocks write set_shocks(flag,periods,ivar,values)
+06/23/03 MJ added estimated_params and estimation
+07/25/03 MJ added test for no exogenous for GAUSS version
+10/31/03 MJ added oo for output variables
+*/
diff --git a/tags/v_3.062/parser.src/makefile b/tags/v_3.062/parser.src/makefile
new file mode 100644
index 0000000000..1e3263de2a
--- /dev/null
+++ b/tags/v_3.062/parser.src/makefile
@@ -0,0 +1,56 @@
+all: dynare_m.exe dynare_s.exe dynare_g.exe dynare_OxPro.exe dynare_Oxcons.exe
+
+precompiler.o: precompiler.cc precompiler.hh d_ll.c d_tab.c
+	g++ -mno-cygwin -c precompiler.cc
+
+dynare_mb: dynare_m.o
+	gcc -mno-cygwin -g -o dynare_m.exe dynare_m.o d_tab.o d_ll.o -lefence
+dynare_m.exe: dynare_m.o d_tab.o d_ll.o precompiler.o
+	gcc -mno-cygwin -g -o dynare_m.exe dynare_m.o d_tab.o d_ll.o precompiler.o -lstdc++
+	cp dynare_m.exe ../matlab
+
+dynare_m.o: dynare.c d.h d_tab.h
+	gcc -mno-cygwin -g  -c dynare.c -o dynare_m.o -DMATLAB -Wall #-DDEBUG
+
+dynare_s.exe: dynare_s.o d_tab.o d_ll.o
+	gcc -mno-cygwin -g  -o dynare_s.exe dynare_s.o d_tab.o d_ll.o
+	cp dynare_s.exe ../scilab
+
+dynare_s.o: dynare.c d.h d_tab.h
+	gcc -mno-cygwin -g  -c dynare.c -o dynare_s.o -DSCILAB -Wall
+
+dynare_g.exe: dynare_g.o d_tab.o d_ll.o
+	gcc -mno-cygwin -g  -o dynare_g.exe dynare_g.o d_tab.o d_ll.o
+	cp dynare_g.exe ../gauss
+
+dynare_g.o: dynare.c d.h d_tab.h
+	gcc -mno-cygwin -g  -c dynare.c -o dynare_g.o -DGAUSS -Wall #-DDEBUG
+
+dynare_OxPro.exe: dynare_OxPro.o d_tab.o d_ll.o
+	gcc -mno-cygwin -g  -o dynare_OxPro.exe dynare_OxPro.o d_tab.o d_ll.o
+	cp dynare_OxPro.exe ../gauss
+
+dynare_OxPro.o: dynare.c d.h d_tab.h
+	gcc -mno-cygwin -g  -c dynare.c -o dynare_OxPro.o -DGAUSS -DOXGAUSS -Wall
+
+dynare_Oxcons.exe: dynare_Oxcons.o d_tab.o d_ll.o
+	gcc -mno-cygwin -g  -o dynare_Oxcons.exe dynare_Oxcons.o d_tab.o d_ll.o
+	cp dynare_Oxcons.exe ../gauss
+
+dynare_Oxcons.o: dynare.c d.h d_tab.h
+	gcc -mno-cygwin -g  -c dynare.c -o dynare_Oxcons.o -DGAUSS -DOXGAUSS -DOXGAUSS_GNU -Wall
+
+d_ll.o: d_ll.c d_tab.h
+	gcc -mno-cygwin -g -c d_ll.c
+
+
+d_tab.o: d_tab.c
+	gcc -mno-cygwin -g -c -DYYDEBUG=1 d_tab.c
+
+d_tab.c d_tab.h: d.y d.h
+	bison -d --verbose -od_tab.c d.y
+
+d_ll.c: dyn.l d_tab.h
+	flex -i -od_ll.c dyn.l
+
+
diff --git a/tags/v_3.062/parser.src/makefile.linux b/tags/v_3.062/parser.src/makefile.linux
new file mode 100644
index 0000000000..107217ddd8
--- /dev/null
+++ b/tags/v_3.062/parser.src/makefile.linux
@@ -0,0 +1,57 @@
+all: dynare_m
+
+precompiler.o: precompiler.cc precompiler.hh d_ll.c d_tab.c
+	g++ -g -c precompiler.cc
+
+dynare_mb: dynare_m.o
+	gcc  -g -o dynare_m.exe dynare_m.o d_tab.o d_ll.o -lefence
+
+dynare_m: dynare_m.o d_tab.o d_ll.o precompiler.o
+	gcc  -g -o dynare_m dynare_m.o d_tab.o d_ll.o precompiler.o -lstdc++
+	cp dynare_m ../matlab
+
+dynare_m.o: dynare.c d.h d_tab.h
+	gcc  -g  -c dynare.c -o dynare_m.o -DMATLAB -Wall #-DDEBUG
+
+dynare_s: dynare_s.o d_tab.o d_ll.o
+	gcc -g  -o dynare_s dynare_s.o d_tab.o d_ll.o
+	cp dynare_s ../scilab
+
+dynare_s.o: dynare.c d.h d_tab.h
+	gcc -g  -c dynare.c -o dynare_s.o -DSCILAB -Wall
+
+dynare_g.exe: dynare_g.o d_tab.o d_ll.o
+	gcc  -g  -o dynare_g.exe dynare_g.o d_tab.o d_ll.o
+	cp dynare_g.exe ../gauss
+
+dynare_g.o: dynare.c d.h d_tab.h
+	gcc  -g  -c dynare.c -o dynare_g.o -DGAUSS -Wall #-DDEBUG
+
+dynare_OxPro.exe: dynare_OxPro.o d_tab.o d_ll.o
+	gcc  -g  -o dynare_OxPro.exe dynare_OxPro.o d_tab.o d_ll.o
+	cp dynare_OxPro.exe ../gauss
+
+dynare_OxPro.o: dynare.c d.h d_tab.h
+	gcc  -g  -c dynare.c -o dynare_OxPro.o -DGAUSS -DOXGAUSS -Wall
+
+dynare_Oxcons.exe: dynare_Oxcons.o d_tab.o d_ll.o
+	gcc  -g  -o dynare_Oxcons.exe dynare_Oxcons.o d_tab.o d_ll.o
+	cp dynare_Oxcons.exe ../gauss
+
+dynare_Oxcons.o: dynare.c d.h d_tab.h
+	gcc  -g  -c dynare.c -o dynare_Oxcons.o -DGAUSS -DOXGAUSS -DOXGAUSS_GNU -Wall
+
+d_ll.o: d_ll.c d_tab.h
+	gcc  -g -c d_ll.c
+
+
+d_tab.o: d_tab.c
+	gcc  -g -c -DYYDEBUG=1 d_tab.c
+
+d_tab.c d_tab.h: d.y d.h
+	bison -d --verbose -od_tab.c d.y
+
+d_ll.c: dyn.l d_tab.h
+	flex -i -od_ll.c dyn.l
+
+
diff --git a/tags/v_3.062/parser.src/precompiler.cc b/tags/v_3.062/parser.src/precompiler.cc
new file mode 100644
index 0000000000..7a99e5e91e
--- /dev/null
+++ b/tags/v_3.062/parser.src/precompiler.cc
@@ -0,0 +1,180 @@
+#include <map>
+#include <stack>
+#include <iostream>
+
+#include "precompiler.hh"
+
+extern "C" void start_skipping(void);
+extern "C" void pop_flex_state(void);
+
+static precompiler dyn_pc;
+
+void precompiler::comp_define(std::string name, std::string integer)
+{
+  // go back to previous state before @define
+  pop_flex_state();
+
+  if (dyn_pc.macros.find(name) != dyn_pc.macros.end())
+    {
+      std::cout << "Warning: symbol " << name << " redefined" << "\n";
+    }
+  dyn_pc.macros[name]=std::atoi(integer.c_str());
+}
+
+void precompiler::comp_if(std::string name, std::string op, std::string integer)
+{
+  //go back to previous state before @if
+  pop_flex_state();
+
+  dyn_pc.precompiler_state.push(dyn_pc.current_state);
+  dyn_pc.previous_skip_else.push(dyn_pc.skip_else);
+
+  bool state;
+  int value = atoi(integer.c_str());
+
+  if ( op == "==" )
+    {
+      state = (dyn_pc.macros[name] == value);
+    }
+  else if ( op == "!=" )
+    {
+      state = (dyn_pc.macros[name] != value);
+    }
+  else if ( op == "<" )
+    {
+      state = (dyn_pc.macros[name] < value);
+    }
+  else if ( op == ">" )
+    {
+      state = (dyn_pc.macros[name] > value);
+    }
+  else if ( op == "<=" )
+    {
+      state = (dyn_pc.macros[name] <= value);
+    }
+  else if ( op == ">=" )
+    {
+      state = (dyn_pc.macros[name] >= value);
+    }
+  else
+    {
+      std::cout << "Precompiler: unkown operator";
+    }
+
+  dyn_pc.precompiler_state.push(dyn_pc.current_state);
+  if ( dyn_pc.current_state == true && state == false)
+    {
+      start_skipping();
+    }
+
+  // it is possible to skip following else and elseif statements
+  // if the previous state is already false (skipping is on)
+  dyn_pc.skip_else = (dyn_pc.current_state) ? false : true;
+  dyn_pc.current_state = state && dyn_pc.current_state;
+
+}
+  
+void precompiler::comp_elseif(std::string name, std::string op, std::string integer)
+{
+  // go back to previous state before @elseif
+  pop_flex_state();
+
+  if (dyn_pc.skip_else)
+    {
+      return;
+    }
+
+  if (dyn_pc.current_state)
+    {
+      start_skipping();
+      dyn_pc.current_state = false;
+      dyn_pc.skip_else = true;
+    }
+  
+  bool state;
+  int value = atoi(integer.c_str());
+
+  if ( op == "==" )
+    {
+      state = (dyn_pc.macros[name] == value);
+    }
+  else if ( op == "!=" )
+    {
+      state = (dyn_pc.macros[name] != value);
+    }
+  else if ( op == "<" )
+    {
+      state = (dyn_pc.macros[name] < value);
+    }
+  else if ( op == ">" )
+    {
+      state = (dyn_pc.macros[name] > value);
+    }
+  else if ( op == "<=" )
+    {
+      state = (dyn_pc.macros[name] <= value);
+    }
+  else if ( op == ">=" )
+    {
+      state = (dyn_pc.macros[name] >= value);
+    }
+  else
+    {
+      std::cout << "Precompiler: unkown operator";
+    }
+
+  if (state)
+    {
+      pop_flex_state();
+      dyn_pc.current_state = true;
+    }
+}
+
+void precompiler::comp_else(void)
+{
+  if (dyn_pc.skip_else)
+    {
+      return;
+    }
+
+  if (dyn_pc.current_state)
+    {
+      start_skipping();
+      dyn_pc.current_state = false;
+      dyn_pc.skip_else = true;
+    }
+  else  
+    {
+      pop_flex_state();
+      dyn_pc.current_state = true;
+    }
+}  
+
+void precompiler::comp_endif(void)
+{
+  if (!dyn_pc.current_state && dyn_pc.precompiler_state.top())
+    {
+      pop_flex_state();
+    }
+
+  dyn_pc.precompiler_state.pop();
+  dyn_pc.current_state = dyn_pc.precompiler_state.top();
+
+  dyn_pc.previous_skip_else.pop();
+  dyn_pc.skip_else = dyn_pc.previous_skip_else.top();
+}
+
+
+extern "C" void compile_define(char* name, char* integer)
+                                   { dyn_pc.comp_define(name, integer); }
+
+extern "C" void compile_if(char* name, char* op, char* integer)
+                                   { dyn_pc.comp_if(name,op,integer);}
+
+extern "C" void compile_elseif(char* name, char* op, char* integer)
+                                   { dyn_pc.comp_elseif(name,op,integer);}
+
+extern "C" void compile_else(void) { dyn_pc.comp_else();}
+
+extern "C" void compile_endif(void) { dyn_pc.comp_endif();}
+
diff --git a/tags/v_3.062/parser.src/precompiler.hh b/tags/v_3.062/parser.src/precompiler.hh
new file mode 100644
index 0000000000..d2d3f78e08
--- /dev/null
+++ b/tags/v_3.062/parser.src/precompiler.hh
@@ -0,0 +1,31 @@
+#include<string>
+
+class precompiler {
+  std::map<std::string,int> macros;
+  std::stack<bool> precompiler_state;
+  std::stack<bool> previous_skip_else;
+  bool current_state;
+  bool skip_else;
+public:
+  precompiler() 
+  {
+    current_state = true;
+    skip_else = false;
+    precompiler_state.push(current_state);
+    previous_skip_else.push(skip_else);
+  }
+
+  void comp_define(std::string name, std::string integer);
+  void comp_if(std::string name, std::string op, std::string integer);
+  void comp_elseif(std::string name, std::string op, std::string integer);
+  void comp_else(void);
+  void comp_endif(void);
+};
+
+extern "C" void compile_define(char* name, char* integer);
+extern "C" void compile_if(char* name, char* op, char* integer);
+extern "C" void compile_elseif(char* name, char* op, char* integer);
+extern "C" void compile_else(void);
+extern "C" void compile_endif(void);
+
+
diff --git a/tags/v_3.062/tests/arima/mod1.mod b/tags/v_3.062/tests/arima/mod1.mod
new file mode 100644
index 0000000000..7a8dabf2b5
--- /dev/null
+++ b/tags/v_3.062/tests/arima/mod1.mod
@@ -0,0 +1,23 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y;
+
+rho_x = 0.5;
+rho_y = -0.3;
+
+model;
+dx = rho_x*dx(-1)+e_x;
+dy = rho_y*dy(-1)+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+shocks;
+var e_x; stderr 0.01;
+var e_y; stderr 0.01;
+end;
+
+stoch_simul(order=1,periods=1000,irf=0,nomoments);
+
+save data1 dx dy x y;
\ No newline at end of file
diff --git a/tags/v_3.062/tests/arima/mod1a.mod b/tags/v_3.062/tests/arima/mod1a.mod
new file mode 100644
index 0000000000..9f63405d7c
--- /dev/null
+++ b/tags/v_3.062/tests/arima/mod1a.mod
@@ -0,0 +1,23 @@
+var dx dy;
+varexo e_x e_y;
+
+parameters rho_x rho_y;
+
+rho_x = 0.5;
+rho_y = -0.3;
+
+model;
+dx = rho_x*dx(-1)+e_x;
+dy = rho_y*dy(-1)+e_y;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs dx dy;
+check;
+estimation(datafile=data1,nobs=1000,mh_replic=2000);
\ No newline at end of file
diff --git a/tags/v_3.062/tests/arima/mod1b.mod b/tags/v_3.062/tests/arima/mod1b.mod
new file mode 100644
index 0000000000..94b55f1482
--- /dev/null
+++ b/tags/v_3.062/tests/arima/mod1b.mod
@@ -0,0 +1,25 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y;
+
+rho_x = 0.5;
+rho_y = -0.3;
+
+model;
+dx = rho_x*dx(-1)+e_x;
+dy = rho_y*dy(-1)+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs x y;
+unit_root_vars  x y;
+estimation(datafile=data1,nobs=1000,mh_replic=10000);
\ No newline at end of file
diff --git a/tags/v_3.062/tests/arima/mod1c.mod b/tags/v_3.062/tests/arima/mod1c.mod
new file mode 100644
index 0000000000..a77478a856
--- /dev/null
+++ b/tags/v_3.062/tests/arima/mod1c.mod
@@ -0,0 +1,27 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y;
+
+rho_x = 0.5;
+rho_y = -0.3;
+
+model;
+dx = rho_x*dx(-1)+e_x;
+dy = rho_y*dy(-1)+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+stderr x,INV_GAMMA_PDF,0.01,inf;
+stderr y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs x y;
+options_.unit_root_vars = {'x'; 'y'};
+estimation(datafile=data1,nobs=1000,mh_replic=2000,lik_init=2);
\ No newline at end of file
diff --git a/tags/v_3.062/tests/arima/mod2.mod b/tags/v_3.062/tests/arima/mod2.mod
new file mode 100644
index 0000000000..c84df18928
--- /dev/null
+++ b/tags/v_3.062/tests/arima/mod2.mod
@@ -0,0 +1,26 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y b a1 a2;
+
+rho_x = 0.5;
+rho_y = -0.3;
+b = 1;
+a1 = -0.1;
+a2 = 0.2;
+
+model;
+dx = rho_x*dx(-1)+a1*(x(-1)-b*y(-1))+e_x;
+dy = rho_y*dy(-1)+a2*(x(-1)-b*y(-1))+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+shocks;
+var e_x; stderr 0.01;
+var e_y; stderr 0.01;
+end;
+
+stoch_simul(order=1,periods=1000,irf=0,nomoments);
+
+save data2 dx dy x y;
\ No newline at end of file
diff --git a/tags/v_3.062/tests/arima/mod2a.mod b/tags/v_3.062/tests/arima/mod2a.mod
new file mode 100644
index 0000000000..9414afa902
--- /dev/null
+++ b/tags/v_3.062/tests/arima/mod2a.mod
@@ -0,0 +1,33 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y b a1 a2;
+
+rho_x = 0.5;
+rho_y = -0.3;
+b = 1;
+a1 = -0.1;
+a2 = 0.2;
+
+model;
+dx = rho_x*dx(-1)+a1*(x(-1)-b*y(-1))+e_x;
+dy = rho_y*dy(-1)+a2*(x(-1)-b*y(-1))+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+b,NORMAL_PDF,1,0.1;
+a1,NORMAL_PDF,-0.1,0.1;
+a2,NORMAL_PDF,0.2,0.1;
+
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs dx dy;
+
+options_.unit_root_vars = {'x'; 'y'};
+estimation(datafile=data2,nobs=100,mh_replic=0,lik_init=2);
diff --git a/tags/v_3.062/tests/arima/mod2b.mod b/tags/v_3.062/tests/arima/mod2b.mod
new file mode 100644
index 0000000000..d2465a22c3
--- /dev/null
+++ b/tags/v_3.062/tests/arima/mod2b.mod
@@ -0,0 +1,33 @@
+var dx dy x y;
+varexo e_x e_y;
+
+parameters rho_x rho_y b a1 a2;
+
+rho_x = 0.5;
+rho_y = -0.3;
+b = 1;
+a1 = -0.1;
+a2 = 0.2;
+
+model;
+dx = rho_x*dx(-1)+a1*(x(-1)-b*y(-1))+e_x;
+dy = rho_y*dy(-1)+a2*(x(-1)-b*y(-1))+e_y;
+x = x(-1)+dx;
+y = y(-1)+dy;
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+b,NORMAL_PDF,1,0.1;
+a1,NORMAL_PDF,-0.1,0.1;
+a2,NORMAL_PDF,0.2,0.1;
+
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs x y;
+
+options_.unit_root_vars = {'x'; 'y'};
+estimation(datafile=data2,nobs=100,mh_replic=0,lik_init=2);
diff --git a/tags/v_3.062/tests/arima/mod2c.mod b/tags/v_3.062/tests/arima/mod2c.mod
new file mode 100644
index 0000000000..8ce2cae8ef
--- /dev/null
+++ b/tags/v_3.062/tests/arima/mod2c.mod
@@ -0,0 +1,31 @@
+var dx dy coint_err;
+varexo e_x e_y;
+
+parameters rho_x rho_y b a1 a2;
+
+rho_x = 0.5;
+rho_y = -0.3;
+b = 1;
+a1 = -0.1;
+a2 = 0.2;
+
+model;
+dx = rho_x*dx(-1)+a1*coint_err(-1)+e_x;
+dy = rho_y*dy(-1)+a2*coint_err(-1)+e_y;
+coint_err = dx-b*dy+coint_err(-1);
+end;
+
+estimated_params;
+rho_x,NORMAL_PDF,0.5,0.1;
+rho_y,NORMAL_PDF,-0.3,0.1;
+b,NORMAL_PDF,1,0.1;
+a1,NORMAL_PDF,-0.1,0.1;
+a2,NORMAL_PDF,0.2,0.1;
+
+stderr e_x,INV_GAMMA_PDF,0.01,inf;
+stderr e_y,INV_GAMMA_PDF,0.01,inf;
+end;
+
+varobs dx dy;
+
+estimation(datafile=data2,nobs=100,mh_replic=0);
diff --git a/tags/v_3.062/tests/example1.mod b/tags/v_3.062/tests/example1.mod
new file mode 100644
index 0000000000..334ef7906a
--- /dev/null
+++ b/tags/v_3.062/tests/example1.mod
@@ -0,0 +1,44 @@
+// example 1 from Collard's guide to Dynare
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 5;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+shocks;
+var e; stderr 0.009;
+var u; stderr 0.009;
+var e, u = phi*0.009*0.009;
+end;
+
+stoch_simul(periods=2100);
diff --git a/tags/v_3.062/tests/example2.mod b/tags/v_3.062/tests/example2.mod
new file mode 100644
index 0000000000..e2c4eeb1b6
--- /dev/null
+++ b/tags/v_3.062/tests/example2.mod
@@ -0,0 +1,44 @@
+// example 2 from Collard's guide to Dynare
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau ;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+model;
+exp(c)*theta*exp(h)^(1+psi)=(1-alpha)*exp(y);
+exp(k) = beta*(((exp(b)*exp(c))/(exp(b(+1))*exp(c(+1))))
+         *(exp(b(+1))*alpha*exp(y(+1))+(1-delta)*exp(k)));
+exp(y) = exp(a)*(exp(k(-1))^alpha)*(exp(h)^(1-alpha));
+exp(k) = exp(b)*(exp(y)-exp(c))+(1-delta)*exp(k(-1));
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+
+initval;
+y = 0.1;
+c = -0.2;
+h = -1.2;
+k =  2.4;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+steady;
+
+shocks;
+var e = 0.009^2;
+var u = 0.009^2;
+end;
+
+stoch_simul(dr_algo=1,drop=200);
+
diff --git a/tags/v_3.062/tests/fs2000/fs2000.mod b/tags/v_3.062/tests/fs2000/fs2000.mod
new file mode 100644
index 0000000000..ef70275137
--- /dev/null
+++ b/tags/v_3.062/tests/fs2000/fs2000.mod
@@ -0,0 +1,89 @@
+// This file replicates the estimation of the CIA model from 
+// Frank Schorfheide (2000) "Loss function-based evaluation of DSGE models" 
+// Journal of  Applied Econometrics, 15, 645-670.
+// the data are the ones provided on Schorfheide's web site with the programs.
+// http://www.econ.upenn.edu/~schorf/programs/dsgesel.ZIP
+// You need to have fsdat.m in the same directory as this file.
+// This file replicates: 
+// -the posterior mode as computed by Frank's Gauss programs
+// -the parameter mean posterior estimates reported in the paper
+// -the model probability (harmonic mean) reported in the paper
+// This file was tested with dyn_mat_test_0218.zip
+// the smooth shocks are probably stil buggy
+//
+// The equations are taken from J. Nason and T. Cogley (1994) 
+// "Testing the implications of long-run neutrality for monetary business
+// cycle models" Journal of Applied Econometrics, 9, S37-S70.
+// Note that there is an initial minus sign missing in equation (A1), p. S63.
+//
+// Michel Juillard, February 2004
+
+var m P c e W R k d n l gy_obs gp_obs y dA;
+varexo e_a e_m;
+
+parameters alp bet gam mst rho psi del;
+
+alp = 0.33;
+bet = 0.99;
+gam = 0.003;
+mst = 1.011;
+rho = 0.7;
+psi = 0.787;
+del = 0.02;
+
+model;
+dA = exp(gam+e_a);
+log(m) = (1-rho)*log(mst) + rho*log(m(-1))+e_m;
+-P/(c(+1)*P(+1)*m)+bet*P(+1)*(alp*exp(-alp*(gam+log(e(+1))))*k^(alp-1)*n(+1)^(1-alp)+(1-del)*exp(-(gam+log(e(+1)))))/(c(+2)*P(+2)*m(+1))=0;
+W = l/n;
+-(psi/(1-psi))*(c*P/(1-n))+l/n = 0;
+R = P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(-alp)/W;
+1/(c*P)-bet*P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)/(m*l*c(+1)*P(+1)) = 0;
+c+k = exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)+(1-del)*exp(-(gam+e_a))*k(-1);
+P*c = m;
+m-1+d = l;
+e = exp(e_a);
+y = k(-1)^alp*n^(1-alp)*exp(-alp*(gam+e_a));
+gy_obs = dA*y/y(-1);
+gp_obs = (p/p(-1))*m(-1)/dA;
+end;
+
+initval;
+k = 6;
+m = mst;
+P = 2.25;
+c = 0.45;
+e = 1;
+W = 4;
+R = 1.02;
+d = 0.85;
+n = 0.19;
+l = 0.86;
+y = 0.6;
+gy_obs = exp(gam);
+gp_obs = exp(-gam); 
+dA = exp(gam);
+end;
+
+shocks;
+var e_a; stderr 0.014;
+var e_m; stderr 0.005;
+end;
+
+steady;
+
+estimated_params;
+alp, beta_pdf, 0.356, 0.02; 
+bet, beta_pdf, 0.993, 0.002;
+gam, normal_pdf, 0.0085, 0.003;
+mst, normal_pdf, 1.0002, 0.007;
+rho, beta_pdf, 0.129, 0.223;
+psi, beta_pdf, 0.65, 0.05;
+del, beta_pdf, 0.01, 0.005;
+stderr e_a, inv_gamma_pdf, 0.035449, inf;
+stderr e_m, inv_gamma_pdf, 0.008862, inf;
+end;
+
+varobs gp_obs gy_obs;
+
+estimation(datafile=fsdat,nobs=192,loglinear,mh_replic=2000,mh_nblocks=2,mh_jscale=0.8);
\ No newline at end of file
diff --git a/tags/v_3.062/tests/fs2000/fs2000a.mod b/tags/v_3.062/tests/fs2000/fs2000a.mod
new file mode 100644
index 0000000000..f9593da2d9
--- /dev/null
+++ b/tags/v_3.062/tests/fs2000/fs2000a.mod
@@ -0,0 +1,103 @@
+// This file replicates the estimation of the CIA model from 
+// Frank Schorfheide (2000) "Loss function-based evaluation of DSGE models" 
+// Journal of  Applied Econometrics, 15, 645-670.
+// the data are the ones provided on Schorfheide's web site with the programs.
+// http://www.econ.upenn.edu/~schorf/programs/dsgesel.ZIP
+// You need to have fsdat.m in the same directory as this file.
+// This file replicates: 
+// -the posterior mode as computed by Frank's Gauss programs
+// -the parameter mean posterior estimates reported in the paper
+// -the model probability (harmonic mean) reported in the paper
+// This file was tested with dyn_mat_test_0218.zip
+// the smooth shocks are probably stil buggy
+//
+// The equations are taken from J. Nason and T. Cogley (1994) 
+// "Testing the implications of long-run neutrality for monetary business
+// cycle models" Journal of Applied Econometrics, 9, S37-S70.
+// Note that there is an initial minus sign missing in equation (A1), p. S63.
+//
+// Michel Juillard, February 2004
+
+var m P c e W R k d n l gy_obs gp_obs Y_obs P_obs y dA;
+varexo e_a e_m;
+
+parameters alp bet gam mst rho psi del;
+
+alp = 0.33;
+bet = 0.99;
+gam = 0.003;
+mst = 1.011;
+rho = 0.7;
+psi = 0.787;
+del = 0.02;
+
+model;
+dA = exp(gam+e_a);
+log(m) = (1-rho)*log(mst) + rho*log(m(-1))+e_m;
+-P/(c(+1)*P(+1)*m)+bet*P(+1)*(alp*exp(-alp*(gam+log(e(+1))))*k^(alp-1)*n(+1)^(1-alp)+(1-del)*exp(-(gam+log(e(+1)))))/(c(+2)*P(+2)*m(+1))=0;
+W = l/n;
+-(psi/(1-psi))*(c*P/(1-n))+l/n = 0;
+R = P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(-alp)/W;
+1/(c*P)-bet*P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)/(m*l*c(+1)*P(+1)) = 0;
+c+k = exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)+(1-del)*exp(-(gam+e_a))*k(-1);
+P*c = m;
+m-1+d = l;
+e = exp(e_a);
+y = k(-1)^alp*n^(1-alp)*exp(-alp*(gam+e_a));
+gy_obs = dA*y/y(-1);
+gp_obs = (p/p(-1))*m(-1)/dA;
+Y_obs/Y_obs(-1) = gy_obs;
+P_obs/P_obs(-1) = gp_obs;
+end;
+
+initval;
+k = 6;
+m = mst;
+P = 2.25;
+c = 0.45;
+e = 1;
+W = 4;
+R = 1.02;
+d = 0.85;
+n = 0.19;
+l = 0.86;
+y = 0.6;
+gy_obs = exp(gam);
+gp_obs = exp(-gam); 
+dA = exp(gam);
+end;
+
+shocks;
+var e_a; stderr 0.014;
+var e_m; stderr 0.005;
+end;
+
+steady;
+
+check;
+
+estimated_params;
+alp, beta_pdf, 0.356, 0.02; 
+bet, beta_pdf, 0.993, 0.002;
+gam, normal_pdf, 0.0085, 0.003;
+mst, normal_pdf, 1.0002, 0.007;
+rho, beta_pdf, 0.129, 0.223;
+psi, beta_pdf, 0.65, 0.05;
+del, beta_pdf, 0.01, 0.005;
+stderr e_a, inv_gamma_pdf, 0.035449, inf;
+stderr e_m, inv_gamma_pdf, 0.008862, inf;
+end;
+
+varobs P_obs Y_obs;
+
+observation_trends;
+P_obs (log(exp(gam)/mst));
+Y_obs (gam);
+end;
+
+options_.unit_root_vars = {'P_obs'; 'Y_obs'};
+
+//stoch_simul(order=1,nomoments,irf=0);
+//estimation(datafile=fsdat,nobs=192,loglinear,mh_replic=2000,mh_nblocks=2,mh_drop=0.45,smoother,forecast=5,bayesian_irf,moments_varendo,filtered_vars,load_mh_file,mode_compute=0,mode_file=fs2000a_mode,nodiagnostic) P_obs Y_obs gp_obs gy_obs c;
+//estimation(datafile=fsdat,nobs=192,loglinear,mh_replic=0,mh_nblocks=2,mh_drop=0.45,forecast=5,load_mh_file,mode_compute=0,mode_file=fs2000a_mode,nodiagnostic) P_obs Y_obs gp_obs gy_obs c;
+estimation(datafile=fsdat,nobs=192,loglinear,mh_replic=0,mh_nblocks=2,mh_drop=0.45,bayesian_irf,moments_varendo,load_mh_file,mode_compute=0,mode_file=fs2000a_mode,nodiagnostic) P_obs Y_obs gp_obs gy_obs c;
diff --git a/tags/v_3.062/tests/fs2000/fs2000a_steadystate.m b/tags/v_3.062/tests/fs2000/fs2000a_steadystate.m
new file mode 100644
index 0000000000..849c04b26d
--- /dev/null
+++ b/tags/v_3.062/tests/fs2000/fs2000a_steadystate.m
@@ -0,0 +1,53 @@
+% computes the steady state of fs2000 analyticaly
+% largely inspired by the program of F. Schorfheide
+function [ys,check] = fs2000a_steadystate(junk,ys)
+  global alp bet gam mst rho psi del;
+
+  check = 0;
+  
+  dA = exp(gam);
+  gst = 1/dA;
+  m = mst;
+  
+  khst = ( (1-gst*bet*(1-del)) / (alp*gst^alp*bet) )^(1/(alp-1));
+  xist = ( ((khst*gst)^alp - (1-gst*(1-del))*khst)/mst )^(-1);
+  nust = psi*mst^2/( (1-alp)*(1-psi)*bet*gst^alp*khst^alp );
+  n  = xist/(nust+xist);
+  p  = xist + nust;
+  k  = khst*n;
+
+  l  = psi*mst*n/( (1-psi)*(1-n) );
+  c  = mst/p;
+  d  = l - mst + 1;
+  y  = k^alp*n^(1-alp)*gst^alp;
+  r  = mst/bet;
+  w  = l/n;
+  ist  = y-c;
+  q  = 1 - d;
+
+  e = 1;
+  
+  gp_obs = m/dA;
+  gy_obs = dA;
+  
+  P_obs = 1;
+  Y_obs = 1;
+  
+  ys =[
+      c
+      d
+      dA
+      e
+      gp_obs
+      gy_obs
+      k
+      l
+      m
+      n
+      p
+      P_obs
+      r
+      w
+      y
+      Y_obs
+      ];
\ No newline at end of file
diff --git a/tags/v_3.062/tests/fs2000/fsdat.m b/tags/v_3.062/tests/fs2000/fsdat.m
new file mode 100644
index 0000000000..5a0e3658d4
--- /dev/null
+++ b/tags/v_3.062/tests/fs2000/fsdat.m
@@ -0,0 +1,210 @@
+data_q = [
+18.02 1474.5 150.2
+17.94 1538.2 150.9
+18.01 1584.5 151.4
+18.42 1644.1 152
+18.73 1678.6 152.7
+19.46 1693.1 153.3
+19.55 1724   153.9
+19.56 1758.2 154.7
+19.79 1760.6 155.4
+19.77 1779.2 156
+19.82 1778.8 156.6
+20.03 1790.9 157.3
+20.12 1846   158
+20.1  1882.6 158.6
+20.14 1897.3 159.2
+20.22 1887.4 160
+20.27 1858.2 160.7
+20.34 1849.9 161.4
+20.39 1848.5 162
+20.42 1868.9 162.8
+20.47 1905.6 163.6
+20.56 1959.6 164.3
+20.62 1994.4 164.9
+20.78 2020.1 165.7
+21    2030.5 166.5
+21.2  2023.6 167.2
+21.33 2037.7 167.9
+21.62 2033.4 168.7
+21.71 2066.2 169.5
+22.01 2077.5 170.2
+22.15 2071.9 170.9
+22.27 2094   171.7
+22.29 2070.8 172.5
+22.56 2012.6 173.1
+22.64 2024.7 173.8
+22.77 2072.3 174.5
+22.88 2120.6 175.3
+22.92 2165   176.045
+22.91 2223.3  176.727
+22.94 2221.4  177.481
+23.03 2230.95 178.268
+23.13 2279.22 179.694
+23.22 2265.48 180.335
+23.32 2268.29 181.094
+23.4  2238.57 181.915
+23.45 2251.68 182.634
+23.51 2292.02 183.337
+23.56 2332.61 184.103
+23.63 2381.01 184.894
+23.75 2422.59 185.553
+23.81 2448.01 186.203
+23.87 2471.86 186.926
+23.94 2476.67 187.68
+24    2508.7  188.299
+24.07 2538.05 188.906
+24.12 2586.26 189.631
+24.29 2604.62 190.362
+24.35 2666.69 190.954
+24.41 2697.54 191.56
+24.52 2729.63 192.256
+24.64 2739.75 192.938
+24.77 2808.88 193.467
+24.88 2846.34 193.994
+25.01 2898.79 194.647
+25.17 2970.48 195.279
+25.32 3042.35 195.763
+25.53 3055.53 196.277
+25.79 3076.51 196.877
+26.02 3102.36 197.481
+26.14 3127.15 197.967
+26.31 3129.53 198.455
+26.6  3154.19 199.012
+26.9  3177.98 199.572
+27.21 3236.18 199.995
+27.49 3292.07 200.452
+27.75 3316.11 200.997
+28.12 3331.22 201.538
+28.39 3381.86 201.955
+28.73 3390.23 202.419
+29.14 3409.65 202.986
+29.51 3392.6  203.584
+29.94 3386.49 204.086
+30.36 3391.61 204.721
+30.61 3422.95 205.419
+31.02 3389.36 206.13
+31.5  3481.4  206.763
+31.93 3500.95 207.362
+32.27 3523.8  208
+32.54 3533.79 208.642
+33.02 3604.73 209.142
+33.2  3687.9  209.637
+33.49 3726.18 210.181
+33.95 3790.44 210.737
+34.36 3892.22 211.192
+34.94 3919.01 211.663
+35.61 3907.08 212.191
+36.29 3947.11 212.708
+37.01 3908.15 213.144
+37.79 3922.57 213.602
+38.96 3879.98 214.147
+40.13 3854.13 214.7
+41.05 3800.93 215.135
+41.66 3835.21 215.652
+42.41 3907.02 216.289
+43.19 3952.48 216.848
+43.69 4044.59 217.314
+44.15 4072.19 217.776
+44.77 4088.49 218.338
+45.57 4126.39 218.917
+46.32 4176.28 219.427
+47.07 4260.08 219.956
+47.66 4329.46 220.573
+48.63 4328.33 221.201
+49.42 4345.51 221.719
+50.41 4510.73 222.281
+51.27 4552.14 222.933
+52.35 4603.65 223.583
+53.51 4605.65 224.152
+54.65 4615.64 224.737
+55.82 4644.93 225.418
+56.92 4656.23 226.117
+58.18 4678.96 226.754
+59.55 4566.62 227.389
+61.01 4562.25 228.07
+62.59 4651.86 228.689
+64.15 4739.16 229.155
+65.37 4696.82 229.674
+66.65 4753.02 230.301
+67.87 4693.76 230.903
+68.86 4615.89 231.395
+69.72 4634.88 231.906
+70.66 4612.08 232.498
+71.44 4618.26 233.074
+72.08 4662.97 233.546
+72.83 4763.57 234.028
+73.48 4849    234.603
+74.19 4939.23 235.153
+75.02 5053.56 235.605
+75.58 5132.87 236.082
+76.25 5170.34 236.657
+76.81 5203.68 237.232
+77.63 5257.26 237.673
+78.25 5283.73 238.176
+78.76 5359.6  238.789
+79.45 5393.57 239.387
+79.81 5460.83 239.861
+80.22 5466.95 240.368
+80.84 5496.29 240.962
+81.45 5526.77 241.539
+82.09 5561.8  242.009
+82.68 5618    242.52
+83.33 5667.39 243.12
+84.09 5750.57 243.721
+84.67 5785.29 244.208
+85.56 5844.05 244.716
+86.66 5878.7  245.354
+87.44 5952.83 245.966
+88.45 6010.96 246.46
+89.39 6055.61 247.017
+90.13 6087.96 247.698
+90.88 6093.51 248.374
+92    6152.59 248.928
+93.18 6171.57 249.564
+94.14 6142.1  250.299
+95.11 6078.96 251.031
+96.27 6047.49 251.65
+97    6074.66 252.295
+97.7  6090.14 253.033
+98.31 6105.25 253.743
+99.13 6175.69 254.338
+99.79 6214.22 255.032
+100.17 6260.74 255.815
+100.88 6327.12 256.543
+101.84 6327.93 257.151
+102.35 6359.9  257.785
+102.83 6393.5  258.516
+103.51 6476.86 259.191
+104.13 6524.5  259.738
+104.71 6600.31 260.351
+105.39 6629.47 261.04
+106.09 6688.61 261.692
+106.75 6717.46 262.236
+107.24 6724.2  262.847
+107.75 6779.53 263.527
+108.29 6825.8  264.169
+108.91 6882    264.681
+109.24 6983.91 265.258
+109.74 7020    265.887
+110.23 7093.12 266.491
+111    7166.68 266.987
+111.43 7236.5  267.545
+111.76 7311.24 268.171
+112.08 7364.63 268.815
+];
+%GDPD  GDPQ   GPOP
+
+series = zeros(193,2);
+series(:,2) = data_q(:,1);
+series(:,1) = 1000*data_q(:,2)./data_q(:,3);
+
+Y_obs = series(:,1);
+P_obs = series(:,2);
+
+series = series(2:193,:)./series(1:192,:);
+
+gy_obs = series(:,1);
+gp_obs = series(:,2);
+
+ti = [1950:0.25:1997.75];
\ No newline at end of file
diff --git a/tags/v_3.062/tests/fs2000/test.m b/tags/v_3.062/tests/fs2000/test.m
new file mode 100644
index 0000000000..f05f5f1c45
--- /dev/null
+++ b/tags/v_3.062/tests/fs2000/test.m
@@ -0,0 +1,4 @@
+function test(a,b,n)
+  if max(max(abs(a)-abs(b))) > 1e-5
+    error(['Test error in test ' int2str(n)])
+  end
\ No newline at end of file
diff --git a/tags/v_3.062/tests/ls2003/data_ca1.m b/tags/v_3.062/tests/ls2003/data_ca1.m
new file mode 100644
index 0000000000..b0b4f05461
--- /dev/null
+++ b/tags/v_3.062/tests/ls2003/data_ca1.m
@@ -0,0 +1,100 @@
+data = [0.928467646476  11.8716889412   20  0.418037507392  0.227382377518 ...
+-0.705994063083 11.7522582094   21.25   1.09254424511   -1.29488274994 ...
+-0.511895351926 9.68144025625   17.25   -1.66150408407  0.331508393098 ...
+-0.990955971267 10.0890781236   17  1.43016275252   -2.43589670141 ...
+-0.981233061806 12.1094840679   18.25   2.91293288733   -0.790246576864 ...
+-0.882182844512 8.54559460406   15  0.419579139481  0.358729719566 ...
+-0.930893002836 6.19238374422   12.5    -1.48847457959  0.739779938797 ...
+1.53158206947   2.76544271886   11.5    -0.336216769682 0.455559918769 ...
+2.2659052834    5.47418162513   11  0.306436789767  -0.0707985731221 ...
+1.05419803797   6.35698426189   11  0.140700250477  0.620401487202 ...
+1.20161076793   3.4253301593    11  0.461296492351  0.14354323987 ...
+1.73934077971   4.70926070322   11.5    1.35798282982   0.38564694435 ...
+1.71735262584   3.54232079749   12.5    2.9097529155    -0.804308583301 ...
+0.426343657844  3.32719108897   13  1.64214862652   -1.18214664701 ...
+1.67751812324   2.93444727338   11.25   0.344434910651  -1.6529373719 ...
+1.37013301099   4.72303361923   11.75   2.61511526582   0.327684243041 ...
+0.281231073781  4.4893853071    10.5    1.17043449257   1.12855106649 ...
+1.53638992834   3.7325309699    10.25   -0.683947046728 0.11943538737 ...
+1.68081431462   3.34729969129   10  1.41159342106   -1.59065680853 ...
+-0.343321601133 5.05563513564   12  1.75117366498   -2.40127764642 ...
+0.873415608666  3.2779996255    10.25   -1.39895866711  0.0971444398216 ...
+0.26399696544   4.78229419828   9.75    0.0914692438124 0.299310457612 ...
+-0.562233624818 3.88598638237   9.75    -0.0505384765105    0.332826708151 ...
+2.15161914936   3.84859710132   8.75    -3.44811080489  0.789138678784 ...
+1.2345093726    5.62225030942   9.5 -0.366945407434 2.32974981198 ...
+1.62554967459   4.24667132831   10  -0.800958371402 0.0293183770935 ...
+1.33035402527   2.75248979249   9.75    -0.855723113225 0.852493939813 ...
+1.52078814077   3.53415985826   9.75    -3.37963469203  -1.05133958119 ...
+1.16704983697   4.92754079464   10.75   -3.0142303324   0.459907431978 ...
+0.277213572101  4.55532133037   11.75   -0.851995599415 2.03242034852 ...
+0.842215068977  3.11164509647   12.25   -1.08290421696  0.014323281961 ...
+1.05325028606   4.92882647578   13.5    -1.1953883867   0.706764750654 ...
+0.453051253568  6.82998950103   13.5    0.111803656462  0.088462593153 ...
+0.199885995525  5.82643354662   13.5    -0.920501518421 -0.26504958666 ...
+0.137907999624  2.66076369132   13.5    -1.17122929812  -0.995642430514 ...
+0.721949686709  5.70497876823   14.25   1.19378169018   -1.10644839651 ...
+-0.418465249225 3.75861110232   14.75   -1.03131674824  0.188507675831 ...
+-0.644028342116 4.15104788154   13.75   -1.48911756546  0.204560913792 ...
+-0.848213852668 5.65580324027   12.75   0.677011703877  -0.849628054542 ...
+-1.51954076928  11.4866911266   11.25   -0.446024680774 -0.456342350765 ...
+0.265275055215  2.85472749592   9.75    -0.598778202436 -0.907311640831 ...
+0.356162529063  2.29614015658   9.5 -0.46820788432  -1.22130883441 ...
+0.368308864363  -0.539083504685 8   -0.781333991956 0.374007246518 ...
+-0.145751412732 1.61507621789   8.25    3.68291932628   1.32438399845 ...
+0.285457283664  2.14334055993   7   1.42819405379   -0.00818660844123 ...
+0.372390129412  1.60000213334   6.25    0.626106424052  -0.10136772765 ...
+0.382720203063  1.72614243263   7.25    4.89631941021   -1.10060711916 ...
+0.737957515573  2.90430582851   6   -0.0422721010314    0.4178952497 ...
+0.649532581668  0.657135682543  6   0.692066153971  0.422299120276 ...
+0.627159201987  1.70352689913   5.75    2.62066711305   -1.29237304034 ...
+0.905441299817  1.95663197267   5.5 1.5949697565    -0.27115830703 ...
+1.49322577898   -2.08741765309  6.25    1.23027694802   0.418336889527 ...
+1.48750731567   -1.57274121871  8   3.01660550994   -0.893958254365 ...
+1.39783858087   2.22623066426   7   -0.80842319214  1.47625453886 ...
+0.89274836317   1.30378081742   8   -0.249485058661 0.159871204185 ...
+0.920652246088  4.1437741965    9.75    2.8204453623    0.178149239655 ...
+-0.00264276644799   3.07989972052   8.75    -2.56342461535  2.105998353 ...
+0.0198190461681 0.766283759256  8   -1.15838865989  1.56888883418 ...
+0.440050515311  0.127570085801  7.5 0.0400753569995 0.028914333532 ...
+0.129536637901  1.78174141526   6.75    0.959943962785  0.307781224401 ...
+0.398549827172  3.03606770667   6.5 -0.340209794742 0.100979469478 ...
+1.17174775425   0.629625188037  5.75    0.403003686814  0.902394579377 ...
+0.991163981251  2.50862910684   4.75    -1.44963996982  1.16150986945 ...
+0.967603566096  2.12003739013   4.75    0.610846030775  -0.889994896068 ...
+1.14689383604   1.24185011459   4.75    2.01098091308   -1.73846431001 ...
+1.32593824054   0.990713820685  4.75    -0.0955142989332    -0.0369257308362 ...
+0.861135002644  -0.24744943605  6   1.72793107135   -0.691506789639 ...
+1.26870850151   2.09844764887   6.5 1.50720217572   -1.31399187077 ...
+0.260364987715  1.10650139716   6.5 1.13659047496   0.0720441664643 ...
+1.09731242214   0.490796381346  7.25    4.59123894147   -2.14073070763 ...
+1.63792841781   0.612652594286  6.75    1.79604605035   -0.644363995357 ...
+1.48465576034   0.978295808687  6.75    -2.00753620902  1.39437534964 ...
+1.0987608663    4.25212569087   6.25    -2.58901196498  2.56054320803 ...
+1.42592178132   2.76984518311   6.25    0.888195752358  1.03114549274 ...
+1.52958239462   1.31795955491   6.5 -0.902907564082 -0.0952198893776 ...
+1.0170168994    2.14733589918   7   -1.3054866978   2.68803738466 ...
+0.723253652257  3.43552889347   7.5 1.8213700853    0.592593586195 ...
+1.24720806008   3.87383806577   7.5 0.0522300654168 0.988871238698 ...
+0.482531471239  2.67793287032   7.5 2.9693944293    -0.108591166081 ...
+0.154056100439  0.927269031704  6.75    0.119222057561  3.30489209451 ...
+0.0694865769274 6.65916526788   6.25    0.889014476084  -2.83976849035 ...
+-0.121267434867 0.341442615696  5.25    0.323053239216  -3.49289229012 ...
+0.726473690375  -3.5423730964   4   2.19149290449   -3.20855054004 ...
+1.39271709108   2.63121085718   3.75    0.88406577736   0.75622580197 ...
+1.07502077727   5.88578836799   4.25    -2.55088273352  2.89018116374 ...
+0.759049251607  4.24703604223   4.5 0.575687665685  -0.388292506167 ...
+]; 
+ 
+data = reshape(data,5,86)'; 
+y_obs = data(:,1); 
+pie_obs = data(:,2); 
+R_obs = data(:,3); 
+de = data(:,4); 
+dq = data(:,5); 
+ 
+%Country: Canada 
+%Sample Range: 1981:2 to 2002:3 
+%Observations: 86 
+%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], 
+%           Exchange Rate Change [%], Terms of Trade Change [%] 
diff --git a/tags/v_3.062/tests/ls2003/ls2003.mod b/tags/v_3.062/tests/ls2003/ls2003.mod
new file mode 100644
index 0000000000..1d2ec9de49
--- /dev/null
+++ b/tags/v_3.062/tests/ls2003/ls2003.mod
@@ -0,0 +1,65 @@
+var y y_s R pie dq pie_s de A y_obs pie_obs R_obs;
+varexo e_R e_q e_ys e_pies e_A;
+
+parameters psi1 psi2 psi3 rho_R tau alpha rr k rho_q rho_A rho_ys rho_pies;
+
+psi1 = 1.54;
+psi2 = 0.25;
+psi3 = 0.25;
+rho_R = 0.5;
+alpha = 0.3;
+rr = 2.51;
+k = 0.5;
+tau = 0.5;
+rho_q = 0.4;
+rho_A = 0.2;
+rho_ys = 0.9;
+rho_pies = 0.7;
+
+
+model(linear);
+y = y(+1) - (tau +alpha*(2-alpha)*(1-tau))*(R-pie(+1))-alpha*(tau +alpha*(2-alpha)*(1-tau))*dq(+1) + alpha*(2-alpha)*((1-tau)/tau)*(y_s-y_s(+1))-A(+1);
+pie = exp(-rr/400)*pie(+1)+alpha*exp(-rr/400)*dq(+1)-alpha*dq+(k/(tau+alpha*(2-alpha)*(1-tau)))*y+alpha*(2-alpha)*(1-tau)/(tau*(tau+alpha*(2-alpha)*(1-tau)))*y_s;
+pie = de+(1-alpha)*dq+pie_s;
+R = rho_R*R(-1)+(1-rho_R)*(psi1*pie+psi2*(y+alpha*(2-alpha)*((1-tau)/tau)*y_s)+psi3*de)+e_R;
+dq = rho_q*dq(-1)+e_q;
+y_s = rho_ys*y_s(-1)+e_ys;
+pie_s = rho_pies*pie_s(-1)+e_pies;
+A = rho_A*A(-1)+e_A;
+y_obs = y-y(-1)+A;
+pie_obs = 4*pie;
+R_obs = 4*R;
+end;
+
+shocks;
+var e_R = 1.25^2;
+var e_q = 2.5^2;
+var e_A = 1.89;
+var e_ys = 1.89;
+var e_pies = 1.89;
+end;
+
+varobs y_obs R_obs pie_obs dq de;
+
+estimated_params;
+psi1 , gamma_pdf,1.5,0.5;
+psi2 , gamma_pdf,0.25,0.125;
+psi3 , gamma_pdf,0.25,0.125;
+rho_R ,beta_pdf,0.5,0.2;
+alpha ,beta_pdf,0.3,0.1;
+rr ,gamma_pdf,2.5,1;
+k , gamma_pdf,0.5,0.25;
+tau ,gamma_pdf,0.5,0.2;
+rho_q ,beta_pdf,0.4,0.2;
+rho_A ,beta_pdf,0.5,0.2;
+rho_ys ,beta_pdf,0.8,0.1;
+rho_pies,beta_pdf,0.7,0.15;
+stderr e_R,inv_gamma_pdf,1.2533,0.6551;
+stderr e_q,inv_gamma_pdf,2.5066,1.3103;
+stderr e_A,inv_gamma_pdf,1.2533,0.6551;
+stderr e_ys,inv_gamma_pdf,1.2533,0.6551;
+stderr e_pies,inv_gamma_pdf,1.88,0.9827;
+end;
+
+estimation(datafile=data_ca1,first_obs=8,nobs=79,mh_nblocks=10,prefilter=1,mh_jscale=0.5,mh_replic=0);
+
diff --git a/tags/v_3.062/tests/ls2003/ls2003a.mod b/tags/v_3.062/tests/ls2003/ls2003a.mod
new file mode 100644
index 0000000000..1d2ec9de49
--- /dev/null
+++ b/tags/v_3.062/tests/ls2003/ls2003a.mod
@@ -0,0 +1,65 @@
+var y y_s R pie dq pie_s de A y_obs pie_obs R_obs;
+varexo e_R e_q e_ys e_pies e_A;
+
+parameters psi1 psi2 psi3 rho_R tau alpha rr k rho_q rho_A rho_ys rho_pies;
+
+psi1 = 1.54;
+psi2 = 0.25;
+psi3 = 0.25;
+rho_R = 0.5;
+alpha = 0.3;
+rr = 2.51;
+k = 0.5;
+tau = 0.5;
+rho_q = 0.4;
+rho_A = 0.2;
+rho_ys = 0.9;
+rho_pies = 0.7;
+
+
+model(linear);
+y = y(+1) - (tau +alpha*(2-alpha)*(1-tau))*(R-pie(+1))-alpha*(tau +alpha*(2-alpha)*(1-tau))*dq(+1) + alpha*(2-alpha)*((1-tau)/tau)*(y_s-y_s(+1))-A(+1);
+pie = exp(-rr/400)*pie(+1)+alpha*exp(-rr/400)*dq(+1)-alpha*dq+(k/(tau+alpha*(2-alpha)*(1-tau)))*y+alpha*(2-alpha)*(1-tau)/(tau*(tau+alpha*(2-alpha)*(1-tau)))*y_s;
+pie = de+(1-alpha)*dq+pie_s;
+R = rho_R*R(-1)+(1-rho_R)*(psi1*pie+psi2*(y+alpha*(2-alpha)*((1-tau)/tau)*y_s)+psi3*de)+e_R;
+dq = rho_q*dq(-1)+e_q;
+y_s = rho_ys*y_s(-1)+e_ys;
+pie_s = rho_pies*pie_s(-1)+e_pies;
+A = rho_A*A(-1)+e_A;
+y_obs = y-y(-1)+A;
+pie_obs = 4*pie;
+R_obs = 4*R;
+end;
+
+shocks;
+var e_R = 1.25^2;
+var e_q = 2.5^2;
+var e_A = 1.89;
+var e_ys = 1.89;
+var e_pies = 1.89;
+end;
+
+varobs y_obs R_obs pie_obs dq de;
+
+estimated_params;
+psi1 , gamma_pdf,1.5,0.5;
+psi2 , gamma_pdf,0.25,0.125;
+psi3 , gamma_pdf,0.25,0.125;
+rho_R ,beta_pdf,0.5,0.2;
+alpha ,beta_pdf,0.3,0.1;
+rr ,gamma_pdf,2.5,1;
+k , gamma_pdf,0.5,0.25;
+tau ,gamma_pdf,0.5,0.2;
+rho_q ,beta_pdf,0.4,0.2;
+rho_A ,beta_pdf,0.5,0.2;
+rho_ys ,beta_pdf,0.8,0.1;
+rho_pies,beta_pdf,0.7,0.15;
+stderr e_R,inv_gamma_pdf,1.2533,0.6551;
+stderr e_q,inv_gamma_pdf,2.5066,1.3103;
+stderr e_A,inv_gamma_pdf,1.2533,0.6551;
+stderr e_ys,inv_gamma_pdf,1.2533,0.6551;
+stderr e_pies,inv_gamma_pdf,1.88,0.9827;
+end;
+
+estimation(datafile=data_ca1,first_obs=8,nobs=79,mh_nblocks=10,prefilter=1,mh_jscale=0.5,mh_replic=0);
+
diff --git a/tags/v_3.062/tests/objectives/CVS/Entries b/tags/v_3.062/tests/objectives/CVS/Entries
new file mode 100644
index 0000000000..6957afc35a
--- /dev/null
+++ b/tags/v_3.062/tests/objectives/CVS/Entries
@@ -0,0 +1,7 @@
+/sgu_ex1.log/1.1.2.1/Sun Feb  6 15:45:32 2005//Tv3_03
+/sgu_ex1.m/1.1.2.1/Sun Feb  6 15:45:32 2005//Tv3_03
+/sgu_ex1.mat/1.1.2.1/Sun Feb  6 15:45:32 2005//Tv3_03
+/sgu_ex1.mod/1.1.2.1/Sun Feb  6 15:45:32 2005//Tv3_03
+/sgu_ex1_ff.m/1.1.2.1/Sun Feb  6 15:45:32 2005//Tv3_03
+/sgu_ex1_fff.m/1.1.2.1/Sun Feb  6 15:45:32 2005//Tv3_03
+D
diff --git a/tags/v_3.062/tests/objectives/CVS/Repository b/tags/v_3.062/tests/objectives/CVS/Repository
new file mode 100644
index 0000000000..f3767c29d5
--- /dev/null
+++ b/tags/v_3.062/tests/objectives/CVS/Repository
@@ -0,0 +1 @@
+dynare_test/tests/objectives
diff --git a/tags/v_3.062/tests/objectives/CVS/Root b/tags/v_3.062/tests/objectives/CVS/Root
new file mode 100644
index 0000000000..880aa97900
--- /dev/null
+++ b/tags/v_3.062/tests/objectives/CVS/Root
@@ -0,0 +1 @@
+:ext:pythie.cepremap.cnrs.fr/var/lib/cvs
diff --git a/tags/v_3.062/tests/objectives/CVS/Tag b/tags/v_3.062/tests/objectives/CVS/Tag
new file mode 100644
index 0000000000..9f3656bd3b
--- /dev/null
+++ b/tags/v_3.062/tests/objectives/CVS/Tag
@@ -0,0 +1 @@
+Tv3_03
diff --git a/tags/v_3.062/tests/objectives/sgu_ex1.log b/tags/v_3.062/tests/objectives/sgu_ex1.log
new file mode 100644
index 0000000000..5ec8763027
--- /dev/null
+++ b/tags/v_3.062/tests/objectives/sgu_ex1.log
@@ -0,0 +1,15 @@
+
+
+MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS
+
+Variables    e         
+e            1.000000
+POLICY AND TRANSITION FUNCTIONS
+                                       k               a               c
+Constant                   -1.552215               0       -0.969516
+(correction)                0.241022               0       -0.096072
+k(-1)                       0.419109               0        0.252523
+e                           1.397031        1.000000        0.841743
+k(-1)k(-1)                 -0.003501               0       -0.002559
+e e                        -0.038899               0       -0.028434
+k(-1) e                    -0.023340               0       -0.017061
diff --git a/tags/v_3.062/tests/objectives/sgu_ex1.m b/tags/v_3.062/tests/objectives/sgu_ex1.m
new file mode 100644
index 0000000000..01307659c5
--- /dev/null
+++ b/tags/v_3.062/tests/objectives/sgu_ex1.m
@@ -0,0 +1,98 @@
+clear all
+global scalv_ ex_ recur_ recurs_ ys_ y_ exe_ lgy_ lgx_ lgr_ dsmpl_ endval_
+ ...
+global endo_nbr exo_nbr iy_  ykmin_  ykmax_  xkmin_  xkmax_ zkmin_ zkmax_ iter_
+ ...
+global dynatol_ slowc_ maxit_ valf_ ys0_ recurs0_ timing_ ct_ gstep_ Sigma_e_ fname_ lgx_orig_ord_
+dsmpl_=0;
+dynatol_=0.00001;
+maxit_=10;
+slowc_=1;
+timing_=0;
+ct_=0;
+gstep_=1e-2;
+endval_=0;rplottype_=0;
+fname_ = 'sgu_ex1';
+logname_ = 'sgu_ex1.log';
+diary off;
+warning off;
+delete sgu_ex1.log;
+warning on;
+warning backtrace;
+diary sgu_ex1.log;
+
+iter_ = 20000;
+
+
+
+
+global alpha beta delta gamma rho 
+
+
+beta = 0.95;
+delta = 1;
+alpha = 0.3;
+rho = 0;
+gamma = 2;
+
+lgy_ = 'a';
+lgy_ = str2mat(lgy_,'c');
+lgy_ = str2mat(lgy_,'k');
+lgx_ = 'e';
+lgx_orig_ord_ = [1];
+endo_nbr = 3;
+exo_nbr = 1;
+recur_nbr = 0;
+iy_ = [ 1 0 2];
+temp = [ 3 4 5];
+iy_ = [ iy_ ; temp ];
+temp = [ 6 7 0];
+iy_ = [ iy_ ; temp ];
+ykmin_ = 1;
+ykmax_ = 1;
+xkmin_ = 0;
+xkmax_ = 0;
+zkmin_ = 0;
+zkmax_ = 0;
+
+
+% INITVAL 
+valf_ = 0;
+endval_=0;
+ys_ = zeros(3,1);
+exe_ = zeros(1,1);
+ys0_ = 0;
+ex0_ = 0;
+recurs0_ = 0;
+ys_(3)=0;
+ys_(2)=0;
+ys_(1)=0;
+exe_(1)=0;
+if exo_nbr > 0;
+  ex_ =ones(iter_ + xkmin_ + xkmax_,1) * exe_';
+end;
+
+
+Sigma_e_ = 1;
+
+var_list_ = [];
+options.ar = 0;
+options.dr_algo = 0;
+options.simul_algo = 0;
+options.nocorr = 1;
+options.drop = 100;
+options.linear = 0;
+options.nofunctions = 0;
+options.nomoments = 1;
+options.irf = 0;
+options.order = 2;
+options.replic = 0;
+stoch_simul(options,var_list_);
+
+
+global dr_
+dr_obj_ = dr_;
+
+save sgu_ex1 dr_obj_;
+
+diary off
diff --git a/tags/v_3.062/tests/objectives/sgu_ex1.mat b/tags/v_3.062/tests/objectives/sgu_ex1.mat
new file mode 100644
index 0000000000000000000000000000000000000000..69413985099ccb48f898c4ba4808132bda33c23e
GIT binary patch
literal 1368
zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2cQV4Jk_w>_Ia4t$sEJ;mK$j`G<
z2q{ff@Jh^6FtSiEG`BJ`vNE<%FfuSORv;NLFnap(F)%P(U}0cjV_;z5U|?WiVt@cv
zD4&smfdPiu85kH+isJK=vf>$78CV#&pmI$N3=EaU5Pb{`X-S!h5KekV1ynFSqZG=@
zFG@)*iZ4qnV#q5lNi4}sW?*2*D=11$0n2BD#8N@b>_jldz`&56Q2{k3J);6@OnOEs
zoK<WDQV+u*|9CJU`~&hANDk&7W~iG%egcVeGB7YmFfcGQ#LWnLb7Qh~R^^IS4xeA|
zm(t{$BDwL;evo+vB$&s<0J4FB0i-X1fId)IBfA4+Ps^wIrRy)<vIn^h<g7M-|MQ`m
z7hrs-Fhc{30kVf2{{|`KKeUPZ1~vDC{qd)j%>D0Q*@MgjxdRk#p!5KuL3ZH^KahW!
z8JWQT#itMCPZ$Q7#{^DQkZ>YZA1K^F?sUKtzAOw33?K}$6Jj3&g8(RfGcz(VGcz$U
zgCrT47(wQcYCp(KkiH3c><6U+kQE@cAp1e-43r*pEM}i#URSdpBnHB>`Hpd2_*Mev
zgTyGoAa{Z60mU1x_ydI>vb#Y3PiMP!F!0%QxI2CbfBG3*F%iy3cN54Sa?;(rg~5@F
yUTxl=SMWW}qEp%S?!6EHU(2oq=QDE5TemQ@_TtTZ&~(hekapwp2F)2K_5%PEyo#p)

literal 0
HcmV?d00001

diff --git a/tags/v_3.062/tests/objectives/sgu_ex1.mod b/tags/v_3.062/tests/objectives/sgu_ex1.mod
new file mode 100644
index 0000000000..36e5500303
--- /dev/null
+++ b/tags/v_3.062/tests/objectives/sgu_ex1.mod
@@ -0,0 +1,33 @@
+periods 20000;
+var c k a;
+varexo e;
+parameters alpha beta delta gamma rho;
+
+beta = 0.95;
+delta = 1;
+alpha = 0.3;
+rho = 0;
+gamma = 2;
+
+model;
+exp(c) + exp(k) = (1-delta) * exp(k(-1)) + exp(a) * exp(k(-1))^alpha;
+exp(c)^(-gamma) = beta * exp(c(+1))^(-gamma) * (exp(a(+1)) * alpha * exp(k)^(alpha-1) + 1 - delta);
+a = rho * a(-1) + e;
+end;
+
+initval;
+k=0;
+c=0;
+a=0;
+e=0;
+end;
+
+Sigma_e_ = 1;
+
+stoch_simul(nomoments,irf=0,nocorr,ar=0);
+
+global dr_
+dr_obj_ = dr_;
+
+save sgu_ex1 dr_obj_;
+
diff --git a/tags/v_3.062/tests/objectives/sgu_ex1_ff.m b/tags/v_3.062/tests/objectives/sgu_ex1_ff.m
new file mode 100644
index 0000000000..0b77773630
--- /dev/null
+++ b/tags/v_3.062/tests/objectives/sgu_ex1_ff.m
@@ -0,0 +1,11 @@
+
+function z=sgu_ex1_ff(y)
+z=zeros(3,1);
+global ex_ it_ recur_
+
+global alpha beta delta gamma rho 
+z(1) = exp(y(4))+exp(y(5)) -((1-delta)*exp(y(2))+exp(y(3))*exp(y(2))^alpha) ...
+;
+z(2) = exp(y(4))^(-gamma) -(beta*exp(y(7))^(-gamma)*(exp(y(6))*alpha*exp( ...
+y(5))^(alpha-1)+1-delta));
+z(3) = y(3) -(rho*y(1)+ex_(it_-1,1));
diff --git a/tags/v_3.062/tests/objectives/sgu_ex1_fff.m b/tags/v_3.062/tests/objectives/sgu_ex1_fff.m
new file mode 100644
index 0000000000..bf6325be4d
--- /dev/null
+++ b/tags/v_3.062/tests/objectives/sgu_ex1_fff.m
@@ -0,0 +1,11 @@
+
+function z=sgu_ex1_fff(y)
+z=zeros(3,1);
+global ex_ it_ recur_
+
+global alpha beta delta gamma rho 
+z(1) = exp(y(2))+exp(y(3)) -((1-delta)*exp(y(3))+exp(y(1))*exp(y(3))^alpha) ...
+;
+z(2) = exp(y(2))^(-gamma) -(beta*exp(y(2))^(-gamma)*(exp(y(1))*alpha*exp( ...
+y(3))^(alpha-1)+1-delta));
+z(3) = y(1) -(rho*y(1)+ex_(it_-1,1));
diff --git a/tags/v_3.062/tests/pi2004/idata.m b/tags/v_3.062/tests/pi2004/idata.m
new file mode 100644
index 0000000000..9ce34b9eb7
--- /dev/null
+++ b/tags/v_3.062/tests/pi2004/idata.m
@@ -0,0 +1,5 @@
+load ych.dat;
+data = log(ych);
+oy = data(:,1);
+oc = data(:,2);
+oh = data(:,3);
\ No newline at end of file
diff --git a/tags/v_3.062/tests/pi2004/ireland.mod b/tags/v_3.062/tests/pi2004/ireland.mod
new file mode 100644
index 0000000000..51ef3508ff
--- /dev/null
+++ b/tags/v_3.062/tests/pi2004/ireland.mod
@@ -0,0 +1,90 @@
+var y a k c i h eoy eoc eoh oy oc oh;
+varexo e eeoy eeoc eeoh;
+
+parameters theta rho eta gam bet delta aa r11 r12 r13 r21 r22 r23 r31 r32 r33 scy shc shy;
+
+bet = 0.99;
+delta = 0.025;
+theta = 0.2;
+rho = 0.9959; 
+eta = 1.0051;  
+gam = 0.0045;
+aa = 1.8;
+r11 = 0.99;
+r12 = 0;
+r13 = 0;
+r21 = 0;
+r22 = 0.99;
+r23 = 0;
+r31 = 0;
+r32 = 0;
+r33 = 0.99;
+scy = 0.0040;
+shy = 0.0015;
+shc = 0.0010;
+
+model;
+exp(y) = exp(a)*exp(k(-1))^theta*exp(h)^(1-theta);
+a = (1-rho)*aa+rho*a(-1)+e;
+exp(y) = exp(c) + exp(i);
+eta*exp(k) = (1-delta)*exp(k(-1))+exp(i);
+gam*exp(c)*exp(h) = (1-theta)*exp(y);
+eta/exp(c) = bet*(1/exp(c(+1)))*(theta*(exp(y(+1))/exp(k))+1-delta);
+eoy = r11*eoy(-1) + r12*eoc(-1) + r13*eoh(-1) + eeoy; 
+eoc = r21*eoy(-1) + r22*eoc(-1) + r23*eoh(-1) + scy*eeoy+eeoc; 
+eoh = r31*eoy(-1) + r32*eoc(-1) + r33*eoh(-1) + shy*eeoy+shc*eeoc+eeoh; 
+oy = y + eoy;
+oc = c + eoc;
+oh = h + eoh;
+end;
+
+initval;
+a = 1.7;
+y = 8;
+c = 8;
+k = 10;
+i = 5;
+h = 4;
+eoy = 0;
+eoc = 0;
+eoh = 0;
+oy = y;
+oc = c;
+oh = h;
+end;
+
+steady;
+check;
+
+estimated_params;
+theta , 0.22, 0.1, 0.5;
+rho , 0.99, 0.7, 0.9999; 
+eta , 1.0051, 1, 1.03;  
+gam , 0.0045, 0.001, 0.01;
+aa , 1.8, 0.1, 4;
+r11 , 1.4187, -2, 2;
+r12 , 0.2251, -2, 2;
+r13 , -0.4441, -2, 2;
+r21 , 0.0935, -2, 2;
+r22 , 1.0236, -2, 2;
+r23 , -0.0908, -2, 2;
+r31 , 0.7775, -2, 2;
+r32 , 0.3706, -2, 2;
+r33 , 0.2398, -2, 2;
+scy , 0.0040, -2, 2;
+shy , 0.0015, -2, 2;
+shc , 0.0010, -2, 2;
+stderr e , 0.0056, 0, 0.2;
+stderr eeoy , 0.0070, 0, 0.1;
+stderr eeoc , 0.0069, 0, 0.1;
+stderr eeoh , 0.0018, 0, 0.1;
+end;
+
+varobs oy oc oh;
+
+observation_trends;
+oy (log(eta));
+oc (log(eta));
+end;
+
+estimation(datafile=idata,mode_compute=1,nograph);
\ No newline at end of file
diff --git a/tags/v_3.062/tests/pi2004/ireland1.mod b/tags/v_3.062/tests/pi2004/ireland1.mod
new file mode 100644
index 0000000000..3d402a5b26
--- /dev/null
+++ b/tags/v_3.062/tests/pi2004/ireland1.mod
@@ -0,0 +1,90 @@
+var y a k c i h eoy eoc eoh oy oc oh;
+varexo e eeoy eeoc eeoh;
+
+parameters theta rho eta gam bet delta aa r11 r12 r13 r21 r22 r23 r31 r32 r33 scy shc shy;
+
+bet = 0.99;
+delta = 0.025;
+theta = 0.2;
+rho = 0.9959; 
+eta = 1.0051;  
+gam = 0.0045;
+aa = 1.8;
+r11 = 0.99;
+r12 = 0;
+r13 = 0;
+r21 = 0;
+r22 = 0.99;
+r23 = 0;
+r31 = 0;
+r32 = 0;
+r33 = 0.99;
+scy = 0.0040;
+shy = 0.0015;
+shc = 0.0010;
+
+model;
+exp(y) = exp(a)*exp(k(-1))^theta*exp(h)^(1-theta);
+a = (1-rho)*aa+rho*a(-1)+e;
+exp(y) = exp(c) + exp(i);
+eta*exp(k) = (1-delta)*exp(k(-1))+exp(i);
+gam*exp(c)*exp(h) = (1-theta)*exp(y);
+eta/exp(c) = bet*(1/exp(c(+1)))*(theta*(exp(y(+1))/exp(k))+1-delta);
+eoy = r11*eoy(-1) + r12*eoc(-1) + r13*eoh(-1) + eeoy; 
+eoc = r21*eoy(-1) + r22*eoc(-1) + r23*eoh(-1) + scy*eeoy+eeoc; 
+eoh = r31*eoy(-1) + r32*eoc(-1) + r33*eoh(-1) + shy*eeoy+shc*eeoc+eeoh; 
+oy = y + eoy;
+oc = c + eoc;
+oh = h + eoh;
+end;
+
+initval;
+a = 6;
+y = 8;
+c = 7;
+k = 10;
+i = 5;
+h = 4;
+eoy = 0;
+eoc = 0;
+eoh = 0;
+oy = y;
+oc = c;
+oh = h;
+end;
+
+steady;
+check;
+
+estimated_params;
+theta , 0.22;
+rho , 0.99; 
+eta , 1.0051;
+gam , 0.0045;
+aa , 1.8;
+r11 , 1.4187;
+r12 , 0.2251;
+r13 , -0.4441;
+r21 , 0.0935;
+r22 , 1.0236;
+r23 , -0.0908;
+r31 , 0.7775;
+r32 , 0.3706;
+r33 , 0.2398;
+scy , 0.0040;
+shy , 0.0015;
+shc , 0.0010;
+stderr e , 0.0055;
+stderr eeoy , 0.0072;
+stderr eeoc , 0.0057;
+stderr eeoh , 0;
+end;
+
+varobs oy oc oh;
+
+observation_trends;
+oy (log(eta));
+oc (log(eta));
+end;
+
+estimation(datafile=idata,nograph);
\ No newline at end of file
diff --git a/tags/v_3.062/tests/pi2004/ych.dat b/tags/v_3.062/tests/pi2004/ych.dat
new file mode 100644
index 0000000000..cda9d789d8
--- /dev/null
+++ b/tags/v_3.062/tests/pi2004/ych.dat
@@ -0,0 +1,218 @@
+    2912.874 2402.117 198.8318
+    2959.229 2423.837 197.3532
+    2955.961 2420.605    198.6
+    2944.613 2436.721 196.7741
+     2865.54 2435.214 192.1405
+    2837.352 2466.823 187.9169
+    2866.923 2465.011 185.2876
+     2869.69 2492.395 182.3583
+    3000.477  2527.61 183.9728
+    3085.831 2561.171 189.8728
+    3255.871 2686.503 196.8083
+    3261.025 2613.773 200.6933
+    3261.223  2681.19 204.7635
+    3206.972 2610.838 206.4334
+    3190.085 2639.831 205.2288
+    3153.084 2650.442 204.8585
+    3168.886 2654.884 207.0878
+    3173.132 2702.447 205.2592
+    3199.558 2706.406 206.3172
+    3320.152 2792.021 211.0694
+    3333.583 2800.407 211.3402
+     3346.44 2812.085 211.4742
+    3319.499 2799.617 209.1935
+    3248.271 2771.542 205.3107
+    3243.519 2772.147 200.5438
+    3268.486 2799.347 198.4387
+    3321.089 2829.358 196.7325
+    3391.751 2878.587 198.3282
+    3498.798 2932.503 201.0089
+    3576.754 2976.939 204.5467
+    3609.954 3003.859 206.0148
+    3649.965 3032.826 207.8803
+    3625.207 3030.321 208.5925
+     3618.86 3032.152  207.818
+    3608.703 3030.239 205.7291
+    3633.863 3063.106 207.7698
+    3634.522 3075.089 207.3511
+    3628.888 3071.301 205.2741
+     3654.03 3085.679 203.4572
+     3594.76 3076.223 198.9135
+    3503.293 3024.868 193.4752
+     3506.06 3040.773 189.2161
+    3580.923  3079.37 190.8325
+    3649.701  3103.69 193.5263
+    3722.726 3149.563 197.1324
+    3809.309 3187.886 200.4534
+    3787.083  3210.28 198.4483
+    3798.375 3203.989 198.1458
+    3865.427 3211.443 199.3042
+    3828.074 3242.787 198.7233
+    3799.687 3219.673 196.7171
+     3719.52 3211.349  193.664
+    3716.143 3198.191 190.8133
+    3789.954 3235.106 190.6975
+    3841.155 3241.368 192.1397
+    3910.574  3301.88 194.0709
+    3974.538 3330.997 194.6404
+    3994.347 3359.016 196.8206
+    4014.564 3370.705 196.2717
+    4017.905 3399.337  194.901
+    4053.971 3405.746 194.5344
+    4080.082 3423.602 195.9045
+    4131.421 3455.826 195.9157
+    4150.544 3470.287  195.917
+    4229.112 3524.024 195.5849
+     4272.24  3572.78 197.0242
+    4336.042 3623.155 197.4885
+    4332.184 3617.237  198.811
+    4465.719 3681.029 200.7368
+    4488.039 3707.114 201.7553
+    4563.691 3758.136 202.7332
+    4657.963 3851.754 205.0265
+    4769.576 3898.869 207.5881
+    4751.946 3898.531 208.8921
+    4775.072 3931.495 209.8688
+    4783.388 3936.299 210.2431
+    4770.091  3946.92 209.1094
+    4766.574 3984.883 207.6639
+    4783.135  3985.69 208.0611
+    4801.834 3991.937 208.7085
+    4894.604 4068.425 208.3597
+    4975.616 4118.065 209.5735
+    5005.671 4179.017 210.9004
+    5009.407 4177.453 211.3179
+    5086.308 4204.501 212.5445
+    5084.863  4213.54 213.6703
+    5100.858 4214.495 214.3839
+    5063.156 4226.537 213.5259
+    5036.423 4230.978 211.4778
+    5032.681 4228.959 208.3091
+    5053.799 4241.721 205.5294
+     4965.09 4203.845 202.0428
+    5116.926 4261.198 201.5087
+    5152.069  4275.63 201.2279
+    5167.576 4284.769 200.0614
+    5180.986 4331.279 201.1027
+    5237.217 4339.349 201.0968
+    5342.982 4395.387 202.4846
+    5397.077 4438.577 202.6435
+    5484.454 4521.399 204.6093
+    5599.656 4580.229 206.5316
+    5605.247 4551.878  207.638
+    5560.139 4547.278  207.561
+    5550.477 4512.704 208.2113
+    5422.633 4450.734 207.0236
+    5407.967 4444.172 205.7419
+    5341.599 4438.929 204.6589
+    5248.491 4344.377  200.536
+    5098.451 4356.942 193.2349
+    5127.117  4412.68    190.6
+    5224.673 4451.618 191.7895
+    5266.744 4478.207 193.5049
+    5416.411 4553.764 195.7526
+    5473.807 4575.388 195.9103
+    5496.508 4600.334 195.6317
+    5542.322  4642.48 195.9109
+    5620.583 4677.803 197.1447
+    5681.448 4680.833 199.7234
+    5754.575 4702.857 200.9543
+    5776.808 4752.082  202.373
+    5794.987 4757.858 202.3499
+    5938.233 4839.798 206.8288
+    5965.396 4842.542 207.8288
+    6002.337 4857.874 209.0832
+    6006.791 4867.903 210.1847
+    5974.557 4840.912 209.8585
+    5971.562  4863.66 210.2244
+    5937.051 4856.383 209.8079
+    5897.765 4830.827 208.8941
+    5669.422 4702.666 204.6229
+    5622.784 4730.812 202.7781
+    5752.439 4771.074 204.9687
+    5847.447  4774.81 206.1936
+    5783.328 4762.645 205.2802
+    5845.223 4768.572 204.8371
+    5751.495 4715.179 203.0329
+    5654.764 4729.383 200.2751
+    5646.146 4728.229 197.5565
+    5648.711 4745.201 195.2339
+    5635.351 4810.282 192.9487
+    5692.631 4841.503  192.931
+    5864.656 4929.513 194.9285
+    5984.689 4993.857 197.5937
+    6150.889 5061.722 201.0485
+    6296.581 5094.102 203.5924
+    6389.626 5150.168 205.4862
+    6433.069 5172.136  206.615
+    6460.989 5223.355 207.6607
+    6486.085 5290.602 208.5043
+     6538.91 5326.746 209.0396
+    6606.849  5410.05 209.3752
+    6653.043 5412.688  210.214
+     6664.94 5432.911 210.1493
+    6680.737  5476.91 209.3983
+    6715.628 5557.117 209.6171
+    6733.646 5578.244 210.0342
+    6748.714 5562.734 211.4856
+    6800.924 5617.672 212.5146
+    6840.249 5664.805 214.0241
+    6928.494  5662.19 214.9892
+    6947.701 5745.585 215.7109
+    6995.117 5771.484 216.8663
+     7031.88 5804.469 217.7172
+    7095.824 5858.734 219.2336
+    7145.561 5863.484 220.1136
+    7138.196 5874.486  220.269
+    7157.869 5912.841 220.1049
+    7154.805 5921.098  220.317
+    7161.057 5922.459  220.214
+    7161.636 5926.962 219.8513
+     7140.38 5935.485 218.7281
+    6988.206 5869.524 216.6599
+    6901.448 5830.479 214.2069
+    6921.772 5861.221 212.7658
+    6951.212 5865.776 212.5561
+    6964.494 5837.183 211.8733
+    7013.679 5915.408 210.9388
+    7101.702 5930.574 211.8948
+    7139.773 5958.446 211.5333
+    7240.504 6024.693 212.2314
+    7263.686 6021.066 213.0739
+    7309.617  6067.04 214.1464
+    7357.691 6122.096 215.3232
+    7460.728  6162.81 216.6132
+    7552.707 6204.697 217.5596
+    7666.317 6243.449 220.1539
+    7671.023 6273.154 221.4916
+     7773.38 6317.792 222.8923
+    7800.103 6331.551 223.6901
+    7801.608 6378.859  223.503
+    7819.518 6412.249 224.1399
+    7881.173 6435.988 224.4756
+    7942.145 6475.127 224.7463
+    8067.358 6527.758 226.5057
+    8135.065 6540.091 227.7462
+    8160.041 6567.023 228.9124
+    8246.348 6609.208 229.6994
+    8351.972 6625.695 231.2019
+    8446.197 6714.596 232.3205
+    8514.464 6751.037 233.8458
+    8708.139 6820.495 235.1582
+    8756.497 6905.883 235.4095
+    8849.165  6951.56 236.1083
+    8972.445  7016.94 236.9981
+     9053.37 7071.144 236.9439
+    9103.359 7150.307 237.5947
+    9209.004 7210.145 238.3943
+    9335.028 7276.898 239.4022
+    9429.358 7361.761 240.6652
+    9547.745 7400.777 240.4972
+    9558.757 7450.665 240.0893
+     9550.45 7466.543 239.5769
+    9462.932 7494.242 239.0031
+    9373.848 7502.387 237.5366
+    9349.589 7507.978 235.3389
+    9346.637 7595.472 232.4265
+    9459.937 7637.787 231.5627
+    9511.663 7656.648 231.0083
\ No newline at end of file
diff --git a/tags/v_3.062/tests/precompiler.mod b/tags/v_3.062/tests/precompiler.mod
new file mode 100644
index 0000000000..5c9acfd88f
--- /dev/null
+++ b/tags/v_3.062/tests/precompiler.mod
@@ -0,0 +1,43 @@
+var c k;
+varexo x;
+
+parameters alph gam delt bet aa;
+alph=0.5;
+gam=0.5;
+delt=0.02;
+bet=0.05;
+aa=0.5;
+@define version 0;
+@if version == 1;
+aa = 0.3;
+@elseif version >= 2;
+aa = 0.5;
+@else;
+aa = 0.6;
+@endif;
+
+model;
+c + k - aa*x*k(-1)^alph - (1-delt)*k(-1);
+c^(-gam) - (1+bet)^(-1)*(aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam);
+end;
+
+initval;
+x = 1;
+k = ((delt+bet)/(1.0*aa*alph))^(1/(alph-1));
+c = aa*k^alph-delt*k;
+end;
+
+steady;
+
+check;
+
+shocks;
+var x;
+periods 1;
+values 1.2;
+end;
+
+simul(periods=200);
+
+rplot c;
+rplot k;
diff --git a/tags/v_3.062/tests/ramst.mod b/tags/v_3.062/tests/ramst.mod
new file mode 100644
index 0000000000..9fa14019de
--- /dev/null
+++ b/tags/v_3.062/tests/ramst.mod
@@ -0,0 +1,36 @@
+var c k;
+varexo x;
+
+parameters alph gam delt bet aa;
+alph=0.5;
+gam=0.5;
+delt=0.02;
+bet=0.05;
+aa=0.5;
+
+
+model;
+c + k - aa*x*k(-1)^alph - (1-delt)*k(-1);
+c^(-gam) - (1+bet)^(-1)*(aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam);
+end;
+
+initval;
+x = 1;
+k = ((delt+bet)/(1.0*aa*alph))^(1/(alph-1));
+c = aa*k^alph-delt*k;
+end;
+
+steady;
+
+check;
+
+shocks;
+var x;
+periods 1;
+values 1.2;
+end;
+
+simul(periods=200);
+
+rplot c;
+rplot k;
diff --git a/tags/v_3.062/tests/ramst_a.mod b/tags/v_3.062/tests/ramst_a.mod
new file mode 100644
index 0000000000..74d3a5f5f4
--- /dev/null
+++ b/tags/v_3.062/tests/ramst_a.mod
@@ -0,0 +1,37 @@
+// check shocks on several periods
+var c k;
+varexo x;
+
+parameters alph gam delt bet aa;
+alph=0.5;
+gam=0.5;
+delt=0.02;
+bet=0.05;
+aa=0.5;
+
+
+model;
+c + k - aa*x*k(-1)^alph - (1-delt)*k(-1);
+c^(-gam) - (1+bet)^(-1)*(aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam);
+end;
+
+initval;
+x = 1;
+k = ((delt+bet)/(1.0*aa*alph))^(1/(alph-1));
+c = aa*k^alph-delt*k +1 ;
+end;
+
+steady;
+
+check;
+
+shocks;
+var x;
+periods 1:4 ;
+values ([1.1, 1.2, 1.3, 1.4]') ;
+end;
+
+simul(periods=200);
+
+rplot c;
+rplot k;
diff --git a/tags/v_3.062/tests/run_test.m b/tags/v_3.062/tests/run_test.m
new file mode 100644
index 0000000000..ab0294ae0a
--- /dev/null
+++ b/tags/v_3.062/tests/run_test.m
@@ -0,0 +1,44 @@
+function run_test()
+
+test_files = {
+'.' 'precompiler';
+'.'  'ramst';
+'.'  'ramst_a';
+'.' 'example1';
+'.' 'example2';
+'.' 't_sgu_ex1';
+'arima' 'mod1';
+'arima' 'mod1a';
+'arima' 'mod1b';
+'arima' 'mod1c';
+'arima' 'mod2';
+'arima' 'mod2a';
+'arima' 'mod2b';
+'arima' 'mod2c';
+'fs2000' 'fs2000';
+'fs2000' 'fs2000a';
+}
+
+diary run_test.log
+results = cell(length(test_files),1);
+
+for i=1:length(test_files)
+     results{i}= run_test1(test_files{i,1},test_files{i,2});
+end
+
+for i=1:length(test_files)
+  disp(test_files{i,2})
+  disp(results{i})
+end
+diary off
+
+function msg=run_test1(path1,mod_file)
+     global options_
+     clear options_
+     old_path = pwd;
+     cd(path1);
+     msg = 'OK';
+     expr = ['disp(''error in ' mod_file ''');msg=lasterr;disp(msg)'];
+     eval(['dynare ' mod_file ' noclearall'],'eval(expr)');
+     cd(old_path)
+     
diff --git a/tags/v_3.062/tests/t_lag2.mod b/tags/v_3.062/tests/t_lag2.mod
new file mode 100644
index 0000000000..02b68e59a0
--- /dev/null
+++ b/tags/v_3.062/tests/t_lag2.mod
@@ -0,0 +1,40 @@
+// example 1 from Collard's guide to Dynare
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b(-2) + e;
+b = tau*a(-1)+rho*b(-2) + u;
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 5;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+Sigma_e = [ 0.000081; (phi*0.009*0.009) 0.000081];
+
+stoch_simul(order=2,irf=0,periods=50000,simul_seed=1);
diff --git a/tags/v_3.062/tests/t_lag2_check.mod b/tags/v_3.062/tests/t_lag2_check.mod
new file mode 100644
index 0000000000..ffdd8be235
--- /dev/null
+++ b/tags/v_3.062/tests/t_lag2_check.mod
@@ -0,0 +1,44 @@
+// example 1 from Collard's guide to Dynare
+periods 400;
+
+var y, c, k, a, h, b, b1;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b1(-1) + e;
+b = tau*a(-1)+rho*b1(-1) + u;
+b1 = b(-1);
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 5;
+b1 = 0;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+Sigma_e = [ 0.000081; (phi*0.009*0.009) 0.000081];
+
+stoch_simul(order=2,irf=0,simul,simul_seed=1);
diff --git a/tags/v_3.062/tests/t_lag2_checka.mod b/tags/v_3.062/tests/t_lag2_checka.mod
new file mode 100644
index 0000000000..755d593d8b
--- /dev/null
+++ b/tags/v_3.062/tests/t_lag2_checka.mod
@@ -0,0 +1,44 @@
+// example 1 from Collard's guide to Dynare
+periods 400;
+
+var y, c, k, a, h, b, b1;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b1(-1) + e;
+b = tau*a(-1)+rho*b1(-1) + u;
+b1 = b(-1);
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 5;
+b1 = 0;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+Sigma_e = [ 0.000081; (phi*0.009*0.009) 0.000081];
+
+stoch_simul(order=1,irf=0,simul,simul_seed=1);
diff --git a/tags/v_3.062/tests/t_lag2a.mod b/tags/v_3.062/tests/t_lag2a.mod
new file mode 100644
index 0000000000..3e781e07a7
--- /dev/null
+++ b/tags/v_3.062/tests/t_lag2a.mod
@@ -0,0 +1,44 @@
+// example 1 from Collard's guide to Dynare
+periods 400;
+
+var y, c, k, a, h, b, b1;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b1(-1) + e;
+b = tau*a(-1)+rho*b1(-1) + u;
+b1 = b(-1);
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 5;
+a = 0;
+b = 0;
+b1 = 0;
+e = 0;
+u = 0;
+end;
+
+Sigma_e = [ 0.000081; (phi*0.009*0.009) 0.000081];
+
+stoch_simul(irf=0,order=1);
diff --git a/tags/v_3.062/tests/t_lag2b.mod b/tags/v_3.062/tests/t_lag2b.mod
new file mode 100644
index 0000000000..364ec4fd1d
--- /dev/null
+++ b/tags/v_3.062/tests/t_lag2b.mod
@@ -0,0 +1,42 @@
+// example 1 from Collard's guide to Dynare
+periods 400;
+
+var y, c, k, a, h, b, b1;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b1(-1) + e;
+b = tau*a(-1)+rho*b1(-1) + u;
+b1 = b(-1);
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 5;
+a = 0;
+b = 0;
+b1 = 0;
+end;
+
+Sigma_e = [ 0.000081; (phi*0.009*0.009) 0.000081];
+
+stoch_simul(irf=0,periods=10000,order=2);
diff --git a/tags/v_3.062/tests/t_periods.mod b/tags/v_3.062/tests/t_periods.mod
new file mode 100644
index 0000000000..6dfe365736
--- /dev/null
+++ b/tags/v_3.062/tests/t_periods.mod
@@ -0,0 +1,44 @@
+// example 1 from Collard's guide to Dynare
+// test options.periods
+
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b(-2) + e;
+b = tau*a(-1)+rho*b(-2) + u;
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 5;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+Sigma_e = [ 0.000081; (phi*0.009*0.009) 0.000081];
+
+check;
+
+stoch_simul(order=2,irf=0,periods=400,simul_seed=1);
diff --git a/tags/v_3.062/tests/t_periods_a.mod b/tags/v_3.062/tests/t_periods_a.mod
new file mode 100644
index 0000000000..f20cf09ca8
--- /dev/null
+++ b/tags/v_3.062/tests/t_periods_a.mod
@@ -0,0 +1,36 @@
+var c k;
+varexo x;
+
+parameters alph gam delt bet aa;
+alph=0.5;
+gam=0.5;
+delt=0.02;
+bet=0.05;
+aa=0.5;
+
+
+model;
+c + k - aa*x*k(-1)^alph - (1-delt)*k(-1);
+c^(-gam) - (1+bet)^(-1)*(aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam);
+end;
+
+initval;
+x = 1;
+k = ((delt+bet)/(1.0*aa*alph))^(1/(alph-1));
+c = aa*k^alph-delt*k +1 ;
+end;
+
+steady;
+
+check;
+
+shocks;
+var x;
+periods 1;
+values 1.2;
+end;
+
+simul(periods=200);
+
+rplot c;
+rplot k;
diff --git a/tags/v_3.062/tests/t_sgu_ex1.mod b/tags/v_3.062/tests/t_sgu_ex1.mod
new file mode 100644
index 0000000000..a4fe6e8c9e
--- /dev/null
+++ b/tags/v_3.062/tests/t_sgu_ex1.mod
@@ -0,0 +1,38 @@
+periods 20000;
+var c k a;
+varexo e;
+parameters alpha beta delta gamma rho;
+
+beta = 0.95;
+delta = 1;
+alpha = 0.3;
+rho = 0;
+gamma = 2;
+
+model;
+exp(c) + exp(k) = (1-delta) * exp(k(-1)) + exp(a) * exp(k(-1))^alpha;
+exp(c)^(-gamma) = beta * exp(c(+1))^(-gamma) * (exp(a(+1)) * alpha * exp(k)^(alpha-1) + 1 - delta);
+a = rho * a(-1) + e;
+end;
+
+initval;
+k=0;
+c=0;
+a=0;
+e=0;
+end;
+
+Sigma_e_ = 1;
+
+stoch_simul(nomoments,nocorr,ar=0,irf=0);
+
+global dr_
+load objectives/sgu_ex1;
+
+test(dr_.ghx,dr_obj_.ghx,1);
+test(dr_.ghu,dr_obj_.ghu,2);
+test(dr_.ghxx,dr_obj_.ghxx,3);
+test(dr_.ghxu,dr_obj_.ghxu,4);
+test(dr_.ghuu,dr_obj_.ghuu,5);
+
+disp('TESTS OK');
\ No newline at end of file
diff --git a/tags/v_3.062/tests/test.m b/tags/v_3.062/tests/test.m
new file mode 100644
index 0000000000..f05f5f1c45
--- /dev/null
+++ b/tags/v_3.062/tests/test.m
@@ -0,0 +1,4 @@
+function test(a,b,n)
+  if max(max(abs(a)-abs(b))) > 1e-5
+    error(['Test error in test ' int2str(n)])
+  end
\ No newline at end of file
diff --git a/tags/v_3.062/tests/test_matlab.mod b/tags/v_3.062/tests/test_matlab.mod
new file mode 100644
index 0000000000..68d3444483
--- /dev/null
+++ b/tags/v_3.062/tests/test_matlab.mod
@@ -0,0 +1,40 @@
+periods 200;
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau, phi;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))*(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+
+initval;
+y = 1;
+c = 0.7;
+h = 0.1;
+k = 11;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+Sigma_e = [ 0.01 0.005; 0.01];
+
+stoch_simul(irf=0);
+
diff --git a/tags/v_3.062/tests/variance_0.mod b/tags/v_3.062/tests/variance_0.mod
new file mode 100644
index 0000000000..6fc272e7bd
--- /dev/null
+++ b/tags/v_3.062/tests/variance_0.mod
@@ -0,0 +1,42 @@
+// test setting variance to 0
+periods 400;
+
+var y, c, k, a, h, b;
+varexo e,u;
+
+parameters beta, rho, beta, alpha, delta, theta, psi, tau;
+
+alpha = 0.36;
+rho   = 0.95;
+tau   = 0.025;
+beta  = 0.99;
+delta = 0.025;
+psi   = 0;
+theta = 2.95;
+
+phi   = 0.1;
+
+model;
+c*theta*h^(1+psi)=(1-alpha)*y;
+k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
+    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
+y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
+k = exp(b)*(y-c)+(1-delta)*k(-1);
+a = rho*a(-1)+tau*b(-1) + e;
+b = tau*a(-1)+rho*b(-1) + u;
+end;
+
+initval;
+y = 1.08068253095672;
+c = 0.80359242014163;
+h = 0.29175631001732;
+k = 5;
+a = 0;
+b = 0;
+e = 0;
+u = 0;
+end;
+
+Sigma_e = [ 0.000081; (phi*0.009*0.009) 0];
+
+stoch_simul(order=1,irf=0,simul);
-- 
GitLab