]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
This commit was generated by cvs2git to create tag BR-D5-38-2003_D2005-12-10
authoradmin <salome-admin@opencascade.com>
Wed, 12 Oct 2005 11:17:22 +0000 (11:17 +0000)
committeradmin <salome-admin@opencascade.com>
Wed, 12 Oct 2005 11:17:22 +0000 (11:17 +0000)
'BR-D5-38-2003_D2005-12-10'.

Sprout from BR-D5-38-2003 2005-10-12 11:17:21 UTC apo <apo@opencascade.com> 'Adjust to CVS HEAD modifications'
Delete:
    ChangeLog
    LICENCE
    adm_local/unix/config_files/check_Geom.m4
    adm_local/unix/config_files/check_Med.m4
    adm_local/unix/make_conclude.in
    adm_local/unix/make_omniorb.in
    cvs-tags
    doc/Makefile.in
    doc/salome/AddNetgenInSalome2.pdf
    doc/salome/AddNetgenInSalome2.ps
    doc/salome/AddNetgenInSalome2.sxw
    doc/salome/PluginMeshers.txt
    doc/salome/gui/Makefile.in
    doc/salome/gui/SMESH/i_blue.jpg
    doc/salome/gui/SMESH/image22.gif
    doc/salome/gui/SMESH/image22.jpg
    doc/salome/gui/SMESH/image23.jpg
    doc/salome/gui/SMESH/image24.gif
    doc/salome/gui/SMESH/image25.gif
    doc/salome/gui/SMESH/image25.jpg
    doc/salome/gui/SMESH/image26.jpg
    doc/salome/gui/SMESH/image27.jpg
    doc/salome/gui/SMESH/image28.gif
    doc/salome/gui/SMESH/image30.jpg
    doc/salome/gui/SMESH/image31.jpg
    doc/salome/gui/SMESH/image32.gif
    doc/salome/gui/SMESH/image32.jpg
    doc/salome/gui/SMESH/image33.gif
    doc/salome/gui/SMESH/image34.gif
    doc/salome/gui/SMESH/image35.gif
    doc/salome/gui/SMESH/image36.gif
    doc/salome/gui/SMESH/image36.jpg
    doc/salome/gui/SMESH/image37.gif
    doc/salome/gui/SMESH/image38.gif
    doc/salome/gui/SMESH/image38.jpg
    doc/salome/gui/SMESH/image39.gif
    doc/salome/gui/SMESH/image40.gif
    doc/salome/gui/SMESH/image41.gif
    doc/salome/gui/SMESH/image46.gif
    doc/salome/gui/SMESH/image51.jpg
    doc/salome/gui/SMESH/image52.jpg
    doc/salome/gui/SMESH/image63.gif
    doc/salome/gui/SMESH/image64.gif
    doc/salome/gui/SMESH/image67.gif
    doc/salome/gui/SMESH/image70.gif
    doc/salome/gui/SMESH/image70.jpg
    doc/salome/gui/SMESH/image71.gif
    doc/salome/gui/SMESH/image71.jpg
    doc/salome/gui/SMESH/image73.gif
    doc/salome/gui/SMESH/image74.gif
    doc/salome/gui/SMESH/image76.jpg
    doc/salome/gui/SMESH/image77.jpg
    doc/salome/gui/SMESH/image78.jpg
    doc/salome/gui/SMESH/image79.gif
    doc/salome/gui/SMESH/image80.gif
    doc/salome/gui/SMESH/image82.gif
    doc/salome/gui/SMESH/image83.gif
    doc/salome/gui/SMESH/image84.gif
    doc/salome/gui/SMESH/image88.gif
    doc/salome/gui/SMESH/image91.gif
    doc/salome/gui/SMESH/image92.gif
    doc/salome/gui/SMESH/image94.gif
    doc/salome/gui/SMESH/image95.gif
    doc/salome/gui/SMESH/image96.gif
    doc/salome/gui/SMESH/image97.gif
    doc/salome/gui/SMESH/image98.gif
    doc/salome/gui/SMESH/note1.gif
    doc/salome/gui/SMESH/pics/exemple.gif
    doc/salome/gui/SMESH/texture_horiz_ltbluebubbles.jpg
    doc/salome/gui/SMESH/whestart.ico
    doc/salome/gui/SMESH/whgdata/whexpbar.gif
    doc/salome/gui/SMESH/whrstart.ico
    doc/salome/gui/SMESH/whstart.ico
    doc/salome/gui/SMESH/wht_fts_h.gif
    doc/salome/gui/SMESH/wht_fts_n.gif
    doc/salome/gui/SMESH/wht_glo_h.gif
    doc/salome/gui/SMESH/wht_glo_n.gif
    doc/salome/gui/SMESH/wht_go.gif
    doc/salome/gui/SMESH/wht_hide.gif
    doc/salome/gui/SMESH/wht_idx_h.gif
    doc/salome/gui/SMESH/wht_idx_n.gif
    doc/salome/gui/SMESH/wht_logo1.gif
    doc/salome/gui/SMESH/wht_logo2.gif
    doc/salome/gui/SMESH/wht_next.gif
    doc/salome/gui/SMESH/wht_next_g.gif
    doc/salome/gui/SMESH/wht_prev.gif
    doc/salome/gui/SMESH/wht_prev_g.gif
    doc/salome/gui/SMESH/wht_spac.gif
    doc/salome/gui/SMESH/wht_sync.gif
    doc/salome/gui/SMESH/wht_tab0.gif
    doc/salome/gui/SMESH/wht_tab1.gif
    doc/salome/gui/SMESH/wht_tab2.gif
    doc/salome/gui/SMESH/wht_tab3.gif
    doc/salome/gui/SMESH/wht_tab4.gif
    doc/salome/gui/SMESH/wht_tab5.gif
    doc/salome/gui/SMESH/wht_tab6.gif
    doc/salome/gui/SMESH/wht_tab7.gif
    doc/salome/gui/SMESH/wht_tab8.gif
    doc/salome/gui/SMESH/wht_toc1.gif
    doc/salome/gui/SMESH/wht_toc2.gif
    doc/salome/gui/SMESH/wht_toc3.gif
    doc/salome/gui/SMESH/wht_toc4.gif
    doc/salome/gui/SMESH/wht_toc_h.gif
    doc/salome/gui/SMESH/wht_toc_n.gif
    doc/salome/gui/SMESH/wht_ws.gif
    doc/salome/gui/SMESH/wht_ws_g.gif
    doc/salome/tui/Makefile.in
    doc/salome/tui/SMESH/HTML/SMESH_BasicHypothesis.html
    doc/salome/tui/SMESH/HTML/SMESH_Gen.html
    doc/salome/tui/SMESH/HTML/SMESH_Hypothesis.html
    doc/salome/tui/SMESH/HTML/SMESH_Mesh.html
    doc/salome/tui/SMESH/sources/Application-About.png
    doc/salome/tui/SMESH/sources/Application-About1.jpg
    doc/salome/tui/SMESH/sources/application.gif
    doc/salome/tui/SMESH/sources/application.jpg
    doc/salome/tui/SMESH/sources/bg_salome.gif
    doc/salome/tui/SMESH/sources/logocorp.gif
    doc/salome/tui/SMESH/sources/myheader.html
    doc/salome/tui/SMESH/sources/myheader_py2.html
    doc/salome/tui/SMESH/sources/occ.gif
    doc/salome/tui/SMESH/sources/static/PluginMeshers.html
    doc/salome/tui/SMESH/sources/static/doxygen.css
    doc/salome/tui/SMESH/sources/static/page2.html
    doc/salome/tui/SMESH/sources/static/treeview.js
    idl/Makefile.in
    idl/SMESH_Group.idl
    idl/SMESH_Hypothesis.idl
    idl/SMESH_Pattern.idl
    resources/ModuleMesh.png
    resources/SMESH.config
    resources/SMESH_en.xml
    resources/SMESH_fr.xml
    resources/advanced_mesh_info.png
    resources/delete.png
    resources/mesh.png
    resources/mesh_add.png
    resources/mesh_add_sub.png
    resources/mesh_algo_hexa.png
    resources/mesh_algo_mefisto.png
    resources/mesh_algo_netgen.png
    resources/mesh_algo_quad.png
    resources/mesh_algo_regular.png
    resources/mesh_algo_tetra.png
    resources/mesh_angle.png
    resources/mesh_area.png
    resources/mesh_aspect.png
    resources/mesh_aspect_3d.png
    resources/mesh_compute.png
    resources/mesh_connectivity.png
    resources/mesh_cutGroups.png
    resources/mesh_cutquad.png
    resources/mesh_deleteGroups.png
    resources/mesh_diagonal.png
    resources/mesh_edit.png
    resources/mesh_edit_group.png
    resources/mesh_extrusion.png
    resources/mesh_extrusionpath.png
    resources/mesh_free_edges.png
    resources/mesh_free_edges_2d.png
    resources/mesh_hexa.png
    resources/mesh_hexa_n.png
    resources/mesh_hypo_area.png
    resources/mesh_hypo_edit.png
    resources/mesh_hypo_length.png
    resources/mesh_hypo_segment.png
    resources/mesh_hypo_volume.png
    resources/mesh_info.png
    resources/mesh_init.png
    resources/mesh_intersectGroups.png
    resources/mesh_length.png
    resources/mesh_length_2d.png
    resources/mesh_line.png
    resources/mesh_line_n.png
    resources/mesh_make_group.png
    resources/mesh_merge_elements.png
    resources/mesh_merge_nodes.png
    resources/mesh_move_node.png
    resources/mesh_multi_edges.png
    resources/mesh_multi_edges_2d.png
    resources/mesh_orientation.png
    resources/mesh_pattern.png
    resources/mesh_points.png
    resources/mesh_polygon.png
    resources/mesh_polyhedron.png
    resources/mesh_pyramid.png
    resources/mesh_pyramid_n.png
    resources/mesh_quad.png
    resources/mesh_quad_n.png
    resources/mesh_rem_element.png
    resources/mesh_rem_node.png
    resources/mesh_remove.png
    resources/mesh_renumbering_elements.png
    resources/mesh_renumbering_nodes.png
    resources/mesh_revolution.png
    resources/mesh_rotation.png
    resources/mesh_set_algo.png
    resources/mesh_set_hypo.png
    resources/mesh_sew_bordertoside.png
    resources/mesh_sew_conform_freeborders.png
    resources/mesh_sew_freeborders.png
    resources/mesh_sew_sideelements.png
    resources/mesh_shading.png
    resources/mesh_shrink.png
    resources/mesh_skew.png
    resources/mesh_smoothing.png
    resources/mesh_symmetry_axis.png
    resources/mesh_symmetry_plane.png
    resources/mesh_symmetry_point.png
    resources/mesh_taper.png
    resources/mesh_tetra.png
    resources/mesh_tetra_n.png
    resources/mesh_translation_points.png
    resources/mesh_translation_vector.png
    resources/mesh_tree_algo.png
    resources/mesh_tree_algo_hexa.png
    resources/mesh_tree_algo_mefisto.png
    resources/mesh_tree_algo_netgen.png
    resources/mesh_tree_algo_quad.png
    resources/mesh_tree_algo_regular.png
    resources/mesh_tree_algo_tetra.png
    resources/mesh_tree_group.png
    resources/mesh_tree_hypo.png
    resources/mesh_tree_hypo_area.png
    resources/mesh_tree_hypo_length.png
    resources/mesh_tree_hypo_segment.png
    resources/mesh_tree_hypo_volume.png
    resources/mesh_tree_importedmesh.png
    resources/mesh_tree_mesh.png
    resources/mesh_tree_mesh_warn.png
    resources/mesh_triangle.png
    resources/mesh_triangle_n.png
    resources/mesh_union2tri.png
    resources/mesh_unionGroups.png
    resources/mesh_uniontri.png
    resources/mesh_update.png
    resources/mesh_vertex.png
    resources/mesh_vertex_n.png
    resources/mesh_wireframe.png
    resources/mesh_wrap.png
    resources/pattern_sample_2d.png
    resources/pattern_sample_3D.png
    resources/select1.png
    resources/standard_mesh_info.png
    src/Controls/SMESHControls.cxx
    src/Controls/SMESH_Controls.hxx
    src/Controls/SMESH_ControlsDef.hxx
    src/Driver/Driver_Document.cxx
    src/Driver/Driver_Document.h
    src/Driver/Driver_Mesh.cxx
    src/Driver/Driver_Mesh.h
    src/Driver/Driver_SMDS_Mesh.cxx
    src/Driver/Driver_SMDS_Mesh.h
    src/Driver/Driver_SMESHDS_Mesh.cxx
    src/Driver/Driver_SMESHDS_Mesh.h
    src/Driver/Makefile.in
    src/DriverDAT/DAT_Test.cxx
    src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx
    src/DriverDAT/DriverDAT_R_SMDS_Mesh.h
    src/DriverDAT/DriverDAT_R_SMESHDS_Document.cxx
    src/DriverDAT/DriverDAT_R_SMESHDS_Document.h
    src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx
    src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.h
    src/DriverDAT/DriverDAT_W_SMDS_Mesh.cxx
    src/DriverDAT/DriverDAT_W_SMDS_Mesh.h
    src/DriverDAT/DriverDAT_W_SMESHDS_Document.cxx
    src/DriverDAT/DriverDAT_W_SMESHDS_Document.h
    src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx
    src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.h
    src/DriverMED/DriverMED_Family.cxx
    src/DriverMED/DriverMED_Family.h
    src/DriverMED/DriverMED_R_SMDS_Mesh.cxx
    src/DriverMED/DriverMED_R_SMDS_Mesh.h
    src/DriverMED/DriverMED_R_SMESHDS_Document.cxx
    src/DriverMED/DriverMED_R_SMESHDS_Document.h
    src/DriverMED/DriverMED_R_SMESHDS_Mesh.h
    src/DriverMED/DriverMED_W_SMDS_Mesh.cxx
    src/DriverMED/DriverMED_W_SMDS_Mesh.h
    src/DriverMED/DriverMED_W_SMESHDS_Document.cxx
    src/DriverMED/DriverMED_W_SMESHDS_Document.h
    src/DriverMED/DriverMED_W_SMESHDS_Mesh.h
    src/DriverMED/MED_Test.cxx
    src/DriverSTL/DriverSTL_R_SMDS_Mesh.cxx
    src/DriverSTL/DriverSTL_R_SMDS_Mesh.h
    src/DriverSTL/DriverSTL_W_SMDS_Mesh.cxx
    src/DriverSTL/DriverSTL_W_SMDS_Mesh.h
    src/DriverSTL/STL_Test.cxx
    src/DriverUNV/DriverUNV_R_SMDS_Mesh.h
    src/DriverUNV/DriverUNV_R_SMESHDS_Document.cxx
    src/DriverUNV/DriverUNV_R_SMESHDS_Document.h
    src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx
    src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.h
    src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx
    src/DriverUNV/DriverUNV_W_SMDS_Mesh.h
    src/DriverUNV/DriverUNV_W_SMESHDS_Document.cxx
    src/DriverUNV/DriverUNV_W_SMESHDS_Document.h
    src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx
    src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.h
    src/DriverUNV/UNV2411_Structure.cxx
    src/DriverUNV/UNV2411_Structure.hxx
    src/DriverUNV/UNV2412_Structure.cxx
    src/DriverUNV/UNV2412_Structure.hxx
    src/DriverUNV/UNV_Test.cxx
    src/DriverUNV/UNV_Utilities.cxx
    src/DriverUNV/UNV_Utilities.hxx
    src/MEFISTO2/Rn.h
    src/MEFISTO2/aptrte.cxx
    src/MEFISTO2/aptrte.h
    src/MEFISTO2/areteideale.f
    src/MEFISTO2/trte.f
    src/Makefile.in
    src/NETGEN/Makefile.in
    src/NETGEN/ReadMeForNgUsers
    src/NETGEN/netgen43ForSalome.patch
    src/NETGENPlugin/Makefile.in
    src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.cxx
    src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.hxx
    src/NETGENPlugin/NETGENPlugin_i.cxx
    src/NETGENPlugin/NETGENPlugin_icons.po
    src/OBJECT/Makefile.in
    src/OBJECT/SMESH_Actor.cxx
    src/OBJECT/SMESH_Actor.h
    src/OBJECT/SMESH_ActorDef.h
    src/OBJECT/SMESH_ActorUtils.cxx
    src/OBJECT/SMESH_ActorUtils.h
    src/OBJECT/SMESH_DeviceActor.cxx
    src/OBJECT/SMESH_DeviceActor.h
    src/OBJECT/SMESH_ExtractGeometry.cxx
    src/OBJECT/SMESH_ExtractGeometry.h
    src/OBJECT/SMESH_Object.cxx
    src/OBJECT/SMESH_Object.h
    src/OBJECT/SMESH_ObjectDef.h
    src/SMDS/Makefile.in
    src/SMDS/SMDSAbs_ElementType.hxx
    src/SMDS/SMDS_EdgePosition.cxx
    src/SMDS/SMDS_EdgePosition.hxx
    src/SMDS/SMDS_ElemIterator.hxx
    src/SMDS/SMDS_FaceOfEdges.cxx
    src/SMDS/SMDS_FaceOfEdges.hxx
    src/SMDS/SMDS_FaceOfNodes.cxx
    src/SMDS/SMDS_FaceOfNodes.hxx
    src/SMDS/SMDS_FacePosition.cxx
    src/SMDS/SMDS_FacePosition.hxx
    src/SMDS/SMDS_Iterator.hxx
    src/SMDS/SMDS_IteratorOfElements.cxx
    src/SMDS/SMDS_IteratorOfElements.hxx
    src/SMDS/SMDS_Mesh.cxx
    src/SMDS/SMDS_Mesh.hxx
    src/SMDS/SMDS_MeshEdge.cxx
    src/SMDS/SMDS_MeshEdge.hxx
    src/SMDS/SMDS_MeshElement.cxx
    src/SMDS/SMDS_MeshElement.hxx
    src/SMDS/SMDS_MeshElementIDFactory.cxx
    src/SMDS/SMDS_MeshElementIDFactory.hxx
    src/SMDS/SMDS_MeshFace.cxx
    src/SMDS/SMDS_MeshFace.hxx
    src/SMDS/SMDS_MeshGroup.cxx
    src/SMDS/SMDS_MeshGroup.hxx
    src/SMDS/SMDS_MeshIDFactory.cxx
    src/SMDS/SMDS_MeshIDFactory.hxx
    src/SMDS/SMDS_MeshNode.cxx
    src/SMDS/SMDS_MeshNode.hxx
    src/SMDS/SMDS_MeshObject.cxx
    src/SMDS/SMDS_MeshObject.hxx
    src/SMDS/SMDS_MeshVolume.cxx
    src/SMDS/SMDS_MeshVolume.hxx
    src/SMDS/SMDS_PolygonalFaceOfNodes.cxx
    src/SMDS/SMDS_PolygonalFaceOfNodes.hxx
    src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx
    src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx
    src/SMDS/SMDS_Position.cxx
    src/SMDS/SMDS_Position.hxx
    src/SMDS/SMDS_SpacePosition.cxx
    src/SMDS/SMDS_SpacePosition.hxx
    src/SMDS/SMDS_TypeOfPosition.hxx
    src/SMDS/SMDS_VertexPosition.cxx
    src/SMDS/SMDS_VertexPosition.hxx
    src/SMDS/SMDS_VolumeOfFaces.cxx
    src/SMDS/SMDS_VolumeOfFaces.hxx
    src/SMDS/SMDS_VolumeOfNodes.cxx
    src/SMDS/SMDS_VolumeOfNodes.hxx
    src/SMDS/SMDS_VolumeTool.hxx
    src/SMESH/SMESH_1D_Algo.cxx
    src/SMESH/SMESH_1D_Algo.hxx
    src/SMESH/SMESH_2D_Algo.cxx
    src/SMESH/SMESH_2D_Algo.hxx
    src/SMESH/SMESH_3D_Algo.cxx
    src/SMESH/SMESH_3D_Algo.hxx
    src/SMESH/SMESH_Block.cxx
    src/SMESH/SMESH_Block.hxx
    src/SMESH/SMESH_Group.cxx
    src/SMESH/SMESH_Group.hxx
    src/SMESH/SMESH_HypoFilter.cxx
    src/SMESH/SMESH_HypoFilter.hxx
    src/SMESH/SMESH_Hypothesis.cxx
    src/SMESH/SMESH_Hypothesis.hxx
    src/SMESH/SMESH_Mesh.cxx
    src/SMESH/SMESH_Mesh.hxx
    src/SMESH/SMESH_subMesh.hxx
    src/SMESHDS/Makefile.in
    src/SMESHDS/SMESHDS_Command.cxx
    src/SMESHDS/SMESHDS_Command.hxx
    src/SMESHDS/SMESHDS_CommandType.hxx
    src/SMESHDS/SMESHDS_Document.cxx
    src/SMESHDS/SMESHDS_Document.hxx
    src/SMESHDS/SMESHDS_Group.cxx
    src/SMESHDS/SMESHDS_Group.hxx
    src/SMESHDS/SMESHDS_GroupBase.cxx
    src/SMESHDS/SMESHDS_GroupBase.hxx
    src/SMESHDS/SMESHDS_GroupOnGeom.cxx
    src/SMESHDS/SMESHDS_GroupOnGeom.hxx
    src/SMESHDS/SMESHDS_Hypothesis.cxx
    src/SMESHDS/SMESHDS_Hypothesis.hxx
    src/SMESHDS/SMESHDS_Mesh.cxx
    src/SMESHDS/SMESHDS_Script.cxx
    src/SMESHDS/SMESHDS_Script.hxx
    src/SMESHDS/SMESHDS_SubMesh.cxx
    src/SMESHDS/SMESHDS_SubMesh.hxx
    src/SMESHFiltersSelection/Handle_SMESH_TypeFilter.hxx
    src/SMESHFiltersSelection/SMESH_TypeFilter.ixx
    src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.h
    src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx
    src/SMESHGUI/SMESHGUI_Filter.cxx
    src/SMESHGUI/SMESHGUI_Filter.h
    src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx
    src/SMESHGUI/SMESHGUI_FilterLibraryDlg.h
    src/SMESHGUI/SMESHGUI_FilterUtils.cxx
    src/SMESHGUI/SMESHGUI_FilterUtils.h
    src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx
    src/SMESHGUI/SMESHGUI_GEOMGenUtils.h
    src/SMESHGUI/SMESHGUI_GroupDlg.cxx
    src/SMESHGUI/SMESHGUI_GroupUtils.cxx
    src/SMESHGUI/SMESHGUI_GroupUtils.h
    src/SMESHGUI/SMESHGUI_IdValidator.h
    src/SMESHGUI/SMESHGUI_MeshUtils.cxx
    src/SMESHGUI/SMESHGUI_MeshUtils.h
    src/SMESHGUI/SMESHGUI_PatternUtils.cxx
    src/SMESHGUI/SMESHGUI_PatternUtils.h
    src/SMESHGUI/SMESHGUI_PatternWidget.cxx
    src/SMESHGUI/SMESHGUI_PatternWidget.h
    src/SMESHGUI/SMESHGUI_PrecisionDlg.cxx
    src/SMESHGUI/SMESHGUI_PrecisionDlg.h
    src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.cxx
    src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h
    src/SMESHGUI/SMESHGUI_Preferences_SelectionDlg.cxx
    src/SMESHGUI/SMESHGUI_Preferences_SelectionDlg.h
    src/SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx
    src/SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx
    src/SMESHGUI/SMESHGUI_SMESHGenUtils.cxx
    src/SMESHGUI/SMESHGUI_SMESHGenUtils.h
    src/SMESHGUI/SMESHGUI_SpinBox.cxx
    src/SMESHGUI/SMESHGUI_SpinBox.h
    src/SMESHGUI/SMESHGUI_Swig.cxx
    src/SMESHGUI/SMESHGUI_Swig.hxx
    src/SMESHGUI/SMESHGUI_Swig.i
    src/SMESHGUI/SMESH_icons.po
    src/SMESH_I/SMESH.hxx
    src/SMESH_I/SMESHEngine.cxx
    src/SMESH_I/SMESH_1D_Algo_i.cxx
    src/SMESH_I/SMESH_1D_Algo_i.hxx
    src/SMESH_I/SMESH_2D_Algo_i.cxx
    src/SMESH_I/SMESH_2D_Algo_i.hxx
    src/SMESH_I/SMESH_3D_Algo_i.cxx
    src/SMESH_I/SMESH_3D_Algo_i.hxx
    src/SMESH_I/SMESH_Algo_i.cxx
    src/SMESH_I/SMESH_Algo_i.hxx
    src/SMESH_I/SMESH_Gen_i_1.cxx
    src/SMESH_I/SMESH_Group_i.hxx
    src/SMESH_I/SMESH_Hypothesis_i.cxx
    src/SMESH_I/SMESH_Hypothesis_i.hxx
    src/SMESH_I/SMESH_MEDFamily_i.cxx
    src/SMESH_I/SMESH_MEDFamily_i.hxx
    src/SMESH_I/SMESH_MEDMesh_i.cxx
    src/SMESH_I/SMESH_MEDSupport_i.cxx
    src/SMESH_I/SMESH_MEDSupport_i.hxx
    src/SMESH_I/SMESH_Mesh_i.hxx
    src/SMESH_I/SMESH_Pattern_i.hxx
    src/SMESH_I/SMESH_subMesh_i.cxx
    src/SMESH_I/SMESH_subMesh_i.hxx
    src/SMESH_I/smeshpy.py
    src/SMESH_SWIG/Makefile.in
    src/SMESH_SWIG/PAL_MESH_041_mesh.py
    src/SMESH_SWIG/PAL_MESH_043_2D.py
    src/SMESH_SWIG/PAL_MESH_043_3D.py
    src/SMESH_SWIG/SMESH_BelongToGeom.py
    src/SMESH_SWIG/SMESH_GroupFromGeom.py
    src/SMESH_SWIG/SMESH_GroupFromGeom2.py
    src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py
    src/SMESH_SWIG/SMESH_Partition1_tetra.py
    src/SMESH_SWIG/SMESH_Sphere.py
    src/SMESH_SWIG/SMESH_blocks.py
    src/SMESH_SWIG/SMESH_box.py
    src/SMESH_SWIG/SMESH_box2_tetra.py
    src/SMESH_SWIG/SMESH_box3_tetra.py
    src/SMESH_SWIG/SMESH_box_tetra.py
    src/SMESH_SWIG/SMESH_controls.py
    src/SMESH_SWIG/SMESH_demo_hexa2_upd.py
    src/SMESH_SWIG/SMESH_fixation.py
    src/SMESH_SWIG/SMESH_fixation_hexa.py
    src/SMESH_SWIG/SMESH_fixation_tetra.py
    src/SMESH_SWIG/SMESH_freebord.py
    src/SMESH_SWIG/SMESH_hexaedre.py
    src/SMESH_SWIG/SMESH_mechanic.py
    src/SMESH_SWIG/SMESH_mechanic_editor.py
    src/SMESH_SWIG/SMESH_mechanic_tetra.py
    src/SMESH_SWIG/SMESH_shared_modules.py
    src/SMESH_SWIG/SMESH_test.py
    src/SMESH_SWIG/SMESH_test0.py
    src/SMESH_SWIG/SMESH_test1.py
    src/SMESH_SWIG/SMESH_test2.py
    src/SMESH_SWIG/SMESH_test3.py
    src/SMESH_SWIG/SMESH_test4.py
    src/SMESH_SWIG/batchmode_mefisto.py
    src/SMESH_SWIG/batchmode_smesh.py
    src/SMESH_SWIG/ex00_all.py
    src/SMESH_SWIG/ex01_cube2build.py
    src/SMESH_SWIG/ex02_cube2primitive.py
    src/SMESH_SWIG/ex03_cube2partition.py
    src/SMESH_SWIG/ex04_cube5tetraHexa.py
    src/SMESH_SWIG/ex05_hole1build.py
    src/SMESH_SWIG/ex06_hole1boolean.py
    src/SMESH_SWIG/ex07_hole1partition.py
    src/SMESH_SWIG/ex08_hole2build.py
    src/SMESH_SWIG/ex09_grid4build.py
    src/SMESH_SWIG/ex10_grid4geometry.py
    src/SMESH_SWIG/ex11_grid3partition.py
    src/SMESH_SWIG/ex12_grid17partition.py
    src/SMESH_SWIG/ex13_hole1partial.py
    src/SMESH_SWIG/ex14_cyl1holed.py
    src/SMESH_SWIG/ex15_cyl2geometry.py
    src/SMESH_SWIG/ex16_cyl2complementary.py
    src/SMESH_SWIG/ex17_dome1.py
    src/SMESH_SWIG/ex18_dome2.py
    src/SMESH_SWIG/ex19_sphereINcube.py
    src/SMESH_SWIG/libSMESH_Swig.i
    src/StdMeshers/StdMeshers_Arithmetic1D.cxx
    src/StdMeshers/StdMeshers_Arithmetic1D.hxx
    src/StdMeshers/StdMeshers_Deflection1D.cxx
    src/StdMeshers/StdMeshers_Deflection1D.hxx
    src/StdMeshers/StdMeshers_Hexa_3D.cxx
    src/StdMeshers/StdMeshers_Hexa_3D.hxx
    src/StdMeshers/StdMeshers_LengthFromEdges.cxx
    src/StdMeshers/StdMeshers_LengthFromEdges.hxx
    src/StdMeshers/StdMeshers_LocalLength.cxx
    src/StdMeshers/StdMeshers_LocalLength.hxx
    src/StdMeshers/StdMeshers_MEFISTO_2D.cxx
    src/StdMeshers/StdMeshers_MEFISTO_2D.hxx
    src/StdMeshers/StdMeshers_MaxElementArea.cxx
    src/StdMeshers/StdMeshers_MaxElementArea.hxx
    src/StdMeshers/StdMeshers_MaxElementVolume.cxx
    src/StdMeshers/StdMeshers_MaxElementVolume.hxx
    src/StdMeshers/StdMeshers_NotConformAllowed.cxx
    src/StdMeshers/StdMeshers_NotConformAllowed.hxx
    src/StdMeshers/StdMeshers_Penta_3D.cxx
    src/StdMeshers/StdMeshers_Penta_3D.hxx
    src/StdMeshers/StdMeshers_Propagation.cxx
    src/StdMeshers/StdMeshers_Propagation.hxx
    src/StdMeshers/StdMeshers_StartEndLength.cxx
    src/StdMeshers/StdMeshers_StartEndLength.hxx
    src/StdMeshers_I/StdMeshers_Arithmetic1D_i.hxx
    src/StdMeshers_I/StdMeshers_Deflection1D_i.hxx
    src/StdMeshers_I/StdMeshers_Hexa_3D_i.cxx
    src/StdMeshers_I/StdMeshers_Hexa_3D_i.hxx
    src/StdMeshers_I/StdMeshers_LengthFromEdges_i.cxx
    src/StdMeshers_I/StdMeshers_LengthFromEdges_i.hxx
    src/StdMeshers_I/StdMeshers_LocalLength_i.hxx
    src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx
    src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx
    src/StdMeshers_I/StdMeshers_MaxElementArea_i.hxx
    src/StdMeshers_I/StdMeshers_MaxElementVolume_i.hxx
    src/StdMeshers_I/StdMeshers_NotConformAllowed_i.cxx
    src/StdMeshers_I/StdMeshers_NotConformAllowed_i.hxx
    src/StdMeshers_I/StdMeshers_Propagation_i.cxx
    src/StdMeshers_I/StdMeshers_Propagation_i.hxx
    src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.cxx
    src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.hxx
    src/StdMeshers_I/StdMeshers_Regular_1D_i.cxx
    src/StdMeshers_I/StdMeshers_Regular_1D_i.hxx
    src/StdMeshers_I/StdMeshers_StartEndLength_i.hxx

578 files changed:
ChangeLog [deleted file]
LICENCE [deleted file]
adm_local/unix/config_files/check_Geom.m4 [deleted file]
adm_local/unix/config_files/check_Med.m4 [deleted file]
adm_local/unix/make_conclude.in [deleted file]
adm_local/unix/make_omniorb.in [deleted file]
cvs-tags [deleted file]
doc/Makefile.in [deleted file]
doc/salome/AddNetgenInSalome2.pdf [deleted file]
doc/salome/AddNetgenInSalome2.ps [deleted file]
doc/salome/AddNetgenInSalome2.sxw [deleted file]
doc/salome/PluginMeshers.txt [deleted file]
doc/salome/gui/Makefile.in [deleted file]
doc/salome/gui/SMESH/i_blue.jpg [deleted file]
doc/salome/gui/SMESH/image22.gif [deleted file]
doc/salome/gui/SMESH/image22.jpg [deleted file]
doc/salome/gui/SMESH/image23.jpg [deleted file]
doc/salome/gui/SMESH/image24.gif [deleted file]
doc/salome/gui/SMESH/image25.gif [deleted file]
doc/salome/gui/SMESH/image25.jpg [deleted file]
doc/salome/gui/SMESH/image26.jpg [deleted file]
doc/salome/gui/SMESH/image27.jpg [deleted file]
doc/salome/gui/SMESH/image28.gif [deleted file]
doc/salome/gui/SMESH/image30.jpg [deleted file]
doc/salome/gui/SMESH/image31.jpg [deleted file]
doc/salome/gui/SMESH/image32.gif [deleted file]
doc/salome/gui/SMESH/image32.jpg [deleted file]
doc/salome/gui/SMESH/image33.gif [deleted file]
doc/salome/gui/SMESH/image34.gif [deleted file]
doc/salome/gui/SMESH/image35.gif [deleted file]
doc/salome/gui/SMESH/image36.gif [deleted file]
doc/salome/gui/SMESH/image36.jpg [deleted file]
doc/salome/gui/SMESH/image37.gif [deleted file]
doc/salome/gui/SMESH/image38.gif [deleted file]
doc/salome/gui/SMESH/image38.jpg [deleted file]
doc/salome/gui/SMESH/image39.gif [deleted file]
doc/salome/gui/SMESH/image40.gif [deleted file]
doc/salome/gui/SMESH/image41.gif [deleted file]
doc/salome/gui/SMESH/image46.gif [deleted file]
doc/salome/gui/SMESH/image51.jpg [deleted file]
doc/salome/gui/SMESH/image52.jpg [deleted file]
doc/salome/gui/SMESH/image63.gif [deleted file]
doc/salome/gui/SMESH/image64.gif [deleted file]
doc/salome/gui/SMESH/image67.gif [deleted file]
doc/salome/gui/SMESH/image70.gif [deleted file]
doc/salome/gui/SMESH/image70.jpg [deleted file]
doc/salome/gui/SMESH/image71.gif [deleted file]
doc/salome/gui/SMESH/image71.jpg [deleted file]
doc/salome/gui/SMESH/image73.gif [deleted file]
doc/salome/gui/SMESH/image74.gif [deleted file]
doc/salome/gui/SMESH/image76.jpg [deleted file]
doc/salome/gui/SMESH/image77.jpg [deleted file]
doc/salome/gui/SMESH/image78.jpg [deleted file]
doc/salome/gui/SMESH/image79.gif [deleted file]
doc/salome/gui/SMESH/image80.gif [deleted file]
doc/salome/gui/SMESH/image82.gif [deleted file]
doc/salome/gui/SMESH/image83.gif [deleted file]
doc/salome/gui/SMESH/image84.gif [deleted file]
doc/salome/gui/SMESH/image88.gif [deleted file]
doc/salome/gui/SMESH/image91.gif [deleted file]
doc/salome/gui/SMESH/image92.gif [deleted file]
doc/salome/gui/SMESH/image94.gif [deleted file]
doc/salome/gui/SMESH/image95.gif [deleted file]
doc/salome/gui/SMESH/image96.gif [deleted file]
doc/salome/gui/SMESH/image97.gif [deleted file]
doc/salome/gui/SMESH/image98.gif [deleted file]
doc/salome/gui/SMESH/note1.gif [deleted file]
doc/salome/gui/SMESH/pics/exemple.gif [deleted file]
doc/salome/gui/SMESH/texture_horiz_ltbluebubbles.jpg [deleted file]
doc/salome/gui/SMESH/whestart.ico [deleted file]
doc/salome/gui/SMESH/whgdata/whexpbar.gif [deleted file]
doc/salome/gui/SMESH/whrstart.ico [deleted file]
doc/salome/gui/SMESH/whstart.ico [deleted file]
doc/salome/gui/SMESH/wht_fts_h.gif [deleted file]
doc/salome/gui/SMESH/wht_fts_n.gif [deleted file]
doc/salome/gui/SMESH/wht_glo_h.gif [deleted file]
doc/salome/gui/SMESH/wht_glo_n.gif [deleted file]
doc/salome/gui/SMESH/wht_go.gif [deleted file]
doc/salome/gui/SMESH/wht_hide.gif [deleted file]
doc/salome/gui/SMESH/wht_idx_h.gif [deleted file]
doc/salome/gui/SMESH/wht_idx_n.gif [deleted file]
doc/salome/gui/SMESH/wht_logo1.gif [deleted file]
doc/salome/gui/SMESH/wht_logo2.gif [deleted file]
doc/salome/gui/SMESH/wht_next.gif [deleted file]
doc/salome/gui/SMESH/wht_next_g.gif [deleted file]
doc/salome/gui/SMESH/wht_prev.gif [deleted file]
doc/salome/gui/SMESH/wht_prev_g.gif [deleted file]
doc/salome/gui/SMESH/wht_spac.gif [deleted file]
doc/salome/gui/SMESH/wht_sync.gif [deleted file]
doc/salome/gui/SMESH/wht_tab0.gif [deleted file]
doc/salome/gui/SMESH/wht_tab1.gif [deleted file]
doc/salome/gui/SMESH/wht_tab2.gif [deleted file]
doc/salome/gui/SMESH/wht_tab3.gif [deleted file]
doc/salome/gui/SMESH/wht_tab4.gif [deleted file]
doc/salome/gui/SMESH/wht_tab5.gif [deleted file]
doc/salome/gui/SMESH/wht_tab6.gif [deleted file]
doc/salome/gui/SMESH/wht_tab7.gif [deleted file]
doc/salome/gui/SMESH/wht_tab8.gif [deleted file]
doc/salome/gui/SMESH/wht_toc1.gif [deleted file]
doc/salome/gui/SMESH/wht_toc2.gif [deleted file]
doc/salome/gui/SMESH/wht_toc3.gif [deleted file]
doc/salome/gui/SMESH/wht_toc4.gif [deleted file]
doc/salome/gui/SMESH/wht_toc_h.gif [deleted file]
doc/salome/gui/SMESH/wht_toc_n.gif [deleted file]
doc/salome/gui/SMESH/wht_ws.gif [deleted file]
doc/salome/gui/SMESH/wht_ws_g.gif [deleted file]
doc/salome/tui/Makefile.in [deleted file]
doc/salome/tui/SMESH/HTML/SMESH_BasicHypothesis.html [deleted file]
doc/salome/tui/SMESH/HTML/SMESH_Gen.html [deleted file]
doc/salome/tui/SMESH/HTML/SMESH_Hypothesis.html [deleted file]
doc/salome/tui/SMESH/HTML/SMESH_Mesh.html [deleted file]
doc/salome/tui/SMESH/sources/Application-About.png [deleted file]
doc/salome/tui/SMESH/sources/Application-About1.jpg [deleted file]
doc/salome/tui/SMESH/sources/application.gif [deleted file]
doc/salome/tui/SMESH/sources/application.jpg [deleted file]
doc/salome/tui/SMESH/sources/bg_salome.gif [deleted file]
doc/salome/tui/SMESH/sources/logocorp.gif [deleted file]
doc/salome/tui/SMESH/sources/myheader.html [deleted file]
doc/salome/tui/SMESH/sources/myheader_py2.html [deleted file]
doc/salome/tui/SMESH/sources/occ.gif [deleted file]
doc/salome/tui/SMESH/sources/static/PluginMeshers.html [deleted file]
doc/salome/tui/SMESH/sources/static/doxygen.css [deleted file]
doc/salome/tui/SMESH/sources/static/page2.html [deleted file]
doc/salome/tui/SMESH/sources/static/treeview.js [deleted file]
idl/Makefile.in [deleted file]
idl/SMESH_Group.idl [deleted file]
idl/SMESH_Hypothesis.idl [deleted file]
idl/SMESH_Pattern.idl [deleted file]
resources/ModuleMesh.png [deleted file]
resources/SMESH.config [deleted file]
resources/SMESH_en.xml [deleted file]
resources/SMESH_fr.xml [deleted file]
resources/advanced_mesh_info.png [deleted file]
resources/delete.png [deleted file]
resources/mesh.png [deleted file]
resources/mesh_add.png [deleted file]
resources/mesh_add_sub.png [deleted file]
resources/mesh_algo_hexa.png [deleted file]
resources/mesh_algo_mefisto.png [deleted file]
resources/mesh_algo_netgen.png [deleted file]
resources/mesh_algo_quad.png [deleted file]
resources/mesh_algo_regular.png [deleted file]
resources/mesh_algo_tetra.png [deleted file]
resources/mesh_angle.png [deleted file]
resources/mesh_area.png [deleted file]
resources/mesh_aspect.png [deleted file]
resources/mesh_aspect_3d.png [deleted file]
resources/mesh_compute.png [deleted file]
resources/mesh_connectivity.png [deleted file]
resources/mesh_cutGroups.png [deleted file]
resources/mesh_cutquad.png [deleted file]
resources/mesh_deleteGroups.png [deleted file]
resources/mesh_diagonal.png [deleted file]
resources/mesh_edit.png [deleted file]
resources/mesh_edit_group.png [deleted file]
resources/mesh_extrusion.png [deleted file]
resources/mesh_extrusionpath.png [deleted file]
resources/mesh_free_edges.png [deleted file]
resources/mesh_free_edges_2d.png [deleted file]
resources/mesh_hexa.png [deleted file]
resources/mesh_hexa_n.png [deleted file]
resources/mesh_hypo_area.png [deleted file]
resources/mesh_hypo_edit.png [deleted file]
resources/mesh_hypo_length.png [deleted file]
resources/mesh_hypo_segment.png [deleted file]
resources/mesh_hypo_volume.png [deleted file]
resources/mesh_info.png [deleted file]
resources/mesh_init.png [deleted file]
resources/mesh_intersectGroups.png [deleted file]
resources/mesh_length.png [deleted file]
resources/mesh_length_2d.png [deleted file]
resources/mesh_line.png [deleted file]
resources/mesh_line_n.png [deleted file]
resources/mesh_make_group.png [deleted file]
resources/mesh_merge_elements.png [deleted file]
resources/mesh_merge_nodes.png [deleted file]
resources/mesh_move_node.png [deleted file]
resources/mesh_multi_edges.png [deleted file]
resources/mesh_multi_edges_2d.png [deleted file]
resources/mesh_orientation.png [deleted file]
resources/mesh_pattern.png [deleted file]
resources/mesh_points.png [deleted file]
resources/mesh_polygon.png [deleted file]
resources/mesh_polyhedron.png [deleted file]
resources/mesh_pyramid.png [deleted file]
resources/mesh_pyramid_n.png [deleted file]
resources/mesh_quad.png [deleted file]
resources/mesh_quad_n.png [deleted file]
resources/mesh_rem_element.png [deleted file]
resources/mesh_rem_node.png [deleted file]
resources/mesh_remove.png [deleted file]
resources/mesh_renumbering_elements.png [deleted file]
resources/mesh_renumbering_nodes.png [deleted file]
resources/mesh_revolution.png [deleted file]
resources/mesh_rotation.png [deleted file]
resources/mesh_set_algo.png [deleted file]
resources/mesh_set_hypo.png [deleted file]
resources/mesh_sew_bordertoside.png [deleted file]
resources/mesh_sew_conform_freeborders.png [deleted file]
resources/mesh_sew_freeborders.png [deleted file]
resources/mesh_sew_sideelements.png [deleted file]
resources/mesh_shading.png [deleted file]
resources/mesh_shrink.png [deleted file]
resources/mesh_skew.png [deleted file]
resources/mesh_smoothing.png [deleted file]
resources/mesh_symmetry_axis.png [deleted file]
resources/mesh_symmetry_plane.png [deleted file]
resources/mesh_symmetry_point.png [deleted file]
resources/mesh_taper.png [deleted file]
resources/mesh_tetra.png [deleted file]
resources/mesh_tetra_n.png [deleted file]
resources/mesh_translation_points.png [deleted file]
resources/mesh_translation_vector.png [deleted file]
resources/mesh_tree_algo.png [deleted file]
resources/mesh_tree_algo_hexa.png [deleted file]
resources/mesh_tree_algo_mefisto.png [deleted file]
resources/mesh_tree_algo_netgen.png [deleted file]
resources/mesh_tree_algo_quad.png [deleted file]
resources/mesh_tree_algo_regular.png [deleted file]
resources/mesh_tree_algo_tetra.png [deleted file]
resources/mesh_tree_group.png [deleted file]
resources/mesh_tree_hypo.png [deleted file]
resources/mesh_tree_hypo_area.png [deleted file]
resources/mesh_tree_hypo_length.png [deleted file]
resources/mesh_tree_hypo_segment.png [deleted file]
resources/mesh_tree_hypo_volume.png [deleted file]
resources/mesh_tree_importedmesh.png [deleted file]
resources/mesh_tree_mesh.png [deleted file]
resources/mesh_tree_mesh_warn.png [deleted file]
resources/mesh_triangle.png [deleted file]
resources/mesh_triangle_n.png [deleted file]
resources/mesh_union2tri.png [deleted file]
resources/mesh_unionGroups.png [deleted file]
resources/mesh_uniontri.png [deleted file]
resources/mesh_update.png [deleted file]
resources/mesh_vertex.png [deleted file]
resources/mesh_vertex_n.png [deleted file]
resources/mesh_wireframe.png [deleted file]
resources/mesh_wrap.png [deleted file]
resources/pattern_sample_2d.png [deleted file]
resources/pattern_sample_3D.png [deleted file]
resources/select1.png [deleted file]
resources/standard_mesh_info.png [deleted file]
src/Controls/SMESHControls.cxx [deleted file]
src/Controls/SMESH_Controls.hxx [deleted file]
src/Controls/SMESH_ControlsDef.hxx [deleted file]
src/Driver/Driver_Document.cxx [deleted file]
src/Driver/Driver_Document.h [deleted file]
src/Driver/Driver_Mesh.cxx [deleted file]
src/Driver/Driver_Mesh.h [deleted file]
src/Driver/Driver_SMDS_Mesh.cxx [deleted file]
src/Driver/Driver_SMDS_Mesh.h [deleted file]
src/Driver/Driver_SMESHDS_Mesh.cxx [deleted file]
src/Driver/Driver_SMESHDS_Mesh.h [deleted file]
src/Driver/Makefile.in [deleted file]
src/DriverDAT/DAT_Test.cxx [deleted file]
src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx [deleted file]
src/DriverDAT/DriverDAT_R_SMDS_Mesh.h [deleted file]
src/DriverDAT/DriverDAT_R_SMESHDS_Document.cxx [deleted file]
src/DriverDAT/DriverDAT_R_SMESHDS_Document.h [deleted file]
src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx [deleted file]
src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.h [deleted file]
src/DriverDAT/DriverDAT_W_SMDS_Mesh.cxx [deleted file]
src/DriverDAT/DriverDAT_W_SMDS_Mesh.h [deleted file]
src/DriverDAT/DriverDAT_W_SMESHDS_Document.cxx [deleted file]
src/DriverDAT/DriverDAT_W_SMESHDS_Document.h [deleted file]
src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx [deleted file]
src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.h [deleted file]
src/DriverMED/DriverMED_Family.cxx [deleted file]
src/DriverMED/DriverMED_Family.h [deleted file]
src/DriverMED/DriverMED_R_SMDS_Mesh.cxx [deleted file]
src/DriverMED/DriverMED_R_SMDS_Mesh.h [deleted file]
src/DriverMED/DriverMED_R_SMESHDS_Document.cxx [deleted file]
src/DriverMED/DriverMED_R_SMESHDS_Document.h [deleted file]
src/DriverMED/DriverMED_R_SMESHDS_Mesh.h [deleted file]
src/DriverMED/DriverMED_W_SMDS_Mesh.cxx [deleted file]
src/DriverMED/DriverMED_W_SMDS_Mesh.h [deleted file]
src/DriverMED/DriverMED_W_SMESHDS_Document.cxx [deleted file]
src/DriverMED/DriverMED_W_SMESHDS_Document.h [deleted file]
src/DriverMED/DriverMED_W_SMESHDS_Mesh.h [deleted file]
src/DriverMED/MED_Test.cxx [deleted file]
src/DriverSTL/DriverSTL_R_SMDS_Mesh.cxx [deleted file]
src/DriverSTL/DriverSTL_R_SMDS_Mesh.h [deleted file]
src/DriverSTL/DriverSTL_W_SMDS_Mesh.cxx [deleted file]
src/DriverSTL/DriverSTL_W_SMDS_Mesh.h [deleted file]
src/DriverSTL/STL_Test.cxx [deleted file]
src/DriverUNV/DriverUNV_R_SMDS_Mesh.h [deleted file]
src/DriverUNV/DriverUNV_R_SMESHDS_Document.cxx [deleted file]
src/DriverUNV/DriverUNV_R_SMESHDS_Document.h [deleted file]
src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx [deleted file]
src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.h [deleted file]
src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx [deleted file]
src/DriverUNV/DriverUNV_W_SMDS_Mesh.h [deleted file]
src/DriverUNV/DriverUNV_W_SMESHDS_Document.cxx [deleted file]
src/DriverUNV/DriverUNV_W_SMESHDS_Document.h [deleted file]
src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx [deleted file]
src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.h [deleted file]
src/DriverUNV/UNV2411_Structure.cxx [deleted file]
src/DriverUNV/UNV2411_Structure.hxx [deleted file]
src/DriverUNV/UNV2412_Structure.cxx [deleted file]
src/DriverUNV/UNV2412_Structure.hxx [deleted file]
src/DriverUNV/UNV_Test.cxx [deleted file]
src/DriverUNV/UNV_Utilities.cxx [deleted file]
src/DriverUNV/UNV_Utilities.hxx [deleted file]
src/MEFISTO2/Rn.h [deleted file]
src/MEFISTO2/aptrte.cxx [deleted file]
src/MEFISTO2/aptrte.h [deleted file]
src/MEFISTO2/areteideale.f [deleted file]
src/MEFISTO2/trte.f [deleted file]
src/Makefile.in [deleted file]
src/NETGEN/Makefile.in [deleted file]
src/NETGEN/ReadMeForNgUsers [deleted file]
src/NETGEN/netgen43ForSalome.patch [deleted file]
src/NETGENPlugin/Makefile.in [deleted file]
src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.cxx [deleted file]
src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.hxx [deleted file]
src/NETGENPlugin/NETGENPlugin_i.cxx [deleted file]
src/NETGENPlugin/NETGENPlugin_icons.po [deleted file]
src/OBJECT/Makefile.in [deleted file]
src/OBJECT/SMESH_Actor.cxx [deleted file]
src/OBJECT/SMESH_Actor.h [deleted file]
src/OBJECT/SMESH_ActorDef.h [deleted file]
src/OBJECT/SMESH_ActorUtils.cxx [deleted file]
src/OBJECT/SMESH_ActorUtils.h [deleted file]
src/OBJECT/SMESH_DeviceActor.cxx [deleted file]
src/OBJECT/SMESH_DeviceActor.h [deleted file]
src/OBJECT/SMESH_ExtractGeometry.cxx [deleted file]
src/OBJECT/SMESH_ExtractGeometry.h [deleted file]
src/OBJECT/SMESH_Object.cxx [deleted file]
src/OBJECT/SMESH_Object.h [deleted file]
src/OBJECT/SMESH_ObjectDef.h [deleted file]
src/SMDS/Makefile.in [deleted file]
src/SMDS/SMDSAbs_ElementType.hxx [deleted file]
src/SMDS/SMDS_EdgePosition.cxx [deleted file]
src/SMDS/SMDS_EdgePosition.hxx [deleted file]
src/SMDS/SMDS_ElemIterator.hxx [deleted file]
src/SMDS/SMDS_FaceOfEdges.cxx [deleted file]
src/SMDS/SMDS_FaceOfEdges.hxx [deleted file]
src/SMDS/SMDS_FaceOfNodes.cxx [deleted file]
src/SMDS/SMDS_FaceOfNodes.hxx [deleted file]
src/SMDS/SMDS_FacePosition.cxx [deleted file]
src/SMDS/SMDS_FacePosition.hxx [deleted file]
src/SMDS/SMDS_Iterator.hxx [deleted file]
src/SMDS/SMDS_IteratorOfElements.cxx [deleted file]
src/SMDS/SMDS_IteratorOfElements.hxx [deleted file]
src/SMDS/SMDS_Mesh.cxx [deleted file]
src/SMDS/SMDS_Mesh.hxx [deleted file]
src/SMDS/SMDS_MeshEdge.cxx [deleted file]
src/SMDS/SMDS_MeshEdge.hxx [deleted file]
src/SMDS/SMDS_MeshElement.cxx [deleted file]
src/SMDS/SMDS_MeshElement.hxx [deleted file]
src/SMDS/SMDS_MeshElementIDFactory.cxx [deleted file]
src/SMDS/SMDS_MeshElementIDFactory.hxx [deleted file]
src/SMDS/SMDS_MeshFace.cxx [deleted file]
src/SMDS/SMDS_MeshFace.hxx [deleted file]
src/SMDS/SMDS_MeshGroup.cxx [deleted file]
src/SMDS/SMDS_MeshGroup.hxx [deleted file]
src/SMDS/SMDS_MeshIDFactory.cxx [deleted file]
src/SMDS/SMDS_MeshIDFactory.hxx [deleted file]
src/SMDS/SMDS_MeshNode.cxx [deleted file]
src/SMDS/SMDS_MeshNode.hxx [deleted file]
src/SMDS/SMDS_MeshObject.cxx [deleted file]
src/SMDS/SMDS_MeshObject.hxx [deleted file]
src/SMDS/SMDS_MeshVolume.cxx [deleted file]
src/SMDS/SMDS_MeshVolume.hxx [deleted file]
src/SMDS/SMDS_PolygonalFaceOfNodes.cxx [deleted file]
src/SMDS/SMDS_PolygonalFaceOfNodes.hxx [deleted file]
src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx [deleted file]
src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx [deleted file]
src/SMDS/SMDS_Position.cxx [deleted file]
src/SMDS/SMDS_Position.hxx [deleted file]
src/SMDS/SMDS_SpacePosition.cxx [deleted file]
src/SMDS/SMDS_SpacePosition.hxx [deleted file]
src/SMDS/SMDS_TypeOfPosition.hxx [deleted file]
src/SMDS/SMDS_VertexPosition.cxx [deleted file]
src/SMDS/SMDS_VertexPosition.hxx [deleted file]
src/SMDS/SMDS_VolumeOfFaces.cxx [deleted file]
src/SMDS/SMDS_VolumeOfFaces.hxx [deleted file]
src/SMDS/SMDS_VolumeOfNodes.cxx [deleted file]
src/SMDS/SMDS_VolumeOfNodes.hxx [deleted file]
src/SMDS/SMDS_VolumeTool.hxx [deleted file]
src/SMESH/SMESH_1D_Algo.cxx [deleted file]
src/SMESH/SMESH_1D_Algo.hxx [deleted file]
src/SMESH/SMESH_2D_Algo.cxx [deleted file]
src/SMESH/SMESH_2D_Algo.hxx [deleted file]
src/SMESH/SMESH_3D_Algo.cxx [deleted file]
src/SMESH/SMESH_3D_Algo.hxx [deleted file]
src/SMESH/SMESH_Block.cxx [deleted file]
src/SMESH/SMESH_Block.hxx [deleted file]
src/SMESH/SMESH_Group.cxx [deleted file]
src/SMESH/SMESH_Group.hxx [deleted file]
src/SMESH/SMESH_HypoFilter.cxx [deleted file]
src/SMESH/SMESH_HypoFilter.hxx [deleted file]
src/SMESH/SMESH_Hypothesis.cxx [deleted file]
src/SMESH/SMESH_Hypothesis.hxx [deleted file]
src/SMESH/SMESH_Mesh.cxx [deleted file]
src/SMESH/SMESH_Mesh.hxx [deleted file]
src/SMESH/SMESH_subMesh.hxx [deleted file]
src/SMESHDS/Makefile.in [deleted file]
src/SMESHDS/SMESHDS_Command.cxx [deleted file]
src/SMESHDS/SMESHDS_Command.hxx [deleted file]
src/SMESHDS/SMESHDS_CommandType.hxx [deleted file]
src/SMESHDS/SMESHDS_Document.cxx [deleted file]
src/SMESHDS/SMESHDS_Document.hxx [deleted file]
src/SMESHDS/SMESHDS_Group.cxx [deleted file]
src/SMESHDS/SMESHDS_Group.hxx [deleted file]
src/SMESHDS/SMESHDS_GroupBase.cxx [deleted file]
src/SMESHDS/SMESHDS_GroupBase.hxx [deleted file]
src/SMESHDS/SMESHDS_GroupOnGeom.cxx [deleted file]
src/SMESHDS/SMESHDS_GroupOnGeom.hxx [deleted file]
src/SMESHDS/SMESHDS_Hypothesis.cxx [deleted file]
src/SMESHDS/SMESHDS_Hypothesis.hxx [deleted file]
src/SMESHDS/SMESHDS_Mesh.cxx [deleted file]
src/SMESHDS/SMESHDS_Script.cxx [deleted file]
src/SMESHDS/SMESHDS_Script.hxx [deleted file]
src/SMESHDS/SMESHDS_SubMesh.cxx [deleted file]
src/SMESHDS/SMESHDS_SubMesh.hxx [deleted file]
src/SMESHFiltersSelection/Handle_SMESH_TypeFilter.hxx [deleted file]
src/SMESHFiltersSelection/SMESH_TypeFilter.ixx [deleted file]
src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.h [deleted file]
src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx [deleted file]
src/SMESHGUI/SMESHGUI_Filter.cxx [deleted file]
src/SMESHGUI/SMESHGUI_Filter.h [deleted file]
src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx [deleted file]
src/SMESHGUI/SMESHGUI_FilterLibraryDlg.h [deleted file]
src/SMESHGUI/SMESHGUI_FilterUtils.cxx [deleted file]
src/SMESHGUI/SMESHGUI_FilterUtils.h [deleted file]
src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx [deleted file]
src/SMESHGUI/SMESHGUI_GEOMGenUtils.h [deleted file]
src/SMESHGUI/SMESHGUI_GroupDlg.cxx [deleted file]
src/SMESHGUI/SMESHGUI_GroupUtils.cxx [deleted file]
src/SMESHGUI/SMESHGUI_GroupUtils.h [deleted file]
src/SMESHGUI/SMESHGUI_IdValidator.h [deleted file]
src/SMESHGUI/SMESHGUI_MeshUtils.cxx [deleted file]
src/SMESHGUI/SMESHGUI_MeshUtils.h [deleted file]
src/SMESHGUI/SMESHGUI_PatternUtils.cxx [deleted file]
src/SMESHGUI/SMESHGUI_PatternUtils.h [deleted file]
src/SMESHGUI/SMESHGUI_PatternWidget.cxx [deleted file]
src/SMESHGUI/SMESHGUI_PatternWidget.h [deleted file]
src/SMESHGUI/SMESHGUI_PrecisionDlg.cxx [deleted file]
src/SMESHGUI/SMESHGUI_PrecisionDlg.h [deleted file]
src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.cxx [deleted file]
src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h [deleted file]
src/SMESHGUI/SMESHGUI_Preferences_SelectionDlg.cxx [deleted file]
src/SMESHGUI/SMESHGUI_Preferences_SelectionDlg.h [deleted file]
src/SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx [deleted file]
src/SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx [deleted file]
src/SMESHGUI/SMESHGUI_SMESHGenUtils.cxx [deleted file]
src/SMESHGUI/SMESHGUI_SMESHGenUtils.h [deleted file]
src/SMESHGUI/SMESHGUI_SpinBox.cxx [deleted file]
src/SMESHGUI/SMESHGUI_SpinBox.h [deleted file]
src/SMESHGUI/SMESHGUI_Swig.cxx [deleted file]
src/SMESHGUI/SMESHGUI_Swig.hxx [deleted file]
src/SMESHGUI/SMESHGUI_Swig.i [deleted file]
src/SMESHGUI/SMESH_icons.po [deleted file]
src/SMESH_I/SMESH.hxx [deleted file]
src/SMESH_I/SMESHEngine.cxx [deleted file]
src/SMESH_I/SMESH_1D_Algo_i.cxx [deleted file]
src/SMESH_I/SMESH_1D_Algo_i.hxx [deleted file]
src/SMESH_I/SMESH_2D_Algo_i.cxx [deleted file]
src/SMESH_I/SMESH_2D_Algo_i.hxx [deleted file]
src/SMESH_I/SMESH_3D_Algo_i.cxx [deleted file]
src/SMESH_I/SMESH_3D_Algo_i.hxx [deleted file]
src/SMESH_I/SMESH_Algo_i.cxx [deleted file]
src/SMESH_I/SMESH_Algo_i.hxx [deleted file]
src/SMESH_I/SMESH_Gen_i_1.cxx [deleted file]
src/SMESH_I/SMESH_Group_i.hxx [deleted file]
src/SMESH_I/SMESH_Hypothesis_i.cxx [deleted file]
src/SMESH_I/SMESH_Hypothesis_i.hxx [deleted file]
src/SMESH_I/SMESH_MEDFamily_i.cxx [deleted file]
src/SMESH_I/SMESH_MEDFamily_i.hxx [deleted file]
src/SMESH_I/SMESH_MEDMesh_i.cxx [deleted file]
src/SMESH_I/SMESH_MEDSupport_i.cxx [deleted file]
src/SMESH_I/SMESH_MEDSupport_i.hxx [deleted file]
src/SMESH_I/SMESH_Mesh_i.hxx [deleted file]
src/SMESH_I/SMESH_Pattern_i.hxx [deleted file]
src/SMESH_I/SMESH_subMesh_i.cxx [deleted file]
src/SMESH_I/SMESH_subMesh_i.hxx [deleted file]
src/SMESH_I/smeshpy.py [deleted file]
src/SMESH_SWIG/Makefile.in [deleted file]
src/SMESH_SWIG/PAL_MESH_041_mesh.py [deleted file]
src/SMESH_SWIG/PAL_MESH_043_2D.py [deleted file]
src/SMESH_SWIG/PAL_MESH_043_3D.py [deleted file]
src/SMESH_SWIG/SMESH_BelongToGeom.py [deleted file]
src/SMESH_SWIG/SMESH_GroupFromGeom.py [deleted file]
src/SMESH_SWIG/SMESH_GroupFromGeom2.py [deleted file]
src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py [deleted file]
src/SMESH_SWIG/SMESH_Partition1_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_Sphere.py [deleted file]
src/SMESH_SWIG/SMESH_blocks.py [deleted file]
src/SMESH_SWIG/SMESH_box.py [deleted file]
src/SMESH_SWIG/SMESH_box2_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_box3_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_box_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_controls.py [deleted file]
src/SMESH_SWIG/SMESH_demo_hexa2_upd.py [deleted file]
src/SMESH_SWIG/SMESH_fixation.py [deleted file]
src/SMESH_SWIG/SMESH_fixation_hexa.py [deleted file]
src/SMESH_SWIG/SMESH_fixation_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_freebord.py [deleted file]
src/SMESH_SWIG/SMESH_hexaedre.py [deleted file]
src/SMESH_SWIG/SMESH_mechanic.py [deleted file]
src/SMESH_SWIG/SMESH_mechanic_editor.py [deleted file]
src/SMESH_SWIG/SMESH_mechanic_tetra.py [deleted file]
src/SMESH_SWIG/SMESH_shared_modules.py [deleted file]
src/SMESH_SWIG/SMESH_test.py [deleted file]
src/SMESH_SWIG/SMESH_test0.py [deleted file]
src/SMESH_SWIG/SMESH_test1.py [deleted file]
src/SMESH_SWIG/SMESH_test2.py [deleted file]
src/SMESH_SWIG/SMESH_test3.py [deleted file]
src/SMESH_SWIG/SMESH_test4.py [deleted file]
src/SMESH_SWIG/batchmode_mefisto.py [deleted file]
src/SMESH_SWIG/batchmode_smesh.py [deleted file]
src/SMESH_SWIG/ex00_all.py [deleted file]
src/SMESH_SWIG/ex01_cube2build.py [deleted file]
src/SMESH_SWIG/ex02_cube2primitive.py [deleted file]
src/SMESH_SWIG/ex03_cube2partition.py [deleted file]
src/SMESH_SWIG/ex04_cube5tetraHexa.py [deleted file]
src/SMESH_SWIG/ex05_hole1build.py [deleted file]
src/SMESH_SWIG/ex06_hole1boolean.py [deleted file]
src/SMESH_SWIG/ex07_hole1partition.py [deleted file]
src/SMESH_SWIG/ex08_hole2build.py [deleted file]
src/SMESH_SWIG/ex09_grid4build.py [deleted file]
src/SMESH_SWIG/ex10_grid4geometry.py [deleted file]
src/SMESH_SWIG/ex11_grid3partition.py [deleted file]
src/SMESH_SWIG/ex12_grid17partition.py [deleted file]
src/SMESH_SWIG/ex13_hole1partial.py [deleted file]
src/SMESH_SWIG/ex14_cyl1holed.py [deleted file]
src/SMESH_SWIG/ex15_cyl2geometry.py [deleted file]
src/SMESH_SWIG/ex16_cyl2complementary.py [deleted file]
src/SMESH_SWIG/ex17_dome1.py [deleted file]
src/SMESH_SWIG/ex18_dome2.py [deleted file]
src/SMESH_SWIG/ex19_sphereINcube.py [deleted file]
src/SMESH_SWIG/libSMESH_Swig.i [deleted file]
src/StdMeshers/StdMeshers_Arithmetic1D.cxx [deleted file]
src/StdMeshers/StdMeshers_Arithmetic1D.hxx [deleted file]
src/StdMeshers/StdMeshers_Deflection1D.cxx [deleted file]
src/StdMeshers/StdMeshers_Deflection1D.hxx [deleted file]
src/StdMeshers/StdMeshers_Hexa_3D.cxx [deleted file]
src/StdMeshers/StdMeshers_Hexa_3D.hxx [deleted file]
src/StdMeshers/StdMeshers_LengthFromEdges.cxx [deleted file]
src/StdMeshers/StdMeshers_LengthFromEdges.hxx [deleted file]
src/StdMeshers/StdMeshers_LocalLength.cxx [deleted file]
src/StdMeshers/StdMeshers_LocalLength.hxx [deleted file]
src/StdMeshers/StdMeshers_MEFISTO_2D.cxx [deleted file]
src/StdMeshers/StdMeshers_MEFISTO_2D.hxx [deleted file]
src/StdMeshers/StdMeshers_MaxElementArea.cxx [deleted file]
src/StdMeshers/StdMeshers_MaxElementArea.hxx [deleted file]
src/StdMeshers/StdMeshers_MaxElementVolume.cxx [deleted file]
src/StdMeshers/StdMeshers_MaxElementVolume.hxx [deleted file]
src/StdMeshers/StdMeshers_NotConformAllowed.cxx [deleted file]
src/StdMeshers/StdMeshers_NotConformAllowed.hxx [deleted file]
src/StdMeshers/StdMeshers_Penta_3D.cxx [deleted file]
src/StdMeshers/StdMeshers_Penta_3D.hxx [deleted file]
src/StdMeshers/StdMeshers_Propagation.cxx [deleted file]
src/StdMeshers/StdMeshers_Propagation.hxx [deleted file]
src/StdMeshers/StdMeshers_StartEndLength.cxx [deleted file]
src/StdMeshers/StdMeshers_StartEndLength.hxx [deleted file]
src/StdMeshers_I/StdMeshers_Arithmetic1D_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_Deflection1D_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_Hexa_3D_i.cxx [deleted file]
src/StdMeshers_I/StdMeshers_Hexa_3D_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_LengthFromEdges_i.cxx [deleted file]
src/StdMeshers_I/StdMeshers_LengthFromEdges_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_LocalLength_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx [deleted file]
src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_MaxElementArea_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_MaxElementVolume_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_NotConformAllowed_i.cxx [deleted file]
src/StdMeshers_I/StdMeshers_NotConformAllowed_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_Propagation_i.cxx [deleted file]
src/StdMeshers_I/StdMeshers_Propagation_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.cxx [deleted file]
src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_Regular_1D_i.cxx [deleted file]
src/StdMeshers_I/StdMeshers_Regular_1D_i.hxx [deleted file]
src/StdMeshers_I/StdMeshers_StartEndLength_i.hxx [deleted file]

diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644 (file)
index 46cf0c9..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,1811 +0,0 @@
-###############################################################################
-#This is the SMESH change log. Do not modify because it is automatically
-#created with :
-#cvs2cl.pl -l "-b" -U users.cvs2cl --header header.cvs2cl -T -b --utc
-###############################################################################
-
-2004-01-30 13:18  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * doc/html/INPUT/: doxyfile, sources/static/tree.js: NRI : 1.4.0
-         version
-
-2004-01-29 17:52  Jerome Robert <jerome.robert@eads.net>
-
-       * INSTALL, bin/VERSION: Upgrade to version 1.4.0.
-
-2004-01-29 17:33  Jerome Robert <jerome.robert@eads.net>
-
-       * src/: SMESHGUI/SMESHGUI_StudyAPI.cxx, SMESHGUI/SMESHGUI_Swig.cxx,
-         SMESH_I/SMESH_Gen_i.cxx: Merge branch merge_1_2_d
-
-2004-01-14 09:24  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * doc/html/Makefile.in: NRI : bug KERNEL5014 fixed.
-
-2004-01-06 15:19  Nadir Bouhamou <nadir.bouhamou@cea.fr>
-
-       * src/SMESH_SWIG/SMESH_flight_skin.py: removing the call to the
-         tetrahedron generator NETGEN, because I did not yet manage to
-         make NETGEN running on the flight geometry.
-
-2004-01-06 15:16  Nadir Bouhamou <nadir.bouhamou@cea.fr>
-
-       * resources/SMESH_en.xml, resources/SMESH_fr.xml,
-         src/SMESHGUI/SMESHGUI.cxx: Mounting the hypothesis
-         LengthFromEdges in th GUI of SMESH. This functionality was only
-         in the C++ API, and in the CORBA API.
-
-2004-01-05 16:14  Jerome Robert <jerome.robert@eads.net>
-
-       * adm_local/unix/config_files/check_Netgen.m4: Fix a mispelled
-         environment variable for idl python
-
-2004-01-05 14:28  tag V1_3_1
-
-2004-01-05 13:53  Jerome Robert <jerome.robert@eads.net>
-
-       * src/NETGEN/: ReadMeForNgUsers, netgen43ForSalome.patch: Add a
-         patch to make the build of netgen more user-friendly
-
-2004-01-05 13:52  Jerome Robert <jerome.robert@eads.net>
-
-       * src/NETGEN/Makefile.in: We do not need OCAF in Netgen
-
-2004-01-05 13:38  Jerome Robert <jerome.robert@eads.net>
-
-       * adm_local/unix/config_files/check_Netgen.m4: Fix some quotes
-         problems.
-
-2004-01-05 09:05  Jerome Robert <jerome.robert@eads.net>
-
-       * src/: SMDS/SMDS_Mesh.cxx, SMESHDS/SMESHDS_Document.cxx: [Bug
-         SMESH4830] bug in instal with gcc 2.95. Bug fixed.  Note: SGI say
-         that <algorithm> is requiered to use set_intersection (see
-         http://www.sgi.com/tech/stl/set_intersection.html).
-
-2003-12-16 15:27  Nadir Bouhamou <nadir.bouhamou@cea.fr>
-
-       * adm_local/unix/config_files/check_Netgen.m4: Since there is an
-         idl precompilation directive in SMESH_BasicHypothesis.idl file, a
-         -DHAVE_NETGEN idl has to be added when compiling SMESH with
-         netgen to the idl c++ flags as well as to the idl python flags.
-
-2003-12-15 13:15  Nadir Bouhamou <nadir.bouhamou@cea.fr>
-
-       * src/SMESHDS/SMESHDS_Script.cxx: correct a small bug found by the
-         EDF developpement team (PN and AT) : AddVolume in the case of a
-         Tetrahedron.
-
-2003-12-11 09:51  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESHGUI/SMESHGUI.cxx: [Bug SMESH4598] Crash of the session
-         when compute and update are not done in the same view. Bug fixed.
-
-2003-12-11 09:49  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESH/SMESH_HypothesisFactory.cxx: HAVE_NETGEN (#define) to
-         remove an unresolved symbol when building without netgen
-
-2003-12-10 17:23  Jerome Robert <jerome.robert@eads.net>
-
-       * adm_local/unix/config_files/check_Netgen.m4,
-         idl/SMESH_BasicHypothesis.idl,
-         src/SMESH_I/SMESH_HypothesisFactory_i.cxx: Create and use
-         HAVE_NETGEN (#define) to avoid unresolved symbols in libraries.
-
-2003-12-10 16:05  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESHGUI/SMESHGUI.cxx: Cosmetics
-
-2003-12-09 14:13  Nadir Bouhamou <nadir.bouhamou@cea.fr>
-
-       * src/SMESH/Makefile.in: Correcting a problem araising when
-         building the SMESH module whithout Netgen.
-
-2003-12-09 10:00  Nadir Bouhamou <nadir.bouhamou@cea.fr>
-
-       * doc/: AddNetgenInSalome2.pdf, AddNetgenInSalome2.ps,
-         AddNetgenInSalome2.sxw: updating or adding when merging in the
-         main trunk with the version in the branch nadir_1_2_2 !! Here a
-         document related to the integration of NETGEN in the SMESH module
-         has been added for future work in the integration of other
-         mesher.
-
-2003-12-08 15:30  Nadir Bouhamou <nadir.bouhamou@cea.fr>
-
-       * INSTALL, Makefile.in, configure.in.base,
-         adm_local/unix/make_commence.in,
-         adm_local/unix/config_files/check_Netgen.m4, bin/VERSION,
-         idl/SMESH_BasicHypothesis.idl, resources/SMESH_en.xml,
-         resources/SMESH_fr.xml, resources/flight_solid.brep,
-         resources/mesh_algo_netgen.png, resources/mesh_algo_tetra.png,
-         resources/mesh_tree_algo_netgen.png,
-         resources/mesh_tree_algo_tetra.png, src/Makefile.in,
-         src/DriverMED/DriverMED_R_SMDS_Mesh.cxx,
-         src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx,
-         src/DriverMED/DriverMED_W_SMDS_Mesh.cxx,
-         src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx,
-         src/NETGEN/Makefile.in, src/NETGEN/ReadMeForNgUsers,
-         src/SMESH/Makefile.in, src/SMESH/SMESH_HypothesisFactory.cxx,
-         src/SMESH/SMESH_MEFISTO_2D.cxx,
-         src/SMESH/SMESH_MaxElementVolume.cxx,
-         src/SMESH/SMESH_MaxElementVolume.hxx,
-         src/SMESH/SMESH_NETGEN_3D.cxx, src/SMESH/SMESH_NETGEN_3D.hxx,
-         src/SMESH/SMESH_subMesh.cxx, src/SMESHGUI/SMESHGUI.cxx,
-         src/SMESHGUI/SMESHGUI.h, src/SMESHGUI/SMESHGUI_NbSegmentsDlg.cxx,
-         src/SMESHGUI/SMESHGUI_icons.po, src/SMESH_I/Makefile.in,
-         src/SMESH_I/SMESH_Gen_i.cxx,
-         src/SMESH_I/SMESH_HypothesisFactory_i.cxx,
-         src/SMESH_I/SMESH_LengthFromEdges_i.cxx,
-         src/SMESH_I/SMESH_LengthFromEdges_i.hxx,
-         src/SMESH_I/SMESH_MEDMesh_i.cxx,
-         src/SMESH_I/SMESH_MEDSupport_i.cxx,
-         src/SMESH_I/SMESH_MaxElementVolume_i.cxx,
-         src/SMESH_I/SMESH_MaxElementVolume_i.hxx,
-         src/SMESH_I/SMESH_NETGEN_3D_i.cxx,
-         src/SMESH_I/SMESH_NETGEN_3D_i.hxx, src/SMESH_SWIG/Makefile.in,
-         src/SMESH_SWIG/SMESH_Partition1_tetra.py,
-         src/SMESH_SWIG/SMESH_box2_tetra.py,
-         src/SMESH_SWIG/SMESH_box3_tetra.py,
-         src/SMESH_SWIG/SMESH_box_tetra.py,
-         src/SMESH_SWIG/SMESH_fixation_hexa.py,
-         src/SMESH_SWIG/SMESH_fixation_tetra.py,
-         src/SMESH_SWIG/SMESH_flight_skin.py,
-         src/SMESH_SWIG/SMESH_mechanic_tetra.py: updating or adding when
-         merging in the main trunk with the version in the branch
-         nadir_1_2_2 !!
-
-2003-12-05 14:49  Jerome Robert <jerome.robert@eads.net>
-
-       * src/MEFISTO2/trte.f: Remove "pause" primitive call.
-
-2003-11-27 11:45  Jerome Robert <jerome.robert@eads.net>
-
-       * resources/SMESH_en.xml, resources/SMESH_fr.xml,
-         src/SMESHGUI/SMESHGUI.cxx: [Bug SMESH839] Spelling: Hypotheses -
-         Hexa?edron (i,j,k). Bug Fixed.
-
-2003-11-25 08:52  tag V1_3_0
-
-2003-11-25 08:52  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * bin/VERSION, INSTALL: NRI: 1.3.0 version.
-
-2003-11-20 12:45  tag V1_3_0_b3
-
-2003-11-20 12:45  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * doc/html/INPUT/sources/static/: doxygen.css, page2.html, tree.js,
-         treeview.js: NRI : Add static documentation.
-
-2003-11-20 12:45  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * doc/html/INPUT/sources/: Application-About.png,
-         Application-About1.jpg, application.gif, application.jpg,
-         bg_salome.gif, bg_salomepro.gif, doxygen.css: NRI : Update
-         images.
-
-2003-11-20 12:44  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * doc/html/INPUT/doxyfile: NRI : Generate TreeView.
-
-2003-11-20 12:43  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * doc/html/Makefile.in: NRI : Add static directory.
-
-2003-11-18 15:01  tag V1_3_0b2
-
-2003-11-18 15:01  Jerome Robert <jerome.robert@eads.net>
-
-       * ChangeLog, INSTALL, cvs-tags: update for V1_3_0_b2
-
-2003-11-18 09:19  Nadir Bouhamou <nadir.bouhamou@cea.fr>
-
-       * src/SMESH_I/: SMESH_MEDFamily_i.cxx, SMESH_MEDFamily_i.hxx,
-         SMESH_MEDMesh_i.cxx, SMESH_MEDMesh_i.hxx, SMESH_MEDSupport_i.cxx,
-         SMESH_MEDSupport_i.hxx: merge with the branch
-         nadir_update_MED_v1_3_0 (branch to build the V1_3_0 version of
-         the module.
-
-2003-11-12 13:20  tag V1_3_0_b1
-
-2003-11-12 13:20  Jerome Robert <jerome.robert@eads.net>
-
-       * ChangeLog, INSTALL, cvs-tags, bin/VERSION: Update for V1.3.0b1
-
-2003-11-12 11:40  Jerome Robert <jerome.robert@eads.net>
-
-       * src/OBJECT/SMESH_Actor.cxx: MergeV1_2c-1
-
-2003-11-06 14:43  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESHGUI/SMESHGUI.cxx: NRI : MergeV1_2c-1.
-
-2003-11-06 14:34  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/MEFISTO2/: areteideale.f, trte.f: NRI : Add licence header.
-
-2003-11-06 11:34  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * LICENCE: NRI : add LICENCE file
-
-2003-11-03 15:50  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * doc/html/Makefile.in: NRI : Relative path !!!!
-
-2003-10-22 15:28  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: SMDS_Mesh.cxx, SMDS_Mesh.hxx: Fix/implement
-         removeNode, removeEdge, removeFace, removeVolume and
-         removeElement
-
-2003-10-20 16:26  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESHGUI/SMESHGUI.cxx: When the main window was maximized
-         some dialogs were cropped at the bottom of the screen. It's now
-         fixed.
-
-2003-10-17 16:31  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/SMDS_Mesh.cxx: Fix a bug. Quadrangles were added as
-         triangles.
-
-2003-10-06 10:50  tag MergeV1_2c-1
-
-2003-10-06 10:50  Jerome Robert <jerome.robert@eads.net>
-
-       * cvs-tags: Update. Created a new branch for user nadir.
-
-2003-10-02 16:16  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * build_configure: NRI : RedHat 9 compatibility (M. Tajchman).
-
-2003-09-26 15:14  tag V1_2_2
-
-2003-09-26 15:14  Jerome Robert <jerome.robert@eads.net>
-
-       * INSTALL, cvs-tags: Add a tag file to track branch and tag. Update
-         INSTALL to prepare V1_2_2 tag.
-
-2003-09-26 14:21  tag V1_2_1
-
-2003-09-26 14:21  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * INSTALL: NRI : INSTALL file defined into SALOME2_PRODUCTION_CYCLE
-         document.
-
-2003-09-23 14:33  Jerome Robert <jerome.robert@eads.net>
-
-       * src/: SMDS/SMDS_FaceOfEdges.hxx, SMESHDS/SMESHDS_Mesh.hxx,
-         SMDS/SMDS_FaceOfNodes.hxx, SMDS/SMDS_MeshEdge.hxx,
-         SMDS/SMDS_MeshElement.hxx, SMDS/SMDS_Tria3OfNodes.hxx,
-         SMDS/SMDS_VolumeOfFaces.hxx: Keep compatible with gcc 2
-
-2003-09-23 11:52  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESHGUI/SMESHGUI_StudyAPI.cxx: NRI : Display Component
-         UserName and Icon.
-
-2003-09-22 12:23  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/SMDS_IteratorOfArray.hxx: Freshly added file
-
-2003-09-12 15:12  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: Makefile.in, SMDS_HexahedronOfNodes.cxx,
-         SMDS_HexahedronOfNodes.hxx, SMDS_Mesh.cxx, SMDS_Tria3OfNodes.cxx,
-         SMDS_Tria3OfNodes.hxx: Add HexahedronOfNodes and Tria3OfNodes to
-         improve performance
-
-2003-09-12 15:11  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/SMDS_VolumeOfNodes.cxx: Fix bug. Was always printing 8
-         nodes
-
-2003-09-08 15:04  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: SMDS_Mesh.cxx, SMDS_VolumeOfNodes.cxx,
-         SMDS_VolumeOfNodes.hxx: Add support for tetra, pyramid and prism
-
-2003-09-08 13:41  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: SMDS_Mesh.cxx, SMDS_MeshElement.cxx: Add some comments
-
-2003-09-05 12:19  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/SMDS_MeshNode.cxx: Some forgotten return statments
-
-2003-09-05 11:45  Jerome Robert <jerome.robert@eads.net>
-
-       * src/: DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx,
-         DriverMED/DriverMED_W_SMESHDS_Mesh.cxx, SMESH/SMESH_Hexa_3D.cxx:
-         Correct some memory leaks
-
-2003-09-05 10:31  Jerome Robert <jerome.robert@eads.net>
-
-       * src/: DriverMED/DriverMED_W_SMESHDS_Mesh.cxx,
-         SMESH/SMESH_Hexa_3D.cxx, SMESH/SMESH_Hexa_3D.hxx,
-         SMESH/SMESH_MEFISTO_2D.cxx, SMESH/SMESH_MEFISTO_2D.hxx,
-         SMESH/SMESH_Quadrangle_2D.cxx, SMESH/SMESH_Quadrangle_2D.hxx,
-         SMESH/SMESH_Regular_1D.cxx, SMESH/SMESH_subMesh.cxx,
-         SMESHDS/SMESHDS_Mesh.cxx, SMESHDS/SMESHDS_Mesh.hxx,
-         SMESHDS/SMESHDS_SubMesh.cxx, SMESHDS/SMESHDS_SubMesh.hxx,
-         SMESH_I/SMESH_MEDSupport_i.cxx, SMESH_I/SMESH_MeshEditor_i.cxx:
-         Use nodes and elements pointer instead on IDs
-
-2003-09-05 10:20  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: SMDS_Mesh.cxx, SMDS_Mesh.hxx: Change API to use
-         pointer on elements and no longer ID of elements
-
-2003-09-04 15:04  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESHDS/: Handle_SMESHDS_Command.hxx,
-         Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx,
-         Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx,
-         Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx,
-         Handle_SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx,
-         Handle_SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx,
-         Handle_SMESHDS_Document.hxx,
-         Handle_SMESHDS_ListNodeOfListOfAsciiString.hxx,
-         Handle_SMESHDS_ListNodeOfListOfCommand.hxx,
-         Handle_SMESHDS_ListNodeOfListOfPtrHypothesis.hxx,
-         Handle_SMESHDS_Mesh.hxx, Handle_SMESHDS_Script.hxx,
-         Handle_SMESHDS_SubMesh.hxx, SMESHDS.cdl, SMESHDS_Command.cdl,
-         SMESHDS_Command.ixx, SMESHDS_Command.jxx,
-         SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh.hxx,
-         SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh_0.cxx,
-         SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis_0.cxx,
-         SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh.hxx,
-         SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh_0.cxx,
-         SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis_0.cxx,
-         SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh.hxx,
-         SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh_0.cxx,
-         SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx,
-         SMESHDS_DataMapNodeOfDataMapOfIntegerMesh_0.cxx,
-         SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis_0.cxx,
-         SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx,
-         SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh_0.cxx,
-         SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis_0.cxx,
-         SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx,
-         SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh_0.cxx,
-         SMESHDS_DataMapOfIntegerMesh.hxx,
-         SMESHDS_DataMapOfIntegerMesh_0.cxx,
-         SMESHDS_DataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS_DataMapOfIntegerPtrHypothesis_0.cxx,
-         SMESHDS_DataMapOfIntegerSubMesh.hxx,
-         SMESHDS_DataMapOfIntegerSubMesh_0.cxx,
-         SMESHDS_DataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS_DataMapOfShapeListOfPtrHypothesis_0.cxx,
-         SMESHDS_DataMapOfShapeSubMesh.hxx,
-         SMESHDS_DataMapOfShapeSubMesh_0.cxx, SMESHDS_Document.cdl,
-         SMESHDS_Document.ixx, SMESHDS_Document.jxx,
-         SMESHDS_ListIteratorOfListOfAsciiString.hxx,
-         SMESHDS_ListIteratorOfListOfAsciiString_0.cxx,
-         SMESHDS_ListIteratorOfListOfCommand.hxx,
-         SMESHDS_ListIteratorOfListOfCommand_0.cxx,
-         SMESHDS_ListIteratorOfListOfPtrHypothesis.hxx,
-         SMESHDS_ListIteratorOfListOfPtrHypothesis_0.cxx,
-         SMESHDS_ListNodeOfListOfAsciiString.hxx,
-         SMESHDS_ListNodeOfListOfAsciiString_0.cxx,
-         SMESHDS_ListNodeOfListOfCommand.hxx,
-         SMESHDS_ListNodeOfListOfCommand_0.cxx,
-         SMESHDS_ListNodeOfListOfPtrHypothesis.hxx,
-         SMESHDS_ListNodeOfListOfPtrHypothesis_0.cxx,
-         SMESHDS_ListOfAsciiString.hxx, SMESHDS_ListOfAsciiString_0.cxx,
-         SMESHDS_ListOfCommand.hxx, SMESHDS_ListOfCommand_0.cxx,
-         SMESHDS_ListOfPtrHypothesis.hxx,
-         SMESHDS_ListOfPtrHypothesis_0.cxx, SMESHDS_Mesh.cdl,
-         SMESHDS_Mesh.ixx, SMESHDS_Mesh.jxx, SMESHDS_PtrHypothesis.hxx,
-         SMESHDS_Script.cdl, SMESHDS_Script.ixx, SMESHDS_Script.jxx,
-         SMESHDS_SubMesh.cdl, SMESHDS_SubMesh.ixx, SMESHDS_SubMesh.jxx:
-         Remove no longer needed files
-
-2003-09-04 14:50  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: Handle_SMDSControl_BoundaryEdges.hxx,
-         Handle_SMDSControl_BoundaryFaces.hxx,
-         Handle_SMDSControl_MeshBoundary.hxx,
-         Handle_SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx,
-         Handle_SMDS_DataMapNodeOfDataMapOfPntInteger.hxx,
-         Handle_SMDS_EdgePosition.hxx, Handle_SMDS_FacePosition.hxx,
-         Handle_SMDS_HSequenceOfMesh.hxx,
-         Handle_SMDS_ListNodeOfListOfMesh.hxx,
-         Handle_SMDS_ListNodeOfListOfMeshElement.hxx,
-         Handle_SMDS_ListNodeOfListOfMeshGroup.hxx, Handle_SMDS_Mesh.hxx,
-         Handle_SMDS_MeshEdge.hxx, Handle_SMDS_MeshElement.hxx,
-         Handle_SMDS_MeshElementIDFactory.hxx, Handle_SMDS_MeshFace.hxx,
-         Handle_SMDS_MeshGroup.hxx, Handle_SMDS_MeshHexahedron.hxx,
-         Handle_SMDS_MeshIDFactory.hxx, Handle_SMDS_MeshNode.hxx,
-         Handle_SMDS_MeshNodeIDFactory.hxx, Handle_SMDS_MeshObject.hxx,
-         Handle_SMDS_MeshPrism.hxx, Handle_SMDS_MeshPyramid.hxx,
-         Handle_SMDS_MeshQuadrangle.hxx, Handle_SMDS_MeshTetrahedron.hxx,
-         Handle_SMDS_MeshTriangle.hxx, Handle_SMDS_MeshVolume.hxx,
-         Handle_SMDS_Position.hxx,
-         Handle_SMDS_SequenceNodeOfSequenceOfMesh.hxx,
-         Handle_SMDS_SpacePosition.hxx,
-         Handle_SMDS_StdMapNodeOfExtendedMap.hxx,
-         Handle_SMDS_StdMapNodeOfExtendedOrientedMap.hxx,
-         Handle_SMDS_VertexPosition.hxx, SMDS.cdl, SMDSAbs.cdl,
-         SMDSControl.cdl, SMDSControl.ixx, SMDSControl.jxx,
-         SMDSControl_BoundaryEdges.cdl, SMDSControl_BoundaryEdges.ixx,
-         SMDSControl_BoundaryEdges.jxx, SMDSControl_BoundaryFaces.cdl,
-         SMDSControl_BoundaryFaces.ixx, SMDSControl_BoundaryFaces.jxx,
-         SMDSControl_MeshBoundary.cdl, SMDSControl_MeshBoundary.ixx,
-         SMDSControl_MeshBoundary.jxx, SMDSEdit.cdl,
-         SMDSEdit_Transform.cdl, SMDSEdit_Transform.ixx,
-         SMDSEdit_Transform.jxx, SMDS_BasicMap.lxx,
-         SMDS_BasicMapIterator.lxx,
-         SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement.hxx,
-         SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement_0.cxx,
-         SMDS_DataMapIteratorOfDataMapOfPntInteger.hxx,
-         SMDS_DataMapIteratorOfDataMapOfPntInteger_0.cxx,
-         SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx,
-         SMDS_DataMapNodeOfDataMapOfIntegerMeshElement_0.cxx,
-         SMDS_DataMapNodeOfDataMapOfPntInteger.hxx,
-         SMDS_DataMapNodeOfDataMapOfPntInteger_0.cxx,
-         SMDS_DataMapOfIntegerMeshElement.hxx,
-         SMDS_DataMapOfIntegerMeshElement_0.cxx,
-         SMDS_DataMapOfPntInteger.hxx, SMDS_DataMapOfPntInteger_0.cxx,
-         SMDS_EdgePosition.cdl, SMDS_EdgePosition.ixx,
-         SMDS_EdgePosition.jxx, SMDS_EdgePosition.lxx,
-         SMDS_ExtendedMap.hxx, SMDS_ExtendedMap_0.cxx,
-         SMDS_ExtendedOrientedMap.hxx, SMDS_ExtendedOrientedMap_0.cxx,
-         SMDS_FacePosition.cdl, SMDS_FacePosition.ixx,
-         SMDS_FacePosition.jxx, SMDS_FacePosition.lxx,
-         SMDS_HSequenceOfMesh.hxx, SMDS_HSequenceOfMesh_0.cxx,
-         SMDS_ListIteratorOfListOfMesh.hxx,
-         SMDS_ListIteratorOfListOfMeshElement.hxx,
-         SMDS_ListIteratorOfListOfMeshElement_0.cxx,
-         SMDS_ListIteratorOfListOfMeshGroup.hxx,
-         SMDS_ListIteratorOfListOfMeshGroup_0.cxx,
-         SMDS_ListIteratorOfListOfMesh_0.cxx,
-         SMDS_ListNodeOfListOfMesh.hxx,
-         SMDS_ListNodeOfListOfMeshElement.hxx,
-         SMDS_ListNodeOfListOfMeshElement_0.cxx,
-         SMDS_ListNodeOfListOfMeshGroup.hxx,
-         SMDS_ListNodeOfListOfMeshGroup_0.cxx,
-         SMDS_ListNodeOfListOfMesh_0.cxx, SMDS_ListOfMesh.hxx,
-         SMDS_ListOfMeshElement.hxx, SMDS_ListOfMeshElement_0.cxx,
-         SMDS_ListOfMeshGroup.hxx, SMDS_ListOfMeshGroup_0.cxx,
-         SMDS_ListOfMesh_0.cxx, SMDS_Map.gxx, SMDS_MapHasher.gxx,
-         SMDS_MapIterator.gxx, SMDS_MapIteratorOfExtendedMap.hxx,
-         SMDS_MapIteratorOfExtendedMap_0.cxx,
-         SMDS_MapIteratorOfExtendedOrientedMap.hxx,
-         SMDS_MapIteratorOfExtendedOrientedMap_0.cxx, SMDS_MapNode.lxx,
-         SMDS_MapOfMeshElement.cdl, SMDS_MapOfMeshElement.cxx,
-         SMDS_MapOfMeshElement.hxx, SMDS_MapOfMeshElement.ixx,
-         SMDS_MapOfMeshElement.jxx, SMDS_MapOfMeshElement.lxx,
-         SMDS_MapOfMeshOrientedElement.cdl,
-         SMDS_MapOfMeshOrientedElement.cxx,
-         SMDS_MapOfMeshOrientedElement.hxx,
-         SMDS_MapOfMeshOrientedElement.ixx,
-         SMDS_MapOfMeshOrientedElement.jxx,
-         SMDS_MapOfMeshOrientedElement.lxx, SMDS_Mesh.cdl, SMDS_Mesh.ixx,
-         SMDS_Mesh.jxx, SMDS_Mesh.lxx, SMDS_MeshEdge.cdl,
-         SMDS_MeshEdge.ixx, SMDS_MeshEdge.jxx, SMDS_MeshEdge.lxx,
-         SMDS_MeshEdgesIterator.cdl, SMDS_MeshEdgesIterator.cxx,
-         SMDS_MeshEdgesIterator.hxx, SMDS_MeshEdgesIterator.ixx,
-         SMDS_MeshEdgesIterator.jxx, SMDS_MeshElement.cdl,
-         SMDS_MeshElement.ixx, SMDS_MeshElement.jxx, SMDS_MeshElement.lxx,
-         SMDS_MeshElementIDFactory.cdl, SMDS_MeshElementIDFactory.ixx,
-         SMDS_MeshElementIDFactory.jxx, SMDS_MeshElementIDFactory.lxx,
-         SMDS_MeshElementMapHasher.cdl, SMDS_MeshElementMapHasher.cxx,
-         SMDS_MeshElementMapHasher.hxx, SMDS_MeshElementMapHasher.ixx,
-         SMDS_MeshElementMapHasher.jxx, SMDS_MeshElementMapHasher.lxx,
-         SMDS_MeshElementsIterator.cdl, SMDS_MeshElementsIterator.cxx,
-         SMDS_MeshElementsIterator.hxx, SMDS_MeshElementsIterator.ixx,
-         SMDS_MeshElementsIterator.jxx, SMDS_MeshElementsIterator.lxx,
-         SMDS_MeshFace.cdl, SMDS_MeshFace.ixx, SMDS_MeshFace.jxx,
-         SMDS_MeshFace.lxx, SMDS_MeshFacesIterator.cdl,
-         SMDS_MeshFacesIterator.cxx, SMDS_MeshFacesIterator.hxx,
-         SMDS_MeshFacesIterator.ixx, SMDS_MeshFacesIterator.jxx,
-         SMDS_MeshGroup.cdl, SMDS_MeshGroup.ixx, SMDS_MeshGroup.jxx,
-         SMDS_MeshGroup.lxx, SMDS_MeshHexahedron.cdl,
-         SMDS_MeshHexahedron.ixx, SMDS_MeshHexahedron.jxx,
-         SMDS_MeshHexahedron.lxx, SMDS_MeshIDFactory.cdl,
-         SMDS_MeshIDFactory.ixx, SMDS_MeshIDFactory.jxx,
-         SMDS_MeshIDFactory.lxx, SMDS_MeshNode.cdl, SMDS_MeshNode.ixx,
-         SMDS_MeshNode.jxx, SMDS_MeshNode.lxx, SMDS_MeshNodeIDFactory.cdl,
-         SMDS_MeshNodeIDFactory.ixx, SMDS_MeshNodeIDFactory.jxx,
-         SMDS_MeshNodeIDFactory.lxx, SMDS_MeshNodesIterator.cdl,
-         SMDS_MeshNodesIterator.cxx, SMDS_MeshNodesIterator.hxx,
-         SMDS_MeshNodesIterator.ixx, SMDS_MeshNodesIterator.jxx,
-         SMDS_MeshObject.cdl, SMDS_MeshObject.ixx, SMDS_MeshObject.jxx,
-         SMDS_MeshOrientedElementMapHasher.cdl,
-         SMDS_MeshOrientedElementMapHasher.cxx,
-         SMDS_MeshOrientedElementMapHasher.hxx,
-         SMDS_MeshOrientedElementMapHasher.ixx,
-         SMDS_MeshOrientedElementMapHasher.jxx,
-         SMDS_MeshOrientedElementMapHasher.lxx, SMDS_MeshPrism.cdl,
-         SMDS_MeshPrism.ixx, SMDS_MeshPrism.jxx, SMDS_MeshPrism.lxx,
-         SMDS_MeshPyramid.cdl, SMDS_MeshPyramid.ixx, SMDS_MeshPyramid.jxx,
-         SMDS_MeshPyramid.lxx, SMDS_MeshQuadrangle.cdl,
-         SMDS_MeshQuadrangle.ixx, SMDS_MeshQuadrangle.jxx,
-         SMDS_MeshQuadrangle.lxx, SMDS_MeshTetrahedron.cdl,
-         SMDS_MeshTetrahedron.ixx, SMDS_MeshTetrahedron.jxx,
-         SMDS_MeshTetrahedron.lxx, SMDS_MeshTriangle.cdl,
-         SMDS_MeshTriangle.ixx, SMDS_MeshTriangle.jxx,
-         SMDS_MeshTriangle.lxx, SMDS_MeshVolume.cdl, SMDS_MeshVolume.ixx,
-         SMDS_MeshVolume.jxx, SMDS_MeshVolume.lxx,
-         SMDS_MeshVolumesIterator.cdl, SMDS_MeshVolumesIterator.cxx,
-         SMDS_MeshVolumesIterator.hxx, SMDS_MeshVolumesIterator.ixx,
-         SMDS_MeshVolumesIterator.jxx, SMDS_PntHasher.cdl,
-         SMDS_PntHasher.cxx, SMDS_PntHasher.hxx, SMDS_PntHasher.ixx,
-         SMDS_PntHasher.jxx, SMDS_PntHasher.lxx, SMDS_Position.cdl,
-         SMDS_Position.ixx, SMDS_Position.jxx, SMDS_Position.lxx,
-         SMDS_SequenceNodeOfSequenceOfMesh.hxx,
-         SMDS_SequenceNodeOfSequenceOfMesh_0.cxx, SMDS_SequenceOfMesh.hxx,
-         SMDS_SequenceOfMesh_0.cxx, SMDS_SpacePosition.cdl,
-         SMDS_SpacePosition.ixx, SMDS_SpacePosition.jxx,
-         SMDS_SpacePosition.lxx, SMDS_StdMapNode.gxx, SMDS_StdMapNode.lxx,
-         SMDS_StdMapNodeOfExtendedMap.hxx,
-         SMDS_StdMapNodeOfExtendedMap_0.cxx,
-         SMDS_StdMapNodeOfExtendedOrientedMap.hxx,
-         SMDS_StdMapNodeOfExtendedOrientedMap_0.cxx,
-         SMDS_VertexPosition.cdl, SMDS_VertexPosition.ixx,
-         SMDS_VertexPosition.jxx: Remove no longer needed files
-
-2003-09-04 13:28  Jerome Robert <jerome.robert@eads.net>
-
-       * build_configure: It seems "make_omniorb" and "make_commence" need
-         to be before and after "envScript"
-
-2003-09-04 12:57  Jerome Robert <jerome.robert@eads.net>
-
-       * build_configure: make_commence and make_omniorb were detected
-         twice. Only one is requiered in AC_OUTPUT
-
-2003-09-04 12:03  Jerome Robert <jerome.robert@eads.net>
-
-       * src/: DriverDAT/DriverDAT_R_SMDS_Mesh.cxx,
-         DriverDAT/DriverDAT_R_SMDS_Mesh.h,
-         DriverDAT/DriverDAT_R_SMESHDS_Document.cxx,
-         DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx,
-         DriverDAT/DriverDAT_R_SMESHDS_Mesh.h,
-         DriverDAT/DriverDAT_W_SMDS_Mesh.cxx,
-         DriverDAT/DriverDAT_W_SMDS_Mesh.h,
-         DriverDAT/DriverDAT_W_SMESHDS_Document.cxx,
-         DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx,
-         DriverDAT/DriverDAT_W_SMESHDS_Mesh.h,
-         DriverMED/DriverMED_R_SMDS_Mesh.cxx,
-         DriverMED/DriverMED_R_SMDS_Mesh.h,
-         DriverMED/DriverMED_R_SMESHDS_Document.cxx,
-         DriverMED/DriverMED_R_SMESHDS_Mesh.cxx,
-         DriverMED/DriverMED_R_SMESHDS_Mesh.h,
-         DriverMED/DriverMED_W_SMDS_Mesh.cxx,
-         DriverMED/DriverMED_W_SMDS_Mesh.h,
-         DriverMED/DriverMED_W_SMESHDS_Document.cxx,
-         DriverMED/DriverMED_W_SMESHDS_Mesh.cxx,
-         DriverMED/DriverMED_W_SMESHDS_Mesh.h,
-         DriverUNV/DriverUNV_R_SMDS_Mesh.cxx,
-         DriverUNV/DriverUNV_R_SMDS_Mesh.h,
-         DriverUNV/DriverUNV_R_SMESHDS_Document.cxx,
-         DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx,
-         DriverUNV/DriverUNV_R_SMESHDS_Mesh.h,
-         DriverUNV/DriverUNV_W_SMDS_Mesh.cxx,
-         DriverUNV/DriverUNV_W_SMDS_Mesh.h,
-         DriverUNV/DriverUNV_W_SMESHDS_Document.cxx,
-         DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx,
-         DriverUNV/DriverUNV_W_SMESHDS_Mesh.h: Update to match the changes
-         in SMDS
-
-2003-09-04 11:03  Jerome Robert <jerome.robert@eads.net>
-
-       * src/: DriverDAT/Makefile.in, DriverMED/Makefile.in,
-         DriverUNV/Makefile.in: Remove OCC_LIBS from LDFLAGS
-
-2003-09-04 10:56  Jerome Robert <jerome.robert@eads.net>
-
-       * src/Driver/: Document_Reader.cxx, Document_Reader.h,
-         Document_Writer.cxx, Document_Writer.h, Mesh_Reader.h,
-         Mesh_Writer.h: Update to mach the changes in SMDS
-
-2003-09-04 10:44  Jerome Robert <jerome.robert@eads.net>
-
-       * src/Driver/Makefile.in: Remove OCC_LIBS from LDFLAGS
-
-2003-09-04 10:41  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESH_I/: SMESH_Gen_i.cxx, SMESH_MEDMesh_i.cxx,
-         SMESH_MEDMesh_i.hxx, SMESH_MEDSupport_i.cxx,
-         SMESH_MEDSupport_i.hxx, SMESH_MeshEditor_i.cxx,
-         SMESH_MeshEditor_i.hxx, SMESH_Mesh_i.cxx: Update to match the new
-         implementation of SMDS
-
-2003-09-04 10:10  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESH/SMESH_MaxElementArea.cxx: make GetMaxArea const
-
-2003-09-04 10:10  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESH/: SMESH_MEFISTO_2D.hxx, SMESH_Regular_1D.hxx: make
-         hypothesis const
-
-2003-09-04 09:55  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESH/SMESH_Hexa_3D.hxx: Update to match the change of SMDS
-         (new DS).
-
-2003-09-04 09:51  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESH_I/sstream: Use the file include in gcc instead of this
-         one
-
-2003-09-04 09:21  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESH/: SMESH_Algo.cxx, SMESH_Algo.hxx, SMESH_Gen.cxx,
-         SMESH_Gen.hxx, SMESH_Hexa_3D.cxx, SMESH_MEFISTO_2D.cxx,
-         SMESH_MaxElementArea.hxx, SMESH_Mesh.cxx, SMESH_Mesh.hxx,
-         SMESH_Quadrangle_2D.cxx, SMESH_Regular_1D.cxx, SMESH_subMesh.cxx,
-         SMESH_subMesh.hxx: Update to match the change of SMDS (new DS).
-
-2003-09-04 09:13  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESH/: SMESH_NumberOfSegments.cxx,
-         SMESH_NumberOfSegments.hxx: make GetNumberOfSegments and
-         GetScaleFactor const
-
-2003-09-04 09:10  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESH/: SMESH_LocalLength.cxx, SMESH_LocalLength.hxx: make
-         GetLength const
-
-2003-09-04 08:09  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESHFiltersSelection/Makefile.in: Change OCC_LIBS to
-         OCC_KERNEL_LIBS
-
-2003-09-04 07:55  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESHGUI/Makefile.in: Change OCC_LIBS to OCC_KERNEL_LIBS
-
-2003-09-04 07:39  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESHGUI/: SMESHGUI.cxx, SMESHGUI.h: Change
-         Handle(SMESHDS_Document) to SMESHDS_Document*
-
-2003-09-04 07:21  Jerome Robert <jerome.robert@eads.net>
-
-       * src/MEFISTO2/Makefile.in: Remove OCC_LIBS from LDFLAGS
-
-2003-09-04 07:14  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMESHDS/: Makefile.in, SMESHDS_Command.cxx,
-         SMESHDS_Command.hxx, SMESHDS_Document.cxx, SMESHDS_Document.hxx,
-         SMESHDS_Hypothesis.cxx, SMESHDS_Hypothesis.hxx, SMESHDS_Mesh.cxx,
-         SMESHDS_Mesh.hxx, SMESHDS_Script.cxx, SMESHDS_Script.hxx,
-         SMESHDS_SubMesh.cxx, SMESHDS_SubMesh.hxx: Remove Opencascade
-         dependencies. Change to STL.
-
-2003-09-03 17:31  Jerome Robert <jerome.robert@eads.net>
-
-       * src/OBJECT/Makefile.in: Change OCC_LIBS to OCC_KERNEL_LIBS
-
-2003-09-03 17:30  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: SMDS_Mesh.cxx, SMDS_Mesh.hxx, SMDS_MeshEdge.cxx,
-         SMDS_MeshEdge.hxx, SMDS_MeshElement.cxx, SMDS_MeshElement.hxx,
-         SMDS_MeshNode.cxx, SMDS_MeshNode.hxx, SMDS_MeshVolume.cxx,
-         SMDS_MeshVolume.hxx, SMDS_MeshFace.cxx, SMDS_MeshFace.hxx: New DS
-         implementation
-
-2003-09-03 17:29  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: SMDS_EdgePosition.cxx, SMDS_EdgePosition.hxx,
-         SMDS_FacePosition.cxx, SMDS_FacePosition.hxx,
-         SMDS_MeshElementIDFactory.cxx, SMDS_MeshElementIDFactory.hxx,
-         SMDS_MeshGroup.cxx, SMDS_MeshGroup.hxx, SMDS_MeshIDFactory.cxx,
-         SMDS_MeshIDFactory.hxx, SMDS_MeshObject.cxx, SMDS_MeshObject.hxx,
-         SMDS_Position.cxx, SMDS_Position.hxx, SMDS_SpacePosition.cxx,
-         SMDS_SpacePosition.hxx, SMDS_TypeOfPosition.hxx,
-         SMDS_VertexPosition.cxx, SMDS_VertexPosition.hxx: Remove
-         Opencascade dependencies
-
-2003-09-03 17:21  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/SMDSAbs_ElementType.hxx: comments
-
-2003-09-03 17:21  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: SMDS_Iterator.hxx, SMDS_IteratorOfElements.cxx,
-         SMDS_IteratorOfElements.hxx: Add iterator classes
-
-2003-09-03 17:16  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/Makefile.in: Remove wok files. Comment no longer needed
-         files
-
-2003-09-03 17:09  Jerome Robert <jerome.robert@eads.net>
-
-       * src/SMDS/: SMDS_FaceOfEdges.cxx, SMDS_FaceOfEdges.hxx,
-         SMDS_FaceOfNodes.cxx, SMDS_FaceOfNodes.hxx,
-         SMDS_VolumeOfFaces.cxx, SMDS_VolumeOfFaces.hxx,
-         SMDS_VolumeOfNodes.cxx, SMDS_VolumeOfNodes.hxx: Add needed class
-         for the new DS
-
-2003-07-18 12:19  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESHGUI/SMESHGUI_StudyAPI.cxx: NRI : correction wrong merge.
-
-2003-07-11 07:32  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * bin/VERSION, doc/html/Makefile.in, doc/html/INPUT/doxyfile: NRI :
-         Merge from V1_2.
-
-2003-07-10 17:51  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * configure.in.base: NRI : Merge from V1_2.
-
-2003-07-10 16:31  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESHGUI/: SMESHGUI_Swig.cxx, SMESHGUI_Swig.i: NRI : Merge
-         from V1_2.
-
-2003-07-10 16:06  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESHGUI/SMESHGUI_Swig.cxx: NRI : Merge from V1_2.
-
-2003-07-10 15:36  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/Driver/Makefile.in: NRI : Merge from V1_2.
-
-2003-07-10 15:03  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESH/Makefile.in, src/SMESH_I/Makefile.in,
-         idl/SMESH_BasicHypothesis.idl, idl/SMESH_Gen.idl,
-         idl/SMESH_Hypothesis.idl, idl/SMESH_Mesh.idl,
-         adm_local/unix/make_commence.in: NRI : Merge from V1_2.
-
-2003-07-10 14:47  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * configure.in.base: NRI : Merge from V1_2.
-
-2003-07-10 14:31  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/Driver/Makefile.in: NRI : Merge from V1_2.
-
-2003-07-10 13:35  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/: SMESH_I/Makefile.in, SMESH_I/SMESH_1D_Algo_i.cxx,
-         SMESH_I/SMESH_1D_Algo_i.hxx, SMESH_I/SMESH_2D_Algo_i.cxx,
-         SMESH_I/SMESH_2D_Algo_i.hxx, SMESH_I/SMESH_3D_Algo_i.cxx,
-         SMESH_I/SMESH_3D_Algo_i.hxx, SMESH_I/SMESH_Algo_i.cxx,
-         SMESH_I/SMESH_Algo_i.hxx, SMESH_I/SMESH_Gen_i.cxx,
-         SMESH_I/SMESH_Gen_i.hxx, SMESH_I/SMESH_Hexa_3D_i.cxx,
-         SMESH_I/SMESH_Hexa_3D_i.hxx,
-         SMESH_I/SMESH_HypothesisFactory_i.cxx,
-         SMESH_I/SMESH_HypothesisFactory_i.hxx,
-         SMESH_I/SMESH_Hypothesis_i.cxx, SMESH_I/SMESH_Hypothesis_i.hxx,
-         SMESH_I/SMESH_LocalLength_i.cxx, SMESH_I/SMESH_LocalLength_i.hxx,
-         SMESH_I/SMESH_MEDFamily_i.cxx, SMESH_I/SMESH_MEDFamily_i.hxx,
-         SMESH_I/SMESH_MEDMesh_i.cxx, SMESH_I/SMESH_MEDMesh_i.hxx,
-         SMESH_I/SMESH_MEDSupport_i.cxx, SMESH_I/SMESH_MEDSupport_i.hxx,
-         SMESH_I/SMESH_MEFISTO_2D_i.cxx, SMESH_I/SMESH_MEFISTO_2D_i.hxx,
-         SMESH_I/SMESH_MaxElementArea_i.cxx,
-         SMESH_I/SMESH_MaxElementArea_i.hxx,
-         SMESH_I/SMESH_MaxElementVolume_i.cxx,
-         SMESH_I/SMESH_MaxElementVolume_i.hxx,
-         SMESH_I/SMESH_MeshEditor_i.cxx, SMESH_I/SMESH_MeshEditor_i.hxx,
-         SMESH_I/SMESH_Mesh_i.cxx, SMESH_I/SMESH_Mesh_i.hxx,
-         SMESH_I/SMESH_NumberOfSegments_i.cxx,
-         SMESH_I/SMESH_NumberOfSegments_i.hxx,
-         SMESH_I/SMESH_Quadrangle_2D_i.cxx,
-         SMESH_I/SMESH_Quadrangle_2D_i.hxx,
-         SMESH_I/SMESH_Regular_1D_i.cxx, SMESH_I/SMESH_Regular_1D_i.hxx,
-         SMESH_I/SMESH_subMesh_i.cxx, SMESH_I/SMESH_subMesh_i.hxx,
-         SMESH_I/SMESH_test.py, SMESH_I/SMESH_topo.cxx,
-         SMESH_I/SMESH_topo.hxx, SMESH_I/smeshpy.py,
-         SMESH_SWIG/Makefile.in, SMESH_SWIG/SMESH_fixation.py,
-         SMESH_SWIG/SMESH_mechanic.py, SMESH_SWIG/SMESH_test0.py,
-         SMESH_SWIG/SMESH_test1.py, SMESH_SWIG/SMESH_test2.py,
-         SMESH_SWIG/SMESH_test3.py, SMESH_SWIG/batchmode_smesh.py,
-         SMESH_SWIG/libSMESH_Swig.i: yfr : merge 1.2
-
-2003-07-10 13:18  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/SMESHGUI/: SMESHGUI.h, SMESHGUI_AddAlgorithmDlg.cxx,
-         SMESHGUI_AddAlgorithmDlg.h, SMESHGUI_AddEdgeDlg.cxx,
-         SMESHGUI_AddEdgeDlg.h, SMESHGUI_AddFaceDlg.cxx,
-         SMESHGUI_AddFaceDlg.h, SMESHGUI_AddHypothesisDlg.cxx,
-         SMESHGUI_AddHypothesisDlg.h, SMESHGUI_AddSubMeshDlg.cxx,
-         SMESHGUI_AddSubMeshDlg.h, SMESHGUI_AddVolumeDlg.cxx,
-         SMESHGUI_AddVolumeDlg.h, SMESHGUI_ComputeScalarValue.cxx,
-         SMESHGUI_ComputeScalarValue.h, SMESHGUI_DiagonalInversionDlg.cxx,
-         SMESHGUI_DiagonalInversionDlg.h,
-         SMESHGUI_EdgesConnectivityDlg.cxx,
-         SMESHGUI_EdgesConnectivityDlg.h, SMESHGUI_EditHypothesesDlg.cxx,
-         SMESHGUI_EditHypothesesDlg.h, SMESHGUI_EditScalarBarDlg.cxx,
-         SMESHGUI_EditScalarBarDlg.h, SMESHGUI_InitMeshDlg.cxx,
-         SMESHGUI_InitMeshDlg.h, SMESHGUI_LocalLengthDlg.cxx,
-         SMESHGUI_LocalLengthDlg.h, SMESHGUI_MaxElementAreaDlg.cxx,
-         SMESHGUI_MaxElementAreaDlg.h, SMESHGUI_MaxElementVolumeDlg.cxx,
-         SMESHGUI_MaxElementVolumeDlg.h, SMESHGUI_MeshInfosDlg.cxx,
-         SMESHGUI_MeshInfosDlg.h, SMESHGUI_MoveNodesDlg.cxx,
-         SMESHGUI_MoveNodesDlg.h, SMESHGUI_NbSegmentsDlg.cxx,
-         SMESHGUI_NbSegmentsDlg.h, SMESHGUI_NodesDlg.cxx,
-         SMESHGUI_NodesDlg.h, SMESHGUI_OrientationElementsDlg.cxx,
-         SMESHGUI_OrientationElementsDlg.h,
-         SMESHGUI_Preferences_ColorDlg.cxx,
-         SMESHGUI_Preferences_ColorDlg.h,
-         SMESHGUI_Preferences_ScalarBarDlg.cxx,
-         SMESHGUI_Preferences_ScalarBarDlg.h,
-         SMESHGUI_RemoveElementsDlg.cxx, SMESHGUI_RemoveElementsDlg.h,
-         SMESHGUI_RemoveNodesDlg.cxx, SMESHGUI_RemoveNodesDlg.h,
-         SMESHGUI_SpinBox.cxx, SMESHGUI_SpinBox.h, SMESHGUI_StudyAPI.cxx,
-         SMESHGUI_StudyAPI.h, SMESHGUI_Swig.cxx, SMESHGUI_Swig.hxx,
-         SMESHGUI_Swig.i, SMESHGUI_TransparencyDlg.cxx,
-         SMESHGUI_TransparencyDlg.h, SMESHGUI_aParameterDlg.cxx,
-         SMESHGUI_aParameterDlg.h: yfr : merge 1.2
-
-2003-07-10 12:18  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/SMESHGUI/: Makefile.in, SMESHGUI.cxx: yfr : Merge V1.2
-
-2003-07-10 11:35  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/SMESHFiltersSelection/Makefile.in: yfr : Merge with v1.2
-
-2003-07-10 10:04  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/: SMESHDS/Handle_SMESHDS_Command.hxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx,
-         SMESHDS/Handle_SMESHDS_Document.hxx,
-         SMESHDS/Handle_SMESHDS_ListNodeOfListOfAsciiString.hxx,
-         SMESHDS/Handle_SMESHDS_ListNodeOfListOfCommand.hxx,
-         SMESHDS/Handle_SMESHDS_ListNodeOfListOfPtrHypothesis.hxx,
-         SMESHDS/Handle_SMESHDS_Mesh.hxx,
-         SMESHDS/Handle_SMESHDS_Script.hxx,
-         SMESHDS/Handle_SMESHDS_SubMesh.hxx, SMESHDS/Makefile.in,
-         SMESHDS/SMESHDS.cdl, SMESHDS/SMESHDS_Command.cdl,
-         SMESHDS/SMESHDS_Command.cxx, SMESHDS/SMESHDS_Command.hxx,
-         SMESHDS/SMESHDS_Command.ixx, SMESHDS/SMESHDS_Command.jxx,
-         SMESHDS/SMESHDS_CommandType.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerMesh.hxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapOfShapeListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapOfShapeSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapOfShapeSubMesh_0.cxx,
-         SMESHDS/SMESHDS_Document.cdl, SMESHDS/SMESHDS_Document.cxx,
-         SMESHDS/SMESHDS_Document.hxx, SMESHDS/SMESHDS_Document.ixx,
-         SMESHDS/SMESHDS_Document.jxx, SMESHDS/SMESHDS_Hypothesis.cxx,
-         SMESHDS/SMESHDS_Hypothesis.hxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfAsciiString.hxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfAsciiString_0.cxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfCommand.hxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfCommand_0.cxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfAsciiString.hxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfAsciiString_0.cxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfCommand.hxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfCommand_0.cxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_ListOfAsciiString.hxx,
-         SMESHDS/SMESHDS_ListOfAsciiString_0.cxx,
-         SMESHDS/SMESHDS_ListOfCommand.hxx,
-         SMESHDS/SMESHDS_ListOfCommand_0.cxx,
-         SMESHDS/SMESHDS_ListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_ListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_Mesh.cdl, SMESHDS/SMESHDS_Mesh.cxx,
-         SMESHDS/SMESHDS_Mesh.hxx, SMESHDS/SMESHDS_Mesh.ixx,
-         SMESHDS/SMESHDS_Mesh.jxx, SMESHDS/SMESHDS_PtrHypothesis.hxx,
-         SMESHDS/SMESHDS_Script.cdl, SMESHDS/SMESHDS_Script.cxx,
-         SMESHDS/SMESHDS_Script.hxx, SMESHDS/SMESHDS_Script.ixx,
-         SMESHDS/SMESHDS_Script.jxx, SMESHDS/SMESHDS_SubMesh.cdl,
-         SMESHDS/SMESHDS_SubMesh.cxx, SMESHDS/SMESHDS_SubMesh.hxx,
-         SMESHDS/SMESHDS_SubMesh.ixx, SMESHDS/SMESHDS_SubMesh.jxx,
-         SMESH/Makefile.in, SMESH/SMESH_1D_Algo.cxx,
-         SMESH/SMESH_1D_Algo.hxx, SMESH/SMESH_2D_Algo.cxx,
-         SMESH/SMESH_2D_Algo.hxx, SMESH/SMESH_3D_Algo.cxx,
-         SMESH/SMESH_3D_Algo.hxx, SMESH/SMESH_Algo.cxx,
-         SMESH/SMESH_Algo.hxx, SMESH/SMESH_Gen.cxx, SMESH/SMESH_Gen.hxx,
-         SMESH/SMESH_Hexa_3D.cxx, SMESH/SMESH_Hexa_3D.hxx,
-         SMESH/SMESH_Hypothesis.cxx, SMESH/SMESH_Hypothesis.hxx,
-         SMESH/SMESH_HypothesisCreator.hxx,
-         SMESH/SMESH_HypothesisFactory.cxx,
-         SMESH/SMESH_HypothesisFactory.hxx,
-         SMESH/SMESH_LengthFromEdges.cxx, SMESH/SMESH_LengthFromEdges.hxx,
-         SMESH/SMESH_LocalLength.cxx, SMESH/SMESH_LocalLength.hxx,
-         SMESH/SMESH_MEFISTO_2D.cxx, SMESH/SMESH_MEFISTO_2D.hxx,
-         SMESH/SMESH_MaxElementArea.cxx, SMESH/SMESH_MaxElementArea.hxx,
-         SMESH/SMESH_MaxElementVolume.cxx,
-         SMESH/SMESH_MaxElementVolume.hxx, SMESH/SMESH_Mesh.cxx,
-         SMESH/SMESH_Mesh.hxx, SMESH/SMESH_NumberOfSegments.cxx,
-         SMESH/SMESH_NumberOfSegments.hxx, SMESH/SMESH_Quadrangle_2D.cxx,
-         SMESH/SMESH_Quadrangle_2D.hxx, SMESH/SMESH_Regular_1D.cxx,
-         SMESH/SMESH_Regular_1D.hxx, SMESH/SMESH_subMesh.cxx,
-         SMESH/SMESH_subMesh.hxx: yfr : Merge with v1.2
-
-2003-07-10 09:49  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/SMDS/: Handle_SMDSControl_BoundaryEdges.hxx,
-         Handle_SMDSControl_BoundaryFaces.hxx,
-         Handle_SMDSControl_MeshBoundary.hxx,
-         Handle_SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx,
-         Handle_SMDS_DataMapNodeOfDataMapOfPntInteger.hxx,
-         Handle_SMDS_EdgePosition.hxx, Handle_SMDS_FacePosition.hxx,
-         Handle_SMDS_HSequenceOfMesh.hxx,
-         Handle_SMDS_ListNodeOfListOfMesh.hxx,
-         Handle_SMDS_ListNodeOfListOfMeshElement.hxx,
-         Handle_SMDS_ListNodeOfListOfMeshGroup.hxx, Handle_SMDS_Mesh.hxx,
-         Handle_SMDS_MeshEdge.hxx, Handle_SMDS_MeshElement.hxx,
-         Handle_SMDS_MeshElementIDFactory.hxx, Handle_SMDS_MeshFace.hxx,
-         Handle_SMDS_MeshGroup.hxx, Handle_SMDS_MeshHexahedron.hxx,
-         Handle_SMDS_MeshIDFactory.hxx, Handle_SMDS_MeshNode.hxx,
-         Handle_SMDS_MeshNodeIDFactory.hxx, Handle_SMDS_MeshObject.hxx,
-         Handle_SMDS_MeshPrism.hxx, Handle_SMDS_MeshPyramid.hxx,
-         Handle_SMDS_MeshQuadrangle.hxx, Handle_SMDS_MeshTetrahedron.hxx,
-         Handle_SMDS_MeshTriangle.hxx, Handle_SMDS_MeshVolume.hxx,
-         Handle_SMDS_Position.hxx,
-         Handle_SMDS_SequenceNodeOfSequenceOfMesh.hxx,
-         Handle_SMDS_SpacePosition.hxx,
-         Handle_SMDS_StdMapNodeOfExtendedMap.hxx,
-         Handle_SMDS_StdMapNodeOfExtendedOrientedMap.hxx,
-         Handle_SMDS_VertexPosition.hxx, Makefile.in, SMDS.cdl,
-         SMDSAbs.cdl, SMDSAbs_ElementType.hxx, SMDSControl.cdl,
-         SMDSControl.cxx, SMDSControl.hxx, SMDSControl.ixx,
-         SMDSControl.jxx, SMDSControl_BoundaryEdges.cdl,
-         SMDSControl_BoundaryEdges.cxx, SMDSControl_BoundaryEdges.hxx,
-         SMDSControl_BoundaryEdges.ixx, SMDSControl_BoundaryEdges.jxx,
-         SMDSControl_BoundaryFaces.cdl, SMDSControl_BoundaryFaces.cxx,
-         SMDSControl_BoundaryFaces.hxx, SMDSControl_BoundaryFaces.ixx,
-         SMDSControl_BoundaryFaces.jxx, SMDSControl_MeshBoundary.cdl,
-         SMDSControl_MeshBoundary.cxx, SMDSControl_MeshBoundary.hxx,
-         SMDSControl_MeshBoundary.ixx, SMDSControl_MeshBoundary.jxx,
-         SMDSEdit.cdl, SMDSEdit_Transform.cdl, SMDSEdit_Transform.cxx,
-         SMDSEdit_Transform.hxx, SMDSEdit_Transform.ixx,
-         SMDSEdit_Transform.jxx, SMDS_BasicMap.lxx,
-         SMDS_BasicMapIterator.lxx,
-         SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement.hxx,
-         SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement_0.cxx,
-         SMDS_DataMapIteratorOfDataMapOfPntInteger.hxx,
-         SMDS_DataMapIteratorOfDataMapOfPntInteger_0.cxx,
-         SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx,
-         SMDS_DataMapNodeOfDataMapOfIntegerMeshElement_0.cxx,
-         SMDS_DataMapNodeOfDataMapOfPntInteger.hxx,
-         SMDS_DataMapNodeOfDataMapOfPntInteger_0.cxx,
-         SMDS_DataMapOfIntegerMeshElement.hxx,
-         SMDS_DataMapOfIntegerMeshElement_0.cxx,
-         SMDS_DataMapOfPntInteger.hxx, SMDS_DataMapOfPntInteger_0.cxx,
-         SMDS_EdgePosition.cdl, SMDS_EdgePosition.cxx,
-         SMDS_EdgePosition.hxx, SMDS_EdgePosition.ixx,
-         SMDS_EdgePosition.jxx, SMDS_EdgePosition.lxx,
-         SMDS_ExtendedMap.hxx, SMDS_ExtendedMap_0.cxx,
-         SMDS_ExtendedOrientedMap.hxx, SMDS_ExtendedOrientedMap_0.cxx,
-         SMDS_FacePosition.cdl, SMDS_FacePosition.cxx,
-         SMDS_FacePosition.hxx, SMDS_FacePosition.ixx,
-         SMDS_FacePosition.jxx, SMDS_FacePosition.lxx,
-         SMDS_HSequenceOfMesh.hxx, SMDS_HSequenceOfMesh_0.cxx,
-         SMDS_ListIteratorOfListOfMesh.hxx,
-         SMDS_ListIteratorOfListOfMeshElement.hxx,
-         SMDS_ListIteratorOfListOfMeshElement_0.cxx,
-         SMDS_ListIteratorOfListOfMeshGroup.hxx,
-         SMDS_ListIteratorOfListOfMeshGroup_0.cxx,
-         SMDS_ListIteratorOfListOfMesh_0.cxx,
-         SMDS_ListNodeOfListOfMesh.hxx,
-         SMDS_ListNodeOfListOfMeshElement.hxx,
-         SMDS_ListNodeOfListOfMeshElement_0.cxx,
-         SMDS_ListNodeOfListOfMeshGroup.hxx,
-         SMDS_ListNodeOfListOfMeshGroup_0.cxx,
-         SMDS_ListNodeOfListOfMesh_0.cxx, SMDS_ListOfMesh.hxx,
-         SMDS_ListOfMeshElement.hxx, SMDS_ListOfMeshElement_0.cxx,
-         SMDS_ListOfMeshGroup.hxx, SMDS_ListOfMeshGroup_0.cxx,
-         SMDS_ListOfMesh_0.cxx, SMDS_MapIteratorOfExtendedMap.hxx,
-         SMDS_MapIteratorOfExtendedMap_0.cxx,
-         SMDS_MapIteratorOfExtendedOrientedMap.hxx,
-         SMDS_MapIteratorOfExtendedOrientedMap_0.cxx, SMDS_MapNode.lxx,
-         SMDS_MapOfMeshElement.cdl, SMDS_MapOfMeshElement.cxx,
-         SMDS_MapOfMeshElement.hxx, SMDS_MapOfMeshElement.ixx,
-         SMDS_MapOfMeshElement.jxx, SMDS_MapOfMeshElement.lxx,
-         SMDS_MapOfMeshOrientedElement.cdl,
-         SMDS_MapOfMeshOrientedElement.cxx,
-         SMDS_MapOfMeshOrientedElement.hxx,
-         SMDS_MapOfMeshOrientedElement.ixx,
-         SMDS_MapOfMeshOrientedElement.jxx,
-         SMDS_MapOfMeshOrientedElement.lxx, SMDS_Mesh.cdl, SMDS_Mesh.cxx,
-         SMDS_Mesh.hxx, SMDS_Mesh.ixx, SMDS_Mesh.jxx, SMDS_Mesh.lxx,
-         SMDS_MeshEdge.cdl, SMDS_MeshEdge.cxx, SMDS_MeshEdge.hxx,
-         SMDS_MeshEdge.ixx, SMDS_MeshEdge.jxx, SMDS_MeshEdge.lxx,
-         SMDS_MeshEdgesIterator.cdl, SMDS_MeshEdgesIterator.cxx,
-         SMDS_MeshEdgesIterator.hxx, SMDS_MeshEdgesIterator.ixx,
-         SMDS_MeshEdgesIterator.jxx, SMDS_MeshElement.cdl,
-         SMDS_MeshElement.cxx, SMDS_MeshElement.hxx, SMDS_MeshElement.ixx,
-         SMDS_MeshElement.jxx, SMDS_MeshElement.lxx,
-         SMDS_MeshElementIDFactory.cdl, SMDS_MeshElementIDFactory.cxx,
-         SMDS_MeshElementIDFactory.hxx, SMDS_MeshElementIDFactory.ixx,
-         SMDS_MeshElementIDFactory.jxx, SMDS_MeshElementIDFactory.lxx,
-         SMDS_MeshElementMapHasher.cdl, SMDS_MeshElementMapHasher.cxx,
-         SMDS_MeshElementMapHasher.hxx, SMDS_MeshElementMapHasher.ixx,
-         SMDS_MeshElementMapHasher.jxx, SMDS_MeshElementMapHasher.lxx,
-         SMDS_MeshElementsIterator.cdl, SMDS_MeshElementsIterator.cxx,
-         SMDS_MeshElementsIterator.hxx, SMDS_MeshElementsIterator.ixx,
-         SMDS_MeshElementsIterator.jxx, SMDS_MeshElementsIterator.lxx,
-         SMDS_MeshFace.cdl, SMDS_MeshFace.cxx, SMDS_MeshFace.hxx,
-         SMDS_MeshFace.ixx, SMDS_MeshFace.jxx, SMDS_MeshFace.lxx,
-         SMDS_MeshFacesIterator.cdl, SMDS_MeshFacesIterator.cxx,
-         SMDS_MeshFacesIterator.hxx, SMDS_MeshFacesIterator.ixx,
-         SMDS_MeshFacesIterator.jxx, SMDS_MeshGroup.cdl,
-         SMDS_MeshGroup.cxx, SMDS_MeshGroup.hxx, SMDS_MeshGroup.ixx,
-         SMDS_MeshGroup.jxx, SMDS_MeshGroup.lxx, SMDS_MeshHexahedron.cdl,
-         SMDS_MeshHexahedron.cxx, SMDS_MeshHexahedron.hxx,
-         SMDS_MeshHexahedron.ixx, SMDS_MeshHexahedron.jxx,
-         SMDS_MeshHexahedron.lxx, SMDS_MeshIDFactory.cdl,
-         SMDS_MeshIDFactory.cxx, SMDS_MeshIDFactory.hxx,
-         SMDS_MeshIDFactory.ixx, SMDS_MeshIDFactory.jxx,
-         SMDS_MeshIDFactory.lxx, SMDS_MeshNode.cdl, SMDS_MeshNode.cxx,
-         SMDS_MeshNode.hxx, SMDS_MeshNode.ixx, SMDS_MeshNode.jxx,
-         SMDS_MeshNode.lxx, SMDS_MeshNodeIDFactory.cdl,
-         SMDS_MeshNodeIDFactory.cxx, SMDS_MeshNodeIDFactory.hxx,
-         SMDS_MeshNodeIDFactory.ixx, SMDS_MeshNodeIDFactory.jxx,
-         SMDS_MeshNodeIDFactory.lxx, SMDS_MeshNodesIterator.cdl,
-         SMDS_MeshNodesIterator.cxx, SMDS_MeshNodesIterator.hxx,
-         SMDS_MeshNodesIterator.ixx, SMDS_MeshNodesIterator.jxx,
-         SMDS_MeshObject.cdl, SMDS_MeshObject.cxx, SMDS_MeshObject.hxx,
-         SMDS_MeshObject.ixx, SMDS_MeshObject.jxx,
-         SMDS_MeshOrientedElementMapHasher.cdl,
-         SMDS_MeshOrientedElementMapHasher.cxx,
-         SMDS_MeshOrientedElementMapHasher.hxx,
-         SMDS_MeshOrientedElementMapHasher.ixx,
-         SMDS_MeshOrientedElementMapHasher.jxx,
-         SMDS_MeshOrientedElementMapHasher.lxx, SMDS_MeshPrism.cdl,
-         SMDS_MeshPrism.cxx, SMDS_MeshPrism.hxx, SMDS_MeshPrism.ixx,
-         SMDS_MeshPrism.jxx, SMDS_MeshPrism.lxx, SMDS_MeshPyramid.cdl,
-         SMDS_MeshPyramid.cxx, SMDS_MeshPyramid.hxx, SMDS_MeshPyramid.ixx,
-         SMDS_MeshPyramid.jxx, SMDS_MeshPyramid.lxx,
-         SMDS_MeshQuadrangle.cdl, SMDS_MeshQuadrangle.cxx,
-         SMDS_MeshQuadrangle.hxx, SMDS_MeshQuadrangle.ixx,
-         SMDS_MeshQuadrangle.jxx, SMDS_MeshQuadrangle.lxx,
-         SMDS_MeshTetrahedron.cdl, SMDS_MeshTetrahedron.cxx,
-         SMDS_MeshTetrahedron.hxx, SMDS_MeshTetrahedron.ixx,
-         SMDS_MeshTetrahedron.jxx, SMDS_MeshTetrahedron.lxx,
-         SMDS_MeshTriangle.cdl, SMDS_MeshTriangle.cxx,
-         SMDS_MeshTriangle.hxx, SMDS_MeshTriangle.ixx,
-         SMDS_MeshTriangle.jxx, SMDS_MeshTriangle.lxx,
-         SMDS_MeshVolume.cdl, SMDS_MeshVolume.cxx, SMDS_MeshVolume.hxx,
-         SMDS_MeshVolume.ixx, SMDS_MeshVolume.jxx, SMDS_MeshVolume.lxx,
-         SMDS_MeshVolumesIterator.cdl, SMDS_MeshVolumesIterator.cxx,
-         SMDS_MeshVolumesIterator.hxx, SMDS_MeshVolumesIterator.ixx,
-         SMDS_MeshVolumesIterator.jxx, SMDS_PntHasher.cdl,
-         SMDS_PntHasher.cxx, SMDS_PntHasher.hxx, SMDS_PntHasher.ixx,
-         SMDS_PntHasher.jxx, SMDS_PntHasher.lxx, SMDS_Position.cdl,
-         SMDS_Position.cxx, SMDS_Position.hxx, SMDS_Position.ixx,
-         SMDS_Position.jxx, SMDS_Position.lxx,
-         SMDS_SequenceNodeOfSequenceOfMesh.hxx,
-         SMDS_SequenceNodeOfSequenceOfMesh_0.cxx, SMDS_SequenceOfMesh.hxx,
-         SMDS_SequenceOfMesh_0.cxx, SMDS_SpacePosition.cdl,
-         SMDS_SpacePosition.cxx, SMDS_SpacePosition.hxx,
-         SMDS_SpacePosition.ixx, SMDS_SpacePosition.jxx,
-         SMDS_SpacePosition.lxx, SMDS_StdMapNode.lxx,
-         SMDS_StdMapNodeOfExtendedMap.hxx,
-         SMDS_StdMapNodeOfExtendedMap_0.cxx,
-         SMDS_StdMapNodeOfExtendedOrientedMap.hxx,
-         SMDS_StdMapNodeOfExtendedOrientedMap_0.cxx,
-         SMDS_TypeOfPosition.hxx, SMDS_VertexPosition.cdl,
-         SMDS_VertexPosition.cxx, SMDS_VertexPosition.hxx,
-         SMDS_VertexPosition.ixx, SMDS_VertexPosition.jxx: yfr : Merge
-         with v1.2
-
-2003-07-10 09:32  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/: DriverDAT/Makefile.in, DriverUNV/Makefile.in,
-         MEFISTO2/Makefile.in, OBJECT/Makefile.in, OBJECT/SMESH_Actor.cxx,
-         OBJECT/SMESH_Actor.h, OBJECT/SMESH_Grid.cxx, OBJECT/SMESH_Grid.h:
-         yfr : Merge with v1.2
-
-2003-07-10 09:14  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/Makefile.in: yfr : Merge with v1.2
-
-2003-07-10 09:00  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/: Driver/Document_Reader.cxx, Driver/Document_Reader.h,
-         Driver/Document_Writer.cxx, Driver/Document_Writer.h,
-         Driver/Driver_dl.cxx, Driver/Makefile.in, Driver/Mesh_Reader.cxx,
-         Driver/Mesh_Reader.h, Driver/Mesh_Writer.cxx,
-         Driver/Mesh_Writer.h, Driver/SMESHDriver.cxx,
-         Driver/SMESHDriver.h, DriverDAT/DriverDAT_R_SMDS_Mesh.cxx,
-         DriverDAT/DriverDAT_R_SMDS_Mesh.h,
-         DriverDAT/DriverDAT_R_SMESHDS_Document.cxx,
-         DriverDAT/DriverDAT_R_SMESHDS_Document.h,
-         DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx,
-         DriverDAT/DriverDAT_R_SMESHDS_Mesh.h,
-         DriverDAT/DriverDAT_W_SMDS_Mesh.cxx,
-         DriverDAT/DriverDAT_W_SMDS_Mesh.h,
-         DriverDAT/DriverDAT_W_SMESHDS_Document.cxx,
-         DriverDAT/DriverDAT_W_SMESHDS_Document.h,
-         DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx,
-         DriverDAT/DriverDAT_W_SMESHDS_Mesh.h, DriverDAT/Makefile.in,
-         DriverMED/DriverMED_R_SMDS_Mesh.cxx,
-         DriverMED/DriverMED_R_SMESHDS_Document.cxx,
-         DriverMED/DriverMED_R_SMESHDS_Mesh.cxx,
-         DriverMED/DriverMED_W_SMDS_Mesh.cxx,
-         DriverMED/DriverMED_W_SMESHDS_Document.cxx,
-         DriverMED/DriverMED_W_SMESHDS_Mesh.cxx, DriverMED/Makefile.in,
-         MEFISTO2/Makefile.in, MEFISTO2/Rn.h, MEFISTO2/aptrte.cxx,
-         MEFISTO2/aptrte.h: yfr : Merge with v1.2
-
-2003-07-10 08:12  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/SMESHGUI/SMESHGUI_icons.po: Initial revision
-
-2003-07-10 08:09  tag V1_2
-
-2003-07-10 08:09  Yves Fricaud <yves.fricaud@opencascade.com>
-
-       * src/: DriverMED/DriverMED_R_SMESHDS_Document.h,
-         DriverMED/DriverMED_W_SMESHDS_Document.h,
-         SMESHGUI/SMESHGUI_msg_en.po: sources v1.2
-
-2003-06-29 13:17  Paul Rascle <paul.rascle@edf.fr>
-
-       * src/SMESH_SWIG/: Makefile.in, SMESH_shared_modules.py: PR: needed
-         by merge C. CAREMOLI branch CCAR_br1
-
-2003-06-12 10:37  Paul Rascle <paul.rascle@edf.fr>
-
-       * Makefile.in: PR: avoids unnecessary compilation after
-         regeneration of SALOMEconfig.h, with gcc3.2
-
-2003-06-12 10:34  Paul Rascle <paul.rascle@edf.fr>
-
-       * src/SMESH_SWIG/SMESH_fixation.py: PR: bug on subshapes not sorted
-
-2003-05-28 16:42  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * adm_local/unix/make_commence.in: NRI : Add path fro GEOM and MED
-         idls.
-
-2003-05-28 16:26  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * idl/Makefile.in, adm_local/unix/make_commence.in,
-         adm_local/unix/make_omniorb.in, build_configure,
-         configure.in.base: NRI : Update IDL Dependancies.
-
-2003-05-28 07:20  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * bin/VERSION, Makefile.in: NRI : Add MODULE version info.
-
-2003-05-28 07:16  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * configure.in.base, adm_local/unix/config_files/check_Med.m4: NRI
-         : Add Check of MED.
-
-2003-05-26 14:21  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * adm_local/unix/config_files/check_Geom.m4, configure.in.base: NRI
-         : Add GEOM check local.
-
-2003-05-26 14:00  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * build_configure: NRI : updated aclocal.
-
-2003-05-23 11:40  tag Start-v1_1a
-
-2003-05-23 11:40  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESHGUI/: SMESHGUI_AddAlgorithmDlg.cxx,
-         SMESHGUI_AddEdgeDlg.cxx, SMESHGUI_AddFaceDlg.cxx,
-         SMESHGUI_AddHypothesisDlg.cxx, SMESHGUI_AddSubMeshDlg.cxx,
-         SMESHGUI_AddVolumeDlg.cxx, SMESHGUI_DiagonalInversionDlg.cxx,
-         SMESHGUI_EdgesConnectivityDlg.cxx,
-         SMESHGUI_EditHypothesesDlg.cxx, SMESHGUI_InitMeshDlg.cxx,
-         SMESHGUI_LocalLengthDlg.cxx, SMESHGUI_MaxElementAreaDlg.cxx,
-         SMESHGUI_MaxElementVolumeDlg.cxx, SMESHGUI_MoveNodesDlg.cxx,
-         SMESHGUI_NbSegmentsDlg.cxx, SMESHGUI_NodesDlg.cxx,
-         SMESHGUI_OrientationElementsDlg.cxx,
-         SMESHGUI_RemoveElementsDlg.cxx, SMESHGUI_RemoveNodesDlg.cxx: NRI
-         : loadPixmap( "SMESH", ...) instead of "SMESHGUI".
-
-2003-05-22 09:52  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * doc/: Makefile.in, html/Makefile.in, html/INPUT/doxyfile,
-         html/INPUT/sources/Application-About.png,
-         html/INPUT/sources/Application-About1.jpg,
-         html/INPUT/sources/application.gif,
-         html/INPUT/sources/application.jpg,
-         html/INPUT/sources/bg_salomepro.gif,
-         html/INPUT/sources/doxygen.css, html/INPUT/sources/logocorp.gif,
-         html/INPUT/sources/myheader.html, html/INPUT/sources/occ.gif,
-         html/INPUT/HTML/SMESH_BasicHypothesis.html,
-         html/INPUT/HTML/SMESH_Gen.html,
-         html/INPUT/HTML/SMESH_Hypothesis.html,
-         html/INPUT/HTML/SMESH_Mesh.html: NRI : Add documentation.
-
-2003-05-22 09:51  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * configure.in.base: NRI : Add check HTML generators.
-
-2003-05-20 07:17  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/: SMESH_I/SMESH_Gen_i.cxx, SMESH_I/SMESH_test.py,
-         SMESH_I/smeshpy.py, SMESH_SWIG/SMESH_fixation.py,
-         SMESH_SWIG/SMESH_mechanic.py, SMESH_SWIG/SMESH_test0.py,
-         SMESH_SWIG/SMESH_test1.py, SMESH_SWIG/SMESH_test3.py,
-         SMESHGUI/SMESHGUI.cxx: NRI : Use GEOM instead of Geometry.
-
-2003-05-20 07:16  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * resources/SMESHCatalog.xml: NRI : Add component-username tag.
-
-2003-05-20 07:15  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * Makefile.in: NRI : Add SMESHCatalog.xml
-
-2003-05-19 14:50  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESHGUI/SMESHGUI_StudyAPI.cxx: NRI : Add QAD_Desktop.h.
-
-2003-05-19 14:49  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESHGUI/Makefile.in: NRI : Add GEOM includes and libs.
-
-2003-05-19 14:38  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESHFiltersSelection/Makefile.in: NRI : Add KERNEL includes.
-
-2003-05-19 14:34  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESH_I/Makefile.in: NRI : Change lGeometryClient by
-         lGEOMClient.
-
-2003-05-19 14:32  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/SMESH_I/Makefile.in: NRI : Add GEOM includes and libs.
-
-2003-05-19 14:11  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/: SMESH/Makefile.in, SMESHDS/Makefile.in: NRI : Add KERNEL
-         includes and libs.
-
-2003-05-19 14:09  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/: DriverDAT/Makefile.in, DriverMED/Makefile.in,
-         DriverUNV/Makefile.in: NRI : Add KERNEL includes.
-
-2003-05-19 14:08  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * idl/Makefile.in: NRI : Add MED.idl
-
-2003-05-19 14:01  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/: SMESH_SWIG/Makefile.in, SMESH_SWIG/SMESH_fixation.py,
-         SMESH_SWIG/SMESH_mechanic.py, SMESH_SWIG/SMESH_test0.py,
-         SMESH_SWIG/SMESH_test1.py, SMESH_SWIG/SMESH_test2.py,
-         SMESH_SWIG/SMESH_test3.py, SMESH_SWIG/batchmode_smesh.py,
-         SMESH_SWIG/libSMESH_Swig.i, Makefile.in,
-         SMESHFiltersSelection/Handle_SMESH_TypeFilter.hxx,
-         SMESHFiltersSelection/Makefile.in,
-         SMESHFiltersSelection/SMESH_Type.h,
-         SMESHFiltersSelection/SMESH_TypeFilter.cxx,
-         SMESHFiltersSelection/SMESH_TypeFilter.hxx,
-         SMESHFiltersSelection/SMESH_TypeFilter.ixx,
-         SMESHFiltersSelection/SMESH_TypeFilter.jxx, MEFISTO2/Makefile.in,
-         MEFISTO2/Rn.h, MEFISTO2/aptrte.cxx, MEFISTO2/aptrte.h,
-         MEFISTO2/areteideale.f, MEFISTO2/trte.f, OBJECT/Makefile.in,
-         OBJECT/SMESH_Actor.cxx, OBJECT/SMESH_Actor.h,
-         OBJECT/SMESH_Grid.cxx, OBJECT/SMESH_Grid.h,
-         Driver/Document_Reader.cxx, Driver/Document_Reader.h,
-         Driver/Document_Writer.cxx, Driver/Document_Writer.h,
-         Driver/Driver_dl.cxx, Driver/Makefile.in, Driver/Mesh_Reader.cxx,
-         Driver/Mesh_Reader.h, Driver/Mesh_Writer.cxx,
-         Driver/Mesh_Writer.h, Driver/SMESHDriver.cxx,
-         Driver/SMESHDriver.h: NRI : First integration.
-
-2003-05-19 13:48  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/: SMDS/Handle_SMDSControl_BoundaryEdges.hxx,
-         SMDS/Handle_SMDSControl_BoundaryFaces.hxx,
-         SMDS/Handle_SMDSControl_MeshBoundary.hxx,
-         SMDS/Handle_SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx,
-         SMDS/Handle_SMDS_DataMapNodeOfDataMapOfPntInteger.hxx,
-         SMDS/Handle_SMDS_EdgePosition.hxx,
-         SMDS/Handle_SMDS_FacePosition.hxx,
-         SMDS/Handle_SMDS_HSequenceOfMesh.hxx,
-         SMDS/Handle_SMDS_ListNodeOfListOfMesh.hxx,
-         SMDS/Handle_SMDS_ListNodeOfListOfMeshElement.hxx,
-         SMDS/Handle_SMDS_ListNodeOfListOfMeshGroup.hxx,
-         SMDS/Handle_SMDS_Mesh.hxx, SMDS/Handle_SMDS_MeshEdge.hxx,
-         SMDS/Handle_SMDS_MeshElement.hxx,
-         SMDS/Handle_SMDS_MeshElementIDFactory.hxx,
-         SMDS/Handle_SMDS_MeshFace.hxx, SMDS/Handle_SMDS_MeshGroup.hxx,
-         SMDS/Handle_SMDS_MeshHexahedron.hxx,
-         SMDS/Handle_SMDS_MeshIDFactory.hxx,
-         SMDS/Handle_SMDS_MeshNode.hxx,
-         SMDS/Handle_SMDS_MeshNodeIDFactory.hxx,
-         SMDS/Handle_SMDS_MeshObject.hxx, SMDS/Handle_SMDS_MeshPrism.hxx,
-         SMDS/Handle_SMDS_MeshPyramid.hxx,
-         SMDS/Handle_SMDS_MeshQuadrangle.hxx,
-         SMDS/Handle_SMDS_MeshTetrahedron.hxx,
-         SMDS/Handle_SMDS_MeshTriangle.hxx,
-         SMDS/Handle_SMDS_MeshVolume.hxx, SMDS/Handle_SMDS_Position.hxx,
-         SMDS/Handle_SMDS_SequenceNodeOfSequenceOfMesh.hxx,
-         SMDS/Handle_SMDS_SpacePosition.hxx,
-         SMDS/Handle_SMDS_StdMapNodeOfExtendedMap.hxx,
-         SMDS/Handle_SMDS_StdMapNodeOfExtendedOrientedMap.hxx,
-         SMDS/Handle_SMDS_VertexPosition.hxx, SMDS/Makefile.in,
-         SMDS/SMDS.cdl, SMDS/SMDSAbs.cdl, SMDS/SMDSAbs_ElementType.hxx,
-         SMDS/SMDSControl.cdl, SMDS/SMDSControl.cxx, SMDS/SMDSControl.hxx,
-         SMDS/SMDSControl.ixx, SMDS/SMDSControl.jxx,
-         SMDS/SMDSControl_BoundaryEdges.cdl,
-         SMDS/SMDSControl_BoundaryEdges.cxx,
-         SMDS/SMDSControl_BoundaryEdges.hxx,
-         SMDS/SMDSControl_BoundaryEdges.ixx,
-         SMDS/SMDSControl_BoundaryEdges.jxx,
-         SMDS/SMDSControl_BoundaryFaces.cdl,
-         SMDS/SMDSControl_BoundaryFaces.cxx,
-         SMDS/SMDSControl_BoundaryFaces.hxx,
-         SMDS/SMDSControl_BoundaryFaces.ixx,
-         SMDS/SMDSControl_BoundaryFaces.jxx,
-         SMDS/SMDSControl_MeshBoundary.cdl,
-         SMDS/SMDSControl_MeshBoundary.cxx,
-         SMDS/SMDSControl_MeshBoundary.hxx,
-         SMDS/SMDSControl_MeshBoundary.ixx,
-         SMDS/SMDSControl_MeshBoundary.jxx, SMDS/SMDSEdit.cdl,
-         SMDS/SMDSEdit_Transform.cdl, SMDS/SMDSEdit_Transform.cxx,
-         SMDS/SMDSEdit_Transform.hxx, SMDS/SMDSEdit_Transform.ixx,
-         SMDS/SMDSEdit_Transform.jxx, SMDS/SMDS_BasicMap.lxx,
-         SMDS/SMDS_BasicMapIterator.lxx,
-         SMDS/SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement.hxx,
-         SMDS/SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement_0.cxx,
-         SMDS/SMDS_DataMapIteratorOfDataMapOfPntInteger.hxx,
-         SMDS/SMDS_DataMapIteratorOfDataMapOfPntInteger_0.cxx,
-         SMDS/SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx,
-         SMDS/SMDS_DataMapNodeOfDataMapOfIntegerMeshElement_0.cxx,
-         SMDS/SMDS_DataMapNodeOfDataMapOfPntInteger.hxx,
-         SMDS/SMDS_DataMapNodeOfDataMapOfPntInteger_0.cxx,
-         SMDS/SMDS_DataMapOfIntegerMeshElement.hxx,
-         SMDS/SMDS_DataMapOfIntegerMeshElement_0.cxx,
-         SMDS/SMDS_DataMapOfPntInteger.hxx,
-         SMDS/SMDS_DataMapOfPntInteger_0.cxx, SMDS/SMDS_EdgePosition.cdl,
-         SMDS/SMDS_EdgePosition.cxx, SMDS/SMDS_EdgePosition.hxx,
-         SMDS/SMDS_EdgePosition.ixx, SMDS/SMDS_EdgePosition.jxx,
-         SMDS/SMDS_EdgePosition.lxx, SMDS/SMDS_ExtendedMap.hxx,
-         SMDS/SMDS_ExtendedMap_0.cxx, SMDS/SMDS_ExtendedOrientedMap.hxx,
-         SMDS/SMDS_ExtendedOrientedMap_0.cxx, SMDS/SMDS_FacePosition.cdl,
-         SMDS/SMDS_FacePosition.cxx, SMDS/SMDS_FacePosition.hxx,
-         SMDS/SMDS_FacePosition.ixx, SMDS/SMDS_FacePosition.jxx,
-         SMDS/SMDS_FacePosition.lxx, SMDS/SMDS_HSequenceOfMesh.hxx,
-         SMDS/SMDS_HSequenceOfMesh_0.cxx,
-         SMDS/SMDS_ListIteratorOfListOfMesh.hxx,
-         SMDS/SMDS_ListIteratorOfListOfMeshElement.hxx,
-         SMDS/SMDS_ListIteratorOfListOfMeshElement_0.cxx,
-         SMDS/SMDS_ListIteratorOfListOfMeshGroup.hxx,
-         SMDS/SMDS_ListIteratorOfListOfMeshGroup_0.cxx,
-         SMDS/SMDS_ListIteratorOfListOfMesh_0.cxx,
-         SMDS/SMDS_ListNodeOfListOfMesh.hxx,
-         SMDS/SMDS_ListNodeOfListOfMeshElement.hxx,
-         SMDS/SMDS_ListNodeOfListOfMeshElement_0.cxx,
-         SMDS/SMDS_ListNodeOfListOfMeshGroup.hxx,
-         SMDS/SMDS_ListNodeOfListOfMeshGroup_0.cxx,
-         SMDS/SMDS_ListNodeOfListOfMesh_0.cxx, SMDS/SMDS_ListOfMesh.hxx,
-         SMDS/SMDS_ListOfMeshElement.hxx,
-         SMDS/SMDS_ListOfMeshElement_0.cxx, SMDS/SMDS_ListOfMeshGroup.hxx,
-         SMDS/SMDS_ListOfMeshGroup_0.cxx, SMDS/SMDS_ListOfMesh_0.cxx,
-         SMDS/SMDS_Map.gxx, SMDS/SMDS_MapHasher.gxx,
-         SMDS/SMDS_MapIterator.gxx,
-         SMDS/SMDS_MapIteratorOfExtendedMap.hxx,
-         SMDS/SMDS_MapIteratorOfExtendedMap_0.cxx,
-         SMDS/SMDS_MapIteratorOfExtendedOrientedMap.hxx,
-         SMDS/SMDS_MapIteratorOfExtendedOrientedMap_0.cxx,
-         SMDS/SMDS_MapNode.lxx, SMDS/SMDS_MapOfMeshElement.cdl,
-         SMDS/SMDS_MapOfMeshElement.cxx, SMDS/SMDS_MapOfMeshElement.hxx,
-         SMDS/SMDS_MapOfMeshElement.ixx, SMDS/SMDS_MapOfMeshElement.jxx,
-         SMDS/SMDS_MapOfMeshElement.lxx,
-         SMDS/SMDS_MapOfMeshOrientedElement.cdl,
-         SMDS/SMDS_MapOfMeshOrientedElement.cxx,
-         SMDS/SMDS_MapOfMeshOrientedElement.hxx,
-         SMDS/SMDS_MapOfMeshOrientedElement.ixx,
-         SMDS/SMDS_MapOfMeshOrientedElement.jxx,
-         SMDS/SMDS_MapOfMeshOrientedElement.lxx, SMDS/SMDS_Mesh.cdl,
-         SMDS/SMDS_Mesh.cxx, SMDS/SMDS_Mesh.hxx, SMDS/SMDS_Mesh.ixx,
-         SMDS/SMDS_Mesh.jxx, SMDS/SMDS_Mesh.lxx, SMDS/SMDS_MeshEdge.cdl,
-         SMDS/SMDS_MeshEdge.cxx, SMDS/SMDS_MeshEdge.hxx,
-         SMDS/SMDS_MeshEdge.ixx, SMDS/SMDS_MeshEdge.jxx,
-         SMDS/SMDS_MeshEdge.lxx, SMDS/SMDS_MeshEdgesIterator.cdl,
-         SMDS/SMDS_MeshEdgesIterator.cxx, SMDS/SMDS_MeshEdgesIterator.hxx,
-         SMDS/SMDS_MeshEdgesIterator.ixx, SMDS/SMDS_MeshEdgesIterator.jxx,
-         SMDS/SMDS_MeshElement.cdl, SMDS/SMDS_MeshElement.cxx,
-         SMDS/SMDS_MeshElement.hxx, SMDS/SMDS_MeshElement.ixx,
-         SMDS/SMDS_MeshElement.jxx, SMDS/SMDS_MeshElement.lxx,
-         SMDS/SMDS_MeshElementIDFactory.cdl,
-         SMDS/SMDS_MeshElementIDFactory.cxx,
-         SMDS/SMDS_MeshElementIDFactory.hxx,
-         SMDS/SMDS_MeshElementIDFactory.ixx,
-         SMDS/SMDS_MeshElementIDFactory.jxx,
-         SMDS/SMDS_MeshElementIDFactory.lxx,
-         SMDS/SMDS_MeshElementMapHasher.cdl,
-         SMDS/SMDS_MeshElementMapHasher.cxx,
-         SMDS/SMDS_MeshElementMapHasher.hxx,
-         SMDS/SMDS_MeshElementMapHasher.ixx,
-         SMDS/SMDS_MeshElementMapHasher.jxx,
-         SMDS/SMDS_MeshElementMapHasher.lxx,
-         SMDS/SMDS_MeshElementsIterator.cdl,
-         SMDS/SMDS_MeshElementsIterator.cxx,
-         SMDS/SMDS_MeshElementsIterator.hxx,
-         SMDS/SMDS_MeshElementsIterator.ixx,
-         SMDS/SMDS_MeshElementsIterator.jxx,
-         SMDS/SMDS_MeshElementsIterator.lxx, SMDS/SMDS_MeshFace.cdl,
-         SMDS/SMDS_MeshFace.cxx, SMDS/SMDS_MeshFace.hxx,
-         SMDS/SMDS_MeshFace.ixx, SMDS/SMDS_MeshFace.jxx,
-         SMDS/SMDS_MeshFace.lxx, SMDS/SMDS_MeshFacesIterator.cdl,
-         SMDS/SMDS_MeshFacesIterator.cxx, SMDS/SMDS_MeshFacesIterator.hxx,
-         SMDS/SMDS_MeshFacesIterator.ixx, SMDS/SMDS_MeshFacesIterator.jxx,
-         SMDS/SMDS_MeshGroup.cdl, SMDS/SMDS_MeshGroup.cxx,
-         SMDS/SMDS_MeshGroup.hxx, SMDS/SMDS_MeshGroup.ixx,
-         SMDS/SMDS_MeshGroup.jxx, SMDS/SMDS_MeshGroup.lxx,
-         SMDS/SMDS_MeshHexahedron.cdl, SMDS/SMDS_MeshHexahedron.cxx,
-         SMDS/SMDS_MeshHexahedron.hxx, SMDS/SMDS_MeshHexahedron.ixx,
-         SMDS/SMDS_MeshHexahedron.jxx, SMDS/SMDS_MeshHexahedron.lxx,
-         SMDS/SMDS_MeshIDFactory.cdl, SMDS/SMDS_MeshIDFactory.cxx,
-         SMDS/SMDS_MeshIDFactory.ixx, SMDS/SMDS_MeshIDFactory.jxx,
-         SMDS/SMDS_MeshIDFactory.lxx, SMDS/SMDS_MeshNode.cdl,
-         SMDS/SMDS_MeshNode.cxx, SMDS/SMDS_MeshNode.hxx,
-         SMDS/SMDS_MeshNode.ixx, SMDS/SMDS_MeshNode.jxx,
-         SMDS/SMDS_MeshNode.lxx, SMDS/SMDS_MeshNodeIDFactory.cdl,
-         SMDS/SMDS_MeshNodeIDFactory.cxx, SMDS/SMDS_MeshNodeIDFactory.hxx,
-         SMDS/SMDS_MeshNodeIDFactory.ixx, SMDS/SMDS_MeshNodeIDFactory.jxx,
-         SMDS/SMDS_MeshNodeIDFactory.lxx, SMDS/SMDS_MeshNodesIterator.cdl,
-         SMDS/SMDS_MeshNodesIterator.cxx, SMDS/SMDS_MeshNodesIterator.hxx,
-         SMDS/SMDS_MeshNodesIterator.ixx, SMDS/SMDS_MeshNodesIterator.jxx,
-         SMDS/SMDS_MeshObject.cdl, SMDS/SMDS_MeshObject.cxx,
-         SMDS/SMDS_MeshObject.hxx, SMDS/SMDS_MeshObject.ixx,
-         SMDS/SMDS_MeshObject.jxx,
-         SMDS/SMDS_MeshOrientedElementMapHasher.cdl,
-         SMDS/SMDS_MeshOrientedElementMapHasher.cxx,
-         SMDS/SMDS_MeshOrientedElementMapHasher.hxx,
-         SMDS/SMDS_MeshOrientedElementMapHasher.ixx,
-         SMDS/SMDS_MeshOrientedElementMapHasher.jxx,
-         SMDS/SMDS_MeshOrientedElementMapHasher.lxx,
-         SMDS/SMDS_MeshPrism.cdl, SMDS/SMDS_MeshPrism.cxx,
-         SMDS/SMDS_MeshPrism.hxx, SMDS/SMDS_MeshPrism.ixx,
-         SMDS/SMDS_MeshPrism.jxx, SMDS/SMDS_MeshPrism.lxx,
-         SMDS/SMDS_MeshPyramid.cdl, SMDS/SMDS_MeshPyramid.cxx,
-         SMDS/SMDS_MeshPyramid.hxx, SMDS/SMDS_MeshPyramid.ixx,
-         SMDS/SMDS_MeshPyramid.jxx, SMDS/SMDS_MeshPyramid.lxx,
-         SMDS/SMDS_MeshQuadrangle.cdl, SMDS/SMDS_MeshQuadrangle.cxx,
-         SMDS/SMDS_MeshQuadrangle.hxx, SMDS/SMDS_MeshQuadrangle.ixx,
-         SMDS/SMDS_MeshQuadrangle.jxx, SMDS/SMDS_MeshQuadrangle.lxx,
-         SMDS/SMDS_MeshTetrahedron.cdl, SMDS/SMDS_MeshTetrahedron.cxx,
-         SMDS/SMDS_MeshTetrahedron.hxx, SMDS/SMDS_MeshTetrahedron.ixx,
-         SMDS/SMDS_MeshTetrahedron.jxx, SMDS/SMDS_MeshTetrahedron.lxx,
-         SMDS/SMDS_MeshTriangle.cdl, SMDS/SMDS_MeshTriangle.cxx,
-         SMDS/SMDS_MeshTriangle.hxx, SMDS/SMDS_MeshTriangle.ixx,
-         SMDS/SMDS_MeshTriangle.jxx, SMDS/SMDS_MeshTriangle.lxx,
-         SMDS/SMDS_MeshVolume.cdl, SMDS/SMDS_MeshVolume.cxx,
-         SMDS/SMDS_MeshVolume.hxx, SMDS/SMDS_MeshVolume.ixx,
-         SMDS/SMDS_MeshVolume.jxx, SMDS/SMDS_MeshVolume.lxx,
-         SMDS/SMDS_MeshVolumesIterator.cdl,
-         SMDS/SMDS_MeshVolumesIterator.cxx,
-         SMDS/SMDS_MeshVolumesIterator.hxx,
-         SMDS/SMDS_MeshVolumesIterator.ixx,
-         SMDS/SMDS_MeshVolumesIterator.jxx, SMDS/SMDS_PntHasher.cdl,
-         SMDS/SMDS_PntHasher.cxx, SMDS/SMDS_PntHasher.hxx,
-         SMDS/SMDS_PntHasher.ixx, SMDS/SMDS_PntHasher.jxx,
-         SMDS/SMDS_PntHasher.lxx, SMDS/SMDS_Position.cdl,
-         SMDS/SMDS_Position.cxx, SMDS/SMDS_Position.hxx,
-         SMDS/SMDS_Position.ixx, SMDS/SMDS_Position.jxx,
-         SMDS/SMDS_Position.lxx,
-         SMDS/SMDS_SequenceNodeOfSequenceOfMesh.hxx,
-         SMDS/SMDS_SequenceNodeOfSequenceOfMesh_0.cxx,
-         SMDS/SMDS_SequenceOfMesh.hxx, SMDS/SMDS_SequenceOfMesh_0.cxx,
-         SMDS/SMDS_SpacePosition.cdl, SMDS/SMDS_SpacePosition.cxx,
-         SMDS/SMDS_SpacePosition.hxx, SMDS/SMDS_SpacePosition.ixx,
-         SMDS/SMDS_SpacePosition.jxx, SMDS/SMDS_SpacePosition.lxx,
-         SMDS/SMDS_StdMapNode.gxx, SMDS/SMDS_StdMapNode.lxx,
-         SMDS/SMDS_StdMapNodeOfExtendedMap.hxx,
-         SMDS/SMDS_StdMapNodeOfExtendedMap_0.cxx,
-         SMDS/SMDS_StdMapNodeOfExtendedOrientedMap.hxx,
-         SMDS/SMDS_StdMapNodeOfExtendedOrientedMap_0.cxx,
-         SMDS/SMDS_TypeOfPosition.hxx, SMDS/SMDS_VertexPosition.cdl,
-         SMDS/SMDS_VertexPosition.cxx, SMDS/SMDS_VertexPosition.hxx,
-         SMDS/SMDS_VertexPosition.ixx, SMDS/SMDS_VertexPosition.jxx,
-         SMDS/SMDS_MeshIDFactory.hxx, SMESH_I/Makefile.in,
-         SMESH_I/SMESH_1D_Algo_i.cxx, SMESH_I/SMESH_1D_Algo_i.hxx,
-         SMESH_I/SMESH_2D_Algo_i.cxx, SMESH_I/SMESH_2D_Algo_i.hxx,
-         SMESH_I/SMESH_3D_Algo_i.cxx, SMESH_I/SMESH_3D_Algo_i.hxx,
-         SMESH_I/SMESH_Algo_i.cxx, SMESH_I/SMESH_Algo_i.hxx,
-         SMESH_I/SMESH_Gen_i.cxx, SMESH_I/SMESH_Gen_i.hxx,
-         SMESH_I/SMESH_Hexa_3D_i.cxx, SMESH_I/SMESH_Hexa_3D_i.hxx,
-         SMESH_I/SMESH_HypothesisFactory_i.cxx,
-         SMESH_I/SMESH_HypothesisFactory_i.hxx,
-         SMESH_I/SMESH_Hypothesis_i.cxx, SMESH_I/SMESH_Hypothesis_i.hxx,
-         SMESH_I/SMESH_LocalLength_i.cxx, SMESH_I/SMESH_LocalLength_i.hxx,
-         SMESH_I/SMESH_MEDFamily_i.cxx, SMESH_I/SMESH_MEDFamily_i.hxx,
-         SMESH_I/SMESH_MEDMesh_i.cxx, SMESH_I/SMESH_MEDMesh_i.hxx,
-         SMESH_I/SMESH_MEDSupport_i.cxx, SMESH_I/SMESH_MEDSupport_i.hxx,
-         SMESH_I/SMESH_MEFISTO_2D_i.cxx, SMESH_I/SMESH_MEFISTO_2D_i.hxx,
-         SMESH_I/SMESH_MaxElementArea_i.cxx,
-         SMESH_I/SMESH_MaxElementArea_i.hxx,
-         SMESH_I/SMESH_MaxElementVolume_i.cxx,
-         SMESH_I/SMESH_MaxElementVolume_i.hxx,
-         SMESH_I/SMESH_MeshEditor_i.cxx, SMESH_I/SMESH_MeshEditor_i.hxx,
-         SMESH_I/SMESH_Mesh_i.cxx, SMESH_I/SMESH_Mesh_i.hxx,
-         SMESH_I/SMESH_NumberOfSegments_i.cxx,
-         SMESH_I/SMESH_NumberOfSegments_i.hxx,
-         SMESH_I/SMESH_Quadrangle_2D_i.cxx,
-         SMESH_I/SMESH_Quadrangle_2D_i.hxx,
-         SMESH_I/SMESH_Regular_1D_i.cxx, SMESH_I/SMESH_Regular_1D_i.hxx,
-         SMESH_I/SMESH_subMesh_i.cxx, SMESH_I/SMESH_subMesh_i.hxx,
-         SMESH_I/SMESH_test.py, SMESH_I/SMESH_topo.cxx,
-         SMESH_I/SMESH_topo.hxx, SMESH_I/smeshpy.py, SMESH_I/sstream,
-         SMESHGUI/Makefile.in, SMESHGUI/SMESHGUI.cxx, SMESHGUI/SMESHGUI.h,
-         SMESHGUI/SMESHGUI_AddAlgorithmDlg.cxx,
-         SMESHGUI/SMESHGUI_AddAlgorithmDlg.h,
-         SMESHGUI/SMESHGUI_AddEdgeDlg.cxx, SMESHGUI/SMESHGUI_AddEdgeDlg.h,
-         SMESHGUI/SMESHGUI_AddFaceDlg.cxx, SMESHGUI/SMESHGUI_AddFaceDlg.h,
-         SMESHGUI/SMESHGUI_AddHypothesisDlg.cxx,
-         SMESHGUI/SMESHGUI_AddHypothesisDlg.h,
-         SMESHGUI/SMESHGUI_AddSubMeshDlg.cxx,
-         SMESHGUI/SMESHGUI_AddSubMeshDlg.h,
-         SMESHGUI/SMESHGUI_AddVolumeDlg.cxx,
-         SMESHGUI/SMESHGUI_AddVolumeDlg.h,
-         SMESHGUI/SMESHGUI_ComputeScalarValue.cxx,
-         SMESHGUI/SMESHGUI_ComputeScalarValue.h,
-         SMESHGUI/SMESHGUI_DiagonalInversionDlg.cxx,
-         SMESHGUI/SMESHGUI_DiagonalInversionDlg.h,
-         SMESHGUI/SMESHGUI_EdgesConnectivityDlg.cxx,
-         SMESHGUI/SMESHGUI_EdgesConnectivityDlg.h,
-         SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx,
-         SMESHGUI/SMESHGUI_EditHypothesesDlg.h,
-         SMESHGUI/SMESHGUI_EditScalarBarDlg.cxx,
-         SMESHGUI/SMESHGUI_EditScalarBarDlg.h,
-         SMESHGUI/SMESHGUI_InitMeshDlg.cxx,
-         SMESHGUI/SMESHGUI_InitMeshDlg.h,
-         SMESHGUI/SMESHGUI_LocalLengthDlg.cxx,
-         SMESHGUI/SMESHGUI_LocalLengthDlg.h,
-         SMESHGUI/SMESHGUI_MaxElementAreaDlg.cxx,
-         SMESHGUI/SMESHGUI_MaxElementAreaDlg.h,
-         SMESHGUI/SMESHGUI_MaxElementVolumeDlg.cxx,
-         SMESHGUI/SMESHGUI_MaxElementVolumeDlg.h,
-         SMESHGUI/SMESHGUI_MeshInfosDlg.cxx,
-         SMESHGUI/SMESHGUI_MeshInfosDlg.h,
-         SMESHGUI/SMESHGUI_MoveNodesDlg.cxx,
-         SMESHGUI/SMESHGUI_MoveNodesDlg.h,
-         SMESHGUI/SMESHGUI_NbSegmentsDlg.cxx,
-         SMESHGUI/SMESHGUI_NbSegmentsDlg.h,
-         SMESHGUI/SMESHGUI_NodesDlg.cxx, SMESHGUI/SMESHGUI_NodesDlg.h,
-         SMESHGUI/SMESHGUI_OrientationElementsDlg.cxx,
-         SMESHGUI/SMESHGUI_OrientationElementsDlg.h,
-         SMESHGUI/SMESHGUI_Preferences_ColorDlg.cxx,
-         SMESHGUI/SMESHGUI_Preferences_ColorDlg.h,
-         SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.cxx,
-         SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.h,
-         SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx,
-         SMESHGUI/SMESHGUI_RemoveElementsDlg.h,
-         SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx,
-         SMESHGUI/SMESHGUI_RemoveNodesDlg.h,
-         SMESHGUI/SMESHGUI_SpinBox.cxx, SMESHGUI/SMESHGUI_SpinBox.h,
-         SMESHGUI/SMESHGUI_StudyAPI.cxx, SMESHGUI/SMESHGUI_StudyAPI.h,
-         SMESHGUI/SMESHGUI_Swig.cxx, SMESHGUI/SMESHGUI_Swig.hxx,
-         SMESHGUI/SMESHGUI_Swig.i, SMESHGUI/SMESHGUI_TransparencyDlg.cxx,
-         SMESHGUI/SMESHGUI_TransparencyDlg.h,
-         SMESHGUI/SMESHGUI_aParameterDlg.cxx,
-         SMESHGUI/SMESHGUI_aParameterDlg.h, SMESHGUI/SMESH_icons.po,
-         SMESHGUI/SMESH_msg_en.po: NRI : First integration.
-
-2003-05-19 13:18  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * src/: SMESH/Makefile.in, SMESH/SMESH_1D_Algo.cxx,
-         SMESH/SMESH_1D_Algo.hxx, SMESH/SMESH_2D_Algo.cxx,
-         SMESH/SMESH_2D_Algo.hxx, SMESH/SMESH_3D_Algo.cxx,
-         SMESH/SMESH_3D_Algo.hxx, SMESH/SMESH_Algo.cxx,
-         SMESH/SMESH_Algo.hxx, SMESH/SMESH_Gen.cxx, SMESH/SMESH_Gen.hxx,
-         SMESH/SMESH_Hexa_3D.cxx, SMESH/SMESH_Hexa_3D.hxx,
-         SMESH/SMESH_Hypothesis.cxx, SMESH/SMESH_Hypothesis.hxx,
-         SMESH/SMESH_HypothesisCreator.hxx,
-         SMESH/SMESH_HypothesisFactory.cxx,
-         SMESH/SMESH_HypothesisFactory.hxx,
-         SMESH/SMESH_LengthFromEdges.cxx, SMESH/SMESH_LengthFromEdges.hxx,
-         SMESH/SMESH_LocalLength.cxx, SMESH/SMESH_LocalLength.hxx,
-         SMESH/SMESH_MEFISTO_2D.cxx, SMESH/SMESH_MEFISTO_2D.hxx,
-         SMESH/SMESH_MaxElementArea.cxx, SMESH/SMESH_MaxElementArea.hxx,
-         SMESH/SMESH_MaxElementVolume.cxx,
-         SMESH/SMESH_MaxElementVolume.hxx, SMESH/SMESH_Mesh.cxx,
-         SMESH/SMESH_Mesh.hxx, SMESH/SMESH_NumberOfSegments.cxx,
-         SMESH/SMESH_NumberOfSegments.hxx, SMESH/SMESH_Quadrangle_2D.cxx,
-         SMESH/SMESH_Quadrangle_2D.hxx, SMESH/SMESH_Regular_1D.cxx,
-         SMESH/SMESH_Regular_1D.hxx, SMESH/SMESH_subMesh.cxx,
-         SMESH/SMESH_subMesh.hxx, SMESHDS/Handle_SMESHDS_Command.hxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx,
-         SMESHDS/Handle_SMESHDS_ListNodeOfListOfCommand.hxx,
-         SMESHDS/Handle_SMESHDS_Mesh.hxx,
-         SMESHDS/Handle_SMESHDS_Script.hxx, SMESHDS/Makefile.in,
-         SMESHDS/SMESHDS_Command.cdl, SMESHDS/SMESHDS_Command.cxx,
-         SMESHDS/SMESHDS_Command.ixx, SMESHDS/SMESHDS_Command.jxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerMesh.hxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapOfIntegerSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapOfShapeSubMesh.hxx,
-         SMESHDS/SMESHDS_DataMapOfShapeSubMesh_0.cxx,
-         SMESHDS/SMESHDS_Document.cdl, SMESHDS/SMESHDS_Document.hxx,
-         SMESHDS/SMESHDS_Document.ixx, SMESHDS/SMESHDS_Hypothesis.hxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfAsciiString_0.cxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfCommand.hxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfCommand_0.cxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfAsciiString.hxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfAsciiString_0.cxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfCommand.hxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfCommand_0.cxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_ListOfCommand.hxx,
-         SMESHDS/SMESHDS_ListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_ListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_Mesh.cdl, SMESHDS/SMESHDS_Mesh.hxx,
-         SMESHDS/SMESHDS_Script.cdl, SMESHDS/SMESHDS_Script.cxx,
-         SMESHDS/SMESHDS_Script.hxx, SMESHDS/SMESHDS_Script.ixx,
-         SMESHDS/SMESHDS_Script.jxx, SMESHDS/SMESHDS_SubMesh.cdl,
-         SMESHDS/SMESHDS_SubMesh.cxx, SMESHDS/SMESHDS_SubMesh.hxx,
-         SMESHDS/SMESHDS_SubMesh.ixx, SMESHDS/SMESHDS_SubMesh.jxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx,
-         SMESHDS/Handle_SMESHDS_Document.hxx,
-         SMESHDS/Handle_SMESHDS_ListNodeOfListOfAsciiString.hxx,
-         SMESHDS/Handle_SMESHDS_ListNodeOfListOfPtrHypothesis.hxx,
-         SMESHDS/Handle_SMESHDS_SubMesh.hxx, SMESHDS/SMESHDS.cdl,
-         SMESHDS/SMESHDS_Command.hxx, SMESHDS/SMESHDS_CommandType.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerMesh_0.cxx,
-         SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapOfShapeListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_DataMapOfShapeListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_Document.cxx, SMESHDS/SMESHDS_Document.jxx,
-         SMESHDS/SMESHDS_Hypothesis.cxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfAsciiString.hxx,
-         SMESHDS/SMESHDS_ListIteratorOfListOfPtrHypothesis.hxx,
-         SMESHDS/SMESHDS_ListNodeOfListOfPtrHypothesis_0.cxx,
-         SMESHDS/SMESHDS_ListOfAsciiString.hxx,
-         SMESHDS/SMESHDS_ListOfAsciiString_0.cxx,
-         SMESHDS/SMESHDS_ListOfCommand_0.cxx, SMESHDS/SMESHDS_Mesh.cxx,
-         SMESHDS/SMESHDS_Mesh.ixx, SMESHDS/SMESHDS_Mesh.jxx,
-         SMESHDS/SMESHDS_PtrHypothesis.hxx: NRI : First integration.
-
-2003-05-19 13:03  Nicolas Rejneri <nicolas.rejneri@opencascade.com>
-
-       * Makefile.in, build_configure, configure.in.base,
-         resources/ModuleMesh.png, resources/SMESHCatalog.xml,
-         resources/SMESH_en.xml, resources/SMESH_fr.xml,
-         resources/delete.png, resources/mesh.png,
-         resources/mesh_add_sub.png, resources/mesh_algo_hexa.png,
-         resources/mesh_algo_mefisto.png, resources/mesh_algo_quad.png,
-         resources/mesh_algo_regular.png, resources/mesh_angle.png,
-         resources/mesh_area.png, resources/mesh_aspect.png,
-         resources/mesh_compute.png, resources/mesh_connectivity.png,
-         resources/mesh_diagonal.png, resources/mesh_edit.png,
-         resources/mesh_hexa.png, resources/mesh_hexa_n.png,
-         resources/mesh_hypo_area.png, resources/mesh_hypo_length.png,
-         resources/mesh_hypo_segment.png, resources/mesh_hypo_volume.png,
-         resources/mesh_info.png, resources/mesh_init.png,
-         resources/mesh_length.png, resources/mesh_line.png,
-         resources/mesh_line_n.png, resources/mesh_move_node.png,
-         resources/mesh_orientation.png, resources/mesh_pyramid.png,
-         resources/mesh_pyramid_n.png, resources/mesh_quad.png,
-         resources/mesh_quad_n.png, resources/mesh_rem_element.png,
-         resources/mesh_rem_node.png, resources/mesh_set_algo.png,
-         resources/mesh_set_hypo.png, resources/mesh_shading.png,
-         resources/mesh_shrink.png, resources/mesh_skew.png,
-         resources/mesh_taper.png, resources/mesh_tetra.png,
-         resources/mesh_tetra_n.png, resources/mesh_tree_algo.png,
-         resources/mesh_tree_algo_hexa.png,
-         resources/mesh_tree_algo_mefisto.png,
-         resources/mesh_tree_algo_quad.png,
-         resources/mesh_tree_algo_regular.png,
-         resources/mesh_tree_hypo.png, resources/mesh_tree_hypo_area.png,
-         resources/mesh_tree_hypo_length.png,
-         resources/mesh_tree_hypo_segment.png,
-         resources/mesh_tree_hypo_volume.png,
-         resources/mesh_tree_mesh.png, resources/mesh_tree_mesh_warn.png,
-         resources/mesh_triangle.png, resources/mesh_triangle_n.png,
-         resources/mesh_update.png, resources/mesh_vertex.png,
-         resources/mesh_vertex_n.png, resources/mesh_wireframe.png,
-         resources/mesh_wrap.png, resources/select1.png, idl/Makefile.in,
-         idl/SMESH_BasicHypothesis.idl, idl/SMESH_Gen.idl,
-         idl/SMESH_Hypothesis.idl, idl/SMESH_Mesh.idl,
-         src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx,
-         src/DriverDAT/DriverDAT_R_SMDS_Mesh.h,
-         src/DriverDAT/DriverDAT_R_SMESHDS_Document.cxx,
-         src/DriverDAT/DriverDAT_R_SMESHDS_Document.h,
-         src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx,
-         src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.h,
-         src/DriverDAT/DriverDAT_W_SMDS_Mesh.cxx,
-         src/DriverDAT/DriverDAT_W_SMDS_Mesh.h,
-         src/DriverDAT/DriverDAT_W_SMESHDS_Document.cxx,
-         src/DriverDAT/DriverDAT_W_SMESHDS_Document.h,
-         src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx,
-         src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.h,
-         src/DriverDAT/Makefile.in,
-         src/DriverMED/DriverMED_R_SMDS_Mesh.cxx,
-         src/DriverMED/DriverMED_R_SMESHDS_Document.cxx,
-         src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx,
-         src/DriverMED/DriverMED_W_SMDS_Mesh.cxx,
-         src/DriverMED/DriverMED_W_SMESHDS_Document.cxx,
-         src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx,
-         src/DriverMED/Makefile.in,
-         src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx,
-         src/DriverUNV/DriverUNV_R_SMDS_Mesh.h,
-         src/DriverUNV/DriverUNV_R_SMESHDS_Document.cxx,
-         src/DriverUNV/DriverUNV_R_SMESHDS_Document.h,
-         src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx,
-         src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.h,
-         src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx,
-         src/DriverUNV/DriverUNV_W_SMDS_Mesh.h,
-         src/DriverUNV/DriverUNV_W_SMESHDS_Document.cxx,
-         src/DriverUNV/DriverUNV_W_SMESHDS_Document.h,
-         src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx,
-         src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.h,
-         src/DriverUNV/Makefile.in: NRI : First integration.
-
-2003-03-07 14:55  tag V1
-
-2003-03-07 14:55  cvsadmin
-
-       * src/DriverMED/: DriverMED_R_SMESHDS_Document.h,
-         DriverMED_W_SMESHDS_Document.h:
-         Initialisation module SMESH_SRC de la base SMESH
-
-2003-03-07 14:55  cvsadmin
-
-       * src/DriverMED/: DriverMED_R_SMDS_Mesh.cxx,
-         DriverMED_R_SMDS_Mesh.h, DriverMED_R_SMESHDS_Document.cxx,
-         DriverMED_R_SMESHDS_Mesh.cxx, DriverMED_R_SMESHDS_Mesh.h,
-         DriverMED_W_SMDS_Mesh.cxx, DriverMED_W_SMDS_Mesh.h,
-         DriverMED_W_SMESHDS_Document.cxx, DriverMED_W_SMESHDS_Mesh.cxx,
-         DriverMED_W_SMESHDS_Mesh.h, Makefile.in: Initial revision
-
diff --git a/LICENCE b/LICENCE
deleted file mode 100644 (file)
index b1e3f5a..0000000
--- a/LICENCE
+++ /dev/null
@@ -1,504 +0,0 @@
-                 GNU LESSER GENERAL PUBLIC LICENSE
-                      Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-\f
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-\f
-                 GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-\f
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-\f
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-\f
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-\f
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-\f
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-\f
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                           NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/adm_local/unix/config_files/check_Geom.m4 b/adm_local/unix/config_files/check_Geom.m4
deleted file mode 100644 (file)
index 13f3be4..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-# Check availability of Geom binary distribution
-#
-# Author : Nicolas REJNERI (OPEN CASCADE, 2003)
-#
-
-AC_DEFUN([CHECK_GEOM],[
-
-AC_CHECKING(for Geom)
-
-Geom_ok=no
-
-AC_ARG_WITH(geom,
-           [  --with-geom=DIR root directory path of GEOM installation ],
-           GEOM_DIR="$withval",GEOM_DIR="")
-
-if test "x$GEOM_DIR" == "x" ; then
-
-# no --with-geom-dir option used
-
-   if test "x$GEOM_ROOT_DIR" != "x" ; then
-
-    # GEOM_ROOT_DIR environment variable defined
-      GEOM_DIR=$GEOM_ROOT_DIR
-
-   fi
-# 
-fi
-
-if test -f ${GEOM_DIR}/lib/salome/libGEOMClient.so ; then
-   Geom_ok=yes
-   AC_MSG_RESULT(Using Geom module distribution in ${GEOM_DIR})
-
-   if test "x$GEOM_ROOT_DIR" == "x" ; then
-      GEOM_ROOT_DIR=${GEOM_DIR}
-   fi
-   AC_SUBST(GEOM_ROOT_DIR)
-
-else
-   AC_MSG_WARN("Cannot find compiled Geom module distribution")
-fi
-
-AC_MSG_RESULT(for Geom: $Geom_ok)
-])dnl
diff --git a/adm_local/unix/config_files/check_Med.m4 b/adm_local/unix/config_files/check_Med.m4
deleted file mode 100644 (file)
index 727bf43..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-# Check availability of Med binary distribution
-#
-# Author : Nicolas REJNERI (OPEN CASCADE, 2003)
-#
-
-AC_DEFUN([CHECK_MED],[
-
-AC_CHECKING(for Med)
-
-Med_ok=no
-
-AC_ARG_WITH(med,
-           [  --with-med=DIR root directory path of MED installation ],
-           MED_DIR="$withval",MED_DIR="")
-
-if test "x$MED_DIR" == "x" ; then
-
-# no --with-med-dir option used
-
-   if test "x$MED_ROOT_DIR" != "x" ; then
-
-    # MED_ROOT_DIR environment variable defined
-      MED_DIR=$MED_ROOT_DIR
-
-   fi
-# 
-fi
-
-if test -f ${MED_DIR}/idl/salome/MED.idl ; then
-   Med_ok=yes
-   AC_MSG_RESULT(Using Med module distribution in ${MED_DIR})
-
-   if test "x$MED_ROOT_DIR" == "x" ; then
-      MED_ROOT_DIR=${MED_DIR}
-   fi
-   AC_SUBST(MED_ROOT_DIR)
-
-else
-   AC_MSG_WARN("Cannot find Med module sources")
-fi
-  
-AC_MSG_RESULT(for Med: $Med_ok)
-])dnl
diff --git a/adm_local/unix/make_conclude.in b/adm_local/unix/make_conclude.in
deleted file mode 100644 (file)
index f4827fd..0000000
+++ /dev/null
@@ -1,342 +0,0 @@
-#=======================================================================
-# This section of this makefile comes from the file 
-# 'adm/unix/make_conclude' which was generated with config.status
-# from file adm/unix/make_conclude.in
-#=======================================================================
-# -* Makefile *- 
-#
-# Authors : Patrick GOLDBRONN (CEA) - Marc Tajchman (CEA)
-# Date : 6/07/2001
-# $Header$
-#
-
-# ORB Specifics rules
-@CORBA@
-
-# transform idl reference in appropriate obj file
-LIB_CLIENT_SRC = $(LIB_CLIENT_IDL:%.idl=%$(IDL_CLN_CXX))
-LIB_SERVER_SRC = $(LIB_SERVER_IDL:%.idl=%$(IDL_SRV_CXX))
-LIB_MOC_SRC = $(LIB_MOC:%.h=%_moc.cxx)
-LIB_SRC+=$(LIB_MOC_SRC)
-LIB_SWIG_SRC = $(SWIG_DEF:%.i=%_wrap.cxx)
-LIB_DEP= $(LIB_SRC) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(LIB_SWIG_SRC)
-LIB_CLIENT_OBJ = $(LIB_CLIENT_IDL:%.idl=%$(IDL_CLN_OBJ))
-LIB_SERVER_OBJ = $(LIB_SERVER_IDL:%.idl=%$(IDL_SRV_OBJ))
-
-# transform c file in appropriate libtool obj file (.c, .cc and .cxx)
-LIB_OBJ_C   = $(patsubst %.c,   %.lo, $(filter %.c, $(LIB_SRC))) 
-LIB_OBJ_CC  = $(patsubst %.cc,  %.lo, $(filter %.cc, $(LIB_SRC))) 
-LIB_OBJ_CXX = $(patsubst %.cxx, %.lo, $(filter %.cxx, $(LIB_SRC))) 
-LIB_SWIG_OBJ = $(LIB_SWIG_SRC:%.cxx=%.lo)
-LIB_OBJ_F    = $(patsubst %.f,   %.lo, $(filter %.f, $(LIB_SRC))) 
-
-# all libtool obj file in library
-LIB_OBJ = $(LIB_OBJ_CXX) $(LIB_OBJ_CC) $(LIB_OBJ_C) $(LIB_CLIENT_OBJ:%.o=%.lo) $(LIB_SERVER_OBJ:%.o=%.lo) $(LIB_SWIG_OBJ) $(LIB_OBJ_F)
-
-# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib/salome/%.la)
-LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib/salome/%.la, $(filter %.la, $(LIB)))
-LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib/salome/%.a, $(filter %.a, $(LIB)))
-
-ifneq ($(findstring cmodule.la,$(filter %.la, $(LIB))),)
-LIB_SWIG = $(patsubst %cmodule.la,%.so, $(filter %.la, $(LIB)))
-else
-LIB_SWIG = 
-endif
-
-lib: $(LIB_BUILD) $(LIB_CLIENT_PY)
-# we don't build static library !
-
-$(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la
-       -$(RM) $@
-       -$(RM) $(patsubst %.la, %.so, $@)
-       -$(RM) $(patsubst %.la, %.a, $@)
-       ln -sf $(CURDIR)/$< $@ || true
-       ln -sf $(patsubst %.la, %.so, $(CURDIR)/.libs/$<) \
-             $(patsubst %.la, %.so, $@) || true
-       ln -sf $(patsubst %.la, %.so, $(CURDIR)/.libs/$<).0 \
-             $(patsubst %.la, %.so, $@).0 || true
-
-       if ! test -z $(LIB_SWIG) ; then \
-          ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib/salome/_$(LIB_SWIG) || true;\
-       fi;
-
-$(LIB_BUILD_A): $(top_builddir)/lib/salome/%.a: %.a
-       -$(RM) $@
-       ln -sf $(CURDIR)/$< $@ || true
-
-$(LIB): $(LIB_OBJ)
-       @$(LT) --mode=link $(CXX) -rpath $(libdir) -o $@ $(CXXFLAGS) $(LIB_OBJ) $(LDFLAGS) $(LIBS)
-
-# transform idl reference in appropriate obj file
-BIN_CLIENT_SRC = $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_CXX))
-BIN_SERVER_SRC = $(BIN_SERVER_IDL:%.idl=%$(IDL_SRV_CXX))
-BIN_MOC_SRC = $(BIN_MOC:%.h=%_moc.cxx)
-BIN_SRC+=$(BIN_MOC_SRC)
-BIN_DEP=$(BIN:%=%.cxx) $(BIN_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC)
-
-BIN_CLIENT_OBJ = $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_OBJ))
-BIN_SERVER_OBJ = $(BIN_SERVER_IDL:%.idl=%$(IDL_SRV_OBJ)) 
-# transform c file in appropriate libtool obj file (.c)
-BIN_OBJ_C =  $(patsubst %.c,  %.o, $(filter %.c, $(BIN_SRC)))
-# transform c++ file in appropriate libtool obj file (.cc and .cxx)
-BIN_OBJ_CC = $(patsubst %.cc,  %.o, $(filter %.cc, $(BIN_SRC)))
-BIN_OBJ_CXX = $(patsubst %.cxx,  %.o, $(filter %.cxx, $(BIN_SRC)))
-# all obj file in bin target
-BIN_OBJ = $(BIN_OBJ_CC) $(BIN_OBJ_CXX) $(BIN_OBJ_C) $(BIN_CLIENT_OBJ) $(BIN_SERVER_OBJ) 
-
-bin: $(BIN:%=$(top_builddir)/bin/salome/%) $(BIN) $(LIB) pyscripts sharedpyscripts
-
-BIN_LIB=$(LIB:lib%.la=-l%)
-
-$(BIN:%=$(top_builddir)/bin/salome/%) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%): $(top_builddir)/bin/salome/%: %
-       -$(RM) $@
-       ln -sf $(CURDIR)/$< $@
-
-$(BIN) $(TEST_PROGS): %: %.lo $(BIN_OBJ)
-       $(CXX) $(CXXFLAGS) -o $@ $^ $(BIN_LIB) $(LDFLAGSFORBIN) $(LIBSFORBIN)
-
-# copy python scripts in $(top_builddir)/bin/salome
-#
-DEST_PYSCRIPTS = $(EXPORT_PYSCRIPTS:%=$(top_builddir)/bin/salome/%)
-pyscripts: $(DEST_PYSCRIPTS)
-$(DEST_PYSCRIPTS): $(top_builddir)/bin/salome/%: %
-       cp -f $< $@
-
-# copy pyqt files in $(PYTHON_SHARED_SITE)
-#
-PYTHON_SHARED_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
-
-$(PYTHON_SHARED_SITE):
-       $(INSTALL) -d  $@
-
-DEST_SHAREDPYSCRIPTS = $(EXPORT_SHAREDPYSCRIPTS:%=$(PYTHON_SHARED_SITE)/%)
-sharedpyscripts: $(PYTHON_SHARED_SITE) $(DEST_SHAREDPYSCRIPTS)
-$(DEST_SHAREDPYSCRIPTS): $(PYTHON_SHARED_SITE)/%: %
-       cp -f $< $@
-
-check: test
-
-tests: test
-
-test: $(LIB) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%) 
-
-
-# copy header file in $(inc_builddir)
-#
-DEST_HEADERS = $(EXPORT_HEADERS:%=$(inc_builddir)/%)
-inc: $(DEST_HEADERS)
-$(DEST_HEADERS): $(inc_builddir)/%: %
-       cp -f $< $@
-
-# build resources file (icons and messages) : .qm file from .po file
-resources: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
-
-# Make installation directories if they don't exist.
-$(libdir) $(includedir) $(bindir) $(datadir) $(idldir) $(sharedpydir):
-       $(INSTALL) -d $@ && chmod 755 $@
-
-# Install the library, the public header files, and programs.
-install: $(LIB) $(BIN) $(TEST_PROGS) $(libdir) $(includedir) $(bindir) $(datadir) $(idldir) install-python install-sharedpyqt install-qm
-       @for f in X $(LIB); do                                                \
-          if test $$f != X; then                                             \
-             ($(LT_INSTALL_LIB) $$f $(libdir)/. || exit 1);                  \
-          fi;                                                                \
-       done
-       @if ! test -z $(LIB_SWIG) ; then                                      \
-         (cd $(libdir); ln -sf $(patsubst %.so, %cmodule.so, $(LIB_SWIG)) _$(LIB_SWIG)  || true); \
-        fi;                                                                  
-       @for f in X $(BIN); do                                                \
-          if test $$f != X; then                                             \
-            ($(LT_INSTALL_PROG) $$f $(bindir)/. || exit 1);                  \
-          fi;                                                                \
-       done
-# Install tests programmes in bindir
-       @for f in X $(TEST_PROGS); do                                         \
-          if test $$f != X; then                                             \
-            ($(LT_INSTALL_PROG) $$f $(bindir)/. || exit 1);                  \
-          fi;                                                                \
-       done
-# Install exported includes in includedir
-       @for f in X $(EXPORT_HEADERS:%=$(srcdir)/%); do                       \
-          if test $$f != X; then                                             \
-            (cp -p -f $$f $(includedir) || exit 1);                          \
-          fi;                                                                \
-       done
-
-# Install python script in $(bindir)
-install-python: $(bindir) $(EXPORT_PYSCRIPTS:%=install-%)
-
-$(EXPORT_PYSCRIPTS:%=install-%): install-%: %
-       $(INSTALL_PROGRAM) $< $(bindir)/.
-
-#install-python: $(bindir) $(EXPORT_PYSCRIPTS)
-#      @for f in X $(EXPORT_PYSCRIPTS); do                           \
-#         if test $$f != X; then                                     \
-#           ($(INSTALL_PROGRAM) $$f $(bindir)/. || exit 1);          \
-#         fi;                                                        \
-#      done
-
-# Install pyqt script in $(install-sharedpyqt)
-install-sharedpyqt: $(sharedpydir) $(EXPORT_SHAREDPYSCRIPTS:%=install-%) 
-
-$(EXPORT_SHAREDPYSCRIPTS:%=install-%): install-%: %
-       $(INSTALL_PROGRAM) $< $(sharedpydir)/.
-
-
-# generic rule to install .qm files :
-install-qm: resources
-       $(INSTALL) -d $(datadir)/resources
-       @for f in X $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm); do \
-          if test $$f != X; then                                                        \
-            ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1);                     \
-          fi;                                                                           \
-       done
-
-# Removes those things that `make install' (would have) installed.
-uninstall:
-       @if test "X$(LIB)" != X; then                                         \
-          for f in $(LIB); do                                                \
-             $(LT_UNINSTALL) $(libdir)/$$f;                                  \
-          done;                                                              \
-       fi
-       @if test "X$(BIN)" != X; then                                         \
-          for f in $(BIN); do                                                \
-             $(LT_UNINSTALL) $(bindir)/$$f;                                  \
-          done;                                                              \
-       fi
-       @for f in X $(TEST_PROGS); do                                         \
-          if test $$f != X; then                                             \
-            $(LT_UNINSTALL) $(bindir)/$$f;                                   \
-          fi;                                                                \
-       done
-# Uninstall exported includes in includedir
-       @for f in X $(EXPORT_HEADERS); do                                     \
-          if test $$f != X; then                                             \
-            $(LT_UNINSTALL) $(includedir)/$$f;                               \
-          fi;                                                                \
-       done
-# Uninstall python script in $(bindir)
-       @for f in X $(EXPORT_PYSCRIPTS); do                                   \
-          if test $$f != X; then                                             \
-            $(LT_UNINSTALL) $(bindir)/$$f ;                  \
-          fi;                                                                \
-       done
-
-# Uninstall pyqt script in $(sharedpydir)
-       @for f in X $(EXPORT_SHAREDPYSCRIPTS); do                                     \
-          if test $$f != X; then                                             \
-            $(LT_UNINSTALL) $(sharedpydir)/$$f ;                     \
-          fi;                                                                \
-       done
-
-# Uninstall qm files
-       @for f in X $(PO_FILES:%.po=%.qm); do         \
-          if test $$f != X; then                                             \
-            $(LT_UNINSTALL) $(datadir)/resources/$$f ;                       \
-          fi;                                                                \
-       done
-
-# remove all dependencies files
-#
-cleandep:
-       -$(RM) .dep*
-
-# Removes temporary files without removing the final target files.  That is,
-# remove things like object files but not libraries or executables.
-#
-mostlyclean: cleandep
-       -$(RM) $(LIB_OBJ) $(LIB_OBJ:.lo=.o)
-       -$(RM) $(BIN_OBJ) $(BIN:%=%.o)
-       -$(RM) $(TEST_OBJ) $(TEST_OBJ:.lo=.o)
-       -$(RM) $(PROG_OBJ) $(PROG_OBJ:.lo=.o) $(MOSTLYCLEAN)
-
-# Like `mostlyclean' except it also removes the final targets: things like
-# libraries and executables.  This target doesn't remove any file that
-# is part of the SALOME distribution.
-#
-clean: mostlyclean
-       -$(RM) $(LIB) $(TEST_PROGS) $(BIN) $(CLEAN)
-       -$(RM) TAGS *~ *# core *.core 
-       -$(RM) -r .libs
-       -$(RM) $(top_builddir)/lib/salome/$(LIB)
-       -$(RM) $(patsubst %,$(top_builddir)/bin/salome/%, $(BIN))
-       -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib/salome/$(LIB))
-       -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib/salome/$(LIB))
-# remove idl generated files (sources)
-       -$(RM) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC)
-# remove idl generated files (headers)
-       -$(RM)  $(LIB_CLIENT_IDL:%.idl=%$(IDL_CLN_H)) $(LIB_SERVER_IDL:%.idl=%$(IDL_SRV_H))
-       -$(RM)  $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_H)) $(BIN_SERVER_IDL:%.idl=%$(IDL_SRV_H))
-       -$(RM) $(LIB_MOC_SRC) $(BIN_MOC_SRC)
-       -$(RM) $(LIB_SWIG_SRC)
-
-# Like `clean' except it also removes files that were created by running
-# configure.  If you've unpacked the source and built without creating
-# any other files, then `make distclean' will leave only the files that were
-# in the distribution.
-#
-distclean: clean
-       #remove qm file !
-       -$(RM) $(PO_FILES:%.po=%.qm) $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
-       #remove include files
-       -$(RM) $(DEST_HEADERS)
-       -$(RM) $(DISTCLEAN) *.bak *.old *.new .dep*
-       @if test -f $(srcdir)/Makefile.in; then                               \
-          (@SETX@; $(RM) Makefile);                                          \
-       fi
-
-
-#implicits rules
-.cc.o:
-       $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
-
-.cc.lo:
-       $(LT) --mode=compile $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
-
-.cxx.o:
-       $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
-
-.cxx.lo:
-       $(LT) --mode=compile $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
-
-.c.o:
-       $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
-
-.c.lo:
-       $(LT_COMPILE) $(CFLAGS) $(CPPFLAGS) -c $<
-
-.f.o:
-       $(FC) $(FFLAGS) -c $< -o $@
-
-.f.lo:
-       $(LT) --mode=compile $(FC) $(FFLAGS) -c $<
-
-.ui.h:
-       $(UIC) -o $@  $<
-
-.ui.cxx:
-       $(UIC) -o $@ -i $*.h $<
-
-#pattern rules
-%_moc.cxx : %.h
-       $(MOC) $< -o $@
-
-%_wrap.cxx : %.i
-       $(SWIG) $(SWIG_FLAGS) -o $@ $<
-
-$(top_builddir)/share/salome/resources/%.qm: %.po
-               $(MSG2QM) $< $@ ; \
-
-#------------------------------------------------------------------------------
-# The following section of this makefile contains dependencies between the
-# source files and the header files.  If GNU make and GCC are being used then
-# the dependencies are in the form of rules that cause the information to
-# be kept updated automatically.  Otherwise the dependencies are listed
-# explicitly and come from the `.distdep' files in the various directories.
-# These files are part of the distribution and are generated automatically on
-# GNU/GCC systems.
-#------------------------------------------------------------------------------
-
-@DEPEND@
diff --git a/adm_local/unix/make_omniorb.in b/adm_local/unix/make_omniorb.in
deleted file mode 100644 (file)
index 1299082..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#=======================================================================
-# Begin specific part to omniorb 
-# (include from file adm/unix/make_omniorb generated by 
-# adm/unix/make_omniorb.in)
-#=======================================================================
-# -* Makefile *- 
-#
-# Author : Patrick GOLDBRONN (CEA)
-# Date : 29/06/2001
-# $Header$
-#
-
-# Client and server object are the same with omniorb
-# There are one header file and one source file generate
-
-#IDLOBJ=$(IDLSRC:%.idl=%$(IDL_CLN_OBJ))
-
-# dependancies between idl and it's generated files
-%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${KERNEL_ROOT_DIR}/idl/salome/%.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-
-%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${GEOM_ROOT_DIR}/idl/salome/%.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-
-%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${MED_ROOT_DIR}/idl/salome/%.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-
-%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_srcdir}/idl/%.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-
-# dependncies between idl files
-depend_idl: .depidl
-
-# we use cpp to generate dependencies between idl files.
-# we change cpp output to keep only idl file and transform it to get a suitable rule
-.depidl: $(IDL_FILES)
-       @touch $@
-       @for dep in $? dummy; do \
-         if [ $$dep != "dummy" ]; then \
-           echo Building dependencies for $$dep; \
-           basedep=`basename $$dep .idl`; \
-           header="$$basedep"$(IDL_CLN_H); \
-           sed '\%^'"$$header"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \
-           $(CPP) $(C_DEPEND_FLAG) -I$(srcdir) $$dep 2>/dev/null | \
-           sed `echo "s%$$basedep\\.idl%$$header:%g"` | \
-           sed 's% $(srcdir)/% %g' | \
-           sed 's% $(top_srcdir)/% %g' | \
-           sed 's% $(top_builddir)/% %g' | \
-           sed 's%^.*:\.o: *%%' | sed 's%^ *\\ *%%'| sed 's%^ *\(.*\):%\1:%' | \
-           sed 's/\.idl/$(IDL_CLN_H)/' >>$@; \
-           echo ''  >>$@; \
-         fi; \
-       done ;
-
--include .depidl
-
-#=======================================================================
-# End specific part to omniorb 
-#=======================================================================
diff --git a/cvs-tags b/cvs-tags
deleted file mode 100644 (file)
index 6991d06..0000000
--- a/cvs-tags
+++ /dev/null
@@ -1,35 +0,0 @@
-Start-v1_1a: ?
-       ?
-       
-V1_2_1:        ?
-       ?
-
-V1_2_2:        2003-09-26 17:00
-       New data structure in SMDS.
-
-nadir_1_2_2: 2003-10-06 12:50
-       Branch after V1_2_2. Developpement branch for user nadir
-
-merge_1_2_c__1_2_2: 2003-10-17 14:35
-       Branch after V1_2_2. Branch to merge Salome 1.2c. Initiated by Paul Rascle.
-
-MergeV1_2c-1: 2003-10-19 13:49
-       End of merge_1_2_c__1_2_2 branch. This branch is ready to be merge with the head.
-
-V1_3_0b1: 2003-11-12
-       First pre-release of 1.3.0. Include the merge of 1.2c branch.
-
-nadir_update_MED_v1_3_0: 2003-11-17 10:22
-       New branch for user nadir. Synchronization of API with MED 1.3.
-
-V1_3_0b2: 2003-11-18
-       Second pre-release of 1.3.0. Synchronization of API with MED 1.3.
-
-V1_3_0: 2003-11-25 08:52
-       Release 1.3.0.
-
-V1_3_1: 2004-01-05 14:28
-       Release 1.3.1. Added Netgen.
-
-merge_1_2_d: 2003-01-20 11:25
-       Branch to merge Release 1.2d of Salome Pro.
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644 (file)
index 7295ede..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-# -* Makefile *- 
-#
-# Author : Patrick GOLDBRONN (CEA)
-# Date : 30/11/2001
-# $Header$
-#
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-SUBDIRS= salome
-
-@COMMENCE@
-
-docs:
-       @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
-       done
-clean:
-       @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
-       done
-
-distclean: clean
-       @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
-       done
-
-install:
-       @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
-       done
-
-uninstall:
-       @@SETX@; for d in $(SUBDIRS); do        \
-          (cd $$d && $(MAKE) $@) || exit 1;    \
-       done
diff --git a/doc/salome/AddNetgenInSalome2.pdf b/doc/salome/AddNetgenInSalome2.pdf
deleted file mode 100644 (file)
index 34fd252..0000000
Binary files a/doc/salome/AddNetgenInSalome2.pdf and /dev/null differ
diff --git a/doc/salome/AddNetgenInSalome2.ps b/doc/salome/AddNetgenInSalome2.ps
deleted file mode 100644 (file)
index a81aa96..0000000
+++ /dev/null
@@ -1,13935 +0,0 @@
-%!PS-Adobe-3.0
-%%BoundingBox: 0 0 595 842
-%%Creator: OpenOffice.org 1.0.2 
-%%For: nadir
-%%CreationDate: Tue Dec  9 10:49:18 2003
-%%Title: Proc?dure de rajout de DATA dans le produit SalomePro
-%%LanguageLevel: 2
-%%DocumentData: Clean7Bit
-%%Pages: (atend)
-%%PageOrder: Ascend
-%%EndComments
-%%BeginProlog
-/ISO1252Encoding [
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
-/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
-/zero /one /two /three /four /five /six /seven
-/eight /nine /colon /semicolon /less /equal /greater /question
-/at /A /B /C /D /E /F /G
-/H /I /J /K /L /M /N /O
-/P /Q /R /S /T /U /V /W
-/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
-/grave /a /b /c /d /e /f /g
-/h /i /j /k /l /m /n /o
-/p /q /r /s /t /u /v /w
-/x /y /z /braceleft /bar /braceright /asciitilde /unused
-/Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
-/circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused
-/unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
-/tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis
-/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
-/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
-/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
-/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
-/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
-/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
-/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
-/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
-/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
-/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
-/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
-/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def
-
-/psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne
-{ def } { pop pop } ifelse } forall /Encoding 3 -1 roll def
-currentdict end exch pop definefont pop } def
-
-/pathdict dup 8 dict def load begin
-/rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit }
-{ pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1
-add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10
-eq 3 1 roll exch } def
-/rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0
-get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3
--1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul }
-for 256 div exch pop exch { neg } if } def
-/xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add
-1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end
-/readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def
-
-systemdict /languagelevel known not {
-/xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get
-exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1
-roll show moveto 0 rmoveto } for pop pop } def
-/rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0
-rlineto closepath } def
-/rectfill { rectangle fill } def
-/rectstroke { rectangle stroke } def } if
-
-/psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def
-/psp_ascii85filter { currentfile /ASCII85Decode filter } def
-/psp_lzwstring { psp_lzwfilter 1024 string readstring } def
-/psp_ascii85string { psp_ascii85filter 1024 string readstring } def
-/psp_imagedict {
-/psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def
-/psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get }
-def 7 dict dup
-/ImageType 1 put dup
-/Width 7 -1 roll put dup
-/Height 5 index put dup
-/BitsPerComponent 4 index psp_bitspercomponent put dup
-/Decode 5 -1 roll psp_decodearray put dup
-/ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup
-/DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put
-} def
-%%EndProlog
-%%Page: 0 0
-%%PageBoundingBox: 18 18 577 824
-%%BeginSetup
-%
-%%BeginFeature: *PageSize A4
-<</PageSize [595 842] /ImagingBBox null>> setpagedevice
-%%EndFeature
-%%EndSetup
-%%BeginPageSetup
-%
-gsave
-[0.24 0 0 -0.24 18 824] concat
-gsave
-%%EndPageSetup
-%%BeginResource: font NimbusMonL-Regu
-%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-Regu def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-12 -237 650 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020945 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A2261C63C769D2F4B60FA2C438AD7D199D8E4
-5F7E7C9A605C8CA14E21FCD81C9A515FB8DB6F99604534D06EA9D87FE0FAA852899C9D0595C7A97E
-6C55F79FAC45CD38E87B10D210CE7501E88C8FCD3444354365FB893A12F596AE2C1E70D5819EE0D0
-87D10BF8DA96F3DABD5405D28C4228C6C31BA4052464859640933FEEFD8071C0C84CDD829A9B1D0B
-A01F25A4D50EE2EA2B45160CA6333B2D2800306ED2BEFDFE155E9D9F9342EB8D5B0ADBF2460CCC98
-643FB1287CCD28ABA7B5CAB92EC39EE2E918990372B16F8487EBA30EAE88708B6CF33B6C015D8096
-C7CFE2F139F52052E3925C0D50FD64CE68236D59CB83EF56BFC584150EC38065059F3308AD6F9A99
-F83EF4E6CB13855C8175E31417D190D036B387D3952344A950F4D8C7781B307A094DF1ECAEE4D2C2
-FD747BC6F7F9C6BD0E90C19294F96C8C5CFE88FB34C477574A1B1630B8CC591529E59B20794DA32E
-61DECDA8ABBD1AE956CF74012AA01D42EE01E861B0AA6897C864788AE59DEF43C493246FDB1ACA55
-4C12594BC7B33657A9ECC9E3D1472EF826073F632BE540C35FF6FB40566773F3BB2204D3A579A08C
-CBC844C14B18C350F003B9DA23A570C362D6003893CA32F86F59B829C78EE3188B6E3F7FA81D7F62
-2825C639638DFB78B7AF1F500F5B450FA54DBFA5CBA277C794ECE93275A3DE0B452FDC8DDC2993BA
-A42F28A636008CDCB03EBF71BDCAF35019778993443F88412AD2AD0D7155A3944606463266322DBC
-0244B07DA1E9C27A27B59664E8566D7A54CC03E995AAD008B0A17E2C3EF61F720CE7F7788599C4E4
-4C709CD5C31B11107F16AD70B17B9AFE2E8CD922A7428DAC171427FFAF51067307FAB0ADB530E701
-FD22DA22C4CD3064067BD4F6089C4B2C87937DD426E4E9D2F60E608288BAC9056554D04947E69200
-61E379CF5E81BFD32FD37EFAC1F61CEBEE551B0851516471A7472C60DF89DAA9EB1DC5A67E479745
-3E69B9E22BAF4E3CCA4192D603295B018C4AB69D18DE52DFDF15E96B557F290A4B8C5B1E7A6CACA8
-1F2351B97ADFC36995ABA43803A6E5AC04A3C93495F6D38106B8B144449C07D1358210F9176E1565
-72363CFBDE576BFDF99FA329DD1346E83F79E06CF68250CA57A68931BC7F342AD295D0CBA17AA95B
-B8EEB53EA6E8E660B814E9F857CECB14F44A43288B69A9E7908D55BF19E844359879D28CAEF1C38A
-36420185D20DFB32C2E002202800E8EF3D67C5D50E919657CA958B538D537D503444865331D79BFC
-40312068D72364503BD0CC84B5F30A74D8B5B6A26AF2DB764564FB65A6BA8F9051AE2B4EA458D46A
-4569F30C6E77DC097356770362E6CF3F1661074778EBB44FF7D1E3B64FF75E77E11FE525BB121C65
-46CFD13300CA1F02D571B82A5825E6226D14FDCF27F06D87452A8B6C5DCA658535CEE2A795E58137
-D48E566B69D53A0C3B766E84C51EAA221C46999CC8065ADB2F129D5B630FAB1814C0C33B5AEA0EFB
-B6E994D80941B53079AF96D90A0B924F9B0E319BED9836B8F9053F868363D3CA554CBB181863301F
-8CB940872ED5FA7BD18CE39218B5AD8AC57D0F752D941076B1C64D99BE0DB86D7A6D96510D772EB2
-4C587F11779BD21CFE5BDE1F29C1EF9022B2B8BCD7F91153C845906722477829C40111D810480F3C
-F62DE8DBA7FD86CD236E656618CAF6FC46827FBC4898EA7672F8C9971AFE43E0E01EC8B77D4AF48C
-BF1210E98C1DB15C16D149BFF58AB0270CF015B107A3A50F5DC8F37FFB92EEC8CB6778DDB7CE4AAB
-C464C4AFF654223006A550EB52485A23D2B4AA7198D3CD54418102F1E9A4FBDE37B841E56F5C2C53
-966DB9B66B000E4588282E3FB80C2C519339F0002D2F83C979EDC5827A3B3C8EF8810A0F9DACB6B9
-998E9AF6551F56313DC4011904CB979AA2D32B11A811BC248141E4B9734D9FB7982A5671002D8279
-CAB93ABE057474628DEFC95D43890DB1ED34CFA8A20BDC3D874E7679A396158E522ED0AB969A4E3E
-C7E4474E192590504D54DEB7B260B7935C4E56548A7D121AC1F741F8CDF259EA1B5813175A77A1D2
-D30BA26F65EB765A04C09ED51F69F41551ADF399E6AA2FC09788137BEA4913F17B8EB838C38FB272
-1FDCB55FD65697FF0B850E7D3D1CE266BF90F7EC06A9A0876BDFE767D3A918B092FC78C775F945CF
-1F96E859C03DBF630D9A940939654C3549D8F7921CB94EE23D5A0535DE9DF31EA0F937F860B4F220
-A99ADDFC343D7CF7BFA0B803C12C26403F0DCFFC8EA786D0D8A8D9C367419CA8AE41190CE93A8086
-583A1E6C9D70B612C84D87D2EEAA71EC2DC12F4CDE6A821303D5F6A9BBDB7EEDCD289E80FA3B75F4
-7F481B50719DCF4A142069393593B9AF9CCEEAEC56A35B8787193D7C88113E9E1E221D151E093B01
-9EF89F6118BEC4735103CC8003CC5AD1B6727B3226CD44C497DA7052DD681695DBEC3397F9598C91
-77701C73BF0594CE93F23D50EC5BEE2FB9DA1FC966DF148B27B28EE3C89526DD6625E2887F9FA076
-7C127C609EE315626BC14D274FBEA56528DC06A27B2D476D46E9E7916590B156A5DF04A6CB15E362
-45D77021767B6E5BDFCC679670263FD891446C3371B11BB6E1DF60F960AAB4149D7753E6A5C33810
-C42C8BFF4E935003388506F8278BD7CB672F132E065AE684DCA0B9064D01DD620E7FFDFE04F14277
-EFE8E60159BA0FCA3FE2F28B902D4AC275D19F0AC6971EBE827C4A232D87650D2688345BCA78F879
-077114F0463C5F058107B669566F8171E4E284D278405580F04BFFC9902784216E0C9A17AA9B2935
-E66E18A783F723BE044389B7E9D62AA36818FF2EA406C3C1A9D2F3436F3EE7DB8BE86AFA8DAA6A4B
-1B84611350D8D27605509612B515E16AA843164D5D0805E36A2B9EF74C5F6A0B9D59A04B55697123
-27F4B1B30E9587CD103337639967CBDC655AA46E80D2CFD24BEB50815B5338E522B3A7AFE8362AB4
-F05D8BC52BBA9C5089ADA8C89529B0275AF422EB540D31A938B8740860756325B966B36817115213
-FAAF92DE63F6BAE1E0064BFBC5588098B61EB83C71F1C2082436D37DAF1ACBE186FEDC4BE7C1233B
-6F18BEC5F99002D21CB7864E4811F7AB3C03003E1E4490AD1AC793BD28FCD5EF0E6CC30EF39A08C5
-2F71939B0CEF620DC69E31E39D6DB969049031B0C92EF2DB653D97F370141456A52985076B268652
-FA2648C792780BAD637C4D7581FB2D62011D57E293719487CF2D1F013CFAA532E1C2D39178D51272
-A6AF041440BCA174B5CC902BD7390C7D3695056CB4BD7791F9FB6D88E7A70DEF2C97869F5DBC5BD8
-23C517C7B7C39D624DF627DC9653EA5347BFDA80B723F05F6DBB4C9EA501D862ACE05B9DBDF21B70
-56FBCD8C6D4B85873DCEE6166C8B5ADC0316CA12D9639F361B15A42F00E1D62EDBCA1111972FA0F4
-5758BECB31DB38316F3CDFE1B41748C93ED58B67E9B57ABBED5924A6D53E99FBC9A994A6489A8BDF
-13EB685548B4DC6D62DA7426C22227D4D43B6FFC7B5EA91C896730253E8941AFEE588359C2BECF6F
-FC415B9EB6D31CCB0F6C7F85853E6449FA6D627A97A3CE8303F148393ADCCCDFA2FE085C6908BE5C
-3C05AF00A6F02840206C3253A559AC5C049BDDFD11AD9B118403B84DA10AE3C470CB9A9A2D1D7B73
-2F59F5FE146DEDA60AE750F551AAC934621B4470E1BC324C436303E25F81D0DC3188BE0D6FEC5414
-C20E4CB18952E12CB6423DF7124627ACDE145500D77A97A8BFD9CB50D1FAA008E2CE2B2505A4749F
-1EBBB092C347023714055A9B63353AF9E7FEE05BB54C9843698101F79888A91531773830C2C967B5
-88D3ACD2192883D5CE3962D51084FC653EAE2C5FB2DA41DACEFB5C76812D2EDB5B109677289CD199
-8D457FB1023A19AC67295BBC1A9A20A426B06A368DF3C5DD083CB1180D287F5500F2C635EDE157EE
-FCEEC5503447382D15C748C1E35F68753992E5C90F900DE54D18F8E1B355D1076ADFB1F3590135FA
-D1A36F028E44F48ABB149B80CA9A54614D467F8D71CB310BBC7AC7100261092DB8C5BFD39E0AC6BC
-2C9D6CBC3A8C05FF8A74CB21608EC4A4CFE4CBAA2D056DBA14206106044DECF59F957EF8A9CADE4C
-9B19D8D30DD4FDE6A9548E50DB51ACA73330142153FC36B69C1C8D5B26D0C689B7040E81AC2C864F
-D7C097C99BE5953843E172C97AB5684F35FB03A725A89DBF371F08DDF40A1531FC1B676DB0E1543A
-EC6E97D3D2E4AA3D5831D8B3C952ABBFA112352814FB6FAB61A0D680E6640F6AEC8426200CF61286
-F7422CB2F78C61EBAA36D47EC16D7FAF8B4AF31D090CDFA255D9D7C61D46CFB22A7D6E1758E71ED5
-67E00CBD8E8F468DDFB477F091A2F915627F22FF47B876544BC1F03B6BBB98385F009C20BB1AA2A7
-A78674692B8EAC2E3C8069B79E679338DA57F72976810F845BEB6B9ADD32B95D78E5E60F16DD1668
-9C05FD82D36A3115BE8ED494A74DD211D58A2CDF983FCB9CDC29BF7F0E29988FA23560EDF514BC1D
-183F3B2A22C09FB179B47E05ADEF48DF02F31C29875D1915037B19407764A4292FE44E741651A8E3
-BEB5F0D972B6327090F664417C84F84FFBF0AFFF8B1D85C822D90730AB4140C42A51AA8B1DBE4398
-4EA8566040EB8B341CCE23FD3F69DD235A080BA5C69AECB9BC732BC2D7D40617DDA6B79FB6EE40C3
-556C7DF9B23DAD89E94054B1345DB8402AE679FC4655A4A776C0150463F8DB2BFC0608EA1F124E22
-1DDAE6026B5E5D007A7E4A0D6B3B0CF3A2669E67C5E4F01551966A7BC48F2F4B6A87E740D8095E63
-F77C7A027F26B52F2299DE5B8A2F6209BCF3D31CB0235F998F781E5CC81E31DC424E008D46EC0920
-2951E5684804A0592EA47D6C788A20487BEA2EC8F2E6C1D7F378B62DB43CA43C4B366F8B4319631C
-FE9854F0E10321CFA3B01C873584863BBEFC23C72C05E695B56E8A52E89AA2DAB543834D34DCAC5F
-ED08DC51825C5257AE59850D101D84F4CAA1D29FC932F9E0EFFBF7A9A7F3685F61F0490CD3CC8988
-2DB52A757A6AF4C4E67B407BD2316B1C0FFE7DC54E43C87B874F57E4903334E2140B011484863CDC
-ACA331175F2CF3D72E0042855983AAF8853D3015E870FF0807014C31D55060DF3FE1FCE157324481
-2744AB51322444632F9AFDA6706E320FFE82B8CBE242A19DF00CE73EE48E25FF49D5871BD3E60652
-298FE3E8D400609E232E0DDC794C0579ACEF89E841B2EDCA50D51151F65E8C1CC3B01EF1870558F0
-BF5743718C3E068617E81BFE120C6CA16E0924BFC2541177D53671CAA3AB641C41557DCDAE1A3461
-47B5E999C4541B08B4AFCBC187AFD653D5B5F8386DF6AD8FE69E21BD0567DF494F736C6A184FA4DE
-48DC9F347787CA96E2E00A296C2DA05C2AD9BC423E9CA428D7F1FA12DC9353A302FB8C529AF8688C
-BB543B45B2717EBF8F6C497935F4F3BFFD285E0402AB7544B3CA4643AE5A8B5250ED987A95FC1F27
-5B9707ACD0641BD0EE2AE9758494F8D8A51DCE408A38AC20EAF0852D72D84D0C6BE973326793AEB9
-55EAC6FE0A2813A355DCD22F6F2CE56588D1C055CDDFA98878BCEB6A018DB22922D2B600A20F8184
-2E665DF41013CA0947C4237C2BD60A75E2FD1A3FB8C8FA19485730B87461AD466ACB02DF8CA24091
-4FB090B3D2B41EB6B8FF05E1A59D9FD668AF70BA5BB72778953BA55FC5F9F626043450E1D09BC83D
-8605098ABEF884639A37809A32565CBEFB3FF39EE53D6C18C58C272BB928E4410E361E59A50F242D
-69747A032617C52DEBBF62364AB5A96EFAF642D9D82BA679B1D70FAC10A4EB62FA5CFC308E86368A
-AAD7E75948F43598CD1C544A0D4091374D7E88D4522CBE902391641327E888E7748FA889DCE67ADE
-61699E7D77763681CAEE9B1CA8837B2F7EF9C18CBCC538C465C8E2DD34616953CCB6030A222C728B
-834911C1A179E2C770289407AB28B303E724D97F747D6134B425216A64C6E0B60F633E2B85300047
-E4C90339CE030A0FAE31E830C8ABA5AB3386A3B69267351A7BFDD66356AE5E57FB2994452993E90D
-E7C4E260ABAB93C37831856A650D56E44172FECA01D6C7C380F250B82473960D2A2A5FB6B4DA668F
-46E624ACF7FA0FD4490F485D640A3ADFC9F8652E7A38CE5799F770C3606DB4B8B947F93967F779E3
-A3C0572F13A5A187D31D7BD12A5C7BE23CB6ED6192086241B76C5BA6983DB9C93E4B208D707D3760
-F03CD6272EF3A4CE89B8E52E6AC5871A3D03EB975759AB4BE239E5EC7842CBB333E692CC607C722E
-185D3C39164DD320C6945629C70FF66A5237C0A9520A1FAD6EB9816069351AB0F135D90CC0982B14
-7D2294AE4A38A527EE40BE9CDE2512AAEBB590E134388BB171D0956A7C4566D65A9A041BE6C4F883
-6B3EC3D2ED1B48B566A783292B15B6127920D247D494F070BB20BEFF60640B11B276DDEEE49706E8
-B2B21BB40B7F00AAFC594C492C25DCA774E0B80D82E927448DE2E74A9D0DC7AC9260096EAF187B6C
-D6AEAA6D1DC4205B4411122751A5B22688404EA7C5861730371FFAC10F5AFD4727A0E402AB5EA757
-606B75EB86A05E8F774D6E430A1A3FE2A37EBB06700474239FB1CFA05EE44B91B82244C575B52E7F
-AF934B04EEB0D933FEB57EBE326D75821C8B23EAA85B583AED4320B7F04B9F2DC591091216FDE52E
-064BAAA9C2C9D9714B95A4558C21F3CEBE624B5403B31508F178581AF6863083ED762F1E2E34A45C
-FDD71660D626FF8648F5D6C5E580D4765A67FB6159EC8077A9F0A88038C8D3D7C77FF0926E2123BE
-874F7BCAF129D55A5B5960F824BD1728ABCFCC51D23936DE9A25C408D786E44C3A2BAFA4423177AD
-060D21D38E15E23EB6FFC0B4120E814695D423EEFC2744A1FC81B4DF89D76F0A6803D8B14E75538C
-AAD03A72517B86514F6952F6FD619D9E910D980F00964DB325318C045BDF79647F453D4A5CF4E61D
-D5359782827229310405FBCF6107C3AD9DDEF9A9A339D5D5A6EB2E7838A0A43221BD62CBDF732DB0
-A638A52016FB35BA7761AEC846A023D3BF2D1BB183543E81EB7CAC1E5970CDC6F068C5EA118C7AAE
-528D1396E6DC939112DA4460C890EAD5C01BDC438F5BB734218BA6270ADD0DC1778FD8AB16831D6A
-302B814A1A44B07EDC65956C9E6CF4875DF521F3CE5B422F71081B6D69BD270F739095C9E81C0377
-934A8BC6390C420C4E4CDD9CF7E32544C68D884E15ACA3BCC07FC8C132D8FB9D752C15D75C52C288
-57E2EA461A6FCAD90C56843513F74461F18D7164BC597A28AE4BA7C86EE1703535A9B9ED50122627
-71FC12F102E800E0E1AF7BB46681BD2B14B614CEA91B7B2AAA35235DE76C0E113C92688F8EC81277
-D58C3406778E1EC1CC15F1CD9A137C8FFDAAB99ACE3BFC782916F1A877170589A92DC921E6740A22
-B84DC6BACDABCC76E64C79E3A588D80F8F4D376E1B426F15751CF7391102102F0AFAFD8B22DFDEB5
-48AEB5F30B1673023D22054A13391A0EC08DE6E7B685A0D031AABF20B7C62187C0284892D5EAADF1
-21BA28263EB863D5E36EA9C06A77CCFC0E17F593961591F84D82AF823EFE41044C8D606FEF83CCC7
-B0E961E7994DF8A3CC36B209D953E250ADAB8D22D7F2B4E2C9CA39EFA2D93E56195C1560E30A5190
-CC5B17FAEFCF250DF79F6B624A4B917E11C332222FCCFEC4F6A47BD9E75DA9854FC3F7AE554E91ED
-DE144D7AEF38A0E3EDB5E5A5626374DB94F022C8CF549093041DE00D7269B7CE544E748439BA2870
-718C08E58FB4A77D93EBC04B7957D272AE1601D41BF85A2BADAA0DF73B0D3841D4839C85677FB2E1
-5F1D6CE592669FF4BBC9C69DBA334DC37706F2F6BE83D5863E8CD6A30C08640AAC4C233684E66B4F
-E6B62D4A8BE9D531E47BEF5640D9B5C27D990092BE1597F6995C8A77BE9C18AAE6C1CF130775DDAC
-41D34438FC7AD8E042CB56CBF2944932EBA7D053E9376FF398367450E35A1945FE23E05C921096A1
-5454721FFD0F429A3E06DC3ED36F1C170BE79C66996EF8337AFF85B90C5D3A4A94455AE9FA32E211
-7A63E59001F052D5F6223125BFAFA40901E98960ADF7BB886729DCA82FC3B8CC52B37FF2517299E1
-D769057F8154FB95582F02CB0BECC873A9C71796ADBD3E91324FAA94F2C41CF57C30B5897D031C02
-D256C909E080E70BFD1F32E69EF67031138C2DDCD1A8E4B65E485C23C3E450ABDD9815512D6F34A8
-4B9DB715DB2C7A93BFB424316E1AA44397749CB01088428F149A3B4324737ED9957FD388248462AC
-1B2610D72BF5C073ECA567E7385CC959E37CAC7E05470160FFA5A9F63B8E9B082937E911586EA165
-374938F492EDF28CE6020953A5B5CCEC7737F9D9CC8538C4339567AAED3794ABA3B9F4EAE65466E8
-E326F6C399B36355935FBDCB9972F10B13494DC25097FCEC5A6398F275C8C151558E74C5175F7BAF
-4155E36B733F75CF9D5C5979B0764F14D8306E06BA24BF791141E404C69F3F8FCCD91B9C58C2C671
-AAE7D4F9E5D6414E46ED633A5F78AA5BF04E652246A066EAD9E582B181CC196EA2D3CFAA383B5D0E
-4CAC9336E119C08CC6AC55CBFBAE147C623B400453BBF447E96DE036FC025624384359EED7C7D5F7
-858DC0521377CF647A157FC3F188DE5EEF094DBA125510FDE34C570D7BE76AB5DF0A28BF45DDAADB
-EA7EEEDB936332DFE93081E0AFD3FDD46BED08D6914B2EFCFDC41662A33B90B03D76D34F48D30FC6
-BBBB600E90E6AC7243FDF026762A44B4D6E4ECBEF48C9D7B696AF29EEE063E557D8FCF0F09E0136F
-45D17E608DA36E59F2AECF8493F8D62536119B5F7E1554DFE3F6E8D7C9A2C6F557D18B4AF92C9F6E
-050975C3B5C54F9B5F4E39D600B6FA2CD6DE203A174028CBB2A201AF126D1013C229BB82CFD013ED
-199D01E51EE2780FE896E01C63C655087A3E61A7F1029FA5E97EA1872F1B45F22282DDC317E17926
-7368CB52DA9444F6055A3C653659CAD2A1D8712BC2B1B32C1DC6906D957FB88524EE066156ED6BDE
-B8D832F9338F9912E29A250A8C4674E667C1C278B677AEC9972BE83CBA3FB779893FCB8F81A323AC
-91474BA2A2334A07BB5628E905C518E634F6761A3289056F83D5DD7B3890987EEE1C18FB2D379CC1
-905F1AEB3B3D2AD578F0D6C845D2D40C4BCEE3F71C90E68E5417BB8CDDD878D83BA80AD8485F4067
-E5C3CABF28AB56CBB219C0AAB8FFC6C7E192BEC8CBCA1459AE4450AFCC81B9548F40CE2622E5A7C2
-81F74DCC02DAD57EFD92D072318DDF05BF42F1EA8163071E23949B0179CF7DE64677CA99B23CB926
-B3E294194EC13397EA1DC9A5E1CDCD828156CD71F81B64167D4FB01E6002713BD8AC6F82B20CD369
-9C6CA4704DC5C65A2D66EB155B7AF1C9BB46469416FB49C1C7E17A30A5F045271D7DF3FFF2F42C6B
-470701C381E3456A500C6BB3D0E47B4D91C5F34B49BB6272F1F8698B307D89EDA3A1565DAD1C0864
-627560CF922DCF5B34C67860352390B282F95394AA2CDE0E97CE3ED39546A6AF1C52BFCF81A29BE8
-2C47C99E8050E4889E4575B75F39E662F2DB7420673797E2ED3D67CDA7AE2C15D0A0A794D57D168E
-BE13214E89E0209AB2C0EB7784E9491AEFA3C02D0DF3AE5365A0FC4AE023CAB528162C7A1B173664
-9DFADDACA8DA5FA18B7D6489E4229E9E24D38A620464A744A5C60F6F9D334B908706B738AED18669
-8A8B278341FA4D65A0A88680BA484694921512F7DE93337FC1C02BBE6E64AF2DAD07603279D87329
-1D1F4D39C1DD6D89C90F65240F4808F6F1115CA55B88E242565E59F3BBF1F10EC7B88872E9AE61D4
-4CAE185463EDFAF7DF63DE4D2207D307AFB61501892965170D2945846FCF5973A1D458607F50C15E
-06E5BEC715E0C156259AAA6C735593E5564F65F443B78CC7512EC35A56F126DF9D30974A40872E42
-65E1AE5FD483CFCBBBA26DEE426CDC4721F19C3FDA86ED7AD4FA1120F63669BEFE7002B128CEAFD8
-C63E8AC09943B6CBDFB3D2476A026C00A8FF81B1F651B97F310C82ABA5F388CC1DB5AFCFF5996D52
-52A6A42FA4D972E41EE56088F78CB966F9051171C472C774879AECFFF08BFD9CEA40D7C298922ACE
-64F28C14E0B81F4DCADE81D71DE3983D87D905192EF13CEE71B2D3FF1A88AEC671EC318917DF98A3
-C9054E372D22A3CEC82FCC217F47319A40900312F6E32B536B9E7A7FA0837EC65CCDB5FB0D414371
-17596CB39D9382262DE6E65379D3A9709B2CFBABF5FC5D5B352425F06F88CD31012A2A4147B112F0
-C1C0ACCC808CD625E0228EEF66661F70AF96D3DCFECD402700E4F6522AC9A856DA466D55C84F65BE
-2810A1565163872D62EB81333A698ED7B68352CACCA2D7AD38AB55C19E4F5582F75818302F5FDADF
-1DCED09D94872F2D48FB636C8E38C7563C72C771A08C6B1F041F3532BDB39006C89A33C09BE1E3E6
-03622D891F98010BF1DE5355F557A1E09448D486ADEF565705277B31B8BF2B86761E32631E3435B6
-88B79D566F1747BA456DDB43CD239FB47FF7B425EAA4C657C8EEC26EE01AED07CF916E77D53634C1
-37AEEA009C6B515B6342C54BE2C7B95955B1A9DA277A0ABCDA2346E88018C726F481F71D6011AA42
-F8852F2E5749518FE3B3AB668213FE1A05C10A1C53953D75312631D6BBBA01D418199DFEFF8CF548
-6109B099FE8E2F606165FE30F532C03567785D5362AA873C9D3EECEB20F1945D55F49B0CCAC84967
-59FCC7292E46938943C262D78F3212D3F9D0F7B103157F423D71B1ED54B2A603F4C269029918F238
-EC6828FFCEC66009DB9C9E59534EABB183F31D7AD4C57B1BDF0BD2CE5A421882BC10CC1BCE6A970E
-2B586BB221567CCA483989DD0B8DEC424C1D1FF042DCB7834423CF244EDA28D2D969B17440CAEAF0
-24A6119DB010CE366821AFA424D1B8299609C04148275AE6E5257A7ACB3C766C747CE99CBA2D703C
-F19B7CF301B634D8B613DDC4AFE4633A4D77BFF8E00CFB5E289EBBCAC90A24307E7941EC1685CBAE
-400CADD876FCEF7F6557EEE167D2035A05120293527700DC510B038A496BE1D5CBAEF24ED39F7421
-1A93AADF22214ED606A80582485AFE358E3A46D0671148998A3B3BE209467009B43400870359D418
-9A8CEB4D5866AB52D16D9CEB1EAB71C07E6CAA34B70E3096BF7604C22C40D5FBFEEA616DA3BABD59
-DCDB97D883FC8742B8267A16A99B7953225F7144568D566E64542C92E538AC140C851E5D295528EB
-7CBB49909B1CAF6409C9BCCEB325468FA0B5F7CB2987382616B477CCFE4F4AC79E4A6F7165363543
-F04DE5B6F6E1C2E910CDC3CDD6C4C92737198F892337DCB6647BD226C820AC99C65D8E7772BBB74F
-E65DCAA8A22C33BC168BF48E40A82700A3A7668C5A9A71E397ACDFEE7D556C5C19467B7AA69C260B
-727407AC837BDB7D67DEC055C1F45D8BAC61048C45BC9FB3CEFE7549EAA2992D2EDC126FF7A05EAE
-58613332A2BC1465B2BC0429162B907D65F793D236EDDD8D35405866D71B25F62DC4A7E06D4DEE82
-840ACCAABC0774F8A63E9C0F7FC980B3583E7A8B01C46590E3BC04EBA565C2EA94F057D964A78A90
-EA9F52ABFD70F84E44E434BD10A42E98C794065724341F907E35D3CB257161E01C7084E3A0166D15
-CED65DA7BA87DBB2EA33D39BD99AFB93D3548358D08330E807F8552CECF63C84F805205491BA3A1A
-622E70C232FADF3BF2DCFD6F0539158D3306506F150B0518371912A25EB96163D73E9EEED42EDC84
-D688BC7F7708D9DCA348FAB4DF62E5809BD094842D0A31DBB7C4B41F94D946810C5EC10B69AABC2C
-91A59500B2E5D37F4755DDFB7AE4ABF757F4C5BCF77C7F95E6A616646456FE8F18407080BCABBFA5
-7704287AD26222DF91AB2613951E2D679472F8ADF06EA2A20205EC19972299A78BAC52114334470C
-5F5890C2F846B4C6042D73945127F2E3910ECA1C4CD7A16EFE4B4BE38A15AAA710682C3836A8CA83
-FD384970139D8B46FB0AEBB002DD224199672FFA02250FBCFA4E649E335428FC71F50F45E498419E
-DB0E970F46894A48F65580881C9C4250FCEF65C9B28699408E18B26FE6DB7F1CBDB767564E73CB59
-54C6D639CE33220C894F36E70F71C9F9AA3FE2AE0AA0E3F2E304EC5ABC661675CDE2E70519E4220A
-E26FBACBD01D5169EB844750753E6CED53E3678FDCD08AB93E10067E9C64F38B40B76D99B6CD92BD
-F4155A1EA5CC824998B59AAD06E09E5F15EBB2288D66EA71B296616734FEF2796F07FF0D8B047074
-A1111D68B99C2B70FC56E74A51B062F4998ACC85B1943C9477E436E5CD7AB18DBC898D21BB93475A
-623BDDA71D7B895BA2D4C10F4B90BF335126F4FD57D73AFA50170F6B3C364922E551D40E35DA75FA
-891762FA23401D39260F2E92C7807C746F13BB35CEF9DBF2E76E66A72FEFF095DA482A4DE8A42091
-7065736CF4DE904FB52E649A32255E2030A7B31B686353492F31C064A3C4B0448C4BFD44B8E15384
-FD809B8761EE26A7DFA1758D57CE4F0BC376EB2B3833534B15A83436BA553955ACB5A7A66796AC5B
-92DB5388BC53EFA27508B08E82821E5CF669BCE52BB860780F749B4F38ACDF5FF12726BF3EC2743F
-01014CDE96FE6B4C40A034E9EAFCA2A35CCC776C2669E6AD138070A40F48ED79136D7FF57E993E09
-B81C543FBADD350FF5B5F7A46F060F88E30FE2D8233832D18B6C323EE017EBC1DF5C838321CDC8A8
-4CABCAB20B60A1A3AA028F36EA6E87C850AF8AF7CD50AA6359038BFA8818821D02CEE8F51DAB8C05
-F7AE9797814D97F3DB8CCDDE45B21DBB15CEE292FAA534A5F317B357F4091F3DA357325B8B9F5EDB
-45865415973C143E5E5BAA483FBF2D06CDD4246675EC58B84C6AE65CA743117FF00F229243772561
-31A7F2BA26A9115AFD96C18216CFDF41B7220ED0CB3FCC26C36380007B382A02AEAE428887DC8BE5
-FDD630AC57EE3DC156C7B8B29E687F24442E35CE10BA4087295A641F7139C831F7CCDA6CCEB5DAFE
-537CC1A97C5A337D3C48A6AE947F58A30DC08CC7B58DBBB4737AD52783C573FC1E9408F55495A80E
-7FDA61F0B9C4F090158F1A416249EBBA936C27BEFDEF19D1BFB839EB70576A010706D8B95657B218
-9C2AE04C11EF9E57FE09880273761FB4302C388BD608FA0C7F00F033C9C00F4E3D5CE2D903E0DA52
-E69C7745EE9FA75E2AD93DC6CB5CCFCD3782A699B807AFC36AD1F62B05856D5DFD6F88831B90EB3D
-CD523582A49732E3FD7253126D39E8AFB8458B5F7AD7F94A8DAC13365F433C857AF4A42C0A08C4DB
-9887C4957259ED22D13CFDF5995DA957EA5A0F620B0214FBFE08AB6D552DBF048D62CEF6EFF12F15
-3511ECA7833E0E3E95F85E6AC0F95438AC4C126E1F1ECF336ED31CCA7EB216D279877123FD9FCD8F
-B5E52B587CFFC4428456DDCA816819A8A4A211D8F1629E5D42BA4C5C356E580C8A22C61D987552FA
-A97893816DA73D423686E4EBD44375C257F031318865A20F22115E72BF1EB9F93AAA169C140A33A0
-6C35BD4526A38BE79CF40AD1EFA10411E8F3300A8A8B97AB140EE6734E1BEE6C8EE443D698D34159
-97649C6F10F20ACD80236422E215E146D744A262DA3FC88DC0D86FF66512F49D3F957D3C5CFFEB42
-4823509F33F155057A4C6F37B52F4667767BA94F6B8B62856B553F307E5D230C44CBFDC9A97A45B1
-39FFB2F2565EB0E22026972FAD0FB7B9576FB6F368B61979943A398773600E7EE1DFEFBF26D45D40
-BDA66EBB96A56EE9CAE0B2420C5DD83E24DBA9FF885BB844BF3D2BF93B07325DFF60C0CB5FDCCA0A
-C8FB5A2E119D5AF26E53AB8E3B428481C2871DDA26EF0B621CD8572B3C664BC7AAC01A1D05B98F79
-1A7080D294BE81099BDA7982432F3DFF4775C44D23F4F1B2E0162B61A8B2CB5EE8564BF98E2ED403
-2219085FE6194C19DAC98A421826CAED7F1AB1477AB327506010217283894235D7DBFC1153D5ECC4
-8AA7293F19592B4D7E95FE55151889BCD1D7FA7DC2370D2DFE11D7E4EA34B5C7A8E73BD3A348FD38
-9EF45B6167FB90BA44C23E912F9A4F2FC0427ED070592F7110183BFDB2C400393BA7569058227926
-351F07FED4F33633BA03A72AA2DC6B598E49B96021DD868DAD0F352E5722FB714F667C15C68D49C0
-3D822D82677EDFE86FE9668E537DA284068C9B0AED83074C92A5B939296D505B837E6A9DDAB1AEAB
-7455A08A114C2222B339284674B74BF4CA9EE0C020BF2A148B439C71C6BE51A94CB64FBE4A7EB295
-5A455047CF5CB348B062ED4F6471CBC3E9ADD9BE9B96879AC7BC71BCE02FD02F17C6063985A5E898
-3D205AA1489DA13C408990ABA1C54F2F501AA172F530480D789C848118C0A74EF98D5F607A067BAF
-F6030D887AC6A6497F9A0B38F9705F328AAD4BFBB634F739386177B07F22D5771282444E5EE17335
-B4D0EC86117C697E79A5F4F65FDC08E4904DAEDAB20067EAE2448FD4301849E456D085F392DD1316
-7ADF75CCFDB723E2904A9C0C976D6B84DDEF9D92B0E15FB246C3ECC2D0BF314CFB957757B3A3E8E5
-801F520644E4601D291DA0F7507C06F3B9BB36FC1C70EAA444E14E56C0CFF06C7F853DF36DA9D8B6
-AF2544B853DFFF535A7E5C6FC145250CDDA229956019659D0D253A19A7B51A4E538BDC01F74D7704
-9949C2C97C7EC6392C2E61CCC0992B66DAF1AB08551063E53180D2A67DE496716CCBAA45462D9F91
-B66A22545962DDAB120511FF08627131B95E5DEEB8B4DD9643E7B2AF65C0FDCE11F5F1E8DD468DA1
-8D41C8C4F00EA73836F4F70EC50FC3EC6D358C0658A4261C6D15A582A2C7C994E7882E661855B352
-014576858A265FFBC425160669CE159D07EDAC04D060B44E5800A7AAE8E339C29B929AA81D2F515C
-46229D2080D5917AB20AB6B34FDCA8E4AF64ED660A3173786FB1A1D005D575C2A5187D3F7CFDC94C
-CC44A38C5CD523E9DA726D8EFA6DA7B6131DFF3435FEE838B2C7D6B97934295F06202D307FF78D90
-6699CB9C5BBB10D1D4DEA5FDA5BFB094E704607083B646D37F5DA1FC7AD21B813F44D8C1AFEAB666
-55AAA19703BEA2E77DF3BF350E17C74B3447A452235919452B5175570A006C7680AC05E8950A62E1
-1D7E3ACA35A397D1E19630D094A86807593C97F4C484E4E06BCFF708B6DCA972E3A0009E1CAC0EA4
-141530F5C1B8AEF5E1B933F37FDDBC4BE22B74FE346D1A3F5FEC0818F8E61765568A2AC04713E828
-F98C449D9A1CCE52D10D61DD8BFD084C8D099A75D89DEA64D5A7CC68BD5B0593D97953DADA976383
-F5015915618AEC56D71D1DCD55B89736395C609B315A3F1E1255432FDBD37F38CC43C354FB4B7C44
-F1A7318B0B7E99C3C08C33B953727B6A6328051783A0A33E3CD9E498346A3CA6A77B517096EDD52A
-E443B87643A646C3A7BB97F742888D33F9B3127E61942F4103C1DBDCD8EAC8F9E259773066736CA6
-53CE57E8822651261D847C131321BB9D6626A1AC50D047C0BA47B411DF2A995545BD68EC0287CC9B
-31D5DDCA8755EBEB10ACCB3903AB0FD5788E984220443B8459E7C078DA4289F1350905881AD6DFDE
-C47302B0ACB0D4AF8CAED02B4B70DF3CF8FEC118F0FC2D3DDE3E494CD160E676E300BC464BD4400D
-B50EE43B314E0517037BF971ACD7CD327CB2134893B8A0410E68DDC518F5DEC966C7884CF5FDFE74
-723177F20DEDC039D879056CAAB4BF045062D3904F615C5CFE109AC7A35599C94024B41019B9AFD4
-04A80ACAA4837929F5C9317680A13D157A03B59A5588DF79D2E113F5F51021D6F6F90E8BBBA2C252
-FD10651BE80BAFD59C53A3367BA3C28DB6EB9DABF1EA99F47B503F627E15DCF3FD645FC52C5D5D0F
-2F07DB4C25C0D1E1C00146E1C4D973E613CCDBD3F9450CC0F5343D79F05E9492E86A1BB889ADF405
-03BD7F3E7543436859184A5B20BD8A172F350D846B7570803990ADAA48D4B9155A2B4C4BFBEF1E1A
-065C08E03928559735BDD442FF1E83E1FA20A5DA57D8BDB2FF5427C034CF0128AF111E6E73099E04
-6E0C240E80A73D7BE72B87834E45898D475521CA3306707631F5C6136199F354632D1A085F12A1C7
-C473868B62E534D15F5484323E63D0574196A19EF175214EB35A90873EFCFB92D6CF68761D45E37E
-AA61E1A1979A82009507CA193E44B36A806486665CEDBCF387053ACEAB979BD35D30978FC7659ABB
-E844F4ECAB3303318ECE80777A5FA5A9DD91B3D06804C4B4E9B4EFCF07EB89866D0DD8CA390CFD15
-98651417114D78776B1A1D36B4BA17746D6BE7FC123D473EF1EFED1C3BC1D555F914536869FD5B0C
-35F9C83F65B0E6BF7A627B9202D787D72C600DDB6BCCE613D88492E13CA0AAAB196E8A49928C62CE
-A4FFE2D0208EDA334ACF47F20BD793124D2C5546C03F4A364369A76A0425262F9D9118AF54E37D32
-E33AB25DD533A49DF5FBF1BAF4CEAC2D9D378CDCD13B00FDA432D9042F623DA41AFB80699B5538A2
-5403B0B3EABEC9E8EFCF42FEF3EA9F91766902CD206B0787C187D5370B60AD6DCD002DE2DE8DCDC0
-B4719A797C5E26BAA67665016DA0D967FA1346F9588AEDA174CA001B31213617FE19EA218EC23597
-79D979E2663166489C06993230B0D07973A117C4E3F4A4C93CF8428248DD5389414D679C69644142
-67C7FEA17E35B0CEE456667A9B1875C81B2302BDDEA2818D6019FC1622A82051F60584ABC904CD91
-8676305DC03FFBCC64FDDAC8D8AA9CE2EA00D6C97BC63C8A617DEDFC0E40775649438E9F61AFD179
-5E3B20560B01BE5E0983F136CF48AB206954E41DEE0D9DDD953DFD01CAEB569151D6BC0DFEF29D70
-FAE3E198E7EDD8922C0E0BCB8BCCF1C016142C1A8B337AFA7A05A9D7534B184BF3BF827F371E9BD1
-9A71244ECA1BA73D484CD2FAD54DB2F0EEFBD54B536EBCB5094E6BC2F5B2AAE41F05B4B311115876
-ED42C34F8E643B53372E3F6350DB8A38445822EA9A33E27FB0CC42CEDCD1FE2FDF723FC47C996EE3
-56C402112F24D0AF899B2D00BEA1CFD427998BD22B2A09046D6737814448ACFB10D387547D7009FB
-384AF0562C85694C071584236D0F1F3D3FCD0CFB38B77C81889061E668BA7AB37AA60F58A3967DE2
-6F939B79CBF10A9DCC42852561D8D6754F1B660D216AAB1E133FBAA321C56E2584BE5C9BAE20CCF0
-0E8DBE6D9C2FCEBEBAD945C3C04101D2387351F132628786F6D9D4CAB83419288D31F9BC600D9664
-12E6AA457CE6CAD26A4C0671097B98C2384C81DD8B9A3222D4F4BBDA7017895C3EDC26662779AEE7
-40D9D7E24185FB821970B0A3A94041A69E4805EC88EE1EE521981536F2844FB8F5EF645F67D42CE5
-148E2DDE43AD5AEF200EDB3A2C7866C98458A92666E5F9E070178BCC39F65A893102A10564AF4E8C
-AAA5075D2F8CD7FAB0401C03AF299EA3515CC93066744EB5AF7CF0ED06675BF049A6E3C211A89E16
-DE5BF0445A7CCA6EE8EB0347454950485D884606651E5887FE8B24323E2AA16DE22FC1FC8C4F06A8
-2A1FDE5758976024068197E1F4506E4D3D8A16D40461A4586338B374A592DC60334402F76388AD6A
-457DC3F54E6169CF7AE3959676E966A45609621055EC3AF80E182633300A4418E34A66DDFA6B569E
-5A13C9115B5FD3EC1CEBE50FBA247F60803AA83976F00117536342DC3D9890C49B2AC701D370E43A
-955118967827760F7091469C5406F08F18D7E3548148CF0E312B1DC71DF67A5E7A1656CF2F47F3AF
-F3DD50FFC2FCDAB7177285B29C17CA43019F62AC6FBA52D1493ED7C427526470ACC8389BAE827759
-4958908F517B2863B83292EB5AB3F57FFFB08393CA610FB1FE905D88A0A16AC395E2A2A6DD033D6A
-0D68992F830B2E1B95FE357BF672716E88FFB92FFC3D62945D1EAD22BC68C51EE0E10A43011DB94C
-44685A5C4576F6EF44CBFB45F2A4BF110A01657DB51FD499767E78058199B31DFD60813F1A344F86
-289F9378231D5B151C92385E3650B4FEB1DC91018EAB8474CBF69FDC1496A4D078D2C351C8196451
-247A9DCF8117E5B637371D8E22E248C64D999015C3FD2311E9950B8EE0922FBDD3D7BFF766BFE9E7
-CE0BE12F318FF2A7B5A9C6D00A54401609304ED2C55F5C1EAC3D4B38355BBD85D66D61636FA6E30C
-2E82829376BEC979A6FEEE040E452359768ECF90CC539A546F17AE906C76F14F86FF697797322B05
-1EB311A759FE260C1EEE5DACF383816AAF1294CFFA7BF87A4D9BC595EE8F2C2F86FEEE11AD959D86
-F22FDAF4CEC098942A57E57813A0FA99239E994FFF353C1E781D666B8928CFC648FCF0869FC68468
-BDBDA7D280DFAB8B0B3A4CA35B074B686DE8D372C61FB32305169A1A9912F6541DA16CD6316A6EA4
-51524757BE5CF6E820011BE3859FB8B8578C100FF029680E05F0E0BF11D33FE19460C85EA5E4C0EF
-28E29407C8AE6BE01CFA0D5022BF9FB01416FFF722A784DFC8FCE330EC95737A854471D334FDC58F
-AB42867A7B62836A8B56466E9A6C1247D46EBAFFB905CD4321970F59FB8D6FF65FDDD34BF913AD32
-2E68455C5FF2D23C1A5EAE687F259BC982B6A384D35440F7C693CF50B9ECAC0B5578CAEE87588B56
-2EB6B7F42034C9F2E545EC866316552354EB3728C7D26527ED75174EAF635E048B08DC5D23E88981
-070AD5641A652F2344956E9CF4C16E652A99F4A644D1787D6D36537489DA4D74E61B2FC4DFDF1D1D
-9D58F9C26C5EB63200526AFD168AC57D5611ADE4D4A382FC28BB60F9E7D626A6C67AFBCCD1183C5E
-3CF2EF210D0BF5CFA7BB10FA3887BDD4CD96EEEAA8F9219AA2F10ABC0A960C3B57C0EC0313AE10CC
-FF1F522124CFC8D2D49BFBB0C193EAFFC5B48FB3FF30B21CB76F0A4C0F1377C9223145BB0468A5D7
-1B9BC25873EA12E1C60334571C67385C00D0B570D3FFC6C7FF0DE62C183C76AEEB12DFFEE1459E0F
-C818C621B8D12FA1357E2B55D48935D70BF140B4CFFE8813DEFD479350B20DC2EB1D3CBB1A2D3DC6
-EE975D58C89D61FC50E6A0197DA9A586B72255023DE47DABEFB11E8AA02414C2FF6258A281219B9D
-DDFE41BA7D7977D0D6F18224FE22F7D4E9355FDB35BF7ED3418F4F68D093AC48F7D8FE4194FEB6C8
-0B9DC1F74E023C604DEA27089F98C3973FF9F4AD7BF7BAE601DB89B08D5D8139B95EDCF6C885FFA8
-B3E4B0477E7040225733826BACFD1EC4A0DD72DC41734856AB9FB700DF83CA2CE812913BD142D84C
-5C83C0B2583768198AF9E885F2BA74877A414233207234AA5F18840557CA11682AABDE8993533887
-7C6D404BDE4153C9827EB16D66C1D73A8143C8A2D3604FF72CE579FAA3C5224BAC48EA83BA848429
-9472007DE96466B5B29ACC7C03B05DCAA38A48BFF9F214DE43146AE4E04FA705421917F99BC54533
-F0EBC01849E396216B9F0794E6F6C6B61B52EF1B1950C0FB609895C3C55FF574163FC8B6B09E66AB
-AED1810E698FF37CC1F926B2CDA3B48C7D77790EBD2D514B6F385D397F713EC3AD3954EA9C846158
-6031D369E8B99E53408A79D64C34EB5A56DE8A67DE91837960E98A66FC04DFA0EBDE21DB003234BB
-78665B039D0A469A0221BD541AF7149A2A659C300132C14581EF766FFFBECBA8B58A5EB3F95446DE
-F49AF863A8113D17B2E7E6ECDEAFC3834D4DF900E3475596E86FBB4E2974C090DB4AD61A737D611D
-92B4535AC291C56AD8B1C031D2F9B505BB77517B737D70AB3723DB52AE2ACCD5DD2F617423ED3CC3
-9CA882EF41757BF7151806A9B8B0F312808863E3673FB54DE939B35CDECA7FBC4DC3BDF5A5F47D35
-E345916C39366C8B4F439CE1C6F1835C320BD1E67375B03B5DE18C93256F251761A4C8CEC01019C0
-68E34447BCC503B9571FE8000627A6B3DAD5854CBC0A2D69E5A8F46BC78F6A7B1422334EC7A98ABE
-FE9B83E01DCF3C6C9273B346F3240EA225AE4A4083CC7B0EA141A0773FDE940768358EB4B13D82AA
-304A1386D450C1C0C6A7D5A8FD2BD313F78F85248B5196241E31E5595F3BC01F37700A2DD3D4A0EE
-2DD01A36569CD507130E8F5B1E96CB560BB7DA15560CCADF3B2C9804A11D9E8055C9EC70E48C1D21
-3EB756A1376F2EDCB7189D78CD3D6CA5865537EEC31C17D801605EFD860B0B629472690588D02575
-02C6F7A75B9A1C1B397781329832CF3EC43C09F1559CD562C48FA9500295CD3B0A790DD3FCD4684A
-7C7AC49AC9BFFF36B39A9FB148BC28D37907433943CBBF0CBDAB46D3EA86DC8F81C859C52D15302B
-94A9B51C199B7104DEEC9D769C2634CECF8B700CE9C04152CC59C9326BDACBEC4312DEED92DD087A
-1C4840868D9F97CAC046581F762F75E8D24D6445370A3F1E0AE74A6478D9DAC37E7FA5BEBEC0A1E0
-81AF89C1BBF7F51E3E2E22C8C405E8671BA85F1BF0DF79A465DAC7EC07F731E00632E017D190A99D
-83E27E5C2E63D7DABBA23B2E88334C63721AC5A4CBC5D45F4C177259F34C2EADE01FA008AF65EBC6
-01D8DD16436D86AA94C99F3CC0A2F87134E73BF22F108B825A8963B49C6C685474AFE4A542C8641D
-C0375D7EFE9AC1168D9700459BE52D0DA399023E141969F25C0DAC4668534B6647EC85454BE945E8
-26B26DE6E3C4584B97A38E2B40A0D23481BCA78084FE80E00A71A790BF31DF468A435ECC88E60A57
-860BBCA3D65930186E9917CBD209C230E8F8255A7ABC7D3F043AE4D7AD63D9980BEDF062B7D5C298
-C40225B6D03F29A0339E0FCA02138E526F06B9EF47F5E7A8068A846CFDE2BFDEBD24F5A73A66C079
-18662AEC80B43246284FA4E2EE0D9AAB172B1E59A6CC46B801149D8C0DF6DEC9A55D8E1B0EFD9D30
-2FF618075944CCCB6831D336B11617107B0530D09885E5CA11A5F1FCC8D69D603DA16BEA51116D42
-CAB1AA1E4D7B9B4D79993F2BFE53EAC904FEB70B2D330A89780EAC10D12CC0C35B8399F218AC2976
-E57A26BAD20CE2FA2AE2363D3FD2A8A971747556F2959DA74A8963C20B504711AE1CB0D0C02457FF
-2E9BF696B159AF031DD5155F21C0F5549B0471A3C5DC8918B675CEBCB23E29322B959ABC05283A70
-2E878DE8EF25EA760F3C5C7B7B49D398283DE2ED837FD59F7C22D62C58FE4448B1049FDEBFC8787E
-67D7DAFE9774979BB3802254DA59BCC0219F98C219F84D995CA768B8B5D9D4A32525DFECE003675E
-E4BD5D8DFFC11025AF2B468F9207B5B2B42349B98232BAC0759758C1F4A283405815BD7145C93FA0
-8F3ED2826655053A3C2559073D8ACD199DEA2C5BA5F616A2E48548B4370EC73493BA07E197165DCA
-774438B0766867819C1154D1959FE6E01E6312E0AB91FC2E2BD240FC8652A2D456A1DE7F34EF372A
-53794D4C4E050BF3CA5B7BD2F1B8DE93B4C8002485CB219AD2D029739FD3C81CC6E78EDF38723576
-1A57143EEDE5CC887F282FECD261F6A25D0A7E154ECDF5DC38E426811BE86AAA458577E5E0C5F0F7
-5AAFA9C41E5D1DC9D91ECD79B514F8CDF7A5F1A189470D35FDF4F9B8788879CCBD91B427822ED658
-389E981E0EE5F7FB87692A3E3E931DF8A1D1573E3B0166204240B7080089A09EF7487C9AEE2D665F
-5A82F94C877FB5B0DC531CEBF1E71C6592CEA2401E4B5122E5091DF03D203DF979B9A6EFBA12E2F6
-B422FDF15D49AC0914D372D21E871DE65CBECD105FD4A3E4714B9CCA5C6803FA39DBB015EA8A88BE
-7913502E562E5B170B87BFC8572DC9DF49AD63694311EF1334444BDF0B4CA3245271C1F7A4D7FAF1
-703E3AA0E1EA8D5C6E821B28707EE0C9B4F22F23796FE87356C58AE2CADC191F4C58E1FB58DA03B4
-5A25AC95DBAE13A293474217BDB214742B9D9D6AF35F70FED2891942EACE3E625E55FFB820543FBB
-250A062D3D395BC0F219ECFE0D76686AC148BC41476A887BC494DDBD396BE200FD3E03CFA12EC9AF
-6B934A283C42AA05589AA6B4A8D16946BB51F50419CABECEAEC5AEF9085C9989289E9B46BAFB6FB2
-782D84DE2B068F91A9744AAB237CEB1BA513E57E4C307108E993C972A3E0A898D5A8D27833155031
-FDB98863C3BE7FEF3004CBAA5CB60A1F2E3EB4D7290FF5FAFA088B1CECCB6CF51A58DAAD998F0839
-6CDFD68F5ABC9C1CCB8F6514107773C69C26873E889D1F79D10E866910E4684186FCD71C965ADF62
-39BA3418B313A27AD632300969B6F284519366ED85E7CD968D64823F8C59B5911A72D0A20EB72B60
-3A61E36F52F256FFCDF706B4560B4DFA5D918FBC530D83A4B3C01BDD3CB4572E24242D141BF9E775
-36693A0407D002E09CDA5B195BF1CCF430AE9824C07928A050D0B460F2704BE8F9E647A4884C4567
-0A81EACF7CC038643EB0FF18A376FF6F32B6FE4F197273327FBBDEC6443A299CAD4B26F7778A99F6
-5A11BDE047153E764039EDB251936AA43DEE50DDFDF8856519056AAFC4C5AE6F2051AF0579A9ACD4
-1D00775D7DBE70022CC263DCA5E0A25B9C7C4F5C418587666B2FE24816B1E0EC92F9074F1403BB83
-AFC3F1D52CA79C387BDEF864366E34C90BE52F7AA09935373A07E4E026224E76F9EC3CB9E7EDE50D
-EFDA48248D61F3CEC880A3B8843306375D9711E58645F3625BDB8E87052DA67F9794EF4AF8DB0BCF
-E00677C3A26907DC651BC838C40EC39E2B5A5DC0DBD345944A6C32226089D63C52490FA10B215AE7
-03CFB663EB8A47793B84CE7364DA1C4E7FCE32DFEF09490121222774915BA59C78C2275F829D15CF
-4D8686B095C38C731B83D48738C25F40B8ADD487C350A2EBE846C3916AE384CB1050F9F5DFE09FCB
-D9129C6270FD86D55A459618FDFA4F907E6B4746196BB717865AB378414029017551161A52E9D24B
-E4F7EED553A927933D4ABC8F25DF607779A717909CB4D810DE8F5762581900E224E4B91598149BA4
-71CF8068ABE8744356B261600BFCC57FB8BE45036CF6571D9B2A95304933BD4F17215F8EF53F8E08
-1AF61FA7F9583C34EB5655CB0ECB82246959F09091F36989EBDD646BEDCA614B9A61AB7696B3FF18
-1058A150FA6EC1BE2EBC7F64357A3FF2A2B0491D2F4E0B970DE5B7788B467CA678039B5EF55C88A3
-84578D427FD2CB16C87B0BF0A3D37CE8ED43E0F049AF2436344D5F47C948C632C94A287509282561
-6C64C5D262FE5B24916FFEE982A69A6CCF888BD01D62EA591EEC51F4B7DDFAFFBEEA93FE08D736C2
-0129E345D06B10246A5F57151C198D407730713F32299638EFBDC01367E23EB59AAD42A83AB41B43
-2DB462652E29813740F4680A5D4BD47B18328FAE6BDF4200CFA4CE3773809B45E8887C9B2E423698
-9F6C48D64F5986F563D9A7538A8716082F81936AEBD0461E6F4BD470436D8B7656F0FDF89108E6DD
-02ABDEF907731D458D690BC608EA9CED09EB1E6E64C0790C7A2378201CE997FFE0317679EE1D4EE9
-F91157449323E53B4ADA8096CD628B5861BF794543A98F2FA2AB54FF0F25A13DAD43DAF9394329B9
-5AA53CA32749FECB0B2BC035DD1EBD53FF9FB5AD8BCE06CD89E5568091C1CC314CFB1D9821D7F9AC
-7C55F55E0A16E39A87D43148201B928F3C42B110FC056189DEF183745F3B637441DE8BD4C3C7EF12
-F4258E306B2877ADAEC63441010750DB4E6269A4C78A0AC01BB3603C386651FE814031CB5D8C1F14
-9EEAFF652A53E57BBD4C8C0CE36A84A319A53BC1E5FD3F1ED1EE72F4C1A9BF264B594062FCAFB22C
-C1FDE3F2E3D3C17DD3F7FE0E15EBD812D550227C06D01127385374A11438ABD50048E17255FCD2BB
-85122A6FB9B7DA9D5E9DE8A747FAE0DA45A1FCEFE92B9E70A5B2CAC668D4D07527A5C1403267D823
-048BE671F725CFC7474B44FC5AAA348420B2D7C23C6CA066666FD6F2208E329878D90CEF1C2E77ED
-22D3BEBB9D547810B189F08920A27E7107F208591A84D463CE2576C70C3DFE6643E4EA93F4E1DAEB
-41D46F0E2F56FC10C69AD5034FC9859D31CF27A3A1EE256C93111F81C11ACF1FC0CE20B90BAC9AA3
-27A5C85A7985B951519FD4B03C40BE637162AF41B2FDA68F0D1E9B7602FE2659D3D75955C579AC51
-DF6A552EB9581AC3F712F083F19B52A6C4F560F36C59CEEB0C996AAF1728A2AA45DCAD79BD7B23AB
-388D5B0B64A2B95154B6259B730B0F4A72C8C7F7CC93C7D64D9D8810D1F63FF8ABD4DB89824E2D26
-4FDEE916C41E299211DB1A53256E1DB5CDD04862F034D9404B73183A99D3D13D642A663F129B6D16
-7095BEB4EAEFD03DF2FF2F0B6B594C1EE90FDB203DA89FACEE23F1BA3901FECC75FE1811BD701259
-343011262B6A0A9707AAA6316BC3C17F787BB80AC8DA5AAC942D90F80C5A3BB59E47EC767244AA95
-C63E50BF809998957936D3BF6ABC24B0A397258F9EB4DC8F65692CB023D9091FB180C69498CD0C08
-BBEBADC84A7E0016E8F8BEA325D924EB0DF82E75D2CC2CCBF039B11934363D4332C5FBC5EC556BE8
-5EE4E707CC2753CCC43D2ED50558E51A104221C9323CDCB0199B7B83454DE3FDC810D0F362C0299F
-5DD981B31D8E3DDA284FEF9DC8F9C8DE138D3065437A7FE8C30572AD06D62E8527AD37AE39AAB0B2
-25F76A25F6C6505241ED73BA494CF923E919F688DDEBF193E188F8C4C154F21631080763B4D091E8
-AD1D2FD6649E0CD9360E8D1A67A5B5FAFC67547CA31C95A5EA8D4EB5D68B9F6D6532DB9B54584735
-9558542A2AE58C09F3BD2918EFBE1699E9C8F2C2A11EA4D224C726D2ACD4A8D8ABAEDC6588CF2AE5
-66528B94F55B823A2A1F7BE19000F3E7579D094E047075DF18C8C868760295533B26EB3ED90635B1
-29C17ACA679C3E88B06998CE5A7A2544B700229F5A6A504BD3E45B276471959C8A3F81917A534287
-39B5EF9E3D463B3BA7318448E2A3E79520D2D245A2A72F31FF7070B6E4624E3A5E216BD103640C8D
-F387E49D732529C611F8B971073F17EBD2F6EB18F9B74A67E1997926DF178D4C9EDED435B9682F1A
-279C81BB9F60DAFE125845A2FF3B02979E5481C78A45C479BEFB9FEF3CE2BA9BC46C77B50B03E48D
-A6D17B76F06F3AD118371ADC69E178C52B5FB4B261C9311874ED07DD6D5B3226A005FDD7A6D53848
-09E7063F036CDEA41619122635E835D2D74CBB6AA9B38CAA4D819C26E95115FE0DBAB4198FC5838F
-2C91B7A87B07D734C6D4F4F83444C1E90AA9BFC908A2BAC4B3DEF9157AFCA5248F2DA31CA87BD363
-AC25E9E77F741D4B2C6E02F04987A6F49D30E9038CEFC41BA172DD675AED8B392164411144E5B738
-F3210B0E66B17A13CB9631C33D44484E792A7C082DD0A5382F34C5637653261B1EB6D2035B08B4D9
-1FA9AB770CAF40A103629511F7B43F2743D7E583433DECFB19C21FD4FD0AFCC22A4119E77C87BFE6
-FE50068B22479015BE5A9F06BEAB4D37412E062A45E0CBCD7BB39FEE747E96306F79FC4F2E8942DF
-5D9DA0E55AACCDA547DA19D30B8404FA121298B44C9CCE198C708C69A8D6BF17591C5C50D3FC5BE6
-961F7ABA8F366DAE957A1C3730DA4A5B4F035A9274675EE3BBF0CA8CE9D8349F50CABB1C3EA4948A
-BE6F9F143592F1EA95404E6909A909168E3279A957AE1924245C356331A75E7008BEE92BEAA304BA
-40B7C3F48F74D9018B3247DF50EBD7CE541DA48ECCB1B0BE51A455C3C13C279D4D8676078C3EBE43
-08748D52C9B041D3E7244C745B1F2F742D010A9E60695F3EC4FDC1050AC082B905D6A57E8F407A3B
-472F731011A5798965B7B1A307E252FE02C8F79CEEDDEB6E165F1A94D7FFF18DDBDF79477F14E9E9
-3981ABD200FE7771B29D1D2D120EE79D28B9543818527039AC74085EAFF241B56D08220C958B5D9C
-87C0C04A14D52AFD475B542D391BC54FF33DEF8D9484AFF6873BEED32DDA4B371112B523B6CE22B4
-0D1B416B64C9370F1CDF2C548F4CCBE9E12E21C36CC3EA52DA232DCFB65F66B22B5E2EC04852510D
-5E264EE939BB67AEC4764B87062AEB7F680B40BCEE04AD45C7519EB3B6199C9E0E332661463647F2
-FB7EDF303EFEF84891CEBCF0FAC5F723A9D0476C3F8C092604C87FC69C7A90F4D64AE45A478EE8BA
-2DF50FB93F55A3546123F0B0E2C1C40C98EAAE9F0F26B8F80FFE6E6B94B7E27D2884D58B8A119662
-2DF6BE608C5569D7864BB756DF2EDD184B90812B44ED4A32D001C31383A40AEEE9743651F7950846
-15C48E402DBC01C818D477EAC0347795CB2792E9C11E8FD4A02E194EED1C919D4598FEC003B6D9A8
-A0BC7D456047A1C0579453FC1D7CB2D158D466939A23D7A7B8ABED7E2777EC7487973E73F2266D9C
-250CE30729E3C5223AD93B9AE8443B35711E446A3DC660123ED45CE1942A1A2AD0610467E081CE2C
-8B92A6C82F0B17B5D2429E99F1A6268072C6B5AAAA6EB6283A872C54D3694CD825EB2926E57DBBC7
-C1663075E687A144E4D61C225781D80FCAE1497B442342B4A3F1CD6BDB50E31791CC3928C30835FE
-F845B6BE5E2D7E3F2F5F085AA3FAEB45CAD0D76BCBB1ED859A9CEBB9F7457036F0BC3F195CB1A98C
-9C8648F6583CDBB23894BC719D68C2DBD8003B10D08C8CAA40BCE784D7BFB4EEC9EA5359AC056E57
-B8B0F2EBCB1F4CE40C87FC7861180133E0CB6CE2FC4FE690756D327A2B5AE063E3021C0C0BD420D0
-56F0B941E6B36088A55BA11D0C35FD0132D5F48E5D9673572347171B4328D4807B972831C0D74CFF
-A5638C145B89C989E6EC942148207D6DB82257585958034D9F9D4221C7C9F7013790DBD130F277E0
-BC88BB179DD09E27062379ED06F25EEA8B7FB33C35861A0034776E3813D2E9E5C10E227CC569AB36
-CB2D9DF2E7B7B44758F9DC4FFAD7A24AC7E9F47AA850C221048C3CB35A37CE8EA75632AE65FE3212
-175146FECD6334AE3D3C5F492F067F795E1E8FF386BA198CB74F0BB4DC0000DA383BC4CC3F070DE1
-7721431988D69C8B1A5AFDCCC83C22E16A87E01C6D3E79DC7AFA3DB0371B0866EFB8B6F88900472A
-FEF1C4A878243C52D4E02E82658979731C841C489A6B97E271C4C93800EC7D91F93EB9B9C659A554
-E1FCE42A5EC65AC39190EF4B66DEAF6FC0569A000A9E1495F42F706FBEA4D32EB7EF11A648910259
-6A65CF899C2F322F5679C6D123469192A9BF1A7F1F2C81C554ADB97BD19ADB746A4F81A4D5559E60
-AB94C483DBABF6CE2F28CDB412D50FF3FCFA3B3DAAACC6A83CFED910CCB3B8D2C19590AFF4D75303
-4A6CE7F4156896A13808E0DFEAC547E69D3C886691728E4A35ACD575B40D721E8FCC5385A2EB28D7
-08101DC50811529528F5CB0C009BA7E3C88468E37768FB0D83895AB54DB2DD5426562AF9D8AF304B
-F6EDA54E9C92643DF926F5C3578269750120302A37CB140A18BA56BA01108D4ACACE8FEAE640A6C6
-958EF156B588ADB0EA5F3B0F37BBA12B7BCB221C811415387B024B7076FA4403A3AD6EBB5D9C26EF
-EBDB7ADE7C60B444AB9F90EA493B658B7767AE2BE649BDBB3FE85F460F1ED137C61BD95F7CD3D8B0
-15CE45138538930AB62AA0E54B4CE1A5EC5FEC0A2B28B345B67089A4E4AE14D2E1F5A9C8848DA688
-CA298F93860649EC3AAFEF3E820D86988C8E3E5A4D4BB937791827994AA3E81D0BB3EE115EC36D5F
-B9A392D09E79AF514D11C7B3A03C9F9C13355CE79E119A19177FFDCA34704D38118A8976D1EE5AA0
-2D14FEB1414419F5E85244ADC5C0A765A522EEF36170064BB19FEE3B5F7B441E4DB967DAE0BAC2C4
-8FC6A836E0EF5A69F073BEE1699F55E9C757EBD6FD8B514E2B49D6333815B7DBD1E0694695FCA3D2
-1320A0C4B852D9706DADD8369A95FDD917328BE93DD33818954DBD2C212D2CA81560ED5BC284EB04
-7A5F389E24E43F4FA8C97FECF46589FA7341076555CF55B1C21B28E0C1CBB00AB8B6F67472F27BC0
-D11148F407824B0159B5188D4BB7386FBDBF1C0FAF34721B7BCB5C0FCB7C4010DCB6A1284E9D7883
-9E3C2111A05D29AB7997073B590A81C6168020F1D48951BC7D8476D5BA593F4F23CAC1F9BB0E091E
-84B4E99E5C584D1370DD12DEE8DF16AF8BC6B7B23E2FEABDB7F32779AF8E2B5094A6E9B7A7225F24
-C43A8E5D2B977E1E19E633C26771E23017ED233DBB02C64F8CF03992C6484528D0C8464B46F24F9E
-8380F385D5D01B8893C67FC103498983CF939432AA380CA576D09030CD52FD99BDC3BE16C7204CDC
-3365BF76294A83A1FC14A236F5FE5321904E779B13232A76F8FE521F425562678436359C2461BEA5
-AB27209541F557AE2AA60009C9CA0A9FC7898C14306CE35A50017BADEFDECBBF94EE2905220706DC
-806409EF87DB1D73EAB0698AD2DB72CDCDB293E7FB13C94D9FC87E74502E6927A212F0D7D2F2D194
-64F7A66AC07872E18CB1DDE8F11835DCBC5C4EF039333FFFC0FC1456DAADE7DAE3EC2EE0D3415B0C
-ABB69FC5006F4D14A4EE1A5CA99AD4D5E629C0DD1E0F097B5B93DE2DD001A8C418234C9C45E8C13D
-1AE04E9466DAB8CF1ECB88A4E059C111A6468D2DABB90DA79C7C79E94DB28F6968B1A632F8C57D9E
-565FF91C6916026FFAC0661856B9FB8DE9C81661816221B1FC159CFEF1751E7E403F5F2CE32529DD
-540792FC17A12A3DCD7C50D38EEAADBD10ADBF5D8A82442AA900CE6150EB7A4639DD9FB6E385B2FD
-093493DCCD9014B23EB172E21AA89643A6CAD1093343D85D81261972DE0ACB16A4C6B5F0BE4C978B
-FA12D3CAF0134F9EA49F6E9687C8F99A456745EA252F0BA9968C7F9586E3DD841AA92DC7705BDD68
-2DAE41518A09DF0E209F321D7FA3417202F4BA76A984DA3ADDBC58136885362F02F0A24EBC439B3D
-BBDACFFD8498EBD29F88F016B1FEABC10785438EAC860B554525F3266097A675299AA0967BD3B7A0
-EEEE3FC578D1BE99D3533BD91571AED904BFC9DA1A1451FDC5406E1CD614E0C7FBC733563CD6CE6C
-C31E9237CA153F1F0411114361D731636BCF98555ABF12848AD109371A42B63675A4130B81E97C2A
-2EE2BB5D8FAE2640156001AF0F55D9D5DF8FF23C8AEFE14F120000F14149A36E5C94CD9081DEC277
-C2C34870D05011F99D48B0875A5FF542F067F7E9880109F586BCF2B50522A1F23ECE44349E539E70
-F84E207DC9BEC7CDF856A046F1A03226AA41F541719AD1AF88FF211E57DD0C1275DD0B7B47440DA0
-89B98C6EE92A7D94700B83CEBE19EAEDD8A615F6587587BA8BBA3CE3AA5E8EAFB1FB0F486BE3609B
-169EFB178A4292F4C0378AFE5D24EED1CAAB514DDC66C696D8E37F294A6579131DDF5488E9436609
-ACD750C3DB0A940C84FE022B22ADC2676F62E91E8F891225F891FBA537679B24547BBBF35F04915D
-20B11739F620D18B5B216921D222F15044368569AA302980B9225BB839F494588481B94B0C724352
-B2DF600A22B062561D86CB8F81514FBDAA4F8A043A0265F992FAB71FC9124A45B8475E1EF3DF6B6D
-E35CF329777D45F08325E8505EC0D979F542807AE77E57E453525F23BC59A50740371EFA98678AEE
-6C425374AEB745B99DDB5D8D908FDB551FBC0DB15832107BBECC4E11A1A8DEC69358A574A2ED46CC
-31D564549EFF23102D92BFDCBB2BB985F78F36033E34F59C0EBAFA3BDD71338736464CEFDBA91398
-33995EDA4207BFD4A9867D32E867FBEB7DE60D132803EF9347CB17BD91315484EF6570892297DD8B
-7D966103339535E28A00CB1EECA4A9775F60A9F5FC9BD8B06D78FE8E6318C31DA2E847E3F9CA587C
-B01AE2BA0A2EBDE308314413F4F230A758184ED60D4F71F6CEC22A93A01B6C54E0449A3860FCA895
-4A347B7588329A80974ECBECDA1070FBC055666375229F13DD995E99265DF870BC8B8CC6347FADBC
-1A6AF64599271A475B9123493D46BEC41289BEEB67EB97A8DED7A9C9730D37C65164CFBDC22E5CA5
-89D2E7954C7136EF4E084C43A6C7F361A3E96989239BDDB9A593CC2A80BA16DE9EE90E95CD39393C
-212AB22EECB677FD36D34DEB46C4AD0D21BF7E6D7CBD0C8083842FCD87B18FEA7CECF939987E99BA
-34C214E44DD84C176C9CC5A4CEA76D380CB316BB4EF9DE73D73B4AFD4ADB54451591DEF86621D138
-D5A0A29441502BF6C2ADE671CEC3CB5CAB903A657EB2D70C943F976C110E46C5D9D29BC00A875F27
-38E5D22496A43E096E009C5D3CB724B4CABB32838DBE527F83B18CB457E57B092C302EE557FD4F00
-DB9C56E66C9FDF4EC9FFAAB85F60D02BA79694FABA476A199A0331C30A78A92E10417BA236E23364
-8174C826331DC1BAB87C5F95027846130C6A2B4027930EBF9A97BA1B039D386FC51C302648E25980
-212F6A582CDE2778C677A01FBFB3C5D1B8A374ADAF6ADBF7DC94075F25ED66D440B3922C5F255FB2
-3FD8F6E21EA65B1D93BB225684B50F11310E242B087575973345B229BA62C1E2C35BDAEC04D10148
-F5B2F3BCF7399BDFDF1F3F79119714AEA697245BC647316EA157484ECB951BE367234FD02E8B1F09
-1AAC3D29BF282DFF4011BC0CBA8E55234D943DB3017CC7A766720BBC29B2D097A956C0F1067177F0
-12D42ADCB473CDE8D1BA35B4030757FA1D8211989DF3BD22CE5D501C21EF8708FB3449DF47D88650
-9FF7B59B76C0DBAE443F336FEE2D615D7EED1C284F14335BC8A26BF4621E10DE9611FB2F1DBD52E4
-B7565D8C65B54EA36D508BCF0C578A49A2665227CDE1F9768EFE847F9D94F1BBB7DB83701C232198
-5C7283D47B2E40B27A268428AAEFE75F6B2F8764A8494E5827573758CB9CA46FA93208836BCCC8B5
-564A69F5AD882052AF1C1417C3FA7F580569528682C77080F3688B65E7FC24D2A3AEB61574B4A321
-5927281544DDD7A6EE0A3E9388F8F631CE7251724DF70726E5912DDCCC8C652DD6C9608F8462303D
-867F589DE0F2F71711B35142EE6EF93B64D6326C4DD7DC83278E057100EE772082E6BA368ED91A55
-53ECFE2293A481E42F83BC8F9148C70EACE91F7B7D9CB8A72415BDB3AF66F68EA733A17ABE9DB005
-3BF148629132969589F38D30EABFA96A01FAC72650B5A6FF3935670198A1EA33810A9B11E330EB8B
-451F24F93544263436F669AB5A90A53B16CCEEAC36B1445574EFA7E802DE73522BE725E68704822C
-B7D3912717333367895BBFBE06966A5CC653AAB5E9B3596702086BF0010085B900711932A95ACF15
-CA4DC45A754EA334E9EB84D6FC8E3FC4F897456BED64BB93B593549FF0D5352275D8E417172A6664
-C5E0ECED1019494A7ED49AB0B965BEC1A82E5873766BB38D7D856049CCE2FCA65AAF61E961B60634
-E2A69EF059754C9D8163D87F928C222772D070D83FEC6FA5AC734AF65E40BFDE521F7D9CB1650FDF
-64754BFF21EA3FF0AF7611A93D525EC9B28C51AFECB04E7FC8323DD6C9B0D8539A34FC3CD8CEB795
-8E8EBBFED4313C77ED469C199552A9FF70BA5423B03B6148D4EAAE17B71C5B39DC436AC53D6BA8A7
-AD81AA8B02335A8B2B11E9F4FA913159A725B8AB60F52F1A2EA50EAF4D56656E615BF382CC68A690
-BF83DFF24FE986570ADC0290ED1A37C1C2AD469CE789E0EA0BB5CE01020100E729721AF3B5BADD33
-A2DAA6C33EB8F9064F5292F715F820B4BBFDD56F76D42E7A1A068C1CBDCE4640082F6E7D582D1939
-990CE6EE8D270015A2C461798B37DCB5798EE9F7512168B76D26C28BE4A49A1BF96C89D235F21A1D
-B6A96E5DA474D0B19B808D13D7A11BF39EA8647499C410ED9894A1ADF33D41B6FC2E614D8087F4C8
-4E437B136F3CB32DB8393C49177A0675A0C9E7EECEF448A97AFDBE840FA01FC7E5F2E8FECEDC1884
-84C312E8635CD79195475DDBFDD4D38D5A0246DE2C7F21608F8D2C0DA1371D302E941572E5792A3C
-F4E51A33228B93A814D03FD4FC223C314CF3714BB3A34BD4F7ED6348577FEED9DEB082C4049E57B5
-D3CDB7F26629E9F3BA36893E09E3C7463D02A22D7056BE76B87763260E46E48BB832B7EE13F8DC05
-37EC8E81E9BDFEAD8C27EBDF1AD706933EFD11131E12814F236EBB01BE85B7F1B2D627413B324918
-D247604F56EC128909873FEC3857028BEF76A3494364C2A7002D104D486236C30B48E2B75D851C34
-EA50BA7FFEB4E19190898AE21768C157C0CAC628A2181A32796FBC1A7271D2473CD88E5395DDBDB1
-FC3AA8DF0F3D588637F19A8B833AFDEB5F655A8838EECD684E2315B72C75CEEFBCEF94344ACE8D6A
-DBE355008EC72FE7CEEAB01363A895F4E73F867639BE0A0BE67333848816B05B419221BE8F9066C3
-62C23FE85B7F392930BFE4C12B9526FF2FDEC38F23A159ED61A0718E7115C24597D849FA76369153
-54A40C965D4D72EC94DA61A03766AB39AAB684E134FD1407A5B1B19BFEBA52AA0DA5D99CBE5C82DB
-AA663711E6DEBA180E1D4A39C320516A4350D296BC19BF1BE054859A0889C7E9727A021F3176FE62
-0FB0C837E4141FECE531A950C03D319E3255703220B7185BD20FE5DBA673F8129AB211EFCF36EE39
-4C7E00EB0876624BC840FA86E58B2F584754CB6BFDFD76810E300741EBE4544E5AC17413ADEB21C6
-2F66CA4F075C32381796BA709782DE34A675B717A2C7F6D88104CB924FDE5DF775B4F0B68E0E2E5C
-2F788BBDEAF06D8E1FC2105CCBBD5827C0B03FD6CD64F0D073F3192D5F94839644E5EC6C5185BADC
-F04112A65F49A8C83174A9AE958E76A2F5AF469E8B76C833782C5FFB8BD7B1BBBB3EA0CB7C9786C3
-BE2ADE5E7AFA8C8F20892659A59BC421E28845A108E34EE17864042EF587A6D67DECDFB3F510EB40
-D2229585347A0035670FCC76C2837A4E4D68304FE113C539B35C1F0234B5079B8E32934546982978
-C5E4DF955A454EA263C3CA5D7101F31A318D82A3F9FCB5A8AFD7A65209663B0FC9DA400B26F285EF
-46D0E1EAF8ACB1F1CB805E3986D04BC585073FC64895E4DAE1CCB749BB439CB32EA91176D5C39C36
-50D10AFB9C9884D5FB90183424CEE67EF2175D01D2478D67511EC9F54F88763C152697B06D948BED
-49240096EEE3D06AB4575E8E8B2CB8263B5BCF4FA1608720F52B675309833071879DF52C3EC2871D
-20F398B5CAC8F8A4D41D0F1D47584DD90DCDAEA4A1CF160C4B3BF1AAB890B5CEB6CB3488672AA68F
-BD938281DBC1D8BCFE92FBF514DA5358443CB6E0147254E91B38CE6787B2BB0DEDD2D38F5938737A
-977B5EA42892520C58F8FBB53C994B57382379E9490F0D6970B980E1BDF8CF9F4C3C5E0A18F66E86
-EE93FFE7FE546DE50F41364BCB3721B637072571FA1779F1D672FAD260C16D7F13CBDF3E4376E7FF
-56D2A710AC5AC35FCBDBCE2C9C17E523BBE6218617B13C1FA6679B308979AE7C61DA6E68369324C6
-CBC7DDEC364E5A86707266C0B459EE7B2C03FE584E529BFFDCE98C90A2F3D9305AA74D3ED8430DBF
-3A49FE2ECFD9C4BC9FEFD22618FE9C8A973AD072AB6F713E4DF02DCDA7AC5359B2D652013E131B76
-B3ED6C75FD53BA58D862846264627F6B9E70D8800F6D9B32242B747A67BB2B45675840D34F852AA8
-062FA6B01E31ED24DAE02F6CF788A17F7B9368175195DB0072259CCE0FFB2C1035C1D26E1777CCA3
-D56A827C3242069E76D6DD69B653768614B9ACFF16567FEA61508D51454BC02F6C60F755AEF6AFAE
-3536BBFA1823F8E1A53C41124DE983E51CEC92AEF4F99785D554488A51C20885346D1F761DA79017
-940A0C557D93F1DB6B3D00FFD61D08E96FF3AFCE5FEDF545CC9F47A2B1BB26713431D6D1E47FD6BD
-6E3C668B0368241F0EBB5FA9C991DF79890E52E83A3675EE699B61BAF869DE91F67278F510061C6F
-E41DE2D883F48CD0E068E2A652B244128D82E5CD52F35F210DDAE3054691ED55A7D99088AAE8FB04
-F525C2084AC09F5EDF80A4EFAFE981F74C0DE9D194320709B3464F3FF2C0F6AAEA6D973D9C323F53
-DE3D741F698FBF01036716BBD62957CB32CD81D3A2674560FFBC5BDC5C6E4F547E589AD0B1CFE14F
-5E17FED1C4A8ABE4E67CCF8A49F32C4C6044F1431E1CC382E7758722A6D0DF9ED23E51F8AD14D11D
-7B6428E27443715EBA4E9C05D6F238378F9498AEF0E7EE4FE6856622CC8E6ED141EE5F109E343CB6
-695C4BE1E0F66601C27975983BF557C04ACFC19227A1AD7E6C44C00529FC7EDD7F886D24B7E029B9
-C395260088BBFB96972199A7B32796D27257DE83A7402291C14FECDF7998C5C96B1EDADE0280F856
-8A8F5007852EED303969180B3329917973C2D32C080C9765B6BAB0673BC7ECFDBBFBEA980C263843
-39B7F1052591D91667D4FEE413AFC23DE2D4B9DA742F4269C6C939F5FC32A38040730A018155AD73
-3F231E4D5B9D01C03A58EAE7B5F590CCFAF25EDC8552CFC8D95C60EBAE1837D7A97CA137E9D4A4BD
-2CD34AEFD68D64B3F4F62326AC429921D7FB3C235184FE0899690A0B775F1A566EC29D5830D32372
-6526F7E7F5AFDD71B77E07613DDC4FC63EDF49051AEB59E6337AC0A4B6DD872E776C9CD0CCB86130
-5322D816732124F5978A86C186BF0A0F88E733CE38E4D7C1BA5378C5629B1EFC97806059990ED42C
-5CD183BAD7E94070E4058569DA2E51831FFE0D080301AEAB4350BA290318AEC582C78D05DD92E5AF
-B4424EA808629BC972E68F4FF2489C245593F07555CA6A2B25964794CF31CBD3AE5C229AB9B8C298
-06C01D116EBD0FF0F159ED2D3D7DFC73EAB4910BFF5B0B0B587CD9EA6E6FC45D63C09766224D8346
-1F0588140B258B1729F70BAE7962189B1554483392988CF230AF4077193E53330519394DD99BA135
-6D4730AB221DC6A66019BFAE564893DDAD7B177DADD16ADD21D396CFA6C3DC818052E2F71149FD59
-4A16DE0C2FFDD366C99B486C55A6E991E4D22CCB15843F0C3363676AF2F5B2D1B7EF66CCF2F12DC5
-0D63776BFFB058D70A9C76DCE96C754872D72C82A0C33F90D49C935402CDD26B6D743B1F43BED5D8
-B539424849C1495DAE73044E885A7D0F307F1816DF6244A6F2D97BFD4E200E93F69B08AF39EA21E6
-E347A47CEEBF803F73B978ADBFCF056789BB8E6E2563DE87DD9A8C877157B934102DCEDAC54D487A
-1BB2694F0034093C48F10A17D32E2BDD0C723CAF59ADDD1BE373AF8C9BEB4415AA5AF36310C31F24
-354A53C0B962573148BEF91D994FE3F3D8450DD4D686725799F53C373A0A3E3C060C2E1A3E800504
-9F26D716E1F381B9F83125E4683264A07E2D8938F605978E2513DD2050B3D8A1012797CBA8961632
-BED260916338A812AE751C7B657E086A0C7DDCD3BFDDFF3E48B84751925736D1310C4910FC114387
-F3ED7FE163F91895EBF55FCB425CEF5729D99BD8F2C072E36C310523E75CD8E5DE49C031C4263410
-9D56E91A46C8C8E89FD92012A00C33D0DEC52597B5C6933291A7BDC5CEDA95DCDA5600F9AE1C8250
-54E7EE1067458CCB66610704C58E4A4FC0CB5FC933D0322A716B2CD430A3AD48DAB3D4CBE9D23F2D
-092368CFC4E1F5495C133A92942EC62118D45C17723646E69407B4A89DCDFD2AB3FFC099A21D9D29
-741D68270629AA3A414FE58658DC9170C247B6E23F35C4BC5FF83009F462F2EEF4DBAC5FD158A658
-57F9B6DC1F5192DFB169DCB65621CAB2F1B07BD22F4155A8E9E2B6388D430FDE5EC1C834D22EA035
-C52E1E34482EADC36B4CAE902AAE89A7284E62B3C84B608D6BD05F75BC31310B2DD3B2C08A00E073
-7F104F03A41989D5F6B9A2C38B22F1D1803EE5D7A4D8DE44E4ABD496A1DE0C0E12C4BC96D0122846
-3F0EA9CE9509FEE987139F3DD3F9D0DF4313F555BE85433718F6D05F197C41A9D9C7A8B0D2740196
-82D49F58DD5F66B12A6520D9F226D1DF1F1B65CDFA261F980CA25A92645B86B64606293F8BFDE364
-C47D2AF2C709BBE77A70A5712F2CC26F3D66F5BE2C307A48E6F887F681D30121E32BBD87271B5DC4
-615D28C309F15AD263FB37424E56DDA6E17B998B45BE6C7FC6C28E3394A8764C9EB2DF5C06626593
-B5C665D550D4600172791CD208AE9F37BC082B0B242B0A504B751B18F4D7495172B697EE217834A8
-A4FB7CC16D6F9E8BB400BE8AEB0850960283DCE725249FCC4DE97D9886745AB6066C3E2F64DD8AB7
-9AA11667F11188D7965DC11EB760B772E282DBF13249F31986AC6898FEBFE23E3E8B8D2C33E00EA6
-FC493850ECB2E6D831D1EFCA3C2EC8EE2E394599091ED58BEDE97D7A43B6F739EB0F845EAC1DF6B1
-EBFE876009CC5D804B15ED4B56761B3CE1AF59C07B49DC798A44532297AD73D5101ED47F36A3678F
-818297CC27F6AAA2AACCC9AA9B6F5459911D8C56CF499E390AE607F3790450B2B9C9BE0F006EDA0C
-715B5CA0481734CFB0597478E7602B0D2C1E4F78F03C68C17C70E4B42D7D2D3C95CF40F73488B371
-8E2CB05A549944D86944D78724E266C3319AF89AE430E777E95F0D792B1C654306E421F3D63A26B2
-1E74B6E8B21B2E2B9DC596D013CDA16D08E65E8F24A84B12B2BADC653E6E1110DE2E709C1C1BED13
-707B70A421B384F20CA7A9A9D20324DD383F28B2D3C7A9C53F5D4C6B7C378D26DF11CF55238BE1B2
-4FA70DCC178DAD3D35670FE4919085EB1CD905971D76A368FDFCF9D2F0A23739851A3A6D2E02D65D
-54DEE69ED5D81315D3EA5E356F94EF256DD267FD1E1A9EDC9CD63E743F299BCC4A4506233B8DD765
-2CA067F741603F93250C087D368F9E9CC4CC1A6DED567487C05BAA992B0056A77F630A72008E3946
-15A9DB24FE56A956650EC9DE90A6C2259189440247970541CA198748928215C0E132A81AA13208D8
-63C1FE817F70CA573B54577D10B73100AF8EA088208A44FB92ACA314AE5879706180788C17BB1D0B
-81B6B95A1C4E0F9EA66F9B39BFE12444A6446691A7BDB03E0F03D9F07A10A7598F2166F108529F34
-CD90E601FFED3479ABCFCBDE8F051C348E48C61D95B00C59EA1287423F05666C3D36288844067E83
-E14F6B5210842C742B89F13ACD126B9FC50ABE2CA7D7ED513D43B6AC7F41EEDA416BFFFCC5C844AB
-2D23D4DC09B2D510504CE98D02E72020D9E669DDAA344C63A1B75632F912A1C0DA3885DA4AF7E243
-E4A4C6493D6595BB6D56B0359106957259E59E336BAAF35BD1CEC5CDE735272EBCCAE8D4904AEBD2
-B32610C6FEA2B69941D6542ECB44D71092A3CF067708A3D087AE99FF29671AB7DD8758759B971A08
-AE1BAD78270D2FBEE37AA2DCB119D72F6C7B0C8509018A70D0B0BE2C6830EF8E0B24B1CE1141EF87
-3A4D7DCC501F808BFD94E4DC0F2915AA023076BCC8006490A43685EA25AAFC187302EBDE7FE1965A
-04A5A398985D29F08E085127B56B057334D88EB638A4DDE64AFD204974C3939536B1B66A54B4DB81
-151853915718F70813F096CC1B0EA25E363B49264C2AD17158A4489F91453FBEDBDE15D7B74D7F98
-E81DF23251785D58295BA297F295AA6248A912CDD4F1111E6B628EECBB5139709E76EA4AB743CEC8
-26621D08E6BC64691CC90B3C3C1778931A28D3D5B1E20E96C643316613FC487C9B604C43463FA453
-3BCA1236286E6F5A6EEB2F1D9C34BDDE4595495A365F88055D9268541CF1654ACF478D384A5496A8
-772EA1402751A093582A6625A0A44816B5FDBE166835D598644296249B92CC90AA3FD6445C9A19BF
-27F59CB0616C7306070F33C7DF4E1DE64AC8C5BB2FFAC1EF2B1B30E5A0275E6004CF64BBE2C6710E
-DCFC3AA4ADD60106334708862FFA6652825BC84842736E47AE6917180365C75B27505EED3C6108E9
-898A780E20C3F606A860229AC46D0471ACA0187D6D539A1B8820F620F72B41AD1D3BF3834BF48CA2
-AFEA8BF535AF74C4562DEADCB63D2F5C7585722B77C989342D190FF926C8A5263B4F25286F99CF6F
-C62EE6E2AD61C82B29D82468AC10FD27764278E5558CE8B41BA111CB2F040914451A480C93084237
-CAC8F66BB7C6689F340B8ABF0150E06D5B1177278A4C08742FE22F42C28680F190900344ADFA486D
-59718C25D37275BCE4DF981AAC35D2C7E85C72A0188B8953CFA516FD545AEE0BF4B8BA301CFDE214
-4241FBDF3D204E3D2823301572E23F204C97305A82401660E12926EE7BA6EA1A81FF5C007933AFC7
-3266FAC4C134ED818A48E7DA01C71A46335C845F9DA5E960B25339D551582B375814148D94CFB781
-FC56093827B78578A73D4FF67B6B87F40CFA5E3F4325D9108CDB64BD06427B88C84105187316FA29
-90B4E3E8EDB6C78ABF164F4A9717D523794B2FE772A04DABBE688CCA977090979B5F47CEB90A1DBC
-167D305EAB231C9F4260C4AD10889CB785169902FC0BED78DA15B8417453BB65856EA0BEA5245BA0
-573F623D215F6C0CF801851C305B355D26B52B0B343645FE25C78A3526841EDA480919A1BBE5F56F
-C10ABEAA3E1FCCA7C43EE560F067F1AA2AFD642F769D1ACE8E2AAAF38850F0D757CD808C921D716E
-96FBC07DA7860DFA70CEAE2888C0ED3CBF9586443532B68DAED9A926655C157A416C383A53D8F283
-2A4E67468112A09ADC837ED8EC95F70852921F50D4417239FC42EE3624CA97F682745CC5E76CC7C6
-7BD99F2180F8C0B7FB49539C8CC474C25C0DDE491671FF329E51BCFA779346D4686835A3AD6633FC
-B5E0F67E0CA9CED8F215BEF4D240453EB2EDD6ADB22278AA5B985FA140C9834D38753DF2014F8C0E
-E6DAD19E8FC54C03C1F6CB0F858986691D99592562CAD95FA0A5B2ABE4A8B54B457D42E8C33A2D19
-51C0419A72FB94FDA78ECD92BD2A1416459E9DECA9469F35E4C47DB531726DEE8F203D7042EDB32F
-025DF3D582547BB1D45F7A5B70D317DF4EBB16E36B0D798E0932FD2A85B04FD67143E4B287A50416
-2C1F5A037CCD780088C5476385AF8168E12D97D44B0630621759173C8F1E3006B5B1C6D7138B7EEF
-C3CC5F54E24B2C3CA7B41AACFD25E554880AAF406EA4C3C6E21D3B550B040FB1952598A7E8E6488F
-E38288B2AEB6C4718338598A2BFE4D2B9D14C65732DA304C16FF3E1F8F03046EF095B65FD609DA87
-EC24A69278BFE65C905CD0329F6A486B8525B7EEA4F7AE56C2633CD83543269E8ACD6D71F500D82F
-DFBDE7F7F7B1AEE67328549232E26CA55085B6E84D9E2E7F74068F93A90C4654F2F396E57C5F76F7
-E61CBBE523DBFBA6E76638BBA3064DA025A79E3A294FE7F1CC28A3B4C57DD6FDC48E541A85534B25
-E1BC11B4F78019457239EAEFD4BE9007D205F1D985F389DB22400B279C10948551A6B4A17FBDA0FF
-C9428B18B43DC76EFB15FC2182216F1B60B4E344A03AD6C00F141EF99F89F24C819C3E32877A927D
-84C2D006940F39CA8B71E5951673EA9BFD1749923219DE38929ECAA9CE43B06CFA7DA1BBEDFDA56C
-61FF6C24F40E59B13870D5FDEB82D981154FAE5D6D5152DE69339359461A41A9713B6BBE47E868C9
-33CD74C75DB71D13BAE4DEC85E02FAA14EAD6C0A253B16C79514657B15E68CCFF9EE6AA385CFF9E2
-C53D9AE40F85C793E4E8FF50B2B7420F4FE69807BC5F37C3E300E6B3C3549D1D3246A2E70F091054
-1135BDF805E0A698E236B6496702D061241687B7B8D1A0E517DF0476DA09D89667A7AB375FD2672D
-CBAB8124E511502DDBD08BA04D941DF1CEBDCCF7ED48405CBCC33774A68C5212FC6F132641FF413C
-984F8B43BDFD7B1A2A3435F15AF07EF4970D3E4A0BB947C181E9CA27CC14A35BD1BD096875B45873
-8CA244F88C28728B74E25CB8C4FC1095A56CA75E4569AD3082EF194ADD11350DB3B74B96761D4538
-596FF7243B1E1B724716A144106E080D42036444FD472998460CE9ABBD05B42AF9389AC452BDBBA3
-A13A96890025789F16B9D92251FD3B3BEB2C61EDDB370A20456E3BFE5F4039E2557C451C524F8087
-015BAF3FF05F51869FB97512968BDB2B49589C1C7AF1E085250A47657465F480B7023E24C76731AC
-0EAB6704123D77977D3A2C4C56B691346EBE589C619C04515D34F81FC6A17527D5D8319013C5D4FF
-27CC3925E24C99231AC7FB9EAF0BBA482D3B75807AC85D03CD09DE5D9AE0B07B7A813F0449786500
-0AE8A7E00080300F0AB8C399057EDDBA273DD2E1B2A0DCEFAD3B332E6D4AC1FFAD846167DFD70E03
-46DAF84AF292D4F424256ED5AC4E104F80697050D50844A708EAC9E7F7784FD01646F3BD0C595CA5
-1EE6BD607D254E78ADDC5E15C3B6AC4940EC865A5C23105B6BE09EA09F2C05D6D76960A843B81EE4
-33977FAAC3CBDA85CDD2F4DB7C28293A77825635992AF8F3B38B4480D9A139B1662345A8ABE1634A
-77496C3F57597D2985E9E54717AB2E99CA35789441BCDDEDE9A9E2106B401D9684ADBEFE40D607F0
-75C179E9CC03E59E65430DB70B441D43DF03F2AA6FF06F224B6E455B01C64FB89EEC9103E48453A9
-749B4D602808C7E408A8903091D85E06AAF635D0D529C3CDD1B8479AC0F4208C284BB678A547F2BD
-77BB17C86D4560434F7AD1937760A6AA55B614CFA9FF8C9C96561AE6C8F2121C4E20237428BC51DF
-2099B6C49E3EFA18E6D439E6E6981E746EBB1DC461259D8EA0F8099C47CCA27B2D982B72C9A07CF2
-1B3C05D6E26E6E286E348B8944078E24809F9C5F3D014B4CBA02533F5621BFBA1F0EDB776C634746
-703C9F73BA89B1960A496420C68F54E5B901A6D733D7ACC79F275FFFB253F389AA480084468BB34D
-A1E797E43B7F6E8CAF5E8C93069A3A2730E57EC39B677BB73E3F07C2055599F7062E53B37A5F0099
-907D2ED87FF7A82C95FBAEB888033BDFD67BA3A6031A4CDC56CB1E4CF5B06B46E16D988BECCEFACB
-9E1C037023D7BF5CCF5D65AA66A17AB361BE7981F132A578F3ABFB97960A6034F052D9D5AFDC0679
-782EC90F240F943A5F9A3D969ED7399254FF67D89DF668F7C56FCEA1FFDCF20481474AC8495D3AF4
-B6D7EE093E369C057F0B70858220693B398ACF8E8143558132E4391405E30A73937C53402E459F4A
-A3539CF7A99A3F51C0307D045DF8B77757E92EA2F51BF0BB4F77D3904DD355665870C2B59F1ED7F8
-4FC71FDD7F0B6C5D3182DB77827CA6A2060D2B8C83C4EA4A432EF43A4D0A952CC6CBBE52A9F0CD66
-1A538973DE41FFE9C5CF55F2506B9EFEE51FBAE5E63BDCF5528499A47C031163C88D3022606784DE
-2F46A9C9235AEE3D4F71D4959B0CFDC5B7E78C8C0A8F9DC99440C2263DBACB343C5C648577F5610B
-50EAB1CF7FD02419EF3941C7CA0B0E64EBAD4B2CB05A0793DBC38F1946D44767BD287F5E9779C611
-CA0DAAA1E7393DBE0683C8D3455CDFEBC0E64B54B737E298DDA605227C0C4BBA87AA3EC7FA6EBAEC
-39E6EF2537D5974391D31739D9FC42983D81AEE44711C823F35F8E2321AC74943871739D2DBE9748
-FE68592263E7713F27E0D49B9B5CB7A4E55DE54E6B800D15856450FFD3AE5F287B12AE4F438B20AE
-9E27E6CAA00F3EAEADBE08432684FDF9931E925544A680182602A3C1997DE5D0630BD5A010535E66
-E1C123013D23966B3545C7431C39B97295BFA4099D14461004C42C85095EEACB9B47C593BC6DB863
-533A8619BAE09095DE8ECA432D4DDD49AA600D277E75DC3F5C6631E2A05382CB007825FADB77438D
-CFA78E252D79B6A196D5164C2FEB85D75ECA25FF80B1D97FE10E87960CA0FC47C41D3A213BF141B4
-8BC3AAA93FA86245064668394665BFD52D12C3BE4CE39EFD8111754398A944C3FD1AFA98EC337BAA
-AF899D35E804CF416AD7FE45FFF13FC6354007501043F98FE8428DE8013901BA6A28711A2CA85A27
-0BB135B72F1D5026E8217581860729E94F2F1878A0E96C59E9F62714FB5F8F25003DFC7347E99007
-8A9A331CB3A6A535BC61866F02513DEB982C4A13ADBFBAC3FF70A7335F40D5489E48E5EDEDEF1619
-1973D932479C62183B0E25EE8C4F76D4F1AE45DAEA4A12AEDD9EF81D248E8D19F8C8A5BECDD1EA1E
-98783EB7A38149170851B1942C96C53DE06DEF80913BFC04E539EC67C110498D15B78268853E5C72
-F485F8A27B768569E54241F6115875E2973292CF48FF91D45EBED627AE9F0766D22201B20AFDD40E
-5B17CF337F2999E0BD15B86E46EB3C18FC12B7DCADCF9DD50C6C7E3F37E615A892DB3F57E250A072
-A49F7277DD6A2C8042698233D35A699B17ECA5DBDA6D250ED4A16FCC893BF0DC2E33FB1EBD7DEDEA
-3C1C39603C8B7E1A5A833A8FCDD5570BD088749BB232615366687962C7E56ED089CD7B092505CAFA
-5A80F503C4CF337F07ADF0D106937E25670839D491F7BFF7A523DB609D126328C16113ECBCBF9C40
-04904427A108618AE5D4ED809F8CCAF72251104C94EC5BEE21F91B179D31DBA79CEEE5EC7FF698EB
-84AB1D2D1A624F58B3622A78844CE51498B2CEF38EAFE259D22C7BA61104651A862008BC1DDDA58C
-C45F663EB26428DAA85E7785363A69D2790996EF5D9621D53042F42F794962FEA46E46F37B8AD1FB
-76FC8D5CF2146843F8CC625139C75FB42DDA71A752BAC48F294E4C0C8289FC46DA5EFD9C91BDA6D0
-27518B7E81E8B21F755A9615627D5812ACA674D1527A1185EED4E3C628196E7D0759B1CAE6B9B7E9
-01E9599A65230F1EE469CD33B9BD9C104C44E3C1AB966C9678BD0AD78111A4E0F2D07A01A038CEDE
-7036D0534D684A1562A17AD64A00F279200C0371B1CBA61747671D2A21D3F9646CA290F6B82418A9
-6FA177C6278277504B7FBA936325F5FA124AB018A15DC18D2C5E8F93CDEEA52BEEDB78A57828D81A
-3E6C38B9FAF3DC4EB7273ECE3EA4482A1C6242A335862C2C3717F9C9ED95F77B140C4E1569B2192F
-C7DCF702D0BC9A50428EC406F8BD0CAF886B4D979320D3E429816D88F7C7146D960AC12E70F2CB7A
-9F4E3E366665AB3F1B4B6440F55EEA26DC9EE0096BB7763731740A537766490C8C174723BF0EB40C
-53701AAD12B21D436ADCE22203C1053A9DC4E9F17AE617888C4B4E6F3A720E4E6366BA628221A387
-D8AB15E04AD69387C310D3528BD2FAA5B22BFF3FA494F5FBFAC4F771C9C7402B95580C5AC4BB3AF6
-92A70CB2C851FA5CF1173EEC3EC29B5A05A0B728BBBB51D3B7AD8B0AF17A1563E82FAFD93F8B7118
-1FB7AFE352874F4EC6D334AB6747519AB8E847B7BCED33EB5458A828E074E74BA621BDCD03FEA604
-7F7B6ABDA01FC7514BA1AFF0D4D0C0CB8F4E42D5A87E395D9ACDD02CCC220C157153422018725846
-009A3ACD8C8CDDB66BC6836B4026FD9F526AA275D06C813179E5924F26A25094E7BDA8BD26AFC4CE
-B41D8964D4FC4AF1DFB0595BC5D6714C32F15DC7194E9A3A73013C45D8FA55CC0550A12D9AAE8E9F
-F199FA28EFC2426D8D1DEFB93A65717AF3EA8E2D5B4AA8EF0EF38E9600F7D4E7D9F1D67A2E63ECE4
-789FA74B159BFE2F91C19B0378BA52E93DF12830D99553B6618645E26126842AB70262D96E35E5E7
-50ECA0CE3458B3E51BEE2F21191136DFDBCA39BDC07939E521E4F492F392DEBD029C1EA237BD89AF
-76BC89F618D530160AB16269FA6B693CF14BDC4EC7C630025703C5337F61458FA09104EB15C7CB20
-AA4C9BDB7CEF3A09F25BC7F3149951A7CD75372993B80CD2112F7674CEFD6AFA764AA3486730D2C1
-897A264D82A91709FEC4A21E30D812F558451804EE6F3DEE2C4C437846BCBDA07C5B6CBA1D94AF02
-9163B7383CAC6E088AB1DC14ED3743EE77E26EA7AD3119A76C0B5F925C4DE305CD7BB3A09A453947
-5B9BD79BE28FC462D8718CE05F9D94CAF3387BA55E6E447BF81A9EDDD3A34E17BE66BC52B0C0BB6F
-86F6F008829173816D205182ED2ECED319864A796AB65D4E3950288BADA94FA32B6F453AFDFC6C39
-A4FCFE60353A64627E2057D4B379D3240012B3BB0ED0C7876CB83C1BA5EFB6E2A03F340C2B576731
-F848F762A7E1CCAF267EE06D621BC33FC245D0E1547ADC12CC0EB58B26BABDB8EAE9CBFBAB93836F
-FF22BDA1831DD01B7346AD377AA298D84628BF1C07433284B0A90FC89F5AEB2651BA2CEA405D4F52
-DDC0E74B871D43F71EB4ACE0D2B401F9348EAC3A2EF0AD295036BF6CF6F870D58E00B619D50EA7DD
-77BC28DEF91D805CD527DCBCFDC16C042BF9B874E3B1567EBA4C1E70744B9E7E5BD1FDA6A5FF6E10
-1613FBE58DC46CFAC1A65ADAF65E49757E9304E2AC9A91E0588600C709A61D4231730073A36D473F
-518A145E141D0A5A494441B9EA99AC23F60F54F8127B477E1CE698BB4129B4B1DFEEDF10D9E665C2
-47A62F112F5CA30B0AE5DBF3E495FF06EB28EB438CE8AAAD84D5F50FB56A3AF002C23BCF66ABC270
-7AC233FC0F2723DB99D2CFE7D3B3667732A531F5DC315CE74EDB9050BF75D29E6430F57CB6778B2A
-CBD57DFCEF896E6766C8FC5C9F9FBD701CD62CACF33EE0FC95E78DADD205B5F42CC63024624BAA0A
-B4DD447832B4E1DBA77BDFADD223989F8E958C8D759AAA37930664C6EFEC708116248A2A7AF3D656
-DDEAFD009B7F5333854608E67E5E588A857167ADF9225CF6C641F5E19C3E08678A281199EDDAC831
-B57223B1BEEADFDCBC8F6F25D32FCA2336C808162E8F381656E847FB6CB13969572425AA05AC830C
-33DE6E030F86A3A85D2A66A77F103C7042C97205526DC882EA9A00EB8BD5519847EB424C15F808A9
-1652A6CC89B66A5731126DEBADE123C63D88A2E550FACDEB3886FF98646000C64B3A91078012CA30
-904B71737CEF6BECABD43DD702880538F5A70085E6CC6015D2163681067C3D513A8C66032C34A0FE
-17A58AD4BC97CA69BF41F11D5E910FDFE9729652D3EA21F8DD8CC19160A8FC77573B1E9CEF4E790A
-79D8AD6723B6804E9616466C935303E063DEE29CAA6C3BAEBF278B818C2EC2F13ED645AB452397BF
-00DB8B26E115026E256746CD0C78A959364FDE6DEDDCD0F441A61A1EBA32C7BC172BB09512148D1E
-BAC9E791B7D51B71CAD2DC9B83B2F99B3726607D9CBE58B499A13753CE87FCDCE21C0AD0528ED0EF
-B9B2C927F57C78C626248AA2B835A0791244C5896686A66173EC9F802C4C633A42B086334D2A4878
-0E53D00809247BE64E529F96AD2F8B3922A6097D414DDE1EC76F9552F9B8D58B8E34F359AD792B2B
-E50C26DB05035E7497162E7C49C38D3CD9B98D620AA67492BE5AFCA3A81A7080185C7F0B5105223F
-1FA77805502A2E8C5FEEA27699858D84A95842C5F2FB68686D59FE24091FCDDE139B6463BC6C7B1E
-0E90D20A83651AF00C85797BB9F53ECEC1675C7EE636D0D9E77DBD8F89670F855EE4D4800FF3F695
-0EFF09BBF8A0DAF6B8242840CFA5BA73BEB95115F4A78BCC02D85ECCE0C0F2EF6F328AD1DD6CC049
-5A3315B414A4D61DA50DA46D7ACCEFF6EE56451805D26B0359AF193531F95F6589CEAD6FA041AF15
-3067F88A0A2FECD135C56682DB2B45A71D1FA737C064EE9A4F404BB72A70B3AF0330359393247EC7
-81512482579865240A23CD8479F21C2C44A119EBC4E81B308DD8AA86E60C3DD8ADA50E0DFE8308EB
-1A7F201EDE8DCFDA405AEFB47E0E6CA7DDB376DCB21D37F7ACC4D3E9F26B03A8DE0E8940CA3A9E75
-963A389DF8038D2C486072F61C0CEAF500753C7A6352B1CD0338D9212B42A4D3DA23D5BDF44C27C9
-4B88A415A3242FFE2E1B332477A21D2B9CE075EE479C6E657A4D8874A8C53964229310E01ED4F3C6
-86FEF5258EDF3B464DD6FFD7F1CAF473BBE722D60FB14AB4918E93878A8AE4773930B8CEE110F476
-7F42A52D9304C55BE12846C911A10AB9B2E036BF9DFD597F5348D42233315FA80D0F563C388BC253
-2103F05E90DBF1923F229F980A2F4585C7A373511372D07DCBACA583099EA972C03E5AA67E663882
-6DB134564DB993CEEB6E7A6659C7C5C05C310267D5F8A24EEC2D5CC3E3F3C808E6D6068D1A57646B
-37FABD98ECB7BAF99E7D9AC4414A491A73CA34C52F394352F6B5A15F0FC4D88622DAC694699C2464
-84ADAC3B1D366AFEDE2A2CD2042C90516A666A19A91C80248B11224BEDDF1A320E230739E755D098
-B6A67315535F4C187CFA67ED817A035056353FC859BF286317996FFFB478A2248B908FF12ABDE705
-402224A3EE5F463DD3D243875C84E02DB968ECA1CC52C75171EA50D6A88CA91327A7AA5795019F36
-C0A19C093A1C9D3723C7568F9D41F2E4FFB712FD47F897703D7A620B586B81936C84AAED61D84332
-B3BEBC4F95B796B93EF7A1F565C494F8A65EDB21E2EE18DC025522EF8E599887CA2836069CDDD889
-88E5862977B7472584303198CCE97EF9F9E1446D1F1F5ED1CFC666A8A0C3A03E1792EFB60A9B4065
-49E0DEDF6ACCDBD98742568B4735A747D8E5DE21E630125AE0C691D054E42199C15B1F80CAFA6E7B
-B2005F374A9A5F9900ABB7409CCD50C3AFCCAB1214E6A856F7C7EBA89BC3291801E1343DA9DAD2C6
-ED075C8ECA1423B43E587AEC67E6145272814B3F191B3C285639F9E2D6E148A02DC2CBC0E054D629
-5CD05DBAC1950400A9189316F0265B86A732D302C5BEE8ED233768F237C62600CBAAFF3A110D5EFB
-6CC7CA3B92D965CA7C5E8D3E64ECF239FE2507FC797FDBE54C1112B28D4DA44C60AB09D994C5BA78
-D663A2591934CC052BC70CD1DCA3325C66C9CB982E2039F5DB70C848D3DCEF655B1C2CD0CEC8865F
-E8E1C0A267BE4F707ECE6F5A3DFCA3CC1EDF92C760439F51AA69A4C1801E96CA4D6EA4AD980258F3
-D15C893913ABCE09101984C61B91D603053E49A97CB82FBA707DAE8AF1D579FD69C8481CB7B712CB
-CDDB4D287BE995E32C02B399602A08B9DD849039B5673F1930BEC7BF366EB082D2CA5DB2385C8CC4
-5BE3FC0E31820191A814EBA7C4F23B1938E6C4D800732787CD2CB97F762DFC85D4B798809B5F2254
-D826CA42B32695428D120298B44CF38494E56240B75DF1E41E46E53C44DC505452256DFEC819408D
-605FF14D6C1F3F152F2FEA96EA0AB3B472D8704E06BE9F8C3E8395CAADD06D6DA033E81ADE5DC3B8
-3DAFF743C6E9E48716003D358DF63CD7FD3E2F727D1F2D0C29962F76D5C95ED44B6F08D052025A66
-5785F264A3D5F5593677B630E628B5EA81FB37CFFD7A30B7FAD226B6FDC82B0878AF4C0EC4F4243A
-807B9839EA62BCBDF7C2E9B30A623876E632E084EBF4A21EDA04FC88A1C07021D0C72EC3E969D449
-FEB08E5826EC20E55B21EA71EA59F6E3B0710B0DDAB3261B4A2029ECAB68C19ADD5174E55D5E984A
-4E5F38F592A302FEE6ECE732DDE841A28672C620CC5D687455A5C06FA9FE688394A04F96312ED025
-B7AA6FBCE2925F3AE559CC1886BEECDB70822E2E5CA3F732A87404B1536AAC469989E9610CFA440A
-CE43875A70CA51F36CB6F629D9424C1E35A88F92D5DA3CD8CBAE6E8425A36968E21F4F30349749E0
-205BFF8D552837D6FC39532525370BBAC833F75F1854C93FC533A4AA53ADF7008173A70D94A4EBF5
-38EA9E62BCDA7C20E0A073BEE2EFAC34D2EF1D03BABD5147659E50B557045B2EB89DB303749B04D3
-F54B43FED612FCC68206E001A7AFE90230D9C12F74A32C7EDB5D0241DC3A5D51481FD7C8FAE08FEE
-263FBCED7C7D911B3A303C835AF5FADFD218F61A9D6DE80485ABCA88200047B094441F7767B97A24
-E8C612590FA2407BAB1E8B56C71914EEF2355DD97CFAFCC192BC06FCE063D3D9D1A629AADC75E3BF
-207234C208E7E30663EDD691043065C9CBC473D97C6D4DD3DFF59D6A9ABCDD4412C3128F603160AA
-D8F81C6E7A4DCAF35F3A99B4EA10A34375B477C2BF846521A7EABD4D28078E9340452A198F3F5ACC
-3DB7E3908939FF6E3709C6A3FD9889439A4AE3E10B618CC92E14B68429A3AD2C80940A1079452EC2
-66F254657BE7D79A2A24084AF73F6DF71FBCD32BF6913A3FAB25F977787F7BB0C3A3E8BAB38D7A2D
-B0B4826950643DD1E03BD7DD1FB149A33862A89226B7CB454DAF613128C2075470E42E70A9444A8E
-6ECA526345AB48E6F5160BA23B5BDDFDA6049EC44ED1461C7E0DD514B16E2FB285F72039DE3C7982
-EFD40D7F6C8E8F4CF35AC71B467BFC578002E8D2239A2FD2C4BCCDD8AF3D7DB1F4AE7F2D2E0811DF
-9D0155BA6EDE50B5F052F14F6AB884FFF244D8806C07EBCB49ED22D85DF696995991A954AA97A1EC
-D86ACD76E061B7541E87997FEF0657A826BD88EF3A4A5920462C6595E7A156F453291CA044CED810
-860C3B0149BCE73BECA713040664AD0591304106129600AF71317B0D2907839CEAC99515D357E980
-B1937B6E1200AACADA205421001F1B2F91753E80D2263C56AA164A74701A8D5FD28E46480B0DD963
-A683A1F355D7FB4463C7347C94EA5E2CA40B60B56297CB22D972C5BB10E56715A955605256C1541D
-9F3BC5768A6F355CD3B863F0FA1A781EDB49368F51B29481CBB41D4AEB07AF9DBE8F52C5D0FF75F7
-FB6431D37D6AED84D78C778871CB0F715B4F07580F23B586C969C81B471FF6A6C7276F7E141E02A8
-584D4B9AB00E7BD643D2C3FAAA299B1F1E25048461952EA42D4882768A70DE46B213A287F8D31AC4
-6D5436F22A796C05D1FE50A9BC2A928066627A0D87DD57A3AD91DB446404B41557D1457873482005
-EA20916BBE46C613F456C849D46BA79D20627B446B2F49E3FA309AE14F8C420CFD94922CBC0FB9D3
-5A0F7DBEF577F1849A1A80E0011DA8AC082A8C6F61658E65AD177ABDF23EE17C8CF0D26B9FA3A6E9
-4837EB9E930336889767A8D7EA3CE980A8EA95528B004957BE6067CD9BD8E02A0F23CC1762CCA656
-D33412FF45E917FD4A03EB6E8C1F43FDB0A8965A33B4FD26BC24A20B304CA817E88495BA9B361A3E
-933717FFB0271F7F70C5D3CBA1E86D0F51BF3ABA194DAF32C35C796627D00C7B2271ACE2463E37E9
-7B3C826CF3DB60028F240F9452CBE08F7EBCC5FDB1BCBB3C327A9F450B9E5671916101D6E3E5E458
-CA31F04D12F592F83BADA2C3683D3886AA3B403963AB5DBE220FEC00037A745839F67A3635DFD3BF
-F08F367482962DED88ECF6322852D643A54D5D303EB04BFDDEE9BBA1EBCCBA7C653B3A613A8E719A
-DEBE3CE1BD7E754E5F4977E863E3C2D388A65227B451D4F3A4F94E06513CBA4AC1F2F511613FF035
-611684CCC461599000E546E4D972CA6960E095A526E4735A23421A4C9B597ECE08AFA2753592BD16
-DED93255A1E33DEECE3C5EB77B94670E8137F2A4A4B98AC193258E7DEA5DB8408A806188F2D1DDC4
-40CCF0E9A6E2F0C78FDBD7B68DD4939D2458C1965BF8BED4564B32462FFF3EC892C03B11D3EA813F
-AB4CFBE8D3016329C5B7E3DFED0F08284D44AA0B7A2F6BC96EA4503E8EF52A64C22BED6B452581AE
-8FF8917D53976471941A9116A2D878FB2541B561767ABD4E31CCD8A590CA03494C62AFFD64EA0A1B
-C779173DAD84999C7A8D844EB1259DE7BB5B25CD023537A474A524EBE4660B22568949E624D8FEA0
-AD37F4CE1EC75955EEFA49C6BF1803BE87E9C9865FF3F6B8525B8C15FE8835CA153D27E6C0FF0CA5
-1029A7A9185D25F0F14D86FC797DCC1F99EE97E2054B9C2A2E06FDBEB8DEF6CDD368BF23A858D9F8
-C1DEFDCEAF1B4A8DE5EAFC604CECCF0D285BE00AA912EAB66EFF4D37AD2EFE34853BBFD87CE09B18
-749B489943EECAE7887B006FB827D10191DAD18466CD1F86505879310A8B171F902EA0C26A388E13
-B53C700272CEE2BFB47ACB58247C13449C6BB9D01232C32517358F1A3DE064D43C18F8827D53789C
-CF3CE2EBE78949A6ABFA1A6B8414CE360A5E22AFB7D1DCE6F5A06182C3B984B4F9BB1A905A9D5A14
-83750A1DE0A857CD5C06945EB7D4A2A6BF1237F32A154FDC06D51A703D44FE052FD3C53E9E8F417B
-35D1C851F9203A8997521529F21AD8498F96930AA77EBAF82EE02A57BC77C792D9F220294B45F48E
-A8FD94E01CD25645D36D168923562F3FDC93CB79DD4760DA0C103C2675722D7A1B79FCB4245ED12F
-A0DB52492C9CCE58B333CFEE822812F7DCA68E802C451B5CFAEBAC608B950386B6C58239D1C62D62
-4DD5D15782FC552222CCA06DDF387B373E32C3C2864C63C768350C37283760F3515A5B0AFD66C48A
-B522EB3E808C061F5CD6BD96CD18C9839D30508E7D4EDB88E8F11E31E10919B16B7971F06D7877A0
-58D8A4944C84FC6CAEDF3341B48B6E0D3C7B85D710E0C35F5B5053CF4B4798B3778CC28B2DC7AE0D
-F3A49F9F3BCD8E95D746C35C3F47D68B8AA35D97AA08E711B5FBE70D1A623C82541EBDC51A827D0A
-69E6C049087AD26F256EB7577F58CCFFBCCBA5A95D093DC29464C9A38DE95BC6B1853963B2DEB0B5
-7AD1248D6F1625E115EEB9510B5772AAE4E3C866657DB0B3BF0E0AC345E116F8D4976B770876FFE3
-748C36165522991F46A36F193DD1A1C94713673C7E4C81582391B636C72DE94CE6254374F99B623E
-5686C13D8A8322E83E11BB0B0A896C6A8C2C4F756C5385CD7017F26D23F7C3EE97372C868C8C9155
-81723BB6B76B4C3CE8998E4FA6CA40B633DFDAA59BA902A4952DA90EC4FC3CF0F2676ACFA7F76F78
-236FA2DE10FD3545357215246BB7E527F277C28B353CC6D79DCEF21BCC8F77603CDD58A2CCDDBE3A
-9802F941CED8E035313875319548C41992A2BE939A17CC109426E33825AE59BCD17CB19F50D972FF
-CBE7D9B4B0BB095303D9DC9D406696C2508D6CE99E11CF00F6461147E97449ED5F486D480A86D3A7
-ACECB7E9A945984724EFC21C5079B1FD03ED803C2DEAFCE3327D2D7827715FD65D9506216C88B0FA
-26935E95C64114A51919D419038B1A7E9C1E829FBFB53275093752DF19891A97F3CBF7719C1FD6CB
-17019A6D2D25360ECA804C4B35172662CC4769D2B785C6C87E5A4ECCE31704E59F71263B7C3CAEC8
-ACB4C7426EC25F11A0042323EE6C3EEB04284DBAE2C770BC419DCE79BD4560AEA41571C3B595F525
-60191DC7A8FBF63D413A77A0905E517441B16C2B501EA2F9E99CC38D052679F288FDF1894542E3A6
-6989A0090185EB2E75134BFA3D9147C3DB8A621D9D35E37786853779E157B47F71626D6B3E633005
-9159C17596C1B87FE2B4FF47ED9D78FA4C2160077276C8B58CEF5DC030B4A5D83CF257096C047FE6
-4DE307C598B815058E72D5F57DF5C369E664E137DE29349E2F9DCD8C9F4EBA6E765B6327D7A20DFC
-B20711273FD8091CBA605C4C494248076F7E03DF65A6A50164980BBBB708741E5BF6056E6F996DC0
-7FFF408C5B8EAB8DCEC315E92873228C805D4440A6470E3EE3983758DD211C9CECDBFAA4C9300CBA
-00608A4B2404A3C7AF017A3B7E67F39F0B51ACF950D3E75CC7BC2B8D3480202FA958E8EE0B240501
-5232EE0D264C7CA02C18CA45CB3C2DE322D3EB7F00F9455DB6C5B1F4E59C3E95520EC36D7D903CBB
-625D70B54BF6F8255E412604BBB29FEE026CC660577F91DB1DB4A613EEEFB20CF7AE3CD89D565AC8
-38416B01B5DE4FFA5550D17FB51FBBEBE21CF1D56038863EE931B90DEC2E211ED42BA92EC244D4CE
-2C4EC5CA87A026992772DC2AF754FC982B94F36EA7B7BF75E0ECE90CBB2A6AA1A012E8898BD679C2
-3CB3827C35D5D02F0569C7AA82615D4AA67518ECF668D3B57D6EF1A8013424AC2268BA0D9A74D588
-79EDCF6382A89D397864940303EAEC45A38304BA8B1CB198967AE23EB81054BE74B16909A405E8A7
-799CEE3C270FE2A6DC50BD7370B6B2C8FDB9A87D88D5D40348D3984E39C693B6F4486D994778607A
-80A3122872DD65E40492107C71C3CF708A9717E9EEFAFBDDC239C53AA9645B711038E59C8B861B37
-411AB2039BEDF9CFD00F08D9C5D76154427FF5DD39878CECC5D7BFB3F1F035087185C0981F3C2139
-BE84872FFAD3408531C4EA9387B89F5E3EC779E8850D50992DFDCF9132BC551E985943B07618AC10
-D1150451F0844C0DC41D6E17EB508DC8689EC726400D5A7F6FEB3CC7BCE05F09228B7CB2C5393664
-D8DD9A4B96B1020EF25D70AA2D91CAE93AFB5F2BF0AA18CA5C599FA1A708EF35BF8F7FFEC9AFC1F2
-42870D028B2B1459063B493943EF1283829783E1010242E5CF4DA39D93D506F3892936E7D6CF1124
-70A521D397438733D053944CFF12D6FFAE8246F20618684F263715AA98E15D72A526383E05C23214
-B78338E5B476F0981D90056E6E5D0DB66B1DF2298E597B2ABE1D817E18BEB056E65EDB4234342D96
-00470B1420C9210419D834E431B82F58608C87AC361A02D0F1FE4B470A3D71E0D21BB87E1023D428
-E23D596CB9E1A2184403A16E36E644BCCF9BBDE27290485057E62827283E7380AF786BF395B3961B
-A5EA469C315763FA59E0F176EF81985F38B882DE56A74D128E256D1B89939728E55A92ABA21A6B78
-44FAC1BA7BBDD8B34A18194A2984B000380FE9F672E83EFDBF276FE797A325815B0F25CC95C97A9D
-ACF56D583486305D7C9E51A7E337D14E3B900333EB38FD93A99587DA2341B10C059C71CE080FE753
-3C0F059FA40E560AF9C4A41A4BE6FB45846FF8F78165E10B4AD40F264BCF5596A1E8EF8CB6EA4B1A
-3A5C69059AB1563843679ECB2511A90E8898F54295649CB73D277760D8D04ABACC7BCC6E777A0530
-E2067CCBC08673F9C8C178F9D672AC8A15E5367F0C5651B53E75E0CFA57C931746AE1A679C246D7C
-9417F1CD89DDDBD1173C2F880B7B3847CBCCEBF99F7122E832D7C9BAFE2B54CBAA1ED48158DE3F36
-238B76B0E67644A28AEA996DDC006F6AC0242E4B667639E7523CBC90A0561193C1AF34481C2EF402
-EE43A82E1EBF4E3D601BB36B2D95CD93550D61CEE7A94E72F6D30C32C8F91A61E964B1F66ACFC398
-7F95D4028F116E9A9A8474AA29C1C1A984BE0E393BDC41DCEF6A6F1018DB60D52024899D8EB5D55D
-324D73F39BFA47377B9E15B3B06A7585589FCF52A54684173E5183367E7B0952DC4BC2767C4C6247
-B1D6103E52BC7B7EA6298F454C5D97AC575F19C10ACDFF4E10C7D3755CFAB4200CAC545269FF1D8D
-B0D607C7AD47F40DDF257AB4E7D0750577003C13E4941960C3DD7B0774DDAC18E8ABAF8F53E03CBE
-F6D57B44F24CF821014C064278FD51B3427593D17694B4ABCE81F49CBB984C5878CDF0C38D1ED7FD
-99B0B9A3BD8D8FF6219588B3B8FA59D0CDD1D9B2F65122AB45E48F1757467B9204926140E3C350C5
-A927A2E700173053EC35D3F1DA2D7258714C97FAA857F0898917BD94625C6D1E2D77138EFCAAAF51
-7B17FE187A2212C24A881A2C6A647DEF6376ED80AE4175C5EE80921F001995B44E49F0D33DD9075A
-CF33BB03671C0BCC34AD5784AD1CDFED3A6D9BA103B3DDC1CC2DE74DBB576A0277715275218CD19C
-A8899209125266D8BF1286F881DCC2C383749D1E768D670F4099F7DE959EDFE852583183C9111601
-2881A56A24AAF020EA45CD5F39660DEBCE30AC1C7B8CFC60387B1B0C3E361BE612FDFA9F01B7E4B4
-A18839A2C7E0E393EBC5AD9A8A4EBC316A740C1C295D9EF5F4DFFA0667F9582C0BB837B142C4CFC6
-B1798E9476D0631111033B8BA75A10FDC800E2AB1E0E829632F869CFE4737BE9E2800759EE0831DC
-7D1195EAF80555771981DD6DC6606812D92CB8EF86447F5F6C6F626D0E265C67E52A6319189EE349
-D48E49DFE6A9E98F76C414A1E3217AE0A215A17E54AA498F4ECDC50242ACC7E2322F63BB2FF2189D
-057E7354E32A3ED1803116176B9B9D0129930F919E2FEC280B2C8924E49E7BB75768A2EE1DA8ADBE
-D4E3589906DF1B923AEF84C1BD327438B731012E69BB0D43A1842CB88BB54EA4516477F704CFEB28
-6E3EA483445AD4D74586FCF32E96D366901084365F693A53C5FB532FBFE7BC0CADC404C4985042D6
-8DBB90A6DCDA3531EE324D558A214F935CD9FCC9A0CEBE9B5FB0323F4B3820529599EF48EE068B5A
-CE85004FEA2984F0A86F5AC9D56163BBFE1142B774148F1EB0A4DC89C3349052533A7DE66729DB24
-41B82F8F7360111DACF69293C9B281A0534F3E9E9224A75C49A832F28B2E497262475507B6DDFA9F
-01CA0A6696E3F5AC7EA68595EBA0C2EB8A47813FF936D84AC1B23ECA7AA2862B793CCBB0DF9FDD49
-31BEF354CEC12FBF478559FEC29F81ADF4452E83963E56541D31F3691C93A50F0BBA5E9552C4F2A2
-3A6E53060729854A3DD71CC4308B91957DB19E66AAA18FA67055A950F1C2CFF78A03BC1A588CF624
-696068068719AFB1001C4581EE072113882D9052B21E355D401ED8CD24D067B99E616BDA5A0A5A93
-36FC499632B79FF2FD0DEFB096EF46B75E2D4E0F48DAEA239719FEC4D9A29818F5875FC5041A9EDB
-D26CAF0ACE14CC80BA49BBA59E918EB3D8F1E541AA16026585A2F72DF7D83541816DE46981FB3EFD
-0C30E458CFAD04C79421AB7C4925E23AEA07F9F018431C790002596D26BD9663B51B699DF53E4882
-CBC34EDE88EB55045B889B6062E35FD1E018BCE785157B85EC3B9CA6C85D4B16238275385B8285DB
-012D8FB7C9F5B946A41D7A0FB878FF72C39683144D8A007CFF631B43748F2D5FC690300F9BC0C837
-006B92ECEBE0605E8C3A4A400E18AE8997D1B45FEE10068E247C647CF82C6DFBE5E881D511FFA687
-B7AEB78546BFD07D5F7EC242DCEF4930D8AAAD8C6152B6642AAC325963FD147F236BB850A9966573
-9D06CDBD7CA79A527DCF461E33F22BC9C5DB00DA2BD3DDDD8C99D99793BC98282AA8872FF96C3942
-85D82D9419EB78B6AE37A5F519397700F75D624A09BD255B576E955A323E784E8FC31131F003B0E3
-024A4F58FEF2A6C043796201FC425482E1155E229D1B2D43EF7B0D22322B22EF5C9A1BE026A1C3D3
-75EDAFF99597E1E5477952A4E8D2ACF5D014BC00DC2A272FA62B6983E27D228881E2EF2B8B95A681
-CBE90C5FDE16331C85222FE2A16F0A3C3000A63E2E21666C0C119F8AF89A543D37977069A5ACF155
-6324F05204CE8CAD50FF4FB630D9CBBFC324DEDA584AA56A99D3A76FF55BDC2C2EA3A021361CCD4A
-83C7A5E2768D210FA6DE889FD48A39D679C94EC3C99A8D33FF11377DA7F6F1B71A2A05B302ECDE95
-4F26773F39AC881542F0D0969C3995C3519A8EF70B4220D86BF01BEECC6462855E7B686E1AFF1CA9
-1FB8FD8B4A69E10EE0C2AD94ADD44449506F9B6EF43641F2026EFF6E605C670560C2B74706FB949A
-A7E8CC6A2D0D6207E457E7FD87EC1B9092DC68B9143947CC8ED14AFDDCBF8FDDA228A76847F96802
-E561F67CEEFDE45AE587673983FC04C96744DBAA83F2DC838D633943C75DCB9E6410474EB27B348F
-26E505F0AB90878940E846C5E9F3C5FE8C3558C3236B1B88C405716949B8506841CABE1717474BB7
-C30DB91CDEE33B0F844811762FAEC535BDCF84C1C747CEF9B1FA61D2AFB5A81335BC42C06A94D7D5
-9B7EDE55BCF6F9867AEE107555CDD084B7684C2C87087475A39A9DA6347BE281CE5635A4D07865BA
-98CE26C1465B1AB0343F49FF37B4D0CA9F3BB693D78DC3B21925CB996A038DCC172527FE57C07460
-EF39C07D4396E7FA970D9F22ABD21A9C794B64AD96762C7428F59A8757C36D6C4FFB23216195A04C
-2A2C2E7B10EF7193931544D782FEE4B91E01119C5553BBC6252270A8D8C56DD62D448F5AD8DC69CC
-B45E1F17F0AA1E445129DD00F000005B23D38DE93A3BE55A4C041947F36B4E4536E307D0180553F9
-2E46B743881CB5D5386C48C7D5F84C2BCD06B9C501F78C7EE61FA23516791FCF4DB278AF688A2E60
-10A56692AD92008497487EDFE4BD5FA083FA544138B20D6940020887E35D46E093B71F7A04A67460
-DC8116B4D4839625D7CA6959D6831CD93F81AC4EA2709036DD738364FDE71113BF22EBF13DFE1642
-E564701E6F0FFE7511EDF03FE448C2B28C64FB7D54B94CA576E481FA56B2B18AF10C71F699B6BFD4
-7459CDE1869D0FD306BF489A6F42E5B2F05CCF55BB6B9526973D19CB134CA7F13F1DB3716F8CC217
-73A832568C16250B5CDB16DF24BF81D49F5B37018BD310262EA7078107868AB0216CEC83CEFCAB1E
-9F2C665A31585CA04DC01879CAA79AAA5AB201B516F7052B01B16BEE5606098393B0E5D9F9E5E3F4
-EB20F63C958E796DF41CF28839F5C62A0431648745D7837B519F3AA36BC6C08EF040CCF53D9B6D8C
-0C7D1A84D707EC57A3C6AC9A62AB37251A01A5ED40FDEC6F5BE6E34C6A91D058319439778A2EE5D0
-363E2E1F33463C33327D05FFC0CBF08D5BC457C7230448972FB9B4D0D782BA7DBF10D3FFEF8BF523
-6EC16D4DD6D0D870D9D5EB5C64C9A46A4F583D4F831FEE74B0E5B33A09ABFD4444929BD8F638CD72
-EAB99CF2E9551DF427683964A592E49D186F285258C5D5F62196A98532421D73E3495F82695FEEC6
-E1952C562D546B28618FFAEEBEFF03A57F4D855021F85B0C7BC37FCC6DA9AECA099B646B99D41896
-09D3FF2D56422F8C37E97640293EC7C90E3380887836F4938FBF495CAC14FBA5648D89282D8D49D9
-1AF73ED36581139D8BD42551E263E830EA3C6EB381D85C42D74C50DB0CCAEC03F535ADE92128A016
-0E811C34748309AF7604919B66CD43EB5CA975302DCB6076FEB6BDD6FF55976FE990FB0CE9ABB11B
-195403FB26E3D6C6A0DE1C5BE79E171A61E21F79EE8DBE7A832519813EF6B33EA098C2C32ADEA219
-AB2AAC8B093F40000995539D1276D5F2EF84CCD099B71FE4269BDBDB6A8D59C86F7D2E3FBCCF8773
-D0FAE97640BC1AD43CB4B992BFADFB09DBD0CAAEB8CD9DA264187C4F97300E9A6C9DEED5525479E6
-05C65AE336CBBDF4E5D7F79AD098F977285E065579B748FEAA97F2A753E1F962FCAB68D72BAA8EE4
-FF6691C23E31BC0F3E981A96FB440404856AE1AB32A7205B17D411D8F21C8C93B704D07EC594422A
-BC368CDA2B1610CE6A973F4474E12B78B532666797F5755D269772C9F5400B3BFC6C58395D38527E
-2CCCF29B56123F7DCEF3BDE5DC1DFC5B0293BB125085B1D2D929BC3EE84F4FAD571A4991C3DEE03F
-2DB3A3097E52B1A7D5C73CCB6148EAC62E8E36DE9A71C57638C6E4D5D9DED18174E8C390E50B4A5B
-913C074EEAEBE390B214B3A68F02862B9A296DB4B409769649E51D738CBBDFB7702E15C73C2AFC6B
-C37CE15171F4E822CF20EFE55D9F061AA43E648989628FF79E65932390CBB15D8E621333B18B11C3
-BDF96F841D7434E01AD501FEA964A75B248A35CD9DF9A37E48A1E5A09C624B93CE44F0042FA00D7F
-9EE89B9F7AB785E9C718CF6E7228F743271C2C9BBA17E5208B920E44E765D99D86650EB454B0FAAA
-112753AA1BD3A24239E9C5FC47EEB1547AC9D23731B8DC48B9707830DAEC60C8D3790BBA1120F776
-4EFAC542CFFBCD5C05F9510B27B2534B704ECD36C8B041FD49A96881302FFF5B0163A2DD09C751D6
-D6AFEA9170A4F4C4AB8D46E62F763FE1BDA51DD1CE4A27E772F3A2869155F762FF26B7AA6FCFA4F1
-292E56F03AAB6322BF867E7710C34D43B5D85B45AA68014AD7879EED051B1933E491496E3E26D9AA
-8B80A07BF2B94F1077E84A9726F08199887D66DE7A307BF33C30DD9CF3DA188088C03B2BAD09A217
-6B110DB2C868B53DA9A66C85737BA66C93C58A259860E294AD0191E3A72C73F40B0BD98699AA08DA
-F03587B78F391F3A4313C58D9F29B53C70785637BD0C58310109C54091AB0A34CBB0C478613A7AC0
-FB8F0A8B4645AC966395D8BA775262CD291136AFFDDF01C1D83DD4EB3B59CCAD18057FE7D92A8CD4
-A58F22508D9FD7CF356571F701BBB23E749BDDCBF8A317FDA0AEFD952BB18545610FFAD3AC143D35
-1B8DB3F66293375E0E50235F0D0466932181D377EDD32A5F0FFA4E22B5A0CB4F343D9A7E4A342E9D
-09DFF6C697630CD3971802C277A5590B8CA94BDE6B38446C794D072BBCCB724D5BC208EEF1B018D7
-39373BB910D668882CAA779C2D686081DE6A2606417B54D7C20E0E7F722648D893E4EDBAE8F00D6A
-6DA3712F91AE860C756D1127D133AB828E9D80023B50B162C5A1C5CDF70CCB3FDD7EA060ED20838B
-E1E50C4094C9E79E1A0187CDF780CAF45A725964F004253E034C5BE46BBF89D94631F1A33BAA35B8
-4FA2A9D08481C6674126CD96ED05DCE48BDA069D902D6836D5DFBA701DC0F98A863E64F0E312145D
-8DC0B77F25B43AEC729A1243B45B08CA228DD6101CAA2AC5ADCC8EFF84A4CA3F254176C2CC711EE6
-C273835D0FD3528ECA2A976B88E51FE347FDB60F32370B66D338931D6581630ED586F349C638960C
-31AE4204E89521A96E1219E696B913DEB2AAB7A3B022D06F34FDFCB810A04E60A4FEBE284C2F063E
-0AE9EDF87704921CCFA193BDC912B747E13570066223A49F1F6E2AF0D4D65DA04CA876FF7A462FFC
-9C0BA2CC545C3BD36DBE762F32B2D6BE5867C59F479195C92440DC165098B74EA5C3AD93CDF2D410
-B04C16BC7801E7956F4E5107450787AA592493171C3628E6B8F49D4F8429EB98DC52EF025F001387
-BC1A7093F7A99F10B5D2D7DD8BBB393BF6E56F08F4F7FA1A343F220D5A1EAE7168C74D41BE1DC1A8
-3BD65B72B982F4F7B34F24F97F9EC9A91011064031FACFF2A14921A32024385F4E061CD07D152E74
-1BF97156D951A342488FA7F5EF934CCAD13E2753A0AB7A1F565C2F7F6B349DF03BBC25BBD972A9AD
-F809BB5C5048A8CCEF9297B2ED3324D18867F293CC66E88B3A39D107B610DFE79A3B4E83A96D3D52
-A17FE8A62C9FDD271130148366942C9CE57558D023DA5F7501319EBFA33DE9E6D1E76D7C20DB8A09
-B657839DA99F3D8143F1EE6253A3295C9651FA4366547893C2DC7ABCBF4BB7609DE5D001E0A36D9F
-FBE01F7D0903B3208AE8547E2E5F14EC1AF4C2535CA8F4EA37E3F3CE172C7A1E8308995B1CC23E6E
-81190246BCAB6E755BF868D449BB02A2AA87C44C9CC0F571ADC72547CEECBE104BB274B8AC16DCB7
-5D5F458D356466B921ACDEEAE384E2EB1DF6EF393B41B9747F0A4FAEB4AF1928D9AD6FB7E06FDC62
-1E4C6FC98CFB43F88584BD55D9B97CC9549093EDE586912161931162B1B1D52D0443260DABA02AF2
-B4432100D5506546013DA703573FA8013685CC798CE501960093DED713FFCCF89CA2B9106390198C
-29A00864108CDCC1984A8BAB53919028C01B26ECC7925E38CBE6CCA8978EE21C2B06E7B3E48FBA97
-8E2A7D186E563C088F84AA23178B60E4729EE87D67B1091F3B6973676C1CBFE6530EB773C62E2C24
-97014AB0E8B71A1F4E86A378AA26591511BEE3CF3D64C94848582E1354E1605B6457823F2C5E640A
-D3802946BB2E7E8E594E8C04B430C2385DD40746CE8534F50842E74D7115F3DB0C72D1C9C607C657
-3B094AEB73B7A79876CFFC3E2F8C9FEAAA07D3BFCE05B61F7749A8793BE90CCCECA2D7077F25E899
-D3331FE161A7E86C842495D584C6E4A0880B2951D8A13B88C4672080A0B1BE36BF47C3ACE7288CFE
-41A8C1BAA6F0814A947FBD6B3AA72B6C73A8C578CA51CCC96F2352316C467BB960E981F2B6485BFB
-44B577E71EFDA16E7405954BC7C9F0759F5A9F1EBCD2FA9CC9648D5831A68887F41B15081A204C24
-B4B992A231DEF9E698D4C3A25B6F5474F5BE6A601F2D337A58A0D21FF37FD91EB86D1D738893A03A
-69F0CD743F611CDFFE69DB2C6ED0E4611D56F803BB0DC06E7FE85A303839612707647B1BE9FAF8D6
-84122CA9E5CB8BDE2936D3F4FF254D31529D7538BBD4D35539489F9E7316F24214B996BCDCF1818E
-749A71CF0E8845AA1E2A58AA62A48E02BA4564625D20AA220EE719608521D7D7A7FCA0BD8904A401
-9819D371F3F59D46C1354E5FC1A6E5F79B20CF4ACA2BF0F2DE73DA193A6F9ACBFE0B4731C4BCEBE6
-D96FE822965DE965232282A3A130361F188B3AABDA95A8A2790D9240BE008B6A6DE4BBFCADA05B67
-86B9BB8E0DFA0C30043A3B07ED46277E07B9808422C8ED16758B9C396F4EA929D769785B2C9568E5
-70A83B989B25CE200F1727D41E2B702E7F88F1784F4C83FA60A74EB26B2DA95126E508ED519A61CC
-151DB6804F61826C5F86D8FA89D06E526FED97A0DB88EDB432FF32C1ACC9B622EEDF601081AF7B96
-3C9CFC1D13E4A9C74FEA0A1C8E3D8653CD92A944D4CA6B0D306619AFD503506D77732D6514F604BE
-4610C2560931BDE0B40939BC1D126B0E97F72AE1B4A9252123B54F7A27E0CFA4425B4546526FD741
-CA77952B10D13E0AC2E32006A903808FF0CD013F936238C74CC75FD915244C56A8412F37F0134840
-347699508D6F3D7F3203A25B7C70100719582CD588590EE34B3AB13E255B613A6D00386A0104CC5E
-D2C646F09A88888D3751651D5646C5227A3C80E8DA1B0A331121DD2429F1F4775D30564DFF47D01B
-BE2C6C72CE4D1FD9A2077C04D2B0274B8916F6A9D1A4A6964A534F47CF241D5A8E34B23F85BE9ACF
-FC2FEA961F277539F215F8728D6788F67BEAF45502839BCF23D8763C3949352F00C579A9A4FC408E
-C625E310DAE61512DFE6844E82D36A2F81709E1F05B38AE9C222ED62C961EE63593CED7AAF73CE2E
-D3667740C77B309B93EEFE1B4BA65D48575A66BE86743DC9E5D3C2FF418D11F7F211B86E827EE1DF
-C3613E7498030F07050524536D1F8A94DDB6698BE7B963C55CB3F74B676CD815A7B3DF4B1A0EA2BE
-1B0B9A11FFBFD5B1FA49668AEE14629316AF436A0821C20BEEF7B3480847934A99F6D85B68F4DDF8
-859A754E009428AF89A90D1852C220A607FF0806E8080726EDC94D691D214B4521C147C4273AEBDD
-BB4A697EF16448CD9B2FC95293305858DECFD406B89B9F3FDAE2AC579E80CF321EBAE5701FB2F7CA
-D8ED04B4A63115886D45D6120F69AEF1A21D80AD3C2D35D2899F1902242B96CD349E0AAADA40F7A1
-1282B6B52BDD97708E58DC5E2D22D1153E5FA3F3B300BCDFAF98DEC2F4E3C82A1C85F985735F3987
-4F557579F422664E07CBE19DA680EFB0FC82C323EC5C4644C51709AC8D674608A8043C91E6C7988D
-430F10BA6CE1FC7FC0604FCD8F723895250AEC36CC35B3FA14FE2A0D24095DCC30B2093F2298F5F0
-A97676A0BE66C3DC9ADACFE2FC0F721A20E945AFC1096A619075D5E9A264C796EC6C90EF1AEEA8DC
-089B44FFC13D27CB2370070A52D4416C53F364393E46EDD7EDE00799960CE6E0D57E4909E88ADD64
-BDD2B0EBE2D73FA6ACF8B40280DAA0637E705C65AABD523B8815F22F23E9FF81E7829C7E4BC980C9
-143AEBE1A04DC0D253396BBB7268BD5AEEA356B610D5DCEE03135E00AE34388251F31714A1C40E18
-2652C48CDA2211A22CB6F02490E69A44CECB169754C53B16028D352E0119F5D5FAE0BD7EA1CDA647
-12A6147374B64244E21E9EC9F0D1381AD22D5B6212B26C3F9AA5F6045F25DD9F5EB4489EA39B1945
-331AC70510C5752557DE21D0A6CFC1EB10A98FA867B76DA6E4249469F591FD154D39E89364A43DB0
-07AA0D7A911CFAE6CE2B557997FBC44F55A27F622BD7B8B10EC9F5D10F2649A646FD964AE1B111B3
-5B46A252C4DEE44E7426EB5739F24E8A390694597DB3A1FE7800C97E59558322F0E49A0CCE2AD94B
-1E2D1026AFA771723E3F523916F55ED866C9FB4A2F759651C613A2CFF362028CDF9D38F05D4C7C60
-24C533E930B64B099FB1AF04B01F5FB9CA6867E6EFF55A772C5391831059987E10CBF987E3F378E0
-1329F73D54DC0484177D3C3C06F67397955FF1CA4EF8AD1606B70455255D631A7D6EB92BFDBA14A0
-FF28B2ACE7E81AD666EA9B3A0F5A6BA3B5DFE35044FA4B3D8ED956009C60E98CC132F2E84967F4A9
-8A67B336D5EE7CAF7DD1F74D1FA08619941361FA7312CF225D89CEF97E864C8369EAFAB94D97F056
-5505D825972B754F6729596EEA91210B75DD8F645382ACE36DE60819A02B3B48DD00F5485F9264F9
-FA926D732E2C267B0BE8CA98526F124F97EFDB86132C5EF16B103908172FC51F286FFE45FF253512
-E0033F037FF182BA536A9EB2DF2D1DB257D9C86C46E1B002FB32AC70CA9462E6EB48994752CEBCE3
-9F08ABD4F4B0889283E55500702185A841E328
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
-/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
-/NimbusMonL-Regu-iso1252 /NimbusMonL-Regu ISO1252Encoding psp_definefont
-253 283 moveto
-0 0 0 setrgbcolor
-/Times-Bold-iso1252  findfont 67 -67 matrix scale makefont setfont
-<50726F63E9647572652064652072616A6F75742065742064652074657374206475206D61696C6C
-6575722074E974726168E9647269717565204E657467656E>
-show
-403 361 moveto
-<64616E73206C65206D6F64756C6520534D455348206465206C27656E7669726F6E6E656D656E74
-2053616C6F6D652032>
-show
-220 439 moveto
-<202020202020>
-show
-220 508 moveto
-/Times-Bold-iso1252  findfont 58 -58 matrix scale makefont setfont
-<20202020205072E9616C61626C65733A>
-show
-295 566 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4F6E20737570706F736520717565204E657467656E206120E974E920696E7374616C6CE9206461
-6E73206C6120636F6E66696775726174696F6E2073756976616E7465>
-show
-1647 566 moveto
-<20>
-show
-1659 566 moveto
-<3A>
-show
-312 683 moveto
-<6C732020206E657467656E5F696E7374616C6C6174696F6E5F706174682F696E636C756465>
-show
-312 739 moveto
-<6E676C69622E68>
-show
-312 795 moveto
-<6C73206E657467656E5F696E7374616C6C6174696F6E5F706174682F6C69622F4C494E5558>
-show
-312 851 moveto
-<6C69626373672E61202020206C6962677072696D2E61202020206C69626D6573682E6120202020
-202020202020202020206C69626F7074692E61202020202020202020206C69627669732E61>
-show
-312 907 moveto
-<6C696267656E2E61202020206C69626C612E61202020202020202020206C69626E67696E746572
-666163652E61202020206C696273746C67656F6D2E61>
-show
-312 963 moveto
-<6C73206E657467656E5F696E7374616C6C6174696F6E5F706174682F62696E2F4C494E5558>
-show
-312 1019 moveto
-<6469616C6F672E74636C20202020202020206D656E75737461742E74636C202020206E6768656C
-702E74636C202020206E672E74636C2020202020202020202020202020706172616D65746572732E
-74636C202020207661726961626C65732E74636C>
-show
-312 1075 moveto
-<64726177696E672E74636C202020206E6720202020202020202020202020202020202020206E67
-69636F6E2E74636C202020206E6776697375616C2E74636C20202020737461727475702E74636C>
-show
-295 1191 moveto
-<6FF9206E657467656E5F696E7374616C6C6174696F6E5F7061746820657374206C612064697265
-63746F7279206427696E7374616C6C6174696F6E206465204E657467656E2E204C65732066696368
-69657273>
-show
-295 1247 moveto
-<6E657467656E5F696E7374616C6C6174696F6E5F706174682F62696E2F4C494E55582F2A2E7463
-6C20736F6E74206C657320666963686965727320646520636F6D6D616E642074636C20706F757220
-70696C6F746572206C65>
-show
-295 1303 moveto
-<6D61696C6C657572204E657467656E20E0207472617665727320736F6E2049484D2E206E657467
-656E5F696E7374616C6C6174696F6E5F706174682F62696E2F4C494E55582F6E6720657374>
-show
-295 1359 moveto
-<6C276578E963757461626C65206465204E657467656E206176656320736F6E2049484D20656D62
-61727175E9652E204C6573206C696272616972696573202A2E612064616E73>
-show
-295 1415 moveto
-<6E657467656E5F696E7374616C6C6174696F6E5F706174682F6C69622F4C494E55582F20646F69
-76656E7420EA74726520636F6D70696CE97320656E20656E6C6576616E74206C276F7074696F6E>
-show
-295 1471 moveto
-<2D444F50454E474C20717569206E27657374207574696C652071756520706F7572206C27484D20
-6465204E657467656E2E204C61206C6962726169726965206C69626E67696E746572666163652E61
-20646F6974>
-show
-295 1528 moveto
-<636F6E74656E6972206C276F626A6574206E676C69622E6F206574206E6520646F697420706173
-20636F6E74656E6972206E676E657764656C6574652E6F2E>
-show
-295 1640 moveto
-<4C612070726F63E96475726520E02061646F707465722065737420746F757420642761626F7264
-20646520636F6D70696C6572204E657467656E2028766F6972206C6520524541444D452E494E5354
-414C4C>
-show
-295 1696 moveto
-<76656E616E742061766563206C6120646973747269627574696F6E293B20636520717569207072
-6F6475697261206C276578E963757461626C65206E6720206C696E6BE92073746174697175656D65
-6E742061766563206C6573>
-show
-295 1752 moveto
-<6C696272616972696573202A2E612E205075697320617072E87320696C20666175647261697420
-6D6F646966696572206C657320646966666572656E7473204D616B6566696C6520706F757220656E
-6C65766572206C276F7074696F6E20>
-show
-295 1808 moveto
-<2D444F50454E474C2C202072616A6F75746572206C276F626A6574206E676C69622E6F2C206578
-636C757265206C276F626A657420206E676E657764656C6574652E6F20E0206C61206C6962726169
-726965>
-show
-295 1864 moveto
-<6C69626E67696E746572666163652E6120657420656E66696E207265636F6D70696C6572207365
-756C656D656E74206C6573206C6962726169726965732E>
-show
-343 1984 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-418 1984 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4F6E206120E0206E6F74726520646973706F736974696F6E20286465206C612070617274206465
-204E616469722920756E652061726368697665204E657467656E2E74677A20636F6E74656E616E74
-206C6573>
-show
-295 2044 moveto
-<2020202020202020202020736F757263657320646520534D45534820717569207772617070656E
-74206C657320617070656C732061757820726F7574696E6573206465204E657467656E>
-show
-1779 2044 moveto
-<20>
-show
-1791 2044 moveto
-<706F7572206C65>
-show
-295 2100 moveto
-<20202020202020202020206D61696C6C6575722074E974726168E96472697175653A>
-show
-294 2201 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<63642053414C4F4D45325F524F4F54>
-show
-294 2245 moveto
-<746172207A787666204E657467656E2E74677A>
-show
-294 2289 moveto
-<2E2F534D4553485F5352432F7372632F4E455447454E2F4D616B6566696C652E696E>
-show
-294 2333 moveto
-<2E2F534D4553485F5352432F7372632F534D4553482F534D4553485F4E455447454E5F33442E63
-7878>
-show
-294 2377 moveto
-<2E2F534D4553485F5352432F7372632F534D4553482F534D4553485F4E455447454E5F33442E68
-7878>
-show
-294 2421 moveto
-<2E2F534D4553485F5352432F7372632F534D4553482F534D4553485F4D6178456C656D656E7456
-6F6C756D652E637878>
-show
-294 2465 moveto
-<2E2F534D4553485F5352432F7372632F534D4553482F534D4553485F4D6178456C656D656E7456
-6F6C756D652E687878>
-show
-294 2509 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F492F534D4553485F4E455447454E5F3344
-5F692E637878>
-show
-294 2553 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F492F534D4553485F4E455447454E5F3344
-5F692E687878>
-show
-294 2597 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F492F534D4553485F4D6178456C656D656E
-74566F6C756D655F692E637878>
-show
-294 2641 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F492F534D4553485F4D6178456C656D656E
-74566F6C756D655F692E687878>
-show
-294 2685 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F492F534D4553485F4C656E67746846726F
-6D45646765735F692E637878>
-show
-294 2729 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F492F534D4553485F4C656E67746846726F
-6D45646765735F692E687878>
-show
-294 2773 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F535749472F534D4553485F626F785F7465
-7472612E7079>
-show
-294 2816 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F535749472F534D4553485F626F78325F74
-657472612E7079>
-show
-294 2860 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F535749472F534D4553485F626F78335F74
-657472612E7079>
-show
-294 2904 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F535749472F534D4553485F666978617469
-6F6E5F74657472612E7079>
-show
-294 2948 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F535749472F534D4553485F666978617469
-6F6E5F686578612E7079>
-show
-294 2992 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F535749472F534D4553485F506172746974
-696F6E315F74657472612E7079>
-show
-294 3036 moveto
-<2E2F534D4553485F5352432F7372632F534D4553485F535749472F534D4553485F666C69676874
-5F736B696E2E7079>
-show
-294 3080 moveto
-<2E2F>
-show
-344 3080 moveto
-<534D4553485F5352432F>
-show
-596 3080 moveto
-<61646D5F6C6F63616C2F756E69782F636F6E6669675F66696C65732F636865636B5F4E65746765
-6E2E6D34>
-show
-296 634 1 457 rectfill
-2109 634 1 457 rectfill
-296 634 1814 1 rectfill
-296 1090 1814 1 rectfill
-280 2167 1 924 rectfill
-2125 2167 1 924 rectfill
-280 2167 1846 1 rectfill
-280 3090 1846 1 rectfill
-showpage
-grestore grestore
-%%PageTrailer
-
-%%Page: 1 1
-%%PageBoundingBox: 18 18 577 824
-%%BeginSetup
-%
-%%EndSetup
-%%BeginPageSetup
-%
-gsave
-[0.24 0 0 -0.24 18 824] concat
-gsave
-%%EndPageSetup
-%%BeginResource: font NimbusMonL-ReguObli
-%!PS-AdobeFont-1.0: NimbusMonL-ReguObli 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular Oblique) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle -12.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-ReguObli def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-61 -237 774 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020947 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A208511C6D0C255B9A5BB2FDEDB4D399C6CF1
-94FFAC236883767C0F68F4EF84EE696B677DE704EC3B097384F2E673A1F51692B7B260693738C211
-9F7D90FFDB21EB715FD5B8134FC87DBA320EE54C2CEC6A4D6BB350555EAFF2EC4F84365CCC0802DB
-B3BD0E3F0D9F858647DD637725C2CAF9557FDF842A0DA6A0CA0F1B442EF8EE6CBF2B03858468A466
-AC5883CBBD3815B283343B39205803C02C917D06825C09E2BB14609FA32C28D720C0E14A4B12D4F1
-25FF6281FF324DA33A56FC49987AC7D3AA206540F8127273FFE9A3DACFFE2B1C269D3DB9A811578A
-C7D532C2EFC18376F473FBB2B32EF642B19CDEC1D6DE83643723E3C6DFC87F97A7007B6081894BBC
-45C955B7001EB36211B26AD7A3D07459CFB33F9C54A40A360CB802FD202C8E93D4DB888B325CE246
-D02D1220ABF55CE646DFB45F07CB848406E470362F80CE4C02D98DD845189877732744CC16C7F566
-9F77EF096EA55AFF98AA103EEAEFB971731EBF3782E6AB725D4E9E35B2968689E8007C038CF25B6A
-E69451A4731E79AC22BD268F56942A233E52D71873E83E00A1874E04D3B22E72FB2D0671AF81C698
-53C389B51F4A257373AEBF4DE2DA1E4DA5E2CA88941F81EAE0E32D982064C8AFDD7A9A600D56D736
-05B9463C6240606B3361BAF22AF74EF89AC804A5793BD512DA2D13F4BB1B73EFCA1E621ED2A65D66
-5AAD0AD228B3B7E3D90DBDB6061E172B686E92355A7C7459D83199040A368B5697DDC3B81DDAD341
-6FF4405E1096B1240EDC18A0E9985CA55A0D697972BB11E9F1BC30765D6775BB68C69704BE200EEF
-4E11B78ADDB6229D8FA49A6B1525ADADF17122C0FFF51A08AA7AED158724AC4352EBB91ED0C157E2
-4281BDC1FD610195F495E87062A8C38E0D046DA4067EE16E81BC5F87E583315B973184E474064482
-9B2A52E0D37E249BAB31988B906F891AC904D1BB8901F0673AECE60ACEDE97B8DB7935C6488ADE8D
-FD898027424AA85A11A3DA494498B084133B857017A6D507D70A3421235486EB3CF7613C59139FD4
-DCB92EADC60BB6225D9CD0599779217BDAF4813A453989B2E56903F4DBB83D83DF4837C86BB4C3D3
-CCF98F07A23EBBF7AB5687C3E1E6792E40F92A7A466DE352294064537505EEF3F9C308C9EB94506D
-B02CFAE289F10005A6E42D2DCE43731A7AE368564B2983038DAD6987F67062199018395BC0FCAF28
-7A2B040C71F7325FA1E9A9808979B2FEF19096B98B8A0A728EB98F2BA3D33B49E3C20BE992822C7A
-1BCCA5B4E4D1099D456D8D7D83C57ECBA0FF21428024F7572A1470317CB8CBC8679A974E13D88C68
-1338C68C9AC9557F97784F4E1C8C2E61F26023ACF46232CBBDF3C0BCC5583B935FE9FA09A562129A
-8927AE73988DB0F7E733C6561CA7C9716DCA9B88208A715166F2FAE6D5EFF289A9B2EDCE813403A4
-16F243F1B57EEDE7D81E10C2DA4065A3082BC92A38B2457368EEC9C3C17296CB09819E9E642D7365
-F9A6EF430FC7DD611EA5FDBDEDFA72634AB599EB666A5DC178B0A0BD1FAB042792115EF3B6222C12
-41DCE36CB38B738F68B1B3CB489FED9E53315553F3C5C3BBCE40451E47B7EA53FD3D3ABA6CE0AD22
-5DAEE734BDFA3BF1D81C1B42C6D856A05D0924E03F7627C5EB24D7FBEA3BD85716207F961B56803D
-BE046E81ED5FDC378F9CA52C14FD8544CA7C539201BEE06487EBDC30FF3B28E8264EC7FD5DA7E080
-65B0A9147344CE28DA5182335875E9F8B2347A44E33DFAA167232A5C3E69E8C5B58B7C7216537827
-C936F5741B87FC68753EB0D4A466961D0050DB59DF3195BD3379F5647F8CFED35DA952D7CF2DED45
-EB442DBFE992711D22EB228BDDF36B8D7DBA27062D60D2271EA8E8412F4290B58F5BE26FF06F0559
-872F9DE4DEAABA015EAB4904BA1F509F6D517C6E897312DDD571D769BC474FD378AF4360E8B1F103
-AA75F48721B9E0BA589319E15D74AC0B03D730C3EF708C7C504787483F134EA6297097B46D2680FF
-8AA50B7A255563C88D594B912F5574564A1371463674793E4834AF11D14C7991E7FDB3A6ABF8529E
-1A4F10CAE79C60D37429579093DBD041ECAF03824DF9C007E96F45595A524B27EF8774A83AEEBD3A
-7134AB4435C80944DEFF5C1CBA921B0A41B9651968581DA4834B3C0E6D4DE13C1E792FCEED26A72A
-DC4D9E3903661D8803DDB58EB2B929CE31FC9F50A694116B00AC9F3EEF53FFDB1ACA3394BF111610
-38F39917B022394C75A0D467D64B89A44E5505DED7D9C6B8BA6BA098F140C9C00E09200EB4828356
-A2D6BE9EC1D5524B09C06D9C6FCB5E2808050A339B5E5FD4DD6C2035A48FE9674520901EDCAD107F
-67AC8C8E508E6003011978D77ED225F361BC0F86A98B6120EEAFB73F7377DB1E7213E02D12C330F5
-492511B4DDE08558D75D5B8AA2D56A3111DCCD257EE96E3446EF1C76F000C8916C4CE261425ED9D1
-5B58CED128DAA6C1300466E7B152BCFB5E6FAAB2519B8A98F26B29F98133AF886A0AA7E586A090BD
-A1DC6120DBB5640885C609A8BDADEEFE5DE0DA5B75A8A29E92515E86E7E66BB29581E5AFF8CB6551
-D8D1103DF60D558E7987E6F56126A13DB2C9A04886C655064E68A0A20D1B7DE24DAD22BBFEE1B7C3
-C208D4FD6A58DE78D6A0A6126EFDEE3B1A9713DEE94069A9F0A2B392A2F391C4C75327803B53F252
-CC9EF0323F84929BA4716C50385681FF5B4ED54929821594F9026B7C1297941B178C3F8A704CE097
-60533DBC6CF4B18AFBCBAD039ECB2EBDC7838A9410E7B227924BED7123944675A5DBCA388B710F8A
-F6048B03DFB713F881EA0F3B191A5CD989EA150B979059C8AADE403855815D8F7980CE6288F47EAA
-37C1097D33F13776F08779063C5217D7408D9835AACBE5C071EA40C9AE6DF685F4A9827B828815D8
-F3A672E73A418E5CB15684EB6C6FE0998A386E124D76620446907F993BE16FE5AFCEC681F585601E
-18182EDCFD3024062A3082AF97E803C47D32229D0A24596CF7E03F18229FA631175699E2F0D60FC0
-9C4F1954C5D12D03BFB4395F0E5EB6C6877083807D91D93CA4177A6B5A8D2AA500131FCB670E7118
-73F8A3C77575EC93A3ACBA37EA117DB268CF10D04AD0F079484DB124F6DC14A50AD3B0294F7157D0
-837D8F9A6060FBCB385606066401708C041594E0396A0BE4B8B66FEA141CCE4BD29366A986ADB98D
-9A6935C49C57F8CD415E93FF8AE0DF75E463E02AAC68DF064C1B789B685F84E15E512404E065A39E
-9E8F5568A7D97671AE1602605FC7E4933975189837586FB1A55007FBB0E91382A629277C36A190BC
-85AF49EF3F0F38D4ADD2B5DEE09916B79690EC83473C63E92CF617617A66DF472A49641DA10654E3
-AD3880D060B02A4A6C75B51E4E9917A2B6D8EFDA12D59DE5A8E222DC7E82F02F23A9D3DBF637154F
-719B14114DBB102BE5EB76B441D7E9990EF6420C2E80942C8AED5A1D0B19BCE115B5929AB9E145F1
-496753DD6B1798324F5EC1D0C7F26FC3045D7BB46A14110C99BA07A45EC16002CB754C0BAE7A1A88
-EB387BB345FA70B0A38AB4D532C2DE49274D4F86F2582728A2CC54B4C09D26C0CDEB8FEE6A42885C
-6207D74953CFCC583ED82DD7C0F29D35BDAE5BB251B8A2D4B1DC97E2264DCE035E359DFBADDE84F7
-37EA6A59C23D1A64D963E635769233624F7682EA34636B595CCD064AAFF3887D916867475731BFCB
-F7F96D5E5E1FBE6AABF454C2F504EA4E8EB382911560195295C87793D5F7739AD7EC7176E126413C
-D4D1058EBD7D6EBEE14BB94A1ECF28B686411D91E07373E891F78C4C0A05D2E8D90A8AE2614F7FC2
-63A762D0F43485473A54C31726F8547701D4A38D20565ED1707847AED9C805780F062B847E668E15
-565CBA07A72B0BA99F03FB57D26FA26FF579C30EED0AAB6FEC1B5DBEA81AA88F16F0C9BE869505BE
-18C1CB79657D91D6706E2A3F0BE9920655B93EBBAE2B4D0B5DF6BE622C951F2CFA42AEDBF7AE649E
-2150FE87CDBF5C2685EF36051080BF39D864573A45AE2648AD97662B1F69787031B9BC43511FB841
-55ECDC3D91E2475D072BDE6A5207ACEA1E0D2ECB1DA8A1BC4BEEC335A5C7102963E84B97BE741C44
-58ACC3D72A7E53B1F08C955F33EDC3A0DC3E7308270C0F7FF814B111459985733C62E8863625A551
-837952F3CBF32ADCFD9F345E14B585B23ECC440775310654DAF7F41E56FF45F89701292019A94BF3
-0EB2D65E14B1A1D6BF89D4CC43187ADADF3F6E03A90ED01E5D876BD3AA56E5EE84DBAA4DAD9824DE
-9984BD45AF96FB8A56C010B3C3A3C6139D58E9D69D9109DB18561B55EAD6452497840B9AE90C749C
-155B6329716F0152A7AD52DBD0B8A25B9995E1416681F38FDBDFA443879B5C4C25AA29E0DCC07DE8
-BB161C36D76EF286EC88D57C74BF44DBCB4FEFF771D3BD82C8F4E233357C48E516EFE3DB9E60EF16
-8E2C45B54651DF9A5ACB5F1790F7929BCB16CE5E9F6A43919AD287DBC8E12D9F9E97E5DBAA592879
-1A5A02D39D259F3CE273A870906A643CC18D86E23F115D2A35DE6926053D8C84B940B362E7DB183C
-4905060316B269223DAD309EB5AC96DEBA757BEA45FA3100F77F4765334EDF3D659E09BD1A5552DA
-492BE9174DD406F8353A059ECFEE3709422940A8C369919EE1F22F7C02412C995FE93DC4559D32A3
-155DD22D3526D89B16D9ADDC30CB7ADA6E52D62C5F2DFD142D4D7B6E066671EBAD08F54917E31704
-1F410CFD8A3243F8B39459C418B7B7C6494551C6F6753A94072D09E0D812351D62916383C6E061F3
-5ED864923002007E626089772D269B298DCA2CC1F25D9BE43FD8AD62D554C16AFEB7EF6E5DDA66D0
-5A810F003CDDCFD2C02FFF02BB61344968091F67D3862C1499409ECCA137B9A2A9BE314995B818AC
-CDAE27ED4AD583BE29DDE4E8C2400C5F8152C85709AD2A4737BAC768FEB70CE81A92C9657DDDB2D0
-BCF9169D272A063C75C150ADDFCBC2F5F2503DE3D13231AA8CFB396DB38E80197A605F6BC20EFA1E
-DE40CF424CF221218D51BEACE64A3DC88377E4F3EFE43DB4F4FC0803BF61764104CFF0B618C90311
-98B094E20B0FACFB94240B438B67BA298E31D3F4E31FD190E48BFCE27B1BE29D36E765E7D295E96E
-DCE09094FAC43B87E294818FDE9363FC7DC5EA36A1497EE25762D02DFA00A9BE53F87ABE62E52ED6
-F59818FDFCA643042EC13D670DED1980413950EE43372D31AE2694B83DDA42E1FBB049F7E7B7E69C
-93FFA3195A2462423DD2C022E5141783FFA07E192AEBC5070F08B23AEC9142EED56DA74F93BDB504
-78DA55DDD0A9987FEA131E4CCA0EFC51064E4B37632728261369C3FEDACA100F1AA78FB718ECE7A9
-F56296C5FB43781E63F36B0E1D34BB748EFF35E1953941F94D1A9B0FA474FD68B47183F2AC53A63F
-9F1D30B9B89C5FE54C3765B43DB403D57994701C133E42B950D9BB1CA202F15B5E590EE75598FAE4
-3D5CF1546572770BBA9A6373F100CDC61DB4E5EBBE0A93E0E51C86005E333F69110B1C8E492F2BF2
-52CADD5B73E7D3EBB53E759353F1EF3C9B8B39C230D13AB7158A5D92EE4C452F81F6DFC18803280A
-A023832FD0DCB482CE5AF615C952BC3F7E58F6417D69775FC7C0D5B405AAC632857736ACF32B2EE0
-F2A2C0F3B3CAD483C614505BE94706322F2A2830FC5AB592907D0291ED1873377E7A6158140C2CDB
-1B0E27EEC9CA50176102200992308045CCB5A169B61EA0546778B8D280737319046716604945A21F
-2A1CB9E15E3A5DB31E0FB5A3B0AFDFDF6F3424B7536D473F9756CA3694DEE4301FB1AB1AE47128F8
-D2B461C051C1B999DBB010E78DD13AFCBBA6F7D5226D540527F17881A18F551B3EEF76A7E28B4FDD
-879381A2217EF2FF9F9982E9EA70AD2003B862D7C36D57C5FF9FBEAAB56040FEE973EFC3B34D8319
-1960010110BA10694C17B7635AE03CC1CD087C0B05522A7A791F0CA34022A3F5860B536D9551BDFD
-BF560A07F63AA4E687407E5E48584E689591F1B52671213E430A708C06A34D2E1D51CFA6B328A122
-007C81B5EB263B967746961BCFC8772F8502DD95898724ABF369B0877F3313A167F3F714023C229C
-5757D4D46FCD9B4AFECD093DCABE52B78132CE9AB6225C9A344C4BF8D96F2C50C4272CB9AA0D606F
-013B2642F8C880E08EA2822C8CF5097D2CDB64932FE195ABD5FDF36D3BE123AEDD8BA2F82A8A628D
-BE3ED6129DC0FDC4BE50D5574AE4FECC65062E70F4703BFECB35EADE196294FE173EA57938679DBA
-6D15448FF44C0D1A903B202439DA93C0B0E612110068F8079219AA89F435E44D0464F54833BEB338
-670BD820D941DF4B31F51B895BEDF833F9C43CB7616DB80F988CE72FD3C12C7D49F740CF85B4766C
-0ED398EB837695D102DEC16E24B7475A0F5DDE88FBF2D6B94F126417C811E8362B9CCC52D8891C13
-C10937AACC228D621D4712CB9DE0BAB60EDE2A97E9292BE04E42E6D3425594DF56931A61E1F96172
-6AF6E6891D63B240E6E79E5BF30C052091D681BA1102409874CFD8EDC3EE2BE331676E31AC00F807
-91D1019BB789CA4F5907F4823B002AF3581448C352BB67D80FDFFCD1C5BEEF60523330AA2C045600
-8F62DEB55E69AC2F86369FAB1ECC90D2487954E61117A90D9269A65DFBDF297EBD29C3DD1F62755F
-8F289C42A534F59650685F8576EA2FC5D26B99B8E3DCD3F1FEEC73131000F99AA9868EA9BAC0B56D
-AE2CF46DA6CC1D18C0AB8D77BECFF7B89992175CBA2E22779C13DB9DF53FF5B1C8FE95E164997D94
-202C37175E562C8622989B075CDCDE173452C064274354D5DB8F7D5A78D48AD4A103B9E47500D08E
-DC7C51C1F3CFA7F43C3686A3C24A7EB5018B0F419961564F87E212CE0A0741AC68D6822C7AB9FD68
-85F5D0B2AC249CB7F50E2353CC4B0A6A24562F564FBBC7090C3FDF1284AB0EC615E0B3FBE132F315
-70C8A65C814F93910AA4BB80D516CB70D2E1D11969238E6F022D628FA2F33A0A15C4EF0CE7F753DF
-80A8AD9494885A1B9ADAE6C38AC9DA6FB0A61696AD3A502630252AD7B574C841117D34BD20BD6581
-217D977B35F5D04E02B933E1E84F5C090F6615AF484D63265D28517BA74BEA8876FDA332A84AEA12
-E6CD82B94AE10A778CD3A216ABC08495EF319F06AD6FF8ADD237D911F846A514FDBFAA8A1EC8E0AA
-9F80F11F1CE615519A4B044F3D1CF1A17D7F3D2174222A5FFA8B39F20197FF6CAF250B6ADBDBF519
-1C525070C8D38220FB501C223F493D80F498621A02EBCCD6EFE914F16B2A435D60C0A1A453E288A5
-3D818FE1EDCA7D55A26A017F2EE47A816E90D6C3FCDF0035EEA307DFB06D2BCCE43458A67354A4ED
-B6E5C57233DE4FBE41ED07EE5EC77A5DFADC4032138DA9E1B74428CAD02A913E40152F8063A774D4
-FDD4070E4B8A6C089F199AF7C529C277E902195DB760D81EC655DFFD1BB283F3C5AA8BB58F2476BC
-797B2892E94414ABBE96D4DB93E280CF7DE23EB852E7CA954D6682A6F1A4BE0507884C2A05AC863D
-2BA73F3B54668397B6C54DC2F4183130AB414875F3C3D8792BF7E5FC4D228DF87748BF0B14178DB7
-E3FFB7891D700A1E9520D778B095DA80E4801F53442D5C073EDEB706A5DB8466FFE7E701ABA9C364
-A37169F585C883A83713A61C9C3BD9336A667EA4E3DB5F4DF6BC6A552BE8D3EF093639EC67E5FF71
-8959F9902477F5AA894ED2D1CD312ED82EE417D95C49C96671B23FB0E1738E892ADFFE62EC1C3D4C
-BEB6CD089C98DE8D247DF7ED17DFA2959D3662F105E8386D75AD308480536959F8E6CF8F2C6937B0
-9F2E8137C811327D6B165ABE46C51834A955FE8306D10033F8C2A34667F13A8BA831CCF52C7A21C1
-3DB92F3E77B55CE291F6190BB1D194A33FD73151C3F61ABD2D8A0C9BDE90E796BD996D2D0094DB2B
-E98657E751BDEEFE8A43EE4501B98F0CC6D80805189438872A60047A8CAA9039893530A3E5F6BD75
-BB466B25165737C939AFF3EA59BFF4A7DB09C2A5B36B8A1F0C6C5E5870C7C9412589877EF44F8428
-4B8A53B5B74315CE72D2EAFC631BC4CC2E5B71DC958B5A6350CB5F615C3A4502E973622E3E18193B
-69572DEF1D02303A375ED60ABA1BC8A179FAA0F221A49078FE15AE13383585FB45FF4D5F3BB3D0F6
-D8BF62E9BD6BAB3C9A7D38C8A5AB0BE57ACDADCBD02B1DC7952D73AEF702D406F62719922BEA96B8
-FDC9B879708E794891C7A0A42F2CCD6812C3F4DB030B5178E3A627C3E77621D312CE4EBE815CD387
-7208FAD92761A5396B67E835222609F823728B1C987857CFEAAE21F2AD5EA9D841212993508091A4
-A2C268BF1D8DA1C650F6AB93995E7C13A3F84DB55748C626FD09C0DA1E3325CCB0BF091E996245BF
-51EB486680162BAE63B6513C74CE83B92359938439921950D713C69324A87BCE67B45A030C9CF10A
-DFA0A82781D49FF224AC57A23C6CB321F95915C5E14E41FA852F66E1E2044A9E7B1DC3BE9E818515
-D28B2C4D2F2210098C39557067062BA4239F2AAE28816D999955910298A450741947A9A1AABCBD8A
-FF3530626089978C87DFC73618C044731B6DB8007739A9699ABC354A6F985E03C11D750B8B9E9AE0
-5436205FAAD1B895B159E2C90562B82A62EA1A7FFB501767DCE2B11C51D55A17529EF5ADF0A0EE9A
-96D0E7E89F68E50EED813836531B4B46E9071E84AA413F4135CC882CE832BF78ECFA7CAB0C9F64EB
-92C86DFCD1152BB7D4AB33831AA0C139B555967F6346068D5C3351A7A4368EEBD2933E6B9F789DAF
-37EF536FCF965C397AF1B7F98AF864B301F3F440B7ACF704B59540453678FD6C1504519481893812
-3E2F47B265EC4F5CF2172D394543D84CD4281165CBEB11349B315A85DEB2D1699507B0C8C110C726
-62EA2959C4962FF093AA5EE6F21F89B3CCB0149CEFEF1855B9A48D28BB363416C015A1F4EA1975C3
-D8807F616C5817C8162536176F464A198EBEE6C97029F15F414275A39B8219128B8C8542E9483550
-7FC2D3908BB0EC375771280B9EBE87E827811418EF93E52EF70546891BFC0FB34969FD7DEA4CE752
-4D9EEFF2B46BED908C0FB2E02EFC1D1624642EAEA1CAC1EB4841E020532E88E59AC890E6C3F44734
-B99722E9816402D1D0FDF8045C5481EC055100836EBFB48E9FBC392143032C909853C9BA38A19363
-141BED09DAF02FDF4E7CC9808321CD0708A1B45270BFFCC3A0D7C27F7E781713D5DECE82C72ED303
-86B02D14575A1A6447547ECC7FAAC1BDFF332C92984758E242256C054656CDD2C45D46E67AEC6F83
-9F95D74E222A6EAE12EFAAB723A7C816D4E42D4ED2725A794743F67597F3DB8CCDDE45BAABC25726
-B851E02E56341EBE69E4D91F2A233583EC816F18A1DECBDA4AB69320F55E730617360FCFB8AC2D2B
-737675B406297F7F8C4BC370CB084C22BFEC5FEF02E9AB290282F7B153F0A4B1AE569F1E52371A43
-46A748DDE09336CAD1F5337FC3D7CF0677091E59480AB15021E023E356B0E1BAC6C6471AD53625C7
-0206C338536F4D0D40733AB217E2297F86B593717C61458B6C93A16027CC886A8CFDC01EF19C34C9
-A608B95A84B6A2E31454BC03C10FA55CDCB7B1EB7DC16AC1E93981A46DECD7E7F00638DCAC568744
-69A2D9B45CBC81398727E4ED3DB5DB31965F358D8179CBF934EE2C4D652C9CC211807F070C80E3A8
-222B4C31FFEC8DFB9EE07A94C973462254BC1B1581903EE6F9AD91524A787129A63FCE048B45BBE6
-855826750C586B6B23B805FEC3E7AAAC079576949A06F422FC2C826BDB78AE96135E9E2C20C2B2EF
-F6171D610B2EB8635ACAB7C5C5ED9C9FFC26CD54D2FD4CB9E4294E178CECA1E16CC8E3FC06518BD1
-6F4D63AE2B435753538834CDD9D8AE7DE624006CE688938031336351A6578C304C2E5480A3FCB43A
-8BEE4953DABC30558B7790C6E7A6F0F9FFA557C50417407AC6A0DDA1E736F7070BC89455FC293453
-3DB004AA9070734C8C2608A07330E421A0220DAB99F8A77489132F6413ADB9EA637F3B75948050E6
-67276A55BEB09D4153DC126BBDBE0DB9298AC799A943D72AFB769BFA1488D311BEB86A907EC9385A
-AE4F77835DFFE4389E3D9ADED1B08BBC2B1ED6084B3D1074A326CCBF38E06BD026919107BD03BD9C
-30470DB779508DFE0DC82DFFD2DED749E872EB7EB9DDF509D5319865070DD76846C34E4E43691AF4
-29AA40DB4BF2CDD50B275589987D8081F7C5A0461AA5D1455A660178A94A0BA0DCB69C3CEBF5EE04
-26D6534F6F919D9795AD6A0E1A1F452AF3B4CB2EA54D6011FA809132421D111EFC51174E223AB6A1
-3596411A9723079231B050CEDAE7659CF168C39AEA9C6902C2CD37D25492CEE00096EDD63DC7643B
-667FDFDE5B595DC54F0A72C2650E1E46990584C78A5CEF9BFC3C5F88CFB0C49CD6CADD9DBA675177
-D601927D75C6902B55AAED0E9E3CB52A577C887D581B3CE6201A1C77C9546CEE5A13B92963337F17
-070E2BF9F5C5E86B84225863874618AA50F4DE855DE567BF2AB7163944ED43DBD7F4BBC0E1623180
-7C43DCB47B2EB694E6FEDCFBE26194D2D9943A1BFE32AA1E5305F5E341EA021F91532162978DD1B8
-C5295A5E7551E2DEE46DC2347C6B32197AF430AF3BB676A53BCA9BD1EA88678377DC0A9A86E2AB6D
-E29E3E261BFD5573C66FB5687BA9C0544D894A759866B066E1DB5C66E60AE071CC3A1C4AE40197CD
-E4EC723F7B80137619DEDC99AF57A5497D6E03C1C9E672E74F48F6C213A3CFACF2699CAE72345A51
-C71C1D69348DE5BC5F443EC0EADE1E76A8A33066922CF3869E3C1D26A3B34E540DC08EA4DA2DDE3E
-EB17C16790DA4EF1A3A76D71D34B788A87838BF2A5A3DB8176F9C097D2320050A79EA6C4A94926DA
-11ABCDCD26DBA09FD33F30AEED977E8B5AD928F3967F607628859429DCB4ECEC7DA3411BE35A0385
-1017B535985632639D378CDCD13B00FE537A49FD9EB6DF1E3AAF5C41EBE35721FA6833C2FE08AA3C
-FFC3477E7FCEBF9EF9F4DAE62FF78F319481C3F1E72999C8A493EC6EE295316B58A5CD62FFAB62C8
-96E521B678342F04BCE1613CF7F6778CBF5227BA20504500D743270771953ACBD5C6586432F3FA6C
-0987BAD33B88BC6C15D29C4B3CC54A9DD72A2357AA5BAEB2CB057CDCE72DC80CC98C62B16AC50B4C
-6A7641379B766CDDF990DBB2FC7F9CDBBA755B6E3DEA438FD6699C30A99A8B3178E6D613AA938120
-835E517431D28114BCA1AB745C11FE6E52ADB82B9D3D53A33BCC49740C93017D9531ECF43831359C
-5C93CB0E926DB440B139E3125CC2E069B1CF6D96EF68407F32DB517242C3AE0BC6723E560B0F45FC
-7F87A5E44E1751C8B7F9F669C24AD5CF16F84FB03BA121B86B0694234D8F2C9C947269AF96FCA08A
-78F736E4E04ACEA44C5BAAFDE360FCD8BA6A59724CA86160A5527FD564468123D302DB45173C1B21
-6B01DC5B6D3415B13FBDBBD3121A5493374B3357EFB131CABFE5087AA1D2C7472B0377066B3632C8
-2073C6A846285CC953A8F28E131CF587B35217EE498D9A1DB57B063CE068DAF55D8CC1771C0C3099
-9CA4FDC5D67BE4E7E69418F6334BC6149000821B89A7437CCDF9A6A0ED702D5968F1E04F7E4FE9FE
-C9D1E994885CB624035BBC5426CB8EDF0456828F8EEE75BE491B45FAC192A405EBA25CAA4F4C66C0
-DC234D7B417628DA5276C08260BE512B2432256C401A66E3B583E69D23E9FD278CD5F2178544D054
-16B9B4F61A88A4728AF2CEED07C08E207F31D644E8E3BA1E4E2F9D8E30936BCB9C6AEB54E37DB46B
-D64F2ECC1021336D0564DF0F18E5A6B6BA470233D8D41FDD9D1079706EA685B6D8A740570BFB78E3
-984BB155C3155C69BCCCB41CB51975EEA1C1B4294CB546CFB03DC31BF86EC3BCB1977E8F94A771CA
-B09DE12A82F1D6C791FA7800E5A21DF81C9C8FCDA78622ABE75B54AEEA747AA4F26D563200992E33
-7231A430137C720A17D44F3AD6CFFE63B2DE12D3184BD3E151F955786B8DDCCCB290C42718F3A219
-1759DF76371C2FC177544A6C425CAB14AAAB31628A9CF9D71B5257AFF0D59843989CF0D747375A26
-DC9ED29B66AC2147DA0168306C48C2484C70CA92F33C0C138F92F276F5EAF5EA3082A8A1CB12DB66
-1633C2F71E3B69918F509060AC949FCD52C36498A2ABB77D139DF1EB33E3B846A7C1BBDCEF5DEECA
-4EF0AD250CEA9C2751E13EF7681E8FAE0491CFA6C144DBAC1FC39D39E76EB12D3EE9CA159AA77D27
-94F0C433345B135BA632F544082BBDC9471E9FA3AED3A7D465AB7158E8AC97F68B1FBC8D368E2350
-45C18EFCCADEE98778D894D96301F903283C5AE355A863BB0DC5809158F7E108662D04A5C1234915
-E7BD5B4C30F9EFA55E702E54F87FCA06FB321507BC57A1E55CC117E21AA4E3A4DFB77C1A949EFE36
-6D93F2BD827EF8CC16D387CA82AC039F77FE995BE6D9AEFC87F8D809E90C1017803BCFA1C737DAD5
-F1A631EBE6894AD20C70791665E7BC71F21C2C3F4462F60FDE75C8A377CF49BE99314663C6ECB538
-B1BF021B2F2174D2B22CF6FAD115EB0ECE8A2E64097A5FB0A2AF666E1EE13276AEC59FD0C9D4BFF2
-3F71E835984E5EEEE36490C54E077AD7355DBC98BDD37DF29B3DDF8C55480B7349C4D17322418705
-796A8C521FFF920DD11773FC44FC631C7D6E9B420D7965D7F62EC7385F2BE30A51E2D796483134F8
-40AEC71FA19ED1272C27F98F2CDC9C7E54DAB585AC1703ED08F5F9E825564902EFD08EDF99DFD494
-44C21FA6BE16CB8A1B6D0C8A5ABF80A50BB8D055483176FD0AA07EBAEAD88FD694F96FEBD60751E5
-C4D8F9BC747D4F4030BCDF9B0370B7A5E0A6923FF60DEA16EF47F886F10CCEE6956ECF41A21F7C59
-6F3BC78299A9657266807E01762B2B2878E551914CA312C2A68D34CD91E4F5115EA1FBE801346E14
-AE529049089B6B0273E258785773A9CE8E4B6C4211CB7C2767319576758F811CBAF3A3FFB41B3130
-6C49F3798B698A47BFA2E3CA0251C4D90C0B02ACA28C611744526906791D9E157E54CE4E1BCF5B68
-6990BA8AB7897D624EF00EAB92CBAC255AE9177DA9F0D86447D35B452CD2F337147B5D3EBBF2B952
-35778A72914EB3707EA78294B3A3BC4ACB19FE87C72AA1D982E4B822F07B115CADF4D3E7EE3D1BA7
-08653BEC6F0A352A0C33252ED0630E7274961896D461EE8BF523D5911BAC1C8AC763E5FB11FDD217
-4E1F129675969C195476C7A5E18A81BF9A11ED9F2336D5301E3BD32174ED5C933E8C85D6272EA218
-52A6F7E2AAB174E0965F73E0EF89E906BAFB181DBCF8B1F5AA0C12D12C6272753C016AFEC2EC9F95
-41B8757874D6F2E061ABBE8B29281677246305B3C41E90418426C575BAA216CEE3C5EC29B2FDEE1C
-77C14FDF940792F48A56AE80AA33E370B037CB28A7373F882022AF378F26B6006A049FD3B35074A8
-65C97D153352ACC156992C00DE26AD21C982C71F0EDCFEB61593BB40FA5F2CEBF23C4FF34A4F4BDB
-73CA273C269242D1C6117262B7C47771F2619FE5710855134A80FA8F92BB2425CF88940CA3450F81
-234ABF2B11775929B12CFF86442B2AA0F4243D324A5983E5D1829775B3C7A111D5622D1C4E2B2A2F
-982FC8A95F789881416DCB34950A393F4F1720D2212F3D343A17683060182355DE9E4718506D76C9
-184F8DAC55788D7E603CFAF4907DDE965A49C323DFF425FE88C09AA4A4D16283F9B14AB9EF1BB885
-A954034710B4A9DA4C88A8A0932B18D139A687303EE562EC9F656F12F3E8F27DAA9C75DB0FA946FD
-0E1A982BB58E040BFC0A49A4AD8CD668493FCB573C849EC5474049A693CBEBD4D79AC7515047CC34
-7A9A7570C90861F3ECFB57B9F53AB9C0D6B05C8C570A8F3C04D58555A45524C98FF091B8F8A422F2
-E0E9E5A7B7FF69F1CEFC13E42F1CA276BCD584516D266BA6838D5E9CA9E9854F50C7D92CAED61AAC
-AF758A7C7BE59C3BAA82BF32B691ACA3E8EB171E08AD22C39FBE586A54E6E4DE2CD86B31138546BB
-8DA5834B2C6E4838547A1B67E651964E43988C8036931088904BBB589CA901E7EBBC094C0DA81E09
-1915D9E46828AD8596FD0FCA39FF12A6C27A359337F973809E81B2E9E3D43B3146F2516667E607FF
-EB9AC80FC95A7B7D4DED551FEE0F3561C70DB2D69ABA96673E39E3397F1C3F8FE5F48BAB8AD6E0ED
-8901F90F6CFF24E80CB5DCAC498506C4D01033E497C1241E413B022227A3264DA68BC3F91B35781F
-A2D018475C199F43CBA7D3A0D5697B45321BAD2C394B207136E1E16B41794975E8903EF2B2E1C33F
-87CF72C325C11EC0B92FD3890ACDF60B521DA32596763BDFCDCA837ADC6F26F129B23CA32F9CD39B
-33E64576970DF3C05B8DCA4BFE2F17E6C5678B84D69494F1DBA9FE0446AE6AFEAA1FF245C07916C7
-B7569E6267C42B459435A1D116CEC665B311E404171774C0ACC8DDE96B0D9167C8CC7D99C4240559
-2D745C4428755500EB4719340D2FC6BC215B67823F69FA949C08B5EC985D7AA87C9AC1F9BCC8994C
-6CBCE6027B7D1E0C22A83A5DE61DBA05D4AF6884C95F46BA7F253E0B2337E312916E163CAF9DB2EC
-56C5425990FE73EE53E42B3BCCA1CF642F02B0C5ABD529B568E9ADFF865B9DC190240AD78AD226ED
-884BED3C285B4CB0E3929E805C67F1318D186504D92085764B70DE6AB5AB6990F181BDA50FC31262
-348D980EC76608CF08176C2502E065AC2D8EA5CF9E2D44E2B70A7DDC7B922047C471DF8A0B2087D1
-106B5BD8A830EC0E53223CE3C96EF56E5541191167860EEA58D696EC357EC55799438C90156BBF2B
-13A0D5C9EE93227746654ED73EA5B9CAB61DAC5BC690F89C87FECAF9AD03BD39E438F43B81D39E07
-E0422F94E8B096AB38C88BC2E1A043811D8141C1A35DD3A6DBE41620E83C8ED3A379CD80D4F9BC30
-41BB44B933DACA7C5D4427AE94A176829F24B5968B713431CB8BD9F53080832C6B784CEA9B515687
-F121983EB9D9C9CE8BD4FA3BEC48AFE64E643B7BD86D8383D07521FE5D091392BE124CCC91113604
-3824B686988E7C83AEBF406D2DA88FD952D0FA9327F4AD04C55FEDBFBFA76ECAE8A176C516479AE1
-467125B7EB3C9E7C5B103BC0C470946346DF271F8EE19DF7E3FF7478C35EE059297F4BF21A5C7B95
-993BE6202E897776952A7ED0613A5CACAFA731FFC633CAB62963150E86EDAC796026CE02EB235B9F
-7A54E0B0C5281567138A612BAFE409A818C216DA8EAC5EDF9D1E3A1E3514AE50735A111B4D2AA083
-4EC6C11E290D58FF340F82F0E079F1C7B3566F2336EAA45BF72BCF88569988DB5F65D4C1E59B50F3
-41E45A899656A0B522847ED567B49CD5284FE50E5F8652CDAC1C076804F2B2185F6A51ED19DD4941
-2E65A0D2DBC844B75E2DF71B009776D9F97A4C6F786EFFEB87A307FB6B912BB659DC2BCC6D509A9F
-BDE87DE8D716040A8551B6CCFB7743978AD992D14D2B85CA052E87326138DB196C24593F8F7ECD6F
-486F85D1666B9DE2ACA6C7900044EE369D223524664A2790B773F9EA26E0A4CDFD709942A44298B8
-249506EB9B77BC887DC0EF947DDDC7CB3CFC6B48F060DBF032A11884E6C226D9D447A5A458CBA325
-D57E144C6DC295262763E7BB8FF6A0CA473EB7661C12E0E8E23EA37E8AB3387B9E54686F3E57765D
-4067E521BC1AFAE52394227793C737C19208803F2F2DA920B553E2AAF94EB992AB17E31B58C15CC4
-AA8A1B444DF5B3E7CD937CF03E1F7FAC63342731B4589F16939D16E8E497A74CDE5686F529E9495E
-1603D74875288CF53271DB9313A4511B104F80B179FCF213558970A002E945281BF3AE51E668DD6D
-13D9E85152747F562CA0B75DDEC8FE9FE31F8D05B0F59E802888A7A4F19B29954A31108D2F041367
-DEBD6AA1CAD856BDD1427E9EFE89956FE28D500CDC6A0CB80A76902A08D0BC6705583243F1DD8020
-749B257EDF4803BCAA653F7FD6D8B91690995BA5EA3EE92FCD367C11601C6B8ADCEDCE67B16C596C
-5D200693AC5FA15D4CC6CE9DF7A71C8A925E99F5085313D60FAD25C1BBAAD28D4AC2B69062D68F39
-0530A976319A3904CEE44DC9451E441AAB4780425440F8C499B81460B5D3E268974145117ED843B1
-71BB14AA84C3A084A7D8E07B9979260675D5CE6534DC176DDB60DDE90F6A3674F67462EF78195F8D
-FF74FB5882B079DEE31FE92816F16CE1A70D07752EA25FAF5000ADF79BBE7D17EB1BD2F9BF6CDBB6
-F078CAF97986442680A8FC4121866F9CE86C385DE34E30D8B9768A0136D9EEF79A4B38EE99CBB9A4
-D32316564C9D56996E2595753EA71BEF684834FD030D38BB100E2332B026B046316A53270A96DAB2
-182E994E91262FB03D1AFFBAD623F1689228409884F91DBA153030870A7BEB2C7EE2DEC51875B137
-33B7929041F8D23A94904BD54DD4BC9B432DD0C78DD81639F46D686FFAD39AAFBD1B6C1A37E248CE
-48F23E12464D5379B4AED0D50B5A41577E6ECB75270E9AD3EA7D0FC09DAB271FB18B51DCFC0069F1
-5D72546E6C51049F3425AD005F88FD7F02042DABE9F097F9D6A076B30D8CD777B1EC12BD163FDABA
-5972EAA61E3C87E9AC007A052B1A3FFE14D7D43C7A0ADC89B1DD4CB4F9C762A84A6C0701494B2D8C
-4E4E1A9245738BE4111805C2F153A20ED9FECF2DCF4C8F7C3BAF84D60454A7403D4F5F81C6404173
-A7BA81BB0CEAECFD493D877465DC5735D43E3102CEC57B8A589182FC65A4704661A9E351FCCBC731
-5A87E62F65D24EEB9CEE979C6E10DBCF5C162ADB926EC8CC9BFFE381F6B8A3AC0A19D1631BEA2938
-731AFC99E8EAA39BC75DDB3A39D01AD8F0BC1838F4D674B9BEE9F6F7BE4D9C8BD97E8D171EFF330C
-15B76614A1FFD25B3BE19E4A201BCC850F926ED51616318C965AD2F0E56F9433B1247C6D5B72EDF3
-D408A3E0674A509BF30BE813A5E669D72B978794683CA8B85E3469EACB167C30F7666DB5E081B81E
-E99ECFBC1704B9646B1A29E4A4CE5654CA8409ADD60145DFC54225BDB8485E39CC98CBC3F38FD0A7
-97E5DFC2099452A2418C6636BD2D5F6B24345ACFA65F4E7DBD2D0AA0C1776A4920B4466C509BB5BC
-7D6627946C4DCB38A27098B7B5BEEDC2B3BA18F927077F71E38644597719652037621BB350BB5369
-DCCC073954026E6438FD8393DDB3630C4473F06D9FB9E422E435566C396B12FDCD5605DFEA232171
-CD8EF298786806E9159B84599C26D4C7D8C3BB064665CDD072E2083190372AA808B2268B3FEC8878
-B6420CA829BCF995DC20E067EE6B8E44D2869D51BA3AEDD1763F7F8D2CFB8EC41E6E9E0129DE5343
-1457960CC51D546B10B8B6CE08A1C2B79FBA448DF9783D815608A16C55E589DCD8EF6B04C66232F4
-7A473973A35618000D79B8173258B7365C9691DDFE47B16EEB08B28F881828B946FB5D6FE10ECC6A
-FC4EA1F762E90B3320403382E42AF4885B183AA48DB5E4DFC9A54E0B4FFBF7C26EB17A4F13B4BB93
-12234434FFF05549E7587BA0373ACB3E31418BFAF400D8938FC6466B94273D1735306AB912AAB13E
-31DA3541C1733E2A7E4DA5B82767D37F3084AA7A7C488CDCA7ABEF77D19E42B4448ABBD346E9BC28
-8ABC4540C0A1CFD0BF46C5BC7454B25E27E9906A3E6CBF678BFECAD1B19B4E42398A210CD567EC35
-FB115D5C0DF0EEECE593982056B0E1D14C292F70B3E049984F8881C8B477956AD3140B4AA22256DA
-AC0D11C4126808B5B9F922BCC5F24A77FF352E2C621A3941AC07A20E550A69C49B1B87D116EE6F2F
-970918F0F1A501166AC4423FC212E4EC8039AC7F9C212D864F418CBB92948FBD588228108FAC1AD1
-837070512305C110F0FC3FAFE6E1529C2BD0DDE868A9EBE5137DFDFC5C12A3D08014BF0EE27B1080
-02AAD6B607F5C5C0F1B1EED3C552919C9A2E97204A8127F97B1066607ECFB47BA95EF2B51F007C29
-3B2F6A63041A9C1120D9CFCD5357222E5B02DFC73CF94CF9B5CB00EAF073E9BF253E30E09B50341E
-57BF245A746EA31BFFD0B00201C34CF0881BBD1006BC9BA7D420A48E53686B598BEDB3449924EBA5
-8D5DB1B1B01AE2BA281D5758C99EFE38ADCE18F7B182FBD0D0622A6EA497A4E7C00C7D17299A2765
-EFD8DE376C214D01A21819451FC04A0277EC84A151FF93903D61C78AB7886911E36E12526ED855AB
-43F6289C1890222602B8EFBF15782B374AC1E580B6E963403D6D15A051DB8558F2E61C0B9476C6DE
-5D4861585CF515CE951732F20D32969F39192FBF1690D242AC04D47E0C53D467D0FE4656B9526C0F
-7F852348B0437737CB0F29ECF9B54A5E17185236DD0C16349C3496F3ABA569EA20E343F6D771210C
-39DC932DC65ECEF94575C6E76902CDF6C8C8361F9C757A2577DA535187FD526699917CFE0AD438C2
-A758727B306BC7979547E68B94E87ED820614BDBC649D469EF6B4E4E3DD2EAEB5F80B22FE576CED2
-56495467C76A75F589460061E03F3A1B065121A5ABE3E2C51148B3DDC9F624C97889AAF7FB84B158
-C015EDA5670746C6359D27B0C2BD65144F2B88A64331816DA904572BE398E015A9924218B3EEF951
-23AABFC3AC8217B7B4F691219A1C9DD0A3EDD5C04E63ACBDE71B423522532561F4B71B7028415C34
-37E346BE728A415596AB749015C1D59BD8328E39A850CB98085B34B57FB52DD1D154F98FEC49B3AE
-BFCB1672762E4D2A1ECF02787F59DF1EBF2625C3631BED849B298C6D226BE4E6EA2AB66A287D2BA9
-2A6C9C612A5F849B3CB3C25F17164BE286F6E4F5E7E4C9EB17BC68AA5EF0190B64696A570442E1D9
-BDD1A30E7692524E30E4B4C3DF84481DCEC6E10E7308E65DE9D90099F3FABB3F4F766BB86CC98594
-6D2003E21287761A7386CD8461615B570BDA015F5EFA23D18E83C325EE444EC166A1A32D9818C2A6
-5A092D44156C06D3FD079B92450B8A491CBB3529DDAC7D95AFE8EAF33777FBB265FEB8A4B9AFF2CE
-CEFFF49AFBDCF6C4197497D3B448866D70EF28D8E4B17E7CE95F43F64BB48C4A73EB84B26650F62D
-3E5199D64DB0B5B87702650ED0B850FD5D16C848D096E4C7E61BC63B2A3ECFC099CD713E12C91A65
-77A88D6F55D348617C7A49890A86EA8FE2045704B5ED529DB128C9B19EE129E5FE6498CC97087F6B
-DE96007C9D01CE9CAF75646E5A5B32BFEAD9362A52223D746943A2D09C536CFAF78E601BC2D2F0B7
-63AD722E3A7AE7069D65F9F2BDED7278511D0120F5EA071D41A69F8C2A2D720D3B24B4BE61C83FFB
-EFFAE21B0560A6FD1A44E53E42E0D10E0E93F421A8A7E167BB65F0D7F1DDE2809FA3CDFD931CCC69
-B119C83238C1C00EC100D8E7AB1C7FB02EDE97073C8A5860371A8132BE391EB1C397B61F93876FEB
-438C288EF2E38DDCD182A5CFBBA994A94A1BF818312CD8234215FCCD7C240A15AC01A885E1179E5D
-7D6305DC2F534BAA141F25EA6A5F356486E5FA0AE3C6980A9F5E8E99E7AE5B95AC42977510970245
-4FC951E4319AE4B1DDC9B07D0998372C0A95ABA6985A4DBE6DC633154FAA30ACE689D36A7F17011B
-F29CEDC58A6692A8B3B0A5742E6CEC2F69B255BCEDA762DEE72F125EBA98891CFF4D88AAC14188A1
-8D81424979C9079E44890D94EE094D4CADDC1C7AC5F6791FAB8849CC0240A579ABD800EFE3AA4EE2
-F78119A3C2806C05C2B1F17940BE73984982D1C0065433A9BD658EA31AC819DA9A11B87475BB565C
-C294B6F302FE3F7752ED9B963C5279B5F1196762D0E12E6DA46FF9A0CADE3876D7DF695D8965CB4B
-47B351FA3F759811269376B2C3134403633FDE27C9B024F6BA81F3E1699CF64A426618428BA6C326
-6BF016C5DAA5FA4CC82FB6DC23FF2D742160518CD3A65ADB38E53F1067076CA1625466E0C64670A1
-564A54CE14DC5C57D24A12283FBCBFFD0FD594AC2A56EE58B552F7586825E4FB1EC23F8221711692
-C8C56F42272B87EBFF3865191F1C11943BB76D8C0CFC53ED452AE49404D2C8193ECC2A7BB8CFBF24
-870ABA38D2CCF7869E9363DC0AD94FACAED5922B324DC3B6FE83E7B34FE29ABC1EAD62B49FFBCB81
-1ADBB5148D5AC2743E3A058386036FADAB6FF071BC1C3B8023F908B6FF48DB0AB1C9C67487C35211
-D40995E1892C8B66AD6C9C6203F6F8B513B11117B10DA8725AB45B4437B5A88A96AF3178D856D601
-196E8162868A83DA64E408FDDEBD14D6591881EA652032CF2F88B3FD6C0479C8F89AC68D14D01AF0
-CEAFD95AD146E68FAE01A07F39E7A0C5E4FFA6D6A91D710827CA5ACFE7D1F946A8D7B67621D60F53
-41F32C12A6EFB03AE5AC5373A382C044A276F6B41C173D0AAAAE0C1DE4C3CC71EC2637225CCBFBD4
-5EAB92BF39357C57195B410F74283585B12B926438AC72AFADAAD2D0FA2CCA728C8E86BD3FE75D47
-B8BEB96AB13B5480F7A3D5741EB51E3E40C21FF2ED7D9221D9877C7D1A8CECF394E4023FCF8C4EFD
-B38B839499FF5CD96A46AB4FDB46F35D3B48B91757C0159328120E93CF1F2739E936E28908FB1947
-1D3AD7F6F1AD2BD1EC364986A411CC1B547D0CA104FBC10B1CA7B638A60E75485574034561DB345D
-DA68415146AAC632DFA34769B6ED7D7D4694E92CBFF4EFB16B55495908102E85E827FC623CF1BBE6
-A13CBF64E878E1A2A159948B5529B75E071744A5F0E50DF18C110B0AF117CE7F33F8C959D4C98CED
-5A9D492AE6F56DA57B0F17495DACB130660BCEFB064FD8309D965ABE8D2BE98F6898C1B7A39CBBE3
-E75DA0FFEF6CC3945CE76DA3BE915546FE8A5310130AE0ACAA9AB73C7E041C00533B4BC7724657AA
-649B9388B791AAC5EABFCDDDEA2CC67A0FD0AE9BE37DF9AD40636538EE55A83F60E9E026C64FBD8B
-220CEB46E67410144A520FCEACA252E8165448F84D8EA083C793AD09B90B3EE83B73FEFC3365C729
-E3C738894B8C01C2F8AEE0CC8B114E1175EFB44CC4C6CEF5C8754B1CC7CEC200AD8BF1189D741CB7
-5BCA4E88BE959E32216AD33F674F49AB20A354CF3969F1611A95D3934E148831AE7C81A7EBE3C524
-4F743E66A82E10D16CC09F8194EA7A596BC5981D833318AB4F7DBF2ABCE543E410B649D18D146F01
-486159683DF61A3F880F9B21EBFAB77E908C6CFC79F89BA5F51114F0BF7C3CCEC7BF0F3B057C3195
-CFBA6908E31E0DF10DF69163C9DA7BABC00E9A580FA7FAC202910615BD479BBF76FB8068630D1EC2
-1CD2926D351E869E16C2CF1E023CF04D4FC61607DAEFEEEDFF5593E6023492F00029E2AE4B4A2C14
-50954EFA2792F32B4934A768F892171245A1E2F034E2B9F39833F1B331A19A386BAACFEC8C929BA6
-B67CD8922BBC9DC005EC3976575D5B0508D0717C6BF11123EA36D8FD37FA77A6F1F5AA84D4AD8D25
-B2C11D1877A6E2F9B74F3B5829FAEFD4F7209CE9785AA6FDE68672554A6F29D8BF03FE108ED90A7F
-58690FAC399A8AD3A26899072B832874DDB629581A51B3325CD9EDFD49E890EA8959DB937DAB83C7
-77F2A426B967AF5888C33A3635B78D647AD6BA441E222C958EA58D61945F781D7EF409771B89B202
-42AD7D07C2EF592CBF413C5FC89EC30FC9EBEE4BC63709AE33B65EE3091CECBE610B847E12C556A2
-79C8B114C3E460822D3330ADFD72BD69F54C08A81848C2002A08326CF3B09B1305490D35AEE59179
-08E1604ECE75BBE811A715AE8AF7EA9C371B322D0428EDF4C893FDEA607E70E1B6F6614947326101
-EAEF18E29BE0557D2A92CF1FC1505E8B434BC368CE07CCAABC0774F8A63E1073FBBCEB3F4052462A
-A9008A1E53F188C9EAE339FABA74AFD6D60F47282CD9FF721F64BD51787F3C13B5A6C5A5F7861171
-0111F5E0471E206D72520F1DFA465F4A23C71DCF99A04CEEF11B0E3BDFC35B7461A60753D3AC26DC
-50A5956C9195A4F5226388E0953DDD03AF128A98F03BDFA0602CBBAA20AB9ECCDF7255962A332E16
-D4380762E498FDA4885C64FF5F9B480DA487C58E78943DF62616E6E2C69EEC8836DFCFA9EBF58938
-A878F3E792E8BD8C5D6DF557A5D82018DBAE1CA9C64BA5AF8E21BE1B6680FC5DB22422220B776E9B
-A0BF1ED2B7212F8BF111EC8C8C77B223C05EB5E5F1CFABD2D037F4BA0F9503E2CD83F4519D180476
-63F09E308883F5DA5228F83045FF41214D2273B2FE0A9017D5E0557BC2A198C35D1E7E81F7965444
-5760CBA1D3F05EA4B90658E53FDF0823BDB1501ED51DA75C47395073D8980D1E3504E3F67DB3259E
-4EE73A87CFD96F84E221796573958D364A51E635FC55478C9CBF9AEA16B7D8C25F2115CFE4B7F598
-54E24968833BA0D64D1D332A666DFA2A3FD71B05A26BAB7DA382907B13DE0B80871DF184D3622B62
-3D7E09BC32A4F6EA2E6DA450A906EAD36D53FDEC7F83E101FEF32F4FAEC581B000686D86A0D3861C
-1E67F18A4C4647F51F978484D9E3100B37BE9D20AE84C085461C1FBF929C669E936659050C2627AC
-1B019837BAA75757F5B0A82E8AE9CF2111931A38BFC94744E2FDE3F8710342AC615286E4ACE7F269
-743AA05463AF537D9416230ECCA859D8C99B7C6E70BE7FE11DB698589BE9E11900C8E9582A4EF5EA
-94B5F62820C90DBC022A620EC536E06CB8BE7526A789996D0E741AAD980880A33800A6FE92286CCD
-02C9CB407EB31FB95D9C9F4AFF38B37087AC582C1F7B64A7C3D2202BDD62E9AEB31BCA85C4CF323F
-03DA9D318B91F78FDC0D266630F7444ED068B55C05461C97552366A82C2E743CEC353D51028FDCF5
-403B3B74D379B82EB69C4380ED40239E15A86B2E5C860891E26781CC111FB5705E3B7C7AF1946006
-54B5FA1B5FC54FD0BA43666E7BABD2C91C859F393ED49F7123EDFB648A3D6152F2C17F7E438C0A63
-8968AC06B4FB3F77F64F358AE063820BD33F0213C85C40E4D97ED100EC2DA1C2E1EA258BF107AF67
-5A9D995F60BFA37222B9C2B325C0052BB8537D2B27DD43A129C7E8FF42757B3AC9B447703D382108
-DA520B8B3BB3E8C7295B776B44ED28F863B8E1F81B0BD1DAEE8A171525D09D2620C04DD3219D880C
-2ECC79282DD7B1772A9CBBCA706909AE8BC7798E6EC7375189B6CFCE8A875849176E5913B85A18FB
-197A33CA4B5B4058603CF1FA79A56856B43D538E9ECE117D99AFA73B57E307364F553644DE01EDB4
-6234EFAC13046B6E047ECC8F63942F20097AD7ACF0A45C0501A95263DE9439A880D6B5C5214D2918
-0A54D7FE9B2E627EF49E189B59FCC78745E878E45B46C0A648955D3EA8C935113D94F92EC963F66C
-F3CF3A526BA71CDF3CD4CA69EFAB08B7389E3390716892A4872BD29DC1E0889A42D7FFB4190E9A8D
-05D84EB9C5741BE6B02716BC75E0106F5F94BD3778BE985E03860D27E44088C3CB2A059DEBC420DC
-E3A8F4087A9548485E616C409AC400DD1C411CE4B6A229D091B253EB68F06E43511EC5AA6ECA4D6E
-4818D6AA2068DA1AEFCA377611BFA816B5215182432D5683294D67A7C1FD76C52233087CA44943EC
-7280005E93145F5E7AE50100C18364E1B36741E9647C4DC1F68A58EC44095920FDCF05532F603717
-80F78420077EF5C24D63E26040CDDFF8DFD65D871DB943F50CDE84900C1372EF33FD8AB9889C82F9
-4F61A0E6842219A0F39EC7B232CBF802C4A744F33159432E827006C7CA77E480A48A9B0E6A876158
-8A3102E3F98A77BBD62A3A23150FD140D3941773BF7CBBA2338FF37B9EB640558A2313E8824E8E62
-0331568A9B76F4897198A709F9313F4AC40827D8C3A71F2ABFF02BFD57D30D0B14012FB5C39B85AF
-540DDA0ADC27A85B31694E8D7B61F9D9B476571022D98F2D768246550A877293F3FF6ED918A498D6
-A600223E1A61890C49ACFB60265867CE9464F9C32C59E94F7641C3873FB4FA6EB237F8ED94579957
-270D6FD640BD9543E683F2372CCD7B60AAD269E03A72C5CDB732B128818D41A6DDD2BC139F7D3911
-F48E1B1D263DD4AE8E4CE1A686F3A00A2CBF48978631CD243566E22E68F8D7397134A3530EA3745E
-4F1EACB4D6A5FD84C3011094F37573F7F9902305020C53926716D4780C6B0A257BF711AD94C83F1D
-41A02C1C7DD203A3E6E4B14EDA2FDBB36B063A3E074495F626B0EEA146D22AC33457F44F41675967
-6D2A0566EC2B726D2F0540ABF225339F02F406D4E7A62E5233DDF20AE7C86CA0CDD561F33C422654
-BF2DC3685CA91BB9D4B09AC8B15A24A99FF56E2894F11F7BB4728FE8F0F5B799F74F475D2D01F61B
-7E9E0E541F7FEB8A557486D7DF2CE50927515D833BCAA1CD9BF7A650BEE9E003A5951C98ED147C4C
-52F64F692AB281984EE65A47E44A4A5FA93D6F18D276D3B01C5E5F6135AC6940524CD713DF4077FB
-4943E8AC927A68489EA52ACF7A854393CD027EB52EA2DC6234EF034F3DC742D6DB5A67FC21D22B97
-146B9C268BA97C30161CE01EDC69A6A1F05EFB0E06F22644E1A368F0E2C0C6C1C832878E0614B74B
-D645F5CB293CFDB7618B837FFF14A1210AA061C8C81867244305B80DAA73CB25A417228E9559E7BD
-52C119B0CCDB7C4DCE7E1B9F7E8EBBCB575E5BD213BDD6DB88769DACB05E5870232F0EF82F448559
-187423409EEF756BA6247493BE24CB1879B5DD822E03D0ADEA1EDBDD83D3FC46759C679B921F0616
-F27212903F728AB44C1784E8A7DCED0DF5625A7D3F48A20FCA34008184CECD145CCD98E31B79E174
-CF107E8F35C40C19D86B40BAEE6164353408801EDF75A619FFC5B6FAF3F3A95F64795CC40C1F8963
-4FD8C13852D265FBCEF834C800AB46E3E8167476B23CDD8AFF6E2F997C99A86A9CB30EF8C853154D
-0D89EEE9B9CDC1B4F27BDA32432A4173B55CA8D9FB50ACB2D886AD8E5862FFD5DFF224BA13C8B8A5
-4A7F1A9F987FBBDBC5A3C3D762A5BE309D5D926AE5093C40AA47B3B1BD828797CBB9BC9FEC9D19EE
-A73D2A39764816113A8EDC6CFA6E605AD578FC8E30ABD600658A49ABCD5AC54655D29C50FDB72070
-169D1B389F114B7C71EF95A80D82AB537AC8C165D47371FC142A51625029A990A577EB1618480D72
-6DA93C98E5C5F24F622A850CDD94BADAEA91D4BC32CD50CE69E9F00E77DEA8EC1D37916398FB7092
-402605359DF08AFE7B99C76C2A7C70383F28A7C000C696F45291BB8F074791798197CAFF1544C76C
-EEA8C9E6D76EDCBD92A86DF889481F3BBFF0865442264F0EA40D3CAA69AE467A08003F9C30FF7F2B
-77E767580575398462D5B1171DD441D8986F33BC7BDA17D413EBB6B7A32642E33F20B284BF3EDED0
-02352FC66C6F7741A542155F4A159CD778BE56B9492CD95115C1A06189A216CFD2E6725965A13DE9
-73765A05114D9A5A4BE0615AF8BF6A5EAFF84468B849954D15BEAE1CDD57C435788B331905C01421
-B50F20B184506A0BEF746330BC98E9C89AAA8F9D102F158043BEB6A682059A1C8B8CF67B2F3D7AF4
-D8BBE086254CDE53765E3226BA2F95AE8063649F9F94BD9519411DAF8A0287307335668190638806
-E29484A4FFBC1E46B1800E03B162C23B1DC0B4C0DD3C7ABED2F00762972EF06EEB9BCDC7B3F39C70
-BE32789D366F073AC3280C273DFF2979507671B3E1E7685A9A4F0FD3867F96DD675BF05F25ED986A
-79249B75F182FD73CDA2A6A66D693E4CC5AFE3402431B2C816DA1486C34BC9DCA4E2D51C868688A7
-787CD10ABB9ACA14B7181369DE89913CD8FAB58FC84519EA2AA14E54B7A8CE474F213E07CF2DE2E8
-88093DEEC937526816B71C96ED75FA9E2EDC0F9E6E84569C12BB8E39AAEDBF546630745553D6084F
-F9524FEC6A7264F88CEB7EC3358E923B392474E3A48865564431662988FEA768CE555AB0DA48BD52
-6A84B0CB17B4584066C1640C1023D91F7869EF0C4D701BE121A6E3C832010427490758AED7A2B30D
-6028F2215AA44E86D852FDC67DA5CCBA79EEA863BAC9EDC2535B66AB0E54EC4D4411390FDEB8D1FB
-C1743F15C3B68DC92A8659E7A892D5E53872EA51EE8CA7EF51103E87C29A2714E907C79DB9CF3744
-1785D2F73A1EE58550111A4D9BCCBEBF2E39CD3B93DCA300FAC3ED1ADD8215301E5766C30C8CF296
-75746C5A77BF1FE3CD75D25CF193DE8D9AF02AF8F7A6E8F84B548058CDD3C6998ED13463FADE7391
-26D83D3CE2C7201F955382832E32C10DCBCCA35835985B9A93F8E3B0208BE6E92428787C47D3808A
-0F77B8F1D76E6BF6A17FF81CDB065180E03809D03638307BD7BF5CEDBF64904E918FC805AC905379
-928B816480F6E3BDEE47042CBA98539DA0E113B1A5F23EAF1A3210BD18561985E6436EAB90395DA4
-77C7A6D7888D2377B3FC4169368357D880CE041E1F7C875E956600DB7D9B35D1EE66BE476E9DD806
-4CC02230276829C2C0A098F051502E828A0CC505AFD8C3DF293DA1508AC4D25866BEEE6BBD5A230E
-9C2DCDD4F06883936381F476DDCD86CCFE15C2CE3C3243E148CBE603B8513A7CE7A6910A66A90B70
-89E5CCD4368BEFFF2BCF8E918BFE0A1B069AB2A914CA7BB91A0AC3B3C0B060FA1A0316F6135E890E
-E549315897C8464496CC6DEA0F7E3AF43FFA4C3281156067582CA255B1D2E80F999A3AC0402BBD17
-01824C3BB524130F5B82A45275807BC2F3A0655EA208F968B297F98C369192C8ACA26BEBA7DC4506
-FBD1305E2EFA4DBE5375281A88EE2D6FC88FC0A755E72934B4B58F6DD3BDAF7171A4A3C776576735
-2492BFA9A7758504750AB7F38754683B70E9E293CB1CD7B23BA62BD7397ABB84D7EDB22EF6C3F58B
-3EEAF656E361747ED04020163253D1CF3F905B5E85F83FFF30AB2778CAE43781667C0F65C8FD404D
-6B9202A99EA76AF9AE1236631550B66B063847180B6DCA832EA8DC4A6EFDB674B5A26552A7C7D54C
-2799C7D4E03C24F661A91103086DE3A90A774A6988347656344CFBA06065AB22476BB09FB68F9928
-C0045F2764AF643CFEF0516D87FDE6DBF93BAE2829B176CB507BB99835E01BAD5E55C2F8798C93FA
-35EB3FEF02CFA31D3D21B030547F86D27B9448D68E2B155A65C742BD2999DAA0C3AED64447B9CC67
-F7AF33B63AFAF25F3CF7EF86657FE8F952288CA4B691D369E8F1935CDA44A180A6767560C2ED3F2F
-CC38B6BD7991D4170C7C566D690A8A25BE03212A80871108D18CCEFF246623E653107631F29227D6
-4754B2208D19F84E547799E691CA473780DDD56AE620CD953D5133D135E3D51F237078FEEBB73714
-54EE633CFE238AEA63F9999E32850E6C197687A0EC4E5908D2A18C5349627E336AB5E3185B218228
-603A4B1852069F5EE849D571B8387DCE1F8F8E9FE94FADEF128BA83BDD245F8C1C27C11F2ED1A8AB
-2D6D601726842CEE744EE7AAC6B6FA16CCAA39DBF5B3B1D47339F31DFA562671A9CF7DDE6915FEF9
-F19B3E068A464DD350A3AD146D1A241673B5112A4A8768F976723E6E184790C0604506C46591BEF2
-106C40789B733331A80740D59ABED39868F80BECC2AA21C400A0BD0CC326D186FFF9EB37680F1EDC
-32AC78F9059280D07B5FF2E354FED545129FA5FA8F3D4317FF21E027602FDB2522F049BB545FF4DA
-60248130F81F4E348373142F3148DED038AFBA818F26D5B49FC02DE9800D894E9239C88EE0EDE431
-F8083697CB0BE3B497473473E5714717C914A1A926730C249413FEA2615EF72BDB0906933387A892
-370F77EEBF62D26CD583EE643B02E323821379C0DC966407D36AE3CDF646B95DEDC7D7FD0F28E950
-78F12DFC0D6400B327B743C548A0A3517A175A7ED963ED756B1E107AE7087E2446BA702CD4E26E2D
-CDC1A8B697108B5B5E81E9F03105F220C72D4AEBC57665887C8C7964089FBE9424120EFDB14D76EE
-F8C6F7A30B13E1AE90CB9D93D2E14BDE47F4A1D05ED5B18D32AA39911B92D24C93976ACEB7EF597A
-75161923A73B2CC761785493D0EEDC08B5AFE95F3C006B41438A0785C962B070DE2BD096CB63B847
-C87539880AA3D3FC5C345E0992D7BE77C6CFF4948617FDDA784CC55652192B0ED775129C4EA4245A
-41BCF3875BE319DA0EE2DAFEFAE920CD2B6C6C2001762F88C0C5C05053025C0349DB17104360FCE1
-5D7F3A8E30ED13155A74FAF91DC77B8AABDD6FBD5A1EAF255DB209D7F2B90822296B5603FB5E2CC9
-5CBC5F7A6044058B8044ADCE73ACFD896177F1F70EAD2F6534DC3AD755AB2BA87126D63CA2E9C441
-DF0965BDDD6BE494E58D6B5057A561D1E31BD38E92CB73C1465AF6B9C001F7229059BCA4104847D1
-639E124E082F7364B56548BF8112D0EB461B316B2449049F6A476D36D6B7C0C1126C08F2E9A1246A
-3B5B21E7C8FAC6E23B82E33A7783E4F31F0240E96E69C9444E7D7A928636CFD086475DF1E0A28464
-81387BB2010655B9F81A0744121699B4905AAEDCC84BC5D5AB3674601DBBB651EDE7B5DF05C8A463
-DAB41F79706D285C4F9063997F7AC8CEF35CAD51FBE5F5BB1B3FA6DA2C3ABF2B3E925581349728D6
-DA0D59C1EF6444539742EE9A23A5727F20CF9377F4F84DEA420607015A30FB14632D084A2DD181BB
-02FC3A84FC499B318156B675B9CA3CCABD87FDB2497C6705FA70EBA43ADDB6CF961B30E8F6AB9F84
-E1DD8D6DB3314B34B7F7AA3BBE19D5BDC75ECADFD8EAE19E07B387A1FC586F0F30DB695926764B54
-0D89F1D854B0FF86528AD9523CAF56371E29498C11AFB2F4D5202670C834E930103F039D13348824
-16A49BF93B84FD3CF1209EEF7D4994C8302436C0794497461C11F5B8BA152BACBCC08AF8A15F4A4D
-F3EFFB7227CA97FC21D2D0356C93390C749CBE9750B821F1A7BCFAE2C8BC6D9A27F844D8AD088320
-79ABF0EAD8ECD4EA72846DFEED021857F33C1ACE4C07BEC90398B629814C498D33BEB375B9A53DA0
-F926FE6E89E70322C72CB2DDBFB16B13EF7A4F50DF783316584C6AC2BD7D9029124933133B2229BF
-74A228868AB30EA5C3E87C78C3F0962199480DBCADBEF53BDDE45849DA857A4FD85B96682F1EDEB8
-5384929DEE4AFAF84C51A09F5D572705673D885070303FDB47DC898F874E103A9E7C1E894115DFDD
-AD81549C7375D4AEDCCE2E52C13E5130B47F206F7C5AFAF1F9EE83DA8188D70B473269CA280A6A02
-DE85300B93D8A4F6B402FB5DF58F1327470CE11CC63ECEF2EFAA396A6680A6746A20382D9529B58E
-7CE684B39AC00F7086BCB47C2230DF0343BED9B9152A61C9826AEF9E00A1452D91305CF05490D4BC
-0BADC9C6FCBFA93FAD52C3A80705A1956890497557C0873EBDCF61CCDD2219354A4F5621AB33B119
-32065C1D990A9B68858331EE7875CAC855F98563B14EF9E1060BEA90F195AFFF94728AE935453438
-DAB35123D0E2699475884DDAFC7307A5CC06920F35341728D85965F5BA86F261CFFCB1E29B429F97
-6970D42D10E6AF6C4B792B4384122AEF2448E22A58D3AA007743C71324EA08D06819FED14AC1F22A
-4F0BE4787BC8738E1CEF240677571C65804ED3E748D72E89C94B6F310BE748FAEA31EE246859CAF7
-A1EA17CCB5B246C87EAB771E2AC5D378650191081514DDC2C66878E3766CB20DC49F630F2743A7FA
-ECBE9DBE9E815A3CB57DADF2BFF5EF2FCE23A56298A30A2E052FEAEFBD698101F9DB992613706693
-CB0EFAF6F60C8BB5E7D0A50B3392B9831EF3A304A846CD4AF431E9F018FCD3A5B16387552D55DAEA
-683D36257418AAA0E7BF8A03ED7BAB114D7C15119E6C71C1946BD7903C1C42E115E954619051B853
-BF05AE316E15E619A7DEE498F771E809D9435969C1056402725EF40C0200E083F3EC6E0EC27B8ED3
-8DFE32EA0E5E156AC36C4BB9AC5ED111A11678339703F1B9299345AEB1F251FCEFA11FB3101CC499
-907DC862B4463D5523B9B25C5B69F70AB6B29CFC1DF1ECAB8227EB3ED1F882E90B12080EE003714D
-403EC43B7B54491446B6A3DD6EB641EFBFEF060C45E873E7398025B1CB7065441F1753028F6F8C49
-A96801C0D598E098EADC96A21117F817B6FD6E6947642F93E22425A00E8F6B592AD50B317B69C0F9
-4047386A45E5EBC9504FE55451A01EB29DDF9A41D4BAD85FC84CE280971E834F06CEF49C8C20ED2C
-EAC889F158CB14A8C070900478804CFF1D1637CC880C81AA287D8382837FFA8F41FF3C9DF2F22CB2
-0044C171E4815D0D0F6C22D19A52114E780CECD71DAF63427782E85E463DCB333789F496340E8CFF
-885A9D9A4250118B439C71C6BE51A9338BE29251AA794EDC67DEEC6337FA63CA9B03C1C9F75E733A
-4A918646E7BC9792486CB5A4BCC5F84FBABDFE338C3792254A3EEA3D88903C2C47B91E076259DCCC
-8BD3DCA90ECCC832C09C45141C6242026BFE309029A562C3EE0FCCDCD40E5CF265ED9C3DE582884E
-0E14819DB98B3AF734B1B3276AC41D43384EBE73003D15CE39FFCC04109583390E470F431B4407F9
-8550E138F96C4564B494E5480F47C853BDD237E27301F55E42A3BED18FADA152572B7B465A581DBF
-E7DB2619365CF16D71BF8F091862B9FCF04BF8D0859A76F46E7B5712F2757EDCE332D3213B8A30AC
-2CE7D7797EEF6F30904906B0805DFA7CA36D32A20D989858497A66CE72491393DD79332003D55C09
-5A5AB5DF761C4BE5C041FA8407263D604E53091F7B6B15496245DBBEE96A63F10FC2978D99E65731
-28689366FE8B0BADA48B50185B861BAD03E3600F22BAD4274F2542B635F6C7944BEFC3BC741BDEF1
-1A8DD659038CB40FEF2E16AD1AE7EBEDB7D9BA15FDCF26355331505A386DD7399FB999535D6061EA
-BC61DD76EF3EB457446F29D0BB6EC2FC0AABAC20B27A3C123C27BC27A76336D0A0A6D456DA070367
-4D959A4AFE428E2206A511BFC80039ECD56E75F69786DA0A8084D81A66644DD98B6018681F1D70AD
-E09BD9BF3D16D68DD5D0A03AE26DCF1552549E459FE190B310A8776B2C8468C14CA8B1B9A7AF2956
-507A3B705AD75A17A0EEA7FE089273353CECD07BB8563465EC8DECA0EB42F43FE3664EB5F31E1D13
-24185539B28D508BCD065ED576D8814ED3FD637D576F027927162344AFB0255A91FFC616948E4E35
-8867E9FC76A9AFFACAEBFFE110808C1532A2BBB0DBEF3F010E45FFC73F228D28F12E98478B27397D
-8F456781ED9E19711DF2E9EECBC3FE61F7493FDF1A59124668A91BE51F122F93DCA4BBD22DEEA339
-E6EDA3D6EBEE03DF958113E1CA49C8398D2C59DA6764882EE3663F62A55AE50A7E91B4FEAD1B11FE
-0D50ACCC5D75F1A515F0C53616A500F1491381DFD0E2477E402AB0CF9F67D501A442629C8593ED5D
-25A72EDB9746B02F2B0F0759CC9CDCB4C9D8B4519C8C617E569B432F0CF6890372AA879CA7DE46E1
-10D95E230A4F0E52CF65811C54365DF4A3E40D819E2FD379B47DA3233D0DEF0EFBCE04AD8BAA3888
-4F6A69FE5C373E38AE0FD0241480F2BE7CCD18AF85916D2703A049779FE7398FC47D348454CF03F2
-2EB3FECC064606957898B5643464845445C25C0C7D685C8DB042AF5D5882174374ACE90081C68678
-9BCA96AC602EB41D317BD652293EE628951875641661EC86A2C40A42E8F0813A861D41A0F5178E55
-43651CA0E99150462DB5EE0010F00DE6D55B0D7FD7EC5BAEA24ED3E90A7D6A0589761922B91A6A91
-3A7FEDDD3B68254D89ECF767CE8E27F966426A8B4FB1B4085384FD09D63E288405B78A646F44C87E
-EE22C8596B13188085479F75F63D3D97A28F9C8306FD207DBFD38DEDF0FFEB7DD80B2A3292DFBF1E
-D605ADF1B33E85B010309E3EC058FCD922B1325FEE71EFF2DBBC2E68DB52D513E024C01D47CF657B
-B61C9734649A4AB63C0AF4720EC3EFCD82DD3CA6E80BB63BCF1B8DE810A0C6C517C63B76FE68C0B2
-86867BE102424FC31C4937048B6F323D039618586FC21731005D949E7D802A430DF8D2F0CE99F2A2
-376C2953EFC4184355E4D12F422C9E1E25C4DF38DEA334DBC89B540E14C61A7769D77115CE8968FB
-76B27D0863CEA2496783114C24D4CC816DA884D953DA3F9B9D3AF8938BC607BF26A071956CA07E6A
-5509EA2F5D80E5CBEB98041B197FAC760976EE75B470DC20AA023BA3F63C2876EB281FF5173BB490
-D6815604517AA1B1FA0631401B3C1A04CA103E2CA4ECCD83874D9CFC8ABC134CC0F9141D9AFA5684
-8BF222342016C556C14B3482482DCE5D0B6EF1AB522AA1812BDD8DD3397E05327EC12748FC480842
-9B97202E24E1DE0C7C0D272C046BA73B37D30930C5DE5A47D96955CB0F5DED8F3AD929A8B42D2839
-0458F5910A0F93610F79EDDB27078943DFE17C716D65F96589769349F3B66AB7B8C004CCC59EF688
-1F745EC7129865A76F9C2D029D4660CCFB4D5F9D412BA3372A27CB175E9D65F759575CF14A5899A8
-D31FF039AC02DBD8391C3397428AC0D5717C005200790785354813C8859BE90E0E17914F6CB9C674
-F1E9A9648657B54E5E1F52756C4F982DF74E73F6E4D40718C71D1D0E2420FB7462FEC9E457C0414A
-96E475C6BE2C10437096FCA0C942E995A9ADA789AB637B648781D32DFB68E62E91C2CE7E13680F8D
-31ECF8C824885FA7618981CD05FB335AA111B409C59EE337DF4E5F9DCC920A5FC0D620DC07F20DAD
-63F4FF5E0EE5A2F390AF1C32122BA7780F210229E5A5E3ED97BC1C3CDDDD456E739CA782EDBF4B81
-0552368E9C734B0C78B0B8E3F8B2DD782862B74318871BB1EF087828CC173D7B049811FCF598B8EF
-DE4D9BC5447F4848C98029C854F3AE461B9D46DDAD8CE67A521F3C811A81A396CB0F80F3C8D8EC88
-30532FB7F9624F7CAE0F8C6DF875073333DEB28AAA90AAF486AB8C932553CE697B885E71EC8E40C7
-835CD5D59A2C695DB9E51216FF9B77A15B0DA63717FF25B05B939E45CF7FBE490E51E9344213B32E
-115C2DE14D76DFD5845088DE645B0E75042A61D82FB1753C445AD0A956A1263E5A096B681D3BC51A
-9FF32EBAFFF7ECA8B59D40F0937EEFF38312AE57462C7BF3B1FE24D2BA8DFE84515270E09063CE3C
-80DF4935E409F62EB4F54AF16A186D4329972B9BDF15FB08461B688ED49928429226CAD9F67C9D63
-6D1375CBB7B08A5631956B7FE29CC9EFA8D75C9E4919C8C2C54F401D2E0D7BFBA40C50CAE214D210
-C6F3EA5802339F63FC4C1C1995787617F3EC2C806CE44CF8E29F76606CD5836F6E5A2E423CD791BE
-CD3F112F25657DFED9366FC4ADF90B685CCE4A5698E5FE16D7542B913FBC01B288DD13F43DB2B1ED
-8CCB80159DBDC90A8132125DF8DF547C4851CA609D1F6F4D647741260E845B457937787827A89E37
-CDA06BB191669AC84B8608EAE132D10177F3FC384980F3A6E439B048A38D0D6B9CEF09F3F2D732AA
-71BD058169D6D0F8C9D146D9DA046774027559A8B3843F6116B418427E78476AD8F0F81E8A6B1209
-8060FF7DD686503F972D6C42FD6CC29C083AC3D72E3751F21D2E44A572EEC80E81EE44C90FAA7AFA
-BCD3ECEB98FD4068F6C3A4DED0E6CEC523C9A0054D1FC2A8D61A4A26F9BC250B8F302416924AB22E
-722297888B85B9C12F8DFD2A744CBD143F9B2514C1CBE988D9CB4E77D90B2EFD5C2A528355A35F7C
-4AF039C7D1D756305967B847D4ACBB81263D4992C001E2A262B9FEE2D1F5022BE5B15E1D8F1D67BC
-52227344EE912C018CB73E5F47CED54FD202627777BB77AACF3EE6B22706FB2FA9062BEE87E22CD2
-802E7706322648DAA0C624EA885430175F746E1F536F9A8E1C610C4A761D07248426DB63C9319A88
-A3FA449C3FB8AC94C6003C745E6BAD717A3B2EA3862D1E08512A98E57772A62F85F1E2FFBA40E2EE
-43AEC11203DA9CE5AFBF673436F2DB6AF85BBE89D802F7A9E5FA25A408DB69E51F0577DD26F94CF2
-BA2FC53EDDD6FBEB534AF15F74F66EF8D14E7FF77D8A5D284C8202DD5A6053CEAA606BF925992382
-5EF4EFFAA8D878652A4CAF2EE43ED26BF3590402686C876F86C1AE95046E527617CDD3C429BD4CC3
-F9654D2C76DD4102471FF746FA9FA379B16DF96BFE3836D43FCC0B8E95120C27370049ACA4AC313E
-1D50D72D1814F2566B8B29FA9C9C20D0488743722A766436776783B939171FFFA00E04805A8B5821
-4D4F114F7B9C3C17CE7486AEA2BCC895ECDE809502BDE57981318A93F23016F056A421B733C4590E
-34AB08BB348DA4A48F19B6BEFAA1DDD2A49A6C440443028333CDD48C85CD698ADAF3FD8676739E44
-400A98B575BE02350576F96CFA54D4184BA47555B8D12374B86D038D085F7FA51FF4BE2FF5981408
-999B48B2FAF305212ED54B2E371F5A0074CF68D1B0E5CD279BBC8BBAEF694A89A6C43F518D01BB4E
-8402AADF34E96E9B3FCCAB4CBEA2741D3FD9ADF7AF32388F7771845AF99965A6078F4DA335EFA436
-BE36903E33A743C112C0267309F266DD44FA998C9A139704E400B89DAB952EECFE2AC09C82D9F497
-5371CCC27DA37890EC84123193314D8A7A707C217FFC951A547EE5B6D1B7C8ED85BEBD9D3F4B9B09
-6A78E5F7DF88C931E3F396973974454E59340CA51DBFEA1A00DE084B64630E26C6D6A3593B828814
-E27DB0186BF2A87EEF268AA1B135AC09B52CFE53051CBCC88CEC5657BD47F603C8E1A6249161684F
-D9084AC279F57A4F9BBD0A546A87E147B62AC860911969A29B8AA20E3AAAD0079D64E6BF1B0F2CE8
-F0C54C9019207E1B403358253C2FA93A662F63B9380B65C5173C198D86A3D0DC1800D1F5378DA39C
-E8523EB62C6AFAD8A0D7AD1629F2CECAD82B8FDE38975303768C7D3A08B91478EDB3C45A8C6B7725
-EA8596A8ED50B8355FB852FB8966479D12E1086223B1E6523A65FBA81DD106FE254F7309718768AB
-009FF7714A8C363B09DDA73CD3F81BF9C0CD3B0C806CF3B7BBFAB73E46FACAD2480EEBA97AE68EC9
-4D3D79AA01ECC22067858EFFA9D7B7F997ABD2CE5AAA8781E5499E8580C405681CC63EEA53BB47E5
-5ECC5BA2A7A3C5472DF034B022F455C60FFF971B01583A29E211A87F7163187B190B0C1083D696B5
-86E9438FD8BAA45101A5EDCD1BE5AB9A585511089DDAC8DF1B1FDBE582ABD945E67F99ADC4452988
-A9859E39C90EF794C5C4E62997085B7A16A0D90107D08610BA175AD66377345662DA7DA4D8FEF847
-EE5D57E3AC54B928A0957CC1C944E7FF14658FE4A641CD26C61105C0F136A75950764B69CA17509E
-3C19351D456B22C87C55E8DCC4ACD3E150D936333FF36499AD6B02B6403DE0F12901301ECB2EBA10
-324BA72B58206A13B8F37B0AEB12115D0C12879C8EA8A2EB70E85C95434564BA3DFF481C8972587E
-FF74EEBBBAB14FB32B8A84B8FC42EBECA65D25E8C32C19CA5962832BF45DFDA4E871508AEC318495
-0D6DBE89019CEA29E40484C36E33D76B756255531ADD1DB24C03B2A64A47BD8FBA3FDCB1F5B96F8E
-ECB60D5834AB001A70740498720AFB6EC03445CC35B51F7987109618C6C78CBE3041BEDC69B6FB12
-8142CEC5C8683B558AFE3024EFF7A12D04EF59A72E156DF11D33ABA08A8EEB16259DD9529CD003AD
-4EF4137B6FF1654236473DFB93F597331A5E26C7796F528F65C94FE07B3B4F4DD49034FA0CC189DF
-CDFF70C2F1C6D3DF30AE103E2AC5CFF20664AB934CE5C19693292071C93BD590383E0A1931E04D1D
-DD18071DAFB628F5D7472E457BF81D6064EDFA8DEBFF91701C5038CB30865D6122076A336732DBCD
-B0A625548773D0013648A76F07BBDC9C16284D158EC7A105AE37A62279419C3A2F360D0C7A74D6FD
-D0E36DCA2A8BD59945A4196598F690878F84C894852C1811AFEA4BE3B9F6A5219E6628C66669DBD8
-FA9A0CFC2DDE7716A356FC4FB271D8A2CDDC8D4684DE447355BC7A287DC56852A638C5777826EB6E
-B72FACCC86F80BEDDD0D649A883CFEEF4D74750172A90B5DD8252592FCFE19FFAAD868E99562DAEA
-E70514F5DE296EF7B57E6F193737ABB6AA317956584423817E11664A67389197AD9F8F771EA59551
-98C9EE40A0761639E638CE9D890DF468642670235F1373D3AC6B1F43B5777FC0A91A96E095E89BB9
-FD62614DE456CE7AFD6B855112367573FD9FCBBD4A4F9C676E672D62DDD34A9BFE8311B6175A003C
-D143C0DF15E4C0B48C735404086E48AEED6B6FA21FD9F40B84215DFF287F0677904E2DDFDA774A40
-19DF45CC877F553E95A1C65DF1D67BC0C60E0BBA4D205C0DA3DA80229FDD71859F65AD04506B308C
-2B783839F31CFE4425263224F08C5C7E98A2C9D3DC8EA5AC1920F4E395413262E0836BC019A092A0
-DECA104EB2DF6B63392AE8E2136379140DE5FC98B0B69860FE8E31DAB5C5DF7807D19BEA34AC14E0
-ABC6F6519C51247B104DE7D912C5BF6EF11B48FC6DF84512E9F5FEBB48F72FF1B722BDC3BB2E835B
-2E7CC6324BEE84893996B8DC2D4DC2793A4F69C18E63DAF04A7BB5C0A9076E2D5A343E134CC3C89C
-4712900656FFC202E1988526D80C7FD9281FE47FBA8AB5D025E63A84051F6B13167BEC15B346212C
-BD051AFE7A98BE3A2491F3C469718A58E783ED91F90E274FB4978F8719E92A99A1E8F142EA7E1F2C
-46AFF0A2FB50F4D105130CE8EA309B0E480DC8F80D506172B609EA4BB4E2BBAE98D8882814FB273E
-690DA990B60A9CDA20A2418246BD10AE67D846A0FA815AC25858145ADDA106A6778A11877FE59A2A
-BE300D7DB9BBAB31CB5B960B7E4EF91D4600886D8795DC361CBDDDDE05EBD54B1941F426F7FA8399
-270D2F54C998BE92D146227270A8E89AF90C48BAFC4ECCCA01E6322AFC165743475E752F39BDAEC4
-9297290510FFA264342A0AFE2985F85DEEC66C36EB4A1D46683EE7C591A89B81569A8566AFBCA268
-10DDB0970577A76EC8A066622606B08315DB0F2E6C671F3259C73637D773D1A180AAD66ADADA2A65
-95B5F481E5F59E51CBA876FA06D21E1D674CFAB46A02D267E20234324D0891E7847C13C69BFCEEA3
-AC55F2EAF753726BCEB0DE1EECF42ADA964BF9E475953302C2FCA804B70B779482DC9319B40381E0
-9C0096460AE113C19A2DC9157FA138CF0E7758F71008E71D0F7599744D647B09B16E3C795C56EE5B
-D14D8D63E7A512900D67487975EC9CEAEF69572FC3C2342AC5D365E8A4BCF462006B5268ECC15754
-94CAD9A9E7A9E8D9AFFE49AF647C017743EC7CFD5E66F4E4D845A6BBC836849274FBD270CBF263F1
-67DF7E26BA91F21C60F96257C07523AC37A2193010E976965CBD75751E312817C0564E1C5AE0CBA8
-BD12B01122D07020A0852120680985A8AC987BC33BE863EEC52AF13435B6E4048D951F5BCE36526E
-07A8661CF2538F69D1F223BC53BF5896437D1BD46F57D9698F642F0E99C7392D8EE47134E34DCE94
-D392949B418D9821E12CAFA8337323E8469DAC24DADC6AAD4A0DADD7FF65694BA3A27964D28D8EB4
-1179458F91CD3F83B8F119BF5E76184DD29CC4C0718CF7945DCECC993A7A78739363136CEC7F2FB4
-95EEA8CEDB3EBF14373A058758C442939D36774435554851E9519B6F09C31EF26B6CD997DAFA11DA
-91FA9759F17B7079164C5B47B99CCB7A876FBAB1D0D5D1E1A2683CD6914E6B3B755939CEF1C9168D
-30B2738C4349650CF86C90D2542FC9B90F36A494C035A1C86DD716014AA16E6B9EC7AA03B16554BE
-C436511DD3097FAB1FD0CD49EDAB96F74E8FD26400FC748CBD9EE1EEAEE24DA30DB6F8734B52818B
-3A5E510AA5C14E42060898033E7E36CBA9A64042CF94A74E4B52E37AC027C0DC69BAC4944CCE12E7
-AD81AEDCE642EC34CA23E3FF07B8CD35DFF19F33C8D4DBB56A52534F8A827BE47AD4AEDCAD83B273
-38409FD1101C4DFF3F12D3DF79AD1FCE65B2F419451DD059C88BF066413E23DE27D3621DAC2DCC8F
-9F3620DAD0F4B1A6E8C9E6E8ADB552E1EB2C4B2A3B73986AD53ED9ED8911F82F750DF05CD2EBA3E1
-B0DF208A87FB5ED44C3296B803881C1D9776D13350CD29C3F716F0B5A8B8557812024BA70069BE65
-89AA579EADB1F657712DF2570843D7C5FF7F4009D4D232D3547DC8B92ED5C4DB77B76255E661FF8B
-163C6F3856DE5651B597EC7C78B84F0C6C1D6EA3A82286F1D3BB45F708D564E139E81F473C705AB2
-56346328DAA64D1EA8645DC10FD449092E0634D9D7344B2AEC3C75F6B6CD8B3F3867FF3CBB0F556B
-186EE9A7C26BD2D17C8A773055D9D5013BD2F937D697A770C57BDB36D922CB911CD14E7FA14160BE
-19C1A052E297B1A2D682D4BBC9F1D2493BCD7CAD2FA75D904C5F5479179DAF7DC6A4E0D269BACA2C
-4F2430B4C8CF1572FBDC750A05DCD5B09FA3A9CD6F2F2A386E2B3D4D8E257BD43A783B38E63BCEE5
-03EA96FF2C373181744A607F0CB8D281D7DB1A6F4076AA3E2C61914BD796EF8A0873F79F964FDE28
-B792BA99A20C3F1F5ED1FD189FB1867C84DCD6AF43D49420C8B1F3DCE7DBAE71DEB17FE45644DB24
-4F44B1011C7C768EBB7254F4DACA64E9BA87AA7CD0F0C4B2228FFB9EBDCF3DDE4DCED39399FFEB34
-8811547D025320A88B480943A339E2CD2FA3605AAAE87939B1D7901465A1879BCB4C5BE1A179E7E3
-71F1BA2E0844F88AFBAE9B78DCCA47AE8AEDF5BD3D458C7D4A7A08ACCBF880D1F1DC69C636628DF1
-EBDC5C42FF88FF8B66351F3F72D703E52F3CE91E4E00759753A599FDD863788E99858498B66B93E5
-083BC3501C39A9BA928B0D763C28826FD237E949EF0BA85CCA9AA20C405DB6D5612DB718F7B4AD31
-D253AE306E4D7CB615C59AE668D347A4E60FFF7B103F8BD0E7CBDB142A763BE88AB40EEF6B8FC200
-458D728930AD0F94FE52ACBF0657C4907CC7942710AB1FD8BD149A9C9DEF6B8DCA7DB9062AA7B1B0
-11ABB5AAE8B77893A023F9EEEED4A20FBC30F922282A7AE2F1ACFF64151013D6B8AC2EAAE58171A1
-0F80BC18C3BBB5DE1E22EBE6033BF83040629023D74CCBAB3F1923CFA4A6735E1DFA8A1B261FBF1C
-397E26F3BA9C2629CFDA84DFA3D1087EBB19DDA7E2D76E30DC2E15B8821D5291DA1DFD73940E5560
-A8A6DC91BE0075E3ED8D9E8CAC85AC20768D868CD2DC45DEADCC8B59AABE6EE5B2F891E0D7CBAE82
-0F83479332BF9707486698FE196C72EF72B52F54314329FC498171782BF160E1110A19B8208FC591
-EF0F0DA71AF657B43A7CC649A8488B759F7B69134B4F9DCF79DAEBC1CE52CC8015F324C9D46320F4
-4E1551EDA6D86139DFD1DB814CF38A22A89FABB4F75FB896B00E769820F763486E86668253CC466C
-1529A5A924CC337C48448851A381DCEF63A0A302B65203D6571A1DD1FB9DC0C3BD6AEF4891497033
-109CEB5A481BFE442249940EC54096F1D0F2436D9E60495D0ACFF967A741B30467D24AC6B0032213
-18666B951EFD45324987B10BEF4AAA0FF1DF6887377A7F70F555DFB9FF1001C67438A167A00B05D2
-C37065655173A7ED9AE342DFA1497FB1F2FED6098901249A085D31B66DBB6AC25EF16C106B0A6FF3
-47CDF66434DC3F0012DAADE80B942D522CD59AF4C31C1C062157B3D000B9CB86E2AA7B4A5BF31605
-8A0D5A148EAA2C67977FAA0966E4C3454E08DF14C2498AD76E389AF65D2C139A6D8675298C46ACEB
-7DBE6904C373C06E5F71399B2EDA0B40AB96E8BE991DDC39F92F1D24797F9EC9F2FAE25669B43754
-E2498E8EA5C44B176C3FB3E8F7A7A1481275A461F2549AFC4CC73E28417BD8C5212C13105EAB967D
-AA679AE822B9B75B372A99C7E82D6BD83AA2BA00314DA4AC51B9CAA30D80507505BE24BAD0A87C5D
-5D7336EDF60CCA4CEC8201D243C3932F74D171E2409D789AAD0D04A7BB22FB6DC3AB92AE33FFEA89
-7C484D741039F38C317EA396A0FBB9F15A27D87FCBE007558799BAB73212B6E5FAF2080BA074724E
-AC87D88166DBC1464CF5D41B99428851FF1D99246944511CF42C3F9248513E9E51593F253D89C604
-388AD7132D6A169E9DD888E020AC1F8BA606F2E1EBB97977E505D8C40853653D8F398F71CC9F8F9C
-540C22A1E6195BA578AE7262FC845FCCF77B33F33EEF266489AF8B81A615D6A13464BCA58BEC16C2
-3F31D678F14A938BEC31272DAC3CCB1B2DAE577A26BED852FC59843176A5FCFCFA0AB7FB00D2309D
-E55C82CB9049F44FA61F1E313205A76317C4CF529A4456019D970624129681F46A9CD7950B8B5C40
-61853040113C8115319E68B37F88D864C6957DF813B305D09E6A1716B10F26F2EF5C727FC77AABBA
-73E12B5AE6416AB19F6563CE14046B715BD4CB2B1E4D315F42D10F74CDEDE82BCDD524A1A5460921
-9084CF1CDABFE72CC8375478B41614BC18A914903596D6FC2F361EE519F875385F4ECB50F7053127
-4EBDEB14A5DBD906A60817246042E3799BB3AC647CDA7244B7998AE4F3BFBE5C767FD2142E48518A
-4217599E0EC2CF5E86C8C270FF8B02F949EE001D6A439BCB4BC7D7F7C8167C3AE0A7E59687FB8BF6
-F37BEAA164541B8EAFD92E9D152E3FD0F413C99CCC34FCD8AA455A0B55DEC846A5874B94FC95CFF1
-BB386B2A1E22CD1C3914264B6D5BD1746972857C9235052D77A6C0DD3019F8A307FBEE63A3EF12B0
-39B224108276FFA84021F1AC5B745C54690B3FF587B4B1710AC3533A67BCEFC503ADF1F4B62B2910
-B31965E364EEC9CC437CC40181A7320CD52BE9C546B8F1DC824312216C2FD8232E2BB8D40EE2E314
-54C09772A387F9520E331456C269F51A078E6ABD9FB6A68BFD5F557215B0BBD2227B8959CBD1BD4A
-EEAB094DD18E891C61FB00933C0A0D76174D169C0B6445D34C00DC9E06D85EB086C18F3BE27DF734
-EBB9CF078AFF6514438549CBE92A0C0D25EFE4A527D86F158B4E9D8870C7AC5D6C059643A3298079
-CC20398324CA87273B86ED801057D797D91BC3CF2F96C650EE1566CD3CF8656CC577D38B830201BE
-718DC9A494268177A5019546EEEDBF101996BE593631654B638C75A6BAA648CD1E7AA9AC1EA60F4C
-D604071C89DCCFF8B3E430A57ED6DE11C5837E78956ED991058F3646219BEAE94E4D9381A33D48CA
-9B8FF12B54A73FF869D0EEED7E098D80152295E6016CDD809173C57D1F5FCE908A37010AD4C4471A
-53451DE9B4363B63437C374C598F548F145D3D288F42531FCF36A9CDF72521F1C0868FCEEEB1857E
-A983F6B75CE245D875BEAD1BCB8819E5464518E04717B78BD6E335F0AD77B832AF5682062A1E2AC7
-7CD5EDD5DC372EE456C96D38BF8BF348DAC2B4EBBB2440F2CE97B4B337F2E23247E3E8423BFA9237
-CA6CEB6FB93F960CAD894A96F0371168A33222052DE9B3BE04B022AB95C0C243486E35197721FC55
-311DC55F87BC72D09B6C940CA36E6640AEB66C394A5949A604E7F15DCE3A008BB41B0EEF2840A357
-F348443B4DCE064B4C15E5EC52E448C985FAA1C3D6526270B1CC691009959A7620C9A6202619A19B
-E410FF7BD535A8B2640AAA459DFDCB8F2BB35112626497E8A397D4F9E04788322A738DC8907CB643
-15CF63C95809E90D06EF02F72AB04AA61FE02ECCF7E9049FF9F3EF2258A75656178AAAC9F3C2A26C
-001341862D526CC14E92A81BD63502F959066E0BCD659CB9B5A45606153DD77039B8C5D5B13565F0
-0D95A41937CF97089F3938E39659A64DC3D6046D0E9EF66544CAF8A206635DF49926A3EEF3FDBC9D
-CCEA2886EC855F1821C4B9CE1D02A19A11BBBEF43A7D4D536715548A62802F64AF30BBCBEA8C7E55
-AD56C801D8A569C8183615A78CD393CA42C103F155941E845712C335F4ACFC7807202B92A983111A
-ED241BBB8501F15560E8F2157C29752BDCDB274008137277920053D6D7DCDC626A574A82A8A34F1E
-77B2FC8CF7C1A7322F22DFCB450259EB450C52B70DF3584A7C54C813DB41E3DD81253A03B02BC252
-346AF0160716355797B6F8210C453DD7E1E756FF08C7E6A5F4F87605E1DFF35A130D79148A57B7AD
-12D94A129FE3F055CF974EBA09A2B13DEECA2E02EA818A58B81E8743004646C7746110BC61B86ADF
-2D5D8C45A6A5461EB34497FCCD09E711F47BFA742C73F87B257B53F30CB68D151424DC3C210D3E8A
-C67C2495A8236EA2D7985A5E1DEAC699D7B700E6D38EEE2E93B191BAA5A8A2C916D206C63FE63427
-AAAFED2B5784276FC21EEFF2D70E47C8540DCCC3E00134642B703795CD3702631AE2A90E063A218B
-61E5B89BBCFFF84F567E37A31A9B349717A8CDB9C9377215BA838FF7469BC486B64EF2B6D92519C0
-BF0826E3652903F40E400689F5749DF86FE3DE178E21E20EDF9053081F6510D8F19ACD021CBA481C
-484D30EAD3B84ED0190087EE478A17154B243346C3938FDD5340CF6E47B185E64ABDF44F8CBCDB82
-94492B91929BFEB9DA2B033C3ACEE554F0F1A7F8A56DF7C06A3583C1E9C5CA458D40E550FDF3E2F2
-E7BE8312D5FEE98543388EDC8A04CA29F1B82B7AB4ADABBA3F2C331EFF3521B2B92F99C4377AB827
-A989B423750D36ADDD2E286E7F3B694E29B8BC403693C6F7CAB5FE34F1E48C8D41B47831E8C3F5BE
-5ED5142E3C44ACF5180CD41FDA149B1F4AED36812E42BC184227F5034220F74F67830255E1CAEC12
-66DEFA358A87D2E3B4B4E7EF30181570D0B2B43072EE0311C2C157D32EE2BEA8EA4251B59F6B61D2
-B4FDEB654DEB67AA3DFF4AD65B727F0D6B7D61523E4B44D99BA5CD33540F340A35DDD466ABEA4E72
-E504FC9BAAE51D231C33A8CE7DC2970DE4C1FB5B096A3D9C641EF77DC9039886831DDD01C4F21E6E
-168E38BBDDA5F4308C959C7BBF36A42D042DA6862937EB20D4FA2E5927741A58DA5CBFFD9553BEFF
-BD92E6D64871D8B25D9049F4E71970A8FF5557D1DE83DD24286D6C3E4770EE00F9A1A0B0063C9999
-4AEC75E84D6F9C488434D1F3DCFD0A8BEE9ED8257CA97E75E8B1285747184D6D2228EF95D4A0B8DA
-252318ABD35C8398FC6568B294D90AB308A7675F9F160140F0A08C88AD0CA1CA2CF85E4D031CFA3B
-87635F1398EB7DBC666A259F02DB6741D13E11B230025DD6DD64C438409AF109090058151E4DFB8C
-0E9CD65935C4CC063CC6100FDE70896E23E3661C7FC1B8228B26A55903E997F80207EDD8863FA074
-EE4FF23BE585BAF708040C9F8CFDEB42FB8EB71D4CB6D7757E973E4D8C9DDD082712C23F868E1135
-ECD91250BB4335958B07C12FDA75EEB56BE19D1644C1F76A8811C021122619F751CBBFEB1D3DC912
-999017FA163672A1EF754C5CB78962BAAB76EC48461B492FA88F9897170DE857CC8374C8BAE417D4
-C78A56047024731F4A45145F0393A27CAB614A7FF747BBC28E6880D4D01C0A6CF317A1DE5BB5ADFA
-4B5FBFE0C57598C79F25AE57BB797A489D51F85A9B9CF8BEA64293F8FCC43B0D5484DF99DBE19152
-692CE756F6FBE8CE5831CF4B8A5AF47524E272C45C62ACBFBDFE7E60B05BB1A1A6AF0E9210012014
-69B3DBB49EC7B23A363FA68417B7118DCEA71D4ACA2E36F88C6DDEFB70205DF3AB7C74CF65CFD01F
-F85FAF99F172689737331D4C6CFF7A29029772F487FBF625F17BDAD89B4AC076948277B4ED687840
-301016C2B7AD4C6D02F81E88C75B7A04D724E234E38A38269351582245E361A42C75B8256AFD5624
-B558ADA2190F960A896BBAE7A8C57E76DA10DC29E69BBF3AA86214C001A27B39C1D17C548DA5601E
-86A5CF53E7B1896BF003AAE9387ABA9B102EB1E9002DD3754A378F3E49F2C6EECF47EB1BAC2CFCE1
-1AC0C5CB063672D32733563F3E1E891B6073739BC53AAA0043FC45E90E413DFBD4548DD320B681ED
-70A7443A233D79E3F038D26975586E5CDD2115AA614727B1F6DD4024B85CCCFC79D10B7B6AFA789D
-B37BD0E8C423C1A4A8681B5FF3A9FA1F61A46E46C4B1836D1AA41A89264A7F4B1C259E4B10ECDF37
-5BD26A1F412FE01FBDC03368FCAF48AA0EC28B1BD603A6A0D0DADE66D14C9B7285569230FAB76803
-35BE104305E4B748FA99FA31F23991608DFDD2097DA292551136F255051C9F7EEF3FB7C7FDB4E651
-C3D03A4CA357B587245236F4FF3252563F6BE08EF8A3EC09BE2BF27B9120F7D37801F6999EFB1C8A
-D1A08698CC59CEAE2CFCDBF6BD8F94DEC94F7EBF33AF05F52C85760C63950B455510C6AB9398D09A
-C288EFA09E8F631A59B03FBBC75BBDAFD675FFACCCF8ADF71E815A4A49F14BF70E42DB0B7347B528
-4E234C24010E2177DBBD57648E398FA6B54571A37BA8C989503594D03C6E60871A7F964599022154
-02BA168B8D1D2685F5CF8645D5E11A1769473027F42564C2966C10C0DEE1EE1B6975852A4870D492
-83A470E623337544A7CDA5C16FE2855BA2A548511FB4D4FF2E3E78D108E4C734F64EE2F12CC9562C
-BDF363EFAF5201B673AD00583FF108AFF6B68055A5F299452D176EAAFB92C84F114C8C22A05EAD65
-64A3371420EA9E646308DE97D40705E1638DF08704FC90249CBC0D2D3E884A4562CC27370B1A9738
-9D8EFD237E644A7370B8B38ED1C377F522C75F981D878A5E87101E621DF9D85C7207BBE5A87CCB60
-7F93A2E52F660E05C83A7A6CE6D01AB4B62A1EF8DA47CF97D4BBA0FA8EFFA9C0F61A325A97ADA694
-45F23AB1FE27A66C271639F839203040D44B11ECC6E805FBE88843B34C4FD52D1D3C6C70FFED433F
-C04501FC20536ABDFFA429B8DC8192B2D45DD9D646049CBF40719C3D674773F9676F9FCF32817DCB
-55402A72C56D74AA4CE4035687C730B6B44A9CC614BCA5A3FD17C170ED949E588EE45E89E18B0766
-2A6327FB9E8475C43E5DA1B0AF07C23774B19C9EF59281F5D884990D6194170D8293A86DB52A0FE1
-7E88DA82209A00A16BD29B8B2F13FD60AA25FCFA9745F57C8216283C1D6EA1C119CB9B8D57C00419
-5210FFBD56395A3EC2D3098ED38F389EFC0324FD0E55EA339B3892568229D8D3E205A821E8219FCB
-1A7713FCF3450F8BEF976CA0BECA47376A8CA73DF85B340C67EFE4534D459617996526B5E5D3D19E
-17CC5449E5EF2B82B2C4C2131FF8A19FCFE6A186A9840D872D85C40665A7A04E67EE26B8BC9206C3
-5B44C8F8A1AFC3867D96DC6D48BD45063BE25B882E9BC0D0948C18DC870E6925818E1FE17D336217
-F174EB4481F5C0ED37A3BEAFAF4D46F857811B6728BEC461AE6468D87A736572F4FF95B58B04564A
-9D3C22754587DF15495A319D822B838461764B73483C1F7CB930EECC6F7424841EE10E4087E95120
-2FE88A391375C96BEC4480328A54740213F741105B12A39F19808F3823507B88115D468C61B212A8
-ABAE7480E39BA52390A1892C7EC50271156B4E8076FC3ADA222695DF372385DA7B117A29E04CD2B8
-0A320F186D61C963FBDAFE9224E537057C49E82E405196AAB621B5FE4011E1782A747EF935ED8BB1
-1BDA39A141CC0BA42D04AE123383BC95A1D03A85A9440010C3B9613064FFECA76197E10919BA5006
-F35837ED9BCD7DE5E6D968AACB6FC91178091FA467EF6FDEB728E17293DC89DDE5A5261FAA95A2B0
-000FC750E7073900D4D88247DA464613ADC2B3903A6132D96AC0E1C564385FFBF6249DEA76BEA2A9
-9160632DD2FC2B99133E9F2F470F72B45D6F18B45020F604B06CD9174BA3805DB60EB9C5E6A9C789
-ACE76AE9C79C1BD34434E95E501BC968633AF93FF4883C6A596776254C0C74993710327086B2886B
-02FD3E42A725A03459CB36EE34A094139AF5FCF487D3DFE63FAD20BF0DFB60DEEDA2ACCA3510E963
-189D1256EABD81253F7FF9D11263FDBC1DCFDA3D1EA2E52005CE3C605C993231258A717423F64BFE
-EBC34684EFA676358B9B543C2042BEF954829FE3246A879845B30EBACB43D8DD7A20FCFEDF763AD2
-C5D20A798B69E08722DCE6A5762E249ACE3055B650D9E110599EA30DE5C4FE7200D5A8DA9E1FE268
-6350D0DF334877D0B9F6524C552D0B6DFFAE125EC4C18F7547BD51C14288E4ABB7F8A1A00458596C
-390AEEE6FA308AC1F788FAE30D7F8928AFC91D4DE6352D20B19D8D8AB122B7378CB379C5BE7E3CE2
-922FE667EA057B5D7B3F0B51C7BF0C85F87AC2F360D82C38964F4DABCC9104B32F0FB8802235E8E8
-D9A5997D392259074C00AF2CE1D2BF7B8E90E2E2AC34185C68A03BAB8B267778292B227245D7FF86
-70786E3F746F86B9D4D17190DB859A0E144B2A61E6AC9254DE5DBAEF20E2E9DB0B2FF654B996E962
-F55E465DD238BD1643CE59DC2B5A58B1E6E4AE2DDC2D74D79AFF3C34E4E593E051FDA236B79CC0DB
-268D2A89B1878051223BB8F33FF99BA87A4811C0B3BCC01171D0A731EB732ECD8749D27952C27886
-B252F9C3D190419FD2900987A0A255B9753FB7AA70C37462134C467A2C4B7920BED9F9E86F8F98B9
-6D00AF8B05A4BD5F14C2A0D914A9A84160D554FD0718F50ECB5DF5E76623065852DAA74C9AD6DA07
-A119DF12C3577FE276AE551D48B1C5CD8A50E84DEC9CB0840520D78FA7F9A7C2071E28CD20EC7649
-B991F3818CDE295CDB6085F24FCF93147E9F4DD084FBD32525326D2EA147ECD5B6C9D9F4A7166663
-AD18BF234E9CB92FF72138A8A49E73E527E9A6488A4CA808AECABC94D693CD2C0C357D285F65006F
-A2F9197F61FBCA6EF07B013E2B558AB531D2FD270CEE7FA8E467FAB885E90C5884843AA08E2BBFEA
-0AA575643727BA18ACC499FF34E3438645BE2AA71EA491E54687CD305E12BBC94FAEC848311AE816
-495B013BC5075A2D2AE54A7AD7C9105B64356CB51F18C2C28E3A83B9D81A4554DBEC9BEA9A660CF7
-E1BA89E6D4DFB3EEC6A3DE3FCDED9B2D614156EDAE8CFDAD5FF0EFEE31DA3E6A54D94CE9453A1CAA
-D9756D91BE85315F6514BAFBC821EE810BB5D8E1B8F05F64F3F72C4B35D424F7E4DC3AB581B74ADE
-B6D6297CDE7AA8278909F269FED79B7DFD39B1C0338E01D556C4DB9CA3A8578ACE3EC3D743ED4B9C
-0145E4525E8C315F7A1B98584B975C70F0D415708C8CCC13F848B1D36AC8249B73638F95DE0CD27C
-7EFB52BED4339EBDA4812564D7A77416DDF4CC88CFB52D07A252D89353C6826CA1832A153242979B
-6CEE783ABDE65C8B40CF4EA7B42B8DBCC0E02423DD693108006F6A4AEBF053B666C3CB63D1861F86
-EAACD43BB9BB6F2C3A17293C189331D253B447757EE7CBF4518BABB73A1D44874D7F0625E6A013C6
-08E991B4AD17A9ADB36740D25E3E35B459B422F7370B134CDFFF3F3BCC4C32B4E9EBF6A2478013F6
-6933A1FA9403A2F1161EC632F1F04EDF95ED0F33DAD9665D54DD9DB2564E51DA7B65978CAB50D6DC
-1568976E83B056EB0E3A6758518B6E17E9EBFE49B72EB148B472BA144BDC2AC95744C9BF1258F0A2
-E47470AB0EFF90E190A41108914AB8C1ED6B11E0681778521870E80C16AF2AFC723CAD8719ADB62D
-3939D3BC8CC1D8A4E07E9D734F54ECA33D936D2C39D5C8055739C33E53359BD40E576C11E93B4B4C
-122BDBC9B1BBF44243AF4F0BCDBDFADE68C526B5CD74E29CE3F70D62BA83C489034111FE8E4DAEA2
-F01F9D938ABB532DEEAC0E329F42453FF5C15DEC2AEA8C198323C9E8FEA55B3F5DC4751D2E2E16B6
-154E7F2ADD46860E9CA71DC114C99D80E7EA1DAB51E925DE161CEDD678EE6282AFF38E3CD0E65954
-9C970613209955A3F581E1ABE485E56402A3DB0D1E9B8A9DFD05C4B0B7F97FC6D0EED0B69AD6F182
-B1D028ADD2F24463834B13F5C1307F91D363891824E81108E57CFD5211F86400D3E96B107F3B1FE8
-9C4908649D04A46DC3CEE0DE66AF03A7FF9F4DAFECDD6DF4D93784CC899B527784DBE0718050FCE1
-85BDE3F39DEBCDD660B2488D23AB1CFF87B0546D02B48E7B7724C9E87B71BF34B5D6640E0F6ECE47
-B182D41C89461F712849C6CFDB7E3F5EBC1ACDD12D65A422BA362A8FD6CAAC5104CCC5AB5FC04A46
-E4309ACAC83D659DDDA256CCDDD1BFF9AB3622450C4FBC89C82214F00C42FB0311BCB1B722A691ED
-839CAF9024FB1671F18E4639C96D84718C663A4341DEC037175C6BBD288BBF5A0478298CA726567A
-9B74C32A527339C666A294A17F6821CBF243D13EA4B1603C292953308B566653423E7301A032E5D5
-E2B93F1C1434893633DD19501AD12728B5A1D9D36635B589FA2E151140B543D7C5E469AFAE8E80C4
-FC1D9CB6C3823CC1BB7EE40AECB58CBC1465792226B19E0FE79235115F6A3AFE19F98C5DB63D372D
-D7C041CD940F4F79F2474D9CEEA0334FA04A97DC9773064895CF11CF73F11B4684F06E48F4469F6A
-1AEB2CBBC52994DFAB3319DCE3A0C8C2EFA9627496F8CC84D3DF3BDC4FFCB61672780F294F453278
-AEB9262E66486856D37B7647141A82E049364ED3D03F925284A3F1FA3DDF4C0B48B3FE22E7DF9ABA
-239D33CD300FFA8FD4B96192BD568FB18D325CAA8E1F1FD4B27527417B034841FD49E4A77F217062
-3CC8B22101166D80361EB15FA9020D24F61007B0A8274DF9DFCD8E97C85568E76D34AD5DB1779B02
-F034A69CCF9D4EBAA188EB3017EEF5B22A0A552696A574907F695098BD8A4849D5C8311F129447CD
-7A3CF88B8191AEC0AFF30A38A9AB8135608A7829207A7D242F6E1FA7DDA19F5E4C28560D42DB4405
-77CC0C5F5803EEE897103ECA0BD944E320AC26553BEE7852EAA733BD13DF760056B2F5BD1243BEDA
-BC3C1EA0531017D74B47E18F801A60074D6DF849FD0532234545E5B5E112D1E7385341D39A89551C
-80DC2DEAED5D5DA2A4BE5015D297324E92BE64C68428132E6EC654DD4BDCC6640C68835FF8A05E09
-9604B8CD43D3AF2B2FE10C8AFEDEC5A70AF8509D12F662338CBF166D9452CD36331758AC4F4CBD7E
-DD52139AD27DC52569877FE709F297444C4F31899D1945C81B14ABDECBF31DC463A4148F04EC4FB9
-703C158216C0FBE65CCD450043ABFD4E65BF8B28CC148252E9F3E797EA0B57B8721C94CBC2EA602D
-F2C57E87938C887A382D2659226463BC7D6A1DA87F4A341A59BEA458177D3F18D1213539DC0E301F
-6EFE0111FCF6921368BE17CCBB7428127E0C059C2C5ADB2A3F0197F0CEAB77FF7F3C027A8EC3EE76
-CF5C986EB47CB60561C773B3A2DA47B5A35394E29373DBD5C3FF4C9213A89AED77CC4F3FCFC49EF6
-EC7557C521979A546983C106B3627B5FD2D71CC5F08A32BF49332A89C5DA71AFBFB94C949A91220A
-B1F885C981423AF93F73BC1CA4D92D9DBAE3EFE6A76E2DE3D0F74FD3255820636E3F1A6B7C185306
-23C12AF90CDCD2C0A728521E9B639EB6345D1DE8FFFC3B19C72E7A93823DFE3115E9E7BBBEB28CB7
-3DB121AED8920D47D8CC08EA2E472E39A4CAD5881B5C4204F2B732AF9D5189D25ABF413CC78714CB
-01B1D8CA5565169A919DC481F6D2E67F1D490AEBC5CC62A8F62C1A323EBB55ED35AA5C8D6F8B970E
-93205C2701CF4817BDA994FC16197B469ECC5F5E9DDF0FA05640C2E571849571CBD26402B1EB1E80
-3FCF423345007B9B52B13E3B034E8CB3984B925EBFFE719ED4F39F3D0E3343316A6FDC26BDBEA88C
-4366D3B2F851D2B244CC4408251AE2C77348CCE9DD8BB9C89800B572D38C5D1CC34C740BEEBB5DDB
-0A8BB251655FB989840D23205D16311A9FCCF7C85F6DFFEA9704492A4E7A8F6C0BDC29745AAC2ABF
-AEBA02B0E7AEFEB92BA63AB0DF844EB09D505C3DFC1058CE42CDD8043B76398401E1DB862FF9F76C
-05E8BC6260A4443CF494BC1755913D51745BF45ADF2F8C7A9546D7EF4FB11E9D94E4539632C2A396
-06D04480EE459408D7A2A869807A4C01881C1BB21C296A402B5E6E07093D833C3DFF075F4DD426EB
-87B1B8DE16C146DE79F52F5943015331EEB852809CBB8E1D6460AC4D176FE96F8D19F6CCB22ABBBA
-A27C4497D91312C3CFB5BB913B314E43D2EC6AB6897BA7C34CF2CAA6DB4BD69EB5DFCEE0AA917D69
-50E36A68A4C22A60DCC69379D47544A58D640EB10DFE120FCA843B588CA8B94F7869F97609A6FE03
-AC86EC1F7CEAD2EC8E81977D1B946E459DFCFEFE65A7BFF67E66F5F78A45D8DF65AF0146DF74E024
-FC042328886CC1DD7779F49CDBB750345CF83CD678A6A8897577299DEB38AD665DC4F21CE1892A18
-C256F318107DD3E9245C1AD3BC93CEF7B7BF057E33EC9A3F953251261AA3D1A8347261E70A46F777
-3A84F3D4D1A0DF6DD22A96429349DE0D180310E17955B10FBF53220EF6483D03C650A8D5C16D63DA
-F65C21ADCD6C2D0B5D4ADEB2F5526AACF7CF42F9A8BF4832FB2D4F73F3D5FFD984B572232F87BD3E
-59133ED3D2FA19F7856AD812515C74F7D851574019C532C25F8E163E595FC9C83E3E820C3CBF690D
-A62578A980FC0803EB6DB9B1E90E3256BD4650816ABE5EA86CE65C2EB418D0ADDA5F3EA04E17AA8C
-4536CC471AC20236E66ECA3619F161DFEFA485386C30EBB86A7AD930FD0AADF2DA69DCAF26C0F677
-206E2030E3B15B3662C0AD03DBC1636EBFAD1F2F2C37F5FA9856B0198C5B1D80B69C5EFFD94CE071
-5135C649C26B9BA1266B0A5B270CD08A706166C0B320915C87B27DE21DEB5D7E4806F6E700B7A06A
-4E29B629CB40761983E9CA8E34E869ABD04DDA190BFE5A6EE8B22D7E511B84EA584A84211F27AF89
-18DC5AF8A1FF2D360B6BE3CA8E66BA4CD2CE6A25E7E89406684DA83FFBCCCCBFD0844FE3BECD7DE6
-7764C59C022DB1168D585FE25073FE00E30218D1DFE115CA1FC606AFCB04F2A082EF91788B6BD096
-84DEA31F20034A91AB9D971366F97B5009FEFBF1EF0AD941654081B1E8F0B2EA495069A1DDF11DC5
-6857D29533DC857958B49D1A0779732819FD22E437084BD9F3C4F2CDA4D12CA14431937AB63A03F9
-C040AF1D801F367ABDCA7302E18A9050D6026FBA5A5A7FAD44E31593173CDF277CD737D1CEF59FE9
-684252BC0DDD00A80E023B88222494C1C8C0884230AB11D1083225AFDCDBC1E24D4AD5FAB396D2E3
-70E44A7571B230660D510A5076D8E35F7DB72C0566DFC119EE1B8AC3C0406950A3C4A4DA36BDE297
-040A27F70753A87E6CD593DC6BE9962261A99AE5949340C5D45C94A9AA3DD636CE8B497BBB812345
-7C824F443A53B3EE595C38983FE3E07DBDC6ACD55CAE8BE1081AFD4857A5F52A3C925143507A3C37
-F1992CF72ED0D4C48D94AE6CADDC3BC87AC3A3EF035E02181F78449E4B063B0835E827644051551C
-1603E2EAB5875F28FC77BEBA6923428D5521C698C6B7F133B0F689F105FDBAC30A8ED2F29F0255DD
-F8A037B81F04EDF004CBE639C8DB0F94D0C5DB92D34D66C2FED66CF8B895AFC4E659D08388EA44EA
-E83CE459E5BE306750A682B627802990037157339BF142BCB9C08FAFDC3C3FB16DC3544F62C6C7E3
-3E20CC4FC7CA21E2C3F6C546CD78DEE348F1A4C8CB548EF20C049678916771D83ACC9B7B22784AD8
-580134471A3C79BC86B5D6D0D305C32E6204274351C94F9DF45D9B2AD5B5087A89F90D6AA033E4B1
-D1BED022F36147C7ABD2B73134DFFD50907258E610C3B20949E141172B1C6A76DB238C375021CBA6
-645CDC26B717428B5A9B4D3F32A4B1E22FEFF3BB93FD889E1DEF8087718D5E3E650FE4A3330DA9C3
-7E9EB499DF5A342D8BA4C0A033C3347CB25A31BE143ECBF91384F2381E323E7FD3A82A3197C18905
-3200AE2C86B9D01AB0B289841EA7E9E9A26966E0DEF54DE0B85D8DF084B8C590081E444BAF1E1F60
-670FA12AB97159318624F2AF1B5EC7DD83C1073A99398D2143A52D10A13C201FB356BC9E90C63BB0
-BC2D4C42AF4A8B9C8C4D58A1B32E0597C63B3F8B3E893BD3BE8C60231838F1BC78E73A6C8CDD5E7F
-2907F897FC8EE99BFFDA7338BCEFB5AEF950E5549ADFD207AEB15846B509FC57989883642498A381
-1B8E5CDE69C05924EFAEC232FA4CEF302EE3251366ECAEF57D25CFA3B4A9E6397D996F421C900BEB
-CF73B038FE7B16FD0A1172AC2F40D19CE0B02FCEB8BC47DA5344CB933C7FEC950184F78ACB32D3E5
-E290E84BE753B9E7A7BFC4416CCF29D023760C06CDDEF2505806A65E1508990529245059AFD301DB
-669D41BD72BF7A80A9DF66B876B3553FDF4DD38D15289AF7A1AFBC53FFFF135A6348DD784AB42A6C
-0D6AA330B069607E2DF3CBEFCE79D6F63E274C9E73A33EB85246D5EBB986BFA923DF68B2B8CF82AF
-6C33E785F35B25B1D1D614DE85A4F4510ADFE42D75B5FA5408A59ABE53859E28B3D000EB9C6A7D2F
-67C91DD14C895BA87B9CB57B851E5193FCC2A443AF85FE28DF6F39537F23A058BCF81DD8C04CB2C2
-5040300F4C55975E856DCB4E21E2B5481BDCC05601942FB25BB8A6B6F93E2C2A33CD478B44655657
-C557EBB080179EE5D98C5CEBE0B25BFDD952FFEB258014D7A5BC4BCA4F1A23BBA73C454B12960451
-CE1752401B0151CB2E01D5C72595095EAE91D8D3BD55A54A2AEA89239FA176FA7CD6F16BB0733EF6
-CE6E77763A23AAC77DA88C8EFA7BBB2991E472FF2075FB25A75ACFA70A04C28764F4AE4C12051B25
-B120CAD2E3044DA35C1F94135DBD69B10DE147321CBBDC814CE99982AC1D76CE3D3330E41AB31F3C
-76BF89B95EAB81AF3464C732D5B1411D97DB36C9063537F64756F205B16ED7058E2CB1D6946C00A1
-A0CDA9EBBE924BDA6C7D7B605C514A98133907B793C74CA858E82DA3519188CD974B34DAA74265DB
-5BC8550D5F0B1173ACEB87458BCE2AB1F96996C811699A0FE4A9B849D39023725E2B1EE7E426D30A
-6C5C75AE6BCEA6DB41E4EB2035F7F924E6B9F0DCD00EB2BB014222E55FE387FBF5B9B7C04F4688D5
-AE3529FDACB38B5EB0AF5C3A874C1AA6B17CDA8D1E22EEE05A3DA88449200D3D0D002DB86F6C51B3
-37C8E19F338E7BFA01E1202612D50E210140947D5F350E84F790286C3F679A5D7E43BCDC337265C2
-631527FD62D598B7CA1F5835C0441881B97F5197901ECDC4F195BC665A846823D2E41417373F8639
-567B228FE7B73D781F07A361AA49C3E9D80FE5B2A32C4C1E575D194E841967B08D10405FA44EEE28
-47DB9372C5CC931E50469532F1BAF577F680BAB4E30B7E1CFFA8574ABB679789F69A8A1BAC07B7C6
-4EF5CE5EB00E97B36FBEACA9BBA4A13B0293D34BDBC77AD1FF88E5744AF009823BC262511C4724DD
-585E7E17D90F230F7A5861B0DFC42F0B4E49A04EE0EE4DADB908479DEF8372F334C53D2BA5D855CB
-39DC7C9550F9D0F7F77E82D5A59FBBF34BFFE92DC9E6668B68FEEAA4F20053433D6749162BBAC5D0
-D428DCF2D58D49B127FA2E674EDC7D3613B1342F4D0ABD7F4C5B049FBF78E804D5F16505AE7EDCBF
-4D6FA08D72890F5D55199034572AB4B0C9A7E7F6F5A403198864ADF113CAFF5BF9D4AB5B16F81D0F
-C2188FC80875E10034D12E30C0364F8F72797F1AED525A2712A40D44210B813DF5A29C84E9F6D51B
-1D60A5F6F938FAABF878D29E6AB252D95D05FC1ADF5D4CE1C9E585219112112BC6CD5C766411FBD2
-2731794B5DE0A27AC57D3C57926807469C360372BE529098C350EFE2154B87F1205A57A0B04C5206
-CC4FA66B8793BBBE492CC3271FB4F90A28D0066E0D7F63B8DD01549A05AFA5482C29560ABD628568
-75CAC16100087540162473498C14087B29B86B7BFAD693E81765CEC781F3FC80E9C7B410E9B55B88
-114191A1703C638DFBB469ED1DD8254B1407003A319CE74AD419B077F17047A01F0BC0AC8507191B
-F72D77D9333C9DA8C9DA733EFB5305F49CB8C7BC451321ADD7D896395D269DCDFDD084EB3AA70338
-6C0697E962929651164135C094D9BB1C9B949D5EEBD3BB17F02C98C813CCBFB23C2C26218A2F4C63
-9A8B9DFF2C29406037F91938A5E1227310728428B56F48108CDEB33BD3191ECA89F947271983DB77
-6B2BC897A30EECF2601EE3B2A6F0E135397622AAC1F2DF523CE6E6BC720E13CB530CEF4AB9C8273B
-D3D81563AC8A8E6C44A195112DAF824BC7A72FCDC4E129A480717BEB01085DEE65EE4344D0B41EC0
-BCDF842566B1D9F5353B1F6A063FFA6CDB06EF634C8BD5A7A63F991D178F56EACA653DD67685CE49
-E98C7554745A4AC533217662D23E1D6937135D13BC2208EB8D50560A2BAAC319DFAE478B6BA4CA5E
-DA20222F0E9BDB0806320ED1665B54A347DE0C42E9F77842DE4D188E7E824EB2F0D7AD163F05480A
-7FA99C5A603BBC5DBC843774CA66E889B945054C0ED0B1A4BB14324EF901B023C208CB95DFCE9284
-89789690CC45BAB97BE449F8E2F5AA9276C0571303E9788C46E7F789555BFCDC3FA9ED8DA8AD9BA4
-8B3AE09404664391E63A989EF1E24BB464043AA099E4F2D796E352EB277106D8D81BAF2F8562EF46
-BCFD1E0047E8018CBD973021DC1C1D821AF03F083F0B088A62EBCF2BF6C5B0FCFA441AAD1625FDB8
-34F943DD47A5A42EB3E9A5B49641F797C288B799A64897F1346070461B6D535E0C4ED099199C387A
-3176AEDC7DA7E7D9E118E55565092A36F7C74ABF281720C0147F4E4F37D49436466C61FF12764E30
-43D8A6D027E70537164F0E7942F4ACA42BB2CB136177EF7197E76F49AB403F741C0EF902FEBC471A
-D6C627424320A8C3A1F04C310C511B3F91C3937D9ACF459999C18A33F2C852EC38CA806599C728C5
-43714018C65E2C5F430F6270AF52AD71ED38813B60440779455F9529A4A1623CB9F5422B9216F9CD
-BA913B9A1CD95DA225E254E8101216085020660509D03A034B5D7E32E3DB5E5962A9A27711D4C3E2
-9CD84057F7D0D7E8000947AFE896F8523253391D2E11FFFE523366B05C532D5629A90741EAB3D4A7
-31D3F6D4F03FF93233DDF88BB1913ABA22EB9AA6311E3144381DAE29BCC8639958EEE59ACCFA06F3
-5DCCC63E0609F542F3EE5DFB1CF718CA3F328455726F8F65E23ACD970E4049225998371B63E35AE9
-8DC54D8329B8DB0901FAA63129EDE21B158776981D4D094013C096E9CD020315D123C03DEBA21E97
-E4B584B4BC0AF25F5DCE53C2DC0F3E61F99BECAB40799478BE7F5AFD7F68E23EF50AD6645C967EE1
-1206B6E791769428ACDC370D64E4F2B3972E0E4F442297199350663D6E772FC6777A9B9DE215273D
-082CCE4E8678FE9948DC8D5B0E459CD02F1645AC5620F3571A40B4D5A17DF5CFF48B6C843DDEAB5E
-BF58FE13D7DA08E8AA7902119248B3B151DA583101CF80853B0150FE05BDEDBFB50A7FB0F65728C9
-3B9DF48CE8AF1DF1FAC25C1D58E1AD30274A00EB54CF2F16029E1AC0A0919C0655474B9A6936AEE0
-FB74BD185FE7D70BB84786997D34A40326A74356A4AFAEE67B6B26D1C1A7BCFF8697B55C816CCD77
-312C332A55315DC54F9BC0A0F12500E0A76B3936292A3DA2DDF5AA8CBB9B5DC32EDACC4827D684D2
-74E65B8B76FB2C2B19F7D5607523FA953E34BB39032C05B1C1244304606C55660D3CA8607E764EA5
-B03DB7FCAB5CF7788C6E60EC8C449BCAFD90BCABA4132B6CBCCFF16784FB59B36B77CF0A9EA572E4
-CA0A01C725A6CF2E4500CDDF5BACCB9094D48925434F044118CFDC2696AF5FC0CAB3884107ED17B9
-BDE0C0104B1292A1F8C99B06FC4A6360B24480BD59DF0488641899B0F42B1311B582717BA7ECFEE1
-4143654B5371C8B9B2D80685AD38D897AD1E64875C28C7020A84FBB3A3BBEE16617DCB9BC822B7C5
-9C5A18C0CF7E80163ADFB7AA03B7CDE8497C1697D90F2ED90F813095C5B91657FC294EF0E341DB33
-92ED860CB2E0AA09293D0F99AE9EB54C761CA2DB1E51E1CEAEAB276C7BD916C68510D72D9A67468B
-09B3C39A7815628FB126CDFD5EFF59CC8184C0D35A5B5960F824BD175495DD3EB12A4E96008CB13B
-8C5745303E66CF8608FF27C4709C1D854EB79608E52F068FEC0151A74C125EDEAEA555C198FC0802
-7BBBB802835E1D435077AE4B1CCDBF722354F6C572BEB1376D3E342195FA80AC9722EB2F46E44DE0
-5F5A227B731B8D4A4B6EDEF04AF2C5DEC2EEF8FF48C5B18710ADE3DBFA0C956505B6DA9CCB7CBB83
-4DB6CC754948855D833670FF0AC42A4773FEA8322BECEE04CA74AC2D66855132D11A51524488C547
-71B5B7A512796D7D7AE0F9C1FBC9CBDBA0831074F4D200349D0CA40537B92496692766F020AC43AC
-01DB8B2AA2EFA9D21732BE3A315F6CAA402BB2E61D40DDEBDE11276D90C2C601A935C168BE600464
-76ADED15087D54A14C68EECBBBB590927C1E10D291C9285334CB0C80EDBD392BDE4D535EB61F8E76
-41F58AC1DF5B1C5A5D91E3E27E05CAF7EC97ECF0C85B6425197AA856521ED701E5AEB82A7F52A8BD
-7DC97D5B3FB5C99A5DF84D1BAFF89072922509D76BC6EDB15CE5F9EB8F4154BEE1E82020240283BD
-C83A8E49AA9A2649B7955D5C058F2818A63BD0BFE7EACED4A49063C489A626277AE1246F721C9926
-E2A2B6C31045FBCD235F3CC58BC4DD6C57FE998EBD1E9FA5154652BE3A1685BCD2EFAA079A3293F7
-8142A6473822FAB627927EACCD61B3E99C3077103D2D19382BC7EE15BAD0FDE489602D055A01DBBC
-F91A566974559D1B477C209416887053169C3F8F59955BE4DE82B60558CC9AE15602A93F029F6B43
-29E0E62A03982DB32F5229714EFA1491A7B24AEFE18FEBC2C93DFE50B3F641B51BDD33DA38871BF5
-243C17502D00AEA2D9E9734E80A96788D4CF5BC12A42BC386162FC88A7435EE13200C1C2C6CCC5D2
-1A03941007B4C4291BDB711446CEAF27148104BB240357D5EDA0EA5A5CE27D4A83909D75BFC05D75
-F10AA74A6DE37D7DE15C1DDA3AC3045DA6CD48323D904E716B445E5E096FCB379353ED70CF4B6FAC
-102C762711079EFAF13FB74C9B47AF75F3F6BDA2A4647D2AB47ECAB64DA6CC01479F618E8D2D0A36
-45445E8744683CBBC560D47C98078B84206E90EB839B02D37C852B8E284463D4E4D890203C3D5B20
-352110034EAD6BD7F41456B807E1DB1631A9D499E52E9D9853D86728B1A2E511F40F8CA1E4724A0D
-17ECD640B52FF6C66E28693D89765FC391612E5889E77423EC85CBD0A038B6BA98B607701DC0C4B6
-6B3B28C7790A1F1EB8D051DC98276DD9CFEFAB3F65C1C928E48A060C992B392A43E56EAA6DED896D
-EBCE71F8245BE4687F2F1B8FC0F43ECE8DB0BD0AB0811C5CE73CBE336023A0D66168B34A95B4B0A7
-50B3BF1D197E3C042C7914FA731D7831AF798E9429571CBB977E6258244E84701E5FF91D608F98FC
-3D68A4EE5B81D5FF38B6C184F6118B875F022B4CE207DC7B37E1452DFDC591A3E506AE82C7E7BFF0
-011B0A3DBD616A993FBF878FB03B6C9F2055A2B095D29361F8253C2623653687FE0AB98078F6AEE5
-FC2C2BDE0405EABEDB3A33EB7F04CB6837176245F190C6BBBCD64522B12FE7F9CDCF201A1AA8A19A
-7BBC4AC064B4958F44AA0F8DDA23835AD28A1FD0EA105DE2F395385DCCFBE2261DC5A89A23AF606A
-3985E5038706B1FE0910400E16BF008F250F3BDE3AD806C735495D499F16F99275010478FD2127BF
-7CEDD6B5BD505FBE9BD0065B4A7090C9D27CD5B36C3AD33E1B31EB6D44E375003B51B909DA50BD18
-218418B3CD22B43278B144BE78406EAF16C7DF6B6C1C6238004AAB73736B38E168441DC16F9A5CF6
-0793A18633BC43D78674D12D38CC979F7CAADA6EFE807CEA499CB9FE616496682A66E04BBDACE1DC
-112B2156B9B0B20A58A8CB43FF0EEDB99805234B9A5789762AC7D65F5A319C33F4F7438CD15E06BB
-80A7A97E976E8CEC23F4C646A5821880A82B2F1DC27767F090997E91488BFA15064B702F864FCE65
-05D6CEF87D2A0A12B55BA189AF269811E3B8B850C8401F3906C080D32618D9698A766732A40A9FC5
-A94E5BDDA3D028D823D6B603B6D17DD046DE181FD989EA0F80B4CA62F7973E4DF5E032A31FE6BC8F
-5CDA678D4A72787EB8253EA5882C337CDF9AA3E1E7D9536DD09B047CD8962E773F72F6418A3AEF5A
-289B3406C152A50CE7BD4B493FFFC27F6AA52F79EA67E362FD92559AA4F94A2F787F6C735DFADCF2
-F08AAF98B80C53CA5607A94F25F04AA65A70A75937840E73055B3D65FB054C63E2E48E68488C9315
-A13EE949E03E46723C11CC759D222CBFAD2E1A87CAD779B23D38F7E2F660DE1388EAF1CF4D18994D
-75C6CC63F187FDB949940C18B537A0AFB12AC5F67B0283CA5EFE2E764C4369104B9D3B06490D1244
-C41D6085C85F1106082EC9DB84586230511C05C82412D2CDF3DAFBF4759A775628878F997415296B
-C416AC8352A6C6988691FCB831CF95C10BAE691ADB3BA2918B35924BD5C3ACAD8B137397B10AF82B
-479800FE16D472CD0CDBDAAB4F882A0649CF561004B8CB7CA32EC129D0A415BE6CB91DA2B65F44E8
-0D138808A127E851A7FCF927E99DAA0EA2D626B77A16C72E37F058A3B882FC4955DC8CB6312434BD
-3BCED75780B13590BF4FE8D64ACF0371F9FB1D361B05025852AAB9EDA1A0C997CFA58052C454FD45
-1E6C1F194F4D363114E312F6DC35BBAF357A32CD200A3DD9654155134259887D677ACC44F89AA401
-CA27282DF7DC3F2F04A108CBEF2558DCCE28BAC2D87B8D5B7181EA927F61977764F882626D4AB338
-D95C9477C54E9C36012A3CFFBE199EC8120A99D2D70A21F9D9A0354E4EAC7947990E8A6E0601796A
-AF6F14E758CABCABDFBD8204A8E748A3E5FEBA570D36E2BF474C0083229A63F96114182321B2EBE1
-BC76DD193724C4588C1D39D184C332FAEAF4C629F2B3B2F49996E46AA6C9F497428BEA52D58876B0
-DC07B460248BC85CC16773A5DAC36CDE8B152D96057F4EFAAF8B1DC10022038577368057699B3A37
-178A9F1F6C6CC60BAE820B7ADD0717911BD23A6DCDADAFA32473491AA80CFE90F2A77E24CE2826FF
-77B18B869C33FA292FE01D6477765044C7D14A548B28B1360125C6933F05C58B0889390537CDD16F
-8E967E0B38579449DFC1E07389B7069AA8594C5103465D5041CC929268DE863FADB6925B350AA94A
-27D421FB7FCC81C6B35F906F12246B7A5140511A97211BA9BD6831A508E963FE8BE961332F557808
-488F06EAD75E86D60DE3FA2425AE8439ECB9112BC3E4D73747C1C8E87A649919827049832DB0BF6D
-A8C85C9A2592AC002809070900ECAD52A56F1BFD456AFE066509694EAC075788456B0B0BDD7C192D
-321E9FB6AADCAEF00F570F22CD4A5322FBCE8FA98FAEB681940895426270BB4319C11DA67D88552A
-7373398AEC5DA7C9CAA9F3B34581C6E968DAAAB2751CC012199DD897B448986CFFBAE4D412BF9ECB
-F46742715A9569932516259D3B3A5431CD7028E42FC751C434E2B714C718202BF02CAF9B8A2075DE
-922322EA7CFA605C8376FA958B8FBE43031E1026FBE6126A3775F643EA67EBBD97F239FB3C435526
-75CD08B19CA5EBF53B40D728556B4481C7F73EC71CAB0F89E34D60C69B272FADC22E8E7BDC6210DB
-09FDD913E209F49FD28E8712B8508904620250746CA3B21B026EDAE60A2822F59E912E626B93E0D2
-BFB3230DFD0E54E91A1DBA25A609B64D41ABD897A5D21764C351E85F9E87BEAB9E645149AD32AEEB
-B3B1161032C701647115F98C1C2AAECE871862D91D321AB90F3E923B1FDEE00D927F897AA9812373
-6536E2E0700F10053D7E6C589BF66029D794883EAE4C8228941CE96565B50D48887B5314A2E55379
-59638222A6CA54C77CBABD460DAC11B063519AE4F50D93DE41763BA7CFBF4C7724360E750478EB62
-8921DAA065858341958E4F3EB5966C6DD77C05EEECDF4B5F6CF19AB507589B4219377959BD258EC9
-21C34FE1DB003F7D0FEA3E2FD6F5DDB0A2D62CA5A2CD3C7AB457DFF25094EFE04A9E1B9CE7AE3F30
-026B1CB039228D309A22899F6E9B9BFF922E117123347967D7C62C670E2C74579C35989925603022
-C17B1DCE378031ABC9B4B437C7B6E64620932E93189754C01D4B280B8B08699B2CA953AE4823BB9E
-E34133C5C95B3290E1BF010705AD852C72BE87291E1034B09F44A95B6A2F83FEE8841DCF661770AF
-44D0AC7F9CDB280939FC5D953D525E0B41B7BE188D5C794687330CD770D24D9CD53B895A253004E1
-8A31BE4E82B384
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-%%BeginResource: font NimbusMonL-Regu
-%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-Regu def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-12 -237 650 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020945 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A2261C63C769D2F4B60FA2C438AD7D199D8E4
-5F7E7C9A605C8CA14E21FCD81C9A515FB8DB6F99604534D06EA9D87FE0FAA852899C9D0595C7A97E
-6C55F79FAC45CD38E87B10D210CE7501E88C8FCD3444354365FB893A12F596AE2C1E70D5819EE0D0
-87D10BF8DA96F3DABD5405D28C4228C6C31BA4052464859640933FEEFD8071C0C84CDD829A9B1D0B
-A01F25A4D50EE2EA2B45160CA6333B2D2800306ED2BEFDFE155E9D9F9342EB8D5B0ADBF2460CCC98
-643FB1287CCD28ABA7B5CAB92EC39EE2E918990372B16F8487EBA30EAE88708B6CF33B6C015D8096
-C7CFE2F139F52052E3925C0D50FD64CE68236D59CB83EF56BFC584150EC38065059F3308AD6F9A99
-F83EF4E6CB13855C8175E31417D190D036B387D3952344A950F4D8C7781B307A094DF1ECAEE4D2C2
-FD747BC6F7F9C6BD0E90C19294F96C8C5CFE88FB34C477574A1B1630B8CC591529E59B20794DA32E
-61DECDA8ABBD1AE956CF74012AA01D42EE01E861B0AA6897C864788AE59DEF43C493246FDB1ACA55
-4C12594BC7B33657A9ECC9E3D1472EF826073F632BE540C35FF6FB40566773F3BB2204D3A579A08C
-CBC844C14B18C350F003B9DA23A570C362D6003893CA32F86F59B829C78EE3188B6E3F7FA81D7F62
-2825C639638DFB78B7AF1F500F5B450FA54DBFA5CBA277C794ECE93275A3DE0B452FDC8DDC2993BA
-A42F28A636008CDCB03EBF71BDCAF35019778993443F88412AD2AD0D7155A3944606463266322DBC
-0244B07DA1E9C27A27B59664E8566D7A54CC03E995AAD008B0A17E2C3EF61F720CE7F7788599C4E4
-4C709CD5C31B11107F16AD70B17B9AFE2E8CD922A7428DAC171427FFAF51067307FAB0ADB530E701
-FD22DA22C4CD3064067BD4F6089C4B2C87937DD426E4E9D2F60E608288BAC9056554D04947E69200
-61E379CF5E81BFD32FD37EFAC1F61CEBEE551B0851516471A7472C60DF89DAA9EB1DC5A67E479745
-3E69B9E22BAF4E3CCA4192D603295B018C4AB69D18DE52DFDF15E96B557F290A4B8C5B1E7A6CACA8
-1F2351B97ADFC36995ABA43803A6E5AC04A3C93495F6D38106B8B144449C07D1358210F9176E1565
-72363CFBDE576BFDF99FA329DD1346E83F79E06CF68250CA57A68931BC7F342AD295D0CBA17AA95B
-B8EEB53EA6E8E660B814E9F857CECB14F44A43288B69A9E7908D55BF19E844359879D28CAEF1C38A
-36420185D20DFB32C2E002202800E8EF3D67C5D50E919657CA958B538D537D503444865331D79BFC
-40312068D72364503BD0CC84B5F30A74D8B5B6A26AF2DB764564FB65A6BA8F9051AE2B4EA458D46A
-4569F30C6E77DC097356770362E6CF3F1661074778EBB44FF7D1E3B64FF75E77E11FE525BB121C65
-46CFD13300CA1F02D571B82A5825E6226D14FDCF27F06D87452A8B6C5DCA658535CEE2A795E58137
-D48E566B69D53A0C3B766E84C51EAA221C46999CC8065ADB2F129D5B630FAB1814C0C33B5AEA0EFB
-B6E994D80941B53079AF96D90A0B924F9B0E319BED9836B8F9053F868363D3CA554CBB181863301F
-8CB940872ED5FA7BD18CE39218B5AD8AC57D0F752D941076B1C64D99BE0DB86D7A6D96510D772EB2
-4C587F11779BD21CFE5BDE1F29C1EF9022B2B8BCD7F91153C845906722477829C40111D810480F3C
-F62DE8DBA7FD86CD236E656618CAF6FC46827FBC4898EA7672F8C9971AFE43E0E01EC8B77D4AF48C
-BF1210E98C1DB15C16D149BFF58AB0270CF015B107A3A50F5DC8F37FFB92EEC8CB6778DDB7CE4AAB
-C464C4AFF654223006A550EB52485A23D2B4AA7198D3CD54418102F1E9A4FBDE37B841E56F5C2C53
-966DB9B66B000E4588282E3FB80C2C519339F0002D2F83C979EDC5827A3B3C8EF8810A0F9DACB6B9
-998E9AF6551F56313DC4011904CB979AA2D32B11A811BC248141E4B9734D9FB7982A5671002D8279
-CAB93ABE057474628DEFC95D43890DB1ED34CFA8A20BDC3D874E7679A396158E522ED0AB969A4E3E
-C7E4474E192590504D54DEB7B260B7935C4E56548A7D121AC1F741F8CDF259EA1B5813175A77A1D2
-D30BA26F65EB765A04C09ED51F69F41551ADF399E6AA2FC09788137BEA4913F17B8EB838C38FB272
-1FDCB55FD65697FF0B850E7D3D1CE266BF90F7EC06A9A0876BDFE767D3A918B092FC78C775F945CF
-1F96E859C03DBF630D9A940939654C3549D8F7921CB94EE23D5A0535DE9DF31EA0F937F860B4F220
-A99ADDFC343D7CF7BFA0B803C12C26403F0DCFFC8EA786D0D8A8D9C367419CA8AE41190CE93A8086
-583A1E6C9D70B612C84D87D2EEAA71EC2DC12F4CDE6A821303D5F6A9BBDB7EEDCD289E80FA3B75F4
-7F481B50719DCF4A142069393593B9AF9CCEEAEC56A35B8787193D7C88113E9E1E221D151E093B01
-9EF89F6118BEC4735103CC8003CC5AD1B6727B3226CD44C497DA7052DD681695DBEC3397F9598C91
-77701C73BF0594CE93F23D50EC5BEE2FB9DA1FC966DF148B27B28EE3C89526DD6625E2887F9FA076
-7C127C609EE315626BC14D274FBEA56528DC06A27B2D476D46E9E7916590B156A5DF04A6CB15E362
-45D77021767B6E5BDFCC679670263FD891446C3371B11BB6E1DF60F960AAB4149D7753E6A5C33810
-C42C8BFF4E935003388506F8278BD7CB672F132E065AE684DCA0B9064D01DD620E7FFDFE04F14277
-EFE8E60159BA0FCA3FE2F28B902D4AC275D19F0AC6971EBE827C4A232D87650D2688345BCA78F879
-077114F0463C5F058107B669566F8171E4E284D278405580F04BFFC9902784216E0C9A17AA9B2935
-E66E18A783F723BE044389B7E9D62AA36818FF2EA406C3C1A9D2F3436F3EE7DB8BE86AFA8DAA6A4B
-1B84611350D8D27605509612B515E16AA843164D5D0805E36A2B9EF74C5F6A0B9D59A04B55697123
-27F4B1B30E9587CD103337639967CBDC655AA46E80D2CFD24BEB50815B5338E522B3A7AFE8362AB4
-F05D8BC52BBA9C5089ADA8C89529B0275AF422EB540D31A938B8740860756325B966B36817115213
-FAAF92DE63F6BAE1E0064BFBC5588098B61EB83C71F1C2082436D37DAF1ACBE186FEDC4BE7C1233B
-6F18BEC5F99002D21CB7864E4811F7AB3C03003E1E4490AD1AC793BD28FCD5EF0E6CC30EF39A08C5
-2F71939B0CEF620DC69E31E39D6DB969049031B0C92EF2DB653D97F370141456A52985076B268652
-FA2648C792780BAD637C4D7581FB2D62011D57E293719487CF2D1F013CFAA532E1C2D39178D51272
-A6AF041440BCA174B5CC902BD7390C7D3695056CB4BD7791F9FB6D88E7A70DEF2C97869F5DBC5BD8
-23C517C7B7C39D624DF627DC9653EA5347BFDA80B723F05F6DBB4C9EA501D862ACE05B9DBDF21B70
-56FBCD8C6D4B85873DCEE6166C8B5ADC0316CA12D9639F361B15A42F00E1D62EDBCA1111972FA0F4
-5758BECB31DB38316F3CDFE1B41748C93ED58B67E9B57ABBED5924A6D53E99FBC9A994A6489A8BDF
-13EB685548B4DC6D62DA7426C22227D4D43B6FFC7B5EA91C896730253E8941AFEE588359C2BECF6F
-FC415B9EB6D31CCB0F6C7F85853E6449FA6D627A97A3CE8303F148393ADCCCDFA2FE085C6908BE5C
-3C05AF00A6F02840206C3253A559AC5C049BDDFD11AD9B118403B84DA10AE3C470CB9A9A2D1D7B73
-2F59F5FE146DEDA60AE750F551AAC934621B4470E1BC324C436303E25F81D0DC3188BE0D6FEC5414
-C20E4CB18952E12CB6423DF7124627ACDE145500D77A97A8BFD9CB50D1FAA008E2CE2B2505A4749F
-1EBBB092C347023714055A9B63353AF9E7FEE05BB54C9843698101F79888A91531773830C2C967B5
-88D3ACD2192883D5CE3962D51084FC653EAE2C5FB2DA41DACEFB5C76812D2EDB5B109677289CD199
-8D457FB1023A19AC67295BBC1A9A20A426B06A368DF3C5DD083CB1180D287F5500F2C635EDE157EE
-FCEEC5503447382D15C748C1E35F68753992E5C90F900DE54D18F8E1B355D1076ADFB1F3590135FA
-D1A36F028E44F48ABB149B80CA9A54614D467F8D71CB310BBC7AC7100261092DB8C5BFD39E0AC6BC
-2C9D6CBC3A8C05FF8A74CB21608EC4A4CFE4CBAA2D056DBA14206106044DECF59F957EF8A9CADE4C
-9B19D8D30DD4FDE6A9548E50DB51ACA73330142153FC36B69C1C8D5B26D0C689B7040E81AC2C864F
-D7C097C99BE5953843E172C97AB5684F35FB03A725A89DBF371F08DDF40A1531FC1B676DB0E1543A
-EC6E97D3D2E4AA3D5831D8B3C952ABBFA112352814FB6FAB61A0D680E6640F6AEC8426200CF61286
-F7422CB2F78C61EBAA36D47EC16D7FAF8B4AF31D090CDFA255D9D7C61D46CFB22A7D6E1758E71ED5
-67E00CBD8E8F468DDFB477F091A2F915627F22FF47B876544BC1F03B6BBB98385F009C20BB1AA2A7
-A78674692B8EAC2E3C8069B79E679338DA57F72976810F845BEB6B9ADD32B95D78E5E60F16DD1668
-9C05FD82D36A3115BE8ED494A74DD211D58A2CDF983FCB9CDC29BF7F0E29988FA23560EDF514BC1D
-183F3B2A22C09FB179B47E05ADEF48DF02F31C29875D1915037B19407764A4292FE44E741651A8E3
-BEB5F0D972B6327090F664417C84F84FFBF0AFFF8B1D85C822D90730AB4140C42A51AA8B1DBE4398
-4EA8566040EB8B341CCE23FD3F69DD235A080BA5C69AECB9BC732BC2D7D40617DDA6B79FB6EE40C3
-556C7DF9B23DAD89E94054B1345DB8402AE679FC4655A4A776C0150463F8DB2BFC0608EA1F124E22
-1DDAE6026B5E5D007A7E4A0D6B3B0CF3A2669E67C5E4F01551966A7BC48F2F4B6A87E740D8095E63
-F77C7A027F26B52F2299DE5B8A2F6209BCF3D31CB0235F998F781E5CC81E31DC424E008D46EC0920
-2951E5684804A0592EA47D6C788A20487BEA2EC8F2E6C1D7F378B62DB43CA43C4B366F8B4319631C
-FE9854F0E10321CFA3B01C873584863BBEFC23C72C05E695B56E8A52E89AA2DAB543834D34DCAC5F
-ED08DC51825C5257AE59850D101D84F4CAA1D29FC932F9E0EFFBF7A9A7F3685F61F0490CD3CC8988
-2DB52A757A6AF4C4E67B407BD2316B1C0FFE7DC54E43C87B874F57E4903334E2140B011484863CDC
-ACA331175F2CF3D72E0042855983AAF8853D3015E870FF0807014C31D55060DF3FE1FCE157324481
-2744AB51322444632F9AFDA6706E320FFE82B8CBE242A19DF00CE73EE48E25FF49D5871BD3E60652
-298FE3E8D400609E232E0DDC794C0579ACEF89E841B2EDCA50D51151F65E8C1CC3B01EF1870558F0
-BF5743718C3E068617E81BFE120C6CA16E0924BFC2541177D53671CAA3AB641C41557DCDAE1A3461
-47B5E999C4541B08B4AFCBC187AFD653D5B5F8386DF6AD8FE69E21BD0567DF494F736C6A184FA4DE
-48DC9F347787CA96E2E00A296C2DA05C2AD9BC423E9CA428D7F1FA12DC9353A302FB8C529AF8688C
-BB543B45B2717EBF8F6C497935F4F3BFFD285E0402AB7544B3CA4643AE5A8B5250ED987A95FC1F27
-5B9707ACD0641BD0EE2AE9758494F8D8A51DCE408A38AC20EAF0852D72D84D0C6BE973326793AEB9
-55EAC6FE0A2813A355DCD22F6F2CE56588D1C055CDDFA98878BCEB6A018DB22922D2B600A20F8184
-2E665DF41013CA0947C4237C2BD60A75E2FD1A3FB8C8FA19485730B87461AD466ACB02DF8CA24091
-4FB090B3D2B41EB6B8FF05E1A59D9FD668AF70BA5BB72778953BA55FC5F9F626043450E1D09BC83D
-8605098ABEF884639A37809A32565CBEFB3FF39EE53D6C18C58C272BB928E4410E361E59A50F242D
-69747A032617C52DEBBF62364AB5A96EFAF642D9D82BA679B1D70FAC10A4EB62FA5CFC308E86368A
-AAD7E75948F43598CD1C544A0D4091374D7E88D4522CBE902391641327E888E7748FA889DCE67ADE
-61699E7D77763681CAEE9B1CA8837B2F7EF9C18CBCC538C465C8E2DD34616953CCB6030A222C728B
-834911C1A179E2C770289407AB28B303E724D97F747D6134B425216A64C6E0B60F633E2B85300047
-E4C90339CE030A0FAE31E830C8ABA5AB3386A3B69267351A7BFDD66356AE5E57FB2994452993E90D
-E7C4E260ABAB93C37831856A650D56E44172FECA01D6C7C380F250B82473960D2A2A5FB6B4DA668F
-46E624ACF7FA0FD4490F485D640A3ADFC9F8652E7A38CE5799F770C3606DB4B8B947F93967F779E3
-A3C0572F13A5A187D31D7BD12A5C7BE23CB6ED6192086241B76C5BA6983DB9C93E4B208D707D3760
-F03CD6272EF3A4CE89B8E52E6AC5871A3D03EB975759AB4BE239E5EC7842CBB333E692CC607C722E
-185D3C39164DD320C6945629C70FF66A5237C0A9520A1FAD6EB9816069351AB0F135D90CC0982B14
-7D2294AE4A38A527EE40BE9CDE2512AAEBB590E134388BB171D0956A7C4566D65A9A041BE6C4F883
-6B3EC3D2ED1B48B566A783292B15B6127920D247D494F070BB20BEFF60640B11B276DDEEE49706E8
-B2B21BB40B7F00AAFC594C492C25DCA774E0B80D82E927448DE2E74A9D0DC7AC9260096EAF187B6C
-D6AEAA6D1DC4205B4411122751A5B22688404EA7C5861730371FFAC10F5AFD4727A0E402AB5EA757
-606B75EB86A05E8F774D6E430A1A3FE2A37EBB06700474239FB1CFA05EE44B91B82244C575B52E7F
-AF934B04EEB0D933FEB57EBE326D75821C8B23EAA85B583AED4320B7F04B9F2DC591091216FDE52E
-064BAAA9C2C9D9714B95A4558C21F3CEBE624B5403B31508F178581AF6863083ED762F1E2E34A45C
-FDD71660D626FF8648F5D6C5E580D4765A67FB6159EC8077A9F0A88038C8D3D7C77FF0926E2123BE
-874F7BCAF129D55A5B5960F824BD1728ABCFCC51D23936DE9A25C408D786E44C3A2BAFA4423177AD
-060D21D38E15E23EB6FFC0B4120E814695D423EEFC2744A1FC81B4DF89D76F0A6803D8B14E75538C
-AAD03A72517B86514F6952F6FD619D9E910D980F00964DB325318C045BDF79647F453D4A5CF4E61D
-D5359782827229310405FBCF6107C3AD9DDEF9A9A339D5D5A6EB2E7838A0A43221BD62CBDF732DB0
-A638A52016FB35BA7761AEC846A023D3BF2D1BB183543E81EB7CAC1E5970CDC6F068C5EA118C7AAE
-528D1396E6DC939112DA4460C890EAD5C01BDC438F5BB734218BA6270ADD0DC1778FD8AB16831D6A
-302B814A1A44B07EDC65956C9E6CF4875DF521F3CE5B422F71081B6D69BD270F739095C9E81C0377
-934A8BC6390C420C4E4CDD9CF7E32544C68D884E15ACA3BCC07FC8C132D8FB9D752C15D75C52C288
-57E2EA461A6FCAD90C56843513F74461F18D7164BC597A28AE4BA7C86EE1703535A9B9ED50122627
-71FC12F102E800E0E1AF7BB46681BD2B14B614CEA91B7B2AAA35235DE76C0E113C92688F8EC81277
-D58C3406778E1EC1CC15F1CD9A137C8FFDAAB99ACE3BFC782916F1A877170589A92DC921E6740A22
-B84DC6BACDABCC76E64C79E3A588D80F8F4D376E1B426F15751CF7391102102F0AFAFD8B22DFDEB5
-48AEB5F30B1673023D22054A13391A0EC08DE6E7B685A0D031AABF20B7C62187C0284892D5EAADF1
-21BA28263EB863D5E36EA9C06A77CCFC0E17F593961591F84D82AF823EFE41044C8D606FEF83CCC7
-B0E961E7994DF8A3CC36B209D953E250ADAB8D22D7F2B4E2C9CA39EFA2D93E56195C1560E30A5190
-CC5B17FAEFCF250DF79F6B624A4B917E11C332222FCCFEC4F6A47BD9E75DA9854FC3F7AE554E91ED
-DE144D7AEF38A0E3EDB5E5A5626374DB94F022C8CF549093041DE00D7269B7CE544E748439BA2870
-718C08E58FB4A77D93EBC04B7957D272AE1601D41BF85A2BADAA0DF73B0D3841D4839C85677FB2E1
-5F1D6CE592669FF4BBC9C69DBA334DC37706F2F6BE83D5863E8CD6A30C08640AAC4C233684E66B4F
-E6B62D4A8BE9D531E47BEF5640D9B5C27D990092BE1597F6995C8A77BE9C18AAE6C1CF130775DDAC
-41D34438FC7AD8E042CB56CBF2944932EBA7D053E9376FF398367450E35A1945FE23E05C921096A1
-5454721FFD0F429A3E06DC3ED36F1C170BE79C66996EF8337AFF85B90C5D3A4A94455AE9FA32E211
-7A63E59001F052D5F6223125BFAFA40901E98960ADF7BB886729DCA82FC3B8CC52B37FF2517299E1
-D769057F8154FB95582F02CB0BECC873A9C71796ADBD3E91324FAA94F2C41CF57C30B5897D031C02
-D256C909E080E70BFD1F32E69EF67031138C2DDCD1A8E4B65E485C23C3E450ABDD9815512D6F34A8
-4B9DB715DB2C7A93BFB424316E1AA44397749CB01088428F149A3B4324737ED9957FD388248462AC
-1B2610D72BF5C073ECA567E7385CC959E37CAC7E05470160FFA5A9F63B8E9B082937E911586EA165
-374938F492EDF28CE6020953A5B5CCEC7737F9D9CC8538C4339567AAED3794ABA3B9F4EAE65466E8
-E326F6C399B36355935FBDCB9972F10B13494DC25097FCEC5A6398F275C8C151558E74C5175F7BAF
-4155E36B733F75CF9D5C5979B0764F14D8306E06BA24BF791141E404C69F3F8FCCD91B9C58C2C671
-AAE7D4F9E5D6414E46ED633A5F78AA5BF04E652246A066EAD9E582B181CC196EA2D3CFAA383B5D0E
-4CAC9336E119C08CC6AC55CBFBAE147C623B400453BBF447E96DE036FC025624384359EED7C7D5F7
-858DC0521377CF647A157FC3F188DE5EEF094DBA125510FDE34C570D7BE76AB5DF0A28BF45DDAADB
-EA7EEEDB936332DFE93081E0AFD3FDD46BED08D6914B2EFCFDC41662A33B90B03D76D34F48D30FC6
-BBBB600E90E6AC7243FDF026762A44B4D6E4ECBEF48C9D7B696AF29EEE063E557D8FCF0F09E0136F
-45D17E608DA36E59F2AECF8493F8D62536119B5F7E1554DFE3F6E8D7C9A2C6F557D18B4AF92C9F6E
-050975C3B5C54F9B5F4E39D600B6FA2CD6DE203A174028CBB2A201AF126D1013C229BB82CFD013ED
-199D01E51EE2780FE896E01C63C655087A3E61A7F1029FA5E97EA1872F1B45F22282DDC317E17926
-7368CB52DA9444F6055A3C653659CAD2A1D8712BC2B1B32C1DC6906D957FB88524EE066156ED6BDE
-B8D832F9338F9912E29A250A8C4674E667C1C278B677AEC9972BE83CBA3FB779893FCB8F81A323AC
-91474BA2A2334A07BB5628E905C518E634F6761A3289056F83D5DD7B3890987EEE1C18FB2D379CC1
-905F1AEB3B3D2AD578F0D6C845D2D40C4BCEE3F71C90E68E5417BB8CDDD878D83BA80AD8485F4067
-E5C3CABF28AB56CBB219C0AAB8FFC6C7E192BEC8CBCA1459AE4450AFCC81B9548F40CE2622E5A7C2
-81F74DCC02DAD57EFD92D072318DDF05BF42F1EA8163071E23949B0179CF7DE64677CA99B23CB926
-B3E294194EC13397EA1DC9A5E1CDCD828156CD71F81B64167D4FB01E6002713BD8AC6F82B20CD369
-9C6CA4704DC5C65A2D66EB155B7AF1C9BB46469416FB49C1C7E17A30A5F045271D7DF3FFF2F42C6B
-470701C381E3456A500C6BB3D0E47B4D91C5F34B49BB6272F1F8698B307D89EDA3A1565DAD1C0864
-627560CF922DCF5B34C67860352390B282F95394AA2CDE0E97CE3ED39546A6AF1C52BFCF81A29BE8
-2C47C99E8050E4889E4575B75F39E662F2DB7420673797E2ED3D67CDA7AE2C15D0A0A794D57D168E
-BE13214E89E0209AB2C0EB7784E9491AEFA3C02D0DF3AE5365A0FC4AE023CAB528162C7A1B173664
-9DFADDACA8DA5FA18B7D6489E4229E9E24D38A620464A744A5C60F6F9D334B908706B738AED18669
-8A8B278341FA4D65A0A88680BA484694921512F7DE93337FC1C02BBE6E64AF2DAD07603279D87329
-1D1F4D39C1DD6D89C90F65240F4808F6F1115CA55B88E242565E59F3BBF1F10EC7B88872E9AE61D4
-4CAE185463EDFAF7DF63DE4D2207D307AFB61501892965170D2945846FCF5973A1D458607F50C15E
-06E5BEC715E0C156259AAA6C735593E5564F65F443B78CC7512EC35A56F126DF9D30974A40872E42
-65E1AE5FD483CFCBBBA26DEE426CDC4721F19C3FDA86ED7AD4FA1120F63669BEFE7002B128CEAFD8
-C63E8AC09943B6CBDFB3D2476A026C00A8FF81B1F651B97F310C82ABA5F388CC1DB5AFCFF5996D52
-52A6A42FA4D972E41EE56088F78CB966F9051171C472C774879AECFFF08BFD9CEA40D7C298922ACE
-64F28C14E0B81F4DCADE81D71DE3983D87D905192EF13CEE71B2D3FF1A88AEC671EC318917DF98A3
-C9054E372D22A3CEC82FCC217F47319A40900312F6E32B536B9E7A7FA0837EC65CCDB5FB0D414371
-17596CB39D9382262DE6E65379D3A9709B2CFBABF5FC5D5B352425F06F88CD31012A2A4147B112F0
-C1C0ACCC808CD625E0228EEF66661F70AF96D3DCFECD402700E4F6522AC9A856DA466D55C84F65BE
-2810A1565163872D62EB81333A698ED7B68352CACCA2D7AD38AB55C19E4F5582F75818302F5FDADF
-1DCED09D94872F2D48FB636C8E38C7563C72C771A08C6B1F041F3532BDB39006C89A33C09BE1E3E6
-03622D891F98010BF1DE5355F557A1E09448D486ADEF565705277B31B8BF2B86761E32631E3435B6
-88B79D566F1747BA456DDB43CD239FB47FF7B425EAA4C657C8EEC26EE01AED07CF916E77D53634C1
-37AEEA009C6B515B6342C54BE2C7B95955B1A9DA277A0ABCDA2346E88018C726F481F71D6011AA42
-F8852F2E5749518FE3B3AB668213FE1A05C10A1C53953D75312631D6BBBA01D418199DFEFF8CF548
-6109B099FE8E2F606165FE30F532C03567785D5362AA873C9D3EECEB20F1945D55F49B0CCAC84967
-59FCC7292E46938943C262D78F3212D3F9D0F7B103157F423D71B1ED54B2A603F4C269029918F238
-EC6828FFCEC66009DB9C9E59534EABB183F31D7AD4C57B1BDF0BD2CE5A421882BC10CC1BCE6A970E
-2B586BB221567CCA483989DD0B8DEC424C1D1FF042DCB7834423CF244EDA28D2D969B17440CAEAF0
-24A6119DB010CE366821AFA424D1B8299609C04148275AE6E5257A7ACB3C766C747CE99CBA2D703C
-F19B7CF301B634D8B613DDC4AFE4633A4D77BFF8E00CFB5E289EBBCAC90A24307E7941EC1685CBAE
-400CADD876FCEF7F6557EEE167D2035A05120293527700DC510B038A496BE1D5CBAEF24ED39F7421
-1A93AADF22214ED606A80582485AFE358E3A46D0671148998A3B3BE209467009B43400870359D418
-9A8CEB4D5866AB52D16D9CEB1EAB71C07E6CAA34B70E3096BF7604C22C40D5FBFEEA616DA3BABD59
-DCDB97D883FC8742B8267A16A99B7953225F7144568D566E64542C92E538AC140C851E5D295528EB
-7CBB49909B1CAF6409C9BCCEB325468FA0B5F7CB2987382616B477CCFE4F4AC79E4A6F7165363543
-F04DE5B6F6E1C2E910CDC3CDD6C4C92737198F892337DCB6647BD226C820AC99C65D8E7772BBB74F
-E65DCAA8A22C33BC168BF48E40A82700A3A7668C5A9A71E397ACDFEE7D556C5C19467B7AA69C260B
-727407AC837BDB7D67DEC055C1F45D8BAC61048C45BC9FB3CEFE7549EAA2992D2EDC126FF7A05EAE
-58613332A2BC1465B2BC0429162B907D65F793D236EDDD8D35405866D71B25F62DC4A7E06D4DEE82
-840ACCAABC0774F8A63E9C0F7FC980B3583E7A8B01C46590E3BC04EBA565C2EA94F057D964A78A90
-EA9F52ABFD70F84E44E434BD10A42E98C794065724341F907E35D3CB257161E01C7084E3A0166D15
-CED65DA7BA87DBB2EA33D39BD99AFB93D3548358D08330E807F8552CECF63C84F805205491BA3A1A
-622E70C232FADF3BF2DCFD6F0539158D3306506F150B0518371912A25EB96163D73E9EEED42EDC84
-D688BC7F7708D9DCA348FAB4DF62E5809BD094842D0A31DBB7C4B41F94D946810C5EC10B69AABC2C
-91A59500B2E5D37F4755DDFB7AE4ABF757F4C5BCF77C7F95E6A616646456FE8F18407080BCABBFA5
-7704287AD26222DF91AB2613951E2D679472F8ADF06EA2A20205EC19972299A78BAC52114334470C
-5F5890C2F846B4C6042D73945127F2E3910ECA1C4CD7A16EFE4B4BE38A15AAA710682C3836A8CA83
-FD384970139D8B46FB0AEBB002DD224199672FFA02250FBCFA4E649E335428FC71F50F45E498419E
-DB0E970F46894A48F65580881C9C4250FCEF65C9B28699408E18B26FE6DB7F1CBDB767564E73CB59
-54C6D639CE33220C894F36E70F71C9F9AA3FE2AE0AA0E3F2E304EC5ABC661675CDE2E70519E4220A
-E26FBACBD01D5169EB844750753E6CED53E3678FDCD08AB93E10067E9C64F38B40B76D99B6CD92BD
-F4155A1EA5CC824998B59AAD06E09E5F15EBB2288D66EA71B296616734FEF2796F07FF0D8B047074
-A1111D68B99C2B70FC56E74A51B062F4998ACC85B1943C9477E436E5CD7AB18DBC898D21BB93475A
-623BDDA71D7B895BA2D4C10F4B90BF335126F4FD57D73AFA50170F6B3C364922E551D40E35DA75FA
-891762FA23401D39260F2E92C7807C746F13BB35CEF9DBF2E76E66A72FEFF095DA482A4DE8A42091
-7065736CF4DE904FB52E649A32255E2030A7B31B686353492F31C064A3C4B0448C4BFD44B8E15384
-FD809B8761EE26A7DFA1758D57CE4F0BC376EB2B3833534B15A83436BA553955ACB5A7A66796AC5B
-92DB5388BC53EFA27508B08E82821E5CF669BCE52BB860780F749B4F38ACDF5FF12726BF3EC2743F
-01014CDE96FE6B4C40A034E9EAFCA2A35CCC776C2669E6AD138070A40F48ED79136D7FF57E993E09
-B81C543FBADD350FF5B5F7A46F060F88E30FE2D8233832D18B6C323EE017EBC1DF5C838321CDC8A8
-4CABCAB20B60A1A3AA028F36EA6E87C850AF8AF7CD50AA6359038BFA8818821D02CEE8F51DAB8C05
-F7AE9797814D97F3DB8CCDDE45B21DBB15CEE292FAA534A5F317B357F4091F3DA357325B8B9F5EDB
-45865415973C143E5E5BAA483FBF2D06CDD4246675EC58B84C6AE65CA743117FF00F229243772561
-31A7F2BA26A9115AFD96C18216CFDF41B7220ED0CB3FCC26C36380007B382A02AEAE428887DC8BE5
-FDD630AC57EE3DC156C7B8B29E687F24442E35CE10BA4087295A641F7139C831F7CCDA6CCEB5DAFE
-537CC1A97C5A337D3C48A6AE947F58A30DC08CC7B58DBBB4737AD52783C573FC1E9408F55495A80E
-7FDA61F0B9C4F090158F1A416249EBBA936C27BEFDEF19D1BFB839EB70576A010706D8B95657B218
-9C2AE04C11EF9E57FE09880273761FB4302C388BD608FA0C7F00F033C9C00F4E3D5CE2D903E0DA52
-E69C7745EE9FA75E2AD93DC6CB5CCFCD3782A699B807AFC36AD1F62B05856D5DFD6F88831B90EB3D
-CD523582A49732E3FD7253126D39E8AFB8458B5F7AD7F94A8DAC13365F433C857AF4A42C0A08C4DB
-9887C4957259ED22D13CFDF5995DA957EA5A0F620B0214FBFE08AB6D552DBF048D62CEF6EFF12F15
-3511ECA7833E0E3E95F85E6AC0F95438AC4C126E1F1ECF336ED31CCA7EB216D279877123FD9FCD8F
-B5E52B587CFFC4428456DDCA816819A8A4A211D8F1629E5D42BA4C5C356E580C8A22C61D987552FA
-A97893816DA73D423686E4EBD44375C257F031318865A20F22115E72BF1EB9F93AAA169C140A33A0
-6C35BD4526A38BE79CF40AD1EFA10411E8F3300A8A8B97AB140EE6734E1BEE6C8EE443D698D34159
-97649C6F10F20ACD80236422E215E146D744A262DA3FC88DC0D86FF66512F49D3F957D3C5CFFEB42
-4823509F33F155057A4C6F37B52F4667767BA94F6B8B62856B553F307E5D230C44CBFDC9A97A45B1
-39FFB2F2565EB0E22026972FAD0FB7B9576FB6F368B61979943A398773600E7EE1DFEFBF26D45D40
-BDA66EBB96A56EE9CAE0B2420C5DD83E24DBA9FF885BB844BF3D2BF93B07325DFF60C0CB5FDCCA0A
-C8FB5A2E119D5AF26E53AB8E3B428481C2871DDA26EF0B621CD8572B3C664BC7AAC01A1D05B98F79
-1A7080D294BE81099BDA7982432F3DFF4775C44D23F4F1B2E0162B61A8B2CB5EE8564BF98E2ED403
-2219085FE6194C19DAC98A421826CAED7F1AB1477AB327506010217283894235D7DBFC1153D5ECC4
-8AA7293F19592B4D7E95FE55151889BCD1D7FA7DC2370D2DFE11D7E4EA34B5C7A8E73BD3A348FD38
-9EF45B6167FB90BA44C23E912F9A4F2FC0427ED070592F7110183BFDB2C400393BA7569058227926
-351F07FED4F33633BA03A72AA2DC6B598E49B96021DD868DAD0F352E5722FB714F667C15C68D49C0
-3D822D82677EDFE86FE9668E537DA284068C9B0AED83074C92A5B939296D505B837E6A9DDAB1AEAB
-7455A08A114C2222B339284674B74BF4CA9EE0C020BF2A148B439C71C6BE51A94CB64FBE4A7EB295
-5A455047CF5CB348B062ED4F6471CBC3E9ADD9BE9B96879AC7BC71BCE02FD02F17C6063985A5E898
-3D205AA1489DA13C408990ABA1C54F2F501AA172F530480D789C848118C0A74EF98D5F607A067BAF
-F6030D887AC6A6497F9A0B38F9705F328AAD4BFBB634F739386177B07F22D5771282444E5EE17335
-B4D0EC86117C697E79A5F4F65FDC08E4904DAEDAB20067EAE2448FD4301849E456D085F392DD1316
-7ADF75CCFDB723E2904A9C0C976D6B84DDEF9D92B0E15FB246C3ECC2D0BF314CFB957757B3A3E8E5
-801F520644E4601D291DA0F7507C06F3B9BB36FC1C70EAA444E14E56C0CFF06C7F853DF36DA9D8B6
-AF2544B853DFFF535A7E5C6FC145250CDDA229956019659D0D253A19A7B51A4E538BDC01F74D7704
-9949C2C97C7EC6392C2E61CCC0992B66DAF1AB08551063E53180D2A67DE496716CCBAA45462D9F91
-B66A22545962DDAB120511FF08627131B95E5DEEB8B4DD9643E7B2AF65C0FDCE11F5F1E8DD468DA1
-8D41C8C4F00EA73836F4F70EC50FC3EC6D358C0658A4261C6D15A582A2C7C994E7882E661855B352
-014576858A265FFBC425160669CE159D07EDAC04D060B44E5800A7AAE8E339C29B929AA81D2F515C
-46229D2080D5917AB20AB6B34FDCA8E4AF64ED660A3173786FB1A1D005D575C2A5187D3F7CFDC94C
-CC44A38C5CD523E9DA726D8EFA6DA7B6131DFF3435FEE838B2C7D6B97934295F06202D307FF78D90
-6699CB9C5BBB10D1D4DEA5FDA5BFB094E704607083B646D37F5DA1FC7AD21B813F44D8C1AFEAB666
-55AAA19703BEA2E77DF3BF350E17C74B3447A452235919452B5175570A006C7680AC05E8950A62E1
-1D7E3ACA35A397D1E19630D094A86807593C97F4C484E4E06BCFF708B6DCA972E3A0009E1CAC0EA4
-141530F5C1B8AEF5E1B933F37FDDBC4BE22B74FE346D1A3F5FEC0818F8E61765568A2AC04713E828
-F98C449D9A1CCE52D10D61DD8BFD084C8D099A75D89DEA64D5A7CC68BD5B0593D97953DADA976383
-F5015915618AEC56D71D1DCD55B89736395C609B315A3F1E1255432FDBD37F38CC43C354FB4B7C44
-F1A7318B0B7E99C3C08C33B953727B6A6328051783A0A33E3CD9E498346A3CA6A77B517096EDD52A
-E443B87643A646C3A7BB97F742888D33F9B3127E61942F4103C1DBDCD8EAC8F9E259773066736CA6
-53CE57E8822651261D847C131321BB9D6626A1AC50D047C0BA47B411DF2A995545BD68EC0287CC9B
-31D5DDCA8755EBEB10ACCB3903AB0FD5788E984220443B8459E7C078DA4289F1350905881AD6DFDE
-C47302B0ACB0D4AF8CAED02B4B70DF3CF8FEC118F0FC2D3DDE3E494CD160E676E300BC464BD4400D
-B50EE43B314E0517037BF971ACD7CD327CB2134893B8A0410E68DDC518F5DEC966C7884CF5FDFE74
-723177F20DEDC039D879056CAAB4BF045062D3904F615C5CFE109AC7A35599C94024B41019B9AFD4
-04A80ACAA4837929F5C9317680A13D157A03B59A5588DF79D2E113F5F51021D6F6F90E8BBBA2C252
-FD10651BE80BAFD59C53A3367BA3C28DB6EB9DABF1EA99F47B503F627E15DCF3FD645FC52C5D5D0F
-2F07DB4C25C0D1E1C00146E1C4D973E613CCDBD3F9450CC0F5343D79F05E9492E86A1BB889ADF405
-03BD7F3E7543436859184A5B20BD8A172F350D846B7570803990ADAA48D4B9155A2B4C4BFBEF1E1A
-065C08E03928559735BDD442FF1E83E1FA20A5DA57D8BDB2FF5427C034CF0128AF111E6E73099E04
-6E0C240E80A73D7BE72B87834E45898D475521CA3306707631F5C6136199F354632D1A085F12A1C7
-C473868B62E534D15F5484323E63D0574196A19EF175214EB35A90873EFCFB92D6CF68761D45E37E
-AA61E1A1979A82009507CA193E44B36A806486665CEDBCF387053ACEAB979BD35D30978FC7659ABB
-E844F4ECAB3303318ECE80777A5FA5A9DD91B3D06804C4B4E9B4EFCF07EB89866D0DD8CA390CFD15
-98651417114D78776B1A1D36B4BA17746D6BE7FC123D473EF1EFED1C3BC1D555F914536869FD5B0C
-35F9C83F65B0E6BF7A627B9202D787D72C600DDB6BCCE613D88492E13CA0AAAB196E8A49928C62CE
-A4FFE2D0208EDA334ACF47F20BD793124D2C5546C03F4A364369A76A0425262F9D9118AF54E37D32
-E33AB25DD533A49DF5FBF1BAF4CEAC2D9D378CDCD13B00FDA432D9042F623DA41AFB80699B5538A2
-5403B0B3EABEC9E8EFCF42FEF3EA9F91766902CD206B0787C187D5370B60AD6DCD002DE2DE8DCDC0
-B4719A797C5E26BAA67665016DA0D967FA1346F9588AEDA174CA001B31213617FE19EA218EC23597
-79D979E2663166489C06993230B0D07973A117C4E3F4A4C93CF8428248DD5389414D679C69644142
-67C7FEA17E35B0CEE456667A9B1875C81B2302BDDEA2818D6019FC1622A82051F60584ABC904CD91
-8676305DC03FFBCC64FDDAC8D8AA9CE2EA00D6C97BC63C8A617DEDFC0E40775649438E9F61AFD179
-5E3B20560B01BE5E0983F136CF48AB206954E41DEE0D9DDD953DFD01CAEB569151D6BC0DFEF29D70
-FAE3E198E7EDD8922C0E0BCB8BCCF1C016142C1A8B337AFA7A05A9D7534B184BF3BF827F371E9BD1
-9A71244ECA1BA73D484CD2FAD54DB2F0EEFBD54B536EBCB5094E6BC2F5B2AAE41F05B4B311115876
-ED42C34F8E643B53372E3F6350DB8A38445822EA9A33E27FB0CC42CEDCD1FE2FDF723FC47C996EE3
-56C402112F24D0AF899B2D00BEA1CFD427998BD22B2A09046D6737814448ACFB10D387547D7009FB
-384AF0562C85694C071584236D0F1F3D3FCD0CFB38B77C81889061E668BA7AB37AA60F58A3967DE2
-6F939B79CBF10A9DCC42852561D8D6754F1B660D216AAB1E133FBAA321C56E2584BE5C9BAE20CCF0
-0E8DBE6D9C2FCEBEBAD945C3C04101D2387351F132628786F6D9D4CAB83419288D31F9BC600D9664
-12E6AA457CE6CAD26A4C0671097B98C2384C81DD8B9A3222D4F4BBDA7017895C3EDC26662779AEE7
-40D9D7E24185FB821970B0A3A94041A69E4805EC88EE1EE521981536F2844FB8F5EF645F67D42CE5
-148E2DDE43AD5AEF200EDB3A2C7866C98458A92666E5F9E070178BCC39F65A893102A10564AF4E8C
-AAA5075D2F8CD7FAB0401C03AF299EA3515CC93066744EB5AF7CF0ED06675BF049A6E3C211A89E16
-DE5BF0445A7CCA6EE8EB0347454950485D884606651E5887FE8B24323E2AA16DE22FC1FC8C4F06A8
-2A1FDE5758976024068197E1F4506E4D3D8A16D40461A4586338B374A592DC60334402F76388AD6A
-457DC3F54E6169CF7AE3959676E966A45609621055EC3AF80E182633300A4418E34A66DDFA6B569E
-5A13C9115B5FD3EC1CEBE50FBA247F60803AA83976F00117536342DC3D9890C49B2AC701D370E43A
-955118967827760F7091469C5406F08F18D7E3548148CF0E312B1DC71DF67A5E7A1656CF2F47F3AF
-F3DD50FFC2FCDAB7177285B29C17CA43019F62AC6FBA52D1493ED7C427526470ACC8389BAE827759
-4958908F517B2863B83292EB5AB3F57FFFB08393CA610FB1FE905D88A0A16AC395E2A2A6DD033D6A
-0D68992F830B2E1B95FE357BF672716E88FFB92FFC3D62945D1EAD22BC68C51EE0E10A43011DB94C
-44685A5C4576F6EF44CBFB45F2A4BF110A01657DB51FD499767E78058199B31DFD60813F1A344F86
-289F9378231D5B151C92385E3650B4FEB1DC91018EAB8474CBF69FDC1496A4D078D2C351C8196451
-247A9DCF8117E5B637371D8E22E248C64D999015C3FD2311E9950B8EE0922FBDD3D7BFF766BFE9E7
-CE0BE12F318FF2A7B5A9C6D00A54401609304ED2C55F5C1EAC3D4B38355BBD85D66D61636FA6E30C
-2E82829376BEC979A6FEEE040E452359768ECF90CC539A546F17AE906C76F14F86FF697797322B05
-1EB311A759FE260C1EEE5DACF383816AAF1294CFFA7BF87A4D9BC595EE8F2C2F86FEEE11AD959D86
-F22FDAF4CEC098942A57E57813A0FA99239E994FFF353C1E781D666B8928CFC648FCF0869FC68468
-BDBDA7D280DFAB8B0B3A4CA35B074B686DE8D372C61FB32305169A1A9912F6541DA16CD6316A6EA4
-51524757BE5CF6E820011BE3859FB8B8578C100FF029680E05F0E0BF11D33FE19460C85EA5E4C0EF
-28E29407C8AE6BE01CFA0D5022BF9FB01416FFF722A784DFC8FCE330EC95737A854471D334FDC58F
-AB42867A7B62836A8B56466E9A6C1247D46EBAFFB905CD4321970F59FB8D6FF65FDDD34BF913AD32
-2E68455C5FF2D23C1A5EAE687F259BC982B6A384D35440F7C693CF50B9ECAC0B5578CAEE87588B56
-2EB6B7F42034C9F2E545EC866316552354EB3728C7D26527ED75174EAF635E048B08DC5D23E88981
-070AD5641A652F2344956E9CF4C16E652A99F4A644D1787D6D36537489DA4D74E61B2FC4DFDF1D1D
-9D58F9C26C5EB63200526AFD168AC57D5611ADE4D4A382FC28BB60F9E7D626A6C67AFBCCD1183C5E
-3CF2EF210D0BF5CFA7BB10FA3887BDD4CD96EEEAA8F9219AA2F10ABC0A960C3B57C0EC0313AE10CC
-FF1F522124CFC8D2D49BFBB0C193EAFFC5B48FB3FF30B21CB76F0A4C0F1377C9223145BB0468A5D7
-1B9BC25873EA12E1C60334571C67385C00D0B570D3FFC6C7FF0DE62C183C76AEEB12DFFEE1459E0F
-C818C621B8D12FA1357E2B55D48935D70BF140B4CFFE8813DEFD479350B20DC2EB1D3CBB1A2D3DC6
-EE975D58C89D61FC50E6A0197DA9A586B72255023DE47DABEFB11E8AA02414C2FF6258A281219B9D
-DDFE41BA7D7977D0D6F18224FE22F7D4E9355FDB35BF7ED3418F4F68D093AC48F7D8FE4194FEB6C8
-0B9DC1F74E023C604DEA27089F98C3973FF9F4AD7BF7BAE601DB89B08D5D8139B95EDCF6C885FFA8
-B3E4B0477E7040225733826BACFD1EC4A0DD72DC41734856AB9FB700DF83CA2CE812913BD142D84C
-5C83C0B2583768198AF9E885F2BA74877A414233207234AA5F18840557CA11682AABDE8993533887
-7C6D404BDE4153C9827EB16D66C1D73A8143C8A2D3604FF72CE579FAA3C5224BAC48EA83BA848429
-9472007DE96466B5B29ACC7C03B05DCAA38A48BFF9F214DE43146AE4E04FA705421917F99BC54533
-F0EBC01849E396216B9F0794E6F6C6B61B52EF1B1950C0FB609895C3C55FF574163FC8B6B09E66AB
-AED1810E698FF37CC1F926B2CDA3B48C7D77790EBD2D514B6F385D397F713EC3AD3954EA9C846158
-6031D369E8B99E53408A79D64C34EB5A56DE8A67DE91837960E98A66FC04DFA0EBDE21DB003234BB
-78665B039D0A469A0221BD541AF7149A2A659C300132C14581EF766FFFBECBA8B58A5EB3F95446DE
-F49AF863A8113D17B2E7E6ECDEAFC3834D4DF900E3475596E86FBB4E2974C090DB4AD61A737D611D
-92B4535AC291C56AD8B1C031D2F9B505BB77517B737D70AB3723DB52AE2ACCD5DD2F617423ED3CC3
-9CA882EF41757BF7151806A9B8B0F312808863E3673FB54DE939B35CDECA7FBC4DC3BDF5A5F47D35
-E345916C39366C8B4F439CE1C6F1835C320BD1E67375B03B5DE18C93256F251761A4C8CEC01019C0
-68E34447BCC503B9571FE8000627A6B3DAD5854CBC0A2D69E5A8F46BC78F6A7B1422334EC7A98ABE
-FE9B83E01DCF3C6C9273B346F3240EA225AE4A4083CC7B0EA141A0773FDE940768358EB4B13D82AA
-304A1386D450C1C0C6A7D5A8FD2BD313F78F85248B5196241E31E5595F3BC01F37700A2DD3D4A0EE
-2DD01A36569CD507130E8F5B1E96CB560BB7DA15560CCADF3B2C9804A11D9E8055C9EC70E48C1D21
-3EB756A1376F2EDCB7189D78CD3D6CA5865537EEC31C17D801605EFD860B0B629472690588D02575
-02C6F7A75B9A1C1B397781329832CF3EC43C09F1559CD562C48FA9500295CD3B0A790DD3FCD4684A
-7C7AC49AC9BFFF36B39A9FB148BC28D37907433943CBBF0CBDAB46D3EA86DC8F81C859C52D15302B
-94A9B51C199B7104DEEC9D769C2634CECF8B700CE9C04152CC59C9326BDACBEC4312DEED92DD087A
-1C4840868D9F97CAC046581F762F75E8D24D6445370A3F1E0AE74A6478D9DAC37E7FA5BEBEC0A1E0
-81AF89C1BBF7F51E3E2E22C8C405E8671BA85F1BF0DF79A465DAC7EC07F731E00632E017D190A99D
-83E27E5C2E63D7DABBA23B2E88334C63721AC5A4CBC5D45F4C177259F34C2EADE01FA008AF65EBC6
-01D8DD16436D86AA94C99F3CC0A2F87134E73BF22F108B825A8963B49C6C685474AFE4A542C8641D
-C0375D7EFE9AC1168D9700459BE52D0DA399023E141969F25C0DAC4668534B6647EC85454BE945E8
-26B26DE6E3C4584B97A38E2B40A0D23481BCA78084FE80E00A71A790BF31DF468A435ECC88E60A57
-860BBCA3D65930186E9917CBD209C230E8F8255A7ABC7D3F043AE4D7AD63D9980BEDF062B7D5C298
-C40225B6D03F29A0339E0FCA02138E526F06B9EF47F5E7A8068A846CFDE2BFDEBD24F5A73A66C079
-18662AEC80B43246284FA4E2EE0D9AAB172B1E59A6CC46B801149D8C0DF6DEC9A55D8E1B0EFD9D30
-2FF618075944CCCB6831D336B11617107B0530D09885E5CA11A5F1FCC8D69D603DA16BEA51116D42
-CAB1AA1E4D7B9B4D79993F2BFE53EAC904FEB70B2D330A89780EAC10D12CC0C35B8399F218AC2976
-E57A26BAD20CE2FA2AE2363D3FD2A8A971747556F2959DA74A8963C20B504711AE1CB0D0C02457FF
-2E9BF696B159AF031DD5155F21C0F5549B0471A3C5DC8918B675CEBCB23E29322B959ABC05283A70
-2E878DE8EF25EA760F3C5C7B7B49D398283DE2ED837FD59F7C22D62C58FE4448B1049FDEBFC8787E
-67D7DAFE9774979BB3802254DA59BCC0219F98C219F84D995CA768B8B5D9D4A32525DFECE003675E
-E4BD5D8DFFC11025AF2B468F9207B5B2B42349B98232BAC0759758C1F4A283405815BD7145C93FA0
-8F3ED2826655053A3C2559073D8ACD199DEA2C5BA5F616A2E48548B4370EC73493BA07E197165DCA
-774438B0766867819C1154D1959FE6E01E6312E0AB91FC2E2BD240FC8652A2D456A1DE7F34EF372A
-53794D4C4E050BF3CA5B7BD2F1B8DE93B4C8002485CB219AD2D029739FD3C81CC6E78EDF38723576
-1A57143EEDE5CC887F282FECD261F6A25D0A7E154ECDF5DC38E426811BE86AAA458577E5E0C5F0F7
-5AAFA9C41E5D1DC9D91ECD79B514F8CDF7A5F1A189470D35FDF4F9B8788879CCBD91B427822ED658
-389E981E0EE5F7FB87692A3E3E931DF8A1D1573E3B0166204240B7080089A09EF7487C9AEE2D665F
-5A82F94C877FB5B0DC531CEBF1E71C6592CEA2401E4B5122E5091DF03D203DF979B9A6EFBA12E2F6
-B422FDF15D49AC0914D372D21E871DE65CBECD105FD4A3E4714B9CCA5C6803FA39DBB015EA8A88BE
-7913502E562E5B170B87BFC8572DC9DF49AD63694311EF1334444BDF0B4CA3245271C1F7A4D7FAF1
-703E3AA0E1EA8D5C6E821B28707EE0C9B4F22F23796FE87356C58AE2CADC191F4C58E1FB58DA03B4
-5A25AC95DBAE13A293474217BDB214742B9D9D6AF35F70FED2891942EACE3E625E55FFB820543FBB
-250A062D3D395BC0F219ECFE0D76686AC148BC41476A887BC494DDBD396BE200FD3E03CFA12EC9AF
-6B934A283C42AA05589AA6B4A8D16946BB51F50419CABECEAEC5AEF9085C9989289E9B46BAFB6FB2
-782D84DE2B068F91A9744AAB237CEB1BA513E57E4C307108E993C972A3E0A898D5A8D27833155031
-FDB98863C3BE7FEF3004CBAA5CB60A1F2E3EB4D7290FF5FAFA088B1CECCB6CF51A58DAAD998F0839
-6CDFD68F5ABC9C1CCB8F6514107773C69C26873E889D1F79D10E866910E4684186FCD71C965ADF62
-39BA3418B313A27AD632300969B6F284519366ED85E7CD968D64823F8C59B5911A72D0A20EB72B60
-3A61E36F52F256FFCDF706B4560B4DFA5D918FBC530D83A4B3C01BDD3CB4572E24242D141BF9E775
-36693A0407D002E09CDA5B195BF1CCF430AE9824C07928A050D0B460F2704BE8F9E647A4884C4567
-0A81EACF7CC038643EB0FF18A376FF6F32B6FE4F197273327FBBDEC6443A299CAD4B26F7778A99F6
-5A11BDE047153E764039EDB251936AA43DEE50DDFDF8856519056AAFC4C5AE6F2051AF0579A9ACD4
-1D00775D7DBE70022CC263DCA5E0A25B9C7C4F5C418587666B2FE24816B1E0EC92F9074F1403BB83
-AFC3F1D52CA79C387BDEF864366E34C90BE52F7AA09935373A07E4E026224E76F9EC3CB9E7EDE50D
-EFDA48248D61F3CEC880A3B8843306375D9711E58645F3625BDB8E87052DA67F9794EF4AF8DB0BCF
-E00677C3A26907DC651BC838C40EC39E2B5A5DC0DBD345944A6C32226089D63C52490FA10B215AE7
-03CFB663EB8A47793B84CE7364DA1C4E7FCE32DFEF09490121222774915BA59C78C2275F829D15CF
-4D8686B095C38C731B83D48738C25F40B8ADD487C350A2EBE846C3916AE384CB1050F9F5DFE09FCB
-D9129C6270FD86D55A459618FDFA4F907E6B4746196BB717865AB378414029017551161A52E9D24B
-E4F7EED553A927933D4ABC8F25DF607779A717909CB4D810DE8F5762581900E224E4B91598149BA4
-71CF8068ABE8744356B261600BFCC57FB8BE45036CF6571D9B2A95304933BD4F17215F8EF53F8E08
-1AF61FA7F9583C34EB5655CB0ECB82246959F09091F36989EBDD646BEDCA614B9A61AB7696B3FF18
-1058A150FA6EC1BE2EBC7F64357A3FF2A2B0491D2F4E0B970DE5B7788B467CA678039B5EF55C88A3
-84578D427FD2CB16C87B0BF0A3D37CE8ED43E0F049AF2436344D5F47C948C632C94A287509282561
-6C64C5D262FE5B24916FFEE982A69A6CCF888BD01D62EA591EEC51F4B7DDFAFFBEEA93FE08D736C2
-0129E345D06B10246A5F57151C198D407730713F32299638EFBDC01367E23EB59AAD42A83AB41B43
-2DB462652E29813740F4680A5D4BD47B18328FAE6BDF4200CFA4CE3773809B45E8887C9B2E423698
-9F6C48D64F5986F563D9A7538A8716082F81936AEBD0461E6F4BD470436D8B7656F0FDF89108E6DD
-02ABDEF907731D458D690BC608EA9CED09EB1E6E64C0790C7A2378201CE997FFE0317679EE1D4EE9
-F91157449323E53B4ADA8096CD628B5861BF794543A98F2FA2AB54FF0F25A13DAD43DAF9394329B9
-5AA53CA32749FECB0B2BC035DD1EBD53FF9FB5AD8BCE06CD89E5568091C1CC314CFB1D9821D7F9AC
-7C55F55E0A16E39A87D43148201B928F3C42B110FC056189DEF183745F3B637441DE8BD4C3C7EF12
-F4258E306B2877ADAEC63441010750DB4E6269A4C78A0AC01BB3603C386651FE814031CB5D8C1F14
-9EEAFF652A53E57BBD4C8C0CE36A84A319A53BC1E5FD3F1ED1EE72F4C1A9BF264B594062FCAFB22C
-C1FDE3F2E3D3C17DD3F7FE0E15EBD812D550227C06D01127385374A11438ABD50048E17255FCD2BB
-85122A6FB9B7DA9D5E9DE8A747FAE0DA45A1FCEFE92B9E70A5B2CAC668D4D07527A5C1403267D823
-048BE671F725CFC7474B44FC5AAA348420B2D7C23C6CA066666FD6F2208E329878D90CEF1C2E77ED
-22D3BEBB9D547810B189F08920A27E7107F208591A84D463CE2576C70C3DFE6643E4EA93F4E1DAEB
-41D46F0E2F56FC10C69AD5034FC9859D31CF27A3A1EE256C93111F81C11ACF1FC0CE20B90BAC9AA3
-27A5C85A7985B951519FD4B03C40BE637162AF41B2FDA68F0D1E9B7602FE2659D3D75955C579AC51
-DF6A552EB9581AC3F712F083F19B52A6C4F560F36C59CEEB0C996AAF1728A2AA45DCAD79BD7B23AB
-388D5B0B64A2B95154B6259B730B0F4A72C8C7F7CC93C7D64D9D8810D1F63FF8ABD4DB89824E2D26
-4FDEE916C41E299211DB1A53256E1DB5CDD04862F034D9404B73183A99D3D13D642A663F129B6D16
-7095BEB4EAEFD03DF2FF2F0B6B594C1EE90FDB203DA89FACEE23F1BA3901FECC75FE1811BD701259
-343011262B6A0A9707AAA6316BC3C17F787BB80AC8DA5AAC942D90F80C5A3BB59E47EC767244AA95
-C63E50BF809998957936D3BF6ABC24B0A397258F9EB4DC8F65692CB023D9091FB180C69498CD0C08
-BBEBADC84A7E0016E8F8BEA325D924EB0DF82E75D2CC2CCBF039B11934363D4332C5FBC5EC556BE8
-5EE4E707CC2753CCC43D2ED50558E51A104221C9323CDCB0199B7B83454DE3FDC810D0F362C0299F
-5DD981B31D8E3DDA284FEF9DC8F9C8DE138D3065437A7FE8C30572AD06D62E8527AD37AE39AAB0B2
-25F76A25F6C6505241ED73BA494CF923E919F688DDEBF193E188F8C4C154F21631080763B4D091E8
-AD1D2FD6649E0CD9360E8D1A67A5B5FAFC67547CA31C95A5EA8D4EB5D68B9F6D6532DB9B54584735
-9558542A2AE58C09F3BD2918EFBE1699E9C8F2C2A11EA4D224C726D2ACD4A8D8ABAEDC6588CF2AE5
-66528B94F55B823A2A1F7BE19000F3E7579D094E047075DF18C8C868760295533B26EB3ED90635B1
-29C17ACA679C3E88B06998CE5A7A2544B700229F5A6A504BD3E45B276471959C8A3F81917A534287
-39B5EF9E3D463B3BA7318448E2A3E79520D2D245A2A72F31FF7070B6E4624E3A5E216BD103640C8D
-F387E49D732529C611F8B971073F17EBD2F6EB18F9B74A67E1997926DF178D4C9EDED435B9682F1A
-279C81BB9F60DAFE125845A2FF3B02979E5481C78A45C479BEFB9FEF3CE2BA9BC46C77B50B03E48D
-A6D17B76F06F3AD118371ADC69E178C52B5FB4B261C9311874ED07DD6D5B3226A005FDD7A6D53848
-09E7063F036CDEA41619122635E835D2D74CBB6AA9B38CAA4D819C26E95115FE0DBAB4198FC5838F
-2C91B7A87B07D734C6D4F4F83444C1E90AA9BFC908A2BAC4B3DEF9157AFCA5248F2DA31CA87BD363
-AC25E9E77F741D4B2C6E02F04987A6F49D30E9038CEFC41BA172DD675AED8B392164411144E5B738
-F3210B0E66B17A13CB9631C33D44484E792A7C082DD0A5382F34C5637653261B1EB6D2035B08B4D9
-1FA9AB770CAF40A103629511F7B43F2743D7E583433DECFB19C21FD4FD0AFCC22A4119E77C87BFE6
-FE50068B22479015BE5A9F06BEAB4D37412E062A45E0CBCD7BB39FEE747E96306F79FC4F2E8942DF
-5D9DA0E55AACCDA547DA19D30B8404FA121298B44C9CCE198C708C69A8D6BF17591C5C50D3FC5BE6
-961F7ABA8F366DAE957A1C3730DA4A5B4F035A9274675EE3BBF0CA8CE9D8349F50CABB1C3EA4948A
-BE6F9F143592F1EA95404E6909A909168E3279A957AE1924245C356331A75E7008BEE92BEAA304BA
-40B7C3F48F74D9018B3247DF50EBD7CE541DA48ECCB1B0BE51A455C3C13C279D4D8676078C3EBE43
-08748D52C9B041D3E7244C745B1F2F742D010A9E60695F3EC4FDC1050AC082B905D6A57E8F407A3B
-472F731011A5798965B7B1A307E252FE02C8F79CEEDDEB6E165F1A94D7FFF18DDBDF79477F14E9E9
-3981ABD200FE7771B29D1D2D120EE79D28B9543818527039AC74085EAFF241B56D08220C958B5D9C
-87C0C04A14D52AFD475B542D391BC54FF33DEF8D9484AFF6873BEED32DDA4B371112B523B6CE22B4
-0D1B416B64C9370F1CDF2C548F4CCBE9E12E21C36CC3EA52DA232DCFB65F66B22B5E2EC04852510D
-5E264EE939BB67AEC4764B87062AEB7F680B40BCEE04AD45C7519EB3B6199C9E0E332661463647F2
-FB7EDF303EFEF84891CEBCF0FAC5F723A9D0476C3F8C092604C87FC69C7A90F4D64AE45A478EE8BA
-2DF50FB93F55A3546123F0B0E2C1C40C98EAAE9F0F26B8F80FFE6E6B94B7E27D2884D58B8A119662
-2DF6BE608C5569D7864BB756DF2EDD184B90812B44ED4A32D001C31383A40AEEE9743651F7950846
-15C48E402DBC01C818D477EAC0347795CB2792E9C11E8FD4A02E194EED1C919D4598FEC003B6D9A8
-A0BC7D456047A1C0579453FC1D7CB2D158D466939A23D7A7B8ABED7E2777EC7487973E73F2266D9C
-250CE30729E3C5223AD93B9AE8443B35711E446A3DC660123ED45CE1942A1A2AD0610467E081CE2C
-8B92A6C82F0B17B5D2429E99F1A6268072C6B5AAAA6EB6283A872C54D3694CD825EB2926E57DBBC7
-C1663075E687A144E4D61C225781D80FCAE1497B442342B4A3F1CD6BDB50E31791CC3928C30835FE
-F845B6BE5E2D7E3F2F5F085AA3FAEB45CAD0D76BCBB1ED859A9CEBB9F7457036F0BC3F195CB1A98C
-9C8648F6583CDBB23894BC719D68C2DBD8003B10D08C8CAA40BCE784D7BFB4EEC9EA5359AC056E57
-B8B0F2EBCB1F4CE40C87FC7861180133E0CB6CE2FC4FE690756D327A2B5AE063E3021C0C0BD420D0
-56F0B941E6B36088A55BA11D0C35FD0132D5F48E5D9673572347171B4328D4807B972831C0D74CFF
-A5638C145B89C989E6EC942148207D6DB82257585958034D9F9D4221C7C9F7013790DBD130F277E0
-BC88BB179DD09E27062379ED06F25EEA8B7FB33C35861A0034776E3813D2E9E5C10E227CC569AB36
-CB2D9DF2E7B7B44758F9DC4FFAD7A24AC7E9F47AA850C221048C3CB35A37CE8EA75632AE65FE3212
-175146FECD6334AE3D3C5F492F067F795E1E8FF386BA198CB74F0BB4DC0000DA383BC4CC3F070DE1
-7721431988D69C8B1A5AFDCCC83C22E16A87E01C6D3E79DC7AFA3DB0371B0866EFB8B6F88900472A
-FEF1C4A878243C52D4E02E82658979731C841C489A6B97E271C4C93800EC7D91F93EB9B9C659A554
-E1FCE42A5EC65AC39190EF4B66DEAF6FC0569A000A9E1495F42F706FBEA4D32EB7EF11A648910259
-6A65CF899C2F322F5679C6D123469192A9BF1A7F1F2C81C554ADB97BD19ADB746A4F81A4D5559E60
-AB94C483DBABF6CE2F28CDB412D50FF3FCFA3B3DAAACC6A83CFED910CCB3B8D2C19590AFF4D75303
-4A6CE7F4156896A13808E0DFEAC547E69D3C886691728E4A35ACD575B40D721E8FCC5385A2EB28D7
-08101DC50811529528F5CB0C009BA7E3C88468E37768FB0D83895AB54DB2DD5426562AF9D8AF304B
-F6EDA54E9C92643DF926F5C3578269750120302A37CB140A18BA56BA01108D4ACACE8FEAE640A6C6
-958EF156B588ADB0EA5F3B0F37BBA12B7BCB221C811415387B024B7076FA4403A3AD6EBB5D9C26EF
-EBDB7ADE7C60B444AB9F90EA493B658B7767AE2BE649BDBB3FE85F460F1ED137C61BD95F7CD3D8B0
-15CE45138538930AB62AA0E54B4CE1A5EC5FEC0A2B28B345B67089A4E4AE14D2E1F5A9C8848DA688
-CA298F93860649EC3AAFEF3E820D86988C8E3E5A4D4BB937791827994AA3E81D0BB3EE115EC36D5F
-B9A392D09E79AF514D11C7B3A03C9F9C13355CE79E119A19177FFDCA34704D38118A8976D1EE5AA0
-2D14FEB1414419F5E85244ADC5C0A765A522EEF36170064BB19FEE3B5F7B441E4DB967DAE0BAC2C4
-8FC6A836E0EF5A69F073BEE1699F55E9C757EBD6FD8B514E2B49D6333815B7DBD1E0694695FCA3D2
-1320A0C4B852D9706DADD8369A95FDD917328BE93DD33818954DBD2C212D2CA81560ED5BC284EB04
-7A5F389E24E43F4FA8C97FECF46589FA7341076555CF55B1C21B28E0C1CBB00AB8B6F67472F27BC0
-D11148F407824B0159B5188D4BB7386FBDBF1C0FAF34721B7BCB5C0FCB7C4010DCB6A1284E9D7883
-9E3C2111A05D29AB7997073B590A81C6168020F1D48951BC7D8476D5BA593F4F23CAC1F9BB0E091E
-84B4E99E5C584D1370DD12DEE8DF16AF8BC6B7B23E2FEABDB7F32779AF8E2B5094A6E9B7A7225F24
-C43A8E5D2B977E1E19E633C26771E23017ED233DBB02C64F8CF03992C6484528D0C8464B46F24F9E
-8380F385D5D01B8893C67FC103498983CF939432AA380CA576D09030CD52FD99BDC3BE16C7204CDC
-3365BF76294A83A1FC14A236F5FE5321904E779B13232A76F8FE521F425562678436359C2461BEA5
-AB27209541F557AE2AA60009C9CA0A9FC7898C14306CE35A50017BADEFDECBBF94EE2905220706DC
-806409EF87DB1D73EAB0698AD2DB72CDCDB293E7FB13C94D9FC87E74502E6927A212F0D7D2F2D194
-64F7A66AC07872E18CB1DDE8F11835DCBC5C4EF039333FFFC0FC1456DAADE7DAE3EC2EE0D3415B0C
-ABB69FC5006F4D14A4EE1A5CA99AD4D5E629C0DD1E0F097B5B93DE2DD001A8C418234C9C45E8C13D
-1AE04E9466DAB8CF1ECB88A4E059C111A6468D2DABB90DA79C7C79E94DB28F6968B1A632F8C57D9E
-565FF91C6916026FFAC0661856B9FB8DE9C81661816221B1FC159CFEF1751E7E403F5F2CE32529DD
-540792FC17A12A3DCD7C50D38EEAADBD10ADBF5D8A82442AA900CE6150EB7A4639DD9FB6E385B2FD
-093493DCCD9014B23EB172E21AA89643A6CAD1093343D85D81261972DE0ACB16A4C6B5F0BE4C978B
-FA12D3CAF0134F9EA49F6E9687C8F99A456745EA252F0BA9968C7F9586E3DD841AA92DC7705BDD68
-2DAE41518A09DF0E209F321D7FA3417202F4BA76A984DA3ADDBC58136885362F02F0A24EBC439B3D
-BBDACFFD8498EBD29F88F016B1FEABC10785438EAC860B554525F3266097A675299AA0967BD3B7A0
-EEEE3FC578D1BE99D3533BD91571AED904BFC9DA1A1451FDC5406E1CD614E0C7FBC733563CD6CE6C
-C31E9237CA153F1F0411114361D731636BCF98555ABF12848AD109371A42B63675A4130B81E97C2A
-2EE2BB5D8FAE2640156001AF0F55D9D5DF8FF23C8AEFE14F120000F14149A36E5C94CD9081DEC277
-C2C34870D05011F99D48B0875A5FF542F067F7E9880109F586BCF2B50522A1F23ECE44349E539E70
-F84E207DC9BEC7CDF856A046F1A03226AA41F541719AD1AF88FF211E57DD0C1275DD0B7B47440DA0
-89B98C6EE92A7D94700B83CEBE19EAEDD8A615F6587587BA8BBA3CE3AA5E8EAFB1FB0F486BE3609B
-169EFB178A4292F4C0378AFE5D24EED1CAAB514DDC66C696D8E37F294A6579131DDF5488E9436609
-ACD750C3DB0A940C84FE022B22ADC2676F62E91E8F891225F891FBA537679B24547BBBF35F04915D
-20B11739F620D18B5B216921D222F15044368569AA302980B9225BB839F494588481B94B0C724352
-B2DF600A22B062561D86CB8F81514FBDAA4F8A043A0265F992FAB71FC9124A45B8475E1EF3DF6B6D
-E35CF329777D45F08325E8505EC0D979F542807AE77E57E453525F23BC59A50740371EFA98678AEE
-6C425374AEB745B99DDB5D8D908FDB551FBC0DB15832107BBECC4E11A1A8DEC69358A574A2ED46CC
-31D564549EFF23102D92BFDCBB2BB985F78F36033E34F59C0EBAFA3BDD71338736464CEFDBA91398
-33995EDA4207BFD4A9867D32E867FBEB7DE60D132803EF9347CB17BD91315484EF6570892297DD8B
-7D966103339535E28A00CB1EECA4A9775F60A9F5FC9BD8B06D78FE8E6318C31DA2E847E3F9CA587C
-B01AE2BA0A2EBDE308314413F4F230A758184ED60D4F71F6CEC22A93A01B6C54E0449A3860FCA895
-4A347B7588329A80974ECBECDA1070FBC055666375229F13DD995E99265DF870BC8B8CC6347FADBC
-1A6AF64599271A475B9123493D46BEC41289BEEB67EB97A8DED7A9C9730D37C65164CFBDC22E5CA5
-89D2E7954C7136EF4E084C43A6C7F361A3E96989239BDDB9A593CC2A80BA16DE9EE90E95CD39393C
-212AB22EECB677FD36D34DEB46C4AD0D21BF7E6D7CBD0C8083842FCD87B18FEA7CECF939987E99BA
-34C214E44DD84C176C9CC5A4CEA76D380CB316BB4EF9DE73D73B4AFD4ADB54451591DEF86621D138
-D5A0A29441502BF6C2ADE671CEC3CB5CAB903A657EB2D70C943F976C110E46C5D9D29BC00A875F27
-38E5D22496A43E096E009C5D3CB724B4CABB32838DBE527F83B18CB457E57B092C302EE557FD4F00
-DB9C56E66C9FDF4EC9FFAAB85F60D02BA79694FABA476A199A0331C30A78A92E10417BA236E23364
-8174C826331DC1BAB87C5F95027846130C6A2B4027930EBF9A97BA1B039D386FC51C302648E25980
-212F6A582CDE2778C677A01FBFB3C5D1B8A374ADAF6ADBF7DC94075F25ED66D440B3922C5F255FB2
-3FD8F6E21EA65B1D93BB225684B50F11310E242B087575973345B229BA62C1E2C35BDAEC04D10148
-F5B2F3BCF7399BDFDF1F3F79119714AEA697245BC647316EA157484ECB951BE367234FD02E8B1F09
-1AAC3D29BF282DFF4011BC0CBA8E55234D943DB3017CC7A766720BBC29B2D097A956C0F1067177F0
-12D42ADCB473CDE8D1BA35B4030757FA1D8211989DF3BD22CE5D501C21EF8708FB3449DF47D88650
-9FF7B59B76C0DBAE443F336FEE2D615D7EED1C284F14335BC8A26BF4621E10DE9611FB2F1DBD52E4
-B7565D8C65B54EA36D508BCF0C578A49A2665227CDE1F9768EFE847F9D94F1BBB7DB83701C232198
-5C7283D47B2E40B27A268428AAEFE75F6B2F8764A8494E5827573758CB9CA46FA93208836BCCC8B5
-564A69F5AD882052AF1C1417C3FA7F580569528682C77080F3688B65E7FC24D2A3AEB61574B4A321
-5927281544DDD7A6EE0A3E9388F8F631CE7251724DF70726E5912DDCCC8C652DD6C9608F8462303D
-867F589DE0F2F71711B35142EE6EF93B64D6326C4DD7DC83278E057100EE772082E6BA368ED91A55
-53ECFE2293A481E42F83BC8F9148C70EACE91F7B7D9CB8A72415BDB3AF66F68EA733A17ABE9DB005
-3BF148629132969589F38D30EABFA96A01FAC72650B5A6FF3935670198A1EA33810A9B11E330EB8B
-451F24F93544263436F669AB5A90A53B16CCEEAC36B1445574EFA7E802DE73522BE725E68704822C
-B7D3912717333367895BBFBE06966A5CC653AAB5E9B3596702086BF0010085B900711932A95ACF15
-CA4DC45A754EA334E9EB84D6FC8E3FC4F897456BED64BB93B593549FF0D5352275D8E417172A6664
-C5E0ECED1019494A7ED49AB0B965BEC1A82E5873766BB38D7D856049CCE2FCA65AAF61E961B60634
-E2A69EF059754C9D8163D87F928C222772D070D83FEC6FA5AC734AF65E40BFDE521F7D9CB1650FDF
-64754BFF21EA3FF0AF7611A93D525EC9B28C51AFECB04E7FC8323DD6C9B0D8539A34FC3CD8CEB795
-8E8EBBFED4313C77ED469C199552A9FF70BA5423B03B6148D4EAAE17B71C5B39DC436AC53D6BA8A7
-AD81AA8B02335A8B2B11E9F4FA913159A725B8AB60F52F1A2EA50EAF4D56656E615BF382CC68A690
-BF83DFF24FE986570ADC0290ED1A37C1C2AD469CE789E0EA0BB5CE01020100E729721AF3B5BADD33
-A2DAA6C33EB8F9064F5292F715F820B4BBFDD56F76D42E7A1A068C1CBDCE4640082F6E7D582D1939
-990CE6EE8D270015A2C461798B37DCB5798EE9F7512168B76D26C28BE4A49A1BF96C89D235F21A1D
-B6A96E5DA474D0B19B808D13D7A11BF39EA8647499C410ED9894A1ADF33D41B6FC2E614D8087F4C8
-4E437B136F3CB32DB8393C49177A0675A0C9E7EECEF448A97AFDBE840FA01FC7E5F2E8FECEDC1884
-84C312E8635CD79195475DDBFDD4D38D5A0246DE2C7F21608F8D2C0DA1371D302E941572E5792A3C
-F4E51A33228B93A814D03FD4FC223C314CF3714BB3A34BD4F7ED6348577FEED9DEB082C4049E57B5
-D3CDB7F26629E9F3BA36893E09E3C7463D02A22D7056BE76B87763260E46E48BB832B7EE13F8DC05
-37EC8E81E9BDFEAD8C27EBDF1AD706933EFD11131E12814F236EBB01BE85B7F1B2D627413B324918
-D247604F56EC128909873FEC3857028BEF76A3494364C2A7002D104D486236C30B48E2B75D851C34
-EA50BA7FFEB4E19190898AE21768C157C0CAC628A2181A32796FBC1A7271D2473CD88E5395DDBDB1
-FC3AA8DF0F3D588637F19A8B833AFDEB5F655A8838EECD684E2315B72C75CEEFBCEF94344ACE8D6A
-DBE355008EC72FE7CEEAB01363A895F4E73F867639BE0A0BE67333848816B05B419221BE8F9066C3
-62C23FE85B7F392930BFE4C12B9526FF2FDEC38F23A159ED61A0718E7115C24597D849FA76369153
-54A40C965D4D72EC94DA61A03766AB39AAB684E134FD1407A5B1B19BFEBA52AA0DA5D99CBE5C82DB
-AA663711E6DEBA180E1D4A39C320516A4350D296BC19BF1BE054859A0889C7E9727A021F3176FE62
-0FB0C837E4141FECE531A950C03D319E3255703220B7185BD20FE5DBA673F8129AB211EFCF36EE39
-4C7E00EB0876624BC840FA86E58B2F584754CB6BFDFD76810E300741EBE4544E5AC17413ADEB21C6
-2F66CA4F075C32381796BA709782DE34A675B717A2C7F6D88104CB924FDE5DF775B4F0B68E0E2E5C
-2F788BBDEAF06D8E1FC2105CCBBD5827C0B03FD6CD64F0D073F3192D5F94839644E5EC6C5185BADC
-F04112A65F49A8C83174A9AE958E76A2F5AF469E8B76C833782C5FFB8BD7B1BBBB3EA0CB7C9786C3
-BE2ADE5E7AFA8C8F20892659A59BC421E28845A108E34EE17864042EF587A6D67DECDFB3F510EB40
-D2229585347A0035670FCC76C2837A4E4D68304FE113C539B35C1F0234B5079B8E32934546982978
-C5E4DF955A454EA263C3CA5D7101F31A318D82A3F9FCB5A8AFD7A65209663B0FC9DA400B26F285EF
-46D0E1EAF8ACB1F1CB805E3986D04BC585073FC64895E4DAE1CCB749BB439CB32EA91176D5C39C36
-50D10AFB9C9884D5FB90183424CEE67EF2175D01D2478D67511EC9F54F88763C152697B06D948BED
-49240096EEE3D06AB4575E8E8B2CB8263B5BCF4FA1608720F52B675309833071879DF52C3EC2871D
-20F398B5CAC8F8A4D41D0F1D47584DD90DCDAEA4A1CF160C4B3BF1AAB890B5CEB6CB3488672AA68F
-BD938281DBC1D8BCFE92FBF514DA5358443CB6E0147254E91B38CE6787B2BB0DEDD2D38F5938737A
-977B5EA42892520C58F8FBB53C994B57382379E9490F0D6970B980E1BDF8CF9F4C3C5E0A18F66E86
-EE93FFE7FE546DE50F41364BCB3721B637072571FA1779F1D672FAD260C16D7F13CBDF3E4376E7FF
-56D2A710AC5AC35FCBDBCE2C9C17E523BBE6218617B13C1FA6679B308979AE7C61DA6E68369324C6
-CBC7DDEC364E5A86707266C0B459EE7B2C03FE584E529BFFDCE98C90A2F3D9305AA74D3ED8430DBF
-3A49FE2ECFD9C4BC9FEFD22618FE9C8A973AD072AB6F713E4DF02DCDA7AC5359B2D652013E131B76
-B3ED6C75FD53BA58D862846264627F6B9E70D8800F6D9B32242B747A67BB2B45675840D34F852AA8
-062FA6B01E31ED24DAE02F6CF788A17F7B9368175195DB0072259CCE0FFB2C1035C1D26E1777CCA3
-D56A827C3242069E76D6DD69B653768614B9ACFF16567FEA61508D51454BC02F6C60F755AEF6AFAE
-3536BBFA1823F8E1A53C41124DE983E51CEC92AEF4F99785D554488A51C20885346D1F761DA79017
-940A0C557D93F1DB6B3D00FFD61D08E96FF3AFCE5FEDF545CC9F47A2B1BB26713431D6D1E47FD6BD
-6E3C668B0368241F0EBB5FA9C991DF79890E52E83A3675EE699B61BAF869DE91F67278F510061C6F
-E41DE2D883F48CD0E068E2A652B244128D82E5CD52F35F210DDAE3054691ED55A7D99088AAE8FB04
-F525C2084AC09F5EDF80A4EFAFE981F74C0DE9D194320709B3464F3FF2C0F6AAEA6D973D9C323F53
-DE3D741F698FBF01036716BBD62957CB32CD81D3A2674560FFBC5BDC5C6E4F547E589AD0B1CFE14F
-5E17FED1C4A8ABE4E67CCF8A49F32C4C6044F1431E1CC382E7758722A6D0DF9ED23E51F8AD14D11D
-7B6428E27443715EBA4E9C05D6F238378F9498AEF0E7EE4FE6856622CC8E6ED141EE5F109E343CB6
-695C4BE1E0F66601C27975983BF557C04ACFC19227A1AD7E6C44C00529FC7EDD7F886D24B7E029B9
-C395260088BBFB96972199A7B32796D27257DE83A7402291C14FECDF7998C5C96B1EDADE0280F856
-8A8F5007852EED303969180B3329917973C2D32C080C9765B6BAB0673BC7ECFDBBFBEA980C263843
-39B7F1052591D91667D4FEE413AFC23DE2D4B9DA742F4269C6C939F5FC32A38040730A018155AD73
-3F231E4D5B9D01C03A58EAE7B5F590CCFAF25EDC8552CFC8D95C60EBAE1837D7A97CA137E9D4A4BD
-2CD34AEFD68D64B3F4F62326AC429921D7FB3C235184FE0899690A0B775F1A566EC29D5830D32372
-6526F7E7F5AFDD71B77E07613DDC4FC63EDF49051AEB59E6337AC0A4B6DD872E776C9CD0CCB86130
-5322D816732124F5978A86C186BF0A0F88E733CE38E4D7C1BA5378C5629B1EFC97806059990ED42C
-5CD183BAD7E94070E4058569DA2E51831FFE0D080301AEAB4350BA290318AEC582C78D05DD92E5AF
-B4424EA808629BC972E68F4FF2489C245593F07555CA6A2B25964794CF31CBD3AE5C229AB9B8C298
-06C01D116EBD0FF0F159ED2D3D7DFC73EAB4910BFF5B0B0B587CD9EA6E6FC45D63C09766224D8346
-1F0588140B258B1729F70BAE7962189B1554483392988CF230AF4077193E53330519394DD99BA135
-6D4730AB221DC6A66019BFAE564893DDAD7B177DADD16ADD21D396CFA6C3DC818052E2F71149FD59
-4A16DE0C2FFDD366C99B486C55A6E991E4D22CCB15843F0C3363676AF2F5B2D1B7EF66CCF2F12DC5
-0D63776BFFB058D70A9C76DCE96C754872D72C82A0C33F90D49C935402CDD26B6D743B1F43BED5D8
-B539424849C1495DAE73044E885A7D0F307F1816DF6244A6F2D97BFD4E200E93F69B08AF39EA21E6
-E347A47CEEBF803F73B978ADBFCF056789BB8E6E2563DE87DD9A8C877157B934102DCEDAC54D487A
-1BB2694F0034093C48F10A17D32E2BDD0C723CAF59ADDD1BE373AF8C9BEB4415AA5AF36310C31F24
-354A53C0B962573148BEF91D994FE3F3D8450DD4D686725799F53C373A0A3E3C060C2E1A3E800504
-9F26D716E1F381B9F83125E4683264A07E2D8938F605978E2513DD2050B3D8A1012797CBA8961632
-BED260916338A812AE751C7B657E086A0C7DDCD3BFDDFF3E48B84751925736D1310C4910FC114387
-F3ED7FE163F91895EBF55FCB425CEF5729D99BD8F2C072E36C310523E75CD8E5DE49C031C4263410
-9D56E91A46C8C8E89FD92012A00C33D0DEC52597B5C6933291A7BDC5CEDA95DCDA5600F9AE1C8250
-54E7EE1067458CCB66610704C58E4A4FC0CB5FC933D0322A716B2CD430A3AD48DAB3D4CBE9D23F2D
-092368CFC4E1F5495C133A92942EC62118D45C17723646E69407B4A89DCDFD2AB3FFC099A21D9D29
-741D68270629AA3A414FE58658DC9170C247B6E23F35C4BC5FF83009F462F2EEF4DBAC5FD158A658
-57F9B6DC1F5192DFB169DCB65621CAB2F1B07BD22F4155A8E9E2B6388D430FDE5EC1C834D22EA035
-C52E1E34482EADC36B4CAE902AAE89A7284E62B3C84B608D6BD05F75BC31310B2DD3B2C08A00E073
-7F104F03A41989D5F6B9A2C38B22F1D1803EE5D7A4D8DE44E4ABD496A1DE0C0E12C4BC96D0122846
-3F0EA9CE9509FEE987139F3DD3F9D0DF4313F555BE85433718F6D05F197C41A9D9C7A8B0D2740196
-82D49F58DD5F66B12A6520D9F226D1DF1F1B65CDFA261F980CA25A92645B86B64606293F8BFDE364
-C47D2AF2C709BBE77A70A5712F2CC26F3D66F5BE2C307A48E6F887F681D30121E32BBD87271B5DC4
-615D28C309F15AD263FB37424E56DDA6E17B998B45BE6C7FC6C28E3394A8764C9EB2DF5C06626593
-B5C665D550D4600172791CD208AE9F37BC082B0B242B0A504B751B18F4D7495172B697EE217834A8
-A4FB7CC16D6F9E8BB400BE8AEB0850960283DCE725249FCC4DE97D9886745AB6066C3E2F64DD8AB7
-9AA11667F11188D7965DC11EB760B772E282DBF13249F31986AC6898FEBFE23E3E8B8D2C33E00EA6
-FC493850ECB2E6D831D1EFCA3C2EC8EE2E394599091ED58BEDE97D7A43B6F739EB0F845EAC1DF6B1
-EBFE876009CC5D804B15ED4B56761B3CE1AF59C07B49DC798A44532297AD73D5101ED47F36A3678F
-818297CC27F6AAA2AACCC9AA9B6F5459911D8C56CF499E390AE607F3790450B2B9C9BE0F006EDA0C
-715B5CA0481734CFB0597478E7602B0D2C1E4F78F03C68C17C70E4B42D7D2D3C95CF40F73488B371
-8E2CB05A549944D86944D78724E266C3319AF89AE430E777E95F0D792B1C654306E421F3D63A26B2
-1E74B6E8B21B2E2B9DC596D013CDA16D08E65E8F24A84B12B2BADC653E6E1110DE2E709C1C1BED13
-707B70A421B384F20CA7A9A9D20324DD383F28B2D3C7A9C53F5D4C6B7C378D26DF11CF55238BE1B2
-4FA70DCC178DAD3D35670FE4919085EB1CD905971D76A368FDFCF9D2F0A23739851A3A6D2E02D65D
-54DEE69ED5D81315D3EA5E356F94EF256DD267FD1E1A9EDC9CD63E743F299BCC4A4506233B8DD765
-2CA067F741603F93250C087D368F9E9CC4CC1A6DED567487C05BAA992B0056A77F630A72008E3946
-15A9DB24FE56A956650EC9DE90A6C2259189440247970541CA198748928215C0E132A81AA13208D8
-63C1FE817F70CA573B54577D10B73100AF8EA088208A44FB92ACA314AE5879706180788C17BB1D0B
-81B6B95A1C4E0F9EA66F9B39BFE12444A6446691A7BDB03E0F03D9F07A10A7598F2166F108529F34
-CD90E601FFED3479ABCFCBDE8F051C348E48C61D95B00C59EA1287423F05666C3D36288844067E83
-E14F6B5210842C742B89F13ACD126B9FC50ABE2CA7D7ED513D43B6AC7F41EEDA416BFFFCC5C844AB
-2D23D4DC09B2D510504CE98D02E72020D9E669DDAA344C63A1B75632F912A1C0DA3885DA4AF7E243
-E4A4C6493D6595BB6D56B0359106957259E59E336BAAF35BD1CEC5CDE735272EBCCAE8D4904AEBD2
-B32610C6FEA2B69941D6542ECB44D71092A3CF067708A3D087AE99FF29671AB7DD8758759B971A08
-AE1BAD78270D2FBEE37AA2DCB119D72F6C7B0C8509018A70D0B0BE2C6830EF8E0B24B1CE1141EF87
-3A4D7DCC501F808BFD94E4DC0F2915AA023076BCC8006490A43685EA25AAFC187302EBDE7FE1965A
-04A5A398985D29F08E085127B56B057334D88EB638A4DDE64AFD204974C3939536B1B66A54B4DB81
-151853915718F70813F096CC1B0EA25E363B49264C2AD17158A4489F91453FBEDBDE15D7B74D7F98
-E81DF23251785D58295BA297F295AA6248A912CDD4F1111E6B628EECBB5139709E76EA4AB743CEC8
-26621D08E6BC64691CC90B3C3C1778931A28D3D5B1E20E96C643316613FC487C9B604C43463FA453
-3BCA1236286E6F5A6EEB2F1D9C34BDDE4595495A365F88055D9268541CF1654ACF478D384A5496A8
-772EA1402751A093582A6625A0A44816B5FDBE166835D598644296249B92CC90AA3FD6445C9A19BF
-27F59CB0616C7306070F33C7DF4E1DE64AC8C5BB2FFAC1EF2B1B30E5A0275E6004CF64BBE2C6710E
-DCFC3AA4ADD60106334708862FFA6652825BC84842736E47AE6917180365C75B27505EED3C6108E9
-898A780E20C3F606A860229AC46D0471ACA0187D6D539A1B8820F620F72B41AD1D3BF3834BF48CA2
-AFEA8BF535AF74C4562DEADCB63D2F5C7585722B77C989342D190FF926C8A5263B4F25286F99CF6F
-C62EE6E2AD61C82B29D82468AC10FD27764278E5558CE8B41BA111CB2F040914451A480C93084237
-CAC8F66BB7C6689F340B8ABF0150E06D5B1177278A4C08742FE22F42C28680F190900344ADFA486D
-59718C25D37275BCE4DF981AAC35D2C7E85C72A0188B8953CFA516FD545AEE0BF4B8BA301CFDE214
-4241FBDF3D204E3D2823301572E23F204C97305A82401660E12926EE7BA6EA1A81FF5C007933AFC7
-3266FAC4C134ED818A48E7DA01C71A46335C845F9DA5E960B25339D551582B375814148D94CFB781
-FC56093827B78578A73D4FF67B6B87F40CFA5E3F4325D9108CDB64BD06427B88C84105187316FA29
-90B4E3E8EDB6C78ABF164F4A9717D523794B2FE772A04DABBE688CCA977090979B5F47CEB90A1DBC
-167D305EAB231C9F4260C4AD10889CB785169902FC0BED78DA15B8417453BB65856EA0BEA5245BA0
-573F623D215F6C0CF801851C305B355D26B52B0B343645FE25C78A3526841EDA480919A1BBE5F56F
-C10ABEAA3E1FCCA7C43EE560F067F1AA2AFD642F769D1ACE8E2AAAF38850F0D757CD808C921D716E
-96FBC07DA7860DFA70CEAE2888C0ED3CBF9586443532B68DAED9A926655C157A416C383A53D8F283
-2A4E67468112A09ADC837ED8EC95F70852921F50D4417239FC42EE3624CA97F682745CC5E76CC7C6
-7BD99F2180F8C0B7FB49539C8CC474C25C0DDE491671FF329E51BCFA779346D4686835A3AD6633FC
-B5E0F67E0CA9CED8F215BEF4D240453EB2EDD6ADB22278AA5B985FA140C9834D38753DF2014F8C0E
-E6DAD19E8FC54C03C1F6CB0F858986691D99592562CAD95FA0A5B2ABE4A8B54B457D42E8C33A2D19
-51C0419A72FB94FDA78ECD92BD2A1416459E9DECA9469F35E4C47DB531726DEE8F203D7042EDB32F
-025DF3D582547BB1D45F7A5B70D317DF4EBB16E36B0D798E0932FD2A85B04FD67143E4B287A50416
-2C1F5A037CCD780088C5476385AF8168E12D97D44B0630621759173C8F1E3006B5B1C6D7138B7EEF
-C3CC5F54E24B2C3CA7B41AACFD25E554880AAF406EA4C3C6E21D3B550B040FB1952598A7E8E6488F
-E38288B2AEB6C4718338598A2BFE4D2B9D14C65732DA304C16FF3E1F8F03046EF095B65FD609DA87
-EC24A69278BFE65C905CD0329F6A486B8525B7EEA4F7AE56C2633CD83543269E8ACD6D71F500D82F
-DFBDE7F7F7B1AEE67328549232E26CA55085B6E84D9E2E7F74068F93A90C4654F2F396E57C5F76F7
-E61CBBE523DBFBA6E76638BBA3064DA025A79E3A294FE7F1CC28A3B4C57DD6FDC48E541A85534B25
-E1BC11B4F78019457239EAEFD4BE9007D205F1D985F389DB22400B279C10948551A6B4A17FBDA0FF
-C9428B18B43DC76EFB15FC2182216F1B60B4E344A03AD6C00F141EF99F89F24C819C3E32877A927D
-84C2D006940F39CA8B71E5951673EA9BFD1749923219DE38929ECAA9CE43B06CFA7DA1BBEDFDA56C
-61FF6C24F40E59B13870D5FDEB82D981154FAE5D6D5152DE69339359461A41A9713B6BBE47E868C9
-33CD74C75DB71D13BAE4DEC85E02FAA14EAD6C0A253B16C79514657B15E68CCFF9EE6AA385CFF9E2
-C53D9AE40F85C793E4E8FF50B2B7420F4FE69807BC5F37C3E300E6B3C3549D1D3246A2E70F091054
-1135BDF805E0A698E236B6496702D061241687B7B8D1A0E517DF0476DA09D89667A7AB375FD2672D
-CBAB8124E511502DDBD08BA04D941DF1CEBDCCF7ED48405CBCC33774A68C5212FC6F132641FF413C
-984F8B43BDFD7B1A2A3435F15AF07EF4970D3E4A0BB947C181E9CA27CC14A35BD1BD096875B45873
-8CA244F88C28728B74E25CB8C4FC1095A56CA75E4569AD3082EF194ADD11350DB3B74B96761D4538
-596FF7243B1E1B724716A144106E080D42036444FD472998460CE9ABBD05B42AF9389AC452BDBBA3
-A13A96890025789F16B9D92251FD3B3BEB2C61EDDB370A20456E3BFE5F4039E2557C451C524F8087
-015BAF3FF05F51869FB97512968BDB2B49589C1C7AF1E085250A47657465F480B7023E24C76731AC
-0EAB6704123D77977D3A2C4C56B691346EBE589C619C04515D34F81FC6A17527D5D8319013C5D4FF
-27CC3925E24C99231AC7FB9EAF0BBA482D3B75807AC85D03CD09DE5D9AE0B07B7A813F0449786500
-0AE8A7E00080300F0AB8C399057EDDBA273DD2E1B2A0DCEFAD3B332E6D4AC1FFAD846167DFD70E03
-46DAF84AF292D4F424256ED5AC4E104F80697050D50844A708EAC9E7F7784FD01646F3BD0C595CA5
-1EE6BD607D254E78ADDC5E15C3B6AC4940EC865A5C23105B6BE09EA09F2C05D6D76960A843B81EE4
-33977FAAC3CBDA85CDD2F4DB7C28293A77825635992AF8F3B38B4480D9A139B1662345A8ABE1634A
-77496C3F57597D2985E9E54717AB2E99CA35789441BCDDEDE9A9E2106B401D9684ADBEFE40D607F0
-75C179E9CC03E59E65430DB70B441D43DF03F2AA6FF06F224B6E455B01C64FB89EEC9103E48453A9
-749B4D602808C7E408A8903091D85E06AAF635D0D529C3CDD1B8479AC0F4208C284BB678A547F2BD
-77BB17C86D4560434F7AD1937760A6AA55B614CFA9FF8C9C96561AE6C8F2121C4E20237428BC51DF
-2099B6C49E3EFA18E6D439E6E6981E746EBB1DC461259D8EA0F8099C47CCA27B2D982B72C9A07CF2
-1B3C05D6E26E6E286E348B8944078E24809F9C5F3D014B4CBA02533F5621BFBA1F0EDB776C634746
-703C9F73BA89B1960A496420C68F54E5B901A6D733D7ACC79F275FFFB253F389AA480084468BB34D
-A1E797E43B7F6E8CAF5E8C93069A3A2730E57EC39B677BB73E3F07C2055599F7062E53B37A5F0099
-907D2ED87FF7A82C95FBAEB888033BDFD67BA3A6031A4CDC56CB1E4CF5B06B46E16D988BECCEFACB
-9E1C037023D7BF5CCF5D65AA66A17AB361BE7981F132A578F3ABFB97960A6034F052D9D5AFDC0679
-782EC90F240F943A5F9A3D969ED7399254FF67D89DF668F7C56FCEA1FFDCF20481474AC8495D3AF4
-B6D7EE093E369C057F0B70858220693B398ACF8E8143558132E4391405E30A73937C53402E459F4A
-A3539CF7A99A3F51C0307D045DF8B77757E92EA2F51BF0BB4F77D3904DD355665870C2B59F1ED7F8
-4FC71FDD7F0B6C5D3182DB77827CA6A2060D2B8C83C4EA4A432EF43A4D0A952CC6CBBE52A9F0CD66
-1A538973DE41FFE9C5CF55F2506B9EFEE51FBAE5E63BDCF5528499A47C031163C88D3022606784DE
-2F46A9C9235AEE3D4F71D4959B0CFDC5B7E78C8C0A8F9DC99440C2263DBACB343C5C648577F5610B
-50EAB1CF7FD02419EF3941C7CA0B0E64EBAD4B2CB05A0793DBC38F1946D44767BD287F5E9779C611
-CA0DAAA1E7393DBE0683C8D3455CDFEBC0E64B54B737E298DDA605227C0C4BBA87AA3EC7FA6EBAEC
-39E6EF2537D5974391D31739D9FC42983D81AEE44711C823F35F8E2321AC74943871739D2DBE9748
-FE68592263E7713F27E0D49B9B5CB7A4E55DE54E6B800D15856450FFD3AE5F287B12AE4F438B20AE
-9E27E6CAA00F3EAEADBE08432684FDF9931E925544A680182602A3C1997DE5D0630BD5A010535E66
-E1C123013D23966B3545C7431C39B97295BFA4099D14461004C42C85095EEACB9B47C593BC6DB863
-533A8619BAE09095DE8ECA432D4DDD49AA600D277E75DC3F5C6631E2A05382CB007825FADB77438D
-CFA78E252D79B6A196D5164C2FEB85D75ECA25FF80B1D97FE10E87960CA0FC47C41D3A213BF141B4
-8BC3AAA93FA86245064668394665BFD52D12C3BE4CE39EFD8111754398A944C3FD1AFA98EC337BAA
-AF899D35E804CF416AD7FE45FFF13FC6354007501043F98FE8428DE8013901BA6A28711A2CA85A27
-0BB135B72F1D5026E8217581860729E94F2F1878A0E96C59E9F62714FB5F8F25003DFC7347E99007
-8A9A331CB3A6A535BC61866F02513DEB982C4A13ADBFBAC3FF70A7335F40D5489E48E5EDEDEF1619
-1973D932479C62183B0E25EE8C4F76D4F1AE45DAEA4A12AEDD9EF81D248E8D19F8C8A5BECDD1EA1E
-98783EB7A38149170851B1942C96C53DE06DEF80913BFC04E539EC67C110498D15B78268853E5C72
-F485F8A27B768569E54241F6115875E2973292CF48FF91D45EBED627AE9F0766D22201B20AFDD40E
-5B17CF337F2999E0BD15B86E46EB3C18FC12B7DCADCF9DD50C6C7E3F37E615A892DB3F57E250A072
-A49F7277DD6A2C8042698233D35A699B17ECA5DBDA6D250ED4A16FCC893BF0DC2E33FB1EBD7DEDEA
-3C1C39603C8B7E1A5A833A8FCDD5570BD088749BB232615366687962C7E56ED089CD7B092505CAFA
-5A80F503C4CF337F07ADF0D106937E25670839D491F7BFF7A523DB609D126328C16113ECBCBF9C40
-04904427A108618AE5D4ED809F8CCAF72251104C94EC5BEE21F91B179D31DBA79CEEE5EC7FF698EB
-84AB1D2D1A624F58B3622A78844CE51498B2CEF38EAFE259D22C7BA61104651A862008BC1DDDA58C
-C45F663EB26428DAA85E7785363A69D2790996EF5D9621D53042F42F794962FEA46E46F37B8AD1FB
-76FC8D5CF2146843F8CC625139C75FB42DDA71A752BAC48F294E4C0C8289FC46DA5EFD9C91BDA6D0
-27518B7E81E8B21F755A9615627D5812ACA674D1527A1185EED4E3C628196E7D0759B1CAE6B9B7E9
-01E9599A65230F1EE469CD33B9BD9C104C44E3C1AB966C9678BD0AD78111A4E0F2D07A01A038CEDE
-7036D0534D684A1562A17AD64A00F279200C0371B1CBA61747671D2A21D3F9646CA290F6B82418A9
-6FA177C6278277504B7FBA936325F5FA124AB018A15DC18D2C5E8F93CDEEA52BEEDB78A57828D81A
-3E6C38B9FAF3DC4EB7273ECE3EA4482A1C6242A335862C2C3717F9C9ED95F77B140C4E1569B2192F
-C7DCF702D0BC9A50428EC406F8BD0CAF886B4D979320D3E429816D88F7C7146D960AC12E70F2CB7A
-9F4E3E366665AB3F1B4B6440F55EEA26DC9EE0096BB7763731740A537766490C8C174723BF0EB40C
-53701AAD12B21D436ADCE22203C1053A9DC4E9F17AE617888C4B4E6F3A720E4E6366BA628221A387
-D8AB15E04AD69387C310D3528BD2FAA5B22BFF3FA494F5FBFAC4F771C9C7402B95580C5AC4BB3AF6
-92A70CB2C851FA5CF1173EEC3EC29B5A05A0B728BBBB51D3B7AD8B0AF17A1563E82FAFD93F8B7118
-1FB7AFE352874F4EC6D334AB6747519AB8E847B7BCED33EB5458A828E074E74BA621BDCD03FEA604
-7F7B6ABDA01FC7514BA1AFF0D4D0C0CB8F4E42D5A87E395D9ACDD02CCC220C157153422018725846
-009A3ACD8C8CDDB66BC6836B4026FD9F526AA275D06C813179E5924F26A25094E7BDA8BD26AFC4CE
-B41D8964D4FC4AF1DFB0595BC5D6714C32F15DC7194E9A3A73013C45D8FA55CC0550A12D9AAE8E9F
-F199FA28EFC2426D8D1DEFB93A65717AF3EA8E2D5B4AA8EF0EF38E9600F7D4E7D9F1D67A2E63ECE4
-789FA74B159BFE2F91C19B0378BA52E93DF12830D99553B6618645E26126842AB70262D96E35E5E7
-50ECA0CE3458B3E51BEE2F21191136DFDBCA39BDC07939E521E4F492F392DEBD029C1EA237BD89AF
-76BC89F618D530160AB16269FA6B693CF14BDC4EC7C630025703C5337F61458FA09104EB15C7CB20
-AA4C9BDB7CEF3A09F25BC7F3149951A7CD75372993B80CD2112F7674CEFD6AFA764AA3486730D2C1
-897A264D82A91709FEC4A21E30D812F558451804EE6F3DEE2C4C437846BCBDA07C5B6CBA1D94AF02
-9163B7383CAC6E088AB1DC14ED3743EE77E26EA7AD3119A76C0B5F925C4DE305CD7BB3A09A453947
-5B9BD79BE28FC462D8718CE05F9D94CAF3387BA55E6E447BF81A9EDDD3A34E17BE66BC52B0C0BB6F
-86F6F008829173816D205182ED2ECED319864A796AB65D4E3950288BADA94FA32B6F453AFDFC6C39
-A4FCFE60353A64627E2057D4B379D3240012B3BB0ED0C7876CB83C1BA5EFB6E2A03F340C2B576731
-F848F762A7E1CCAF267EE06D621BC33FC245D0E1547ADC12CC0EB58B26BABDB8EAE9CBFBAB93836F
-FF22BDA1831DD01B7346AD377AA298D84628BF1C07433284B0A90FC89F5AEB2651BA2CEA405D4F52
-DDC0E74B871D43F71EB4ACE0D2B401F9348EAC3A2EF0AD295036BF6CF6F870D58E00B619D50EA7DD
-77BC28DEF91D805CD527DCBCFDC16C042BF9B874E3B1567EBA4C1E70744B9E7E5BD1FDA6A5FF6E10
-1613FBE58DC46CFAC1A65ADAF65E49757E9304E2AC9A91E0588600C709A61D4231730073A36D473F
-518A145E141D0A5A494441B9EA99AC23F60F54F8127B477E1CE698BB4129B4B1DFEEDF10D9E665C2
-47A62F112F5CA30B0AE5DBF3E495FF06EB28EB438CE8AAAD84D5F50FB56A3AF002C23BCF66ABC270
-7AC233FC0F2723DB99D2CFE7D3B3667732A531F5DC315CE74EDB9050BF75D29E6430F57CB6778B2A
-CBD57DFCEF896E6766C8FC5C9F9FBD701CD62CACF33EE0FC95E78DADD205B5F42CC63024624BAA0A
-B4DD447832B4E1DBA77BDFADD223989F8E958C8D759AAA37930664C6EFEC708116248A2A7AF3D656
-DDEAFD009B7F5333854608E67E5E588A857167ADF9225CF6C641F5E19C3E08678A281199EDDAC831
-B57223B1BEEADFDCBC8F6F25D32FCA2336C808162E8F381656E847FB6CB13969572425AA05AC830C
-33DE6E030F86A3A85D2A66A77F103C7042C97205526DC882EA9A00EB8BD5519847EB424C15F808A9
-1652A6CC89B66A5731126DEBADE123C63D88A2E550FACDEB3886FF98646000C64B3A91078012CA30
-904B71737CEF6BECABD43DD702880538F5A70085E6CC6015D2163681067C3D513A8C66032C34A0FE
-17A58AD4BC97CA69BF41F11D5E910FDFE9729652D3EA21F8DD8CC19160A8FC77573B1E9CEF4E790A
-79D8AD6723B6804E9616466C935303E063DEE29CAA6C3BAEBF278B818C2EC2F13ED645AB452397BF
-00DB8B26E115026E256746CD0C78A959364FDE6DEDDCD0F441A61A1EBA32C7BC172BB09512148D1E
-BAC9E791B7D51B71CAD2DC9B83B2F99B3726607D9CBE58B499A13753CE87FCDCE21C0AD0528ED0EF
-B9B2C927F57C78C626248AA2B835A0791244C5896686A66173EC9F802C4C633A42B086334D2A4878
-0E53D00809247BE64E529F96AD2F8B3922A6097D414DDE1EC76F9552F9B8D58B8E34F359AD792B2B
-E50C26DB05035E7497162E7C49C38D3CD9B98D620AA67492BE5AFCA3A81A7080185C7F0B5105223F
-1FA77805502A2E8C5FEEA27699858D84A95842C5F2FB68686D59FE24091FCDDE139B6463BC6C7B1E
-0E90D20A83651AF00C85797BB9F53ECEC1675C7EE636D0D9E77DBD8F89670F855EE4D4800FF3F695
-0EFF09BBF8A0DAF6B8242840CFA5BA73BEB95115F4A78BCC02D85ECCE0C0F2EF6F328AD1DD6CC049
-5A3315B414A4D61DA50DA46D7ACCEFF6EE56451805D26B0359AF193531F95F6589CEAD6FA041AF15
-3067F88A0A2FECD135C56682DB2B45A71D1FA737C064EE9A4F404BB72A70B3AF0330359393247EC7
-81512482579865240A23CD8479F21C2C44A119EBC4E81B308DD8AA86E60C3DD8ADA50E0DFE8308EB
-1A7F201EDE8DCFDA405AEFB47E0E6CA7DDB376DCB21D37F7ACC4D3E9F26B03A8DE0E8940CA3A9E75
-963A389DF8038D2C486072F61C0CEAF500753C7A6352B1CD0338D9212B42A4D3DA23D5BDF44C27C9
-4B88A415A3242FFE2E1B332477A21D2B9CE075EE479C6E657A4D8874A8C53964229310E01ED4F3C6
-86FEF5258EDF3B464DD6FFD7F1CAF473BBE722D60FB14AB4918E93878A8AE4773930B8CEE110F476
-7F42A52D9304C55BE12846C911A10AB9B2E036BF9DFD597F5348D42233315FA80D0F563C388BC253
-2103F05E90DBF1923F229F980A2F4585C7A373511372D07DCBACA583099EA972C03E5AA67E663882
-6DB134564DB993CEEB6E7A6659C7C5C05C310267D5F8A24EEC2D5CC3E3F3C808E6D6068D1A57646B
-37FABD98ECB7BAF99E7D9AC4414A491A73CA34C52F394352F6B5A15F0FC4D88622DAC694699C2464
-84ADAC3B1D366AFEDE2A2CD2042C90516A666A19A91C80248B11224BEDDF1A320E230739E755D098
-B6A67315535F4C187CFA67ED817A035056353FC859BF286317996FFFB478A2248B908FF12ABDE705
-402224A3EE5F463DD3D243875C84E02DB968ECA1CC52C75171EA50D6A88CA91327A7AA5795019F36
-C0A19C093A1C9D3723C7568F9D41F2E4FFB712FD47F897703D7A620B586B81936C84AAED61D84332
-B3BEBC4F95B796B93EF7A1F565C494F8A65EDB21E2EE18DC025522EF8E599887CA2836069CDDD889
-88E5862977B7472584303198CCE97EF9F9E1446D1F1F5ED1CFC666A8A0C3A03E1792EFB60A9B4065
-49E0DEDF6ACCDBD98742568B4735A747D8E5DE21E630125AE0C691D054E42199C15B1F80CAFA6E7B
-B2005F374A9A5F9900ABB7409CCD50C3AFCCAB1214E6A856F7C7EBA89BC3291801E1343DA9DAD2C6
-ED075C8ECA1423B43E587AEC67E6145272814B3F191B3C285639F9E2D6E148A02DC2CBC0E054D629
-5CD05DBAC1950400A9189316F0265B86A732D302C5BEE8ED233768F237C62600CBAAFF3A110D5EFB
-6CC7CA3B92D965CA7C5E8D3E64ECF239FE2507FC797FDBE54C1112B28D4DA44C60AB09D994C5BA78
-D663A2591934CC052BC70CD1DCA3325C66C9CB982E2039F5DB70C848D3DCEF655B1C2CD0CEC8865F
-E8E1C0A267BE4F707ECE6F5A3DFCA3CC1EDF92C760439F51AA69A4C1801E96CA4D6EA4AD980258F3
-D15C893913ABCE09101984C61B91D603053E49A97CB82FBA707DAE8AF1D579FD69C8481CB7B712CB
-CDDB4D287BE995E32C02B399602A08B9DD849039B5673F1930BEC7BF366EB082D2CA5DB2385C8CC4
-5BE3FC0E31820191A814EBA7C4F23B1938E6C4D800732787CD2CB97F762DFC85D4B798809B5F2254
-D826CA42B32695428D120298B44CF38494E56240B75DF1E41E46E53C44DC505452256DFEC819408D
-605FF14D6C1F3F152F2FEA96EA0AB3B472D8704E06BE9F8C3E8395CAADD06D6DA033E81ADE5DC3B8
-3DAFF743C6E9E48716003D358DF63CD7FD3E2F727D1F2D0C29962F76D5C95ED44B6F08D052025A66
-5785F264A3D5F5593677B630E628B5EA81FB37CFFD7A30B7FAD226B6FDC82B0878AF4C0EC4F4243A
-807B9839EA62BCBDF7C2E9B30A623876E632E084EBF4A21EDA04FC88A1C07021D0C72EC3E969D449
-FEB08E5826EC20E55B21EA71EA59F6E3B0710B0DDAB3261B4A2029ECAB68C19ADD5174E55D5E984A
-4E5F38F592A302FEE6ECE732DDE841A28672C620CC5D687455A5C06FA9FE688394A04F96312ED025
-B7AA6FBCE2925F3AE559CC1886BEECDB70822E2E5CA3F732A87404B1536AAC469989E9610CFA440A
-CE43875A70CA51F36CB6F629D9424C1E35A88F92D5DA3CD8CBAE6E8425A36968E21F4F30349749E0
-205BFF8D552837D6FC39532525370BBAC833F75F1854C93FC533A4AA53ADF7008173A70D94A4EBF5
-38EA9E62BCDA7C20E0A073BEE2EFAC34D2EF1D03BABD5147659E50B557045B2EB89DB303749B04D3
-F54B43FED612FCC68206E001A7AFE90230D9C12F74A32C7EDB5D0241DC3A5D51481FD7C8FAE08FEE
-263FBCED7C7D911B3A303C835AF5FADFD218F61A9D6DE80485ABCA88200047B094441F7767B97A24
-E8C612590FA2407BAB1E8B56C71914EEF2355DD97CFAFCC192BC06FCE063D3D9D1A629AADC75E3BF
-207234C208E7E30663EDD691043065C9CBC473D97C6D4DD3DFF59D6A9ABCDD4412C3128F603160AA
-D8F81C6E7A4DCAF35F3A99B4EA10A34375B477C2BF846521A7EABD4D28078E9340452A198F3F5ACC
-3DB7E3908939FF6E3709C6A3FD9889439A4AE3E10B618CC92E14B68429A3AD2C80940A1079452EC2
-66F254657BE7D79A2A24084AF73F6DF71FBCD32BF6913A3FAB25F977787F7BB0C3A3E8BAB38D7A2D
-B0B4826950643DD1E03BD7DD1FB149A33862A89226B7CB454DAF613128C2075470E42E70A9444A8E
-6ECA526345AB48E6F5160BA23B5BDDFDA6049EC44ED1461C7E0DD514B16E2FB285F72039DE3C7982
-EFD40D7F6C8E8F4CF35AC71B467BFC578002E8D2239A2FD2C4BCCDD8AF3D7DB1F4AE7F2D2E0811DF
-9D0155BA6EDE50B5F052F14F6AB884FFF244D8806C07EBCB49ED22D85DF696995991A954AA97A1EC
-D86ACD76E061B7541E87997FEF0657A826BD88EF3A4A5920462C6595E7A156F453291CA044CED810
-860C3B0149BCE73BECA713040664AD0591304106129600AF71317B0D2907839CEAC99515D357E980
-B1937B6E1200AACADA205421001F1B2F91753E80D2263C56AA164A74701A8D5FD28E46480B0DD963
-A683A1F355D7FB4463C7347C94EA5E2CA40B60B56297CB22D972C5BB10E56715A955605256C1541D
-9F3BC5768A6F355CD3B863F0FA1A781EDB49368F51B29481CBB41D4AEB07AF9DBE8F52C5D0FF75F7
-FB6431D37D6AED84D78C778871CB0F715B4F07580F23B586C969C81B471FF6A6C7276F7E141E02A8
-584D4B9AB00E7BD643D2C3FAAA299B1F1E25048461952EA42D4882768A70DE46B213A287F8D31AC4
-6D5436F22A796C05D1FE50A9BC2A928066627A0D87DD57A3AD91DB446404B41557D1457873482005
-EA20916BBE46C613F456C849D46BA79D20627B446B2F49E3FA309AE14F8C420CFD94922CBC0FB9D3
-5A0F7DBEF577F1849A1A80E0011DA8AC082A8C6F61658E65AD177ABDF23EE17C8CF0D26B9FA3A6E9
-4837EB9E930336889767A8D7EA3CE980A8EA95528B004957BE6067CD9BD8E02A0F23CC1762CCA656
-D33412FF45E917FD4A03EB6E8C1F43FDB0A8965A33B4FD26BC24A20B304CA817E88495BA9B361A3E
-933717FFB0271F7F70C5D3CBA1E86D0F51BF3ABA194DAF32C35C796627D00C7B2271ACE2463E37E9
-7B3C826CF3DB60028F240F9452CBE08F7EBCC5FDB1BCBB3C327A9F450B9E5671916101D6E3E5E458
-CA31F04D12F592F83BADA2C3683D3886AA3B403963AB5DBE220FEC00037A745839F67A3635DFD3BF
-F08F367482962DED88ECF6322852D643A54D5D303EB04BFDDEE9BBA1EBCCBA7C653B3A613A8E719A
-DEBE3CE1BD7E754E5F4977E863E3C2D388A65227B451D4F3A4F94E06513CBA4AC1F2F511613FF035
-611684CCC461599000E546E4D972CA6960E095A526E4735A23421A4C9B597ECE08AFA2753592BD16
-DED93255A1E33DEECE3C5EB77B94670E8137F2A4A4B98AC193258E7DEA5DB8408A806188F2D1DDC4
-40CCF0E9A6E2F0C78FDBD7B68DD4939D2458C1965BF8BED4564B32462FFF3EC892C03B11D3EA813F
-AB4CFBE8D3016329C5B7E3DFED0F08284D44AA0B7A2F6BC96EA4503E8EF52A64C22BED6B452581AE
-8FF8917D53976471941A9116A2D878FB2541B561767ABD4E31CCD8A590CA03494C62AFFD64EA0A1B
-C779173DAD84999C7A8D844EB1259DE7BB5B25CD023537A474A524EBE4660B22568949E624D8FEA0
-AD37F4CE1EC75955EEFA49C6BF1803BE87E9C9865FF3F6B8525B8C15FE8835CA153D27E6C0FF0CA5
-1029A7A9185D25F0F14D86FC797DCC1F99EE97E2054B9C2A2E06FDBEB8DEF6CDD368BF23A858D9F8
-C1DEFDCEAF1B4A8DE5EAFC604CECCF0D285BE00AA912EAB66EFF4D37AD2EFE34853BBFD87CE09B18
-749B489943EECAE7887B006FB827D10191DAD18466CD1F86505879310A8B171F902EA0C26A388E13
-B53C700272CEE2BFB47ACB58247C13449C6BB9D01232C32517358F1A3DE064D43C18F8827D53789C
-CF3CE2EBE78949A6ABFA1A6B8414CE360A5E22AFB7D1DCE6F5A06182C3B984B4F9BB1A905A9D5A14
-83750A1DE0A857CD5C06945EB7D4A2A6BF1237F32A154FDC06D51A703D44FE052FD3C53E9E8F417B
-35D1C851F9203A8997521529F21AD8498F96930AA77EBAF82EE02A57BC77C792D9F220294B45F48E
-A8FD94E01CD25645D36D168923562F3FDC93CB79DD4760DA0C103C2675722D7A1B79FCB4245ED12F
-A0DB52492C9CCE58B333CFEE822812F7DCA68E802C451B5CFAEBAC608B950386B6C58239D1C62D62
-4DD5D15782FC552222CCA06DDF387B373E32C3C2864C63C768350C37283760F3515A5B0AFD66C48A
-B522EB3E808C061F5CD6BD96CD18C9839D30508E7D4EDB88E8F11E31E10919B16B7971F06D7877A0
-58D8A4944C84FC6CAEDF3341B48B6E0D3C7B85D710E0C35F5B5053CF4B4798B3778CC28B2DC7AE0D
-F3A49F9F3BCD8E95D746C35C3F47D68B8AA35D97AA08E711B5FBE70D1A623C82541EBDC51A827D0A
-69E6C049087AD26F256EB7577F58CCFFBCCBA5A95D093DC29464C9A38DE95BC6B1853963B2DEB0B5
-7AD1248D6F1625E115EEB9510B5772AAE4E3C866657DB0B3BF0E0AC345E116F8D4976B770876FFE3
-748C36165522991F46A36F193DD1A1C94713673C7E4C81582391B636C72DE94CE6254374F99B623E
-5686C13D8A8322E83E11BB0B0A896C6A8C2C4F756C5385CD7017F26D23F7C3EE97372C868C8C9155
-81723BB6B76B4C3CE8998E4FA6CA40B633DFDAA59BA902A4952DA90EC4FC3CF0F2676ACFA7F76F78
-236FA2DE10FD3545357215246BB7E527F277C28B353CC6D79DCEF21BCC8F77603CDD58A2CCDDBE3A
-9802F941CED8E035313875319548C41992A2BE939A17CC109426E33825AE59BCD17CB19F50D972FF
-CBE7D9B4B0BB095303D9DC9D406696C2508D6CE99E11CF00F6461147E97449ED5F486D480A86D3A7
-ACECB7E9A945984724EFC21C5079B1FD03ED803C2DEAFCE3327D2D7827715FD65D9506216C88B0FA
-26935E95C64114A51919D419038B1A7E9C1E829FBFB53275093752DF19891A97F3CBF7719C1FD6CB
-17019A6D2D25360ECA804C4B35172662CC4769D2B785C6C87E5A4ECCE31704E59F71263B7C3CAEC8
-ACB4C7426EC25F11A0042323EE6C3EEB04284DBAE2C770BC419DCE79BD4560AEA41571C3B595F525
-60191DC7A8FBF63D413A77A0905E517441B16C2B501EA2F9E99CC38D052679F288FDF1894542E3A6
-6989A0090185EB2E75134BFA3D9147C3DB8A621D9D35E37786853779E157B47F71626D6B3E633005
-9159C17596C1B87FE2B4FF47ED9D78FA4C2160077276C8B58CEF5DC030B4A5D83CF257096C047FE6
-4DE307C598B815058E72D5F57DF5C369E664E137DE29349E2F9DCD8C9F4EBA6E765B6327D7A20DFC
-B20711273FD8091CBA605C4C494248076F7E03DF65A6A50164980BBBB708741E5BF6056E6F996DC0
-7FFF408C5B8EAB8DCEC315E92873228C805D4440A6470E3EE3983758DD211C9CECDBFAA4C9300CBA
-00608A4B2404A3C7AF017A3B7E67F39F0B51ACF950D3E75CC7BC2B8D3480202FA958E8EE0B240501
-5232EE0D264C7CA02C18CA45CB3C2DE322D3EB7F00F9455DB6C5B1F4E59C3E95520EC36D7D903CBB
-625D70B54BF6F8255E412604BBB29FEE026CC660577F91DB1DB4A613EEEFB20CF7AE3CD89D565AC8
-38416B01B5DE4FFA5550D17FB51FBBEBE21CF1D56038863EE931B90DEC2E211ED42BA92EC244D4CE
-2C4EC5CA87A026992772DC2AF754FC982B94F36EA7B7BF75E0ECE90CBB2A6AA1A012E8898BD679C2
-3CB3827C35D5D02F0569C7AA82615D4AA67518ECF668D3B57D6EF1A8013424AC2268BA0D9A74D588
-79EDCF6382A89D397864940303EAEC45A38304BA8B1CB198967AE23EB81054BE74B16909A405E8A7
-799CEE3C270FE2A6DC50BD7370B6B2C8FDB9A87D88D5D40348D3984E39C693B6F4486D994778607A
-80A3122872DD65E40492107C71C3CF708A9717E9EEFAFBDDC239C53AA9645B711038E59C8B861B37
-411AB2039BEDF9CFD00F08D9C5D76154427FF5DD39878CECC5D7BFB3F1F035087185C0981F3C2139
-BE84872FFAD3408531C4EA9387B89F5E3EC779E8850D50992DFDCF9132BC551E985943B07618AC10
-D1150451F0844C0DC41D6E17EB508DC8689EC726400D5A7F6FEB3CC7BCE05F09228B7CB2C5393664
-D8DD9A4B96B1020EF25D70AA2D91CAE93AFB5F2BF0AA18CA5C599FA1A708EF35BF8F7FFEC9AFC1F2
-42870D028B2B1459063B493943EF1283829783E1010242E5CF4DA39D93D506F3892936E7D6CF1124
-70A521D397438733D053944CFF12D6FFAE8246F20618684F263715AA98E15D72A526383E05C23214
-B78338E5B476F0981D90056E6E5D0DB66B1DF2298E597B2ABE1D817E18BEB056E65EDB4234342D96
-00470B1420C9210419D834E431B82F58608C87AC361A02D0F1FE4B470A3D71E0D21BB87E1023D428
-E23D596CB9E1A2184403A16E36E644BCCF9BBDE27290485057E62827283E7380AF786BF395B3961B
-A5EA469C315763FA59E0F176EF81985F38B882DE56A74D128E256D1B89939728E55A92ABA21A6B78
-44FAC1BA7BBDD8B34A18194A2984B000380FE9F672E83EFDBF276FE797A325815B0F25CC95C97A9D
-ACF56D583486305D7C9E51A7E337D14E3B900333EB38FD93A99587DA2341B10C059C71CE080FE753
-3C0F059FA40E560AF9C4A41A4BE6FB45846FF8F78165E10B4AD40F264BCF5596A1E8EF8CB6EA4B1A
-3A5C69059AB1563843679ECB2511A90E8898F54295649CB73D277760D8D04ABACC7BCC6E777A0530
-E2067CCBC08673F9C8C178F9D672AC8A15E5367F0C5651B53E75E0CFA57C931746AE1A679C246D7C
-9417F1CD89DDDBD1173C2F880B7B3847CBCCEBF99F7122E832D7C9BAFE2B54CBAA1ED48158DE3F36
-238B76B0E67644A28AEA996DDC006F6AC0242E4B667639E7523CBC90A0561193C1AF34481C2EF402
-EE43A82E1EBF4E3D601BB36B2D95CD93550D61CEE7A94E72F6D30C32C8F91A61E964B1F66ACFC398
-7F95D4028F116E9A9A8474AA29C1C1A984BE0E393BDC41DCEF6A6F1018DB60D52024899D8EB5D55D
-324D73F39BFA47377B9E15B3B06A7585589FCF52A54684173E5183367E7B0952DC4BC2767C4C6247
-B1D6103E52BC7B7EA6298F454C5D97AC575F19C10ACDFF4E10C7D3755CFAB4200CAC545269FF1D8D
-B0D607C7AD47F40DDF257AB4E7D0750577003C13E4941960C3DD7B0774DDAC18E8ABAF8F53E03CBE
-F6D57B44F24CF821014C064278FD51B3427593D17694B4ABCE81F49CBB984C5878CDF0C38D1ED7FD
-99B0B9A3BD8D8FF6219588B3B8FA59D0CDD1D9B2F65122AB45E48F1757467B9204926140E3C350C5
-A927A2E700173053EC35D3F1DA2D7258714C97FAA857F0898917BD94625C6D1E2D77138EFCAAAF51
-7B17FE187A2212C24A881A2C6A647DEF6376ED80AE4175C5EE80921F001995B44E49F0D33DD9075A
-CF33BB03671C0BCC34AD5784AD1CDFED3A6D9BA103B3DDC1CC2DE74DBB576A0277715275218CD19C
-A8899209125266D8BF1286F881DCC2C383749D1E768D670F4099F7DE959EDFE852583183C9111601
-2881A56A24AAF020EA45CD5F39660DEBCE30AC1C7B8CFC60387B1B0C3E361BE612FDFA9F01B7E4B4
-A18839A2C7E0E393EBC5AD9A8A4EBC316A740C1C295D9EF5F4DFFA0667F9582C0BB837B142C4CFC6
-B1798E9476D0631111033B8BA75A10FDC800E2AB1E0E829632F869CFE4737BE9E2800759EE0831DC
-7D1195EAF80555771981DD6DC6606812D92CB8EF86447F5F6C6F626D0E265C67E52A6319189EE349
-D48E49DFE6A9E98F76C414A1E3217AE0A215A17E54AA498F4ECDC50242ACC7E2322F63BB2FF2189D
-057E7354E32A3ED1803116176B9B9D0129930F919E2FEC280B2C8924E49E7BB75768A2EE1DA8ADBE
-D4E3589906DF1B923AEF84C1BD327438B731012E69BB0D43A1842CB88BB54EA4516477F704CFEB28
-6E3EA483445AD4D74586FCF32E96D366901084365F693A53C5FB532FBFE7BC0CADC404C4985042D6
-8DBB90A6DCDA3531EE324D558A214F935CD9FCC9A0CEBE9B5FB0323F4B3820529599EF48EE068B5A
-CE85004FEA2984F0A86F5AC9D56163BBFE1142B774148F1EB0A4DC89C3349052533A7DE66729DB24
-41B82F8F7360111DACF69293C9B281A0534F3E9E9224A75C49A832F28B2E497262475507B6DDFA9F
-01CA0A6696E3F5AC7EA68595EBA0C2EB8A47813FF936D84AC1B23ECA7AA2862B793CCBB0DF9FDD49
-31BEF354CEC12FBF478559FEC29F81ADF4452E83963E56541D31F3691C93A50F0BBA5E9552C4F2A2
-3A6E53060729854A3DD71CC4308B91957DB19E66AAA18FA67055A950F1C2CFF78A03BC1A588CF624
-696068068719AFB1001C4581EE072113882D9052B21E355D401ED8CD24D067B99E616BDA5A0A5A93
-36FC499632B79FF2FD0DEFB096EF46B75E2D4E0F48DAEA239719FEC4D9A29818F5875FC5041A9EDB
-D26CAF0ACE14CC80BA49BBA59E918EB3D8F1E541AA16026585A2F72DF7D83541816DE46981FB3EFD
-0C30E458CFAD04C79421AB7C4925E23AEA07F9F018431C790002596D26BD9663B51B699DF53E4882
-CBC34EDE88EB55045B889B6062E35FD1E018BCE785157B85EC3B9CA6C85D4B16238275385B8285DB
-012D8FB7C9F5B946A41D7A0FB878FF72C39683144D8A007CFF631B43748F2D5FC690300F9BC0C837
-006B92ECEBE0605E8C3A4A400E18AE8997D1B45FEE10068E247C647CF82C6DFBE5E881D511FFA687
-B7AEB78546BFD07D5F7EC242DCEF4930D8AAAD8C6152B6642AAC325963FD147F236BB850A9966573
-9D06CDBD7CA79A527DCF461E33F22BC9C5DB00DA2BD3DDDD8C99D99793BC98282AA8872FF96C3942
-85D82D9419EB78B6AE37A5F519397700F75D624A09BD255B576E955A323E784E8FC31131F003B0E3
-024A4F58FEF2A6C043796201FC425482E1155E229D1B2D43EF7B0D22322B22EF5C9A1BE026A1C3D3
-75EDAFF99597E1E5477952A4E8D2ACF5D014BC00DC2A272FA62B6983E27D228881E2EF2B8B95A681
-CBE90C5FDE16331C85222FE2A16F0A3C3000A63E2E21666C0C119F8AF89A543D37977069A5ACF155
-6324F05204CE8CAD50FF4FB630D9CBBFC324DEDA584AA56A99D3A76FF55BDC2C2EA3A021361CCD4A
-83C7A5E2768D210FA6DE889FD48A39D679C94EC3C99A8D33FF11377DA7F6F1B71A2A05B302ECDE95
-4F26773F39AC881542F0D0969C3995C3519A8EF70B4220D86BF01BEECC6462855E7B686E1AFF1CA9
-1FB8FD8B4A69E10EE0C2AD94ADD44449506F9B6EF43641F2026EFF6E605C670560C2B74706FB949A
-A7E8CC6A2D0D6207E457E7FD87EC1B9092DC68B9143947CC8ED14AFDDCBF8FDDA228A76847F96802
-E561F67CEEFDE45AE587673983FC04C96744DBAA83F2DC838D633943C75DCB9E6410474EB27B348F
-26E505F0AB90878940E846C5E9F3C5FE8C3558C3236B1B88C405716949B8506841CABE1717474BB7
-C30DB91CDEE33B0F844811762FAEC535BDCF84C1C747CEF9B1FA61D2AFB5A81335BC42C06A94D7D5
-9B7EDE55BCF6F9867AEE107555CDD084B7684C2C87087475A39A9DA6347BE281CE5635A4D07865BA
-98CE26C1465B1AB0343F49FF37B4D0CA9F3BB693D78DC3B21925CB996A038DCC172527FE57C07460
-EF39C07D4396E7FA970D9F22ABD21A9C794B64AD96762C7428F59A8757C36D6C4FFB23216195A04C
-2A2C2E7B10EF7193931544D782FEE4B91E01119C5553BBC6252270A8D8C56DD62D448F5AD8DC69CC
-B45E1F17F0AA1E445129DD00F000005B23D38DE93A3BE55A4C041947F36B4E4536E307D0180553F9
-2E46B743881CB5D5386C48C7D5F84C2BCD06B9C501F78C7EE61FA23516791FCF4DB278AF688A2E60
-10A56692AD92008497487EDFE4BD5FA083FA544138B20D6940020887E35D46E093B71F7A04A67460
-DC8116B4D4839625D7CA6959D6831CD93F81AC4EA2709036DD738364FDE71113BF22EBF13DFE1642
-E564701E6F0FFE7511EDF03FE448C2B28C64FB7D54B94CA576E481FA56B2B18AF10C71F699B6BFD4
-7459CDE1869D0FD306BF489A6F42E5B2F05CCF55BB6B9526973D19CB134CA7F13F1DB3716F8CC217
-73A832568C16250B5CDB16DF24BF81D49F5B37018BD310262EA7078107868AB0216CEC83CEFCAB1E
-9F2C665A31585CA04DC01879CAA79AAA5AB201B516F7052B01B16BEE5606098393B0E5D9F9E5E3F4
-EB20F63C958E796DF41CF28839F5C62A0431648745D7837B519F3AA36BC6C08EF040CCF53D9B6D8C
-0C7D1A84D707EC57A3C6AC9A62AB37251A01A5ED40FDEC6F5BE6E34C6A91D058319439778A2EE5D0
-363E2E1F33463C33327D05FFC0CBF08D5BC457C7230448972FB9B4D0D782BA7DBF10D3FFEF8BF523
-6EC16D4DD6D0D870D9D5EB5C64C9A46A4F583D4F831FEE74B0E5B33A09ABFD4444929BD8F638CD72
-EAB99CF2E9551DF427683964A592E49D186F285258C5D5F62196A98532421D73E3495F82695FEEC6
-E1952C562D546B28618FFAEEBEFF03A57F4D855021F85B0C7BC37FCC6DA9AECA099B646B99D41896
-09D3FF2D56422F8C37E97640293EC7C90E3380887836F4938FBF495CAC14FBA5648D89282D8D49D9
-1AF73ED36581139D8BD42551E263E830EA3C6EB381D85C42D74C50DB0CCAEC03F535ADE92128A016
-0E811C34748309AF7604919B66CD43EB5CA975302DCB6076FEB6BDD6FF55976FE990FB0CE9ABB11B
-195403FB26E3D6C6A0DE1C5BE79E171A61E21F79EE8DBE7A832519813EF6B33EA098C2C32ADEA219
-AB2AAC8B093F40000995539D1276D5F2EF84CCD099B71FE4269BDBDB6A8D59C86F7D2E3FBCCF8773
-D0FAE97640BC1AD43CB4B992BFADFB09DBD0CAAEB8CD9DA264187C4F97300E9A6C9DEED5525479E6
-05C65AE336CBBDF4E5D7F79AD098F977285E065579B748FEAA97F2A753E1F962FCAB68D72BAA8EE4
-FF6691C23E31BC0F3E981A96FB440404856AE1AB32A7205B17D411D8F21C8C93B704D07EC594422A
-BC368CDA2B1610CE6A973F4474E12B78B532666797F5755D269772C9F5400B3BFC6C58395D38527E
-2CCCF29B56123F7DCEF3BDE5DC1DFC5B0293BB125085B1D2D929BC3EE84F4FAD571A4991C3DEE03F
-2DB3A3097E52B1A7D5C73CCB6148EAC62E8E36DE9A71C57638C6E4D5D9DED18174E8C390E50B4A5B
-913C074EEAEBE390B214B3A68F02862B9A296DB4B409769649E51D738CBBDFB7702E15C73C2AFC6B
-C37CE15171F4E822CF20EFE55D9F061AA43E648989628FF79E65932390CBB15D8E621333B18B11C3
-BDF96F841D7434E01AD501FEA964A75B248A35CD9DF9A37E48A1E5A09C624B93CE44F0042FA00D7F
-9EE89B9F7AB785E9C718CF6E7228F743271C2C9BBA17E5208B920E44E765D99D86650EB454B0FAAA
-112753AA1BD3A24239E9C5FC47EEB1547AC9D23731B8DC48B9707830DAEC60C8D3790BBA1120F776
-4EFAC542CFFBCD5C05F9510B27B2534B704ECD36C8B041FD49A96881302FFF5B0163A2DD09C751D6
-D6AFEA9170A4F4C4AB8D46E62F763FE1BDA51DD1CE4A27E772F3A2869155F762FF26B7AA6FCFA4F1
-292E56F03AAB6322BF867E7710C34D43B5D85B45AA68014AD7879EED051B1933E491496E3E26D9AA
-8B80A07BF2B94F1077E84A9726F08199887D66DE7A307BF33C30DD9CF3DA188088C03B2BAD09A217
-6B110DB2C868B53DA9A66C85737BA66C93C58A259860E294AD0191E3A72C73F40B0BD98699AA08DA
-F03587B78F391F3A4313C58D9F29B53C70785637BD0C58310109C54091AB0A34CBB0C478613A7AC0
-FB8F0A8B4645AC966395D8BA775262CD291136AFFDDF01C1D83DD4EB3B59CCAD18057FE7D92A8CD4
-A58F22508D9FD7CF356571F701BBB23E749BDDCBF8A317FDA0AEFD952BB18545610FFAD3AC143D35
-1B8DB3F66293375E0E50235F0D0466932181D377EDD32A5F0FFA4E22B5A0CB4F343D9A7E4A342E9D
-09DFF6C697630CD3971802C277A5590B8CA94BDE6B38446C794D072BBCCB724D5BC208EEF1B018D7
-39373BB910D668882CAA779C2D686081DE6A2606417B54D7C20E0E7F722648D893E4EDBAE8F00D6A
-6DA3712F91AE860C756D1127D133AB828E9D80023B50B162C5A1C5CDF70CCB3FDD7EA060ED20838B
-E1E50C4094C9E79E1A0187CDF780CAF45A725964F004253E034C5BE46BBF89D94631F1A33BAA35B8
-4FA2A9D08481C6674126CD96ED05DCE48BDA069D902D6836D5DFBA701DC0F98A863E64F0E312145D
-8DC0B77F25B43AEC729A1243B45B08CA228DD6101CAA2AC5ADCC8EFF84A4CA3F254176C2CC711EE6
-C273835D0FD3528ECA2A976B88E51FE347FDB60F32370B66D338931D6581630ED586F349C638960C
-31AE4204E89521A96E1219E696B913DEB2AAB7A3B022D06F34FDFCB810A04E60A4FEBE284C2F063E
-0AE9EDF87704921CCFA193BDC912B747E13570066223A49F1F6E2AF0D4D65DA04CA876FF7A462FFC
-9C0BA2CC545C3BD36DBE762F32B2D6BE5867C59F479195C92440DC165098B74EA5C3AD93CDF2D410
-B04C16BC7801E7956F4E5107450787AA592493171C3628E6B8F49D4F8429EB98DC52EF025F001387
-BC1A7093F7A99F10B5D2D7DD8BBB393BF6E56F08F4F7FA1A343F220D5A1EAE7168C74D41BE1DC1A8
-3BD65B72B982F4F7B34F24F97F9EC9A91011064031FACFF2A14921A32024385F4E061CD07D152E74
-1BF97156D951A342488FA7F5EF934CCAD13E2753A0AB7A1F565C2F7F6B349DF03BBC25BBD972A9AD
-F809BB5C5048A8CCEF9297B2ED3324D18867F293CC66E88B3A39D107B610DFE79A3B4E83A96D3D52
-A17FE8A62C9FDD271130148366942C9CE57558D023DA5F7501319EBFA33DE9E6D1E76D7C20DB8A09
-B657839DA99F3D8143F1EE6253A3295C9651FA4366547893C2DC7ABCBF4BB7609DE5D001E0A36D9F
-FBE01F7D0903B3208AE8547E2E5F14EC1AF4C2535CA8F4EA37E3F3CE172C7A1E8308995B1CC23E6E
-81190246BCAB6E755BF868D449BB02A2AA87C44C9CC0F571ADC72547CEECBE104BB274B8AC16DCB7
-5D5F458D356466B921ACDEEAE384E2EB1DF6EF393B41B9747F0A4FAEB4AF1928D9AD6FB7E06FDC62
-1E4C6FC98CFB43F88584BD55D9B97CC9549093EDE586912161931162B1B1D52D0443260DABA02AF2
-B4432100D5506546013DA703573FA8013685CC798CE501960093DED713FFCCF89CA2B9106390198C
-29A00864108CDCC1984A8BAB53919028C01B26ECC7925E38CBE6CCA8978EE21C2B06E7B3E48FBA97
-8E2A7D186E563C088F84AA23178B60E4729EE87D67B1091F3B6973676C1CBFE6530EB773C62E2C24
-97014AB0E8B71A1F4E86A378AA26591511BEE3CF3D64C94848582E1354E1605B6457823F2C5E640A
-D3802946BB2E7E8E594E8C04B430C2385DD40746CE8534F50842E74D7115F3DB0C72D1C9C607C657
-3B094AEB73B7A79876CFFC3E2F8C9FEAAA07D3BFCE05B61F7749A8793BE90CCCECA2D7077F25E899
-D3331FE161A7E86C842495D584C6E4A0880B2951D8A13B88C4672080A0B1BE36BF47C3ACE7288CFE
-41A8C1BAA6F0814A947FBD6B3AA72B6C73A8C578CA51CCC96F2352316C467BB960E981F2B6485BFB
-44B577E71EFDA16E7405954BC7C9F0759F5A9F1EBCD2FA9CC9648D5831A68887F41B15081A204C24
-B4B992A231DEF9E698D4C3A25B6F5474F5BE6A601F2D337A58A0D21FF37FD91EB86D1D738893A03A
-69F0CD743F611CDFFE69DB2C6ED0E4611D56F803BB0DC06E7FE85A303839612707647B1BE9FAF8D6
-84122CA9E5CB8BDE2936D3F4FF254D31529D7538BBD4D35539489F9E7316F24214B996BCDCF1818E
-749A71CF0E8845AA1E2A58AA62A48E02BA4564625D20AA220EE719608521D7D7A7FCA0BD8904A401
-9819D371F3F59D46C1354E5FC1A6E5F79B20CF4ACA2BF0F2DE73DA193A6F9ACBFE0B4731C4BCEBE6
-D96FE822965DE965232282A3A130361F188B3AABDA95A8A2790D9240BE008B6A6DE4BBFCADA05B67
-86B9BB8E0DFA0C30043A3B07ED46277E07B9808422C8ED16758B9C396F4EA929D769785B2C9568E5
-70A83B989B25CE200F1727D41E2B702E7F88F1784F4C83FA60A74EB26B2DA95126E508ED519A61CC
-151DB6804F61826C5F86D8FA89D06E526FED97A0DB88EDB432FF32C1ACC9B622EEDF601081AF7B96
-3C9CFC1D13E4A9C74FEA0A1C8E3D8653CD92A944D4CA6B0D306619AFD503506D77732D6514F604BE
-4610C2560931BDE0B40939BC1D126B0E97F72AE1B4A9252123B54F7A27E0CFA4425B4546526FD741
-CA77952B10D13E0AC2E32006A903808FF0CD013F936238C74CC75FD915244C56A8412F37F0134840
-347699508D6F3D7F3203A25B7C70100719582CD588590EE34B3AB13E255B613A6D00386A0104CC5E
-D2C646F09A88888D3751651D5646C5227A3C80E8DA1B0A331121DD2429F1F4775D30564DFF47D01B
-BE2C6C72CE4D1FD9A2077C04D2B0274B8916F6A9D1A4A6964A534F47CF241D5A8E34B23F85BE9ACF
-FC2FEA961F277539F215F8728D6788F67BEAF45502839BCF23D8763C3949352F00C579A9A4FC408E
-C625E310DAE61512DFE6844E82D36A2F81709E1F05B38AE9C222ED62C961EE63593CED7AAF73CE2E
-D3667740C77B309B93EEFE1B4BA65D48575A66BE86743DC9E5D3C2FF418D11F7F211B86E827EE1DF
-C3613E7498030F07050524536D1F8A94DDB6698BE7B963C55CB3F74B676CD815A7B3DF4B1A0EA2BE
-1B0B9A11FFBFD5B1FA49668AEE14629316AF436A0821C20BEEF7B3480847934A99F6D85B68F4DDF8
-859A754E009428AF89A90D1852C220A607FF0806E8080726EDC94D691D214B4521C147C4273AEBDD
-BB4A697EF16448CD9B2FC95293305858DECFD406B89B9F3FDAE2AC579E80CF321EBAE5701FB2F7CA
-D8ED04B4A63115886D45D6120F69AEF1A21D80AD3C2D35D2899F1902242B96CD349E0AAADA40F7A1
-1282B6B52BDD97708E58DC5E2D22D1153E5FA3F3B300BCDFAF98DEC2F4E3C82A1C85F985735F3987
-4F557579F422664E07CBE19DA680EFB0FC82C323EC5C4644C51709AC8D674608A8043C91E6C7988D
-430F10BA6CE1FC7FC0604FCD8F723895250AEC36CC35B3FA14FE2A0D24095DCC30B2093F2298F5F0
-A97676A0BE66C3DC9ADACFE2FC0F721A20E945AFC1096A619075D5E9A264C796EC6C90EF1AEEA8DC
-089B44FFC13D27CB2370070A52D4416C53F364393E46EDD7EDE00799960CE6E0D57E4909E88ADD64
-BDD2B0EBE2D73FA6ACF8B40280DAA0637E705C65AABD523B8815F22F23E9FF81E7829C7E4BC980C9
-143AEBE1A04DC0D253396BBB7268BD5AEEA356B610D5DCEE03135E00AE34388251F31714A1C40E18
-2652C48CDA2211A22CB6F02490E69A44CECB169754C53B16028D352E0119F5D5FAE0BD7EA1CDA647
-12A6147374B64244E21E9EC9F0D1381AD22D5B6212B26C3F9AA5F6045F25DD9F5EB4489EA39B1945
-331AC70510C5752557DE21D0A6CFC1EB10A98FA867B76DA6E4249469F591FD154D39E89364A43DB0
-07AA0D7A911CFAE6CE2B557997FBC44F55A27F622BD7B8B10EC9F5D10F2649A646FD964AE1B111B3
-5B46A252C4DEE44E7426EB5739F24E8A390694597DB3A1FE7800C97E59558322F0E49A0CCE2AD94B
-1E2D1026AFA771723E3F523916F55ED866C9FB4A2F759651C613A2CFF362028CDF9D38F05D4C7C60
-24C533E930B64B099FB1AF04B01F5FB9CA6867E6EFF55A772C5391831059987E10CBF987E3F378E0
-1329F73D54DC0484177D3C3C06F67397955FF1CA4EF8AD1606B70455255D631A7D6EB92BFDBA14A0
-FF28B2ACE7E81AD666EA9B3A0F5A6BA3B5DFE35044FA4B3D8ED956009C60E98CC132F2E84967F4A9
-8A67B336D5EE7CAF7DD1F74D1FA08619941361FA7312CF225D89CEF97E864C8369EAFAB94D97F056
-5505D825972B754F6729596EEA91210B75DD8F645382ACE36DE60819A02B3B48DD00F5485F9264F9
-FA926D732E2C267B0BE8CA98526F124F97EFDB86132C5EF16B103908172FC51F286FFE45FF253512
-E0033F037FF182BA536A9EB2DF2D1DB257D9C86C46E1B002FB32AC70CA9462E6EB48994752CEBCE3
-9F08ABD4F4B0889283E55500702185A841E328
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
-/NimbusMonL-ReguObli-iso1252 /NimbusMonL-ReguObli ISO1252Encoding psp_definefont
-/NimbusMonL-Regu-iso1252 /NimbusMonL-Regu ISO1252Encoding psp_definefont
-/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
-295 321 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4C61>
-show
-362 321 moveto
-<6469726563746F7279>
-show
-556 321 moveto
-<53414C4F4D45325F524F4F54>
-show
-962 321 moveto
-<657374>
-show
-1032 321 moveto
-<737570706F73E965>
-show
-1230 321 moveto
-<EA747265>
-show
-1318 321 moveto
-<6C61>
-show
-1369 321 moveto
-<6469726563746F7279>
-show
-1564 321 moveto
-<636F6E74656E616E74>
-show
-1772 321 moveto
-<746F7573>
-show
-1870 321 moveto
-<6C6573>
-show
-1940 321 moveto
-<6D6F64756C6573>
-show
-295 377 moveto
-<6465>
-show
-358 377 moveto
-<6C61>
-show
-411 377 moveto
-<706C617465666F726D65>
-show
-644 377 moveto
-<53414C4F4D45>
-show
-866 377 moveto
-<322E>
-show
-920 377 moveto
-<4C6573>
-show
-1009 377 moveto
-<6669636869657273>
-show
-1175 377 moveto
-<2A4D6178456C656D656E74566F6C756D652A>
-show
-1661 377 moveto
-<736F6E74>
-show
-1761 377 moveto
-<64E96AE0>
-show
-1861 377 moveto
-<64616E73>
-show
-1969 377 moveto
-<6C61>
-show
-2021 377 moveto
-<62617365>
-show
-295 433 moveto
-<6D616973206E6520636F6E7469656E6E656E74207269656E206465207369676E696669616E742E>
-show
-295 551 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 551 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-659 551 moveto
-<6475>
-show
-738 551 moveto
-<66696368696572>
-show
-896 551 moveto
-1 0 0 setrgbcolor
-/NimbusMonL-ReguObli-iso1252  findfont 50 -50 matrix scale makefont setfont
-<636F6E6669677572652E696E2E62617365>
-show
-1434 551 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572>
-show
-1553 551 moveto
-<72616A6F75746572>
-show
-1737 551 moveto
-<6C61>
-show
-1801 551 moveto
-<76E972696669636174696F6E>
-show
-2060 551 moveto
-<6475>
-show
-370 611 moveto
-<66696368696572>
-show
-535 611 moveto
-<696E636C756465>
-show
-716 611 moveto
-<6E676C69622E68>
-show
-891 611 moveto
-<6574>
-show
-962 611 moveto
-<646573>
-show
-1063 611 moveto
-<64696666E972656E746573>
-show
-1310 611 moveto
-<6C696272616972696573>
-show
-1522 611 moveto
-<4E657467656E2C>
-show
-1714 611 moveto
-<766961>
-show
-1809 611 moveto
-<6C65>
-show
-1880 611 moveto
-<66696368696572>
-show
-2045 611 moveto
-<6D34>
-show
-370 668 moveto
-<636865636B5F4E657467656E2E6D342E>
-show
-309 769 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<6563686F2074657374696E67206E657467656E>
-show
-309 813 moveto
-<6563686F202D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D
-2D2D2D2D2D2D2D2D2D>
-show
-309 857 moveto
-<6563686F>
-show
-309 901 moveto
-<434845434B5F4E455447454E>
-show
-309 945 moveto
-<6563686F>
-show
-309 989 moveto
-<6563686F202D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D
-2D2D2D2D2D2D2D2D2D>
-show
-295 1106 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 1106 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E206475206669636869657220>
-show
-849 1106 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D616B6566696C652E696E20>
-show
-1087 1106 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<20>
-show
-1099 1106 moveto
-0 0 0 setrgbcolor
-<706F757220706F75766F6972207574696C69736572206C652064657373696E>
-show
-370 1166 moveto
-<6D6573685F747265655F616C676F5F74657472612E706E672064616E73206C2749484D20646520
-534D4553482028766F6972206C61206D6F64696620E020666169726520737572>
-show
-370 1222 moveto
-<20534D45534847554929206574206C61204272657020666C696768745F736F6C69642E62726570
-206461616E73206C65207465737420534D4553485F666C696768745F736B696E2E70792E>
-show
-294 1323 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<5245534F55524345535F46494C4553203D205C>
-show
-294 1367 moveto
-<20202020202E>
-show
-294 1411 moveto
-<20202020202E>
-show
-294 1455 moveto
-<20202020202E>
-show
-294 1499 moveto
-<6D6573685F747265655F616C676F5F74657472612E706E67205C>
-show
-294 1543 moveto
-<666C696768745F736F6C69642E62726570>
-show
-295 1660 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 1660 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4C65206669636869657220>
-show
-578 1660 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<61646D>
-show
-664 1660 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-677 1660 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<756E69782F6D616B655F636F6D6D656E63652E696E202020>
-show
-1207 1660 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<646F697420617573736920EA747265206D6F64696669E920E02063657474652066696E>
-show
-1862 1660 moveto
-<20>
-show
-1874 1660 moveto
-<3A>
-show
-309 1765 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<69666571202840574954484E455447454E402C79657329>
-show
-309 1809 moveto
-<202041434C4F43414C5F535243202B3D20636865636B5F6E657467656E2E6D34>
-show
-309 1853 moveto
-<656E646966>
-show
-295 1971 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 1971 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-662 1971 moveto
-<6475>
-show
-744 1971 moveto
-<66696368696572>
-show
-905 1971 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F535243>
-show
-1178 1971 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1190 1971 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<737263>
-show
-1251 1971 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1264 1971 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D616B6566696C652E696E>
-show
-1552 1971 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572>
-show
-1675 1971 moveto
-<72616A6F75746572>
-show
-1861 1971 moveto
-<6C61>
-show
-1928 1971 moveto
-<6469726563746F7279>
-show
-370 2031 moveto
-<4E455447454E>
-show
-592 2031 moveto
-<6FF9>
-show
-664 2031 moveto
-<6C61>
-show
-723 2031 moveto
-<6C6962726169726965>
-show
-904 2031 moveto
-<64796E616D69717565>
-show
-1149 2031 moveto
-<6C69624E455447454E2E736F>
-show
-1481 2031 moveto
-<7661>
-show
-1550 2031 moveto
-<EA747265>
-show
-1648 2031 moveto
-<636F6E73747275697465>
-show
-1868 2031 moveto
-<E0>
-show
-1912 2031 moveto
-<706172746972>
-show
-2043 2031 moveto
-<646573>
-show
-370 2087 moveto
-<6C69627261697269657320737461746963206465204E657467656E2E>
-show
-294 2188 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<69666571202840574954484E455447454E402C79657329>
-show
-294 2232 moveto
-<2020534244495253203D204F424A45435420534D445320534D4553484453204472697665722044
-72697665724D45442044726976657244415420447269766572554E56205C>
-show
-294 2276 moveto
-<20202020202020202020204D45464953544F204E455447454E20534D45534820534D4553485F49
-20534D45534846696C7465727353656C656374696F6E20534D455348475549205C>
-show
-294 2320 moveto
-<2020202020202020202020534D4553485F53574947>
-show
-294 2364 moveto
-<656E646966>
-show
-295 2481 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 2481 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-665 2481 moveto
-<6475>
-show
-750 2481 moveto
-<66696368696572>
-show
-915 2481 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F535243>
-show
-1187 2481 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1200 2481 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<737263>
-show
-1261 2481 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1274 2481 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D455348>
-show
-1432 2481 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1445 2481 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D616B6566696C652E696E>
-show
-1738 2481 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572>
-show
-1864 2481 moveto
-<72616A6F75746572>
-show
-2054 2481 moveto
-<6C6573>
-show
-370 2541 moveto
-<6669636869657273>
-show
-541 2541 moveto
-<717569>
-show
-626 2541 moveto
-<7772617070656E74>
-show
-834 2541 moveto
-<6C6573>
-show
-910 2541 moveto
-<617070656C73>
-show
-1059 2541 moveto
-<6175>
-show
-1128 2541 moveto
-<6D61696C6C657572>
-show
-1315 2541 moveto
-<74E974726168E9647269717565>
-show
-1600 2541 moveto
-<6465>
-show
-1669 2541 moveto
-<4E657467656E>
-show
-1835 2541 moveto
-<6574>
-show
-1893 2541 moveto
-<6C6573>
-show
-1969 2541 moveto
-<626F6E6E6573>
-show
-370 2597 moveto
-<6F7074696F6E7320646520636F6D70696C6174696F6E2F6C696E6B6167652E>
-show
-294 2698 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<69666571202840574954484E455447454E402C79657329>
-show
-294 2742 moveto
-<20204558504F52545F48454144455253202B3D20534D4553485F4E455447454E5F33442E687878>
-show
-294 2786 moveto
-<20204C49425F535243202B3D20534D4553485F4E455447454E5F33442E637878>
-show
-294 2830 moveto
-<20204E455447454E5F494E434C554445533D404E455447454E5F494E434C5544455340>
-show
-294 2874 moveto
-<2020435050464C414753202B3D2024284E455447454E5F494E434C5544455329>
-show
-294 2918 moveto
-<2020435858464C414753202B3D2024284E455447454E5F494E434C5544455329>
-show
-294 2962 moveto
-<20204C44464C414753202B3D202D6C4E455447454E>
-show
-294 3006 moveto
-<656E646966>
-show
-295 735 1 264 rectfill
-2125 735 1 264 rectfill
-295 735 1831 1 rectfill
-295 998 1831 1 rectfill
-280 1289 1 265 rectfill
-2125 1289 1 265 rectfill
-280 1289 1846 1 rectfill
-280 1553 1846 1 rectfill
-295 1732 1 132 rectfill
-2125 1732 1 132 rectfill
-295 1732 1831 1 rectfill
-295 1863 1831 1 rectfill
-280 2154 1 220 rectfill
-2125 2154 1 220 rectfill
-280 2154 1846 1 rectfill
-280 2373 1846 1 rectfill
-280 2665 1 352 rectfill
-2125 2665 1 352 rectfill
-280 2665 1846 1 rectfill
-280 3016 1846 1 rectfill
-showpage
-grestore grestore
-%%PageTrailer
-
-%%Page: 2 2
-%%PageBoundingBox: 18 18 577 824
-%%BeginSetup
-%
-%%EndSetup
-%%BeginPageSetup
-%
-gsave
-[0.24 0 0 -0.24 18 824] concat
-gsave
-%%EndPageSetup
-%%BeginResource: font NimbusMonL-Regu
-%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-Regu def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-12 -237 650 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020945 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A2261C63C769D2F4B60FA2C438AD7D199D8E4
-5F7E7C9A605C8CA14E21FCD81C9A515FB8DB6F99604534D06EA9D87FE0FAA852899C9D0595C7A97E
-6C55F79FAC45CD38E87B10D210CE7501E88C8FCD3444354365FB893A12F596AE2C1E70D5819EE0D0
-87D10BF8DA96F3DABD5405D28C4228C6C31BA4052464859640933FEEFD8071C0C84CDD829A9B1D0B
-A01F25A4D50EE2EA2B45160CA6333B2D2800306ED2BEFDFE155E9D9F9342EB8D5B0ADBF2460CCC98
-643FB1287CCD28ABA7B5CAB92EC39EE2E918990372B16F8487EBA30EAE88708B6CF33B6C015D8096
-C7CFE2F139F52052E3925C0D50FD64CE68236D59CB83EF56BFC584150EC38065059F3308AD6F9A99
-F83EF4E6CB13855C8175E31417D190D036B387D3952344A950F4D8C7781B307A094DF1ECAEE4D2C2
-FD747BC6F7F9C6BD0E90C19294F96C8C5CFE88FB34C477574A1B1630B8CC591529E59B20794DA32E
-61DECDA8ABBD1AE956CF74012AA01D42EE01E861B0AA6897C864788AE59DEF43C493246FDB1ACA55
-4C12594BC7B33657A9ECC9E3D1472EF826073F632BE540C35FF6FB40566773F3BB2204D3A579A08C
-CBC844C14B18C350F003B9DA23A570C362D6003893CA32F86F59B829C78EE3188B6E3F7FA81D7F62
-2825C639638DFB78B7AF1F500F5B450FA54DBFA5CBA277C794ECE93275A3DE0B452FDC8DDC2993BA
-A42F28A636008CDCB03EBF71BDCAF35019778993443F88412AD2AD0D7155A3944606463266322DBC
-0244B07DA1E9C27A27B59664E8566D7A54CC03E995AAD008B0A17E2C3EF61F720CE7F7788599C4E4
-4C709CD5C31B11107F16AD70B17B9AFE2E8CD922A7428DAC171427FFAF51067307FAB0ADB530E701
-FD22DA22C4CD3064067BD4F6089C4B2C87937DD426E4E9D2F60E608288BAC9056554D04947E69200
-61E379CF5E81BFD32FD37EFAC1F61CEBEE551B0851516471A7472C60DF89DAA9EB1DC5A67E479745
-3E69B9E22BAF4E3CCA4192D603295B018C4AB69D18DE52DFDF15E96B557F290A4B8C5B1E7A6CACA8
-1F2351B97ADFC36995ABA43803A6E5AC04A3C93495F6D38106B8B144449C07D1358210F9176E1565
-72363CFBDE576BFDF99FA329DD1346E83F79E06CF68250CA57A68931BC7F342AD295D0CBA17AA95B
-B8EEB53EA6E8E660B814E9F857CECB14F44A43288B69A9E7908D55BF19E844359879D28CAEF1C38A
-36420185D20DFB32C2E002202800E8EF3D67C5D50E919657CA958B538D537D503444865331D79BFC
-40312068D72364503BD0CC84B5F30A74D8B5B6A26AF2DB764564FB65A6BA8F9051AE2B4EA458D46A
-4569F30C6E77DC097356770362E6CF3F1661074778EBB44FF7D1E3B64FF75E77E11FE525BB121C65
-46CFD13300CA1F02D571B82A5825E6226D14FDCF27F06D87452A8B6C5DCA658535CEE2A795E58137
-D48E566B69D53A0C3B766E84C51EAA221C46999CC8065ADB2F129D5B630FAB1814C0C33B5AEA0EFB
-B6E994D80941B53079AF96D90A0B924F9B0E319BED9836B8F9053F868363D3CA554CBB181863301F
-8CB940872ED5FA7BD18CE39218B5AD8AC57D0F752D941076B1C64D99BE0DB86D7A6D96510D772EB2
-4C587F11779BD21CFE5BDE1F29C1EF9022B2B8BCD7F91153C845906722477829C40111D810480F3C
-F62DE8DBA7FD86CD236E656618CAF6FC46827FBC4898EA7672F8C9971AFE43E0E01EC8B77D4AF48C
-BF1210E98C1DB15C16D149BFF58AB0270CF015B107A3A50F5DC8F37FFB92EEC8CB6778DDB7CE4AAB
-C464C4AFF654223006A550EB52485A23D2B4AA7198D3CD54418102F1E9A4FBDE37B841E56F5C2C53
-966DB9B66B000E4588282E3FB80C2C519339F0002D2F83C979EDC5827A3B3C8EF8810A0F9DACB6B9
-998E9AF6551F56313DC4011904CB979AA2D32B11A811BC248141E4B9734D9FB7982A5671002D8279
-CAB93ABE057474628DEFC95D43890DB1ED34CFA8A20BDC3D874E7679A396158E522ED0AB969A4E3E
-C7E4474E192590504D54DEB7B260B7935C4E56548A7D121AC1F741F8CDF259EA1B5813175A77A1D2
-D30BA26F65EB765A04C09ED51F69F41551ADF399E6AA2FC09788137BEA4913F17B8EB838C38FB272
-1FDCB55FD65697FF0B850E7D3D1CE266BF90F7EC06A9A0876BDFE767D3A918B092FC78C775F945CF
-1F96E859C03DBF630D9A940939654C3549D8F7921CB94EE23D5A0535DE9DF31EA0F937F860B4F220
-A99ADDFC343D7CF7BFA0B803C12C26403F0DCFFC8EA786D0D8A8D9C367419CA8AE41190CE93A8086
-583A1E6C9D70B612C84D87D2EEAA71EC2DC12F4CDE6A821303D5F6A9BBDB7EEDCD289E80FA3B75F4
-7F481B50719DCF4A142069393593B9AF9CCEEAEC56A35B8787193D7C88113E9E1E221D151E093B01
-9EF89F6118BEC4735103CC8003CC5AD1B6727B3226CD44C497DA7052DD681695DBEC3397F9598C91
-77701C73BF0594CE93F23D50EC5BEE2FB9DA1FC966DF148B27B28EE3C89526DD6625E2887F9FA076
-7C127C609EE315626BC14D274FBEA56528DC06A27B2D476D46E9E7916590B156A5DF04A6CB15E362
-45D77021767B6E5BDFCC679670263FD891446C3371B11BB6E1DF60F960AAB4149D7753E6A5C33810
-C42C8BFF4E935003388506F8278BD7CB672F132E065AE684DCA0B9064D01DD620E7FFDFE04F14277
-EFE8E60159BA0FCA3FE2F28B902D4AC275D19F0AC6971EBE827C4A232D87650D2688345BCA78F879
-077114F0463C5F058107B669566F8171E4E284D278405580F04BFFC9902784216E0C9A17AA9B2935
-E66E18A783F723BE044389B7E9D62AA36818FF2EA406C3C1A9D2F3436F3EE7DB8BE86AFA8DAA6A4B
-1B84611350D8D27605509612B515E16AA843164D5D0805E36A2B9EF74C5F6A0B9D59A04B55697123
-27F4B1B30E9587CD103337639967CBDC655AA46E80D2CFD24BEB50815B5338E522B3A7AFE8362AB4
-F05D8BC52BBA9C5089ADA8C89529B0275AF422EB540D31A938B8740860756325B966B36817115213
-FAAF92DE63F6BAE1E0064BFBC5588098B61EB83C71F1C2082436D37DAF1ACBE186FEDC4BE7C1233B
-6F18BEC5F99002D21CB7864E4811F7AB3C03003E1E4490AD1AC793BD28FCD5EF0E6CC30EF39A08C5
-2F71939B0CEF620DC69E31E39D6DB969049031B0C92EF2DB653D97F370141456A52985076B268652
-FA2648C792780BAD637C4D7581FB2D62011D57E293719487CF2D1F013CFAA532E1C2D39178D51272
-A6AF041440BCA174B5CC902BD7390C7D3695056CB4BD7791F9FB6D88E7A70DEF2C97869F5DBC5BD8
-23C517C7B7C39D624DF627DC9653EA5347BFDA80B723F05F6DBB4C9EA501D862ACE05B9DBDF21B70
-56FBCD8C6D4B85873DCEE6166C8B5ADC0316CA12D9639F361B15A42F00E1D62EDBCA1111972FA0F4
-5758BECB31DB38316F3CDFE1B41748C93ED58B67E9B57ABBED5924A6D53E99FBC9A994A6489A8BDF
-13EB685548B4DC6D62DA7426C22227D4D43B6FFC7B5EA91C896730253E8941AFEE588359C2BECF6F
-FC415B9EB6D31CCB0F6C7F85853E6449FA6D627A97A3CE8303F148393ADCCCDFA2FE085C6908BE5C
-3C05AF00A6F02840206C3253A559AC5C049BDDFD11AD9B118403B84DA10AE3C470CB9A9A2D1D7B73
-2F59F5FE146DEDA60AE750F551AAC934621B4470E1BC324C436303E25F81D0DC3188BE0D6FEC5414
-C20E4CB18952E12CB6423DF7124627ACDE145500D77A97A8BFD9CB50D1FAA008E2CE2B2505A4749F
-1EBBB092C347023714055A9B63353AF9E7FEE05BB54C9843698101F79888A91531773830C2C967B5
-88D3ACD2192883D5CE3962D51084FC653EAE2C5FB2DA41DACEFB5C76812D2EDB5B109677289CD199
-8D457FB1023A19AC67295BBC1A9A20A426B06A368DF3C5DD083CB1180D287F5500F2C635EDE157EE
-FCEEC5503447382D15C748C1E35F68753992E5C90F900DE54D18F8E1B355D1076ADFB1F3590135FA
-D1A36F028E44F48ABB149B80CA9A54614D467F8D71CB310BBC7AC7100261092DB8C5BFD39E0AC6BC
-2C9D6CBC3A8C05FF8A74CB21608EC4A4CFE4CBAA2D056DBA14206106044DECF59F957EF8A9CADE4C
-9B19D8D30DD4FDE6A9548E50DB51ACA73330142153FC36B69C1C8D5B26D0C689B7040E81AC2C864F
-D7C097C99BE5953843E172C97AB5684F35FB03A725A89DBF371F08DDF40A1531FC1B676DB0E1543A
-EC6E97D3D2E4AA3D5831D8B3C952ABBFA112352814FB6FAB61A0D680E6640F6AEC8426200CF61286
-F7422CB2F78C61EBAA36D47EC16D7FAF8B4AF31D090CDFA255D9D7C61D46CFB22A7D6E1758E71ED5
-67E00CBD8E8F468DDFB477F091A2F915627F22FF47B876544BC1F03B6BBB98385F009C20BB1AA2A7
-A78674692B8EAC2E3C8069B79E679338DA57F72976810F845BEB6B9ADD32B95D78E5E60F16DD1668
-9C05FD82D36A3115BE8ED494A74DD211D58A2CDF983FCB9CDC29BF7F0E29988FA23560EDF514BC1D
-183F3B2A22C09FB179B47E05ADEF48DF02F31C29875D1915037B19407764A4292FE44E741651A8E3
-BEB5F0D972B6327090F664417C84F84FFBF0AFFF8B1D85C822D90730AB4140C42A51AA8B1DBE4398
-4EA8566040EB8B341CCE23FD3F69DD235A080BA5C69AECB9BC732BC2D7D40617DDA6B79FB6EE40C3
-556C7DF9B23DAD89E94054B1345DB8402AE679FC4655A4A776C0150463F8DB2BFC0608EA1F124E22
-1DDAE6026B5E5D007A7E4A0D6B3B0CF3A2669E67C5E4F01551966A7BC48F2F4B6A87E740D8095E63
-F77C7A027F26B52F2299DE5B8A2F6209BCF3D31CB0235F998F781E5CC81E31DC424E008D46EC0920
-2951E5684804A0592EA47D6C788A20487BEA2EC8F2E6C1D7F378B62DB43CA43C4B366F8B4319631C
-FE9854F0E10321CFA3B01C873584863BBEFC23C72C05E695B56E8A52E89AA2DAB543834D34DCAC5F
-ED08DC51825C5257AE59850D101D84F4CAA1D29FC932F9E0EFFBF7A9A7F3685F61F0490CD3CC8988
-2DB52A757A6AF4C4E67B407BD2316B1C0FFE7DC54E43C87B874F57E4903334E2140B011484863CDC
-ACA331175F2CF3D72E0042855983AAF8853D3015E870FF0807014C31D55060DF3FE1FCE157324481
-2744AB51322444632F9AFDA6706E320FFE82B8CBE242A19DF00CE73EE48E25FF49D5871BD3E60652
-298FE3E8D400609E232E0DDC794C0579ACEF89E841B2EDCA50D51151F65E8C1CC3B01EF1870558F0
-BF5743718C3E068617E81BFE120C6CA16E0924BFC2541177D53671CAA3AB641C41557DCDAE1A3461
-47B5E999C4541B08B4AFCBC187AFD653D5B5F8386DF6AD8FE69E21BD0567DF494F736C6A184FA4DE
-48DC9F347787CA96E2E00A296C2DA05C2AD9BC423E9CA428D7F1FA12DC9353A302FB8C529AF8688C
-BB543B45B2717EBF8F6C497935F4F3BFFD285E0402AB7544B3CA4643AE5A8B5250ED987A95FC1F27
-5B9707ACD0641BD0EE2AE9758494F8D8A51DCE408A38AC20EAF0852D72D84D0C6BE973326793AEB9
-55EAC6FE0A2813A355DCD22F6F2CE56588D1C055CDDFA98878BCEB6A018DB22922D2B600A20F8184
-2E665DF41013CA0947C4237C2BD60A75E2FD1A3FB8C8FA19485730B87461AD466ACB02DF8CA24091
-4FB090B3D2B41EB6B8FF05E1A59D9FD668AF70BA5BB72778953BA55FC5F9F626043450E1D09BC83D
-8605098ABEF884639A37809A32565CBEFB3FF39EE53D6C18C58C272BB928E4410E361E59A50F242D
-69747A032617C52DEBBF62364AB5A96EFAF642D9D82BA679B1D70FAC10A4EB62FA5CFC308E86368A
-AAD7E75948F43598CD1C544A0D4091374D7E88D4522CBE902391641327E888E7748FA889DCE67ADE
-61699E7D77763681CAEE9B1CA8837B2F7EF9C18CBCC538C465C8E2DD34616953CCB6030A222C728B
-834911C1A179E2C770289407AB28B303E724D97F747D6134B425216A64C6E0B60F633E2B85300047
-E4C90339CE030A0FAE31E830C8ABA5AB3386A3B69267351A7BFDD66356AE5E57FB2994452993E90D
-E7C4E260ABAB93C37831856A650D56E44172FECA01D6C7C380F250B82473960D2A2A5FB6B4DA668F
-46E624ACF7FA0FD4490F485D640A3ADFC9F8652E7A38CE5799F770C3606DB4B8B947F93967F779E3
-A3C0572F13A5A187D31D7BD12A5C7BE23CB6ED6192086241B76C5BA6983DB9C93E4B208D707D3760
-F03CD6272EF3A4CE89B8E52E6AC5871A3D03EB975759AB4BE239E5EC7842CBB333E692CC607C722E
-185D3C39164DD320C6945629C70FF66A5237C0A9520A1FAD6EB9816069351AB0F135D90CC0982B14
-7D2294AE4A38A527EE40BE9CDE2512AAEBB590E134388BB171D0956A7C4566D65A9A041BE6C4F883
-6B3EC3D2ED1B48B566A783292B15B6127920D247D494F070BB20BEFF60640B11B276DDEEE49706E8
-B2B21BB40B7F00AAFC594C492C25DCA774E0B80D82E927448DE2E74A9D0DC7AC9260096EAF187B6C
-D6AEAA6D1DC4205B4411122751A5B22688404EA7C5861730371FFAC10F5AFD4727A0E402AB5EA757
-606B75EB86A05E8F774D6E430A1A3FE2A37EBB06700474239FB1CFA05EE44B91B82244C575B52E7F
-AF934B04EEB0D933FEB57EBE326D75821C8B23EAA85B583AED4320B7F04B9F2DC591091216FDE52E
-064BAAA9C2C9D9714B95A4558C21F3CEBE624B5403B31508F178581AF6863083ED762F1E2E34A45C
-FDD71660D626FF8648F5D6C5E580D4765A67FB6159EC8077A9F0A88038C8D3D7C77FF0926E2123BE
-874F7BCAF129D55A5B5960F824BD1728ABCFCC51D23936DE9A25C408D786E44C3A2BAFA4423177AD
-060D21D38E15E23EB6FFC0B4120E814695D423EEFC2744A1FC81B4DF89D76F0A6803D8B14E75538C
-AAD03A72517B86514F6952F6FD619D9E910D980F00964DB325318C045BDF79647F453D4A5CF4E61D
-D5359782827229310405FBCF6107C3AD9DDEF9A9A339D5D5A6EB2E7838A0A43221BD62CBDF732DB0
-A638A52016FB35BA7761AEC846A023D3BF2D1BB183543E81EB7CAC1E5970CDC6F068C5EA118C7AAE
-528D1396E6DC939112DA4460C890EAD5C01BDC438F5BB734218BA6270ADD0DC1778FD8AB16831D6A
-302B814A1A44B07EDC65956C9E6CF4875DF521F3CE5B422F71081B6D69BD270F739095C9E81C0377
-934A8BC6390C420C4E4CDD9CF7E32544C68D884E15ACA3BCC07FC8C132D8FB9D752C15D75C52C288
-57E2EA461A6FCAD90C56843513F74461F18D7164BC597A28AE4BA7C86EE1703535A9B9ED50122627
-71FC12F102E800E0E1AF7BB46681BD2B14B614CEA91B7B2AAA35235DE76C0E113C92688F8EC81277
-D58C3406778E1EC1CC15F1CD9A137C8FFDAAB99ACE3BFC782916F1A877170589A92DC921E6740A22
-B84DC6BACDABCC76E64C79E3A588D80F8F4D376E1B426F15751CF7391102102F0AFAFD8B22DFDEB5
-48AEB5F30B1673023D22054A13391A0EC08DE6E7B685A0D031AABF20B7C62187C0284892D5EAADF1
-21BA28263EB863D5E36EA9C06A77CCFC0E17F593961591F84D82AF823EFE41044C8D606FEF83CCC7
-B0E961E7994DF8A3CC36B209D953E250ADAB8D22D7F2B4E2C9CA39EFA2D93E56195C1560E30A5190
-CC5B17FAEFCF250DF79F6B624A4B917E11C332222FCCFEC4F6A47BD9E75DA9854FC3F7AE554E91ED
-DE144D7AEF38A0E3EDB5E5A5626374DB94F022C8CF549093041DE00D7269B7CE544E748439BA2870
-718C08E58FB4A77D93EBC04B7957D272AE1601D41BF85A2BADAA0DF73B0D3841D4839C85677FB2E1
-5F1D6CE592669FF4BBC9C69DBA334DC37706F2F6BE83D5863E8CD6A30C08640AAC4C233684E66B4F
-E6B62D4A8BE9D531E47BEF5640D9B5C27D990092BE1597F6995C8A77BE9C18AAE6C1CF130775DDAC
-41D34438FC7AD8E042CB56CBF2944932EBA7D053E9376FF398367450E35A1945FE23E05C921096A1
-5454721FFD0F429A3E06DC3ED36F1C170BE79C66996EF8337AFF85B90C5D3A4A94455AE9FA32E211
-7A63E59001F052D5F6223125BFAFA40901E98960ADF7BB886729DCA82FC3B8CC52B37FF2517299E1
-D769057F8154FB95582F02CB0BECC873A9C71796ADBD3E91324FAA94F2C41CF57C30B5897D031C02
-D256C909E080E70BFD1F32E69EF67031138C2DDCD1A8E4B65E485C23C3E450ABDD9815512D6F34A8
-4B9DB715DB2C7A93BFB424316E1AA44397749CB01088428F149A3B4324737ED9957FD388248462AC
-1B2610D72BF5C073ECA567E7385CC959E37CAC7E05470160FFA5A9F63B8E9B082937E911586EA165
-374938F492EDF28CE6020953A5B5CCEC7737F9D9CC8538C4339567AAED3794ABA3B9F4EAE65466E8
-E326F6C399B36355935FBDCB9972F10B13494DC25097FCEC5A6398F275C8C151558E74C5175F7BAF
-4155E36B733F75CF9D5C5979B0764F14D8306E06BA24BF791141E404C69F3F8FCCD91B9C58C2C671
-AAE7D4F9E5D6414E46ED633A5F78AA5BF04E652246A066EAD9E582B181CC196EA2D3CFAA383B5D0E
-4CAC9336E119C08CC6AC55CBFBAE147C623B400453BBF447E96DE036FC025624384359EED7C7D5F7
-858DC0521377CF647A157FC3F188DE5EEF094DBA125510FDE34C570D7BE76AB5DF0A28BF45DDAADB
-EA7EEEDB936332DFE93081E0AFD3FDD46BED08D6914B2EFCFDC41662A33B90B03D76D34F48D30FC6
-BBBB600E90E6AC7243FDF026762A44B4D6E4ECBEF48C9D7B696AF29EEE063E557D8FCF0F09E0136F
-45D17E608DA36E59F2AECF8493F8D62536119B5F7E1554DFE3F6E8D7C9A2C6F557D18B4AF92C9F6E
-050975C3B5C54F9B5F4E39D600B6FA2CD6DE203A174028CBB2A201AF126D1013C229BB82CFD013ED
-199D01E51EE2780FE896E01C63C655087A3E61A7F1029FA5E97EA1872F1B45F22282DDC317E17926
-7368CB52DA9444F6055A3C653659CAD2A1D8712BC2B1B32C1DC6906D957FB88524EE066156ED6BDE
-B8D832F9338F9912E29A250A8C4674E667C1C278B677AEC9972BE83CBA3FB779893FCB8F81A323AC
-91474BA2A2334A07BB5628E905C518E634F6761A3289056F83D5DD7B3890987EEE1C18FB2D379CC1
-905F1AEB3B3D2AD578F0D6C845D2D40C4BCEE3F71C90E68E5417BB8CDDD878D83BA80AD8485F4067
-E5C3CABF28AB56CBB219C0AAB8FFC6C7E192BEC8CBCA1459AE4450AFCC81B9548F40CE2622E5A7C2
-81F74DCC02DAD57EFD92D072318DDF05BF42F1EA8163071E23949B0179CF7DE64677CA99B23CB926
-B3E294194EC13397EA1DC9A5E1CDCD828156CD71F81B64167D4FB01E6002713BD8AC6F82B20CD369
-9C6CA4704DC5C65A2D66EB155B7AF1C9BB46469416FB49C1C7E17A30A5F045271D7DF3FFF2F42C6B
-470701C381E3456A500C6BB3D0E47B4D91C5F34B49BB6272F1F8698B307D89EDA3A1565DAD1C0864
-627560CF922DCF5B34C67860352390B282F95394AA2CDE0E97CE3ED39546A6AF1C52BFCF81A29BE8
-2C47C99E8050E4889E4575B75F39E662F2DB7420673797E2ED3D67CDA7AE2C15D0A0A794D57D168E
-BE13214E89E0209AB2C0EB7784E9491AEFA3C02D0DF3AE5365A0FC4AE023CAB528162C7A1B173664
-9DFADDACA8DA5FA18B7D6489E4229E9E24D38A620464A744A5C60F6F9D334B908706B738AED18669
-8A8B278341FA4D65A0A88680BA484694921512F7DE93337FC1C02BBE6E64AF2DAD07603279D87329
-1D1F4D39C1DD6D89C90F65240F4808F6F1115CA55B88E242565E59F3BBF1F10EC7B88872E9AE61D4
-4CAE185463EDFAF7DF63DE4D2207D307AFB61501892965170D2945846FCF5973A1D458607F50C15E
-06E5BEC715E0C156259AAA6C735593E5564F65F443B78CC7512EC35A56F126DF9D30974A40872E42
-65E1AE5FD483CFCBBBA26DEE426CDC4721F19C3FDA86ED7AD4FA1120F63669BEFE7002B128CEAFD8
-C63E8AC09943B6CBDFB3D2476A026C00A8FF81B1F651B97F310C82ABA5F388CC1DB5AFCFF5996D52
-52A6A42FA4D972E41EE56088F78CB966F9051171C472C774879AECFFF08BFD9CEA40D7C298922ACE
-64F28C14E0B81F4DCADE81D71DE3983D87D905192EF13CEE71B2D3FF1A88AEC671EC318917DF98A3
-C9054E372D22A3CEC82FCC217F47319A40900312F6E32B536B9E7A7FA0837EC65CCDB5FB0D414371
-17596CB39D9382262DE6E65379D3A9709B2CFBABF5FC5D5B352425F06F88CD31012A2A4147B112F0
-C1C0ACCC808CD625E0228EEF66661F70AF96D3DCFECD402700E4F6522AC9A856DA466D55C84F65BE
-2810A1565163872D62EB81333A698ED7B68352CACCA2D7AD38AB55C19E4F5582F75818302F5FDADF
-1DCED09D94872F2D48FB636C8E38C7563C72C771A08C6B1F041F3532BDB39006C89A33C09BE1E3E6
-03622D891F98010BF1DE5355F557A1E09448D486ADEF565705277B31B8BF2B86761E32631E3435B6
-88B79D566F1747BA456DDB43CD239FB47FF7B425EAA4C657C8EEC26EE01AED07CF916E77D53634C1
-37AEEA009C6B515B6342C54BE2C7B95955B1A9DA277A0ABCDA2346E88018C726F481F71D6011AA42
-F8852F2E5749518FE3B3AB668213FE1A05C10A1C53953D75312631D6BBBA01D418199DFEFF8CF548
-6109B099FE8E2F606165FE30F532C03567785D5362AA873C9D3EECEB20F1945D55F49B0CCAC84967
-59FCC7292E46938943C262D78F3212D3F9D0F7B103157F423D71B1ED54B2A603F4C269029918F238
-EC6828FFCEC66009DB9C9E59534EABB183F31D7AD4C57B1BDF0BD2CE5A421882BC10CC1BCE6A970E
-2B586BB221567CCA483989DD0B8DEC424C1D1FF042DCB7834423CF244EDA28D2D969B17440CAEAF0
-24A6119DB010CE366821AFA424D1B8299609C04148275AE6E5257A7ACB3C766C747CE99CBA2D703C
-F19B7CF301B634D8B613DDC4AFE4633A4D77BFF8E00CFB5E289EBBCAC90A24307E7941EC1685CBAE
-400CADD876FCEF7F6557EEE167D2035A05120293527700DC510B038A496BE1D5CBAEF24ED39F7421
-1A93AADF22214ED606A80582485AFE358E3A46D0671148998A3B3BE209467009B43400870359D418
-9A8CEB4D5866AB52D16D9CEB1EAB71C07E6CAA34B70E3096BF7604C22C40D5FBFEEA616DA3BABD59
-DCDB97D883FC8742B8267A16A99B7953225F7144568D566E64542C92E538AC140C851E5D295528EB
-7CBB49909B1CAF6409C9BCCEB325468FA0B5F7CB2987382616B477CCFE4F4AC79E4A6F7165363543
-F04DE5B6F6E1C2E910CDC3CDD6C4C92737198F892337DCB6647BD226C820AC99C65D8E7772BBB74F
-E65DCAA8A22C33BC168BF48E40A82700A3A7668C5A9A71E397ACDFEE7D556C5C19467B7AA69C260B
-727407AC837BDB7D67DEC055C1F45D8BAC61048C45BC9FB3CEFE7549EAA2992D2EDC126FF7A05EAE
-58613332A2BC1465B2BC0429162B907D65F793D236EDDD8D35405866D71B25F62DC4A7E06D4DEE82
-840ACCAABC0774F8A63E9C0F7FC980B3583E7A8B01C46590E3BC04EBA565C2EA94F057D964A78A90
-EA9F52ABFD70F84E44E434BD10A42E98C794065724341F907E35D3CB257161E01C7084E3A0166D15
-CED65DA7BA87DBB2EA33D39BD99AFB93D3548358D08330E807F8552CECF63C84F805205491BA3A1A
-622E70C232FADF3BF2DCFD6F0539158D3306506F150B0518371912A25EB96163D73E9EEED42EDC84
-D688BC7F7708D9DCA348FAB4DF62E5809BD094842D0A31DBB7C4B41F94D946810C5EC10B69AABC2C
-91A59500B2E5D37F4755DDFB7AE4ABF757F4C5BCF77C7F95E6A616646456FE8F18407080BCABBFA5
-7704287AD26222DF91AB2613951E2D679472F8ADF06EA2A20205EC19972299A78BAC52114334470C
-5F5890C2F846B4C6042D73945127F2E3910ECA1C4CD7A16EFE4B4BE38A15AAA710682C3836A8CA83
-FD384970139D8B46FB0AEBB002DD224199672FFA02250FBCFA4E649E335428FC71F50F45E498419E
-DB0E970F46894A48F65580881C9C4250FCEF65C9B28699408E18B26FE6DB7F1CBDB767564E73CB59
-54C6D639CE33220C894F36E70F71C9F9AA3FE2AE0AA0E3F2E304EC5ABC661675CDE2E70519E4220A
-E26FBACBD01D5169EB844750753E6CED53E3678FDCD08AB93E10067E9C64F38B40B76D99B6CD92BD
-F4155A1EA5CC824998B59AAD06E09E5F15EBB2288D66EA71B296616734FEF2796F07FF0D8B047074
-A1111D68B99C2B70FC56E74A51B062F4998ACC85B1943C9477E436E5CD7AB18DBC898D21BB93475A
-623BDDA71D7B895BA2D4C10F4B90BF335126F4FD57D73AFA50170F6B3C364922E551D40E35DA75FA
-891762FA23401D39260F2E92C7807C746F13BB35CEF9DBF2E76E66A72FEFF095DA482A4DE8A42091
-7065736CF4DE904FB52E649A32255E2030A7B31B686353492F31C064A3C4B0448C4BFD44B8E15384
-FD809B8761EE26A7DFA1758D57CE4F0BC376EB2B3833534B15A83436BA553955ACB5A7A66796AC5B
-92DB5388BC53EFA27508B08E82821E5CF669BCE52BB860780F749B4F38ACDF5FF12726BF3EC2743F
-01014CDE96FE6B4C40A034E9EAFCA2A35CCC776C2669E6AD138070A40F48ED79136D7FF57E993E09
-B81C543FBADD350FF5B5F7A46F060F88E30FE2D8233832D18B6C323EE017EBC1DF5C838321CDC8A8
-4CABCAB20B60A1A3AA028F36EA6E87C850AF8AF7CD50AA6359038BFA8818821D02CEE8F51DAB8C05
-F7AE9797814D97F3DB8CCDDE45B21DBB15CEE292FAA534A5F317B357F4091F3DA357325B8B9F5EDB
-45865415973C143E5E5BAA483FBF2D06CDD4246675EC58B84C6AE65CA743117FF00F229243772561
-31A7F2BA26A9115AFD96C18216CFDF41B7220ED0CB3FCC26C36380007B382A02AEAE428887DC8BE5
-FDD630AC57EE3DC156C7B8B29E687F24442E35CE10BA4087295A641F7139C831F7CCDA6CCEB5DAFE
-537CC1A97C5A337D3C48A6AE947F58A30DC08CC7B58DBBB4737AD52783C573FC1E9408F55495A80E
-7FDA61F0B9C4F090158F1A416249EBBA936C27BEFDEF19D1BFB839EB70576A010706D8B95657B218
-9C2AE04C11EF9E57FE09880273761FB4302C388BD608FA0C7F00F033C9C00F4E3D5CE2D903E0DA52
-E69C7745EE9FA75E2AD93DC6CB5CCFCD3782A699B807AFC36AD1F62B05856D5DFD6F88831B90EB3D
-CD523582A49732E3FD7253126D39E8AFB8458B5F7AD7F94A8DAC13365F433C857AF4A42C0A08C4DB
-9887C4957259ED22D13CFDF5995DA957EA5A0F620B0214FBFE08AB6D552DBF048D62CEF6EFF12F15
-3511ECA7833E0E3E95F85E6AC0F95438AC4C126E1F1ECF336ED31CCA7EB216D279877123FD9FCD8F
-B5E52B587CFFC4428456DDCA816819A8A4A211D8F1629E5D42BA4C5C356E580C8A22C61D987552FA
-A97893816DA73D423686E4EBD44375C257F031318865A20F22115E72BF1EB9F93AAA169C140A33A0
-6C35BD4526A38BE79CF40AD1EFA10411E8F3300A8A8B97AB140EE6734E1BEE6C8EE443D698D34159
-97649C6F10F20ACD80236422E215E146D744A262DA3FC88DC0D86FF66512F49D3F957D3C5CFFEB42
-4823509F33F155057A4C6F37B52F4667767BA94F6B8B62856B553F307E5D230C44CBFDC9A97A45B1
-39FFB2F2565EB0E22026972FAD0FB7B9576FB6F368B61979943A398773600E7EE1DFEFBF26D45D40
-BDA66EBB96A56EE9CAE0B2420C5DD83E24DBA9FF885BB844BF3D2BF93B07325DFF60C0CB5FDCCA0A
-C8FB5A2E119D5AF26E53AB8E3B428481C2871DDA26EF0B621CD8572B3C664BC7AAC01A1D05B98F79
-1A7080D294BE81099BDA7982432F3DFF4775C44D23F4F1B2E0162B61A8B2CB5EE8564BF98E2ED403
-2219085FE6194C19DAC98A421826CAED7F1AB1477AB327506010217283894235D7DBFC1153D5ECC4
-8AA7293F19592B4D7E95FE55151889BCD1D7FA7DC2370D2DFE11D7E4EA34B5C7A8E73BD3A348FD38
-9EF45B6167FB90BA44C23E912F9A4F2FC0427ED070592F7110183BFDB2C400393BA7569058227926
-351F07FED4F33633BA03A72AA2DC6B598E49B96021DD868DAD0F352E5722FB714F667C15C68D49C0
-3D822D82677EDFE86FE9668E537DA284068C9B0AED83074C92A5B939296D505B837E6A9DDAB1AEAB
-7455A08A114C2222B339284674B74BF4CA9EE0C020BF2A148B439C71C6BE51A94CB64FBE4A7EB295
-5A455047CF5CB348B062ED4F6471CBC3E9ADD9BE9B96879AC7BC71BCE02FD02F17C6063985A5E898
-3D205AA1489DA13C408990ABA1C54F2F501AA172F530480D789C848118C0A74EF98D5F607A067BAF
-F6030D887AC6A6497F9A0B38F9705F328AAD4BFBB634F739386177B07F22D5771282444E5EE17335
-B4D0EC86117C697E79A5F4F65FDC08E4904DAEDAB20067EAE2448FD4301849E456D085F392DD1316
-7ADF75CCFDB723E2904A9C0C976D6B84DDEF9D92B0E15FB246C3ECC2D0BF314CFB957757B3A3E8E5
-801F520644E4601D291DA0F7507C06F3B9BB36FC1C70EAA444E14E56C0CFF06C7F853DF36DA9D8B6
-AF2544B853DFFF535A7E5C6FC145250CDDA229956019659D0D253A19A7B51A4E538BDC01F74D7704
-9949C2C97C7EC6392C2E61CCC0992B66DAF1AB08551063E53180D2A67DE496716CCBAA45462D9F91
-B66A22545962DDAB120511FF08627131B95E5DEEB8B4DD9643E7B2AF65C0FDCE11F5F1E8DD468DA1
-8D41C8C4F00EA73836F4F70EC50FC3EC6D358C0658A4261C6D15A582A2C7C994E7882E661855B352
-014576858A265FFBC425160669CE159D07EDAC04D060B44E5800A7AAE8E339C29B929AA81D2F515C
-46229D2080D5917AB20AB6B34FDCA8E4AF64ED660A3173786FB1A1D005D575C2A5187D3F7CFDC94C
-CC44A38C5CD523E9DA726D8EFA6DA7B6131DFF3435FEE838B2C7D6B97934295F06202D307FF78D90
-6699CB9C5BBB10D1D4DEA5FDA5BFB094E704607083B646D37F5DA1FC7AD21B813F44D8C1AFEAB666
-55AAA19703BEA2E77DF3BF350E17C74B3447A452235919452B5175570A006C7680AC05E8950A62E1
-1D7E3ACA35A397D1E19630D094A86807593C97F4C484E4E06BCFF708B6DCA972E3A0009E1CAC0EA4
-141530F5C1B8AEF5E1B933F37FDDBC4BE22B74FE346D1A3F5FEC0818F8E61765568A2AC04713E828
-F98C449D9A1CCE52D10D61DD8BFD084C8D099A75D89DEA64D5A7CC68BD5B0593D97953DADA976383
-F5015915618AEC56D71D1DCD55B89736395C609B315A3F1E1255432FDBD37F38CC43C354FB4B7C44
-F1A7318B0B7E99C3C08C33B953727B6A6328051783A0A33E3CD9E498346A3CA6A77B517096EDD52A
-E443B87643A646C3A7BB97F742888D33F9B3127E61942F4103C1DBDCD8EAC8F9E259773066736CA6
-53CE57E8822651261D847C131321BB9D6626A1AC50D047C0BA47B411DF2A995545BD68EC0287CC9B
-31D5DDCA8755EBEB10ACCB3903AB0FD5788E984220443B8459E7C078DA4289F1350905881AD6DFDE
-C47302B0ACB0D4AF8CAED02B4B70DF3CF8FEC118F0FC2D3DDE3E494CD160E676E300BC464BD4400D
-B50EE43B314E0517037BF971ACD7CD327CB2134893B8A0410E68DDC518F5DEC966C7884CF5FDFE74
-723177F20DEDC039D879056CAAB4BF045062D3904F615C5CFE109AC7A35599C94024B41019B9AFD4
-04A80ACAA4837929F5C9317680A13D157A03B59A5588DF79D2E113F5F51021D6F6F90E8BBBA2C252
-FD10651BE80BAFD59C53A3367BA3C28DB6EB9DABF1EA99F47B503F627E15DCF3FD645FC52C5D5D0F
-2F07DB4C25C0D1E1C00146E1C4D973E613CCDBD3F9450CC0F5343D79F05E9492E86A1BB889ADF405
-03BD7F3E7543436859184A5B20BD8A172F350D846B7570803990ADAA48D4B9155A2B4C4BFBEF1E1A
-065C08E03928559735BDD442FF1E83E1FA20A5DA57D8BDB2FF5427C034CF0128AF111E6E73099E04
-6E0C240E80A73D7BE72B87834E45898D475521CA3306707631F5C6136199F354632D1A085F12A1C7
-C473868B62E534D15F5484323E63D0574196A19EF175214EB35A90873EFCFB92D6CF68761D45E37E
-AA61E1A1979A82009507CA193E44B36A806486665CEDBCF387053ACEAB979BD35D30978FC7659ABB
-E844F4ECAB3303318ECE80777A5FA5A9DD91B3D06804C4B4E9B4EFCF07EB89866D0DD8CA390CFD15
-98651417114D78776B1A1D36B4BA17746D6BE7FC123D473EF1EFED1C3BC1D555F914536869FD5B0C
-35F9C83F65B0E6BF7A627B9202D787D72C600DDB6BCCE613D88492E13CA0AAAB196E8A49928C62CE
-A4FFE2D0208EDA334ACF47F20BD793124D2C5546C03F4A364369A76A0425262F9D9118AF54E37D32
-E33AB25DD533A49DF5FBF1BAF4CEAC2D9D378CDCD13B00FDA432D9042F623DA41AFB80699B5538A2
-5403B0B3EABEC9E8EFCF42FEF3EA9F91766902CD206B0787C187D5370B60AD6DCD002DE2DE8DCDC0
-B4719A797C5E26BAA67665016DA0D967FA1346F9588AEDA174CA001B31213617FE19EA218EC23597
-79D979E2663166489C06993230B0D07973A117C4E3F4A4C93CF8428248DD5389414D679C69644142
-67C7FEA17E35B0CEE456667A9B1875C81B2302BDDEA2818D6019FC1622A82051F60584ABC904CD91
-8676305DC03FFBCC64FDDAC8D8AA9CE2EA00D6C97BC63C8A617DEDFC0E40775649438E9F61AFD179
-5E3B20560B01BE5E0983F136CF48AB206954E41DEE0D9DDD953DFD01CAEB569151D6BC0DFEF29D70
-FAE3E198E7EDD8922C0E0BCB8BCCF1C016142C1A8B337AFA7A05A9D7534B184BF3BF827F371E9BD1
-9A71244ECA1BA73D484CD2FAD54DB2F0EEFBD54B536EBCB5094E6BC2F5B2AAE41F05B4B311115876
-ED42C34F8E643B53372E3F6350DB8A38445822EA9A33E27FB0CC42CEDCD1FE2FDF723FC47C996EE3
-56C402112F24D0AF899B2D00BEA1CFD427998BD22B2A09046D6737814448ACFB10D387547D7009FB
-384AF0562C85694C071584236D0F1F3D3FCD0CFB38B77C81889061E668BA7AB37AA60F58A3967DE2
-6F939B79CBF10A9DCC42852561D8D6754F1B660D216AAB1E133FBAA321C56E2584BE5C9BAE20CCF0
-0E8DBE6D9C2FCEBEBAD945C3C04101D2387351F132628786F6D9D4CAB83419288D31F9BC600D9664
-12E6AA457CE6CAD26A4C0671097B98C2384C81DD8B9A3222D4F4BBDA7017895C3EDC26662779AEE7
-40D9D7E24185FB821970B0A3A94041A69E4805EC88EE1EE521981536F2844FB8F5EF645F67D42CE5
-148E2DDE43AD5AEF200EDB3A2C7866C98458A92666E5F9E070178BCC39F65A893102A10564AF4E8C
-AAA5075D2F8CD7FAB0401C03AF299EA3515CC93066744EB5AF7CF0ED06675BF049A6E3C211A89E16
-DE5BF0445A7CCA6EE8EB0347454950485D884606651E5887FE8B24323E2AA16DE22FC1FC8C4F06A8
-2A1FDE5758976024068197E1F4506E4D3D8A16D40461A4586338B374A592DC60334402F76388AD6A
-457DC3F54E6169CF7AE3959676E966A45609621055EC3AF80E182633300A4418E34A66DDFA6B569E
-5A13C9115B5FD3EC1CEBE50FBA247F60803AA83976F00117536342DC3D9890C49B2AC701D370E43A
-955118967827760F7091469C5406F08F18D7E3548148CF0E312B1DC71DF67A5E7A1656CF2F47F3AF
-F3DD50FFC2FCDAB7177285B29C17CA43019F62AC6FBA52D1493ED7C427526470ACC8389BAE827759
-4958908F517B2863B83292EB5AB3F57FFFB08393CA610FB1FE905D88A0A16AC395E2A2A6DD033D6A
-0D68992F830B2E1B95FE357BF672716E88FFB92FFC3D62945D1EAD22BC68C51EE0E10A43011DB94C
-44685A5C4576F6EF44CBFB45F2A4BF110A01657DB51FD499767E78058199B31DFD60813F1A344F86
-289F9378231D5B151C92385E3650B4FEB1DC91018EAB8474CBF69FDC1496A4D078D2C351C8196451
-247A9DCF8117E5B637371D8E22E248C64D999015C3FD2311E9950B8EE0922FBDD3D7BFF766BFE9E7
-CE0BE12F318FF2A7B5A9C6D00A54401609304ED2C55F5C1EAC3D4B38355BBD85D66D61636FA6E30C
-2E82829376BEC979A6FEEE040E452359768ECF90CC539A546F17AE906C76F14F86FF697797322B05
-1EB311A759FE260C1EEE5DACF383816AAF1294CFFA7BF87A4D9BC595EE8F2C2F86FEEE11AD959D86
-F22FDAF4CEC098942A57E57813A0FA99239E994FFF353C1E781D666B8928CFC648FCF0869FC68468
-BDBDA7D280DFAB8B0B3A4CA35B074B686DE8D372C61FB32305169A1A9912F6541DA16CD6316A6EA4
-51524757BE5CF6E820011BE3859FB8B8578C100FF029680E05F0E0BF11D33FE19460C85EA5E4C0EF
-28E29407C8AE6BE01CFA0D5022BF9FB01416FFF722A784DFC8FCE330EC95737A854471D334FDC58F
-AB42867A7B62836A8B56466E9A6C1247D46EBAFFB905CD4321970F59FB8D6FF65FDDD34BF913AD32
-2E68455C5FF2D23C1A5EAE687F259BC982B6A384D35440F7C693CF50B9ECAC0B5578CAEE87588B56
-2EB6B7F42034C9F2E545EC866316552354EB3728C7D26527ED75174EAF635E048B08DC5D23E88981
-070AD5641A652F2344956E9CF4C16E652A99F4A644D1787D6D36537489DA4D74E61B2FC4DFDF1D1D
-9D58F9C26C5EB63200526AFD168AC57D5611ADE4D4A382FC28BB60F9E7D626A6C67AFBCCD1183C5E
-3CF2EF210D0BF5CFA7BB10FA3887BDD4CD96EEEAA8F9219AA2F10ABC0A960C3B57C0EC0313AE10CC
-FF1F522124CFC8D2D49BFBB0C193EAFFC5B48FB3FF30B21CB76F0A4C0F1377C9223145BB0468A5D7
-1B9BC25873EA12E1C60334571C67385C00D0B570D3FFC6C7FF0DE62C183C76AEEB12DFFEE1459E0F
-C818C621B8D12FA1357E2B55D48935D70BF140B4CFFE8813DEFD479350B20DC2EB1D3CBB1A2D3DC6
-EE975D58C89D61FC50E6A0197DA9A586B72255023DE47DABEFB11E8AA02414C2FF6258A281219B9D
-DDFE41BA7D7977D0D6F18224FE22F7D4E9355FDB35BF7ED3418F4F68D093AC48F7D8FE4194FEB6C8
-0B9DC1F74E023C604DEA27089F98C3973FF9F4AD7BF7BAE601DB89B08D5D8139B95EDCF6C885FFA8
-B3E4B0477E7040225733826BACFD1EC4A0DD72DC41734856AB9FB700DF83CA2CE812913BD142D84C
-5C83C0B2583768198AF9E885F2BA74877A414233207234AA5F18840557CA11682AABDE8993533887
-7C6D404BDE4153C9827EB16D66C1D73A8143C8A2D3604FF72CE579FAA3C5224BAC48EA83BA848429
-9472007DE96466B5B29ACC7C03B05DCAA38A48BFF9F214DE43146AE4E04FA705421917F99BC54533
-F0EBC01849E396216B9F0794E6F6C6B61B52EF1B1950C0FB609895C3C55FF574163FC8B6B09E66AB
-AED1810E698FF37CC1F926B2CDA3B48C7D77790EBD2D514B6F385D397F713EC3AD3954EA9C846158
-6031D369E8B99E53408A79D64C34EB5A56DE8A67DE91837960E98A66FC04DFA0EBDE21DB003234BB
-78665B039D0A469A0221BD541AF7149A2A659C300132C14581EF766FFFBECBA8B58A5EB3F95446DE
-F49AF863A8113D17B2E7E6ECDEAFC3834D4DF900E3475596E86FBB4E2974C090DB4AD61A737D611D
-92B4535AC291C56AD8B1C031D2F9B505BB77517B737D70AB3723DB52AE2ACCD5DD2F617423ED3CC3
-9CA882EF41757BF7151806A9B8B0F312808863E3673FB54DE939B35CDECA7FBC4DC3BDF5A5F47D35
-E345916C39366C8B4F439CE1C6F1835C320BD1E67375B03B5DE18C93256F251761A4C8CEC01019C0
-68E34447BCC503B9571FE8000627A6B3DAD5854CBC0A2D69E5A8F46BC78F6A7B1422334EC7A98ABE
-FE9B83E01DCF3C6C9273B346F3240EA225AE4A4083CC7B0EA141A0773FDE940768358EB4B13D82AA
-304A1386D450C1C0C6A7D5A8FD2BD313F78F85248B5196241E31E5595F3BC01F37700A2DD3D4A0EE
-2DD01A36569CD507130E8F5B1E96CB560BB7DA15560CCADF3B2C9804A11D9E8055C9EC70E48C1D21
-3EB756A1376F2EDCB7189D78CD3D6CA5865537EEC31C17D801605EFD860B0B629472690588D02575
-02C6F7A75B9A1C1B397781329832CF3EC43C09F1559CD562C48FA9500295CD3B0A790DD3FCD4684A
-7C7AC49AC9BFFF36B39A9FB148BC28D37907433943CBBF0CBDAB46D3EA86DC8F81C859C52D15302B
-94A9B51C199B7104DEEC9D769C2634CECF8B700CE9C04152CC59C9326BDACBEC4312DEED92DD087A
-1C4840868D9F97CAC046581F762F75E8D24D6445370A3F1E0AE74A6478D9DAC37E7FA5BEBEC0A1E0
-81AF89C1BBF7F51E3E2E22C8C405E8671BA85F1BF0DF79A465DAC7EC07F731E00632E017D190A99D
-83E27E5C2E63D7DABBA23B2E88334C63721AC5A4CBC5D45F4C177259F34C2EADE01FA008AF65EBC6
-01D8DD16436D86AA94C99F3CC0A2F87134E73BF22F108B825A8963B49C6C685474AFE4A542C8641D
-C0375D7EFE9AC1168D9700459BE52D0DA399023E141969F25C0DAC4668534B6647EC85454BE945E8
-26B26DE6E3C4584B97A38E2B40A0D23481BCA78084FE80E00A71A790BF31DF468A435ECC88E60A57
-860BBCA3D65930186E9917CBD209C230E8F8255A7ABC7D3F043AE4D7AD63D9980BEDF062B7D5C298
-C40225B6D03F29A0339E0FCA02138E526F06B9EF47F5E7A8068A846CFDE2BFDEBD24F5A73A66C079
-18662AEC80B43246284FA4E2EE0D9AAB172B1E59A6CC46B801149D8C0DF6DEC9A55D8E1B0EFD9D30
-2FF618075944CCCB6831D336B11617107B0530D09885E5CA11A5F1FCC8D69D603DA16BEA51116D42
-CAB1AA1E4D7B9B4D79993F2BFE53EAC904FEB70B2D330A89780EAC10D12CC0C35B8399F218AC2976
-E57A26BAD20CE2FA2AE2363D3FD2A8A971747556F2959DA74A8963C20B504711AE1CB0D0C02457FF
-2E9BF696B159AF031DD5155F21C0F5549B0471A3C5DC8918B675CEBCB23E29322B959ABC05283A70
-2E878DE8EF25EA760F3C5C7B7B49D398283DE2ED837FD59F7C22D62C58FE4448B1049FDEBFC8787E
-67D7DAFE9774979BB3802254DA59BCC0219F98C219F84D995CA768B8B5D9D4A32525DFECE003675E
-E4BD5D8DFFC11025AF2B468F9207B5B2B42349B98232BAC0759758C1F4A283405815BD7145C93FA0
-8F3ED2826655053A3C2559073D8ACD199DEA2C5BA5F616A2E48548B4370EC73493BA07E197165DCA
-774438B0766867819C1154D1959FE6E01E6312E0AB91FC2E2BD240FC8652A2D456A1DE7F34EF372A
-53794D4C4E050BF3CA5B7BD2F1B8DE93B4C8002485CB219AD2D029739FD3C81CC6E78EDF38723576
-1A57143EEDE5CC887F282FECD261F6A25D0A7E154ECDF5DC38E426811BE86AAA458577E5E0C5F0F7
-5AAFA9C41E5D1DC9D91ECD79B514F8CDF7A5F1A189470D35FDF4F9B8788879CCBD91B427822ED658
-389E981E0EE5F7FB87692A3E3E931DF8A1D1573E3B0166204240B7080089A09EF7487C9AEE2D665F
-5A82F94C877FB5B0DC531CEBF1E71C6592CEA2401E4B5122E5091DF03D203DF979B9A6EFBA12E2F6
-B422FDF15D49AC0914D372D21E871DE65CBECD105FD4A3E4714B9CCA5C6803FA39DBB015EA8A88BE
-7913502E562E5B170B87BFC8572DC9DF49AD63694311EF1334444BDF0B4CA3245271C1F7A4D7FAF1
-703E3AA0E1EA8D5C6E821B28707EE0C9B4F22F23796FE87356C58AE2CADC191F4C58E1FB58DA03B4
-5A25AC95DBAE13A293474217BDB214742B9D9D6AF35F70FED2891942EACE3E625E55FFB820543FBB
-250A062D3D395BC0F219ECFE0D76686AC148BC41476A887BC494DDBD396BE200FD3E03CFA12EC9AF
-6B934A283C42AA05589AA6B4A8D16946BB51F50419CABECEAEC5AEF9085C9989289E9B46BAFB6FB2
-782D84DE2B068F91A9744AAB237CEB1BA513E57E4C307108E993C972A3E0A898D5A8D27833155031
-FDB98863C3BE7FEF3004CBAA5CB60A1F2E3EB4D7290FF5FAFA088B1CECCB6CF51A58DAAD998F0839
-6CDFD68F5ABC9C1CCB8F6514107773C69C26873E889D1F79D10E866910E4684186FCD71C965ADF62
-39BA3418B313A27AD632300969B6F284519366ED85E7CD968D64823F8C59B5911A72D0A20EB72B60
-3A61E36F52F256FFCDF706B4560B4DFA5D918FBC530D83A4B3C01BDD3CB4572E24242D141BF9E775
-36693A0407D002E09CDA5B195BF1CCF430AE9824C07928A050D0B460F2704BE8F9E647A4884C4567
-0A81EACF7CC038643EB0FF18A376FF6F32B6FE4F197273327FBBDEC6443A299CAD4B26F7778A99F6
-5A11BDE047153E764039EDB251936AA43DEE50DDFDF8856519056AAFC4C5AE6F2051AF0579A9ACD4
-1D00775D7DBE70022CC263DCA5E0A25B9C7C4F5C418587666B2FE24816B1E0EC92F9074F1403BB83
-AFC3F1D52CA79C387BDEF864366E34C90BE52F7AA09935373A07E4E026224E76F9EC3CB9E7EDE50D
-EFDA48248D61F3CEC880A3B8843306375D9711E58645F3625BDB8E87052DA67F9794EF4AF8DB0BCF
-E00677C3A26907DC651BC838C40EC39E2B5A5DC0DBD345944A6C32226089D63C52490FA10B215AE7
-03CFB663EB8A47793B84CE7364DA1C4E7FCE32DFEF09490121222774915BA59C78C2275F829D15CF
-4D8686B095C38C731B83D48738C25F40B8ADD487C350A2EBE846C3916AE384CB1050F9F5DFE09FCB
-D9129C6270FD86D55A459618FDFA4F907E6B4746196BB717865AB378414029017551161A52E9D24B
-E4F7EED553A927933D4ABC8F25DF607779A717909CB4D810DE8F5762581900E224E4B91598149BA4
-71CF8068ABE8744356B261600BFCC57FB8BE45036CF6571D9B2A95304933BD4F17215F8EF53F8E08
-1AF61FA7F9583C34EB5655CB0ECB82246959F09091F36989EBDD646BEDCA614B9A61AB7696B3FF18
-1058A150FA6EC1BE2EBC7F64357A3FF2A2B0491D2F4E0B970DE5B7788B467CA678039B5EF55C88A3
-84578D427FD2CB16C87B0BF0A3D37CE8ED43E0F049AF2436344D5F47C948C632C94A287509282561
-6C64C5D262FE5B24916FFEE982A69A6CCF888BD01D62EA591EEC51F4B7DDFAFFBEEA93FE08D736C2
-0129E345D06B10246A5F57151C198D407730713F32299638EFBDC01367E23EB59AAD42A83AB41B43
-2DB462652E29813740F4680A5D4BD47B18328FAE6BDF4200CFA4CE3773809B45E8887C9B2E423698
-9F6C48D64F5986F563D9A7538A8716082F81936AEBD0461E6F4BD470436D8B7656F0FDF89108E6DD
-02ABDEF907731D458D690BC608EA9CED09EB1E6E64C0790C7A2378201CE997FFE0317679EE1D4EE9
-F91157449323E53B4ADA8096CD628B5861BF794543A98F2FA2AB54FF0F25A13DAD43DAF9394329B9
-5AA53CA32749FECB0B2BC035DD1EBD53FF9FB5AD8BCE06CD89E5568091C1CC314CFB1D9821D7F9AC
-7C55F55E0A16E39A87D43148201B928F3C42B110FC056189DEF183745F3B637441DE8BD4C3C7EF12
-F4258E306B2877ADAEC63441010750DB4E6269A4C78A0AC01BB3603C386651FE814031CB5D8C1F14
-9EEAFF652A53E57BBD4C8C0CE36A84A319A53BC1E5FD3F1ED1EE72F4C1A9BF264B594062FCAFB22C
-C1FDE3F2E3D3C17DD3F7FE0E15EBD812D550227C06D01127385374A11438ABD50048E17255FCD2BB
-85122A6FB9B7DA9D5E9DE8A747FAE0DA45A1FCEFE92B9E70A5B2CAC668D4D07527A5C1403267D823
-048BE671F725CFC7474B44FC5AAA348420B2D7C23C6CA066666FD6F2208E329878D90CEF1C2E77ED
-22D3BEBB9D547810B189F08920A27E7107F208591A84D463CE2576C70C3DFE6643E4EA93F4E1DAEB
-41D46F0E2F56FC10C69AD5034FC9859D31CF27A3A1EE256C93111F81C11ACF1FC0CE20B90BAC9AA3
-27A5C85A7985B951519FD4B03C40BE637162AF41B2FDA68F0D1E9B7602FE2659D3D75955C579AC51
-DF6A552EB9581AC3F712F083F19B52A6C4F560F36C59CEEB0C996AAF1728A2AA45DCAD79BD7B23AB
-388D5B0B64A2B95154B6259B730B0F4A72C8C7F7CC93C7D64D9D8810D1F63FF8ABD4DB89824E2D26
-4FDEE916C41E299211DB1A53256E1DB5CDD04862F034D9404B73183A99D3D13D642A663F129B6D16
-7095BEB4EAEFD03DF2FF2F0B6B594C1EE90FDB203DA89FACEE23F1BA3901FECC75FE1811BD701259
-343011262B6A0A9707AAA6316BC3C17F787BB80AC8DA5AAC942D90F80C5A3BB59E47EC767244AA95
-C63E50BF809998957936D3BF6ABC24B0A397258F9EB4DC8F65692CB023D9091FB180C69498CD0C08
-BBEBADC84A7E0016E8F8BEA325D924EB0DF82E75D2CC2CCBF039B11934363D4332C5FBC5EC556BE8
-5EE4E707CC2753CCC43D2ED50558E51A104221C9323CDCB0199B7B83454DE3FDC810D0F362C0299F
-5DD981B31D8E3DDA284FEF9DC8F9C8DE138D3065437A7FE8C30572AD06D62E8527AD37AE39AAB0B2
-25F76A25F6C6505241ED73BA494CF923E919F688DDEBF193E188F8C4C154F21631080763B4D091E8
-AD1D2FD6649E0CD9360E8D1A67A5B5FAFC67547CA31C95A5EA8D4EB5D68B9F6D6532DB9B54584735
-9558542A2AE58C09F3BD2918EFBE1699E9C8F2C2A11EA4D224C726D2ACD4A8D8ABAEDC6588CF2AE5
-66528B94F55B823A2A1F7BE19000F3E7579D094E047075DF18C8C868760295533B26EB3ED90635B1
-29C17ACA679C3E88B06998CE5A7A2544B700229F5A6A504BD3E45B276471959C8A3F81917A534287
-39B5EF9E3D463B3BA7318448E2A3E79520D2D245A2A72F31FF7070B6E4624E3A5E216BD103640C8D
-F387E49D732529C611F8B971073F17EBD2F6EB18F9B74A67E1997926DF178D4C9EDED435B9682F1A
-279C81BB9F60DAFE125845A2FF3B02979E5481C78A45C479BEFB9FEF3CE2BA9BC46C77B50B03E48D
-A6D17B76F06F3AD118371ADC69E178C52B5FB4B261C9311874ED07DD6D5B3226A005FDD7A6D53848
-09E7063F036CDEA41619122635E835D2D74CBB6AA9B38CAA4D819C26E95115FE0DBAB4198FC5838F
-2C91B7A87B07D734C6D4F4F83444C1E90AA9BFC908A2BAC4B3DEF9157AFCA5248F2DA31CA87BD363
-AC25E9E77F741D4B2C6E02F04987A6F49D30E9038CEFC41BA172DD675AED8B392164411144E5B738
-F3210B0E66B17A13CB9631C33D44484E792A7C082DD0A5382F34C5637653261B1EB6D2035B08B4D9
-1FA9AB770CAF40A103629511F7B43F2743D7E583433DECFB19C21FD4FD0AFCC22A4119E77C87BFE6
-FE50068B22479015BE5A9F06BEAB4D37412E062A45E0CBCD7BB39FEE747E96306F79FC4F2E8942DF
-5D9DA0E55AACCDA547DA19D30B8404FA121298B44C9CCE198C708C69A8D6BF17591C5C50D3FC5BE6
-961F7ABA8F366DAE957A1C3730DA4A5B4F035A9274675EE3BBF0CA8CE9D8349F50CABB1C3EA4948A
-BE6F9F143592F1EA95404E6909A909168E3279A957AE1924245C356331A75E7008BEE92BEAA304BA
-40B7C3F48F74D9018B3247DF50EBD7CE541DA48ECCB1B0BE51A455C3C13C279D4D8676078C3EBE43
-08748D52C9B041D3E7244C745B1F2F742D010A9E60695F3EC4FDC1050AC082B905D6A57E8F407A3B
-472F731011A5798965B7B1A307E252FE02C8F79CEEDDEB6E165F1A94D7FFF18DDBDF79477F14E9E9
-3981ABD200FE7771B29D1D2D120EE79D28B9543818527039AC74085EAFF241B56D08220C958B5D9C
-87C0C04A14D52AFD475B542D391BC54FF33DEF8D9484AFF6873BEED32DDA4B371112B523B6CE22B4
-0D1B416B64C9370F1CDF2C548F4CCBE9E12E21C36CC3EA52DA232DCFB65F66B22B5E2EC04852510D
-5E264EE939BB67AEC4764B87062AEB7F680B40BCEE04AD45C7519EB3B6199C9E0E332661463647F2
-FB7EDF303EFEF84891CEBCF0FAC5F723A9D0476C3F8C092604C87FC69C7A90F4D64AE45A478EE8BA
-2DF50FB93F55A3546123F0B0E2C1C40C98EAAE9F0F26B8F80FFE6E6B94B7E27D2884D58B8A119662
-2DF6BE608C5569D7864BB756DF2EDD184B90812B44ED4A32D001C31383A40AEEE9743651F7950846
-15C48E402DBC01C818D477EAC0347795CB2792E9C11E8FD4A02E194EED1C919D4598FEC003B6D9A8
-A0BC7D456047A1C0579453FC1D7CB2D158D466939A23D7A7B8ABED7E2777EC7487973E73F2266D9C
-250CE30729E3C5223AD93B9AE8443B35711E446A3DC660123ED45CE1942A1A2AD0610467E081CE2C
-8B92A6C82F0B17B5D2429E99F1A6268072C6B5AAAA6EB6283A872C54D3694CD825EB2926E57DBBC7
-C1663075E687A144E4D61C225781D80FCAE1497B442342B4A3F1CD6BDB50E31791CC3928C30835FE
-F845B6BE5E2D7E3F2F5F085AA3FAEB45CAD0D76BCBB1ED859A9CEBB9F7457036F0BC3F195CB1A98C
-9C8648F6583CDBB23894BC719D68C2DBD8003B10D08C8CAA40BCE784D7BFB4EEC9EA5359AC056E57
-B8B0F2EBCB1F4CE40C87FC7861180133E0CB6CE2FC4FE690756D327A2B5AE063E3021C0C0BD420D0
-56F0B941E6B36088A55BA11D0C35FD0132D5F48E5D9673572347171B4328D4807B972831C0D74CFF
-A5638C145B89C989E6EC942148207D6DB82257585958034D9F9D4221C7C9F7013790DBD130F277E0
-BC88BB179DD09E27062379ED06F25EEA8B7FB33C35861A0034776E3813D2E9E5C10E227CC569AB36
-CB2D9DF2E7B7B44758F9DC4FFAD7A24AC7E9F47AA850C221048C3CB35A37CE8EA75632AE65FE3212
-175146FECD6334AE3D3C5F492F067F795E1E8FF386BA198CB74F0BB4DC0000DA383BC4CC3F070DE1
-7721431988D69C8B1A5AFDCCC83C22E16A87E01C6D3E79DC7AFA3DB0371B0866EFB8B6F88900472A
-FEF1C4A878243C52D4E02E82658979731C841C489A6B97E271C4C93800EC7D91F93EB9B9C659A554
-E1FCE42A5EC65AC39190EF4B66DEAF6FC0569A000A9E1495F42F706FBEA4D32EB7EF11A648910259
-6A65CF899C2F322F5679C6D123469192A9BF1A7F1F2C81C554ADB97BD19ADB746A4F81A4D5559E60
-AB94C483DBABF6CE2F28CDB412D50FF3FCFA3B3DAAACC6A83CFED910CCB3B8D2C19590AFF4D75303
-4A6CE7F4156896A13808E0DFEAC547E69D3C886691728E4A35ACD575B40D721E8FCC5385A2EB28D7
-08101DC50811529528F5CB0C009BA7E3C88468E37768FB0D83895AB54DB2DD5426562AF9D8AF304B
-F6EDA54E9C92643DF926F5C3578269750120302A37CB140A18BA56BA01108D4ACACE8FEAE640A6C6
-958EF156B588ADB0EA5F3B0F37BBA12B7BCB221C811415387B024B7076FA4403A3AD6EBB5D9C26EF
-EBDB7ADE7C60B444AB9F90EA493B658B7767AE2BE649BDBB3FE85F460F1ED137C61BD95F7CD3D8B0
-15CE45138538930AB62AA0E54B4CE1A5EC5FEC0A2B28B345B67089A4E4AE14D2E1F5A9C8848DA688
-CA298F93860649EC3AAFEF3E820D86988C8E3E5A4D4BB937791827994AA3E81D0BB3EE115EC36D5F
-B9A392D09E79AF514D11C7B3A03C9F9C13355CE79E119A19177FFDCA34704D38118A8976D1EE5AA0
-2D14FEB1414419F5E85244ADC5C0A765A522EEF36170064BB19FEE3B5F7B441E4DB967DAE0BAC2C4
-8FC6A836E0EF5A69F073BEE1699F55E9C757EBD6FD8B514E2B49D6333815B7DBD1E0694695FCA3D2
-1320A0C4B852D9706DADD8369A95FDD917328BE93DD33818954DBD2C212D2CA81560ED5BC284EB04
-7A5F389E24E43F4FA8C97FECF46589FA7341076555CF55B1C21B28E0C1CBB00AB8B6F67472F27BC0
-D11148F407824B0159B5188D4BB7386FBDBF1C0FAF34721B7BCB5C0FCB7C4010DCB6A1284E9D7883
-9E3C2111A05D29AB7997073B590A81C6168020F1D48951BC7D8476D5BA593F4F23CAC1F9BB0E091E
-84B4E99E5C584D1370DD12DEE8DF16AF8BC6B7B23E2FEABDB7F32779AF8E2B5094A6E9B7A7225F24
-C43A8E5D2B977E1E19E633C26771E23017ED233DBB02C64F8CF03992C6484528D0C8464B46F24F9E
-8380F385D5D01B8893C67FC103498983CF939432AA380CA576D09030CD52FD99BDC3BE16C7204CDC
-3365BF76294A83A1FC14A236F5FE5321904E779B13232A76F8FE521F425562678436359C2461BEA5
-AB27209541F557AE2AA60009C9CA0A9FC7898C14306CE35A50017BADEFDECBBF94EE2905220706DC
-806409EF87DB1D73EAB0698AD2DB72CDCDB293E7FB13C94D9FC87E74502E6927A212F0D7D2F2D194
-64F7A66AC07872E18CB1DDE8F11835DCBC5C4EF039333FFFC0FC1456DAADE7DAE3EC2EE0D3415B0C
-ABB69FC5006F4D14A4EE1A5CA99AD4D5E629C0DD1E0F097B5B93DE2DD001A8C418234C9C45E8C13D
-1AE04E9466DAB8CF1ECB88A4E059C111A6468D2DABB90DA79C7C79E94DB28F6968B1A632F8C57D9E
-565FF91C6916026FFAC0661856B9FB8DE9C81661816221B1FC159CFEF1751E7E403F5F2CE32529DD
-540792FC17A12A3DCD7C50D38EEAADBD10ADBF5D8A82442AA900CE6150EB7A4639DD9FB6E385B2FD
-093493DCCD9014B23EB172E21AA89643A6CAD1093343D85D81261972DE0ACB16A4C6B5F0BE4C978B
-FA12D3CAF0134F9EA49F6E9687C8F99A456745EA252F0BA9968C7F9586E3DD841AA92DC7705BDD68
-2DAE41518A09DF0E209F321D7FA3417202F4BA76A984DA3ADDBC58136885362F02F0A24EBC439B3D
-BBDACFFD8498EBD29F88F016B1FEABC10785438EAC860B554525F3266097A675299AA0967BD3B7A0
-EEEE3FC578D1BE99D3533BD91571AED904BFC9DA1A1451FDC5406E1CD614E0C7FBC733563CD6CE6C
-C31E9237CA153F1F0411114361D731636BCF98555ABF12848AD109371A42B63675A4130B81E97C2A
-2EE2BB5D8FAE2640156001AF0F55D9D5DF8FF23C8AEFE14F120000F14149A36E5C94CD9081DEC277
-C2C34870D05011F99D48B0875A5FF542F067F7E9880109F586BCF2B50522A1F23ECE44349E539E70
-F84E207DC9BEC7CDF856A046F1A03226AA41F541719AD1AF88FF211E57DD0C1275DD0B7B47440DA0
-89B98C6EE92A7D94700B83CEBE19EAEDD8A615F6587587BA8BBA3CE3AA5E8EAFB1FB0F486BE3609B
-169EFB178A4292F4C0378AFE5D24EED1CAAB514DDC66C696D8E37F294A6579131DDF5488E9436609
-ACD750C3DB0A940C84FE022B22ADC2676F62E91E8F891225F891FBA537679B24547BBBF35F04915D
-20B11739F620D18B5B216921D222F15044368569AA302980B9225BB839F494588481B94B0C724352
-B2DF600A22B062561D86CB8F81514FBDAA4F8A043A0265F992FAB71FC9124A45B8475E1EF3DF6B6D
-E35CF329777D45F08325E8505EC0D979F542807AE77E57E453525F23BC59A50740371EFA98678AEE
-6C425374AEB745B99DDB5D8D908FDB551FBC0DB15832107BBECC4E11A1A8DEC69358A574A2ED46CC
-31D564549EFF23102D92BFDCBB2BB985F78F36033E34F59C0EBAFA3BDD71338736464CEFDBA91398
-33995EDA4207BFD4A9867D32E867FBEB7DE60D132803EF9347CB17BD91315484EF6570892297DD8B
-7D966103339535E28A00CB1EECA4A9775F60A9F5FC9BD8B06D78FE8E6318C31DA2E847E3F9CA587C
-B01AE2BA0A2EBDE308314413F4F230A758184ED60D4F71F6CEC22A93A01B6C54E0449A3860FCA895
-4A347B7588329A80974ECBECDA1070FBC055666375229F13DD995E99265DF870BC8B8CC6347FADBC
-1A6AF64599271A475B9123493D46BEC41289BEEB67EB97A8DED7A9C9730D37C65164CFBDC22E5CA5
-89D2E7954C7136EF4E084C43A6C7F361A3E96989239BDDB9A593CC2A80BA16DE9EE90E95CD39393C
-212AB22EECB677FD36D34DEB46C4AD0D21BF7E6D7CBD0C8083842FCD87B18FEA7CECF939987E99BA
-34C214E44DD84C176C9CC5A4CEA76D380CB316BB4EF9DE73D73B4AFD4ADB54451591DEF86621D138
-D5A0A29441502BF6C2ADE671CEC3CB5CAB903A657EB2D70C943F976C110E46C5D9D29BC00A875F27
-38E5D22496A43E096E009C5D3CB724B4CABB32838DBE527F83B18CB457E57B092C302EE557FD4F00
-DB9C56E66C9FDF4EC9FFAAB85F60D02BA79694FABA476A199A0331C30A78A92E10417BA236E23364
-8174C826331DC1BAB87C5F95027846130C6A2B4027930EBF9A97BA1B039D386FC51C302648E25980
-212F6A582CDE2778C677A01FBFB3C5D1B8A374ADAF6ADBF7DC94075F25ED66D440B3922C5F255FB2
-3FD8F6E21EA65B1D93BB225684B50F11310E242B087575973345B229BA62C1E2C35BDAEC04D10148
-F5B2F3BCF7399BDFDF1F3F79119714AEA697245BC647316EA157484ECB951BE367234FD02E8B1F09
-1AAC3D29BF282DFF4011BC0CBA8E55234D943DB3017CC7A766720BBC29B2D097A956C0F1067177F0
-12D42ADCB473CDE8D1BA35B4030757FA1D8211989DF3BD22CE5D501C21EF8708FB3449DF47D88650
-9FF7B59B76C0DBAE443F336FEE2D615D7EED1C284F14335BC8A26BF4621E10DE9611FB2F1DBD52E4
-B7565D8C65B54EA36D508BCF0C578A49A2665227CDE1F9768EFE847F9D94F1BBB7DB83701C232198
-5C7283D47B2E40B27A268428AAEFE75F6B2F8764A8494E5827573758CB9CA46FA93208836BCCC8B5
-564A69F5AD882052AF1C1417C3FA7F580569528682C77080F3688B65E7FC24D2A3AEB61574B4A321
-5927281544DDD7A6EE0A3E9388F8F631CE7251724DF70726E5912DDCCC8C652DD6C9608F8462303D
-867F589DE0F2F71711B35142EE6EF93B64D6326C4DD7DC83278E057100EE772082E6BA368ED91A55
-53ECFE2293A481E42F83BC8F9148C70EACE91F7B7D9CB8A72415BDB3AF66F68EA733A17ABE9DB005
-3BF148629132969589F38D30EABFA96A01FAC72650B5A6FF3935670198A1EA33810A9B11E330EB8B
-451F24F93544263436F669AB5A90A53B16CCEEAC36B1445574EFA7E802DE73522BE725E68704822C
-B7D3912717333367895BBFBE06966A5CC653AAB5E9B3596702086BF0010085B900711932A95ACF15
-CA4DC45A754EA334E9EB84D6FC8E3FC4F897456BED64BB93B593549FF0D5352275D8E417172A6664
-C5E0ECED1019494A7ED49AB0B965BEC1A82E5873766BB38D7D856049CCE2FCA65AAF61E961B60634
-E2A69EF059754C9D8163D87F928C222772D070D83FEC6FA5AC734AF65E40BFDE521F7D9CB1650FDF
-64754BFF21EA3FF0AF7611A93D525EC9B28C51AFECB04E7FC8323DD6C9B0D8539A34FC3CD8CEB795
-8E8EBBFED4313C77ED469C199552A9FF70BA5423B03B6148D4EAAE17B71C5B39DC436AC53D6BA8A7
-AD81AA8B02335A8B2B11E9F4FA913159A725B8AB60F52F1A2EA50EAF4D56656E615BF382CC68A690
-BF83DFF24FE986570ADC0290ED1A37C1C2AD469CE789E0EA0BB5CE01020100E729721AF3B5BADD33
-A2DAA6C33EB8F9064F5292F715F820B4BBFDD56F76D42E7A1A068C1CBDCE4640082F6E7D582D1939
-990CE6EE8D270015A2C461798B37DCB5798EE9F7512168B76D26C28BE4A49A1BF96C89D235F21A1D
-B6A96E5DA474D0B19B808D13D7A11BF39EA8647499C410ED9894A1ADF33D41B6FC2E614D8087F4C8
-4E437B136F3CB32DB8393C49177A0675A0C9E7EECEF448A97AFDBE840FA01FC7E5F2E8FECEDC1884
-84C312E8635CD79195475DDBFDD4D38D5A0246DE2C7F21608F8D2C0DA1371D302E941572E5792A3C
-F4E51A33228B93A814D03FD4FC223C314CF3714BB3A34BD4F7ED6348577FEED9DEB082C4049E57B5
-D3CDB7F26629E9F3BA36893E09E3C7463D02A22D7056BE76B87763260E46E48BB832B7EE13F8DC05
-37EC8E81E9BDFEAD8C27EBDF1AD706933EFD11131E12814F236EBB01BE85B7F1B2D627413B324918
-D247604F56EC128909873FEC3857028BEF76A3494364C2A7002D104D486236C30B48E2B75D851C34
-EA50BA7FFEB4E19190898AE21768C157C0CAC628A2181A32796FBC1A7271D2473CD88E5395DDBDB1
-FC3AA8DF0F3D588637F19A8B833AFDEB5F655A8838EECD684E2315B72C75CEEFBCEF94344ACE8D6A
-DBE355008EC72FE7CEEAB01363A895F4E73F867639BE0A0BE67333848816B05B419221BE8F9066C3
-62C23FE85B7F392930BFE4C12B9526FF2FDEC38F23A159ED61A0718E7115C24597D849FA76369153
-54A40C965D4D72EC94DA61A03766AB39AAB684E134FD1407A5B1B19BFEBA52AA0DA5D99CBE5C82DB
-AA663711E6DEBA180E1D4A39C320516A4350D296BC19BF1BE054859A0889C7E9727A021F3176FE62
-0FB0C837E4141FECE531A950C03D319E3255703220B7185BD20FE5DBA673F8129AB211EFCF36EE39
-4C7E00EB0876624BC840FA86E58B2F584754CB6BFDFD76810E300741EBE4544E5AC17413ADEB21C6
-2F66CA4F075C32381796BA709782DE34A675B717A2C7F6D88104CB924FDE5DF775B4F0B68E0E2E5C
-2F788BBDEAF06D8E1FC2105CCBBD5827C0B03FD6CD64F0D073F3192D5F94839644E5EC6C5185BADC
-F04112A65F49A8C83174A9AE958E76A2F5AF469E8B76C833782C5FFB8BD7B1BBBB3EA0CB7C9786C3
-BE2ADE5E7AFA8C8F20892659A59BC421E28845A108E34EE17864042EF587A6D67DECDFB3F510EB40
-D2229585347A0035670FCC76C2837A4E4D68304FE113C539B35C1F0234B5079B8E32934546982978
-C5E4DF955A454EA263C3CA5D7101F31A318D82A3F9FCB5A8AFD7A65209663B0FC9DA400B26F285EF
-46D0E1EAF8ACB1F1CB805E3986D04BC585073FC64895E4DAE1CCB749BB439CB32EA91176D5C39C36
-50D10AFB9C9884D5FB90183424CEE67EF2175D01D2478D67511EC9F54F88763C152697B06D948BED
-49240096EEE3D06AB4575E8E8B2CB8263B5BCF4FA1608720F52B675309833071879DF52C3EC2871D
-20F398B5CAC8F8A4D41D0F1D47584DD90DCDAEA4A1CF160C4B3BF1AAB890B5CEB6CB3488672AA68F
-BD938281DBC1D8BCFE92FBF514DA5358443CB6E0147254E91B38CE6787B2BB0DEDD2D38F5938737A
-977B5EA42892520C58F8FBB53C994B57382379E9490F0D6970B980E1BDF8CF9F4C3C5E0A18F66E86
-EE93FFE7FE546DE50F41364BCB3721B637072571FA1779F1D672FAD260C16D7F13CBDF3E4376E7FF
-56D2A710AC5AC35FCBDBCE2C9C17E523BBE6218617B13C1FA6679B308979AE7C61DA6E68369324C6
-CBC7DDEC364E5A86707266C0B459EE7B2C03FE584E529BFFDCE98C90A2F3D9305AA74D3ED8430DBF
-3A49FE2ECFD9C4BC9FEFD22618FE9C8A973AD072AB6F713E4DF02DCDA7AC5359B2D652013E131B76
-B3ED6C75FD53BA58D862846264627F6B9E70D8800F6D9B32242B747A67BB2B45675840D34F852AA8
-062FA6B01E31ED24DAE02F6CF788A17F7B9368175195DB0072259CCE0FFB2C1035C1D26E1777CCA3
-D56A827C3242069E76D6DD69B653768614B9ACFF16567FEA61508D51454BC02F6C60F755AEF6AFAE
-3536BBFA1823F8E1A53C41124DE983E51CEC92AEF4F99785D554488A51C20885346D1F761DA79017
-940A0C557D93F1DB6B3D00FFD61D08E96FF3AFCE5FEDF545CC9F47A2B1BB26713431D6D1E47FD6BD
-6E3C668B0368241F0EBB5FA9C991DF79890E52E83A3675EE699B61BAF869DE91F67278F510061C6F
-E41DE2D883F48CD0E068E2A652B244128D82E5CD52F35F210DDAE3054691ED55A7D99088AAE8FB04
-F525C2084AC09F5EDF80A4EFAFE981F74C0DE9D194320709B3464F3FF2C0F6AAEA6D973D9C323F53
-DE3D741F698FBF01036716BBD62957CB32CD81D3A2674560FFBC5BDC5C6E4F547E589AD0B1CFE14F
-5E17FED1C4A8ABE4E67CCF8A49F32C4C6044F1431E1CC382E7758722A6D0DF9ED23E51F8AD14D11D
-7B6428E27443715EBA4E9C05D6F238378F9498AEF0E7EE4FE6856622CC8E6ED141EE5F109E343CB6
-695C4BE1E0F66601C27975983BF557C04ACFC19227A1AD7E6C44C00529FC7EDD7F886D24B7E029B9
-C395260088BBFB96972199A7B32796D27257DE83A7402291C14FECDF7998C5C96B1EDADE0280F856
-8A8F5007852EED303969180B3329917973C2D32C080C9765B6BAB0673BC7ECFDBBFBEA980C263843
-39B7F1052591D91667D4FEE413AFC23DE2D4B9DA742F4269C6C939F5FC32A38040730A018155AD73
-3F231E4D5B9D01C03A58EAE7B5F590CCFAF25EDC8552CFC8D95C60EBAE1837D7A97CA137E9D4A4BD
-2CD34AEFD68D64B3F4F62326AC429921D7FB3C235184FE0899690A0B775F1A566EC29D5830D32372
-6526F7E7F5AFDD71B77E07613DDC4FC63EDF49051AEB59E6337AC0A4B6DD872E776C9CD0CCB86130
-5322D816732124F5978A86C186BF0A0F88E733CE38E4D7C1BA5378C5629B1EFC97806059990ED42C
-5CD183BAD7E94070E4058569DA2E51831FFE0D080301AEAB4350BA290318AEC582C78D05DD92E5AF
-B4424EA808629BC972E68F4FF2489C245593F07555CA6A2B25964794CF31CBD3AE5C229AB9B8C298
-06C01D116EBD0FF0F159ED2D3D7DFC73EAB4910BFF5B0B0B587CD9EA6E6FC45D63C09766224D8346
-1F0588140B258B1729F70BAE7962189B1554483392988CF230AF4077193E53330519394DD99BA135
-6D4730AB221DC6A66019BFAE564893DDAD7B177DADD16ADD21D396CFA6C3DC818052E2F71149FD59
-4A16DE0C2FFDD366C99B486C55A6E991E4D22CCB15843F0C3363676AF2F5B2D1B7EF66CCF2F12DC5
-0D63776BFFB058D70A9C76DCE96C754872D72C82A0C33F90D49C935402CDD26B6D743B1F43BED5D8
-B539424849C1495DAE73044E885A7D0F307F1816DF6244A6F2D97BFD4E200E93F69B08AF39EA21E6
-E347A47CEEBF803F73B978ADBFCF056789BB8E6E2563DE87DD9A8C877157B934102DCEDAC54D487A
-1BB2694F0034093C48F10A17D32E2BDD0C723CAF59ADDD1BE373AF8C9BEB4415AA5AF36310C31F24
-354A53C0B962573148BEF91D994FE3F3D8450DD4D686725799F53C373A0A3E3C060C2E1A3E800504
-9F26D716E1F381B9F83125E4683264A07E2D8938F605978E2513DD2050B3D8A1012797CBA8961632
-BED260916338A812AE751C7B657E086A0C7DDCD3BFDDFF3E48B84751925736D1310C4910FC114387
-F3ED7FE163F91895EBF55FCB425CEF5729D99BD8F2C072E36C310523E75CD8E5DE49C031C4263410
-9D56E91A46C8C8E89FD92012A00C33D0DEC52597B5C6933291A7BDC5CEDA95DCDA5600F9AE1C8250
-54E7EE1067458CCB66610704C58E4A4FC0CB5FC933D0322A716B2CD430A3AD48DAB3D4CBE9D23F2D
-092368CFC4E1F5495C133A92942EC62118D45C17723646E69407B4A89DCDFD2AB3FFC099A21D9D29
-741D68270629AA3A414FE58658DC9170C247B6E23F35C4BC5FF83009F462F2EEF4DBAC5FD158A658
-57F9B6DC1F5192DFB169DCB65621CAB2F1B07BD22F4155A8E9E2B6388D430FDE5EC1C834D22EA035
-C52E1E34482EADC36B4CAE902AAE89A7284E62B3C84B608D6BD05F75BC31310B2DD3B2C08A00E073
-7F104F03A41989D5F6B9A2C38B22F1D1803EE5D7A4D8DE44E4ABD496A1DE0C0E12C4BC96D0122846
-3F0EA9CE9509FEE987139F3DD3F9D0DF4313F555BE85433718F6D05F197C41A9D9C7A8B0D2740196
-82D49F58DD5F66B12A6520D9F226D1DF1F1B65CDFA261F980CA25A92645B86B64606293F8BFDE364
-C47D2AF2C709BBE77A70A5712F2CC26F3D66F5BE2C307A48E6F887F681D30121E32BBD87271B5DC4
-615D28C309F15AD263FB37424E56DDA6E17B998B45BE6C7FC6C28E3394A8764C9EB2DF5C06626593
-B5C665D550D4600172791CD208AE9F37BC082B0B242B0A504B751B18F4D7495172B697EE217834A8
-A4FB7CC16D6F9E8BB400BE8AEB0850960283DCE725249FCC4DE97D9886745AB6066C3E2F64DD8AB7
-9AA11667F11188D7965DC11EB760B772E282DBF13249F31986AC6898FEBFE23E3E8B8D2C33E00EA6
-FC493850ECB2E6D831D1EFCA3C2EC8EE2E394599091ED58BEDE97D7A43B6F739EB0F845EAC1DF6B1
-EBFE876009CC5D804B15ED4B56761B3CE1AF59C07B49DC798A44532297AD73D5101ED47F36A3678F
-818297CC27F6AAA2AACCC9AA9B6F5459911D8C56CF499E390AE607F3790450B2B9C9BE0F006EDA0C
-715B5CA0481734CFB0597478E7602B0D2C1E4F78F03C68C17C70E4B42D7D2D3C95CF40F73488B371
-8E2CB05A549944D86944D78724E266C3319AF89AE430E777E95F0D792B1C654306E421F3D63A26B2
-1E74B6E8B21B2E2B9DC596D013CDA16D08E65E8F24A84B12B2BADC653E6E1110DE2E709C1C1BED13
-707B70A421B384F20CA7A9A9D20324DD383F28B2D3C7A9C53F5D4C6B7C378D26DF11CF55238BE1B2
-4FA70DCC178DAD3D35670FE4919085EB1CD905971D76A368FDFCF9D2F0A23739851A3A6D2E02D65D
-54DEE69ED5D81315D3EA5E356F94EF256DD267FD1E1A9EDC9CD63E743F299BCC4A4506233B8DD765
-2CA067F741603F93250C087D368F9E9CC4CC1A6DED567487C05BAA992B0056A77F630A72008E3946
-15A9DB24FE56A956650EC9DE90A6C2259189440247970541CA198748928215C0E132A81AA13208D8
-63C1FE817F70CA573B54577D10B73100AF8EA088208A44FB92ACA314AE5879706180788C17BB1D0B
-81B6B95A1C4E0F9EA66F9B39BFE12444A6446691A7BDB03E0F03D9F07A10A7598F2166F108529F34
-CD90E601FFED3479ABCFCBDE8F051C348E48C61D95B00C59EA1287423F05666C3D36288844067E83
-E14F6B5210842C742B89F13ACD126B9FC50ABE2CA7D7ED513D43B6AC7F41EEDA416BFFFCC5C844AB
-2D23D4DC09B2D510504CE98D02E72020D9E669DDAA344C63A1B75632F912A1C0DA3885DA4AF7E243
-E4A4C6493D6595BB6D56B0359106957259E59E336BAAF35BD1CEC5CDE735272EBCCAE8D4904AEBD2
-B32610C6FEA2B69941D6542ECB44D71092A3CF067708A3D087AE99FF29671AB7DD8758759B971A08
-AE1BAD78270D2FBEE37AA2DCB119D72F6C7B0C8509018A70D0B0BE2C6830EF8E0B24B1CE1141EF87
-3A4D7DCC501F808BFD94E4DC0F2915AA023076BCC8006490A43685EA25AAFC187302EBDE7FE1965A
-04A5A398985D29F08E085127B56B057334D88EB638A4DDE64AFD204974C3939536B1B66A54B4DB81
-151853915718F70813F096CC1B0EA25E363B49264C2AD17158A4489F91453FBEDBDE15D7B74D7F98
-E81DF23251785D58295BA297F295AA6248A912CDD4F1111E6B628EECBB5139709E76EA4AB743CEC8
-26621D08E6BC64691CC90B3C3C1778931A28D3D5B1E20E96C643316613FC487C9B604C43463FA453
-3BCA1236286E6F5A6EEB2F1D9C34BDDE4595495A365F88055D9268541CF1654ACF478D384A5496A8
-772EA1402751A093582A6625A0A44816B5FDBE166835D598644296249B92CC90AA3FD6445C9A19BF
-27F59CB0616C7306070F33C7DF4E1DE64AC8C5BB2FFAC1EF2B1B30E5A0275E6004CF64BBE2C6710E
-DCFC3AA4ADD60106334708862FFA6652825BC84842736E47AE6917180365C75B27505EED3C6108E9
-898A780E20C3F606A860229AC46D0471ACA0187D6D539A1B8820F620F72B41AD1D3BF3834BF48CA2
-AFEA8BF535AF74C4562DEADCB63D2F5C7585722B77C989342D190FF926C8A5263B4F25286F99CF6F
-C62EE6E2AD61C82B29D82468AC10FD27764278E5558CE8B41BA111CB2F040914451A480C93084237
-CAC8F66BB7C6689F340B8ABF0150E06D5B1177278A4C08742FE22F42C28680F190900344ADFA486D
-59718C25D37275BCE4DF981AAC35D2C7E85C72A0188B8953CFA516FD545AEE0BF4B8BA301CFDE214
-4241FBDF3D204E3D2823301572E23F204C97305A82401660E12926EE7BA6EA1A81FF5C007933AFC7
-3266FAC4C134ED818A48E7DA01C71A46335C845F9DA5E960B25339D551582B375814148D94CFB781
-FC56093827B78578A73D4FF67B6B87F40CFA5E3F4325D9108CDB64BD06427B88C84105187316FA29
-90B4E3E8EDB6C78ABF164F4A9717D523794B2FE772A04DABBE688CCA977090979B5F47CEB90A1DBC
-167D305EAB231C9F4260C4AD10889CB785169902FC0BED78DA15B8417453BB65856EA0BEA5245BA0
-573F623D215F6C0CF801851C305B355D26B52B0B343645FE25C78A3526841EDA480919A1BBE5F56F
-C10ABEAA3E1FCCA7C43EE560F067F1AA2AFD642F769D1ACE8E2AAAF38850F0D757CD808C921D716E
-96FBC07DA7860DFA70CEAE2888C0ED3CBF9586443532B68DAED9A926655C157A416C383A53D8F283
-2A4E67468112A09ADC837ED8EC95F70852921F50D4417239FC42EE3624CA97F682745CC5E76CC7C6
-7BD99F2180F8C0B7FB49539C8CC474C25C0DDE491671FF329E51BCFA779346D4686835A3AD6633FC
-B5E0F67E0CA9CED8F215BEF4D240453EB2EDD6ADB22278AA5B985FA140C9834D38753DF2014F8C0E
-E6DAD19E8FC54C03C1F6CB0F858986691D99592562CAD95FA0A5B2ABE4A8B54B457D42E8C33A2D19
-51C0419A72FB94FDA78ECD92BD2A1416459E9DECA9469F35E4C47DB531726DEE8F203D7042EDB32F
-025DF3D582547BB1D45F7A5B70D317DF4EBB16E36B0D798E0932FD2A85B04FD67143E4B287A50416
-2C1F5A037CCD780088C5476385AF8168E12D97D44B0630621759173C8F1E3006B5B1C6D7138B7EEF
-C3CC5F54E24B2C3CA7B41AACFD25E554880AAF406EA4C3C6E21D3B550B040FB1952598A7E8E6488F
-E38288B2AEB6C4718338598A2BFE4D2B9D14C65732DA304C16FF3E1F8F03046EF095B65FD609DA87
-EC24A69278BFE65C905CD0329F6A486B8525B7EEA4F7AE56C2633CD83543269E8ACD6D71F500D82F
-DFBDE7F7F7B1AEE67328549232E26CA55085B6E84D9E2E7F74068F93A90C4654F2F396E57C5F76F7
-E61CBBE523DBFBA6E76638BBA3064DA025A79E3A294FE7F1CC28A3B4C57DD6FDC48E541A85534B25
-E1BC11B4F78019457239EAEFD4BE9007D205F1D985F389DB22400B279C10948551A6B4A17FBDA0FF
-C9428B18B43DC76EFB15FC2182216F1B60B4E344A03AD6C00F141EF99F89F24C819C3E32877A927D
-84C2D006940F39CA8B71E5951673EA9BFD1749923219DE38929ECAA9CE43B06CFA7DA1BBEDFDA56C
-61FF6C24F40E59B13870D5FDEB82D981154FAE5D6D5152DE69339359461A41A9713B6BBE47E868C9
-33CD74C75DB71D13BAE4DEC85E02FAA14EAD6C0A253B16C79514657B15E68CCFF9EE6AA385CFF9E2
-C53D9AE40F85C793E4E8FF50B2B7420F4FE69807BC5F37C3E300E6B3C3549D1D3246A2E70F091054
-1135BDF805E0A698E236B6496702D061241687B7B8D1A0E517DF0476DA09D89667A7AB375FD2672D
-CBAB8124E511502DDBD08BA04D941DF1CEBDCCF7ED48405CBCC33774A68C5212FC6F132641FF413C
-984F8B43BDFD7B1A2A3435F15AF07EF4970D3E4A0BB947C181E9CA27CC14A35BD1BD096875B45873
-8CA244F88C28728B74E25CB8C4FC1095A56CA75E4569AD3082EF194ADD11350DB3B74B96761D4538
-596FF7243B1E1B724716A144106E080D42036444FD472998460CE9ABBD05B42AF9389AC452BDBBA3
-A13A96890025789F16B9D92251FD3B3BEB2C61EDDB370A20456E3BFE5F4039E2557C451C524F8087
-015BAF3FF05F51869FB97512968BDB2B49589C1C7AF1E085250A47657465F480B7023E24C76731AC
-0EAB6704123D77977D3A2C4C56B691346EBE589C619C04515D34F81FC6A17527D5D8319013C5D4FF
-27CC3925E24C99231AC7FB9EAF0BBA482D3B75807AC85D03CD09DE5D9AE0B07B7A813F0449786500
-0AE8A7E00080300F0AB8C399057EDDBA273DD2E1B2A0DCEFAD3B332E6D4AC1FFAD846167DFD70E03
-46DAF84AF292D4F424256ED5AC4E104F80697050D50844A708EAC9E7F7784FD01646F3BD0C595CA5
-1EE6BD607D254E78ADDC5E15C3B6AC4940EC865A5C23105B6BE09EA09F2C05D6D76960A843B81EE4
-33977FAAC3CBDA85CDD2F4DB7C28293A77825635992AF8F3B38B4480D9A139B1662345A8ABE1634A
-77496C3F57597D2985E9E54717AB2E99CA35789441BCDDEDE9A9E2106B401D9684ADBEFE40D607F0
-75C179E9CC03E59E65430DB70B441D43DF03F2AA6FF06F224B6E455B01C64FB89EEC9103E48453A9
-749B4D602808C7E408A8903091D85E06AAF635D0D529C3CDD1B8479AC0F4208C284BB678A547F2BD
-77BB17C86D4560434F7AD1937760A6AA55B614CFA9FF8C9C96561AE6C8F2121C4E20237428BC51DF
-2099B6C49E3EFA18E6D439E6E6981E746EBB1DC461259D8EA0F8099C47CCA27B2D982B72C9A07CF2
-1B3C05D6E26E6E286E348B8944078E24809F9C5F3D014B4CBA02533F5621BFBA1F0EDB776C634746
-703C9F73BA89B1960A496420C68F54E5B901A6D733D7ACC79F275FFFB253F389AA480084468BB34D
-A1E797E43B7F6E8CAF5E8C93069A3A2730E57EC39B677BB73E3F07C2055599F7062E53B37A5F0099
-907D2ED87FF7A82C95FBAEB888033BDFD67BA3A6031A4CDC56CB1E4CF5B06B46E16D988BECCEFACB
-9E1C037023D7BF5CCF5D65AA66A17AB361BE7981F132A578F3ABFB97960A6034F052D9D5AFDC0679
-782EC90F240F943A5F9A3D969ED7399254FF67D89DF668F7C56FCEA1FFDCF20481474AC8495D3AF4
-B6D7EE093E369C057F0B70858220693B398ACF8E8143558132E4391405E30A73937C53402E459F4A
-A3539CF7A99A3F51C0307D045DF8B77757E92EA2F51BF0BB4F77D3904DD355665870C2B59F1ED7F8
-4FC71FDD7F0B6C5D3182DB77827CA6A2060D2B8C83C4EA4A432EF43A4D0A952CC6CBBE52A9F0CD66
-1A538973DE41FFE9C5CF55F2506B9EFEE51FBAE5E63BDCF5528499A47C031163C88D3022606784DE
-2F46A9C9235AEE3D4F71D4959B0CFDC5B7E78C8C0A8F9DC99440C2263DBACB343C5C648577F5610B
-50EAB1CF7FD02419EF3941C7CA0B0E64EBAD4B2CB05A0793DBC38F1946D44767BD287F5E9779C611
-CA0DAAA1E7393DBE0683C8D3455CDFEBC0E64B54B737E298DDA605227C0C4BBA87AA3EC7FA6EBAEC
-39E6EF2537D5974391D31739D9FC42983D81AEE44711C823F35F8E2321AC74943871739D2DBE9748
-FE68592263E7713F27E0D49B9B5CB7A4E55DE54E6B800D15856450FFD3AE5F287B12AE4F438B20AE
-9E27E6CAA00F3EAEADBE08432684FDF9931E925544A680182602A3C1997DE5D0630BD5A010535E66
-E1C123013D23966B3545C7431C39B97295BFA4099D14461004C42C85095EEACB9B47C593BC6DB863
-533A8619BAE09095DE8ECA432D4DDD49AA600D277E75DC3F5C6631E2A05382CB007825FADB77438D
-CFA78E252D79B6A196D5164C2FEB85D75ECA25FF80B1D97FE10E87960CA0FC47C41D3A213BF141B4
-8BC3AAA93FA86245064668394665BFD52D12C3BE4CE39EFD8111754398A944C3FD1AFA98EC337BAA
-AF899D35E804CF416AD7FE45FFF13FC6354007501043F98FE8428DE8013901BA6A28711A2CA85A27
-0BB135B72F1D5026E8217581860729E94F2F1878A0E96C59E9F62714FB5F8F25003DFC7347E99007
-8A9A331CB3A6A535BC61866F02513DEB982C4A13ADBFBAC3FF70A7335F40D5489E48E5EDEDEF1619
-1973D932479C62183B0E25EE8C4F76D4F1AE45DAEA4A12AEDD9EF81D248E8D19F8C8A5BECDD1EA1E
-98783EB7A38149170851B1942C96C53DE06DEF80913BFC04E539EC67C110498D15B78268853E5C72
-F485F8A27B768569E54241F6115875E2973292CF48FF91D45EBED627AE9F0766D22201B20AFDD40E
-5B17CF337F2999E0BD15B86E46EB3C18FC12B7DCADCF9DD50C6C7E3F37E615A892DB3F57E250A072
-A49F7277DD6A2C8042698233D35A699B17ECA5DBDA6D250ED4A16FCC893BF0DC2E33FB1EBD7DEDEA
-3C1C39603C8B7E1A5A833A8FCDD5570BD088749BB232615366687962C7E56ED089CD7B092505CAFA
-5A80F503C4CF337F07ADF0D106937E25670839D491F7BFF7A523DB609D126328C16113ECBCBF9C40
-04904427A108618AE5D4ED809F8CCAF72251104C94EC5BEE21F91B179D31DBA79CEEE5EC7FF698EB
-84AB1D2D1A624F58B3622A78844CE51498B2CEF38EAFE259D22C7BA61104651A862008BC1DDDA58C
-C45F663EB26428DAA85E7785363A69D2790996EF5D9621D53042F42F794962FEA46E46F37B8AD1FB
-76FC8D5CF2146843F8CC625139C75FB42DDA71A752BAC48F294E4C0C8289FC46DA5EFD9C91BDA6D0
-27518B7E81E8B21F755A9615627D5812ACA674D1527A1185EED4E3C628196E7D0759B1CAE6B9B7E9
-01E9599A65230F1EE469CD33B9BD9C104C44E3C1AB966C9678BD0AD78111A4E0F2D07A01A038CEDE
-7036D0534D684A1562A17AD64A00F279200C0371B1CBA61747671D2A21D3F9646CA290F6B82418A9
-6FA177C6278277504B7FBA936325F5FA124AB018A15DC18D2C5E8F93CDEEA52BEEDB78A57828D81A
-3E6C38B9FAF3DC4EB7273ECE3EA4482A1C6242A335862C2C3717F9C9ED95F77B140C4E1569B2192F
-C7DCF702D0BC9A50428EC406F8BD0CAF886B4D979320D3E429816D88F7C7146D960AC12E70F2CB7A
-9F4E3E366665AB3F1B4B6440F55EEA26DC9EE0096BB7763731740A537766490C8C174723BF0EB40C
-53701AAD12B21D436ADCE22203C1053A9DC4E9F17AE617888C4B4E6F3A720E4E6366BA628221A387
-D8AB15E04AD69387C310D3528BD2FAA5B22BFF3FA494F5FBFAC4F771C9C7402B95580C5AC4BB3AF6
-92A70CB2C851FA5CF1173EEC3EC29B5A05A0B728BBBB51D3B7AD8B0AF17A1563E82FAFD93F8B7118
-1FB7AFE352874F4EC6D334AB6747519AB8E847B7BCED33EB5458A828E074E74BA621BDCD03FEA604
-7F7B6ABDA01FC7514BA1AFF0D4D0C0CB8F4E42D5A87E395D9ACDD02CCC220C157153422018725846
-009A3ACD8C8CDDB66BC6836B4026FD9F526AA275D06C813179E5924F26A25094E7BDA8BD26AFC4CE
-B41D8964D4FC4AF1DFB0595BC5D6714C32F15DC7194E9A3A73013C45D8FA55CC0550A12D9AAE8E9F
-F199FA28EFC2426D8D1DEFB93A65717AF3EA8E2D5B4AA8EF0EF38E9600F7D4E7D9F1D67A2E63ECE4
-789FA74B159BFE2F91C19B0378BA52E93DF12830D99553B6618645E26126842AB70262D96E35E5E7
-50ECA0CE3458B3E51BEE2F21191136DFDBCA39BDC07939E521E4F492F392DEBD029C1EA237BD89AF
-76BC89F618D530160AB16269FA6B693CF14BDC4EC7C630025703C5337F61458FA09104EB15C7CB20
-AA4C9BDB7CEF3A09F25BC7F3149951A7CD75372993B80CD2112F7674CEFD6AFA764AA3486730D2C1
-897A264D82A91709FEC4A21E30D812F558451804EE6F3DEE2C4C437846BCBDA07C5B6CBA1D94AF02
-9163B7383CAC6E088AB1DC14ED3743EE77E26EA7AD3119A76C0B5F925C4DE305CD7BB3A09A453947
-5B9BD79BE28FC462D8718CE05F9D94CAF3387BA55E6E447BF81A9EDDD3A34E17BE66BC52B0C0BB6F
-86F6F008829173816D205182ED2ECED319864A796AB65D4E3950288BADA94FA32B6F453AFDFC6C39
-A4FCFE60353A64627E2057D4B379D3240012B3BB0ED0C7876CB83C1BA5EFB6E2A03F340C2B576731
-F848F762A7E1CCAF267EE06D621BC33FC245D0E1547ADC12CC0EB58B26BABDB8EAE9CBFBAB93836F
-FF22BDA1831DD01B7346AD377AA298D84628BF1C07433284B0A90FC89F5AEB2651BA2CEA405D4F52
-DDC0E74B871D43F71EB4ACE0D2B401F9348EAC3A2EF0AD295036BF6CF6F870D58E00B619D50EA7DD
-77BC28DEF91D805CD527DCBCFDC16C042BF9B874E3B1567EBA4C1E70744B9E7E5BD1FDA6A5FF6E10
-1613FBE58DC46CFAC1A65ADAF65E49757E9304E2AC9A91E0588600C709A61D4231730073A36D473F
-518A145E141D0A5A494441B9EA99AC23F60F54F8127B477E1CE698BB4129B4B1DFEEDF10D9E665C2
-47A62F112F5CA30B0AE5DBF3E495FF06EB28EB438CE8AAAD84D5F50FB56A3AF002C23BCF66ABC270
-7AC233FC0F2723DB99D2CFE7D3B3667732A531F5DC315CE74EDB9050BF75D29E6430F57CB6778B2A
-CBD57DFCEF896E6766C8FC5C9F9FBD701CD62CACF33EE0FC95E78DADD205B5F42CC63024624BAA0A
-B4DD447832B4E1DBA77BDFADD223989F8E958C8D759AAA37930664C6EFEC708116248A2A7AF3D656
-DDEAFD009B7F5333854608E67E5E588A857167ADF9225CF6C641F5E19C3E08678A281199EDDAC831
-B57223B1BEEADFDCBC8F6F25D32FCA2336C808162E8F381656E847FB6CB13969572425AA05AC830C
-33DE6E030F86A3A85D2A66A77F103C7042C97205526DC882EA9A00EB8BD5519847EB424C15F808A9
-1652A6CC89B66A5731126DEBADE123C63D88A2E550FACDEB3886FF98646000C64B3A91078012CA30
-904B71737CEF6BECABD43DD702880538F5A70085E6CC6015D2163681067C3D513A8C66032C34A0FE
-17A58AD4BC97CA69BF41F11D5E910FDFE9729652D3EA21F8DD8CC19160A8FC77573B1E9CEF4E790A
-79D8AD6723B6804E9616466C935303E063DEE29CAA6C3BAEBF278B818C2EC2F13ED645AB452397BF
-00DB8B26E115026E256746CD0C78A959364FDE6DEDDCD0F441A61A1EBA32C7BC172BB09512148D1E
-BAC9E791B7D51B71CAD2DC9B83B2F99B3726607D9CBE58B499A13753CE87FCDCE21C0AD0528ED0EF
-B9B2C927F57C78C626248AA2B835A0791244C5896686A66173EC9F802C4C633A42B086334D2A4878
-0E53D00809247BE64E529F96AD2F8B3922A6097D414DDE1EC76F9552F9B8D58B8E34F359AD792B2B
-E50C26DB05035E7497162E7C49C38D3CD9B98D620AA67492BE5AFCA3A81A7080185C7F0B5105223F
-1FA77805502A2E8C5FEEA27699858D84A95842C5F2FB68686D59FE24091FCDDE139B6463BC6C7B1E
-0E90D20A83651AF00C85797BB9F53ECEC1675C7EE636D0D9E77DBD8F89670F855EE4D4800FF3F695
-0EFF09BBF8A0DAF6B8242840CFA5BA73BEB95115F4A78BCC02D85ECCE0C0F2EF6F328AD1DD6CC049
-5A3315B414A4D61DA50DA46D7ACCEFF6EE56451805D26B0359AF193531F95F6589CEAD6FA041AF15
-3067F88A0A2FECD135C56682DB2B45A71D1FA737C064EE9A4F404BB72A70B3AF0330359393247EC7
-81512482579865240A23CD8479F21C2C44A119EBC4E81B308DD8AA86E60C3DD8ADA50E0DFE8308EB
-1A7F201EDE8DCFDA405AEFB47E0E6CA7DDB376DCB21D37F7ACC4D3E9F26B03A8DE0E8940CA3A9E75
-963A389DF8038D2C486072F61C0CEAF500753C7A6352B1CD0338D9212B42A4D3DA23D5BDF44C27C9
-4B88A415A3242FFE2E1B332477A21D2B9CE075EE479C6E657A4D8874A8C53964229310E01ED4F3C6
-86FEF5258EDF3B464DD6FFD7F1CAF473BBE722D60FB14AB4918E93878A8AE4773930B8CEE110F476
-7F42A52D9304C55BE12846C911A10AB9B2E036BF9DFD597F5348D42233315FA80D0F563C388BC253
-2103F05E90DBF1923F229F980A2F4585C7A373511372D07DCBACA583099EA972C03E5AA67E663882
-6DB134564DB993CEEB6E7A6659C7C5C05C310267D5F8A24EEC2D5CC3E3F3C808E6D6068D1A57646B
-37FABD98ECB7BAF99E7D9AC4414A491A73CA34C52F394352F6B5A15F0FC4D88622DAC694699C2464
-84ADAC3B1D366AFEDE2A2CD2042C90516A666A19A91C80248B11224BEDDF1A320E230739E755D098
-B6A67315535F4C187CFA67ED817A035056353FC859BF286317996FFFB478A2248B908FF12ABDE705
-402224A3EE5F463DD3D243875C84E02DB968ECA1CC52C75171EA50D6A88CA91327A7AA5795019F36
-C0A19C093A1C9D3723C7568F9D41F2E4FFB712FD47F897703D7A620B586B81936C84AAED61D84332
-B3BEBC4F95B796B93EF7A1F565C494F8A65EDB21E2EE18DC025522EF8E599887CA2836069CDDD889
-88E5862977B7472584303198CCE97EF9F9E1446D1F1F5ED1CFC666A8A0C3A03E1792EFB60A9B4065
-49E0DEDF6ACCDBD98742568B4735A747D8E5DE21E630125AE0C691D054E42199C15B1F80CAFA6E7B
-B2005F374A9A5F9900ABB7409CCD50C3AFCCAB1214E6A856F7C7EBA89BC3291801E1343DA9DAD2C6
-ED075C8ECA1423B43E587AEC67E6145272814B3F191B3C285639F9E2D6E148A02DC2CBC0E054D629
-5CD05DBAC1950400A9189316F0265B86A732D302C5BEE8ED233768F237C62600CBAAFF3A110D5EFB
-6CC7CA3B92D965CA7C5E8D3E64ECF239FE2507FC797FDBE54C1112B28D4DA44C60AB09D994C5BA78
-D663A2591934CC052BC70CD1DCA3325C66C9CB982E2039F5DB70C848D3DCEF655B1C2CD0CEC8865F
-E8E1C0A267BE4F707ECE6F5A3DFCA3CC1EDF92C760439F51AA69A4C1801E96CA4D6EA4AD980258F3
-D15C893913ABCE09101984C61B91D603053E49A97CB82FBA707DAE8AF1D579FD69C8481CB7B712CB
-CDDB4D287BE995E32C02B399602A08B9DD849039B5673F1930BEC7BF366EB082D2CA5DB2385C8CC4
-5BE3FC0E31820191A814EBA7C4F23B1938E6C4D800732787CD2CB97F762DFC85D4B798809B5F2254
-D826CA42B32695428D120298B44CF38494E56240B75DF1E41E46E53C44DC505452256DFEC819408D
-605FF14D6C1F3F152F2FEA96EA0AB3B472D8704E06BE9F8C3E8395CAADD06D6DA033E81ADE5DC3B8
-3DAFF743C6E9E48716003D358DF63CD7FD3E2F727D1F2D0C29962F76D5C95ED44B6F08D052025A66
-5785F264A3D5F5593677B630E628B5EA81FB37CFFD7A30B7FAD226B6FDC82B0878AF4C0EC4F4243A
-807B9839EA62BCBDF7C2E9B30A623876E632E084EBF4A21EDA04FC88A1C07021D0C72EC3E969D449
-FEB08E5826EC20E55B21EA71EA59F6E3B0710B0DDAB3261B4A2029ECAB68C19ADD5174E55D5E984A
-4E5F38F592A302FEE6ECE732DDE841A28672C620CC5D687455A5C06FA9FE688394A04F96312ED025
-B7AA6FBCE2925F3AE559CC1886BEECDB70822E2E5CA3F732A87404B1536AAC469989E9610CFA440A
-CE43875A70CA51F36CB6F629D9424C1E35A88F92D5DA3CD8CBAE6E8425A36968E21F4F30349749E0
-205BFF8D552837D6FC39532525370BBAC833F75F1854C93FC533A4AA53ADF7008173A70D94A4EBF5
-38EA9E62BCDA7C20E0A073BEE2EFAC34D2EF1D03BABD5147659E50B557045B2EB89DB303749B04D3
-F54B43FED612FCC68206E001A7AFE90230D9C12F74A32C7EDB5D0241DC3A5D51481FD7C8FAE08FEE
-263FBCED7C7D911B3A303C835AF5FADFD218F61A9D6DE80485ABCA88200047B094441F7767B97A24
-E8C612590FA2407BAB1E8B56C71914EEF2355DD97CFAFCC192BC06FCE063D3D9D1A629AADC75E3BF
-207234C208E7E30663EDD691043065C9CBC473D97C6D4DD3DFF59D6A9ABCDD4412C3128F603160AA
-D8F81C6E7A4DCAF35F3A99B4EA10A34375B477C2BF846521A7EABD4D28078E9340452A198F3F5ACC
-3DB7E3908939FF6E3709C6A3FD9889439A4AE3E10B618CC92E14B68429A3AD2C80940A1079452EC2
-66F254657BE7D79A2A24084AF73F6DF71FBCD32BF6913A3FAB25F977787F7BB0C3A3E8BAB38D7A2D
-B0B4826950643DD1E03BD7DD1FB149A33862A89226B7CB454DAF613128C2075470E42E70A9444A8E
-6ECA526345AB48E6F5160BA23B5BDDFDA6049EC44ED1461C7E0DD514B16E2FB285F72039DE3C7982
-EFD40D7F6C8E8F4CF35AC71B467BFC578002E8D2239A2FD2C4BCCDD8AF3D7DB1F4AE7F2D2E0811DF
-9D0155BA6EDE50B5F052F14F6AB884FFF244D8806C07EBCB49ED22D85DF696995991A954AA97A1EC
-D86ACD76E061B7541E87997FEF0657A826BD88EF3A4A5920462C6595E7A156F453291CA044CED810
-860C3B0149BCE73BECA713040664AD0591304106129600AF71317B0D2907839CEAC99515D357E980
-B1937B6E1200AACADA205421001F1B2F91753E80D2263C56AA164A74701A8D5FD28E46480B0DD963
-A683A1F355D7FB4463C7347C94EA5E2CA40B60B56297CB22D972C5BB10E56715A955605256C1541D
-9F3BC5768A6F355CD3B863F0FA1A781EDB49368F51B29481CBB41D4AEB07AF9DBE8F52C5D0FF75F7
-FB6431D37D6AED84D78C778871CB0F715B4F07580F23B586C969C81B471FF6A6C7276F7E141E02A8
-584D4B9AB00E7BD643D2C3FAAA299B1F1E25048461952EA42D4882768A70DE46B213A287F8D31AC4
-6D5436F22A796C05D1FE50A9BC2A928066627A0D87DD57A3AD91DB446404B41557D1457873482005
-EA20916BBE46C613F456C849D46BA79D20627B446B2F49E3FA309AE14F8C420CFD94922CBC0FB9D3
-5A0F7DBEF577F1849A1A80E0011DA8AC082A8C6F61658E65AD177ABDF23EE17C8CF0D26B9FA3A6E9
-4837EB9E930336889767A8D7EA3CE980A8EA95528B004957BE6067CD9BD8E02A0F23CC1762CCA656
-D33412FF45E917FD4A03EB6E8C1F43FDB0A8965A33B4FD26BC24A20B304CA817E88495BA9B361A3E
-933717FFB0271F7F70C5D3CBA1E86D0F51BF3ABA194DAF32C35C796627D00C7B2271ACE2463E37E9
-7B3C826CF3DB60028F240F9452CBE08F7EBCC5FDB1BCBB3C327A9F450B9E5671916101D6E3E5E458
-CA31F04D12F592F83BADA2C3683D3886AA3B403963AB5DBE220FEC00037A745839F67A3635DFD3BF
-F08F367482962DED88ECF6322852D643A54D5D303EB04BFDDEE9BBA1EBCCBA7C653B3A613A8E719A
-DEBE3CE1BD7E754E5F4977E863E3C2D388A65227B451D4F3A4F94E06513CBA4AC1F2F511613FF035
-611684CCC461599000E546E4D972CA6960E095A526E4735A23421A4C9B597ECE08AFA2753592BD16
-DED93255A1E33DEECE3C5EB77B94670E8137F2A4A4B98AC193258E7DEA5DB8408A806188F2D1DDC4
-40CCF0E9A6E2F0C78FDBD7B68DD4939D2458C1965BF8BED4564B32462FFF3EC892C03B11D3EA813F
-AB4CFBE8D3016329C5B7E3DFED0F08284D44AA0B7A2F6BC96EA4503E8EF52A64C22BED6B452581AE
-8FF8917D53976471941A9116A2D878FB2541B561767ABD4E31CCD8A590CA03494C62AFFD64EA0A1B
-C779173DAD84999C7A8D844EB1259DE7BB5B25CD023537A474A524EBE4660B22568949E624D8FEA0
-AD37F4CE1EC75955EEFA49C6BF1803BE87E9C9865FF3F6B8525B8C15FE8835CA153D27E6C0FF0CA5
-1029A7A9185D25F0F14D86FC797DCC1F99EE97E2054B9C2A2E06FDBEB8DEF6CDD368BF23A858D9F8
-C1DEFDCEAF1B4A8DE5EAFC604CECCF0D285BE00AA912EAB66EFF4D37AD2EFE34853BBFD87CE09B18
-749B489943EECAE7887B006FB827D10191DAD18466CD1F86505879310A8B171F902EA0C26A388E13
-B53C700272CEE2BFB47ACB58247C13449C6BB9D01232C32517358F1A3DE064D43C18F8827D53789C
-CF3CE2EBE78949A6ABFA1A6B8414CE360A5E22AFB7D1DCE6F5A06182C3B984B4F9BB1A905A9D5A14
-83750A1DE0A857CD5C06945EB7D4A2A6BF1237F32A154FDC06D51A703D44FE052FD3C53E9E8F417B
-35D1C851F9203A8997521529F21AD8498F96930AA77EBAF82EE02A57BC77C792D9F220294B45F48E
-A8FD94E01CD25645D36D168923562F3FDC93CB79DD4760DA0C103C2675722D7A1B79FCB4245ED12F
-A0DB52492C9CCE58B333CFEE822812F7DCA68E802C451B5CFAEBAC608B950386B6C58239D1C62D62
-4DD5D15782FC552222CCA06DDF387B373E32C3C2864C63C768350C37283760F3515A5B0AFD66C48A
-B522EB3E808C061F5CD6BD96CD18C9839D30508E7D4EDB88E8F11E31E10919B16B7971F06D7877A0
-58D8A4944C84FC6CAEDF3341B48B6E0D3C7B85D710E0C35F5B5053CF4B4798B3778CC28B2DC7AE0D
-F3A49F9F3BCD8E95D746C35C3F47D68B8AA35D97AA08E711B5FBE70D1A623C82541EBDC51A827D0A
-69E6C049087AD26F256EB7577F58CCFFBCCBA5A95D093DC29464C9A38DE95BC6B1853963B2DEB0B5
-7AD1248D6F1625E115EEB9510B5772AAE4E3C866657DB0B3BF0E0AC345E116F8D4976B770876FFE3
-748C36165522991F46A36F193DD1A1C94713673C7E4C81582391B636C72DE94CE6254374F99B623E
-5686C13D8A8322E83E11BB0B0A896C6A8C2C4F756C5385CD7017F26D23F7C3EE97372C868C8C9155
-81723BB6B76B4C3CE8998E4FA6CA40B633DFDAA59BA902A4952DA90EC4FC3CF0F2676ACFA7F76F78
-236FA2DE10FD3545357215246BB7E527F277C28B353CC6D79DCEF21BCC8F77603CDD58A2CCDDBE3A
-9802F941CED8E035313875319548C41992A2BE939A17CC109426E33825AE59BCD17CB19F50D972FF
-CBE7D9B4B0BB095303D9DC9D406696C2508D6CE99E11CF00F6461147E97449ED5F486D480A86D3A7
-ACECB7E9A945984724EFC21C5079B1FD03ED803C2DEAFCE3327D2D7827715FD65D9506216C88B0FA
-26935E95C64114A51919D419038B1A7E9C1E829FBFB53275093752DF19891A97F3CBF7719C1FD6CB
-17019A6D2D25360ECA804C4B35172662CC4769D2B785C6C87E5A4ECCE31704E59F71263B7C3CAEC8
-ACB4C7426EC25F11A0042323EE6C3EEB04284DBAE2C770BC419DCE79BD4560AEA41571C3B595F525
-60191DC7A8FBF63D413A77A0905E517441B16C2B501EA2F9E99CC38D052679F288FDF1894542E3A6
-6989A0090185EB2E75134BFA3D9147C3DB8A621D9D35E37786853779E157B47F71626D6B3E633005
-9159C17596C1B87FE2B4FF47ED9D78FA4C2160077276C8B58CEF5DC030B4A5D83CF257096C047FE6
-4DE307C598B815058E72D5F57DF5C369E664E137DE29349E2F9DCD8C9F4EBA6E765B6327D7A20DFC
-B20711273FD8091CBA605C4C494248076F7E03DF65A6A50164980BBBB708741E5BF6056E6F996DC0
-7FFF408C5B8EAB8DCEC315E92873228C805D4440A6470E3EE3983758DD211C9CECDBFAA4C9300CBA
-00608A4B2404A3C7AF017A3B7E67F39F0B51ACF950D3E75CC7BC2B8D3480202FA958E8EE0B240501
-5232EE0D264C7CA02C18CA45CB3C2DE322D3EB7F00F9455DB6C5B1F4E59C3E95520EC36D7D903CBB
-625D70B54BF6F8255E412604BBB29FEE026CC660577F91DB1DB4A613EEEFB20CF7AE3CD89D565AC8
-38416B01B5DE4FFA5550D17FB51FBBEBE21CF1D56038863EE931B90DEC2E211ED42BA92EC244D4CE
-2C4EC5CA87A026992772DC2AF754FC982B94F36EA7B7BF75E0ECE90CBB2A6AA1A012E8898BD679C2
-3CB3827C35D5D02F0569C7AA82615D4AA67518ECF668D3B57D6EF1A8013424AC2268BA0D9A74D588
-79EDCF6382A89D397864940303EAEC45A38304BA8B1CB198967AE23EB81054BE74B16909A405E8A7
-799CEE3C270FE2A6DC50BD7370B6B2C8FDB9A87D88D5D40348D3984E39C693B6F4486D994778607A
-80A3122872DD65E40492107C71C3CF708A9717E9EEFAFBDDC239C53AA9645B711038E59C8B861B37
-411AB2039BEDF9CFD00F08D9C5D76154427FF5DD39878CECC5D7BFB3F1F035087185C0981F3C2139
-BE84872FFAD3408531C4EA9387B89F5E3EC779E8850D50992DFDCF9132BC551E985943B07618AC10
-D1150451F0844C0DC41D6E17EB508DC8689EC726400D5A7F6FEB3CC7BCE05F09228B7CB2C5393664
-D8DD9A4B96B1020EF25D70AA2D91CAE93AFB5F2BF0AA18CA5C599FA1A708EF35BF8F7FFEC9AFC1F2
-42870D028B2B1459063B493943EF1283829783E1010242E5CF4DA39D93D506F3892936E7D6CF1124
-70A521D397438733D053944CFF12D6FFAE8246F20618684F263715AA98E15D72A526383E05C23214
-B78338E5B476F0981D90056E6E5D0DB66B1DF2298E597B2ABE1D817E18BEB056E65EDB4234342D96
-00470B1420C9210419D834E431B82F58608C87AC361A02D0F1FE4B470A3D71E0D21BB87E1023D428
-E23D596CB9E1A2184403A16E36E644BCCF9BBDE27290485057E62827283E7380AF786BF395B3961B
-A5EA469C315763FA59E0F176EF81985F38B882DE56A74D128E256D1B89939728E55A92ABA21A6B78
-44FAC1BA7BBDD8B34A18194A2984B000380FE9F672E83EFDBF276FE797A325815B0F25CC95C97A9D
-ACF56D583486305D7C9E51A7E337D14E3B900333EB38FD93A99587DA2341B10C059C71CE080FE753
-3C0F059FA40E560AF9C4A41A4BE6FB45846FF8F78165E10B4AD40F264BCF5596A1E8EF8CB6EA4B1A
-3A5C69059AB1563843679ECB2511A90E8898F54295649CB73D277760D8D04ABACC7BCC6E777A0530
-E2067CCBC08673F9C8C178F9D672AC8A15E5367F0C5651B53E75E0CFA57C931746AE1A679C246D7C
-9417F1CD89DDDBD1173C2F880B7B3847CBCCEBF99F7122E832D7C9BAFE2B54CBAA1ED48158DE3F36
-238B76B0E67644A28AEA996DDC006F6AC0242E4B667639E7523CBC90A0561193C1AF34481C2EF402
-EE43A82E1EBF4E3D601BB36B2D95CD93550D61CEE7A94E72F6D30C32C8F91A61E964B1F66ACFC398
-7F95D4028F116E9A9A8474AA29C1C1A984BE0E393BDC41DCEF6A6F1018DB60D52024899D8EB5D55D
-324D73F39BFA47377B9E15B3B06A7585589FCF52A54684173E5183367E7B0952DC4BC2767C4C6247
-B1D6103E52BC7B7EA6298F454C5D97AC575F19C10ACDFF4E10C7D3755CFAB4200CAC545269FF1D8D
-B0D607C7AD47F40DDF257AB4E7D0750577003C13E4941960C3DD7B0774DDAC18E8ABAF8F53E03CBE
-F6D57B44F24CF821014C064278FD51B3427593D17694B4ABCE81F49CBB984C5878CDF0C38D1ED7FD
-99B0B9A3BD8D8FF6219588B3B8FA59D0CDD1D9B2F65122AB45E48F1757467B9204926140E3C350C5
-A927A2E700173053EC35D3F1DA2D7258714C97FAA857F0898917BD94625C6D1E2D77138EFCAAAF51
-7B17FE187A2212C24A881A2C6A647DEF6376ED80AE4175C5EE80921F001995B44E49F0D33DD9075A
-CF33BB03671C0BCC34AD5784AD1CDFED3A6D9BA103B3DDC1CC2DE74DBB576A0277715275218CD19C
-A8899209125266D8BF1286F881DCC2C383749D1E768D670F4099F7DE959EDFE852583183C9111601
-2881A56A24AAF020EA45CD5F39660DEBCE30AC1C7B8CFC60387B1B0C3E361BE612FDFA9F01B7E4B4
-A18839A2C7E0E393EBC5AD9A8A4EBC316A740C1C295D9EF5F4DFFA0667F9582C0BB837B142C4CFC6
-B1798E9476D0631111033B8BA75A10FDC800E2AB1E0E829632F869CFE4737BE9E2800759EE0831DC
-7D1195EAF80555771981DD6DC6606812D92CB8EF86447F5F6C6F626D0E265C67E52A6319189EE349
-D48E49DFE6A9E98F76C414A1E3217AE0A215A17E54AA498F4ECDC50242ACC7E2322F63BB2FF2189D
-057E7354E32A3ED1803116176B9B9D0129930F919E2FEC280B2C8924E49E7BB75768A2EE1DA8ADBE
-D4E3589906DF1B923AEF84C1BD327438B731012E69BB0D43A1842CB88BB54EA4516477F704CFEB28
-6E3EA483445AD4D74586FCF32E96D366901084365F693A53C5FB532FBFE7BC0CADC404C4985042D6
-8DBB90A6DCDA3531EE324D558A214F935CD9FCC9A0CEBE9B5FB0323F4B3820529599EF48EE068B5A
-CE85004FEA2984F0A86F5AC9D56163BBFE1142B774148F1EB0A4DC89C3349052533A7DE66729DB24
-41B82F8F7360111DACF69293C9B281A0534F3E9E9224A75C49A832F28B2E497262475507B6DDFA9F
-01CA0A6696E3F5AC7EA68595EBA0C2EB8A47813FF936D84AC1B23ECA7AA2862B793CCBB0DF9FDD49
-31BEF354CEC12FBF478559FEC29F81ADF4452E83963E56541D31F3691C93A50F0BBA5E9552C4F2A2
-3A6E53060729854A3DD71CC4308B91957DB19E66AAA18FA67055A950F1C2CFF78A03BC1A588CF624
-696068068719AFB1001C4581EE072113882D9052B21E355D401ED8CD24D067B99E616BDA5A0A5A93
-36FC499632B79FF2FD0DEFB096EF46B75E2D4E0F48DAEA239719FEC4D9A29818F5875FC5041A9EDB
-D26CAF0ACE14CC80BA49BBA59E918EB3D8F1E541AA16026585A2F72DF7D83541816DE46981FB3EFD
-0C30E458CFAD04C79421AB7C4925E23AEA07F9F018431C790002596D26BD9663B51B699DF53E4882
-CBC34EDE88EB55045B889B6062E35FD1E018BCE785157B85EC3B9CA6C85D4B16238275385B8285DB
-012D8FB7C9F5B946A41D7A0FB878FF72C39683144D8A007CFF631B43748F2D5FC690300F9BC0C837
-006B92ECEBE0605E8C3A4A400E18AE8997D1B45FEE10068E247C647CF82C6DFBE5E881D511FFA687
-B7AEB78546BFD07D5F7EC242DCEF4930D8AAAD8C6152B6642AAC325963FD147F236BB850A9966573
-9D06CDBD7CA79A527DCF461E33F22BC9C5DB00DA2BD3DDDD8C99D99793BC98282AA8872FF96C3942
-85D82D9419EB78B6AE37A5F519397700F75D624A09BD255B576E955A323E784E8FC31131F003B0E3
-024A4F58FEF2A6C043796201FC425482E1155E229D1B2D43EF7B0D22322B22EF5C9A1BE026A1C3D3
-75EDAFF99597E1E5477952A4E8D2ACF5D014BC00DC2A272FA62B6983E27D228881E2EF2B8B95A681
-CBE90C5FDE16331C85222FE2A16F0A3C3000A63E2E21666C0C119F8AF89A543D37977069A5ACF155
-6324F05204CE8CAD50FF4FB630D9CBBFC324DEDA584AA56A99D3A76FF55BDC2C2EA3A021361CCD4A
-83C7A5E2768D210FA6DE889FD48A39D679C94EC3C99A8D33FF11377DA7F6F1B71A2A05B302ECDE95
-4F26773F39AC881542F0D0969C3995C3519A8EF70B4220D86BF01BEECC6462855E7B686E1AFF1CA9
-1FB8FD8B4A69E10EE0C2AD94ADD44449506F9B6EF43641F2026EFF6E605C670560C2B74706FB949A
-A7E8CC6A2D0D6207E457E7FD87EC1B9092DC68B9143947CC8ED14AFDDCBF8FDDA228A76847F96802
-E561F67CEEFDE45AE587673983FC04C96744DBAA83F2DC838D633943C75DCB9E6410474EB27B348F
-26E505F0AB90878940E846C5E9F3C5FE8C3558C3236B1B88C405716949B8506841CABE1717474BB7
-C30DB91CDEE33B0F844811762FAEC535BDCF84C1C747CEF9B1FA61D2AFB5A81335BC42C06A94D7D5
-9B7EDE55BCF6F9867AEE107555CDD084B7684C2C87087475A39A9DA6347BE281CE5635A4D07865BA
-98CE26C1465B1AB0343F49FF37B4D0CA9F3BB693D78DC3B21925CB996A038DCC172527FE57C07460
-EF39C07D4396E7FA970D9F22ABD21A9C794B64AD96762C7428F59A8757C36D6C4FFB23216195A04C
-2A2C2E7B10EF7193931544D782FEE4B91E01119C5553BBC6252270A8D8C56DD62D448F5AD8DC69CC
-B45E1F17F0AA1E445129DD00F000005B23D38DE93A3BE55A4C041947F36B4E4536E307D0180553F9
-2E46B743881CB5D5386C48C7D5F84C2BCD06B9C501F78C7EE61FA23516791FCF4DB278AF688A2E60
-10A56692AD92008497487EDFE4BD5FA083FA544138B20D6940020887E35D46E093B71F7A04A67460
-DC8116B4D4839625D7CA6959D6831CD93F81AC4EA2709036DD738364FDE71113BF22EBF13DFE1642
-E564701E6F0FFE7511EDF03FE448C2B28C64FB7D54B94CA576E481FA56B2B18AF10C71F699B6BFD4
-7459CDE1869D0FD306BF489A6F42E5B2F05CCF55BB6B9526973D19CB134CA7F13F1DB3716F8CC217
-73A832568C16250B5CDB16DF24BF81D49F5B37018BD310262EA7078107868AB0216CEC83CEFCAB1E
-9F2C665A31585CA04DC01879CAA79AAA5AB201B516F7052B01B16BEE5606098393B0E5D9F9E5E3F4
-EB20F63C958E796DF41CF28839F5C62A0431648745D7837B519F3AA36BC6C08EF040CCF53D9B6D8C
-0C7D1A84D707EC57A3C6AC9A62AB37251A01A5ED40FDEC6F5BE6E34C6A91D058319439778A2EE5D0
-363E2E1F33463C33327D05FFC0CBF08D5BC457C7230448972FB9B4D0D782BA7DBF10D3FFEF8BF523
-6EC16D4DD6D0D870D9D5EB5C64C9A46A4F583D4F831FEE74B0E5B33A09ABFD4444929BD8F638CD72
-EAB99CF2E9551DF427683964A592E49D186F285258C5D5F62196A98532421D73E3495F82695FEEC6
-E1952C562D546B28618FFAEEBEFF03A57F4D855021F85B0C7BC37FCC6DA9AECA099B646B99D41896
-09D3FF2D56422F8C37E97640293EC7C90E3380887836F4938FBF495CAC14FBA5648D89282D8D49D9
-1AF73ED36581139D8BD42551E263E830EA3C6EB381D85C42D74C50DB0CCAEC03F535ADE92128A016
-0E811C34748309AF7604919B66CD43EB5CA975302DCB6076FEB6BDD6FF55976FE990FB0CE9ABB11B
-195403FB26E3D6C6A0DE1C5BE79E171A61E21F79EE8DBE7A832519813EF6B33EA098C2C32ADEA219
-AB2AAC8B093F40000995539D1276D5F2EF84CCD099B71FE4269BDBDB6A8D59C86F7D2E3FBCCF8773
-D0FAE97640BC1AD43CB4B992BFADFB09DBD0CAAEB8CD9DA264187C4F97300E9A6C9DEED5525479E6
-05C65AE336CBBDF4E5D7F79AD098F977285E065579B748FEAA97F2A753E1F962FCAB68D72BAA8EE4
-FF6691C23E31BC0F3E981A96FB440404856AE1AB32A7205B17D411D8F21C8C93B704D07EC594422A
-BC368CDA2B1610CE6A973F4474E12B78B532666797F5755D269772C9F5400B3BFC6C58395D38527E
-2CCCF29B56123F7DCEF3BDE5DC1DFC5B0293BB125085B1D2D929BC3EE84F4FAD571A4991C3DEE03F
-2DB3A3097E52B1A7D5C73CCB6148EAC62E8E36DE9A71C57638C6E4D5D9DED18174E8C390E50B4A5B
-913C074EEAEBE390B214B3A68F02862B9A296DB4B409769649E51D738CBBDFB7702E15C73C2AFC6B
-C37CE15171F4E822CF20EFE55D9F061AA43E648989628FF79E65932390CBB15D8E621333B18B11C3
-BDF96F841D7434E01AD501FEA964A75B248A35CD9DF9A37E48A1E5A09C624B93CE44F0042FA00D7F
-9EE89B9F7AB785E9C718CF6E7228F743271C2C9BBA17E5208B920E44E765D99D86650EB454B0FAAA
-112753AA1BD3A24239E9C5FC47EEB1547AC9D23731B8DC48B9707830DAEC60C8D3790BBA1120F776
-4EFAC542CFFBCD5C05F9510B27B2534B704ECD36C8B041FD49A96881302FFF5B0163A2DD09C751D6
-D6AFEA9170A4F4C4AB8D46E62F763FE1BDA51DD1CE4A27E772F3A2869155F762FF26B7AA6FCFA4F1
-292E56F03AAB6322BF867E7710C34D43B5D85B45AA68014AD7879EED051B1933E491496E3E26D9AA
-8B80A07BF2B94F1077E84A9726F08199887D66DE7A307BF33C30DD9CF3DA188088C03B2BAD09A217
-6B110DB2C868B53DA9A66C85737BA66C93C58A259860E294AD0191E3A72C73F40B0BD98699AA08DA
-F03587B78F391F3A4313C58D9F29B53C70785637BD0C58310109C54091AB0A34CBB0C478613A7AC0
-FB8F0A8B4645AC966395D8BA775262CD291136AFFDDF01C1D83DD4EB3B59CCAD18057FE7D92A8CD4
-A58F22508D9FD7CF356571F701BBB23E749BDDCBF8A317FDA0AEFD952BB18545610FFAD3AC143D35
-1B8DB3F66293375E0E50235F0D0466932181D377EDD32A5F0FFA4E22B5A0CB4F343D9A7E4A342E9D
-09DFF6C697630CD3971802C277A5590B8CA94BDE6B38446C794D072BBCCB724D5BC208EEF1B018D7
-39373BB910D668882CAA779C2D686081DE6A2606417B54D7C20E0E7F722648D893E4EDBAE8F00D6A
-6DA3712F91AE860C756D1127D133AB828E9D80023B50B162C5A1C5CDF70CCB3FDD7EA060ED20838B
-E1E50C4094C9E79E1A0187CDF780CAF45A725964F004253E034C5BE46BBF89D94631F1A33BAA35B8
-4FA2A9D08481C6674126CD96ED05DCE48BDA069D902D6836D5DFBA701DC0F98A863E64F0E312145D
-8DC0B77F25B43AEC729A1243B45B08CA228DD6101CAA2AC5ADCC8EFF84A4CA3F254176C2CC711EE6
-C273835D0FD3528ECA2A976B88E51FE347FDB60F32370B66D338931D6581630ED586F349C638960C
-31AE4204E89521A96E1219E696B913DEB2AAB7A3B022D06F34FDFCB810A04E60A4FEBE284C2F063E
-0AE9EDF87704921CCFA193BDC912B747E13570066223A49F1F6E2AF0D4D65DA04CA876FF7A462FFC
-9C0BA2CC545C3BD36DBE762F32B2D6BE5867C59F479195C92440DC165098B74EA5C3AD93CDF2D410
-B04C16BC7801E7956F4E5107450787AA592493171C3628E6B8F49D4F8429EB98DC52EF025F001387
-BC1A7093F7A99F10B5D2D7DD8BBB393BF6E56F08F4F7FA1A343F220D5A1EAE7168C74D41BE1DC1A8
-3BD65B72B982F4F7B34F24F97F9EC9A91011064031FACFF2A14921A32024385F4E061CD07D152E74
-1BF97156D951A342488FA7F5EF934CCAD13E2753A0AB7A1F565C2F7F6B349DF03BBC25BBD972A9AD
-F809BB5C5048A8CCEF9297B2ED3324D18867F293CC66E88B3A39D107B610DFE79A3B4E83A96D3D52
-A17FE8A62C9FDD271130148366942C9CE57558D023DA5F7501319EBFA33DE9E6D1E76D7C20DB8A09
-B657839DA99F3D8143F1EE6253A3295C9651FA4366547893C2DC7ABCBF4BB7609DE5D001E0A36D9F
-FBE01F7D0903B3208AE8547E2E5F14EC1AF4C2535CA8F4EA37E3F3CE172C7A1E8308995B1CC23E6E
-81190246BCAB6E755BF868D449BB02A2AA87C44C9CC0F571ADC72547CEECBE104BB274B8AC16DCB7
-5D5F458D356466B921ACDEEAE384E2EB1DF6EF393B41B9747F0A4FAEB4AF1928D9AD6FB7E06FDC62
-1E4C6FC98CFB43F88584BD55D9B97CC9549093EDE586912161931162B1B1D52D0443260DABA02AF2
-B4432100D5506546013DA703573FA8013685CC798CE501960093DED713FFCCF89CA2B9106390198C
-29A00864108CDCC1984A8BAB53919028C01B26ECC7925E38CBE6CCA8978EE21C2B06E7B3E48FBA97
-8E2A7D186E563C088F84AA23178B60E4729EE87D67B1091F3B6973676C1CBFE6530EB773C62E2C24
-97014AB0E8B71A1F4E86A378AA26591511BEE3CF3D64C94848582E1354E1605B6457823F2C5E640A
-D3802946BB2E7E8E594E8C04B430C2385DD40746CE8534F50842E74D7115F3DB0C72D1C9C607C657
-3B094AEB73B7A79876CFFC3E2F8C9FEAAA07D3BFCE05B61F7749A8793BE90CCCECA2D7077F25E899
-D3331FE161A7E86C842495D584C6E4A0880B2951D8A13B88C4672080A0B1BE36BF47C3ACE7288CFE
-41A8C1BAA6F0814A947FBD6B3AA72B6C73A8C578CA51CCC96F2352316C467BB960E981F2B6485BFB
-44B577E71EFDA16E7405954BC7C9F0759F5A9F1EBCD2FA9CC9648D5831A68887F41B15081A204C24
-B4B992A231DEF9E698D4C3A25B6F5474F5BE6A601F2D337A58A0D21FF37FD91EB86D1D738893A03A
-69F0CD743F611CDFFE69DB2C6ED0E4611D56F803BB0DC06E7FE85A303839612707647B1BE9FAF8D6
-84122CA9E5CB8BDE2936D3F4FF254D31529D7538BBD4D35539489F9E7316F24214B996BCDCF1818E
-749A71CF0E8845AA1E2A58AA62A48E02BA4564625D20AA220EE719608521D7D7A7FCA0BD8904A401
-9819D371F3F59D46C1354E5FC1A6E5F79B20CF4ACA2BF0F2DE73DA193A6F9ACBFE0B4731C4BCEBE6
-D96FE822965DE965232282A3A130361F188B3AABDA95A8A2790D9240BE008B6A6DE4BBFCADA05B67
-86B9BB8E0DFA0C30043A3B07ED46277E07B9808422C8ED16758B9C396F4EA929D769785B2C9568E5
-70A83B989B25CE200F1727D41E2B702E7F88F1784F4C83FA60A74EB26B2DA95126E508ED519A61CC
-151DB6804F61826C5F86D8FA89D06E526FED97A0DB88EDB432FF32C1ACC9B622EEDF601081AF7B96
-3C9CFC1D13E4A9C74FEA0A1C8E3D8653CD92A944D4CA6B0D306619AFD503506D77732D6514F604BE
-4610C2560931BDE0B40939BC1D126B0E97F72AE1B4A9252123B54F7A27E0CFA4425B4546526FD741
-CA77952B10D13E0AC2E32006A903808FF0CD013F936238C74CC75FD915244C56A8412F37F0134840
-347699508D6F3D7F3203A25B7C70100719582CD588590EE34B3AB13E255B613A6D00386A0104CC5E
-D2C646F09A88888D3751651D5646C5227A3C80E8DA1B0A331121DD2429F1F4775D30564DFF47D01B
-BE2C6C72CE4D1FD9A2077C04D2B0274B8916F6A9D1A4A6964A534F47CF241D5A8E34B23F85BE9ACF
-FC2FEA961F277539F215F8728D6788F67BEAF45502839BCF23D8763C3949352F00C579A9A4FC408E
-C625E310DAE61512DFE6844E82D36A2F81709E1F05B38AE9C222ED62C961EE63593CED7AAF73CE2E
-D3667740C77B309B93EEFE1B4BA65D48575A66BE86743DC9E5D3C2FF418D11F7F211B86E827EE1DF
-C3613E7498030F07050524536D1F8A94DDB6698BE7B963C55CB3F74B676CD815A7B3DF4B1A0EA2BE
-1B0B9A11FFBFD5B1FA49668AEE14629316AF436A0821C20BEEF7B3480847934A99F6D85B68F4DDF8
-859A754E009428AF89A90D1852C220A607FF0806E8080726EDC94D691D214B4521C147C4273AEBDD
-BB4A697EF16448CD9B2FC95293305858DECFD406B89B9F3FDAE2AC579E80CF321EBAE5701FB2F7CA
-D8ED04B4A63115886D45D6120F69AEF1A21D80AD3C2D35D2899F1902242B96CD349E0AAADA40F7A1
-1282B6B52BDD97708E58DC5E2D22D1153E5FA3F3B300BCDFAF98DEC2F4E3C82A1C85F985735F3987
-4F557579F422664E07CBE19DA680EFB0FC82C323EC5C4644C51709AC8D674608A8043C91E6C7988D
-430F10BA6CE1FC7FC0604FCD8F723895250AEC36CC35B3FA14FE2A0D24095DCC30B2093F2298F5F0
-A97676A0BE66C3DC9ADACFE2FC0F721A20E945AFC1096A619075D5E9A264C796EC6C90EF1AEEA8DC
-089B44FFC13D27CB2370070A52D4416C53F364393E46EDD7EDE00799960CE6E0D57E4909E88ADD64
-BDD2B0EBE2D73FA6ACF8B40280DAA0637E705C65AABD523B8815F22F23E9FF81E7829C7E4BC980C9
-143AEBE1A04DC0D253396BBB7268BD5AEEA356B610D5DCEE03135E00AE34388251F31714A1C40E18
-2652C48CDA2211A22CB6F02490E69A44CECB169754C53B16028D352E0119F5D5FAE0BD7EA1CDA647
-12A6147374B64244E21E9EC9F0D1381AD22D5B6212B26C3F9AA5F6045F25DD9F5EB4489EA39B1945
-331AC70510C5752557DE21D0A6CFC1EB10A98FA867B76DA6E4249469F591FD154D39E89364A43DB0
-07AA0D7A911CFAE6CE2B557997FBC44F55A27F622BD7B8B10EC9F5D10F2649A646FD964AE1B111B3
-5B46A252C4DEE44E7426EB5739F24E8A390694597DB3A1FE7800C97E59558322F0E49A0CCE2AD94B
-1E2D1026AFA771723E3F523916F55ED866C9FB4A2F759651C613A2CFF362028CDF9D38F05D4C7C60
-24C533E930B64B099FB1AF04B01F5FB9CA6867E6EFF55A772C5391831059987E10CBF987E3F378E0
-1329F73D54DC0484177D3C3C06F67397955FF1CA4EF8AD1606B70455255D631A7D6EB92BFDBA14A0
-FF28B2ACE7E81AD666EA9B3A0F5A6BA3B5DFE35044FA4B3D8ED956009C60E98CC132F2E84967F4A9
-8A67B336D5EE7CAF7DD1F74D1FA08619941361FA7312CF225D89CEF97E864C8369EAFAB94D97F056
-5505D825972B754F6729596EEA91210B75DD8F645382ACE36DE60819A02B3B48DD00F5485F9264F9
-FA926D732E2C267B0BE8CA98526F124F97EFDB86132C5EF16B103908172FC51F286FFE45FF253512
-E0033F037FF182BA536A9EB2DF2D1DB257D9C86C46E1B002FB32AC70CA9462E6EB48994752CEBCE3
-9F08ABD4F4B0889283E55500702185A841E328
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
-/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
-/NimbusMonL-Regu-iso1252 /NimbusMonL-Regu ISO1252Encoding psp_definefont
-295 271 moveto
-0 0 0 setrgbcolor
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 271 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-653 271 moveto
-<6475>
-show
-725 271 moveto
-<66696368696572>
-show
-877 271 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F535243>
-show
-1149 271 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1162 271 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<737263>
-show
-1223 271 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1236 271 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F49>
-show
-1435 271 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1448 271 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D616B6566696C652E696E2C>
-show
-1708 271 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<E971756976616C656E74>
-show
-1938 271 moveto
-<434F524241>
-show
-370 331 moveto
-<6465206C61207072E963E964656E7465206D6F64696669636174696F6E2E>
-show
-294 433 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<69666571202840574954484E455447454E402C79657329>
-show
-294 476 moveto
-<20204C49425F535243202B3D20534D4553485F4E455447454E5F33445F692E637878>
-show
-294 520 moveto
-<2020>
-show
-344 520 moveto
-<4C44464C414753202B3D202D6C4E455447454E>
-show
-294 564 moveto
-<656E646966>
-show
-295 682 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 682 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-657 682 moveto
-<6475>
-show
-733 682 moveto
-<66696368696572>
-show
-890 682 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<69646C2F534D4553485F42617369634879706F7468657369732E69646C>
-show
-1563 682 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572>
-show
-1681 682 moveto
-<72616A6F75746572>
-show
-1863 682 moveto
-<6C92616C676F726974686D65>
-show
-370 742 moveto
-<4E455447454E5F33442071756920636F72726573706F6E64206175206D61696C6C6575722074E9
-74726168E9647269717565206465204E657467656E2E>
-show
-294 887 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<2020>
-show
-344 887 moveto
-<696E7465726661636520534D4553485F4E455447454E5F3344>
-show
-974 887 moveto
-<20>
-show
-999 887 moveto
-<3A20534D4553485F33445F416C676F>
-show
-294 931 moveto
-<20207B>
-show
-294 975 moveto
-<20207D3B>
-show
-295 1092 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 1092 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-667 1092 moveto
-<6475>
-show
-754 1092 moveto
-<66696368696572>
-show
-921 1092 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F5352432F7372632F534D4553484755492F534D4553484755495F69636F6E732E70
-6F>
-show
-2019 1092 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572>
-show
-370 1152 moveto
-<72616A6F75746572>
-show
-556 1152 moveto
-<6C92616C676F726974686D65>
-show
-832 1152 moveto
-<4E455447454E5F3344>
-show
-1149 1152 moveto
-<717569>
-show
-1242 1152 moveto
-<636F72726573706F6E64>
-show
-1495 1152 moveto
-<6175>
-show
-1572 1152 moveto
-<6D61696C6C657572>
-show
-1769 1152 moveto
-<74E974726168E9647269717565>
-show
-2062 1152 moveto
-<6465>
-show
-370 1208 moveto
-<4E657467656E2064616E73206C612047554920646520534D4553482028626F75746F6E20646520
-73E96C656374696F6E292E>
-show
-294 1309 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<236D6573685F747265655F616C676F5F7465747261>
-show
-294 1353 moveto
-<6D736769642049434F4E5F534D4553485F545245455F414C474F5F54657472615F3344>
-show
-294 1397 moveto
-<6D7367737472206D6573685F747265655F616C676F5F74657472612E706E67>
-show
-295 1515 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 1515 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-651 1515 moveto
-<646573>
-show
-739 1515 moveto
-<6669636869657273>
-show
-910 1515 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F5352432F726573736F75726365732F534D4553485F5B656E2C66725D2E786D6C>
-show
-1843 1515 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572>
-show
-1955 1515 moveto
-<72616A6F75746572>
-show
-370 1575 moveto
-<6C6573>
-show
-445 1575 moveto
-<636F6D6D656E746169726573>
-show
-744 1575 moveto
-<737572>
-show
-824 1575 moveto
-<6C6573>
-show
-898 1575 moveto
-<626F75746F6E73>
-show
-1075 1575 moveto
-<6465>
-show
-1142 1575 moveto
-<6C61>
-show
-1196 1575 moveto
-<475549>
-show
-1305 1575 moveto
-<6465>
-show
-1370 1575 moveto
-<534D4553482E>
-show
-1569 1575 moveto
-<436573>
-show
-1663 1575 moveto
-<626F75746F6E73>
-show
-1840 1575 moveto
-<7065726D657474656E74>
-show
-2073 1575 moveto
-<6C65>
-show
-370 1631 moveto
-<63686F6978206475206D61696C6C6575722074E974726168E9647269717565206465204E657467
-656E206574206465206C61207461696C6C652064657320E96CE96D656E747320766F6C756D697175
-65732E>
-show
-294 1732 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<20202020>
-show
-394 1732 moveto
-<3C>
-show
-419 1732 moveto
-<706F7075702D6974656D206974656D2D69643D93353033339420706F732D69643D9494206C6162
-656C2D69643D944D61782E2048657861686564726F6E206F72>
-show
-294 1776 moveto
-<5465747261686564726F6E20566F6C756D65942069636F6E2D69643D946D6573685F6879706F5F
-766F6C756D652E706E679420746F6F6C7469702D69643D949420616363656C2D>
-show
-294 1820 moveto
-<69643D949420746F67676C652D69643D949420657865637574652D616374696F6E3D9494202F>
-show
-1251 1820 moveto
-<3E>
-show
-294 1864 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1908 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1952 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1996 moveto
-<202020203C>
-show
-420 1996 moveto
-<706F7075702D6974656D206974656D2D69643D93353032309420706F732D69643D9494206C6162
-656C2D69643D9448657861686564726F6E2028692C6A2C6B2994>
-show
-294 2040 moveto
-<69636F6E2D69643D946D6573685F616C676F5F686578612E706E679420746F6F6C7469702D6964
-3D949420616363656C2D69643D949420746F67676C652D69643D9494>
-show
-294 2084 moveto
-<657865637574652D616374696F6E3D9494202F>
-show
-772 2084 moveto
-<3E>
-show
-294 2128 moveto
-<202020203C>
-show
-420 2128 moveto
-<706F7075702D6974656D206974656D2D69643D93353032319420706F732D69643D9494206C6162
-656C2D69643D945465747261686564726F6E20284E657467656E2994>
-show
-294 2171 moveto
-<69636F6E2D69643D946D6573685F616C676F5F686578612E706E679420746F6F6C7469702D6964
-3D949420616363656C2D69643D949420746F67676C652D69643D9494>
-show
-294 2215 moveto
-<657865637574652D616374696F6E3D9494202F>
-show
-772 2215 moveto
-<3E>
-show
-294 2259 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2303 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2347 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2391 moveto
-<202020203C746F6F6C627574746F6E>
-show
-672 2391 moveto
-<2D6974656D206974656D2D69643D933530333394206C6162656C2D69643D944D61782E20486578
-61686564726F6E206F72>
-show
-294 2435 moveto
-<5465747261686564726F6E20566F6C756D65942069636F6E2D69643D946D6573685F6879706F5F
-766F6C756D652E706E679420746F6F6C7469702D69643D94204D61782E>
-show
-294 2479 moveto
-<48657861686564726F6E206F72205465747261686564726F6E20566F6C756D65204879706F7468
-657369739420616363656C2D69643D949420746F67676C652D69643D9494>
-show
-294 2523 moveto
-<657865637574652D616374696F6E3D9494202F>
-show
-772 2523 moveto
-<3E>
-show
-294 2567 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2611 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2655 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2699 moveto
-<202020203C>
-show
-420 2699 moveto
-<746F6F6C627574746F6E2D6974656D206974656D2D69643D93353032309420706F732D69643D94
-94206C6162656C2D69643D9448657861686564726F6E>
-show
-294 2743 moveto
-<28692C6A2C6B29942069636F6E2D69643D946D6573685F616C676F5F686578612E706E67942074
-6F6F6C7469702D69643D942048657861686564726F6E2028692C6A2C6B29>
-show
-294 2787 moveto
-<416C676F726974686D9420616363656C2D69643D949420746F67676C652D69643D949420657865
-637574652D616374696F6E3D9494202F>
-show
-1680 2787 moveto
-<3E>
-show
-294 2831 moveto
-<202020203C746F6F6C627574746F6E>
-show
-672 2831 moveto
-<2D6974656D206974656D2D69643D93353032319420706F732D69643D9494206C6162656C2D6964
-3D945465747261686564726F6E>
-show
-294 2875 moveto
-<284E657467656E29942069636F6E2D69643D946D6573685F616C676F5F686578612E706E679420
-746F6F6C7469702D69643D94205465747261686564726F6E20284E657467656E29>
-show
-294 2919 moveto
-<416C676F726974686D9420616363656C2D69643D949420746F67676C652D69643D949420657865
-637574652D616374696F6E3D9494202F>
-show
-1680 2919 moveto
-<3E>
-show
-220 3030 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<417474656E74696F6E>
-show
-220 3035 188 3 rectfill
-408 3030 moveto
-<3A20756E2066696368696572202E706E6720206D6573685F616C676F5F74657472612E706E6720
-646F697420EA7472652070726F6475697420706F75722064697374696E67756572206C276963F46E
-65206475>
-show
-220 3086 moveto
-<6D61696C6C657572206865786168E96472697175652064652063656C7569206475206D61696C6C
-6575722074E974726168E9647269717565202861637475656C6C656D656E7420632765737420756E
-652073696D706C65>
-show
-280 399 1 176 rectfill
-2125 399 1 176 rectfill
-280 399 1846 1 rectfill
-280 574 1846 1 rectfill
-280 809 1 176 rectfill
-2125 809 1 176 rectfill
-280 809 1846 1 rectfill
-280 984 1846 1 rectfill
-280 1276 1 132 rectfill
-2125 1276 1 132 rectfill
-280 1276 1846 1 rectfill
-280 1407 1846 1 rectfill
-280 1698 1 1231 rectfill
-2125 1698 1 1231 rectfill
-280 1698 1846 1 rectfill
-280 2928 1846 1 rectfill
-showpage
-grestore grestore
-%%PageTrailer
-
-%%Page: 3 3
-%%PageBoundingBox: 18 18 577 824
-%%BeginSetup
-%
-%%EndSetup
-%%BeginPageSetup
-%
-gsave
-[0.24 0 0 -0.24 18 824] concat
-gsave
-%%EndPageSetup
-%%BeginResource: font NimbusMonL-Regu
-%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-Regu def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-12 -237 650 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020945 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A2261C63C769D2F4B60FA2C438AD7D199D8E4
-5F7E7C9A605C8CA14E21FCD81C9A515FB8DB6F99604534D06EA9D87FE0FAA852899C9D0595C7A97E
-6C55F79FAC45CD38E87B10D210CE7501E88C8FCD3444354365FB893A12F596AE2C1E70D5819EE0D0
-87D10BF8DA96F3DABD5405D28C4228C6C31BA4052464859640933FEEFD8071C0C84CDD829A9B1D0B
-A01F25A4D50EE2EA2B45160CA6333B2D2800306ED2BEFDFE155E9D9F9342EB8D5B0ADBF2460CCC98
-643FB1287CCD28ABA7B5CAB92EC39EE2E918990372B16F8487EBA30EAE88708B6CF33B6C015D8096
-C7CFE2F139F52052E3925C0D50FD64CE68236D59CB83EF56BFC584150EC38065059F3308AD6F9A99
-F83EF4E6CB13855C8175E31417D190D036B387D3952344A950F4D8C7781B307A094DF1ECAEE4D2C2
-FD747BC6F7F9C6BD0E90C19294F96C8C5CFE88FB34C477574A1B1630B8CC591529E59B20794DA32E
-61DECDA8ABBD1AE956CF74012AA01D42EE01E861B0AA6897C864788AE59DEF43C493246FDB1ACA55
-4C12594BC7B33657A9ECC9E3D1472EF826073F632BE540C35FF6FB40566773F3BB2204D3A579A08C
-CBC844C14B18C350F003B9DA23A570C362D6003893CA32F86F59B829C78EE3188B6E3F7FA81D7F62
-2825C639638DFB78B7AF1F500F5B450FA54DBFA5CBA277C794ECE93275A3DE0B452FDC8DDC2993BA
-A42F28A636008CDCB03EBF71BDCAF35019778993443F88412AD2AD0D7155A3944606463266322DBC
-0244B07DA1E9C27A27B59664E8566D7A54CC03E995AAD008B0A17E2C3EF61F720CE7F7788599C4E4
-4C709CD5C31B11107F16AD70B17B9AFE2E8CD922A7428DAC171427FFAF51067307FAB0ADB530E701
-FD22DA22C4CD3064067BD4F6089C4B2C87937DD426E4E9D2F60E608288BAC9056554D04947E69200
-61E379CF5E81BFD32FD37EFAC1F61CEBEE551B0851516471A7472C60DF89DAA9EB1DC5A67E479745
-3E69B9E22BAF4E3CCA4192D603295B018C4AB69D18DE52DFDF15E96B557F290A4B8C5B1E7A6CACA8
-1F2351B97ADFC36995ABA43803A6E5AC04A3C93495F6D38106B8B144449C07D1358210F9176E1565
-72363CFBDE576BFDF99FA329DD1346E83F79E06CF68250CA57A68931BC7F342AD295D0CBA17AA95B
-B8EEB53EA6E8E660B814E9F857CECB14F44A43288B69A9E7908D55BF19E844359879D28CAEF1C38A
-36420185D20DFB32C2E002202800E8EF3D67C5D50E919657CA958B538D537D503444865331D79BFC
-40312068D72364503BD0CC84B5F30A74D8B5B6A26AF2DB764564FB65A6BA8F9051AE2B4EA458D46A
-4569F30C6E77DC097356770362E6CF3F1661074778EBB44FF7D1E3B64FF75E77E11FE525BB121C65
-46CFD13300CA1F02D571B82A5825E6226D14FDCF27F06D87452A8B6C5DCA658535CEE2A795E58137
-D48E566B69D53A0C3B766E84C51EAA221C46999CC8065ADB2F129D5B630FAB1814C0C33B5AEA0EFB
-B6E994D80941B53079AF96D90A0B924F9B0E319BED9836B8F9053F868363D3CA554CBB181863301F
-8CB940872ED5FA7BD18CE39218B5AD8AC57D0F752D941076B1C64D99BE0DB86D7A6D96510D772EB2
-4C587F11779BD21CFE5BDE1F29C1EF9022B2B8BCD7F91153C845906722477829C40111D810480F3C
-F62DE8DBA7FD86CD236E656618CAF6FC46827FBC4898EA7672F8C9971AFE43E0E01EC8B77D4AF48C
-BF1210E98C1DB15C16D149BFF58AB0270CF015B107A3A50F5DC8F37FFB92EEC8CB6778DDB7CE4AAB
-C464C4AFF654223006A550EB52485A23D2B4AA7198D3CD54418102F1E9A4FBDE37B841E56F5C2C53
-966DB9B66B000E4588282E3FB80C2C519339F0002D2F83C979EDC5827A3B3C8EF8810A0F9DACB6B9
-998E9AF6551F56313DC4011904CB979AA2D32B11A811BC248141E4B9734D9FB7982A5671002D8279
-CAB93ABE057474628DEFC95D43890DB1ED34CFA8A20BDC3D874E7679A396158E522ED0AB969A4E3E
-C7E4474E192590504D54DEB7B260B7935C4E56548A7D121AC1F741F8CDF259EA1B5813175A77A1D2
-D30BA26F65EB765A04C09ED51F69F41551ADF399E6AA2FC09788137BEA4913F17B8EB838C38FB272
-1FDCB55FD65697FF0B850E7D3D1CE266BF90F7EC06A9A0876BDFE767D3A918B092FC78C775F945CF
-1F96E859C03DBF630D9A940939654C3549D8F7921CB94EE23D5A0535DE9DF31EA0F937F860B4F220
-A99ADDFC343D7CF7BFA0B803C12C26403F0DCFFC8EA786D0D8A8D9C367419CA8AE41190CE93A8086
-583A1E6C9D70B612C84D87D2EEAA71EC2DC12F4CDE6A821303D5F6A9BBDB7EEDCD289E80FA3B75F4
-7F481B50719DCF4A142069393593B9AF9CCEEAEC56A35B8787193D7C88113E9E1E221D151E093B01
-9EF89F6118BEC4735103CC8003CC5AD1B6727B3226CD44C497DA7052DD681695DBEC3397F9598C91
-77701C73BF0594CE93F23D50EC5BEE2FB9DA1FC966DF148B27B28EE3C89526DD6625E2887F9FA076
-7C127C609EE315626BC14D274FBEA56528DC06A27B2D476D46E9E7916590B156A5DF04A6CB15E362
-45D77021767B6E5BDFCC679670263FD891446C3371B11BB6E1DF60F960AAB4149D7753E6A5C33810
-C42C8BFF4E935003388506F8278BD7CB672F132E065AE684DCA0B9064D01DD620E7FFDFE04F14277
-EFE8E60159BA0FCA3FE2F28B902D4AC275D19F0AC6971EBE827C4A232D87650D2688345BCA78F879
-077114F0463C5F058107B669566F8171E4E284D278405580F04BFFC9902784216E0C9A17AA9B2935
-E66E18A783F723BE044389B7E9D62AA36818FF2EA406C3C1A9D2F3436F3EE7DB8BE86AFA8DAA6A4B
-1B84611350D8D27605509612B515E16AA843164D5D0805E36A2B9EF74C5F6A0B9D59A04B55697123
-27F4B1B30E9587CD103337639967CBDC655AA46E80D2CFD24BEB50815B5338E522B3A7AFE8362AB4
-F05D8BC52BBA9C5089ADA8C89529B0275AF422EB540D31A938B8740860756325B966B36817115213
-FAAF92DE63F6BAE1E0064BFBC5588098B61EB83C71F1C2082436D37DAF1ACBE186FEDC4BE7C1233B
-6F18BEC5F99002D21CB7864E4811F7AB3C03003E1E4490AD1AC793BD28FCD5EF0E6CC30EF39A08C5
-2F71939B0CEF620DC69E31E39D6DB969049031B0C92EF2DB653D97F370141456A52985076B268652
-FA2648C792780BAD637C4D7581FB2D62011D57E293719487CF2D1F013CFAA532E1C2D39178D51272
-A6AF041440BCA174B5CC902BD7390C7D3695056CB4BD7791F9FB6D88E7A70DEF2C97869F5DBC5BD8
-23C517C7B7C39D624DF627DC9653EA5347BFDA80B723F05F6DBB4C9EA501D862ACE05B9DBDF21B70
-56FBCD8C6D4B85873DCEE6166C8B5ADC0316CA12D9639F361B15A42F00E1D62EDBCA1111972FA0F4
-5758BECB31DB38316F3CDFE1B41748C93ED58B67E9B57ABBED5924A6D53E99FBC9A994A6489A8BDF
-13EB685548B4DC6D62DA7426C22227D4D43B6FFC7B5EA91C896730253E8941AFEE588359C2BECF6F
-FC415B9EB6D31CCB0F6C7F85853E6449FA6D627A97A3CE8303F148393ADCCCDFA2FE085C6908BE5C
-3C05AF00A6F02840206C3253A559AC5C049BDDFD11AD9B118403B84DA10AE3C470CB9A9A2D1D7B73
-2F59F5FE146DEDA60AE750F551AAC934621B4470E1BC324C436303E25F81D0DC3188BE0D6FEC5414
-C20E4CB18952E12CB6423DF7124627ACDE145500D77A97A8BFD9CB50D1FAA008E2CE2B2505A4749F
-1EBBB092C347023714055A9B63353AF9E7FEE05BB54C9843698101F79888A91531773830C2C967B5
-88D3ACD2192883D5CE3962D51084FC653EAE2C5FB2DA41DACEFB5C76812D2EDB5B109677289CD199
-8D457FB1023A19AC67295BBC1A9A20A426B06A368DF3C5DD083CB1180D287F5500F2C635EDE157EE
-FCEEC5503447382D15C748C1E35F68753992E5C90F900DE54D18F8E1B355D1076ADFB1F3590135FA
-D1A36F028E44F48ABB149B80CA9A54614D467F8D71CB310BBC7AC7100261092DB8C5BFD39E0AC6BC
-2C9D6CBC3A8C05FF8A74CB21608EC4A4CFE4CBAA2D056DBA14206106044DECF59F957EF8A9CADE4C
-9B19D8D30DD4FDE6A9548E50DB51ACA73330142153FC36B69C1C8D5B26D0C689B7040E81AC2C864F
-D7C097C99BE5953843E172C97AB5684F35FB03A725A89DBF371F08DDF40A1531FC1B676DB0E1543A
-EC6E97D3D2E4AA3D5831D8B3C952ABBFA112352814FB6FAB61A0D680E6640F6AEC8426200CF61286
-F7422CB2F78C61EBAA36D47EC16D7FAF8B4AF31D090CDFA255D9D7C61D46CFB22A7D6E1758E71ED5
-67E00CBD8E8F468DDFB477F091A2F915627F22FF47B876544BC1F03B6BBB98385F009C20BB1AA2A7
-A78674692B8EAC2E3C8069B79E679338DA57F72976810F845BEB6B9ADD32B95D78E5E60F16DD1668
-9C05FD82D36A3115BE8ED494A74DD211D58A2CDF983FCB9CDC29BF7F0E29988FA23560EDF514BC1D
-183F3B2A22C09FB179B47E05ADEF48DF02F31C29875D1915037B19407764A4292FE44E741651A8E3
-BEB5F0D972B6327090F664417C84F84FFBF0AFFF8B1D85C822D90730AB4140C42A51AA8B1DBE4398
-4EA8566040EB8B341CCE23FD3F69DD235A080BA5C69AECB9BC732BC2D7D40617DDA6B79FB6EE40C3
-556C7DF9B23DAD89E94054B1345DB8402AE679FC4655A4A776C0150463F8DB2BFC0608EA1F124E22
-1DDAE6026B5E5D007A7E4A0D6B3B0CF3A2669E67C5E4F01551966A7BC48F2F4B6A87E740D8095E63
-F77C7A027F26B52F2299DE5B8A2F6209BCF3D31CB0235F998F781E5CC81E31DC424E008D46EC0920
-2951E5684804A0592EA47D6C788A20487BEA2EC8F2E6C1D7F378B62DB43CA43C4B366F8B4319631C
-FE9854F0E10321CFA3B01C873584863BBEFC23C72C05E695B56E8A52E89AA2DAB543834D34DCAC5F
-ED08DC51825C5257AE59850D101D84F4CAA1D29FC932F9E0EFFBF7A9A7F3685F61F0490CD3CC8988
-2DB52A757A6AF4C4E67B407BD2316B1C0FFE7DC54E43C87B874F57E4903334E2140B011484863CDC
-ACA331175F2CF3D72E0042855983AAF8853D3015E870FF0807014C31D55060DF3FE1FCE157324481
-2744AB51322444632F9AFDA6706E320FFE82B8CBE242A19DF00CE73EE48E25FF49D5871BD3E60652
-298FE3E8D400609E232E0DDC794C0579ACEF89E841B2EDCA50D51151F65E8C1CC3B01EF1870558F0
-BF5743718C3E068617E81BFE120C6CA16E0924BFC2541177D53671CAA3AB641C41557DCDAE1A3461
-47B5E999C4541B08B4AFCBC187AFD653D5B5F8386DF6AD8FE69E21BD0567DF494F736C6A184FA4DE
-48DC9F347787CA96E2E00A296C2DA05C2AD9BC423E9CA428D7F1FA12DC9353A302FB8C529AF8688C
-BB543B45B2717EBF8F6C497935F4F3BFFD285E0402AB7544B3CA4643AE5A8B5250ED987A95FC1F27
-5B9707ACD0641BD0EE2AE9758494F8D8A51DCE408A38AC20EAF0852D72D84D0C6BE973326793AEB9
-55EAC6FE0A2813A355DCD22F6F2CE56588D1C055CDDFA98878BCEB6A018DB22922D2B600A20F8184
-2E665DF41013CA0947C4237C2BD60A75E2FD1A3FB8C8FA19485730B87461AD466ACB02DF8CA24091
-4FB090B3D2B41EB6B8FF05E1A59D9FD668AF70BA5BB72778953BA55FC5F9F626043450E1D09BC83D
-8605098ABEF884639A37809A32565CBEFB3FF39EE53D6C18C58C272BB928E4410E361E59A50F242D
-69747A032617C52DEBBF62364AB5A96EFAF642D9D82BA679B1D70FAC10A4EB62FA5CFC308E86368A
-AAD7E75948F43598CD1C544A0D4091374D7E88D4522CBE902391641327E888E7748FA889DCE67ADE
-61699E7D77763681CAEE9B1CA8837B2F7EF9C18CBCC538C465C8E2DD34616953CCB6030A222C728B
-834911C1A179E2C770289407AB28B303E724D97F747D6134B425216A64C6E0B60F633E2B85300047
-E4C90339CE030A0FAE31E830C8ABA5AB3386A3B69267351A7BFDD66356AE5E57FB2994452993E90D
-E7C4E260ABAB93C37831856A650D56E44172FECA01D6C7C380F250B82473960D2A2A5FB6B4DA668F
-46E624ACF7FA0FD4490F485D640A3ADFC9F8652E7A38CE5799F770C3606DB4B8B947F93967F779E3
-A3C0572F13A5A187D31D7BD12A5C7BE23CB6ED6192086241B76C5BA6983DB9C93E4B208D707D3760
-F03CD6272EF3A4CE89B8E52E6AC5871A3D03EB975759AB4BE239E5EC7842CBB333E692CC607C722E
-185D3C39164DD320C6945629C70FF66A5237C0A9520A1FAD6EB9816069351AB0F135D90CC0982B14
-7D2294AE4A38A527EE40BE9CDE2512AAEBB590E134388BB171D0956A7C4566D65A9A041BE6C4F883
-6B3EC3D2ED1B48B566A783292B15B6127920D247D494F070BB20BEFF60640B11B276DDEEE49706E8
-B2B21BB40B7F00AAFC594C492C25DCA774E0B80D82E927448DE2E74A9D0DC7AC9260096EAF187B6C
-D6AEAA6D1DC4205B4411122751A5B22688404EA7C5861730371FFAC10F5AFD4727A0E402AB5EA757
-606B75EB86A05E8F774D6E430A1A3FE2A37EBB06700474239FB1CFA05EE44B91B82244C575B52E7F
-AF934B04EEB0D933FEB57EBE326D75821C8B23EAA85B583AED4320B7F04B9F2DC591091216FDE52E
-064BAAA9C2C9D9714B95A4558C21F3CEBE624B5403B31508F178581AF6863083ED762F1E2E34A45C
-FDD71660D626FF8648F5D6C5E580D4765A67FB6159EC8077A9F0A88038C8D3D7C77FF0926E2123BE
-874F7BCAF129D55A5B5960F824BD1728ABCFCC51D23936DE9A25C408D786E44C3A2BAFA4423177AD
-060D21D38E15E23EB6FFC0B4120E814695D423EEFC2744A1FC81B4DF89D76F0A6803D8B14E75538C
-AAD03A72517B86514F6952F6FD619D9E910D980F00964DB325318C045BDF79647F453D4A5CF4E61D
-D5359782827229310405FBCF6107C3AD9DDEF9A9A339D5D5A6EB2E7838A0A43221BD62CBDF732DB0
-A638A52016FB35BA7761AEC846A023D3BF2D1BB183543E81EB7CAC1E5970CDC6F068C5EA118C7AAE
-528D1396E6DC939112DA4460C890EAD5C01BDC438F5BB734218BA6270ADD0DC1778FD8AB16831D6A
-302B814A1A44B07EDC65956C9E6CF4875DF521F3CE5B422F71081B6D69BD270F739095C9E81C0377
-934A8BC6390C420C4E4CDD9CF7E32544C68D884E15ACA3BCC07FC8C132D8FB9D752C15D75C52C288
-57E2EA461A6FCAD90C56843513F74461F18D7164BC597A28AE4BA7C86EE1703535A9B9ED50122627
-71FC12F102E800E0E1AF7BB46681BD2B14B614CEA91B7B2AAA35235DE76C0E113C92688F8EC81277
-D58C3406778E1EC1CC15F1CD9A137C8FFDAAB99ACE3BFC782916F1A877170589A92DC921E6740A22
-B84DC6BACDABCC76E64C79E3A588D80F8F4D376E1B426F15751CF7391102102F0AFAFD8B22DFDEB5
-48AEB5F30B1673023D22054A13391A0EC08DE6E7B685A0D031AABF20B7C62187C0284892D5EAADF1
-21BA28263EB863D5E36EA9C06A77CCFC0E17F593961591F84D82AF823EFE41044C8D606FEF83CCC7
-B0E961E7994DF8A3CC36B209D953E250ADAB8D22D7F2B4E2C9CA39EFA2D93E56195C1560E30A5190
-CC5B17FAEFCF250DF79F6B624A4B917E11C332222FCCFEC4F6A47BD9E75DA9854FC3F7AE554E91ED
-DE144D7AEF38A0E3EDB5E5A5626374DB94F022C8CF549093041DE00D7269B7CE544E748439BA2870
-718C08E58FB4A77D93EBC04B7957D272AE1601D41BF85A2BADAA0DF73B0D3841D4839C85677FB2E1
-5F1D6CE592669FF4BBC9C69DBA334DC37706F2F6BE83D5863E8CD6A30C08640AAC4C233684E66B4F
-E6B62D4A8BE9D531E47BEF5640D9B5C27D990092BE1597F6995C8A77BE9C18AAE6C1CF130775DDAC
-41D34438FC7AD8E042CB56CBF2944932EBA7D053E9376FF398367450E35A1945FE23E05C921096A1
-5454721FFD0F429A3E06DC3ED36F1C170BE79C66996EF8337AFF85B90C5D3A4A94455AE9FA32E211
-7A63E59001F052D5F6223125BFAFA40901E98960ADF7BB886729DCA82FC3B8CC52B37FF2517299E1
-D769057F8154FB95582F02CB0BECC873A9C71796ADBD3E91324FAA94F2C41CF57C30B5897D031C02
-D256C909E080E70BFD1F32E69EF67031138C2DDCD1A8E4B65E485C23C3E450ABDD9815512D6F34A8
-4B9DB715DB2C7A93BFB424316E1AA44397749CB01088428F149A3B4324737ED9957FD388248462AC
-1B2610D72BF5C073ECA567E7385CC959E37CAC7E05470160FFA5A9F63B8E9B082937E911586EA165
-374938F492EDF28CE6020953A5B5CCEC7737F9D9CC8538C4339567AAED3794ABA3B9F4EAE65466E8
-E326F6C399B36355935FBDCB9972F10B13494DC25097FCEC5A6398F275C8C151558E74C5175F7BAF
-4155E36B733F75CF9D5C5979B0764F14D8306E06BA24BF791141E404C69F3F8FCCD91B9C58C2C671
-AAE7D4F9E5D6414E46ED633A5F78AA5BF04E652246A066EAD9E582B181CC196EA2D3CFAA383B5D0E
-4CAC9336E119C08CC6AC55CBFBAE147C623B400453BBF447E96DE036FC025624384359EED7C7D5F7
-858DC0521377CF647A157FC3F188DE5EEF094DBA125510FDE34C570D7BE76AB5DF0A28BF45DDAADB
-EA7EEEDB936332DFE93081E0AFD3FDD46BED08D6914B2EFCFDC41662A33B90B03D76D34F48D30FC6
-BBBB600E90E6AC7243FDF026762A44B4D6E4ECBEF48C9D7B696AF29EEE063E557D8FCF0F09E0136F
-45D17E608DA36E59F2AECF8493F8D62536119B5F7E1554DFE3F6E8D7C9A2C6F557D18B4AF92C9F6E
-050975C3B5C54F9B5F4E39D600B6FA2CD6DE203A174028CBB2A201AF126D1013C229BB82CFD013ED
-199D01E51EE2780FE896E01C63C655087A3E61A7F1029FA5E97EA1872F1B45F22282DDC317E17926
-7368CB52DA9444F6055A3C653659CAD2A1D8712BC2B1B32C1DC6906D957FB88524EE066156ED6BDE
-B8D832F9338F9912E29A250A8C4674E667C1C278B677AEC9972BE83CBA3FB779893FCB8F81A323AC
-91474BA2A2334A07BB5628E905C518E634F6761A3289056F83D5DD7B3890987EEE1C18FB2D379CC1
-905F1AEB3B3D2AD578F0D6C845D2D40C4BCEE3F71C90E68E5417BB8CDDD878D83BA80AD8485F4067
-E5C3CABF28AB56CBB219C0AAB8FFC6C7E192BEC8CBCA1459AE4450AFCC81B9548F40CE2622E5A7C2
-81F74DCC02DAD57EFD92D072318DDF05BF42F1EA8163071E23949B0179CF7DE64677CA99B23CB926
-B3E294194EC13397EA1DC9A5E1CDCD828156CD71F81B64167D4FB01E6002713BD8AC6F82B20CD369
-9C6CA4704DC5C65A2D66EB155B7AF1C9BB46469416FB49C1C7E17A30A5F045271D7DF3FFF2F42C6B
-470701C381E3456A500C6BB3D0E47B4D91C5F34B49BB6272F1F8698B307D89EDA3A1565DAD1C0864
-627560CF922DCF5B34C67860352390B282F95394AA2CDE0E97CE3ED39546A6AF1C52BFCF81A29BE8
-2C47C99E8050E4889E4575B75F39E662F2DB7420673797E2ED3D67CDA7AE2C15D0A0A794D57D168E
-BE13214E89E0209AB2C0EB7784E9491AEFA3C02D0DF3AE5365A0FC4AE023CAB528162C7A1B173664
-9DFADDACA8DA5FA18B7D6489E4229E9E24D38A620464A744A5C60F6F9D334B908706B738AED18669
-8A8B278341FA4D65A0A88680BA484694921512F7DE93337FC1C02BBE6E64AF2DAD07603279D87329
-1D1F4D39C1DD6D89C90F65240F4808F6F1115CA55B88E242565E59F3BBF1F10EC7B88872E9AE61D4
-4CAE185463EDFAF7DF63DE4D2207D307AFB61501892965170D2945846FCF5973A1D458607F50C15E
-06E5BEC715E0C156259AAA6C735593E5564F65F443B78CC7512EC35A56F126DF9D30974A40872E42
-65E1AE5FD483CFCBBBA26DEE426CDC4721F19C3FDA86ED7AD4FA1120F63669BEFE7002B128CEAFD8
-C63E8AC09943B6CBDFB3D2476A026C00A8FF81B1F651B97F310C82ABA5F388CC1DB5AFCFF5996D52
-52A6A42FA4D972E41EE56088F78CB966F9051171C472C774879AECFFF08BFD9CEA40D7C298922ACE
-64F28C14E0B81F4DCADE81D71DE3983D87D905192EF13CEE71B2D3FF1A88AEC671EC318917DF98A3
-C9054E372D22A3CEC82FCC217F47319A40900312F6E32B536B9E7A7FA0837EC65CCDB5FB0D414371
-17596CB39D9382262DE6E65379D3A9709B2CFBABF5FC5D5B352425F06F88CD31012A2A4147B112F0
-C1C0ACCC808CD625E0228EEF66661F70AF96D3DCFECD402700E4F6522AC9A856DA466D55C84F65BE
-2810A1565163872D62EB81333A698ED7B68352CACCA2D7AD38AB55C19E4F5582F75818302F5FDADF
-1DCED09D94872F2D48FB636C8E38C7563C72C771A08C6B1F041F3532BDB39006C89A33C09BE1E3E6
-03622D891F98010BF1DE5355F557A1E09448D486ADEF565705277B31B8BF2B86761E32631E3435B6
-88B79D566F1747BA456DDB43CD239FB47FF7B425EAA4C657C8EEC26EE01AED07CF916E77D53634C1
-37AEEA009C6B515B6342C54BE2C7B95955B1A9DA277A0ABCDA2346E88018C726F481F71D6011AA42
-F8852F2E5749518FE3B3AB668213FE1A05C10A1C53953D75312631D6BBBA01D418199DFEFF8CF548
-6109B099FE8E2F606165FE30F532C03567785D5362AA873C9D3EECEB20F1945D55F49B0CCAC84967
-59FCC7292E46938943C262D78F3212D3F9D0F7B103157F423D71B1ED54B2A603F4C269029918F238
-EC6828FFCEC66009DB9C9E59534EABB183F31D7AD4C57B1BDF0BD2CE5A421882BC10CC1BCE6A970E
-2B586BB221567CCA483989DD0B8DEC424C1D1FF042DCB7834423CF244EDA28D2D969B17440CAEAF0
-24A6119DB010CE366821AFA424D1B8299609C04148275AE6E5257A7ACB3C766C747CE99CBA2D703C
-F19B7CF301B634D8B613DDC4AFE4633A4D77BFF8E00CFB5E289EBBCAC90A24307E7941EC1685CBAE
-400CADD876FCEF7F6557EEE167D2035A05120293527700DC510B038A496BE1D5CBAEF24ED39F7421
-1A93AADF22214ED606A80582485AFE358E3A46D0671148998A3B3BE209467009B43400870359D418
-9A8CEB4D5866AB52D16D9CEB1EAB71C07E6CAA34B70E3096BF7604C22C40D5FBFEEA616DA3BABD59
-DCDB97D883FC8742B8267A16A99B7953225F7144568D566E64542C92E538AC140C851E5D295528EB
-7CBB49909B1CAF6409C9BCCEB325468FA0B5F7CB2987382616B477CCFE4F4AC79E4A6F7165363543
-F04DE5B6F6E1C2E910CDC3CDD6C4C92737198F892337DCB6647BD226C820AC99C65D8E7772BBB74F
-E65DCAA8A22C33BC168BF48E40A82700A3A7668C5A9A71E397ACDFEE7D556C5C19467B7AA69C260B
-727407AC837BDB7D67DEC055C1F45D8BAC61048C45BC9FB3CEFE7549EAA2992D2EDC126FF7A05EAE
-58613332A2BC1465B2BC0429162B907D65F793D236EDDD8D35405866D71B25F62DC4A7E06D4DEE82
-840ACCAABC0774F8A63E9C0F7FC980B3583E7A8B01C46590E3BC04EBA565C2EA94F057D964A78A90
-EA9F52ABFD70F84E44E434BD10A42E98C794065724341F907E35D3CB257161E01C7084E3A0166D15
-CED65DA7BA87DBB2EA33D39BD99AFB93D3548358D08330E807F8552CECF63C84F805205491BA3A1A
-622E70C232FADF3BF2DCFD6F0539158D3306506F150B0518371912A25EB96163D73E9EEED42EDC84
-D688BC7F7708D9DCA348FAB4DF62E5809BD094842D0A31DBB7C4B41F94D946810C5EC10B69AABC2C
-91A59500B2E5D37F4755DDFB7AE4ABF757F4C5BCF77C7F95E6A616646456FE8F18407080BCABBFA5
-7704287AD26222DF91AB2613951E2D679472F8ADF06EA2A20205EC19972299A78BAC52114334470C
-5F5890C2F846B4C6042D73945127F2E3910ECA1C4CD7A16EFE4B4BE38A15AAA710682C3836A8CA83
-FD384970139D8B46FB0AEBB002DD224199672FFA02250FBCFA4E649E335428FC71F50F45E498419E
-DB0E970F46894A48F65580881C9C4250FCEF65C9B28699408E18B26FE6DB7F1CBDB767564E73CB59
-54C6D639CE33220C894F36E70F71C9F9AA3FE2AE0AA0E3F2E304EC5ABC661675CDE2E70519E4220A
-E26FBACBD01D5169EB844750753E6CED53E3678FDCD08AB93E10067E9C64F38B40B76D99B6CD92BD
-F4155A1EA5CC824998B59AAD06E09E5F15EBB2288D66EA71B296616734FEF2796F07FF0D8B047074
-A1111D68B99C2B70FC56E74A51B062F4998ACC85B1943C9477E436E5CD7AB18DBC898D21BB93475A
-623BDDA71D7B895BA2D4C10F4B90BF335126F4FD57D73AFA50170F6B3C364922E551D40E35DA75FA
-891762FA23401D39260F2E92C7807C746F13BB35CEF9DBF2E76E66A72FEFF095DA482A4DE8A42091
-7065736CF4DE904FB52E649A32255E2030A7B31B686353492F31C064A3C4B0448C4BFD44B8E15384
-FD809B8761EE26A7DFA1758D57CE4F0BC376EB2B3833534B15A83436BA553955ACB5A7A66796AC5B
-92DB5388BC53EFA27508B08E82821E5CF669BCE52BB860780F749B4F38ACDF5FF12726BF3EC2743F
-01014CDE96FE6B4C40A034E9EAFCA2A35CCC776C2669E6AD138070A40F48ED79136D7FF57E993E09
-B81C543FBADD350FF5B5F7A46F060F88E30FE2D8233832D18B6C323EE017EBC1DF5C838321CDC8A8
-4CABCAB20B60A1A3AA028F36EA6E87C850AF8AF7CD50AA6359038BFA8818821D02CEE8F51DAB8C05
-F7AE9797814D97F3DB8CCDDE45B21DBB15CEE292FAA534A5F317B357F4091F3DA357325B8B9F5EDB
-45865415973C143E5E5BAA483FBF2D06CDD4246675EC58B84C6AE65CA743117FF00F229243772561
-31A7F2BA26A9115AFD96C18216CFDF41B7220ED0CB3FCC26C36380007B382A02AEAE428887DC8BE5
-FDD630AC57EE3DC156C7B8B29E687F24442E35CE10BA4087295A641F7139C831F7CCDA6CCEB5DAFE
-537CC1A97C5A337D3C48A6AE947F58A30DC08CC7B58DBBB4737AD52783C573FC1E9408F55495A80E
-7FDA61F0B9C4F090158F1A416249EBBA936C27BEFDEF19D1BFB839EB70576A010706D8B95657B218
-9C2AE04C11EF9E57FE09880273761FB4302C388BD608FA0C7F00F033C9C00F4E3D5CE2D903E0DA52
-E69C7745EE9FA75E2AD93DC6CB5CCFCD3782A699B807AFC36AD1F62B05856D5DFD6F88831B90EB3D
-CD523582A49732E3FD7253126D39E8AFB8458B5F7AD7F94A8DAC13365F433C857AF4A42C0A08C4DB
-9887C4957259ED22D13CFDF5995DA957EA5A0F620B0214FBFE08AB6D552DBF048D62CEF6EFF12F15
-3511ECA7833E0E3E95F85E6AC0F95438AC4C126E1F1ECF336ED31CCA7EB216D279877123FD9FCD8F
-B5E52B587CFFC4428456DDCA816819A8A4A211D8F1629E5D42BA4C5C356E580C8A22C61D987552FA
-A97893816DA73D423686E4EBD44375C257F031318865A20F22115E72BF1EB9F93AAA169C140A33A0
-6C35BD4526A38BE79CF40AD1EFA10411E8F3300A8A8B97AB140EE6734E1BEE6C8EE443D698D34159
-97649C6F10F20ACD80236422E215E146D744A262DA3FC88DC0D86FF66512F49D3F957D3C5CFFEB42
-4823509F33F155057A4C6F37B52F4667767BA94F6B8B62856B553F307E5D230C44CBFDC9A97A45B1
-39FFB2F2565EB0E22026972FAD0FB7B9576FB6F368B61979943A398773600E7EE1DFEFBF26D45D40
-BDA66EBB96A56EE9CAE0B2420C5DD83E24DBA9FF885BB844BF3D2BF93B07325DFF60C0CB5FDCCA0A
-C8FB5A2E119D5AF26E53AB8E3B428481C2871DDA26EF0B621CD8572B3C664BC7AAC01A1D05B98F79
-1A7080D294BE81099BDA7982432F3DFF4775C44D23F4F1B2E0162B61A8B2CB5EE8564BF98E2ED403
-2219085FE6194C19DAC98A421826CAED7F1AB1477AB327506010217283894235D7DBFC1153D5ECC4
-8AA7293F19592B4D7E95FE55151889BCD1D7FA7DC2370D2DFE11D7E4EA34B5C7A8E73BD3A348FD38
-9EF45B6167FB90BA44C23E912F9A4F2FC0427ED070592F7110183BFDB2C400393BA7569058227926
-351F07FED4F33633BA03A72AA2DC6B598E49B96021DD868DAD0F352E5722FB714F667C15C68D49C0
-3D822D82677EDFE86FE9668E537DA284068C9B0AED83074C92A5B939296D505B837E6A9DDAB1AEAB
-7455A08A114C2222B339284674B74BF4CA9EE0C020BF2A148B439C71C6BE51A94CB64FBE4A7EB295
-5A455047CF5CB348B062ED4F6471CBC3E9ADD9BE9B96879AC7BC71BCE02FD02F17C6063985A5E898
-3D205AA1489DA13C408990ABA1C54F2F501AA172F530480D789C848118C0A74EF98D5F607A067BAF
-F6030D887AC6A6497F9A0B38F9705F328AAD4BFBB634F739386177B07F22D5771282444E5EE17335
-B4D0EC86117C697E79A5F4F65FDC08E4904DAEDAB20067EAE2448FD4301849E456D085F392DD1316
-7ADF75CCFDB723E2904A9C0C976D6B84DDEF9D92B0E15FB246C3ECC2D0BF314CFB957757B3A3E8E5
-801F520644E4601D291DA0F7507C06F3B9BB36FC1C70EAA444E14E56C0CFF06C7F853DF36DA9D8B6
-AF2544B853DFFF535A7E5C6FC145250CDDA229956019659D0D253A19A7B51A4E538BDC01F74D7704
-9949C2C97C7EC6392C2E61CCC0992B66DAF1AB08551063E53180D2A67DE496716CCBAA45462D9F91
-B66A22545962DDAB120511FF08627131B95E5DEEB8B4DD9643E7B2AF65C0FDCE11F5F1E8DD468DA1
-8D41C8C4F00EA73836F4F70EC50FC3EC6D358C0658A4261C6D15A582A2C7C994E7882E661855B352
-014576858A265FFBC425160669CE159D07EDAC04D060B44E5800A7AAE8E339C29B929AA81D2F515C
-46229D2080D5917AB20AB6B34FDCA8E4AF64ED660A3173786FB1A1D005D575C2A5187D3F7CFDC94C
-CC44A38C5CD523E9DA726D8EFA6DA7B6131DFF3435FEE838B2C7D6B97934295F06202D307FF78D90
-6699CB9C5BBB10D1D4DEA5FDA5BFB094E704607083B646D37F5DA1FC7AD21B813F44D8C1AFEAB666
-55AAA19703BEA2E77DF3BF350E17C74B3447A452235919452B5175570A006C7680AC05E8950A62E1
-1D7E3ACA35A397D1E19630D094A86807593C97F4C484E4E06BCFF708B6DCA972E3A0009E1CAC0EA4
-141530F5C1B8AEF5E1B933F37FDDBC4BE22B74FE346D1A3F5FEC0818F8E61765568A2AC04713E828
-F98C449D9A1CCE52D10D61DD8BFD084C8D099A75D89DEA64D5A7CC68BD5B0593D97953DADA976383
-F5015915618AEC56D71D1DCD55B89736395C609B315A3F1E1255432FDBD37F38CC43C354FB4B7C44
-F1A7318B0B7E99C3C08C33B953727B6A6328051783A0A33E3CD9E498346A3CA6A77B517096EDD52A
-E443B87643A646C3A7BB97F742888D33F9B3127E61942F4103C1DBDCD8EAC8F9E259773066736CA6
-53CE57E8822651261D847C131321BB9D6626A1AC50D047C0BA47B411DF2A995545BD68EC0287CC9B
-31D5DDCA8755EBEB10ACCB3903AB0FD5788E984220443B8459E7C078DA4289F1350905881AD6DFDE
-C47302B0ACB0D4AF8CAED02B4B70DF3CF8FEC118F0FC2D3DDE3E494CD160E676E300BC464BD4400D
-B50EE43B314E0517037BF971ACD7CD327CB2134893B8A0410E68DDC518F5DEC966C7884CF5FDFE74
-723177F20DEDC039D879056CAAB4BF045062D3904F615C5CFE109AC7A35599C94024B41019B9AFD4
-04A80ACAA4837929F5C9317680A13D157A03B59A5588DF79D2E113F5F51021D6F6F90E8BBBA2C252
-FD10651BE80BAFD59C53A3367BA3C28DB6EB9DABF1EA99F47B503F627E15DCF3FD645FC52C5D5D0F
-2F07DB4C25C0D1E1C00146E1C4D973E613CCDBD3F9450CC0F5343D79F05E9492E86A1BB889ADF405
-03BD7F3E7543436859184A5B20BD8A172F350D846B7570803990ADAA48D4B9155A2B4C4BFBEF1E1A
-065C08E03928559735BDD442FF1E83E1FA20A5DA57D8BDB2FF5427C034CF0128AF111E6E73099E04
-6E0C240E80A73D7BE72B87834E45898D475521CA3306707631F5C6136199F354632D1A085F12A1C7
-C473868B62E534D15F5484323E63D0574196A19EF175214EB35A90873EFCFB92D6CF68761D45E37E
-AA61E1A1979A82009507CA193E44B36A806486665CEDBCF387053ACEAB979BD35D30978FC7659ABB
-E844F4ECAB3303318ECE80777A5FA5A9DD91B3D06804C4B4E9B4EFCF07EB89866D0DD8CA390CFD15
-98651417114D78776B1A1D36B4BA17746D6BE7FC123D473EF1EFED1C3BC1D555F914536869FD5B0C
-35F9C83F65B0E6BF7A627B9202D787D72C600DDB6BCCE613D88492E13CA0AAAB196E8A49928C62CE
-A4FFE2D0208EDA334ACF47F20BD793124D2C5546C03F4A364369A76A0425262F9D9118AF54E37D32
-E33AB25DD533A49DF5FBF1BAF4CEAC2D9D378CDCD13B00FDA432D9042F623DA41AFB80699B5538A2
-5403B0B3EABEC9E8EFCF42FEF3EA9F91766902CD206B0787C187D5370B60AD6DCD002DE2DE8DCDC0
-B4719A797C5E26BAA67665016DA0D967FA1346F9588AEDA174CA001B31213617FE19EA218EC23597
-79D979E2663166489C06993230B0D07973A117C4E3F4A4C93CF8428248DD5389414D679C69644142
-67C7FEA17E35B0CEE456667A9B1875C81B2302BDDEA2818D6019FC1622A82051F60584ABC904CD91
-8676305DC03FFBCC64FDDAC8D8AA9CE2EA00D6C97BC63C8A617DEDFC0E40775649438E9F61AFD179
-5E3B20560B01BE5E0983F136CF48AB206954E41DEE0D9DDD953DFD01CAEB569151D6BC0DFEF29D70
-FAE3E198E7EDD8922C0E0BCB8BCCF1C016142C1A8B337AFA7A05A9D7534B184BF3BF827F371E9BD1
-9A71244ECA1BA73D484CD2FAD54DB2F0EEFBD54B536EBCB5094E6BC2F5B2AAE41F05B4B311115876
-ED42C34F8E643B53372E3F6350DB8A38445822EA9A33E27FB0CC42CEDCD1FE2FDF723FC47C996EE3
-56C402112F24D0AF899B2D00BEA1CFD427998BD22B2A09046D6737814448ACFB10D387547D7009FB
-384AF0562C85694C071584236D0F1F3D3FCD0CFB38B77C81889061E668BA7AB37AA60F58A3967DE2
-6F939B79CBF10A9DCC42852561D8D6754F1B660D216AAB1E133FBAA321C56E2584BE5C9BAE20CCF0
-0E8DBE6D9C2FCEBEBAD945C3C04101D2387351F132628786F6D9D4CAB83419288D31F9BC600D9664
-12E6AA457CE6CAD26A4C0671097B98C2384C81DD8B9A3222D4F4BBDA7017895C3EDC26662779AEE7
-40D9D7E24185FB821970B0A3A94041A69E4805EC88EE1EE521981536F2844FB8F5EF645F67D42CE5
-148E2DDE43AD5AEF200EDB3A2C7866C98458A92666E5F9E070178BCC39F65A893102A10564AF4E8C
-AAA5075D2F8CD7FAB0401C03AF299EA3515CC93066744EB5AF7CF0ED06675BF049A6E3C211A89E16
-DE5BF0445A7CCA6EE8EB0347454950485D884606651E5887FE8B24323E2AA16DE22FC1FC8C4F06A8
-2A1FDE5758976024068197E1F4506E4D3D8A16D40461A4586338B374A592DC60334402F76388AD6A
-457DC3F54E6169CF7AE3959676E966A45609621055EC3AF80E182633300A4418E34A66DDFA6B569E
-5A13C9115B5FD3EC1CEBE50FBA247F60803AA83976F00117536342DC3D9890C49B2AC701D370E43A
-955118967827760F7091469C5406F08F18D7E3548148CF0E312B1DC71DF67A5E7A1656CF2F47F3AF
-F3DD50FFC2FCDAB7177285B29C17CA43019F62AC6FBA52D1493ED7C427526470ACC8389BAE827759
-4958908F517B2863B83292EB5AB3F57FFFB08393CA610FB1FE905D88A0A16AC395E2A2A6DD033D6A
-0D68992F830B2E1B95FE357BF672716E88FFB92FFC3D62945D1EAD22BC68C51EE0E10A43011DB94C
-44685A5C4576F6EF44CBFB45F2A4BF110A01657DB51FD499767E78058199B31DFD60813F1A344F86
-289F9378231D5B151C92385E3650B4FEB1DC91018EAB8474CBF69FDC1496A4D078D2C351C8196451
-247A9DCF8117E5B637371D8E22E248C64D999015C3FD2311E9950B8EE0922FBDD3D7BFF766BFE9E7
-CE0BE12F318FF2A7B5A9C6D00A54401609304ED2C55F5C1EAC3D4B38355BBD85D66D61636FA6E30C
-2E82829376BEC979A6FEEE040E452359768ECF90CC539A546F17AE906C76F14F86FF697797322B05
-1EB311A759FE260C1EEE5DACF383816AAF1294CFFA7BF87A4D9BC595EE8F2C2F86FEEE11AD959D86
-F22FDAF4CEC098942A57E57813A0FA99239E994FFF353C1E781D666B8928CFC648FCF0869FC68468
-BDBDA7D280DFAB8B0B3A4CA35B074B686DE8D372C61FB32305169A1A9912F6541DA16CD6316A6EA4
-51524757BE5CF6E820011BE3859FB8B8578C100FF029680E05F0E0BF11D33FE19460C85EA5E4C0EF
-28E29407C8AE6BE01CFA0D5022BF9FB01416FFF722A784DFC8FCE330EC95737A854471D334FDC58F
-AB42867A7B62836A8B56466E9A6C1247D46EBAFFB905CD4321970F59FB8D6FF65FDDD34BF913AD32
-2E68455C5FF2D23C1A5EAE687F259BC982B6A384D35440F7C693CF50B9ECAC0B5578CAEE87588B56
-2EB6B7F42034C9F2E545EC866316552354EB3728C7D26527ED75174EAF635E048B08DC5D23E88981
-070AD5641A652F2344956E9CF4C16E652A99F4A644D1787D6D36537489DA4D74E61B2FC4DFDF1D1D
-9D58F9C26C5EB63200526AFD168AC57D5611ADE4D4A382FC28BB60F9E7D626A6C67AFBCCD1183C5E
-3CF2EF210D0BF5CFA7BB10FA3887BDD4CD96EEEAA8F9219AA2F10ABC0A960C3B57C0EC0313AE10CC
-FF1F522124CFC8D2D49BFBB0C193EAFFC5B48FB3FF30B21CB76F0A4C0F1377C9223145BB0468A5D7
-1B9BC25873EA12E1C60334571C67385C00D0B570D3FFC6C7FF0DE62C183C76AEEB12DFFEE1459E0F
-C818C621B8D12FA1357E2B55D48935D70BF140B4CFFE8813DEFD479350B20DC2EB1D3CBB1A2D3DC6
-EE975D58C89D61FC50E6A0197DA9A586B72255023DE47DABEFB11E8AA02414C2FF6258A281219B9D
-DDFE41BA7D7977D0D6F18224FE22F7D4E9355FDB35BF7ED3418F4F68D093AC48F7D8FE4194FEB6C8
-0B9DC1F74E023C604DEA27089F98C3973FF9F4AD7BF7BAE601DB89B08D5D8139B95EDCF6C885FFA8
-B3E4B0477E7040225733826BACFD1EC4A0DD72DC41734856AB9FB700DF83CA2CE812913BD142D84C
-5C83C0B2583768198AF9E885F2BA74877A414233207234AA5F18840557CA11682AABDE8993533887
-7C6D404BDE4153C9827EB16D66C1D73A8143C8A2D3604FF72CE579FAA3C5224BAC48EA83BA848429
-9472007DE96466B5B29ACC7C03B05DCAA38A48BFF9F214DE43146AE4E04FA705421917F99BC54533
-F0EBC01849E396216B9F0794E6F6C6B61B52EF1B1950C0FB609895C3C55FF574163FC8B6B09E66AB
-AED1810E698FF37CC1F926B2CDA3B48C7D77790EBD2D514B6F385D397F713EC3AD3954EA9C846158
-6031D369E8B99E53408A79D64C34EB5A56DE8A67DE91837960E98A66FC04DFA0EBDE21DB003234BB
-78665B039D0A469A0221BD541AF7149A2A659C300132C14581EF766FFFBECBA8B58A5EB3F95446DE
-F49AF863A8113D17B2E7E6ECDEAFC3834D4DF900E3475596E86FBB4E2974C090DB4AD61A737D611D
-92B4535AC291C56AD8B1C031D2F9B505BB77517B737D70AB3723DB52AE2ACCD5DD2F617423ED3CC3
-9CA882EF41757BF7151806A9B8B0F312808863E3673FB54DE939B35CDECA7FBC4DC3BDF5A5F47D35
-E345916C39366C8B4F439CE1C6F1835C320BD1E67375B03B5DE18C93256F251761A4C8CEC01019C0
-68E34447BCC503B9571FE8000627A6B3DAD5854CBC0A2D69E5A8F46BC78F6A7B1422334EC7A98ABE
-FE9B83E01DCF3C6C9273B346F3240EA225AE4A4083CC7B0EA141A0773FDE940768358EB4B13D82AA
-304A1386D450C1C0C6A7D5A8FD2BD313F78F85248B5196241E31E5595F3BC01F37700A2DD3D4A0EE
-2DD01A36569CD507130E8F5B1E96CB560BB7DA15560CCADF3B2C9804A11D9E8055C9EC70E48C1D21
-3EB756A1376F2EDCB7189D78CD3D6CA5865537EEC31C17D801605EFD860B0B629472690588D02575
-02C6F7A75B9A1C1B397781329832CF3EC43C09F1559CD562C48FA9500295CD3B0A790DD3FCD4684A
-7C7AC49AC9BFFF36B39A9FB148BC28D37907433943CBBF0CBDAB46D3EA86DC8F81C859C52D15302B
-94A9B51C199B7104DEEC9D769C2634CECF8B700CE9C04152CC59C9326BDACBEC4312DEED92DD087A
-1C4840868D9F97CAC046581F762F75E8D24D6445370A3F1E0AE74A6478D9DAC37E7FA5BEBEC0A1E0
-81AF89C1BBF7F51E3E2E22C8C405E8671BA85F1BF0DF79A465DAC7EC07F731E00632E017D190A99D
-83E27E5C2E63D7DABBA23B2E88334C63721AC5A4CBC5D45F4C177259F34C2EADE01FA008AF65EBC6
-01D8DD16436D86AA94C99F3CC0A2F87134E73BF22F108B825A8963B49C6C685474AFE4A542C8641D
-C0375D7EFE9AC1168D9700459BE52D0DA399023E141969F25C0DAC4668534B6647EC85454BE945E8
-26B26DE6E3C4584B97A38E2B40A0D23481BCA78084FE80E00A71A790BF31DF468A435ECC88E60A57
-860BBCA3D65930186E9917CBD209C230E8F8255A7ABC7D3F043AE4D7AD63D9980BEDF062B7D5C298
-C40225B6D03F29A0339E0FCA02138E526F06B9EF47F5E7A8068A846CFDE2BFDEBD24F5A73A66C079
-18662AEC80B43246284FA4E2EE0D9AAB172B1E59A6CC46B801149D8C0DF6DEC9A55D8E1B0EFD9D30
-2FF618075944CCCB6831D336B11617107B0530D09885E5CA11A5F1FCC8D69D603DA16BEA51116D42
-CAB1AA1E4D7B9B4D79993F2BFE53EAC904FEB70B2D330A89780EAC10D12CC0C35B8399F218AC2976
-E57A26BAD20CE2FA2AE2363D3FD2A8A971747556F2959DA74A8963C20B504711AE1CB0D0C02457FF
-2E9BF696B159AF031DD5155F21C0F5549B0471A3C5DC8918B675CEBCB23E29322B959ABC05283A70
-2E878DE8EF25EA760F3C5C7B7B49D398283DE2ED837FD59F7C22D62C58FE4448B1049FDEBFC8787E
-67D7DAFE9774979BB3802254DA59BCC0219F98C219F84D995CA768B8B5D9D4A32525DFECE003675E
-E4BD5D8DFFC11025AF2B468F9207B5B2B42349B98232BAC0759758C1F4A283405815BD7145C93FA0
-8F3ED2826655053A3C2559073D8ACD199DEA2C5BA5F616A2E48548B4370EC73493BA07E197165DCA
-774438B0766867819C1154D1959FE6E01E6312E0AB91FC2E2BD240FC8652A2D456A1DE7F34EF372A
-53794D4C4E050BF3CA5B7BD2F1B8DE93B4C8002485CB219AD2D029739FD3C81CC6E78EDF38723576
-1A57143EEDE5CC887F282FECD261F6A25D0A7E154ECDF5DC38E426811BE86AAA458577E5E0C5F0F7
-5AAFA9C41E5D1DC9D91ECD79B514F8CDF7A5F1A189470D35FDF4F9B8788879CCBD91B427822ED658
-389E981E0EE5F7FB87692A3E3E931DF8A1D1573E3B0166204240B7080089A09EF7487C9AEE2D665F
-5A82F94C877FB5B0DC531CEBF1E71C6592CEA2401E4B5122E5091DF03D203DF979B9A6EFBA12E2F6
-B422FDF15D49AC0914D372D21E871DE65CBECD105FD4A3E4714B9CCA5C6803FA39DBB015EA8A88BE
-7913502E562E5B170B87BFC8572DC9DF49AD63694311EF1334444BDF0B4CA3245271C1F7A4D7FAF1
-703E3AA0E1EA8D5C6E821B28707EE0C9B4F22F23796FE87356C58AE2CADC191F4C58E1FB58DA03B4
-5A25AC95DBAE13A293474217BDB214742B9D9D6AF35F70FED2891942EACE3E625E55FFB820543FBB
-250A062D3D395BC0F219ECFE0D76686AC148BC41476A887BC494DDBD396BE200FD3E03CFA12EC9AF
-6B934A283C42AA05589AA6B4A8D16946BB51F50419CABECEAEC5AEF9085C9989289E9B46BAFB6FB2
-782D84DE2B068F91A9744AAB237CEB1BA513E57E4C307108E993C972A3E0A898D5A8D27833155031
-FDB98863C3BE7FEF3004CBAA5CB60A1F2E3EB4D7290FF5FAFA088B1CECCB6CF51A58DAAD998F0839
-6CDFD68F5ABC9C1CCB8F6514107773C69C26873E889D1F79D10E866910E4684186FCD71C965ADF62
-39BA3418B313A27AD632300969B6F284519366ED85E7CD968D64823F8C59B5911A72D0A20EB72B60
-3A61E36F52F256FFCDF706B4560B4DFA5D918FBC530D83A4B3C01BDD3CB4572E24242D141BF9E775
-36693A0407D002E09CDA5B195BF1CCF430AE9824C07928A050D0B460F2704BE8F9E647A4884C4567
-0A81EACF7CC038643EB0FF18A376FF6F32B6FE4F197273327FBBDEC6443A299CAD4B26F7778A99F6
-5A11BDE047153E764039EDB251936AA43DEE50DDFDF8856519056AAFC4C5AE6F2051AF0579A9ACD4
-1D00775D7DBE70022CC263DCA5E0A25B9C7C4F5C418587666B2FE24816B1E0EC92F9074F1403BB83
-AFC3F1D52CA79C387BDEF864366E34C90BE52F7AA09935373A07E4E026224E76F9EC3CB9E7EDE50D
-EFDA48248D61F3CEC880A3B8843306375D9711E58645F3625BDB8E87052DA67F9794EF4AF8DB0BCF
-E00677C3A26907DC651BC838C40EC39E2B5A5DC0DBD345944A6C32226089D63C52490FA10B215AE7
-03CFB663EB8A47793B84CE7364DA1C4E7FCE32DFEF09490121222774915BA59C78C2275F829D15CF
-4D8686B095C38C731B83D48738C25F40B8ADD487C350A2EBE846C3916AE384CB1050F9F5DFE09FCB
-D9129C6270FD86D55A459618FDFA4F907E6B4746196BB717865AB378414029017551161A52E9D24B
-E4F7EED553A927933D4ABC8F25DF607779A717909CB4D810DE8F5762581900E224E4B91598149BA4
-71CF8068ABE8744356B261600BFCC57FB8BE45036CF6571D9B2A95304933BD4F17215F8EF53F8E08
-1AF61FA7F9583C34EB5655CB0ECB82246959F09091F36989EBDD646BEDCA614B9A61AB7696B3FF18
-1058A150FA6EC1BE2EBC7F64357A3FF2A2B0491D2F4E0B970DE5B7788B467CA678039B5EF55C88A3
-84578D427FD2CB16C87B0BF0A3D37CE8ED43E0F049AF2436344D5F47C948C632C94A287509282561
-6C64C5D262FE5B24916FFEE982A69A6CCF888BD01D62EA591EEC51F4B7DDFAFFBEEA93FE08D736C2
-0129E345D06B10246A5F57151C198D407730713F32299638EFBDC01367E23EB59AAD42A83AB41B43
-2DB462652E29813740F4680A5D4BD47B18328FAE6BDF4200CFA4CE3773809B45E8887C9B2E423698
-9F6C48D64F5986F563D9A7538A8716082F81936AEBD0461E6F4BD470436D8B7656F0FDF89108E6DD
-02ABDEF907731D458D690BC608EA9CED09EB1E6E64C0790C7A2378201CE997FFE0317679EE1D4EE9
-F91157449323E53B4ADA8096CD628B5861BF794543A98F2FA2AB54FF0F25A13DAD43DAF9394329B9
-5AA53CA32749FECB0B2BC035DD1EBD53FF9FB5AD8BCE06CD89E5568091C1CC314CFB1D9821D7F9AC
-7C55F55E0A16E39A87D43148201B928F3C42B110FC056189DEF183745F3B637441DE8BD4C3C7EF12
-F4258E306B2877ADAEC63441010750DB4E6269A4C78A0AC01BB3603C386651FE814031CB5D8C1F14
-9EEAFF652A53E57BBD4C8C0CE36A84A319A53BC1E5FD3F1ED1EE72F4C1A9BF264B594062FCAFB22C
-C1FDE3F2E3D3C17DD3F7FE0E15EBD812D550227C06D01127385374A11438ABD50048E17255FCD2BB
-85122A6FB9B7DA9D5E9DE8A747FAE0DA45A1FCEFE92B9E70A5B2CAC668D4D07527A5C1403267D823
-048BE671F725CFC7474B44FC5AAA348420B2D7C23C6CA066666FD6F2208E329878D90CEF1C2E77ED
-22D3BEBB9D547810B189F08920A27E7107F208591A84D463CE2576C70C3DFE6643E4EA93F4E1DAEB
-41D46F0E2F56FC10C69AD5034FC9859D31CF27A3A1EE256C93111F81C11ACF1FC0CE20B90BAC9AA3
-27A5C85A7985B951519FD4B03C40BE637162AF41B2FDA68F0D1E9B7602FE2659D3D75955C579AC51
-DF6A552EB9581AC3F712F083F19B52A6C4F560F36C59CEEB0C996AAF1728A2AA45DCAD79BD7B23AB
-388D5B0B64A2B95154B6259B730B0F4A72C8C7F7CC93C7D64D9D8810D1F63FF8ABD4DB89824E2D26
-4FDEE916C41E299211DB1A53256E1DB5CDD04862F034D9404B73183A99D3D13D642A663F129B6D16
-7095BEB4EAEFD03DF2FF2F0B6B594C1EE90FDB203DA89FACEE23F1BA3901FECC75FE1811BD701259
-343011262B6A0A9707AAA6316BC3C17F787BB80AC8DA5AAC942D90F80C5A3BB59E47EC767244AA95
-C63E50BF809998957936D3BF6ABC24B0A397258F9EB4DC8F65692CB023D9091FB180C69498CD0C08
-BBEBADC84A7E0016E8F8BEA325D924EB0DF82E75D2CC2CCBF039B11934363D4332C5FBC5EC556BE8
-5EE4E707CC2753CCC43D2ED50558E51A104221C9323CDCB0199B7B83454DE3FDC810D0F362C0299F
-5DD981B31D8E3DDA284FEF9DC8F9C8DE138D3065437A7FE8C30572AD06D62E8527AD37AE39AAB0B2
-25F76A25F6C6505241ED73BA494CF923E919F688DDEBF193E188F8C4C154F21631080763B4D091E8
-AD1D2FD6649E0CD9360E8D1A67A5B5FAFC67547CA31C95A5EA8D4EB5D68B9F6D6532DB9B54584735
-9558542A2AE58C09F3BD2918EFBE1699E9C8F2C2A11EA4D224C726D2ACD4A8D8ABAEDC6588CF2AE5
-66528B94F55B823A2A1F7BE19000F3E7579D094E047075DF18C8C868760295533B26EB3ED90635B1
-29C17ACA679C3E88B06998CE5A7A2544B700229F5A6A504BD3E45B276471959C8A3F81917A534287
-39B5EF9E3D463B3BA7318448E2A3E79520D2D245A2A72F31FF7070B6E4624E3A5E216BD103640C8D
-F387E49D732529C611F8B971073F17EBD2F6EB18F9B74A67E1997926DF178D4C9EDED435B9682F1A
-279C81BB9F60DAFE125845A2FF3B02979E5481C78A45C479BEFB9FEF3CE2BA9BC46C77B50B03E48D
-A6D17B76F06F3AD118371ADC69E178C52B5FB4B261C9311874ED07DD6D5B3226A005FDD7A6D53848
-09E7063F036CDEA41619122635E835D2D74CBB6AA9B38CAA4D819C26E95115FE0DBAB4198FC5838F
-2C91B7A87B07D734C6D4F4F83444C1E90AA9BFC908A2BAC4B3DEF9157AFCA5248F2DA31CA87BD363
-AC25E9E77F741D4B2C6E02F04987A6F49D30E9038CEFC41BA172DD675AED8B392164411144E5B738
-F3210B0E66B17A13CB9631C33D44484E792A7C082DD0A5382F34C5637653261B1EB6D2035B08B4D9
-1FA9AB770CAF40A103629511F7B43F2743D7E583433DECFB19C21FD4FD0AFCC22A4119E77C87BFE6
-FE50068B22479015BE5A9F06BEAB4D37412E062A45E0CBCD7BB39FEE747E96306F79FC4F2E8942DF
-5D9DA0E55AACCDA547DA19D30B8404FA121298B44C9CCE198C708C69A8D6BF17591C5C50D3FC5BE6
-961F7ABA8F366DAE957A1C3730DA4A5B4F035A9274675EE3BBF0CA8CE9D8349F50CABB1C3EA4948A
-BE6F9F143592F1EA95404E6909A909168E3279A957AE1924245C356331A75E7008BEE92BEAA304BA
-40B7C3F48F74D9018B3247DF50EBD7CE541DA48ECCB1B0BE51A455C3C13C279D4D8676078C3EBE43
-08748D52C9B041D3E7244C745B1F2F742D010A9E60695F3EC4FDC1050AC082B905D6A57E8F407A3B
-472F731011A5798965B7B1A307E252FE02C8F79CEEDDEB6E165F1A94D7FFF18DDBDF79477F14E9E9
-3981ABD200FE7771B29D1D2D120EE79D28B9543818527039AC74085EAFF241B56D08220C958B5D9C
-87C0C04A14D52AFD475B542D391BC54FF33DEF8D9484AFF6873BEED32DDA4B371112B523B6CE22B4
-0D1B416B64C9370F1CDF2C548F4CCBE9E12E21C36CC3EA52DA232DCFB65F66B22B5E2EC04852510D
-5E264EE939BB67AEC4764B87062AEB7F680B40BCEE04AD45C7519EB3B6199C9E0E332661463647F2
-FB7EDF303EFEF84891CEBCF0FAC5F723A9D0476C3F8C092604C87FC69C7A90F4D64AE45A478EE8BA
-2DF50FB93F55A3546123F0B0E2C1C40C98EAAE9F0F26B8F80FFE6E6B94B7E27D2884D58B8A119662
-2DF6BE608C5569D7864BB756DF2EDD184B90812B44ED4A32D001C31383A40AEEE9743651F7950846
-15C48E402DBC01C818D477EAC0347795CB2792E9C11E8FD4A02E194EED1C919D4598FEC003B6D9A8
-A0BC7D456047A1C0579453FC1D7CB2D158D466939A23D7A7B8ABED7E2777EC7487973E73F2266D9C
-250CE30729E3C5223AD93B9AE8443B35711E446A3DC660123ED45CE1942A1A2AD0610467E081CE2C
-8B92A6C82F0B17B5D2429E99F1A6268072C6B5AAAA6EB6283A872C54D3694CD825EB2926E57DBBC7
-C1663075E687A144E4D61C225781D80FCAE1497B442342B4A3F1CD6BDB50E31791CC3928C30835FE
-F845B6BE5E2D7E3F2F5F085AA3FAEB45CAD0D76BCBB1ED859A9CEBB9F7457036F0BC3F195CB1A98C
-9C8648F6583CDBB23894BC719D68C2DBD8003B10D08C8CAA40BCE784D7BFB4EEC9EA5359AC056E57
-B8B0F2EBCB1F4CE40C87FC7861180133E0CB6CE2FC4FE690756D327A2B5AE063E3021C0C0BD420D0
-56F0B941E6B36088A55BA11D0C35FD0132D5F48E5D9673572347171B4328D4807B972831C0D74CFF
-A5638C145B89C989E6EC942148207D6DB82257585958034D9F9D4221C7C9F7013790DBD130F277E0
-BC88BB179DD09E27062379ED06F25EEA8B7FB33C35861A0034776E3813D2E9E5C10E227CC569AB36
-CB2D9DF2E7B7B44758F9DC4FFAD7A24AC7E9F47AA850C221048C3CB35A37CE8EA75632AE65FE3212
-175146FECD6334AE3D3C5F492F067F795E1E8FF386BA198CB74F0BB4DC0000DA383BC4CC3F070DE1
-7721431988D69C8B1A5AFDCCC83C22E16A87E01C6D3E79DC7AFA3DB0371B0866EFB8B6F88900472A
-FEF1C4A878243C52D4E02E82658979731C841C489A6B97E271C4C93800EC7D91F93EB9B9C659A554
-E1FCE42A5EC65AC39190EF4B66DEAF6FC0569A000A9E1495F42F706FBEA4D32EB7EF11A648910259
-6A65CF899C2F322F5679C6D123469192A9BF1A7F1F2C81C554ADB97BD19ADB746A4F81A4D5559E60
-AB94C483DBABF6CE2F28CDB412D50FF3FCFA3B3DAAACC6A83CFED910CCB3B8D2C19590AFF4D75303
-4A6CE7F4156896A13808E0DFEAC547E69D3C886691728E4A35ACD575B40D721E8FCC5385A2EB28D7
-08101DC50811529528F5CB0C009BA7E3C88468E37768FB0D83895AB54DB2DD5426562AF9D8AF304B
-F6EDA54E9C92643DF926F5C3578269750120302A37CB140A18BA56BA01108D4ACACE8FEAE640A6C6
-958EF156B588ADB0EA5F3B0F37BBA12B7BCB221C811415387B024B7076FA4403A3AD6EBB5D9C26EF
-EBDB7ADE7C60B444AB9F90EA493B658B7767AE2BE649BDBB3FE85F460F1ED137C61BD95F7CD3D8B0
-15CE45138538930AB62AA0E54B4CE1A5EC5FEC0A2B28B345B67089A4E4AE14D2E1F5A9C8848DA688
-CA298F93860649EC3AAFEF3E820D86988C8E3E5A4D4BB937791827994AA3E81D0BB3EE115EC36D5F
-B9A392D09E79AF514D11C7B3A03C9F9C13355CE79E119A19177FFDCA34704D38118A8976D1EE5AA0
-2D14FEB1414419F5E85244ADC5C0A765A522EEF36170064BB19FEE3B5F7B441E4DB967DAE0BAC2C4
-8FC6A836E0EF5A69F073BEE1699F55E9C757EBD6FD8B514E2B49D6333815B7DBD1E0694695FCA3D2
-1320A0C4B852D9706DADD8369A95FDD917328BE93DD33818954DBD2C212D2CA81560ED5BC284EB04
-7A5F389E24E43F4FA8C97FECF46589FA7341076555CF55B1C21B28E0C1CBB00AB8B6F67472F27BC0
-D11148F407824B0159B5188D4BB7386FBDBF1C0FAF34721B7BCB5C0FCB7C4010DCB6A1284E9D7883
-9E3C2111A05D29AB7997073B590A81C6168020F1D48951BC7D8476D5BA593F4F23CAC1F9BB0E091E
-84B4E99E5C584D1370DD12DEE8DF16AF8BC6B7B23E2FEABDB7F32779AF8E2B5094A6E9B7A7225F24
-C43A8E5D2B977E1E19E633C26771E23017ED233DBB02C64F8CF03992C6484528D0C8464B46F24F9E
-8380F385D5D01B8893C67FC103498983CF939432AA380CA576D09030CD52FD99BDC3BE16C7204CDC
-3365BF76294A83A1FC14A236F5FE5321904E779B13232A76F8FE521F425562678436359C2461BEA5
-AB27209541F557AE2AA60009C9CA0A9FC7898C14306CE35A50017BADEFDECBBF94EE2905220706DC
-806409EF87DB1D73EAB0698AD2DB72CDCDB293E7FB13C94D9FC87E74502E6927A212F0D7D2F2D194
-64F7A66AC07872E18CB1DDE8F11835DCBC5C4EF039333FFFC0FC1456DAADE7DAE3EC2EE0D3415B0C
-ABB69FC5006F4D14A4EE1A5CA99AD4D5E629C0DD1E0F097B5B93DE2DD001A8C418234C9C45E8C13D
-1AE04E9466DAB8CF1ECB88A4E059C111A6468D2DABB90DA79C7C79E94DB28F6968B1A632F8C57D9E
-565FF91C6916026FFAC0661856B9FB8DE9C81661816221B1FC159CFEF1751E7E403F5F2CE32529DD
-540792FC17A12A3DCD7C50D38EEAADBD10ADBF5D8A82442AA900CE6150EB7A4639DD9FB6E385B2FD
-093493DCCD9014B23EB172E21AA89643A6CAD1093343D85D81261972DE0ACB16A4C6B5F0BE4C978B
-FA12D3CAF0134F9EA49F6E9687C8F99A456745EA252F0BA9968C7F9586E3DD841AA92DC7705BDD68
-2DAE41518A09DF0E209F321D7FA3417202F4BA76A984DA3ADDBC58136885362F02F0A24EBC439B3D
-BBDACFFD8498EBD29F88F016B1FEABC10785438EAC860B554525F3266097A675299AA0967BD3B7A0
-EEEE3FC578D1BE99D3533BD91571AED904BFC9DA1A1451FDC5406E1CD614E0C7FBC733563CD6CE6C
-C31E9237CA153F1F0411114361D731636BCF98555ABF12848AD109371A42B63675A4130B81E97C2A
-2EE2BB5D8FAE2640156001AF0F55D9D5DF8FF23C8AEFE14F120000F14149A36E5C94CD9081DEC277
-C2C34870D05011F99D48B0875A5FF542F067F7E9880109F586BCF2B50522A1F23ECE44349E539E70
-F84E207DC9BEC7CDF856A046F1A03226AA41F541719AD1AF88FF211E57DD0C1275DD0B7B47440DA0
-89B98C6EE92A7D94700B83CEBE19EAEDD8A615F6587587BA8BBA3CE3AA5E8EAFB1FB0F486BE3609B
-169EFB178A4292F4C0378AFE5D24EED1CAAB514DDC66C696D8E37F294A6579131DDF5488E9436609
-ACD750C3DB0A940C84FE022B22ADC2676F62E91E8F891225F891FBA537679B24547BBBF35F04915D
-20B11739F620D18B5B216921D222F15044368569AA302980B9225BB839F494588481B94B0C724352
-B2DF600A22B062561D86CB8F81514FBDAA4F8A043A0265F992FAB71FC9124A45B8475E1EF3DF6B6D
-E35CF329777D45F08325E8505EC0D979F542807AE77E57E453525F23BC59A50740371EFA98678AEE
-6C425374AEB745B99DDB5D8D908FDB551FBC0DB15832107BBECC4E11A1A8DEC69358A574A2ED46CC
-31D564549EFF23102D92BFDCBB2BB985F78F36033E34F59C0EBAFA3BDD71338736464CEFDBA91398
-33995EDA4207BFD4A9867D32E867FBEB7DE60D132803EF9347CB17BD91315484EF6570892297DD8B
-7D966103339535E28A00CB1EECA4A9775F60A9F5FC9BD8B06D78FE8E6318C31DA2E847E3F9CA587C
-B01AE2BA0A2EBDE308314413F4F230A758184ED60D4F71F6CEC22A93A01B6C54E0449A3860FCA895
-4A347B7588329A80974ECBECDA1070FBC055666375229F13DD995E99265DF870BC8B8CC6347FADBC
-1A6AF64599271A475B9123493D46BEC41289BEEB67EB97A8DED7A9C9730D37C65164CFBDC22E5CA5
-89D2E7954C7136EF4E084C43A6C7F361A3E96989239BDDB9A593CC2A80BA16DE9EE90E95CD39393C
-212AB22EECB677FD36D34DEB46C4AD0D21BF7E6D7CBD0C8083842FCD87B18FEA7CECF939987E99BA
-34C214E44DD84C176C9CC5A4CEA76D380CB316BB4EF9DE73D73B4AFD4ADB54451591DEF86621D138
-D5A0A29441502BF6C2ADE671CEC3CB5CAB903A657EB2D70C943F976C110E46C5D9D29BC00A875F27
-38E5D22496A43E096E009C5D3CB724B4CABB32838DBE527F83B18CB457E57B092C302EE557FD4F00
-DB9C56E66C9FDF4EC9FFAAB85F60D02BA79694FABA476A199A0331C30A78A92E10417BA236E23364
-8174C826331DC1BAB87C5F95027846130C6A2B4027930EBF9A97BA1B039D386FC51C302648E25980
-212F6A582CDE2778C677A01FBFB3C5D1B8A374ADAF6ADBF7DC94075F25ED66D440B3922C5F255FB2
-3FD8F6E21EA65B1D93BB225684B50F11310E242B087575973345B229BA62C1E2C35BDAEC04D10148
-F5B2F3BCF7399BDFDF1F3F79119714AEA697245BC647316EA157484ECB951BE367234FD02E8B1F09
-1AAC3D29BF282DFF4011BC0CBA8E55234D943DB3017CC7A766720BBC29B2D097A956C0F1067177F0
-12D42ADCB473CDE8D1BA35B4030757FA1D8211989DF3BD22CE5D501C21EF8708FB3449DF47D88650
-9FF7B59B76C0DBAE443F336FEE2D615D7EED1C284F14335BC8A26BF4621E10DE9611FB2F1DBD52E4
-B7565D8C65B54EA36D508BCF0C578A49A2665227CDE1F9768EFE847F9D94F1BBB7DB83701C232198
-5C7283D47B2E40B27A268428AAEFE75F6B2F8764A8494E5827573758CB9CA46FA93208836BCCC8B5
-564A69F5AD882052AF1C1417C3FA7F580569528682C77080F3688B65E7FC24D2A3AEB61574B4A321
-5927281544DDD7A6EE0A3E9388F8F631CE7251724DF70726E5912DDCCC8C652DD6C9608F8462303D
-867F589DE0F2F71711B35142EE6EF93B64D6326C4DD7DC83278E057100EE772082E6BA368ED91A55
-53ECFE2293A481E42F83BC8F9148C70EACE91F7B7D9CB8A72415BDB3AF66F68EA733A17ABE9DB005
-3BF148629132969589F38D30EABFA96A01FAC72650B5A6FF3935670198A1EA33810A9B11E330EB8B
-451F24F93544263436F669AB5A90A53B16CCEEAC36B1445574EFA7E802DE73522BE725E68704822C
-B7D3912717333367895BBFBE06966A5CC653AAB5E9B3596702086BF0010085B900711932A95ACF15
-CA4DC45A754EA334E9EB84D6FC8E3FC4F897456BED64BB93B593549FF0D5352275D8E417172A6664
-C5E0ECED1019494A7ED49AB0B965BEC1A82E5873766BB38D7D856049CCE2FCA65AAF61E961B60634
-E2A69EF059754C9D8163D87F928C222772D070D83FEC6FA5AC734AF65E40BFDE521F7D9CB1650FDF
-64754BFF21EA3FF0AF7611A93D525EC9B28C51AFECB04E7FC8323DD6C9B0D8539A34FC3CD8CEB795
-8E8EBBFED4313C77ED469C199552A9FF70BA5423B03B6148D4EAAE17B71C5B39DC436AC53D6BA8A7
-AD81AA8B02335A8B2B11E9F4FA913159A725B8AB60F52F1A2EA50EAF4D56656E615BF382CC68A690
-BF83DFF24FE986570ADC0290ED1A37C1C2AD469CE789E0EA0BB5CE01020100E729721AF3B5BADD33
-A2DAA6C33EB8F9064F5292F715F820B4BBFDD56F76D42E7A1A068C1CBDCE4640082F6E7D582D1939
-990CE6EE8D270015A2C461798B37DCB5798EE9F7512168B76D26C28BE4A49A1BF96C89D235F21A1D
-B6A96E5DA474D0B19B808D13D7A11BF39EA8647499C410ED9894A1ADF33D41B6FC2E614D8087F4C8
-4E437B136F3CB32DB8393C49177A0675A0C9E7EECEF448A97AFDBE840FA01FC7E5F2E8FECEDC1884
-84C312E8635CD79195475DDBFDD4D38D5A0246DE2C7F21608F8D2C0DA1371D302E941572E5792A3C
-F4E51A33228B93A814D03FD4FC223C314CF3714BB3A34BD4F7ED6348577FEED9DEB082C4049E57B5
-D3CDB7F26629E9F3BA36893E09E3C7463D02A22D7056BE76B87763260E46E48BB832B7EE13F8DC05
-37EC8E81E9BDFEAD8C27EBDF1AD706933EFD11131E12814F236EBB01BE85B7F1B2D627413B324918
-D247604F56EC128909873FEC3857028BEF76A3494364C2A7002D104D486236C30B48E2B75D851C34
-EA50BA7FFEB4E19190898AE21768C157C0CAC628A2181A32796FBC1A7271D2473CD88E5395DDBDB1
-FC3AA8DF0F3D588637F19A8B833AFDEB5F655A8838EECD684E2315B72C75CEEFBCEF94344ACE8D6A
-DBE355008EC72FE7CEEAB01363A895F4E73F867639BE0A0BE67333848816B05B419221BE8F9066C3
-62C23FE85B7F392930BFE4C12B9526FF2FDEC38F23A159ED61A0718E7115C24597D849FA76369153
-54A40C965D4D72EC94DA61A03766AB39AAB684E134FD1407A5B1B19BFEBA52AA0DA5D99CBE5C82DB
-AA663711E6DEBA180E1D4A39C320516A4350D296BC19BF1BE054859A0889C7E9727A021F3176FE62
-0FB0C837E4141FECE531A950C03D319E3255703220B7185BD20FE5DBA673F8129AB211EFCF36EE39
-4C7E00EB0876624BC840FA86E58B2F584754CB6BFDFD76810E300741EBE4544E5AC17413ADEB21C6
-2F66CA4F075C32381796BA709782DE34A675B717A2C7F6D88104CB924FDE5DF775B4F0B68E0E2E5C
-2F788BBDEAF06D8E1FC2105CCBBD5827C0B03FD6CD64F0D073F3192D5F94839644E5EC6C5185BADC
-F04112A65F49A8C83174A9AE958E76A2F5AF469E8B76C833782C5FFB8BD7B1BBBB3EA0CB7C9786C3
-BE2ADE5E7AFA8C8F20892659A59BC421E28845A108E34EE17864042EF587A6D67DECDFB3F510EB40
-D2229585347A0035670FCC76C2837A4E4D68304FE113C539B35C1F0234B5079B8E32934546982978
-C5E4DF955A454EA263C3CA5D7101F31A318D82A3F9FCB5A8AFD7A65209663B0FC9DA400B26F285EF
-46D0E1EAF8ACB1F1CB805E3986D04BC585073FC64895E4DAE1CCB749BB439CB32EA91176D5C39C36
-50D10AFB9C9884D5FB90183424CEE67EF2175D01D2478D67511EC9F54F88763C152697B06D948BED
-49240096EEE3D06AB4575E8E8B2CB8263B5BCF4FA1608720F52B675309833071879DF52C3EC2871D
-20F398B5CAC8F8A4D41D0F1D47584DD90DCDAEA4A1CF160C4B3BF1AAB890B5CEB6CB3488672AA68F
-BD938281DBC1D8BCFE92FBF514DA5358443CB6E0147254E91B38CE6787B2BB0DEDD2D38F5938737A
-977B5EA42892520C58F8FBB53C994B57382379E9490F0D6970B980E1BDF8CF9F4C3C5E0A18F66E86
-EE93FFE7FE546DE50F41364BCB3721B637072571FA1779F1D672FAD260C16D7F13CBDF3E4376E7FF
-56D2A710AC5AC35FCBDBCE2C9C17E523BBE6218617B13C1FA6679B308979AE7C61DA6E68369324C6
-CBC7DDEC364E5A86707266C0B459EE7B2C03FE584E529BFFDCE98C90A2F3D9305AA74D3ED8430DBF
-3A49FE2ECFD9C4BC9FEFD22618FE9C8A973AD072AB6F713E4DF02DCDA7AC5359B2D652013E131B76
-B3ED6C75FD53BA58D862846264627F6B9E70D8800F6D9B32242B747A67BB2B45675840D34F852AA8
-062FA6B01E31ED24DAE02F6CF788A17F7B9368175195DB0072259CCE0FFB2C1035C1D26E1777CCA3
-D56A827C3242069E76D6DD69B653768614B9ACFF16567FEA61508D51454BC02F6C60F755AEF6AFAE
-3536BBFA1823F8E1A53C41124DE983E51CEC92AEF4F99785D554488A51C20885346D1F761DA79017
-940A0C557D93F1DB6B3D00FFD61D08E96FF3AFCE5FEDF545CC9F47A2B1BB26713431D6D1E47FD6BD
-6E3C668B0368241F0EBB5FA9C991DF79890E52E83A3675EE699B61BAF869DE91F67278F510061C6F
-E41DE2D883F48CD0E068E2A652B244128D82E5CD52F35F210DDAE3054691ED55A7D99088AAE8FB04
-F525C2084AC09F5EDF80A4EFAFE981F74C0DE9D194320709B3464F3FF2C0F6AAEA6D973D9C323F53
-DE3D741F698FBF01036716BBD62957CB32CD81D3A2674560FFBC5BDC5C6E4F547E589AD0B1CFE14F
-5E17FED1C4A8ABE4E67CCF8A49F32C4C6044F1431E1CC382E7758722A6D0DF9ED23E51F8AD14D11D
-7B6428E27443715EBA4E9C05D6F238378F9498AEF0E7EE4FE6856622CC8E6ED141EE5F109E343CB6
-695C4BE1E0F66601C27975983BF557C04ACFC19227A1AD7E6C44C00529FC7EDD7F886D24B7E029B9
-C395260088BBFB96972199A7B32796D27257DE83A7402291C14FECDF7998C5C96B1EDADE0280F856
-8A8F5007852EED303969180B3329917973C2D32C080C9765B6BAB0673BC7ECFDBBFBEA980C263843
-39B7F1052591D91667D4FEE413AFC23DE2D4B9DA742F4269C6C939F5FC32A38040730A018155AD73
-3F231E4D5B9D01C03A58EAE7B5F590CCFAF25EDC8552CFC8D95C60EBAE1837D7A97CA137E9D4A4BD
-2CD34AEFD68D64B3F4F62326AC429921D7FB3C235184FE0899690A0B775F1A566EC29D5830D32372
-6526F7E7F5AFDD71B77E07613DDC4FC63EDF49051AEB59E6337AC0A4B6DD872E776C9CD0CCB86130
-5322D816732124F5978A86C186BF0A0F88E733CE38E4D7C1BA5378C5629B1EFC97806059990ED42C
-5CD183BAD7E94070E4058569DA2E51831FFE0D080301AEAB4350BA290318AEC582C78D05DD92E5AF
-B4424EA808629BC972E68F4FF2489C245593F07555CA6A2B25964794CF31CBD3AE5C229AB9B8C298
-06C01D116EBD0FF0F159ED2D3D7DFC73EAB4910BFF5B0B0B587CD9EA6E6FC45D63C09766224D8346
-1F0588140B258B1729F70BAE7962189B1554483392988CF230AF4077193E53330519394DD99BA135
-6D4730AB221DC6A66019BFAE564893DDAD7B177DADD16ADD21D396CFA6C3DC818052E2F71149FD59
-4A16DE0C2FFDD366C99B486C55A6E991E4D22CCB15843F0C3363676AF2F5B2D1B7EF66CCF2F12DC5
-0D63776BFFB058D70A9C76DCE96C754872D72C82A0C33F90D49C935402CDD26B6D743B1F43BED5D8
-B539424849C1495DAE73044E885A7D0F307F1816DF6244A6F2D97BFD4E200E93F69B08AF39EA21E6
-E347A47CEEBF803F73B978ADBFCF056789BB8E6E2563DE87DD9A8C877157B934102DCEDAC54D487A
-1BB2694F0034093C48F10A17D32E2BDD0C723CAF59ADDD1BE373AF8C9BEB4415AA5AF36310C31F24
-354A53C0B962573148BEF91D994FE3F3D8450DD4D686725799F53C373A0A3E3C060C2E1A3E800504
-9F26D716E1F381B9F83125E4683264A07E2D8938F605978E2513DD2050B3D8A1012797CBA8961632
-BED260916338A812AE751C7B657E086A0C7DDCD3BFDDFF3E48B84751925736D1310C4910FC114387
-F3ED7FE163F91895EBF55FCB425CEF5729D99BD8F2C072E36C310523E75CD8E5DE49C031C4263410
-9D56E91A46C8C8E89FD92012A00C33D0DEC52597B5C6933291A7BDC5CEDA95DCDA5600F9AE1C8250
-54E7EE1067458CCB66610704C58E4A4FC0CB5FC933D0322A716B2CD430A3AD48DAB3D4CBE9D23F2D
-092368CFC4E1F5495C133A92942EC62118D45C17723646E69407B4A89DCDFD2AB3FFC099A21D9D29
-741D68270629AA3A414FE58658DC9170C247B6E23F35C4BC5FF83009F462F2EEF4DBAC5FD158A658
-57F9B6DC1F5192DFB169DCB65621CAB2F1B07BD22F4155A8E9E2B6388D430FDE5EC1C834D22EA035
-C52E1E34482EADC36B4CAE902AAE89A7284E62B3C84B608D6BD05F75BC31310B2DD3B2C08A00E073
-7F104F03A41989D5F6B9A2C38B22F1D1803EE5D7A4D8DE44E4ABD496A1DE0C0E12C4BC96D0122846
-3F0EA9CE9509FEE987139F3DD3F9D0DF4313F555BE85433718F6D05F197C41A9D9C7A8B0D2740196
-82D49F58DD5F66B12A6520D9F226D1DF1F1B65CDFA261F980CA25A92645B86B64606293F8BFDE364
-C47D2AF2C709BBE77A70A5712F2CC26F3D66F5BE2C307A48E6F887F681D30121E32BBD87271B5DC4
-615D28C309F15AD263FB37424E56DDA6E17B998B45BE6C7FC6C28E3394A8764C9EB2DF5C06626593
-B5C665D550D4600172791CD208AE9F37BC082B0B242B0A504B751B18F4D7495172B697EE217834A8
-A4FB7CC16D6F9E8BB400BE8AEB0850960283DCE725249FCC4DE97D9886745AB6066C3E2F64DD8AB7
-9AA11667F11188D7965DC11EB760B772E282DBF13249F31986AC6898FEBFE23E3E8B8D2C33E00EA6
-FC493850ECB2E6D831D1EFCA3C2EC8EE2E394599091ED58BEDE97D7A43B6F739EB0F845EAC1DF6B1
-EBFE876009CC5D804B15ED4B56761B3CE1AF59C07B49DC798A44532297AD73D5101ED47F36A3678F
-818297CC27F6AAA2AACCC9AA9B6F5459911D8C56CF499E390AE607F3790450B2B9C9BE0F006EDA0C
-715B5CA0481734CFB0597478E7602B0D2C1E4F78F03C68C17C70E4B42D7D2D3C95CF40F73488B371
-8E2CB05A549944D86944D78724E266C3319AF89AE430E777E95F0D792B1C654306E421F3D63A26B2
-1E74B6E8B21B2E2B9DC596D013CDA16D08E65E8F24A84B12B2BADC653E6E1110DE2E709C1C1BED13
-707B70A421B384F20CA7A9A9D20324DD383F28B2D3C7A9C53F5D4C6B7C378D26DF11CF55238BE1B2
-4FA70DCC178DAD3D35670FE4919085EB1CD905971D76A368FDFCF9D2F0A23739851A3A6D2E02D65D
-54DEE69ED5D81315D3EA5E356F94EF256DD267FD1E1A9EDC9CD63E743F299BCC4A4506233B8DD765
-2CA067F741603F93250C087D368F9E9CC4CC1A6DED567487C05BAA992B0056A77F630A72008E3946
-15A9DB24FE56A956650EC9DE90A6C2259189440247970541CA198748928215C0E132A81AA13208D8
-63C1FE817F70CA573B54577D10B73100AF8EA088208A44FB92ACA314AE5879706180788C17BB1D0B
-81B6B95A1C4E0F9EA66F9B39BFE12444A6446691A7BDB03E0F03D9F07A10A7598F2166F108529F34
-CD90E601FFED3479ABCFCBDE8F051C348E48C61D95B00C59EA1287423F05666C3D36288844067E83
-E14F6B5210842C742B89F13ACD126B9FC50ABE2CA7D7ED513D43B6AC7F41EEDA416BFFFCC5C844AB
-2D23D4DC09B2D510504CE98D02E72020D9E669DDAA344C63A1B75632F912A1C0DA3885DA4AF7E243
-E4A4C6493D6595BB6D56B0359106957259E59E336BAAF35BD1CEC5CDE735272EBCCAE8D4904AEBD2
-B32610C6FEA2B69941D6542ECB44D71092A3CF067708A3D087AE99FF29671AB7DD8758759B971A08
-AE1BAD78270D2FBEE37AA2DCB119D72F6C7B0C8509018A70D0B0BE2C6830EF8E0B24B1CE1141EF87
-3A4D7DCC501F808BFD94E4DC0F2915AA023076BCC8006490A43685EA25AAFC187302EBDE7FE1965A
-04A5A398985D29F08E085127B56B057334D88EB638A4DDE64AFD204974C3939536B1B66A54B4DB81
-151853915718F70813F096CC1B0EA25E363B49264C2AD17158A4489F91453FBEDBDE15D7B74D7F98
-E81DF23251785D58295BA297F295AA6248A912CDD4F1111E6B628EECBB5139709E76EA4AB743CEC8
-26621D08E6BC64691CC90B3C3C1778931A28D3D5B1E20E96C643316613FC487C9B604C43463FA453
-3BCA1236286E6F5A6EEB2F1D9C34BDDE4595495A365F88055D9268541CF1654ACF478D384A5496A8
-772EA1402751A093582A6625A0A44816B5FDBE166835D598644296249B92CC90AA3FD6445C9A19BF
-27F59CB0616C7306070F33C7DF4E1DE64AC8C5BB2FFAC1EF2B1B30E5A0275E6004CF64BBE2C6710E
-DCFC3AA4ADD60106334708862FFA6652825BC84842736E47AE6917180365C75B27505EED3C6108E9
-898A780E20C3F606A860229AC46D0471ACA0187D6D539A1B8820F620F72B41AD1D3BF3834BF48CA2
-AFEA8BF535AF74C4562DEADCB63D2F5C7585722B77C989342D190FF926C8A5263B4F25286F99CF6F
-C62EE6E2AD61C82B29D82468AC10FD27764278E5558CE8B41BA111CB2F040914451A480C93084237
-CAC8F66BB7C6689F340B8ABF0150E06D5B1177278A4C08742FE22F42C28680F190900344ADFA486D
-59718C25D37275BCE4DF981AAC35D2C7E85C72A0188B8953CFA516FD545AEE0BF4B8BA301CFDE214
-4241FBDF3D204E3D2823301572E23F204C97305A82401660E12926EE7BA6EA1A81FF5C007933AFC7
-3266FAC4C134ED818A48E7DA01C71A46335C845F9DA5E960B25339D551582B375814148D94CFB781
-FC56093827B78578A73D4FF67B6B87F40CFA5E3F4325D9108CDB64BD06427B88C84105187316FA29
-90B4E3E8EDB6C78ABF164F4A9717D523794B2FE772A04DABBE688CCA977090979B5F47CEB90A1DBC
-167D305EAB231C9F4260C4AD10889CB785169902FC0BED78DA15B8417453BB65856EA0BEA5245BA0
-573F623D215F6C0CF801851C305B355D26B52B0B343645FE25C78A3526841EDA480919A1BBE5F56F
-C10ABEAA3E1FCCA7C43EE560F067F1AA2AFD642F769D1ACE8E2AAAF38850F0D757CD808C921D716E
-96FBC07DA7860DFA70CEAE2888C0ED3CBF9586443532B68DAED9A926655C157A416C383A53D8F283
-2A4E67468112A09ADC837ED8EC95F70852921F50D4417239FC42EE3624CA97F682745CC5E76CC7C6
-7BD99F2180F8C0B7FB49539C8CC474C25C0DDE491671FF329E51BCFA779346D4686835A3AD6633FC
-B5E0F67E0CA9CED8F215BEF4D240453EB2EDD6ADB22278AA5B985FA140C9834D38753DF2014F8C0E
-E6DAD19E8FC54C03C1F6CB0F858986691D99592562CAD95FA0A5B2ABE4A8B54B457D42E8C33A2D19
-51C0419A72FB94FDA78ECD92BD2A1416459E9DECA9469F35E4C47DB531726DEE8F203D7042EDB32F
-025DF3D582547BB1D45F7A5B70D317DF4EBB16E36B0D798E0932FD2A85B04FD67143E4B287A50416
-2C1F5A037CCD780088C5476385AF8168E12D97D44B0630621759173C8F1E3006B5B1C6D7138B7EEF
-C3CC5F54E24B2C3CA7B41AACFD25E554880AAF406EA4C3C6E21D3B550B040FB1952598A7E8E6488F
-E38288B2AEB6C4718338598A2BFE4D2B9D14C65732DA304C16FF3E1F8F03046EF095B65FD609DA87
-EC24A69278BFE65C905CD0329F6A486B8525B7EEA4F7AE56C2633CD83543269E8ACD6D71F500D82F
-DFBDE7F7F7B1AEE67328549232E26CA55085B6E84D9E2E7F74068F93A90C4654F2F396E57C5F76F7
-E61CBBE523DBFBA6E76638BBA3064DA025A79E3A294FE7F1CC28A3B4C57DD6FDC48E541A85534B25
-E1BC11B4F78019457239EAEFD4BE9007D205F1D985F389DB22400B279C10948551A6B4A17FBDA0FF
-C9428B18B43DC76EFB15FC2182216F1B60B4E344A03AD6C00F141EF99F89F24C819C3E32877A927D
-84C2D006940F39CA8B71E5951673EA9BFD1749923219DE38929ECAA9CE43B06CFA7DA1BBEDFDA56C
-61FF6C24F40E59B13870D5FDEB82D981154FAE5D6D5152DE69339359461A41A9713B6BBE47E868C9
-33CD74C75DB71D13BAE4DEC85E02FAA14EAD6C0A253B16C79514657B15E68CCFF9EE6AA385CFF9E2
-C53D9AE40F85C793E4E8FF50B2B7420F4FE69807BC5F37C3E300E6B3C3549D1D3246A2E70F091054
-1135BDF805E0A698E236B6496702D061241687B7B8D1A0E517DF0476DA09D89667A7AB375FD2672D
-CBAB8124E511502DDBD08BA04D941DF1CEBDCCF7ED48405CBCC33774A68C5212FC6F132641FF413C
-984F8B43BDFD7B1A2A3435F15AF07EF4970D3E4A0BB947C181E9CA27CC14A35BD1BD096875B45873
-8CA244F88C28728B74E25CB8C4FC1095A56CA75E4569AD3082EF194ADD11350DB3B74B96761D4538
-596FF7243B1E1B724716A144106E080D42036444FD472998460CE9ABBD05B42AF9389AC452BDBBA3
-A13A96890025789F16B9D92251FD3B3BEB2C61EDDB370A20456E3BFE5F4039E2557C451C524F8087
-015BAF3FF05F51869FB97512968BDB2B49589C1C7AF1E085250A47657465F480B7023E24C76731AC
-0EAB6704123D77977D3A2C4C56B691346EBE589C619C04515D34F81FC6A17527D5D8319013C5D4FF
-27CC3925E24C99231AC7FB9EAF0BBA482D3B75807AC85D03CD09DE5D9AE0B07B7A813F0449786500
-0AE8A7E00080300F0AB8C399057EDDBA273DD2E1B2A0DCEFAD3B332E6D4AC1FFAD846167DFD70E03
-46DAF84AF292D4F424256ED5AC4E104F80697050D50844A708EAC9E7F7784FD01646F3BD0C595CA5
-1EE6BD607D254E78ADDC5E15C3B6AC4940EC865A5C23105B6BE09EA09F2C05D6D76960A843B81EE4
-33977FAAC3CBDA85CDD2F4DB7C28293A77825635992AF8F3B38B4480D9A139B1662345A8ABE1634A
-77496C3F57597D2985E9E54717AB2E99CA35789441BCDDEDE9A9E2106B401D9684ADBEFE40D607F0
-75C179E9CC03E59E65430DB70B441D43DF03F2AA6FF06F224B6E455B01C64FB89EEC9103E48453A9
-749B4D602808C7E408A8903091D85E06AAF635D0D529C3CDD1B8479AC0F4208C284BB678A547F2BD
-77BB17C86D4560434F7AD1937760A6AA55B614CFA9FF8C9C96561AE6C8F2121C4E20237428BC51DF
-2099B6C49E3EFA18E6D439E6E6981E746EBB1DC461259D8EA0F8099C47CCA27B2D982B72C9A07CF2
-1B3C05D6E26E6E286E348B8944078E24809F9C5F3D014B4CBA02533F5621BFBA1F0EDB776C634746
-703C9F73BA89B1960A496420C68F54E5B901A6D733D7ACC79F275FFFB253F389AA480084468BB34D
-A1E797E43B7F6E8CAF5E8C93069A3A2730E57EC39B677BB73E3F07C2055599F7062E53B37A5F0099
-907D2ED87FF7A82C95FBAEB888033BDFD67BA3A6031A4CDC56CB1E4CF5B06B46E16D988BECCEFACB
-9E1C037023D7BF5CCF5D65AA66A17AB361BE7981F132A578F3ABFB97960A6034F052D9D5AFDC0679
-782EC90F240F943A5F9A3D969ED7399254FF67D89DF668F7C56FCEA1FFDCF20481474AC8495D3AF4
-B6D7EE093E369C057F0B70858220693B398ACF8E8143558132E4391405E30A73937C53402E459F4A
-A3539CF7A99A3F51C0307D045DF8B77757E92EA2F51BF0BB4F77D3904DD355665870C2B59F1ED7F8
-4FC71FDD7F0B6C5D3182DB77827CA6A2060D2B8C83C4EA4A432EF43A4D0A952CC6CBBE52A9F0CD66
-1A538973DE41FFE9C5CF55F2506B9EFEE51FBAE5E63BDCF5528499A47C031163C88D3022606784DE
-2F46A9C9235AEE3D4F71D4959B0CFDC5B7E78C8C0A8F9DC99440C2263DBACB343C5C648577F5610B
-50EAB1CF7FD02419EF3941C7CA0B0E64EBAD4B2CB05A0793DBC38F1946D44767BD287F5E9779C611
-CA0DAAA1E7393DBE0683C8D3455CDFEBC0E64B54B737E298DDA605227C0C4BBA87AA3EC7FA6EBAEC
-39E6EF2537D5974391D31739D9FC42983D81AEE44711C823F35F8E2321AC74943871739D2DBE9748
-FE68592263E7713F27E0D49B9B5CB7A4E55DE54E6B800D15856450FFD3AE5F287B12AE4F438B20AE
-9E27E6CAA00F3EAEADBE08432684FDF9931E925544A680182602A3C1997DE5D0630BD5A010535E66
-E1C123013D23966B3545C7431C39B97295BFA4099D14461004C42C85095EEACB9B47C593BC6DB863
-533A8619BAE09095DE8ECA432D4DDD49AA600D277E75DC3F5C6631E2A05382CB007825FADB77438D
-CFA78E252D79B6A196D5164C2FEB85D75ECA25FF80B1D97FE10E87960CA0FC47C41D3A213BF141B4
-8BC3AAA93FA86245064668394665BFD52D12C3BE4CE39EFD8111754398A944C3FD1AFA98EC337BAA
-AF899D35E804CF416AD7FE45FFF13FC6354007501043F98FE8428DE8013901BA6A28711A2CA85A27
-0BB135B72F1D5026E8217581860729E94F2F1878A0E96C59E9F62714FB5F8F25003DFC7347E99007
-8A9A331CB3A6A535BC61866F02513DEB982C4A13ADBFBAC3FF70A7335F40D5489E48E5EDEDEF1619
-1973D932479C62183B0E25EE8C4F76D4F1AE45DAEA4A12AEDD9EF81D248E8D19F8C8A5BECDD1EA1E
-98783EB7A38149170851B1942C96C53DE06DEF80913BFC04E539EC67C110498D15B78268853E5C72
-F485F8A27B768569E54241F6115875E2973292CF48FF91D45EBED627AE9F0766D22201B20AFDD40E
-5B17CF337F2999E0BD15B86E46EB3C18FC12B7DCADCF9DD50C6C7E3F37E615A892DB3F57E250A072
-A49F7277DD6A2C8042698233D35A699B17ECA5DBDA6D250ED4A16FCC893BF0DC2E33FB1EBD7DEDEA
-3C1C39603C8B7E1A5A833A8FCDD5570BD088749BB232615366687962C7E56ED089CD7B092505CAFA
-5A80F503C4CF337F07ADF0D106937E25670839D491F7BFF7A523DB609D126328C16113ECBCBF9C40
-04904427A108618AE5D4ED809F8CCAF72251104C94EC5BEE21F91B179D31DBA79CEEE5EC7FF698EB
-84AB1D2D1A624F58B3622A78844CE51498B2CEF38EAFE259D22C7BA61104651A862008BC1DDDA58C
-C45F663EB26428DAA85E7785363A69D2790996EF5D9621D53042F42F794962FEA46E46F37B8AD1FB
-76FC8D5CF2146843F8CC625139C75FB42DDA71A752BAC48F294E4C0C8289FC46DA5EFD9C91BDA6D0
-27518B7E81E8B21F755A9615627D5812ACA674D1527A1185EED4E3C628196E7D0759B1CAE6B9B7E9
-01E9599A65230F1EE469CD33B9BD9C104C44E3C1AB966C9678BD0AD78111A4E0F2D07A01A038CEDE
-7036D0534D684A1562A17AD64A00F279200C0371B1CBA61747671D2A21D3F9646CA290F6B82418A9
-6FA177C6278277504B7FBA936325F5FA124AB018A15DC18D2C5E8F93CDEEA52BEEDB78A57828D81A
-3E6C38B9FAF3DC4EB7273ECE3EA4482A1C6242A335862C2C3717F9C9ED95F77B140C4E1569B2192F
-C7DCF702D0BC9A50428EC406F8BD0CAF886B4D979320D3E429816D88F7C7146D960AC12E70F2CB7A
-9F4E3E366665AB3F1B4B6440F55EEA26DC9EE0096BB7763731740A537766490C8C174723BF0EB40C
-53701AAD12B21D436ADCE22203C1053A9DC4E9F17AE617888C4B4E6F3A720E4E6366BA628221A387
-D8AB15E04AD69387C310D3528BD2FAA5B22BFF3FA494F5FBFAC4F771C9C7402B95580C5AC4BB3AF6
-92A70CB2C851FA5CF1173EEC3EC29B5A05A0B728BBBB51D3B7AD8B0AF17A1563E82FAFD93F8B7118
-1FB7AFE352874F4EC6D334AB6747519AB8E847B7BCED33EB5458A828E074E74BA621BDCD03FEA604
-7F7B6ABDA01FC7514BA1AFF0D4D0C0CB8F4E42D5A87E395D9ACDD02CCC220C157153422018725846
-009A3ACD8C8CDDB66BC6836B4026FD9F526AA275D06C813179E5924F26A25094E7BDA8BD26AFC4CE
-B41D8964D4FC4AF1DFB0595BC5D6714C32F15DC7194E9A3A73013C45D8FA55CC0550A12D9AAE8E9F
-F199FA28EFC2426D8D1DEFB93A65717AF3EA8E2D5B4AA8EF0EF38E9600F7D4E7D9F1D67A2E63ECE4
-789FA74B159BFE2F91C19B0378BA52E93DF12830D99553B6618645E26126842AB70262D96E35E5E7
-50ECA0CE3458B3E51BEE2F21191136DFDBCA39BDC07939E521E4F492F392DEBD029C1EA237BD89AF
-76BC89F618D530160AB16269FA6B693CF14BDC4EC7C630025703C5337F61458FA09104EB15C7CB20
-AA4C9BDB7CEF3A09F25BC7F3149951A7CD75372993B80CD2112F7674CEFD6AFA764AA3486730D2C1
-897A264D82A91709FEC4A21E30D812F558451804EE6F3DEE2C4C437846BCBDA07C5B6CBA1D94AF02
-9163B7383CAC6E088AB1DC14ED3743EE77E26EA7AD3119A76C0B5F925C4DE305CD7BB3A09A453947
-5B9BD79BE28FC462D8718CE05F9D94CAF3387BA55E6E447BF81A9EDDD3A34E17BE66BC52B0C0BB6F
-86F6F008829173816D205182ED2ECED319864A796AB65D4E3950288BADA94FA32B6F453AFDFC6C39
-A4FCFE60353A64627E2057D4B379D3240012B3BB0ED0C7876CB83C1BA5EFB6E2A03F340C2B576731
-F848F762A7E1CCAF267EE06D621BC33FC245D0E1547ADC12CC0EB58B26BABDB8EAE9CBFBAB93836F
-FF22BDA1831DD01B7346AD377AA298D84628BF1C07433284B0A90FC89F5AEB2651BA2CEA405D4F52
-DDC0E74B871D43F71EB4ACE0D2B401F9348EAC3A2EF0AD295036BF6CF6F870D58E00B619D50EA7DD
-77BC28DEF91D805CD527DCBCFDC16C042BF9B874E3B1567EBA4C1E70744B9E7E5BD1FDA6A5FF6E10
-1613FBE58DC46CFAC1A65ADAF65E49757E9304E2AC9A91E0588600C709A61D4231730073A36D473F
-518A145E141D0A5A494441B9EA99AC23F60F54F8127B477E1CE698BB4129B4B1DFEEDF10D9E665C2
-47A62F112F5CA30B0AE5DBF3E495FF06EB28EB438CE8AAAD84D5F50FB56A3AF002C23BCF66ABC270
-7AC233FC0F2723DB99D2CFE7D3B3667732A531F5DC315CE74EDB9050BF75D29E6430F57CB6778B2A
-CBD57DFCEF896E6766C8FC5C9F9FBD701CD62CACF33EE0FC95E78DADD205B5F42CC63024624BAA0A
-B4DD447832B4E1DBA77BDFADD223989F8E958C8D759AAA37930664C6EFEC708116248A2A7AF3D656
-DDEAFD009B7F5333854608E67E5E588A857167ADF9225CF6C641F5E19C3E08678A281199EDDAC831
-B57223B1BEEADFDCBC8F6F25D32FCA2336C808162E8F381656E847FB6CB13969572425AA05AC830C
-33DE6E030F86A3A85D2A66A77F103C7042C97205526DC882EA9A00EB8BD5519847EB424C15F808A9
-1652A6CC89B66A5731126DEBADE123C63D88A2E550FACDEB3886FF98646000C64B3A91078012CA30
-904B71737CEF6BECABD43DD702880538F5A70085E6CC6015D2163681067C3D513A8C66032C34A0FE
-17A58AD4BC97CA69BF41F11D5E910FDFE9729652D3EA21F8DD8CC19160A8FC77573B1E9CEF4E790A
-79D8AD6723B6804E9616466C935303E063DEE29CAA6C3BAEBF278B818C2EC2F13ED645AB452397BF
-00DB8B26E115026E256746CD0C78A959364FDE6DEDDCD0F441A61A1EBA32C7BC172BB09512148D1E
-BAC9E791B7D51B71CAD2DC9B83B2F99B3726607D9CBE58B499A13753CE87FCDCE21C0AD0528ED0EF
-B9B2C927F57C78C626248AA2B835A0791244C5896686A66173EC9F802C4C633A42B086334D2A4878
-0E53D00809247BE64E529F96AD2F8B3922A6097D414DDE1EC76F9552F9B8D58B8E34F359AD792B2B
-E50C26DB05035E7497162E7C49C38D3CD9B98D620AA67492BE5AFCA3A81A7080185C7F0B5105223F
-1FA77805502A2E8C5FEEA27699858D84A95842C5F2FB68686D59FE24091FCDDE139B6463BC6C7B1E
-0E90D20A83651AF00C85797BB9F53ECEC1675C7EE636D0D9E77DBD8F89670F855EE4D4800FF3F695
-0EFF09BBF8A0DAF6B8242840CFA5BA73BEB95115F4A78BCC02D85ECCE0C0F2EF6F328AD1DD6CC049
-5A3315B414A4D61DA50DA46D7ACCEFF6EE56451805D26B0359AF193531F95F6589CEAD6FA041AF15
-3067F88A0A2FECD135C56682DB2B45A71D1FA737C064EE9A4F404BB72A70B3AF0330359393247EC7
-81512482579865240A23CD8479F21C2C44A119EBC4E81B308DD8AA86E60C3DD8ADA50E0DFE8308EB
-1A7F201EDE8DCFDA405AEFB47E0E6CA7DDB376DCB21D37F7ACC4D3E9F26B03A8DE0E8940CA3A9E75
-963A389DF8038D2C486072F61C0CEAF500753C7A6352B1CD0338D9212B42A4D3DA23D5BDF44C27C9
-4B88A415A3242FFE2E1B332477A21D2B9CE075EE479C6E657A4D8874A8C53964229310E01ED4F3C6
-86FEF5258EDF3B464DD6FFD7F1CAF473BBE722D60FB14AB4918E93878A8AE4773930B8CEE110F476
-7F42A52D9304C55BE12846C911A10AB9B2E036BF9DFD597F5348D42233315FA80D0F563C388BC253
-2103F05E90DBF1923F229F980A2F4585C7A373511372D07DCBACA583099EA972C03E5AA67E663882
-6DB134564DB993CEEB6E7A6659C7C5C05C310267D5F8A24EEC2D5CC3E3F3C808E6D6068D1A57646B
-37FABD98ECB7BAF99E7D9AC4414A491A73CA34C52F394352F6B5A15F0FC4D88622DAC694699C2464
-84ADAC3B1D366AFEDE2A2CD2042C90516A666A19A91C80248B11224BEDDF1A320E230739E755D098
-B6A67315535F4C187CFA67ED817A035056353FC859BF286317996FFFB478A2248B908FF12ABDE705
-402224A3EE5F463DD3D243875C84E02DB968ECA1CC52C75171EA50D6A88CA91327A7AA5795019F36
-C0A19C093A1C9D3723C7568F9D41F2E4FFB712FD47F897703D7A620B586B81936C84AAED61D84332
-B3BEBC4F95B796B93EF7A1F565C494F8A65EDB21E2EE18DC025522EF8E599887CA2836069CDDD889
-88E5862977B7472584303198CCE97EF9F9E1446D1F1F5ED1CFC666A8A0C3A03E1792EFB60A9B4065
-49E0DEDF6ACCDBD98742568B4735A747D8E5DE21E630125AE0C691D054E42199C15B1F80CAFA6E7B
-B2005F374A9A5F9900ABB7409CCD50C3AFCCAB1214E6A856F7C7EBA89BC3291801E1343DA9DAD2C6
-ED075C8ECA1423B43E587AEC67E6145272814B3F191B3C285639F9E2D6E148A02DC2CBC0E054D629
-5CD05DBAC1950400A9189316F0265B86A732D302C5BEE8ED233768F237C62600CBAAFF3A110D5EFB
-6CC7CA3B92D965CA7C5E8D3E64ECF239FE2507FC797FDBE54C1112B28D4DA44C60AB09D994C5BA78
-D663A2591934CC052BC70CD1DCA3325C66C9CB982E2039F5DB70C848D3DCEF655B1C2CD0CEC8865F
-E8E1C0A267BE4F707ECE6F5A3DFCA3CC1EDF92C760439F51AA69A4C1801E96CA4D6EA4AD980258F3
-D15C893913ABCE09101984C61B91D603053E49A97CB82FBA707DAE8AF1D579FD69C8481CB7B712CB
-CDDB4D287BE995E32C02B399602A08B9DD849039B5673F1930BEC7BF366EB082D2CA5DB2385C8CC4
-5BE3FC0E31820191A814EBA7C4F23B1938E6C4D800732787CD2CB97F762DFC85D4B798809B5F2254
-D826CA42B32695428D120298B44CF38494E56240B75DF1E41E46E53C44DC505452256DFEC819408D
-605FF14D6C1F3F152F2FEA96EA0AB3B472D8704E06BE9F8C3E8395CAADD06D6DA033E81ADE5DC3B8
-3DAFF743C6E9E48716003D358DF63CD7FD3E2F727D1F2D0C29962F76D5C95ED44B6F08D052025A66
-5785F264A3D5F5593677B630E628B5EA81FB37CFFD7A30B7FAD226B6FDC82B0878AF4C0EC4F4243A
-807B9839EA62BCBDF7C2E9B30A623876E632E084EBF4A21EDA04FC88A1C07021D0C72EC3E969D449
-FEB08E5826EC20E55B21EA71EA59F6E3B0710B0DDAB3261B4A2029ECAB68C19ADD5174E55D5E984A
-4E5F38F592A302FEE6ECE732DDE841A28672C620CC5D687455A5C06FA9FE688394A04F96312ED025
-B7AA6FBCE2925F3AE559CC1886BEECDB70822E2E5CA3F732A87404B1536AAC469989E9610CFA440A
-CE43875A70CA51F36CB6F629D9424C1E35A88F92D5DA3CD8CBAE6E8425A36968E21F4F30349749E0
-205BFF8D552837D6FC39532525370BBAC833F75F1854C93FC533A4AA53ADF7008173A70D94A4EBF5
-38EA9E62BCDA7C20E0A073BEE2EFAC34D2EF1D03BABD5147659E50B557045B2EB89DB303749B04D3
-F54B43FED612FCC68206E001A7AFE90230D9C12F74A32C7EDB5D0241DC3A5D51481FD7C8FAE08FEE
-263FBCED7C7D911B3A303C835AF5FADFD218F61A9D6DE80485ABCA88200047B094441F7767B97A24
-E8C612590FA2407BAB1E8B56C71914EEF2355DD97CFAFCC192BC06FCE063D3D9D1A629AADC75E3BF
-207234C208E7E30663EDD691043065C9CBC473D97C6D4DD3DFF59D6A9ABCDD4412C3128F603160AA
-D8F81C6E7A4DCAF35F3A99B4EA10A34375B477C2BF846521A7EABD4D28078E9340452A198F3F5ACC
-3DB7E3908939FF6E3709C6A3FD9889439A4AE3E10B618CC92E14B68429A3AD2C80940A1079452EC2
-66F254657BE7D79A2A24084AF73F6DF71FBCD32BF6913A3FAB25F977787F7BB0C3A3E8BAB38D7A2D
-B0B4826950643DD1E03BD7DD1FB149A33862A89226B7CB454DAF613128C2075470E42E70A9444A8E
-6ECA526345AB48E6F5160BA23B5BDDFDA6049EC44ED1461C7E0DD514B16E2FB285F72039DE3C7982
-EFD40D7F6C8E8F4CF35AC71B467BFC578002E8D2239A2FD2C4BCCDD8AF3D7DB1F4AE7F2D2E0811DF
-9D0155BA6EDE50B5F052F14F6AB884FFF244D8806C07EBCB49ED22D85DF696995991A954AA97A1EC
-D86ACD76E061B7541E87997FEF0657A826BD88EF3A4A5920462C6595E7A156F453291CA044CED810
-860C3B0149BCE73BECA713040664AD0591304106129600AF71317B0D2907839CEAC99515D357E980
-B1937B6E1200AACADA205421001F1B2F91753E80D2263C56AA164A74701A8D5FD28E46480B0DD963
-A683A1F355D7FB4463C7347C94EA5E2CA40B60B56297CB22D972C5BB10E56715A955605256C1541D
-9F3BC5768A6F355CD3B863F0FA1A781EDB49368F51B29481CBB41D4AEB07AF9DBE8F52C5D0FF75F7
-FB6431D37D6AED84D78C778871CB0F715B4F07580F23B586C969C81B471FF6A6C7276F7E141E02A8
-584D4B9AB00E7BD643D2C3FAAA299B1F1E25048461952EA42D4882768A70DE46B213A287F8D31AC4
-6D5436F22A796C05D1FE50A9BC2A928066627A0D87DD57A3AD91DB446404B41557D1457873482005
-EA20916BBE46C613F456C849D46BA79D20627B446B2F49E3FA309AE14F8C420CFD94922CBC0FB9D3
-5A0F7DBEF577F1849A1A80E0011DA8AC082A8C6F61658E65AD177ABDF23EE17C8CF0D26B9FA3A6E9
-4837EB9E930336889767A8D7EA3CE980A8EA95528B004957BE6067CD9BD8E02A0F23CC1762CCA656
-D33412FF45E917FD4A03EB6E8C1F43FDB0A8965A33B4FD26BC24A20B304CA817E88495BA9B361A3E
-933717FFB0271F7F70C5D3CBA1E86D0F51BF3ABA194DAF32C35C796627D00C7B2271ACE2463E37E9
-7B3C826CF3DB60028F240F9452CBE08F7EBCC5FDB1BCBB3C327A9F450B9E5671916101D6E3E5E458
-CA31F04D12F592F83BADA2C3683D3886AA3B403963AB5DBE220FEC00037A745839F67A3635DFD3BF
-F08F367482962DED88ECF6322852D643A54D5D303EB04BFDDEE9BBA1EBCCBA7C653B3A613A8E719A
-DEBE3CE1BD7E754E5F4977E863E3C2D388A65227B451D4F3A4F94E06513CBA4AC1F2F511613FF035
-611684CCC461599000E546E4D972CA6960E095A526E4735A23421A4C9B597ECE08AFA2753592BD16
-DED93255A1E33DEECE3C5EB77B94670E8137F2A4A4B98AC193258E7DEA5DB8408A806188F2D1DDC4
-40CCF0E9A6E2F0C78FDBD7B68DD4939D2458C1965BF8BED4564B32462FFF3EC892C03B11D3EA813F
-AB4CFBE8D3016329C5B7E3DFED0F08284D44AA0B7A2F6BC96EA4503E8EF52A64C22BED6B452581AE
-8FF8917D53976471941A9116A2D878FB2541B561767ABD4E31CCD8A590CA03494C62AFFD64EA0A1B
-C779173DAD84999C7A8D844EB1259DE7BB5B25CD023537A474A524EBE4660B22568949E624D8FEA0
-AD37F4CE1EC75955EEFA49C6BF1803BE87E9C9865FF3F6B8525B8C15FE8835CA153D27E6C0FF0CA5
-1029A7A9185D25F0F14D86FC797DCC1F99EE97E2054B9C2A2E06FDBEB8DEF6CDD368BF23A858D9F8
-C1DEFDCEAF1B4A8DE5EAFC604CECCF0D285BE00AA912EAB66EFF4D37AD2EFE34853BBFD87CE09B18
-749B489943EECAE7887B006FB827D10191DAD18466CD1F86505879310A8B171F902EA0C26A388E13
-B53C700272CEE2BFB47ACB58247C13449C6BB9D01232C32517358F1A3DE064D43C18F8827D53789C
-CF3CE2EBE78949A6ABFA1A6B8414CE360A5E22AFB7D1DCE6F5A06182C3B984B4F9BB1A905A9D5A14
-83750A1DE0A857CD5C06945EB7D4A2A6BF1237F32A154FDC06D51A703D44FE052FD3C53E9E8F417B
-35D1C851F9203A8997521529F21AD8498F96930AA77EBAF82EE02A57BC77C792D9F220294B45F48E
-A8FD94E01CD25645D36D168923562F3FDC93CB79DD4760DA0C103C2675722D7A1B79FCB4245ED12F
-A0DB52492C9CCE58B333CFEE822812F7DCA68E802C451B5CFAEBAC608B950386B6C58239D1C62D62
-4DD5D15782FC552222CCA06DDF387B373E32C3C2864C63C768350C37283760F3515A5B0AFD66C48A
-B522EB3E808C061F5CD6BD96CD18C9839D30508E7D4EDB88E8F11E31E10919B16B7971F06D7877A0
-58D8A4944C84FC6CAEDF3341B48B6E0D3C7B85D710E0C35F5B5053CF4B4798B3778CC28B2DC7AE0D
-F3A49F9F3BCD8E95D746C35C3F47D68B8AA35D97AA08E711B5FBE70D1A623C82541EBDC51A827D0A
-69E6C049087AD26F256EB7577F58CCFFBCCBA5A95D093DC29464C9A38DE95BC6B1853963B2DEB0B5
-7AD1248D6F1625E115EEB9510B5772AAE4E3C866657DB0B3BF0E0AC345E116F8D4976B770876FFE3
-748C36165522991F46A36F193DD1A1C94713673C7E4C81582391B636C72DE94CE6254374F99B623E
-5686C13D8A8322E83E11BB0B0A896C6A8C2C4F756C5385CD7017F26D23F7C3EE97372C868C8C9155
-81723BB6B76B4C3CE8998E4FA6CA40B633DFDAA59BA902A4952DA90EC4FC3CF0F2676ACFA7F76F78
-236FA2DE10FD3545357215246BB7E527F277C28B353CC6D79DCEF21BCC8F77603CDD58A2CCDDBE3A
-9802F941CED8E035313875319548C41992A2BE939A17CC109426E33825AE59BCD17CB19F50D972FF
-CBE7D9B4B0BB095303D9DC9D406696C2508D6CE99E11CF00F6461147E97449ED5F486D480A86D3A7
-ACECB7E9A945984724EFC21C5079B1FD03ED803C2DEAFCE3327D2D7827715FD65D9506216C88B0FA
-26935E95C64114A51919D419038B1A7E9C1E829FBFB53275093752DF19891A97F3CBF7719C1FD6CB
-17019A6D2D25360ECA804C4B35172662CC4769D2B785C6C87E5A4ECCE31704E59F71263B7C3CAEC8
-ACB4C7426EC25F11A0042323EE6C3EEB04284DBAE2C770BC419DCE79BD4560AEA41571C3B595F525
-60191DC7A8FBF63D413A77A0905E517441B16C2B501EA2F9E99CC38D052679F288FDF1894542E3A6
-6989A0090185EB2E75134BFA3D9147C3DB8A621D9D35E37786853779E157B47F71626D6B3E633005
-9159C17596C1B87FE2B4FF47ED9D78FA4C2160077276C8B58CEF5DC030B4A5D83CF257096C047FE6
-4DE307C598B815058E72D5F57DF5C369E664E137DE29349E2F9DCD8C9F4EBA6E765B6327D7A20DFC
-B20711273FD8091CBA605C4C494248076F7E03DF65A6A50164980BBBB708741E5BF6056E6F996DC0
-7FFF408C5B8EAB8DCEC315E92873228C805D4440A6470E3EE3983758DD211C9CECDBFAA4C9300CBA
-00608A4B2404A3C7AF017A3B7E67F39F0B51ACF950D3E75CC7BC2B8D3480202FA958E8EE0B240501
-5232EE0D264C7CA02C18CA45CB3C2DE322D3EB7F00F9455DB6C5B1F4E59C3E95520EC36D7D903CBB
-625D70B54BF6F8255E412604BBB29FEE026CC660577F91DB1DB4A613EEEFB20CF7AE3CD89D565AC8
-38416B01B5DE4FFA5550D17FB51FBBEBE21CF1D56038863EE931B90DEC2E211ED42BA92EC244D4CE
-2C4EC5CA87A026992772DC2AF754FC982B94F36EA7B7BF75E0ECE90CBB2A6AA1A012E8898BD679C2
-3CB3827C35D5D02F0569C7AA82615D4AA67518ECF668D3B57D6EF1A8013424AC2268BA0D9A74D588
-79EDCF6382A89D397864940303EAEC45A38304BA8B1CB198967AE23EB81054BE74B16909A405E8A7
-799CEE3C270FE2A6DC50BD7370B6B2C8FDB9A87D88D5D40348D3984E39C693B6F4486D994778607A
-80A3122872DD65E40492107C71C3CF708A9717E9EEFAFBDDC239C53AA9645B711038E59C8B861B37
-411AB2039BEDF9CFD00F08D9C5D76154427FF5DD39878CECC5D7BFB3F1F035087185C0981F3C2139
-BE84872FFAD3408531C4EA9387B89F5E3EC779E8850D50992DFDCF9132BC551E985943B07618AC10
-D1150451F0844C0DC41D6E17EB508DC8689EC726400D5A7F6FEB3CC7BCE05F09228B7CB2C5393664
-D8DD9A4B96B1020EF25D70AA2D91CAE93AFB5F2BF0AA18CA5C599FA1A708EF35BF8F7FFEC9AFC1F2
-42870D028B2B1459063B493943EF1283829783E1010242E5CF4DA39D93D506F3892936E7D6CF1124
-70A521D397438733D053944CFF12D6FFAE8246F20618684F263715AA98E15D72A526383E05C23214
-B78338E5B476F0981D90056E6E5D0DB66B1DF2298E597B2ABE1D817E18BEB056E65EDB4234342D96
-00470B1420C9210419D834E431B82F58608C87AC361A02D0F1FE4B470A3D71E0D21BB87E1023D428
-E23D596CB9E1A2184403A16E36E644BCCF9BBDE27290485057E62827283E7380AF786BF395B3961B
-A5EA469C315763FA59E0F176EF81985F38B882DE56A74D128E256D1B89939728E55A92ABA21A6B78
-44FAC1BA7BBDD8B34A18194A2984B000380FE9F672E83EFDBF276FE797A325815B0F25CC95C97A9D
-ACF56D583486305D7C9E51A7E337D14E3B900333EB38FD93A99587DA2341B10C059C71CE080FE753
-3C0F059FA40E560AF9C4A41A4BE6FB45846FF8F78165E10B4AD40F264BCF5596A1E8EF8CB6EA4B1A
-3A5C69059AB1563843679ECB2511A90E8898F54295649CB73D277760D8D04ABACC7BCC6E777A0530
-E2067CCBC08673F9C8C178F9D672AC8A15E5367F0C5651B53E75E0CFA57C931746AE1A679C246D7C
-9417F1CD89DDDBD1173C2F880B7B3847CBCCEBF99F7122E832D7C9BAFE2B54CBAA1ED48158DE3F36
-238B76B0E67644A28AEA996DDC006F6AC0242E4B667639E7523CBC90A0561193C1AF34481C2EF402
-EE43A82E1EBF4E3D601BB36B2D95CD93550D61CEE7A94E72F6D30C32C8F91A61E964B1F66ACFC398
-7F95D4028F116E9A9A8474AA29C1C1A984BE0E393BDC41DCEF6A6F1018DB60D52024899D8EB5D55D
-324D73F39BFA47377B9E15B3B06A7585589FCF52A54684173E5183367E7B0952DC4BC2767C4C6247
-B1D6103E52BC7B7EA6298F454C5D97AC575F19C10ACDFF4E10C7D3755CFAB4200CAC545269FF1D8D
-B0D607C7AD47F40DDF257AB4E7D0750577003C13E4941960C3DD7B0774DDAC18E8ABAF8F53E03CBE
-F6D57B44F24CF821014C064278FD51B3427593D17694B4ABCE81F49CBB984C5878CDF0C38D1ED7FD
-99B0B9A3BD8D8FF6219588B3B8FA59D0CDD1D9B2F65122AB45E48F1757467B9204926140E3C350C5
-A927A2E700173053EC35D3F1DA2D7258714C97FAA857F0898917BD94625C6D1E2D77138EFCAAAF51
-7B17FE187A2212C24A881A2C6A647DEF6376ED80AE4175C5EE80921F001995B44E49F0D33DD9075A
-CF33BB03671C0BCC34AD5784AD1CDFED3A6D9BA103B3DDC1CC2DE74DBB576A0277715275218CD19C
-A8899209125266D8BF1286F881DCC2C383749D1E768D670F4099F7DE959EDFE852583183C9111601
-2881A56A24AAF020EA45CD5F39660DEBCE30AC1C7B8CFC60387B1B0C3E361BE612FDFA9F01B7E4B4
-A18839A2C7E0E393EBC5AD9A8A4EBC316A740C1C295D9EF5F4DFFA0667F9582C0BB837B142C4CFC6
-B1798E9476D0631111033B8BA75A10FDC800E2AB1E0E829632F869CFE4737BE9E2800759EE0831DC
-7D1195EAF80555771981DD6DC6606812D92CB8EF86447F5F6C6F626D0E265C67E52A6319189EE349
-D48E49DFE6A9E98F76C414A1E3217AE0A215A17E54AA498F4ECDC50242ACC7E2322F63BB2FF2189D
-057E7354E32A3ED1803116176B9B9D0129930F919E2FEC280B2C8924E49E7BB75768A2EE1DA8ADBE
-D4E3589906DF1B923AEF84C1BD327438B731012E69BB0D43A1842CB88BB54EA4516477F704CFEB28
-6E3EA483445AD4D74586FCF32E96D366901084365F693A53C5FB532FBFE7BC0CADC404C4985042D6
-8DBB90A6DCDA3531EE324D558A214F935CD9FCC9A0CEBE9B5FB0323F4B3820529599EF48EE068B5A
-CE85004FEA2984F0A86F5AC9D56163BBFE1142B774148F1EB0A4DC89C3349052533A7DE66729DB24
-41B82F8F7360111DACF69293C9B281A0534F3E9E9224A75C49A832F28B2E497262475507B6DDFA9F
-01CA0A6696E3F5AC7EA68595EBA0C2EB8A47813FF936D84AC1B23ECA7AA2862B793CCBB0DF9FDD49
-31BEF354CEC12FBF478559FEC29F81ADF4452E83963E56541D31F3691C93A50F0BBA5E9552C4F2A2
-3A6E53060729854A3DD71CC4308B91957DB19E66AAA18FA67055A950F1C2CFF78A03BC1A588CF624
-696068068719AFB1001C4581EE072113882D9052B21E355D401ED8CD24D067B99E616BDA5A0A5A93
-36FC499632B79FF2FD0DEFB096EF46B75E2D4E0F48DAEA239719FEC4D9A29818F5875FC5041A9EDB
-D26CAF0ACE14CC80BA49BBA59E918EB3D8F1E541AA16026585A2F72DF7D83541816DE46981FB3EFD
-0C30E458CFAD04C79421AB7C4925E23AEA07F9F018431C790002596D26BD9663B51B699DF53E4882
-CBC34EDE88EB55045B889B6062E35FD1E018BCE785157B85EC3B9CA6C85D4B16238275385B8285DB
-012D8FB7C9F5B946A41D7A0FB878FF72C39683144D8A007CFF631B43748F2D5FC690300F9BC0C837
-006B92ECEBE0605E8C3A4A400E18AE8997D1B45FEE10068E247C647CF82C6DFBE5E881D511FFA687
-B7AEB78546BFD07D5F7EC242DCEF4930D8AAAD8C6152B6642AAC325963FD147F236BB850A9966573
-9D06CDBD7CA79A527DCF461E33F22BC9C5DB00DA2BD3DDDD8C99D99793BC98282AA8872FF96C3942
-85D82D9419EB78B6AE37A5F519397700F75D624A09BD255B576E955A323E784E8FC31131F003B0E3
-024A4F58FEF2A6C043796201FC425482E1155E229D1B2D43EF7B0D22322B22EF5C9A1BE026A1C3D3
-75EDAFF99597E1E5477952A4E8D2ACF5D014BC00DC2A272FA62B6983E27D228881E2EF2B8B95A681
-CBE90C5FDE16331C85222FE2A16F0A3C3000A63E2E21666C0C119F8AF89A543D37977069A5ACF155
-6324F05204CE8CAD50FF4FB630D9CBBFC324DEDA584AA56A99D3A76FF55BDC2C2EA3A021361CCD4A
-83C7A5E2768D210FA6DE889FD48A39D679C94EC3C99A8D33FF11377DA7F6F1B71A2A05B302ECDE95
-4F26773F39AC881542F0D0969C3995C3519A8EF70B4220D86BF01BEECC6462855E7B686E1AFF1CA9
-1FB8FD8B4A69E10EE0C2AD94ADD44449506F9B6EF43641F2026EFF6E605C670560C2B74706FB949A
-A7E8CC6A2D0D6207E457E7FD87EC1B9092DC68B9143947CC8ED14AFDDCBF8FDDA228A76847F96802
-E561F67CEEFDE45AE587673983FC04C96744DBAA83F2DC838D633943C75DCB9E6410474EB27B348F
-26E505F0AB90878940E846C5E9F3C5FE8C3558C3236B1B88C405716949B8506841CABE1717474BB7
-C30DB91CDEE33B0F844811762FAEC535BDCF84C1C747CEF9B1FA61D2AFB5A81335BC42C06A94D7D5
-9B7EDE55BCF6F9867AEE107555CDD084B7684C2C87087475A39A9DA6347BE281CE5635A4D07865BA
-98CE26C1465B1AB0343F49FF37B4D0CA9F3BB693D78DC3B21925CB996A038DCC172527FE57C07460
-EF39C07D4396E7FA970D9F22ABD21A9C794B64AD96762C7428F59A8757C36D6C4FFB23216195A04C
-2A2C2E7B10EF7193931544D782FEE4B91E01119C5553BBC6252270A8D8C56DD62D448F5AD8DC69CC
-B45E1F17F0AA1E445129DD00F000005B23D38DE93A3BE55A4C041947F36B4E4536E307D0180553F9
-2E46B743881CB5D5386C48C7D5F84C2BCD06B9C501F78C7EE61FA23516791FCF4DB278AF688A2E60
-10A56692AD92008497487EDFE4BD5FA083FA544138B20D6940020887E35D46E093B71F7A04A67460
-DC8116B4D4839625D7CA6959D6831CD93F81AC4EA2709036DD738364FDE71113BF22EBF13DFE1642
-E564701E6F0FFE7511EDF03FE448C2B28C64FB7D54B94CA576E481FA56B2B18AF10C71F699B6BFD4
-7459CDE1869D0FD306BF489A6F42E5B2F05CCF55BB6B9526973D19CB134CA7F13F1DB3716F8CC217
-73A832568C16250B5CDB16DF24BF81D49F5B37018BD310262EA7078107868AB0216CEC83CEFCAB1E
-9F2C665A31585CA04DC01879CAA79AAA5AB201B516F7052B01B16BEE5606098393B0E5D9F9E5E3F4
-EB20F63C958E796DF41CF28839F5C62A0431648745D7837B519F3AA36BC6C08EF040CCF53D9B6D8C
-0C7D1A84D707EC57A3C6AC9A62AB37251A01A5ED40FDEC6F5BE6E34C6A91D058319439778A2EE5D0
-363E2E1F33463C33327D05FFC0CBF08D5BC457C7230448972FB9B4D0D782BA7DBF10D3FFEF8BF523
-6EC16D4DD6D0D870D9D5EB5C64C9A46A4F583D4F831FEE74B0E5B33A09ABFD4444929BD8F638CD72
-EAB99CF2E9551DF427683964A592E49D186F285258C5D5F62196A98532421D73E3495F82695FEEC6
-E1952C562D546B28618FFAEEBEFF03A57F4D855021F85B0C7BC37FCC6DA9AECA099B646B99D41896
-09D3FF2D56422F8C37E97640293EC7C90E3380887836F4938FBF495CAC14FBA5648D89282D8D49D9
-1AF73ED36581139D8BD42551E263E830EA3C6EB381D85C42D74C50DB0CCAEC03F535ADE92128A016
-0E811C34748309AF7604919B66CD43EB5CA975302DCB6076FEB6BDD6FF55976FE990FB0CE9ABB11B
-195403FB26E3D6C6A0DE1C5BE79E171A61E21F79EE8DBE7A832519813EF6B33EA098C2C32ADEA219
-AB2AAC8B093F40000995539D1276D5F2EF84CCD099B71FE4269BDBDB6A8D59C86F7D2E3FBCCF8773
-D0FAE97640BC1AD43CB4B992BFADFB09DBD0CAAEB8CD9DA264187C4F97300E9A6C9DEED5525479E6
-05C65AE336CBBDF4E5D7F79AD098F977285E065579B748FEAA97F2A753E1F962FCAB68D72BAA8EE4
-FF6691C23E31BC0F3E981A96FB440404856AE1AB32A7205B17D411D8F21C8C93B704D07EC594422A
-BC368CDA2B1610CE6A973F4474E12B78B532666797F5755D269772C9F5400B3BFC6C58395D38527E
-2CCCF29B56123F7DCEF3BDE5DC1DFC5B0293BB125085B1D2D929BC3EE84F4FAD571A4991C3DEE03F
-2DB3A3097E52B1A7D5C73CCB6148EAC62E8E36DE9A71C57638C6E4D5D9DED18174E8C390E50B4A5B
-913C074EEAEBE390B214B3A68F02862B9A296DB4B409769649E51D738CBBDFB7702E15C73C2AFC6B
-C37CE15171F4E822CF20EFE55D9F061AA43E648989628FF79E65932390CBB15D8E621333B18B11C3
-BDF96F841D7434E01AD501FEA964A75B248A35CD9DF9A37E48A1E5A09C624B93CE44F0042FA00D7F
-9EE89B9F7AB785E9C718CF6E7228F743271C2C9BBA17E5208B920E44E765D99D86650EB454B0FAAA
-112753AA1BD3A24239E9C5FC47EEB1547AC9D23731B8DC48B9707830DAEC60C8D3790BBA1120F776
-4EFAC542CFFBCD5C05F9510B27B2534B704ECD36C8B041FD49A96881302FFF5B0163A2DD09C751D6
-D6AFEA9170A4F4C4AB8D46E62F763FE1BDA51DD1CE4A27E772F3A2869155F762FF26B7AA6FCFA4F1
-292E56F03AAB6322BF867E7710C34D43B5D85B45AA68014AD7879EED051B1933E491496E3E26D9AA
-8B80A07BF2B94F1077E84A9726F08199887D66DE7A307BF33C30DD9CF3DA188088C03B2BAD09A217
-6B110DB2C868B53DA9A66C85737BA66C93C58A259860E294AD0191E3A72C73F40B0BD98699AA08DA
-F03587B78F391F3A4313C58D9F29B53C70785637BD0C58310109C54091AB0A34CBB0C478613A7AC0
-FB8F0A8B4645AC966395D8BA775262CD291136AFFDDF01C1D83DD4EB3B59CCAD18057FE7D92A8CD4
-A58F22508D9FD7CF356571F701BBB23E749BDDCBF8A317FDA0AEFD952BB18545610FFAD3AC143D35
-1B8DB3F66293375E0E50235F0D0466932181D377EDD32A5F0FFA4E22B5A0CB4F343D9A7E4A342E9D
-09DFF6C697630CD3971802C277A5590B8CA94BDE6B38446C794D072BBCCB724D5BC208EEF1B018D7
-39373BB910D668882CAA779C2D686081DE6A2606417B54D7C20E0E7F722648D893E4EDBAE8F00D6A
-6DA3712F91AE860C756D1127D133AB828E9D80023B50B162C5A1C5CDF70CCB3FDD7EA060ED20838B
-E1E50C4094C9E79E1A0187CDF780CAF45A725964F004253E034C5BE46BBF89D94631F1A33BAA35B8
-4FA2A9D08481C6674126CD96ED05DCE48BDA069D902D6836D5DFBA701DC0F98A863E64F0E312145D
-8DC0B77F25B43AEC729A1243B45B08CA228DD6101CAA2AC5ADCC8EFF84A4CA3F254176C2CC711EE6
-C273835D0FD3528ECA2A976B88E51FE347FDB60F32370B66D338931D6581630ED586F349C638960C
-31AE4204E89521A96E1219E696B913DEB2AAB7A3B022D06F34FDFCB810A04E60A4FEBE284C2F063E
-0AE9EDF87704921CCFA193BDC912B747E13570066223A49F1F6E2AF0D4D65DA04CA876FF7A462FFC
-9C0BA2CC545C3BD36DBE762F32B2D6BE5867C59F479195C92440DC165098B74EA5C3AD93CDF2D410
-B04C16BC7801E7956F4E5107450787AA592493171C3628E6B8F49D4F8429EB98DC52EF025F001387
-BC1A7093F7A99F10B5D2D7DD8BBB393BF6E56F08F4F7FA1A343F220D5A1EAE7168C74D41BE1DC1A8
-3BD65B72B982F4F7B34F24F97F9EC9A91011064031FACFF2A14921A32024385F4E061CD07D152E74
-1BF97156D951A342488FA7F5EF934CCAD13E2753A0AB7A1F565C2F7F6B349DF03BBC25BBD972A9AD
-F809BB5C5048A8CCEF9297B2ED3324D18867F293CC66E88B3A39D107B610DFE79A3B4E83A96D3D52
-A17FE8A62C9FDD271130148366942C9CE57558D023DA5F7501319EBFA33DE9E6D1E76D7C20DB8A09
-B657839DA99F3D8143F1EE6253A3295C9651FA4366547893C2DC7ABCBF4BB7609DE5D001E0A36D9F
-FBE01F7D0903B3208AE8547E2E5F14EC1AF4C2535CA8F4EA37E3F3CE172C7A1E8308995B1CC23E6E
-81190246BCAB6E755BF868D449BB02A2AA87C44C9CC0F571ADC72547CEECBE104BB274B8AC16DCB7
-5D5F458D356466B921ACDEEAE384E2EB1DF6EF393B41B9747F0A4FAEB4AF1928D9AD6FB7E06FDC62
-1E4C6FC98CFB43F88584BD55D9B97CC9549093EDE586912161931162B1B1D52D0443260DABA02AF2
-B4432100D5506546013DA703573FA8013685CC798CE501960093DED713FFCCF89CA2B9106390198C
-29A00864108CDCC1984A8BAB53919028C01B26ECC7925E38CBE6CCA8978EE21C2B06E7B3E48FBA97
-8E2A7D186E563C088F84AA23178B60E4729EE87D67B1091F3B6973676C1CBFE6530EB773C62E2C24
-97014AB0E8B71A1F4E86A378AA26591511BEE3CF3D64C94848582E1354E1605B6457823F2C5E640A
-D3802946BB2E7E8E594E8C04B430C2385DD40746CE8534F50842E74D7115F3DB0C72D1C9C607C657
-3B094AEB73B7A79876CFFC3E2F8C9FEAAA07D3BFCE05B61F7749A8793BE90CCCECA2D7077F25E899
-D3331FE161A7E86C842495D584C6E4A0880B2951D8A13B88C4672080A0B1BE36BF47C3ACE7288CFE
-41A8C1BAA6F0814A947FBD6B3AA72B6C73A8C578CA51CCC96F2352316C467BB960E981F2B6485BFB
-44B577E71EFDA16E7405954BC7C9F0759F5A9F1EBCD2FA9CC9648D5831A68887F41B15081A204C24
-B4B992A231DEF9E698D4C3A25B6F5474F5BE6A601F2D337A58A0D21FF37FD91EB86D1D738893A03A
-69F0CD743F611CDFFE69DB2C6ED0E4611D56F803BB0DC06E7FE85A303839612707647B1BE9FAF8D6
-84122CA9E5CB8BDE2936D3F4FF254D31529D7538BBD4D35539489F9E7316F24214B996BCDCF1818E
-749A71CF0E8845AA1E2A58AA62A48E02BA4564625D20AA220EE719608521D7D7A7FCA0BD8904A401
-9819D371F3F59D46C1354E5FC1A6E5F79B20CF4ACA2BF0F2DE73DA193A6F9ACBFE0B4731C4BCEBE6
-D96FE822965DE965232282A3A130361F188B3AABDA95A8A2790D9240BE008B6A6DE4BBFCADA05B67
-86B9BB8E0DFA0C30043A3B07ED46277E07B9808422C8ED16758B9C396F4EA929D769785B2C9568E5
-70A83B989B25CE200F1727D41E2B702E7F88F1784F4C83FA60A74EB26B2DA95126E508ED519A61CC
-151DB6804F61826C5F86D8FA89D06E526FED97A0DB88EDB432FF32C1ACC9B622EEDF601081AF7B96
-3C9CFC1D13E4A9C74FEA0A1C8E3D8653CD92A944D4CA6B0D306619AFD503506D77732D6514F604BE
-4610C2560931BDE0B40939BC1D126B0E97F72AE1B4A9252123B54F7A27E0CFA4425B4546526FD741
-CA77952B10D13E0AC2E32006A903808FF0CD013F936238C74CC75FD915244C56A8412F37F0134840
-347699508D6F3D7F3203A25B7C70100719582CD588590EE34B3AB13E255B613A6D00386A0104CC5E
-D2C646F09A88888D3751651D5646C5227A3C80E8DA1B0A331121DD2429F1F4775D30564DFF47D01B
-BE2C6C72CE4D1FD9A2077C04D2B0274B8916F6A9D1A4A6964A534F47CF241D5A8E34B23F85BE9ACF
-FC2FEA961F277539F215F8728D6788F67BEAF45502839BCF23D8763C3949352F00C579A9A4FC408E
-C625E310DAE61512DFE6844E82D36A2F81709E1F05B38AE9C222ED62C961EE63593CED7AAF73CE2E
-D3667740C77B309B93EEFE1B4BA65D48575A66BE86743DC9E5D3C2FF418D11F7F211B86E827EE1DF
-C3613E7498030F07050524536D1F8A94DDB6698BE7B963C55CB3F74B676CD815A7B3DF4B1A0EA2BE
-1B0B9A11FFBFD5B1FA49668AEE14629316AF436A0821C20BEEF7B3480847934A99F6D85B68F4DDF8
-859A754E009428AF89A90D1852C220A607FF0806E8080726EDC94D691D214B4521C147C4273AEBDD
-BB4A697EF16448CD9B2FC95293305858DECFD406B89B9F3FDAE2AC579E80CF321EBAE5701FB2F7CA
-D8ED04B4A63115886D45D6120F69AEF1A21D80AD3C2D35D2899F1902242B96CD349E0AAADA40F7A1
-1282B6B52BDD97708E58DC5E2D22D1153E5FA3F3B300BCDFAF98DEC2F4E3C82A1C85F985735F3987
-4F557579F422664E07CBE19DA680EFB0FC82C323EC5C4644C51709AC8D674608A8043C91E6C7988D
-430F10BA6CE1FC7FC0604FCD8F723895250AEC36CC35B3FA14FE2A0D24095DCC30B2093F2298F5F0
-A97676A0BE66C3DC9ADACFE2FC0F721A20E945AFC1096A619075D5E9A264C796EC6C90EF1AEEA8DC
-089B44FFC13D27CB2370070A52D4416C53F364393E46EDD7EDE00799960CE6E0D57E4909E88ADD64
-BDD2B0EBE2D73FA6ACF8B40280DAA0637E705C65AABD523B8815F22F23E9FF81E7829C7E4BC980C9
-143AEBE1A04DC0D253396BBB7268BD5AEEA356B610D5DCEE03135E00AE34388251F31714A1C40E18
-2652C48CDA2211A22CB6F02490E69A44CECB169754C53B16028D352E0119F5D5FAE0BD7EA1CDA647
-12A6147374B64244E21E9EC9F0D1381AD22D5B6212B26C3F9AA5F6045F25DD9F5EB4489EA39B1945
-331AC70510C5752557DE21D0A6CFC1EB10A98FA867B76DA6E4249469F591FD154D39E89364A43DB0
-07AA0D7A911CFAE6CE2B557997FBC44F55A27F622BD7B8B10EC9F5D10F2649A646FD964AE1B111B3
-5B46A252C4DEE44E7426EB5739F24E8A390694597DB3A1FE7800C97E59558322F0E49A0CCE2AD94B
-1E2D1026AFA771723E3F523916F55ED866C9FB4A2F759651C613A2CFF362028CDF9D38F05D4C7C60
-24C533E930B64B099FB1AF04B01F5FB9CA6867E6EFF55A772C5391831059987E10CBF987E3F378E0
-1329F73D54DC0484177D3C3C06F67397955FF1CA4EF8AD1606B70455255D631A7D6EB92BFDBA14A0
-FF28B2ACE7E81AD666EA9B3A0F5A6BA3B5DFE35044FA4B3D8ED956009C60E98CC132F2E84967F4A9
-8A67B336D5EE7CAF7DD1F74D1FA08619941361FA7312CF225D89CEF97E864C8369EAFAB94D97F056
-5505D825972B754F6729596EEA91210B75DD8F645382ACE36DE60819A02B3B48DD00F5485F9264F9
-FA926D732E2C267B0BE8CA98526F124F97EFDB86132C5EF16B103908172FC51F286FFE45FF253512
-E0033F037FF182BA536A9EB2DF2D1DB257D9C86C46E1B002FB32AC70CA9462E6EB48994752CEBCE3
-9F08ABD4F4B0889283E55500702185A841E328
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-%%BeginResource: font NimbusMonL-ReguObli
-%!PS-AdobeFont-1.0: NimbusMonL-ReguObli 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular Oblique) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle -12.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-ReguObli def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-61 -237 774 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020947 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A208511C6D0C255B9A5BB2FDEDB4D399C6CF1
-94FFAC236883767C0F68F4EF84EE696B677DE704EC3B097384F2E673A1F51692B7B260693738C211
-9F7D90FFDB21EB715FD5B8134FC87DBA320EE54C2CEC6A4D6BB350555EAFF2EC4F84365CCC0802DB
-B3BD0E3F0D9F858647DD637725C2CAF9557FDF842A0DA6A0CA0F1B442EF8EE6CBF2B03858468A466
-AC5883CBBD3815B283343B39205803C02C917D06825C09E2BB14609FA32C28D720C0E14A4B12D4F1
-25FF6281FF324DA33A56FC49987AC7D3AA206540F8127273FFE9A3DACFFE2B1C269D3DB9A811578A
-C7D532C2EFC18376F473FBB2B32EF642B19CDEC1D6DE83643723E3C6DFC87F97A7007B6081894BBC
-45C955B7001EB36211B26AD7A3D07459CFB33F9C54A40A360CB802FD202C8E93D4DB888B325CE246
-D02D1220ABF55CE646DFB45F07CB848406E470362F80CE4C02D98DD845189877732744CC16C7F566
-9F77EF096EA55AFF98AA103EEAEFB971731EBF3782E6AB725D4E9E35B2968689E8007C038CF25B6A
-E69451A4731E79AC22BD268F56942A233E52D71873E83E00A1874E04D3B22E72FB2D0671AF81C698
-53C389B51F4A257373AEBF4DE2DA1E4DA5E2CA88941F81EAE0E32D982064C8AFDD7A9A600D56D736
-05B9463C6240606B3361BAF22AF74EF89AC804A5793BD512DA2D13F4BB1B73EFCA1E621ED2A65D66
-5AAD0AD228B3B7E3D90DBDB6061E172B686E92355A7C7459D83199040A368B5697DDC3B81DDAD341
-6FF4405E1096B1240EDC18A0E9985CA55A0D697972BB11E9F1BC30765D6775BB68C69704BE200EEF
-4E11B78ADDB6229D8FA49A6B1525ADADF17122C0FFF51A08AA7AED158724AC4352EBB91ED0C157E2
-4281BDC1FD610195F495E87062A8C38E0D046DA4067EE16E81BC5F87E583315B973184E474064482
-9B2A52E0D37E249BAB31988B906F891AC904D1BB8901F0673AECE60ACEDE97B8DB7935C6488ADE8D
-FD898027424AA85A11A3DA494498B084133B857017A6D507D70A3421235486EB3CF7613C59139FD4
-DCB92EADC60BB6225D9CD0599779217BDAF4813A453989B2E56903F4DBB83D83DF4837C86BB4C3D3
-CCF98F07A23EBBF7AB5687C3E1E6792E40F92A7A466DE352294064537505EEF3F9C308C9EB94506D
-B02CFAE289F10005A6E42D2DCE43731A7AE368564B2983038DAD6987F67062199018395BC0FCAF28
-7A2B040C71F7325FA1E9A9808979B2FEF19096B98B8A0A728EB98F2BA3D33B49E3C20BE992822C7A
-1BCCA5B4E4D1099D456D8D7D83C57ECBA0FF21428024F7572A1470317CB8CBC8679A974E13D88C68
-1338C68C9AC9557F97784F4E1C8C2E61F26023ACF46232CBBDF3C0BCC5583B935FE9FA09A562129A
-8927AE73988DB0F7E733C6561CA7C9716DCA9B88208A715166F2FAE6D5EFF289A9B2EDCE813403A4
-16F243F1B57EEDE7D81E10C2DA4065A3082BC92A38B2457368EEC9C3C17296CB09819E9E642D7365
-F9A6EF430FC7DD611EA5FDBDEDFA72634AB599EB666A5DC178B0A0BD1FAB042792115EF3B6222C12
-41DCE36CB38B738F68B1B3CB489FED9E53315553F3C5C3BBCE40451E47B7EA53FD3D3ABA6CE0AD22
-5DAEE734BDFA3BF1D81C1B42C6D856A05D0924E03F7627C5EB24D7FBEA3BD85716207F961B56803D
-BE046E81ED5FDC378F9CA52C14FD8544CA7C539201BEE06487EBDC30FF3B28E8264EC7FD5DA7E080
-65B0A9147344CE28DA5182335875E9F8B2347A44E33DFAA167232A5C3E69E8C5B58B7C7216537827
-C936F5741B87FC68753EB0D4A466961D0050DB59DF3195BD3379F5647F8CFED35DA952D7CF2DED45
-EB442DBFE992711D22EB228BDDF36B8D7DBA27062D60D2271EA8E8412F4290B58F5BE26FF06F0559
-872F9DE4DEAABA015EAB4904BA1F509F6D517C6E897312DDD571D769BC474FD378AF4360E8B1F103
-AA75F48721B9E0BA589319E15D74AC0B03D730C3EF708C7C504787483F134EA6297097B46D2680FF
-8AA50B7A255563C88D594B912F5574564A1371463674793E4834AF11D14C7991E7FDB3A6ABF8529E
-1A4F10CAE79C60D37429579093DBD041ECAF03824DF9C007E96F45595A524B27EF8774A83AEEBD3A
-7134AB4435C80944DEFF5C1CBA921B0A41B9651968581DA4834B3C0E6D4DE13C1E792FCEED26A72A
-DC4D9E3903661D8803DDB58EB2B929CE31FC9F50A694116B00AC9F3EEF53FFDB1ACA3394BF111610
-38F39917B022394C75A0D467D64B89A44E5505DED7D9C6B8BA6BA098F140C9C00E09200EB4828356
-A2D6BE9EC1D5524B09C06D9C6FCB5E2808050A339B5E5FD4DD6C2035A48FE9674520901EDCAD107F
-67AC8C8E508E6003011978D77ED225F361BC0F86A98B6120EEAFB73F7377DB1E7213E02D12C330F5
-492511B4DDE08558D75D5B8AA2D56A3111DCCD257EE96E3446EF1C76F000C8916C4CE261425ED9D1
-5B58CED128DAA6C1300466E7B152BCFB5E6FAAB2519B8A98F26B29F98133AF886A0AA7E586A090BD
-A1DC6120DBB5640885C609A8BDADEEFE5DE0DA5B75A8A29E92515E86E7E66BB29581E5AFF8CB6551
-D8D1103DF60D558E7987E6F56126A13DB2C9A04886C655064E68A0A20D1B7DE24DAD22BBFEE1B7C3
-C208D4FD6A58DE78D6A0A6126EFDEE3B1A9713DEE94069A9F0A2B392A2F391C4C75327803B53F252
-CC9EF0323F84929BA4716C50385681FF5B4ED54929821594F9026B7C1297941B178C3F8A704CE097
-60533DBC6CF4B18AFBCBAD039ECB2EBDC7838A9410E7B227924BED7123944675A5DBCA388B710F8A
-F6048B03DFB713F881EA0F3B191A5CD989EA150B979059C8AADE403855815D8F7980CE6288F47EAA
-37C1097D33F13776F08779063C5217D7408D9835AACBE5C071EA40C9AE6DF685F4A9827B828815D8
-F3A672E73A418E5CB15684EB6C6FE0998A386E124D76620446907F993BE16FE5AFCEC681F585601E
-18182EDCFD3024062A3082AF97E803C47D32229D0A24596CF7E03F18229FA631175699E2F0D60FC0
-9C4F1954C5D12D03BFB4395F0E5EB6C6877083807D91D93CA4177A6B5A8D2AA500131FCB670E7118
-73F8A3C77575EC93A3ACBA37EA117DB268CF10D04AD0F079484DB124F6DC14A50AD3B0294F7157D0
-837D8F9A6060FBCB385606066401708C041594E0396A0BE4B8B66FEA141CCE4BD29366A986ADB98D
-9A6935C49C57F8CD415E93FF8AE0DF75E463E02AAC68DF064C1B789B685F84E15E512404E065A39E
-9E8F5568A7D97671AE1602605FC7E4933975189837586FB1A55007FBB0E91382A629277C36A190BC
-85AF49EF3F0F38D4ADD2B5DEE09916B79690EC83473C63E92CF617617A66DF472A49641DA10654E3
-AD3880D060B02A4A6C75B51E4E9917A2B6D8EFDA12D59DE5A8E222DC7E82F02F23A9D3DBF637154F
-719B14114DBB102BE5EB76B441D7E9990EF6420C2E80942C8AED5A1D0B19BCE115B5929AB9E145F1
-496753DD6B1798324F5EC1D0C7F26FC3045D7BB46A14110C99BA07A45EC16002CB754C0BAE7A1A88
-EB387BB345FA70B0A38AB4D532C2DE49274D4F86F2582728A2CC54B4C09D26C0CDEB8FEE6A42885C
-6207D74953CFCC583ED82DD7C0F29D35BDAE5BB251B8A2D4B1DC97E2264DCE035E359DFBADDE84F7
-37EA6A59C23D1A64D963E635769233624F7682EA34636B595CCD064AAFF3887D916867475731BFCB
-F7F96D5E5E1FBE6AABF454C2F504EA4E8EB382911560195295C87793D5F7739AD7EC7176E126413C
-D4D1058EBD7D6EBEE14BB94A1ECF28B686411D91E07373E891F78C4C0A05D2E8D90A8AE2614F7FC2
-63A762D0F43485473A54C31726F8547701D4A38D20565ED1707847AED9C805780F062B847E668E15
-565CBA07A72B0BA99F03FB57D26FA26FF579C30EED0AAB6FEC1B5DBEA81AA88F16F0C9BE869505BE
-18C1CB79657D91D6706E2A3F0BE9920655B93EBBAE2B4D0B5DF6BE622C951F2CFA42AEDBF7AE649E
-2150FE87CDBF5C2685EF36051080BF39D864573A45AE2648AD97662B1F69787031B9BC43511FB841
-55ECDC3D91E2475D072BDE6A5207ACEA1E0D2ECB1DA8A1BC4BEEC335A5C7102963E84B97BE741C44
-58ACC3D72A7E53B1F08C955F33EDC3A0DC3E7308270C0F7FF814B111459985733C62E8863625A551
-837952F3CBF32ADCFD9F345E14B585B23ECC440775310654DAF7F41E56FF45F89701292019A94BF3
-0EB2D65E14B1A1D6BF89D4CC43187ADADF3F6E03A90ED01E5D876BD3AA56E5EE84DBAA4DAD9824DE
-9984BD45AF96FB8A56C010B3C3A3C6139D58E9D69D9109DB18561B55EAD6452497840B9AE90C749C
-155B6329716F0152A7AD52DBD0B8A25B9995E1416681F38FDBDFA443879B5C4C25AA29E0DCC07DE8
-BB161C36D76EF286EC88D57C74BF44DBCB4FEFF771D3BD82C8F4E233357C48E516EFE3DB9E60EF16
-8E2C45B54651DF9A5ACB5F1790F7929BCB16CE5E9F6A43919AD287DBC8E12D9F9E97E5DBAA592879
-1A5A02D39D259F3CE273A870906A643CC18D86E23F115D2A35DE6926053D8C84B940B362E7DB183C
-4905060316B269223DAD309EB5AC96DEBA757BEA45FA3100F77F4765334EDF3D659E09BD1A5552DA
-492BE9174DD406F8353A059ECFEE3709422940A8C369919EE1F22F7C02412C995FE93DC4559D32A3
-155DD22D3526D89B16D9ADDC30CB7ADA6E52D62C5F2DFD142D4D7B6E066671EBAD08F54917E31704
-1F410CFD8A3243F8B39459C418B7B7C6494551C6F6753A94072D09E0D812351D62916383C6E061F3
-5ED864923002007E626089772D269B298DCA2CC1F25D9BE43FD8AD62D554C16AFEB7EF6E5DDA66D0
-5A810F003CDDCFD2C02FFF02BB61344968091F67D3862C1499409ECCA137B9A2A9BE314995B818AC
-CDAE27ED4AD583BE29DDE4E8C2400C5F8152C85709AD2A4737BAC768FEB70CE81A92C9657DDDB2D0
-BCF9169D272A063C75C150ADDFCBC2F5F2503DE3D13231AA8CFB396DB38E80197A605F6BC20EFA1E
-DE40CF424CF221218D51BEACE64A3DC88377E4F3EFE43DB4F4FC0803BF61764104CFF0B618C90311
-98B094E20B0FACFB94240B438B67BA298E31D3F4E31FD190E48BFCE27B1BE29D36E765E7D295E96E
-DCE09094FAC43B87E294818FDE9363FC7DC5EA36A1497EE25762D02DFA00A9BE53F87ABE62E52ED6
-F59818FDFCA643042EC13D670DED1980413950EE43372D31AE2694B83DDA42E1FBB049F7E7B7E69C
-93FFA3195A2462423DD2C022E5141783FFA07E192AEBC5070F08B23AEC9142EED56DA74F93BDB504
-78DA55DDD0A9987FEA131E4CCA0EFC51064E4B37632728261369C3FEDACA100F1AA78FB718ECE7A9
-F56296C5FB43781E63F36B0E1D34BB748EFF35E1953941F94D1A9B0FA474FD68B47183F2AC53A63F
-9F1D30B9B89C5FE54C3765B43DB403D57994701C133E42B950D9BB1CA202F15B5E590EE75598FAE4
-3D5CF1546572770BBA9A6373F100CDC61DB4E5EBBE0A93E0E51C86005E333F69110B1C8E492F2BF2
-52CADD5B73E7D3EBB53E759353F1EF3C9B8B39C230D13AB7158A5D92EE4C452F81F6DFC18803280A
-A023832FD0DCB482CE5AF615C952BC3F7E58F6417D69775FC7C0D5B405AAC632857736ACF32B2EE0
-F2A2C0F3B3CAD483C614505BE94706322F2A2830FC5AB592907D0291ED1873377E7A6158140C2CDB
-1B0E27EEC9CA50176102200992308045CCB5A169B61EA0546778B8D280737319046716604945A21F
-2A1CB9E15E3A5DB31E0FB5A3B0AFDFDF6F3424B7536D473F9756CA3694DEE4301FB1AB1AE47128F8
-D2B461C051C1B999DBB010E78DD13AFCBBA6F7D5226D540527F17881A18F551B3EEF76A7E28B4FDD
-879381A2217EF2FF9F9982E9EA70AD2003B862D7C36D57C5FF9FBEAAB56040FEE973EFC3B34D8319
-1960010110BA10694C17B7635AE03CC1CD087C0B05522A7A791F0CA34022A3F5860B536D9551BDFD
-BF560A07F63AA4E687407E5E48584E689591F1B52671213E430A708C06A34D2E1D51CFA6B328A122
-007C81B5EB263B967746961BCFC8772F8502DD95898724ABF369B0877F3313A167F3F714023C229C
-5757D4D46FCD9B4AFECD093DCABE52B78132CE9AB6225C9A344C4BF8D96F2C50C4272CB9AA0D606F
-013B2642F8C880E08EA2822C8CF5097D2CDB64932FE195ABD5FDF36D3BE123AEDD8BA2F82A8A628D
-BE3ED6129DC0FDC4BE50D5574AE4FECC65062E70F4703BFECB35EADE196294FE173EA57938679DBA
-6D15448FF44C0D1A903B202439DA93C0B0E612110068F8079219AA89F435E44D0464F54833BEB338
-670BD820D941DF4B31F51B895BEDF833F9C43CB7616DB80F988CE72FD3C12C7D49F740CF85B4766C
-0ED398EB837695D102DEC16E24B7475A0F5DDE88FBF2D6B94F126417C811E8362B9CCC52D8891C13
-C10937AACC228D621D4712CB9DE0BAB60EDE2A97E9292BE04E42E6D3425594DF56931A61E1F96172
-6AF6E6891D63B240E6E79E5BF30C052091D681BA1102409874CFD8EDC3EE2BE331676E31AC00F807
-91D1019BB789CA4F5907F4823B002AF3581448C352BB67D80FDFFCD1C5BEEF60523330AA2C045600
-8F62DEB55E69AC2F86369FAB1ECC90D2487954E61117A90D9269A65DFBDF297EBD29C3DD1F62755F
-8F289C42A534F59650685F8576EA2FC5D26B99B8E3DCD3F1FEEC73131000F99AA9868EA9BAC0B56D
-AE2CF46DA6CC1D18C0AB8D77BECFF7B89992175CBA2E22779C13DB9DF53FF5B1C8FE95E164997D94
-202C37175E562C8622989B075CDCDE173452C064274354D5DB8F7D5A78D48AD4A103B9E47500D08E
-DC7C51C1F3CFA7F43C3686A3C24A7EB5018B0F419961564F87E212CE0A0741AC68D6822C7AB9FD68
-85F5D0B2AC249CB7F50E2353CC4B0A6A24562F564FBBC7090C3FDF1284AB0EC615E0B3FBE132F315
-70C8A65C814F93910AA4BB80D516CB70D2E1D11969238E6F022D628FA2F33A0A15C4EF0CE7F753DF
-80A8AD9494885A1B9ADAE6C38AC9DA6FB0A61696AD3A502630252AD7B574C841117D34BD20BD6581
-217D977B35F5D04E02B933E1E84F5C090F6615AF484D63265D28517BA74BEA8876FDA332A84AEA12
-E6CD82B94AE10A778CD3A216ABC08495EF319F06AD6FF8ADD237D911F846A514FDBFAA8A1EC8E0AA
-9F80F11F1CE615519A4B044F3D1CF1A17D7F3D2174222A5FFA8B39F20197FF6CAF250B6ADBDBF519
-1C525070C8D38220FB501C223F493D80F498621A02EBCCD6EFE914F16B2A435D60C0A1A453E288A5
-3D818FE1EDCA7D55A26A017F2EE47A816E90D6C3FCDF0035EEA307DFB06D2BCCE43458A67354A4ED
-B6E5C57233DE4FBE41ED07EE5EC77A5DFADC4032138DA9E1B74428CAD02A913E40152F8063A774D4
-FDD4070E4B8A6C089F199AF7C529C277E902195DB760D81EC655DFFD1BB283F3C5AA8BB58F2476BC
-797B2892E94414ABBE96D4DB93E280CF7DE23EB852E7CA954D6682A6F1A4BE0507884C2A05AC863D
-2BA73F3B54668397B6C54DC2F4183130AB414875F3C3D8792BF7E5FC4D228DF87748BF0B14178DB7
-E3FFB7891D700A1E9520D778B095DA80E4801F53442D5C073EDEB706A5DB8466FFE7E701ABA9C364
-A37169F585C883A83713A61C9C3BD9336A667EA4E3DB5F4DF6BC6A552BE8D3EF093639EC67E5FF71
-8959F9902477F5AA894ED2D1CD312ED82EE417D95C49C96671B23FB0E1738E892ADFFE62EC1C3D4C
-BEB6CD089C98DE8D247DF7ED17DFA2959D3662F105E8386D75AD308480536959F8E6CF8F2C6937B0
-9F2E8137C811327D6B165ABE46C51834A955FE8306D10033F8C2A34667F13A8BA831CCF52C7A21C1
-3DB92F3E77B55CE291F6190BB1D194A33FD73151C3F61ABD2D8A0C9BDE90E796BD996D2D0094DB2B
-E98657E751BDEEFE8A43EE4501B98F0CC6D80805189438872A60047A8CAA9039893530A3E5F6BD75
-BB466B25165737C939AFF3EA59BFF4A7DB09C2A5B36B8A1F0C6C5E5870C7C9412589877EF44F8428
-4B8A53B5B74315CE72D2EAFC631BC4CC2E5B71DC958B5A6350CB5F615C3A4502E973622E3E18193B
-69572DEF1D02303A375ED60ABA1BC8A179FAA0F221A49078FE15AE13383585FB45FF4D5F3BB3D0F6
-D8BF62E9BD6BAB3C9A7D38C8A5AB0BE57ACDADCBD02B1DC7952D73AEF702D406F62719922BEA96B8
-FDC9B879708E794891C7A0A42F2CCD6812C3F4DB030B5178E3A627C3E77621D312CE4EBE815CD387
-7208FAD92761A5396B67E835222609F823728B1C987857CFEAAE21F2AD5EA9D841212993508091A4
-A2C268BF1D8DA1C650F6AB93995E7C13A3F84DB55748C626FD09C0DA1E3325CCB0BF091E996245BF
-51EB486680162BAE63B6513C74CE83B92359938439921950D713C69324A87BCE67B45A030C9CF10A
-DFA0A82781D49FF224AC57A23C6CB321F95915C5E14E41FA852F66E1E2044A9E7B1DC3BE9E818515
-D28B2C4D2F2210098C39557067062BA4239F2AAE28816D999955910298A450741947A9A1AABCBD8A
-FF3530626089978C87DFC73618C044731B6DB8007739A9699ABC354A6F985E03C11D750B8B9E9AE0
-5436205FAAD1B895B159E2C90562B82A62EA1A7FFB501767DCE2B11C51D55A17529EF5ADF0A0EE9A
-96D0E7E89F68E50EED813836531B4B46E9071E84AA413F4135CC882CE832BF78ECFA7CAB0C9F64EB
-92C86DFCD1152BB7D4AB33831AA0C139B555967F6346068D5C3351A7A4368EEBD2933E6B9F789DAF
-37EF536FCF965C397AF1B7F98AF864B301F3F440B7ACF704B59540453678FD6C1504519481893812
-3E2F47B265EC4F5CF2172D394543D84CD4281165CBEB11349B315A85DEB2D1699507B0C8C110C726
-62EA2959C4962FF093AA5EE6F21F89B3CCB0149CEFEF1855B9A48D28BB363416C015A1F4EA1975C3
-D8807F616C5817C8162536176F464A198EBEE6C97029F15F414275A39B8219128B8C8542E9483550
-7FC2D3908BB0EC375771280B9EBE87E827811418EF93E52EF70546891BFC0FB34969FD7DEA4CE752
-4D9EEFF2B46BED908C0FB2E02EFC1D1624642EAEA1CAC1EB4841E020532E88E59AC890E6C3F44734
-B99722E9816402D1D0FDF8045C5481EC055100836EBFB48E9FBC392143032C909853C9BA38A19363
-141BED09DAF02FDF4E7CC9808321CD0708A1B45270BFFCC3A0D7C27F7E781713D5DECE82C72ED303
-86B02D14575A1A6447547ECC7FAAC1BDFF332C92984758E242256C054656CDD2C45D46E67AEC6F83
-9F95D74E222A6EAE12EFAAB723A7C816D4E42D4ED2725A794743F67597F3DB8CCDDE45BAABC25726
-B851E02E56341EBE69E4D91F2A233583EC816F18A1DECBDA4AB69320F55E730617360FCFB8AC2D2B
-737675B406297F7F8C4BC370CB084C22BFEC5FEF02E9AB290282F7B153F0A4B1AE569F1E52371A43
-46A748DDE09336CAD1F5337FC3D7CF0677091E59480AB15021E023E356B0E1BAC6C6471AD53625C7
-0206C338536F4D0D40733AB217E2297F86B593717C61458B6C93A16027CC886A8CFDC01EF19C34C9
-A608B95A84B6A2E31454BC03C10FA55CDCB7B1EB7DC16AC1E93981A46DECD7E7F00638DCAC568744
-69A2D9B45CBC81398727E4ED3DB5DB31965F358D8179CBF934EE2C4D652C9CC211807F070C80E3A8
-222B4C31FFEC8DFB9EE07A94C973462254BC1B1581903EE6F9AD91524A787129A63FCE048B45BBE6
-855826750C586B6B23B805FEC3E7AAAC079576949A06F422FC2C826BDB78AE96135E9E2C20C2B2EF
-F6171D610B2EB8635ACAB7C5C5ED9C9FFC26CD54D2FD4CB9E4294E178CECA1E16CC8E3FC06518BD1
-6F4D63AE2B435753538834CDD9D8AE7DE624006CE688938031336351A6578C304C2E5480A3FCB43A
-8BEE4953DABC30558B7790C6E7A6F0F9FFA557C50417407AC6A0DDA1E736F7070BC89455FC293453
-3DB004AA9070734C8C2608A07330E421A0220DAB99F8A77489132F6413ADB9EA637F3B75948050E6
-67276A55BEB09D4153DC126BBDBE0DB9298AC799A943D72AFB769BFA1488D311BEB86A907EC9385A
-AE4F77835DFFE4389E3D9ADED1B08BBC2B1ED6084B3D1074A326CCBF38E06BD026919107BD03BD9C
-30470DB779508DFE0DC82DFFD2DED749E872EB7EB9DDF509D5319865070DD76846C34E4E43691AF4
-29AA40DB4BF2CDD50B275589987D8081F7C5A0461AA5D1455A660178A94A0BA0DCB69C3CEBF5EE04
-26D6534F6F919D9795AD6A0E1A1F452AF3B4CB2EA54D6011FA809132421D111EFC51174E223AB6A1
-3596411A9723079231B050CEDAE7659CF168C39AEA9C6902C2CD37D25492CEE00096EDD63DC7643B
-667FDFDE5B595DC54F0A72C2650E1E46990584C78A5CEF9BFC3C5F88CFB0C49CD6CADD9DBA675177
-D601927D75C6902B55AAED0E9E3CB52A577C887D581B3CE6201A1C77C9546CEE5A13B92963337F17
-070E2BF9F5C5E86B84225863874618AA50F4DE855DE567BF2AB7163944ED43DBD7F4BBC0E1623180
-7C43DCB47B2EB694E6FEDCFBE26194D2D9943A1BFE32AA1E5305F5E341EA021F91532162978DD1B8
-C5295A5E7551E2DEE46DC2347C6B32197AF430AF3BB676A53BCA9BD1EA88678377DC0A9A86E2AB6D
-E29E3E261BFD5573C66FB5687BA9C0544D894A759866B066E1DB5C66E60AE071CC3A1C4AE40197CD
-E4EC723F7B80137619DEDC99AF57A5497D6E03C1C9E672E74F48F6C213A3CFACF2699CAE72345A51
-C71C1D69348DE5BC5F443EC0EADE1E76A8A33066922CF3869E3C1D26A3B34E540DC08EA4DA2DDE3E
-EB17C16790DA4EF1A3A76D71D34B788A87838BF2A5A3DB8176F9C097D2320050A79EA6C4A94926DA
-11ABCDCD26DBA09FD33F30AEED977E8B5AD928F3967F607628859429DCB4ECEC7DA3411BE35A0385
-1017B535985632639D378CDCD13B00FE537A49FD9EB6DF1E3AAF5C41EBE35721FA6833C2FE08AA3C
-FFC3477E7FCEBF9EF9F4DAE62FF78F319481C3F1E72999C8A493EC6EE295316B58A5CD62FFAB62C8
-96E521B678342F04BCE1613CF7F6778CBF5227BA20504500D743270771953ACBD5C6586432F3FA6C
-0987BAD33B88BC6C15D29C4B3CC54A9DD72A2357AA5BAEB2CB057CDCE72DC80CC98C62B16AC50B4C
-6A7641379B766CDDF990DBB2FC7F9CDBBA755B6E3DEA438FD6699C30A99A8B3178E6D613AA938120
-835E517431D28114BCA1AB745C11FE6E52ADB82B9D3D53A33BCC49740C93017D9531ECF43831359C
-5C93CB0E926DB440B139E3125CC2E069B1CF6D96EF68407F32DB517242C3AE0BC6723E560B0F45FC
-7F87A5E44E1751C8B7F9F669C24AD5CF16F84FB03BA121B86B0694234D8F2C9C947269AF96FCA08A
-78F736E4E04ACEA44C5BAAFDE360FCD8BA6A59724CA86160A5527FD564468123D302DB45173C1B21
-6B01DC5B6D3415B13FBDBBD3121A5493374B3357EFB131CABFE5087AA1D2C7472B0377066B3632C8
-2073C6A846285CC953A8F28E131CF587B35217EE498D9A1DB57B063CE068DAF55D8CC1771C0C3099
-9CA4FDC5D67BE4E7E69418F6334BC6149000821B89A7437CCDF9A6A0ED702D5968F1E04F7E4FE9FE
-C9D1E994885CB624035BBC5426CB8EDF0456828F8EEE75BE491B45FAC192A405EBA25CAA4F4C66C0
-DC234D7B417628DA5276C08260BE512B2432256C401A66E3B583E69D23E9FD278CD5F2178544D054
-16B9B4F61A88A4728AF2CEED07C08E207F31D644E8E3BA1E4E2F9D8E30936BCB9C6AEB54E37DB46B
-D64F2ECC1021336D0564DF0F18E5A6B6BA470233D8D41FDD9D1079706EA685B6D8A740570BFB78E3
-984BB155C3155C69BCCCB41CB51975EEA1C1B4294CB546CFB03DC31BF86EC3BCB1977E8F94A771CA
-B09DE12A82F1D6C791FA7800E5A21DF81C9C8FCDA78622ABE75B54AEEA747AA4F26D563200992E33
-7231A430137C720A17D44F3AD6CFFE63B2DE12D3184BD3E151F955786B8DDCCCB290C42718F3A219
-1759DF76371C2FC177544A6C425CAB14AAAB31628A9CF9D71B5257AFF0D59843989CF0D747375A26
-DC9ED29B66AC2147DA0168306C48C2484C70CA92F33C0C138F92F276F5EAF5EA3082A8A1CB12DB66
-1633C2F71E3B69918F509060AC949FCD52C36498A2ABB77D139DF1EB33E3B846A7C1BBDCEF5DEECA
-4EF0AD250CEA9C2751E13EF7681E8FAE0491CFA6C144DBAC1FC39D39E76EB12D3EE9CA159AA77D27
-94F0C433345B135BA632F544082BBDC9471E9FA3AED3A7D465AB7158E8AC97F68B1FBC8D368E2350
-45C18EFCCADEE98778D894D96301F903283C5AE355A863BB0DC5809158F7E108662D04A5C1234915
-E7BD5B4C30F9EFA55E702E54F87FCA06FB321507BC57A1E55CC117E21AA4E3A4DFB77C1A949EFE36
-6D93F2BD827EF8CC16D387CA82AC039F77FE995BE6D9AEFC87F8D809E90C1017803BCFA1C737DAD5
-F1A631EBE6894AD20C70791665E7BC71F21C2C3F4462F60FDE75C8A377CF49BE99314663C6ECB538
-B1BF021B2F2174D2B22CF6FAD115EB0ECE8A2E64097A5FB0A2AF666E1EE13276AEC59FD0C9D4BFF2
-3F71E835984E5EEEE36490C54E077AD7355DBC98BDD37DF29B3DDF8C55480B7349C4D17322418705
-796A8C521FFF920DD11773FC44FC631C7D6E9B420D7965D7F62EC7385F2BE30A51E2D796483134F8
-40AEC71FA19ED1272C27F98F2CDC9C7E54DAB585AC1703ED08F5F9E825564902EFD08EDF99DFD494
-44C21FA6BE16CB8A1B6D0C8A5ABF80A50BB8D055483176FD0AA07EBAEAD88FD694F96FEBD60751E5
-C4D8F9BC747D4F4030BCDF9B0370B7A5E0A6923FF60DEA16EF47F886F10CCEE6956ECF41A21F7C59
-6F3BC78299A9657266807E01762B2B2878E551914CA312C2A68D34CD91E4F5115EA1FBE801346E14
-AE529049089B6B0273E258785773A9CE8E4B6C4211CB7C2767319576758F811CBAF3A3FFB41B3130
-6C49F3798B698A47BFA2E3CA0251C4D90C0B02ACA28C611744526906791D9E157E54CE4E1BCF5B68
-6990BA8AB7897D624EF00EAB92CBAC255AE9177DA9F0D86447D35B452CD2F337147B5D3EBBF2B952
-35778A72914EB3707EA78294B3A3BC4ACB19FE87C72AA1D982E4B822F07B115CADF4D3E7EE3D1BA7
-08653BEC6F0A352A0C33252ED0630E7274961896D461EE8BF523D5911BAC1C8AC763E5FB11FDD217
-4E1F129675969C195476C7A5E18A81BF9A11ED9F2336D5301E3BD32174ED5C933E8C85D6272EA218
-52A6F7E2AAB174E0965F73E0EF89E906BAFB181DBCF8B1F5AA0C12D12C6272753C016AFEC2EC9F95
-41B8757874D6F2E061ABBE8B29281677246305B3C41E90418426C575BAA216CEE3C5EC29B2FDEE1C
-77C14FDF940792F48A56AE80AA33E370B037CB28A7373F882022AF378F26B6006A049FD3B35074A8
-65C97D153352ACC156992C00DE26AD21C982C71F0EDCFEB61593BB40FA5F2CEBF23C4FF34A4F4BDB
-73CA273C269242D1C6117262B7C47771F2619FE5710855134A80FA8F92BB2425CF88940CA3450F81
-234ABF2B11775929B12CFF86442B2AA0F4243D324A5983E5D1829775B3C7A111D5622D1C4E2B2A2F
-982FC8A95F789881416DCB34950A393F4F1720D2212F3D343A17683060182355DE9E4718506D76C9
-184F8DAC55788D7E603CFAF4907DDE965A49C323DFF425FE88C09AA4A4D16283F9B14AB9EF1BB885
-A954034710B4A9DA4C88A8A0932B18D139A687303EE562EC9F656F12F3E8F27DAA9C75DB0FA946FD
-0E1A982BB58E040BFC0A49A4AD8CD668493FCB573C849EC5474049A693CBEBD4D79AC7515047CC34
-7A9A7570C90861F3ECFB57B9F53AB9C0D6B05C8C570A8F3C04D58555A45524C98FF091B8F8A422F2
-E0E9E5A7B7FF69F1CEFC13E42F1CA276BCD584516D266BA6838D5E9CA9E9854F50C7D92CAED61AAC
-AF758A7C7BE59C3BAA82BF32B691ACA3E8EB171E08AD22C39FBE586A54E6E4DE2CD86B31138546BB
-8DA5834B2C6E4838547A1B67E651964E43988C8036931088904BBB589CA901E7EBBC094C0DA81E09
-1915D9E46828AD8596FD0FCA39FF12A6C27A359337F973809E81B2E9E3D43B3146F2516667E607FF
-EB9AC80FC95A7B7D4DED551FEE0F3561C70DB2D69ABA96673E39E3397F1C3F8FE5F48BAB8AD6E0ED
-8901F90F6CFF24E80CB5DCAC498506C4D01033E497C1241E413B022227A3264DA68BC3F91B35781F
-A2D018475C199F43CBA7D3A0D5697B45321BAD2C394B207136E1E16B41794975E8903EF2B2E1C33F
-87CF72C325C11EC0B92FD3890ACDF60B521DA32596763BDFCDCA837ADC6F26F129B23CA32F9CD39B
-33E64576970DF3C05B8DCA4BFE2F17E6C5678B84D69494F1DBA9FE0446AE6AFEAA1FF245C07916C7
-B7569E6267C42B459435A1D116CEC665B311E404171774C0ACC8DDE96B0D9167C8CC7D99C4240559
-2D745C4428755500EB4719340D2FC6BC215B67823F69FA949C08B5EC985D7AA87C9AC1F9BCC8994C
-6CBCE6027B7D1E0C22A83A5DE61DBA05D4AF6884C95F46BA7F253E0B2337E312916E163CAF9DB2EC
-56C5425990FE73EE53E42B3BCCA1CF642F02B0C5ABD529B568E9ADFF865B9DC190240AD78AD226ED
-884BED3C285B4CB0E3929E805C67F1318D186504D92085764B70DE6AB5AB6990F181BDA50FC31262
-348D980EC76608CF08176C2502E065AC2D8EA5CF9E2D44E2B70A7DDC7B922047C471DF8A0B2087D1
-106B5BD8A830EC0E53223CE3C96EF56E5541191167860EEA58D696EC357EC55799438C90156BBF2B
-13A0D5C9EE93227746654ED73EA5B9CAB61DAC5BC690F89C87FECAF9AD03BD39E438F43B81D39E07
-E0422F94E8B096AB38C88BC2E1A043811D8141C1A35DD3A6DBE41620E83C8ED3A379CD80D4F9BC30
-41BB44B933DACA7C5D4427AE94A176829F24B5968B713431CB8BD9F53080832C6B784CEA9B515687
-F121983EB9D9C9CE8BD4FA3BEC48AFE64E643B7BD86D8383D07521FE5D091392BE124CCC91113604
-3824B686988E7C83AEBF406D2DA88FD952D0FA9327F4AD04C55FEDBFBFA76ECAE8A176C516479AE1
-467125B7EB3C9E7C5B103BC0C470946346DF271F8EE19DF7E3FF7478C35EE059297F4BF21A5C7B95
-993BE6202E897776952A7ED0613A5CACAFA731FFC633CAB62963150E86EDAC796026CE02EB235B9F
-7A54E0B0C5281567138A612BAFE409A818C216DA8EAC5EDF9D1E3A1E3514AE50735A111B4D2AA083
-4EC6C11E290D58FF340F82F0E079F1C7B3566F2336EAA45BF72BCF88569988DB5F65D4C1E59B50F3
-41E45A899656A0B522847ED567B49CD5284FE50E5F8652CDAC1C076804F2B2185F6A51ED19DD4941
-2E65A0D2DBC844B75E2DF71B009776D9F97A4C6F786EFFEB87A307FB6B912BB659DC2BCC6D509A9F
-BDE87DE8D716040A8551B6CCFB7743978AD992D14D2B85CA052E87326138DB196C24593F8F7ECD6F
-486F85D1666B9DE2ACA6C7900044EE369D223524664A2790B773F9EA26E0A4CDFD709942A44298B8
-249506EB9B77BC887DC0EF947DDDC7CB3CFC6B48F060DBF032A11884E6C226D9D447A5A458CBA325
-D57E144C6DC295262763E7BB8FF6A0CA473EB7661C12E0E8E23EA37E8AB3387B9E54686F3E57765D
-4067E521BC1AFAE52394227793C737C19208803F2F2DA920B553E2AAF94EB992AB17E31B58C15CC4
-AA8A1B444DF5B3E7CD937CF03E1F7FAC63342731B4589F16939D16E8E497A74CDE5686F529E9495E
-1603D74875288CF53271DB9313A4511B104F80B179FCF213558970A002E945281BF3AE51E668DD6D
-13D9E85152747F562CA0B75DDEC8FE9FE31F8D05B0F59E802888A7A4F19B29954A31108D2F041367
-DEBD6AA1CAD856BDD1427E9EFE89956FE28D500CDC6A0CB80A76902A08D0BC6705583243F1DD8020
-749B257EDF4803BCAA653F7FD6D8B91690995BA5EA3EE92FCD367C11601C6B8ADCEDCE67B16C596C
-5D200693AC5FA15D4CC6CE9DF7A71C8A925E99F5085313D60FAD25C1BBAAD28D4AC2B69062D68F39
-0530A976319A3904CEE44DC9451E441AAB4780425440F8C499B81460B5D3E268974145117ED843B1
-71BB14AA84C3A084A7D8E07B9979260675D5CE6534DC176DDB60DDE90F6A3674F67462EF78195F8D
-FF74FB5882B079DEE31FE92816F16CE1A70D07752EA25FAF5000ADF79BBE7D17EB1BD2F9BF6CDBB6
-F078CAF97986442680A8FC4121866F9CE86C385DE34E30D8B9768A0136D9EEF79A4B38EE99CBB9A4
-D32316564C9D56996E2595753EA71BEF684834FD030D38BB100E2332B026B046316A53270A96DAB2
-182E994E91262FB03D1AFFBAD623F1689228409884F91DBA153030870A7BEB2C7EE2DEC51875B137
-33B7929041F8D23A94904BD54DD4BC9B432DD0C78DD81639F46D686FFAD39AAFBD1B6C1A37E248CE
-48F23E12464D5379B4AED0D50B5A41577E6ECB75270E9AD3EA7D0FC09DAB271FB18B51DCFC0069F1
-5D72546E6C51049F3425AD005F88FD7F02042DABE9F097F9D6A076B30D8CD777B1EC12BD163FDABA
-5972EAA61E3C87E9AC007A052B1A3FFE14D7D43C7A0ADC89B1DD4CB4F9C762A84A6C0701494B2D8C
-4E4E1A9245738BE4111805C2F153A20ED9FECF2DCF4C8F7C3BAF84D60454A7403D4F5F81C6404173
-A7BA81BB0CEAECFD493D877465DC5735D43E3102CEC57B8A589182FC65A4704661A9E351FCCBC731
-5A87E62F65D24EEB9CEE979C6E10DBCF5C162ADB926EC8CC9BFFE381F6B8A3AC0A19D1631BEA2938
-731AFC99E8EAA39BC75DDB3A39D01AD8F0BC1838F4D674B9BEE9F6F7BE4D9C8BD97E8D171EFF330C
-15B76614A1FFD25B3BE19E4A201BCC850F926ED51616318C965AD2F0E56F9433B1247C6D5B72EDF3
-D408A3E0674A509BF30BE813A5E669D72B978794683CA8B85E3469EACB167C30F7666DB5E081B81E
-E99ECFBC1704B9646B1A29E4A4CE5654CA8409ADD60145DFC54225BDB8485E39CC98CBC3F38FD0A7
-97E5DFC2099452A2418C6636BD2D5F6B24345ACFA65F4E7DBD2D0AA0C1776A4920B4466C509BB5BC
-7D6627946C4DCB38A27098B7B5BEEDC2B3BA18F927077F71E38644597719652037621BB350BB5369
-DCCC073954026E6438FD8393DDB3630C4473F06D9FB9E422E435566C396B12FDCD5605DFEA232171
-CD8EF298786806E9159B84599C26D4C7D8C3BB064665CDD072E2083190372AA808B2268B3FEC8878
-B6420CA829BCF995DC20E067EE6B8E44D2869D51BA3AEDD1763F7F8D2CFB8EC41E6E9E0129DE5343
-1457960CC51D546B10B8B6CE08A1C2B79FBA448DF9783D815608A16C55E589DCD8EF6B04C66232F4
-7A473973A35618000D79B8173258B7365C9691DDFE47B16EEB08B28F881828B946FB5D6FE10ECC6A
-FC4EA1F762E90B3320403382E42AF4885B183AA48DB5E4DFC9A54E0B4FFBF7C26EB17A4F13B4BB93
-12234434FFF05549E7587BA0373ACB3E31418BFAF400D8938FC6466B94273D1735306AB912AAB13E
-31DA3541C1733E2A7E4DA5B82767D37F3084AA7A7C488CDCA7ABEF77D19E42B4448ABBD346E9BC28
-8ABC4540C0A1CFD0BF46C5BC7454B25E27E9906A3E6CBF678BFECAD1B19B4E42398A210CD567EC35
-FB115D5C0DF0EEECE593982056B0E1D14C292F70B3E049984F8881C8B477956AD3140B4AA22256DA
-AC0D11C4126808B5B9F922BCC5F24A77FF352E2C621A3941AC07A20E550A69C49B1B87D116EE6F2F
-970918F0F1A501166AC4423FC212E4EC8039AC7F9C212D864F418CBB92948FBD588228108FAC1AD1
-837070512305C110F0FC3FAFE6E1529C2BD0DDE868A9EBE5137DFDFC5C12A3D08014BF0EE27B1080
-02AAD6B607F5C5C0F1B1EED3C552919C9A2E97204A8127F97B1066607ECFB47BA95EF2B51F007C29
-3B2F6A63041A9C1120D9CFCD5357222E5B02DFC73CF94CF9B5CB00EAF073E9BF253E30E09B50341E
-57BF245A746EA31BFFD0B00201C34CF0881BBD1006BC9BA7D420A48E53686B598BEDB3449924EBA5
-8D5DB1B1B01AE2BA281D5758C99EFE38ADCE18F7B182FBD0D0622A6EA497A4E7C00C7D17299A2765
-EFD8DE376C214D01A21819451FC04A0277EC84A151FF93903D61C78AB7886911E36E12526ED855AB
-43F6289C1890222602B8EFBF15782B374AC1E580B6E963403D6D15A051DB8558F2E61C0B9476C6DE
-5D4861585CF515CE951732F20D32969F39192FBF1690D242AC04D47E0C53D467D0FE4656B9526C0F
-7F852348B0437737CB0F29ECF9B54A5E17185236DD0C16349C3496F3ABA569EA20E343F6D771210C
-39DC932DC65ECEF94575C6E76902CDF6C8C8361F9C757A2577DA535187FD526699917CFE0AD438C2
-A758727B306BC7979547E68B94E87ED820614BDBC649D469EF6B4E4E3DD2EAEB5F80B22FE576CED2
-56495467C76A75F589460061E03F3A1B065121A5ABE3E2C51148B3DDC9F624C97889AAF7FB84B158
-C015EDA5670746C6359D27B0C2BD65144F2B88A64331816DA904572BE398E015A9924218B3EEF951
-23AABFC3AC8217B7B4F691219A1C9DD0A3EDD5C04E63ACBDE71B423522532561F4B71B7028415C34
-37E346BE728A415596AB749015C1D59BD8328E39A850CB98085B34B57FB52DD1D154F98FEC49B3AE
-BFCB1672762E4D2A1ECF02787F59DF1EBF2625C3631BED849B298C6D226BE4E6EA2AB66A287D2BA9
-2A6C9C612A5F849B3CB3C25F17164BE286F6E4F5E7E4C9EB17BC68AA5EF0190B64696A570442E1D9
-BDD1A30E7692524E30E4B4C3DF84481DCEC6E10E7308E65DE9D90099F3FABB3F4F766BB86CC98594
-6D2003E21287761A7386CD8461615B570BDA015F5EFA23D18E83C325EE444EC166A1A32D9818C2A6
-5A092D44156C06D3FD079B92450B8A491CBB3529DDAC7D95AFE8EAF33777FBB265FEB8A4B9AFF2CE
-CEFFF49AFBDCF6C4197497D3B448866D70EF28D8E4B17E7CE95F43F64BB48C4A73EB84B26650F62D
-3E5199D64DB0B5B87702650ED0B850FD5D16C848D096E4C7E61BC63B2A3ECFC099CD713E12C91A65
-77A88D6F55D348617C7A49890A86EA8FE2045704B5ED529DB128C9B19EE129E5FE6498CC97087F6B
-DE96007C9D01CE9CAF75646E5A5B32BFEAD9362A52223D746943A2D09C536CFAF78E601BC2D2F0B7
-63AD722E3A7AE7069D65F9F2BDED7278511D0120F5EA071D41A69F8C2A2D720D3B24B4BE61C83FFB
-EFFAE21B0560A6FD1A44E53E42E0D10E0E93F421A8A7E167BB65F0D7F1DDE2809FA3CDFD931CCC69
-B119C83238C1C00EC100D8E7AB1C7FB02EDE97073C8A5860371A8132BE391EB1C397B61F93876FEB
-438C288EF2E38DDCD182A5CFBBA994A94A1BF818312CD8234215FCCD7C240A15AC01A885E1179E5D
-7D6305DC2F534BAA141F25EA6A5F356486E5FA0AE3C6980A9F5E8E99E7AE5B95AC42977510970245
-4FC951E4319AE4B1DDC9B07D0998372C0A95ABA6985A4DBE6DC633154FAA30ACE689D36A7F17011B
-F29CEDC58A6692A8B3B0A5742E6CEC2F69B255BCEDA762DEE72F125EBA98891CFF4D88AAC14188A1
-8D81424979C9079E44890D94EE094D4CADDC1C7AC5F6791FAB8849CC0240A579ABD800EFE3AA4EE2
-F78119A3C2806C05C2B1F17940BE73984982D1C0065433A9BD658EA31AC819DA9A11B87475BB565C
-C294B6F302FE3F7752ED9B963C5279B5F1196762D0E12E6DA46FF9A0CADE3876D7DF695D8965CB4B
-47B351FA3F759811269376B2C3134403633FDE27C9B024F6BA81F3E1699CF64A426618428BA6C326
-6BF016C5DAA5FA4CC82FB6DC23FF2D742160518CD3A65ADB38E53F1067076CA1625466E0C64670A1
-564A54CE14DC5C57D24A12283FBCBFFD0FD594AC2A56EE58B552F7586825E4FB1EC23F8221711692
-C8C56F42272B87EBFF3865191F1C11943BB76D8C0CFC53ED452AE49404D2C8193ECC2A7BB8CFBF24
-870ABA38D2CCF7869E9363DC0AD94FACAED5922B324DC3B6FE83E7B34FE29ABC1EAD62B49FFBCB81
-1ADBB5148D5AC2743E3A058386036FADAB6FF071BC1C3B8023F908B6FF48DB0AB1C9C67487C35211
-D40995E1892C8B66AD6C9C6203F6F8B513B11117B10DA8725AB45B4437B5A88A96AF3178D856D601
-196E8162868A83DA64E408FDDEBD14D6591881EA652032CF2F88B3FD6C0479C8F89AC68D14D01AF0
-CEAFD95AD146E68FAE01A07F39E7A0C5E4FFA6D6A91D710827CA5ACFE7D1F946A8D7B67621D60F53
-41F32C12A6EFB03AE5AC5373A382C044A276F6B41C173D0AAAAE0C1DE4C3CC71EC2637225CCBFBD4
-5EAB92BF39357C57195B410F74283585B12B926438AC72AFADAAD2D0FA2CCA728C8E86BD3FE75D47
-B8BEB96AB13B5480F7A3D5741EB51E3E40C21FF2ED7D9221D9877C7D1A8CECF394E4023FCF8C4EFD
-B38B839499FF5CD96A46AB4FDB46F35D3B48B91757C0159328120E93CF1F2739E936E28908FB1947
-1D3AD7F6F1AD2BD1EC364986A411CC1B547D0CA104FBC10B1CA7B638A60E75485574034561DB345D
-DA68415146AAC632DFA34769B6ED7D7D4694E92CBFF4EFB16B55495908102E85E827FC623CF1BBE6
-A13CBF64E878E1A2A159948B5529B75E071744A5F0E50DF18C110B0AF117CE7F33F8C959D4C98CED
-5A9D492AE6F56DA57B0F17495DACB130660BCEFB064FD8309D965ABE8D2BE98F6898C1B7A39CBBE3
-E75DA0FFEF6CC3945CE76DA3BE915546FE8A5310130AE0ACAA9AB73C7E041C00533B4BC7724657AA
-649B9388B791AAC5EABFCDDDEA2CC67A0FD0AE9BE37DF9AD40636538EE55A83F60E9E026C64FBD8B
-220CEB46E67410144A520FCEACA252E8165448F84D8EA083C793AD09B90B3EE83B73FEFC3365C729
-E3C738894B8C01C2F8AEE0CC8B114E1175EFB44CC4C6CEF5C8754B1CC7CEC200AD8BF1189D741CB7
-5BCA4E88BE959E32216AD33F674F49AB20A354CF3969F1611A95D3934E148831AE7C81A7EBE3C524
-4F743E66A82E10D16CC09F8194EA7A596BC5981D833318AB4F7DBF2ABCE543E410B649D18D146F01
-486159683DF61A3F880F9B21EBFAB77E908C6CFC79F89BA5F51114F0BF7C3CCEC7BF0F3B057C3195
-CFBA6908E31E0DF10DF69163C9DA7BABC00E9A580FA7FAC202910615BD479BBF76FB8068630D1EC2
-1CD2926D351E869E16C2CF1E023CF04D4FC61607DAEFEEEDFF5593E6023492F00029E2AE4B4A2C14
-50954EFA2792F32B4934A768F892171245A1E2F034E2B9F39833F1B331A19A386BAACFEC8C929BA6
-B67CD8922BBC9DC005EC3976575D5B0508D0717C6BF11123EA36D8FD37FA77A6F1F5AA84D4AD8D25
-B2C11D1877A6E2F9B74F3B5829FAEFD4F7209CE9785AA6FDE68672554A6F29D8BF03FE108ED90A7F
-58690FAC399A8AD3A26899072B832874DDB629581A51B3325CD9EDFD49E890EA8959DB937DAB83C7
-77F2A426B967AF5888C33A3635B78D647AD6BA441E222C958EA58D61945F781D7EF409771B89B202
-42AD7D07C2EF592CBF413C5FC89EC30FC9EBEE4BC63709AE33B65EE3091CECBE610B847E12C556A2
-79C8B114C3E460822D3330ADFD72BD69F54C08A81848C2002A08326CF3B09B1305490D35AEE59179
-08E1604ECE75BBE811A715AE8AF7EA9C371B322D0428EDF4C893FDEA607E70E1B6F6614947326101
-EAEF18E29BE0557D2A92CF1FC1505E8B434BC368CE07CCAABC0774F8A63E1073FBBCEB3F4052462A
-A9008A1E53F188C9EAE339FABA74AFD6D60F47282CD9FF721F64BD51787F3C13B5A6C5A5F7861171
-0111F5E0471E206D72520F1DFA465F4A23C71DCF99A04CEEF11B0E3BDFC35B7461A60753D3AC26DC
-50A5956C9195A4F5226388E0953DDD03AF128A98F03BDFA0602CBBAA20AB9ECCDF7255962A332E16
-D4380762E498FDA4885C64FF5F9B480DA487C58E78943DF62616E6E2C69EEC8836DFCFA9EBF58938
-A878F3E792E8BD8C5D6DF557A5D82018DBAE1CA9C64BA5AF8E21BE1B6680FC5DB22422220B776E9B
-A0BF1ED2B7212F8BF111EC8C8C77B223C05EB5E5F1CFABD2D037F4BA0F9503E2CD83F4519D180476
-63F09E308883F5DA5228F83045FF41214D2273B2FE0A9017D5E0557BC2A198C35D1E7E81F7965444
-5760CBA1D3F05EA4B90658E53FDF0823BDB1501ED51DA75C47395073D8980D1E3504E3F67DB3259E
-4EE73A87CFD96F84E221796573958D364A51E635FC55478C9CBF9AEA16B7D8C25F2115CFE4B7F598
-54E24968833BA0D64D1D332A666DFA2A3FD71B05A26BAB7DA382907B13DE0B80871DF184D3622B62
-3D7E09BC32A4F6EA2E6DA450A906EAD36D53FDEC7F83E101FEF32F4FAEC581B000686D86A0D3861C
-1E67F18A4C4647F51F978484D9E3100B37BE9D20AE84C085461C1FBF929C669E936659050C2627AC
-1B019837BAA75757F5B0A82E8AE9CF2111931A38BFC94744E2FDE3F8710342AC615286E4ACE7F269
-743AA05463AF537D9416230ECCA859D8C99B7C6E70BE7FE11DB698589BE9E11900C8E9582A4EF5EA
-94B5F62820C90DBC022A620EC536E06CB8BE7526A789996D0E741AAD980880A33800A6FE92286CCD
-02C9CB407EB31FB95D9C9F4AFF38B37087AC582C1F7B64A7C3D2202BDD62E9AEB31BCA85C4CF323F
-03DA9D318B91F78FDC0D266630F7444ED068B55C05461C97552366A82C2E743CEC353D51028FDCF5
-403B3B74D379B82EB69C4380ED40239E15A86B2E5C860891E26781CC111FB5705E3B7C7AF1946006
-54B5FA1B5FC54FD0BA43666E7BABD2C91C859F393ED49F7123EDFB648A3D6152F2C17F7E438C0A63
-8968AC06B4FB3F77F64F358AE063820BD33F0213C85C40E4D97ED100EC2DA1C2E1EA258BF107AF67
-5A9D995F60BFA37222B9C2B325C0052BB8537D2B27DD43A129C7E8FF42757B3AC9B447703D382108
-DA520B8B3BB3E8C7295B776B44ED28F863B8E1F81B0BD1DAEE8A171525D09D2620C04DD3219D880C
-2ECC79282DD7B1772A9CBBCA706909AE8BC7798E6EC7375189B6CFCE8A875849176E5913B85A18FB
-197A33CA4B5B4058603CF1FA79A56856B43D538E9ECE117D99AFA73B57E307364F553644DE01EDB4
-6234EFAC13046B6E047ECC8F63942F20097AD7ACF0A45C0501A95263DE9439A880D6B5C5214D2918
-0A54D7FE9B2E627EF49E189B59FCC78745E878E45B46C0A648955D3EA8C935113D94F92EC963F66C
-F3CF3A526BA71CDF3CD4CA69EFAB08B7389E3390716892A4872BD29DC1E0889A42D7FFB4190E9A8D
-05D84EB9C5741BE6B02716BC75E0106F5F94BD3778BE985E03860D27E44088C3CB2A059DEBC420DC
-E3A8F4087A9548485E616C409AC400DD1C411CE4B6A229D091B253EB68F06E43511EC5AA6ECA4D6E
-4818D6AA2068DA1AEFCA377611BFA816B5215182432D5683294D67A7C1FD76C52233087CA44943EC
-7280005E93145F5E7AE50100C18364E1B36741E9647C4DC1F68A58EC44095920FDCF05532F603717
-80F78420077EF5C24D63E26040CDDFF8DFD65D871DB943F50CDE84900C1372EF33FD8AB9889C82F9
-4F61A0E6842219A0F39EC7B232CBF802C4A744F33159432E827006C7CA77E480A48A9B0E6A876158
-8A3102E3F98A77BBD62A3A23150FD140D3941773BF7CBBA2338FF37B9EB640558A2313E8824E8E62
-0331568A9B76F4897198A709F9313F4AC40827D8C3A71F2ABFF02BFD57D30D0B14012FB5C39B85AF
-540DDA0ADC27A85B31694E8D7B61F9D9B476571022D98F2D768246550A877293F3FF6ED918A498D6
-A600223E1A61890C49ACFB60265867CE9464F9C32C59E94F7641C3873FB4FA6EB237F8ED94579957
-270D6FD640BD9543E683F2372CCD7B60AAD269E03A72C5CDB732B128818D41A6DDD2BC139F7D3911
-F48E1B1D263DD4AE8E4CE1A686F3A00A2CBF48978631CD243566E22E68F8D7397134A3530EA3745E
-4F1EACB4D6A5FD84C3011094F37573F7F9902305020C53926716D4780C6B0A257BF711AD94C83F1D
-41A02C1C7DD203A3E6E4B14EDA2FDBB36B063A3E074495F626B0EEA146D22AC33457F44F41675967
-6D2A0566EC2B726D2F0540ABF225339F02F406D4E7A62E5233DDF20AE7C86CA0CDD561F33C422654
-BF2DC3685CA91BB9D4B09AC8B15A24A99FF56E2894F11F7BB4728FE8F0F5B799F74F475D2D01F61B
-7E9E0E541F7FEB8A557486D7DF2CE50927515D833BCAA1CD9BF7A650BEE9E003A5951C98ED147C4C
-52F64F692AB281984EE65A47E44A4A5FA93D6F18D276D3B01C5E5F6135AC6940524CD713DF4077FB
-4943E8AC927A68489EA52ACF7A854393CD027EB52EA2DC6234EF034F3DC742D6DB5A67FC21D22B97
-146B9C268BA97C30161CE01EDC69A6A1F05EFB0E06F22644E1A368F0E2C0C6C1C832878E0614B74B
-D645F5CB293CFDB7618B837FFF14A1210AA061C8C81867244305B80DAA73CB25A417228E9559E7BD
-52C119B0CCDB7C4DCE7E1B9F7E8EBBCB575E5BD213BDD6DB88769DACB05E5870232F0EF82F448559
-187423409EEF756BA6247493BE24CB1879B5DD822E03D0ADEA1EDBDD83D3FC46759C679B921F0616
-F27212903F728AB44C1784E8A7DCED0DF5625A7D3F48A20FCA34008184CECD145CCD98E31B79E174
-CF107E8F35C40C19D86B40BAEE6164353408801EDF75A619FFC5B6FAF3F3A95F64795CC40C1F8963
-4FD8C13852D265FBCEF834C800AB46E3E8167476B23CDD8AFF6E2F997C99A86A9CB30EF8C853154D
-0D89EEE9B9CDC1B4F27BDA32432A4173B55CA8D9FB50ACB2D886AD8E5862FFD5DFF224BA13C8B8A5
-4A7F1A9F987FBBDBC5A3C3D762A5BE309D5D926AE5093C40AA47B3B1BD828797CBB9BC9FEC9D19EE
-A73D2A39764816113A8EDC6CFA6E605AD578FC8E30ABD600658A49ABCD5AC54655D29C50FDB72070
-169D1B389F114B7C71EF95A80D82AB537AC8C165D47371FC142A51625029A990A577EB1618480D72
-6DA93C98E5C5F24F622A850CDD94BADAEA91D4BC32CD50CE69E9F00E77DEA8EC1D37916398FB7092
-402605359DF08AFE7B99C76C2A7C70383F28A7C000C696F45291BB8F074791798197CAFF1544C76C
-EEA8C9E6D76EDCBD92A86DF889481F3BBFF0865442264F0EA40D3CAA69AE467A08003F9C30FF7F2B
-77E767580575398462D5B1171DD441D8986F33BC7BDA17D413EBB6B7A32642E33F20B284BF3EDED0
-02352FC66C6F7741A542155F4A159CD778BE56B9492CD95115C1A06189A216CFD2E6725965A13DE9
-73765A05114D9A5A4BE0615AF8BF6A5EAFF84468B849954D15BEAE1CDD57C435788B331905C01421
-B50F20B184506A0BEF746330BC98E9C89AAA8F9D102F158043BEB6A682059A1C8B8CF67B2F3D7AF4
-D8BBE086254CDE53765E3226BA2F95AE8063649F9F94BD9519411DAF8A0287307335668190638806
-E29484A4FFBC1E46B1800E03B162C23B1DC0B4C0DD3C7ABED2F00762972EF06EEB9BCDC7B3F39C70
-BE32789D366F073AC3280C273DFF2979507671B3E1E7685A9A4F0FD3867F96DD675BF05F25ED986A
-79249B75F182FD73CDA2A6A66D693E4CC5AFE3402431B2C816DA1486C34BC9DCA4E2D51C868688A7
-787CD10ABB9ACA14B7181369DE89913CD8FAB58FC84519EA2AA14E54B7A8CE474F213E07CF2DE2E8
-88093DEEC937526816B71C96ED75FA9E2EDC0F9E6E84569C12BB8E39AAEDBF546630745553D6084F
-F9524FEC6A7264F88CEB7EC3358E923B392474E3A48865564431662988FEA768CE555AB0DA48BD52
-6A84B0CB17B4584066C1640C1023D91F7869EF0C4D701BE121A6E3C832010427490758AED7A2B30D
-6028F2215AA44E86D852FDC67DA5CCBA79EEA863BAC9EDC2535B66AB0E54EC4D4411390FDEB8D1FB
-C1743F15C3B68DC92A8659E7A892D5E53872EA51EE8CA7EF51103E87C29A2714E907C79DB9CF3744
-1785D2F73A1EE58550111A4D9BCCBEBF2E39CD3B93DCA300FAC3ED1ADD8215301E5766C30C8CF296
-75746C5A77BF1FE3CD75D25CF193DE8D9AF02AF8F7A6E8F84B548058CDD3C6998ED13463FADE7391
-26D83D3CE2C7201F955382832E32C10DCBCCA35835985B9A93F8E3B0208BE6E92428787C47D3808A
-0F77B8F1D76E6BF6A17FF81CDB065180E03809D03638307BD7BF5CEDBF64904E918FC805AC905379
-928B816480F6E3BDEE47042CBA98539DA0E113B1A5F23EAF1A3210BD18561985E6436EAB90395DA4
-77C7A6D7888D2377B3FC4169368357D880CE041E1F7C875E956600DB7D9B35D1EE66BE476E9DD806
-4CC02230276829C2C0A098F051502E828A0CC505AFD8C3DF293DA1508AC4D25866BEEE6BBD5A230E
-9C2DCDD4F06883936381F476DDCD86CCFE15C2CE3C3243E148CBE603B8513A7CE7A6910A66A90B70
-89E5CCD4368BEFFF2BCF8E918BFE0A1B069AB2A914CA7BB91A0AC3B3C0B060FA1A0316F6135E890E
-E549315897C8464496CC6DEA0F7E3AF43FFA4C3281156067582CA255B1D2E80F999A3AC0402BBD17
-01824C3BB524130F5B82A45275807BC2F3A0655EA208F968B297F98C369192C8ACA26BEBA7DC4506
-FBD1305E2EFA4DBE5375281A88EE2D6FC88FC0A755E72934B4B58F6DD3BDAF7171A4A3C776576735
-2492BFA9A7758504750AB7F38754683B70E9E293CB1CD7B23BA62BD7397ABB84D7EDB22EF6C3F58B
-3EEAF656E361747ED04020163253D1CF3F905B5E85F83FFF30AB2778CAE43781667C0F65C8FD404D
-6B9202A99EA76AF9AE1236631550B66B063847180B6DCA832EA8DC4A6EFDB674B5A26552A7C7D54C
-2799C7D4E03C24F661A91103086DE3A90A774A6988347656344CFBA06065AB22476BB09FB68F9928
-C0045F2764AF643CFEF0516D87FDE6DBF93BAE2829B176CB507BB99835E01BAD5E55C2F8798C93FA
-35EB3FEF02CFA31D3D21B030547F86D27B9448D68E2B155A65C742BD2999DAA0C3AED64447B9CC67
-F7AF33B63AFAF25F3CF7EF86657FE8F952288CA4B691D369E8F1935CDA44A180A6767560C2ED3F2F
-CC38B6BD7991D4170C7C566D690A8A25BE03212A80871108D18CCEFF246623E653107631F29227D6
-4754B2208D19F84E547799E691CA473780DDD56AE620CD953D5133D135E3D51F237078FEEBB73714
-54EE633CFE238AEA63F9999E32850E6C197687A0EC4E5908D2A18C5349627E336AB5E3185B218228
-603A4B1852069F5EE849D571B8387DCE1F8F8E9FE94FADEF128BA83BDD245F8C1C27C11F2ED1A8AB
-2D6D601726842CEE744EE7AAC6B6FA16CCAA39DBF5B3B1D47339F31DFA562671A9CF7DDE6915FEF9
-F19B3E068A464DD350A3AD146D1A241673B5112A4A8768F976723E6E184790C0604506C46591BEF2
-106C40789B733331A80740D59ABED39868F80BECC2AA21C400A0BD0CC326D186FFF9EB37680F1EDC
-32AC78F9059280D07B5FF2E354FED545129FA5FA8F3D4317FF21E027602FDB2522F049BB545FF4DA
-60248130F81F4E348373142F3148DED038AFBA818F26D5B49FC02DE9800D894E9239C88EE0EDE431
-F8083697CB0BE3B497473473E5714717C914A1A926730C249413FEA2615EF72BDB0906933387A892
-370F77EEBF62D26CD583EE643B02E323821379C0DC966407D36AE3CDF646B95DEDC7D7FD0F28E950
-78F12DFC0D6400B327B743C548A0A3517A175A7ED963ED756B1E107AE7087E2446BA702CD4E26E2D
-CDC1A8B697108B5B5E81E9F03105F220C72D4AEBC57665887C8C7964089FBE9424120EFDB14D76EE
-F8C6F7A30B13E1AE90CB9D93D2E14BDE47F4A1D05ED5B18D32AA39911B92D24C93976ACEB7EF597A
-75161923A73B2CC761785493D0EEDC08B5AFE95F3C006B41438A0785C962B070DE2BD096CB63B847
-C87539880AA3D3FC5C345E0992D7BE77C6CFF4948617FDDA784CC55652192B0ED775129C4EA4245A
-41BCF3875BE319DA0EE2DAFEFAE920CD2B6C6C2001762F88C0C5C05053025C0349DB17104360FCE1
-5D7F3A8E30ED13155A74FAF91DC77B8AABDD6FBD5A1EAF255DB209D7F2B90822296B5603FB5E2CC9
-5CBC5F7A6044058B8044ADCE73ACFD896177F1F70EAD2F6534DC3AD755AB2BA87126D63CA2E9C441
-DF0965BDDD6BE494E58D6B5057A561D1E31BD38E92CB73C1465AF6B9C001F7229059BCA4104847D1
-639E124E082F7364B56548BF8112D0EB461B316B2449049F6A476D36D6B7C0C1126C08F2E9A1246A
-3B5B21E7C8FAC6E23B82E33A7783E4F31F0240E96E69C9444E7D7A928636CFD086475DF1E0A28464
-81387BB2010655B9F81A0744121699B4905AAEDCC84BC5D5AB3674601DBBB651EDE7B5DF05C8A463
-DAB41F79706D285C4F9063997F7AC8CEF35CAD51FBE5F5BB1B3FA6DA2C3ABF2B3E925581349728D6
-DA0D59C1EF6444539742EE9A23A5727F20CF9377F4F84DEA420607015A30FB14632D084A2DD181BB
-02FC3A84FC499B318156B675B9CA3CCABD87FDB2497C6705FA70EBA43ADDB6CF961B30E8F6AB9F84
-E1DD8D6DB3314B34B7F7AA3BBE19D5BDC75ECADFD8EAE19E07B387A1FC586F0F30DB695926764B54
-0D89F1D854B0FF86528AD9523CAF56371E29498C11AFB2F4D5202670C834E930103F039D13348824
-16A49BF93B84FD3CF1209EEF7D4994C8302436C0794497461C11F5B8BA152BACBCC08AF8A15F4A4D
-F3EFFB7227CA97FC21D2D0356C93390C749CBE9750B821F1A7BCFAE2C8BC6D9A27F844D8AD088320
-79ABF0EAD8ECD4EA72846DFEED021857F33C1ACE4C07BEC90398B629814C498D33BEB375B9A53DA0
-F926FE6E89E70322C72CB2DDBFB16B13EF7A4F50DF783316584C6AC2BD7D9029124933133B2229BF
-74A228868AB30EA5C3E87C78C3F0962199480DBCADBEF53BDDE45849DA857A4FD85B96682F1EDEB8
-5384929DEE4AFAF84C51A09F5D572705673D885070303FDB47DC898F874E103A9E7C1E894115DFDD
-AD81549C7375D4AEDCCE2E52C13E5130B47F206F7C5AFAF1F9EE83DA8188D70B473269CA280A6A02
-DE85300B93D8A4F6B402FB5DF58F1327470CE11CC63ECEF2EFAA396A6680A6746A20382D9529B58E
-7CE684B39AC00F7086BCB47C2230DF0343BED9B9152A61C9826AEF9E00A1452D91305CF05490D4BC
-0BADC9C6FCBFA93FAD52C3A80705A1956890497557C0873EBDCF61CCDD2219354A4F5621AB33B119
-32065C1D990A9B68858331EE7875CAC855F98563B14EF9E1060BEA90F195AFFF94728AE935453438
-DAB35123D0E2699475884DDAFC7307A5CC06920F35341728D85965F5BA86F261CFFCB1E29B429F97
-6970D42D10E6AF6C4B792B4384122AEF2448E22A58D3AA007743C71324EA08D06819FED14AC1F22A
-4F0BE4787BC8738E1CEF240677571C65804ED3E748D72E89C94B6F310BE748FAEA31EE246859CAF7
-A1EA17CCB5B246C87EAB771E2AC5D378650191081514DDC2C66878E3766CB20DC49F630F2743A7FA
-ECBE9DBE9E815A3CB57DADF2BFF5EF2FCE23A56298A30A2E052FEAEFBD698101F9DB992613706693
-CB0EFAF6F60C8BB5E7D0A50B3392B9831EF3A304A846CD4AF431E9F018FCD3A5B16387552D55DAEA
-683D36257418AAA0E7BF8A03ED7BAB114D7C15119E6C71C1946BD7903C1C42E115E954619051B853
-BF05AE316E15E619A7DEE498F771E809D9435969C1056402725EF40C0200E083F3EC6E0EC27B8ED3
-8DFE32EA0E5E156AC36C4BB9AC5ED111A11678339703F1B9299345AEB1F251FCEFA11FB3101CC499
-907DC862B4463D5523B9B25C5B69F70AB6B29CFC1DF1ECAB8227EB3ED1F882E90B12080EE003714D
-403EC43B7B54491446B6A3DD6EB641EFBFEF060C45E873E7398025B1CB7065441F1753028F6F8C49
-A96801C0D598E098EADC96A21117F817B6FD6E6947642F93E22425A00E8F6B592AD50B317B69C0F9
-4047386A45E5EBC9504FE55451A01EB29DDF9A41D4BAD85FC84CE280971E834F06CEF49C8C20ED2C
-EAC889F158CB14A8C070900478804CFF1D1637CC880C81AA287D8382837FFA8F41FF3C9DF2F22CB2
-0044C171E4815D0D0F6C22D19A52114E780CECD71DAF63427782E85E463DCB333789F496340E8CFF
-885A9D9A4250118B439C71C6BE51A9338BE29251AA794EDC67DEEC6337FA63CA9B03C1C9F75E733A
-4A918646E7BC9792486CB5A4BCC5F84FBABDFE338C3792254A3EEA3D88903C2C47B91E076259DCCC
-8BD3DCA90ECCC832C09C45141C6242026BFE309029A562C3EE0FCCDCD40E5CF265ED9C3DE582884E
-0E14819DB98B3AF734B1B3276AC41D43384EBE73003D15CE39FFCC04109583390E470F431B4407F9
-8550E138F96C4564B494E5480F47C853BDD237E27301F55E42A3BED18FADA152572B7B465A581DBF
-E7DB2619365CF16D71BF8F091862B9FCF04BF8D0859A76F46E7B5712F2757EDCE332D3213B8A30AC
-2CE7D7797EEF6F30904906B0805DFA7CA36D32A20D989858497A66CE72491393DD79332003D55C09
-5A5AB5DF761C4BE5C041FA8407263D604E53091F7B6B15496245DBBEE96A63F10FC2978D99E65731
-28689366FE8B0BADA48B50185B861BAD03E3600F22BAD4274F2542B635F6C7944BEFC3BC741BDEF1
-1A8DD659038CB40FEF2E16AD1AE7EBEDB7D9BA15FDCF26355331505A386DD7399FB999535D6061EA
-BC61DD76EF3EB457446F29D0BB6EC2FC0AABAC20B27A3C123C27BC27A76336D0A0A6D456DA070367
-4D959A4AFE428E2206A511BFC80039ECD56E75F69786DA0A8084D81A66644DD98B6018681F1D70AD
-E09BD9BF3D16D68DD5D0A03AE26DCF1552549E459FE190B310A8776B2C8468C14CA8B1B9A7AF2956
-507A3B705AD75A17A0EEA7FE089273353CECD07BB8563465EC8DECA0EB42F43FE3664EB5F31E1D13
-24185539B28D508BCD065ED576D8814ED3FD637D576F027927162344AFB0255A91FFC616948E4E35
-8867E9FC76A9AFFACAEBFFE110808C1532A2BBB0DBEF3F010E45FFC73F228D28F12E98478B27397D
-8F456781ED9E19711DF2E9EECBC3FE61F7493FDF1A59124668A91BE51F122F93DCA4BBD22DEEA339
-E6EDA3D6EBEE03DF958113E1CA49C8398D2C59DA6764882EE3663F62A55AE50A7E91B4FEAD1B11FE
-0D50ACCC5D75F1A515F0C53616A500F1491381DFD0E2477E402AB0CF9F67D501A442629C8593ED5D
-25A72EDB9746B02F2B0F0759CC9CDCB4C9D8B4519C8C617E569B432F0CF6890372AA879CA7DE46E1
-10D95E230A4F0E52CF65811C54365DF4A3E40D819E2FD379B47DA3233D0DEF0EFBCE04AD8BAA3888
-4F6A69FE5C373E38AE0FD0241480F2BE7CCD18AF85916D2703A049779FE7398FC47D348454CF03F2
-2EB3FECC064606957898B5643464845445C25C0C7D685C8DB042AF5D5882174374ACE90081C68678
-9BCA96AC602EB41D317BD652293EE628951875641661EC86A2C40A42E8F0813A861D41A0F5178E55
-43651CA0E99150462DB5EE0010F00DE6D55B0D7FD7EC5BAEA24ED3E90A7D6A0589761922B91A6A91
-3A7FEDDD3B68254D89ECF767CE8E27F966426A8B4FB1B4085384FD09D63E288405B78A646F44C87E
-EE22C8596B13188085479F75F63D3D97A28F9C8306FD207DBFD38DEDF0FFEB7DD80B2A3292DFBF1E
-D605ADF1B33E85B010309E3EC058FCD922B1325FEE71EFF2DBBC2E68DB52D513E024C01D47CF657B
-B61C9734649A4AB63C0AF4720EC3EFCD82DD3CA6E80BB63BCF1B8DE810A0C6C517C63B76FE68C0B2
-86867BE102424FC31C4937048B6F323D039618586FC21731005D949E7D802A430DF8D2F0CE99F2A2
-376C2953EFC4184355E4D12F422C9E1E25C4DF38DEA334DBC89B540E14C61A7769D77115CE8968FB
-76B27D0863CEA2496783114C24D4CC816DA884D953DA3F9B9D3AF8938BC607BF26A071956CA07E6A
-5509EA2F5D80E5CBEB98041B197FAC760976EE75B470DC20AA023BA3F63C2876EB281FF5173BB490
-D6815604517AA1B1FA0631401B3C1A04CA103E2CA4ECCD83874D9CFC8ABC134CC0F9141D9AFA5684
-8BF222342016C556C14B3482482DCE5D0B6EF1AB522AA1812BDD8DD3397E05327EC12748FC480842
-9B97202E24E1DE0C7C0D272C046BA73B37D30930C5DE5A47D96955CB0F5DED8F3AD929A8B42D2839
-0458F5910A0F93610F79EDDB27078943DFE17C716D65F96589769349F3B66AB7B8C004CCC59EF688
-1F745EC7129865A76F9C2D029D4660CCFB4D5F9D412BA3372A27CB175E9D65F759575CF14A5899A8
-D31FF039AC02DBD8391C3397428AC0D5717C005200790785354813C8859BE90E0E17914F6CB9C674
-F1E9A9648657B54E5E1F52756C4F982DF74E73F6E4D40718C71D1D0E2420FB7462FEC9E457C0414A
-96E475C6BE2C10437096FCA0C942E995A9ADA789AB637B648781D32DFB68E62E91C2CE7E13680F8D
-31ECF8C824885FA7618981CD05FB335AA111B409C59EE337DF4E5F9DCC920A5FC0D620DC07F20DAD
-63F4FF5E0EE5A2F390AF1C32122BA7780F210229E5A5E3ED97BC1C3CDDDD456E739CA782EDBF4B81
-0552368E9C734B0C78B0B8E3F8B2DD782862B74318871BB1EF087828CC173D7B049811FCF598B8EF
-DE4D9BC5447F4848C98029C854F3AE461B9D46DDAD8CE67A521F3C811A81A396CB0F80F3C8D8EC88
-30532FB7F9624F7CAE0F8C6DF875073333DEB28AAA90AAF486AB8C932553CE697B885E71EC8E40C7
-835CD5D59A2C695DB9E51216FF9B77A15B0DA63717FF25B05B939E45CF7FBE490E51E9344213B32E
-115C2DE14D76DFD5845088DE645B0E75042A61D82FB1753C445AD0A956A1263E5A096B681D3BC51A
-9FF32EBAFFF7ECA8B59D40F0937EEFF38312AE57462C7BF3B1FE24D2BA8DFE84515270E09063CE3C
-80DF4935E409F62EB4F54AF16A186D4329972B9BDF15FB08461B688ED49928429226CAD9F67C9D63
-6D1375CBB7B08A5631956B7FE29CC9EFA8D75C9E4919C8C2C54F401D2E0D7BFBA40C50CAE214D210
-C6F3EA5802339F63FC4C1C1995787617F3EC2C806CE44CF8E29F76606CD5836F6E5A2E423CD791BE
-CD3F112F25657DFED9366FC4ADF90B685CCE4A5698E5FE16D7542B913FBC01B288DD13F43DB2B1ED
-8CCB80159DBDC90A8132125DF8DF547C4851CA609D1F6F4D647741260E845B457937787827A89E37
-CDA06BB191669AC84B8608EAE132D10177F3FC384980F3A6E439B048A38D0D6B9CEF09F3F2D732AA
-71BD058169D6D0F8C9D146D9DA046774027559A8B3843F6116B418427E78476AD8F0F81E8A6B1209
-8060FF7DD686503F972D6C42FD6CC29C083AC3D72E3751F21D2E44A572EEC80E81EE44C90FAA7AFA
-BCD3ECEB98FD4068F6C3A4DED0E6CEC523C9A0054D1FC2A8D61A4A26F9BC250B8F302416924AB22E
-722297888B85B9C12F8DFD2A744CBD143F9B2514C1CBE988D9CB4E77D90B2EFD5C2A528355A35F7C
-4AF039C7D1D756305967B847D4ACBB81263D4992C001E2A262B9FEE2D1F5022BE5B15E1D8F1D67BC
-52227344EE912C018CB73E5F47CED54FD202627777BB77AACF3EE6B22706FB2FA9062BEE87E22CD2
-802E7706322648DAA0C624EA885430175F746E1F536F9A8E1C610C4A761D07248426DB63C9319A88
-A3FA449C3FB8AC94C6003C745E6BAD717A3B2EA3862D1E08512A98E57772A62F85F1E2FFBA40E2EE
-43AEC11203DA9CE5AFBF673436F2DB6AF85BBE89D802F7A9E5FA25A408DB69E51F0577DD26F94CF2
-BA2FC53EDDD6FBEB534AF15F74F66EF8D14E7FF77D8A5D284C8202DD5A6053CEAA606BF925992382
-5EF4EFFAA8D878652A4CAF2EE43ED26BF3590402686C876F86C1AE95046E527617CDD3C429BD4CC3
-F9654D2C76DD4102471FF746FA9FA379B16DF96BFE3836D43FCC0B8E95120C27370049ACA4AC313E
-1D50D72D1814F2566B8B29FA9C9C20D0488743722A766436776783B939171FFFA00E04805A8B5821
-4D4F114F7B9C3C17CE7486AEA2BCC895ECDE809502BDE57981318A93F23016F056A421B733C4590E
-34AB08BB348DA4A48F19B6BEFAA1DDD2A49A6C440443028333CDD48C85CD698ADAF3FD8676739E44
-400A98B575BE02350576F96CFA54D4184BA47555B8D12374B86D038D085F7FA51FF4BE2FF5981408
-999B48B2FAF305212ED54B2E371F5A0074CF68D1B0E5CD279BBC8BBAEF694A89A6C43F518D01BB4E
-8402AADF34E96E9B3FCCAB4CBEA2741D3FD9ADF7AF32388F7771845AF99965A6078F4DA335EFA436
-BE36903E33A743C112C0267309F266DD44FA998C9A139704E400B89DAB952EECFE2AC09C82D9F497
-5371CCC27DA37890EC84123193314D8A7A707C217FFC951A547EE5B6D1B7C8ED85BEBD9D3F4B9B09
-6A78E5F7DF88C931E3F396973974454E59340CA51DBFEA1A00DE084B64630E26C6D6A3593B828814
-E27DB0186BF2A87EEF268AA1B135AC09B52CFE53051CBCC88CEC5657BD47F603C8E1A6249161684F
-D9084AC279F57A4F9BBD0A546A87E147B62AC860911969A29B8AA20E3AAAD0079D64E6BF1B0F2CE8
-F0C54C9019207E1B403358253C2FA93A662F63B9380B65C5173C198D86A3D0DC1800D1F5378DA39C
-E8523EB62C6AFAD8A0D7AD1629F2CECAD82B8FDE38975303768C7D3A08B91478EDB3C45A8C6B7725
-EA8596A8ED50B8355FB852FB8966479D12E1086223B1E6523A65FBA81DD106FE254F7309718768AB
-009FF7714A8C363B09DDA73CD3F81BF9C0CD3B0C806CF3B7BBFAB73E46FACAD2480EEBA97AE68EC9
-4D3D79AA01ECC22067858EFFA9D7B7F997ABD2CE5AAA8781E5499E8580C405681CC63EEA53BB47E5
-5ECC5BA2A7A3C5472DF034B022F455C60FFF971B01583A29E211A87F7163187B190B0C1083D696B5
-86E9438FD8BAA45101A5EDCD1BE5AB9A585511089DDAC8DF1B1FDBE582ABD945E67F99ADC4452988
-A9859E39C90EF794C5C4E62997085B7A16A0D90107D08610BA175AD66377345662DA7DA4D8FEF847
-EE5D57E3AC54B928A0957CC1C944E7FF14658FE4A641CD26C61105C0F136A75950764B69CA17509E
-3C19351D456B22C87C55E8DCC4ACD3E150D936333FF36499AD6B02B6403DE0F12901301ECB2EBA10
-324BA72B58206A13B8F37B0AEB12115D0C12879C8EA8A2EB70E85C95434564BA3DFF481C8972587E
-FF74EEBBBAB14FB32B8A84B8FC42EBECA65D25E8C32C19CA5962832BF45DFDA4E871508AEC318495
-0D6DBE89019CEA29E40484C36E33D76B756255531ADD1DB24C03B2A64A47BD8FBA3FDCB1F5B96F8E
-ECB60D5834AB001A70740498720AFB6EC03445CC35B51F7987109618C6C78CBE3041BEDC69B6FB12
-8142CEC5C8683B558AFE3024EFF7A12D04EF59A72E156DF11D33ABA08A8EEB16259DD9529CD003AD
-4EF4137B6FF1654236473DFB93F597331A5E26C7796F528F65C94FE07B3B4F4DD49034FA0CC189DF
-CDFF70C2F1C6D3DF30AE103E2AC5CFF20664AB934CE5C19693292071C93BD590383E0A1931E04D1D
-DD18071DAFB628F5D7472E457BF81D6064EDFA8DEBFF91701C5038CB30865D6122076A336732DBCD
-B0A625548773D0013648A76F07BBDC9C16284D158EC7A105AE37A62279419C3A2F360D0C7A74D6FD
-D0E36DCA2A8BD59945A4196598F690878F84C894852C1811AFEA4BE3B9F6A5219E6628C66669DBD8
-FA9A0CFC2DDE7716A356FC4FB271D8A2CDDC8D4684DE447355BC7A287DC56852A638C5777826EB6E
-B72FACCC86F80BEDDD0D649A883CFEEF4D74750172A90B5DD8252592FCFE19FFAAD868E99562DAEA
-E70514F5DE296EF7B57E6F193737ABB6AA317956584423817E11664A67389197AD9F8F771EA59551
-98C9EE40A0761639E638CE9D890DF468642670235F1373D3AC6B1F43B5777FC0A91A96E095E89BB9
-FD62614DE456CE7AFD6B855112367573FD9FCBBD4A4F9C676E672D62DDD34A9BFE8311B6175A003C
-D143C0DF15E4C0B48C735404086E48AEED6B6FA21FD9F40B84215DFF287F0677904E2DDFDA774A40
-19DF45CC877F553E95A1C65DF1D67BC0C60E0BBA4D205C0DA3DA80229FDD71859F65AD04506B308C
-2B783839F31CFE4425263224F08C5C7E98A2C9D3DC8EA5AC1920F4E395413262E0836BC019A092A0
-DECA104EB2DF6B63392AE8E2136379140DE5FC98B0B69860FE8E31DAB5C5DF7807D19BEA34AC14E0
-ABC6F6519C51247B104DE7D912C5BF6EF11B48FC6DF84512E9F5FEBB48F72FF1B722BDC3BB2E835B
-2E7CC6324BEE84893996B8DC2D4DC2793A4F69C18E63DAF04A7BB5C0A9076E2D5A343E134CC3C89C
-4712900656FFC202E1988526D80C7FD9281FE47FBA8AB5D025E63A84051F6B13167BEC15B346212C
-BD051AFE7A98BE3A2491F3C469718A58E783ED91F90E274FB4978F8719E92A99A1E8F142EA7E1F2C
-46AFF0A2FB50F4D105130CE8EA309B0E480DC8F80D506172B609EA4BB4E2BBAE98D8882814FB273E
-690DA990B60A9CDA20A2418246BD10AE67D846A0FA815AC25858145ADDA106A6778A11877FE59A2A
-BE300D7DB9BBAB31CB5B960B7E4EF91D4600886D8795DC361CBDDDDE05EBD54B1941F426F7FA8399
-270D2F54C998BE92D146227270A8E89AF90C48BAFC4ECCCA01E6322AFC165743475E752F39BDAEC4
-9297290510FFA264342A0AFE2985F85DEEC66C36EB4A1D46683EE7C591A89B81569A8566AFBCA268
-10DDB0970577A76EC8A066622606B08315DB0F2E6C671F3259C73637D773D1A180AAD66ADADA2A65
-95B5F481E5F59E51CBA876FA06D21E1D674CFAB46A02D267E20234324D0891E7847C13C69BFCEEA3
-AC55F2EAF753726BCEB0DE1EECF42ADA964BF9E475953302C2FCA804B70B779482DC9319B40381E0
-9C0096460AE113C19A2DC9157FA138CF0E7758F71008E71D0F7599744D647B09B16E3C795C56EE5B
-D14D8D63E7A512900D67487975EC9CEAEF69572FC3C2342AC5D365E8A4BCF462006B5268ECC15754
-94CAD9A9E7A9E8D9AFFE49AF647C017743EC7CFD5E66F4E4D845A6BBC836849274FBD270CBF263F1
-67DF7E26BA91F21C60F96257C07523AC37A2193010E976965CBD75751E312817C0564E1C5AE0CBA8
-BD12B01122D07020A0852120680985A8AC987BC33BE863EEC52AF13435B6E4048D951F5BCE36526E
-07A8661CF2538F69D1F223BC53BF5896437D1BD46F57D9698F642F0E99C7392D8EE47134E34DCE94
-D392949B418D9821E12CAFA8337323E8469DAC24DADC6AAD4A0DADD7FF65694BA3A27964D28D8EB4
-1179458F91CD3F83B8F119BF5E76184DD29CC4C0718CF7945DCECC993A7A78739363136CEC7F2FB4
-95EEA8CEDB3EBF14373A058758C442939D36774435554851E9519B6F09C31EF26B6CD997DAFA11DA
-91FA9759F17B7079164C5B47B99CCB7A876FBAB1D0D5D1E1A2683CD6914E6B3B755939CEF1C9168D
-30B2738C4349650CF86C90D2542FC9B90F36A494C035A1C86DD716014AA16E6B9EC7AA03B16554BE
-C436511DD3097FAB1FD0CD49EDAB96F74E8FD26400FC748CBD9EE1EEAEE24DA30DB6F8734B52818B
-3A5E510AA5C14E42060898033E7E36CBA9A64042CF94A74E4B52E37AC027C0DC69BAC4944CCE12E7
-AD81AEDCE642EC34CA23E3FF07B8CD35DFF19F33C8D4DBB56A52534F8A827BE47AD4AEDCAD83B273
-38409FD1101C4DFF3F12D3DF79AD1FCE65B2F419451DD059C88BF066413E23DE27D3621DAC2DCC8F
-9F3620DAD0F4B1A6E8C9E6E8ADB552E1EB2C4B2A3B73986AD53ED9ED8911F82F750DF05CD2EBA3E1
-B0DF208A87FB5ED44C3296B803881C1D9776D13350CD29C3F716F0B5A8B8557812024BA70069BE65
-89AA579EADB1F657712DF2570843D7C5FF7F4009D4D232D3547DC8B92ED5C4DB77B76255E661FF8B
-163C6F3856DE5651B597EC7C78B84F0C6C1D6EA3A82286F1D3BB45F708D564E139E81F473C705AB2
-56346328DAA64D1EA8645DC10FD449092E0634D9D7344B2AEC3C75F6B6CD8B3F3867FF3CBB0F556B
-186EE9A7C26BD2D17C8A773055D9D5013BD2F937D697A770C57BDB36D922CB911CD14E7FA14160BE
-19C1A052E297B1A2D682D4BBC9F1D2493BCD7CAD2FA75D904C5F5479179DAF7DC6A4E0D269BACA2C
-4F2430B4C8CF1572FBDC750A05DCD5B09FA3A9CD6F2F2A386E2B3D4D8E257BD43A783B38E63BCEE5
-03EA96FF2C373181744A607F0CB8D281D7DB1A6F4076AA3E2C61914BD796EF8A0873F79F964FDE28
-B792BA99A20C3F1F5ED1FD189FB1867C84DCD6AF43D49420C8B1F3DCE7DBAE71DEB17FE45644DB24
-4F44B1011C7C768EBB7254F4DACA64E9BA87AA7CD0F0C4B2228FFB9EBDCF3DDE4DCED39399FFEB34
-8811547D025320A88B480943A339E2CD2FA3605AAAE87939B1D7901465A1879BCB4C5BE1A179E7E3
-71F1BA2E0844F88AFBAE9B78DCCA47AE8AEDF5BD3D458C7D4A7A08ACCBF880D1F1DC69C636628DF1
-EBDC5C42FF88FF8B66351F3F72D703E52F3CE91E4E00759753A599FDD863788E99858498B66B93E5
-083BC3501C39A9BA928B0D763C28826FD237E949EF0BA85CCA9AA20C405DB6D5612DB718F7B4AD31
-D253AE306E4D7CB615C59AE668D347A4E60FFF7B103F8BD0E7CBDB142A763BE88AB40EEF6B8FC200
-458D728930AD0F94FE52ACBF0657C4907CC7942710AB1FD8BD149A9C9DEF6B8DCA7DB9062AA7B1B0
-11ABB5AAE8B77893A023F9EEEED4A20FBC30F922282A7AE2F1ACFF64151013D6B8AC2EAAE58171A1
-0F80BC18C3BBB5DE1E22EBE6033BF83040629023D74CCBAB3F1923CFA4A6735E1DFA8A1B261FBF1C
-397E26F3BA9C2629CFDA84DFA3D1087EBB19DDA7E2D76E30DC2E15B8821D5291DA1DFD73940E5560
-A8A6DC91BE0075E3ED8D9E8CAC85AC20768D868CD2DC45DEADCC8B59AABE6EE5B2F891E0D7CBAE82
-0F83479332BF9707486698FE196C72EF72B52F54314329FC498171782BF160E1110A19B8208FC591
-EF0F0DA71AF657B43A7CC649A8488B759F7B69134B4F9DCF79DAEBC1CE52CC8015F324C9D46320F4
-4E1551EDA6D86139DFD1DB814CF38A22A89FABB4F75FB896B00E769820F763486E86668253CC466C
-1529A5A924CC337C48448851A381DCEF63A0A302B65203D6571A1DD1FB9DC0C3BD6AEF4891497033
-109CEB5A481BFE442249940EC54096F1D0F2436D9E60495D0ACFF967A741B30467D24AC6B0032213
-18666B951EFD45324987B10BEF4AAA0FF1DF6887377A7F70F555DFB9FF1001C67438A167A00B05D2
-C37065655173A7ED9AE342DFA1497FB1F2FED6098901249A085D31B66DBB6AC25EF16C106B0A6FF3
-47CDF66434DC3F0012DAADE80B942D522CD59AF4C31C1C062157B3D000B9CB86E2AA7B4A5BF31605
-8A0D5A148EAA2C67977FAA0966E4C3454E08DF14C2498AD76E389AF65D2C139A6D8675298C46ACEB
-7DBE6904C373C06E5F71399B2EDA0B40AB96E8BE991DDC39F92F1D24797F9EC9F2FAE25669B43754
-E2498E8EA5C44B176C3FB3E8F7A7A1481275A461F2549AFC4CC73E28417BD8C5212C13105EAB967D
-AA679AE822B9B75B372A99C7E82D6BD83AA2BA00314DA4AC51B9CAA30D80507505BE24BAD0A87C5D
-5D7336EDF60CCA4CEC8201D243C3932F74D171E2409D789AAD0D04A7BB22FB6DC3AB92AE33FFEA89
-7C484D741039F38C317EA396A0FBB9F15A27D87FCBE007558799BAB73212B6E5FAF2080BA074724E
-AC87D88166DBC1464CF5D41B99428851FF1D99246944511CF42C3F9248513E9E51593F253D89C604
-388AD7132D6A169E9DD888E020AC1F8BA606F2E1EBB97977E505D8C40853653D8F398F71CC9F8F9C
-540C22A1E6195BA578AE7262FC845FCCF77B33F33EEF266489AF8B81A615D6A13464BCA58BEC16C2
-3F31D678F14A938BEC31272DAC3CCB1B2DAE577A26BED852FC59843176A5FCFCFA0AB7FB00D2309D
-E55C82CB9049F44FA61F1E313205A76317C4CF529A4456019D970624129681F46A9CD7950B8B5C40
-61853040113C8115319E68B37F88D864C6957DF813B305D09E6A1716B10F26F2EF5C727FC77AABBA
-73E12B5AE6416AB19F6563CE14046B715BD4CB2B1E4D315F42D10F74CDEDE82BCDD524A1A5460921
-9084CF1CDABFE72CC8375478B41614BC18A914903596D6FC2F361EE519F875385F4ECB50F7053127
-4EBDEB14A5DBD906A60817246042E3799BB3AC647CDA7244B7998AE4F3BFBE5C767FD2142E48518A
-4217599E0EC2CF5E86C8C270FF8B02F949EE001D6A439BCB4BC7D7F7C8167C3AE0A7E59687FB8BF6
-F37BEAA164541B8EAFD92E9D152E3FD0F413C99CCC34FCD8AA455A0B55DEC846A5874B94FC95CFF1
-BB386B2A1E22CD1C3914264B6D5BD1746972857C9235052D77A6C0DD3019F8A307FBEE63A3EF12B0
-39B224108276FFA84021F1AC5B745C54690B3FF587B4B1710AC3533A67BCEFC503ADF1F4B62B2910
-B31965E364EEC9CC437CC40181A7320CD52BE9C546B8F1DC824312216C2FD8232E2BB8D40EE2E314
-54C09772A387F9520E331456C269F51A078E6ABD9FB6A68BFD5F557215B0BBD2227B8959CBD1BD4A
-EEAB094DD18E891C61FB00933C0A0D76174D169C0B6445D34C00DC9E06D85EB086C18F3BE27DF734
-EBB9CF078AFF6514438549CBE92A0C0D25EFE4A527D86F158B4E9D8870C7AC5D6C059643A3298079
-CC20398324CA87273B86ED801057D797D91BC3CF2F96C650EE1566CD3CF8656CC577D38B830201BE
-718DC9A494268177A5019546EEEDBF101996BE593631654B638C75A6BAA648CD1E7AA9AC1EA60F4C
-D604071C89DCCFF8B3E430A57ED6DE11C5837E78956ED991058F3646219BEAE94E4D9381A33D48CA
-9B8FF12B54A73FF869D0EEED7E098D80152295E6016CDD809173C57D1F5FCE908A37010AD4C4471A
-53451DE9B4363B63437C374C598F548F145D3D288F42531FCF36A9CDF72521F1C0868FCEEEB1857E
-A983F6B75CE245D875BEAD1BCB8819E5464518E04717B78BD6E335F0AD77B832AF5682062A1E2AC7
-7CD5EDD5DC372EE456C96D38BF8BF348DAC2B4EBBB2440F2CE97B4B337F2E23247E3E8423BFA9237
-CA6CEB6FB93F960CAD894A96F0371168A33222052DE9B3BE04B022AB95C0C243486E35197721FC55
-311DC55F87BC72D09B6C940CA36E6640AEB66C394A5949A604E7F15DCE3A008BB41B0EEF2840A357
-F348443B4DCE064B4C15E5EC52E448C985FAA1C3D6526270B1CC691009959A7620C9A6202619A19B
-E410FF7BD535A8B2640AAA459DFDCB8F2BB35112626497E8A397D4F9E04788322A738DC8907CB643
-15CF63C95809E90D06EF02F72AB04AA61FE02ECCF7E9049FF9F3EF2258A75656178AAAC9F3C2A26C
-001341862D526CC14E92A81BD63502F959066E0BCD659CB9B5A45606153DD77039B8C5D5B13565F0
-0D95A41937CF97089F3938E39659A64DC3D6046D0E9EF66544CAF8A206635DF49926A3EEF3FDBC9D
-CCEA2886EC855F1821C4B9CE1D02A19A11BBBEF43A7D4D536715548A62802F64AF30BBCBEA8C7E55
-AD56C801D8A569C8183615A78CD393CA42C103F155941E845712C335F4ACFC7807202B92A983111A
-ED241BBB8501F15560E8F2157C29752BDCDB274008137277920053D6D7DCDC626A574A82A8A34F1E
-77B2FC8CF7C1A7322F22DFCB450259EB450C52B70DF3584A7C54C813DB41E3DD81253A03B02BC252
-346AF0160716355797B6F8210C453DD7E1E756FF08C7E6A5F4F87605E1DFF35A130D79148A57B7AD
-12D94A129FE3F055CF974EBA09A2B13DEECA2E02EA818A58B81E8743004646C7746110BC61B86ADF
-2D5D8C45A6A5461EB34497FCCD09E711F47BFA742C73F87B257B53F30CB68D151424DC3C210D3E8A
-C67C2495A8236EA2D7985A5E1DEAC699D7B700E6D38EEE2E93B191BAA5A8A2C916D206C63FE63427
-AAAFED2B5784276FC21EEFF2D70E47C8540DCCC3E00134642B703795CD3702631AE2A90E063A218B
-61E5B89BBCFFF84F567E37A31A9B349717A8CDB9C9377215BA838FF7469BC486B64EF2B6D92519C0
-BF0826E3652903F40E400689F5749DF86FE3DE178E21E20EDF9053081F6510D8F19ACD021CBA481C
-484D30EAD3B84ED0190087EE478A17154B243346C3938FDD5340CF6E47B185E64ABDF44F8CBCDB82
-94492B91929BFEB9DA2B033C3ACEE554F0F1A7F8A56DF7C06A3583C1E9C5CA458D40E550FDF3E2F2
-E7BE8312D5FEE98543388EDC8A04CA29F1B82B7AB4ADABBA3F2C331EFF3521B2B92F99C4377AB827
-A989B423750D36ADDD2E286E7F3B694E29B8BC403693C6F7CAB5FE34F1E48C8D41B47831E8C3F5BE
-5ED5142E3C44ACF5180CD41FDA149B1F4AED36812E42BC184227F5034220F74F67830255E1CAEC12
-66DEFA358A87D2E3B4B4E7EF30181570D0B2B43072EE0311C2C157D32EE2BEA8EA4251B59F6B61D2
-B4FDEB654DEB67AA3DFF4AD65B727F0D6B7D61523E4B44D99BA5CD33540F340A35DDD466ABEA4E72
-E504FC9BAAE51D231C33A8CE7DC2970DE4C1FB5B096A3D9C641EF77DC9039886831DDD01C4F21E6E
-168E38BBDDA5F4308C959C7BBF36A42D042DA6862937EB20D4FA2E5927741A58DA5CBFFD9553BEFF
-BD92E6D64871D8B25D9049F4E71970A8FF5557D1DE83DD24286D6C3E4770EE00F9A1A0B0063C9999
-4AEC75E84D6F9C488434D1F3DCFD0A8BEE9ED8257CA97E75E8B1285747184D6D2228EF95D4A0B8DA
-252318ABD35C8398FC6568B294D90AB308A7675F9F160140F0A08C88AD0CA1CA2CF85E4D031CFA3B
-87635F1398EB7DBC666A259F02DB6741D13E11B230025DD6DD64C438409AF109090058151E4DFB8C
-0E9CD65935C4CC063CC6100FDE70896E23E3661C7FC1B8228B26A55903E997F80207EDD8863FA074
-EE4FF23BE585BAF708040C9F8CFDEB42FB8EB71D4CB6D7757E973E4D8C9DDD082712C23F868E1135
-ECD91250BB4335958B07C12FDA75EEB56BE19D1644C1F76A8811C021122619F751CBBFEB1D3DC912
-999017FA163672A1EF754C5CB78962BAAB76EC48461B492FA88F9897170DE857CC8374C8BAE417D4
-C78A56047024731F4A45145F0393A27CAB614A7FF747BBC28E6880D4D01C0A6CF317A1DE5BB5ADFA
-4B5FBFE0C57598C79F25AE57BB797A489D51F85A9B9CF8BEA64293F8FCC43B0D5484DF99DBE19152
-692CE756F6FBE8CE5831CF4B8A5AF47524E272C45C62ACBFBDFE7E60B05BB1A1A6AF0E9210012014
-69B3DBB49EC7B23A363FA68417B7118DCEA71D4ACA2E36F88C6DDEFB70205DF3AB7C74CF65CFD01F
-F85FAF99F172689737331D4C6CFF7A29029772F487FBF625F17BDAD89B4AC076948277B4ED687840
-301016C2B7AD4C6D02F81E88C75B7A04D724E234E38A38269351582245E361A42C75B8256AFD5624
-B558ADA2190F960A896BBAE7A8C57E76DA10DC29E69BBF3AA86214C001A27B39C1D17C548DA5601E
-86A5CF53E7B1896BF003AAE9387ABA9B102EB1E9002DD3754A378F3E49F2C6EECF47EB1BAC2CFCE1
-1AC0C5CB063672D32733563F3E1E891B6073739BC53AAA0043FC45E90E413DFBD4548DD320B681ED
-70A7443A233D79E3F038D26975586E5CDD2115AA614727B1F6DD4024B85CCCFC79D10B7B6AFA789D
-B37BD0E8C423C1A4A8681B5FF3A9FA1F61A46E46C4B1836D1AA41A89264A7F4B1C259E4B10ECDF37
-5BD26A1F412FE01FBDC03368FCAF48AA0EC28B1BD603A6A0D0DADE66D14C9B7285569230FAB76803
-35BE104305E4B748FA99FA31F23991608DFDD2097DA292551136F255051C9F7EEF3FB7C7FDB4E651
-C3D03A4CA357B587245236F4FF3252563F6BE08EF8A3EC09BE2BF27B9120F7D37801F6999EFB1C8A
-D1A08698CC59CEAE2CFCDBF6BD8F94DEC94F7EBF33AF05F52C85760C63950B455510C6AB9398D09A
-C288EFA09E8F631A59B03FBBC75BBDAFD675FFACCCF8ADF71E815A4A49F14BF70E42DB0B7347B528
-4E234C24010E2177DBBD57648E398FA6B54571A37BA8C989503594D03C6E60871A7F964599022154
-02BA168B8D1D2685F5CF8645D5E11A1769473027F42564C2966C10C0DEE1EE1B6975852A4870D492
-83A470E623337544A7CDA5C16FE2855BA2A548511FB4D4FF2E3E78D108E4C734F64EE2F12CC9562C
-BDF363EFAF5201B673AD00583FF108AFF6B68055A5F299452D176EAAFB92C84F114C8C22A05EAD65
-64A3371420EA9E646308DE97D40705E1638DF08704FC90249CBC0D2D3E884A4562CC27370B1A9738
-9D8EFD237E644A7370B8B38ED1C377F522C75F981D878A5E87101E621DF9D85C7207BBE5A87CCB60
-7F93A2E52F660E05C83A7A6CE6D01AB4B62A1EF8DA47CF97D4BBA0FA8EFFA9C0F61A325A97ADA694
-45F23AB1FE27A66C271639F839203040D44B11ECC6E805FBE88843B34C4FD52D1D3C6C70FFED433F
-C04501FC20536ABDFFA429B8DC8192B2D45DD9D646049CBF40719C3D674773F9676F9FCF32817DCB
-55402A72C56D74AA4CE4035687C730B6B44A9CC614BCA5A3FD17C170ED949E588EE45E89E18B0766
-2A6327FB9E8475C43E5DA1B0AF07C23774B19C9EF59281F5D884990D6194170D8293A86DB52A0FE1
-7E88DA82209A00A16BD29B8B2F13FD60AA25FCFA9745F57C8216283C1D6EA1C119CB9B8D57C00419
-5210FFBD56395A3EC2D3098ED38F389EFC0324FD0E55EA339B3892568229D8D3E205A821E8219FCB
-1A7713FCF3450F8BEF976CA0BECA47376A8CA73DF85B340C67EFE4534D459617996526B5E5D3D19E
-17CC5449E5EF2B82B2C4C2131FF8A19FCFE6A186A9840D872D85C40665A7A04E67EE26B8BC9206C3
-5B44C8F8A1AFC3867D96DC6D48BD45063BE25B882E9BC0D0948C18DC870E6925818E1FE17D336217
-F174EB4481F5C0ED37A3BEAFAF4D46F857811B6728BEC461AE6468D87A736572F4FF95B58B04564A
-9D3C22754587DF15495A319D822B838461764B73483C1F7CB930EECC6F7424841EE10E4087E95120
-2FE88A391375C96BEC4480328A54740213F741105B12A39F19808F3823507B88115D468C61B212A8
-ABAE7480E39BA52390A1892C7EC50271156B4E8076FC3ADA222695DF372385DA7B117A29E04CD2B8
-0A320F186D61C963FBDAFE9224E537057C49E82E405196AAB621B5FE4011E1782A747EF935ED8BB1
-1BDA39A141CC0BA42D04AE123383BC95A1D03A85A9440010C3B9613064FFECA76197E10919BA5006
-F35837ED9BCD7DE5E6D968AACB6FC91178091FA467EF6FDEB728E17293DC89DDE5A5261FAA95A2B0
-000FC750E7073900D4D88247DA464613ADC2B3903A6132D96AC0E1C564385FFBF6249DEA76BEA2A9
-9160632DD2FC2B99133E9F2F470F72B45D6F18B45020F604B06CD9174BA3805DB60EB9C5E6A9C789
-ACE76AE9C79C1BD34434E95E501BC968633AF93FF4883C6A596776254C0C74993710327086B2886B
-02FD3E42A725A03459CB36EE34A094139AF5FCF487D3DFE63FAD20BF0DFB60DEEDA2ACCA3510E963
-189D1256EABD81253F7FF9D11263FDBC1DCFDA3D1EA2E52005CE3C605C993231258A717423F64BFE
-EBC34684EFA676358B9B543C2042BEF954829FE3246A879845B30EBACB43D8DD7A20FCFEDF763AD2
-C5D20A798B69E08722DCE6A5762E249ACE3055B650D9E110599EA30DE5C4FE7200D5A8DA9E1FE268
-6350D0DF334877D0B9F6524C552D0B6DFFAE125EC4C18F7547BD51C14288E4ABB7F8A1A00458596C
-390AEEE6FA308AC1F788FAE30D7F8928AFC91D4DE6352D20B19D8D8AB122B7378CB379C5BE7E3CE2
-922FE667EA057B5D7B3F0B51C7BF0C85F87AC2F360D82C38964F4DABCC9104B32F0FB8802235E8E8
-D9A5997D392259074C00AF2CE1D2BF7B8E90E2E2AC34185C68A03BAB8B267778292B227245D7FF86
-70786E3F746F86B9D4D17190DB859A0E144B2A61E6AC9254DE5DBAEF20E2E9DB0B2FF654B996E962
-F55E465DD238BD1643CE59DC2B5A58B1E6E4AE2DDC2D74D79AFF3C34E4E593E051FDA236B79CC0DB
-268D2A89B1878051223BB8F33FF99BA87A4811C0B3BCC01171D0A731EB732ECD8749D27952C27886
-B252F9C3D190419FD2900987A0A255B9753FB7AA70C37462134C467A2C4B7920BED9F9E86F8F98B9
-6D00AF8B05A4BD5F14C2A0D914A9A84160D554FD0718F50ECB5DF5E76623065852DAA74C9AD6DA07
-A119DF12C3577FE276AE551D48B1C5CD8A50E84DEC9CB0840520D78FA7F9A7C2071E28CD20EC7649
-B991F3818CDE295CDB6085F24FCF93147E9F4DD084FBD32525326D2EA147ECD5B6C9D9F4A7166663
-AD18BF234E9CB92FF72138A8A49E73E527E9A6488A4CA808AECABC94D693CD2C0C357D285F65006F
-A2F9197F61FBCA6EF07B013E2B558AB531D2FD270CEE7FA8E467FAB885E90C5884843AA08E2BBFEA
-0AA575643727BA18ACC499FF34E3438645BE2AA71EA491E54687CD305E12BBC94FAEC848311AE816
-495B013BC5075A2D2AE54A7AD7C9105B64356CB51F18C2C28E3A83B9D81A4554DBEC9BEA9A660CF7
-E1BA89E6D4DFB3EEC6A3DE3FCDED9B2D614156EDAE8CFDAD5FF0EFEE31DA3E6A54D94CE9453A1CAA
-D9756D91BE85315F6514BAFBC821EE810BB5D8E1B8F05F64F3F72C4B35D424F7E4DC3AB581B74ADE
-B6D6297CDE7AA8278909F269FED79B7DFD39B1C0338E01D556C4DB9CA3A8578ACE3EC3D743ED4B9C
-0145E4525E8C315F7A1B98584B975C70F0D415708C8CCC13F848B1D36AC8249B73638F95DE0CD27C
-7EFB52BED4339EBDA4812564D7A77416DDF4CC88CFB52D07A252D89353C6826CA1832A153242979B
-6CEE783ABDE65C8B40CF4EA7B42B8DBCC0E02423DD693108006F6A4AEBF053B666C3CB63D1861F86
-EAACD43BB9BB6F2C3A17293C189331D253B447757EE7CBF4518BABB73A1D44874D7F0625E6A013C6
-08E991B4AD17A9ADB36740D25E3E35B459B422F7370B134CDFFF3F3BCC4C32B4E9EBF6A2478013F6
-6933A1FA9403A2F1161EC632F1F04EDF95ED0F33DAD9665D54DD9DB2564E51DA7B65978CAB50D6DC
-1568976E83B056EB0E3A6758518B6E17E9EBFE49B72EB148B472BA144BDC2AC95744C9BF1258F0A2
-E47470AB0EFF90E190A41108914AB8C1ED6B11E0681778521870E80C16AF2AFC723CAD8719ADB62D
-3939D3BC8CC1D8A4E07E9D734F54ECA33D936D2C39D5C8055739C33E53359BD40E576C11E93B4B4C
-122BDBC9B1BBF44243AF4F0BCDBDFADE68C526B5CD74E29CE3F70D62BA83C489034111FE8E4DAEA2
-F01F9D938ABB532DEEAC0E329F42453FF5C15DEC2AEA8C198323C9E8FEA55B3F5DC4751D2E2E16B6
-154E7F2ADD46860E9CA71DC114C99D80E7EA1DAB51E925DE161CEDD678EE6282AFF38E3CD0E65954
-9C970613209955A3F581E1ABE485E56402A3DB0D1E9B8A9DFD05C4B0B7F97FC6D0EED0B69AD6F182
-B1D028ADD2F24463834B13F5C1307F91D363891824E81108E57CFD5211F86400D3E96B107F3B1FE8
-9C4908649D04A46DC3CEE0DE66AF03A7FF9F4DAFECDD6DF4D93784CC899B527784DBE0718050FCE1
-85BDE3F39DEBCDD660B2488D23AB1CFF87B0546D02B48E7B7724C9E87B71BF34B5D6640E0F6ECE47
-B182D41C89461F712849C6CFDB7E3F5EBC1ACDD12D65A422BA362A8FD6CAAC5104CCC5AB5FC04A46
-E4309ACAC83D659DDDA256CCDDD1BFF9AB3622450C4FBC89C82214F00C42FB0311BCB1B722A691ED
-839CAF9024FB1671F18E4639C96D84718C663A4341DEC037175C6BBD288BBF5A0478298CA726567A
-9B74C32A527339C666A294A17F6821CBF243D13EA4B1603C292953308B566653423E7301A032E5D5
-E2B93F1C1434893633DD19501AD12728B5A1D9D36635B589FA2E151140B543D7C5E469AFAE8E80C4
-FC1D9CB6C3823CC1BB7EE40AECB58CBC1465792226B19E0FE79235115F6A3AFE19F98C5DB63D372D
-D7C041CD940F4F79F2474D9CEEA0334FA04A97DC9773064895CF11CF73F11B4684F06E48F4469F6A
-1AEB2CBBC52994DFAB3319DCE3A0C8C2EFA9627496F8CC84D3DF3BDC4FFCB61672780F294F453278
-AEB9262E66486856D37B7647141A82E049364ED3D03F925284A3F1FA3DDF4C0B48B3FE22E7DF9ABA
-239D33CD300FFA8FD4B96192BD568FB18D325CAA8E1F1FD4B27527417B034841FD49E4A77F217062
-3CC8B22101166D80361EB15FA9020D24F61007B0A8274DF9DFCD8E97C85568E76D34AD5DB1779B02
-F034A69CCF9D4EBAA188EB3017EEF5B22A0A552696A574907F695098BD8A4849D5C8311F129447CD
-7A3CF88B8191AEC0AFF30A38A9AB8135608A7829207A7D242F6E1FA7DDA19F5E4C28560D42DB4405
-77CC0C5F5803EEE897103ECA0BD944E320AC26553BEE7852EAA733BD13DF760056B2F5BD1243BEDA
-BC3C1EA0531017D74B47E18F801A60074D6DF849FD0532234545E5B5E112D1E7385341D39A89551C
-80DC2DEAED5D5DA2A4BE5015D297324E92BE64C68428132E6EC654DD4BDCC6640C68835FF8A05E09
-9604B8CD43D3AF2B2FE10C8AFEDEC5A70AF8509D12F662338CBF166D9452CD36331758AC4F4CBD7E
-DD52139AD27DC52569877FE709F297444C4F31899D1945C81B14ABDECBF31DC463A4148F04EC4FB9
-703C158216C0FBE65CCD450043ABFD4E65BF8B28CC148252E9F3E797EA0B57B8721C94CBC2EA602D
-F2C57E87938C887A382D2659226463BC7D6A1DA87F4A341A59BEA458177D3F18D1213539DC0E301F
-6EFE0111FCF6921368BE17CCBB7428127E0C059C2C5ADB2A3F0197F0CEAB77FF7F3C027A8EC3EE76
-CF5C986EB47CB60561C773B3A2DA47B5A35394E29373DBD5C3FF4C9213A89AED77CC4F3FCFC49EF6
-EC7557C521979A546983C106B3627B5FD2D71CC5F08A32BF49332A89C5DA71AFBFB94C949A91220A
-B1F885C981423AF93F73BC1CA4D92D9DBAE3EFE6A76E2DE3D0F74FD3255820636E3F1A6B7C185306
-23C12AF90CDCD2C0A728521E9B639EB6345D1DE8FFFC3B19C72E7A93823DFE3115E9E7BBBEB28CB7
-3DB121AED8920D47D8CC08EA2E472E39A4CAD5881B5C4204F2B732AF9D5189D25ABF413CC78714CB
-01B1D8CA5565169A919DC481F6D2E67F1D490AEBC5CC62A8F62C1A323EBB55ED35AA5C8D6F8B970E
-93205C2701CF4817BDA994FC16197B469ECC5F5E9DDF0FA05640C2E571849571CBD26402B1EB1E80
-3FCF423345007B9B52B13E3B034E8CB3984B925EBFFE719ED4F39F3D0E3343316A6FDC26BDBEA88C
-4366D3B2F851D2B244CC4408251AE2C77348CCE9DD8BB9C89800B572D38C5D1CC34C740BEEBB5DDB
-0A8BB251655FB989840D23205D16311A9FCCF7C85F6DFFEA9704492A4E7A8F6C0BDC29745AAC2ABF
-AEBA02B0E7AEFEB92BA63AB0DF844EB09D505C3DFC1058CE42CDD8043B76398401E1DB862FF9F76C
-05E8BC6260A4443CF494BC1755913D51745BF45ADF2F8C7A9546D7EF4FB11E9D94E4539632C2A396
-06D04480EE459408D7A2A869807A4C01881C1BB21C296A402B5E6E07093D833C3DFF075F4DD426EB
-87B1B8DE16C146DE79F52F5943015331EEB852809CBB8E1D6460AC4D176FE96F8D19F6CCB22ABBBA
-A27C4497D91312C3CFB5BB913B314E43D2EC6AB6897BA7C34CF2CAA6DB4BD69EB5DFCEE0AA917D69
-50E36A68A4C22A60DCC69379D47544A58D640EB10DFE120FCA843B588CA8B94F7869F97609A6FE03
-AC86EC1F7CEAD2EC8E81977D1B946E459DFCFEFE65A7BFF67E66F5F78A45D8DF65AF0146DF74E024
-FC042328886CC1DD7779F49CDBB750345CF83CD678A6A8897577299DEB38AD665DC4F21CE1892A18
-C256F318107DD3E9245C1AD3BC93CEF7B7BF057E33EC9A3F953251261AA3D1A8347261E70A46F777
-3A84F3D4D1A0DF6DD22A96429349DE0D180310E17955B10FBF53220EF6483D03C650A8D5C16D63DA
-F65C21ADCD6C2D0B5D4ADEB2F5526AACF7CF42F9A8BF4832FB2D4F73F3D5FFD984B572232F87BD3E
-59133ED3D2FA19F7856AD812515C74F7D851574019C532C25F8E163E595FC9C83E3E820C3CBF690D
-A62578A980FC0803EB6DB9B1E90E3256BD4650816ABE5EA86CE65C2EB418D0ADDA5F3EA04E17AA8C
-4536CC471AC20236E66ECA3619F161DFEFA485386C30EBB86A7AD930FD0AADF2DA69DCAF26C0F677
-206E2030E3B15B3662C0AD03DBC1636EBFAD1F2F2C37F5FA9856B0198C5B1D80B69C5EFFD94CE071
-5135C649C26B9BA1266B0A5B270CD08A706166C0B320915C87B27DE21DEB5D7E4806F6E700B7A06A
-4E29B629CB40761983E9CA8E34E869ABD04DDA190BFE5A6EE8B22D7E511B84EA584A84211F27AF89
-18DC5AF8A1FF2D360B6BE3CA8E66BA4CD2CE6A25E7E89406684DA83FFBCCCCBFD0844FE3BECD7DE6
-7764C59C022DB1168D585FE25073FE00E30218D1DFE115CA1FC606AFCB04F2A082EF91788B6BD096
-84DEA31F20034A91AB9D971366F97B5009FEFBF1EF0AD941654081B1E8F0B2EA495069A1DDF11DC5
-6857D29533DC857958B49D1A0779732819FD22E437084BD9F3C4F2CDA4D12CA14431937AB63A03F9
-C040AF1D801F367ABDCA7302E18A9050D6026FBA5A5A7FAD44E31593173CDF277CD737D1CEF59FE9
-684252BC0DDD00A80E023B88222494C1C8C0884230AB11D1083225AFDCDBC1E24D4AD5FAB396D2E3
-70E44A7571B230660D510A5076D8E35F7DB72C0566DFC119EE1B8AC3C0406950A3C4A4DA36BDE297
-040A27F70753A87E6CD593DC6BE9962261A99AE5949340C5D45C94A9AA3DD636CE8B497BBB812345
-7C824F443A53B3EE595C38983FE3E07DBDC6ACD55CAE8BE1081AFD4857A5F52A3C925143507A3C37
-F1992CF72ED0D4C48D94AE6CADDC3BC87AC3A3EF035E02181F78449E4B063B0835E827644051551C
-1603E2EAB5875F28FC77BEBA6923428D5521C698C6B7F133B0F689F105FDBAC30A8ED2F29F0255DD
-F8A037B81F04EDF004CBE639C8DB0F94D0C5DB92D34D66C2FED66CF8B895AFC4E659D08388EA44EA
-E83CE459E5BE306750A682B627802990037157339BF142BCB9C08FAFDC3C3FB16DC3544F62C6C7E3
-3E20CC4FC7CA21E2C3F6C546CD78DEE348F1A4C8CB548EF20C049678916771D83ACC9B7B22784AD8
-580134471A3C79BC86B5D6D0D305C32E6204274351C94F9DF45D9B2AD5B5087A89F90D6AA033E4B1
-D1BED022F36147C7ABD2B73134DFFD50907258E610C3B20949E141172B1C6A76DB238C375021CBA6
-645CDC26B717428B5A9B4D3F32A4B1E22FEFF3BB93FD889E1DEF8087718D5E3E650FE4A3330DA9C3
-7E9EB499DF5A342D8BA4C0A033C3347CB25A31BE143ECBF91384F2381E323E7FD3A82A3197C18905
-3200AE2C86B9D01AB0B289841EA7E9E9A26966E0DEF54DE0B85D8DF084B8C590081E444BAF1E1F60
-670FA12AB97159318624F2AF1B5EC7DD83C1073A99398D2143A52D10A13C201FB356BC9E90C63BB0
-BC2D4C42AF4A8B9C8C4D58A1B32E0597C63B3F8B3E893BD3BE8C60231838F1BC78E73A6C8CDD5E7F
-2907F897FC8EE99BFFDA7338BCEFB5AEF950E5549ADFD207AEB15846B509FC57989883642498A381
-1B8E5CDE69C05924EFAEC232FA4CEF302EE3251366ECAEF57D25CFA3B4A9E6397D996F421C900BEB
-CF73B038FE7B16FD0A1172AC2F40D19CE0B02FCEB8BC47DA5344CB933C7FEC950184F78ACB32D3E5
-E290E84BE753B9E7A7BFC4416CCF29D023760C06CDDEF2505806A65E1508990529245059AFD301DB
-669D41BD72BF7A80A9DF66B876B3553FDF4DD38D15289AF7A1AFBC53FFFF135A6348DD784AB42A6C
-0D6AA330B069607E2DF3CBEFCE79D6F63E274C9E73A33EB85246D5EBB986BFA923DF68B2B8CF82AF
-6C33E785F35B25B1D1D614DE85A4F4510ADFE42D75B5FA5408A59ABE53859E28B3D000EB9C6A7D2F
-67C91DD14C895BA87B9CB57B851E5193FCC2A443AF85FE28DF6F39537F23A058BCF81DD8C04CB2C2
-5040300F4C55975E856DCB4E21E2B5481BDCC05601942FB25BB8A6B6F93E2C2A33CD478B44655657
-C557EBB080179EE5D98C5CEBE0B25BFDD952FFEB258014D7A5BC4BCA4F1A23BBA73C454B12960451
-CE1752401B0151CB2E01D5C72595095EAE91D8D3BD55A54A2AEA89239FA176FA7CD6F16BB0733EF6
-CE6E77763A23AAC77DA88C8EFA7BBB2991E472FF2075FB25A75ACFA70A04C28764F4AE4C12051B25
-B120CAD2E3044DA35C1F94135DBD69B10DE147321CBBDC814CE99982AC1D76CE3D3330E41AB31F3C
-76BF89B95EAB81AF3464C732D5B1411D97DB36C9063537F64756F205B16ED7058E2CB1D6946C00A1
-A0CDA9EBBE924BDA6C7D7B605C514A98133907B793C74CA858E82DA3519188CD974B34DAA74265DB
-5BC8550D5F0B1173ACEB87458BCE2AB1F96996C811699A0FE4A9B849D39023725E2B1EE7E426D30A
-6C5C75AE6BCEA6DB41E4EB2035F7F924E6B9F0DCD00EB2BB014222E55FE387FBF5B9B7C04F4688D5
-AE3529FDACB38B5EB0AF5C3A874C1AA6B17CDA8D1E22EEE05A3DA88449200D3D0D002DB86F6C51B3
-37C8E19F338E7BFA01E1202612D50E210140947D5F350E84F790286C3F679A5D7E43BCDC337265C2
-631527FD62D598B7CA1F5835C0441881B97F5197901ECDC4F195BC665A846823D2E41417373F8639
-567B228FE7B73D781F07A361AA49C3E9D80FE5B2A32C4C1E575D194E841967B08D10405FA44EEE28
-47DB9372C5CC931E50469532F1BAF577F680BAB4E30B7E1CFFA8574ABB679789F69A8A1BAC07B7C6
-4EF5CE5EB00E97B36FBEACA9BBA4A13B0293D34BDBC77AD1FF88E5744AF009823BC262511C4724DD
-585E7E17D90F230F7A5861B0DFC42F0B4E49A04EE0EE4DADB908479DEF8372F334C53D2BA5D855CB
-39DC7C9550F9D0F7F77E82D5A59FBBF34BFFE92DC9E6668B68FEEAA4F20053433D6749162BBAC5D0
-D428DCF2D58D49B127FA2E674EDC7D3613B1342F4D0ABD7F4C5B049FBF78E804D5F16505AE7EDCBF
-4D6FA08D72890F5D55199034572AB4B0C9A7E7F6F5A403198864ADF113CAFF5BF9D4AB5B16F81D0F
-C2188FC80875E10034D12E30C0364F8F72797F1AED525A2712A40D44210B813DF5A29C84E9F6D51B
-1D60A5F6F938FAABF878D29E6AB252D95D05FC1ADF5D4CE1C9E585219112112BC6CD5C766411FBD2
-2731794B5DE0A27AC57D3C57926807469C360372BE529098C350EFE2154B87F1205A57A0B04C5206
-CC4FA66B8793BBBE492CC3271FB4F90A28D0066E0D7F63B8DD01549A05AFA5482C29560ABD628568
-75CAC16100087540162473498C14087B29B86B7BFAD693E81765CEC781F3FC80E9C7B410E9B55B88
-114191A1703C638DFBB469ED1DD8254B1407003A319CE74AD419B077F17047A01F0BC0AC8507191B
-F72D77D9333C9DA8C9DA733EFB5305F49CB8C7BC451321ADD7D896395D269DCDFDD084EB3AA70338
-6C0697E962929651164135C094D9BB1C9B949D5EEBD3BB17F02C98C813CCBFB23C2C26218A2F4C63
-9A8B9DFF2C29406037F91938A5E1227310728428B56F48108CDEB33BD3191ECA89F947271983DB77
-6B2BC897A30EECF2601EE3B2A6F0E135397622AAC1F2DF523CE6E6BC720E13CB530CEF4AB9C8273B
-D3D81563AC8A8E6C44A195112DAF824BC7A72FCDC4E129A480717BEB01085DEE65EE4344D0B41EC0
-BCDF842566B1D9F5353B1F6A063FFA6CDB06EF634C8BD5A7A63F991D178F56EACA653DD67685CE49
-E98C7554745A4AC533217662D23E1D6937135D13BC2208EB8D50560A2BAAC319DFAE478B6BA4CA5E
-DA20222F0E9BDB0806320ED1665B54A347DE0C42E9F77842DE4D188E7E824EB2F0D7AD163F05480A
-7FA99C5A603BBC5DBC843774CA66E889B945054C0ED0B1A4BB14324EF901B023C208CB95DFCE9284
-89789690CC45BAB97BE449F8E2F5AA9276C0571303E9788C46E7F789555BFCDC3FA9ED8DA8AD9BA4
-8B3AE09404664391E63A989EF1E24BB464043AA099E4F2D796E352EB277106D8D81BAF2F8562EF46
-BCFD1E0047E8018CBD973021DC1C1D821AF03F083F0B088A62EBCF2BF6C5B0FCFA441AAD1625FDB8
-34F943DD47A5A42EB3E9A5B49641F797C288B799A64897F1346070461B6D535E0C4ED099199C387A
-3176AEDC7DA7E7D9E118E55565092A36F7C74ABF281720C0147F4E4F37D49436466C61FF12764E30
-43D8A6D027E70537164F0E7942F4ACA42BB2CB136177EF7197E76F49AB403F741C0EF902FEBC471A
-D6C627424320A8C3A1F04C310C511B3F91C3937D9ACF459999C18A33F2C852EC38CA806599C728C5
-43714018C65E2C5F430F6270AF52AD71ED38813B60440779455F9529A4A1623CB9F5422B9216F9CD
-BA913B9A1CD95DA225E254E8101216085020660509D03A034B5D7E32E3DB5E5962A9A27711D4C3E2
-9CD84057F7D0D7E8000947AFE896F8523253391D2E11FFFE523366B05C532D5629A90741EAB3D4A7
-31D3F6D4F03FF93233DDF88BB1913ABA22EB9AA6311E3144381DAE29BCC8639958EEE59ACCFA06F3
-5DCCC63E0609F542F3EE5DFB1CF718CA3F328455726F8F65E23ACD970E4049225998371B63E35AE9
-8DC54D8329B8DB0901FAA63129EDE21B158776981D4D094013C096E9CD020315D123C03DEBA21E97
-E4B584B4BC0AF25F5DCE53C2DC0F3E61F99BECAB40799478BE7F5AFD7F68E23EF50AD6645C967EE1
-1206B6E791769428ACDC370D64E4F2B3972E0E4F442297199350663D6E772FC6777A9B9DE215273D
-082CCE4E8678FE9948DC8D5B0E459CD02F1645AC5620F3571A40B4D5A17DF5CFF48B6C843DDEAB5E
-BF58FE13D7DA08E8AA7902119248B3B151DA583101CF80853B0150FE05BDEDBFB50A7FB0F65728C9
-3B9DF48CE8AF1DF1FAC25C1D58E1AD30274A00EB54CF2F16029E1AC0A0919C0655474B9A6936AEE0
-FB74BD185FE7D70BB84786997D34A40326A74356A4AFAEE67B6B26D1C1A7BCFF8697B55C816CCD77
-312C332A55315DC54F9BC0A0F12500E0A76B3936292A3DA2DDF5AA8CBB9B5DC32EDACC4827D684D2
-74E65B8B76FB2C2B19F7D5607523FA953E34BB39032C05B1C1244304606C55660D3CA8607E764EA5
-B03DB7FCAB5CF7788C6E60EC8C449BCAFD90BCABA4132B6CBCCFF16784FB59B36B77CF0A9EA572E4
-CA0A01C725A6CF2E4500CDDF5BACCB9094D48925434F044118CFDC2696AF5FC0CAB3884107ED17B9
-BDE0C0104B1292A1F8C99B06FC4A6360B24480BD59DF0488641899B0F42B1311B582717BA7ECFEE1
-4143654B5371C8B9B2D80685AD38D897AD1E64875C28C7020A84FBB3A3BBEE16617DCB9BC822B7C5
-9C5A18C0CF7E80163ADFB7AA03B7CDE8497C1697D90F2ED90F813095C5B91657FC294EF0E341DB33
-92ED860CB2E0AA09293D0F99AE9EB54C761CA2DB1E51E1CEAEAB276C7BD916C68510D72D9A67468B
-09B3C39A7815628FB126CDFD5EFF59CC8184C0D35A5B5960F824BD175495DD3EB12A4E96008CB13B
-8C5745303E66CF8608FF27C4709C1D854EB79608E52F068FEC0151A74C125EDEAEA555C198FC0802
-7BBBB802835E1D435077AE4B1CCDBF722354F6C572BEB1376D3E342195FA80AC9722EB2F46E44DE0
-5F5A227B731B8D4A4B6EDEF04AF2C5DEC2EEF8FF48C5B18710ADE3DBFA0C956505B6DA9CCB7CBB83
-4DB6CC754948855D833670FF0AC42A4773FEA8322BECEE04CA74AC2D66855132D11A51524488C547
-71B5B7A512796D7D7AE0F9C1FBC9CBDBA0831074F4D200349D0CA40537B92496692766F020AC43AC
-01DB8B2AA2EFA9D21732BE3A315F6CAA402BB2E61D40DDEBDE11276D90C2C601A935C168BE600464
-76ADED15087D54A14C68EECBBBB590927C1E10D291C9285334CB0C80EDBD392BDE4D535EB61F8E76
-41F58AC1DF5B1C5A5D91E3E27E05CAF7EC97ECF0C85B6425197AA856521ED701E5AEB82A7F52A8BD
-7DC97D5B3FB5C99A5DF84D1BAFF89072922509D76BC6EDB15CE5F9EB8F4154BEE1E82020240283BD
-C83A8E49AA9A2649B7955D5C058F2818A63BD0BFE7EACED4A49063C489A626277AE1246F721C9926
-E2A2B6C31045FBCD235F3CC58BC4DD6C57FE998EBD1E9FA5154652BE3A1685BCD2EFAA079A3293F7
-8142A6473822FAB627927EACCD61B3E99C3077103D2D19382BC7EE15BAD0FDE489602D055A01DBBC
-F91A566974559D1B477C209416887053169C3F8F59955BE4DE82B60558CC9AE15602A93F029F6B43
-29E0E62A03982DB32F5229714EFA1491A7B24AEFE18FEBC2C93DFE50B3F641B51BDD33DA38871BF5
-243C17502D00AEA2D9E9734E80A96788D4CF5BC12A42BC386162FC88A7435EE13200C1C2C6CCC5D2
-1A03941007B4C4291BDB711446CEAF27148104BB240357D5EDA0EA5A5CE27D4A83909D75BFC05D75
-F10AA74A6DE37D7DE15C1DDA3AC3045DA6CD48323D904E716B445E5E096FCB379353ED70CF4B6FAC
-102C762711079EFAF13FB74C9B47AF75F3F6BDA2A4647D2AB47ECAB64DA6CC01479F618E8D2D0A36
-45445E8744683CBBC560D47C98078B84206E90EB839B02D37C852B8E284463D4E4D890203C3D5B20
-352110034EAD6BD7F41456B807E1DB1631A9D499E52E9D9853D86728B1A2E511F40F8CA1E4724A0D
-17ECD640B52FF6C66E28693D89765FC391612E5889E77423EC85CBD0A038B6BA98B607701DC0C4B6
-6B3B28C7790A1F1EB8D051DC98276DD9CFEFAB3F65C1C928E48A060C992B392A43E56EAA6DED896D
-EBCE71F8245BE4687F2F1B8FC0F43ECE8DB0BD0AB0811C5CE73CBE336023A0D66168B34A95B4B0A7
-50B3BF1D197E3C042C7914FA731D7831AF798E9429571CBB977E6258244E84701E5FF91D608F98FC
-3D68A4EE5B81D5FF38B6C184F6118B875F022B4CE207DC7B37E1452DFDC591A3E506AE82C7E7BFF0
-011B0A3DBD616A993FBF878FB03B6C9F2055A2B095D29361F8253C2623653687FE0AB98078F6AEE5
-FC2C2BDE0405EABEDB3A33EB7F04CB6837176245F190C6BBBCD64522B12FE7F9CDCF201A1AA8A19A
-7BBC4AC064B4958F44AA0F8DDA23835AD28A1FD0EA105DE2F395385DCCFBE2261DC5A89A23AF606A
-3985E5038706B1FE0910400E16BF008F250F3BDE3AD806C735495D499F16F99275010478FD2127BF
-7CEDD6B5BD505FBE9BD0065B4A7090C9D27CD5B36C3AD33E1B31EB6D44E375003B51B909DA50BD18
-218418B3CD22B43278B144BE78406EAF16C7DF6B6C1C6238004AAB73736B38E168441DC16F9A5CF6
-0793A18633BC43D78674D12D38CC979F7CAADA6EFE807CEA499CB9FE616496682A66E04BBDACE1DC
-112B2156B9B0B20A58A8CB43FF0EEDB99805234B9A5789762AC7D65F5A319C33F4F7438CD15E06BB
-80A7A97E976E8CEC23F4C646A5821880A82B2F1DC27767F090997E91488BFA15064B702F864FCE65
-05D6CEF87D2A0A12B55BA189AF269811E3B8B850C8401F3906C080D32618D9698A766732A40A9FC5
-A94E5BDDA3D028D823D6B603B6D17DD046DE181FD989EA0F80B4CA62F7973E4DF5E032A31FE6BC8F
-5CDA678D4A72787EB8253EA5882C337CDF9AA3E1E7D9536DD09B047CD8962E773F72F6418A3AEF5A
-289B3406C152A50CE7BD4B493FFFC27F6AA52F79EA67E362FD92559AA4F94A2F787F6C735DFADCF2
-F08AAF98B80C53CA5607A94F25F04AA65A70A75937840E73055B3D65FB054C63E2E48E68488C9315
-A13EE949E03E46723C11CC759D222CBFAD2E1A87CAD779B23D38F7E2F660DE1388EAF1CF4D18994D
-75C6CC63F187FDB949940C18B537A0AFB12AC5F67B0283CA5EFE2E764C4369104B9D3B06490D1244
-C41D6085C85F1106082EC9DB84586230511C05C82412D2CDF3DAFBF4759A775628878F997415296B
-C416AC8352A6C6988691FCB831CF95C10BAE691ADB3BA2918B35924BD5C3ACAD8B137397B10AF82B
-479800FE16D472CD0CDBDAAB4F882A0649CF561004B8CB7CA32EC129D0A415BE6CB91DA2B65F44E8
-0D138808A127E851A7FCF927E99DAA0EA2D626B77A16C72E37F058A3B882FC4955DC8CB6312434BD
-3BCED75780B13590BF4FE8D64ACF0371F9FB1D361B05025852AAB9EDA1A0C997CFA58052C454FD45
-1E6C1F194F4D363114E312F6DC35BBAF357A32CD200A3DD9654155134259887D677ACC44F89AA401
-CA27282DF7DC3F2F04A108CBEF2558DCCE28BAC2D87B8D5B7181EA927F61977764F882626D4AB338
-D95C9477C54E9C36012A3CFFBE199EC8120A99D2D70A21F9D9A0354E4EAC7947990E8A6E0601796A
-AF6F14E758CABCABDFBD8204A8E748A3E5FEBA570D36E2BF474C0083229A63F96114182321B2EBE1
-BC76DD193724C4588C1D39D184C332FAEAF4C629F2B3B2F49996E46AA6C9F497428BEA52D58876B0
-DC07B460248BC85CC16773A5DAC36CDE8B152D96057F4EFAAF8B1DC10022038577368057699B3A37
-178A9F1F6C6CC60BAE820B7ADD0717911BD23A6DCDADAFA32473491AA80CFE90F2A77E24CE2826FF
-77B18B869C33FA292FE01D6477765044C7D14A548B28B1360125C6933F05C58B0889390537CDD16F
-8E967E0B38579449DFC1E07389B7069AA8594C5103465D5041CC929268DE863FADB6925B350AA94A
-27D421FB7FCC81C6B35F906F12246B7A5140511A97211BA9BD6831A508E963FE8BE961332F557808
-488F06EAD75E86D60DE3FA2425AE8439ECB9112BC3E4D73747C1C8E87A649919827049832DB0BF6D
-A8C85C9A2592AC002809070900ECAD52A56F1BFD456AFE066509694EAC075788456B0B0BDD7C192D
-321E9FB6AADCAEF00F570F22CD4A5322FBCE8FA98FAEB681940895426270BB4319C11DA67D88552A
-7373398AEC5DA7C9CAA9F3B34581C6E968DAAAB2751CC012199DD897B448986CFFBAE4D412BF9ECB
-F46742715A9569932516259D3B3A5431CD7028E42FC751C434E2B714C718202BF02CAF9B8A2075DE
-922322EA7CFA605C8376FA958B8FBE43031E1026FBE6126A3775F643EA67EBBD97F239FB3C435526
-75CD08B19CA5EBF53B40D728556B4481C7F73EC71CAB0F89E34D60C69B272FADC22E8E7BDC6210DB
-09FDD913E209F49FD28E8712B8508904620250746CA3B21B026EDAE60A2822F59E912E626B93E0D2
-BFB3230DFD0E54E91A1DBA25A609B64D41ABD897A5D21764C351E85F9E87BEAB9E645149AD32AEEB
-B3B1161032C701647115F98C1C2AAECE871862D91D321AB90F3E923B1FDEE00D927F897AA9812373
-6536E2E0700F10053D7E6C589BF66029D794883EAE4C8228941CE96565B50D48887B5314A2E55379
-59638222A6CA54C77CBABD460DAC11B063519AE4F50D93DE41763BA7CFBF4C7724360E750478EB62
-8921DAA065858341958E4F3EB5966C6DD77C05EEECDF4B5F6CF19AB507589B4219377959BD258EC9
-21C34FE1DB003F7D0FEA3E2FD6F5DDB0A2D62CA5A2CD3C7AB457DFF25094EFE04A9E1B9CE7AE3F30
-026B1CB039228D309A22899F6E9B9BFF922E117123347967D7C62C670E2C74579C35989925603022
-C17B1DCE378031ABC9B4B437C7B6E64620932E93189754C01D4B280B8B08699B2CA953AE4823BB9E
-E34133C5C95B3290E1BF010705AD852C72BE87291E1034B09F44A95B6A2F83FEE8841DCF661770AF
-44D0AC7F9CDB280939FC5D953D525E0B41B7BE188D5C794687330CD770D24D9CD53B895A253004E1
-8A31BE4E82B384
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
-/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
-/NimbusMonL-Regu-iso1252 /NimbusMonL-Regu ISO1252Encoding psp_definefont
-/NimbusMonL-ReguObli-iso1252 /NimbusMonL-ReguObli ISO1252Encoding psp_definefont
-220 265 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<636F706965292E>
-show
-295 383 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 383 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-671 383 moveto
-<6475>
-show
-763 383 moveto
-<66696368696572>
-show
-934 383 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F5352432F7372632F534D4553482F534D4553485F4879706F746865736973466163
-746F72792E637878>
-show
-370 443 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572>
-show
-479 443 moveto
-<72616A6F75746572>
-show
-653 443 moveto
-<6C6573>
-show
-726 443 moveto
-<6E6F7576656C6C6573>
-show
-935 443 moveto
-<6879706F7468E8736573>
-show
-1175 443 moveto
-<636F6E6365726E616E74>
-show
-1411 443 moveto
-<6C65>
-show
-1466 443 moveto
-<63686F6978>
-show
-1595 443 moveto
-<6475>
-show
-1662 443 moveto
-<6D61696C6C657572>
-show
-1846 443 moveto
-<74E974726168E9647269717565>
-show
-370 499 moveto
-<6465204E657467656E206574206465206C61207461696C6C652064657320E96CE96D656E747320
-766F6C756D69717565732E>
-show
-294 601 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<23696E636C75646520>
-show
-520 601 moveto
-<94534D4553485F4D6178456C656D656E74566F6C756D652E68787894>
-show
-294 645 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 689 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 733 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 776 moveto
-<23696E636C7564652094534D4553485F4E455447454E5F332E68787894>
-show
-294 820 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 864 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 908 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 952 moveto
-/NimbusMonL-ReguObli-iso1252  findfont 42 -42 matrix scale makefont setfont
-<63726561746F724D61705B944D6178456C656D656E74566F6C756D65945D203D>
-show
-294 996 moveto
-<20202020202020206E657720534D4553485F>
-show
-747 996 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<4879706F74686573697343726561746F72>
-show
-1175 996 moveto
-<3C534D4553485F4D6178456C656D656E74566F6C756D653E3B>
-show
-294 1040 moveto
-<2020202020202020202020202020202020>
-show
-722 1040 moveto
-<2E20202020202020202020202020202020202020202020202020202020202020202020202E>
-show
-294 1084 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1128 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1172 moveto
-/NimbusMonL-ReguObli-iso1252  findfont 42 -42 matrix scale makefont setfont
-<63726561746F724D61705B944E455447454E5F3344945D203D206E657720534D4553485F>
-show
-1201 1172 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<4879706F74686573697343726561746F72>
-show
-1629 1172 moveto
-<3C534D4553485F4E455447454E5F33443E3B>
-show
-295 1289 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 1289 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E2064752066696368696572>
-show
-370 1349 moveto
-<20>
-show
-382 1349 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F5352432F7372632F534D4553485F492F534D4553485F4879706F74686573697346
-6163746F72795F692E6378782C>
-show
-1651 1349 moveto
-0 0 0 setrgbcolor
-<20E971756976616C656E7420434F524241206465>
-show
-370 1405 moveto
-<6C61206D6F64696669636174696F6E207072E963E964656E7465>
-show
-906 1405 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2E>
-show
-294 1507 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<23696E636C7564652094534D4553485F4D6178456C656D656E74566F6C756D655F692E68787894>
-show
-294 1551 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1595 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1639 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1683 moveto
-<23696E636C7564652094534D4553485F4E455447454E5F335F692E68787894>
-show
-294 1726 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1770 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1814 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1858 moveto
-/NimbusMonL-ReguObli-iso1252  findfont 42 -42 matrix scale makefont setfont
-<63726561746F724D61705B944D6178456C656D656E74566F6C756D65945D203D>
-show
-294 1902 moveto
-<20202020202020206E657720534D4553485F>
-show
-747 1902 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<4879706F74686573697343726561746F725F69>
-show
-1225 1902 moveto
-<3C534D4553485F4D6178456C656D656E74566F6C756D655F693E3B>
-show
-294 1946 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1990 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2034 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2078 moveto
-/NimbusMonL-ReguObli-iso1252  findfont 42 -42 matrix scale makefont setfont
-<63726561746F724D61705B944E455447454E5F3344945D203D>
-show
-294 2122 moveto
-<20202020202020206E657720534D4553485F>
-show
-747 2122 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<4879706F74686573697343726561746F725F69>
-show
-1225 2122 moveto
-<3C534D4553485F4E455447454E5F33445F693E3B>
-show
-295 2239 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 2239 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-651 2239 moveto
-<6475>
-show
-723 2239 moveto
-<66696368696572>
-show
-874 2239 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F5352432F7372632F534D4553484755492F534D4553484755492E637878>
-show
-1843 2239 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572>
-show
-1955 2239 moveto
-<72616A6F75746572>
-show
-370 2299 moveto
-<6C6573>
-show
-443 2299 moveto
-<6E6F7576656C6C6573>
-show
-653 2299 moveto
-<6879706F7468E8736573>
-show
-892 2299 moveto
-<636F6E6365726E616E74>
-show
-1129 2299 moveto
-<6C65>
-show
-1183 2299 moveto
-<63686F6978>
-show
-1311 2299 moveto
-<6475>
-show
-1380 2299 moveto
-<6D61696C6C657572>
-show
-1564 2299 moveto
-<74E974726168E9647269717565>
-show
-1845 2299 moveto
-<6465>
-show
-1910 2299 moveto
-<4E657467656E>
-show
-2073 2299 moveto
-<6574>
-show
-370 2355 moveto
-<6465206C61207461696C6C652064657320E96CE96D656E747320766F6C756D6971756573206461
-6E73206C612047554920646520534D4553482E>
-show
-294 2457 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<656C736520696620282054797065416C676F2E636F6D7061726528944E455447454E5F33449420
-3D3D203029>
-show
-294 2501 moveto
-<2020487970203D206D79436F6D706F6E656E744D6573682D>
-show
-898 2501 moveto
-<3E4372656174654879706F74686573697328>
-show
-1351 2501 moveto
-<54797065416C676F2C206D795374756479496420293B>
-show
-294 2545 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2589 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2633 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2676 moveto
-<20202020202020202020202020202020202020202020202020202020202074722894534D455348
-5F4D41585F454C454D454E545F564F4C554D455F4859504F54484553495394292C>
-show
-294 2720 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2764 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2808 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 2852 moveto
-<2020627265616B3B>
-show
-294 2896 moveto
-<20207D>
-show
-294 2940 moveto
-<6361736520353032313A>
-show
-294 2984 moveto
-<20207B>
-show
-294 3028 moveto
-<2020736D6573684755492D>
-show
-571 3028 moveto
-<3E437265617465416C676F726974686D28>
-show
-999 3028 moveto
-<944E455447454E5F3344942C94546574726168656472616C20284E657467656E2994>
-show
-1855 3028 moveto
-<293B>
-show
-280 567 1 616 rectfill
-2125 567 1 616 rectfill
-280 567 1846 1 rectfill
-280 1182 1846 1 rectfill
-280 1473 1 660 rectfill
-2125 1473 1 660 rectfill
-280 1473 1846 1 rectfill
-280 2132 1846 1 rectfill
-280 2423 1 616 rectfill
-2125 2423 1 616 rectfill
-280 2423 1846 1 rectfill
-280 3038 1846 1 rectfill
-showpage
-grestore grestore
-%%PageTrailer
-
-%%Page: 4 4
-%%PageBoundingBox: 18 18 577 824
-%%BeginSetup
-%
-%%EndSetup
-%%BeginPageSetup
-%
-gsave
-[0.24 0 0 -0.24 18 824] concat
-gsave
-%%EndPageSetup
-%%BeginResource: font NimbusMonL-Regu
-%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-Regu def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-12 -237 650 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020945 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A2261C63C769D2F4B60FA2C438AD7D199D8E4
-5F7E7C9A605C8CA14E21FCD81C9A515FB8DB6F99604534D06EA9D87FE0FAA852899C9D0595C7A97E
-6C55F79FAC45CD38E87B10D210CE7501E88C8FCD3444354365FB893A12F596AE2C1E70D5819EE0D0
-87D10BF8DA96F3DABD5405D28C4228C6C31BA4052464859640933FEEFD8071C0C84CDD829A9B1D0B
-A01F25A4D50EE2EA2B45160CA6333B2D2800306ED2BEFDFE155E9D9F9342EB8D5B0ADBF2460CCC98
-643FB1287CCD28ABA7B5CAB92EC39EE2E918990372B16F8487EBA30EAE88708B6CF33B6C015D8096
-C7CFE2F139F52052E3925C0D50FD64CE68236D59CB83EF56BFC584150EC38065059F3308AD6F9A99
-F83EF4E6CB13855C8175E31417D190D036B387D3952344A950F4D8C7781B307A094DF1ECAEE4D2C2
-FD747BC6F7F9C6BD0E90C19294F96C8C5CFE88FB34C477574A1B1630B8CC591529E59B20794DA32E
-61DECDA8ABBD1AE956CF74012AA01D42EE01E861B0AA6897C864788AE59DEF43C493246FDB1ACA55
-4C12594BC7B33657A9ECC9E3D1472EF826073F632BE540C35FF6FB40566773F3BB2204D3A579A08C
-CBC844C14B18C350F003B9DA23A570C362D6003893CA32F86F59B829C78EE3188B6E3F7FA81D7F62
-2825C639638DFB78B7AF1F500F5B450FA54DBFA5CBA277C794ECE93275A3DE0B452FDC8DDC2993BA
-A42F28A636008CDCB03EBF71BDCAF35019778993443F88412AD2AD0D7155A3944606463266322DBC
-0244B07DA1E9C27A27B59664E8566D7A54CC03E995AAD008B0A17E2C3EF61F720CE7F7788599C4E4
-4C709CD5C31B11107F16AD70B17B9AFE2E8CD922A7428DAC171427FFAF51067307FAB0ADB530E701
-FD22DA22C4CD3064067BD4F6089C4B2C87937DD426E4E9D2F60E608288BAC9056554D04947E69200
-61E379CF5E81BFD32FD37EFAC1F61CEBEE551B0851516471A7472C60DF89DAA9EB1DC5A67E479745
-3E69B9E22BAF4E3CCA4192D603295B018C4AB69D18DE52DFDF15E96B557F290A4B8C5B1E7A6CACA8
-1F2351B97ADFC36995ABA43803A6E5AC04A3C93495F6D38106B8B144449C07D1358210F9176E1565
-72363CFBDE576BFDF99FA329DD1346E83F79E06CF68250CA57A68931BC7F342AD295D0CBA17AA95B
-B8EEB53EA6E8E660B814E9F857CECB14F44A43288B69A9E7908D55BF19E844359879D28CAEF1C38A
-36420185D20DFB32C2E002202800E8EF3D67C5D50E919657CA958B538D537D503444865331D79BFC
-40312068D72364503BD0CC84B5F30A74D8B5B6A26AF2DB764564FB65A6BA8F9051AE2B4EA458D46A
-4569F30C6E77DC097356770362E6CF3F1661074778EBB44FF7D1E3B64FF75E77E11FE525BB121C65
-46CFD13300CA1F02D571B82A5825E6226D14FDCF27F06D87452A8B6C5DCA658535CEE2A795E58137
-D48E566B69D53A0C3B766E84C51EAA221C46999CC8065ADB2F129D5B630FAB1814C0C33B5AEA0EFB
-B6E994D80941B53079AF96D90A0B924F9B0E319BED9836B8F9053F868363D3CA554CBB181863301F
-8CB940872ED5FA7BD18CE39218B5AD8AC57D0F752D941076B1C64D99BE0DB86D7A6D96510D772EB2
-4C587F11779BD21CFE5BDE1F29C1EF9022B2B8BCD7F91153C845906722477829C40111D810480F3C
-F62DE8DBA7FD86CD236E656618CAF6FC46827FBC4898EA7672F8C9971AFE43E0E01EC8B77D4AF48C
-BF1210E98C1DB15C16D149BFF58AB0270CF015B107A3A50F5DC8F37FFB92EEC8CB6778DDB7CE4AAB
-C464C4AFF654223006A550EB52485A23D2B4AA7198D3CD54418102F1E9A4FBDE37B841E56F5C2C53
-966DB9B66B000E4588282E3FB80C2C519339F0002D2F83C979EDC5827A3B3C8EF8810A0F9DACB6B9
-998E9AF6551F56313DC4011904CB979AA2D32B11A811BC248141E4B9734D9FB7982A5671002D8279
-CAB93ABE057474628DEFC95D43890DB1ED34CFA8A20BDC3D874E7679A396158E522ED0AB969A4E3E
-C7E4474E192590504D54DEB7B260B7935C4E56548A7D121AC1F741F8CDF259EA1B5813175A77A1D2
-D30BA26F65EB765A04C09ED51F69F41551ADF399E6AA2FC09788137BEA4913F17B8EB838C38FB272
-1FDCB55FD65697FF0B850E7D3D1CE266BF90F7EC06A9A0876BDFE767D3A918B092FC78C775F945CF
-1F96E859C03DBF630D9A940939654C3549D8F7921CB94EE23D5A0535DE9DF31EA0F937F860B4F220
-A99ADDFC343D7CF7BFA0B803C12C26403F0DCFFC8EA786D0D8A8D9C367419CA8AE41190CE93A8086
-583A1E6C9D70B612C84D87D2EEAA71EC2DC12F4CDE6A821303D5F6A9BBDB7EEDCD289E80FA3B75F4
-7F481B50719DCF4A142069393593B9AF9CCEEAEC56A35B8787193D7C88113E9E1E221D151E093B01
-9EF89F6118BEC4735103CC8003CC5AD1B6727B3226CD44C497DA7052DD681695DBEC3397F9598C91
-77701C73BF0594CE93F23D50EC5BEE2FB9DA1FC966DF148B27B28EE3C89526DD6625E2887F9FA076
-7C127C609EE315626BC14D274FBEA56528DC06A27B2D476D46E9E7916590B156A5DF04A6CB15E362
-45D77021767B6E5BDFCC679670263FD891446C3371B11BB6E1DF60F960AAB4149D7753E6A5C33810
-C42C8BFF4E935003388506F8278BD7CB672F132E065AE684DCA0B9064D01DD620E7FFDFE04F14277
-EFE8E60159BA0FCA3FE2F28B902D4AC275D19F0AC6971EBE827C4A232D87650D2688345BCA78F879
-077114F0463C5F058107B669566F8171E4E284D278405580F04BFFC9902784216E0C9A17AA9B2935
-E66E18A783F723BE044389B7E9D62AA36818FF2EA406C3C1A9D2F3436F3EE7DB8BE86AFA8DAA6A4B
-1B84611350D8D27605509612B515E16AA843164D5D0805E36A2B9EF74C5F6A0B9D59A04B55697123
-27F4B1B30E9587CD103337639967CBDC655AA46E80D2CFD24BEB50815B5338E522B3A7AFE8362AB4
-F05D8BC52BBA9C5089ADA8C89529B0275AF422EB540D31A938B8740860756325B966B36817115213
-FAAF92DE63F6BAE1E0064BFBC5588098B61EB83C71F1C2082436D37DAF1ACBE186FEDC4BE7C1233B
-6F18BEC5F99002D21CB7864E4811F7AB3C03003E1E4490AD1AC793BD28FCD5EF0E6CC30EF39A08C5
-2F71939B0CEF620DC69E31E39D6DB969049031B0C92EF2DB653D97F370141456A52985076B268652
-FA2648C792780BAD637C4D7581FB2D62011D57E293719487CF2D1F013CFAA532E1C2D39178D51272
-A6AF041440BCA174B5CC902BD7390C7D3695056CB4BD7791F9FB6D88E7A70DEF2C97869F5DBC5BD8
-23C517C7B7C39D624DF627DC9653EA5347BFDA80B723F05F6DBB4C9EA501D862ACE05B9DBDF21B70
-56FBCD8C6D4B85873DCEE6166C8B5ADC0316CA12D9639F361B15A42F00E1D62EDBCA1111972FA0F4
-5758BECB31DB38316F3CDFE1B41748C93ED58B67E9B57ABBED5924A6D53E99FBC9A994A6489A8BDF
-13EB685548B4DC6D62DA7426C22227D4D43B6FFC7B5EA91C896730253E8941AFEE588359C2BECF6F
-FC415B9EB6D31CCB0F6C7F85853E6449FA6D627A97A3CE8303F148393ADCCCDFA2FE085C6908BE5C
-3C05AF00A6F02840206C3253A559AC5C049BDDFD11AD9B118403B84DA10AE3C470CB9A9A2D1D7B73
-2F59F5FE146DEDA60AE750F551AAC934621B4470E1BC324C436303E25F81D0DC3188BE0D6FEC5414
-C20E4CB18952E12CB6423DF7124627ACDE145500D77A97A8BFD9CB50D1FAA008E2CE2B2505A4749F
-1EBBB092C347023714055A9B63353AF9E7FEE05BB54C9843698101F79888A91531773830C2C967B5
-88D3ACD2192883D5CE3962D51084FC653EAE2C5FB2DA41DACEFB5C76812D2EDB5B109677289CD199
-8D457FB1023A19AC67295BBC1A9A20A426B06A368DF3C5DD083CB1180D287F5500F2C635EDE157EE
-FCEEC5503447382D15C748C1E35F68753992E5C90F900DE54D18F8E1B355D1076ADFB1F3590135FA
-D1A36F028E44F48ABB149B80CA9A54614D467F8D71CB310BBC7AC7100261092DB8C5BFD39E0AC6BC
-2C9D6CBC3A8C05FF8A74CB21608EC4A4CFE4CBAA2D056DBA14206106044DECF59F957EF8A9CADE4C
-9B19D8D30DD4FDE6A9548E50DB51ACA73330142153FC36B69C1C8D5B26D0C689B7040E81AC2C864F
-D7C097C99BE5953843E172C97AB5684F35FB03A725A89DBF371F08DDF40A1531FC1B676DB0E1543A
-EC6E97D3D2E4AA3D5831D8B3C952ABBFA112352814FB6FAB61A0D680E6640F6AEC8426200CF61286
-F7422CB2F78C61EBAA36D47EC16D7FAF8B4AF31D090CDFA255D9D7C61D46CFB22A7D6E1758E71ED5
-67E00CBD8E8F468DDFB477F091A2F915627F22FF47B876544BC1F03B6BBB98385F009C20BB1AA2A7
-A78674692B8EAC2E3C8069B79E679338DA57F72976810F845BEB6B9ADD32B95D78E5E60F16DD1668
-9C05FD82D36A3115BE8ED494A74DD211D58A2CDF983FCB9CDC29BF7F0E29988FA23560EDF514BC1D
-183F3B2A22C09FB179B47E05ADEF48DF02F31C29875D1915037B19407764A4292FE44E741651A8E3
-BEB5F0D972B6327090F664417C84F84FFBF0AFFF8B1D85C822D90730AB4140C42A51AA8B1DBE4398
-4EA8566040EB8B341CCE23FD3F69DD235A080BA5C69AECB9BC732BC2D7D40617DDA6B79FB6EE40C3
-556C7DF9B23DAD89E94054B1345DB8402AE679FC4655A4A776C0150463F8DB2BFC0608EA1F124E22
-1DDAE6026B5E5D007A7E4A0D6B3B0CF3A2669E67C5E4F01551966A7BC48F2F4B6A87E740D8095E63
-F77C7A027F26B52F2299DE5B8A2F6209BCF3D31CB0235F998F781E5CC81E31DC424E008D46EC0920
-2951E5684804A0592EA47D6C788A20487BEA2EC8F2E6C1D7F378B62DB43CA43C4B366F8B4319631C
-FE9854F0E10321CFA3B01C873584863BBEFC23C72C05E695B56E8A52E89AA2DAB543834D34DCAC5F
-ED08DC51825C5257AE59850D101D84F4CAA1D29FC932F9E0EFFBF7A9A7F3685F61F0490CD3CC8988
-2DB52A757A6AF4C4E67B407BD2316B1C0FFE7DC54E43C87B874F57E4903334E2140B011484863CDC
-ACA331175F2CF3D72E0042855983AAF8853D3015E870FF0807014C31D55060DF3FE1FCE157324481
-2744AB51322444632F9AFDA6706E320FFE82B8CBE242A19DF00CE73EE48E25FF49D5871BD3E60652
-298FE3E8D400609E232E0DDC794C0579ACEF89E841B2EDCA50D51151F65E8C1CC3B01EF1870558F0
-BF5743718C3E068617E81BFE120C6CA16E0924BFC2541177D53671CAA3AB641C41557DCDAE1A3461
-47B5E999C4541B08B4AFCBC187AFD653D5B5F8386DF6AD8FE69E21BD0567DF494F736C6A184FA4DE
-48DC9F347787CA96E2E00A296C2DA05C2AD9BC423E9CA428D7F1FA12DC9353A302FB8C529AF8688C
-BB543B45B2717EBF8F6C497935F4F3BFFD285E0402AB7544B3CA4643AE5A8B5250ED987A95FC1F27
-5B9707ACD0641BD0EE2AE9758494F8D8A51DCE408A38AC20EAF0852D72D84D0C6BE973326793AEB9
-55EAC6FE0A2813A355DCD22F6F2CE56588D1C055CDDFA98878BCEB6A018DB22922D2B600A20F8184
-2E665DF41013CA0947C4237C2BD60A75E2FD1A3FB8C8FA19485730B87461AD466ACB02DF8CA24091
-4FB090B3D2B41EB6B8FF05E1A59D9FD668AF70BA5BB72778953BA55FC5F9F626043450E1D09BC83D
-8605098ABEF884639A37809A32565CBEFB3FF39EE53D6C18C58C272BB928E4410E361E59A50F242D
-69747A032617C52DEBBF62364AB5A96EFAF642D9D82BA679B1D70FAC10A4EB62FA5CFC308E86368A
-AAD7E75948F43598CD1C544A0D4091374D7E88D4522CBE902391641327E888E7748FA889DCE67ADE
-61699E7D77763681CAEE9B1CA8837B2F7EF9C18CBCC538C465C8E2DD34616953CCB6030A222C728B
-834911C1A179E2C770289407AB28B303E724D97F747D6134B425216A64C6E0B60F633E2B85300047
-E4C90339CE030A0FAE31E830C8ABA5AB3386A3B69267351A7BFDD66356AE5E57FB2994452993E90D
-E7C4E260ABAB93C37831856A650D56E44172FECA01D6C7C380F250B82473960D2A2A5FB6B4DA668F
-46E624ACF7FA0FD4490F485D640A3ADFC9F8652E7A38CE5799F770C3606DB4B8B947F93967F779E3
-A3C0572F13A5A187D31D7BD12A5C7BE23CB6ED6192086241B76C5BA6983DB9C93E4B208D707D3760
-F03CD6272EF3A4CE89B8E52E6AC5871A3D03EB975759AB4BE239E5EC7842CBB333E692CC607C722E
-185D3C39164DD320C6945629C70FF66A5237C0A9520A1FAD6EB9816069351AB0F135D90CC0982B14
-7D2294AE4A38A527EE40BE9CDE2512AAEBB590E134388BB171D0956A7C4566D65A9A041BE6C4F883
-6B3EC3D2ED1B48B566A783292B15B6127920D247D494F070BB20BEFF60640B11B276DDEEE49706E8
-B2B21BB40B7F00AAFC594C492C25DCA774E0B80D82E927448DE2E74A9D0DC7AC9260096EAF187B6C
-D6AEAA6D1DC4205B4411122751A5B22688404EA7C5861730371FFAC10F5AFD4727A0E402AB5EA757
-606B75EB86A05E8F774D6E430A1A3FE2A37EBB06700474239FB1CFA05EE44B91B82244C575B52E7F
-AF934B04EEB0D933FEB57EBE326D75821C8B23EAA85B583AED4320B7F04B9F2DC591091216FDE52E
-064BAAA9C2C9D9714B95A4558C21F3CEBE624B5403B31508F178581AF6863083ED762F1E2E34A45C
-FDD71660D626FF8648F5D6C5E580D4765A67FB6159EC8077A9F0A88038C8D3D7C77FF0926E2123BE
-874F7BCAF129D55A5B5960F824BD1728ABCFCC51D23936DE9A25C408D786E44C3A2BAFA4423177AD
-060D21D38E15E23EB6FFC0B4120E814695D423EEFC2744A1FC81B4DF89D76F0A6803D8B14E75538C
-AAD03A72517B86514F6952F6FD619D9E910D980F00964DB325318C045BDF79647F453D4A5CF4E61D
-D5359782827229310405FBCF6107C3AD9DDEF9A9A339D5D5A6EB2E7838A0A43221BD62CBDF732DB0
-A638A52016FB35BA7761AEC846A023D3BF2D1BB183543E81EB7CAC1E5970CDC6F068C5EA118C7AAE
-528D1396E6DC939112DA4460C890EAD5C01BDC438F5BB734218BA6270ADD0DC1778FD8AB16831D6A
-302B814A1A44B07EDC65956C9E6CF4875DF521F3CE5B422F71081B6D69BD270F739095C9E81C0377
-934A8BC6390C420C4E4CDD9CF7E32544C68D884E15ACA3BCC07FC8C132D8FB9D752C15D75C52C288
-57E2EA461A6FCAD90C56843513F74461F18D7164BC597A28AE4BA7C86EE1703535A9B9ED50122627
-71FC12F102E800E0E1AF7BB46681BD2B14B614CEA91B7B2AAA35235DE76C0E113C92688F8EC81277
-D58C3406778E1EC1CC15F1CD9A137C8FFDAAB99ACE3BFC782916F1A877170589A92DC921E6740A22
-B84DC6BACDABCC76E64C79E3A588D80F8F4D376E1B426F15751CF7391102102F0AFAFD8B22DFDEB5
-48AEB5F30B1673023D22054A13391A0EC08DE6E7B685A0D031AABF20B7C62187C0284892D5EAADF1
-21BA28263EB863D5E36EA9C06A77CCFC0E17F593961591F84D82AF823EFE41044C8D606FEF83CCC7
-B0E961E7994DF8A3CC36B209D953E250ADAB8D22D7F2B4E2C9CA39EFA2D93E56195C1560E30A5190
-CC5B17FAEFCF250DF79F6B624A4B917E11C332222FCCFEC4F6A47BD9E75DA9854FC3F7AE554E91ED
-DE144D7AEF38A0E3EDB5E5A5626374DB94F022C8CF549093041DE00D7269B7CE544E748439BA2870
-718C08E58FB4A77D93EBC04B7957D272AE1601D41BF85A2BADAA0DF73B0D3841D4839C85677FB2E1
-5F1D6CE592669FF4BBC9C69DBA334DC37706F2F6BE83D5863E8CD6A30C08640AAC4C233684E66B4F
-E6B62D4A8BE9D531E47BEF5640D9B5C27D990092BE1597F6995C8A77BE9C18AAE6C1CF130775DDAC
-41D34438FC7AD8E042CB56CBF2944932EBA7D053E9376FF398367450E35A1945FE23E05C921096A1
-5454721FFD0F429A3E06DC3ED36F1C170BE79C66996EF8337AFF85B90C5D3A4A94455AE9FA32E211
-7A63E59001F052D5F6223125BFAFA40901E98960ADF7BB886729DCA82FC3B8CC52B37FF2517299E1
-D769057F8154FB95582F02CB0BECC873A9C71796ADBD3E91324FAA94F2C41CF57C30B5897D031C02
-D256C909E080E70BFD1F32E69EF67031138C2DDCD1A8E4B65E485C23C3E450ABDD9815512D6F34A8
-4B9DB715DB2C7A93BFB424316E1AA44397749CB01088428F149A3B4324737ED9957FD388248462AC
-1B2610D72BF5C073ECA567E7385CC959E37CAC7E05470160FFA5A9F63B8E9B082937E911586EA165
-374938F492EDF28CE6020953A5B5CCEC7737F9D9CC8538C4339567AAED3794ABA3B9F4EAE65466E8
-E326F6C399B36355935FBDCB9972F10B13494DC25097FCEC5A6398F275C8C151558E74C5175F7BAF
-4155E36B733F75CF9D5C5979B0764F14D8306E06BA24BF791141E404C69F3F8FCCD91B9C58C2C671
-AAE7D4F9E5D6414E46ED633A5F78AA5BF04E652246A066EAD9E582B181CC196EA2D3CFAA383B5D0E
-4CAC9336E119C08CC6AC55CBFBAE147C623B400453BBF447E96DE036FC025624384359EED7C7D5F7
-858DC0521377CF647A157FC3F188DE5EEF094DBA125510FDE34C570D7BE76AB5DF0A28BF45DDAADB
-EA7EEEDB936332DFE93081E0AFD3FDD46BED08D6914B2EFCFDC41662A33B90B03D76D34F48D30FC6
-BBBB600E90E6AC7243FDF026762A44B4D6E4ECBEF48C9D7B696AF29EEE063E557D8FCF0F09E0136F
-45D17E608DA36E59F2AECF8493F8D62536119B5F7E1554DFE3F6E8D7C9A2C6F557D18B4AF92C9F6E
-050975C3B5C54F9B5F4E39D600B6FA2CD6DE203A174028CBB2A201AF126D1013C229BB82CFD013ED
-199D01E51EE2780FE896E01C63C655087A3E61A7F1029FA5E97EA1872F1B45F22282DDC317E17926
-7368CB52DA9444F6055A3C653659CAD2A1D8712BC2B1B32C1DC6906D957FB88524EE066156ED6BDE
-B8D832F9338F9912E29A250A8C4674E667C1C278B677AEC9972BE83CBA3FB779893FCB8F81A323AC
-91474BA2A2334A07BB5628E905C518E634F6761A3289056F83D5DD7B3890987EEE1C18FB2D379CC1
-905F1AEB3B3D2AD578F0D6C845D2D40C4BCEE3F71C90E68E5417BB8CDDD878D83BA80AD8485F4067
-E5C3CABF28AB56CBB219C0AAB8FFC6C7E192BEC8CBCA1459AE4450AFCC81B9548F40CE2622E5A7C2
-81F74DCC02DAD57EFD92D072318DDF05BF42F1EA8163071E23949B0179CF7DE64677CA99B23CB926
-B3E294194EC13397EA1DC9A5E1CDCD828156CD71F81B64167D4FB01E6002713BD8AC6F82B20CD369
-9C6CA4704DC5C65A2D66EB155B7AF1C9BB46469416FB49C1C7E17A30A5F045271D7DF3FFF2F42C6B
-470701C381E3456A500C6BB3D0E47B4D91C5F34B49BB6272F1F8698B307D89EDA3A1565DAD1C0864
-627560CF922DCF5B34C67860352390B282F95394AA2CDE0E97CE3ED39546A6AF1C52BFCF81A29BE8
-2C47C99E8050E4889E4575B75F39E662F2DB7420673797E2ED3D67CDA7AE2C15D0A0A794D57D168E
-BE13214E89E0209AB2C0EB7784E9491AEFA3C02D0DF3AE5365A0FC4AE023CAB528162C7A1B173664
-9DFADDACA8DA5FA18B7D6489E4229E9E24D38A620464A744A5C60F6F9D334B908706B738AED18669
-8A8B278341FA4D65A0A88680BA484694921512F7DE93337FC1C02BBE6E64AF2DAD07603279D87329
-1D1F4D39C1DD6D89C90F65240F4808F6F1115CA55B88E242565E59F3BBF1F10EC7B88872E9AE61D4
-4CAE185463EDFAF7DF63DE4D2207D307AFB61501892965170D2945846FCF5973A1D458607F50C15E
-06E5BEC715E0C156259AAA6C735593E5564F65F443B78CC7512EC35A56F126DF9D30974A40872E42
-65E1AE5FD483CFCBBBA26DEE426CDC4721F19C3FDA86ED7AD4FA1120F63669BEFE7002B128CEAFD8
-C63E8AC09943B6CBDFB3D2476A026C00A8FF81B1F651B97F310C82ABA5F388CC1DB5AFCFF5996D52
-52A6A42FA4D972E41EE56088F78CB966F9051171C472C774879AECFFF08BFD9CEA40D7C298922ACE
-64F28C14E0B81F4DCADE81D71DE3983D87D905192EF13CEE71B2D3FF1A88AEC671EC318917DF98A3
-C9054E372D22A3CEC82FCC217F47319A40900312F6E32B536B9E7A7FA0837EC65CCDB5FB0D414371
-17596CB39D9382262DE6E65379D3A9709B2CFBABF5FC5D5B352425F06F88CD31012A2A4147B112F0
-C1C0ACCC808CD625E0228EEF66661F70AF96D3DCFECD402700E4F6522AC9A856DA466D55C84F65BE
-2810A1565163872D62EB81333A698ED7B68352CACCA2D7AD38AB55C19E4F5582F75818302F5FDADF
-1DCED09D94872F2D48FB636C8E38C7563C72C771A08C6B1F041F3532BDB39006C89A33C09BE1E3E6
-03622D891F98010BF1DE5355F557A1E09448D486ADEF565705277B31B8BF2B86761E32631E3435B6
-88B79D566F1747BA456DDB43CD239FB47FF7B425EAA4C657C8EEC26EE01AED07CF916E77D53634C1
-37AEEA009C6B515B6342C54BE2C7B95955B1A9DA277A0ABCDA2346E88018C726F481F71D6011AA42
-F8852F2E5749518FE3B3AB668213FE1A05C10A1C53953D75312631D6BBBA01D418199DFEFF8CF548
-6109B099FE8E2F606165FE30F532C03567785D5362AA873C9D3EECEB20F1945D55F49B0CCAC84967
-59FCC7292E46938943C262D78F3212D3F9D0F7B103157F423D71B1ED54B2A603F4C269029918F238
-EC6828FFCEC66009DB9C9E59534EABB183F31D7AD4C57B1BDF0BD2CE5A421882BC10CC1BCE6A970E
-2B586BB221567CCA483989DD0B8DEC424C1D1FF042DCB7834423CF244EDA28D2D969B17440CAEAF0
-24A6119DB010CE366821AFA424D1B8299609C04148275AE6E5257A7ACB3C766C747CE99CBA2D703C
-F19B7CF301B634D8B613DDC4AFE4633A4D77BFF8E00CFB5E289EBBCAC90A24307E7941EC1685CBAE
-400CADD876FCEF7F6557EEE167D2035A05120293527700DC510B038A496BE1D5CBAEF24ED39F7421
-1A93AADF22214ED606A80582485AFE358E3A46D0671148998A3B3BE209467009B43400870359D418
-9A8CEB4D5866AB52D16D9CEB1EAB71C07E6CAA34B70E3096BF7604C22C40D5FBFEEA616DA3BABD59
-DCDB97D883FC8742B8267A16A99B7953225F7144568D566E64542C92E538AC140C851E5D295528EB
-7CBB49909B1CAF6409C9BCCEB325468FA0B5F7CB2987382616B477CCFE4F4AC79E4A6F7165363543
-F04DE5B6F6E1C2E910CDC3CDD6C4C92737198F892337DCB6647BD226C820AC99C65D8E7772BBB74F
-E65DCAA8A22C33BC168BF48E40A82700A3A7668C5A9A71E397ACDFEE7D556C5C19467B7AA69C260B
-727407AC837BDB7D67DEC055C1F45D8BAC61048C45BC9FB3CEFE7549EAA2992D2EDC126FF7A05EAE
-58613332A2BC1465B2BC0429162B907D65F793D236EDDD8D35405866D71B25F62DC4A7E06D4DEE82
-840ACCAABC0774F8A63E9C0F7FC980B3583E7A8B01C46590E3BC04EBA565C2EA94F057D964A78A90
-EA9F52ABFD70F84E44E434BD10A42E98C794065724341F907E35D3CB257161E01C7084E3A0166D15
-CED65DA7BA87DBB2EA33D39BD99AFB93D3548358D08330E807F8552CECF63C84F805205491BA3A1A
-622E70C232FADF3BF2DCFD6F0539158D3306506F150B0518371912A25EB96163D73E9EEED42EDC84
-D688BC7F7708D9DCA348FAB4DF62E5809BD094842D0A31DBB7C4B41F94D946810C5EC10B69AABC2C
-91A59500B2E5D37F4755DDFB7AE4ABF757F4C5BCF77C7F95E6A616646456FE8F18407080BCABBFA5
-7704287AD26222DF91AB2613951E2D679472F8ADF06EA2A20205EC19972299A78BAC52114334470C
-5F5890C2F846B4C6042D73945127F2E3910ECA1C4CD7A16EFE4B4BE38A15AAA710682C3836A8CA83
-FD384970139D8B46FB0AEBB002DD224199672FFA02250FBCFA4E649E335428FC71F50F45E498419E
-DB0E970F46894A48F65580881C9C4250FCEF65C9B28699408E18B26FE6DB7F1CBDB767564E73CB59
-54C6D639CE33220C894F36E70F71C9F9AA3FE2AE0AA0E3F2E304EC5ABC661675CDE2E70519E4220A
-E26FBACBD01D5169EB844750753E6CED53E3678FDCD08AB93E10067E9C64F38B40B76D99B6CD92BD
-F4155A1EA5CC824998B59AAD06E09E5F15EBB2288D66EA71B296616734FEF2796F07FF0D8B047074
-A1111D68B99C2B70FC56E74A51B062F4998ACC85B1943C9477E436E5CD7AB18DBC898D21BB93475A
-623BDDA71D7B895BA2D4C10F4B90BF335126F4FD57D73AFA50170F6B3C364922E551D40E35DA75FA
-891762FA23401D39260F2E92C7807C746F13BB35CEF9DBF2E76E66A72FEFF095DA482A4DE8A42091
-7065736CF4DE904FB52E649A32255E2030A7B31B686353492F31C064A3C4B0448C4BFD44B8E15384
-FD809B8761EE26A7DFA1758D57CE4F0BC376EB2B3833534B15A83436BA553955ACB5A7A66796AC5B
-92DB5388BC53EFA27508B08E82821E5CF669BCE52BB860780F749B4F38ACDF5FF12726BF3EC2743F
-01014CDE96FE6B4C40A034E9EAFCA2A35CCC776C2669E6AD138070A40F48ED79136D7FF57E993E09
-B81C543FBADD350FF5B5F7A46F060F88E30FE2D8233832D18B6C323EE017EBC1DF5C838321CDC8A8
-4CABCAB20B60A1A3AA028F36EA6E87C850AF8AF7CD50AA6359038BFA8818821D02CEE8F51DAB8C05
-F7AE9797814D97F3DB8CCDDE45B21DBB15CEE292FAA534A5F317B357F4091F3DA357325B8B9F5EDB
-45865415973C143E5E5BAA483FBF2D06CDD4246675EC58B84C6AE65CA743117FF00F229243772561
-31A7F2BA26A9115AFD96C18216CFDF41B7220ED0CB3FCC26C36380007B382A02AEAE428887DC8BE5
-FDD630AC57EE3DC156C7B8B29E687F24442E35CE10BA4087295A641F7139C831F7CCDA6CCEB5DAFE
-537CC1A97C5A337D3C48A6AE947F58A30DC08CC7B58DBBB4737AD52783C573FC1E9408F55495A80E
-7FDA61F0B9C4F090158F1A416249EBBA936C27BEFDEF19D1BFB839EB70576A010706D8B95657B218
-9C2AE04C11EF9E57FE09880273761FB4302C388BD608FA0C7F00F033C9C00F4E3D5CE2D903E0DA52
-E69C7745EE9FA75E2AD93DC6CB5CCFCD3782A699B807AFC36AD1F62B05856D5DFD6F88831B90EB3D
-CD523582A49732E3FD7253126D39E8AFB8458B5F7AD7F94A8DAC13365F433C857AF4A42C0A08C4DB
-9887C4957259ED22D13CFDF5995DA957EA5A0F620B0214FBFE08AB6D552DBF048D62CEF6EFF12F15
-3511ECA7833E0E3E95F85E6AC0F95438AC4C126E1F1ECF336ED31CCA7EB216D279877123FD9FCD8F
-B5E52B587CFFC4428456DDCA816819A8A4A211D8F1629E5D42BA4C5C356E580C8A22C61D987552FA
-A97893816DA73D423686E4EBD44375C257F031318865A20F22115E72BF1EB9F93AAA169C140A33A0
-6C35BD4526A38BE79CF40AD1EFA10411E8F3300A8A8B97AB140EE6734E1BEE6C8EE443D698D34159
-97649C6F10F20ACD80236422E215E146D744A262DA3FC88DC0D86FF66512F49D3F957D3C5CFFEB42
-4823509F33F155057A4C6F37B52F4667767BA94F6B8B62856B553F307E5D230C44CBFDC9A97A45B1
-39FFB2F2565EB0E22026972FAD0FB7B9576FB6F368B61979943A398773600E7EE1DFEFBF26D45D40
-BDA66EBB96A56EE9CAE0B2420C5DD83E24DBA9FF885BB844BF3D2BF93B07325DFF60C0CB5FDCCA0A
-C8FB5A2E119D5AF26E53AB8E3B428481C2871DDA26EF0B621CD8572B3C664BC7AAC01A1D05B98F79
-1A7080D294BE81099BDA7982432F3DFF4775C44D23F4F1B2E0162B61A8B2CB5EE8564BF98E2ED403
-2219085FE6194C19DAC98A421826CAED7F1AB1477AB327506010217283894235D7DBFC1153D5ECC4
-8AA7293F19592B4D7E95FE55151889BCD1D7FA7DC2370D2DFE11D7E4EA34B5C7A8E73BD3A348FD38
-9EF45B6167FB90BA44C23E912F9A4F2FC0427ED070592F7110183BFDB2C400393BA7569058227926
-351F07FED4F33633BA03A72AA2DC6B598E49B96021DD868DAD0F352E5722FB714F667C15C68D49C0
-3D822D82677EDFE86FE9668E537DA284068C9B0AED83074C92A5B939296D505B837E6A9DDAB1AEAB
-7455A08A114C2222B339284674B74BF4CA9EE0C020BF2A148B439C71C6BE51A94CB64FBE4A7EB295
-5A455047CF5CB348B062ED4F6471CBC3E9ADD9BE9B96879AC7BC71BCE02FD02F17C6063985A5E898
-3D205AA1489DA13C408990ABA1C54F2F501AA172F530480D789C848118C0A74EF98D5F607A067BAF
-F6030D887AC6A6497F9A0B38F9705F328AAD4BFBB634F739386177B07F22D5771282444E5EE17335
-B4D0EC86117C697E79A5F4F65FDC08E4904DAEDAB20067EAE2448FD4301849E456D085F392DD1316
-7ADF75CCFDB723E2904A9C0C976D6B84DDEF9D92B0E15FB246C3ECC2D0BF314CFB957757B3A3E8E5
-801F520644E4601D291DA0F7507C06F3B9BB36FC1C70EAA444E14E56C0CFF06C7F853DF36DA9D8B6
-AF2544B853DFFF535A7E5C6FC145250CDDA229956019659D0D253A19A7B51A4E538BDC01F74D7704
-9949C2C97C7EC6392C2E61CCC0992B66DAF1AB08551063E53180D2A67DE496716CCBAA45462D9F91
-B66A22545962DDAB120511FF08627131B95E5DEEB8B4DD9643E7B2AF65C0FDCE11F5F1E8DD468DA1
-8D41C8C4F00EA73836F4F70EC50FC3EC6D358C0658A4261C6D15A582A2C7C994E7882E661855B352
-014576858A265FFBC425160669CE159D07EDAC04D060B44E5800A7AAE8E339C29B929AA81D2F515C
-46229D2080D5917AB20AB6B34FDCA8E4AF64ED660A3173786FB1A1D005D575C2A5187D3F7CFDC94C
-CC44A38C5CD523E9DA726D8EFA6DA7B6131DFF3435FEE838B2C7D6B97934295F06202D307FF78D90
-6699CB9C5BBB10D1D4DEA5FDA5BFB094E704607083B646D37F5DA1FC7AD21B813F44D8C1AFEAB666
-55AAA19703BEA2E77DF3BF350E17C74B3447A452235919452B5175570A006C7680AC05E8950A62E1
-1D7E3ACA35A397D1E19630D094A86807593C97F4C484E4E06BCFF708B6DCA972E3A0009E1CAC0EA4
-141530F5C1B8AEF5E1B933F37FDDBC4BE22B74FE346D1A3F5FEC0818F8E61765568A2AC04713E828
-F98C449D9A1CCE52D10D61DD8BFD084C8D099A75D89DEA64D5A7CC68BD5B0593D97953DADA976383
-F5015915618AEC56D71D1DCD55B89736395C609B315A3F1E1255432FDBD37F38CC43C354FB4B7C44
-F1A7318B0B7E99C3C08C33B953727B6A6328051783A0A33E3CD9E498346A3CA6A77B517096EDD52A
-E443B87643A646C3A7BB97F742888D33F9B3127E61942F4103C1DBDCD8EAC8F9E259773066736CA6
-53CE57E8822651261D847C131321BB9D6626A1AC50D047C0BA47B411DF2A995545BD68EC0287CC9B
-31D5DDCA8755EBEB10ACCB3903AB0FD5788E984220443B8459E7C078DA4289F1350905881AD6DFDE
-C47302B0ACB0D4AF8CAED02B4B70DF3CF8FEC118F0FC2D3DDE3E494CD160E676E300BC464BD4400D
-B50EE43B314E0517037BF971ACD7CD327CB2134893B8A0410E68DDC518F5DEC966C7884CF5FDFE74
-723177F20DEDC039D879056CAAB4BF045062D3904F615C5CFE109AC7A35599C94024B41019B9AFD4
-04A80ACAA4837929F5C9317680A13D157A03B59A5588DF79D2E113F5F51021D6F6F90E8BBBA2C252
-FD10651BE80BAFD59C53A3367BA3C28DB6EB9DABF1EA99F47B503F627E15DCF3FD645FC52C5D5D0F
-2F07DB4C25C0D1E1C00146E1C4D973E613CCDBD3F9450CC0F5343D79F05E9492E86A1BB889ADF405
-03BD7F3E7543436859184A5B20BD8A172F350D846B7570803990ADAA48D4B9155A2B4C4BFBEF1E1A
-065C08E03928559735BDD442FF1E83E1FA20A5DA57D8BDB2FF5427C034CF0128AF111E6E73099E04
-6E0C240E80A73D7BE72B87834E45898D475521CA3306707631F5C6136199F354632D1A085F12A1C7
-C473868B62E534D15F5484323E63D0574196A19EF175214EB35A90873EFCFB92D6CF68761D45E37E
-AA61E1A1979A82009507CA193E44B36A806486665CEDBCF387053ACEAB979BD35D30978FC7659ABB
-E844F4ECAB3303318ECE80777A5FA5A9DD91B3D06804C4B4E9B4EFCF07EB89866D0DD8CA390CFD15
-98651417114D78776B1A1D36B4BA17746D6BE7FC123D473EF1EFED1C3BC1D555F914536869FD5B0C
-35F9C83F65B0E6BF7A627B9202D787D72C600DDB6BCCE613D88492E13CA0AAAB196E8A49928C62CE
-A4FFE2D0208EDA334ACF47F20BD793124D2C5546C03F4A364369A76A0425262F9D9118AF54E37D32
-E33AB25DD533A49DF5FBF1BAF4CEAC2D9D378CDCD13B00FDA432D9042F623DA41AFB80699B5538A2
-5403B0B3EABEC9E8EFCF42FEF3EA9F91766902CD206B0787C187D5370B60AD6DCD002DE2DE8DCDC0
-B4719A797C5E26BAA67665016DA0D967FA1346F9588AEDA174CA001B31213617FE19EA218EC23597
-79D979E2663166489C06993230B0D07973A117C4E3F4A4C93CF8428248DD5389414D679C69644142
-67C7FEA17E35B0CEE456667A9B1875C81B2302BDDEA2818D6019FC1622A82051F60584ABC904CD91
-8676305DC03FFBCC64FDDAC8D8AA9CE2EA00D6C97BC63C8A617DEDFC0E40775649438E9F61AFD179
-5E3B20560B01BE5E0983F136CF48AB206954E41DEE0D9DDD953DFD01CAEB569151D6BC0DFEF29D70
-FAE3E198E7EDD8922C0E0BCB8BCCF1C016142C1A8B337AFA7A05A9D7534B184BF3BF827F371E9BD1
-9A71244ECA1BA73D484CD2FAD54DB2F0EEFBD54B536EBCB5094E6BC2F5B2AAE41F05B4B311115876
-ED42C34F8E643B53372E3F6350DB8A38445822EA9A33E27FB0CC42CEDCD1FE2FDF723FC47C996EE3
-56C402112F24D0AF899B2D00BEA1CFD427998BD22B2A09046D6737814448ACFB10D387547D7009FB
-384AF0562C85694C071584236D0F1F3D3FCD0CFB38B77C81889061E668BA7AB37AA60F58A3967DE2
-6F939B79CBF10A9DCC42852561D8D6754F1B660D216AAB1E133FBAA321C56E2584BE5C9BAE20CCF0
-0E8DBE6D9C2FCEBEBAD945C3C04101D2387351F132628786F6D9D4CAB83419288D31F9BC600D9664
-12E6AA457CE6CAD26A4C0671097B98C2384C81DD8B9A3222D4F4BBDA7017895C3EDC26662779AEE7
-40D9D7E24185FB821970B0A3A94041A69E4805EC88EE1EE521981536F2844FB8F5EF645F67D42CE5
-148E2DDE43AD5AEF200EDB3A2C7866C98458A92666E5F9E070178BCC39F65A893102A10564AF4E8C
-AAA5075D2F8CD7FAB0401C03AF299EA3515CC93066744EB5AF7CF0ED06675BF049A6E3C211A89E16
-DE5BF0445A7CCA6EE8EB0347454950485D884606651E5887FE8B24323E2AA16DE22FC1FC8C4F06A8
-2A1FDE5758976024068197E1F4506E4D3D8A16D40461A4586338B374A592DC60334402F76388AD6A
-457DC3F54E6169CF7AE3959676E966A45609621055EC3AF80E182633300A4418E34A66DDFA6B569E
-5A13C9115B5FD3EC1CEBE50FBA247F60803AA83976F00117536342DC3D9890C49B2AC701D370E43A
-955118967827760F7091469C5406F08F18D7E3548148CF0E312B1DC71DF67A5E7A1656CF2F47F3AF
-F3DD50FFC2FCDAB7177285B29C17CA43019F62AC6FBA52D1493ED7C427526470ACC8389BAE827759
-4958908F517B2863B83292EB5AB3F57FFFB08393CA610FB1FE905D88A0A16AC395E2A2A6DD033D6A
-0D68992F830B2E1B95FE357BF672716E88FFB92FFC3D62945D1EAD22BC68C51EE0E10A43011DB94C
-44685A5C4576F6EF44CBFB45F2A4BF110A01657DB51FD499767E78058199B31DFD60813F1A344F86
-289F9378231D5B151C92385E3650B4FEB1DC91018EAB8474CBF69FDC1496A4D078D2C351C8196451
-247A9DCF8117E5B637371D8E22E248C64D999015C3FD2311E9950B8EE0922FBDD3D7BFF766BFE9E7
-CE0BE12F318FF2A7B5A9C6D00A54401609304ED2C55F5C1EAC3D4B38355BBD85D66D61636FA6E30C
-2E82829376BEC979A6FEEE040E452359768ECF90CC539A546F17AE906C76F14F86FF697797322B05
-1EB311A759FE260C1EEE5DACF383816AAF1294CFFA7BF87A4D9BC595EE8F2C2F86FEEE11AD959D86
-F22FDAF4CEC098942A57E57813A0FA99239E994FFF353C1E781D666B8928CFC648FCF0869FC68468
-BDBDA7D280DFAB8B0B3A4CA35B074B686DE8D372C61FB32305169A1A9912F6541DA16CD6316A6EA4
-51524757BE5CF6E820011BE3859FB8B8578C100FF029680E05F0E0BF11D33FE19460C85EA5E4C0EF
-28E29407C8AE6BE01CFA0D5022BF9FB01416FFF722A784DFC8FCE330EC95737A854471D334FDC58F
-AB42867A7B62836A8B56466E9A6C1247D46EBAFFB905CD4321970F59FB8D6FF65FDDD34BF913AD32
-2E68455C5FF2D23C1A5EAE687F259BC982B6A384D35440F7C693CF50B9ECAC0B5578CAEE87588B56
-2EB6B7F42034C9F2E545EC866316552354EB3728C7D26527ED75174EAF635E048B08DC5D23E88981
-070AD5641A652F2344956E9CF4C16E652A99F4A644D1787D6D36537489DA4D74E61B2FC4DFDF1D1D
-9D58F9C26C5EB63200526AFD168AC57D5611ADE4D4A382FC28BB60F9E7D626A6C67AFBCCD1183C5E
-3CF2EF210D0BF5CFA7BB10FA3887BDD4CD96EEEAA8F9219AA2F10ABC0A960C3B57C0EC0313AE10CC
-FF1F522124CFC8D2D49BFBB0C193EAFFC5B48FB3FF30B21CB76F0A4C0F1377C9223145BB0468A5D7
-1B9BC25873EA12E1C60334571C67385C00D0B570D3FFC6C7FF0DE62C183C76AEEB12DFFEE1459E0F
-C818C621B8D12FA1357E2B55D48935D70BF140B4CFFE8813DEFD479350B20DC2EB1D3CBB1A2D3DC6
-EE975D58C89D61FC50E6A0197DA9A586B72255023DE47DABEFB11E8AA02414C2FF6258A281219B9D
-DDFE41BA7D7977D0D6F18224FE22F7D4E9355FDB35BF7ED3418F4F68D093AC48F7D8FE4194FEB6C8
-0B9DC1F74E023C604DEA27089F98C3973FF9F4AD7BF7BAE601DB89B08D5D8139B95EDCF6C885FFA8
-B3E4B0477E7040225733826BACFD1EC4A0DD72DC41734856AB9FB700DF83CA2CE812913BD142D84C
-5C83C0B2583768198AF9E885F2BA74877A414233207234AA5F18840557CA11682AABDE8993533887
-7C6D404BDE4153C9827EB16D66C1D73A8143C8A2D3604FF72CE579FAA3C5224BAC48EA83BA848429
-9472007DE96466B5B29ACC7C03B05DCAA38A48BFF9F214DE43146AE4E04FA705421917F99BC54533
-F0EBC01849E396216B9F0794E6F6C6B61B52EF1B1950C0FB609895C3C55FF574163FC8B6B09E66AB
-AED1810E698FF37CC1F926B2CDA3B48C7D77790EBD2D514B6F385D397F713EC3AD3954EA9C846158
-6031D369E8B99E53408A79D64C34EB5A56DE8A67DE91837960E98A66FC04DFA0EBDE21DB003234BB
-78665B039D0A469A0221BD541AF7149A2A659C300132C14581EF766FFFBECBA8B58A5EB3F95446DE
-F49AF863A8113D17B2E7E6ECDEAFC3834D4DF900E3475596E86FBB4E2974C090DB4AD61A737D611D
-92B4535AC291C56AD8B1C031D2F9B505BB77517B737D70AB3723DB52AE2ACCD5DD2F617423ED3CC3
-9CA882EF41757BF7151806A9B8B0F312808863E3673FB54DE939B35CDECA7FBC4DC3BDF5A5F47D35
-E345916C39366C8B4F439CE1C6F1835C320BD1E67375B03B5DE18C93256F251761A4C8CEC01019C0
-68E34447BCC503B9571FE8000627A6B3DAD5854CBC0A2D69E5A8F46BC78F6A7B1422334EC7A98ABE
-FE9B83E01DCF3C6C9273B346F3240EA225AE4A4083CC7B0EA141A0773FDE940768358EB4B13D82AA
-304A1386D450C1C0C6A7D5A8FD2BD313F78F85248B5196241E31E5595F3BC01F37700A2DD3D4A0EE
-2DD01A36569CD507130E8F5B1E96CB560BB7DA15560CCADF3B2C9804A11D9E8055C9EC70E48C1D21
-3EB756A1376F2EDCB7189D78CD3D6CA5865537EEC31C17D801605EFD860B0B629472690588D02575
-02C6F7A75B9A1C1B397781329832CF3EC43C09F1559CD562C48FA9500295CD3B0A790DD3FCD4684A
-7C7AC49AC9BFFF36B39A9FB148BC28D37907433943CBBF0CBDAB46D3EA86DC8F81C859C52D15302B
-94A9B51C199B7104DEEC9D769C2634CECF8B700CE9C04152CC59C9326BDACBEC4312DEED92DD087A
-1C4840868D9F97CAC046581F762F75E8D24D6445370A3F1E0AE74A6478D9DAC37E7FA5BEBEC0A1E0
-81AF89C1BBF7F51E3E2E22C8C405E8671BA85F1BF0DF79A465DAC7EC07F731E00632E017D190A99D
-83E27E5C2E63D7DABBA23B2E88334C63721AC5A4CBC5D45F4C177259F34C2EADE01FA008AF65EBC6
-01D8DD16436D86AA94C99F3CC0A2F87134E73BF22F108B825A8963B49C6C685474AFE4A542C8641D
-C0375D7EFE9AC1168D9700459BE52D0DA399023E141969F25C0DAC4668534B6647EC85454BE945E8
-26B26DE6E3C4584B97A38E2B40A0D23481BCA78084FE80E00A71A790BF31DF468A435ECC88E60A57
-860BBCA3D65930186E9917CBD209C230E8F8255A7ABC7D3F043AE4D7AD63D9980BEDF062B7D5C298
-C40225B6D03F29A0339E0FCA02138E526F06B9EF47F5E7A8068A846CFDE2BFDEBD24F5A73A66C079
-18662AEC80B43246284FA4E2EE0D9AAB172B1E59A6CC46B801149D8C0DF6DEC9A55D8E1B0EFD9D30
-2FF618075944CCCB6831D336B11617107B0530D09885E5CA11A5F1FCC8D69D603DA16BEA51116D42
-CAB1AA1E4D7B9B4D79993F2BFE53EAC904FEB70B2D330A89780EAC10D12CC0C35B8399F218AC2976
-E57A26BAD20CE2FA2AE2363D3FD2A8A971747556F2959DA74A8963C20B504711AE1CB0D0C02457FF
-2E9BF696B159AF031DD5155F21C0F5549B0471A3C5DC8918B675CEBCB23E29322B959ABC05283A70
-2E878DE8EF25EA760F3C5C7B7B49D398283DE2ED837FD59F7C22D62C58FE4448B1049FDEBFC8787E
-67D7DAFE9774979BB3802254DA59BCC0219F98C219F84D995CA768B8B5D9D4A32525DFECE003675E
-E4BD5D8DFFC11025AF2B468F9207B5B2B42349B98232BAC0759758C1F4A283405815BD7145C93FA0
-8F3ED2826655053A3C2559073D8ACD199DEA2C5BA5F616A2E48548B4370EC73493BA07E197165DCA
-774438B0766867819C1154D1959FE6E01E6312E0AB91FC2E2BD240FC8652A2D456A1DE7F34EF372A
-53794D4C4E050BF3CA5B7BD2F1B8DE93B4C8002485CB219AD2D029739FD3C81CC6E78EDF38723576
-1A57143EEDE5CC887F282FECD261F6A25D0A7E154ECDF5DC38E426811BE86AAA458577E5E0C5F0F7
-5AAFA9C41E5D1DC9D91ECD79B514F8CDF7A5F1A189470D35FDF4F9B8788879CCBD91B427822ED658
-389E981E0EE5F7FB87692A3E3E931DF8A1D1573E3B0166204240B7080089A09EF7487C9AEE2D665F
-5A82F94C877FB5B0DC531CEBF1E71C6592CEA2401E4B5122E5091DF03D203DF979B9A6EFBA12E2F6
-B422FDF15D49AC0914D372D21E871DE65CBECD105FD4A3E4714B9CCA5C6803FA39DBB015EA8A88BE
-7913502E562E5B170B87BFC8572DC9DF49AD63694311EF1334444BDF0B4CA3245271C1F7A4D7FAF1
-703E3AA0E1EA8D5C6E821B28707EE0C9B4F22F23796FE87356C58AE2CADC191F4C58E1FB58DA03B4
-5A25AC95DBAE13A293474217BDB214742B9D9D6AF35F70FED2891942EACE3E625E55FFB820543FBB
-250A062D3D395BC0F219ECFE0D76686AC148BC41476A887BC494DDBD396BE200FD3E03CFA12EC9AF
-6B934A283C42AA05589AA6B4A8D16946BB51F50419CABECEAEC5AEF9085C9989289E9B46BAFB6FB2
-782D84DE2B068F91A9744AAB237CEB1BA513E57E4C307108E993C972A3E0A898D5A8D27833155031
-FDB98863C3BE7FEF3004CBAA5CB60A1F2E3EB4D7290FF5FAFA088B1CECCB6CF51A58DAAD998F0839
-6CDFD68F5ABC9C1CCB8F6514107773C69C26873E889D1F79D10E866910E4684186FCD71C965ADF62
-39BA3418B313A27AD632300969B6F284519366ED85E7CD968D64823F8C59B5911A72D0A20EB72B60
-3A61E36F52F256FFCDF706B4560B4DFA5D918FBC530D83A4B3C01BDD3CB4572E24242D141BF9E775
-36693A0407D002E09CDA5B195BF1CCF430AE9824C07928A050D0B460F2704BE8F9E647A4884C4567
-0A81EACF7CC038643EB0FF18A376FF6F32B6FE4F197273327FBBDEC6443A299CAD4B26F7778A99F6
-5A11BDE047153E764039EDB251936AA43DEE50DDFDF8856519056AAFC4C5AE6F2051AF0579A9ACD4
-1D00775D7DBE70022CC263DCA5E0A25B9C7C4F5C418587666B2FE24816B1E0EC92F9074F1403BB83
-AFC3F1D52CA79C387BDEF864366E34C90BE52F7AA09935373A07E4E026224E76F9EC3CB9E7EDE50D
-EFDA48248D61F3CEC880A3B8843306375D9711E58645F3625BDB8E87052DA67F9794EF4AF8DB0BCF
-E00677C3A26907DC651BC838C40EC39E2B5A5DC0DBD345944A6C32226089D63C52490FA10B215AE7
-03CFB663EB8A47793B84CE7364DA1C4E7FCE32DFEF09490121222774915BA59C78C2275F829D15CF
-4D8686B095C38C731B83D48738C25F40B8ADD487C350A2EBE846C3916AE384CB1050F9F5DFE09FCB
-D9129C6270FD86D55A459618FDFA4F907E6B4746196BB717865AB378414029017551161A52E9D24B
-E4F7EED553A927933D4ABC8F25DF607779A717909CB4D810DE8F5762581900E224E4B91598149BA4
-71CF8068ABE8744356B261600BFCC57FB8BE45036CF6571D9B2A95304933BD4F17215F8EF53F8E08
-1AF61FA7F9583C34EB5655CB0ECB82246959F09091F36989EBDD646BEDCA614B9A61AB7696B3FF18
-1058A150FA6EC1BE2EBC7F64357A3FF2A2B0491D2F4E0B970DE5B7788B467CA678039B5EF55C88A3
-84578D427FD2CB16C87B0BF0A3D37CE8ED43E0F049AF2436344D5F47C948C632C94A287509282561
-6C64C5D262FE5B24916FFEE982A69A6CCF888BD01D62EA591EEC51F4B7DDFAFFBEEA93FE08D736C2
-0129E345D06B10246A5F57151C198D407730713F32299638EFBDC01367E23EB59AAD42A83AB41B43
-2DB462652E29813740F4680A5D4BD47B18328FAE6BDF4200CFA4CE3773809B45E8887C9B2E423698
-9F6C48D64F5986F563D9A7538A8716082F81936AEBD0461E6F4BD470436D8B7656F0FDF89108E6DD
-02ABDEF907731D458D690BC608EA9CED09EB1E6E64C0790C7A2378201CE997FFE0317679EE1D4EE9
-F91157449323E53B4ADA8096CD628B5861BF794543A98F2FA2AB54FF0F25A13DAD43DAF9394329B9
-5AA53CA32749FECB0B2BC035DD1EBD53FF9FB5AD8BCE06CD89E5568091C1CC314CFB1D9821D7F9AC
-7C55F55E0A16E39A87D43148201B928F3C42B110FC056189DEF183745F3B637441DE8BD4C3C7EF12
-F4258E306B2877ADAEC63441010750DB4E6269A4C78A0AC01BB3603C386651FE814031CB5D8C1F14
-9EEAFF652A53E57BBD4C8C0CE36A84A319A53BC1E5FD3F1ED1EE72F4C1A9BF264B594062FCAFB22C
-C1FDE3F2E3D3C17DD3F7FE0E15EBD812D550227C06D01127385374A11438ABD50048E17255FCD2BB
-85122A6FB9B7DA9D5E9DE8A747FAE0DA45A1FCEFE92B9E70A5B2CAC668D4D07527A5C1403267D823
-048BE671F725CFC7474B44FC5AAA348420B2D7C23C6CA066666FD6F2208E329878D90CEF1C2E77ED
-22D3BEBB9D547810B189F08920A27E7107F208591A84D463CE2576C70C3DFE6643E4EA93F4E1DAEB
-41D46F0E2F56FC10C69AD5034FC9859D31CF27A3A1EE256C93111F81C11ACF1FC0CE20B90BAC9AA3
-27A5C85A7985B951519FD4B03C40BE637162AF41B2FDA68F0D1E9B7602FE2659D3D75955C579AC51
-DF6A552EB9581AC3F712F083F19B52A6C4F560F36C59CEEB0C996AAF1728A2AA45DCAD79BD7B23AB
-388D5B0B64A2B95154B6259B730B0F4A72C8C7F7CC93C7D64D9D8810D1F63FF8ABD4DB89824E2D26
-4FDEE916C41E299211DB1A53256E1DB5CDD04862F034D9404B73183A99D3D13D642A663F129B6D16
-7095BEB4EAEFD03DF2FF2F0B6B594C1EE90FDB203DA89FACEE23F1BA3901FECC75FE1811BD701259
-343011262B6A0A9707AAA6316BC3C17F787BB80AC8DA5AAC942D90F80C5A3BB59E47EC767244AA95
-C63E50BF809998957936D3BF6ABC24B0A397258F9EB4DC8F65692CB023D9091FB180C69498CD0C08
-BBEBADC84A7E0016E8F8BEA325D924EB0DF82E75D2CC2CCBF039B11934363D4332C5FBC5EC556BE8
-5EE4E707CC2753CCC43D2ED50558E51A104221C9323CDCB0199B7B83454DE3FDC810D0F362C0299F
-5DD981B31D8E3DDA284FEF9DC8F9C8DE138D3065437A7FE8C30572AD06D62E8527AD37AE39AAB0B2
-25F76A25F6C6505241ED73BA494CF923E919F688DDEBF193E188F8C4C154F21631080763B4D091E8
-AD1D2FD6649E0CD9360E8D1A67A5B5FAFC67547CA31C95A5EA8D4EB5D68B9F6D6532DB9B54584735
-9558542A2AE58C09F3BD2918EFBE1699E9C8F2C2A11EA4D224C726D2ACD4A8D8ABAEDC6588CF2AE5
-66528B94F55B823A2A1F7BE19000F3E7579D094E047075DF18C8C868760295533B26EB3ED90635B1
-29C17ACA679C3E88B06998CE5A7A2544B700229F5A6A504BD3E45B276471959C8A3F81917A534287
-39B5EF9E3D463B3BA7318448E2A3E79520D2D245A2A72F31FF7070B6E4624E3A5E216BD103640C8D
-F387E49D732529C611F8B971073F17EBD2F6EB18F9B74A67E1997926DF178D4C9EDED435B9682F1A
-279C81BB9F60DAFE125845A2FF3B02979E5481C78A45C479BEFB9FEF3CE2BA9BC46C77B50B03E48D
-A6D17B76F06F3AD118371ADC69E178C52B5FB4B261C9311874ED07DD6D5B3226A005FDD7A6D53848
-09E7063F036CDEA41619122635E835D2D74CBB6AA9B38CAA4D819C26E95115FE0DBAB4198FC5838F
-2C91B7A87B07D734C6D4F4F83444C1E90AA9BFC908A2BAC4B3DEF9157AFCA5248F2DA31CA87BD363
-AC25E9E77F741D4B2C6E02F04987A6F49D30E9038CEFC41BA172DD675AED8B392164411144E5B738
-F3210B0E66B17A13CB9631C33D44484E792A7C082DD0A5382F34C5637653261B1EB6D2035B08B4D9
-1FA9AB770CAF40A103629511F7B43F2743D7E583433DECFB19C21FD4FD0AFCC22A4119E77C87BFE6
-FE50068B22479015BE5A9F06BEAB4D37412E062A45E0CBCD7BB39FEE747E96306F79FC4F2E8942DF
-5D9DA0E55AACCDA547DA19D30B8404FA121298B44C9CCE198C708C69A8D6BF17591C5C50D3FC5BE6
-961F7ABA8F366DAE957A1C3730DA4A5B4F035A9274675EE3BBF0CA8CE9D8349F50CABB1C3EA4948A
-BE6F9F143592F1EA95404E6909A909168E3279A957AE1924245C356331A75E7008BEE92BEAA304BA
-40B7C3F48F74D9018B3247DF50EBD7CE541DA48ECCB1B0BE51A455C3C13C279D4D8676078C3EBE43
-08748D52C9B041D3E7244C745B1F2F742D010A9E60695F3EC4FDC1050AC082B905D6A57E8F407A3B
-472F731011A5798965B7B1A307E252FE02C8F79CEEDDEB6E165F1A94D7FFF18DDBDF79477F14E9E9
-3981ABD200FE7771B29D1D2D120EE79D28B9543818527039AC74085EAFF241B56D08220C958B5D9C
-87C0C04A14D52AFD475B542D391BC54FF33DEF8D9484AFF6873BEED32DDA4B371112B523B6CE22B4
-0D1B416B64C9370F1CDF2C548F4CCBE9E12E21C36CC3EA52DA232DCFB65F66B22B5E2EC04852510D
-5E264EE939BB67AEC4764B87062AEB7F680B40BCEE04AD45C7519EB3B6199C9E0E332661463647F2
-FB7EDF303EFEF84891CEBCF0FAC5F723A9D0476C3F8C092604C87FC69C7A90F4D64AE45A478EE8BA
-2DF50FB93F55A3546123F0B0E2C1C40C98EAAE9F0F26B8F80FFE6E6B94B7E27D2884D58B8A119662
-2DF6BE608C5569D7864BB756DF2EDD184B90812B44ED4A32D001C31383A40AEEE9743651F7950846
-15C48E402DBC01C818D477EAC0347795CB2792E9C11E8FD4A02E194EED1C919D4598FEC003B6D9A8
-A0BC7D456047A1C0579453FC1D7CB2D158D466939A23D7A7B8ABED7E2777EC7487973E73F2266D9C
-250CE30729E3C5223AD93B9AE8443B35711E446A3DC660123ED45CE1942A1A2AD0610467E081CE2C
-8B92A6C82F0B17B5D2429E99F1A6268072C6B5AAAA6EB6283A872C54D3694CD825EB2926E57DBBC7
-C1663075E687A144E4D61C225781D80FCAE1497B442342B4A3F1CD6BDB50E31791CC3928C30835FE
-F845B6BE5E2D7E3F2F5F085AA3FAEB45CAD0D76BCBB1ED859A9CEBB9F7457036F0BC3F195CB1A98C
-9C8648F6583CDBB23894BC719D68C2DBD8003B10D08C8CAA40BCE784D7BFB4EEC9EA5359AC056E57
-B8B0F2EBCB1F4CE40C87FC7861180133E0CB6CE2FC4FE690756D327A2B5AE063E3021C0C0BD420D0
-56F0B941E6B36088A55BA11D0C35FD0132D5F48E5D9673572347171B4328D4807B972831C0D74CFF
-A5638C145B89C989E6EC942148207D6DB82257585958034D9F9D4221C7C9F7013790DBD130F277E0
-BC88BB179DD09E27062379ED06F25EEA8B7FB33C35861A0034776E3813D2E9E5C10E227CC569AB36
-CB2D9DF2E7B7B44758F9DC4FFAD7A24AC7E9F47AA850C221048C3CB35A37CE8EA75632AE65FE3212
-175146FECD6334AE3D3C5F492F067F795E1E8FF386BA198CB74F0BB4DC0000DA383BC4CC3F070DE1
-7721431988D69C8B1A5AFDCCC83C22E16A87E01C6D3E79DC7AFA3DB0371B0866EFB8B6F88900472A
-FEF1C4A878243C52D4E02E82658979731C841C489A6B97E271C4C93800EC7D91F93EB9B9C659A554
-E1FCE42A5EC65AC39190EF4B66DEAF6FC0569A000A9E1495F42F706FBEA4D32EB7EF11A648910259
-6A65CF899C2F322F5679C6D123469192A9BF1A7F1F2C81C554ADB97BD19ADB746A4F81A4D5559E60
-AB94C483DBABF6CE2F28CDB412D50FF3FCFA3B3DAAACC6A83CFED910CCB3B8D2C19590AFF4D75303
-4A6CE7F4156896A13808E0DFEAC547E69D3C886691728E4A35ACD575B40D721E8FCC5385A2EB28D7
-08101DC50811529528F5CB0C009BA7E3C88468E37768FB0D83895AB54DB2DD5426562AF9D8AF304B
-F6EDA54E9C92643DF926F5C3578269750120302A37CB140A18BA56BA01108D4ACACE8FEAE640A6C6
-958EF156B588ADB0EA5F3B0F37BBA12B7BCB221C811415387B024B7076FA4403A3AD6EBB5D9C26EF
-EBDB7ADE7C60B444AB9F90EA493B658B7767AE2BE649BDBB3FE85F460F1ED137C61BD95F7CD3D8B0
-15CE45138538930AB62AA0E54B4CE1A5EC5FEC0A2B28B345B67089A4E4AE14D2E1F5A9C8848DA688
-CA298F93860649EC3AAFEF3E820D86988C8E3E5A4D4BB937791827994AA3E81D0BB3EE115EC36D5F
-B9A392D09E79AF514D11C7B3A03C9F9C13355CE79E119A19177FFDCA34704D38118A8976D1EE5AA0
-2D14FEB1414419F5E85244ADC5C0A765A522EEF36170064BB19FEE3B5F7B441E4DB967DAE0BAC2C4
-8FC6A836E0EF5A69F073BEE1699F55E9C757EBD6FD8B514E2B49D6333815B7DBD1E0694695FCA3D2
-1320A0C4B852D9706DADD8369A95FDD917328BE93DD33818954DBD2C212D2CA81560ED5BC284EB04
-7A5F389E24E43F4FA8C97FECF46589FA7341076555CF55B1C21B28E0C1CBB00AB8B6F67472F27BC0
-D11148F407824B0159B5188D4BB7386FBDBF1C0FAF34721B7BCB5C0FCB7C4010DCB6A1284E9D7883
-9E3C2111A05D29AB7997073B590A81C6168020F1D48951BC7D8476D5BA593F4F23CAC1F9BB0E091E
-84B4E99E5C584D1370DD12DEE8DF16AF8BC6B7B23E2FEABDB7F32779AF8E2B5094A6E9B7A7225F24
-C43A8E5D2B977E1E19E633C26771E23017ED233DBB02C64F8CF03992C6484528D0C8464B46F24F9E
-8380F385D5D01B8893C67FC103498983CF939432AA380CA576D09030CD52FD99BDC3BE16C7204CDC
-3365BF76294A83A1FC14A236F5FE5321904E779B13232A76F8FE521F425562678436359C2461BEA5
-AB27209541F557AE2AA60009C9CA0A9FC7898C14306CE35A50017BADEFDECBBF94EE2905220706DC
-806409EF87DB1D73EAB0698AD2DB72CDCDB293E7FB13C94D9FC87E74502E6927A212F0D7D2F2D194
-64F7A66AC07872E18CB1DDE8F11835DCBC5C4EF039333FFFC0FC1456DAADE7DAE3EC2EE0D3415B0C
-ABB69FC5006F4D14A4EE1A5CA99AD4D5E629C0DD1E0F097B5B93DE2DD001A8C418234C9C45E8C13D
-1AE04E9466DAB8CF1ECB88A4E059C111A6468D2DABB90DA79C7C79E94DB28F6968B1A632F8C57D9E
-565FF91C6916026FFAC0661856B9FB8DE9C81661816221B1FC159CFEF1751E7E403F5F2CE32529DD
-540792FC17A12A3DCD7C50D38EEAADBD10ADBF5D8A82442AA900CE6150EB7A4639DD9FB6E385B2FD
-093493DCCD9014B23EB172E21AA89643A6CAD1093343D85D81261972DE0ACB16A4C6B5F0BE4C978B
-FA12D3CAF0134F9EA49F6E9687C8F99A456745EA252F0BA9968C7F9586E3DD841AA92DC7705BDD68
-2DAE41518A09DF0E209F321D7FA3417202F4BA76A984DA3ADDBC58136885362F02F0A24EBC439B3D
-BBDACFFD8498EBD29F88F016B1FEABC10785438EAC860B554525F3266097A675299AA0967BD3B7A0
-EEEE3FC578D1BE99D3533BD91571AED904BFC9DA1A1451FDC5406E1CD614E0C7FBC733563CD6CE6C
-C31E9237CA153F1F0411114361D731636BCF98555ABF12848AD109371A42B63675A4130B81E97C2A
-2EE2BB5D8FAE2640156001AF0F55D9D5DF8FF23C8AEFE14F120000F14149A36E5C94CD9081DEC277
-C2C34870D05011F99D48B0875A5FF542F067F7E9880109F586BCF2B50522A1F23ECE44349E539E70
-F84E207DC9BEC7CDF856A046F1A03226AA41F541719AD1AF88FF211E57DD0C1275DD0B7B47440DA0
-89B98C6EE92A7D94700B83CEBE19EAEDD8A615F6587587BA8BBA3CE3AA5E8EAFB1FB0F486BE3609B
-169EFB178A4292F4C0378AFE5D24EED1CAAB514DDC66C696D8E37F294A6579131DDF5488E9436609
-ACD750C3DB0A940C84FE022B22ADC2676F62E91E8F891225F891FBA537679B24547BBBF35F04915D
-20B11739F620D18B5B216921D222F15044368569AA302980B9225BB839F494588481B94B0C724352
-B2DF600A22B062561D86CB8F81514FBDAA4F8A043A0265F992FAB71FC9124A45B8475E1EF3DF6B6D
-E35CF329777D45F08325E8505EC0D979F542807AE77E57E453525F23BC59A50740371EFA98678AEE
-6C425374AEB745B99DDB5D8D908FDB551FBC0DB15832107BBECC4E11A1A8DEC69358A574A2ED46CC
-31D564549EFF23102D92BFDCBB2BB985F78F36033E34F59C0EBAFA3BDD71338736464CEFDBA91398
-33995EDA4207BFD4A9867D32E867FBEB7DE60D132803EF9347CB17BD91315484EF6570892297DD8B
-7D966103339535E28A00CB1EECA4A9775F60A9F5FC9BD8B06D78FE8E6318C31DA2E847E3F9CA587C
-B01AE2BA0A2EBDE308314413F4F230A758184ED60D4F71F6CEC22A93A01B6C54E0449A3860FCA895
-4A347B7588329A80974ECBECDA1070FBC055666375229F13DD995E99265DF870BC8B8CC6347FADBC
-1A6AF64599271A475B9123493D46BEC41289BEEB67EB97A8DED7A9C9730D37C65164CFBDC22E5CA5
-89D2E7954C7136EF4E084C43A6C7F361A3E96989239BDDB9A593CC2A80BA16DE9EE90E95CD39393C
-212AB22EECB677FD36D34DEB46C4AD0D21BF7E6D7CBD0C8083842FCD87B18FEA7CECF939987E99BA
-34C214E44DD84C176C9CC5A4CEA76D380CB316BB4EF9DE73D73B4AFD4ADB54451591DEF86621D138
-D5A0A29441502BF6C2ADE671CEC3CB5CAB903A657EB2D70C943F976C110E46C5D9D29BC00A875F27
-38E5D22496A43E096E009C5D3CB724B4CABB32838DBE527F83B18CB457E57B092C302EE557FD4F00
-DB9C56E66C9FDF4EC9FFAAB85F60D02BA79694FABA476A199A0331C30A78A92E10417BA236E23364
-8174C826331DC1BAB87C5F95027846130C6A2B4027930EBF9A97BA1B039D386FC51C302648E25980
-212F6A582CDE2778C677A01FBFB3C5D1B8A374ADAF6ADBF7DC94075F25ED66D440B3922C5F255FB2
-3FD8F6E21EA65B1D93BB225684B50F11310E242B087575973345B229BA62C1E2C35BDAEC04D10148
-F5B2F3BCF7399BDFDF1F3F79119714AEA697245BC647316EA157484ECB951BE367234FD02E8B1F09
-1AAC3D29BF282DFF4011BC0CBA8E55234D943DB3017CC7A766720BBC29B2D097A956C0F1067177F0
-12D42ADCB473CDE8D1BA35B4030757FA1D8211989DF3BD22CE5D501C21EF8708FB3449DF47D88650
-9FF7B59B76C0DBAE443F336FEE2D615D7EED1C284F14335BC8A26BF4621E10DE9611FB2F1DBD52E4
-B7565D8C65B54EA36D508BCF0C578A49A2665227CDE1F9768EFE847F9D94F1BBB7DB83701C232198
-5C7283D47B2E40B27A268428AAEFE75F6B2F8764A8494E5827573758CB9CA46FA93208836BCCC8B5
-564A69F5AD882052AF1C1417C3FA7F580569528682C77080F3688B65E7FC24D2A3AEB61574B4A321
-5927281544DDD7A6EE0A3E9388F8F631CE7251724DF70726E5912DDCCC8C652DD6C9608F8462303D
-867F589DE0F2F71711B35142EE6EF93B64D6326C4DD7DC83278E057100EE772082E6BA368ED91A55
-53ECFE2293A481E42F83BC8F9148C70EACE91F7B7D9CB8A72415BDB3AF66F68EA733A17ABE9DB005
-3BF148629132969589F38D30EABFA96A01FAC72650B5A6FF3935670198A1EA33810A9B11E330EB8B
-451F24F93544263436F669AB5A90A53B16CCEEAC36B1445574EFA7E802DE73522BE725E68704822C
-B7D3912717333367895BBFBE06966A5CC653AAB5E9B3596702086BF0010085B900711932A95ACF15
-CA4DC45A754EA334E9EB84D6FC8E3FC4F897456BED64BB93B593549FF0D5352275D8E417172A6664
-C5E0ECED1019494A7ED49AB0B965BEC1A82E5873766BB38D7D856049CCE2FCA65AAF61E961B60634
-E2A69EF059754C9D8163D87F928C222772D070D83FEC6FA5AC734AF65E40BFDE521F7D9CB1650FDF
-64754BFF21EA3FF0AF7611A93D525EC9B28C51AFECB04E7FC8323DD6C9B0D8539A34FC3CD8CEB795
-8E8EBBFED4313C77ED469C199552A9FF70BA5423B03B6148D4EAAE17B71C5B39DC436AC53D6BA8A7
-AD81AA8B02335A8B2B11E9F4FA913159A725B8AB60F52F1A2EA50EAF4D56656E615BF382CC68A690
-BF83DFF24FE986570ADC0290ED1A37C1C2AD469CE789E0EA0BB5CE01020100E729721AF3B5BADD33
-A2DAA6C33EB8F9064F5292F715F820B4BBFDD56F76D42E7A1A068C1CBDCE4640082F6E7D582D1939
-990CE6EE8D270015A2C461798B37DCB5798EE9F7512168B76D26C28BE4A49A1BF96C89D235F21A1D
-B6A96E5DA474D0B19B808D13D7A11BF39EA8647499C410ED9894A1ADF33D41B6FC2E614D8087F4C8
-4E437B136F3CB32DB8393C49177A0675A0C9E7EECEF448A97AFDBE840FA01FC7E5F2E8FECEDC1884
-84C312E8635CD79195475DDBFDD4D38D5A0246DE2C7F21608F8D2C0DA1371D302E941572E5792A3C
-F4E51A33228B93A814D03FD4FC223C314CF3714BB3A34BD4F7ED6348577FEED9DEB082C4049E57B5
-D3CDB7F26629E9F3BA36893E09E3C7463D02A22D7056BE76B87763260E46E48BB832B7EE13F8DC05
-37EC8E81E9BDFEAD8C27EBDF1AD706933EFD11131E12814F236EBB01BE85B7F1B2D627413B324918
-D247604F56EC128909873FEC3857028BEF76A3494364C2A7002D104D486236C30B48E2B75D851C34
-EA50BA7FFEB4E19190898AE21768C157C0CAC628A2181A32796FBC1A7271D2473CD88E5395DDBDB1
-FC3AA8DF0F3D588637F19A8B833AFDEB5F655A8838EECD684E2315B72C75CEEFBCEF94344ACE8D6A
-DBE355008EC72FE7CEEAB01363A895F4E73F867639BE0A0BE67333848816B05B419221BE8F9066C3
-62C23FE85B7F392930BFE4C12B9526FF2FDEC38F23A159ED61A0718E7115C24597D849FA76369153
-54A40C965D4D72EC94DA61A03766AB39AAB684E134FD1407A5B1B19BFEBA52AA0DA5D99CBE5C82DB
-AA663711E6DEBA180E1D4A39C320516A4350D296BC19BF1BE054859A0889C7E9727A021F3176FE62
-0FB0C837E4141FECE531A950C03D319E3255703220B7185BD20FE5DBA673F8129AB211EFCF36EE39
-4C7E00EB0876624BC840FA86E58B2F584754CB6BFDFD76810E300741EBE4544E5AC17413ADEB21C6
-2F66CA4F075C32381796BA709782DE34A675B717A2C7F6D88104CB924FDE5DF775B4F0B68E0E2E5C
-2F788BBDEAF06D8E1FC2105CCBBD5827C0B03FD6CD64F0D073F3192D5F94839644E5EC6C5185BADC
-F04112A65F49A8C83174A9AE958E76A2F5AF469E8B76C833782C5FFB8BD7B1BBBB3EA0CB7C9786C3
-BE2ADE5E7AFA8C8F20892659A59BC421E28845A108E34EE17864042EF587A6D67DECDFB3F510EB40
-D2229585347A0035670FCC76C2837A4E4D68304FE113C539B35C1F0234B5079B8E32934546982978
-C5E4DF955A454EA263C3CA5D7101F31A318D82A3F9FCB5A8AFD7A65209663B0FC9DA400B26F285EF
-46D0E1EAF8ACB1F1CB805E3986D04BC585073FC64895E4DAE1CCB749BB439CB32EA91176D5C39C36
-50D10AFB9C9884D5FB90183424CEE67EF2175D01D2478D67511EC9F54F88763C152697B06D948BED
-49240096EEE3D06AB4575E8E8B2CB8263B5BCF4FA1608720F52B675309833071879DF52C3EC2871D
-20F398B5CAC8F8A4D41D0F1D47584DD90DCDAEA4A1CF160C4B3BF1AAB890B5CEB6CB3488672AA68F
-BD938281DBC1D8BCFE92FBF514DA5358443CB6E0147254E91B38CE6787B2BB0DEDD2D38F5938737A
-977B5EA42892520C58F8FBB53C994B57382379E9490F0D6970B980E1BDF8CF9F4C3C5E0A18F66E86
-EE93FFE7FE546DE50F41364BCB3721B637072571FA1779F1D672FAD260C16D7F13CBDF3E4376E7FF
-56D2A710AC5AC35FCBDBCE2C9C17E523BBE6218617B13C1FA6679B308979AE7C61DA6E68369324C6
-CBC7DDEC364E5A86707266C0B459EE7B2C03FE584E529BFFDCE98C90A2F3D9305AA74D3ED8430DBF
-3A49FE2ECFD9C4BC9FEFD22618FE9C8A973AD072AB6F713E4DF02DCDA7AC5359B2D652013E131B76
-B3ED6C75FD53BA58D862846264627F6B9E70D8800F6D9B32242B747A67BB2B45675840D34F852AA8
-062FA6B01E31ED24DAE02F6CF788A17F7B9368175195DB0072259CCE0FFB2C1035C1D26E1777CCA3
-D56A827C3242069E76D6DD69B653768614B9ACFF16567FEA61508D51454BC02F6C60F755AEF6AFAE
-3536BBFA1823F8E1A53C41124DE983E51CEC92AEF4F99785D554488A51C20885346D1F761DA79017
-940A0C557D93F1DB6B3D00FFD61D08E96FF3AFCE5FEDF545CC9F47A2B1BB26713431D6D1E47FD6BD
-6E3C668B0368241F0EBB5FA9C991DF79890E52E83A3675EE699B61BAF869DE91F67278F510061C6F
-E41DE2D883F48CD0E068E2A652B244128D82E5CD52F35F210DDAE3054691ED55A7D99088AAE8FB04
-F525C2084AC09F5EDF80A4EFAFE981F74C0DE9D194320709B3464F3FF2C0F6AAEA6D973D9C323F53
-DE3D741F698FBF01036716BBD62957CB32CD81D3A2674560FFBC5BDC5C6E4F547E589AD0B1CFE14F
-5E17FED1C4A8ABE4E67CCF8A49F32C4C6044F1431E1CC382E7758722A6D0DF9ED23E51F8AD14D11D
-7B6428E27443715EBA4E9C05D6F238378F9498AEF0E7EE4FE6856622CC8E6ED141EE5F109E343CB6
-695C4BE1E0F66601C27975983BF557C04ACFC19227A1AD7E6C44C00529FC7EDD7F886D24B7E029B9
-C395260088BBFB96972199A7B32796D27257DE83A7402291C14FECDF7998C5C96B1EDADE0280F856
-8A8F5007852EED303969180B3329917973C2D32C080C9765B6BAB0673BC7ECFDBBFBEA980C263843
-39B7F1052591D91667D4FEE413AFC23DE2D4B9DA742F4269C6C939F5FC32A38040730A018155AD73
-3F231E4D5B9D01C03A58EAE7B5F590CCFAF25EDC8552CFC8D95C60EBAE1837D7A97CA137E9D4A4BD
-2CD34AEFD68D64B3F4F62326AC429921D7FB3C235184FE0899690A0B775F1A566EC29D5830D32372
-6526F7E7F5AFDD71B77E07613DDC4FC63EDF49051AEB59E6337AC0A4B6DD872E776C9CD0CCB86130
-5322D816732124F5978A86C186BF0A0F88E733CE38E4D7C1BA5378C5629B1EFC97806059990ED42C
-5CD183BAD7E94070E4058569DA2E51831FFE0D080301AEAB4350BA290318AEC582C78D05DD92E5AF
-B4424EA808629BC972E68F4FF2489C245593F07555CA6A2B25964794CF31CBD3AE5C229AB9B8C298
-06C01D116EBD0FF0F159ED2D3D7DFC73EAB4910BFF5B0B0B587CD9EA6E6FC45D63C09766224D8346
-1F0588140B258B1729F70BAE7962189B1554483392988CF230AF4077193E53330519394DD99BA135
-6D4730AB221DC6A66019BFAE564893DDAD7B177DADD16ADD21D396CFA6C3DC818052E2F71149FD59
-4A16DE0C2FFDD366C99B486C55A6E991E4D22CCB15843F0C3363676AF2F5B2D1B7EF66CCF2F12DC5
-0D63776BFFB058D70A9C76DCE96C754872D72C82A0C33F90D49C935402CDD26B6D743B1F43BED5D8
-B539424849C1495DAE73044E885A7D0F307F1816DF6244A6F2D97BFD4E200E93F69B08AF39EA21E6
-E347A47CEEBF803F73B978ADBFCF056789BB8E6E2563DE87DD9A8C877157B934102DCEDAC54D487A
-1BB2694F0034093C48F10A17D32E2BDD0C723CAF59ADDD1BE373AF8C9BEB4415AA5AF36310C31F24
-354A53C0B962573148BEF91D994FE3F3D8450DD4D686725799F53C373A0A3E3C060C2E1A3E800504
-9F26D716E1F381B9F83125E4683264A07E2D8938F605978E2513DD2050B3D8A1012797CBA8961632
-BED260916338A812AE751C7B657E086A0C7DDCD3BFDDFF3E48B84751925736D1310C4910FC114387
-F3ED7FE163F91895EBF55FCB425CEF5729D99BD8F2C072E36C310523E75CD8E5DE49C031C4263410
-9D56E91A46C8C8E89FD92012A00C33D0DEC52597B5C6933291A7BDC5CEDA95DCDA5600F9AE1C8250
-54E7EE1067458CCB66610704C58E4A4FC0CB5FC933D0322A716B2CD430A3AD48DAB3D4CBE9D23F2D
-092368CFC4E1F5495C133A92942EC62118D45C17723646E69407B4A89DCDFD2AB3FFC099A21D9D29
-741D68270629AA3A414FE58658DC9170C247B6E23F35C4BC5FF83009F462F2EEF4DBAC5FD158A658
-57F9B6DC1F5192DFB169DCB65621CAB2F1B07BD22F4155A8E9E2B6388D430FDE5EC1C834D22EA035
-C52E1E34482EADC36B4CAE902AAE89A7284E62B3C84B608D6BD05F75BC31310B2DD3B2C08A00E073
-7F104F03A41989D5F6B9A2C38B22F1D1803EE5D7A4D8DE44E4ABD496A1DE0C0E12C4BC96D0122846
-3F0EA9CE9509FEE987139F3DD3F9D0DF4313F555BE85433718F6D05F197C41A9D9C7A8B0D2740196
-82D49F58DD5F66B12A6520D9F226D1DF1F1B65CDFA261F980CA25A92645B86B64606293F8BFDE364
-C47D2AF2C709BBE77A70A5712F2CC26F3D66F5BE2C307A48E6F887F681D30121E32BBD87271B5DC4
-615D28C309F15AD263FB37424E56DDA6E17B998B45BE6C7FC6C28E3394A8764C9EB2DF5C06626593
-B5C665D550D4600172791CD208AE9F37BC082B0B242B0A504B751B18F4D7495172B697EE217834A8
-A4FB7CC16D6F9E8BB400BE8AEB0850960283DCE725249FCC4DE97D9886745AB6066C3E2F64DD8AB7
-9AA11667F11188D7965DC11EB760B772E282DBF13249F31986AC6898FEBFE23E3E8B8D2C33E00EA6
-FC493850ECB2E6D831D1EFCA3C2EC8EE2E394599091ED58BEDE97D7A43B6F739EB0F845EAC1DF6B1
-EBFE876009CC5D804B15ED4B56761B3CE1AF59C07B49DC798A44532297AD73D5101ED47F36A3678F
-818297CC27F6AAA2AACCC9AA9B6F5459911D8C56CF499E390AE607F3790450B2B9C9BE0F006EDA0C
-715B5CA0481734CFB0597478E7602B0D2C1E4F78F03C68C17C70E4B42D7D2D3C95CF40F73488B371
-8E2CB05A549944D86944D78724E266C3319AF89AE430E777E95F0D792B1C654306E421F3D63A26B2
-1E74B6E8B21B2E2B9DC596D013CDA16D08E65E8F24A84B12B2BADC653E6E1110DE2E709C1C1BED13
-707B70A421B384F20CA7A9A9D20324DD383F28B2D3C7A9C53F5D4C6B7C378D26DF11CF55238BE1B2
-4FA70DCC178DAD3D35670FE4919085EB1CD905971D76A368FDFCF9D2F0A23739851A3A6D2E02D65D
-54DEE69ED5D81315D3EA5E356F94EF256DD267FD1E1A9EDC9CD63E743F299BCC4A4506233B8DD765
-2CA067F741603F93250C087D368F9E9CC4CC1A6DED567487C05BAA992B0056A77F630A72008E3946
-15A9DB24FE56A956650EC9DE90A6C2259189440247970541CA198748928215C0E132A81AA13208D8
-63C1FE817F70CA573B54577D10B73100AF8EA088208A44FB92ACA314AE5879706180788C17BB1D0B
-81B6B95A1C4E0F9EA66F9B39BFE12444A6446691A7BDB03E0F03D9F07A10A7598F2166F108529F34
-CD90E601FFED3479ABCFCBDE8F051C348E48C61D95B00C59EA1287423F05666C3D36288844067E83
-E14F6B5210842C742B89F13ACD126B9FC50ABE2CA7D7ED513D43B6AC7F41EEDA416BFFFCC5C844AB
-2D23D4DC09B2D510504CE98D02E72020D9E669DDAA344C63A1B75632F912A1C0DA3885DA4AF7E243
-E4A4C6493D6595BB6D56B0359106957259E59E336BAAF35BD1CEC5CDE735272EBCCAE8D4904AEBD2
-B32610C6FEA2B69941D6542ECB44D71092A3CF067708A3D087AE99FF29671AB7DD8758759B971A08
-AE1BAD78270D2FBEE37AA2DCB119D72F6C7B0C8509018A70D0B0BE2C6830EF8E0B24B1CE1141EF87
-3A4D7DCC501F808BFD94E4DC0F2915AA023076BCC8006490A43685EA25AAFC187302EBDE7FE1965A
-04A5A398985D29F08E085127B56B057334D88EB638A4DDE64AFD204974C3939536B1B66A54B4DB81
-151853915718F70813F096CC1B0EA25E363B49264C2AD17158A4489F91453FBEDBDE15D7B74D7F98
-E81DF23251785D58295BA297F295AA6248A912CDD4F1111E6B628EECBB5139709E76EA4AB743CEC8
-26621D08E6BC64691CC90B3C3C1778931A28D3D5B1E20E96C643316613FC487C9B604C43463FA453
-3BCA1236286E6F5A6EEB2F1D9C34BDDE4595495A365F88055D9268541CF1654ACF478D384A5496A8
-772EA1402751A093582A6625A0A44816B5FDBE166835D598644296249B92CC90AA3FD6445C9A19BF
-27F59CB0616C7306070F33C7DF4E1DE64AC8C5BB2FFAC1EF2B1B30E5A0275E6004CF64BBE2C6710E
-DCFC3AA4ADD60106334708862FFA6652825BC84842736E47AE6917180365C75B27505EED3C6108E9
-898A780E20C3F606A860229AC46D0471ACA0187D6D539A1B8820F620F72B41AD1D3BF3834BF48CA2
-AFEA8BF535AF74C4562DEADCB63D2F5C7585722B77C989342D190FF926C8A5263B4F25286F99CF6F
-C62EE6E2AD61C82B29D82468AC10FD27764278E5558CE8B41BA111CB2F040914451A480C93084237
-CAC8F66BB7C6689F340B8ABF0150E06D5B1177278A4C08742FE22F42C28680F190900344ADFA486D
-59718C25D37275BCE4DF981AAC35D2C7E85C72A0188B8953CFA516FD545AEE0BF4B8BA301CFDE214
-4241FBDF3D204E3D2823301572E23F204C97305A82401660E12926EE7BA6EA1A81FF5C007933AFC7
-3266FAC4C134ED818A48E7DA01C71A46335C845F9DA5E960B25339D551582B375814148D94CFB781
-FC56093827B78578A73D4FF67B6B87F40CFA5E3F4325D9108CDB64BD06427B88C84105187316FA29
-90B4E3E8EDB6C78ABF164F4A9717D523794B2FE772A04DABBE688CCA977090979B5F47CEB90A1DBC
-167D305EAB231C9F4260C4AD10889CB785169902FC0BED78DA15B8417453BB65856EA0BEA5245BA0
-573F623D215F6C0CF801851C305B355D26B52B0B343645FE25C78A3526841EDA480919A1BBE5F56F
-C10ABEAA3E1FCCA7C43EE560F067F1AA2AFD642F769D1ACE8E2AAAF38850F0D757CD808C921D716E
-96FBC07DA7860DFA70CEAE2888C0ED3CBF9586443532B68DAED9A926655C157A416C383A53D8F283
-2A4E67468112A09ADC837ED8EC95F70852921F50D4417239FC42EE3624CA97F682745CC5E76CC7C6
-7BD99F2180F8C0B7FB49539C8CC474C25C0DDE491671FF329E51BCFA779346D4686835A3AD6633FC
-B5E0F67E0CA9CED8F215BEF4D240453EB2EDD6ADB22278AA5B985FA140C9834D38753DF2014F8C0E
-E6DAD19E8FC54C03C1F6CB0F858986691D99592562CAD95FA0A5B2ABE4A8B54B457D42E8C33A2D19
-51C0419A72FB94FDA78ECD92BD2A1416459E9DECA9469F35E4C47DB531726DEE8F203D7042EDB32F
-025DF3D582547BB1D45F7A5B70D317DF4EBB16E36B0D798E0932FD2A85B04FD67143E4B287A50416
-2C1F5A037CCD780088C5476385AF8168E12D97D44B0630621759173C8F1E3006B5B1C6D7138B7EEF
-C3CC5F54E24B2C3CA7B41AACFD25E554880AAF406EA4C3C6E21D3B550B040FB1952598A7E8E6488F
-E38288B2AEB6C4718338598A2BFE4D2B9D14C65732DA304C16FF3E1F8F03046EF095B65FD609DA87
-EC24A69278BFE65C905CD0329F6A486B8525B7EEA4F7AE56C2633CD83543269E8ACD6D71F500D82F
-DFBDE7F7F7B1AEE67328549232E26CA55085B6E84D9E2E7F74068F93A90C4654F2F396E57C5F76F7
-E61CBBE523DBFBA6E76638BBA3064DA025A79E3A294FE7F1CC28A3B4C57DD6FDC48E541A85534B25
-E1BC11B4F78019457239EAEFD4BE9007D205F1D985F389DB22400B279C10948551A6B4A17FBDA0FF
-C9428B18B43DC76EFB15FC2182216F1B60B4E344A03AD6C00F141EF99F89F24C819C3E32877A927D
-84C2D006940F39CA8B71E5951673EA9BFD1749923219DE38929ECAA9CE43B06CFA7DA1BBEDFDA56C
-61FF6C24F40E59B13870D5FDEB82D981154FAE5D6D5152DE69339359461A41A9713B6BBE47E868C9
-33CD74C75DB71D13BAE4DEC85E02FAA14EAD6C0A253B16C79514657B15E68CCFF9EE6AA385CFF9E2
-C53D9AE40F85C793E4E8FF50B2B7420F4FE69807BC5F37C3E300E6B3C3549D1D3246A2E70F091054
-1135BDF805E0A698E236B6496702D061241687B7B8D1A0E517DF0476DA09D89667A7AB375FD2672D
-CBAB8124E511502DDBD08BA04D941DF1CEBDCCF7ED48405CBCC33774A68C5212FC6F132641FF413C
-984F8B43BDFD7B1A2A3435F15AF07EF4970D3E4A0BB947C181E9CA27CC14A35BD1BD096875B45873
-8CA244F88C28728B74E25CB8C4FC1095A56CA75E4569AD3082EF194ADD11350DB3B74B96761D4538
-596FF7243B1E1B724716A144106E080D42036444FD472998460CE9ABBD05B42AF9389AC452BDBBA3
-A13A96890025789F16B9D92251FD3B3BEB2C61EDDB370A20456E3BFE5F4039E2557C451C524F8087
-015BAF3FF05F51869FB97512968BDB2B49589C1C7AF1E085250A47657465F480B7023E24C76731AC
-0EAB6704123D77977D3A2C4C56B691346EBE589C619C04515D34F81FC6A17527D5D8319013C5D4FF
-27CC3925E24C99231AC7FB9EAF0BBA482D3B75807AC85D03CD09DE5D9AE0B07B7A813F0449786500
-0AE8A7E00080300F0AB8C399057EDDBA273DD2E1B2A0DCEFAD3B332E6D4AC1FFAD846167DFD70E03
-46DAF84AF292D4F424256ED5AC4E104F80697050D50844A708EAC9E7F7784FD01646F3BD0C595CA5
-1EE6BD607D254E78ADDC5E15C3B6AC4940EC865A5C23105B6BE09EA09F2C05D6D76960A843B81EE4
-33977FAAC3CBDA85CDD2F4DB7C28293A77825635992AF8F3B38B4480D9A139B1662345A8ABE1634A
-77496C3F57597D2985E9E54717AB2E99CA35789441BCDDEDE9A9E2106B401D9684ADBEFE40D607F0
-75C179E9CC03E59E65430DB70B441D43DF03F2AA6FF06F224B6E455B01C64FB89EEC9103E48453A9
-749B4D602808C7E408A8903091D85E06AAF635D0D529C3CDD1B8479AC0F4208C284BB678A547F2BD
-77BB17C86D4560434F7AD1937760A6AA55B614CFA9FF8C9C96561AE6C8F2121C4E20237428BC51DF
-2099B6C49E3EFA18E6D439E6E6981E746EBB1DC461259D8EA0F8099C47CCA27B2D982B72C9A07CF2
-1B3C05D6E26E6E286E348B8944078E24809F9C5F3D014B4CBA02533F5621BFBA1F0EDB776C634746
-703C9F73BA89B1960A496420C68F54E5B901A6D733D7ACC79F275FFFB253F389AA480084468BB34D
-A1E797E43B7F6E8CAF5E8C93069A3A2730E57EC39B677BB73E3F07C2055599F7062E53B37A5F0099
-907D2ED87FF7A82C95FBAEB888033BDFD67BA3A6031A4CDC56CB1E4CF5B06B46E16D988BECCEFACB
-9E1C037023D7BF5CCF5D65AA66A17AB361BE7981F132A578F3ABFB97960A6034F052D9D5AFDC0679
-782EC90F240F943A5F9A3D969ED7399254FF67D89DF668F7C56FCEA1FFDCF20481474AC8495D3AF4
-B6D7EE093E369C057F0B70858220693B398ACF8E8143558132E4391405E30A73937C53402E459F4A
-A3539CF7A99A3F51C0307D045DF8B77757E92EA2F51BF0BB4F77D3904DD355665870C2B59F1ED7F8
-4FC71FDD7F0B6C5D3182DB77827CA6A2060D2B8C83C4EA4A432EF43A4D0A952CC6CBBE52A9F0CD66
-1A538973DE41FFE9C5CF55F2506B9EFEE51FBAE5E63BDCF5528499A47C031163C88D3022606784DE
-2F46A9C9235AEE3D4F71D4959B0CFDC5B7E78C8C0A8F9DC99440C2263DBACB343C5C648577F5610B
-50EAB1CF7FD02419EF3941C7CA0B0E64EBAD4B2CB05A0793DBC38F1946D44767BD287F5E9779C611
-CA0DAAA1E7393DBE0683C8D3455CDFEBC0E64B54B737E298DDA605227C0C4BBA87AA3EC7FA6EBAEC
-39E6EF2537D5974391D31739D9FC42983D81AEE44711C823F35F8E2321AC74943871739D2DBE9748
-FE68592263E7713F27E0D49B9B5CB7A4E55DE54E6B800D15856450FFD3AE5F287B12AE4F438B20AE
-9E27E6CAA00F3EAEADBE08432684FDF9931E925544A680182602A3C1997DE5D0630BD5A010535E66
-E1C123013D23966B3545C7431C39B97295BFA4099D14461004C42C85095EEACB9B47C593BC6DB863
-533A8619BAE09095DE8ECA432D4DDD49AA600D277E75DC3F5C6631E2A05382CB007825FADB77438D
-CFA78E252D79B6A196D5164C2FEB85D75ECA25FF80B1D97FE10E87960CA0FC47C41D3A213BF141B4
-8BC3AAA93FA86245064668394665BFD52D12C3BE4CE39EFD8111754398A944C3FD1AFA98EC337BAA
-AF899D35E804CF416AD7FE45FFF13FC6354007501043F98FE8428DE8013901BA6A28711A2CA85A27
-0BB135B72F1D5026E8217581860729E94F2F1878A0E96C59E9F62714FB5F8F25003DFC7347E99007
-8A9A331CB3A6A535BC61866F02513DEB982C4A13ADBFBAC3FF70A7335F40D5489E48E5EDEDEF1619
-1973D932479C62183B0E25EE8C4F76D4F1AE45DAEA4A12AEDD9EF81D248E8D19F8C8A5BECDD1EA1E
-98783EB7A38149170851B1942C96C53DE06DEF80913BFC04E539EC67C110498D15B78268853E5C72
-F485F8A27B768569E54241F6115875E2973292CF48FF91D45EBED627AE9F0766D22201B20AFDD40E
-5B17CF337F2999E0BD15B86E46EB3C18FC12B7DCADCF9DD50C6C7E3F37E615A892DB3F57E250A072
-A49F7277DD6A2C8042698233D35A699B17ECA5DBDA6D250ED4A16FCC893BF0DC2E33FB1EBD7DEDEA
-3C1C39603C8B7E1A5A833A8FCDD5570BD088749BB232615366687962C7E56ED089CD7B092505CAFA
-5A80F503C4CF337F07ADF0D106937E25670839D491F7BFF7A523DB609D126328C16113ECBCBF9C40
-04904427A108618AE5D4ED809F8CCAF72251104C94EC5BEE21F91B179D31DBA79CEEE5EC7FF698EB
-84AB1D2D1A624F58B3622A78844CE51498B2CEF38EAFE259D22C7BA61104651A862008BC1DDDA58C
-C45F663EB26428DAA85E7785363A69D2790996EF5D9621D53042F42F794962FEA46E46F37B8AD1FB
-76FC8D5CF2146843F8CC625139C75FB42DDA71A752BAC48F294E4C0C8289FC46DA5EFD9C91BDA6D0
-27518B7E81E8B21F755A9615627D5812ACA674D1527A1185EED4E3C628196E7D0759B1CAE6B9B7E9
-01E9599A65230F1EE469CD33B9BD9C104C44E3C1AB966C9678BD0AD78111A4E0F2D07A01A038CEDE
-7036D0534D684A1562A17AD64A00F279200C0371B1CBA61747671D2A21D3F9646CA290F6B82418A9
-6FA177C6278277504B7FBA936325F5FA124AB018A15DC18D2C5E8F93CDEEA52BEEDB78A57828D81A
-3E6C38B9FAF3DC4EB7273ECE3EA4482A1C6242A335862C2C3717F9C9ED95F77B140C4E1569B2192F
-C7DCF702D0BC9A50428EC406F8BD0CAF886B4D979320D3E429816D88F7C7146D960AC12E70F2CB7A
-9F4E3E366665AB3F1B4B6440F55EEA26DC9EE0096BB7763731740A537766490C8C174723BF0EB40C
-53701AAD12B21D436ADCE22203C1053A9DC4E9F17AE617888C4B4E6F3A720E4E6366BA628221A387
-D8AB15E04AD69387C310D3528BD2FAA5B22BFF3FA494F5FBFAC4F771C9C7402B95580C5AC4BB3AF6
-92A70CB2C851FA5CF1173EEC3EC29B5A05A0B728BBBB51D3B7AD8B0AF17A1563E82FAFD93F8B7118
-1FB7AFE352874F4EC6D334AB6747519AB8E847B7BCED33EB5458A828E074E74BA621BDCD03FEA604
-7F7B6ABDA01FC7514BA1AFF0D4D0C0CB8F4E42D5A87E395D9ACDD02CCC220C157153422018725846
-009A3ACD8C8CDDB66BC6836B4026FD9F526AA275D06C813179E5924F26A25094E7BDA8BD26AFC4CE
-B41D8964D4FC4AF1DFB0595BC5D6714C32F15DC7194E9A3A73013C45D8FA55CC0550A12D9AAE8E9F
-F199FA28EFC2426D8D1DEFB93A65717AF3EA8E2D5B4AA8EF0EF38E9600F7D4E7D9F1D67A2E63ECE4
-789FA74B159BFE2F91C19B0378BA52E93DF12830D99553B6618645E26126842AB70262D96E35E5E7
-50ECA0CE3458B3E51BEE2F21191136DFDBCA39BDC07939E521E4F492F392DEBD029C1EA237BD89AF
-76BC89F618D530160AB16269FA6B693CF14BDC4EC7C630025703C5337F61458FA09104EB15C7CB20
-AA4C9BDB7CEF3A09F25BC7F3149951A7CD75372993B80CD2112F7674CEFD6AFA764AA3486730D2C1
-897A264D82A91709FEC4A21E30D812F558451804EE6F3DEE2C4C437846BCBDA07C5B6CBA1D94AF02
-9163B7383CAC6E088AB1DC14ED3743EE77E26EA7AD3119A76C0B5F925C4DE305CD7BB3A09A453947
-5B9BD79BE28FC462D8718CE05F9D94CAF3387BA55E6E447BF81A9EDDD3A34E17BE66BC52B0C0BB6F
-86F6F008829173816D205182ED2ECED319864A796AB65D4E3950288BADA94FA32B6F453AFDFC6C39
-A4FCFE60353A64627E2057D4B379D3240012B3BB0ED0C7876CB83C1BA5EFB6E2A03F340C2B576731
-F848F762A7E1CCAF267EE06D621BC33FC245D0E1547ADC12CC0EB58B26BABDB8EAE9CBFBAB93836F
-FF22BDA1831DD01B7346AD377AA298D84628BF1C07433284B0A90FC89F5AEB2651BA2CEA405D4F52
-DDC0E74B871D43F71EB4ACE0D2B401F9348EAC3A2EF0AD295036BF6CF6F870D58E00B619D50EA7DD
-77BC28DEF91D805CD527DCBCFDC16C042BF9B874E3B1567EBA4C1E70744B9E7E5BD1FDA6A5FF6E10
-1613FBE58DC46CFAC1A65ADAF65E49757E9304E2AC9A91E0588600C709A61D4231730073A36D473F
-518A145E141D0A5A494441B9EA99AC23F60F54F8127B477E1CE698BB4129B4B1DFEEDF10D9E665C2
-47A62F112F5CA30B0AE5DBF3E495FF06EB28EB438CE8AAAD84D5F50FB56A3AF002C23BCF66ABC270
-7AC233FC0F2723DB99D2CFE7D3B3667732A531F5DC315CE74EDB9050BF75D29E6430F57CB6778B2A
-CBD57DFCEF896E6766C8FC5C9F9FBD701CD62CACF33EE0FC95E78DADD205B5F42CC63024624BAA0A
-B4DD447832B4E1DBA77BDFADD223989F8E958C8D759AAA37930664C6EFEC708116248A2A7AF3D656
-DDEAFD009B7F5333854608E67E5E588A857167ADF9225CF6C641F5E19C3E08678A281199EDDAC831
-B57223B1BEEADFDCBC8F6F25D32FCA2336C808162E8F381656E847FB6CB13969572425AA05AC830C
-33DE6E030F86A3A85D2A66A77F103C7042C97205526DC882EA9A00EB8BD5519847EB424C15F808A9
-1652A6CC89B66A5731126DEBADE123C63D88A2E550FACDEB3886FF98646000C64B3A91078012CA30
-904B71737CEF6BECABD43DD702880538F5A70085E6CC6015D2163681067C3D513A8C66032C34A0FE
-17A58AD4BC97CA69BF41F11D5E910FDFE9729652D3EA21F8DD8CC19160A8FC77573B1E9CEF4E790A
-79D8AD6723B6804E9616466C935303E063DEE29CAA6C3BAEBF278B818C2EC2F13ED645AB452397BF
-00DB8B26E115026E256746CD0C78A959364FDE6DEDDCD0F441A61A1EBA32C7BC172BB09512148D1E
-BAC9E791B7D51B71CAD2DC9B83B2F99B3726607D9CBE58B499A13753CE87FCDCE21C0AD0528ED0EF
-B9B2C927F57C78C626248AA2B835A0791244C5896686A66173EC9F802C4C633A42B086334D2A4878
-0E53D00809247BE64E529F96AD2F8B3922A6097D414DDE1EC76F9552F9B8D58B8E34F359AD792B2B
-E50C26DB05035E7497162E7C49C38D3CD9B98D620AA67492BE5AFCA3A81A7080185C7F0B5105223F
-1FA77805502A2E8C5FEEA27699858D84A95842C5F2FB68686D59FE24091FCDDE139B6463BC6C7B1E
-0E90D20A83651AF00C85797BB9F53ECEC1675C7EE636D0D9E77DBD8F89670F855EE4D4800FF3F695
-0EFF09BBF8A0DAF6B8242840CFA5BA73BEB95115F4A78BCC02D85ECCE0C0F2EF6F328AD1DD6CC049
-5A3315B414A4D61DA50DA46D7ACCEFF6EE56451805D26B0359AF193531F95F6589CEAD6FA041AF15
-3067F88A0A2FECD135C56682DB2B45A71D1FA737C064EE9A4F404BB72A70B3AF0330359393247EC7
-81512482579865240A23CD8479F21C2C44A119EBC4E81B308DD8AA86E60C3DD8ADA50E0DFE8308EB
-1A7F201EDE8DCFDA405AEFB47E0E6CA7DDB376DCB21D37F7ACC4D3E9F26B03A8DE0E8940CA3A9E75
-963A389DF8038D2C486072F61C0CEAF500753C7A6352B1CD0338D9212B42A4D3DA23D5BDF44C27C9
-4B88A415A3242FFE2E1B332477A21D2B9CE075EE479C6E657A4D8874A8C53964229310E01ED4F3C6
-86FEF5258EDF3B464DD6FFD7F1CAF473BBE722D60FB14AB4918E93878A8AE4773930B8CEE110F476
-7F42A52D9304C55BE12846C911A10AB9B2E036BF9DFD597F5348D42233315FA80D0F563C388BC253
-2103F05E90DBF1923F229F980A2F4585C7A373511372D07DCBACA583099EA972C03E5AA67E663882
-6DB134564DB993CEEB6E7A6659C7C5C05C310267D5F8A24EEC2D5CC3E3F3C808E6D6068D1A57646B
-37FABD98ECB7BAF99E7D9AC4414A491A73CA34C52F394352F6B5A15F0FC4D88622DAC694699C2464
-84ADAC3B1D366AFEDE2A2CD2042C90516A666A19A91C80248B11224BEDDF1A320E230739E755D098
-B6A67315535F4C187CFA67ED817A035056353FC859BF286317996FFFB478A2248B908FF12ABDE705
-402224A3EE5F463DD3D243875C84E02DB968ECA1CC52C75171EA50D6A88CA91327A7AA5795019F36
-C0A19C093A1C9D3723C7568F9D41F2E4FFB712FD47F897703D7A620B586B81936C84AAED61D84332
-B3BEBC4F95B796B93EF7A1F565C494F8A65EDB21E2EE18DC025522EF8E599887CA2836069CDDD889
-88E5862977B7472584303198CCE97EF9F9E1446D1F1F5ED1CFC666A8A0C3A03E1792EFB60A9B4065
-49E0DEDF6ACCDBD98742568B4735A747D8E5DE21E630125AE0C691D054E42199C15B1F80CAFA6E7B
-B2005F374A9A5F9900ABB7409CCD50C3AFCCAB1214E6A856F7C7EBA89BC3291801E1343DA9DAD2C6
-ED075C8ECA1423B43E587AEC67E6145272814B3F191B3C285639F9E2D6E148A02DC2CBC0E054D629
-5CD05DBAC1950400A9189316F0265B86A732D302C5BEE8ED233768F237C62600CBAAFF3A110D5EFB
-6CC7CA3B92D965CA7C5E8D3E64ECF239FE2507FC797FDBE54C1112B28D4DA44C60AB09D994C5BA78
-D663A2591934CC052BC70CD1DCA3325C66C9CB982E2039F5DB70C848D3DCEF655B1C2CD0CEC8865F
-E8E1C0A267BE4F707ECE6F5A3DFCA3CC1EDF92C760439F51AA69A4C1801E96CA4D6EA4AD980258F3
-D15C893913ABCE09101984C61B91D603053E49A97CB82FBA707DAE8AF1D579FD69C8481CB7B712CB
-CDDB4D287BE995E32C02B399602A08B9DD849039B5673F1930BEC7BF366EB082D2CA5DB2385C8CC4
-5BE3FC0E31820191A814EBA7C4F23B1938E6C4D800732787CD2CB97F762DFC85D4B798809B5F2254
-D826CA42B32695428D120298B44CF38494E56240B75DF1E41E46E53C44DC505452256DFEC819408D
-605FF14D6C1F3F152F2FEA96EA0AB3B472D8704E06BE9F8C3E8395CAADD06D6DA033E81ADE5DC3B8
-3DAFF743C6E9E48716003D358DF63CD7FD3E2F727D1F2D0C29962F76D5C95ED44B6F08D052025A66
-5785F264A3D5F5593677B630E628B5EA81FB37CFFD7A30B7FAD226B6FDC82B0878AF4C0EC4F4243A
-807B9839EA62BCBDF7C2E9B30A623876E632E084EBF4A21EDA04FC88A1C07021D0C72EC3E969D449
-FEB08E5826EC20E55B21EA71EA59F6E3B0710B0DDAB3261B4A2029ECAB68C19ADD5174E55D5E984A
-4E5F38F592A302FEE6ECE732DDE841A28672C620CC5D687455A5C06FA9FE688394A04F96312ED025
-B7AA6FBCE2925F3AE559CC1886BEECDB70822E2E5CA3F732A87404B1536AAC469989E9610CFA440A
-CE43875A70CA51F36CB6F629D9424C1E35A88F92D5DA3CD8CBAE6E8425A36968E21F4F30349749E0
-205BFF8D552837D6FC39532525370BBAC833F75F1854C93FC533A4AA53ADF7008173A70D94A4EBF5
-38EA9E62BCDA7C20E0A073BEE2EFAC34D2EF1D03BABD5147659E50B557045B2EB89DB303749B04D3
-F54B43FED612FCC68206E001A7AFE90230D9C12F74A32C7EDB5D0241DC3A5D51481FD7C8FAE08FEE
-263FBCED7C7D911B3A303C835AF5FADFD218F61A9D6DE80485ABCA88200047B094441F7767B97A24
-E8C612590FA2407BAB1E8B56C71914EEF2355DD97CFAFCC192BC06FCE063D3D9D1A629AADC75E3BF
-207234C208E7E30663EDD691043065C9CBC473D97C6D4DD3DFF59D6A9ABCDD4412C3128F603160AA
-D8F81C6E7A4DCAF35F3A99B4EA10A34375B477C2BF846521A7EABD4D28078E9340452A198F3F5ACC
-3DB7E3908939FF6E3709C6A3FD9889439A4AE3E10B618CC92E14B68429A3AD2C80940A1079452EC2
-66F254657BE7D79A2A24084AF73F6DF71FBCD32BF6913A3FAB25F977787F7BB0C3A3E8BAB38D7A2D
-B0B4826950643DD1E03BD7DD1FB149A33862A89226B7CB454DAF613128C2075470E42E70A9444A8E
-6ECA526345AB48E6F5160BA23B5BDDFDA6049EC44ED1461C7E0DD514B16E2FB285F72039DE3C7982
-EFD40D7F6C8E8F4CF35AC71B467BFC578002E8D2239A2FD2C4BCCDD8AF3D7DB1F4AE7F2D2E0811DF
-9D0155BA6EDE50B5F052F14F6AB884FFF244D8806C07EBCB49ED22D85DF696995991A954AA97A1EC
-D86ACD76E061B7541E87997FEF0657A826BD88EF3A4A5920462C6595E7A156F453291CA044CED810
-860C3B0149BCE73BECA713040664AD0591304106129600AF71317B0D2907839CEAC99515D357E980
-B1937B6E1200AACADA205421001F1B2F91753E80D2263C56AA164A74701A8D5FD28E46480B0DD963
-A683A1F355D7FB4463C7347C94EA5E2CA40B60B56297CB22D972C5BB10E56715A955605256C1541D
-9F3BC5768A6F355CD3B863F0FA1A781EDB49368F51B29481CBB41D4AEB07AF9DBE8F52C5D0FF75F7
-FB6431D37D6AED84D78C778871CB0F715B4F07580F23B586C969C81B471FF6A6C7276F7E141E02A8
-584D4B9AB00E7BD643D2C3FAAA299B1F1E25048461952EA42D4882768A70DE46B213A287F8D31AC4
-6D5436F22A796C05D1FE50A9BC2A928066627A0D87DD57A3AD91DB446404B41557D1457873482005
-EA20916BBE46C613F456C849D46BA79D20627B446B2F49E3FA309AE14F8C420CFD94922CBC0FB9D3
-5A0F7DBEF577F1849A1A80E0011DA8AC082A8C6F61658E65AD177ABDF23EE17C8CF0D26B9FA3A6E9
-4837EB9E930336889767A8D7EA3CE980A8EA95528B004957BE6067CD9BD8E02A0F23CC1762CCA656
-D33412FF45E917FD4A03EB6E8C1F43FDB0A8965A33B4FD26BC24A20B304CA817E88495BA9B361A3E
-933717FFB0271F7F70C5D3CBA1E86D0F51BF3ABA194DAF32C35C796627D00C7B2271ACE2463E37E9
-7B3C826CF3DB60028F240F9452CBE08F7EBCC5FDB1BCBB3C327A9F450B9E5671916101D6E3E5E458
-CA31F04D12F592F83BADA2C3683D3886AA3B403963AB5DBE220FEC00037A745839F67A3635DFD3BF
-F08F367482962DED88ECF6322852D643A54D5D303EB04BFDDEE9BBA1EBCCBA7C653B3A613A8E719A
-DEBE3CE1BD7E754E5F4977E863E3C2D388A65227B451D4F3A4F94E06513CBA4AC1F2F511613FF035
-611684CCC461599000E546E4D972CA6960E095A526E4735A23421A4C9B597ECE08AFA2753592BD16
-DED93255A1E33DEECE3C5EB77B94670E8137F2A4A4B98AC193258E7DEA5DB8408A806188F2D1DDC4
-40CCF0E9A6E2F0C78FDBD7B68DD4939D2458C1965BF8BED4564B32462FFF3EC892C03B11D3EA813F
-AB4CFBE8D3016329C5B7E3DFED0F08284D44AA0B7A2F6BC96EA4503E8EF52A64C22BED6B452581AE
-8FF8917D53976471941A9116A2D878FB2541B561767ABD4E31CCD8A590CA03494C62AFFD64EA0A1B
-C779173DAD84999C7A8D844EB1259DE7BB5B25CD023537A474A524EBE4660B22568949E624D8FEA0
-AD37F4CE1EC75955EEFA49C6BF1803BE87E9C9865FF3F6B8525B8C15FE8835CA153D27E6C0FF0CA5
-1029A7A9185D25F0F14D86FC797DCC1F99EE97E2054B9C2A2E06FDBEB8DEF6CDD368BF23A858D9F8
-C1DEFDCEAF1B4A8DE5EAFC604CECCF0D285BE00AA912EAB66EFF4D37AD2EFE34853BBFD87CE09B18
-749B489943EECAE7887B006FB827D10191DAD18466CD1F86505879310A8B171F902EA0C26A388E13
-B53C700272CEE2BFB47ACB58247C13449C6BB9D01232C32517358F1A3DE064D43C18F8827D53789C
-CF3CE2EBE78949A6ABFA1A6B8414CE360A5E22AFB7D1DCE6F5A06182C3B984B4F9BB1A905A9D5A14
-83750A1DE0A857CD5C06945EB7D4A2A6BF1237F32A154FDC06D51A703D44FE052FD3C53E9E8F417B
-35D1C851F9203A8997521529F21AD8498F96930AA77EBAF82EE02A57BC77C792D9F220294B45F48E
-A8FD94E01CD25645D36D168923562F3FDC93CB79DD4760DA0C103C2675722D7A1B79FCB4245ED12F
-A0DB52492C9CCE58B333CFEE822812F7DCA68E802C451B5CFAEBAC608B950386B6C58239D1C62D62
-4DD5D15782FC552222CCA06DDF387B373E32C3C2864C63C768350C37283760F3515A5B0AFD66C48A
-B522EB3E808C061F5CD6BD96CD18C9839D30508E7D4EDB88E8F11E31E10919B16B7971F06D7877A0
-58D8A4944C84FC6CAEDF3341B48B6E0D3C7B85D710E0C35F5B5053CF4B4798B3778CC28B2DC7AE0D
-F3A49F9F3BCD8E95D746C35C3F47D68B8AA35D97AA08E711B5FBE70D1A623C82541EBDC51A827D0A
-69E6C049087AD26F256EB7577F58CCFFBCCBA5A95D093DC29464C9A38DE95BC6B1853963B2DEB0B5
-7AD1248D6F1625E115EEB9510B5772AAE4E3C866657DB0B3BF0E0AC345E116F8D4976B770876FFE3
-748C36165522991F46A36F193DD1A1C94713673C7E4C81582391B636C72DE94CE6254374F99B623E
-5686C13D8A8322E83E11BB0B0A896C6A8C2C4F756C5385CD7017F26D23F7C3EE97372C868C8C9155
-81723BB6B76B4C3CE8998E4FA6CA40B633DFDAA59BA902A4952DA90EC4FC3CF0F2676ACFA7F76F78
-236FA2DE10FD3545357215246BB7E527F277C28B353CC6D79DCEF21BCC8F77603CDD58A2CCDDBE3A
-9802F941CED8E035313875319548C41992A2BE939A17CC109426E33825AE59BCD17CB19F50D972FF
-CBE7D9B4B0BB095303D9DC9D406696C2508D6CE99E11CF00F6461147E97449ED5F486D480A86D3A7
-ACECB7E9A945984724EFC21C5079B1FD03ED803C2DEAFCE3327D2D7827715FD65D9506216C88B0FA
-26935E95C64114A51919D419038B1A7E9C1E829FBFB53275093752DF19891A97F3CBF7719C1FD6CB
-17019A6D2D25360ECA804C4B35172662CC4769D2B785C6C87E5A4ECCE31704E59F71263B7C3CAEC8
-ACB4C7426EC25F11A0042323EE6C3EEB04284DBAE2C770BC419DCE79BD4560AEA41571C3B595F525
-60191DC7A8FBF63D413A77A0905E517441B16C2B501EA2F9E99CC38D052679F288FDF1894542E3A6
-6989A0090185EB2E75134BFA3D9147C3DB8A621D9D35E37786853779E157B47F71626D6B3E633005
-9159C17596C1B87FE2B4FF47ED9D78FA4C2160077276C8B58CEF5DC030B4A5D83CF257096C047FE6
-4DE307C598B815058E72D5F57DF5C369E664E137DE29349E2F9DCD8C9F4EBA6E765B6327D7A20DFC
-B20711273FD8091CBA605C4C494248076F7E03DF65A6A50164980BBBB708741E5BF6056E6F996DC0
-7FFF408C5B8EAB8DCEC315E92873228C805D4440A6470E3EE3983758DD211C9CECDBFAA4C9300CBA
-00608A4B2404A3C7AF017A3B7E67F39F0B51ACF950D3E75CC7BC2B8D3480202FA958E8EE0B240501
-5232EE0D264C7CA02C18CA45CB3C2DE322D3EB7F00F9455DB6C5B1F4E59C3E95520EC36D7D903CBB
-625D70B54BF6F8255E412604BBB29FEE026CC660577F91DB1DB4A613EEEFB20CF7AE3CD89D565AC8
-38416B01B5DE4FFA5550D17FB51FBBEBE21CF1D56038863EE931B90DEC2E211ED42BA92EC244D4CE
-2C4EC5CA87A026992772DC2AF754FC982B94F36EA7B7BF75E0ECE90CBB2A6AA1A012E8898BD679C2
-3CB3827C35D5D02F0569C7AA82615D4AA67518ECF668D3B57D6EF1A8013424AC2268BA0D9A74D588
-79EDCF6382A89D397864940303EAEC45A38304BA8B1CB198967AE23EB81054BE74B16909A405E8A7
-799CEE3C270FE2A6DC50BD7370B6B2C8FDB9A87D88D5D40348D3984E39C693B6F4486D994778607A
-80A3122872DD65E40492107C71C3CF708A9717E9EEFAFBDDC239C53AA9645B711038E59C8B861B37
-411AB2039BEDF9CFD00F08D9C5D76154427FF5DD39878CECC5D7BFB3F1F035087185C0981F3C2139
-BE84872FFAD3408531C4EA9387B89F5E3EC779E8850D50992DFDCF9132BC551E985943B07618AC10
-D1150451F0844C0DC41D6E17EB508DC8689EC726400D5A7F6FEB3CC7BCE05F09228B7CB2C5393664
-D8DD9A4B96B1020EF25D70AA2D91CAE93AFB5F2BF0AA18CA5C599FA1A708EF35BF8F7FFEC9AFC1F2
-42870D028B2B1459063B493943EF1283829783E1010242E5CF4DA39D93D506F3892936E7D6CF1124
-70A521D397438733D053944CFF12D6FFAE8246F20618684F263715AA98E15D72A526383E05C23214
-B78338E5B476F0981D90056E6E5D0DB66B1DF2298E597B2ABE1D817E18BEB056E65EDB4234342D96
-00470B1420C9210419D834E431B82F58608C87AC361A02D0F1FE4B470A3D71E0D21BB87E1023D428
-E23D596CB9E1A2184403A16E36E644BCCF9BBDE27290485057E62827283E7380AF786BF395B3961B
-A5EA469C315763FA59E0F176EF81985F38B882DE56A74D128E256D1B89939728E55A92ABA21A6B78
-44FAC1BA7BBDD8B34A18194A2984B000380FE9F672E83EFDBF276FE797A325815B0F25CC95C97A9D
-ACF56D583486305D7C9E51A7E337D14E3B900333EB38FD93A99587DA2341B10C059C71CE080FE753
-3C0F059FA40E560AF9C4A41A4BE6FB45846FF8F78165E10B4AD40F264BCF5596A1E8EF8CB6EA4B1A
-3A5C69059AB1563843679ECB2511A90E8898F54295649CB73D277760D8D04ABACC7BCC6E777A0530
-E2067CCBC08673F9C8C178F9D672AC8A15E5367F0C5651B53E75E0CFA57C931746AE1A679C246D7C
-9417F1CD89DDDBD1173C2F880B7B3847CBCCEBF99F7122E832D7C9BAFE2B54CBAA1ED48158DE3F36
-238B76B0E67644A28AEA996DDC006F6AC0242E4B667639E7523CBC90A0561193C1AF34481C2EF402
-EE43A82E1EBF4E3D601BB36B2D95CD93550D61CEE7A94E72F6D30C32C8F91A61E964B1F66ACFC398
-7F95D4028F116E9A9A8474AA29C1C1A984BE0E393BDC41DCEF6A6F1018DB60D52024899D8EB5D55D
-324D73F39BFA47377B9E15B3B06A7585589FCF52A54684173E5183367E7B0952DC4BC2767C4C6247
-B1D6103E52BC7B7EA6298F454C5D97AC575F19C10ACDFF4E10C7D3755CFAB4200CAC545269FF1D8D
-B0D607C7AD47F40DDF257AB4E7D0750577003C13E4941960C3DD7B0774DDAC18E8ABAF8F53E03CBE
-F6D57B44F24CF821014C064278FD51B3427593D17694B4ABCE81F49CBB984C5878CDF0C38D1ED7FD
-99B0B9A3BD8D8FF6219588B3B8FA59D0CDD1D9B2F65122AB45E48F1757467B9204926140E3C350C5
-A927A2E700173053EC35D3F1DA2D7258714C97FAA857F0898917BD94625C6D1E2D77138EFCAAAF51
-7B17FE187A2212C24A881A2C6A647DEF6376ED80AE4175C5EE80921F001995B44E49F0D33DD9075A
-CF33BB03671C0BCC34AD5784AD1CDFED3A6D9BA103B3DDC1CC2DE74DBB576A0277715275218CD19C
-A8899209125266D8BF1286F881DCC2C383749D1E768D670F4099F7DE959EDFE852583183C9111601
-2881A56A24AAF020EA45CD5F39660DEBCE30AC1C7B8CFC60387B1B0C3E361BE612FDFA9F01B7E4B4
-A18839A2C7E0E393EBC5AD9A8A4EBC316A740C1C295D9EF5F4DFFA0667F9582C0BB837B142C4CFC6
-B1798E9476D0631111033B8BA75A10FDC800E2AB1E0E829632F869CFE4737BE9E2800759EE0831DC
-7D1195EAF80555771981DD6DC6606812D92CB8EF86447F5F6C6F626D0E265C67E52A6319189EE349
-D48E49DFE6A9E98F76C414A1E3217AE0A215A17E54AA498F4ECDC50242ACC7E2322F63BB2FF2189D
-057E7354E32A3ED1803116176B9B9D0129930F919E2FEC280B2C8924E49E7BB75768A2EE1DA8ADBE
-D4E3589906DF1B923AEF84C1BD327438B731012E69BB0D43A1842CB88BB54EA4516477F704CFEB28
-6E3EA483445AD4D74586FCF32E96D366901084365F693A53C5FB532FBFE7BC0CADC404C4985042D6
-8DBB90A6DCDA3531EE324D558A214F935CD9FCC9A0CEBE9B5FB0323F4B3820529599EF48EE068B5A
-CE85004FEA2984F0A86F5AC9D56163BBFE1142B774148F1EB0A4DC89C3349052533A7DE66729DB24
-41B82F8F7360111DACF69293C9B281A0534F3E9E9224A75C49A832F28B2E497262475507B6DDFA9F
-01CA0A6696E3F5AC7EA68595EBA0C2EB8A47813FF936D84AC1B23ECA7AA2862B793CCBB0DF9FDD49
-31BEF354CEC12FBF478559FEC29F81ADF4452E83963E56541D31F3691C93A50F0BBA5E9552C4F2A2
-3A6E53060729854A3DD71CC4308B91957DB19E66AAA18FA67055A950F1C2CFF78A03BC1A588CF624
-696068068719AFB1001C4581EE072113882D9052B21E355D401ED8CD24D067B99E616BDA5A0A5A93
-36FC499632B79FF2FD0DEFB096EF46B75E2D4E0F48DAEA239719FEC4D9A29818F5875FC5041A9EDB
-D26CAF0ACE14CC80BA49BBA59E918EB3D8F1E541AA16026585A2F72DF7D83541816DE46981FB3EFD
-0C30E458CFAD04C79421AB7C4925E23AEA07F9F018431C790002596D26BD9663B51B699DF53E4882
-CBC34EDE88EB55045B889B6062E35FD1E018BCE785157B85EC3B9CA6C85D4B16238275385B8285DB
-012D8FB7C9F5B946A41D7A0FB878FF72C39683144D8A007CFF631B43748F2D5FC690300F9BC0C837
-006B92ECEBE0605E8C3A4A400E18AE8997D1B45FEE10068E247C647CF82C6DFBE5E881D511FFA687
-B7AEB78546BFD07D5F7EC242DCEF4930D8AAAD8C6152B6642AAC325963FD147F236BB850A9966573
-9D06CDBD7CA79A527DCF461E33F22BC9C5DB00DA2BD3DDDD8C99D99793BC98282AA8872FF96C3942
-85D82D9419EB78B6AE37A5F519397700F75D624A09BD255B576E955A323E784E8FC31131F003B0E3
-024A4F58FEF2A6C043796201FC425482E1155E229D1B2D43EF7B0D22322B22EF5C9A1BE026A1C3D3
-75EDAFF99597E1E5477952A4E8D2ACF5D014BC00DC2A272FA62B6983E27D228881E2EF2B8B95A681
-CBE90C5FDE16331C85222FE2A16F0A3C3000A63E2E21666C0C119F8AF89A543D37977069A5ACF155
-6324F05204CE8CAD50FF4FB630D9CBBFC324DEDA584AA56A99D3A76FF55BDC2C2EA3A021361CCD4A
-83C7A5E2768D210FA6DE889FD48A39D679C94EC3C99A8D33FF11377DA7F6F1B71A2A05B302ECDE95
-4F26773F39AC881542F0D0969C3995C3519A8EF70B4220D86BF01BEECC6462855E7B686E1AFF1CA9
-1FB8FD8B4A69E10EE0C2AD94ADD44449506F9B6EF43641F2026EFF6E605C670560C2B74706FB949A
-A7E8CC6A2D0D6207E457E7FD87EC1B9092DC68B9143947CC8ED14AFDDCBF8FDDA228A76847F96802
-E561F67CEEFDE45AE587673983FC04C96744DBAA83F2DC838D633943C75DCB9E6410474EB27B348F
-26E505F0AB90878940E846C5E9F3C5FE8C3558C3236B1B88C405716949B8506841CABE1717474BB7
-C30DB91CDEE33B0F844811762FAEC535BDCF84C1C747CEF9B1FA61D2AFB5A81335BC42C06A94D7D5
-9B7EDE55BCF6F9867AEE107555CDD084B7684C2C87087475A39A9DA6347BE281CE5635A4D07865BA
-98CE26C1465B1AB0343F49FF37B4D0CA9F3BB693D78DC3B21925CB996A038DCC172527FE57C07460
-EF39C07D4396E7FA970D9F22ABD21A9C794B64AD96762C7428F59A8757C36D6C4FFB23216195A04C
-2A2C2E7B10EF7193931544D782FEE4B91E01119C5553BBC6252270A8D8C56DD62D448F5AD8DC69CC
-B45E1F17F0AA1E445129DD00F000005B23D38DE93A3BE55A4C041947F36B4E4536E307D0180553F9
-2E46B743881CB5D5386C48C7D5F84C2BCD06B9C501F78C7EE61FA23516791FCF4DB278AF688A2E60
-10A56692AD92008497487EDFE4BD5FA083FA544138B20D6940020887E35D46E093B71F7A04A67460
-DC8116B4D4839625D7CA6959D6831CD93F81AC4EA2709036DD738364FDE71113BF22EBF13DFE1642
-E564701E6F0FFE7511EDF03FE448C2B28C64FB7D54B94CA576E481FA56B2B18AF10C71F699B6BFD4
-7459CDE1869D0FD306BF489A6F42E5B2F05CCF55BB6B9526973D19CB134CA7F13F1DB3716F8CC217
-73A832568C16250B5CDB16DF24BF81D49F5B37018BD310262EA7078107868AB0216CEC83CEFCAB1E
-9F2C665A31585CA04DC01879CAA79AAA5AB201B516F7052B01B16BEE5606098393B0E5D9F9E5E3F4
-EB20F63C958E796DF41CF28839F5C62A0431648745D7837B519F3AA36BC6C08EF040CCF53D9B6D8C
-0C7D1A84D707EC57A3C6AC9A62AB37251A01A5ED40FDEC6F5BE6E34C6A91D058319439778A2EE5D0
-363E2E1F33463C33327D05FFC0CBF08D5BC457C7230448972FB9B4D0D782BA7DBF10D3FFEF8BF523
-6EC16D4DD6D0D870D9D5EB5C64C9A46A4F583D4F831FEE74B0E5B33A09ABFD4444929BD8F638CD72
-EAB99CF2E9551DF427683964A592E49D186F285258C5D5F62196A98532421D73E3495F82695FEEC6
-E1952C562D546B28618FFAEEBEFF03A57F4D855021F85B0C7BC37FCC6DA9AECA099B646B99D41896
-09D3FF2D56422F8C37E97640293EC7C90E3380887836F4938FBF495CAC14FBA5648D89282D8D49D9
-1AF73ED36581139D8BD42551E263E830EA3C6EB381D85C42D74C50DB0CCAEC03F535ADE92128A016
-0E811C34748309AF7604919B66CD43EB5CA975302DCB6076FEB6BDD6FF55976FE990FB0CE9ABB11B
-195403FB26E3D6C6A0DE1C5BE79E171A61E21F79EE8DBE7A832519813EF6B33EA098C2C32ADEA219
-AB2AAC8B093F40000995539D1276D5F2EF84CCD099B71FE4269BDBDB6A8D59C86F7D2E3FBCCF8773
-D0FAE97640BC1AD43CB4B992BFADFB09DBD0CAAEB8CD9DA264187C4F97300E9A6C9DEED5525479E6
-05C65AE336CBBDF4E5D7F79AD098F977285E065579B748FEAA97F2A753E1F962FCAB68D72BAA8EE4
-FF6691C23E31BC0F3E981A96FB440404856AE1AB32A7205B17D411D8F21C8C93B704D07EC594422A
-BC368CDA2B1610CE6A973F4474E12B78B532666797F5755D269772C9F5400B3BFC6C58395D38527E
-2CCCF29B56123F7DCEF3BDE5DC1DFC5B0293BB125085B1D2D929BC3EE84F4FAD571A4991C3DEE03F
-2DB3A3097E52B1A7D5C73CCB6148EAC62E8E36DE9A71C57638C6E4D5D9DED18174E8C390E50B4A5B
-913C074EEAEBE390B214B3A68F02862B9A296DB4B409769649E51D738CBBDFB7702E15C73C2AFC6B
-C37CE15171F4E822CF20EFE55D9F061AA43E648989628FF79E65932390CBB15D8E621333B18B11C3
-BDF96F841D7434E01AD501FEA964A75B248A35CD9DF9A37E48A1E5A09C624B93CE44F0042FA00D7F
-9EE89B9F7AB785E9C718CF6E7228F743271C2C9BBA17E5208B920E44E765D99D86650EB454B0FAAA
-112753AA1BD3A24239E9C5FC47EEB1547AC9D23731B8DC48B9707830DAEC60C8D3790BBA1120F776
-4EFAC542CFFBCD5C05F9510B27B2534B704ECD36C8B041FD49A96881302FFF5B0163A2DD09C751D6
-D6AFEA9170A4F4C4AB8D46E62F763FE1BDA51DD1CE4A27E772F3A2869155F762FF26B7AA6FCFA4F1
-292E56F03AAB6322BF867E7710C34D43B5D85B45AA68014AD7879EED051B1933E491496E3E26D9AA
-8B80A07BF2B94F1077E84A9726F08199887D66DE7A307BF33C30DD9CF3DA188088C03B2BAD09A217
-6B110DB2C868B53DA9A66C85737BA66C93C58A259860E294AD0191E3A72C73F40B0BD98699AA08DA
-F03587B78F391F3A4313C58D9F29B53C70785637BD0C58310109C54091AB0A34CBB0C478613A7AC0
-FB8F0A8B4645AC966395D8BA775262CD291136AFFDDF01C1D83DD4EB3B59CCAD18057FE7D92A8CD4
-A58F22508D9FD7CF356571F701BBB23E749BDDCBF8A317FDA0AEFD952BB18545610FFAD3AC143D35
-1B8DB3F66293375E0E50235F0D0466932181D377EDD32A5F0FFA4E22B5A0CB4F343D9A7E4A342E9D
-09DFF6C697630CD3971802C277A5590B8CA94BDE6B38446C794D072BBCCB724D5BC208EEF1B018D7
-39373BB910D668882CAA779C2D686081DE6A2606417B54D7C20E0E7F722648D893E4EDBAE8F00D6A
-6DA3712F91AE860C756D1127D133AB828E9D80023B50B162C5A1C5CDF70CCB3FDD7EA060ED20838B
-E1E50C4094C9E79E1A0187CDF780CAF45A725964F004253E034C5BE46BBF89D94631F1A33BAA35B8
-4FA2A9D08481C6674126CD96ED05DCE48BDA069D902D6836D5DFBA701DC0F98A863E64F0E312145D
-8DC0B77F25B43AEC729A1243B45B08CA228DD6101CAA2AC5ADCC8EFF84A4CA3F254176C2CC711EE6
-C273835D0FD3528ECA2A976B88E51FE347FDB60F32370B66D338931D6581630ED586F349C638960C
-31AE4204E89521A96E1219E696B913DEB2AAB7A3B022D06F34FDFCB810A04E60A4FEBE284C2F063E
-0AE9EDF87704921CCFA193BDC912B747E13570066223A49F1F6E2AF0D4D65DA04CA876FF7A462FFC
-9C0BA2CC545C3BD36DBE762F32B2D6BE5867C59F479195C92440DC165098B74EA5C3AD93CDF2D410
-B04C16BC7801E7956F4E5107450787AA592493171C3628E6B8F49D4F8429EB98DC52EF025F001387
-BC1A7093F7A99F10B5D2D7DD8BBB393BF6E56F08F4F7FA1A343F220D5A1EAE7168C74D41BE1DC1A8
-3BD65B72B982F4F7B34F24F97F9EC9A91011064031FACFF2A14921A32024385F4E061CD07D152E74
-1BF97156D951A342488FA7F5EF934CCAD13E2753A0AB7A1F565C2F7F6B349DF03BBC25BBD972A9AD
-F809BB5C5048A8CCEF9297B2ED3324D18867F293CC66E88B3A39D107B610DFE79A3B4E83A96D3D52
-A17FE8A62C9FDD271130148366942C9CE57558D023DA5F7501319EBFA33DE9E6D1E76D7C20DB8A09
-B657839DA99F3D8143F1EE6253A3295C9651FA4366547893C2DC7ABCBF4BB7609DE5D001E0A36D9F
-FBE01F7D0903B3208AE8547E2E5F14EC1AF4C2535CA8F4EA37E3F3CE172C7A1E8308995B1CC23E6E
-81190246BCAB6E755BF868D449BB02A2AA87C44C9CC0F571ADC72547CEECBE104BB274B8AC16DCB7
-5D5F458D356466B921ACDEEAE384E2EB1DF6EF393B41B9747F0A4FAEB4AF1928D9AD6FB7E06FDC62
-1E4C6FC98CFB43F88584BD55D9B97CC9549093EDE586912161931162B1B1D52D0443260DABA02AF2
-B4432100D5506546013DA703573FA8013685CC798CE501960093DED713FFCCF89CA2B9106390198C
-29A00864108CDCC1984A8BAB53919028C01B26ECC7925E38CBE6CCA8978EE21C2B06E7B3E48FBA97
-8E2A7D186E563C088F84AA23178B60E4729EE87D67B1091F3B6973676C1CBFE6530EB773C62E2C24
-97014AB0E8B71A1F4E86A378AA26591511BEE3CF3D64C94848582E1354E1605B6457823F2C5E640A
-D3802946BB2E7E8E594E8C04B430C2385DD40746CE8534F50842E74D7115F3DB0C72D1C9C607C657
-3B094AEB73B7A79876CFFC3E2F8C9FEAAA07D3BFCE05B61F7749A8793BE90CCCECA2D7077F25E899
-D3331FE161A7E86C842495D584C6E4A0880B2951D8A13B88C4672080A0B1BE36BF47C3ACE7288CFE
-41A8C1BAA6F0814A947FBD6B3AA72B6C73A8C578CA51CCC96F2352316C467BB960E981F2B6485BFB
-44B577E71EFDA16E7405954BC7C9F0759F5A9F1EBCD2FA9CC9648D5831A68887F41B15081A204C24
-B4B992A231DEF9E698D4C3A25B6F5474F5BE6A601F2D337A58A0D21FF37FD91EB86D1D738893A03A
-69F0CD743F611CDFFE69DB2C6ED0E4611D56F803BB0DC06E7FE85A303839612707647B1BE9FAF8D6
-84122CA9E5CB8BDE2936D3F4FF254D31529D7538BBD4D35539489F9E7316F24214B996BCDCF1818E
-749A71CF0E8845AA1E2A58AA62A48E02BA4564625D20AA220EE719608521D7D7A7FCA0BD8904A401
-9819D371F3F59D46C1354E5FC1A6E5F79B20CF4ACA2BF0F2DE73DA193A6F9ACBFE0B4731C4BCEBE6
-D96FE822965DE965232282A3A130361F188B3AABDA95A8A2790D9240BE008B6A6DE4BBFCADA05B67
-86B9BB8E0DFA0C30043A3B07ED46277E07B9808422C8ED16758B9C396F4EA929D769785B2C9568E5
-70A83B989B25CE200F1727D41E2B702E7F88F1784F4C83FA60A74EB26B2DA95126E508ED519A61CC
-151DB6804F61826C5F86D8FA89D06E526FED97A0DB88EDB432FF32C1ACC9B622EEDF601081AF7B96
-3C9CFC1D13E4A9C74FEA0A1C8E3D8653CD92A944D4CA6B0D306619AFD503506D77732D6514F604BE
-4610C2560931BDE0B40939BC1D126B0E97F72AE1B4A9252123B54F7A27E0CFA4425B4546526FD741
-CA77952B10D13E0AC2E32006A903808FF0CD013F936238C74CC75FD915244C56A8412F37F0134840
-347699508D6F3D7F3203A25B7C70100719582CD588590EE34B3AB13E255B613A6D00386A0104CC5E
-D2C646F09A88888D3751651D5646C5227A3C80E8DA1B0A331121DD2429F1F4775D30564DFF47D01B
-BE2C6C72CE4D1FD9A2077C04D2B0274B8916F6A9D1A4A6964A534F47CF241D5A8E34B23F85BE9ACF
-FC2FEA961F277539F215F8728D6788F67BEAF45502839BCF23D8763C3949352F00C579A9A4FC408E
-C625E310DAE61512DFE6844E82D36A2F81709E1F05B38AE9C222ED62C961EE63593CED7AAF73CE2E
-D3667740C77B309B93EEFE1B4BA65D48575A66BE86743DC9E5D3C2FF418D11F7F211B86E827EE1DF
-C3613E7498030F07050524536D1F8A94DDB6698BE7B963C55CB3F74B676CD815A7B3DF4B1A0EA2BE
-1B0B9A11FFBFD5B1FA49668AEE14629316AF436A0821C20BEEF7B3480847934A99F6D85B68F4DDF8
-859A754E009428AF89A90D1852C220A607FF0806E8080726EDC94D691D214B4521C147C4273AEBDD
-BB4A697EF16448CD9B2FC95293305858DECFD406B89B9F3FDAE2AC579E80CF321EBAE5701FB2F7CA
-D8ED04B4A63115886D45D6120F69AEF1A21D80AD3C2D35D2899F1902242B96CD349E0AAADA40F7A1
-1282B6B52BDD97708E58DC5E2D22D1153E5FA3F3B300BCDFAF98DEC2F4E3C82A1C85F985735F3987
-4F557579F422664E07CBE19DA680EFB0FC82C323EC5C4644C51709AC8D674608A8043C91E6C7988D
-430F10BA6CE1FC7FC0604FCD8F723895250AEC36CC35B3FA14FE2A0D24095DCC30B2093F2298F5F0
-A97676A0BE66C3DC9ADACFE2FC0F721A20E945AFC1096A619075D5E9A264C796EC6C90EF1AEEA8DC
-089B44FFC13D27CB2370070A52D4416C53F364393E46EDD7EDE00799960CE6E0D57E4909E88ADD64
-BDD2B0EBE2D73FA6ACF8B40280DAA0637E705C65AABD523B8815F22F23E9FF81E7829C7E4BC980C9
-143AEBE1A04DC0D253396BBB7268BD5AEEA356B610D5DCEE03135E00AE34388251F31714A1C40E18
-2652C48CDA2211A22CB6F02490E69A44CECB169754C53B16028D352E0119F5D5FAE0BD7EA1CDA647
-12A6147374B64244E21E9EC9F0D1381AD22D5B6212B26C3F9AA5F6045F25DD9F5EB4489EA39B1945
-331AC70510C5752557DE21D0A6CFC1EB10A98FA867B76DA6E4249469F591FD154D39E89364A43DB0
-07AA0D7A911CFAE6CE2B557997FBC44F55A27F622BD7B8B10EC9F5D10F2649A646FD964AE1B111B3
-5B46A252C4DEE44E7426EB5739F24E8A390694597DB3A1FE7800C97E59558322F0E49A0CCE2AD94B
-1E2D1026AFA771723E3F523916F55ED866C9FB4A2F759651C613A2CFF362028CDF9D38F05D4C7C60
-24C533E930B64B099FB1AF04B01F5FB9CA6867E6EFF55A772C5391831059987E10CBF987E3F378E0
-1329F73D54DC0484177D3C3C06F67397955FF1CA4EF8AD1606B70455255D631A7D6EB92BFDBA14A0
-FF28B2ACE7E81AD666EA9B3A0F5A6BA3B5DFE35044FA4B3D8ED956009C60E98CC132F2E84967F4A9
-8A67B336D5EE7CAF7DD1F74D1FA08619941361FA7312CF225D89CEF97E864C8369EAFAB94D97F056
-5505D825972B754F6729596EEA91210B75DD8F645382ACE36DE60819A02B3B48DD00F5485F9264F9
-FA926D732E2C267B0BE8CA98526F124F97EFDB86132C5EF16B103908172FC51F286FFE45FF253512
-E0033F037FF182BA536A9EB2DF2D1DB257D9C86C46E1B002FB32AC70CA9462E6EB48994752CEBCE3
-9F08ABD4F4B0889283E55500702185A841E328
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-%%BeginResource: font NimbusMonL-ReguObli
-%!PS-AdobeFont-1.0: NimbusMonL-ReguObli 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular Oblique) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle -12.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-ReguObli def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-61 -237 774 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020947 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A208511C6D0C255B9A5BB2FDEDB4D399C6CF1
-94FFAC236883767C0F68F4EF84EE696B677DE704EC3B097384F2E673A1F51692B7B260693738C211
-9F7D90FFDB21EB715FD5B8134FC87DBA320EE54C2CEC6A4D6BB350555EAFF2EC4F84365CCC0802DB
-B3BD0E3F0D9F858647DD637725C2CAF9557FDF842A0DA6A0CA0F1B442EF8EE6CBF2B03858468A466
-AC5883CBBD3815B283343B39205803C02C917D06825C09E2BB14609FA32C28D720C0E14A4B12D4F1
-25FF6281FF324DA33A56FC49987AC7D3AA206540F8127273FFE9A3DACFFE2B1C269D3DB9A811578A
-C7D532C2EFC18376F473FBB2B32EF642B19CDEC1D6DE83643723E3C6DFC87F97A7007B6081894BBC
-45C955B7001EB36211B26AD7A3D07459CFB33F9C54A40A360CB802FD202C8E93D4DB888B325CE246
-D02D1220ABF55CE646DFB45F07CB848406E470362F80CE4C02D98DD845189877732744CC16C7F566
-9F77EF096EA55AFF98AA103EEAEFB971731EBF3782E6AB725D4E9E35B2968689E8007C038CF25B6A
-E69451A4731E79AC22BD268F56942A233E52D71873E83E00A1874E04D3B22E72FB2D0671AF81C698
-53C389B51F4A257373AEBF4DE2DA1E4DA5E2CA88941F81EAE0E32D982064C8AFDD7A9A600D56D736
-05B9463C6240606B3361BAF22AF74EF89AC804A5793BD512DA2D13F4BB1B73EFCA1E621ED2A65D66
-5AAD0AD228B3B7E3D90DBDB6061E172B686E92355A7C7459D83199040A368B5697DDC3B81DDAD341
-6FF4405E1096B1240EDC18A0E9985CA55A0D697972BB11E9F1BC30765D6775BB68C69704BE200EEF
-4E11B78ADDB6229D8FA49A6B1525ADADF17122C0FFF51A08AA7AED158724AC4352EBB91ED0C157E2
-4281BDC1FD610195F495E87062A8C38E0D046DA4067EE16E81BC5F87E583315B973184E474064482
-9B2A52E0D37E249BAB31988B906F891AC904D1BB8901F0673AECE60ACEDE97B8DB7935C6488ADE8D
-FD898027424AA85A11A3DA494498B084133B857017A6D507D70A3421235486EB3CF7613C59139FD4
-DCB92EADC60BB6225D9CD0599779217BDAF4813A453989B2E56903F4DBB83D83DF4837C86BB4C3D3
-CCF98F07A23EBBF7AB5687C3E1E6792E40F92A7A466DE352294064537505EEF3F9C308C9EB94506D
-B02CFAE289F10005A6E42D2DCE43731A7AE368564B2983038DAD6987F67062199018395BC0FCAF28
-7A2B040C71F7325FA1E9A9808979B2FEF19096B98B8A0A728EB98F2BA3D33B49E3C20BE992822C7A
-1BCCA5B4E4D1099D456D8D7D83C57ECBA0FF21428024F7572A1470317CB8CBC8679A974E13D88C68
-1338C68C9AC9557F97784F4E1C8C2E61F26023ACF46232CBBDF3C0BCC5583B935FE9FA09A562129A
-8927AE73988DB0F7E733C6561CA7C9716DCA9B88208A715166F2FAE6D5EFF289A9B2EDCE813403A4
-16F243F1B57EEDE7D81E10C2DA4065A3082BC92A38B2457368EEC9C3C17296CB09819E9E642D7365
-F9A6EF430FC7DD611EA5FDBDEDFA72634AB599EB666A5DC178B0A0BD1FAB042792115EF3B6222C12
-41DCE36CB38B738F68B1B3CB489FED9E53315553F3C5C3BBCE40451E47B7EA53FD3D3ABA6CE0AD22
-5DAEE734BDFA3BF1D81C1B42C6D856A05D0924E03F7627C5EB24D7FBEA3BD85716207F961B56803D
-BE046E81ED5FDC378F9CA52C14FD8544CA7C539201BEE06487EBDC30FF3B28E8264EC7FD5DA7E080
-65B0A9147344CE28DA5182335875E9F8B2347A44E33DFAA167232A5C3E69E8C5B58B7C7216537827
-C936F5741B87FC68753EB0D4A466961D0050DB59DF3195BD3379F5647F8CFED35DA952D7CF2DED45
-EB442DBFE992711D22EB228BDDF36B8D7DBA27062D60D2271EA8E8412F4290B58F5BE26FF06F0559
-872F9DE4DEAABA015EAB4904BA1F509F6D517C6E897312DDD571D769BC474FD378AF4360E8B1F103
-AA75F48721B9E0BA589319E15D74AC0B03D730C3EF708C7C504787483F134EA6297097B46D2680FF
-8AA50B7A255563C88D594B912F5574564A1371463674793E4834AF11D14C7991E7FDB3A6ABF8529E
-1A4F10CAE79C60D37429579093DBD041ECAF03824DF9C007E96F45595A524B27EF8774A83AEEBD3A
-7134AB4435C80944DEFF5C1CBA921B0A41B9651968581DA4834B3C0E6D4DE13C1E792FCEED26A72A
-DC4D9E3903661D8803DDB58EB2B929CE31FC9F50A694116B00AC9F3EEF53FFDB1ACA3394BF111610
-38F39917B022394C75A0D467D64B89A44E5505DED7D9C6B8BA6BA098F140C9C00E09200EB4828356
-A2D6BE9EC1D5524B09C06D9C6FCB5E2808050A339B5E5FD4DD6C2035A48FE9674520901EDCAD107F
-67AC8C8E508E6003011978D77ED225F361BC0F86A98B6120EEAFB73F7377DB1E7213E02D12C330F5
-492511B4DDE08558D75D5B8AA2D56A3111DCCD257EE96E3446EF1C76F000C8916C4CE261425ED9D1
-5B58CED128DAA6C1300466E7B152BCFB5E6FAAB2519B8A98F26B29F98133AF886A0AA7E586A090BD
-A1DC6120DBB5640885C609A8BDADEEFE5DE0DA5B75A8A29E92515E86E7E66BB29581E5AFF8CB6551
-D8D1103DF60D558E7987E6F56126A13DB2C9A04886C655064E68A0A20D1B7DE24DAD22BBFEE1B7C3
-C208D4FD6A58DE78D6A0A6126EFDEE3B1A9713DEE94069A9F0A2B392A2F391C4C75327803B53F252
-CC9EF0323F84929BA4716C50385681FF5B4ED54929821594F9026B7C1297941B178C3F8A704CE097
-60533DBC6CF4B18AFBCBAD039ECB2EBDC7838A9410E7B227924BED7123944675A5DBCA388B710F8A
-F6048B03DFB713F881EA0F3B191A5CD989EA150B979059C8AADE403855815D8F7980CE6288F47EAA
-37C1097D33F13776F08779063C5217D7408D9835AACBE5C071EA40C9AE6DF685F4A9827B828815D8
-F3A672E73A418E5CB15684EB6C6FE0998A386E124D76620446907F993BE16FE5AFCEC681F585601E
-18182EDCFD3024062A3082AF97E803C47D32229D0A24596CF7E03F18229FA631175699E2F0D60FC0
-9C4F1954C5D12D03BFB4395F0E5EB6C6877083807D91D93CA4177A6B5A8D2AA500131FCB670E7118
-73F8A3C77575EC93A3ACBA37EA117DB268CF10D04AD0F079484DB124F6DC14A50AD3B0294F7157D0
-837D8F9A6060FBCB385606066401708C041594E0396A0BE4B8B66FEA141CCE4BD29366A986ADB98D
-9A6935C49C57F8CD415E93FF8AE0DF75E463E02AAC68DF064C1B789B685F84E15E512404E065A39E
-9E8F5568A7D97671AE1602605FC7E4933975189837586FB1A55007FBB0E91382A629277C36A190BC
-85AF49EF3F0F38D4ADD2B5DEE09916B79690EC83473C63E92CF617617A66DF472A49641DA10654E3
-AD3880D060B02A4A6C75B51E4E9917A2B6D8EFDA12D59DE5A8E222DC7E82F02F23A9D3DBF637154F
-719B14114DBB102BE5EB76B441D7E9990EF6420C2E80942C8AED5A1D0B19BCE115B5929AB9E145F1
-496753DD6B1798324F5EC1D0C7F26FC3045D7BB46A14110C99BA07A45EC16002CB754C0BAE7A1A88
-EB387BB345FA70B0A38AB4D532C2DE49274D4F86F2582728A2CC54B4C09D26C0CDEB8FEE6A42885C
-6207D74953CFCC583ED82DD7C0F29D35BDAE5BB251B8A2D4B1DC97E2264DCE035E359DFBADDE84F7
-37EA6A59C23D1A64D963E635769233624F7682EA34636B595CCD064AAFF3887D916867475731BFCB
-F7F96D5E5E1FBE6AABF454C2F504EA4E8EB382911560195295C87793D5F7739AD7EC7176E126413C
-D4D1058EBD7D6EBEE14BB94A1ECF28B686411D91E07373E891F78C4C0A05D2E8D90A8AE2614F7FC2
-63A762D0F43485473A54C31726F8547701D4A38D20565ED1707847AED9C805780F062B847E668E15
-565CBA07A72B0BA99F03FB57D26FA26FF579C30EED0AAB6FEC1B5DBEA81AA88F16F0C9BE869505BE
-18C1CB79657D91D6706E2A3F0BE9920655B93EBBAE2B4D0B5DF6BE622C951F2CFA42AEDBF7AE649E
-2150FE87CDBF5C2685EF36051080BF39D864573A45AE2648AD97662B1F69787031B9BC43511FB841
-55ECDC3D91E2475D072BDE6A5207ACEA1E0D2ECB1DA8A1BC4BEEC335A5C7102963E84B97BE741C44
-58ACC3D72A7E53B1F08C955F33EDC3A0DC3E7308270C0F7FF814B111459985733C62E8863625A551
-837952F3CBF32ADCFD9F345E14B585B23ECC440775310654DAF7F41E56FF45F89701292019A94BF3
-0EB2D65E14B1A1D6BF89D4CC43187ADADF3F6E03A90ED01E5D876BD3AA56E5EE84DBAA4DAD9824DE
-9984BD45AF96FB8A56C010B3C3A3C6139D58E9D69D9109DB18561B55EAD6452497840B9AE90C749C
-155B6329716F0152A7AD52DBD0B8A25B9995E1416681F38FDBDFA443879B5C4C25AA29E0DCC07DE8
-BB161C36D76EF286EC88D57C74BF44DBCB4FEFF771D3BD82C8F4E233357C48E516EFE3DB9E60EF16
-8E2C45B54651DF9A5ACB5F1790F7929BCB16CE5E9F6A43919AD287DBC8E12D9F9E97E5DBAA592879
-1A5A02D39D259F3CE273A870906A643CC18D86E23F115D2A35DE6926053D8C84B940B362E7DB183C
-4905060316B269223DAD309EB5AC96DEBA757BEA45FA3100F77F4765334EDF3D659E09BD1A5552DA
-492BE9174DD406F8353A059ECFEE3709422940A8C369919EE1F22F7C02412C995FE93DC4559D32A3
-155DD22D3526D89B16D9ADDC30CB7ADA6E52D62C5F2DFD142D4D7B6E066671EBAD08F54917E31704
-1F410CFD8A3243F8B39459C418B7B7C6494551C6F6753A94072D09E0D812351D62916383C6E061F3
-5ED864923002007E626089772D269B298DCA2CC1F25D9BE43FD8AD62D554C16AFEB7EF6E5DDA66D0
-5A810F003CDDCFD2C02FFF02BB61344968091F67D3862C1499409ECCA137B9A2A9BE314995B818AC
-CDAE27ED4AD583BE29DDE4E8C2400C5F8152C85709AD2A4737BAC768FEB70CE81A92C9657DDDB2D0
-BCF9169D272A063C75C150ADDFCBC2F5F2503DE3D13231AA8CFB396DB38E80197A605F6BC20EFA1E
-DE40CF424CF221218D51BEACE64A3DC88377E4F3EFE43DB4F4FC0803BF61764104CFF0B618C90311
-98B094E20B0FACFB94240B438B67BA298E31D3F4E31FD190E48BFCE27B1BE29D36E765E7D295E96E
-DCE09094FAC43B87E294818FDE9363FC7DC5EA36A1497EE25762D02DFA00A9BE53F87ABE62E52ED6
-F59818FDFCA643042EC13D670DED1980413950EE43372D31AE2694B83DDA42E1FBB049F7E7B7E69C
-93FFA3195A2462423DD2C022E5141783FFA07E192AEBC5070F08B23AEC9142EED56DA74F93BDB504
-78DA55DDD0A9987FEA131E4CCA0EFC51064E4B37632728261369C3FEDACA100F1AA78FB718ECE7A9
-F56296C5FB43781E63F36B0E1D34BB748EFF35E1953941F94D1A9B0FA474FD68B47183F2AC53A63F
-9F1D30B9B89C5FE54C3765B43DB403D57994701C133E42B950D9BB1CA202F15B5E590EE75598FAE4
-3D5CF1546572770BBA9A6373F100CDC61DB4E5EBBE0A93E0E51C86005E333F69110B1C8E492F2BF2
-52CADD5B73E7D3EBB53E759353F1EF3C9B8B39C230D13AB7158A5D92EE4C452F81F6DFC18803280A
-A023832FD0DCB482CE5AF615C952BC3F7E58F6417D69775FC7C0D5B405AAC632857736ACF32B2EE0
-F2A2C0F3B3CAD483C614505BE94706322F2A2830FC5AB592907D0291ED1873377E7A6158140C2CDB
-1B0E27EEC9CA50176102200992308045CCB5A169B61EA0546778B8D280737319046716604945A21F
-2A1CB9E15E3A5DB31E0FB5A3B0AFDFDF6F3424B7536D473F9756CA3694DEE4301FB1AB1AE47128F8
-D2B461C051C1B999DBB010E78DD13AFCBBA6F7D5226D540527F17881A18F551B3EEF76A7E28B4FDD
-879381A2217EF2FF9F9982E9EA70AD2003B862D7C36D57C5FF9FBEAAB56040FEE973EFC3B34D8319
-1960010110BA10694C17B7635AE03CC1CD087C0B05522A7A791F0CA34022A3F5860B536D9551BDFD
-BF560A07F63AA4E687407E5E48584E689591F1B52671213E430A708C06A34D2E1D51CFA6B328A122
-007C81B5EB263B967746961BCFC8772F8502DD95898724ABF369B0877F3313A167F3F714023C229C
-5757D4D46FCD9B4AFECD093DCABE52B78132CE9AB6225C9A344C4BF8D96F2C50C4272CB9AA0D606F
-013B2642F8C880E08EA2822C8CF5097D2CDB64932FE195ABD5FDF36D3BE123AEDD8BA2F82A8A628D
-BE3ED6129DC0FDC4BE50D5574AE4FECC65062E70F4703BFECB35EADE196294FE173EA57938679DBA
-6D15448FF44C0D1A903B202439DA93C0B0E612110068F8079219AA89F435E44D0464F54833BEB338
-670BD820D941DF4B31F51B895BEDF833F9C43CB7616DB80F988CE72FD3C12C7D49F740CF85B4766C
-0ED398EB837695D102DEC16E24B7475A0F5DDE88FBF2D6B94F126417C811E8362B9CCC52D8891C13
-C10937AACC228D621D4712CB9DE0BAB60EDE2A97E9292BE04E42E6D3425594DF56931A61E1F96172
-6AF6E6891D63B240E6E79E5BF30C052091D681BA1102409874CFD8EDC3EE2BE331676E31AC00F807
-91D1019BB789CA4F5907F4823B002AF3581448C352BB67D80FDFFCD1C5BEEF60523330AA2C045600
-8F62DEB55E69AC2F86369FAB1ECC90D2487954E61117A90D9269A65DFBDF297EBD29C3DD1F62755F
-8F289C42A534F59650685F8576EA2FC5D26B99B8E3DCD3F1FEEC73131000F99AA9868EA9BAC0B56D
-AE2CF46DA6CC1D18C0AB8D77BECFF7B89992175CBA2E22779C13DB9DF53FF5B1C8FE95E164997D94
-202C37175E562C8622989B075CDCDE173452C064274354D5DB8F7D5A78D48AD4A103B9E47500D08E
-DC7C51C1F3CFA7F43C3686A3C24A7EB5018B0F419961564F87E212CE0A0741AC68D6822C7AB9FD68
-85F5D0B2AC249CB7F50E2353CC4B0A6A24562F564FBBC7090C3FDF1284AB0EC615E0B3FBE132F315
-70C8A65C814F93910AA4BB80D516CB70D2E1D11969238E6F022D628FA2F33A0A15C4EF0CE7F753DF
-80A8AD9494885A1B9ADAE6C38AC9DA6FB0A61696AD3A502630252AD7B574C841117D34BD20BD6581
-217D977B35F5D04E02B933E1E84F5C090F6615AF484D63265D28517BA74BEA8876FDA332A84AEA12
-E6CD82B94AE10A778CD3A216ABC08495EF319F06AD6FF8ADD237D911F846A514FDBFAA8A1EC8E0AA
-9F80F11F1CE615519A4B044F3D1CF1A17D7F3D2174222A5FFA8B39F20197FF6CAF250B6ADBDBF519
-1C525070C8D38220FB501C223F493D80F498621A02EBCCD6EFE914F16B2A435D60C0A1A453E288A5
-3D818FE1EDCA7D55A26A017F2EE47A816E90D6C3FCDF0035EEA307DFB06D2BCCE43458A67354A4ED
-B6E5C57233DE4FBE41ED07EE5EC77A5DFADC4032138DA9E1B74428CAD02A913E40152F8063A774D4
-FDD4070E4B8A6C089F199AF7C529C277E902195DB760D81EC655DFFD1BB283F3C5AA8BB58F2476BC
-797B2892E94414ABBE96D4DB93E280CF7DE23EB852E7CA954D6682A6F1A4BE0507884C2A05AC863D
-2BA73F3B54668397B6C54DC2F4183130AB414875F3C3D8792BF7E5FC4D228DF87748BF0B14178DB7
-E3FFB7891D700A1E9520D778B095DA80E4801F53442D5C073EDEB706A5DB8466FFE7E701ABA9C364
-A37169F585C883A83713A61C9C3BD9336A667EA4E3DB5F4DF6BC6A552BE8D3EF093639EC67E5FF71
-8959F9902477F5AA894ED2D1CD312ED82EE417D95C49C96671B23FB0E1738E892ADFFE62EC1C3D4C
-BEB6CD089C98DE8D247DF7ED17DFA2959D3662F105E8386D75AD308480536959F8E6CF8F2C6937B0
-9F2E8137C811327D6B165ABE46C51834A955FE8306D10033F8C2A34667F13A8BA831CCF52C7A21C1
-3DB92F3E77B55CE291F6190BB1D194A33FD73151C3F61ABD2D8A0C9BDE90E796BD996D2D0094DB2B
-E98657E751BDEEFE8A43EE4501B98F0CC6D80805189438872A60047A8CAA9039893530A3E5F6BD75
-BB466B25165737C939AFF3EA59BFF4A7DB09C2A5B36B8A1F0C6C5E5870C7C9412589877EF44F8428
-4B8A53B5B74315CE72D2EAFC631BC4CC2E5B71DC958B5A6350CB5F615C3A4502E973622E3E18193B
-69572DEF1D02303A375ED60ABA1BC8A179FAA0F221A49078FE15AE13383585FB45FF4D5F3BB3D0F6
-D8BF62E9BD6BAB3C9A7D38C8A5AB0BE57ACDADCBD02B1DC7952D73AEF702D406F62719922BEA96B8
-FDC9B879708E794891C7A0A42F2CCD6812C3F4DB030B5178E3A627C3E77621D312CE4EBE815CD387
-7208FAD92761A5396B67E835222609F823728B1C987857CFEAAE21F2AD5EA9D841212993508091A4
-A2C268BF1D8DA1C650F6AB93995E7C13A3F84DB55748C626FD09C0DA1E3325CCB0BF091E996245BF
-51EB486680162BAE63B6513C74CE83B92359938439921950D713C69324A87BCE67B45A030C9CF10A
-DFA0A82781D49FF224AC57A23C6CB321F95915C5E14E41FA852F66E1E2044A9E7B1DC3BE9E818515
-D28B2C4D2F2210098C39557067062BA4239F2AAE28816D999955910298A450741947A9A1AABCBD8A
-FF3530626089978C87DFC73618C044731B6DB8007739A9699ABC354A6F985E03C11D750B8B9E9AE0
-5436205FAAD1B895B159E2C90562B82A62EA1A7FFB501767DCE2B11C51D55A17529EF5ADF0A0EE9A
-96D0E7E89F68E50EED813836531B4B46E9071E84AA413F4135CC882CE832BF78ECFA7CAB0C9F64EB
-92C86DFCD1152BB7D4AB33831AA0C139B555967F6346068D5C3351A7A4368EEBD2933E6B9F789DAF
-37EF536FCF965C397AF1B7F98AF864B301F3F440B7ACF704B59540453678FD6C1504519481893812
-3E2F47B265EC4F5CF2172D394543D84CD4281165CBEB11349B315A85DEB2D1699507B0C8C110C726
-62EA2959C4962FF093AA5EE6F21F89B3CCB0149CEFEF1855B9A48D28BB363416C015A1F4EA1975C3
-D8807F616C5817C8162536176F464A198EBEE6C97029F15F414275A39B8219128B8C8542E9483550
-7FC2D3908BB0EC375771280B9EBE87E827811418EF93E52EF70546891BFC0FB34969FD7DEA4CE752
-4D9EEFF2B46BED908C0FB2E02EFC1D1624642EAEA1CAC1EB4841E020532E88E59AC890E6C3F44734
-B99722E9816402D1D0FDF8045C5481EC055100836EBFB48E9FBC392143032C909853C9BA38A19363
-141BED09DAF02FDF4E7CC9808321CD0708A1B45270BFFCC3A0D7C27F7E781713D5DECE82C72ED303
-86B02D14575A1A6447547ECC7FAAC1BDFF332C92984758E242256C054656CDD2C45D46E67AEC6F83
-9F95D74E222A6EAE12EFAAB723A7C816D4E42D4ED2725A794743F67597F3DB8CCDDE45BAABC25726
-B851E02E56341EBE69E4D91F2A233583EC816F18A1DECBDA4AB69320F55E730617360FCFB8AC2D2B
-737675B406297F7F8C4BC370CB084C22BFEC5FEF02E9AB290282F7B153F0A4B1AE569F1E52371A43
-46A748DDE09336CAD1F5337FC3D7CF0677091E59480AB15021E023E356B0E1BAC6C6471AD53625C7
-0206C338536F4D0D40733AB217E2297F86B593717C61458B6C93A16027CC886A8CFDC01EF19C34C9
-A608B95A84B6A2E31454BC03C10FA55CDCB7B1EB7DC16AC1E93981A46DECD7E7F00638DCAC568744
-69A2D9B45CBC81398727E4ED3DB5DB31965F358D8179CBF934EE2C4D652C9CC211807F070C80E3A8
-222B4C31FFEC8DFB9EE07A94C973462254BC1B1581903EE6F9AD91524A787129A63FCE048B45BBE6
-855826750C586B6B23B805FEC3E7AAAC079576949A06F422FC2C826BDB78AE96135E9E2C20C2B2EF
-F6171D610B2EB8635ACAB7C5C5ED9C9FFC26CD54D2FD4CB9E4294E178CECA1E16CC8E3FC06518BD1
-6F4D63AE2B435753538834CDD9D8AE7DE624006CE688938031336351A6578C304C2E5480A3FCB43A
-8BEE4953DABC30558B7790C6E7A6F0F9FFA557C50417407AC6A0DDA1E736F7070BC89455FC293453
-3DB004AA9070734C8C2608A07330E421A0220DAB99F8A77489132F6413ADB9EA637F3B75948050E6
-67276A55BEB09D4153DC126BBDBE0DB9298AC799A943D72AFB769BFA1488D311BEB86A907EC9385A
-AE4F77835DFFE4389E3D9ADED1B08BBC2B1ED6084B3D1074A326CCBF38E06BD026919107BD03BD9C
-30470DB779508DFE0DC82DFFD2DED749E872EB7EB9DDF509D5319865070DD76846C34E4E43691AF4
-29AA40DB4BF2CDD50B275589987D8081F7C5A0461AA5D1455A660178A94A0BA0DCB69C3CEBF5EE04
-26D6534F6F919D9795AD6A0E1A1F452AF3B4CB2EA54D6011FA809132421D111EFC51174E223AB6A1
-3596411A9723079231B050CEDAE7659CF168C39AEA9C6902C2CD37D25492CEE00096EDD63DC7643B
-667FDFDE5B595DC54F0A72C2650E1E46990584C78A5CEF9BFC3C5F88CFB0C49CD6CADD9DBA675177
-D601927D75C6902B55AAED0E9E3CB52A577C887D581B3CE6201A1C77C9546CEE5A13B92963337F17
-070E2BF9F5C5E86B84225863874618AA50F4DE855DE567BF2AB7163944ED43DBD7F4BBC0E1623180
-7C43DCB47B2EB694E6FEDCFBE26194D2D9943A1BFE32AA1E5305F5E341EA021F91532162978DD1B8
-C5295A5E7551E2DEE46DC2347C6B32197AF430AF3BB676A53BCA9BD1EA88678377DC0A9A86E2AB6D
-E29E3E261BFD5573C66FB5687BA9C0544D894A759866B066E1DB5C66E60AE071CC3A1C4AE40197CD
-E4EC723F7B80137619DEDC99AF57A5497D6E03C1C9E672E74F48F6C213A3CFACF2699CAE72345A51
-C71C1D69348DE5BC5F443EC0EADE1E76A8A33066922CF3869E3C1D26A3B34E540DC08EA4DA2DDE3E
-EB17C16790DA4EF1A3A76D71D34B788A87838BF2A5A3DB8176F9C097D2320050A79EA6C4A94926DA
-11ABCDCD26DBA09FD33F30AEED977E8B5AD928F3967F607628859429DCB4ECEC7DA3411BE35A0385
-1017B535985632639D378CDCD13B00FE537A49FD9EB6DF1E3AAF5C41EBE35721FA6833C2FE08AA3C
-FFC3477E7FCEBF9EF9F4DAE62FF78F319481C3F1E72999C8A493EC6EE295316B58A5CD62FFAB62C8
-96E521B678342F04BCE1613CF7F6778CBF5227BA20504500D743270771953ACBD5C6586432F3FA6C
-0987BAD33B88BC6C15D29C4B3CC54A9DD72A2357AA5BAEB2CB057CDCE72DC80CC98C62B16AC50B4C
-6A7641379B766CDDF990DBB2FC7F9CDBBA755B6E3DEA438FD6699C30A99A8B3178E6D613AA938120
-835E517431D28114BCA1AB745C11FE6E52ADB82B9D3D53A33BCC49740C93017D9531ECF43831359C
-5C93CB0E926DB440B139E3125CC2E069B1CF6D96EF68407F32DB517242C3AE0BC6723E560B0F45FC
-7F87A5E44E1751C8B7F9F669C24AD5CF16F84FB03BA121B86B0694234D8F2C9C947269AF96FCA08A
-78F736E4E04ACEA44C5BAAFDE360FCD8BA6A59724CA86160A5527FD564468123D302DB45173C1B21
-6B01DC5B6D3415B13FBDBBD3121A5493374B3357EFB131CABFE5087AA1D2C7472B0377066B3632C8
-2073C6A846285CC953A8F28E131CF587B35217EE498D9A1DB57B063CE068DAF55D8CC1771C0C3099
-9CA4FDC5D67BE4E7E69418F6334BC6149000821B89A7437CCDF9A6A0ED702D5968F1E04F7E4FE9FE
-C9D1E994885CB624035BBC5426CB8EDF0456828F8EEE75BE491B45FAC192A405EBA25CAA4F4C66C0
-DC234D7B417628DA5276C08260BE512B2432256C401A66E3B583E69D23E9FD278CD5F2178544D054
-16B9B4F61A88A4728AF2CEED07C08E207F31D644E8E3BA1E4E2F9D8E30936BCB9C6AEB54E37DB46B
-D64F2ECC1021336D0564DF0F18E5A6B6BA470233D8D41FDD9D1079706EA685B6D8A740570BFB78E3
-984BB155C3155C69BCCCB41CB51975EEA1C1B4294CB546CFB03DC31BF86EC3BCB1977E8F94A771CA
-B09DE12A82F1D6C791FA7800E5A21DF81C9C8FCDA78622ABE75B54AEEA747AA4F26D563200992E33
-7231A430137C720A17D44F3AD6CFFE63B2DE12D3184BD3E151F955786B8DDCCCB290C42718F3A219
-1759DF76371C2FC177544A6C425CAB14AAAB31628A9CF9D71B5257AFF0D59843989CF0D747375A26
-DC9ED29B66AC2147DA0168306C48C2484C70CA92F33C0C138F92F276F5EAF5EA3082A8A1CB12DB66
-1633C2F71E3B69918F509060AC949FCD52C36498A2ABB77D139DF1EB33E3B846A7C1BBDCEF5DEECA
-4EF0AD250CEA9C2751E13EF7681E8FAE0491CFA6C144DBAC1FC39D39E76EB12D3EE9CA159AA77D27
-94F0C433345B135BA632F544082BBDC9471E9FA3AED3A7D465AB7158E8AC97F68B1FBC8D368E2350
-45C18EFCCADEE98778D894D96301F903283C5AE355A863BB0DC5809158F7E108662D04A5C1234915
-E7BD5B4C30F9EFA55E702E54F87FCA06FB321507BC57A1E55CC117E21AA4E3A4DFB77C1A949EFE36
-6D93F2BD827EF8CC16D387CA82AC039F77FE995BE6D9AEFC87F8D809E90C1017803BCFA1C737DAD5
-F1A631EBE6894AD20C70791665E7BC71F21C2C3F4462F60FDE75C8A377CF49BE99314663C6ECB538
-B1BF021B2F2174D2B22CF6FAD115EB0ECE8A2E64097A5FB0A2AF666E1EE13276AEC59FD0C9D4BFF2
-3F71E835984E5EEEE36490C54E077AD7355DBC98BDD37DF29B3DDF8C55480B7349C4D17322418705
-796A8C521FFF920DD11773FC44FC631C7D6E9B420D7965D7F62EC7385F2BE30A51E2D796483134F8
-40AEC71FA19ED1272C27F98F2CDC9C7E54DAB585AC1703ED08F5F9E825564902EFD08EDF99DFD494
-44C21FA6BE16CB8A1B6D0C8A5ABF80A50BB8D055483176FD0AA07EBAEAD88FD694F96FEBD60751E5
-C4D8F9BC747D4F4030BCDF9B0370B7A5E0A6923FF60DEA16EF47F886F10CCEE6956ECF41A21F7C59
-6F3BC78299A9657266807E01762B2B2878E551914CA312C2A68D34CD91E4F5115EA1FBE801346E14
-AE529049089B6B0273E258785773A9CE8E4B6C4211CB7C2767319576758F811CBAF3A3FFB41B3130
-6C49F3798B698A47BFA2E3CA0251C4D90C0B02ACA28C611744526906791D9E157E54CE4E1BCF5B68
-6990BA8AB7897D624EF00EAB92CBAC255AE9177DA9F0D86447D35B452CD2F337147B5D3EBBF2B952
-35778A72914EB3707EA78294B3A3BC4ACB19FE87C72AA1D982E4B822F07B115CADF4D3E7EE3D1BA7
-08653BEC6F0A352A0C33252ED0630E7274961896D461EE8BF523D5911BAC1C8AC763E5FB11FDD217
-4E1F129675969C195476C7A5E18A81BF9A11ED9F2336D5301E3BD32174ED5C933E8C85D6272EA218
-52A6F7E2AAB174E0965F73E0EF89E906BAFB181DBCF8B1F5AA0C12D12C6272753C016AFEC2EC9F95
-41B8757874D6F2E061ABBE8B29281677246305B3C41E90418426C575BAA216CEE3C5EC29B2FDEE1C
-77C14FDF940792F48A56AE80AA33E370B037CB28A7373F882022AF378F26B6006A049FD3B35074A8
-65C97D153352ACC156992C00DE26AD21C982C71F0EDCFEB61593BB40FA5F2CEBF23C4FF34A4F4BDB
-73CA273C269242D1C6117262B7C47771F2619FE5710855134A80FA8F92BB2425CF88940CA3450F81
-234ABF2B11775929B12CFF86442B2AA0F4243D324A5983E5D1829775B3C7A111D5622D1C4E2B2A2F
-982FC8A95F789881416DCB34950A393F4F1720D2212F3D343A17683060182355DE9E4718506D76C9
-184F8DAC55788D7E603CFAF4907DDE965A49C323DFF425FE88C09AA4A4D16283F9B14AB9EF1BB885
-A954034710B4A9DA4C88A8A0932B18D139A687303EE562EC9F656F12F3E8F27DAA9C75DB0FA946FD
-0E1A982BB58E040BFC0A49A4AD8CD668493FCB573C849EC5474049A693CBEBD4D79AC7515047CC34
-7A9A7570C90861F3ECFB57B9F53AB9C0D6B05C8C570A8F3C04D58555A45524C98FF091B8F8A422F2
-E0E9E5A7B7FF69F1CEFC13E42F1CA276BCD584516D266BA6838D5E9CA9E9854F50C7D92CAED61AAC
-AF758A7C7BE59C3BAA82BF32B691ACA3E8EB171E08AD22C39FBE586A54E6E4DE2CD86B31138546BB
-8DA5834B2C6E4838547A1B67E651964E43988C8036931088904BBB589CA901E7EBBC094C0DA81E09
-1915D9E46828AD8596FD0FCA39FF12A6C27A359337F973809E81B2E9E3D43B3146F2516667E607FF
-EB9AC80FC95A7B7D4DED551FEE0F3561C70DB2D69ABA96673E39E3397F1C3F8FE5F48BAB8AD6E0ED
-8901F90F6CFF24E80CB5DCAC498506C4D01033E497C1241E413B022227A3264DA68BC3F91B35781F
-A2D018475C199F43CBA7D3A0D5697B45321BAD2C394B207136E1E16B41794975E8903EF2B2E1C33F
-87CF72C325C11EC0B92FD3890ACDF60B521DA32596763BDFCDCA837ADC6F26F129B23CA32F9CD39B
-33E64576970DF3C05B8DCA4BFE2F17E6C5678B84D69494F1DBA9FE0446AE6AFEAA1FF245C07916C7
-B7569E6267C42B459435A1D116CEC665B311E404171774C0ACC8DDE96B0D9167C8CC7D99C4240559
-2D745C4428755500EB4719340D2FC6BC215B67823F69FA949C08B5EC985D7AA87C9AC1F9BCC8994C
-6CBCE6027B7D1E0C22A83A5DE61DBA05D4AF6884C95F46BA7F253E0B2337E312916E163CAF9DB2EC
-56C5425990FE73EE53E42B3BCCA1CF642F02B0C5ABD529B568E9ADFF865B9DC190240AD78AD226ED
-884BED3C285B4CB0E3929E805C67F1318D186504D92085764B70DE6AB5AB6990F181BDA50FC31262
-348D980EC76608CF08176C2502E065AC2D8EA5CF9E2D44E2B70A7DDC7B922047C471DF8A0B2087D1
-106B5BD8A830EC0E53223CE3C96EF56E5541191167860EEA58D696EC357EC55799438C90156BBF2B
-13A0D5C9EE93227746654ED73EA5B9CAB61DAC5BC690F89C87FECAF9AD03BD39E438F43B81D39E07
-E0422F94E8B096AB38C88BC2E1A043811D8141C1A35DD3A6DBE41620E83C8ED3A379CD80D4F9BC30
-41BB44B933DACA7C5D4427AE94A176829F24B5968B713431CB8BD9F53080832C6B784CEA9B515687
-F121983EB9D9C9CE8BD4FA3BEC48AFE64E643B7BD86D8383D07521FE5D091392BE124CCC91113604
-3824B686988E7C83AEBF406D2DA88FD952D0FA9327F4AD04C55FEDBFBFA76ECAE8A176C516479AE1
-467125B7EB3C9E7C5B103BC0C470946346DF271F8EE19DF7E3FF7478C35EE059297F4BF21A5C7B95
-993BE6202E897776952A7ED0613A5CACAFA731FFC633CAB62963150E86EDAC796026CE02EB235B9F
-7A54E0B0C5281567138A612BAFE409A818C216DA8EAC5EDF9D1E3A1E3514AE50735A111B4D2AA083
-4EC6C11E290D58FF340F82F0E079F1C7B3566F2336EAA45BF72BCF88569988DB5F65D4C1E59B50F3
-41E45A899656A0B522847ED567B49CD5284FE50E5F8652CDAC1C076804F2B2185F6A51ED19DD4941
-2E65A0D2DBC844B75E2DF71B009776D9F97A4C6F786EFFEB87A307FB6B912BB659DC2BCC6D509A9F
-BDE87DE8D716040A8551B6CCFB7743978AD992D14D2B85CA052E87326138DB196C24593F8F7ECD6F
-486F85D1666B9DE2ACA6C7900044EE369D223524664A2790B773F9EA26E0A4CDFD709942A44298B8
-249506EB9B77BC887DC0EF947DDDC7CB3CFC6B48F060DBF032A11884E6C226D9D447A5A458CBA325
-D57E144C6DC295262763E7BB8FF6A0CA473EB7661C12E0E8E23EA37E8AB3387B9E54686F3E57765D
-4067E521BC1AFAE52394227793C737C19208803F2F2DA920B553E2AAF94EB992AB17E31B58C15CC4
-AA8A1B444DF5B3E7CD937CF03E1F7FAC63342731B4589F16939D16E8E497A74CDE5686F529E9495E
-1603D74875288CF53271DB9313A4511B104F80B179FCF213558970A002E945281BF3AE51E668DD6D
-13D9E85152747F562CA0B75DDEC8FE9FE31F8D05B0F59E802888A7A4F19B29954A31108D2F041367
-DEBD6AA1CAD856BDD1427E9EFE89956FE28D500CDC6A0CB80A76902A08D0BC6705583243F1DD8020
-749B257EDF4803BCAA653F7FD6D8B91690995BA5EA3EE92FCD367C11601C6B8ADCEDCE67B16C596C
-5D200693AC5FA15D4CC6CE9DF7A71C8A925E99F5085313D60FAD25C1BBAAD28D4AC2B69062D68F39
-0530A976319A3904CEE44DC9451E441AAB4780425440F8C499B81460B5D3E268974145117ED843B1
-71BB14AA84C3A084A7D8E07B9979260675D5CE6534DC176DDB60DDE90F6A3674F67462EF78195F8D
-FF74FB5882B079DEE31FE92816F16CE1A70D07752EA25FAF5000ADF79BBE7D17EB1BD2F9BF6CDBB6
-F078CAF97986442680A8FC4121866F9CE86C385DE34E30D8B9768A0136D9EEF79A4B38EE99CBB9A4
-D32316564C9D56996E2595753EA71BEF684834FD030D38BB100E2332B026B046316A53270A96DAB2
-182E994E91262FB03D1AFFBAD623F1689228409884F91DBA153030870A7BEB2C7EE2DEC51875B137
-33B7929041F8D23A94904BD54DD4BC9B432DD0C78DD81639F46D686FFAD39AAFBD1B6C1A37E248CE
-48F23E12464D5379B4AED0D50B5A41577E6ECB75270E9AD3EA7D0FC09DAB271FB18B51DCFC0069F1
-5D72546E6C51049F3425AD005F88FD7F02042DABE9F097F9D6A076B30D8CD777B1EC12BD163FDABA
-5972EAA61E3C87E9AC007A052B1A3FFE14D7D43C7A0ADC89B1DD4CB4F9C762A84A6C0701494B2D8C
-4E4E1A9245738BE4111805C2F153A20ED9FECF2DCF4C8F7C3BAF84D60454A7403D4F5F81C6404173
-A7BA81BB0CEAECFD493D877465DC5735D43E3102CEC57B8A589182FC65A4704661A9E351FCCBC731
-5A87E62F65D24EEB9CEE979C6E10DBCF5C162ADB926EC8CC9BFFE381F6B8A3AC0A19D1631BEA2938
-731AFC99E8EAA39BC75DDB3A39D01AD8F0BC1838F4D674B9BEE9F6F7BE4D9C8BD97E8D171EFF330C
-15B76614A1FFD25B3BE19E4A201BCC850F926ED51616318C965AD2F0E56F9433B1247C6D5B72EDF3
-D408A3E0674A509BF30BE813A5E669D72B978794683CA8B85E3469EACB167C30F7666DB5E081B81E
-E99ECFBC1704B9646B1A29E4A4CE5654CA8409ADD60145DFC54225BDB8485E39CC98CBC3F38FD0A7
-97E5DFC2099452A2418C6636BD2D5F6B24345ACFA65F4E7DBD2D0AA0C1776A4920B4466C509BB5BC
-7D6627946C4DCB38A27098B7B5BEEDC2B3BA18F927077F71E38644597719652037621BB350BB5369
-DCCC073954026E6438FD8393DDB3630C4473F06D9FB9E422E435566C396B12FDCD5605DFEA232171
-CD8EF298786806E9159B84599C26D4C7D8C3BB064665CDD072E2083190372AA808B2268B3FEC8878
-B6420CA829BCF995DC20E067EE6B8E44D2869D51BA3AEDD1763F7F8D2CFB8EC41E6E9E0129DE5343
-1457960CC51D546B10B8B6CE08A1C2B79FBA448DF9783D815608A16C55E589DCD8EF6B04C66232F4
-7A473973A35618000D79B8173258B7365C9691DDFE47B16EEB08B28F881828B946FB5D6FE10ECC6A
-FC4EA1F762E90B3320403382E42AF4885B183AA48DB5E4DFC9A54E0B4FFBF7C26EB17A4F13B4BB93
-12234434FFF05549E7587BA0373ACB3E31418BFAF400D8938FC6466B94273D1735306AB912AAB13E
-31DA3541C1733E2A7E4DA5B82767D37F3084AA7A7C488CDCA7ABEF77D19E42B4448ABBD346E9BC28
-8ABC4540C0A1CFD0BF46C5BC7454B25E27E9906A3E6CBF678BFECAD1B19B4E42398A210CD567EC35
-FB115D5C0DF0EEECE593982056B0E1D14C292F70B3E049984F8881C8B477956AD3140B4AA22256DA
-AC0D11C4126808B5B9F922BCC5F24A77FF352E2C621A3941AC07A20E550A69C49B1B87D116EE6F2F
-970918F0F1A501166AC4423FC212E4EC8039AC7F9C212D864F418CBB92948FBD588228108FAC1AD1
-837070512305C110F0FC3FAFE6E1529C2BD0DDE868A9EBE5137DFDFC5C12A3D08014BF0EE27B1080
-02AAD6B607F5C5C0F1B1EED3C552919C9A2E97204A8127F97B1066607ECFB47BA95EF2B51F007C29
-3B2F6A63041A9C1120D9CFCD5357222E5B02DFC73CF94CF9B5CB00EAF073E9BF253E30E09B50341E
-57BF245A746EA31BFFD0B00201C34CF0881BBD1006BC9BA7D420A48E53686B598BEDB3449924EBA5
-8D5DB1B1B01AE2BA281D5758C99EFE38ADCE18F7B182FBD0D0622A6EA497A4E7C00C7D17299A2765
-EFD8DE376C214D01A21819451FC04A0277EC84A151FF93903D61C78AB7886911E36E12526ED855AB
-43F6289C1890222602B8EFBF15782B374AC1E580B6E963403D6D15A051DB8558F2E61C0B9476C6DE
-5D4861585CF515CE951732F20D32969F39192FBF1690D242AC04D47E0C53D467D0FE4656B9526C0F
-7F852348B0437737CB0F29ECF9B54A5E17185236DD0C16349C3496F3ABA569EA20E343F6D771210C
-39DC932DC65ECEF94575C6E76902CDF6C8C8361F9C757A2577DA535187FD526699917CFE0AD438C2
-A758727B306BC7979547E68B94E87ED820614BDBC649D469EF6B4E4E3DD2EAEB5F80B22FE576CED2
-56495467C76A75F589460061E03F3A1B065121A5ABE3E2C51148B3DDC9F624C97889AAF7FB84B158
-C015EDA5670746C6359D27B0C2BD65144F2B88A64331816DA904572BE398E015A9924218B3EEF951
-23AABFC3AC8217B7B4F691219A1C9DD0A3EDD5C04E63ACBDE71B423522532561F4B71B7028415C34
-37E346BE728A415596AB749015C1D59BD8328E39A850CB98085B34B57FB52DD1D154F98FEC49B3AE
-BFCB1672762E4D2A1ECF02787F59DF1EBF2625C3631BED849B298C6D226BE4E6EA2AB66A287D2BA9
-2A6C9C612A5F849B3CB3C25F17164BE286F6E4F5E7E4C9EB17BC68AA5EF0190B64696A570442E1D9
-BDD1A30E7692524E30E4B4C3DF84481DCEC6E10E7308E65DE9D90099F3FABB3F4F766BB86CC98594
-6D2003E21287761A7386CD8461615B570BDA015F5EFA23D18E83C325EE444EC166A1A32D9818C2A6
-5A092D44156C06D3FD079B92450B8A491CBB3529DDAC7D95AFE8EAF33777FBB265FEB8A4B9AFF2CE
-CEFFF49AFBDCF6C4197497D3B448866D70EF28D8E4B17E7CE95F43F64BB48C4A73EB84B26650F62D
-3E5199D64DB0B5B87702650ED0B850FD5D16C848D096E4C7E61BC63B2A3ECFC099CD713E12C91A65
-77A88D6F55D348617C7A49890A86EA8FE2045704B5ED529DB128C9B19EE129E5FE6498CC97087F6B
-DE96007C9D01CE9CAF75646E5A5B32BFEAD9362A52223D746943A2D09C536CFAF78E601BC2D2F0B7
-63AD722E3A7AE7069D65F9F2BDED7278511D0120F5EA071D41A69F8C2A2D720D3B24B4BE61C83FFB
-EFFAE21B0560A6FD1A44E53E42E0D10E0E93F421A8A7E167BB65F0D7F1DDE2809FA3CDFD931CCC69
-B119C83238C1C00EC100D8E7AB1C7FB02EDE97073C8A5860371A8132BE391EB1C397B61F93876FEB
-438C288EF2E38DDCD182A5CFBBA994A94A1BF818312CD8234215FCCD7C240A15AC01A885E1179E5D
-7D6305DC2F534BAA141F25EA6A5F356486E5FA0AE3C6980A9F5E8E99E7AE5B95AC42977510970245
-4FC951E4319AE4B1DDC9B07D0998372C0A95ABA6985A4DBE6DC633154FAA30ACE689D36A7F17011B
-F29CEDC58A6692A8B3B0A5742E6CEC2F69B255BCEDA762DEE72F125EBA98891CFF4D88AAC14188A1
-8D81424979C9079E44890D94EE094D4CADDC1C7AC5F6791FAB8849CC0240A579ABD800EFE3AA4EE2
-F78119A3C2806C05C2B1F17940BE73984982D1C0065433A9BD658EA31AC819DA9A11B87475BB565C
-C294B6F302FE3F7752ED9B963C5279B5F1196762D0E12E6DA46FF9A0CADE3876D7DF695D8965CB4B
-47B351FA3F759811269376B2C3134403633FDE27C9B024F6BA81F3E1699CF64A426618428BA6C326
-6BF016C5DAA5FA4CC82FB6DC23FF2D742160518CD3A65ADB38E53F1067076CA1625466E0C64670A1
-564A54CE14DC5C57D24A12283FBCBFFD0FD594AC2A56EE58B552F7586825E4FB1EC23F8221711692
-C8C56F42272B87EBFF3865191F1C11943BB76D8C0CFC53ED452AE49404D2C8193ECC2A7BB8CFBF24
-870ABA38D2CCF7869E9363DC0AD94FACAED5922B324DC3B6FE83E7B34FE29ABC1EAD62B49FFBCB81
-1ADBB5148D5AC2743E3A058386036FADAB6FF071BC1C3B8023F908B6FF48DB0AB1C9C67487C35211
-D40995E1892C8B66AD6C9C6203F6F8B513B11117B10DA8725AB45B4437B5A88A96AF3178D856D601
-196E8162868A83DA64E408FDDEBD14D6591881EA652032CF2F88B3FD6C0479C8F89AC68D14D01AF0
-CEAFD95AD146E68FAE01A07F39E7A0C5E4FFA6D6A91D710827CA5ACFE7D1F946A8D7B67621D60F53
-41F32C12A6EFB03AE5AC5373A382C044A276F6B41C173D0AAAAE0C1DE4C3CC71EC2637225CCBFBD4
-5EAB92BF39357C57195B410F74283585B12B926438AC72AFADAAD2D0FA2CCA728C8E86BD3FE75D47
-B8BEB96AB13B5480F7A3D5741EB51E3E40C21FF2ED7D9221D9877C7D1A8CECF394E4023FCF8C4EFD
-B38B839499FF5CD96A46AB4FDB46F35D3B48B91757C0159328120E93CF1F2739E936E28908FB1947
-1D3AD7F6F1AD2BD1EC364986A411CC1B547D0CA104FBC10B1CA7B638A60E75485574034561DB345D
-DA68415146AAC632DFA34769B6ED7D7D4694E92CBFF4EFB16B55495908102E85E827FC623CF1BBE6
-A13CBF64E878E1A2A159948B5529B75E071744A5F0E50DF18C110B0AF117CE7F33F8C959D4C98CED
-5A9D492AE6F56DA57B0F17495DACB130660BCEFB064FD8309D965ABE8D2BE98F6898C1B7A39CBBE3
-E75DA0FFEF6CC3945CE76DA3BE915546FE8A5310130AE0ACAA9AB73C7E041C00533B4BC7724657AA
-649B9388B791AAC5EABFCDDDEA2CC67A0FD0AE9BE37DF9AD40636538EE55A83F60E9E026C64FBD8B
-220CEB46E67410144A520FCEACA252E8165448F84D8EA083C793AD09B90B3EE83B73FEFC3365C729
-E3C738894B8C01C2F8AEE0CC8B114E1175EFB44CC4C6CEF5C8754B1CC7CEC200AD8BF1189D741CB7
-5BCA4E88BE959E32216AD33F674F49AB20A354CF3969F1611A95D3934E148831AE7C81A7EBE3C524
-4F743E66A82E10D16CC09F8194EA7A596BC5981D833318AB4F7DBF2ABCE543E410B649D18D146F01
-486159683DF61A3F880F9B21EBFAB77E908C6CFC79F89BA5F51114F0BF7C3CCEC7BF0F3B057C3195
-CFBA6908E31E0DF10DF69163C9DA7BABC00E9A580FA7FAC202910615BD479BBF76FB8068630D1EC2
-1CD2926D351E869E16C2CF1E023CF04D4FC61607DAEFEEEDFF5593E6023492F00029E2AE4B4A2C14
-50954EFA2792F32B4934A768F892171245A1E2F034E2B9F39833F1B331A19A386BAACFEC8C929BA6
-B67CD8922BBC9DC005EC3976575D5B0508D0717C6BF11123EA36D8FD37FA77A6F1F5AA84D4AD8D25
-B2C11D1877A6E2F9B74F3B5829FAEFD4F7209CE9785AA6FDE68672554A6F29D8BF03FE108ED90A7F
-58690FAC399A8AD3A26899072B832874DDB629581A51B3325CD9EDFD49E890EA8959DB937DAB83C7
-77F2A426B967AF5888C33A3635B78D647AD6BA441E222C958EA58D61945F781D7EF409771B89B202
-42AD7D07C2EF592CBF413C5FC89EC30FC9EBEE4BC63709AE33B65EE3091CECBE610B847E12C556A2
-79C8B114C3E460822D3330ADFD72BD69F54C08A81848C2002A08326CF3B09B1305490D35AEE59179
-08E1604ECE75BBE811A715AE8AF7EA9C371B322D0428EDF4C893FDEA607E70E1B6F6614947326101
-EAEF18E29BE0557D2A92CF1FC1505E8B434BC368CE07CCAABC0774F8A63E1073FBBCEB3F4052462A
-A9008A1E53F188C9EAE339FABA74AFD6D60F47282CD9FF721F64BD51787F3C13B5A6C5A5F7861171
-0111F5E0471E206D72520F1DFA465F4A23C71DCF99A04CEEF11B0E3BDFC35B7461A60753D3AC26DC
-50A5956C9195A4F5226388E0953DDD03AF128A98F03BDFA0602CBBAA20AB9ECCDF7255962A332E16
-D4380762E498FDA4885C64FF5F9B480DA487C58E78943DF62616E6E2C69EEC8836DFCFA9EBF58938
-A878F3E792E8BD8C5D6DF557A5D82018DBAE1CA9C64BA5AF8E21BE1B6680FC5DB22422220B776E9B
-A0BF1ED2B7212F8BF111EC8C8C77B223C05EB5E5F1CFABD2D037F4BA0F9503E2CD83F4519D180476
-63F09E308883F5DA5228F83045FF41214D2273B2FE0A9017D5E0557BC2A198C35D1E7E81F7965444
-5760CBA1D3F05EA4B90658E53FDF0823BDB1501ED51DA75C47395073D8980D1E3504E3F67DB3259E
-4EE73A87CFD96F84E221796573958D364A51E635FC55478C9CBF9AEA16B7D8C25F2115CFE4B7F598
-54E24968833BA0D64D1D332A666DFA2A3FD71B05A26BAB7DA382907B13DE0B80871DF184D3622B62
-3D7E09BC32A4F6EA2E6DA450A906EAD36D53FDEC7F83E101FEF32F4FAEC581B000686D86A0D3861C
-1E67F18A4C4647F51F978484D9E3100B37BE9D20AE84C085461C1FBF929C669E936659050C2627AC
-1B019837BAA75757F5B0A82E8AE9CF2111931A38BFC94744E2FDE3F8710342AC615286E4ACE7F269
-743AA05463AF537D9416230ECCA859D8C99B7C6E70BE7FE11DB698589BE9E11900C8E9582A4EF5EA
-94B5F62820C90DBC022A620EC536E06CB8BE7526A789996D0E741AAD980880A33800A6FE92286CCD
-02C9CB407EB31FB95D9C9F4AFF38B37087AC582C1F7B64A7C3D2202BDD62E9AEB31BCA85C4CF323F
-03DA9D318B91F78FDC0D266630F7444ED068B55C05461C97552366A82C2E743CEC353D51028FDCF5
-403B3B74D379B82EB69C4380ED40239E15A86B2E5C860891E26781CC111FB5705E3B7C7AF1946006
-54B5FA1B5FC54FD0BA43666E7BABD2C91C859F393ED49F7123EDFB648A3D6152F2C17F7E438C0A63
-8968AC06B4FB3F77F64F358AE063820BD33F0213C85C40E4D97ED100EC2DA1C2E1EA258BF107AF67
-5A9D995F60BFA37222B9C2B325C0052BB8537D2B27DD43A129C7E8FF42757B3AC9B447703D382108
-DA520B8B3BB3E8C7295B776B44ED28F863B8E1F81B0BD1DAEE8A171525D09D2620C04DD3219D880C
-2ECC79282DD7B1772A9CBBCA706909AE8BC7798E6EC7375189B6CFCE8A875849176E5913B85A18FB
-197A33CA4B5B4058603CF1FA79A56856B43D538E9ECE117D99AFA73B57E307364F553644DE01EDB4
-6234EFAC13046B6E047ECC8F63942F20097AD7ACF0A45C0501A95263DE9439A880D6B5C5214D2918
-0A54D7FE9B2E627EF49E189B59FCC78745E878E45B46C0A648955D3EA8C935113D94F92EC963F66C
-F3CF3A526BA71CDF3CD4CA69EFAB08B7389E3390716892A4872BD29DC1E0889A42D7FFB4190E9A8D
-05D84EB9C5741BE6B02716BC75E0106F5F94BD3778BE985E03860D27E44088C3CB2A059DEBC420DC
-E3A8F4087A9548485E616C409AC400DD1C411CE4B6A229D091B253EB68F06E43511EC5AA6ECA4D6E
-4818D6AA2068DA1AEFCA377611BFA816B5215182432D5683294D67A7C1FD76C52233087CA44943EC
-7280005E93145F5E7AE50100C18364E1B36741E9647C4DC1F68A58EC44095920FDCF05532F603717
-80F78420077EF5C24D63E26040CDDFF8DFD65D871DB943F50CDE84900C1372EF33FD8AB9889C82F9
-4F61A0E6842219A0F39EC7B232CBF802C4A744F33159432E827006C7CA77E480A48A9B0E6A876158
-8A3102E3F98A77BBD62A3A23150FD140D3941773BF7CBBA2338FF37B9EB640558A2313E8824E8E62
-0331568A9B76F4897198A709F9313F4AC40827D8C3A71F2ABFF02BFD57D30D0B14012FB5C39B85AF
-540DDA0ADC27A85B31694E8D7B61F9D9B476571022D98F2D768246550A877293F3FF6ED918A498D6
-A600223E1A61890C49ACFB60265867CE9464F9C32C59E94F7641C3873FB4FA6EB237F8ED94579957
-270D6FD640BD9543E683F2372CCD7B60AAD269E03A72C5CDB732B128818D41A6DDD2BC139F7D3911
-F48E1B1D263DD4AE8E4CE1A686F3A00A2CBF48978631CD243566E22E68F8D7397134A3530EA3745E
-4F1EACB4D6A5FD84C3011094F37573F7F9902305020C53926716D4780C6B0A257BF711AD94C83F1D
-41A02C1C7DD203A3E6E4B14EDA2FDBB36B063A3E074495F626B0EEA146D22AC33457F44F41675967
-6D2A0566EC2B726D2F0540ABF225339F02F406D4E7A62E5233DDF20AE7C86CA0CDD561F33C422654
-BF2DC3685CA91BB9D4B09AC8B15A24A99FF56E2894F11F7BB4728FE8F0F5B799F74F475D2D01F61B
-7E9E0E541F7FEB8A557486D7DF2CE50927515D833BCAA1CD9BF7A650BEE9E003A5951C98ED147C4C
-52F64F692AB281984EE65A47E44A4A5FA93D6F18D276D3B01C5E5F6135AC6940524CD713DF4077FB
-4943E8AC927A68489EA52ACF7A854393CD027EB52EA2DC6234EF034F3DC742D6DB5A67FC21D22B97
-146B9C268BA97C30161CE01EDC69A6A1F05EFB0E06F22644E1A368F0E2C0C6C1C832878E0614B74B
-D645F5CB293CFDB7618B837FFF14A1210AA061C8C81867244305B80DAA73CB25A417228E9559E7BD
-52C119B0CCDB7C4DCE7E1B9F7E8EBBCB575E5BD213BDD6DB88769DACB05E5870232F0EF82F448559
-187423409EEF756BA6247493BE24CB1879B5DD822E03D0ADEA1EDBDD83D3FC46759C679B921F0616
-F27212903F728AB44C1784E8A7DCED0DF5625A7D3F48A20FCA34008184CECD145CCD98E31B79E174
-CF107E8F35C40C19D86B40BAEE6164353408801EDF75A619FFC5B6FAF3F3A95F64795CC40C1F8963
-4FD8C13852D265FBCEF834C800AB46E3E8167476B23CDD8AFF6E2F997C99A86A9CB30EF8C853154D
-0D89EEE9B9CDC1B4F27BDA32432A4173B55CA8D9FB50ACB2D886AD8E5862FFD5DFF224BA13C8B8A5
-4A7F1A9F987FBBDBC5A3C3D762A5BE309D5D926AE5093C40AA47B3B1BD828797CBB9BC9FEC9D19EE
-A73D2A39764816113A8EDC6CFA6E605AD578FC8E30ABD600658A49ABCD5AC54655D29C50FDB72070
-169D1B389F114B7C71EF95A80D82AB537AC8C165D47371FC142A51625029A990A577EB1618480D72
-6DA93C98E5C5F24F622A850CDD94BADAEA91D4BC32CD50CE69E9F00E77DEA8EC1D37916398FB7092
-402605359DF08AFE7B99C76C2A7C70383F28A7C000C696F45291BB8F074791798197CAFF1544C76C
-EEA8C9E6D76EDCBD92A86DF889481F3BBFF0865442264F0EA40D3CAA69AE467A08003F9C30FF7F2B
-77E767580575398462D5B1171DD441D8986F33BC7BDA17D413EBB6B7A32642E33F20B284BF3EDED0
-02352FC66C6F7741A542155F4A159CD778BE56B9492CD95115C1A06189A216CFD2E6725965A13DE9
-73765A05114D9A5A4BE0615AF8BF6A5EAFF84468B849954D15BEAE1CDD57C435788B331905C01421
-B50F20B184506A0BEF746330BC98E9C89AAA8F9D102F158043BEB6A682059A1C8B8CF67B2F3D7AF4
-D8BBE086254CDE53765E3226BA2F95AE8063649F9F94BD9519411DAF8A0287307335668190638806
-E29484A4FFBC1E46B1800E03B162C23B1DC0B4C0DD3C7ABED2F00762972EF06EEB9BCDC7B3F39C70
-BE32789D366F073AC3280C273DFF2979507671B3E1E7685A9A4F0FD3867F96DD675BF05F25ED986A
-79249B75F182FD73CDA2A6A66D693E4CC5AFE3402431B2C816DA1486C34BC9DCA4E2D51C868688A7
-787CD10ABB9ACA14B7181369DE89913CD8FAB58FC84519EA2AA14E54B7A8CE474F213E07CF2DE2E8
-88093DEEC937526816B71C96ED75FA9E2EDC0F9E6E84569C12BB8E39AAEDBF546630745553D6084F
-F9524FEC6A7264F88CEB7EC3358E923B392474E3A48865564431662988FEA768CE555AB0DA48BD52
-6A84B0CB17B4584066C1640C1023D91F7869EF0C4D701BE121A6E3C832010427490758AED7A2B30D
-6028F2215AA44E86D852FDC67DA5CCBA79EEA863BAC9EDC2535B66AB0E54EC4D4411390FDEB8D1FB
-C1743F15C3B68DC92A8659E7A892D5E53872EA51EE8CA7EF51103E87C29A2714E907C79DB9CF3744
-1785D2F73A1EE58550111A4D9BCCBEBF2E39CD3B93DCA300FAC3ED1ADD8215301E5766C30C8CF296
-75746C5A77BF1FE3CD75D25CF193DE8D9AF02AF8F7A6E8F84B548058CDD3C6998ED13463FADE7391
-26D83D3CE2C7201F955382832E32C10DCBCCA35835985B9A93F8E3B0208BE6E92428787C47D3808A
-0F77B8F1D76E6BF6A17FF81CDB065180E03809D03638307BD7BF5CEDBF64904E918FC805AC905379
-928B816480F6E3BDEE47042CBA98539DA0E113B1A5F23EAF1A3210BD18561985E6436EAB90395DA4
-77C7A6D7888D2377B3FC4169368357D880CE041E1F7C875E956600DB7D9B35D1EE66BE476E9DD806
-4CC02230276829C2C0A098F051502E828A0CC505AFD8C3DF293DA1508AC4D25866BEEE6BBD5A230E
-9C2DCDD4F06883936381F476DDCD86CCFE15C2CE3C3243E148CBE603B8513A7CE7A6910A66A90B70
-89E5CCD4368BEFFF2BCF8E918BFE0A1B069AB2A914CA7BB91A0AC3B3C0B060FA1A0316F6135E890E
-E549315897C8464496CC6DEA0F7E3AF43FFA4C3281156067582CA255B1D2E80F999A3AC0402BBD17
-01824C3BB524130F5B82A45275807BC2F3A0655EA208F968B297F98C369192C8ACA26BEBA7DC4506
-FBD1305E2EFA4DBE5375281A88EE2D6FC88FC0A755E72934B4B58F6DD3BDAF7171A4A3C776576735
-2492BFA9A7758504750AB7F38754683B70E9E293CB1CD7B23BA62BD7397ABB84D7EDB22EF6C3F58B
-3EEAF656E361747ED04020163253D1CF3F905B5E85F83FFF30AB2778CAE43781667C0F65C8FD404D
-6B9202A99EA76AF9AE1236631550B66B063847180B6DCA832EA8DC4A6EFDB674B5A26552A7C7D54C
-2799C7D4E03C24F661A91103086DE3A90A774A6988347656344CFBA06065AB22476BB09FB68F9928
-C0045F2764AF643CFEF0516D87FDE6DBF93BAE2829B176CB507BB99835E01BAD5E55C2F8798C93FA
-35EB3FEF02CFA31D3D21B030547F86D27B9448D68E2B155A65C742BD2999DAA0C3AED64447B9CC67
-F7AF33B63AFAF25F3CF7EF86657FE8F952288CA4B691D369E8F1935CDA44A180A6767560C2ED3F2F
-CC38B6BD7991D4170C7C566D690A8A25BE03212A80871108D18CCEFF246623E653107631F29227D6
-4754B2208D19F84E547799E691CA473780DDD56AE620CD953D5133D135E3D51F237078FEEBB73714
-54EE633CFE238AEA63F9999E32850E6C197687A0EC4E5908D2A18C5349627E336AB5E3185B218228
-603A4B1852069F5EE849D571B8387DCE1F8F8E9FE94FADEF128BA83BDD245F8C1C27C11F2ED1A8AB
-2D6D601726842CEE744EE7AAC6B6FA16CCAA39DBF5B3B1D47339F31DFA562671A9CF7DDE6915FEF9
-F19B3E068A464DD350A3AD146D1A241673B5112A4A8768F976723E6E184790C0604506C46591BEF2
-106C40789B733331A80740D59ABED39868F80BECC2AA21C400A0BD0CC326D186FFF9EB37680F1EDC
-32AC78F9059280D07B5FF2E354FED545129FA5FA8F3D4317FF21E027602FDB2522F049BB545FF4DA
-60248130F81F4E348373142F3148DED038AFBA818F26D5B49FC02DE9800D894E9239C88EE0EDE431
-F8083697CB0BE3B497473473E5714717C914A1A926730C249413FEA2615EF72BDB0906933387A892
-370F77EEBF62D26CD583EE643B02E323821379C0DC966407D36AE3CDF646B95DEDC7D7FD0F28E950
-78F12DFC0D6400B327B743C548A0A3517A175A7ED963ED756B1E107AE7087E2446BA702CD4E26E2D
-CDC1A8B697108B5B5E81E9F03105F220C72D4AEBC57665887C8C7964089FBE9424120EFDB14D76EE
-F8C6F7A30B13E1AE90CB9D93D2E14BDE47F4A1D05ED5B18D32AA39911B92D24C93976ACEB7EF597A
-75161923A73B2CC761785493D0EEDC08B5AFE95F3C006B41438A0785C962B070DE2BD096CB63B847
-C87539880AA3D3FC5C345E0992D7BE77C6CFF4948617FDDA784CC55652192B0ED775129C4EA4245A
-41BCF3875BE319DA0EE2DAFEFAE920CD2B6C6C2001762F88C0C5C05053025C0349DB17104360FCE1
-5D7F3A8E30ED13155A74FAF91DC77B8AABDD6FBD5A1EAF255DB209D7F2B90822296B5603FB5E2CC9
-5CBC5F7A6044058B8044ADCE73ACFD896177F1F70EAD2F6534DC3AD755AB2BA87126D63CA2E9C441
-DF0965BDDD6BE494E58D6B5057A561D1E31BD38E92CB73C1465AF6B9C001F7229059BCA4104847D1
-639E124E082F7364B56548BF8112D0EB461B316B2449049F6A476D36D6B7C0C1126C08F2E9A1246A
-3B5B21E7C8FAC6E23B82E33A7783E4F31F0240E96E69C9444E7D7A928636CFD086475DF1E0A28464
-81387BB2010655B9F81A0744121699B4905AAEDCC84BC5D5AB3674601DBBB651EDE7B5DF05C8A463
-DAB41F79706D285C4F9063997F7AC8CEF35CAD51FBE5F5BB1B3FA6DA2C3ABF2B3E925581349728D6
-DA0D59C1EF6444539742EE9A23A5727F20CF9377F4F84DEA420607015A30FB14632D084A2DD181BB
-02FC3A84FC499B318156B675B9CA3CCABD87FDB2497C6705FA70EBA43ADDB6CF961B30E8F6AB9F84
-E1DD8D6DB3314B34B7F7AA3BBE19D5BDC75ECADFD8EAE19E07B387A1FC586F0F30DB695926764B54
-0D89F1D854B0FF86528AD9523CAF56371E29498C11AFB2F4D5202670C834E930103F039D13348824
-16A49BF93B84FD3CF1209EEF7D4994C8302436C0794497461C11F5B8BA152BACBCC08AF8A15F4A4D
-F3EFFB7227CA97FC21D2D0356C93390C749CBE9750B821F1A7BCFAE2C8BC6D9A27F844D8AD088320
-79ABF0EAD8ECD4EA72846DFEED021857F33C1ACE4C07BEC90398B629814C498D33BEB375B9A53DA0
-F926FE6E89E70322C72CB2DDBFB16B13EF7A4F50DF783316584C6AC2BD7D9029124933133B2229BF
-74A228868AB30EA5C3E87C78C3F0962199480DBCADBEF53BDDE45849DA857A4FD85B96682F1EDEB8
-5384929DEE4AFAF84C51A09F5D572705673D885070303FDB47DC898F874E103A9E7C1E894115DFDD
-AD81549C7375D4AEDCCE2E52C13E5130B47F206F7C5AFAF1F9EE83DA8188D70B473269CA280A6A02
-DE85300B93D8A4F6B402FB5DF58F1327470CE11CC63ECEF2EFAA396A6680A6746A20382D9529B58E
-7CE684B39AC00F7086BCB47C2230DF0343BED9B9152A61C9826AEF9E00A1452D91305CF05490D4BC
-0BADC9C6FCBFA93FAD52C3A80705A1956890497557C0873EBDCF61CCDD2219354A4F5621AB33B119
-32065C1D990A9B68858331EE7875CAC855F98563B14EF9E1060BEA90F195AFFF94728AE935453438
-DAB35123D0E2699475884DDAFC7307A5CC06920F35341728D85965F5BA86F261CFFCB1E29B429F97
-6970D42D10E6AF6C4B792B4384122AEF2448E22A58D3AA007743C71324EA08D06819FED14AC1F22A
-4F0BE4787BC8738E1CEF240677571C65804ED3E748D72E89C94B6F310BE748FAEA31EE246859CAF7
-A1EA17CCB5B246C87EAB771E2AC5D378650191081514DDC2C66878E3766CB20DC49F630F2743A7FA
-ECBE9DBE9E815A3CB57DADF2BFF5EF2FCE23A56298A30A2E052FEAEFBD698101F9DB992613706693
-CB0EFAF6F60C8BB5E7D0A50B3392B9831EF3A304A846CD4AF431E9F018FCD3A5B16387552D55DAEA
-683D36257418AAA0E7BF8A03ED7BAB114D7C15119E6C71C1946BD7903C1C42E115E954619051B853
-BF05AE316E15E619A7DEE498F771E809D9435969C1056402725EF40C0200E083F3EC6E0EC27B8ED3
-8DFE32EA0E5E156AC36C4BB9AC5ED111A11678339703F1B9299345AEB1F251FCEFA11FB3101CC499
-907DC862B4463D5523B9B25C5B69F70AB6B29CFC1DF1ECAB8227EB3ED1F882E90B12080EE003714D
-403EC43B7B54491446B6A3DD6EB641EFBFEF060C45E873E7398025B1CB7065441F1753028F6F8C49
-A96801C0D598E098EADC96A21117F817B6FD6E6947642F93E22425A00E8F6B592AD50B317B69C0F9
-4047386A45E5EBC9504FE55451A01EB29DDF9A41D4BAD85FC84CE280971E834F06CEF49C8C20ED2C
-EAC889F158CB14A8C070900478804CFF1D1637CC880C81AA287D8382837FFA8F41FF3C9DF2F22CB2
-0044C171E4815D0D0F6C22D19A52114E780CECD71DAF63427782E85E463DCB333789F496340E8CFF
-885A9D9A4250118B439C71C6BE51A9338BE29251AA794EDC67DEEC6337FA63CA9B03C1C9F75E733A
-4A918646E7BC9792486CB5A4BCC5F84FBABDFE338C3792254A3EEA3D88903C2C47B91E076259DCCC
-8BD3DCA90ECCC832C09C45141C6242026BFE309029A562C3EE0FCCDCD40E5CF265ED9C3DE582884E
-0E14819DB98B3AF734B1B3276AC41D43384EBE73003D15CE39FFCC04109583390E470F431B4407F9
-8550E138F96C4564B494E5480F47C853BDD237E27301F55E42A3BED18FADA152572B7B465A581DBF
-E7DB2619365CF16D71BF8F091862B9FCF04BF8D0859A76F46E7B5712F2757EDCE332D3213B8A30AC
-2CE7D7797EEF6F30904906B0805DFA7CA36D32A20D989858497A66CE72491393DD79332003D55C09
-5A5AB5DF761C4BE5C041FA8407263D604E53091F7B6B15496245DBBEE96A63F10FC2978D99E65731
-28689366FE8B0BADA48B50185B861BAD03E3600F22BAD4274F2542B635F6C7944BEFC3BC741BDEF1
-1A8DD659038CB40FEF2E16AD1AE7EBEDB7D9BA15FDCF26355331505A386DD7399FB999535D6061EA
-BC61DD76EF3EB457446F29D0BB6EC2FC0AABAC20B27A3C123C27BC27A76336D0A0A6D456DA070367
-4D959A4AFE428E2206A511BFC80039ECD56E75F69786DA0A8084D81A66644DD98B6018681F1D70AD
-E09BD9BF3D16D68DD5D0A03AE26DCF1552549E459FE190B310A8776B2C8468C14CA8B1B9A7AF2956
-507A3B705AD75A17A0EEA7FE089273353CECD07BB8563465EC8DECA0EB42F43FE3664EB5F31E1D13
-24185539B28D508BCD065ED576D8814ED3FD637D576F027927162344AFB0255A91FFC616948E4E35
-8867E9FC76A9AFFACAEBFFE110808C1532A2BBB0DBEF3F010E45FFC73F228D28F12E98478B27397D
-8F456781ED9E19711DF2E9EECBC3FE61F7493FDF1A59124668A91BE51F122F93DCA4BBD22DEEA339
-E6EDA3D6EBEE03DF958113E1CA49C8398D2C59DA6764882EE3663F62A55AE50A7E91B4FEAD1B11FE
-0D50ACCC5D75F1A515F0C53616A500F1491381DFD0E2477E402AB0CF9F67D501A442629C8593ED5D
-25A72EDB9746B02F2B0F0759CC9CDCB4C9D8B4519C8C617E569B432F0CF6890372AA879CA7DE46E1
-10D95E230A4F0E52CF65811C54365DF4A3E40D819E2FD379B47DA3233D0DEF0EFBCE04AD8BAA3888
-4F6A69FE5C373E38AE0FD0241480F2BE7CCD18AF85916D2703A049779FE7398FC47D348454CF03F2
-2EB3FECC064606957898B5643464845445C25C0C7D685C8DB042AF5D5882174374ACE90081C68678
-9BCA96AC602EB41D317BD652293EE628951875641661EC86A2C40A42E8F0813A861D41A0F5178E55
-43651CA0E99150462DB5EE0010F00DE6D55B0D7FD7EC5BAEA24ED3E90A7D6A0589761922B91A6A91
-3A7FEDDD3B68254D89ECF767CE8E27F966426A8B4FB1B4085384FD09D63E288405B78A646F44C87E
-EE22C8596B13188085479F75F63D3D97A28F9C8306FD207DBFD38DEDF0FFEB7DD80B2A3292DFBF1E
-D605ADF1B33E85B010309E3EC058FCD922B1325FEE71EFF2DBBC2E68DB52D513E024C01D47CF657B
-B61C9734649A4AB63C0AF4720EC3EFCD82DD3CA6E80BB63BCF1B8DE810A0C6C517C63B76FE68C0B2
-86867BE102424FC31C4937048B6F323D039618586FC21731005D949E7D802A430DF8D2F0CE99F2A2
-376C2953EFC4184355E4D12F422C9E1E25C4DF38DEA334DBC89B540E14C61A7769D77115CE8968FB
-76B27D0863CEA2496783114C24D4CC816DA884D953DA3F9B9D3AF8938BC607BF26A071956CA07E6A
-5509EA2F5D80E5CBEB98041B197FAC760976EE75B470DC20AA023BA3F63C2876EB281FF5173BB490
-D6815604517AA1B1FA0631401B3C1A04CA103E2CA4ECCD83874D9CFC8ABC134CC0F9141D9AFA5684
-8BF222342016C556C14B3482482DCE5D0B6EF1AB522AA1812BDD8DD3397E05327EC12748FC480842
-9B97202E24E1DE0C7C0D272C046BA73B37D30930C5DE5A47D96955CB0F5DED8F3AD929A8B42D2839
-0458F5910A0F93610F79EDDB27078943DFE17C716D65F96589769349F3B66AB7B8C004CCC59EF688
-1F745EC7129865A76F9C2D029D4660CCFB4D5F9D412BA3372A27CB175E9D65F759575CF14A5899A8
-D31FF039AC02DBD8391C3397428AC0D5717C005200790785354813C8859BE90E0E17914F6CB9C674
-F1E9A9648657B54E5E1F52756C4F982DF74E73F6E4D40718C71D1D0E2420FB7462FEC9E457C0414A
-96E475C6BE2C10437096FCA0C942E995A9ADA789AB637B648781D32DFB68E62E91C2CE7E13680F8D
-31ECF8C824885FA7618981CD05FB335AA111B409C59EE337DF4E5F9DCC920A5FC0D620DC07F20DAD
-63F4FF5E0EE5A2F390AF1C32122BA7780F210229E5A5E3ED97BC1C3CDDDD456E739CA782EDBF4B81
-0552368E9C734B0C78B0B8E3F8B2DD782862B74318871BB1EF087828CC173D7B049811FCF598B8EF
-DE4D9BC5447F4848C98029C854F3AE461B9D46DDAD8CE67A521F3C811A81A396CB0F80F3C8D8EC88
-30532FB7F9624F7CAE0F8C6DF875073333DEB28AAA90AAF486AB8C932553CE697B885E71EC8E40C7
-835CD5D59A2C695DB9E51216FF9B77A15B0DA63717FF25B05B939E45CF7FBE490E51E9344213B32E
-115C2DE14D76DFD5845088DE645B0E75042A61D82FB1753C445AD0A956A1263E5A096B681D3BC51A
-9FF32EBAFFF7ECA8B59D40F0937EEFF38312AE57462C7BF3B1FE24D2BA8DFE84515270E09063CE3C
-80DF4935E409F62EB4F54AF16A186D4329972B9BDF15FB08461B688ED49928429226CAD9F67C9D63
-6D1375CBB7B08A5631956B7FE29CC9EFA8D75C9E4919C8C2C54F401D2E0D7BFBA40C50CAE214D210
-C6F3EA5802339F63FC4C1C1995787617F3EC2C806CE44CF8E29F76606CD5836F6E5A2E423CD791BE
-CD3F112F25657DFED9366FC4ADF90B685CCE4A5698E5FE16D7542B913FBC01B288DD13F43DB2B1ED
-8CCB80159DBDC90A8132125DF8DF547C4851CA609D1F6F4D647741260E845B457937787827A89E37
-CDA06BB191669AC84B8608EAE132D10177F3FC384980F3A6E439B048A38D0D6B9CEF09F3F2D732AA
-71BD058169D6D0F8C9D146D9DA046774027559A8B3843F6116B418427E78476AD8F0F81E8A6B1209
-8060FF7DD686503F972D6C42FD6CC29C083AC3D72E3751F21D2E44A572EEC80E81EE44C90FAA7AFA
-BCD3ECEB98FD4068F6C3A4DED0E6CEC523C9A0054D1FC2A8D61A4A26F9BC250B8F302416924AB22E
-722297888B85B9C12F8DFD2A744CBD143F9B2514C1CBE988D9CB4E77D90B2EFD5C2A528355A35F7C
-4AF039C7D1D756305967B847D4ACBB81263D4992C001E2A262B9FEE2D1F5022BE5B15E1D8F1D67BC
-52227344EE912C018CB73E5F47CED54FD202627777BB77AACF3EE6B22706FB2FA9062BEE87E22CD2
-802E7706322648DAA0C624EA885430175F746E1F536F9A8E1C610C4A761D07248426DB63C9319A88
-A3FA449C3FB8AC94C6003C745E6BAD717A3B2EA3862D1E08512A98E57772A62F85F1E2FFBA40E2EE
-43AEC11203DA9CE5AFBF673436F2DB6AF85BBE89D802F7A9E5FA25A408DB69E51F0577DD26F94CF2
-BA2FC53EDDD6FBEB534AF15F74F66EF8D14E7FF77D8A5D284C8202DD5A6053CEAA606BF925992382
-5EF4EFFAA8D878652A4CAF2EE43ED26BF3590402686C876F86C1AE95046E527617CDD3C429BD4CC3
-F9654D2C76DD4102471FF746FA9FA379B16DF96BFE3836D43FCC0B8E95120C27370049ACA4AC313E
-1D50D72D1814F2566B8B29FA9C9C20D0488743722A766436776783B939171FFFA00E04805A8B5821
-4D4F114F7B9C3C17CE7486AEA2BCC895ECDE809502BDE57981318A93F23016F056A421B733C4590E
-34AB08BB348DA4A48F19B6BEFAA1DDD2A49A6C440443028333CDD48C85CD698ADAF3FD8676739E44
-400A98B575BE02350576F96CFA54D4184BA47555B8D12374B86D038D085F7FA51FF4BE2FF5981408
-999B48B2FAF305212ED54B2E371F5A0074CF68D1B0E5CD279BBC8BBAEF694A89A6C43F518D01BB4E
-8402AADF34E96E9B3FCCAB4CBEA2741D3FD9ADF7AF32388F7771845AF99965A6078F4DA335EFA436
-BE36903E33A743C112C0267309F266DD44FA998C9A139704E400B89DAB952EECFE2AC09C82D9F497
-5371CCC27DA37890EC84123193314D8A7A707C217FFC951A547EE5B6D1B7C8ED85BEBD9D3F4B9B09
-6A78E5F7DF88C931E3F396973974454E59340CA51DBFEA1A00DE084B64630E26C6D6A3593B828814
-E27DB0186BF2A87EEF268AA1B135AC09B52CFE53051CBCC88CEC5657BD47F603C8E1A6249161684F
-D9084AC279F57A4F9BBD0A546A87E147B62AC860911969A29B8AA20E3AAAD0079D64E6BF1B0F2CE8
-F0C54C9019207E1B403358253C2FA93A662F63B9380B65C5173C198D86A3D0DC1800D1F5378DA39C
-E8523EB62C6AFAD8A0D7AD1629F2CECAD82B8FDE38975303768C7D3A08B91478EDB3C45A8C6B7725
-EA8596A8ED50B8355FB852FB8966479D12E1086223B1E6523A65FBA81DD106FE254F7309718768AB
-009FF7714A8C363B09DDA73CD3F81BF9C0CD3B0C806CF3B7BBFAB73E46FACAD2480EEBA97AE68EC9
-4D3D79AA01ECC22067858EFFA9D7B7F997ABD2CE5AAA8781E5499E8580C405681CC63EEA53BB47E5
-5ECC5BA2A7A3C5472DF034B022F455C60FFF971B01583A29E211A87F7163187B190B0C1083D696B5
-86E9438FD8BAA45101A5EDCD1BE5AB9A585511089DDAC8DF1B1FDBE582ABD945E67F99ADC4452988
-A9859E39C90EF794C5C4E62997085B7A16A0D90107D08610BA175AD66377345662DA7DA4D8FEF847
-EE5D57E3AC54B928A0957CC1C944E7FF14658FE4A641CD26C61105C0F136A75950764B69CA17509E
-3C19351D456B22C87C55E8DCC4ACD3E150D936333FF36499AD6B02B6403DE0F12901301ECB2EBA10
-324BA72B58206A13B8F37B0AEB12115D0C12879C8EA8A2EB70E85C95434564BA3DFF481C8972587E
-FF74EEBBBAB14FB32B8A84B8FC42EBECA65D25E8C32C19CA5962832BF45DFDA4E871508AEC318495
-0D6DBE89019CEA29E40484C36E33D76B756255531ADD1DB24C03B2A64A47BD8FBA3FDCB1F5B96F8E
-ECB60D5834AB001A70740498720AFB6EC03445CC35B51F7987109618C6C78CBE3041BEDC69B6FB12
-8142CEC5C8683B558AFE3024EFF7A12D04EF59A72E156DF11D33ABA08A8EEB16259DD9529CD003AD
-4EF4137B6FF1654236473DFB93F597331A5E26C7796F528F65C94FE07B3B4F4DD49034FA0CC189DF
-CDFF70C2F1C6D3DF30AE103E2AC5CFF20664AB934CE5C19693292071C93BD590383E0A1931E04D1D
-DD18071DAFB628F5D7472E457BF81D6064EDFA8DEBFF91701C5038CB30865D6122076A336732DBCD
-B0A625548773D0013648A76F07BBDC9C16284D158EC7A105AE37A62279419C3A2F360D0C7A74D6FD
-D0E36DCA2A8BD59945A4196598F690878F84C894852C1811AFEA4BE3B9F6A5219E6628C66669DBD8
-FA9A0CFC2DDE7716A356FC4FB271D8A2CDDC8D4684DE447355BC7A287DC56852A638C5777826EB6E
-B72FACCC86F80BEDDD0D649A883CFEEF4D74750172A90B5DD8252592FCFE19FFAAD868E99562DAEA
-E70514F5DE296EF7B57E6F193737ABB6AA317956584423817E11664A67389197AD9F8F771EA59551
-98C9EE40A0761639E638CE9D890DF468642670235F1373D3AC6B1F43B5777FC0A91A96E095E89BB9
-FD62614DE456CE7AFD6B855112367573FD9FCBBD4A4F9C676E672D62DDD34A9BFE8311B6175A003C
-D143C0DF15E4C0B48C735404086E48AEED6B6FA21FD9F40B84215DFF287F0677904E2DDFDA774A40
-19DF45CC877F553E95A1C65DF1D67BC0C60E0BBA4D205C0DA3DA80229FDD71859F65AD04506B308C
-2B783839F31CFE4425263224F08C5C7E98A2C9D3DC8EA5AC1920F4E395413262E0836BC019A092A0
-DECA104EB2DF6B63392AE8E2136379140DE5FC98B0B69860FE8E31DAB5C5DF7807D19BEA34AC14E0
-ABC6F6519C51247B104DE7D912C5BF6EF11B48FC6DF84512E9F5FEBB48F72FF1B722BDC3BB2E835B
-2E7CC6324BEE84893996B8DC2D4DC2793A4F69C18E63DAF04A7BB5C0A9076E2D5A343E134CC3C89C
-4712900656FFC202E1988526D80C7FD9281FE47FBA8AB5D025E63A84051F6B13167BEC15B346212C
-BD051AFE7A98BE3A2491F3C469718A58E783ED91F90E274FB4978F8719E92A99A1E8F142EA7E1F2C
-46AFF0A2FB50F4D105130CE8EA309B0E480DC8F80D506172B609EA4BB4E2BBAE98D8882814FB273E
-690DA990B60A9CDA20A2418246BD10AE67D846A0FA815AC25858145ADDA106A6778A11877FE59A2A
-BE300D7DB9BBAB31CB5B960B7E4EF91D4600886D8795DC361CBDDDDE05EBD54B1941F426F7FA8399
-270D2F54C998BE92D146227270A8E89AF90C48BAFC4ECCCA01E6322AFC165743475E752F39BDAEC4
-9297290510FFA264342A0AFE2985F85DEEC66C36EB4A1D46683EE7C591A89B81569A8566AFBCA268
-10DDB0970577A76EC8A066622606B08315DB0F2E6C671F3259C73637D773D1A180AAD66ADADA2A65
-95B5F481E5F59E51CBA876FA06D21E1D674CFAB46A02D267E20234324D0891E7847C13C69BFCEEA3
-AC55F2EAF753726BCEB0DE1EECF42ADA964BF9E475953302C2FCA804B70B779482DC9319B40381E0
-9C0096460AE113C19A2DC9157FA138CF0E7758F71008E71D0F7599744D647B09B16E3C795C56EE5B
-D14D8D63E7A512900D67487975EC9CEAEF69572FC3C2342AC5D365E8A4BCF462006B5268ECC15754
-94CAD9A9E7A9E8D9AFFE49AF647C017743EC7CFD5E66F4E4D845A6BBC836849274FBD270CBF263F1
-67DF7E26BA91F21C60F96257C07523AC37A2193010E976965CBD75751E312817C0564E1C5AE0CBA8
-BD12B01122D07020A0852120680985A8AC987BC33BE863EEC52AF13435B6E4048D951F5BCE36526E
-07A8661CF2538F69D1F223BC53BF5896437D1BD46F57D9698F642F0E99C7392D8EE47134E34DCE94
-D392949B418D9821E12CAFA8337323E8469DAC24DADC6AAD4A0DADD7FF65694BA3A27964D28D8EB4
-1179458F91CD3F83B8F119BF5E76184DD29CC4C0718CF7945DCECC993A7A78739363136CEC7F2FB4
-95EEA8CEDB3EBF14373A058758C442939D36774435554851E9519B6F09C31EF26B6CD997DAFA11DA
-91FA9759F17B7079164C5B47B99CCB7A876FBAB1D0D5D1E1A2683CD6914E6B3B755939CEF1C9168D
-30B2738C4349650CF86C90D2542FC9B90F36A494C035A1C86DD716014AA16E6B9EC7AA03B16554BE
-C436511DD3097FAB1FD0CD49EDAB96F74E8FD26400FC748CBD9EE1EEAEE24DA30DB6F8734B52818B
-3A5E510AA5C14E42060898033E7E36CBA9A64042CF94A74E4B52E37AC027C0DC69BAC4944CCE12E7
-AD81AEDCE642EC34CA23E3FF07B8CD35DFF19F33C8D4DBB56A52534F8A827BE47AD4AEDCAD83B273
-38409FD1101C4DFF3F12D3DF79AD1FCE65B2F419451DD059C88BF066413E23DE27D3621DAC2DCC8F
-9F3620DAD0F4B1A6E8C9E6E8ADB552E1EB2C4B2A3B73986AD53ED9ED8911F82F750DF05CD2EBA3E1
-B0DF208A87FB5ED44C3296B803881C1D9776D13350CD29C3F716F0B5A8B8557812024BA70069BE65
-89AA579EADB1F657712DF2570843D7C5FF7F4009D4D232D3547DC8B92ED5C4DB77B76255E661FF8B
-163C6F3856DE5651B597EC7C78B84F0C6C1D6EA3A82286F1D3BB45F708D564E139E81F473C705AB2
-56346328DAA64D1EA8645DC10FD449092E0634D9D7344B2AEC3C75F6B6CD8B3F3867FF3CBB0F556B
-186EE9A7C26BD2D17C8A773055D9D5013BD2F937D697A770C57BDB36D922CB911CD14E7FA14160BE
-19C1A052E297B1A2D682D4BBC9F1D2493BCD7CAD2FA75D904C5F5479179DAF7DC6A4E0D269BACA2C
-4F2430B4C8CF1572FBDC750A05DCD5B09FA3A9CD6F2F2A386E2B3D4D8E257BD43A783B38E63BCEE5
-03EA96FF2C373181744A607F0CB8D281D7DB1A6F4076AA3E2C61914BD796EF8A0873F79F964FDE28
-B792BA99A20C3F1F5ED1FD189FB1867C84DCD6AF43D49420C8B1F3DCE7DBAE71DEB17FE45644DB24
-4F44B1011C7C768EBB7254F4DACA64E9BA87AA7CD0F0C4B2228FFB9EBDCF3DDE4DCED39399FFEB34
-8811547D025320A88B480943A339E2CD2FA3605AAAE87939B1D7901465A1879BCB4C5BE1A179E7E3
-71F1BA2E0844F88AFBAE9B78DCCA47AE8AEDF5BD3D458C7D4A7A08ACCBF880D1F1DC69C636628DF1
-EBDC5C42FF88FF8B66351F3F72D703E52F3CE91E4E00759753A599FDD863788E99858498B66B93E5
-083BC3501C39A9BA928B0D763C28826FD237E949EF0BA85CCA9AA20C405DB6D5612DB718F7B4AD31
-D253AE306E4D7CB615C59AE668D347A4E60FFF7B103F8BD0E7CBDB142A763BE88AB40EEF6B8FC200
-458D728930AD0F94FE52ACBF0657C4907CC7942710AB1FD8BD149A9C9DEF6B8DCA7DB9062AA7B1B0
-11ABB5AAE8B77893A023F9EEEED4A20FBC30F922282A7AE2F1ACFF64151013D6B8AC2EAAE58171A1
-0F80BC18C3BBB5DE1E22EBE6033BF83040629023D74CCBAB3F1923CFA4A6735E1DFA8A1B261FBF1C
-397E26F3BA9C2629CFDA84DFA3D1087EBB19DDA7E2D76E30DC2E15B8821D5291DA1DFD73940E5560
-A8A6DC91BE0075E3ED8D9E8CAC85AC20768D868CD2DC45DEADCC8B59AABE6EE5B2F891E0D7CBAE82
-0F83479332BF9707486698FE196C72EF72B52F54314329FC498171782BF160E1110A19B8208FC591
-EF0F0DA71AF657B43A7CC649A8488B759F7B69134B4F9DCF79DAEBC1CE52CC8015F324C9D46320F4
-4E1551EDA6D86139DFD1DB814CF38A22A89FABB4F75FB896B00E769820F763486E86668253CC466C
-1529A5A924CC337C48448851A381DCEF63A0A302B65203D6571A1DD1FB9DC0C3BD6AEF4891497033
-109CEB5A481BFE442249940EC54096F1D0F2436D9E60495D0ACFF967A741B30467D24AC6B0032213
-18666B951EFD45324987B10BEF4AAA0FF1DF6887377A7F70F555DFB9FF1001C67438A167A00B05D2
-C37065655173A7ED9AE342DFA1497FB1F2FED6098901249A085D31B66DBB6AC25EF16C106B0A6FF3
-47CDF66434DC3F0012DAADE80B942D522CD59AF4C31C1C062157B3D000B9CB86E2AA7B4A5BF31605
-8A0D5A148EAA2C67977FAA0966E4C3454E08DF14C2498AD76E389AF65D2C139A6D8675298C46ACEB
-7DBE6904C373C06E5F71399B2EDA0B40AB96E8BE991DDC39F92F1D24797F9EC9F2FAE25669B43754
-E2498E8EA5C44B176C3FB3E8F7A7A1481275A461F2549AFC4CC73E28417BD8C5212C13105EAB967D
-AA679AE822B9B75B372A99C7E82D6BD83AA2BA00314DA4AC51B9CAA30D80507505BE24BAD0A87C5D
-5D7336EDF60CCA4CEC8201D243C3932F74D171E2409D789AAD0D04A7BB22FB6DC3AB92AE33FFEA89
-7C484D741039F38C317EA396A0FBB9F15A27D87FCBE007558799BAB73212B6E5FAF2080BA074724E
-AC87D88166DBC1464CF5D41B99428851FF1D99246944511CF42C3F9248513E9E51593F253D89C604
-388AD7132D6A169E9DD888E020AC1F8BA606F2E1EBB97977E505D8C40853653D8F398F71CC9F8F9C
-540C22A1E6195BA578AE7262FC845FCCF77B33F33EEF266489AF8B81A615D6A13464BCA58BEC16C2
-3F31D678F14A938BEC31272DAC3CCB1B2DAE577A26BED852FC59843176A5FCFCFA0AB7FB00D2309D
-E55C82CB9049F44FA61F1E313205A76317C4CF529A4456019D970624129681F46A9CD7950B8B5C40
-61853040113C8115319E68B37F88D864C6957DF813B305D09E6A1716B10F26F2EF5C727FC77AABBA
-73E12B5AE6416AB19F6563CE14046B715BD4CB2B1E4D315F42D10F74CDEDE82BCDD524A1A5460921
-9084CF1CDABFE72CC8375478B41614BC18A914903596D6FC2F361EE519F875385F4ECB50F7053127
-4EBDEB14A5DBD906A60817246042E3799BB3AC647CDA7244B7998AE4F3BFBE5C767FD2142E48518A
-4217599E0EC2CF5E86C8C270FF8B02F949EE001D6A439BCB4BC7D7F7C8167C3AE0A7E59687FB8BF6
-F37BEAA164541B8EAFD92E9D152E3FD0F413C99CCC34FCD8AA455A0B55DEC846A5874B94FC95CFF1
-BB386B2A1E22CD1C3914264B6D5BD1746972857C9235052D77A6C0DD3019F8A307FBEE63A3EF12B0
-39B224108276FFA84021F1AC5B745C54690B3FF587B4B1710AC3533A67BCEFC503ADF1F4B62B2910
-B31965E364EEC9CC437CC40181A7320CD52BE9C546B8F1DC824312216C2FD8232E2BB8D40EE2E314
-54C09772A387F9520E331456C269F51A078E6ABD9FB6A68BFD5F557215B0BBD2227B8959CBD1BD4A
-EEAB094DD18E891C61FB00933C0A0D76174D169C0B6445D34C00DC9E06D85EB086C18F3BE27DF734
-EBB9CF078AFF6514438549CBE92A0C0D25EFE4A527D86F158B4E9D8870C7AC5D6C059643A3298079
-CC20398324CA87273B86ED801057D797D91BC3CF2F96C650EE1566CD3CF8656CC577D38B830201BE
-718DC9A494268177A5019546EEEDBF101996BE593631654B638C75A6BAA648CD1E7AA9AC1EA60F4C
-D604071C89DCCFF8B3E430A57ED6DE11C5837E78956ED991058F3646219BEAE94E4D9381A33D48CA
-9B8FF12B54A73FF869D0EEED7E098D80152295E6016CDD809173C57D1F5FCE908A37010AD4C4471A
-53451DE9B4363B63437C374C598F548F145D3D288F42531FCF36A9CDF72521F1C0868FCEEEB1857E
-A983F6B75CE245D875BEAD1BCB8819E5464518E04717B78BD6E335F0AD77B832AF5682062A1E2AC7
-7CD5EDD5DC372EE456C96D38BF8BF348DAC2B4EBBB2440F2CE97B4B337F2E23247E3E8423BFA9237
-CA6CEB6FB93F960CAD894A96F0371168A33222052DE9B3BE04B022AB95C0C243486E35197721FC55
-311DC55F87BC72D09B6C940CA36E6640AEB66C394A5949A604E7F15DCE3A008BB41B0EEF2840A357
-F348443B4DCE064B4C15E5EC52E448C985FAA1C3D6526270B1CC691009959A7620C9A6202619A19B
-E410FF7BD535A8B2640AAA459DFDCB8F2BB35112626497E8A397D4F9E04788322A738DC8907CB643
-15CF63C95809E90D06EF02F72AB04AA61FE02ECCF7E9049FF9F3EF2258A75656178AAAC9F3C2A26C
-001341862D526CC14E92A81BD63502F959066E0BCD659CB9B5A45606153DD77039B8C5D5B13565F0
-0D95A41937CF97089F3938E39659A64DC3D6046D0E9EF66544CAF8A206635DF49926A3EEF3FDBC9D
-CCEA2886EC855F1821C4B9CE1D02A19A11BBBEF43A7D4D536715548A62802F64AF30BBCBEA8C7E55
-AD56C801D8A569C8183615A78CD393CA42C103F155941E845712C335F4ACFC7807202B92A983111A
-ED241BBB8501F15560E8F2157C29752BDCDB274008137277920053D6D7DCDC626A574A82A8A34F1E
-77B2FC8CF7C1A7322F22DFCB450259EB450C52B70DF3584A7C54C813DB41E3DD81253A03B02BC252
-346AF0160716355797B6F8210C453DD7E1E756FF08C7E6A5F4F87605E1DFF35A130D79148A57B7AD
-12D94A129FE3F055CF974EBA09A2B13DEECA2E02EA818A58B81E8743004646C7746110BC61B86ADF
-2D5D8C45A6A5461EB34497FCCD09E711F47BFA742C73F87B257B53F30CB68D151424DC3C210D3E8A
-C67C2495A8236EA2D7985A5E1DEAC699D7B700E6D38EEE2E93B191BAA5A8A2C916D206C63FE63427
-AAAFED2B5784276FC21EEFF2D70E47C8540DCCC3E00134642B703795CD3702631AE2A90E063A218B
-61E5B89BBCFFF84F567E37A31A9B349717A8CDB9C9377215BA838FF7469BC486B64EF2B6D92519C0
-BF0826E3652903F40E400689F5749DF86FE3DE178E21E20EDF9053081F6510D8F19ACD021CBA481C
-484D30EAD3B84ED0190087EE478A17154B243346C3938FDD5340CF6E47B185E64ABDF44F8CBCDB82
-94492B91929BFEB9DA2B033C3ACEE554F0F1A7F8A56DF7C06A3583C1E9C5CA458D40E550FDF3E2F2
-E7BE8312D5FEE98543388EDC8A04CA29F1B82B7AB4ADABBA3F2C331EFF3521B2B92F99C4377AB827
-A989B423750D36ADDD2E286E7F3B694E29B8BC403693C6F7CAB5FE34F1E48C8D41B47831E8C3F5BE
-5ED5142E3C44ACF5180CD41FDA149B1F4AED36812E42BC184227F5034220F74F67830255E1CAEC12
-66DEFA358A87D2E3B4B4E7EF30181570D0B2B43072EE0311C2C157D32EE2BEA8EA4251B59F6B61D2
-B4FDEB654DEB67AA3DFF4AD65B727F0D6B7D61523E4B44D99BA5CD33540F340A35DDD466ABEA4E72
-E504FC9BAAE51D231C33A8CE7DC2970DE4C1FB5B096A3D9C641EF77DC9039886831DDD01C4F21E6E
-168E38BBDDA5F4308C959C7BBF36A42D042DA6862937EB20D4FA2E5927741A58DA5CBFFD9553BEFF
-BD92E6D64871D8B25D9049F4E71970A8FF5557D1DE83DD24286D6C3E4770EE00F9A1A0B0063C9999
-4AEC75E84D6F9C488434D1F3DCFD0A8BEE9ED8257CA97E75E8B1285747184D6D2228EF95D4A0B8DA
-252318ABD35C8398FC6568B294D90AB308A7675F9F160140F0A08C88AD0CA1CA2CF85E4D031CFA3B
-87635F1398EB7DBC666A259F02DB6741D13E11B230025DD6DD64C438409AF109090058151E4DFB8C
-0E9CD65935C4CC063CC6100FDE70896E23E3661C7FC1B8228B26A55903E997F80207EDD8863FA074
-EE4FF23BE585BAF708040C9F8CFDEB42FB8EB71D4CB6D7757E973E4D8C9DDD082712C23F868E1135
-ECD91250BB4335958B07C12FDA75EEB56BE19D1644C1F76A8811C021122619F751CBBFEB1D3DC912
-999017FA163672A1EF754C5CB78962BAAB76EC48461B492FA88F9897170DE857CC8374C8BAE417D4
-C78A56047024731F4A45145F0393A27CAB614A7FF747BBC28E6880D4D01C0A6CF317A1DE5BB5ADFA
-4B5FBFE0C57598C79F25AE57BB797A489D51F85A9B9CF8BEA64293F8FCC43B0D5484DF99DBE19152
-692CE756F6FBE8CE5831CF4B8A5AF47524E272C45C62ACBFBDFE7E60B05BB1A1A6AF0E9210012014
-69B3DBB49EC7B23A363FA68417B7118DCEA71D4ACA2E36F88C6DDEFB70205DF3AB7C74CF65CFD01F
-F85FAF99F172689737331D4C6CFF7A29029772F487FBF625F17BDAD89B4AC076948277B4ED687840
-301016C2B7AD4C6D02F81E88C75B7A04D724E234E38A38269351582245E361A42C75B8256AFD5624
-B558ADA2190F960A896BBAE7A8C57E76DA10DC29E69BBF3AA86214C001A27B39C1D17C548DA5601E
-86A5CF53E7B1896BF003AAE9387ABA9B102EB1E9002DD3754A378F3E49F2C6EECF47EB1BAC2CFCE1
-1AC0C5CB063672D32733563F3E1E891B6073739BC53AAA0043FC45E90E413DFBD4548DD320B681ED
-70A7443A233D79E3F038D26975586E5CDD2115AA614727B1F6DD4024B85CCCFC79D10B7B6AFA789D
-B37BD0E8C423C1A4A8681B5FF3A9FA1F61A46E46C4B1836D1AA41A89264A7F4B1C259E4B10ECDF37
-5BD26A1F412FE01FBDC03368FCAF48AA0EC28B1BD603A6A0D0DADE66D14C9B7285569230FAB76803
-35BE104305E4B748FA99FA31F23991608DFDD2097DA292551136F255051C9F7EEF3FB7C7FDB4E651
-C3D03A4CA357B587245236F4FF3252563F6BE08EF8A3EC09BE2BF27B9120F7D37801F6999EFB1C8A
-D1A08698CC59CEAE2CFCDBF6BD8F94DEC94F7EBF33AF05F52C85760C63950B455510C6AB9398D09A
-C288EFA09E8F631A59B03FBBC75BBDAFD675FFACCCF8ADF71E815A4A49F14BF70E42DB0B7347B528
-4E234C24010E2177DBBD57648E398FA6B54571A37BA8C989503594D03C6E60871A7F964599022154
-02BA168B8D1D2685F5CF8645D5E11A1769473027F42564C2966C10C0DEE1EE1B6975852A4870D492
-83A470E623337544A7CDA5C16FE2855BA2A548511FB4D4FF2E3E78D108E4C734F64EE2F12CC9562C
-BDF363EFAF5201B673AD00583FF108AFF6B68055A5F299452D176EAAFB92C84F114C8C22A05EAD65
-64A3371420EA9E646308DE97D40705E1638DF08704FC90249CBC0D2D3E884A4562CC27370B1A9738
-9D8EFD237E644A7370B8B38ED1C377F522C75F981D878A5E87101E621DF9D85C7207BBE5A87CCB60
-7F93A2E52F660E05C83A7A6CE6D01AB4B62A1EF8DA47CF97D4BBA0FA8EFFA9C0F61A325A97ADA694
-45F23AB1FE27A66C271639F839203040D44B11ECC6E805FBE88843B34C4FD52D1D3C6C70FFED433F
-C04501FC20536ABDFFA429B8DC8192B2D45DD9D646049CBF40719C3D674773F9676F9FCF32817DCB
-55402A72C56D74AA4CE4035687C730B6B44A9CC614BCA5A3FD17C170ED949E588EE45E89E18B0766
-2A6327FB9E8475C43E5DA1B0AF07C23774B19C9EF59281F5D884990D6194170D8293A86DB52A0FE1
-7E88DA82209A00A16BD29B8B2F13FD60AA25FCFA9745F57C8216283C1D6EA1C119CB9B8D57C00419
-5210FFBD56395A3EC2D3098ED38F389EFC0324FD0E55EA339B3892568229D8D3E205A821E8219FCB
-1A7713FCF3450F8BEF976CA0BECA47376A8CA73DF85B340C67EFE4534D459617996526B5E5D3D19E
-17CC5449E5EF2B82B2C4C2131FF8A19FCFE6A186A9840D872D85C40665A7A04E67EE26B8BC9206C3
-5B44C8F8A1AFC3867D96DC6D48BD45063BE25B882E9BC0D0948C18DC870E6925818E1FE17D336217
-F174EB4481F5C0ED37A3BEAFAF4D46F857811B6728BEC461AE6468D87A736572F4FF95B58B04564A
-9D3C22754587DF15495A319D822B838461764B73483C1F7CB930EECC6F7424841EE10E4087E95120
-2FE88A391375C96BEC4480328A54740213F741105B12A39F19808F3823507B88115D468C61B212A8
-ABAE7480E39BA52390A1892C7EC50271156B4E8076FC3ADA222695DF372385DA7B117A29E04CD2B8
-0A320F186D61C963FBDAFE9224E537057C49E82E405196AAB621B5FE4011E1782A747EF935ED8BB1
-1BDA39A141CC0BA42D04AE123383BC95A1D03A85A9440010C3B9613064FFECA76197E10919BA5006
-F35837ED9BCD7DE5E6D968AACB6FC91178091FA467EF6FDEB728E17293DC89DDE5A5261FAA95A2B0
-000FC750E7073900D4D88247DA464613ADC2B3903A6132D96AC0E1C564385FFBF6249DEA76BEA2A9
-9160632DD2FC2B99133E9F2F470F72B45D6F18B45020F604B06CD9174BA3805DB60EB9C5E6A9C789
-ACE76AE9C79C1BD34434E95E501BC968633AF93FF4883C6A596776254C0C74993710327086B2886B
-02FD3E42A725A03459CB36EE34A094139AF5FCF487D3DFE63FAD20BF0DFB60DEEDA2ACCA3510E963
-189D1256EABD81253F7FF9D11263FDBC1DCFDA3D1EA2E52005CE3C605C993231258A717423F64BFE
-EBC34684EFA676358B9B543C2042BEF954829FE3246A879845B30EBACB43D8DD7A20FCFEDF763AD2
-C5D20A798B69E08722DCE6A5762E249ACE3055B650D9E110599EA30DE5C4FE7200D5A8DA9E1FE268
-6350D0DF334877D0B9F6524C552D0B6DFFAE125EC4C18F7547BD51C14288E4ABB7F8A1A00458596C
-390AEEE6FA308AC1F788FAE30D7F8928AFC91D4DE6352D20B19D8D8AB122B7378CB379C5BE7E3CE2
-922FE667EA057B5D7B3F0B51C7BF0C85F87AC2F360D82C38964F4DABCC9104B32F0FB8802235E8E8
-D9A5997D392259074C00AF2CE1D2BF7B8E90E2E2AC34185C68A03BAB8B267778292B227245D7FF86
-70786E3F746F86B9D4D17190DB859A0E144B2A61E6AC9254DE5DBAEF20E2E9DB0B2FF654B996E962
-F55E465DD238BD1643CE59DC2B5A58B1E6E4AE2DDC2D74D79AFF3C34E4E593E051FDA236B79CC0DB
-268D2A89B1878051223BB8F33FF99BA87A4811C0B3BCC01171D0A731EB732ECD8749D27952C27886
-B252F9C3D190419FD2900987A0A255B9753FB7AA70C37462134C467A2C4B7920BED9F9E86F8F98B9
-6D00AF8B05A4BD5F14C2A0D914A9A84160D554FD0718F50ECB5DF5E76623065852DAA74C9AD6DA07
-A119DF12C3577FE276AE551D48B1C5CD8A50E84DEC9CB0840520D78FA7F9A7C2071E28CD20EC7649
-B991F3818CDE295CDB6085F24FCF93147E9F4DD084FBD32525326D2EA147ECD5B6C9D9F4A7166663
-AD18BF234E9CB92FF72138A8A49E73E527E9A6488A4CA808AECABC94D693CD2C0C357D285F65006F
-A2F9197F61FBCA6EF07B013E2B558AB531D2FD270CEE7FA8E467FAB885E90C5884843AA08E2BBFEA
-0AA575643727BA18ACC499FF34E3438645BE2AA71EA491E54687CD305E12BBC94FAEC848311AE816
-495B013BC5075A2D2AE54A7AD7C9105B64356CB51F18C2C28E3A83B9D81A4554DBEC9BEA9A660CF7
-E1BA89E6D4DFB3EEC6A3DE3FCDED9B2D614156EDAE8CFDAD5FF0EFEE31DA3E6A54D94CE9453A1CAA
-D9756D91BE85315F6514BAFBC821EE810BB5D8E1B8F05F64F3F72C4B35D424F7E4DC3AB581B74ADE
-B6D6297CDE7AA8278909F269FED79B7DFD39B1C0338E01D556C4DB9CA3A8578ACE3EC3D743ED4B9C
-0145E4525E8C315F7A1B98584B975C70F0D415708C8CCC13F848B1D36AC8249B73638F95DE0CD27C
-7EFB52BED4339EBDA4812564D7A77416DDF4CC88CFB52D07A252D89353C6826CA1832A153242979B
-6CEE783ABDE65C8B40CF4EA7B42B8DBCC0E02423DD693108006F6A4AEBF053B666C3CB63D1861F86
-EAACD43BB9BB6F2C3A17293C189331D253B447757EE7CBF4518BABB73A1D44874D7F0625E6A013C6
-08E991B4AD17A9ADB36740D25E3E35B459B422F7370B134CDFFF3F3BCC4C32B4E9EBF6A2478013F6
-6933A1FA9403A2F1161EC632F1F04EDF95ED0F33DAD9665D54DD9DB2564E51DA7B65978CAB50D6DC
-1568976E83B056EB0E3A6758518B6E17E9EBFE49B72EB148B472BA144BDC2AC95744C9BF1258F0A2
-E47470AB0EFF90E190A41108914AB8C1ED6B11E0681778521870E80C16AF2AFC723CAD8719ADB62D
-3939D3BC8CC1D8A4E07E9D734F54ECA33D936D2C39D5C8055739C33E53359BD40E576C11E93B4B4C
-122BDBC9B1BBF44243AF4F0BCDBDFADE68C526B5CD74E29CE3F70D62BA83C489034111FE8E4DAEA2
-F01F9D938ABB532DEEAC0E329F42453FF5C15DEC2AEA8C198323C9E8FEA55B3F5DC4751D2E2E16B6
-154E7F2ADD46860E9CA71DC114C99D80E7EA1DAB51E925DE161CEDD678EE6282AFF38E3CD0E65954
-9C970613209955A3F581E1ABE485E56402A3DB0D1E9B8A9DFD05C4B0B7F97FC6D0EED0B69AD6F182
-B1D028ADD2F24463834B13F5C1307F91D363891824E81108E57CFD5211F86400D3E96B107F3B1FE8
-9C4908649D04A46DC3CEE0DE66AF03A7FF9F4DAFECDD6DF4D93784CC899B527784DBE0718050FCE1
-85BDE3F39DEBCDD660B2488D23AB1CFF87B0546D02B48E7B7724C9E87B71BF34B5D6640E0F6ECE47
-B182D41C89461F712849C6CFDB7E3F5EBC1ACDD12D65A422BA362A8FD6CAAC5104CCC5AB5FC04A46
-E4309ACAC83D659DDDA256CCDDD1BFF9AB3622450C4FBC89C82214F00C42FB0311BCB1B722A691ED
-839CAF9024FB1671F18E4639C96D84718C663A4341DEC037175C6BBD288BBF5A0478298CA726567A
-9B74C32A527339C666A294A17F6821CBF243D13EA4B1603C292953308B566653423E7301A032E5D5
-E2B93F1C1434893633DD19501AD12728B5A1D9D36635B589FA2E151140B543D7C5E469AFAE8E80C4
-FC1D9CB6C3823CC1BB7EE40AECB58CBC1465792226B19E0FE79235115F6A3AFE19F98C5DB63D372D
-D7C041CD940F4F79F2474D9CEEA0334FA04A97DC9773064895CF11CF73F11B4684F06E48F4469F6A
-1AEB2CBBC52994DFAB3319DCE3A0C8C2EFA9627496F8CC84D3DF3BDC4FFCB61672780F294F453278
-AEB9262E66486856D37B7647141A82E049364ED3D03F925284A3F1FA3DDF4C0B48B3FE22E7DF9ABA
-239D33CD300FFA8FD4B96192BD568FB18D325CAA8E1F1FD4B27527417B034841FD49E4A77F217062
-3CC8B22101166D80361EB15FA9020D24F61007B0A8274DF9DFCD8E97C85568E76D34AD5DB1779B02
-F034A69CCF9D4EBAA188EB3017EEF5B22A0A552696A574907F695098BD8A4849D5C8311F129447CD
-7A3CF88B8191AEC0AFF30A38A9AB8135608A7829207A7D242F6E1FA7DDA19F5E4C28560D42DB4405
-77CC0C5F5803EEE897103ECA0BD944E320AC26553BEE7852EAA733BD13DF760056B2F5BD1243BEDA
-BC3C1EA0531017D74B47E18F801A60074D6DF849FD0532234545E5B5E112D1E7385341D39A89551C
-80DC2DEAED5D5DA2A4BE5015D297324E92BE64C68428132E6EC654DD4BDCC6640C68835FF8A05E09
-9604B8CD43D3AF2B2FE10C8AFEDEC5A70AF8509D12F662338CBF166D9452CD36331758AC4F4CBD7E
-DD52139AD27DC52569877FE709F297444C4F31899D1945C81B14ABDECBF31DC463A4148F04EC4FB9
-703C158216C0FBE65CCD450043ABFD4E65BF8B28CC148252E9F3E797EA0B57B8721C94CBC2EA602D
-F2C57E87938C887A382D2659226463BC7D6A1DA87F4A341A59BEA458177D3F18D1213539DC0E301F
-6EFE0111FCF6921368BE17CCBB7428127E0C059C2C5ADB2A3F0197F0CEAB77FF7F3C027A8EC3EE76
-CF5C986EB47CB60561C773B3A2DA47B5A35394E29373DBD5C3FF4C9213A89AED77CC4F3FCFC49EF6
-EC7557C521979A546983C106B3627B5FD2D71CC5F08A32BF49332A89C5DA71AFBFB94C949A91220A
-B1F885C981423AF93F73BC1CA4D92D9DBAE3EFE6A76E2DE3D0F74FD3255820636E3F1A6B7C185306
-23C12AF90CDCD2C0A728521E9B639EB6345D1DE8FFFC3B19C72E7A93823DFE3115E9E7BBBEB28CB7
-3DB121AED8920D47D8CC08EA2E472E39A4CAD5881B5C4204F2B732AF9D5189D25ABF413CC78714CB
-01B1D8CA5565169A919DC481F6D2E67F1D490AEBC5CC62A8F62C1A323EBB55ED35AA5C8D6F8B970E
-93205C2701CF4817BDA994FC16197B469ECC5F5E9DDF0FA05640C2E571849571CBD26402B1EB1E80
-3FCF423345007B9B52B13E3B034E8CB3984B925EBFFE719ED4F39F3D0E3343316A6FDC26BDBEA88C
-4366D3B2F851D2B244CC4408251AE2C77348CCE9DD8BB9C89800B572D38C5D1CC34C740BEEBB5DDB
-0A8BB251655FB989840D23205D16311A9FCCF7C85F6DFFEA9704492A4E7A8F6C0BDC29745AAC2ABF
-AEBA02B0E7AEFEB92BA63AB0DF844EB09D505C3DFC1058CE42CDD8043B76398401E1DB862FF9F76C
-05E8BC6260A4443CF494BC1755913D51745BF45ADF2F8C7A9546D7EF4FB11E9D94E4539632C2A396
-06D04480EE459408D7A2A869807A4C01881C1BB21C296A402B5E6E07093D833C3DFF075F4DD426EB
-87B1B8DE16C146DE79F52F5943015331EEB852809CBB8E1D6460AC4D176FE96F8D19F6CCB22ABBBA
-A27C4497D91312C3CFB5BB913B314E43D2EC6AB6897BA7C34CF2CAA6DB4BD69EB5DFCEE0AA917D69
-50E36A68A4C22A60DCC69379D47544A58D640EB10DFE120FCA843B588CA8B94F7869F97609A6FE03
-AC86EC1F7CEAD2EC8E81977D1B946E459DFCFEFE65A7BFF67E66F5F78A45D8DF65AF0146DF74E024
-FC042328886CC1DD7779F49CDBB750345CF83CD678A6A8897577299DEB38AD665DC4F21CE1892A18
-C256F318107DD3E9245C1AD3BC93CEF7B7BF057E33EC9A3F953251261AA3D1A8347261E70A46F777
-3A84F3D4D1A0DF6DD22A96429349DE0D180310E17955B10FBF53220EF6483D03C650A8D5C16D63DA
-F65C21ADCD6C2D0B5D4ADEB2F5526AACF7CF42F9A8BF4832FB2D4F73F3D5FFD984B572232F87BD3E
-59133ED3D2FA19F7856AD812515C74F7D851574019C532C25F8E163E595FC9C83E3E820C3CBF690D
-A62578A980FC0803EB6DB9B1E90E3256BD4650816ABE5EA86CE65C2EB418D0ADDA5F3EA04E17AA8C
-4536CC471AC20236E66ECA3619F161DFEFA485386C30EBB86A7AD930FD0AADF2DA69DCAF26C0F677
-206E2030E3B15B3662C0AD03DBC1636EBFAD1F2F2C37F5FA9856B0198C5B1D80B69C5EFFD94CE071
-5135C649C26B9BA1266B0A5B270CD08A706166C0B320915C87B27DE21DEB5D7E4806F6E700B7A06A
-4E29B629CB40761983E9CA8E34E869ABD04DDA190BFE5A6EE8B22D7E511B84EA584A84211F27AF89
-18DC5AF8A1FF2D360B6BE3CA8E66BA4CD2CE6A25E7E89406684DA83FFBCCCCBFD0844FE3BECD7DE6
-7764C59C022DB1168D585FE25073FE00E30218D1DFE115CA1FC606AFCB04F2A082EF91788B6BD096
-84DEA31F20034A91AB9D971366F97B5009FEFBF1EF0AD941654081B1E8F0B2EA495069A1DDF11DC5
-6857D29533DC857958B49D1A0779732819FD22E437084BD9F3C4F2CDA4D12CA14431937AB63A03F9
-C040AF1D801F367ABDCA7302E18A9050D6026FBA5A5A7FAD44E31593173CDF277CD737D1CEF59FE9
-684252BC0DDD00A80E023B88222494C1C8C0884230AB11D1083225AFDCDBC1E24D4AD5FAB396D2E3
-70E44A7571B230660D510A5076D8E35F7DB72C0566DFC119EE1B8AC3C0406950A3C4A4DA36BDE297
-040A27F70753A87E6CD593DC6BE9962261A99AE5949340C5D45C94A9AA3DD636CE8B497BBB812345
-7C824F443A53B3EE595C38983FE3E07DBDC6ACD55CAE8BE1081AFD4857A5F52A3C925143507A3C37
-F1992CF72ED0D4C48D94AE6CADDC3BC87AC3A3EF035E02181F78449E4B063B0835E827644051551C
-1603E2EAB5875F28FC77BEBA6923428D5521C698C6B7F133B0F689F105FDBAC30A8ED2F29F0255DD
-F8A037B81F04EDF004CBE639C8DB0F94D0C5DB92D34D66C2FED66CF8B895AFC4E659D08388EA44EA
-E83CE459E5BE306750A682B627802990037157339BF142BCB9C08FAFDC3C3FB16DC3544F62C6C7E3
-3E20CC4FC7CA21E2C3F6C546CD78DEE348F1A4C8CB548EF20C049678916771D83ACC9B7B22784AD8
-580134471A3C79BC86B5D6D0D305C32E6204274351C94F9DF45D9B2AD5B5087A89F90D6AA033E4B1
-D1BED022F36147C7ABD2B73134DFFD50907258E610C3B20949E141172B1C6A76DB238C375021CBA6
-645CDC26B717428B5A9B4D3F32A4B1E22FEFF3BB93FD889E1DEF8087718D5E3E650FE4A3330DA9C3
-7E9EB499DF5A342D8BA4C0A033C3347CB25A31BE143ECBF91384F2381E323E7FD3A82A3197C18905
-3200AE2C86B9D01AB0B289841EA7E9E9A26966E0DEF54DE0B85D8DF084B8C590081E444BAF1E1F60
-670FA12AB97159318624F2AF1B5EC7DD83C1073A99398D2143A52D10A13C201FB356BC9E90C63BB0
-BC2D4C42AF4A8B9C8C4D58A1B32E0597C63B3F8B3E893BD3BE8C60231838F1BC78E73A6C8CDD5E7F
-2907F897FC8EE99BFFDA7338BCEFB5AEF950E5549ADFD207AEB15846B509FC57989883642498A381
-1B8E5CDE69C05924EFAEC232FA4CEF302EE3251366ECAEF57D25CFA3B4A9E6397D996F421C900BEB
-CF73B038FE7B16FD0A1172AC2F40D19CE0B02FCEB8BC47DA5344CB933C7FEC950184F78ACB32D3E5
-E290E84BE753B9E7A7BFC4416CCF29D023760C06CDDEF2505806A65E1508990529245059AFD301DB
-669D41BD72BF7A80A9DF66B876B3553FDF4DD38D15289AF7A1AFBC53FFFF135A6348DD784AB42A6C
-0D6AA330B069607E2DF3CBEFCE79D6F63E274C9E73A33EB85246D5EBB986BFA923DF68B2B8CF82AF
-6C33E785F35B25B1D1D614DE85A4F4510ADFE42D75B5FA5408A59ABE53859E28B3D000EB9C6A7D2F
-67C91DD14C895BA87B9CB57B851E5193FCC2A443AF85FE28DF6F39537F23A058BCF81DD8C04CB2C2
-5040300F4C55975E856DCB4E21E2B5481BDCC05601942FB25BB8A6B6F93E2C2A33CD478B44655657
-C557EBB080179EE5D98C5CEBE0B25BFDD952FFEB258014D7A5BC4BCA4F1A23BBA73C454B12960451
-CE1752401B0151CB2E01D5C72595095EAE91D8D3BD55A54A2AEA89239FA176FA7CD6F16BB0733EF6
-CE6E77763A23AAC77DA88C8EFA7BBB2991E472FF2075FB25A75ACFA70A04C28764F4AE4C12051B25
-B120CAD2E3044DA35C1F94135DBD69B10DE147321CBBDC814CE99982AC1D76CE3D3330E41AB31F3C
-76BF89B95EAB81AF3464C732D5B1411D97DB36C9063537F64756F205B16ED7058E2CB1D6946C00A1
-A0CDA9EBBE924BDA6C7D7B605C514A98133907B793C74CA858E82DA3519188CD974B34DAA74265DB
-5BC8550D5F0B1173ACEB87458BCE2AB1F96996C811699A0FE4A9B849D39023725E2B1EE7E426D30A
-6C5C75AE6BCEA6DB41E4EB2035F7F924E6B9F0DCD00EB2BB014222E55FE387FBF5B9B7C04F4688D5
-AE3529FDACB38B5EB0AF5C3A874C1AA6B17CDA8D1E22EEE05A3DA88449200D3D0D002DB86F6C51B3
-37C8E19F338E7BFA01E1202612D50E210140947D5F350E84F790286C3F679A5D7E43BCDC337265C2
-631527FD62D598B7CA1F5835C0441881B97F5197901ECDC4F195BC665A846823D2E41417373F8639
-567B228FE7B73D781F07A361AA49C3E9D80FE5B2A32C4C1E575D194E841967B08D10405FA44EEE28
-47DB9372C5CC931E50469532F1BAF577F680BAB4E30B7E1CFFA8574ABB679789F69A8A1BAC07B7C6
-4EF5CE5EB00E97B36FBEACA9BBA4A13B0293D34BDBC77AD1FF88E5744AF009823BC262511C4724DD
-585E7E17D90F230F7A5861B0DFC42F0B4E49A04EE0EE4DADB908479DEF8372F334C53D2BA5D855CB
-39DC7C9550F9D0F7F77E82D5A59FBBF34BFFE92DC9E6668B68FEEAA4F20053433D6749162BBAC5D0
-D428DCF2D58D49B127FA2E674EDC7D3613B1342F4D0ABD7F4C5B049FBF78E804D5F16505AE7EDCBF
-4D6FA08D72890F5D55199034572AB4B0C9A7E7F6F5A403198864ADF113CAFF5BF9D4AB5B16F81D0F
-C2188FC80875E10034D12E30C0364F8F72797F1AED525A2712A40D44210B813DF5A29C84E9F6D51B
-1D60A5F6F938FAABF878D29E6AB252D95D05FC1ADF5D4CE1C9E585219112112BC6CD5C766411FBD2
-2731794B5DE0A27AC57D3C57926807469C360372BE529098C350EFE2154B87F1205A57A0B04C5206
-CC4FA66B8793BBBE492CC3271FB4F90A28D0066E0D7F63B8DD01549A05AFA5482C29560ABD628568
-75CAC16100087540162473498C14087B29B86B7BFAD693E81765CEC781F3FC80E9C7B410E9B55B88
-114191A1703C638DFBB469ED1DD8254B1407003A319CE74AD419B077F17047A01F0BC0AC8507191B
-F72D77D9333C9DA8C9DA733EFB5305F49CB8C7BC451321ADD7D896395D269DCDFDD084EB3AA70338
-6C0697E962929651164135C094D9BB1C9B949D5EEBD3BB17F02C98C813CCBFB23C2C26218A2F4C63
-9A8B9DFF2C29406037F91938A5E1227310728428B56F48108CDEB33BD3191ECA89F947271983DB77
-6B2BC897A30EECF2601EE3B2A6F0E135397622AAC1F2DF523CE6E6BC720E13CB530CEF4AB9C8273B
-D3D81563AC8A8E6C44A195112DAF824BC7A72FCDC4E129A480717BEB01085DEE65EE4344D0B41EC0
-BCDF842566B1D9F5353B1F6A063FFA6CDB06EF634C8BD5A7A63F991D178F56EACA653DD67685CE49
-E98C7554745A4AC533217662D23E1D6937135D13BC2208EB8D50560A2BAAC319DFAE478B6BA4CA5E
-DA20222F0E9BDB0806320ED1665B54A347DE0C42E9F77842DE4D188E7E824EB2F0D7AD163F05480A
-7FA99C5A603BBC5DBC843774CA66E889B945054C0ED0B1A4BB14324EF901B023C208CB95DFCE9284
-89789690CC45BAB97BE449F8E2F5AA9276C0571303E9788C46E7F789555BFCDC3FA9ED8DA8AD9BA4
-8B3AE09404664391E63A989EF1E24BB464043AA099E4F2D796E352EB277106D8D81BAF2F8562EF46
-BCFD1E0047E8018CBD973021DC1C1D821AF03F083F0B088A62EBCF2BF6C5B0FCFA441AAD1625FDB8
-34F943DD47A5A42EB3E9A5B49641F797C288B799A64897F1346070461B6D535E0C4ED099199C387A
-3176AEDC7DA7E7D9E118E55565092A36F7C74ABF281720C0147F4E4F37D49436466C61FF12764E30
-43D8A6D027E70537164F0E7942F4ACA42BB2CB136177EF7197E76F49AB403F741C0EF902FEBC471A
-D6C627424320A8C3A1F04C310C511B3F91C3937D9ACF459999C18A33F2C852EC38CA806599C728C5
-43714018C65E2C5F430F6270AF52AD71ED38813B60440779455F9529A4A1623CB9F5422B9216F9CD
-BA913B9A1CD95DA225E254E8101216085020660509D03A034B5D7E32E3DB5E5962A9A27711D4C3E2
-9CD84057F7D0D7E8000947AFE896F8523253391D2E11FFFE523366B05C532D5629A90741EAB3D4A7
-31D3F6D4F03FF93233DDF88BB1913ABA22EB9AA6311E3144381DAE29BCC8639958EEE59ACCFA06F3
-5DCCC63E0609F542F3EE5DFB1CF718CA3F328455726F8F65E23ACD970E4049225998371B63E35AE9
-8DC54D8329B8DB0901FAA63129EDE21B158776981D4D094013C096E9CD020315D123C03DEBA21E97
-E4B584B4BC0AF25F5DCE53C2DC0F3E61F99BECAB40799478BE7F5AFD7F68E23EF50AD6645C967EE1
-1206B6E791769428ACDC370D64E4F2B3972E0E4F442297199350663D6E772FC6777A9B9DE215273D
-082CCE4E8678FE9948DC8D5B0E459CD02F1645AC5620F3571A40B4D5A17DF5CFF48B6C843DDEAB5E
-BF58FE13D7DA08E8AA7902119248B3B151DA583101CF80853B0150FE05BDEDBFB50A7FB0F65728C9
-3B9DF48CE8AF1DF1FAC25C1D58E1AD30274A00EB54CF2F16029E1AC0A0919C0655474B9A6936AEE0
-FB74BD185FE7D70BB84786997D34A40326A74356A4AFAEE67B6B26D1C1A7BCFF8697B55C816CCD77
-312C332A55315DC54F9BC0A0F12500E0A76B3936292A3DA2DDF5AA8CBB9B5DC32EDACC4827D684D2
-74E65B8B76FB2C2B19F7D5607523FA953E34BB39032C05B1C1244304606C55660D3CA8607E764EA5
-B03DB7FCAB5CF7788C6E60EC8C449BCAFD90BCABA4132B6CBCCFF16784FB59B36B77CF0A9EA572E4
-CA0A01C725A6CF2E4500CDDF5BACCB9094D48925434F044118CFDC2696AF5FC0CAB3884107ED17B9
-BDE0C0104B1292A1F8C99B06FC4A6360B24480BD59DF0488641899B0F42B1311B582717BA7ECFEE1
-4143654B5371C8B9B2D80685AD38D897AD1E64875C28C7020A84FBB3A3BBEE16617DCB9BC822B7C5
-9C5A18C0CF7E80163ADFB7AA03B7CDE8497C1697D90F2ED90F813095C5B91657FC294EF0E341DB33
-92ED860CB2E0AA09293D0F99AE9EB54C761CA2DB1E51E1CEAEAB276C7BD916C68510D72D9A67468B
-09B3C39A7815628FB126CDFD5EFF59CC8184C0D35A5B5960F824BD175495DD3EB12A4E96008CB13B
-8C5745303E66CF8608FF27C4709C1D854EB79608E52F068FEC0151A74C125EDEAEA555C198FC0802
-7BBBB802835E1D435077AE4B1CCDBF722354F6C572BEB1376D3E342195FA80AC9722EB2F46E44DE0
-5F5A227B731B8D4A4B6EDEF04AF2C5DEC2EEF8FF48C5B18710ADE3DBFA0C956505B6DA9CCB7CBB83
-4DB6CC754948855D833670FF0AC42A4773FEA8322BECEE04CA74AC2D66855132D11A51524488C547
-71B5B7A512796D7D7AE0F9C1FBC9CBDBA0831074F4D200349D0CA40537B92496692766F020AC43AC
-01DB8B2AA2EFA9D21732BE3A315F6CAA402BB2E61D40DDEBDE11276D90C2C601A935C168BE600464
-76ADED15087D54A14C68EECBBBB590927C1E10D291C9285334CB0C80EDBD392BDE4D535EB61F8E76
-41F58AC1DF5B1C5A5D91E3E27E05CAF7EC97ECF0C85B6425197AA856521ED701E5AEB82A7F52A8BD
-7DC97D5B3FB5C99A5DF84D1BAFF89072922509D76BC6EDB15CE5F9EB8F4154BEE1E82020240283BD
-C83A8E49AA9A2649B7955D5C058F2818A63BD0BFE7EACED4A49063C489A626277AE1246F721C9926
-E2A2B6C31045FBCD235F3CC58BC4DD6C57FE998EBD1E9FA5154652BE3A1685BCD2EFAA079A3293F7
-8142A6473822FAB627927EACCD61B3E99C3077103D2D19382BC7EE15BAD0FDE489602D055A01DBBC
-F91A566974559D1B477C209416887053169C3F8F59955BE4DE82B60558CC9AE15602A93F029F6B43
-29E0E62A03982DB32F5229714EFA1491A7B24AEFE18FEBC2C93DFE50B3F641B51BDD33DA38871BF5
-243C17502D00AEA2D9E9734E80A96788D4CF5BC12A42BC386162FC88A7435EE13200C1C2C6CCC5D2
-1A03941007B4C4291BDB711446CEAF27148104BB240357D5EDA0EA5A5CE27D4A83909D75BFC05D75
-F10AA74A6DE37D7DE15C1DDA3AC3045DA6CD48323D904E716B445E5E096FCB379353ED70CF4B6FAC
-102C762711079EFAF13FB74C9B47AF75F3F6BDA2A4647D2AB47ECAB64DA6CC01479F618E8D2D0A36
-45445E8744683CBBC560D47C98078B84206E90EB839B02D37C852B8E284463D4E4D890203C3D5B20
-352110034EAD6BD7F41456B807E1DB1631A9D499E52E9D9853D86728B1A2E511F40F8CA1E4724A0D
-17ECD640B52FF6C66E28693D89765FC391612E5889E77423EC85CBD0A038B6BA98B607701DC0C4B6
-6B3B28C7790A1F1EB8D051DC98276DD9CFEFAB3F65C1C928E48A060C992B392A43E56EAA6DED896D
-EBCE71F8245BE4687F2F1B8FC0F43ECE8DB0BD0AB0811C5CE73CBE336023A0D66168B34A95B4B0A7
-50B3BF1D197E3C042C7914FA731D7831AF798E9429571CBB977E6258244E84701E5FF91D608F98FC
-3D68A4EE5B81D5FF38B6C184F6118B875F022B4CE207DC7B37E1452DFDC591A3E506AE82C7E7BFF0
-011B0A3DBD616A993FBF878FB03B6C9F2055A2B095D29361F8253C2623653687FE0AB98078F6AEE5
-FC2C2BDE0405EABEDB3A33EB7F04CB6837176245F190C6BBBCD64522B12FE7F9CDCF201A1AA8A19A
-7BBC4AC064B4958F44AA0F8DDA23835AD28A1FD0EA105DE2F395385DCCFBE2261DC5A89A23AF606A
-3985E5038706B1FE0910400E16BF008F250F3BDE3AD806C735495D499F16F99275010478FD2127BF
-7CEDD6B5BD505FBE9BD0065B4A7090C9D27CD5B36C3AD33E1B31EB6D44E375003B51B909DA50BD18
-218418B3CD22B43278B144BE78406EAF16C7DF6B6C1C6238004AAB73736B38E168441DC16F9A5CF6
-0793A18633BC43D78674D12D38CC979F7CAADA6EFE807CEA499CB9FE616496682A66E04BBDACE1DC
-112B2156B9B0B20A58A8CB43FF0EEDB99805234B9A5789762AC7D65F5A319C33F4F7438CD15E06BB
-80A7A97E976E8CEC23F4C646A5821880A82B2F1DC27767F090997E91488BFA15064B702F864FCE65
-05D6CEF87D2A0A12B55BA189AF269811E3B8B850C8401F3906C080D32618D9698A766732A40A9FC5
-A94E5BDDA3D028D823D6B603B6D17DD046DE181FD989EA0F80B4CA62F7973E4DF5E032A31FE6BC8F
-5CDA678D4A72787EB8253EA5882C337CDF9AA3E1E7D9536DD09B047CD8962E773F72F6418A3AEF5A
-289B3406C152A50CE7BD4B493FFFC27F6AA52F79EA67E362FD92559AA4F94A2F787F6C735DFADCF2
-F08AAF98B80C53CA5607A94F25F04AA65A70A75937840E73055B3D65FB054C63E2E48E68488C9315
-A13EE949E03E46723C11CC759D222CBFAD2E1A87CAD779B23D38F7E2F660DE1388EAF1CF4D18994D
-75C6CC63F187FDB949940C18B537A0AFB12AC5F67B0283CA5EFE2E764C4369104B9D3B06490D1244
-C41D6085C85F1106082EC9DB84586230511C05C82412D2CDF3DAFBF4759A775628878F997415296B
-C416AC8352A6C6988691FCB831CF95C10BAE691ADB3BA2918B35924BD5C3ACAD8B137397B10AF82B
-479800FE16D472CD0CDBDAAB4F882A0649CF561004B8CB7CA32EC129D0A415BE6CB91DA2B65F44E8
-0D138808A127E851A7FCF927E99DAA0EA2D626B77A16C72E37F058A3B882FC4955DC8CB6312434BD
-3BCED75780B13590BF4FE8D64ACF0371F9FB1D361B05025852AAB9EDA1A0C997CFA58052C454FD45
-1E6C1F194F4D363114E312F6DC35BBAF357A32CD200A3DD9654155134259887D677ACC44F89AA401
-CA27282DF7DC3F2F04A108CBEF2558DCCE28BAC2D87B8D5B7181EA927F61977764F882626D4AB338
-D95C9477C54E9C36012A3CFFBE199EC8120A99D2D70A21F9D9A0354E4EAC7947990E8A6E0601796A
-AF6F14E758CABCABDFBD8204A8E748A3E5FEBA570D36E2BF474C0083229A63F96114182321B2EBE1
-BC76DD193724C4588C1D39D184C332FAEAF4C629F2B3B2F49996E46AA6C9F497428BEA52D58876B0
-DC07B460248BC85CC16773A5DAC36CDE8B152D96057F4EFAAF8B1DC10022038577368057699B3A37
-178A9F1F6C6CC60BAE820B7ADD0717911BD23A6DCDADAFA32473491AA80CFE90F2A77E24CE2826FF
-77B18B869C33FA292FE01D6477765044C7D14A548B28B1360125C6933F05C58B0889390537CDD16F
-8E967E0B38579449DFC1E07389B7069AA8594C5103465D5041CC929268DE863FADB6925B350AA94A
-27D421FB7FCC81C6B35F906F12246B7A5140511A97211BA9BD6831A508E963FE8BE961332F557808
-488F06EAD75E86D60DE3FA2425AE8439ECB9112BC3E4D73747C1C8E87A649919827049832DB0BF6D
-A8C85C9A2592AC002809070900ECAD52A56F1BFD456AFE066509694EAC075788456B0B0BDD7C192D
-321E9FB6AADCAEF00F570F22CD4A5322FBCE8FA98FAEB681940895426270BB4319C11DA67D88552A
-7373398AEC5DA7C9CAA9F3B34581C6E968DAAAB2751CC012199DD897B448986CFFBAE4D412BF9ECB
-F46742715A9569932516259D3B3A5431CD7028E42FC751C434E2B714C718202BF02CAF9B8A2075DE
-922322EA7CFA605C8376FA958B8FBE43031E1026FBE6126A3775F643EA67EBBD97F239FB3C435526
-75CD08B19CA5EBF53B40D728556B4481C7F73EC71CAB0F89E34D60C69B272FADC22E8E7BDC6210DB
-09FDD913E209F49FD28E8712B8508904620250746CA3B21B026EDAE60A2822F59E912E626B93E0D2
-BFB3230DFD0E54E91A1DBA25A609B64D41ABD897A5D21764C351E85F9E87BEAB9E645149AD32AEEB
-B3B1161032C701647115F98C1C2AAECE871862D91D321AB90F3E923B1FDEE00D927F897AA9812373
-6536E2E0700F10053D7E6C589BF66029D794883EAE4C8228941CE96565B50D48887B5314A2E55379
-59638222A6CA54C77CBABD460DAC11B063519AE4F50D93DE41763BA7CFBF4C7724360E750478EB62
-8921DAA065858341958E4F3EB5966C6DD77C05EEECDF4B5F6CF19AB507589B4219377959BD258EC9
-21C34FE1DB003F7D0FEA3E2FD6F5DDB0A2D62CA5A2CD3C7AB457DFF25094EFE04A9E1B9CE7AE3F30
-026B1CB039228D309A22899F6E9B9BFF922E117123347967D7C62C670E2C74579C35989925603022
-C17B1DCE378031ABC9B4B437C7B6E64620932E93189754C01D4B280B8B08699B2CA953AE4823BB9E
-E34133C5C95B3290E1BF010705AD852C72BE87291E1034B09F44A95B6A2F83FEE8841DCF661770AF
-44D0AC7F9CDB280939FC5D953D525E0B41B7BE188D5C794687330CD770D24D9CD53B895A253004E1
-8A31BE4E82B384
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
-/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
-/NimbusMonL-Regu-iso1252 /NimbusMonL-Regu ISO1252Encoding psp_definefont
-/NimbusMonL-ReguObli-iso1252 /NimbusMonL-ReguObli ISO1252Encoding psp_definefont
-295 271 moveto
-0 0 0 setrgbcolor
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 271 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-659 271 moveto
-<6475>
-show
-738 271 moveto
-<66696368696572>
-show
-897 271 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F5352432F7372632F534D4553485F492F534D4553485F47656E5F692E6378782C>
-show
-1898 271 moveto
-0 0 0 setrgbcolor
-<E971756976616C656E74>
-show
-370 331 moveto
-<434F52424120>
-show
-543 331 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572206C652067E96EE97261746575722E>
-show
-294 433 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<23696E636C7564652094534D4553485F4D6178456C656D656E74566F6C756D655F692E68787894>
-show
-294 476 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 520 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 564 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 608 moveto
-<202020202020646F75626C65206C656E6774682C6D6178456C656D656E7473417265612C6D6178
-456C656D656E7473566F6C756D653B>
-show
-294 652 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 696 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 740 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 784 moveto
-<2020202020202020656C73652069662028737472636D70286D794879702D>
-show
-1050 784 moveto
-<3E4765744E616D652C>
-show
-1276 784 moveto
-<944D6178456C656D656E74566F6C756D659429203D3D203029207B>
-show
-294 828 moveto
-<20202020202020202020534D4553483A3A534D4553485F4D6178456C656D656E74566F6C756D65
-5F766172204D4556203D>
-show
-294 872 moveto
-<202020202020202020202020202020202020534D4553483A3A534D4553485F4D6178456C656D65
-6E74566F6C756D653A3A5F6E6172726F7728206D7948797020293B>
-show
-294 916 moveto
-<202020202020202020206D6178456C656D656E74566F6C756D65203D204D45562D>
-show
-1125 916 moveto
-<3E4765744D6178456C656D656E74566F6C756D6528293B>
-show
-294 960 moveto
-<20202020202020202020667072696E7466286465737446696C652C>
-show
-974 960 moveto
-<9425665C6E942C6D6178456C656D656E74566F6C756D65>
-show
-1553 960 moveto
-<293B>
-show
-294 1004 moveto
-<20202020202020207D>
-show
-294 1048 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1092 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1136 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1180 moveto
-<202020202020646F75626C65206C656E6774682C6D6178456C656D656E7473417265612C6D6178
-456C656D656E7473566F6C756D653B>
-show
-294 1224 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1268 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1312 moveto
-<20202020202020202020202020202020202E202020202020202020202020202020202020202020
-20202020202020202020202020202E>
-show
-294 1356 moveto
-<2020202020202020202020656C73652069662028737472636D7028614C696E65>
-show
-1100 1356 moveto
-<2C>
-show
-1125 1356 moveto
-<944D6178456C656D656E74566F6C756D659429203D3D203029207B>
-show
-294 1400 moveto
-<2020202020202020534D4553483A3A534D4553485F4879706F7468657369735F766172206D7948
-7970203D>
-show
-294 1444 moveto
-<2020202020202020202020202020202020746869732D>
-show
-848 1444 moveto
-<3E4372656174654879706F74686573697328614C696E652C73747564794964293B>
-show
-294 1488 moveto
-<2020202020202020534D4553483A3A534D4553485F4D6178456C656D656E74566F6C756D655F76
-6172204D4556203D>
-show
-294 1531 moveto
-<202020202020202020202020202020202020534D4553483A3A534D4553485F4D6178456C656D65
-6E74566F6C756D653A3A5F6E6172726F7728206D7948797020293B>
-show
-294 1575 moveto
-<2020202020202020667363616E66286C6F616446696C652C942573942C614C696E65293B>
-show
-294 1619 moveto
-<20202020202020206D6178456C656D656E74566F6C756D65203D2061746F6628614C696E65293B>
-show
-294 1663 moveto
-<20202020202020204D45562D>
-show
-596 1663 moveto
-<3E5365744D6178456C656D656E74566F6C756D6528>
-show
-1125 1663 moveto
-<6D6178456C656D656E74566F6C756D65>
-show
-1528 1663 moveto
-<293B>
-show
-294 1707 moveto
-<2020202020202020737472696E6720696F72537472696E67203D20>
-show
-974 1707 moveto
-/NimbusMonL-ReguObli-iso1252  findfont 42 -42 matrix scale makefont setfont
-<6F7262>
-show
-1049 1707 moveto
-<2D>
-show
-1074 1707 moveto
-<3E6F626A656374>
-show
-1250 1707 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<746F5F737472696E67284D4556293B>
-show
-294 1751 moveto
-<2020202020202020737072696E7466286F626A65637449642C>
-show
-924 1751 moveto
-<942564942C4D45562D>
-show
-1150 1751 moveto
-<3E47657449642829293B>
-show
-294 1795 moveto
-<2020202020202020534D455348436F7262614F626A5B737472696E6728>
-show
-1024 1795 moveto
-<944879706F5F94>
-show
-1200 1795 moveto
-<292B737472696E67286F626A6563744964295D203D20696F72537472696E673B>
-show
-294 1839 moveto
-<2020202020202020>
-show
-495 1839 moveto
-<7D>
-show
-295 1956 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 1956 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E20646573206669636869657273>
-show
-370 2015 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F5352432F7372632F4472697665724D45442F4472697665724D45445F575F534D44
-535F4D6573682E63787820>
-show
-1672 2015 moveto
-0 0 0 setrgbcolor
-<6574>
-show
-370 2070 moveto
-1 0 0 setrgbcolor
-<534D4553485F5352432F7372632F4472697665724D45442F4472697665724D45445F575F534D45
-534844535F4D6573682E63787820>
-show
-1764 2070 moveto
-0 0 0 setrgbcolor
-<706F7572206C27E96372697475726520E0>
-show
-370 2125 moveto
-<74726176657273>
-show
-551 2125 moveto
-<6C65>
-show
-627 2125 moveto
-<647269766572>
-show
-789 2125 moveto
-<4D4544>
-show
-937 2125 moveto
-<64616E73>
-show
-1072 2125 moveto
-<6C61>
-show
-1150 2125 moveto
-<737472756374757265>
-show
-1370 2125 moveto
-<6465>
-show
-1458 2125 moveto
-<646F6E6EE965>
-show
-1642 2125 moveto
-<534D4453>
-show
-1809 2125 moveto
-<6574>
-show
-1885 2125 moveto
-<534D4553484453>
-show
-370 2180 moveto
-<726573706563746976656D656E742028636573207374727563747572657320736F6E7420696E74
-65726E6573206175206D6F64756C6520534D455348292E>
-show
-294 2282 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<202020202020636173652034>
-show
-596 2282 moveto
-<20>
-show
-621 2282 moveto
-<3A>
-show
-294 2326 moveto
-<2020202020202020656C656D5F49645B375D2E707573685F6261636B28656C656D2D>
-show
-1150 2326 moveto
-<3E47657449442829293B>
-show
-294 2370 moveto
-<20202020202020206E6D61696C6C65735B375D2B2B3B>
-show
-294 2414 moveto
-<2020202020202020627265616B3B>
-show
-294 2458 moveto
-<2020202020207D>
-show
-295 2575 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 2575 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E2064752066696368696572>
-show
-370 2634 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F5352432F7372632F4472697665724D45442F4472697665724D45445F525F534D44
-535F4D6573682E637878>
-show
-1712 2634 moveto
-0 0 0 setrgbcolor
-<706F7572>
-show
-1838 2634 moveto
-<6C61>
-show
-1909 2634 moveto
-<6C656374757265>
-show
-2080 2634 moveto
-<E0>
-show
-370 2689 moveto
-<74726176657273206C6520647269766572204D454420737572206C612073747275637475726520
-646520646F6E6EE965206475206D61696C6C61676520534D44532E>
-show
-280 399 1 1451 rectfill
-2125 399 1 1451 rectfill
-280 399 1846 1 rectfill
-280 1849 1846 1 rectfill
-280 2248 1 220 rectfill
-2125 2248 1 220 rectfill
-280 2248 1846 1 rectfill
-280 2467 1846 1 rectfill
-showpage
-grestore grestore
-%%PageTrailer
-
-%%Page: 5 5
-%%PageBoundingBox: 18 18 577 824
-%%BeginSetup
-%
-%%EndSetup
-%%BeginPageSetup
-%
-gsave
-[0.24 0 0 -0.24 18 824] concat
-gsave
-%%EndPageSetup
-%%BeginResource: font NimbusMonL-Regu
-%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-Regu def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-12 -237 650 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020945 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A2261C63C769D2F4B60FA2C438AD7D199D8E4
-5F7E7C9A605C8CA14E21FCD81C9A515FB8DB6F99604534D06EA9D87FE0FAA852899C9D0595C7A97E
-6C55F79FAC45CD38E87B10D210CE7501E88C8FCD3444354365FB893A12F596AE2C1E70D5819EE0D0
-87D10BF8DA96F3DABD5405D28C4228C6C31BA4052464859640933FEEFD8071C0C84CDD829A9B1D0B
-A01F25A4D50EE2EA2B45160CA6333B2D2800306ED2BEFDFE155E9D9F9342EB8D5B0ADBF2460CCC98
-643FB1287CCD28ABA7B5CAB92EC39EE2E918990372B16F8487EBA30EAE88708B6CF33B6C015D8096
-C7CFE2F139F52052E3925C0D50FD64CE68236D59CB83EF56BFC584150EC38065059F3308AD6F9A99
-F83EF4E6CB13855C8175E31417D190D036B387D3952344A950F4D8C7781B307A094DF1ECAEE4D2C2
-FD747BC6F7F9C6BD0E90C19294F96C8C5CFE88FB34C477574A1B1630B8CC591529E59B20794DA32E
-61DECDA8ABBD1AE956CF74012AA01D42EE01E861B0AA6897C864788AE59DEF43C493246FDB1ACA55
-4C12594BC7B33657A9ECC9E3D1472EF826073F632BE540C35FF6FB40566773F3BB2204D3A579A08C
-CBC844C14B18C350F003B9DA23A570C362D6003893CA32F86F59B829C78EE3188B6E3F7FA81D7F62
-2825C639638DFB78B7AF1F500F5B450FA54DBFA5CBA277C794ECE93275A3DE0B452FDC8DDC2993BA
-A42F28A636008CDCB03EBF71BDCAF35019778993443F88412AD2AD0D7155A3944606463266322DBC
-0244B07DA1E9C27A27B59664E8566D7A54CC03E995AAD008B0A17E2C3EF61F720CE7F7788599C4E4
-4C709CD5C31B11107F16AD70B17B9AFE2E8CD922A7428DAC171427FFAF51067307FAB0ADB530E701
-FD22DA22C4CD3064067BD4F6089C4B2C87937DD426E4E9D2F60E608288BAC9056554D04947E69200
-61E379CF5E81BFD32FD37EFAC1F61CEBEE551B0851516471A7472C60DF89DAA9EB1DC5A67E479745
-3E69B9E22BAF4E3CCA4192D603295B018C4AB69D18DE52DFDF15E96B557F290A4B8C5B1E7A6CACA8
-1F2351B97ADFC36995ABA43803A6E5AC04A3C93495F6D38106B8B144449C07D1358210F9176E1565
-72363CFBDE576BFDF99FA329DD1346E83F79E06CF68250CA57A68931BC7F342AD295D0CBA17AA95B
-B8EEB53EA6E8E660B814E9F857CECB14F44A43288B69A9E7908D55BF19E844359879D28CAEF1C38A
-36420185D20DFB32C2E002202800E8EF3D67C5D50E919657CA958B538D537D503444865331D79BFC
-40312068D72364503BD0CC84B5F30A74D8B5B6A26AF2DB764564FB65A6BA8F9051AE2B4EA458D46A
-4569F30C6E77DC097356770362E6CF3F1661074778EBB44FF7D1E3B64FF75E77E11FE525BB121C65
-46CFD13300CA1F02D571B82A5825E6226D14FDCF27F06D87452A8B6C5DCA658535CEE2A795E58137
-D48E566B69D53A0C3B766E84C51EAA221C46999CC8065ADB2F129D5B630FAB1814C0C33B5AEA0EFB
-B6E994D80941B53079AF96D90A0B924F9B0E319BED9836B8F9053F868363D3CA554CBB181863301F
-8CB940872ED5FA7BD18CE39218B5AD8AC57D0F752D941076B1C64D99BE0DB86D7A6D96510D772EB2
-4C587F11779BD21CFE5BDE1F29C1EF9022B2B8BCD7F91153C845906722477829C40111D810480F3C
-F62DE8DBA7FD86CD236E656618CAF6FC46827FBC4898EA7672F8C9971AFE43E0E01EC8B77D4AF48C
-BF1210E98C1DB15C16D149BFF58AB0270CF015B107A3A50F5DC8F37FFB92EEC8CB6778DDB7CE4AAB
-C464C4AFF654223006A550EB52485A23D2B4AA7198D3CD54418102F1E9A4FBDE37B841E56F5C2C53
-966DB9B66B000E4588282E3FB80C2C519339F0002D2F83C979EDC5827A3B3C8EF8810A0F9DACB6B9
-998E9AF6551F56313DC4011904CB979AA2D32B11A811BC248141E4B9734D9FB7982A5671002D8279
-CAB93ABE057474628DEFC95D43890DB1ED34CFA8A20BDC3D874E7679A396158E522ED0AB969A4E3E
-C7E4474E192590504D54DEB7B260B7935C4E56548A7D121AC1F741F8CDF259EA1B5813175A77A1D2
-D30BA26F65EB765A04C09ED51F69F41551ADF399E6AA2FC09788137BEA4913F17B8EB838C38FB272
-1FDCB55FD65697FF0B850E7D3D1CE266BF90F7EC06A9A0876BDFE767D3A918B092FC78C775F945CF
-1F96E859C03DBF630D9A940939654C3549D8F7921CB94EE23D5A0535DE9DF31EA0F937F860B4F220
-A99ADDFC343D7CF7BFA0B803C12C26403F0DCFFC8EA786D0D8A8D9C367419CA8AE41190CE93A8086
-583A1E6C9D70B612C84D87D2EEAA71EC2DC12F4CDE6A821303D5F6A9BBDB7EEDCD289E80FA3B75F4
-7F481B50719DCF4A142069393593B9AF9CCEEAEC56A35B8787193D7C88113E9E1E221D151E093B01
-9EF89F6118BEC4735103CC8003CC5AD1B6727B3226CD44C497DA7052DD681695DBEC3397F9598C91
-77701C73BF0594CE93F23D50EC5BEE2FB9DA1FC966DF148B27B28EE3C89526DD6625E2887F9FA076
-7C127C609EE315626BC14D274FBEA56528DC06A27B2D476D46E9E7916590B156A5DF04A6CB15E362
-45D77021767B6E5BDFCC679670263FD891446C3371B11BB6E1DF60F960AAB4149D7753E6A5C33810
-C42C8BFF4E935003388506F8278BD7CB672F132E065AE684DCA0B9064D01DD620E7FFDFE04F14277
-EFE8E60159BA0FCA3FE2F28B902D4AC275D19F0AC6971EBE827C4A232D87650D2688345BCA78F879
-077114F0463C5F058107B669566F8171E4E284D278405580F04BFFC9902784216E0C9A17AA9B2935
-E66E18A783F723BE044389B7E9D62AA36818FF2EA406C3C1A9D2F3436F3EE7DB8BE86AFA8DAA6A4B
-1B84611350D8D27605509612B515E16AA843164D5D0805E36A2B9EF74C5F6A0B9D59A04B55697123
-27F4B1B30E9587CD103337639967CBDC655AA46E80D2CFD24BEB50815B5338E522B3A7AFE8362AB4
-F05D8BC52BBA9C5089ADA8C89529B0275AF422EB540D31A938B8740860756325B966B36817115213
-FAAF92DE63F6BAE1E0064BFBC5588098B61EB83C71F1C2082436D37DAF1ACBE186FEDC4BE7C1233B
-6F18BEC5F99002D21CB7864E4811F7AB3C03003E1E4490AD1AC793BD28FCD5EF0E6CC30EF39A08C5
-2F71939B0CEF620DC69E31E39D6DB969049031B0C92EF2DB653D97F370141456A52985076B268652
-FA2648C792780BAD637C4D7581FB2D62011D57E293719487CF2D1F013CFAA532E1C2D39178D51272
-A6AF041440BCA174B5CC902BD7390C7D3695056CB4BD7791F9FB6D88E7A70DEF2C97869F5DBC5BD8
-23C517C7B7C39D624DF627DC9653EA5347BFDA80B723F05F6DBB4C9EA501D862ACE05B9DBDF21B70
-56FBCD8C6D4B85873DCEE6166C8B5ADC0316CA12D9639F361B15A42F00E1D62EDBCA1111972FA0F4
-5758BECB31DB38316F3CDFE1B41748C93ED58B67E9B57ABBED5924A6D53E99FBC9A994A6489A8BDF
-13EB685548B4DC6D62DA7426C22227D4D43B6FFC7B5EA91C896730253E8941AFEE588359C2BECF6F
-FC415B9EB6D31CCB0F6C7F85853E6449FA6D627A97A3CE8303F148393ADCCCDFA2FE085C6908BE5C
-3C05AF00A6F02840206C3253A559AC5C049BDDFD11AD9B118403B84DA10AE3C470CB9A9A2D1D7B73
-2F59F5FE146DEDA60AE750F551AAC934621B4470E1BC324C436303E25F81D0DC3188BE0D6FEC5414
-C20E4CB18952E12CB6423DF7124627ACDE145500D77A97A8BFD9CB50D1FAA008E2CE2B2505A4749F
-1EBBB092C347023714055A9B63353AF9E7FEE05BB54C9843698101F79888A91531773830C2C967B5
-88D3ACD2192883D5CE3962D51084FC653EAE2C5FB2DA41DACEFB5C76812D2EDB5B109677289CD199
-8D457FB1023A19AC67295BBC1A9A20A426B06A368DF3C5DD083CB1180D287F5500F2C635EDE157EE
-FCEEC5503447382D15C748C1E35F68753992E5C90F900DE54D18F8E1B355D1076ADFB1F3590135FA
-D1A36F028E44F48ABB149B80CA9A54614D467F8D71CB310BBC7AC7100261092DB8C5BFD39E0AC6BC
-2C9D6CBC3A8C05FF8A74CB21608EC4A4CFE4CBAA2D056DBA14206106044DECF59F957EF8A9CADE4C
-9B19D8D30DD4FDE6A9548E50DB51ACA73330142153FC36B69C1C8D5B26D0C689B7040E81AC2C864F
-D7C097C99BE5953843E172C97AB5684F35FB03A725A89DBF371F08DDF40A1531FC1B676DB0E1543A
-EC6E97D3D2E4AA3D5831D8B3C952ABBFA112352814FB6FAB61A0D680E6640F6AEC8426200CF61286
-F7422CB2F78C61EBAA36D47EC16D7FAF8B4AF31D090CDFA255D9D7C61D46CFB22A7D6E1758E71ED5
-67E00CBD8E8F468DDFB477F091A2F915627F22FF47B876544BC1F03B6BBB98385F009C20BB1AA2A7
-A78674692B8EAC2E3C8069B79E679338DA57F72976810F845BEB6B9ADD32B95D78E5E60F16DD1668
-9C05FD82D36A3115BE8ED494A74DD211D58A2CDF983FCB9CDC29BF7F0E29988FA23560EDF514BC1D
-183F3B2A22C09FB179B47E05ADEF48DF02F31C29875D1915037B19407764A4292FE44E741651A8E3
-BEB5F0D972B6327090F664417C84F84FFBF0AFFF8B1D85C822D90730AB4140C42A51AA8B1DBE4398
-4EA8566040EB8B341CCE23FD3F69DD235A080BA5C69AECB9BC732BC2D7D40617DDA6B79FB6EE40C3
-556C7DF9B23DAD89E94054B1345DB8402AE679FC4655A4A776C0150463F8DB2BFC0608EA1F124E22
-1DDAE6026B5E5D007A7E4A0D6B3B0CF3A2669E67C5E4F01551966A7BC48F2F4B6A87E740D8095E63
-F77C7A027F26B52F2299DE5B8A2F6209BCF3D31CB0235F998F781E5CC81E31DC424E008D46EC0920
-2951E5684804A0592EA47D6C788A20487BEA2EC8F2E6C1D7F378B62DB43CA43C4B366F8B4319631C
-FE9854F0E10321CFA3B01C873584863BBEFC23C72C05E695B56E8A52E89AA2DAB543834D34DCAC5F
-ED08DC51825C5257AE59850D101D84F4CAA1D29FC932F9E0EFFBF7A9A7F3685F61F0490CD3CC8988
-2DB52A757A6AF4C4E67B407BD2316B1C0FFE7DC54E43C87B874F57E4903334E2140B011484863CDC
-ACA331175F2CF3D72E0042855983AAF8853D3015E870FF0807014C31D55060DF3FE1FCE157324481
-2744AB51322444632F9AFDA6706E320FFE82B8CBE242A19DF00CE73EE48E25FF49D5871BD3E60652
-298FE3E8D400609E232E0DDC794C0579ACEF89E841B2EDCA50D51151F65E8C1CC3B01EF1870558F0
-BF5743718C3E068617E81BFE120C6CA16E0924BFC2541177D53671CAA3AB641C41557DCDAE1A3461
-47B5E999C4541B08B4AFCBC187AFD653D5B5F8386DF6AD8FE69E21BD0567DF494F736C6A184FA4DE
-48DC9F347787CA96E2E00A296C2DA05C2AD9BC423E9CA428D7F1FA12DC9353A302FB8C529AF8688C
-BB543B45B2717EBF8F6C497935F4F3BFFD285E0402AB7544B3CA4643AE5A8B5250ED987A95FC1F27
-5B9707ACD0641BD0EE2AE9758494F8D8A51DCE408A38AC20EAF0852D72D84D0C6BE973326793AEB9
-55EAC6FE0A2813A355DCD22F6F2CE56588D1C055CDDFA98878BCEB6A018DB22922D2B600A20F8184
-2E665DF41013CA0947C4237C2BD60A75E2FD1A3FB8C8FA19485730B87461AD466ACB02DF8CA24091
-4FB090B3D2B41EB6B8FF05E1A59D9FD668AF70BA5BB72778953BA55FC5F9F626043450E1D09BC83D
-8605098ABEF884639A37809A32565CBEFB3FF39EE53D6C18C58C272BB928E4410E361E59A50F242D
-69747A032617C52DEBBF62364AB5A96EFAF642D9D82BA679B1D70FAC10A4EB62FA5CFC308E86368A
-AAD7E75948F43598CD1C544A0D4091374D7E88D4522CBE902391641327E888E7748FA889DCE67ADE
-61699E7D77763681CAEE9B1CA8837B2F7EF9C18CBCC538C465C8E2DD34616953CCB6030A222C728B
-834911C1A179E2C770289407AB28B303E724D97F747D6134B425216A64C6E0B60F633E2B85300047
-E4C90339CE030A0FAE31E830C8ABA5AB3386A3B69267351A7BFDD66356AE5E57FB2994452993E90D
-E7C4E260ABAB93C37831856A650D56E44172FECA01D6C7C380F250B82473960D2A2A5FB6B4DA668F
-46E624ACF7FA0FD4490F485D640A3ADFC9F8652E7A38CE5799F770C3606DB4B8B947F93967F779E3
-A3C0572F13A5A187D31D7BD12A5C7BE23CB6ED6192086241B76C5BA6983DB9C93E4B208D707D3760
-F03CD6272EF3A4CE89B8E52E6AC5871A3D03EB975759AB4BE239E5EC7842CBB333E692CC607C722E
-185D3C39164DD320C6945629C70FF66A5237C0A9520A1FAD6EB9816069351AB0F135D90CC0982B14
-7D2294AE4A38A527EE40BE9CDE2512AAEBB590E134388BB171D0956A7C4566D65A9A041BE6C4F883
-6B3EC3D2ED1B48B566A783292B15B6127920D247D494F070BB20BEFF60640B11B276DDEEE49706E8
-B2B21BB40B7F00AAFC594C492C25DCA774E0B80D82E927448DE2E74A9D0DC7AC9260096EAF187B6C
-D6AEAA6D1DC4205B4411122751A5B22688404EA7C5861730371FFAC10F5AFD4727A0E402AB5EA757
-606B75EB86A05E8F774D6E430A1A3FE2A37EBB06700474239FB1CFA05EE44B91B82244C575B52E7F
-AF934B04EEB0D933FEB57EBE326D75821C8B23EAA85B583AED4320B7F04B9F2DC591091216FDE52E
-064BAAA9C2C9D9714B95A4558C21F3CEBE624B5403B31508F178581AF6863083ED762F1E2E34A45C
-FDD71660D626FF8648F5D6C5E580D4765A67FB6159EC8077A9F0A88038C8D3D7C77FF0926E2123BE
-874F7BCAF129D55A5B5960F824BD1728ABCFCC51D23936DE9A25C408D786E44C3A2BAFA4423177AD
-060D21D38E15E23EB6FFC0B4120E814695D423EEFC2744A1FC81B4DF89D76F0A6803D8B14E75538C
-AAD03A72517B86514F6952F6FD619D9E910D980F00964DB325318C045BDF79647F453D4A5CF4E61D
-D5359782827229310405FBCF6107C3AD9DDEF9A9A339D5D5A6EB2E7838A0A43221BD62CBDF732DB0
-A638A52016FB35BA7761AEC846A023D3BF2D1BB183543E81EB7CAC1E5970CDC6F068C5EA118C7AAE
-528D1396E6DC939112DA4460C890EAD5C01BDC438F5BB734218BA6270ADD0DC1778FD8AB16831D6A
-302B814A1A44B07EDC65956C9E6CF4875DF521F3CE5B422F71081B6D69BD270F739095C9E81C0377
-934A8BC6390C420C4E4CDD9CF7E32544C68D884E15ACA3BCC07FC8C132D8FB9D752C15D75C52C288
-57E2EA461A6FCAD90C56843513F74461F18D7164BC597A28AE4BA7C86EE1703535A9B9ED50122627
-71FC12F102E800E0E1AF7BB46681BD2B14B614CEA91B7B2AAA35235DE76C0E113C92688F8EC81277
-D58C3406778E1EC1CC15F1CD9A137C8FFDAAB99ACE3BFC782916F1A877170589A92DC921E6740A22
-B84DC6BACDABCC76E64C79E3A588D80F8F4D376E1B426F15751CF7391102102F0AFAFD8B22DFDEB5
-48AEB5F30B1673023D22054A13391A0EC08DE6E7B685A0D031AABF20B7C62187C0284892D5EAADF1
-21BA28263EB863D5E36EA9C06A77CCFC0E17F593961591F84D82AF823EFE41044C8D606FEF83CCC7
-B0E961E7994DF8A3CC36B209D953E250ADAB8D22D7F2B4E2C9CA39EFA2D93E56195C1560E30A5190
-CC5B17FAEFCF250DF79F6B624A4B917E11C332222FCCFEC4F6A47BD9E75DA9854FC3F7AE554E91ED
-DE144D7AEF38A0E3EDB5E5A5626374DB94F022C8CF549093041DE00D7269B7CE544E748439BA2870
-718C08E58FB4A77D93EBC04B7957D272AE1601D41BF85A2BADAA0DF73B0D3841D4839C85677FB2E1
-5F1D6CE592669FF4BBC9C69DBA334DC37706F2F6BE83D5863E8CD6A30C08640AAC4C233684E66B4F
-E6B62D4A8BE9D531E47BEF5640D9B5C27D990092BE1597F6995C8A77BE9C18AAE6C1CF130775DDAC
-41D34438FC7AD8E042CB56CBF2944932EBA7D053E9376FF398367450E35A1945FE23E05C921096A1
-5454721FFD0F429A3E06DC3ED36F1C170BE79C66996EF8337AFF85B90C5D3A4A94455AE9FA32E211
-7A63E59001F052D5F6223125BFAFA40901E98960ADF7BB886729DCA82FC3B8CC52B37FF2517299E1
-D769057F8154FB95582F02CB0BECC873A9C71796ADBD3E91324FAA94F2C41CF57C30B5897D031C02
-D256C909E080E70BFD1F32E69EF67031138C2DDCD1A8E4B65E485C23C3E450ABDD9815512D6F34A8
-4B9DB715DB2C7A93BFB424316E1AA44397749CB01088428F149A3B4324737ED9957FD388248462AC
-1B2610D72BF5C073ECA567E7385CC959E37CAC7E05470160FFA5A9F63B8E9B082937E911586EA165
-374938F492EDF28CE6020953A5B5CCEC7737F9D9CC8538C4339567AAED3794ABA3B9F4EAE65466E8
-E326F6C399B36355935FBDCB9972F10B13494DC25097FCEC5A6398F275C8C151558E74C5175F7BAF
-4155E36B733F75CF9D5C5979B0764F14D8306E06BA24BF791141E404C69F3F8FCCD91B9C58C2C671
-AAE7D4F9E5D6414E46ED633A5F78AA5BF04E652246A066EAD9E582B181CC196EA2D3CFAA383B5D0E
-4CAC9336E119C08CC6AC55CBFBAE147C623B400453BBF447E96DE036FC025624384359EED7C7D5F7
-858DC0521377CF647A157FC3F188DE5EEF094DBA125510FDE34C570D7BE76AB5DF0A28BF45DDAADB
-EA7EEEDB936332DFE93081E0AFD3FDD46BED08D6914B2EFCFDC41662A33B90B03D76D34F48D30FC6
-BBBB600E90E6AC7243FDF026762A44B4D6E4ECBEF48C9D7B696AF29EEE063E557D8FCF0F09E0136F
-45D17E608DA36E59F2AECF8493F8D62536119B5F7E1554DFE3F6E8D7C9A2C6F557D18B4AF92C9F6E
-050975C3B5C54F9B5F4E39D600B6FA2CD6DE203A174028CBB2A201AF126D1013C229BB82CFD013ED
-199D01E51EE2780FE896E01C63C655087A3E61A7F1029FA5E97EA1872F1B45F22282DDC317E17926
-7368CB52DA9444F6055A3C653659CAD2A1D8712BC2B1B32C1DC6906D957FB88524EE066156ED6BDE
-B8D832F9338F9912E29A250A8C4674E667C1C278B677AEC9972BE83CBA3FB779893FCB8F81A323AC
-91474BA2A2334A07BB5628E905C518E634F6761A3289056F83D5DD7B3890987EEE1C18FB2D379CC1
-905F1AEB3B3D2AD578F0D6C845D2D40C4BCEE3F71C90E68E5417BB8CDDD878D83BA80AD8485F4067
-E5C3CABF28AB56CBB219C0AAB8FFC6C7E192BEC8CBCA1459AE4450AFCC81B9548F40CE2622E5A7C2
-81F74DCC02DAD57EFD92D072318DDF05BF42F1EA8163071E23949B0179CF7DE64677CA99B23CB926
-B3E294194EC13397EA1DC9A5E1CDCD828156CD71F81B64167D4FB01E6002713BD8AC6F82B20CD369
-9C6CA4704DC5C65A2D66EB155B7AF1C9BB46469416FB49C1C7E17A30A5F045271D7DF3FFF2F42C6B
-470701C381E3456A500C6BB3D0E47B4D91C5F34B49BB6272F1F8698B307D89EDA3A1565DAD1C0864
-627560CF922DCF5B34C67860352390B282F95394AA2CDE0E97CE3ED39546A6AF1C52BFCF81A29BE8
-2C47C99E8050E4889E4575B75F39E662F2DB7420673797E2ED3D67CDA7AE2C15D0A0A794D57D168E
-BE13214E89E0209AB2C0EB7784E9491AEFA3C02D0DF3AE5365A0FC4AE023CAB528162C7A1B173664
-9DFADDACA8DA5FA18B7D6489E4229E9E24D38A620464A744A5C60F6F9D334B908706B738AED18669
-8A8B278341FA4D65A0A88680BA484694921512F7DE93337FC1C02BBE6E64AF2DAD07603279D87329
-1D1F4D39C1DD6D89C90F65240F4808F6F1115CA55B88E242565E59F3BBF1F10EC7B88872E9AE61D4
-4CAE185463EDFAF7DF63DE4D2207D307AFB61501892965170D2945846FCF5973A1D458607F50C15E
-06E5BEC715E0C156259AAA6C735593E5564F65F443B78CC7512EC35A56F126DF9D30974A40872E42
-65E1AE5FD483CFCBBBA26DEE426CDC4721F19C3FDA86ED7AD4FA1120F63669BEFE7002B128CEAFD8
-C63E8AC09943B6CBDFB3D2476A026C00A8FF81B1F651B97F310C82ABA5F388CC1DB5AFCFF5996D52
-52A6A42FA4D972E41EE56088F78CB966F9051171C472C774879AECFFF08BFD9CEA40D7C298922ACE
-64F28C14E0B81F4DCADE81D71DE3983D87D905192EF13CEE71B2D3FF1A88AEC671EC318917DF98A3
-C9054E372D22A3CEC82FCC217F47319A40900312F6E32B536B9E7A7FA0837EC65CCDB5FB0D414371
-17596CB39D9382262DE6E65379D3A9709B2CFBABF5FC5D5B352425F06F88CD31012A2A4147B112F0
-C1C0ACCC808CD625E0228EEF66661F70AF96D3DCFECD402700E4F6522AC9A856DA466D55C84F65BE
-2810A1565163872D62EB81333A698ED7B68352CACCA2D7AD38AB55C19E4F5582F75818302F5FDADF
-1DCED09D94872F2D48FB636C8E38C7563C72C771A08C6B1F041F3532BDB39006C89A33C09BE1E3E6
-03622D891F98010BF1DE5355F557A1E09448D486ADEF565705277B31B8BF2B86761E32631E3435B6
-88B79D566F1747BA456DDB43CD239FB47FF7B425EAA4C657C8EEC26EE01AED07CF916E77D53634C1
-37AEEA009C6B515B6342C54BE2C7B95955B1A9DA277A0ABCDA2346E88018C726F481F71D6011AA42
-F8852F2E5749518FE3B3AB668213FE1A05C10A1C53953D75312631D6BBBA01D418199DFEFF8CF548
-6109B099FE8E2F606165FE30F532C03567785D5362AA873C9D3EECEB20F1945D55F49B0CCAC84967
-59FCC7292E46938943C262D78F3212D3F9D0F7B103157F423D71B1ED54B2A603F4C269029918F238
-EC6828FFCEC66009DB9C9E59534EABB183F31D7AD4C57B1BDF0BD2CE5A421882BC10CC1BCE6A970E
-2B586BB221567CCA483989DD0B8DEC424C1D1FF042DCB7834423CF244EDA28D2D969B17440CAEAF0
-24A6119DB010CE366821AFA424D1B8299609C04148275AE6E5257A7ACB3C766C747CE99CBA2D703C
-F19B7CF301B634D8B613DDC4AFE4633A4D77BFF8E00CFB5E289EBBCAC90A24307E7941EC1685CBAE
-400CADD876FCEF7F6557EEE167D2035A05120293527700DC510B038A496BE1D5CBAEF24ED39F7421
-1A93AADF22214ED606A80582485AFE358E3A46D0671148998A3B3BE209467009B43400870359D418
-9A8CEB4D5866AB52D16D9CEB1EAB71C07E6CAA34B70E3096BF7604C22C40D5FBFEEA616DA3BABD59
-DCDB97D883FC8742B8267A16A99B7953225F7144568D566E64542C92E538AC140C851E5D295528EB
-7CBB49909B1CAF6409C9BCCEB325468FA0B5F7CB2987382616B477CCFE4F4AC79E4A6F7165363543
-F04DE5B6F6E1C2E910CDC3CDD6C4C92737198F892337DCB6647BD226C820AC99C65D8E7772BBB74F
-E65DCAA8A22C33BC168BF48E40A82700A3A7668C5A9A71E397ACDFEE7D556C5C19467B7AA69C260B
-727407AC837BDB7D67DEC055C1F45D8BAC61048C45BC9FB3CEFE7549EAA2992D2EDC126FF7A05EAE
-58613332A2BC1465B2BC0429162B907D65F793D236EDDD8D35405866D71B25F62DC4A7E06D4DEE82
-840ACCAABC0774F8A63E9C0F7FC980B3583E7A8B01C46590E3BC04EBA565C2EA94F057D964A78A90
-EA9F52ABFD70F84E44E434BD10A42E98C794065724341F907E35D3CB257161E01C7084E3A0166D15
-CED65DA7BA87DBB2EA33D39BD99AFB93D3548358D08330E807F8552CECF63C84F805205491BA3A1A
-622E70C232FADF3BF2DCFD6F0539158D3306506F150B0518371912A25EB96163D73E9EEED42EDC84
-D688BC7F7708D9DCA348FAB4DF62E5809BD094842D0A31DBB7C4B41F94D946810C5EC10B69AABC2C
-91A59500B2E5D37F4755DDFB7AE4ABF757F4C5BCF77C7F95E6A616646456FE8F18407080BCABBFA5
-7704287AD26222DF91AB2613951E2D679472F8ADF06EA2A20205EC19972299A78BAC52114334470C
-5F5890C2F846B4C6042D73945127F2E3910ECA1C4CD7A16EFE4B4BE38A15AAA710682C3836A8CA83
-FD384970139D8B46FB0AEBB002DD224199672FFA02250FBCFA4E649E335428FC71F50F45E498419E
-DB0E970F46894A48F65580881C9C4250FCEF65C9B28699408E18B26FE6DB7F1CBDB767564E73CB59
-54C6D639CE33220C894F36E70F71C9F9AA3FE2AE0AA0E3F2E304EC5ABC661675CDE2E70519E4220A
-E26FBACBD01D5169EB844750753E6CED53E3678FDCD08AB93E10067E9C64F38B40B76D99B6CD92BD
-F4155A1EA5CC824998B59AAD06E09E5F15EBB2288D66EA71B296616734FEF2796F07FF0D8B047074
-A1111D68B99C2B70FC56E74A51B062F4998ACC85B1943C9477E436E5CD7AB18DBC898D21BB93475A
-623BDDA71D7B895BA2D4C10F4B90BF335126F4FD57D73AFA50170F6B3C364922E551D40E35DA75FA
-891762FA23401D39260F2E92C7807C746F13BB35CEF9DBF2E76E66A72FEFF095DA482A4DE8A42091
-7065736CF4DE904FB52E649A32255E2030A7B31B686353492F31C064A3C4B0448C4BFD44B8E15384
-FD809B8761EE26A7DFA1758D57CE4F0BC376EB2B3833534B15A83436BA553955ACB5A7A66796AC5B
-92DB5388BC53EFA27508B08E82821E5CF669BCE52BB860780F749B4F38ACDF5FF12726BF3EC2743F
-01014CDE96FE6B4C40A034E9EAFCA2A35CCC776C2669E6AD138070A40F48ED79136D7FF57E993E09
-B81C543FBADD350FF5B5F7A46F060F88E30FE2D8233832D18B6C323EE017EBC1DF5C838321CDC8A8
-4CABCAB20B60A1A3AA028F36EA6E87C850AF8AF7CD50AA6359038BFA8818821D02CEE8F51DAB8C05
-F7AE9797814D97F3DB8CCDDE45B21DBB15CEE292FAA534A5F317B357F4091F3DA357325B8B9F5EDB
-45865415973C143E5E5BAA483FBF2D06CDD4246675EC58B84C6AE65CA743117FF00F229243772561
-31A7F2BA26A9115AFD96C18216CFDF41B7220ED0CB3FCC26C36380007B382A02AEAE428887DC8BE5
-FDD630AC57EE3DC156C7B8B29E687F24442E35CE10BA4087295A641F7139C831F7CCDA6CCEB5DAFE
-537CC1A97C5A337D3C48A6AE947F58A30DC08CC7B58DBBB4737AD52783C573FC1E9408F55495A80E
-7FDA61F0B9C4F090158F1A416249EBBA936C27BEFDEF19D1BFB839EB70576A010706D8B95657B218
-9C2AE04C11EF9E57FE09880273761FB4302C388BD608FA0C7F00F033C9C00F4E3D5CE2D903E0DA52
-E69C7745EE9FA75E2AD93DC6CB5CCFCD3782A699B807AFC36AD1F62B05856D5DFD6F88831B90EB3D
-CD523582A49732E3FD7253126D39E8AFB8458B5F7AD7F94A8DAC13365F433C857AF4A42C0A08C4DB
-9887C4957259ED22D13CFDF5995DA957EA5A0F620B0214FBFE08AB6D552DBF048D62CEF6EFF12F15
-3511ECA7833E0E3E95F85E6AC0F95438AC4C126E1F1ECF336ED31CCA7EB216D279877123FD9FCD8F
-B5E52B587CFFC4428456DDCA816819A8A4A211D8F1629E5D42BA4C5C356E580C8A22C61D987552FA
-A97893816DA73D423686E4EBD44375C257F031318865A20F22115E72BF1EB9F93AAA169C140A33A0
-6C35BD4526A38BE79CF40AD1EFA10411E8F3300A8A8B97AB140EE6734E1BEE6C8EE443D698D34159
-97649C6F10F20ACD80236422E215E146D744A262DA3FC88DC0D86FF66512F49D3F957D3C5CFFEB42
-4823509F33F155057A4C6F37B52F4667767BA94F6B8B62856B553F307E5D230C44CBFDC9A97A45B1
-39FFB2F2565EB0E22026972FAD0FB7B9576FB6F368B61979943A398773600E7EE1DFEFBF26D45D40
-BDA66EBB96A56EE9CAE0B2420C5DD83E24DBA9FF885BB844BF3D2BF93B07325DFF60C0CB5FDCCA0A
-C8FB5A2E119D5AF26E53AB8E3B428481C2871DDA26EF0B621CD8572B3C664BC7AAC01A1D05B98F79
-1A7080D294BE81099BDA7982432F3DFF4775C44D23F4F1B2E0162B61A8B2CB5EE8564BF98E2ED403
-2219085FE6194C19DAC98A421826CAED7F1AB1477AB327506010217283894235D7DBFC1153D5ECC4
-8AA7293F19592B4D7E95FE55151889BCD1D7FA7DC2370D2DFE11D7E4EA34B5C7A8E73BD3A348FD38
-9EF45B6167FB90BA44C23E912F9A4F2FC0427ED070592F7110183BFDB2C400393BA7569058227926
-351F07FED4F33633BA03A72AA2DC6B598E49B96021DD868DAD0F352E5722FB714F667C15C68D49C0
-3D822D82677EDFE86FE9668E537DA284068C9B0AED83074C92A5B939296D505B837E6A9DDAB1AEAB
-7455A08A114C2222B339284674B74BF4CA9EE0C020BF2A148B439C71C6BE51A94CB64FBE4A7EB295
-5A455047CF5CB348B062ED4F6471CBC3E9ADD9BE9B96879AC7BC71BCE02FD02F17C6063985A5E898
-3D205AA1489DA13C408990ABA1C54F2F501AA172F530480D789C848118C0A74EF98D5F607A067BAF
-F6030D887AC6A6497F9A0B38F9705F328AAD4BFBB634F739386177B07F22D5771282444E5EE17335
-B4D0EC86117C697E79A5F4F65FDC08E4904DAEDAB20067EAE2448FD4301849E456D085F392DD1316
-7ADF75CCFDB723E2904A9C0C976D6B84DDEF9D92B0E15FB246C3ECC2D0BF314CFB957757B3A3E8E5
-801F520644E4601D291DA0F7507C06F3B9BB36FC1C70EAA444E14E56C0CFF06C7F853DF36DA9D8B6
-AF2544B853DFFF535A7E5C6FC145250CDDA229956019659D0D253A19A7B51A4E538BDC01F74D7704
-9949C2C97C7EC6392C2E61CCC0992B66DAF1AB08551063E53180D2A67DE496716CCBAA45462D9F91
-B66A22545962DDAB120511FF08627131B95E5DEEB8B4DD9643E7B2AF65C0FDCE11F5F1E8DD468DA1
-8D41C8C4F00EA73836F4F70EC50FC3EC6D358C0658A4261C6D15A582A2C7C994E7882E661855B352
-014576858A265FFBC425160669CE159D07EDAC04D060B44E5800A7AAE8E339C29B929AA81D2F515C
-46229D2080D5917AB20AB6B34FDCA8E4AF64ED660A3173786FB1A1D005D575C2A5187D3F7CFDC94C
-CC44A38C5CD523E9DA726D8EFA6DA7B6131DFF3435FEE838B2C7D6B97934295F06202D307FF78D90
-6699CB9C5BBB10D1D4DEA5FDA5BFB094E704607083B646D37F5DA1FC7AD21B813F44D8C1AFEAB666
-55AAA19703BEA2E77DF3BF350E17C74B3447A452235919452B5175570A006C7680AC05E8950A62E1
-1D7E3ACA35A397D1E19630D094A86807593C97F4C484E4E06BCFF708B6DCA972E3A0009E1CAC0EA4
-141530F5C1B8AEF5E1B933F37FDDBC4BE22B74FE346D1A3F5FEC0818F8E61765568A2AC04713E828
-F98C449D9A1CCE52D10D61DD8BFD084C8D099A75D89DEA64D5A7CC68BD5B0593D97953DADA976383
-F5015915618AEC56D71D1DCD55B89736395C609B315A3F1E1255432FDBD37F38CC43C354FB4B7C44
-F1A7318B0B7E99C3C08C33B953727B6A6328051783A0A33E3CD9E498346A3CA6A77B517096EDD52A
-E443B87643A646C3A7BB97F742888D33F9B3127E61942F4103C1DBDCD8EAC8F9E259773066736CA6
-53CE57E8822651261D847C131321BB9D6626A1AC50D047C0BA47B411DF2A995545BD68EC0287CC9B
-31D5DDCA8755EBEB10ACCB3903AB0FD5788E984220443B8459E7C078DA4289F1350905881AD6DFDE
-C47302B0ACB0D4AF8CAED02B4B70DF3CF8FEC118F0FC2D3DDE3E494CD160E676E300BC464BD4400D
-B50EE43B314E0517037BF971ACD7CD327CB2134893B8A0410E68DDC518F5DEC966C7884CF5FDFE74
-723177F20DEDC039D879056CAAB4BF045062D3904F615C5CFE109AC7A35599C94024B41019B9AFD4
-04A80ACAA4837929F5C9317680A13D157A03B59A5588DF79D2E113F5F51021D6F6F90E8BBBA2C252
-FD10651BE80BAFD59C53A3367BA3C28DB6EB9DABF1EA99F47B503F627E15DCF3FD645FC52C5D5D0F
-2F07DB4C25C0D1E1C00146E1C4D973E613CCDBD3F9450CC0F5343D79F05E9492E86A1BB889ADF405
-03BD7F3E7543436859184A5B20BD8A172F350D846B7570803990ADAA48D4B9155A2B4C4BFBEF1E1A
-065C08E03928559735BDD442FF1E83E1FA20A5DA57D8BDB2FF5427C034CF0128AF111E6E73099E04
-6E0C240E80A73D7BE72B87834E45898D475521CA3306707631F5C6136199F354632D1A085F12A1C7
-C473868B62E534D15F5484323E63D0574196A19EF175214EB35A90873EFCFB92D6CF68761D45E37E
-AA61E1A1979A82009507CA193E44B36A806486665CEDBCF387053ACEAB979BD35D30978FC7659ABB
-E844F4ECAB3303318ECE80777A5FA5A9DD91B3D06804C4B4E9B4EFCF07EB89866D0DD8CA390CFD15
-98651417114D78776B1A1D36B4BA17746D6BE7FC123D473EF1EFED1C3BC1D555F914536869FD5B0C
-35F9C83F65B0E6BF7A627B9202D787D72C600DDB6BCCE613D88492E13CA0AAAB196E8A49928C62CE
-A4FFE2D0208EDA334ACF47F20BD793124D2C5546C03F4A364369A76A0425262F9D9118AF54E37D32
-E33AB25DD533A49DF5FBF1BAF4CEAC2D9D378CDCD13B00FDA432D9042F623DA41AFB80699B5538A2
-5403B0B3EABEC9E8EFCF42FEF3EA9F91766902CD206B0787C187D5370B60AD6DCD002DE2DE8DCDC0
-B4719A797C5E26BAA67665016DA0D967FA1346F9588AEDA174CA001B31213617FE19EA218EC23597
-79D979E2663166489C06993230B0D07973A117C4E3F4A4C93CF8428248DD5389414D679C69644142
-67C7FEA17E35B0CEE456667A9B1875C81B2302BDDEA2818D6019FC1622A82051F60584ABC904CD91
-8676305DC03FFBCC64FDDAC8D8AA9CE2EA00D6C97BC63C8A617DEDFC0E40775649438E9F61AFD179
-5E3B20560B01BE5E0983F136CF48AB206954E41DEE0D9DDD953DFD01CAEB569151D6BC0DFEF29D70
-FAE3E198E7EDD8922C0E0BCB8BCCF1C016142C1A8B337AFA7A05A9D7534B184BF3BF827F371E9BD1
-9A71244ECA1BA73D484CD2FAD54DB2F0EEFBD54B536EBCB5094E6BC2F5B2AAE41F05B4B311115876
-ED42C34F8E643B53372E3F6350DB8A38445822EA9A33E27FB0CC42CEDCD1FE2FDF723FC47C996EE3
-56C402112F24D0AF899B2D00BEA1CFD427998BD22B2A09046D6737814448ACFB10D387547D7009FB
-384AF0562C85694C071584236D0F1F3D3FCD0CFB38B77C81889061E668BA7AB37AA60F58A3967DE2
-6F939B79CBF10A9DCC42852561D8D6754F1B660D216AAB1E133FBAA321C56E2584BE5C9BAE20CCF0
-0E8DBE6D9C2FCEBEBAD945C3C04101D2387351F132628786F6D9D4CAB83419288D31F9BC600D9664
-12E6AA457CE6CAD26A4C0671097B98C2384C81DD8B9A3222D4F4BBDA7017895C3EDC26662779AEE7
-40D9D7E24185FB821970B0A3A94041A69E4805EC88EE1EE521981536F2844FB8F5EF645F67D42CE5
-148E2DDE43AD5AEF200EDB3A2C7866C98458A92666E5F9E070178BCC39F65A893102A10564AF4E8C
-AAA5075D2F8CD7FAB0401C03AF299EA3515CC93066744EB5AF7CF0ED06675BF049A6E3C211A89E16
-DE5BF0445A7CCA6EE8EB0347454950485D884606651E5887FE8B24323E2AA16DE22FC1FC8C4F06A8
-2A1FDE5758976024068197E1F4506E4D3D8A16D40461A4586338B374A592DC60334402F76388AD6A
-457DC3F54E6169CF7AE3959676E966A45609621055EC3AF80E182633300A4418E34A66DDFA6B569E
-5A13C9115B5FD3EC1CEBE50FBA247F60803AA83976F00117536342DC3D9890C49B2AC701D370E43A
-955118967827760F7091469C5406F08F18D7E3548148CF0E312B1DC71DF67A5E7A1656CF2F47F3AF
-F3DD50FFC2FCDAB7177285B29C17CA43019F62AC6FBA52D1493ED7C427526470ACC8389BAE827759
-4958908F517B2863B83292EB5AB3F57FFFB08393CA610FB1FE905D88A0A16AC395E2A2A6DD033D6A
-0D68992F830B2E1B95FE357BF672716E88FFB92FFC3D62945D1EAD22BC68C51EE0E10A43011DB94C
-44685A5C4576F6EF44CBFB45F2A4BF110A01657DB51FD499767E78058199B31DFD60813F1A344F86
-289F9378231D5B151C92385E3650B4FEB1DC91018EAB8474CBF69FDC1496A4D078D2C351C8196451
-247A9DCF8117E5B637371D8E22E248C64D999015C3FD2311E9950B8EE0922FBDD3D7BFF766BFE9E7
-CE0BE12F318FF2A7B5A9C6D00A54401609304ED2C55F5C1EAC3D4B38355BBD85D66D61636FA6E30C
-2E82829376BEC979A6FEEE040E452359768ECF90CC539A546F17AE906C76F14F86FF697797322B05
-1EB311A759FE260C1EEE5DACF383816AAF1294CFFA7BF87A4D9BC595EE8F2C2F86FEEE11AD959D86
-F22FDAF4CEC098942A57E57813A0FA99239E994FFF353C1E781D666B8928CFC648FCF0869FC68468
-BDBDA7D280DFAB8B0B3A4CA35B074B686DE8D372C61FB32305169A1A9912F6541DA16CD6316A6EA4
-51524757BE5CF6E820011BE3859FB8B8578C100FF029680E05F0E0BF11D33FE19460C85EA5E4C0EF
-28E29407C8AE6BE01CFA0D5022BF9FB01416FFF722A784DFC8FCE330EC95737A854471D334FDC58F
-AB42867A7B62836A8B56466E9A6C1247D46EBAFFB905CD4321970F59FB8D6FF65FDDD34BF913AD32
-2E68455C5FF2D23C1A5EAE687F259BC982B6A384D35440F7C693CF50B9ECAC0B5578CAEE87588B56
-2EB6B7F42034C9F2E545EC866316552354EB3728C7D26527ED75174EAF635E048B08DC5D23E88981
-070AD5641A652F2344956E9CF4C16E652A99F4A644D1787D6D36537489DA4D74E61B2FC4DFDF1D1D
-9D58F9C26C5EB63200526AFD168AC57D5611ADE4D4A382FC28BB60F9E7D626A6C67AFBCCD1183C5E
-3CF2EF210D0BF5CFA7BB10FA3887BDD4CD96EEEAA8F9219AA2F10ABC0A960C3B57C0EC0313AE10CC
-FF1F522124CFC8D2D49BFBB0C193EAFFC5B48FB3FF30B21CB76F0A4C0F1377C9223145BB0468A5D7
-1B9BC25873EA12E1C60334571C67385C00D0B570D3FFC6C7FF0DE62C183C76AEEB12DFFEE1459E0F
-C818C621B8D12FA1357E2B55D48935D70BF140B4CFFE8813DEFD479350B20DC2EB1D3CBB1A2D3DC6
-EE975D58C89D61FC50E6A0197DA9A586B72255023DE47DABEFB11E8AA02414C2FF6258A281219B9D
-DDFE41BA7D7977D0D6F18224FE22F7D4E9355FDB35BF7ED3418F4F68D093AC48F7D8FE4194FEB6C8
-0B9DC1F74E023C604DEA27089F98C3973FF9F4AD7BF7BAE601DB89B08D5D8139B95EDCF6C885FFA8
-B3E4B0477E7040225733826BACFD1EC4A0DD72DC41734856AB9FB700DF83CA2CE812913BD142D84C
-5C83C0B2583768198AF9E885F2BA74877A414233207234AA5F18840557CA11682AABDE8993533887
-7C6D404BDE4153C9827EB16D66C1D73A8143C8A2D3604FF72CE579FAA3C5224BAC48EA83BA848429
-9472007DE96466B5B29ACC7C03B05DCAA38A48BFF9F214DE43146AE4E04FA705421917F99BC54533
-F0EBC01849E396216B9F0794E6F6C6B61B52EF1B1950C0FB609895C3C55FF574163FC8B6B09E66AB
-AED1810E698FF37CC1F926B2CDA3B48C7D77790EBD2D514B6F385D397F713EC3AD3954EA9C846158
-6031D369E8B99E53408A79D64C34EB5A56DE8A67DE91837960E98A66FC04DFA0EBDE21DB003234BB
-78665B039D0A469A0221BD541AF7149A2A659C300132C14581EF766FFFBECBA8B58A5EB3F95446DE
-F49AF863A8113D17B2E7E6ECDEAFC3834D4DF900E3475596E86FBB4E2974C090DB4AD61A737D611D
-92B4535AC291C56AD8B1C031D2F9B505BB77517B737D70AB3723DB52AE2ACCD5DD2F617423ED3CC3
-9CA882EF41757BF7151806A9B8B0F312808863E3673FB54DE939B35CDECA7FBC4DC3BDF5A5F47D35
-E345916C39366C8B4F439CE1C6F1835C320BD1E67375B03B5DE18C93256F251761A4C8CEC01019C0
-68E34447BCC503B9571FE8000627A6B3DAD5854CBC0A2D69E5A8F46BC78F6A7B1422334EC7A98ABE
-FE9B83E01DCF3C6C9273B346F3240EA225AE4A4083CC7B0EA141A0773FDE940768358EB4B13D82AA
-304A1386D450C1C0C6A7D5A8FD2BD313F78F85248B5196241E31E5595F3BC01F37700A2DD3D4A0EE
-2DD01A36569CD507130E8F5B1E96CB560BB7DA15560CCADF3B2C9804A11D9E8055C9EC70E48C1D21
-3EB756A1376F2EDCB7189D78CD3D6CA5865537EEC31C17D801605EFD860B0B629472690588D02575
-02C6F7A75B9A1C1B397781329832CF3EC43C09F1559CD562C48FA9500295CD3B0A790DD3FCD4684A
-7C7AC49AC9BFFF36B39A9FB148BC28D37907433943CBBF0CBDAB46D3EA86DC8F81C859C52D15302B
-94A9B51C199B7104DEEC9D769C2634CECF8B700CE9C04152CC59C9326BDACBEC4312DEED92DD087A
-1C4840868D9F97CAC046581F762F75E8D24D6445370A3F1E0AE74A6478D9DAC37E7FA5BEBEC0A1E0
-81AF89C1BBF7F51E3E2E22C8C405E8671BA85F1BF0DF79A465DAC7EC07F731E00632E017D190A99D
-83E27E5C2E63D7DABBA23B2E88334C63721AC5A4CBC5D45F4C177259F34C2EADE01FA008AF65EBC6
-01D8DD16436D86AA94C99F3CC0A2F87134E73BF22F108B825A8963B49C6C685474AFE4A542C8641D
-C0375D7EFE9AC1168D9700459BE52D0DA399023E141969F25C0DAC4668534B6647EC85454BE945E8
-26B26DE6E3C4584B97A38E2B40A0D23481BCA78084FE80E00A71A790BF31DF468A435ECC88E60A57
-860BBCA3D65930186E9917CBD209C230E8F8255A7ABC7D3F043AE4D7AD63D9980BEDF062B7D5C298
-C40225B6D03F29A0339E0FCA02138E526F06B9EF47F5E7A8068A846CFDE2BFDEBD24F5A73A66C079
-18662AEC80B43246284FA4E2EE0D9AAB172B1E59A6CC46B801149D8C0DF6DEC9A55D8E1B0EFD9D30
-2FF618075944CCCB6831D336B11617107B0530D09885E5CA11A5F1FCC8D69D603DA16BEA51116D42
-CAB1AA1E4D7B9B4D79993F2BFE53EAC904FEB70B2D330A89780EAC10D12CC0C35B8399F218AC2976
-E57A26BAD20CE2FA2AE2363D3FD2A8A971747556F2959DA74A8963C20B504711AE1CB0D0C02457FF
-2E9BF696B159AF031DD5155F21C0F5549B0471A3C5DC8918B675CEBCB23E29322B959ABC05283A70
-2E878DE8EF25EA760F3C5C7B7B49D398283DE2ED837FD59F7C22D62C58FE4448B1049FDEBFC8787E
-67D7DAFE9774979BB3802254DA59BCC0219F98C219F84D995CA768B8B5D9D4A32525DFECE003675E
-E4BD5D8DFFC11025AF2B468F9207B5B2B42349B98232BAC0759758C1F4A283405815BD7145C93FA0
-8F3ED2826655053A3C2559073D8ACD199DEA2C5BA5F616A2E48548B4370EC73493BA07E197165DCA
-774438B0766867819C1154D1959FE6E01E6312E0AB91FC2E2BD240FC8652A2D456A1DE7F34EF372A
-53794D4C4E050BF3CA5B7BD2F1B8DE93B4C8002485CB219AD2D029739FD3C81CC6E78EDF38723576
-1A57143EEDE5CC887F282FECD261F6A25D0A7E154ECDF5DC38E426811BE86AAA458577E5E0C5F0F7
-5AAFA9C41E5D1DC9D91ECD79B514F8CDF7A5F1A189470D35FDF4F9B8788879CCBD91B427822ED658
-389E981E0EE5F7FB87692A3E3E931DF8A1D1573E3B0166204240B7080089A09EF7487C9AEE2D665F
-5A82F94C877FB5B0DC531CEBF1E71C6592CEA2401E4B5122E5091DF03D203DF979B9A6EFBA12E2F6
-B422FDF15D49AC0914D372D21E871DE65CBECD105FD4A3E4714B9CCA5C6803FA39DBB015EA8A88BE
-7913502E562E5B170B87BFC8572DC9DF49AD63694311EF1334444BDF0B4CA3245271C1F7A4D7FAF1
-703E3AA0E1EA8D5C6E821B28707EE0C9B4F22F23796FE87356C58AE2CADC191F4C58E1FB58DA03B4
-5A25AC95DBAE13A293474217BDB214742B9D9D6AF35F70FED2891942EACE3E625E55FFB820543FBB
-250A062D3D395BC0F219ECFE0D76686AC148BC41476A887BC494DDBD396BE200FD3E03CFA12EC9AF
-6B934A283C42AA05589AA6B4A8D16946BB51F50419CABECEAEC5AEF9085C9989289E9B46BAFB6FB2
-782D84DE2B068F91A9744AAB237CEB1BA513E57E4C307108E993C972A3E0A898D5A8D27833155031
-FDB98863C3BE7FEF3004CBAA5CB60A1F2E3EB4D7290FF5FAFA088B1CECCB6CF51A58DAAD998F0839
-6CDFD68F5ABC9C1CCB8F6514107773C69C26873E889D1F79D10E866910E4684186FCD71C965ADF62
-39BA3418B313A27AD632300969B6F284519366ED85E7CD968D64823F8C59B5911A72D0A20EB72B60
-3A61E36F52F256FFCDF706B4560B4DFA5D918FBC530D83A4B3C01BDD3CB4572E24242D141BF9E775
-36693A0407D002E09CDA5B195BF1CCF430AE9824C07928A050D0B460F2704BE8F9E647A4884C4567
-0A81EACF7CC038643EB0FF18A376FF6F32B6FE4F197273327FBBDEC6443A299CAD4B26F7778A99F6
-5A11BDE047153E764039EDB251936AA43DEE50DDFDF8856519056AAFC4C5AE6F2051AF0579A9ACD4
-1D00775D7DBE70022CC263DCA5E0A25B9C7C4F5C418587666B2FE24816B1E0EC92F9074F1403BB83
-AFC3F1D52CA79C387BDEF864366E34C90BE52F7AA09935373A07E4E026224E76F9EC3CB9E7EDE50D
-EFDA48248D61F3CEC880A3B8843306375D9711E58645F3625BDB8E87052DA67F9794EF4AF8DB0BCF
-E00677C3A26907DC651BC838C40EC39E2B5A5DC0DBD345944A6C32226089D63C52490FA10B215AE7
-03CFB663EB8A47793B84CE7364DA1C4E7FCE32DFEF09490121222774915BA59C78C2275F829D15CF
-4D8686B095C38C731B83D48738C25F40B8ADD487C350A2EBE846C3916AE384CB1050F9F5DFE09FCB
-D9129C6270FD86D55A459618FDFA4F907E6B4746196BB717865AB378414029017551161A52E9D24B
-E4F7EED553A927933D4ABC8F25DF607779A717909CB4D810DE8F5762581900E224E4B91598149BA4
-71CF8068ABE8744356B261600BFCC57FB8BE45036CF6571D9B2A95304933BD4F17215F8EF53F8E08
-1AF61FA7F9583C34EB5655CB0ECB82246959F09091F36989EBDD646BEDCA614B9A61AB7696B3FF18
-1058A150FA6EC1BE2EBC7F64357A3FF2A2B0491D2F4E0B970DE5B7788B467CA678039B5EF55C88A3
-84578D427FD2CB16C87B0BF0A3D37CE8ED43E0F049AF2436344D5F47C948C632C94A287509282561
-6C64C5D262FE5B24916FFEE982A69A6CCF888BD01D62EA591EEC51F4B7DDFAFFBEEA93FE08D736C2
-0129E345D06B10246A5F57151C198D407730713F32299638EFBDC01367E23EB59AAD42A83AB41B43
-2DB462652E29813740F4680A5D4BD47B18328FAE6BDF4200CFA4CE3773809B45E8887C9B2E423698
-9F6C48D64F5986F563D9A7538A8716082F81936AEBD0461E6F4BD470436D8B7656F0FDF89108E6DD
-02ABDEF907731D458D690BC608EA9CED09EB1E6E64C0790C7A2378201CE997FFE0317679EE1D4EE9
-F91157449323E53B4ADA8096CD628B5861BF794543A98F2FA2AB54FF0F25A13DAD43DAF9394329B9
-5AA53CA32749FECB0B2BC035DD1EBD53FF9FB5AD8BCE06CD89E5568091C1CC314CFB1D9821D7F9AC
-7C55F55E0A16E39A87D43148201B928F3C42B110FC056189DEF183745F3B637441DE8BD4C3C7EF12
-F4258E306B2877ADAEC63441010750DB4E6269A4C78A0AC01BB3603C386651FE814031CB5D8C1F14
-9EEAFF652A53E57BBD4C8C0CE36A84A319A53BC1E5FD3F1ED1EE72F4C1A9BF264B594062FCAFB22C
-C1FDE3F2E3D3C17DD3F7FE0E15EBD812D550227C06D01127385374A11438ABD50048E17255FCD2BB
-85122A6FB9B7DA9D5E9DE8A747FAE0DA45A1FCEFE92B9E70A5B2CAC668D4D07527A5C1403267D823
-048BE671F725CFC7474B44FC5AAA348420B2D7C23C6CA066666FD6F2208E329878D90CEF1C2E77ED
-22D3BEBB9D547810B189F08920A27E7107F208591A84D463CE2576C70C3DFE6643E4EA93F4E1DAEB
-41D46F0E2F56FC10C69AD5034FC9859D31CF27A3A1EE256C93111F81C11ACF1FC0CE20B90BAC9AA3
-27A5C85A7985B951519FD4B03C40BE637162AF41B2FDA68F0D1E9B7602FE2659D3D75955C579AC51
-DF6A552EB9581AC3F712F083F19B52A6C4F560F36C59CEEB0C996AAF1728A2AA45DCAD79BD7B23AB
-388D5B0B64A2B95154B6259B730B0F4A72C8C7F7CC93C7D64D9D8810D1F63FF8ABD4DB89824E2D26
-4FDEE916C41E299211DB1A53256E1DB5CDD04862F034D9404B73183A99D3D13D642A663F129B6D16
-7095BEB4EAEFD03DF2FF2F0B6B594C1EE90FDB203DA89FACEE23F1BA3901FECC75FE1811BD701259
-343011262B6A0A9707AAA6316BC3C17F787BB80AC8DA5AAC942D90F80C5A3BB59E47EC767244AA95
-C63E50BF809998957936D3BF6ABC24B0A397258F9EB4DC8F65692CB023D9091FB180C69498CD0C08
-BBEBADC84A7E0016E8F8BEA325D924EB0DF82E75D2CC2CCBF039B11934363D4332C5FBC5EC556BE8
-5EE4E707CC2753CCC43D2ED50558E51A104221C9323CDCB0199B7B83454DE3FDC810D0F362C0299F
-5DD981B31D8E3DDA284FEF9DC8F9C8DE138D3065437A7FE8C30572AD06D62E8527AD37AE39AAB0B2
-25F76A25F6C6505241ED73BA494CF923E919F688DDEBF193E188F8C4C154F21631080763B4D091E8
-AD1D2FD6649E0CD9360E8D1A67A5B5FAFC67547CA31C95A5EA8D4EB5D68B9F6D6532DB9B54584735
-9558542A2AE58C09F3BD2918EFBE1699E9C8F2C2A11EA4D224C726D2ACD4A8D8ABAEDC6588CF2AE5
-66528B94F55B823A2A1F7BE19000F3E7579D094E047075DF18C8C868760295533B26EB3ED90635B1
-29C17ACA679C3E88B06998CE5A7A2544B700229F5A6A504BD3E45B276471959C8A3F81917A534287
-39B5EF9E3D463B3BA7318448E2A3E79520D2D245A2A72F31FF7070B6E4624E3A5E216BD103640C8D
-F387E49D732529C611F8B971073F17EBD2F6EB18F9B74A67E1997926DF178D4C9EDED435B9682F1A
-279C81BB9F60DAFE125845A2FF3B02979E5481C78A45C479BEFB9FEF3CE2BA9BC46C77B50B03E48D
-A6D17B76F06F3AD118371ADC69E178C52B5FB4B261C9311874ED07DD6D5B3226A005FDD7A6D53848
-09E7063F036CDEA41619122635E835D2D74CBB6AA9B38CAA4D819C26E95115FE0DBAB4198FC5838F
-2C91B7A87B07D734C6D4F4F83444C1E90AA9BFC908A2BAC4B3DEF9157AFCA5248F2DA31CA87BD363
-AC25E9E77F741D4B2C6E02F04987A6F49D30E9038CEFC41BA172DD675AED8B392164411144E5B738
-F3210B0E66B17A13CB9631C33D44484E792A7C082DD0A5382F34C5637653261B1EB6D2035B08B4D9
-1FA9AB770CAF40A103629511F7B43F2743D7E583433DECFB19C21FD4FD0AFCC22A4119E77C87BFE6
-FE50068B22479015BE5A9F06BEAB4D37412E062A45E0CBCD7BB39FEE747E96306F79FC4F2E8942DF
-5D9DA0E55AACCDA547DA19D30B8404FA121298B44C9CCE198C708C69A8D6BF17591C5C50D3FC5BE6
-961F7ABA8F366DAE957A1C3730DA4A5B4F035A9274675EE3BBF0CA8CE9D8349F50CABB1C3EA4948A
-BE6F9F143592F1EA95404E6909A909168E3279A957AE1924245C356331A75E7008BEE92BEAA304BA
-40B7C3F48F74D9018B3247DF50EBD7CE541DA48ECCB1B0BE51A455C3C13C279D4D8676078C3EBE43
-08748D52C9B041D3E7244C745B1F2F742D010A9E60695F3EC4FDC1050AC082B905D6A57E8F407A3B
-472F731011A5798965B7B1A307E252FE02C8F79CEEDDEB6E165F1A94D7FFF18DDBDF79477F14E9E9
-3981ABD200FE7771B29D1D2D120EE79D28B9543818527039AC74085EAFF241B56D08220C958B5D9C
-87C0C04A14D52AFD475B542D391BC54FF33DEF8D9484AFF6873BEED32DDA4B371112B523B6CE22B4
-0D1B416B64C9370F1CDF2C548F4CCBE9E12E21C36CC3EA52DA232DCFB65F66B22B5E2EC04852510D
-5E264EE939BB67AEC4764B87062AEB7F680B40BCEE04AD45C7519EB3B6199C9E0E332661463647F2
-FB7EDF303EFEF84891CEBCF0FAC5F723A9D0476C3F8C092604C87FC69C7A90F4D64AE45A478EE8BA
-2DF50FB93F55A3546123F0B0E2C1C40C98EAAE9F0F26B8F80FFE6E6B94B7E27D2884D58B8A119662
-2DF6BE608C5569D7864BB756DF2EDD184B90812B44ED4A32D001C31383A40AEEE9743651F7950846
-15C48E402DBC01C818D477EAC0347795CB2792E9C11E8FD4A02E194EED1C919D4598FEC003B6D9A8
-A0BC7D456047A1C0579453FC1D7CB2D158D466939A23D7A7B8ABED7E2777EC7487973E73F2266D9C
-250CE30729E3C5223AD93B9AE8443B35711E446A3DC660123ED45CE1942A1A2AD0610467E081CE2C
-8B92A6C82F0B17B5D2429E99F1A6268072C6B5AAAA6EB6283A872C54D3694CD825EB2926E57DBBC7
-C1663075E687A144E4D61C225781D80FCAE1497B442342B4A3F1CD6BDB50E31791CC3928C30835FE
-F845B6BE5E2D7E3F2F5F085AA3FAEB45CAD0D76BCBB1ED859A9CEBB9F7457036F0BC3F195CB1A98C
-9C8648F6583CDBB23894BC719D68C2DBD8003B10D08C8CAA40BCE784D7BFB4EEC9EA5359AC056E57
-B8B0F2EBCB1F4CE40C87FC7861180133E0CB6CE2FC4FE690756D327A2B5AE063E3021C0C0BD420D0
-56F0B941E6B36088A55BA11D0C35FD0132D5F48E5D9673572347171B4328D4807B972831C0D74CFF
-A5638C145B89C989E6EC942148207D6DB82257585958034D9F9D4221C7C9F7013790DBD130F277E0
-BC88BB179DD09E27062379ED06F25EEA8B7FB33C35861A0034776E3813D2E9E5C10E227CC569AB36
-CB2D9DF2E7B7B44758F9DC4FFAD7A24AC7E9F47AA850C221048C3CB35A37CE8EA75632AE65FE3212
-175146FECD6334AE3D3C5F492F067F795E1E8FF386BA198CB74F0BB4DC0000DA383BC4CC3F070DE1
-7721431988D69C8B1A5AFDCCC83C22E16A87E01C6D3E79DC7AFA3DB0371B0866EFB8B6F88900472A
-FEF1C4A878243C52D4E02E82658979731C841C489A6B97E271C4C93800EC7D91F93EB9B9C659A554
-E1FCE42A5EC65AC39190EF4B66DEAF6FC0569A000A9E1495F42F706FBEA4D32EB7EF11A648910259
-6A65CF899C2F322F5679C6D123469192A9BF1A7F1F2C81C554ADB97BD19ADB746A4F81A4D5559E60
-AB94C483DBABF6CE2F28CDB412D50FF3FCFA3B3DAAACC6A83CFED910CCB3B8D2C19590AFF4D75303
-4A6CE7F4156896A13808E0DFEAC547E69D3C886691728E4A35ACD575B40D721E8FCC5385A2EB28D7
-08101DC50811529528F5CB0C009BA7E3C88468E37768FB0D83895AB54DB2DD5426562AF9D8AF304B
-F6EDA54E9C92643DF926F5C3578269750120302A37CB140A18BA56BA01108D4ACACE8FEAE640A6C6
-958EF156B588ADB0EA5F3B0F37BBA12B7BCB221C811415387B024B7076FA4403A3AD6EBB5D9C26EF
-EBDB7ADE7C60B444AB9F90EA493B658B7767AE2BE649BDBB3FE85F460F1ED137C61BD95F7CD3D8B0
-15CE45138538930AB62AA0E54B4CE1A5EC5FEC0A2B28B345B67089A4E4AE14D2E1F5A9C8848DA688
-CA298F93860649EC3AAFEF3E820D86988C8E3E5A4D4BB937791827994AA3E81D0BB3EE115EC36D5F
-B9A392D09E79AF514D11C7B3A03C9F9C13355CE79E119A19177FFDCA34704D38118A8976D1EE5AA0
-2D14FEB1414419F5E85244ADC5C0A765A522EEF36170064BB19FEE3B5F7B441E4DB967DAE0BAC2C4
-8FC6A836E0EF5A69F073BEE1699F55E9C757EBD6FD8B514E2B49D6333815B7DBD1E0694695FCA3D2
-1320A0C4B852D9706DADD8369A95FDD917328BE93DD33818954DBD2C212D2CA81560ED5BC284EB04
-7A5F389E24E43F4FA8C97FECF46589FA7341076555CF55B1C21B28E0C1CBB00AB8B6F67472F27BC0
-D11148F407824B0159B5188D4BB7386FBDBF1C0FAF34721B7BCB5C0FCB7C4010DCB6A1284E9D7883
-9E3C2111A05D29AB7997073B590A81C6168020F1D48951BC7D8476D5BA593F4F23CAC1F9BB0E091E
-84B4E99E5C584D1370DD12DEE8DF16AF8BC6B7B23E2FEABDB7F32779AF8E2B5094A6E9B7A7225F24
-C43A8E5D2B977E1E19E633C26771E23017ED233DBB02C64F8CF03992C6484528D0C8464B46F24F9E
-8380F385D5D01B8893C67FC103498983CF939432AA380CA576D09030CD52FD99BDC3BE16C7204CDC
-3365BF76294A83A1FC14A236F5FE5321904E779B13232A76F8FE521F425562678436359C2461BEA5
-AB27209541F557AE2AA60009C9CA0A9FC7898C14306CE35A50017BADEFDECBBF94EE2905220706DC
-806409EF87DB1D73EAB0698AD2DB72CDCDB293E7FB13C94D9FC87E74502E6927A212F0D7D2F2D194
-64F7A66AC07872E18CB1DDE8F11835DCBC5C4EF039333FFFC0FC1456DAADE7DAE3EC2EE0D3415B0C
-ABB69FC5006F4D14A4EE1A5CA99AD4D5E629C0DD1E0F097B5B93DE2DD001A8C418234C9C45E8C13D
-1AE04E9466DAB8CF1ECB88A4E059C111A6468D2DABB90DA79C7C79E94DB28F6968B1A632F8C57D9E
-565FF91C6916026FFAC0661856B9FB8DE9C81661816221B1FC159CFEF1751E7E403F5F2CE32529DD
-540792FC17A12A3DCD7C50D38EEAADBD10ADBF5D8A82442AA900CE6150EB7A4639DD9FB6E385B2FD
-093493DCCD9014B23EB172E21AA89643A6CAD1093343D85D81261972DE0ACB16A4C6B5F0BE4C978B
-FA12D3CAF0134F9EA49F6E9687C8F99A456745EA252F0BA9968C7F9586E3DD841AA92DC7705BDD68
-2DAE41518A09DF0E209F321D7FA3417202F4BA76A984DA3ADDBC58136885362F02F0A24EBC439B3D
-BBDACFFD8498EBD29F88F016B1FEABC10785438EAC860B554525F3266097A675299AA0967BD3B7A0
-EEEE3FC578D1BE99D3533BD91571AED904BFC9DA1A1451FDC5406E1CD614E0C7FBC733563CD6CE6C
-C31E9237CA153F1F0411114361D731636BCF98555ABF12848AD109371A42B63675A4130B81E97C2A
-2EE2BB5D8FAE2640156001AF0F55D9D5DF8FF23C8AEFE14F120000F14149A36E5C94CD9081DEC277
-C2C34870D05011F99D48B0875A5FF542F067F7E9880109F586BCF2B50522A1F23ECE44349E539E70
-F84E207DC9BEC7CDF856A046F1A03226AA41F541719AD1AF88FF211E57DD0C1275DD0B7B47440DA0
-89B98C6EE92A7D94700B83CEBE19EAEDD8A615F6587587BA8BBA3CE3AA5E8EAFB1FB0F486BE3609B
-169EFB178A4292F4C0378AFE5D24EED1CAAB514DDC66C696D8E37F294A6579131DDF5488E9436609
-ACD750C3DB0A940C84FE022B22ADC2676F62E91E8F891225F891FBA537679B24547BBBF35F04915D
-20B11739F620D18B5B216921D222F15044368569AA302980B9225BB839F494588481B94B0C724352
-B2DF600A22B062561D86CB8F81514FBDAA4F8A043A0265F992FAB71FC9124A45B8475E1EF3DF6B6D
-E35CF329777D45F08325E8505EC0D979F542807AE77E57E453525F23BC59A50740371EFA98678AEE
-6C425374AEB745B99DDB5D8D908FDB551FBC0DB15832107BBECC4E11A1A8DEC69358A574A2ED46CC
-31D564549EFF23102D92BFDCBB2BB985F78F36033E34F59C0EBAFA3BDD71338736464CEFDBA91398
-33995EDA4207BFD4A9867D32E867FBEB7DE60D132803EF9347CB17BD91315484EF6570892297DD8B
-7D966103339535E28A00CB1EECA4A9775F60A9F5FC9BD8B06D78FE8E6318C31DA2E847E3F9CA587C
-B01AE2BA0A2EBDE308314413F4F230A758184ED60D4F71F6CEC22A93A01B6C54E0449A3860FCA895
-4A347B7588329A80974ECBECDA1070FBC055666375229F13DD995E99265DF870BC8B8CC6347FADBC
-1A6AF64599271A475B9123493D46BEC41289BEEB67EB97A8DED7A9C9730D37C65164CFBDC22E5CA5
-89D2E7954C7136EF4E084C43A6C7F361A3E96989239BDDB9A593CC2A80BA16DE9EE90E95CD39393C
-212AB22EECB677FD36D34DEB46C4AD0D21BF7E6D7CBD0C8083842FCD87B18FEA7CECF939987E99BA
-34C214E44DD84C176C9CC5A4CEA76D380CB316BB4EF9DE73D73B4AFD4ADB54451591DEF86621D138
-D5A0A29441502BF6C2ADE671CEC3CB5CAB903A657EB2D70C943F976C110E46C5D9D29BC00A875F27
-38E5D22496A43E096E009C5D3CB724B4CABB32838DBE527F83B18CB457E57B092C302EE557FD4F00
-DB9C56E66C9FDF4EC9FFAAB85F60D02BA79694FABA476A199A0331C30A78A92E10417BA236E23364
-8174C826331DC1BAB87C5F95027846130C6A2B4027930EBF9A97BA1B039D386FC51C302648E25980
-212F6A582CDE2778C677A01FBFB3C5D1B8A374ADAF6ADBF7DC94075F25ED66D440B3922C5F255FB2
-3FD8F6E21EA65B1D93BB225684B50F11310E242B087575973345B229BA62C1E2C35BDAEC04D10148
-F5B2F3BCF7399BDFDF1F3F79119714AEA697245BC647316EA157484ECB951BE367234FD02E8B1F09
-1AAC3D29BF282DFF4011BC0CBA8E55234D943DB3017CC7A766720BBC29B2D097A956C0F1067177F0
-12D42ADCB473CDE8D1BA35B4030757FA1D8211989DF3BD22CE5D501C21EF8708FB3449DF47D88650
-9FF7B59B76C0DBAE443F336FEE2D615D7EED1C284F14335BC8A26BF4621E10DE9611FB2F1DBD52E4
-B7565D8C65B54EA36D508BCF0C578A49A2665227CDE1F9768EFE847F9D94F1BBB7DB83701C232198
-5C7283D47B2E40B27A268428AAEFE75F6B2F8764A8494E5827573758CB9CA46FA93208836BCCC8B5
-564A69F5AD882052AF1C1417C3FA7F580569528682C77080F3688B65E7FC24D2A3AEB61574B4A321
-5927281544DDD7A6EE0A3E9388F8F631CE7251724DF70726E5912DDCCC8C652DD6C9608F8462303D
-867F589DE0F2F71711B35142EE6EF93B64D6326C4DD7DC83278E057100EE772082E6BA368ED91A55
-53ECFE2293A481E42F83BC8F9148C70EACE91F7B7D9CB8A72415BDB3AF66F68EA733A17ABE9DB005
-3BF148629132969589F38D30EABFA96A01FAC72650B5A6FF3935670198A1EA33810A9B11E330EB8B
-451F24F93544263436F669AB5A90A53B16CCEEAC36B1445574EFA7E802DE73522BE725E68704822C
-B7D3912717333367895BBFBE06966A5CC653AAB5E9B3596702086BF0010085B900711932A95ACF15
-CA4DC45A754EA334E9EB84D6FC8E3FC4F897456BED64BB93B593549FF0D5352275D8E417172A6664
-C5E0ECED1019494A7ED49AB0B965BEC1A82E5873766BB38D7D856049CCE2FCA65AAF61E961B60634
-E2A69EF059754C9D8163D87F928C222772D070D83FEC6FA5AC734AF65E40BFDE521F7D9CB1650FDF
-64754BFF21EA3FF0AF7611A93D525EC9B28C51AFECB04E7FC8323DD6C9B0D8539A34FC3CD8CEB795
-8E8EBBFED4313C77ED469C199552A9FF70BA5423B03B6148D4EAAE17B71C5B39DC436AC53D6BA8A7
-AD81AA8B02335A8B2B11E9F4FA913159A725B8AB60F52F1A2EA50EAF4D56656E615BF382CC68A690
-BF83DFF24FE986570ADC0290ED1A37C1C2AD469CE789E0EA0BB5CE01020100E729721AF3B5BADD33
-A2DAA6C33EB8F9064F5292F715F820B4BBFDD56F76D42E7A1A068C1CBDCE4640082F6E7D582D1939
-990CE6EE8D270015A2C461798B37DCB5798EE9F7512168B76D26C28BE4A49A1BF96C89D235F21A1D
-B6A96E5DA474D0B19B808D13D7A11BF39EA8647499C410ED9894A1ADF33D41B6FC2E614D8087F4C8
-4E437B136F3CB32DB8393C49177A0675A0C9E7EECEF448A97AFDBE840FA01FC7E5F2E8FECEDC1884
-84C312E8635CD79195475DDBFDD4D38D5A0246DE2C7F21608F8D2C0DA1371D302E941572E5792A3C
-F4E51A33228B93A814D03FD4FC223C314CF3714BB3A34BD4F7ED6348577FEED9DEB082C4049E57B5
-D3CDB7F26629E9F3BA36893E09E3C7463D02A22D7056BE76B87763260E46E48BB832B7EE13F8DC05
-37EC8E81E9BDFEAD8C27EBDF1AD706933EFD11131E12814F236EBB01BE85B7F1B2D627413B324918
-D247604F56EC128909873FEC3857028BEF76A3494364C2A7002D104D486236C30B48E2B75D851C34
-EA50BA7FFEB4E19190898AE21768C157C0CAC628A2181A32796FBC1A7271D2473CD88E5395DDBDB1
-FC3AA8DF0F3D588637F19A8B833AFDEB5F655A8838EECD684E2315B72C75CEEFBCEF94344ACE8D6A
-DBE355008EC72FE7CEEAB01363A895F4E73F867639BE0A0BE67333848816B05B419221BE8F9066C3
-62C23FE85B7F392930BFE4C12B9526FF2FDEC38F23A159ED61A0718E7115C24597D849FA76369153
-54A40C965D4D72EC94DA61A03766AB39AAB684E134FD1407A5B1B19BFEBA52AA0DA5D99CBE5C82DB
-AA663711E6DEBA180E1D4A39C320516A4350D296BC19BF1BE054859A0889C7E9727A021F3176FE62
-0FB0C837E4141FECE531A950C03D319E3255703220B7185BD20FE5DBA673F8129AB211EFCF36EE39
-4C7E00EB0876624BC840FA86E58B2F584754CB6BFDFD76810E300741EBE4544E5AC17413ADEB21C6
-2F66CA4F075C32381796BA709782DE34A675B717A2C7F6D88104CB924FDE5DF775B4F0B68E0E2E5C
-2F788BBDEAF06D8E1FC2105CCBBD5827C0B03FD6CD64F0D073F3192D5F94839644E5EC6C5185BADC
-F04112A65F49A8C83174A9AE958E76A2F5AF469E8B76C833782C5FFB8BD7B1BBBB3EA0CB7C9786C3
-BE2ADE5E7AFA8C8F20892659A59BC421E28845A108E34EE17864042EF587A6D67DECDFB3F510EB40
-D2229585347A0035670FCC76C2837A4E4D68304FE113C539B35C1F0234B5079B8E32934546982978
-C5E4DF955A454EA263C3CA5D7101F31A318D82A3F9FCB5A8AFD7A65209663B0FC9DA400B26F285EF
-46D0E1EAF8ACB1F1CB805E3986D04BC585073FC64895E4DAE1CCB749BB439CB32EA91176D5C39C36
-50D10AFB9C9884D5FB90183424CEE67EF2175D01D2478D67511EC9F54F88763C152697B06D948BED
-49240096EEE3D06AB4575E8E8B2CB8263B5BCF4FA1608720F52B675309833071879DF52C3EC2871D
-20F398B5CAC8F8A4D41D0F1D47584DD90DCDAEA4A1CF160C4B3BF1AAB890B5CEB6CB3488672AA68F
-BD938281DBC1D8BCFE92FBF514DA5358443CB6E0147254E91B38CE6787B2BB0DEDD2D38F5938737A
-977B5EA42892520C58F8FBB53C994B57382379E9490F0D6970B980E1BDF8CF9F4C3C5E0A18F66E86
-EE93FFE7FE546DE50F41364BCB3721B637072571FA1779F1D672FAD260C16D7F13CBDF3E4376E7FF
-56D2A710AC5AC35FCBDBCE2C9C17E523BBE6218617B13C1FA6679B308979AE7C61DA6E68369324C6
-CBC7DDEC364E5A86707266C0B459EE7B2C03FE584E529BFFDCE98C90A2F3D9305AA74D3ED8430DBF
-3A49FE2ECFD9C4BC9FEFD22618FE9C8A973AD072AB6F713E4DF02DCDA7AC5359B2D652013E131B76
-B3ED6C75FD53BA58D862846264627F6B9E70D8800F6D9B32242B747A67BB2B45675840D34F852AA8
-062FA6B01E31ED24DAE02F6CF788A17F7B9368175195DB0072259CCE0FFB2C1035C1D26E1777CCA3
-D56A827C3242069E76D6DD69B653768614B9ACFF16567FEA61508D51454BC02F6C60F755AEF6AFAE
-3536BBFA1823F8E1A53C41124DE983E51CEC92AEF4F99785D554488A51C20885346D1F761DA79017
-940A0C557D93F1DB6B3D00FFD61D08E96FF3AFCE5FEDF545CC9F47A2B1BB26713431D6D1E47FD6BD
-6E3C668B0368241F0EBB5FA9C991DF79890E52E83A3675EE699B61BAF869DE91F67278F510061C6F
-E41DE2D883F48CD0E068E2A652B244128D82E5CD52F35F210DDAE3054691ED55A7D99088AAE8FB04
-F525C2084AC09F5EDF80A4EFAFE981F74C0DE9D194320709B3464F3FF2C0F6AAEA6D973D9C323F53
-DE3D741F698FBF01036716BBD62957CB32CD81D3A2674560FFBC5BDC5C6E4F547E589AD0B1CFE14F
-5E17FED1C4A8ABE4E67CCF8A49F32C4C6044F1431E1CC382E7758722A6D0DF9ED23E51F8AD14D11D
-7B6428E27443715EBA4E9C05D6F238378F9498AEF0E7EE4FE6856622CC8E6ED141EE5F109E343CB6
-695C4BE1E0F66601C27975983BF557C04ACFC19227A1AD7E6C44C00529FC7EDD7F886D24B7E029B9
-C395260088BBFB96972199A7B32796D27257DE83A7402291C14FECDF7998C5C96B1EDADE0280F856
-8A8F5007852EED303969180B3329917973C2D32C080C9765B6BAB0673BC7ECFDBBFBEA980C263843
-39B7F1052591D91667D4FEE413AFC23DE2D4B9DA742F4269C6C939F5FC32A38040730A018155AD73
-3F231E4D5B9D01C03A58EAE7B5F590CCFAF25EDC8552CFC8D95C60EBAE1837D7A97CA137E9D4A4BD
-2CD34AEFD68D64B3F4F62326AC429921D7FB3C235184FE0899690A0B775F1A566EC29D5830D32372
-6526F7E7F5AFDD71B77E07613DDC4FC63EDF49051AEB59E6337AC0A4B6DD872E776C9CD0CCB86130
-5322D816732124F5978A86C186BF0A0F88E733CE38E4D7C1BA5378C5629B1EFC97806059990ED42C
-5CD183BAD7E94070E4058569DA2E51831FFE0D080301AEAB4350BA290318AEC582C78D05DD92E5AF
-B4424EA808629BC972E68F4FF2489C245593F07555CA6A2B25964794CF31CBD3AE5C229AB9B8C298
-06C01D116EBD0FF0F159ED2D3D7DFC73EAB4910BFF5B0B0B587CD9EA6E6FC45D63C09766224D8346
-1F0588140B258B1729F70BAE7962189B1554483392988CF230AF4077193E53330519394DD99BA135
-6D4730AB221DC6A66019BFAE564893DDAD7B177DADD16ADD21D396CFA6C3DC818052E2F71149FD59
-4A16DE0C2FFDD366C99B486C55A6E991E4D22CCB15843F0C3363676AF2F5B2D1B7EF66CCF2F12DC5
-0D63776BFFB058D70A9C76DCE96C754872D72C82A0C33F90D49C935402CDD26B6D743B1F43BED5D8
-B539424849C1495DAE73044E885A7D0F307F1816DF6244A6F2D97BFD4E200E93F69B08AF39EA21E6
-E347A47CEEBF803F73B978ADBFCF056789BB8E6E2563DE87DD9A8C877157B934102DCEDAC54D487A
-1BB2694F0034093C48F10A17D32E2BDD0C723CAF59ADDD1BE373AF8C9BEB4415AA5AF36310C31F24
-354A53C0B962573148BEF91D994FE3F3D8450DD4D686725799F53C373A0A3E3C060C2E1A3E800504
-9F26D716E1F381B9F83125E4683264A07E2D8938F605978E2513DD2050B3D8A1012797CBA8961632
-BED260916338A812AE751C7B657E086A0C7DDCD3BFDDFF3E48B84751925736D1310C4910FC114387
-F3ED7FE163F91895EBF55FCB425CEF5729D99BD8F2C072E36C310523E75CD8E5DE49C031C4263410
-9D56E91A46C8C8E89FD92012A00C33D0DEC52597B5C6933291A7BDC5CEDA95DCDA5600F9AE1C8250
-54E7EE1067458CCB66610704C58E4A4FC0CB5FC933D0322A716B2CD430A3AD48DAB3D4CBE9D23F2D
-092368CFC4E1F5495C133A92942EC62118D45C17723646E69407B4A89DCDFD2AB3FFC099A21D9D29
-741D68270629AA3A414FE58658DC9170C247B6E23F35C4BC5FF83009F462F2EEF4DBAC5FD158A658
-57F9B6DC1F5192DFB169DCB65621CAB2F1B07BD22F4155A8E9E2B6388D430FDE5EC1C834D22EA035
-C52E1E34482EADC36B4CAE902AAE89A7284E62B3C84B608D6BD05F75BC31310B2DD3B2C08A00E073
-7F104F03A41989D5F6B9A2C38B22F1D1803EE5D7A4D8DE44E4ABD496A1DE0C0E12C4BC96D0122846
-3F0EA9CE9509FEE987139F3DD3F9D0DF4313F555BE85433718F6D05F197C41A9D9C7A8B0D2740196
-82D49F58DD5F66B12A6520D9F226D1DF1F1B65CDFA261F980CA25A92645B86B64606293F8BFDE364
-C47D2AF2C709BBE77A70A5712F2CC26F3D66F5BE2C307A48E6F887F681D30121E32BBD87271B5DC4
-615D28C309F15AD263FB37424E56DDA6E17B998B45BE6C7FC6C28E3394A8764C9EB2DF5C06626593
-B5C665D550D4600172791CD208AE9F37BC082B0B242B0A504B751B18F4D7495172B697EE217834A8
-A4FB7CC16D6F9E8BB400BE8AEB0850960283DCE725249FCC4DE97D9886745AB6066C3E2F64DD8AB7
-9AA11667F11188D7965DC11EB760B772E282DBF13249F31986AC6898FEBFE23E3E8B8D2C33E00EA6
-FC493850ECB2E6D831D1EFCA3C2EC8EE2E394599091ED58BEDE97D7A43B6F739EB0F845EAC1DF6B1
-EBFE876009CC5D804B15ED4B56761B3CE1AF59C07B49DC798A44532297AD73D5101ED47F36A3678F
-818297CC27F6AAA2AACCC9AA9B6F5459911D8C56CF499E390AE607F3790450B2B9C9BE0F006EDA0C
-715B5CA0481734CFB0597478E7602B0D2C1E4F78F03C68C17C70E4B42D7D2D3C95CF40F73488B371
-8E2CB05A549944D86944D78724E266C3319AF89AE430E777E95F0D792B1C654306E421F3D63A26B2
-1E74B6E8B21B2E2B9DC596D013CDA16D08E65E8F24A84B12B2BADC653E6E1110DE2E709C1C1BED13
-707B70A421B384F20CA7A9A9D20324DD383F28B2D3C7A9C53F5D4C6B7C378D26DF11CF55238BE1B2
-4FA70DCC178DAD3D35670FE4919085EB1CD905971D76A368FDFCF9D2F0A23739851A3A6D2E02D65D
-54DEE69ED5D81315D3EA5E356F94EF256DD267FD1E1A9EDC9CD63E743F299BCC4A4506233B8DD765
-2CA067F741603F93250C087D368F9E9CC4CC1A6DED567487C05BAA992B0056A77F630A72008E3946
-15A9DB24FE56A956650EC9DE90A6C2259189440247970541CA198748928215C0E132A81AA13208D8
-63C1FE817F70CA573B54577D10B73100AF8EA088208A44FB92ACA314AE5879706180788C17BB1D0B
-81B6B95A1C4E0F9EA66F9B39BFE12444A6446691A7BDB03E0F03D9F07A10A7598F2166F108529F34
-CD90E601FFED3479ABCFCBDE8F051C348E48C61D95B00C59EA1287423F05666C3D36288844067E83
-E14F6B5210842C742B89F13ACD126B9FC50ABE2CA7D7ED513D43B6AC7F41EEDA416BFFFCC5C844AB
-2D23D4DC09B2D510504CE98D02E72020D9E669DDAA344C63A1B75632F912A1C0DA3885DA4AF7E243
-E4A4C6493D6595BB6D56B0359106957259E59E336BAAF35BD1CEC5CDE735272EBCCAE8D4904AEBD2
-B32610C6FEA2B69941D6542ECB44D71092A3CF067708A3D087AE99FF29671AB7DD8758759B971A08
-AE1BAD78270D2FBEE37AA2DCB119D72F6C7B0C8509018A70D0B0BE2C6830EF8E0B24B1CE1141EF87
-3A4D7DCC501F808BFD94E4DC0F2915AA023076BCC8006490A43685EA25AAFC187302EBDE7FE1965A
-04A5A398985D29F08E085127B56B057334D88EB638A4DDE64AFD204974C3939536B1B66A54B4DB81
-151853915718F70813F096CC1B0EA25E363B49264C2AD17158A4489F91453FBEDBDE15D7B74D7F98
-E81DF23251785D58295BA297F295AA6248A912CDD4F1111E6B628EECBB5139709E76EA4AB743CEC8
-26621D08E6BC64691CC90B3C3C1778931A28D3D5B1E20E96C643316613FC487C9B604C43463FA453
-3BCA1236286E6F5A6EEB2F1D9C34BDDE4595495A365F88055D9268541CF1654ACF478D384A5496A8
-772EA1402751A093582A6625A0A44816B5FDBE166835D598644296249B92CC90AA3FD6445C9A19BF
-27F59CB0616C7306070F33C7DF4E1DE64AC8C5BB2FFAC1EF2B1B30E5A0275E6004CF64BBE2C6710E
-DCFC3AA4ADD60106334708862FFA6652825BC84842736E47AE6917180365C75B27505EED3C6108E9
-898A780E20C3F606A860229AC46D0471ACA0187D6D539A1B8820F620F72B41AD1D3BF3834BF48CA2
-AFEA8BF535AF74C4562DEADCB63D2F5C7585722B77C989342D190FF926C8A5263B4F25286F99CF6F
-C62EE6E2AD61C82B29D82468AC10FD27764278E5558CE8B41BA111CB2F040914451A480C93084237
-CAC8F66BB7C6689F340B8ABF0150E06D5B1177278A4C08742FE22F42C28680F190900344ADFA486D
-59718C25D37275BCE4DF981AAC35D2C7E85C72A0188B8953CFA516FD545AEE0BF4B8BA301CFDE214
-4241FBDF3D204E3D2823301572E23F204C97305A82401660E12926EE7BA6EA1A81FF5C007933AFC7
-3266FAC4C134ED818A48E7DA01C71A46335C845F9DA5E960B25339D551582B375814148D94CFB781
-FC56093827B78578A73D4FF67B6B87F40CFA5E3F4325D9108CDB64BD06427B88C84105187316FA29
-90B4E3E8EDB6C78ABF164F4A9717D523794B2FE772A04DABBE688CCA977090979B5F47CEB90A1DBC
-167D305EAB231C9F4260C4AD10889CB785169902FC0BED78DA15B8417453BB65856EA0BEA5245BA0
-573F623D215F6C0CF801851C305B355D26B52B0B343645FE25C78A3526841EDA480919A1BBE5F56F
-C10ABEAA3E1FCCA7C43EE560F067F1AA2AFD642F769D1ACE8E2AAAF38850F0D757CD808C921D716E
-96FBC07DA7860DFA70CEAE2888C0ED3CBF9586443532B68DAED9A926655C157A416C383A53D8F283
-2A4E67468112A09ADC837ED8EC95F70852921F50D4417239FC42EE3624CA97F682745CC5E76CC7C6
-7BD99F2180F8C0B7FB49539C8CC474C25C0DDE491671FF329E51BCFA779346D4686835A3AD6633FC
-B5E0F67E0CA9CED8F215BEF4D240453EB2EDD6ADB22278AA5B985FA140C9834D38753DF2014F8C0E
-E6DAD19E8FC54C03C1F6CB0F858986691D99592562CAD95FA0A5B2ABE4A8B54B457D42E8C33A2D19
-51C0419A72FB94FDA78ECD92BD2A1416459E9DECA9469F35E4C47DB531726DEE8F203D7042EDB32F
-025DF3D582547BB1D45F7A5B70D317DF4EBB16E36B0D798E0932FD2A85B04FD67143E4B287A50416
-2C1F5A037CCD780088C5476385AF8168E12D97D44B0630621759173C8F1E3006B5B1C6D7138B7EEF
-C3CC5F54E24B2C3CA7B41AACFD25E554880AAF406EA4C3C6E21D3B550B040FB1952598A7E8E6488F
-E38288B2AEB6C4718338598A2BFE4D2B9D14C65732DA304C16FF3E1F8F03046EF095B65FD609DA87
-EC24A69278BFE65C905CD0329F6A486B8525B7EEA4F7AE56C2633CD83543269E8ACD6D71F500D82F
-DFBDE7F7F7B1AEE67328549232E26CA55085B6E84D9E2E7F74068F93A90C4654F2F396E57C5F76F7
-E61CBBE523DBFBA6E76638BBA3064DA025A79E3A294FE7F1CC28A3B4C57DD6FDC48E541A85534B25
-E1BC11B4F78019457239EAEFD4BE9007D205F1D985F389DB22400B279C10948551A6B4A17FBDA0FF
-C9428B18B43DC76EFB15FC2182216F1B60B4E344A03AD6C00F141EF99F89F24C819C3E32877A927D
-84C2D006940F39CA8B71E5951673EA9BFD1749923219DE38929ECAA9CE43B06CFA7DA1BBEDFDA56C
-61FF6C24F40E59B13870D5FDEB82D981154FAE5D6D5152DE69339359461A41A9713B6BBE47E868C9
-33CD74C75DB71D13BAE4DEC85E02FAA14EAD6C0A253B16C79514657B15E68CCFF9EE6AA385CFF9E2
-C53D9AE40F85C793E4E8FF50B2B7420F4FE69807BC5F37C3E300E6B3C3549D1D3246A2E70F091054
-1135BDF805E0A698E236B6496702D061241687B7B8D1A0E517DF0476DA09D89667A7AB375FD2672D
-CBAB8124E511502DDBD08BA04D941DF1CEBDCCF7ED48405CBCC33774A68C5212FC6F132641FF413C
-984F8B43BDFD7B1A2A3435F15AF07EF4970D3E4A0BB947C181E9CA27CC14A35BD1BD096875B45873
-8CA244F88C28728B74E25CB8C4FC1095A56CA75E4569AD3082EF194ADD11350DB3B74B96761D4538
-596FF7243B1E1B724716A144106E080D42036444FD472998460CE9ABBD05B42AF9389AC452BDBBA3
-A13A96890025789F16B9D92251FD3B3BEB2C61EDDB370A20456E3BFE5F4039E2557C451C524F8087
-015BAF3FF05F51869FB97512968BDB2B49589C1C7AF1E085250A47657465F480B7023E24C76731AC
-0EAB6704123D77977D3A2C4C56B691346EBE589C619C04515D34F81FC6A17527D5D8319013C5D4FF
-27CC3925E24C99231AC7FB9EAF0BBA482D3B75807AC85D03CD09DE5D9AE0B07B7A813F0449786500
-0AE8A7E00080300F0AB8C399057EDDBA273DD2E1B2A0DCEFAD3B332E6D4AC1FFAD846167DFD70E03
-46DAF84AF292D4F424256ED5AC4E104F80697050D50844A708EAC9E7F7784FD01646F3BD0C595CA5
-1EE6BD607D254E78ADDC5E15C3B6AC4940EC865A5C23105B6BE09EA09F2C05D6D76960A843B81EE4
-33977FAAC3CBDA85CDD2F4DB7C28293A77825635992AF8F3B38B4480D9A139B1662345A8ABE1634A
-77496C3F57597D2985E9E54717AB2E99CA35789441BCDDEDE9A9E2106B401D9684ADBEFE40D607F0
-75C179E9CC03E59E65430DB70B441D43DF03F2AA6FF06F224B6E455B01C64FB89EEC9103E48453A9
-749B4D602808C7E408A8903091D85E06AAF635D0D529C3CDD1B8479AC0F4208C284BB678A547F2BD
-77BB17C86D4560434F7AD1937760A6AA55B614CFA9FF8C9C96561AE6C8F2121C4E20237428BC51DF
-2099B6C49E3EFA18E6D439E6E6981E746EBB1DC461259D8EA0F8099C47CCA27B2D982B72C9A07CF2
-1B3C05D6E26E6E286E348B8944078E24809F9C5F3D014B4CBA02533F5621BFBA1F0EDB776C634746
-703C9F73BA89B1960A496420C68F54E5B901A6D733D7ACC79F275FFFB253F389AA480084468BB34D
-A1E797E43B7F6E8CAF5E8C93069A3A2730E57EC39B677BB73E3F07C2055599F7062E53B37A5F0099
-907D2ED87FF7A82C95FBAEB888033BDFD67BA3A6031A4CDC56CB1E4CF5B06B46E16D988BECCEFACB
-9E1C037023D7BF5CCF5D65AA66A17AB361BE7981F132A578F3ABFB97960A6034F052D9D5AFDC0679
-782EC90F240F943A5F9A3D969ED7399254FF67D89DF668F7C56FCEA1FFDCF20481474AC8495D3AF4
-B6D7EE093E369C057F0B70858220693B398ACF8E8143558132E4391405E30A73937C53402E459F4A
-A3539CF7A99A3F51C0307D045DF8B77757E92EA2F51BF0BB4F77D3904DD355665870C2B59F1ED7F8
-4FC71FDD7F0B6C5D3182DB77827CA6A2060D2B8C83C4EA4A432EF43A4D0A952CC6CBBE52A9F0CD66
-1A538973DE41FFE9C5CF55F2506B9EFEE51FBAE5E63BDCF5528499A47C031163C88D3022606784DE
-2F46A9C9235AEE3D4F71D4959B0CFDC5B7E78C8C0A8F9DC99440C2263DBACB343C5C648577F5610B
-50EAB1CF7FD02419EF3941C7CA0B0E64EBAD4B2CB05A0793DBC38F1946D44767BD287F5E9779C611
-CA0DAAA1E7393DBE0683C8D3455CDFEBC0E64B54B737E298DDA605227C0C4BBA87AA3EC7FA6EBAEC
-39E6EF2537D5974391D31739D9FC42983D81AEE44711C823F35F8E2321AC74943871739D2DBE9748
-FE68592263E7713F27E0D49B9B5CB7A4E55DE54E6B800D15856450FFD3AE5F287B12AE4F438B20AE
-9E27E6CAA00F3EAEADBE08432684FDF9931E925544A680182602A3C1997DE5D0630BD5A010535E66
-E1C123013D23966B3545C7431C39B97295BFA4099D14461004C42C85095EEACB9B47C593BC6DB863
-533A8619BAE09095DE8ECA432D4DDD49AA600D277E75DC3F5C6631E2A05382CB007825FADB77438D
-CFA78E252D79B6A196D5164C2FEB85D75ECA25FF80B1D97FE10E87960CA0FC47C41D3A213BF141B4
-8BC3AAA93FA86245064668394665BFD52D12C3BE4CE39EFD8111754398A944C3FD1AFA98EC337BAA
-AF899D35E804CF416AD7FE45FFF13FC6354007501043F98FE8428DE8013901BA6A28711A2CA85A27
-0BB135B72F1D5026E8217581860729E94F2F1878A0E96C59E9F62714FB5F8F25003DFC7347E99007
-8A9A331CB3A6A535BC61866F02513DEB982C4A13ADBFBAC3FF70A7335F40D5489E48E5EDEDEF1619
-1973D932479C62183B0E25EE8C4F76D4F1AE45DAEA4A12AEDD9EF81D248E8D19F8C8A5BECDD1EA1E
-98783EB7A38149170851B1942C96C53DE06DEF80913BFC04E539EC67C110498D15B78268853E5C72
-F485F8A27B768569E54241F6115875E2973292CF48FF91D45EBED627AE9F0766D22201B20AFDD40E
-5B17CF337F2999E0BD15B86E46EB3C18FC12B7DCADCF9DD50C6C7E3F37E615A892DB3F57E250A072
-A49F7277DD6A2C8042698233D35A699B17ECA5DBDA6D250ED4A16FCC893BF0DC2E33FB1EBD7DEDEA
-3C1C39603C8B7E1A5A833A8FCDD5570BD088749BB232615366687962C7E56ED089CD7B092505CAFA
-5A80F503C4CF337F07ADF0D106937E25670839D491F7BFF7A523DB609D126328C16113ECBCBF9C40
-04904427A108618AE5D4ED809F8CCAF72251104C94EC5BEE21F91B179D31DBA79CEEE5EC7FF698EB
-84AB1D2D1A624F58B3622A78844CE51498B2CEF38EAFE259D22C7BA61104651A862008BC1DDDA58C
-C45F663EB26428DAA85E7785363A69D2790996EF5D9621D53042F42F794962FEA46E46F37B8AD1FB
-76FC8D5CF2146843F8CC625139C75FB42DDA71A752BAC48F294E4C0C8289FC46DA5EFD9C91BDA6D0
-27518B7E81E8B21F755A9615627D5812ACA674D1527A1185EED4E3C628196E7D0759B1CAE6B9B7E9
-01E9599A65230F1EE469CD33B9BD9C104C44E3C1AB966C9678BD0AD78111A4E0F2D07A01A038CEDE
-7036D0534D684A1562A17AD64A00F279200C0371B1CBA61747671D2A21D3F9646CA290F6B82418A9
-6FA177C6278277504B7FBA936325F5FA124AB018A15DC18D2C5E8F93CDEEA52BEEDB78A57828D81A
-3E6C38B9FAF3DC4EB7273ECE3EA4482A1C6242A335862C2C3717F9C9ED95F77B140C4E1569B2192F
-C7DCF702D0BC9A50428EC406F8BD0CAF886B4D979320D3E429816D88F7C7146D960AC12E70F2CB7A
-9F4E3E366665AB3F1B4B6440F55EEA26DC9EE0096BB7763731740A537766490C8C174723BF0EB40C
-53701AAD12B21D436ADCE22203C1053A9DC4E9F17AE617888C4B4E6F3A720E4E6366BA628221A387
-D8AB15E04AD69387C310D3528BD2FAA5B22BFF3FA494F5FBFAC4F771C9C7402B95580C5AC4BB3AF6
-92A70CB2C851FA5CF1173EEC3EC29B5A05A0B728BBBB51D3B7AD8B0AF17A1563E82FAFD93F8B7118
-1FB7AFE352874F4EC6D334AB6747519AB8E847B7BCED33EB5458A828E074E74BA621BDCD03FEA604
-7F7B6ABDA01FC7514BA1AFF0D4D0C0CB8F4E42D5A87E395D9ACDD02CCC220C157153422018725846
-009A3ACD8C8CDDB66BC6836B4026FD9F526AA275D06C813179E5924F26A25094E7BDA8BD26AFC4CE
-B41D8964D4FC4AF1DFB0595BC5D6714C32F15DC7194E9A3A73013C45D8FA55CC0550A12D9AAE8E9F
-F199FA28EFC2426D8D1DEFB93A65717AF3EA8E2D5B4AA8EF0EF38E9600F7D4E7D9F1D67A2E63ECE4
-789FA74B159BFE2F91C19B0378BA52E93DF12830D99553B6618645E26126842AB70262D96E35E5E7
-50ECA0CE3458B3E51BEE2F21191136DFDBCA39BDC07939E521E4F492F392DEBD029C1EA237BD89AF
-76BC89F618D530160AB16269FA6B693CF14BDC4EC7C630025703C5337F61458FA09104EB15C7CB20
-AA4C9BDB7CEF3A09F25BC7F3149951A7CD75372993B80CD2112F7674CEFD6AFA764AA3486730D2C1
-897A264D82A91709FEC4A21E30D812F558451804EE6F3DEE2C4C437846BCBDA07C5B6CBA1D94AF02
-9163B7383CAC6E088AB1DC14ED3743EE77E26EA7AD3119A76C0B5F925C4DE305CD7BB3A09A453947
-5B9BD79BE28FC462D8718CE05F9D94CAF3387BA55E6E447BF81A9EDDD3A34E17BE66BC52B0C0BB6F
-86F6F008829173816D205182ED2ECED319864A796AB65D4E3950288BADA94FA32B6F453AFDFC6C39
-A4FCFE60353A64627E2057D4B379D3240012B3BB0ED0C7876CB83C1BA5EFB6E2A03F340C2B576731
-F848F762A7E1CCAF267EE06D621BC33FC245D0E1547ADC12CC0EB58B26BABDB8EAE9CBFBAB93836F
-FF22BDA1831DD01B7346AD377AA298D84628BF1C07433284B0A90FC89F5AEB2651BA2CEA405D4F52
-DDC0E74B871D43F71EB4ACE0D2B401F9348EAC3A2EF0AD295036BF6CF6F870D58E00B619D50EA7DD
-77BC28DEF91D805CD527DCBCFDC16C042BF9B874E3B1567EBA4C1E70744B9E7E5BD1FDA6A5FF6E10
-1613FBE58DC46CFAC1A65ADAF65E49757E9304E2AC9A91E0588600C709A61D4231730073A36D473F
-518A145E141D0A5A494441B9EA99AC23F60F54F8127B477E1CE698BB4129B4B1DFEEDF10D9E665C2
-47A62F112F5CA30B0AE5DBF3E495FF06EB28EB438CE8AAAD84D5F50FB56A3AF002C23BCF66ABC270
-7AC233FC0F2723DB99D2CFE7D3B3667732A531F5DC315CE74EDB9050BF75D29E6430F57CB6778B2A
-CBD57DFCEF896E6766C8FC5C9F9FBD701CD62CACF33EE0FC95E78DADD205B5F42CC63024624BAA0A
-B4DD447832B4E1DBA77BDFADD223989F8E958C8D759AAA37930664C6EFEC708116248A2A7AF3D656
-DDEAFD009B7F5333854608E67E5E588A857167ADF9225CF6C641F5E19C3E08678A281199EDDAC831
-B57223B1BEEADFDCBC8F6F25D32FCA2336C808162E8F381656E847FB6CB13969572425AA05AC830C
-33DE6E030F86A3A85D2A66A77F103C7042C97205526DC882EA9A00EB8BD5519847EB424C15F808A9
-1652A6CC89B66A5731126DEBADE123C63D88A2E550FACDEB3886FF98646000C64B3A91078012CA30
-904B71737CEF6BECABD43DD702880538F5A70085E6CC6015D2163681067C3D513A8C66032C34A0FE
-17A58AD4BC97CA69BF41F11D5E910FDFE9729652D3EA21F8DD8CC19160A8FC77573B1E9CEF4E790A
-79D8AD6723B6804E9616466C935303E063DEE29CAA6C3BAEBF278B818C2EC2F13ED645AB452397BF
-00DB8B26E115026E256746CD0C78A959364FDE6DEDDCD0F441A61A1EBA32C7BC172BB09512148D1E
-BAC9E791B7D51B71CAD2DC9B83B2F99B3726607D9CBE58B499A13753CE87FCDCE21C0AD0528ED0EF
-B9B2C927F57C78C626248AA2B835A0791244C5896686A66173EC9F802C4C633A42B086334D2A4878
-0E53D00809247BE64E529F96AD2F8B3922A6097D414DDE1EC76F9552F9B8D58B8E34F359AD792B2B
-E50C26DB05035E7497162E7C49C38D3CD9B98D620AA67492BE5AFCA3A81A7080185C7F0B5105223F
-1FA77805502A2E8C5FEEA27699858D84A95842C5F2FB68686D59FE24091FCDDE139B6463BC6C7B1E
-0E90D20A83651AF00C85797BB9F53ECEC1675C7EE636D0D9E77DBD8F89670F855EE4D4800FF3F695
-0EFF09BBF8A0DAF6B8242840CFA5BA73BEB95115F4A78BCC02D85ECCE0C0F2EF6F328AD1DD6CC049
-5A3315B414A4D61DA50DA46D7ACCEFF6EE56451805D26B0359AF193531F95F6589CEAD6FA041AF15
-3067F88A0A2FECD135C56682DB2B45A71D1FA737C064EE9A4F404BB72A70B3AF0330359393247EC7
-81512482579865240A23CD8479F21C2C44A119EBC4E81B308DD8AA86E60C3DD8ADA50E0DFE8308EB
-1A7F201EDE8DCFDA405AEFB47E0E6CA7DDB376DCB21D37F7ACC4D3E9F26B03A8DE0E8940CA3A9E75
-963A389DF8038D2C486072F61C0CEAF500753C7A6352B1CD0338D9212B42A4D3DA23D5BDF44C27C9
-4B88A415A3242FFE2E1B332477A21D2B9CE075EE479C6E657A4D8874A8C53964229310E01ED4F3C6
-86FEF5258EDF3B464DD6FFD7F1CAF473BBE722D60FB14AB4918E93878A8AE4773930B8CEE110F476
-7F42A52D9304C55BE12846C911A10AB9B2E036BF9DFD597F5348D42233315FA80D0F563C388BC253
-2103F05E90DBF1923F229F980A2F4585C7A373511372D07DCBACA583099EA972C03E5AA67E663882
-6DB134564DB993CEEB6E7A6659C7C5C05C310267D5F8A24EEC2D5CC3E3F3C808E6D6068D1A57646B
-37FABD98ECB7BAF99E7D9AC4414A491A73CA34C52F394352F6B5A15F0FC4D88622DAC694699C2464
-84ADAC3B1D366AFEDE2A2CD2042C90516A666A19A91C80248B11224BEDDF1A320E230739E755D098
-B6A67315535F4C187CFA67ED817A035056353FC859BF286317996FFFB478A2248B908FF12ABDE705
-402224A3EE5F463DD3D243875C84E02DB968ECA1CC52C75171EA50D6A88CA91327A7AA5795019F36
-C0A19C093A1C9D3723C7568F9D41F2E4FFB712FD47F897703D7A620B586B81936C84AAED61D84332
-B3BEBC4F95B796B93EF7A1F565C494F8A65EDB21E2EE18DC025522EF8E599887CA2836069CDDD889
-88E5862977B7472584303198CCE97EF9F9E1446D1F1F5ED1CFC666A8A0C3A03E1792EFB60A9B4065
-49E0DEDF6ACCDBD98742568B4735A747D8E5DE21E630125AE0C691D054E42199C15B1F80CAFA6E7B
-B2005F374A9A5F9900ABB7409CCD50C3AFCCAB1214E6A856F7C7EBA89BC3291801E1343DA9DAD2C6
-ED075C8ECA1423B43E587AEC67E6145272814B3F191B3C285639F9E2D6E148A02DC2CBC0E054D629
-5CD05DBAC1950400A9189316F0265B86A732D302C5BEE8ED233768F237C62600CBAAFF3A110D5EFB
-6CC7CA3B92D965CA7C5E8D3E64ECF239FE2507FC797FDBE54C1112B28D4DA44C60AB09D994C5BA78
-D663A2591934CC052BC70CD1DCA3325C66C9CB982E2039F5DB70C848D3DCEF655B1C2CD0CEC8865F
-E8E1C0A267BE4F707ECE6F5A3DFCA3CC1EDF92C760439F51AA69A4C1801E96CA4D6EA4AD980258F3
-D15C893913ABCE09101984C61B91D603053E49A97CB82FBA707DAE8AF1D579FD69C8481CB7B712CB
-CDDB4D287BE995E32C02B399602A08B9DD849039B5673F1930BEC7BF366EB082D2CA5DB2385C8CC4
-5BE3FC0E31820191A814EBA7C4F23B1938E6C4D800732787CD2CB97F762DFC85D4B798809B5F2254
-D826CA42B32695428D120298B44CF38494E56240B75DF1E41E46E53C44DC505452256DFEC819408D
-605FF14D6C1F3F152F2FEA96EA0AB3B472D8704E06BE9F8C3E8395CAADD06D6DA033E81ADE5DC3B8
-3DAFF743C6E9E48716003D358DF63CD7FD3E2F727D1F2D0C29962F76D5C95ED44B6F08D052025A66
-5785F264A3D5F5593677B630E628B5EA81FB37CFFD7A30B7FAD226B6FDC82B0878AF4C0EC4F4243A
-807B9839EA62BCBDF7C2E9B30A623876E632E084EBF4A21EDA04FC88A1C07021D0C72EC3E969D449
-FEB08E5826EC20E55B21EA71EA59F6E3B0710B0DDAB3261B4A2029ECAB68C19ADD5174E55D5E984A
-4E5F38F592A302FEE6ECE732DDE841A28672C620CC5D687455A5C06FA9FE688394A04F96312ED025
-B7AA6FBCE2925F3AE559CC1886BEECDB70822E2E5CA3F732A87404B1536AAC469989E9610CFA440A
-CE43875A70CA51F36CB6F629D9424C1E35A88F92D5DA3CD8CBAE6E8425A36968E21F4F30349749E0
-205BFF8D552837D6FC39532525370BBAC833F75F1854C93FC533A4AA53ADF7008173A70D94A4EBF5
-38EA9E62BCDA7C20E0A073BEE2EFAC34D2EF1D03BABD5147659E50B557045B2EB89DB303749B04D3
-F54B43FED612FCC68206E001A7AFE90230D9C12F74A32C7EDB5D0241DC3A5D51481FD7C8FAE08FEE
-263FBCED7C7D911B3A303C835AF5FADFD218F61A9D6DE80485ABCA88200047B094441F7767B97A24
-E8C612590FA2407BAB1E8B56C71914EEF2355DD97CFAFCC192BC06FCE063D3D9D1A629AADC75E3BF
-207234C208E7E30663EDD691043065C9CBC473D97C6D4DD3DFF59D6A9ABCDD4412C3128F603160AA
-D8F81C6E7A4DCAF35F3A99B4EA10A34375B477C2BF846521A7EABD4D28078E9340452A198F3F5ACC
-3DB7E3908939FF6E3709C6A3FD9889439A4AE3E10B618CC92E14B68429A3AD2C80940A1079452EC2
-66F254657BE7D79A2A24084AF73F6DF71FBCD32BF6913A3FAB25F977787F7BB0C3A3E8BAB38D7A2D
-B0B4826950643DD1E03BD7DD1FB149A33862A89226B7CB454DAF613128C2075470E42E70A9444A8E
-6ECA526345AB48E6F5160BA23B5BDDFDA6049EC44ED1461C7E0DD514B16E2FB285F72039DE3C7982
-EFD40D7F6C8E8F4CF35AC71B467BFC578002E8D2239A2FD2C4BCCDD8AF3D7DB1F4AE7F2D2E0811DF
-9D0155BA6EDE50B5F052F14F6AB884FFF244D8806C07EBCB49ED22D85DF696995991A954AA97A1EC
-D86ACD76E061B7541E87997FEF0657A826BD88EF3A4A5920462C6595E7A156F453291CA044CED810
-860C3B0149BCE73BECA713040664AD0591304106129600AF71317B0D2907839CEAC99515D357E980
-B1937B6E1200AACADA205421001F1B2F91753E80D2263C56AA164A74701A8D5FD28E46480B0DD963
-A683A1F355D7FB4463C7347C94EA5E2CA40B60B56297CB22D972C5BB10E56715A955605256C1541D
-9F3BC5768A6F355CD3B863F0FA1A781EDB49368F51B29481CBB41D4AEB07AF9DBE8F52C5D0FF75F7
-FB6431D37D6AED84D78C778871CB0F715B4F07580F23B586C969C81B471FF6A6C7276F7E141E02A8
-584D4B9AB00E7BD643D2C3FAAA299B1F1E25048461952EA42D4882768A70DE46B213A287F8D31AC4
-6D5436F22A796C05D1FE50A9BC2A928066627A0D87DD57A3AD91DB446404B41557D1457873482005
-EA20916BBE46C613F456C849D46BA79D20627B446B2F49E3FA309AE14F8C420CFD94922CBC0FB9D3
-5A0F7DBEF577F1849A1A80E0011DA8AC082A8C6F61658E65AD177ABDF23EE17C8CF0D26B9FA3A6E9
-4837EB9E930336889767A8D7EA3CE980A8EA95528B004957BE6067CD9BD8E02A0F23CC1762CCA656
-D33412FF45E917FD4A03EB6E8C1F43FDB0A8965A33B4FD26BC24A20B304CA817E88495BA9B361A3E
-933717FFB0271F7F70C5D3CBA1E86D0F51BF3ABA194DAF32C35C796627D00C7B2271ACE2463E37E9
-7B3C826CF3DB60028F240F9452CBE08F7EBCC5FDB1BCBB3C327A9F450B9E5671916101D6E3E5E458
-CA31F04D12F592F83BADA2C3683D3886AA3B403963AB5DBE220FEC00037A745839F67A3635DFD3BF
-F08F367482962DED88ECF6322852D643A54D5D303EB04BFDDEE9BBA1EBCCBA7C653B3A613A8E719A
-DEBE3CE1BD7E754E5F4977E863E3C2D388A65227B451D4F3A4F94E06513CBA4AC1F2F511613FF035
-611684CCC461599000E546E4D972CA6960E095A526E4735A23421A4C9B597ECE08AFA2753592BD16
-DED93255A1E33DEECE3C5EB77B94670E8137F2A4A4B98AC193258E7DEA5DB8408A806188F2D1DDC4
-40CCF0E9A6E2F0C78FDBD7B68DD4939D2458C1965BF8BED4564B32462FFF3EC892C03B11D3EA813F
-AB4CFBE8D3016329C5B7E3DFED0F08284D44AA0B7A2F6BC96EA4503E8EF52A64C22BED6B452581AE
-8FF8917D53976471941A9116A2D878FB2541B561767ABD4E31CCD8A590CA03494C62AFFD64EA0A1B
-C779173DAD84999C7A8D844EB1259DE7BB5B25CD023537A474A524EBE4660B22568949E624D8FEA0
-AD37F4CE1EC75955EEFA49C6BF1803BE87E9C9865FF3F6B8525B8C15FE8835CA153D27E6C0FF0CA5
-1029A7A9185D25F0F14D86FC797DCC1F99EE97E2054B9C2A2E06FDBEB8DEF6CDD368BF23A858D9F8
-C1DEFDCEAF1B4A8DE5EAFC604CECCF0D285BE00AA912EAB66EFF4D37AD2EFE34853BBFD87CE09B18
-749B489943EECAE7887B006FB827D10191DAD18466CD1F86505879310A8B171F902EA0C26A388E13
-B53C700272CEE2BFB47ACB58247C13449C6BB9D01232C32517358F1A3DE064D43C18F8827D53789C
-CF3CE2EBE78949A6ABFA1A6B8414CE360A5E22AFB7D1DCE6F5A06182C3B984B4F9BB1A905A9D5A14
-83750A1DE0A857CD5C06945EB7D4A2A6BF1237F32A154FDC06D51A703D44FE052FD3C53E9E8F417B
-35D1C851F9203A8997521529F21AD8498F96930AA77EBAF82EE02A57BC77C792D9F220294B45F48E
-A8FD94E01CD25645D36D168923562F3FDC93CB79DD4760DA0C103C2675722D7A1B79FCB4245ED12F
-A0DB52492C9CCE58B333CFEE822812F7DCA68E802C451B5CFAEBAC608B950386B6C58239D1C62D62
-4DD5D15782FC552222CCA06DDF387B373E32C3C2864C63C768350C37283760F3515A5B0AFD66C48A
-B522EB3E808C061F5CD6BD96CD18C9839D30508E7D4EDB88E8F11E31E10919B16B7971F06D7877A0
-58D8A4944C84FC6CAEDF3341B48B6E0D3C7B85D710E0C35F5B5053CF4B4798B3778CC28B2DC7AE0D
-F3A49F9F3BCD8E95D746C35C3F47D68B8AA35D97AA08E711B5FBE70D1A623C82541EBDC51A827D0A
-69E6C049087AD26F256EB7577F58CCFFBCCBA5A95D093DC29464C9A38DE95BC6B1853963B2DEB0B5
-7AD1248D6F1625E115EEB9510B5772AAE4E3C866657DB0B3BF0E0AC345E116F8D4976B770876FFE3
-748C36165522991F46A36F193DD1A1C94713673C7E4C81582391B636C72DE94CE6254374F99B623E
-5686C13D8A8322E83E11BB0B0A896C6A8C2C4F756C5385CD7017F26D23F7C3EE97372C868C8C9155
-81723BB6B76B4C3CE8998E4FA6CA40B633DFDAA59BA902A4952DA90EC4FC3CF0F2676ACFA7F76F78
-236FA2DE10FD3545357215246BB7E527F277C28B353CC6D79DCEF21BCC8F77603CDD58A2CCDDBE3A
-9802F941CED8E035313875319548C41992A2BE939A17CC109426E33825AE59BCD17CB19F50D972FF
-CBE7D9B4B0BB095303D9DC9D406696C2508D6CE99E11CF00F6461147E97449ED5F486D480A86D3A7
-ACECB7E9A945984724EFC21C5079B1FD03ED803C2DEAFCE3327D2D7827715FD65D9506216C88B0FA
-26935E95C64114A51919D419038B1A7E9C1E829FBFB53275093752DF19891A97F3CBF7719C1FD6CB
-17019A6D2D25360ECA804C4B35172662CC4769D2B785C6C87E5A4ECCE31704E59F71263B7C3CAEC8
-ACB4C7426EC25F11A0042323EE6C3EEB04284DBAE2C770BC419DCE79BD4560AEA41571C3B595F525
-60191DC7A8FBF63D413A77A0905E517441B16C2B501EA2F9E99CC38D052679F288FDF1894542E3A6
-6989A0090185EB2E75134BFA3D9147C3DB8A621D9D35E37786853779E157B47F71626D6B3E633005
-9159C17596C1B87FE2B4FF47ED9D78FA4C2160077276C8B58CEF5DC030B4A5D83CF257096C047FE6
-4DE307C598B815058E72D5F57DF5C369E664E137DE29349E2F9DCD8C9F4EBA6E765B6327D7A20DFC
-B20711273FD8091CBA605C4C494248076F7E03DF65A6A50164980BBBB708741E5BF6056E6F996DC0
-7FFF408C5B8EAB8DCEC315E92873228C805D4440A6470E3EE3983758DD211C9CECDBFAA4C9300CBA
-00608A4B2404A3C7AF017A3B7E67F39F0B51ACF950D3E75CC7BC2B8D3480202FA958E8EE0B240501
-5232EE0D264C7CA02C18CA45CB3C2DE322D3EB7F00F9455DB6C5B1F4E59C3E95520EC36D7D903CBB
-625D70B54BF6F8255E412604BBB29FEE026CC660577F91DB1DB4A613EEEFB20CF7AE3CD89D565AC8
-38416B01B5DE4FFA5550D17FB51FBBEBE21CF1D56038863EE931B90DEC2E211ED42BA92EC244D4CE
-2C4EC5CA87A026992772DC2AF754FC982B94F36EA7B7BF75E0ECE90CBB2A6AA1A012E8898BD679C2
-3CB3827C35D5D02F0569C7AA82615D4AA67518ECF668D3B57D6EF1A8013424AC2268BA0D9A74D588
-79EDCF6382A89D397864940303EAEC45A38304BA8B1CB198967AE23EB81054BE74B16909A405E8A7
-799CEE3C270FE2A6DC50BD7370B6B2C8FDB9A87D88D5D40348D3984E39C693B6F4486D994778607A
-80A3122872DD65E40492107C71C3CF708A9717E9EEFAFBDDC239C53AA9645B711038E59C8B861B37
-411AB2039BEDF9CFD00F08D9C5D76154427FF5DD39878CECC5D7BFB3F1F035087185C0981F3C2139
-BE84872FFAD3408531C4EA9387B89F5E3EC779E8850D50992DFDCF9132BC551E985943B07618AC10
-D1150451F0844C0DC41D6E17EB508DC8689EC726400D5A7F6FEB3CC7BCE05F09228B7CB2C5393664
-D8DD9A4B96B1020EF25D70AA2D91CAE93AFB5F2BF0AA18CA5C599FA1A708EF35BF8F7FFEC9AFC1F2
-42870D028B2B1459063B493943EF1283829783E1010242E5CF4DA39D93D506F3892936E7D6CF1124
-70A521D397438733D053944CFF12D6FFAE8246F20618684F263715AA98E15D72A526383E05C23214
-B78338E5B476F0981D90056E6E5D0DB66B1DF2298E597B2ABE1D817E18BEB056E65EDB4234342D96
-00470B1420C9210419D834E431B82F58608C87AC361A02D0F1FE4B470A3D71E0D21BB87E1023D428
-E23D596CB9E1A2184403A16E36E644BCCF9BBDE27290485057E62827283E7380AF786BF395B3961B
-A5EA469C315763FA59E0F176EF81985F38B882DE56A74D128E256D1B89939728E55A92ABA21A6B78
-44FAC1BA7BBDD8B34A18194A2984B000380FE9F672E83EFDBF276FE797A325815B0F25CC95C97A9D
-ACF56D583486305D7C9E51A7E337D14E3B900333EB38FD93A99587DA2341B10C059C71CE080FE753
-3C0F059FA40E560AF9C4A41A4BE6FB45846FF8F78165E10B4AD40F264BCF5596A1E8EF8CB6EA4B1A
-3A5C69059AB1563843679ECB2511A90E8898F54295649CB73D277760D8D04ABACC7BCC6E777A0530
-E2067CCBC08673F9C8C178F9D672AC8A15E5367F0C5651B53E75E0CFA57C931746AE1A679C246D7C
-9417F1CD89DDDBD1173C2F880B7B3847CBCCEBF99F7122E832D7C9BAFE2B54CBAA1ED48158DE3F36
-238B76B0E67644A28AEA996DDC006F6AC0242E4B667639E7523CBC90A0561193C1AF34481C2EF402
-EE43A82E1EBF4E3D601BB36B2D95CD93550D61CEE7A94E72F6D30C32C8F91A61E964B1F66ACFC398
-7F95D4028F116E9A9A8474AA29C1C1A984BE0E393BDC41DCEF6A6F1018DB60D52024899D8EB5D55D
-324D73F39BFA47377B9E15B3B06A7585589FCF52A54684173E5183367E7B0952DC4BC2767C4C6247
-B1D6103E52BC7B7EA6298F454C5D97AC575F19C10ACDFF4E10C7D3755CFAB4200CAC545269FF1D8D
-B0D607C7AD47F40DDF257AB4E7D0750577003C13E4941960C3DD7B0774DDAC18E8ABAF8F53E03CBE
-F6D57B44F24CF821014C064278FD51B3427593D17694B4ABCE81F49CBB984C5878CDF0C38D1ED7FD
-99B0B9A3BD8D8FF6219588B3B8FA59D0CDD1D9B2F65122AB45E48F1757467B9204926140E3C350C5
-A927A2E700173053EC35D3F1DA2D7258714C97FAA857F0898917BD94625C6D1E2D77138EFCAAAF51
-7B17FE187A2212C24A881A2C6A647DEF6376ED80AE4175C5EE80921F001995B44E49F0D33DD9075A
-CF33BB03671C0BCC34AD5784AD1CDFED3A6D9BA103B3DDC1CC2DE74DBB576A0277715275218CD19C
-A8899209125266D8BF1286F881DCC2C383749D1E768D670F4099F7DE959EDFE852583183C9111601
-2881A56A24AAF020EA45CD5F39660DEBCE30AC1C7B8CFC60387B1B0C3E361BE612FDFA9F01B7E4B4
-A18839A2C7E0E393EBC5AD9A8A4EBC316A740C1C295D9EF5F4DFFA0667F9582C0BB837B142C4CFC6
-B1798E9476D0631111033B8BA75A10FDC800E2AB1E0E829632F869CFE4737BE9E2800759EE0831DC
-7D1195EAF80555771981DD6DC6606812D92CB8EF86447F5F6C6F626D0E265C67E52A6319189EE349
-D48E49DFE6A9E98F76C414A1E3217AE0A215A17E54AA498F4ECDC50242ACC7E2322F63BB2FF2189D
-057E7354E32A3ED1803116176B9B9D0129930F919E2FEC280B2C8924E49E7BB75768A2EE1DA8ADBE
-D4E3589906DF1B923AEF84C1BD327438B731012E69BB0D43A1842CB88BB54EA4516477F704CFEB28
-6E3EA483445AD4D74586FCF32E96D366901084365F693A53C5FB532FBFE7BC0CADC404C4985042D6
-8DBB90A6DCDA3531EE324D558A214F935CD9FCC9A0CEBE9B5FB0323F4B3820529599EF48EE068B5A
-CE85004FEA2984F0A86F5AC9D56163BBFE1142B774148F1EB0A4DC89C3349052533A7DE66729DB24
-41B82F8F7360111DACF69293C9B281A0534F3E9E9224A75C49A832F28B2E497262475507B6DDFA9F
-01CA0A6696E3F5AC7EA68595EBA0C2EB8A47813FF936D84AC1B23ECA7AA2862B793CCBB0DF9FDD49
-31BEF354CEC12FBF478559FEC29F81ADF4452E83963E56541D31F3691C93A50F0BBA5E9552C4F2A2
-3A6E53060729854A3DD71CC4308B91957DB19E66AAA18FA67055A950F1C2CFF78A03BC1A588CF624
-696068068719AFB1001C4581EE072113882D9052B21E355D401ED8CD24D067B99E616BDA5A0A5A93
-36FC499632B79FF2FD0DEFB096EF46B75E2D4E0F48DAEA239719FEC4D9A29818F5875FC5041A9EDB
-D26CAF0ACE14CC80BA49BBA59E918EB3D8F1E541AA16026585A2F72DF7D83541816DE46981FB3EFD
-0C30E458CFAD04C79421AB7C4925E23AEA07F9F018431C790002596D26BD9663B51B699DF53E4882
-CBC34EDE88EB55045B889B6062E35FD1E018BCE785157B85EC3B9CA6C85D4B16238275385B8285DB
-012D8FB7C9F5B946A41D7A0FB878FF72C39683144D8A007CFF631B43748F2D5FC690300F9BC0C837
-006B92ECEBE0605E8C3A4A400E18AE8997D1B45FEE10068E247C647CF82C6DFBE5E881D511FFA687
-B7AEB78546BFD07D5F7EC242DCEF4930D8AAAD8C6152B6642AAC325963FD147F236BB850A9966573
-9D06CDBD7CA79A527DCF461E33F22BC9C5DB00DA2BD3DDDD8C99D99793BC98282AA8872FF96C3942
-85D82D9419EB78B6AE37A5F519397700F75D624A09BD255B576E955A323E784E8FC31131F003B0E3
-024A4F58FEF2A6C043796201FC425482E1155E229D1B2D43EF7B0D22322B22EF5C9A1BE026A1C3D3
-75EDAFF99597E1E5477952A4E8D2ACF5D014BC00DC2A272FA62B6983E27D228881E2EF2B8B95A681
-CBE90C5FDE16331C85222FE2A16F0A3C3000A63E2E21666C0C119F8AF89A543D37977069A5ACF155
-6324F05204CE8CAD50FF4FB630D9CBBFC324DEDA584AA56A99D3A76FF55BDC2C2EA3A021361CCD4A
-83C7A5E2768D210FA6DE889FD48A39D679C94EC3C99A8D33FF11377DA7F6F1B71A2A05B302ECDE95
-4F26773F39AC881542F0D0969C3995C3519A8EF70B4220D86BF01BEECC6462855E7B686E1AFF1CA9
-1FB8FD8B4A69E10EE0C2AD94ADD44449506F9B6EF43641F2026EFF6E605C670560C2B74706FB949A
-A7E8CC6A2D0D6207E457E7FD87EC1B9092DC68B9143947CC8ED14AFDDCBF8FDDA228A76847F96802
-E561F67CEEFDE45AE587673983FC04C96744DBAA83F2DC838D633943C75DCB9E6410474EB27B348F
-26E505F0AB90878940E846C5E9F3C5FE8C3558C3236B1B88C405716949B8506841CABE1717474BB7
-C30DB91CDEE33B0F844811762FAEC535BDCF84C1C747CEF9B1FA61D2AFB5A81335BC42C06A94D7D5
-9B7EDE55BCF6F9867AEE107555CDD084B7684C2C87087475A39A9DA6347BE281CE5635A4D07865BA
-98CE26C1465B1AB0343F49FF37B4D0CA9F3BB693D78DC3B21925CB996A038DCC172527FE57C07460
-EF39C07D4396E7FA970D9F22ABD21A9C794B64AD96762C7428F59A8757C36D6C4FFB23216195A04C
-2A2C2E7B10EF7193931544D782FEE4B91E01119C5553BBC6252270A8D8C56DD62D448F5AD8DC69CC
-B45E1F17F0AA1E445129DD00F000005B23D38DE93A3BE55A4C041947F36B4E4536E307D0180553F9
-2E46B743881CB5D5386C48C7D5F84C2BCD06B9C501F78C7EE61FA23516791FCF4DB278AF688A2E60
-10A56692AD92008497487EDFE4BD5FA083FA544138B20D6940020887E35D46E093B71F7A04A67460
-DC8116B4D4839625D7CA6959D6831CD93F81AC4EA2709036DD738364FDE71113BF22EBF13DFE1642
-E564701E6F0FFE7511EDF03FE448C2B28C64FB7D54B94CA576E481FA56B2B18AF10C71F699B6BFD4
-7459CDE1869D0FD306BF489A6F42E5B2F05CCF55BB6B9526973D19CB134CA7F13F1DB3716F8CC217
-73A832568C16250B5CDB16DF24BF81D49F5B37018BD310262EA7078107868AB0216CEC83CEFCAB1E
-9F2C665A31585CA04DC01879CAA79AAA5AB201B516F7052B01B16BEE5606098393B0E5D9F9E5E3F4
-EB20F63C958E796DF41CF28839F5C62A0431648745D7837B519F3AA36BC6C08EF040CCF53D9B6D8C
-0C7D1A84D707EC57A3C6AC9A62AB37251A01A5ED40FDEC6F5BE6E34C6A91D058319439778A2EE5D0
-363E2E1F33463C33327D05FFC0CBF08D5BC457C7230448972FB9B4D0D782BA7DBF10D3FFEF8BF523
-6EC16D4DD6D0D870D9D5EB5C64C9A46A4F583D4F831FEE74B0E5B33A09ABFD4444929BD8F638CD72
-EAB99CF2E9551DF427683964A592E49D186F285258C5D5F62196A98532421D73E3495F82695FEEC6
-E1952C562D546B28618FFAEEBEFF03A57F4D855021F85B0C7BC37FCC6DA9AECA099B646B99D41896
-09D3FF2D56422F8C37E97640293EC7C90E3380887836F4938FBF495CAC14FBA5648D89282D8D49D9
-1AF73ED36581139D8BD42551E263E830EA3C6EB381D85C42D74C50DB0CCAEC03F535ADE92128A016
-0E811C34748309AF7604919B66CD43EB5CA975302DCB6076FEB6BDD6FF55976FE990FB0CE9ABB11B
-195403FB26E3D6C6A0DE1C5BE79E171A61E21F79EE8DBE7A832519813EF6B33EA098C2C32ADEA219
-AB2AAC8B093F40000995539D1276D5F2EF84CCD099B71FE4269BDBDB6A8D59C86F7D2E3FBCCF8773
-D0FAE97640BC1AD43CB4B992BFADFB09DBD0CAAEB8CD9DA264187C4F97300E9A6C9DEED5525479E6
-05C65AE336CBBDF4E5D7F79AD098F977285E065579B748FEAA97F2A753E1F962FCAB68D72BAA8EE4
-FF6691C23E31BC0F3E981A96FB440404856AE1AB32A7205B17D411D8F21C8C93B704D07EC594422A
-BC368CDA2B1610CE6A973F4474E12B78B532666797F5755D269772C9F5400B3BFC6C58395D38527E
-2CCCF29B56123F7DCEF3BDE5DC1DFC5B0293BB125085B1D2D929BC3EE84F4FAD571A4991C3DEE03F
-2DB3A3097E52B1A7D5C73CCB6148EAC62E8E36DE9A71C57638C6E4D5D9DED18174E8C390E50B4A5B
-913C074EEAEBE390B214B3A68F02862B9A296DB4B409769649E51D738CBBDFB7702E15C73C2AFC6B
-C37CE15171F4E822CF20EFE55D9F061AA43E648989628FF79E65932390CBB15D8E621333B18B11C3
-BDF96F841D7434E01AD501FEA964A75B248A35CD9DF9A37E48A1E5A09C624B93CE44F0042FA00D7F
-9EE89B9F7AB785E9C718CF6E7228F743271C2C9BBA17E5208B920E44E765D99D86650EB454B0FAAA
-112753AA1BD3A24239E9C5FC47EEB1547AC9D23731B8DC48B9707830DAEC60C8D3790BBA1120F776
-4EFAC542CFFBCD5C05F9510B27B2534B704ECD36C8B041FD49A96881302FFF5B0163A2DD09C751D6
-D6AFEA9170A4F4C4AB8D46E62F763FE1BDA51DD1CE4A27E772F3A2869155F762FF26B7AA6FCFA4F1
-292E56F03AAB6322BF867E7710C34D43B5D85B45AA68014AD7879EED051B1933E491496E3E26D9AA
-8B80A07BF2B94F1077E84A9726F08199887D66DE7A307BF33C30DD9CF3DA188088C03B2BAD09A217
-6B110DB2C868B53DA9A66C85737BA66C93C58A259860E294AD0191E3A72C73F40B0BD98699AA08DA
-F03587B78F391F3A4313C58D9F29B53C70785637BD0C58310109C54091AB0A34CBB0C478613A7AC0
-FB8F0A8B4645AC966395D8BA775262CD291136AFFDDF01C1D83DD4EB3B59CCAD18057FE7D92A8CD4
-A58F22508D9FD7CF356571F701BBB23E749BDDCBF8A317FDA0AEFD952BB18545610FFAD3AC143D35
-1B8DB3F66293375E0E50235F0D0466932181D377EDD32A5F0FFA4E22B5A0CB4F343D9A7E4A342E9D
-09DFF6C697630CD3971802C277A5590B8CA94BDE6B38446C794D072BBCCB724D5BC208EEF1B018D7
-39373BB910D668882CAA779C2D686081DE6A2606417B54D7C20E0E7F722648D893E4EDBAE8F00D6A
-6DA3712F91AE860C756D1127D133AB828E9D80023B50B162C5A1C5CDF70CCB3FDD7EA060ED20838B
-E1E50C4094C9E79E1A0187CDF780CAF45A725964F004253E034C5BE46BBF89D94631F1A33BAA35B8
-4FA2A9D08481C6674126CD96ED05DCE48BDA069D902D6836D5DFBA701DC0F98A863E64F0E312145D
-8DC0B77F25B43AEC729A1243B45B08CA228DD6101CAA2AC5ADCC8EFF84A4CA3F254176C2CC711EE6
-C273835D0FD3528ECA2A976B88E51FE347FDB60F32370B66D338931D6581630ED586F349C638960C
-31AE4204E89521A96E1219E696B913DEB2AAB7A3B022D06F34FDFCB810A04E60A4FEBE284C2F063E
-0AE9EDF87704921CCFA193BDC912B747E13570066223A49F1F6E2AF0D4D65DA04CA876FF7A462FFC
-9C0BA2CC545C3BD36DBE762F32B2D6BE5867C59F479195C92440DC165098B74EA5C3AD93CDF2D410
-B04C16BC7801E7956F4E5107450787AA592493171C3628E6B8F49D4F8429EB98DC52EF025F001387
-BC1A7093F7A99F10B5D2D7DD8BBB393BF6E56F08F4F7FA1A343F220D5A1EAE7168C74D41BE1DC1A8
-3BD65B72B982F4F7B34F24F97F9EC9A91011064031FACFF2A14921A32024385F4E061CD07D152E74
-1BF97156D951A342488FA7F5EF934CCAD13E2753A0AB7A1F565C2F7F6B349DF03BBC25BBD972A9AD
-F809BB5C5048A8CCEF9297B2ED3324D18867F293CC66E88B3A39D107B610DFE79A3B4E83A96D3D52
-A17FE8A62C9FDD271130148366942C9CE57558D023DA5F7501319EBFA33DE9E6D1E76D7C20DB8A09
-B657839DA99F3D8143F1EE6253A3295C9651FA4366547893C2DC7ABCBF4BB7609DE5D001E0A36D9F
-FBE01F7D0903B3208AE8547E2E5F14EC1AF4C2535CA8F4EA37E3F3CE172C7A1E8308995B1CC23E6E
-81190246BCAB6E755BF868D449BB02A2AA87C44C9CC0F571ADC72547CEECBE104BB274B8AC16DCB7
-5D5F458D356466B921ACDEEAE384E2EB1DF6EF393B41B9747F0A4FAEB4AF1928D9AD6FB7E06FDC62
-1E4C6FC98CFB43F88584BD55D9B97CC9549093EDE586912161931162B1B1D52D0443260DABA02AF2
-B4432100D5506546013DA703573FA8013685CC798CE501960093DED713FFCCF89CA2B9106390198C
-29A00864108CDCC1984A8BAB53919028C01B26ECC7925E38CBE6CCA8978EE21C2B06E7B3E48FBA97
-8E2A7D186E563C088F84AA23178B60E4729EE87D67B1091F3B6973676C1CBFE6530EB773C62E2C24
-97014AB0E8B71A1F4E86A378AA26591511BEE3CF3D64C94848582E1354E1605B6457823F2C5E640A
-D3802946BB2E7E8E594E8C04B430C2385DD40746CE8534F50842E74D7115F3DB0C72D1C9C607C657
-3B094AEB73B7A79876CFFC3E2F8C9FEAAA07D3BFCE05B61F7749A8793BE90CCCECA2D7077F25E899
-D3331FE161A7E86C842495D584C6E4A0880B2951D8A13B88C4672080A0B1BE36BF47C3ACE7288CFE
-41A8C1BAA6F0814A947FBD6B3AA72B6C73A8C578CA51CCC96F2352316C467BB960E981F2B6485BFB
-44B577E71EFDA16E7405954BC7C9F0759F5A9F1EBCD2FA9CC9648D5831A68887F41B15081A204C24
-B4B992A231DEF9E698D4C3A25B6F5474F5BE6A601F2D337A58A0D21FF37FD91EB86D1D738893A03A
-69F0CD743F611CDFFE69DB2C6ED0E4611D56F803BB0DC06E7FE85A303839612707647B1BE9FAF8D6
-84122CA9E5CB8BDE2936D3F4FF254D31529D7538BBD4D35539489F9E7316F24214B996BCDCF1818E
-749A71CF0E8845AA1E2A58AA62A48E02BA4564625D20AA220EE719608521D7D7A7FCA0BD8904A401
-9819D371F3F59D46C1354E5FC1A6E5F79B20CF4ACA2BF0F2DE73DA193A6F9ACBFE0B4731C4BCEBE6
-D96FE822965DE965232282A3A130361F188B3AABDA95A8A2790D9240BE008B6A6DE4BBFCADA05B67
-86B9BB8E0DFA0C30043A3B07ED46277E07B9808422C8ED16758B9C396F4EA929D769785B2C9568E5
-70A83B989B25CE200F1727D41E2B702E7F88F1784F4C83FA60A74EB26B2DA95126E508ED519A61CC
-151DB6804F61826C5F86D8FA89D06E526FED97A0DB88EDB432FF32C1ACC9B622EEDF601081AF7B96
-3C9CFC1D13E4A9C74FEA0A1C8E3D8653CD92A944D4CA6B0D306619AFD503506D77732D6514F604BE
-4610C2560931BDE0B40939BC1D126B0E97F72AE1B4A9252123B54F7A27E0CFA4425B4546526FD741
-CA77952B10D13E0AC2E32006A903808FF0CD013F936238C74CC75FD915244C56A8412F37F0134840
-347699508D6F3D7F3203A25B7C70100719582CD588590EE34B3AB13E255B613A6D00386A0104CC5E
-D2C646F09A88888D3751651D5646C5227A3C80E8DA1B0A331121DD2429F1F4775D30564DFF47D01B
-BE2C6C72CE4D1FD9A2077C04D2B0274B8916F6A9D1A4A6964A534F47CF241D5A8E34B23F85BE9ACF
-FC2FEA961F277539F215F8728D6788F67BEAF45502839BCF23D8763C3949352F00C579A9A4FC408E
-C625E310DAE61512DFE6844E82D36A2F81709E1F05B38AE9C222ED62C961EE63593CED7AAF73CE2E
-D3667740C77B309B93EEFE1B4BA65D48575A66BE86743DC9E5D3C2FF418D11F7F211B86E827EE1DF
-C3613E7498030F07050524536D1F8A94DDB6698BE7B963C55CB3F74B676CD815A7B3DF4B1A0EA2BE
-1B0B9A11FFBFD5B1FA49668AEE14629316AF436A0821C20BEEF7B3480847934A99F6D85B68F4DDF8
-859A754E009428AF89A90D1852C220A607FF0806E8080726EDC94D691D214B4521C147C4273AEBDD
-BB4A697EF16448CD9B2FC95293305858DECFD406B89B9F3FDAE2AC579E80CF321EBAE5701FB2F7CA
-D8ED04B4A63115886D45D6120F69AEF1A21D80AD3C2D35D2899F1902242B96CD349E0AAADA40F7A1
-1282B6B52BDD97708E58DC5E2D22D1153E5FA3F3B300BCDFAF98DEC2F4E3C82A1C85F985735F3987
-4F557579F422664E07CBE19DA680EFB0FC82C323EC5C4644C51709AC8D674608A8043C91E6C7988D
-430F10BA6CE1FC7FC0604FCD8F723895250AEC36CC35B3FA14FE2A0D24095DCC30B2093F2298F5F0
-A97676A0BE66C3DC9ADACFE2FC0F721A20E945AFC1096A619075D5E9A264C796EC6C90EF1AEEA8DC
-089B44FFC13D27CB2370070A52D4416C53F364393E46EDD7EDE00799960CE6E0D57E4909E88ADD64
-BDD2B0EBE2D73FA6ACF8B40280DAA0637E705C65AABD523B8815F22F23E9FF81E7829C7E4BC980C9
-143AEBE1A04DC0D253396BBB7268BD5AEEA356B610D5DCEE03135E00AE34388251F31714A1C40E18
-2652C48CDA2211A22CB6F02490E69A44CECB169754C53B16028D352E0119F5D5FAE0BD7EA1CDA647
-12A6147374B64244E21E9EC9F0D1381AD22D5B6212B26C3F9AA5F6045F25DD9F5EB4489EA39B1945
-331AC70510C5752557DE21D0A6CFC1EB10A98FA867B76DA6E4249469F591FD154D39E89364A43DB0
-07AA0D7A911CFAE6CE2B557997FBC44F55A27F622BD7B8B10EC9F5D10F2649A646FD964AE1B111B3
-5B46A252C4DEE44E7426EB5739F24E8A390694597DB3A1FE7800C97E59558322F0E49A0CCE2AD94B
-1E2D1026AFA771723E3F523916F55ED866C9FB4A2F759651C613A2CFF362028CDF9D38F05D4C7C60
-24C533E930B64B099FB1AF04B01F5FB9CA6867E6EFF55A772C5391831059987E10CBF987E3F378E0
-1329F73D54DC0484177D3C3C06F67397955FF1CA4EF8AD1606B70455255D631A7D6EB92BFDBA14A0
-FF28B2ACE7E81AD666EA9B3A0F5A6BA3B5DFE35044FA4B3D8ED956009C60E98CC132F2E84967F4A9
-8A67B336D5EE7CAF7DD1F74D1FA08619941361FA7312CF225D89CEF97E864C8369EAFAB94D97F056
-5505D825972B754F6729596EEA91210B75DD8F645382ACE36DE60819A02B3B48DD00F5485F9264F9
-FA926D732E2C267B0BE8CA98526F124F97EFDB86132C5EF16B103908172FC51F286FFE45FF253512
-E0033F037FF182BA536A9EB2DF2D1DB257D9C86C46E1B002FB32AC70CA9462E6EB48994752CEBCE3
-9F08ABD4F4B0889283E55500702185A841E328
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/NimbusMonL-Regu-iso1252 /NimbusMonL-Regu ISO1252Encoding psp_definefont
-/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
-/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
-294 254 moveto
-0 0 0 setrgbcolor
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<202020202020>
-show
-445 254 moveto
-<63617365204D45445F544554524134>
-show
-823 254 moveto
-<20>
-show
-848 254 moveto
-<3A207B>
-show
-294 298 moveto
-<202020202020202069662028696E75656C6529207B>
-show
-294 342 moveto
-<20202020202020202020666F7220286A3D303B6A>
-show
-798 342 moveto
-<3C6E6D61696C6C65735B695D3B6A2B2B29207B>
-show
-294 386 moveto
-<202020202020202020202020656C656D5F69643D2A286E756D656C652B6A293B>
-show
-294 430 moveto
-<2020202020202020202020206F6B203D206D794D657368>
-show
-873 430 moveto
-<2D>
-show
-898 430 moveto
-<3E416464566F6C756D65576974684944282A28636F6E6E65637469766974652B6A2A287461696C
-6C6529292C>
-show
-294 474 moveto
-<202020202020202020202020202020202020202020202020202020202020202020202020202020
-20202A28636F6E6E65637469766974652B6A2A287461696C6C65292B31292C>
-show
-294 518 moveto
-<202020202020202020202020202020202020202020202020202020202020202020202020202020
-20202A28636F6E6E65637469766974652B6A2A287461696C6C65292B32292C>
-show
-294 562 moveto
-<202020202020202020202020202020202020202020202020202020202020202020202020202020
-20202A28636F6E6E65637469766974652B6A2A287461696C6C65292B33292C>
-show
-294 606 moveto
-<202020202020202020202020202020202020202020202020202020202020202020202020202020
-2020656C656D5F6964293B>
-show
-294 650 moveto
-<202020202020202020207D>
-show
-294 694 moveto
-<2020202020202020>
-show
-495 694 moveto
-<7D>
-show
-294 738 moveto
-<2020202020202020656C7365207B>
-show
-294 782 moveto
-<20202020202020202020666F7220286A3D303B6A>
-show
-798 782 moveto
-<3C6E6D61696C6C65735B695D3B6A2B2B29207B>
-show
-294 826 moveto
-<202020202020202020202020>
-show
-596 826 moveto
-<636D70743B>
-show
-294 870 moveto
-<202020202020202020202020>
-show
-596 870 moveto
-<6F6B203D206D794D657368>
-show
-874 870 moveto
-<2D>
-show
-899 870 moveto
-<3E416464566F6C756D65576974684944282A28636F6E6E65637469766974652B6A2A287461696C
-6C6529292C>
-show
-294 914 moveto
-<202020202020202020202020202020202020202020202020202020202020202020202020202020
-2020>
-show
-1327 914 moveto
-<2A28636F6E6E65637469766974652B6A2A287461696C6C65292B31292C>
-show
-294 958 moveto
-<202020202020202020202020202020202020202020202020202020202020202020202020202020
-20202A28636F6E6E65637469766974652B6A2A287461696C6C65292B32292C>
-show
-294 1002 moveto
-<202020202020202020202020202020202020202020202020202020202020202020202020202020
-20202A28636F6E6E65637469766974652B6A2A287461696C6C65292B33292C>
-show
-294 1046 moveto
-<202020202020202020202020202020202020202020202020202020202020202020202020202020
-2020636D7074293B>
-show
-294 1090 moveto
-<20202020202020207D>
-show
-294 1134 moveto
-<2020202020202020627265616B3B>
-show
-294 1178 moveto
-<2020202020207D>
-show
-220 1289 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-507 1289 moveto
-<6475>
-show
-583 1289 moveto
-<66696368696572>
-show
-740 1289 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F5352432F7372632F4472697665724D45442F4472697665724D45445F525F534D45
-534844535F4D6573682E637878>
-show
-220 1344 moveto
-0 0 0 setrgbcolor
-<706F7572206C61206C65637475726520E02074726176657273206C6520647269766572204D4544
-20737572206C612073747275637475726520646520646F6E6EE965206475206D61696C6C61676520
-534D45534844532E>
-show
-294 1445 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<202020202020>
-show
-445 1445 moveto
-<63617365204D45445F544554524134>
-show
-823 1445 moveto
-<20>
-show
-848 1445 moveto
-<3A207B>
-show
-294 1489 moveto
-<202020202020202069662028696E75656C6529207B>
-show
-294 1533 moveto
-<20202020202020202020666F7220286A3D303B6A>
-show
-798 1533 moveto
-<3C6E6D61696C6C65735B695D3B6A2B2B29207B>
-show
-294 1577 moveto
-<202020202020202020202020>
-show
-596 1577 moveto
-<656C656D5F69643D2A286E756D656C652B6A293B>
-show
-294 1621 moveto
-<2020202020202020202020206F6B203D206D79534D45534844534D657368>
-show
-1050 1621 moveto
-<2D>
-show
-1075 1621 moveto
-<3E416464566F6C756D6557697468494428>
-show
-294 1665 moveto
-<20202020202020202020202020202020202020202020202020202020202020202A28636F6E6E65
-637469766974652B6A2A287461696C6C652D6E73757029292C>
-show
-294 1709 moveto
-<20202020202020202020202020202020202020202020202020202020202020202A28636F6E6E65
-637469766974652B6A2A287461696C6C652D6E737570292B31292C>
-show
-294 1753 moveto
-<20202020202020202020202020202020202020202020202020202020202020202A28636F6E6E65
-637469766974652B6A2A287461696C6C652D6E737570292B32292C>
-show
-294 1797 moveto
-<20202020202020202020202020202020202020202020202020202020202020202A28636F6E6E65
-637469766974652B6A2A287461696C6C652D6E737570292B33292C>
-show
-294 1841 moveto
-<2020202020202020202020202020202020202020202020202020202020202020>
-show
-1100 1841 moveto
-<656C656D5F6964293B>
-show
-294 1885 moveto
-<202020202020202020207D>
-show
-294 1929 moveto
-<20202020202020207D>
-show
-294 1973 moveto
-<2020202020202020656C7365207B>
-show
-294 2016 moveto
-<20202020202020202020666F7220286A3D303B6A>
-show
-798 2016 moveto
-<3C6E6D61696C6C65735B695D3B6A2B2B29207B>
-show
-294 2060 moveto
-<202020202020202020202020636D70743B>
-show
-294 2104 moveto
-<2020202020202020202020206F6B203D206D79534D45534844534D657368>
-show
-1050 2104 moveto
-<2D>
-show
-1075 2104 moveto
-<3E416464566F6C756D6557697468494428>
-show
-294 2148 moveto
-<20202020202020202020202020202020202020202020202020202020202020202A28636F6E6E65
-637469766974652B6A2A287461696C6C6529292C>
-show
-294 2192 moveto
-<20202020202020202020202020202020202020202020202020202020202020202A28636F6E6E65
-637469766974652B6A2A287461696C6C65292B31292C>
-show
-294 2236 moveto
-<20202020202020202020202020202020202020202020202020202020202020202A28636F6E6E65
-637469766974652B6A2A287461696C6C65292B32292C>
-show
-294 2280 moveto
-<20202020202020202020202020202020202020202020202020202020202020202A28636F6E6E65
-637469766974652B6A2A287461696C6C65292B33292C>
-show
-294 2324 moveto
-<2020202020202020202020202020202020202020202020202020202020202020636D7074293B>
-show
-294 2368 moveto
-<20202020202020207D>
-show
-294 2412 moveto
-<2020202020202020627265616B3B>
-show
-294 2456 moveto
-<2020202020207D>
-show
-295 2573 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 2573 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D6F64696669636174696F6E>
-show
-656 2573 moveto
-<6475>
-show
-733 2573 moveto
-<66696368696572>
-show
-889 2573 moveto
-1 0 0 setrgbcolor
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F535243>
-show
-1161 2573 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1174 2573 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<737263>
-show
-1235 2573 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1248 2573 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<534D4553485F53574947>
-show
-1550 2573 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<2F>
-show
-1563 2573 moveto
-/Times-Italic-iso1252  findfont 50 -50 matrix scale makefont setfont
-<4D616B6566696C652E696E2C>
-show
-1826 2573 moveto
-0 0 0 setrgbcolor
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<706F7572>
-show
-1943 2573 moveto
-<6578706F72746572>
-show
-370 2633 moveto
-<6C6573>
-show
-465 2633 moveto
-<73637269707473>
-show
-635 2633 moveto
-<707974686F6E>
-show
-813 2633 moveto
-<6465>
-show
-900 2633 moveto
-<7465737465>
-show
-1031 2633 moveto
-<6475>
-show
-1119 2633 moveto
-<6D61696C6C657572>
-show
-1326 2633 moveto
-<74E974726168E9647269717565>
-show
-1589 2633 moveto
-<20>
-show
-1601 2633 moveto
-<3A>
-show
-1654 2633 moveto
-<534D4553485F626F785F74657472612E70792C>
-show
-370 2689 moveto
-<534D4553485F626F78325F74657472612E70792C20534D4553485F626F78335F74657472612E70
-792C20534D4553485F6D656368616E69635F74657472612E70792C>
-show
-370 2745 moveto
-<534D4553485F6669786174696F6E5F74657472612E7079>
-show
-912 2745 moveto
-<6574>
-show
-966 2745 moveto
-<534D4553485F506172746974696F6E315F74657472612E70792E>
-show
-1581 2745 moveto
-<534D4553485F6669786174696F6E5F686578612E7079>
-show
-370 2801 moveto
-<657374>
-show
-468 2801 moveto
-<756E>
-show
-560 2801 moveto
-<6175747265>
-show
-703 2801 moveto
-<736372697074>
-show
-856 2801 moveto
-<707974686F6E>
-show
-1038 2801 moveto
-<6465>
-show
-1127 2801 moveto
-<7465737465>
-show
-1261 2801 moveto
-<6475>
-show
-1354 2801 moveto
-<6D61696C6C657572>
-show
-1563 2801 moveto
-<6865786168E9647269717565>
-show
-1875 2801 moveto
-<74616E646973>
-show
-2037 2801 moveto
-<717565>
-show
-370 2858 moveto
-<534D4553485F666C696768745F736B696E2E7079>
-show
-859 2858 moveto
-<657374>
-show
-933 2858 moveto
-<756E>
-show
-1001 2858 moveto
-<6175747265>
-show
-1120 2858 moveto
-<736372697074>
-show
-1249 2858 moveto
-<707974686F6E>
-show
-1406 2858 moveto
-<6465>
-show
-1472 2858 moveto
-<7465737465>
-show
-1582 2858 moveto
-<6475>
-show
-1650 2858 moveto
-<6D61696C6C657572>
-show
-1835 2858 moveto
-<73757266616369717565>
-show
-2061 2858 moveto
-<656E>
-show
-370 2914 moveto
-<747269616E676C65>
-show
-621 2914 moveto
-<7574696C6973616E74>
-show
-880 2914 moveto
-<4D45464953544F5F3244>
-show
-1279 2914 moveto
-<61766563>
-show
-1469 2914 moveto
-<6C276879706F7468E87365>
-show
-1792 2914 moveto
-<6465>
-show
-1938 2914 moveto
-<6D61696C6C616765>
-show
-370 2970 moveto
-<534D4553485F4C656E67746846726F6D45646765732E>
-show
-1028 2970 moveto
-<4427617574726573>
-show
-1275 2970 moveto
-<6669636869657273>
-show
-1508 2970 moveto
-<6465>
-show
-1637 2970 moveto
-<7465737465>
-show
-1811 2970 moveto
-<736F6E74>
-show
-1977 2970 moveto
-<7072E9767573>
-show
-370 3026 moveto
-<534D4553485F506172746974696F6E5B322C332C342C355D2E7079>
-show
-1000 3026 moveto
-<6D616973>
-show
-1110 3026 moveto
-<636575782D6369>
-show
-1273 3026 moveto
-<6EE9636573736974656E74>
-show
-1509 3026 moveto
-<756E>
-show
-1576 3026 moveto
-<616A757374656D656E74>
-show
-1809 3026 moveto
-<646573>
-show
-1891 3026 moveto
-<706172616DE874726573>
-show
-370 3082 moveto
-<6465206D61696C6C6167652E>
-show
-280 221 1 967 rectfill
-2125 221 1 967 rectfill
-280 221 1846 1 rectfill
-280 1187 1846 1 rectfill
-280 1411 1 1056 rectfill
-2125 1411 1 1056 rectfill
-280 1411 1846 1 rectfill
-280 2466 1846 1 rectfill
-showpage
-grestore grestore
-%%PageTrailer
-
-%%Page: 6 6
-%%PageBoundingBox: 18 18 577 824
-%%BeginSetup
-%
-%%EndSetup
-%%BeginPageSetup
-%
-gsave
-[0.24 0 0 -0.24 18 824] concat
-gsave
-%%EndPageSetup
-%%BeginResource: font NimbusMonL-Regu
-%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05
-%%CreationDate: Wed Dec 22 1999
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% (URW)++,Copyright 1999 by (URW)++ Design & Development
-% See the file PUBLIC (Aladdin Free Public License) for license conditions.
-% As a special exception, permission is granted to include this font
-% program in a Postscript or PDF file that consists of a document that
-% contains text to be displayed or printed using this font, regardless
-% of the conditions or license applying to the document itself.
-12 dict begin
-/FontInfo 10 dict dup begin
-/version (1.05) readonly def
-/Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def
-/Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def
-/FullName (Nimbus Mono L Regular) readonly def
-/FamilyName (Nimbus Mono L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/FontName /NimbusMonL-Regu def
-/PaintType 0 def
-/WMode 0 def
-/FontBBox {-12 -237 650 811} readonly def
-/FontType 1 def
-/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
-/Encoding StandardEncoding def
-/UniqueID 5020945 def
-currentdict end
-currentfile eexec
-E98D09D760A3C22CF119F9DC699A22C35B5B35ED6AA23593C76D54CABB5E942BF7D6DD84F1664B89
-699C74B472DE9F8E6DF925F6C4F204E9F1C639B4DBA988ED2AC419FF2B2BDE605B8EE3264EDD6641
-2D4F21C64AC522BDFC7C5502F9C3F3E5592B3B2093D33C9BFAEDD2D49E89AABAA832E23F062E91A2
-5032519D1868816E44B4E0747795003D7930299D6E1E2A5BFE0D595DC97E140989CE81D8D7F852FF
-9CDC7A1B1B598C69131DEE005B415805A16D8A123E6A2261C63C769D2F4B60FA2C438AD7D199D8E4
-5F7E7C9A605C8CA14E21FCD81C9A515FB8DB6F99604534D06EA9D87FE0FAA852899C9D0595C7A97E
-6C55F79FAC45CD38E87B10D210CE7501E88C8FCD3444354365FB893A12F596AE2C1E70D5819EE0D0
-87D10BF8DA96F3DABD5405D28C4228C6C31BA4052464859640933FEEFD8071C0C84CDD829A9B1D0B
-A01F25A4D50EE2EA2B45160CA6333B2D2800306ED2BEFDFE155E9D9F9342EB8D5B0ADBF2460CCC98
-643FB1287CCD28ABA7B5CAB92EC39EE2E918990372B16F8487EBA30EAE88708B6CF33B6C015D8096
-C7CFE2F139F52052E3925C0D50FD64CE68236D59CB83EF56BFC584150EC38065059F3308AD6F9A99
-F83EF4E6CB13855C8175E31417D190D036B387D3952344A950F4D8C7781B307A094DF1ECAEE4D2C2
-FD747BC6F7F9C6BD0E90C19294F96C8C5CFE88FB34C477574A1B1630B8CC591529E59B20794DA32E
-61DECDA8ABBD1AE956CF74012AA01D42EE01E861B0AA6897C864788AE59DEF43C493246FDB1ACA55
-4C12594BC7B33657A9ECC9E3D1472EF826073F632BE540C35FF6FB40566773F3BB2204D3A579A08C
-CBC844C14B18C350F003B9DA23A570C362D6003893CA32F86F59B829C78EE3188B6E3F7FA81D7F62
-2825C639638DFB78B7AF1F500F5B450FA54DBFA5CBA277C794ECE93275A3DE0B452FDC8DDC2993BA
-A42F28A636008CDCB03EBF71BDCAF35019778993443F88412AD2AD0D7155A3944606463266322DBC
-0244B07DA1E9C27A27B59664E8566D7A54CC03E995AAD008B0A17E2C3EF61F720CE7F7788599C4E4
-4C709CD5C31B11107F16AD70B17B9AFE2E8CD922A7428DAC171427FFAF51067307FAB0ADB530E701
-FD22DA22C4CD3064067BD4F6089C4B2C87937DD426E4E9D2F60E608288BAC9056554D04947E69200
-61E379CF5E81BFD32FD37EFAC1F61CEBEE551B0851516471A7472C60DF89DAA9EB1DC5A67E479745
-3E69B9E22BAF4E3CCA4192D603295B018C4AB69D18DE52DFDF15E96B557F290A4B8C5B1E7A6CACA8
-1F2351B97ADFC36995ABA43803A6E5AC04A3C93495F6D38106B8B144449C07D1358210F9176E1565
-72363CFBDE576BFDF99FA329DD1346E83F79E06CF68250CA57A68931BC7F342AD295D0CBA17AA95B
-B8EEB53EA6E8E660B814E9F857CECB14F44A43288B69A9E7908D55BF19E844359879D28CAEF1C38A
-36420185D20DFB32C2E002202800E8EF3D67C5D50E919657CA958B538D537D503444865331D79BFC
-40312068D72364503BD0CC84B5F30A74D8B5B6A26AF2DB764564FB65A6BA8F9051AE2B4EA458D46A
-4569F30C6E77DC097356770362E6CF3F1661074778EBB44FF7D1E3B64FF75E77E11FE525BB121C65
-46CFD13300CA1F02D571B82A5825E6226D14FDCF27F06D87452A8B6C5DCA658535CEE2A795E58137
-D48E566B69D53A0C3B766E84C51EAA221C46999CC8065ADB2F129D5B630FAB1814C0C33B5AEA0EFB
-B6E994D80941B53079AF96D90A0B924F9B0E319BED9836B8F9053F868363D3CA554CBB181863301F
-8CB940872ED5FA7BD18CE39218B5AD8AC57D0F752D941076B1C64D99BE0DB86D7A6D96510D772EB2
-4C587F11779BD21CFE5BDE1F29C1EF9022B2B8BCD7F91153C845906722477829C40111D810480F3C
-F62DE8DBA7FD86CD236E656618CAF6FC46827FBC4898EA7672F8C9971AFE43E0E01EC8B77D4AF48C
-BF1210E98C1DB15C16D149BFF58AB0270CF015B107A3A50F5DC8F37FFB92EEC8CB6778DDB7CE4AAB
-C464C4AFF654223006A550EB52485A23D2B4AA7198D3CD54418102F1E9A4FBDE37B841E56F5C2C53
-966DB9B66B000E4588282E3FB80C2C519339F0002D2F83C979EDC5827A3B3C8EF8810A0F9DACB6B9
-998E9AF6551F56313DC4011904CB979AA2D32B11A811BC248141E4B9734D9FB7982A5671002D8279
-CAB93ABE057474628DEFC95D43890DB1ED34CFA8A20BDC3D874E7679A396158E522ED0AB969A4E3E
-C7E4474E192590504D54DEB7B260B7935C4E56548A7D121AC1F741F8CDF259EA1B5813175A77A1D2
-D30BA26F65EB765A04C09ED51F69F41551ADF399E6AA2FC09788137BEA4913F17B8EB838C38FB272
-1FDCB55FD65697FF0B850E7D3D1CE266BF90F7EC06A9A0876BDFE767D3A918B092FC78C775F945CF
-1F96E859C03DBF630D9A940939654C3549D8F7921CB94EE23D5A0535DE9DF31EA0F937F860B4F220
-A99ADDFC343D7CF7BFA0B803C12C26403F0DCFFC8EA786D0D8A8D9C367419CA8AE41190CE93A8086
-583A1E6C9D70B612C84D87D2EEAA71EC2DC12F4CDE6A821303D5F6A9BBDB7EEDCD289E80FA3B75F4
-7F481B50719DCF4A142069393593B9AF9CCEEAEC56A35B8787193D7C88113E9E1E221D151E093B01
-9EF89F6118BEC4735103CC8003CC5AD1B6727B3226CD44C497DA7052DD681695DBEC3397F9598C91
-77701C73BF0594CE93F23D50EC5BEE2FB9DA1FC966DF148B27B28EE3C89526DD6625E2887F9FA076
-7C127C609EE315626BC14D274FBEA56528DC06A27B2D476D46E9E7916590B156A5DF04A6CB15E362
-45D77021767B6E5BDFCC679670263FD891446C3371B11BB6E1DF60F960AAB4149D7753E6A5C33810
-C42C8BFF4E935003388506F8278BD7CB672F132E065AE684DCA0B9064D01DD620E7FFDFE04F14277
-EFE8E60159BA0FCA3FE2F28B902D4AC275D19F0AC6971EBE827C4A232D87650D2688345BCA78F879
-077114F0463C5F058107B669566F8171E4E284D278405580F04BFFC9902784216E0C9A17AA9B2935
-E66E18A783F723BE044389B7E9D62AA36818FF2EA406C3C1A9D2F3436F3EE7DB8BE86AFA8DAA6A4B
-1B84611350D8D27605509612B515E16AA843164D5D0805E36A2B9EF74C5F6A0B9D59A04B55697123
-27F4B1B30E9587CD103337639967CBDC655AA46E80D2CFD24BEB50815B5338E522B3A7AFE8362AB4
-F05D8BC52BBA9C5089ADA8C89529B0275AF422EB540D31A938B8740860756325B966B36817115213
-FAAF92DE63F6BAE1E0064BFBC5588098B61EB83C71F1C2082436D37DAF1ACBE186FEDC4BE7C1233B
-6F18BEC5F99002D21CB7864E4811F7AB3C03003E1E4490AD1AC793BD28FCD5EF0E6CC30EF39A08C5
-2F71939B0CEF620DC69E31E39D6DB969049031B0C92EF2DB653D97F370141456A52985076B268652
-FA2648C792780BAD637C4D7581FB2D62011D57E293719487CF2D1F013CFAA532E1C2D39178D51272
-A6AF041440BCA174B5CC902BD7390C7D3695056CB4BD7791F9FB6D88E7A70DEF2C97869F5DBC5BD8
-23C517C7B7C39D624DF627DC9653EA5347BFDA80B723F05F6DBB4C9EA501D862ACE05B9DBDF21B70
-56FBCD8C6D4B85873DCEE6166C8B5ADC0316CA12D9639F361B15A42F00E1D62EDBCA1111972FA0F4
-5758BECB31DB38316F3CDFE1B41748C93ED58B67E9B57ABBED5924A6D53E99FBC9A994A6489A8BDF
-13EB685548B4DC6D62DA7426C22227D4D43B6FFC7B5EA91C896730253E8941AFEE588359C2BECF6F
-FC415B9EB6D31CCB0F6C7F85853E6449FA6D627A97A3CE8303F148393ADCCCDFA2FE085C6908BE5C
-3C05AF00A6F02840206C3253A559AC5C049BDDFD11AD9B118403B84DA10AE3C470CB9A9A2D1D7B73
-2F59F5FE146DEDA60AE750F551AAC934621B4470E1BC324C436303E25F81D0DC3188BE0D6FEC5414
-C20E4CB18952E12CB6423DF7124627ACDE145500D77A97A8BFD9CB50D1FAA008E2CE2B2505A4749F
-1EBBB092C347023714055A9B63353AF9E7FEE05BB54C9843698101F79888A91531773830C2C967B5
-88D3ACD2192883D5CE3962D51084FC653EAE2C5FB2DA41DACEFB5C76812D2EDB5B109677289CD199
-8D457FB1023A19AC67295BBC1A9A20A426B06A368DF3C5DD083CB1180D287F5500F2C635EDE157EE
-FCEEC5503447382D15C748C1E35F68753992E5C90F900DE54D18F8E1B355D1076ADFB1F3590135FA
-D1A36F028E44F48ABB149B80CA9A54614D467F8D71CB310BBC7AC7100261092DB8C5BFD39E0AC6BC
-2C9D6CBC3A8C05FF8A74CB21608EC4A4CFE4CBAA2D056DBA14206106044DECF59F957EF8A9CADE4C
-9B19D8D30DD4FDE6A9548E50DB51ACA73330142153FC36B69C1C8D5B26D0C689B7040E81AC2C864F
-D7C097C99BE5953843E172C97AB5684F35FB03A725A89DBF371F08DDF40A1531FC1B676DB0E1543A
-EC6E97D3D2E4AA3D5831D8B3C952ABBFA112352814FB6FAB61A0D680E6640F6AEC8426200CF61286
-F7422CB2F78C61EBAA36D47EC16D7FAF8B4AF31D090CDFA255D9D7C61D46CFB22A7D6E1758E71ED5
-67E00CBD8E8F468DDFB477F091A2F915627F22FF47B876544BC1F03B6BBB98385F009C20BB1AA2A7
-A78674692B8EAC2E3C8069B79E679338DA57F72976810F845BEB6B9ADD32B95D78E5E60F16DD1668
-9C05FD82D36A3115BE8ED494A74DD211D58A2CDF983FCB9CDC29BF7F0E29988FA23560EDF514BC1D
-183F3B2A22C09FB179B47E05ADEF48DF02F31C29875D1915037B19407764A4292FE44E741651A8E3
-BEB5F0D972B6327090F664417C84F84FFBF0AFFF8B1D85C822D90730AB4140C42A51AA8B1DBE4398
-4EA8566040EB8B341CCE23FD3F69DD235A080BA5C69AECB9BC732BC2D7D40617DDA6B79FB6EE40C3
-556C7DF9B23DAD89E94054B1345DB8402AE679FC4655A4A776C0150463F8DB2BFC0608EA1F124E22
-1DDAE6026B5E5D007A7E4A0D6B3B0CF3A2669E67C5E4F01551966A7BC48F2F4B6A87E740D8095E63
-F77C7A027F26B52F2299DE5B8A2F6209BCF3D31CB0235F998F781E5CC81E31DC424E008D46EC0920
-2951E5684804A0592EA47D6C788A20487BEA2EC8F2E6C1D7F378B62DB43CA43C4B366F8B4319631C
-FE9854F0E10321CFA3B01C873584863BBEFC23C72C05E695B56E8A52E89AA2DAB543834D34DCAC5F
-ED08DC51825C5257AE59850D101D84F4CAA1D29FC932F9E0EFFBF7A9A7F3685F61F0490CD3CC8988
-2DB52A757A6AF4C4E67B407BD2316B1C0FFE7DC54E43C87B874F57E4903334E2140B011484863CDC
-ACA331175F2CF3D72E0042855983AAF8853D3015E870FF0807014C31D55060DF3FE1FCE157324481
-2744AB51322444632F9AFDA6706E320FFE82B8CBE242A19DF00CE73EE48E25FF49D5871BD3E60652
-298FE3E8D400609E232E0DDC794C0579ACEF89E841B2EDCA50D51151F65E8C1CC3B01EF1870558F0
-BF5743718C3E068617E81BFE120C6CA16E0924BFC2541177D53671CAA3AB641C41557DCDAE1A3461
-47B5E999C4541B08B4AFCBC187AFD653D5B5F8386DF6AD8FE69E21BD0567DF494F736C6A184FA4DE
-48DC9F347787CA96E2E00A296C2DA05C2AD9BC423E9CA428D7F1FA12DC9353A302FB8C529AF8688C
-BB543B45B2717EBF8F6C497935F4F3BFFD285E0402AB7544B3CA4643AE5A8B5250ED987A95FC1F27
-5B9707ACD0641BD0EE2AE9758494F8D8A51DCE408A38AC20EAF0852D72D84D0C6BE973326793AEB9
-55EAC6FE0A2813A355DCD22F6F2CE56588D1C055CDDFA98878BCEB6A018DB22922D2B600A20F8184
-2E665DF41013CA0947C4237C2BD60A75E2FD1A3FB8C8FA19485730B87461AD466ACB02DF8CA24091
-4FB090B3D2B41EB6B8FF05E1A59D9FD668AF70BA5BB72778953BA55FC5F9F626043450E1D09BC83D
-8605098ABEF884639A37809A32565CBEFB3FF39EE53D6C18C58C272BB928E4410E361E59A50F242D
-69747A032617C52DEBBF62364AB5A96EFAF642D9D82BA679B1D70FAC10A4EB62FA5CFC308E86368A
-AAD7E75948F43598CD1C544A0D4091374D7E88D4522CBE902391641327E888E7748FA889DCE67ADE
-61699E7D77763681CAEE9B1CA8837B2F7EF9C18CBCC538C465C8E2DD34616953CCB6030A222C728B
-834911C1A179E2C770289407AB28B303E724D97F747D6134B425216A64C6E0B60F633E2B85300047
-E4C90339CE030A0FAE31E830C8ABA5AB3386A3B69267351A7BFDD66356AE5E57FB2994452993E90D
-E7C4E260ABAB93C37831856A650D56E44172FECA01D6C7C380F250B82473960D2A2A5FB6B4DA668F
-46E624ACF7FA0FD4490F485D640A3ADFC9F8652E7A38CE5799F770C3606DB4B8B947F93967F779E3
-A3C0572F13A5A187D31D7BD12A5C7BE23CB6ED6192086241B76C5BA6983DB9C93E4B208D707D3760
-F03CD6272EF3A4CE89B8E52E6AC5871A3D03EB975759AB4BE239E5EC7842CBB333E692CC607C722E
-185D3C39164DD320C6945629C70FF66A5237C0A9520A1FAD6EB9816069351AB0F135D90CC0982B14
-7D2294AE4A38A527EE40BE9CDE2512AAEBB590E134388BB171D0956A7C4566D65A9A041BE6C4F883
-6B3EC3D2ED1B48B566A783292B15B6127920D247D494F070BB20BEFF60640B11B276DDEEE49706E8
-B2B21BB40B7F00AAFC594C492C25DCA774E0B80D82E927448DE2E74A9D0DC7AC9260096EAF187B6C
-D6AEAA6D1DC4205B4411122751A5B22688404EA7C5861730371FFAC10F5AFD4727A0E402AB5EA757
-606B75EB86A05E8F774D6E430A1A3FE2A37EBB06700474239FB1CFA05EE44B91B82244C575B52E7F
-AF934B04EEB0D933FEB57EBE326D75821C8B23EAA85B583AED4320B7F04B9F2DC591091216FDE52E
-064BAAA9C2C9D9714B95A4558C21F3CEBE624B5403B31508F178581AF6863083ED762F1E2E34A45C
-FDD71660D626FF8648F5D6C5E580D4765A67FB6159EC8077A9F0A88038C8D3D7C77FF0926E2123BE
-874F7BCAF129D55A5B5960F824BD1728ABCFCC51D23936DE9A25C408D786E44C3A2BAFA4423177AD
-060D21D38E15E23EB6FFC0B4120E814695D423EEFC2744A1FC81B4DF89D76F0A6803D8B14E75538C
-AAD03A72517B86514F6952F6FD619D9E910D980F00964DB325318C045BDF79647F453D4A5CF4E61D
-D5359782827229310405FBCF6107C3AD9DDEF9A9A339D5D5A6EB2E7838A0A43221BD62CBDF732DB0
-A638A52016FB35BA7761AEC846A023D3BF2D1BB183543E81EB7CAC1E5970CDC6F068C5EA118C7AAE
-528D1396E6DC939112DA4460C890EAD5C01BDC438F5BB734218BA6270ADD0DC1778FD8AB16831D6A
-302B814A1A44B07EDC65956C9E6CF4875DF521F3CE5B422F71081B6D69BD270F739095C9E81C0377
-934A8BC6390C420C4E4CDD9CF7E32544C68D884E15ACA3BCC07FC8C132D8FB9D752C15D75C52C288
-57E2EA461A6FCAD90C56843513F74461F18D7164BC597A28AE4BA7C86EE1703535A9B9ED50122627
-71FC12F102E800E0E1AF7BB46681BD2B14B614CEA91B7B2AAA35235DE76C0E113C92688F8EC81277
-D58C3406778E1EC1CC15F1CD9A137C8FFDAAB99ACE3BFC782916F1A877170589A92DC921E6740A22
-B84DC6BACDABCC76E64C79E3A588D80F8F4D376E1B426F15751CF7391102102F0AFAFD8B22DFDEB5
-48AEB5F30B1673023D22054A13391A0EC08DE6E7B685A0D031AABF20B7C62187C0284892D5EAADF1
-21BA28263EB863D5E36EA9C06A77CCFC0E17F593961591F84D82AF823EFE41044C8D606FEF83CCC7
-B0E961E7994DF8A3CC36B209D953E250ADAB8D22D7F2B4E2C9CA39EFA2D93E56195C1560E30A5190
-CC5B17FAEFCF250DF79F6B624A4B917E11C332222FCCFEC4F6A47BD9E75DA9854FC3F7AE554E91ED
-DE144D7AEF38A0E3EDB5E5A5626374DB94F022C8CF549093041DE00D7269B7CE544E748439BA2870
-718C08E58FB4A77D93EBC04B7957D272AE1601D41BF85A2BADAA0DF73B0D3841D4839C85677FB2E1
-5F1D6CE592669FF4BBC9C69DBA334DC37706F2F6BE83D5863E8CD6A30C08640AAC4C233684E66B4F
-E6B62D4A8BE9D531E47BEF5640D9B5C27D990092BE1597F6995C8A77BE9C18AAE6C1CF130775DDAC
-41D34438FC7AD8E042CB56CBF2944932EBA7D053E9376FF398367450E35A1945FE23E05C921096A1
-5454721FFD0F429A3E06DC3ED36F1C170BE79C66996EF8337AFF85B90C5D3A4A94455AE9FA32E211
-7A63E59001F052D5F6223125BFAFA40901E98960ADF7BB886729DCA82FC3B8CC52B37FF2517299E1
-D769057F8154FB95582F02CB0BECC873A9C71796ADBD3E91324FAA94F2C41CF57C30B5897D031C02
-D256C909E080E70BFD1F32E69EF67031138C2DDCD1A8E4B65E485C23C3E450ABDD9815512D6F34A8
-4B9DB715DB2C7A93BFB424316E1AA44397749CB01088428F149A3B4324737ED9957FD388248462AC
-1B2610D72BF5C073ECA567E7385CC959E37CAC7E05470160FFA5A9F63B8E9B082937E911586EA165
-374938F492EDF28CE6020953A5B5CCEC7737F9D9CC8538C4339567AAED3794ABA3B9F4EAE65466E8
-E326F6C399B36355935FBDCB9972F10B13494DC25097FCEC5A6398F275C8C151558E74C5175F7BAF
-4155E36B733F75CF9D5C5979B0764F14D8306E06BA24BF791141E404C69F3F8FCCD91B9C58C2C671
-AAE7D4F9E5D6414E46ED633A5F78AA5BF04E652246A066EAD9E582B181CC196EA2D3CFAA383B5D0E
-4CAC9336E119C08CC6AC55CBFBAE147C623B400453BBF447E96DE036FC025624384359EED7C7D5F7
-858DC0521377CF647A157FC3F188DE5EEF094DBA125510FDE34C570D7BE76AB5DF0A28BF45DDAADB
-EA7EEEDB936332DFE93081E0AFD3FDD46BED08D6914B2EFCFDC41662A33B90B03D76D34F48D30FC6
-BBBB600E90E6AC7243FDF026762A44B4D6E4ECBEF48C9D7B696AF29EEE063E557D8FCF0F09E0136F
-45D17E608DA36E59F2AECF8493F8D62536119B5F7E1554DFE3F6E8D7C9A2C6F557D18B4AF92C9F6E
-050975C3B5C54F9B5F4E39D600B6FA2CD6DE203A174028CBB2A201AF126D1013C229BB82CFD013ED
-199D01E51EE2780FE896E01C63C655087A3E61A7F1029FA5E97EA1872F1B45F22282DDC317E17926
-7368CB52DA9444F6055A3C653659CAD2A1D8712BC2B1B32C1DC6906D957FB88524EE066156ED6BDE
-B8D832F9338F9912E29A250A8C4674E667C1C278B677AEC9972BE83CBA3FB779893FCB8F81A323AC
-91474BA2A2334A07BB5628E905C518E634F6761A3289056F83D5DD7B3890987EEE1C18FB2D379CC1
-905F1AEB3B3D2AD578F0D6C845D2D40C4BCEE3F71C90E68E5417BB8CDDD878D83BA80AD8485F4067
-E5C3CABF28AB56CBB219C0AAB8FFC6C7E192BEC8CBCA1459AE4450AFCC81B9548F40CE2622E5A7C2
-81F74DCC02DAD57EFD92D072318DDF05BF42F1EA8163071E23949B0179CF7DE64677CA99B23CB926
-B3E294194EC13397EA1DC9A5E1CDCD828156CD71F81B64167D4FB01E6002713BD8AC6F82B20CD369
-9C6CA4704DC5C65A2D66EB155B7AF1C9BB46469416FB49C1C7E17A30A5F045271D7DF3FFF2F42C6B
-470701C381E3456A500C6BB3D0E47B4D91C5F34B49BB6272F1F8698B307D89EDA3A1565DAD1C0864
-627560CF922DCF5B34C67860352390B282F95394AA2CDE0E97CE3ED39546A6AF1C52BFCF81A29BE8
-2C47C99E8050E4889E4575B75F39E662F2DB7420673797E2ED3D67CDA7AE2C15D0A0A794D57D168E
-BE13214E89E0209AB2C0EB7784E9491AEFA3C02D0DF3AE5365A0FC4AE023CAB528162C7A1B173664
-9DFADDACA8DA5FA18B7D6489E4229E9E24D38A620464A744A5C60F6F9D334B908706B738AED18669
-8A8B278341FA4D65A0A88680BA484694921512F7DE93337FC1C02BBE6E64AF2DAD07603279D87329
-1D1F4D39C1DD6D89C90F65240F4808F6F1115CA55B88E242565E59F3BBF1F10EC7B88872E9AE61D4
-4CAE185463EDFAF7DF63DE4D2207D307AFB61501892965170D2945846FCF5973A1D458607F50C15E
-06E5BEC715E0C156259AAA6C735593E5564F65F443B78CC7512EC35A56F126DF9D30974A40872E42
-65E1AE5FD483CFCBBBA26DEE426CDC4721F19C3FDA86ED7AD4FA1120F63669BEFE7002B128CEAFD8
-C63E8AC09943B6CBDFB3D2476A026C00A8FF81B1F651B97F310C82ABA5F388CC1DB5AFCFF5996D52
-52A6A42FA4D972E41EE56088F78CB966F9051171C472C774879AECFFF08BFD9CEA40D7C298922ACE
-64F28C14E0B81F4DCADE81D71DE3983D87D905192EF13CEE71B2D3FF1A88AEC671EC318917DF98A3
-C9054E372D22A3CEC82FCC217F47319A40900312F6E32B536B9E7A7FA0837EC65CCDB5FB0D414371
-17596CB39D9382262DE6E65379D3A9709B2CFBABF5FC5D5B352425F06F88CD31012A2A4147B112F0
-C1C0ACCC808CD625E0228EEF66661F70AF96D3DCFECD402700E4F6522AC9A856DA466D55C84F65BE
-2810A1565163872D62EB81333A698ED7B68352CACCA2D7AD38AB55C19E4F5582F75818302F5FDADF
-1DCED09D94872F2D48FB636C8E38C7563C72C771A08C6B1F041F3532BDB39006C89A33C09BE1E3E6
-03622D891F98010BF1DE5355F557A1E09448D486ADEF565705277B31B8BF2B86761E32631E3435B6
-88B79D566F1747BA456DDB43CD239FB47FF7B425EAA4C657C8EEC26EE01AED07CF916E77D53634C1
-37AEEA009C6B515B6342C54BE2C7B95955B1A9DA277A0ABCDA2346E88018C726F481F71D6011AA42
-F8852F2E5749518FE3B3AB668213FE1A05C10A1C53953D75312631D6BBBA01D418199DFEFF8CF548
-6109B099FE8E2F606165FE30F532C03567785D5362AA873C9D3EECEB20F1945D55F49B0CCAC84967
-59FCC7292E46938943C262D78F3212D3F9D0F7B103157F423D71B1ED54B2A603F4C269029918F238
-EC6828FFCEC66009DB9C9E59534EABB183F31D7AD4C57B1BDF0BD2CE5A421882BC10CC1BCE6A970E
-2B586BB221567CCA483989DD0B8DEC424C1D1FF042DCB7834423CF244EDA28D2D969B17440CAEAF0
-24A6119DB010CE366821AFA424D1B8299609C04148275AE6E5257A7ACB3C766C747CE99CBA2D703C
-F19B7CF301B634D8B613DDC4AFE4633A4D77BFF8E00CFB5E289EBBCAC90A24307E7941EC1685CBAE
-400CADD876FCEF7F6557EEE167D2035A05120293527700DC510B038A496BE1D5CBAEF24ED39F7421
-1A93AADF22214ED606A80582485AFE358E3A46D0671148998A3B3BE209467009B43400870359D418
-9A8CEB4D5866AB52D16D9CEB1EAB71C07E6CAA34B70E3096BF7604C22C40D5FBFEEA616DA3BABD59
-DCDB97D883FC8742B8267A16A99B7953225F7144568D566E64542C92E538AC140C851E5D295528EB
-7CBB49909B1CAF6409C9BCCEB325468FA0B5F7CB2987382616B477CCFE4F4AC79E4A6F7165363543
-F04DE5B6F6E1C2E910CDC3CDD6C4C92737198F892337DCB6647BD226C820AC99C65D8E7772BBB74F
-E65DCAA8A22C33BC168BF48E40A82700A3A7668C5A9A71E397ACDFEE7D556C5C19467B7AA69C260B
-727407AC837BDB7D67DEC055C1F45D8BAC61048C45BC9FB3CEFE7549EAA2992D2EDC126FF7A05EAE
-58613332A2BC1465B2BC0429162B907D65F793D236EDDD8D35405866D71B25F62DC4A7E06D4DEE82
-840ACCAABC0774F8A63E9C0F7FC980B3583E7A8B01C46590E3BC04EBA565C2EA94F057D964A78A90
-EA9F52ABFD70F84E44E434BD10A42E98C794065724341F907E35D3CB257161E01C7084E3A0166D15
-CED65DA7BA87DBB2EA33D39BD99AFB93D3548358D08330E807F8552CECF63C84F805205491BA3A1A
-622E70C232FADF3BF2DCFD6F0539158D3306506F150B0518371912A25EB96163D73E9EEED42EDC84
-D688BC7F7708D9DCA348FAB4DF62E5809BD094842D0A31DBB7C4B41F94D946810C5EC10B69AABC2C
-91A59500B2E5D37F4755DDFB7AE4ABF757F4C5BCF77C7F95E6A616646456FE8F18407080BCABBFA5
-7704287AD26222DF91AB2613951E2D679472F8ADF06EA2A20205EC19972299A78BAC52114334470C
-5F5890C2F846B4C6042D73945127F2E3910ECA1C4CD7A16EFE4B4BE38A15AAA710682C3836A8CA83
-FD384970139D8B46FB0AEBB002DD224199672FFA02250FBCFA4E649E335428FC71F50F45E498419E
-DB0E970F46894A48F65580881C9C4250FCEF65C9B28699408E18B26FE6DB7F1CBDB767564E73CB59
-54C6D639CE33220C894F36E70F71C9F9AA3FE2AE0AA0E3F2E304EC5ABC661675CDE2E70519E4220A
-E26FBACBD01D5169EB844750753E6CED53E3678FDCD08AB93E10067E9C64F38B40B76D99B6CD92BD
-F4155A1EA5CC824998B59AAD06E09E5F15EBB2288D66EA71B296616734FEF2796F07FF0D8B047074
-A1111D68B99C2B70FC56E74A51B062F4998ACC85B1943C9477E436E5CD7AB18DBC898D21BB93475A
-623BDDA71D7B895BA2D4C10F4B90BF335126F4FD57D73AFA50170F6B3C364922E551D40E35DA75FA
-891762FA23401D39260F2E92C7807C746F13BB35CEF9DBF2E76E66A72FEFF095DA482A4DE8A42091
-7065736CF4DE904FB52E649A32255E2030A7B31B686353492F31C064A3C4B0448C4BFD44B8E15384
-FD809B8761EE26A7DFA1758D57CE4F0BC376EB2B3833534B15A83436BA553955ACB5A7A66796AC5B
-92DB5388BC53EFA27508B08E82821E5CF669BCE52BB860780F749B4F38ACDF5FF12726BF3EC2743F
-01014CDE96FE6B4C40A034E9EAFCA2A35CCC776C2669E6AD138070A40F48ED79136D7FF57E993E09
-B81C543FBADD350FF5B5F7A46F060F88E30FE2D8233832D18B6C323EE017EBC1DF5C838321CDC8A8
-4CABCAB20B60A1A3AA028F36EA6E87C850AF8AF7CD50AA6359038BFA8818821D02CEE8F51DAB8C05
-F7AE9797814D97F3DB8CCDDE45B21DBB15CEE292FAA534A5F317B357F4091F3DA357325B8B9F5EDB
-45865415973C143E5E5BAA483FBF2D06CDD4246675EC58B84C6AE65CA743117FF00F229243772561
-31A7F2BA26A9115AFD96C18216CFDF41B7220ED0CB3FCC26C36380007B382A02AEAE428887DC8BE5
-FDD630AC57EE3DC156C7B8B29E687F24442E35CE10BA4087295A641F7139C831F7CCDA6CCEB5DAFE
-537CC1A97C5A337D3C48A6AE947F58A30DC08CC7B58DBBB4737AD52783C573FC1E9408F55495A80E
-7FDA61F0B9C4F090158F1A416249EBBA936C27BEFDEF19D1BFB839EB70576A010706D8B95657B218
-9C2AE04C11EF9E57FE09880273761FB4302C388BD608FA0C7F00F033C9C00F4E3D5CE2D903E0DA52
-E69C7745EE9FA75E2AD93DC6CB5CCFCD3782A699B807AFC36AD1F62B05856D5DFD6F88831B90EB3D
-CD523582A49732E3FD7253126D39E8AFB8458B5F7AD7F94A8DAC13365F433C857AF4A42C0A08C4DB
-9887C4957259ED22D13CFDF5995DA957EA5A0F620B0214FBFE08AB6D552DBF048D62CEF6EFF12F15
-3511ECA7833E0E3E95F85E6AC0F95438AC4C126E1F1ECF336ED31CCA7EB216D279877123FD9FCD8F
-B5E52B587CFFC4428456DDCA816819A8A4A211D8F1629E5D42BA4C5C356E580C8A22C61D987552FA
-A97893816DA73D423686E4EBD44375C257F031318865A20F22115E72BF1EB9F93AAA169C140A33A0
-6C35BD4526A38BE79CF40AD1EFA10411E8F3300A8A8B97AB140EE6734E1BEE6C8EE443D698D34159
-97649C6F10F20ACD80236422E215E146D744A262DA3FC88DC0D86FF66512F49D3F957D3C5CFFEB42
-4823509F33F155057A4C6F37B52F4667767BA94F6B8B62856B553F307E5D230C44CBFDC9A97A45B1
-39FFB2F2565EB0E22026972FAD0FB7B9576FB6F368B61979943A398773600E7EE1DFEFBF26D45D40
-BDA66EBB96A56EE9CAE0B2420C5DD83E24DBA9FF885BB844BF3D2BF93B07325DFF60C0CB5FDCCA0A
-C8FB5A2E119D5AF26E53AB8E3B428481C2871DDA26EF0B621CD8572B3C664BC7AAC01A1D05B98F79
-1A7080D294BE81099BDA7982432F3DFF4775C44D23F4F1B2E0162B61A8B2CB5EE8564BF98E2ED403
-2219085FE6194C19DAC98A421826CAED7F1AB1477AB327506010217283894235D7DBFC1153D5ECC4
-8AA7293F19592B4D7E95FE55151889BCD1D7FA7DC2370D2DFE11D7E4EA34B5C7A8E73BD3A348FD38
-9EF45B6167FB90BA44C23E912F9A4F2FC0427ED070592F7110183BFDB2C400393BA7569058227926
-351F07FED4F33633BA03A72AA2DC6B598E49B96021DD868DAD0F352E5722FB714F667C15C68D49C0
-3D822D82677EDFE86FE9668E537DA284068C9B0AED83074C92A5B939296D505B837E6A9DDAB1AEAB
-7455A08A114C2222B339284674B74BF4CA9EE0C020BF2A148B439C71C6BE51A94CB64FBE4A7EB295
-5A455047CF5CB348B062ED4F6471CBC3E9ADD9BE9B96879AC7BC71BCE02FD02F17C6063985A5E898
-3D205AA1489DA13C408990ABA1C54F2F501AA172F530480D789C848118C0A74EF98D5F607A067BAF
-F6030D887AC6A6497F9A0B38F9705F328AAD4BFBB634F739386177B07F22D5771282444E5EE17335
-B4D0EC86117C697E79A5F4F65FDC08E4904DAEDAB20067EAE2448FD4301849E456D085F392DD1316
-7ADF75CCFDB723E2904A9C0C976D6B84DDEF9D92B0E15FB246C3ECC2D0BF314CFB957757B3A3E8E5
-801F520644E4601D291DA0F7507C06F3B9BB36FC1C70EAA444E14E56C0CFF06C7F853DF36DA9D8B6
-AF2544B853DFFF535A7E5C6FC145250CDDA229956019659D0D253A19A7B51A4E538BDC01F74D7704
-9949C2C97C7EC6392C2E61CCC0992B66DAF1AB08551063E53180D2A67DE496716CCBAA45462D9F91
-B66A22545962DDAB120511FF08627131B95E5DEEB8B4DD9643E7B2AF65C0FDCE11F5F1E8DD468DA1
-8D41C8C4F00EA73836F4F70EC50FC3EC6D358C0658A4261C6D15A582A2C7C994E7882E661855B352
-014576858A265FFBC425160669CE159D07EDAC04D060B44E5800A7AAE8E339C29B929AA81D2F515C
-46229D2080D5917AB20AB6B34FDCA8E4AF64ED660A3173786FB1A1D005D575C2A5187D3F7CFDC94C
-CC44A38C5CD523E9DA726D8EFA6DA7B6131DFF3435FEE838B2C7D6B97934295F06202D307FF78D90
-6699CB9C5BBB10D1D4DEA5FDA5BFB094E704607083B646D37F5DA1FC7AD21B813F44D8C1AFEAB666
-55AAA19703BEA2E77DF3BF350E17C74B3447A452235919452B5175570A006C7680AC05E8950A62E1
-1D7E3ACA35A397D1E19630D094A86807593C97F4C484E4E06BCFF708B6DCA972E3A0009E1CAC0EA4
-141530F5C1B8AEF5E1B933F37FDDBC4BE22B74FE346D1A3F5FEC0818F8E61765568A2AC04713E828
-F98C449D9A1CCE52D10D61DD8BFD084C8D099A75D89DEA64D5A7CC68BD5B0593D97953DADA976383
-F5015915618AEC56D71D1DCD55B89736395C609B315A3F1E1255432FDBD37F38CC43C354FB4B7C44
-F1A7318B0B7E99C3C08C33B953727B6A6328051783A0A33E3CD9E498346A3CA6A77B517096EDD52A
-E443B87643A646C3A7BB97F742888D33F9B3127E61942F4103C1DBDCD8EAC8F9E259773066736CA6
-53CE57E8822651261D847C131321BB9D6626A1AC50D047C0BA47B411DF2A995545BD68EC0287CC9B
-31D5DDCA8755EBEB10ACCB3903AB0FD5788E984220443B8459E7C078DA4289F1350905881AD6DFDE
-C47302B0ACB0D4AF8CAED02B4B70DF3CF8FEC118F0FC2D3DDE3E494CD160E676E300BC464BD4400D
-B50EE43B314E0517037BF971ACD7CD327CB2134893B8A0410E68DDC518F5DEC966C7884CF5FDFE74
-723177F20DEDC039D879056CAAB4BF045062D3904F615C5CFE109AC7A35599C94024B41019B9AFD4
-04A80ACAA4837929F5C9317680A13D157A03B59A5588DF79D2E113F5F51021D6F6F90E8BBBA2C252
-FD10651BE80BAFD59C53A3367BA3C28DB6EB9DABF1EA99F47B503F627E15DCF3FD645FC52C5D5D0F
-2F07DB4C25C0D1E1C00146E1C4D973E613CCDBD3F9450CC0F5343D79F05E9492E86A1BB889ADF405
-03BD7F3E7543436859184A5B20BD8A172F350D846B7570803990ADAA48D4B9155A2B4C4BFBEF1E1A
-065C08E03928559735BDD442FF1E83E1FA20A5DA57D8BDB2FF5427C034CF0128AF111E6E73099E04
-6E0C240E80A73D7BE72B87834E45898D475521CA3306707631F5C6136199F354632D1A085F12A1C7
-C473868B62E534D15F5484323E63D0574196A19EF175214EB35A90873EFCFB92D6CF68761D45E37E
-AA61E1A1979A82009507CA193E44B36A806486665CEDBCF387053ACEAB979BD35D30978FC7659ABB
-E844F4ECAB3303318ECE80777A5FA5A9DD91B3D06804C4B4E9B4EFCF07EB89866D0DD8CA390CFD15
-98651417114D78776B1A1D36B4BA17746D6BE7FC123D473EF1EFED1C3BC1D555F914536869FD5B0C
-35F9C83F65B0E6BF7A627B9202D787D72C600DDB6BCCE613D88492E13CA0AAAB196E8A49928C62CE
-A4FFE2D0208EDA334ACF47F20BD793124D2C5546C03F4A364369A76A0425262F9D9118AF54E37D32
-E33AB25DD533A49DF5FBF1BAF4CEAC2D9D378CDCD13B00FDA432D9042F623DA41AFB80699B5538A2
-5403B0B3EABEC9E8EFCF42FEF3EA9F91766902CD206B0787C187D5370B60AD6DCD002DE2DE8DCDC0
-B4719A797C5E26BAA67665016DA0D967FA1346F9588AEDA174CA001B31213617FE19EA218EC23597
-79D979E2663166489C06993230B0D07973A117C4E3F4A4C93CF8428248DD5389414D679C69644142
-67C7FEA17E35B0CEE456667A9B1875C81B2302BDDEA2818D6019FC1622A82051F60584ABC904CD91
-8676305DC03FFBCC64FDDAC8D8AA9CE2EA00D6C97BC63C8A617DEDFC0E40775649438E9F61AFD179
-5E3B20560B01BE5E0983F136CF48AB206954E41DEE0D9DDD953DFD01CAEB569151D6BC0DFEF29D70
-FAE3E198E7EDD8922C0E0BCB8BCCF1C016142C1A8B337AFA7A05A9D7534B184BF3BF827F371E9BD1
-9A71244ECA1BA73D484CD2FAD54DB2F0EEFBD54B536EBCB5094E6BC2F5B2AAE41F05B4B311115876
-ED42C34F8E643B53372E3F6350DB8A38445822EA9A33E27FB0CC42CEDCD1FE2FDF723FC47C996EE3
-56C402112F24D0AF899B2D00BEA1CFD427998BD22B2A09046D6737814448ACFB10D387547D7009FB
-384AF0562C85694C071584236D0F1F3D3FCD0CFB38B77C81889061E668BA7AB37AA60F58A3967DE2
-6F939B79CBF10A9DCC42852561D8D6754F1B660D216AAB1E133FBAA321C56E2584BE5C9BAE20CCF0
-0E8DBE6D9C2FCEBEBAD945C3C04101D2387351F132628786F6D9D4CAB83419288D31F9BC600D9664
-12E6AA457CE6CAD26A4C0671097B98C2384C81DD8B9A3222D4F4BBDA7017895C3EDC26662779AEE7
-40D9D7E24185FB821970B0A3A94041A69E4805EC88EE1EE521981536F2844FB8F5EF645F67D42CE5
-148E2DDE43AD5AEF200EDB3A2C7866C98458A92666E5F9E070178BCC39F65A893102A10564AF4E8C
-AAA5075D2F8CD7FAB0401C03AF299EA3515CC93066744EB5AF7CF0ED06675BF049A6E3C211A89E16
-DE5BF0445A7CCA6EE8EB0347454950485D884606651E5887FE8B24323E2AA16DE22FC1FC8C4F06A8
-2A1FDE5758976024068197E1F4506E4D3D8A16D40461A4586338B374A592DC60334402F76388AD6A
-457DC3F54E6169CF7AE3959676E966A45609621055EC3AF80E182633300A4418E34A66DDFA6B569E
-5A13C9115B5FD3EC1CEBE50FBA247F60803AA83976F00117536342DC3D9890C49B2AC701D370E43A
-955118967827760F7091469C5406F08F18D7E3548148CF0E312B1DC71DF67A5E7A1656CF2F47F3AF
-F3DD50FFC2FCDAB7177285B29C17CA43019F62AC6FBA52D1493ED7C427526470ACC8389BAE827759
-4958908F517B2863B83292EB5AB3F57FFFB08393CA610FB1FE905D88A0A16AC395E2A2A6DD033D6A
-0D68992F830B2E1B95FE357BF672716E88FFB92FFC3D62945D1EAD22BC68C51EE0E10A43011DB94C
-44685A5C4576F6EF44CBFB45F2A4BF110A01657DB51FD499767E78058199B31DFD60813F1A344F86
-289F9378231D5B151C92385E3650B4FEB1DC91018EAB8474CBF69FDC1496A4D078D2C351C8196451
-247A9DCF8117E5B637371D8E22E248C64D999015C3FD2311E9950B8EE0922FBDD3D7BFF766BFE9E7
-CE0BE12F318FF2A7B5A9C6D00A54401609304ED2C55F5C1EAC3D4B38355BBD85D66D61636FA6E30C
-2E82829376BEC979A6FEEE040E452359768ECF90CC539A546F17AE906C76F14F86FF697797322B05
-1EB311A759FE260C1EEE5DACF383816AAF1294CFFA7BF87A4D9BC595EE8F2C2F86FEEE11AD959D86
-F22FDAF4CEC098942A57E57813A0FA99239E994FFF353C1E781D666B8928CFC648FCF0869FC68468
-BDBDA7D280DFAB8B0B3A4CA35B074B686DE8D372C61FB32305169A1A9912F6541DA16CD6316A6EA4
-51524757BE5CF6E820011BE3859FB8B8578C100FF029680E05F0E0BF11D33FE19460C85EA5E4C0EF
-28E29407C8AE6BE01CFA0D5022BF9FB01416FFF722A784DFC8FCE330EC95737A854471D334FDC58F
-AB42867A7B62836A8B56466E9A6C1247D46EBAFFB905CD4321970F59FB8D6FF65FDDD34BF913AD32
-2E68455C5FF2D23C1A5EAE687F259BC982B6A384D35440F7C693CF50B9ECAC0B5578CAEE87588B56
-2EB6B7F42034C9F2E545EC866316552354EB3728C7D26527ED75174EAF635E048B08DC5D23E88981
-070AD5641A652F2344956E9CF4C16E652A99F4A644D1787D6D36537489DA4D74E61B2FC4DFDF1D1D
-9D58F9C26C5EB63200526AFD168AC57D5611ADE4D4A382FC28BB60F9E7D626A6C67AFBCCD1183C5E
-3CF2EF210D0BF5CFA7BB10FA3887BDD4CD96EEEAA8F9219AA2F10ABC0A960C3B57C0EC0313AE10CC
-FF1F522124CFC8D2D49BFBB0C193EAFFC5B48FB3FF30B21CB76F0A4C0F1377C9223145BB0468A5D7
-1B9BC25873EA12E1C60334571C67385C00D0B570D3FFC6C7FF0DE62C183C76AEEB12DFFEE1459E0F
-C818C621B8D12FA1357E2B55D48935D70BF140B4CFFE8813DEFD479350B20DC2EB1D3CBB1A2D3DC6
-EE975D58C89D61FC50E6A0197DA9A586B72255023DE47DABEFB11E8AA02414C2FF6258A281219B9D
-DDFE41BA7D7977D0D6F18224FE22F7D4E9355FDB35BF7ED3418F4F68D093AC48F7D8FE4194FEB6C8
-0B9DC1F74E023C604DEA27089F98C3973FF9F4AD7BF7BAE601DB89B08D5D8139B95EDCF6C885FFA8
-B3E4B0477E7040225733826BACFD1EC4A0DD72DC41734856AB9FB700DF83CA2CE812913BD142D84C
-5C83C0B2583768198AF9E885F2BA74877A414233207234AA5F18840557CA11682AABDE8993533887
-7C6D404BDE4153C9827EB16D66C1D73A8143C8A2D3604FF72CE579FAA3C5224BAC48EA83BA848429
-9472007DE96466B5B29ACC7C03B05DCAA38A48BFF9F214DE43146AE4E04FA705421917F99BC54533
-F0EBC01849E396216B9F0794E6F6C6B61B52EF1B1950C0FB609895C3C55FF574163FC8B6B09E66AB
-AED1810E698FF37CC1F926B2CDA3B48C7D77790EBD2D514B6F385D397F713EC3AD3954EA9C846158
-6031D369E8B99E53408A79D64C34EB5A56DE8A67DE91837960E98A66FC04DFA0EBDE21DB003234BB
-78665B039D0A469A0221BD541AF7149A2A659C300132C14581EF766FFFBECBA8B58A5EB3F95446DE
-F49AF863A8113D17B2E7E6ECDEAFC3834D4DF900E3475596E86FBB4E2974C090DB4AD61A737D611D
-92B4535AC291C56AD8B1C031D2F9B505BB77517B737D70AB3723DB52AE2ACCD5DD2F617423ED3CC3
-9CA882EF41757BF7151806A9B8B0F312808863E3673FB54DE939B35CDECA7FBC4DC3BDF5A5F47D35
-E345916C39366C8B4F439CE1C6F1835C320BD1E67375B03B5DE18C93256F251761A4C8CEC01019C0
-68E34447BCC503B9571FE8000627A6B3DAD5854CBC0A2D69E5A8F46BC78F6A7B1422334EC7A98ABE
-FE9B83E01DCF3C6C9273B346F3240EA225AE4A4083CC7B0EA141A0773FDE940768358EB4B13D82AA
-304A1386D450C1C0C6A7D5A8FD2BD313F78F85248B5196241E31E5595F3BC01F37700A2DD3D4A0EE
-2DD01A36569CD507130E8F5B1E96CB560BB7DA15560CCADF3B2C9804A11D9E8055C9EC70E48C1D21
-3EB756A1376F2EDCB7189D78CD3D6CA5865537EEC31C17D801605EFD860B0B629472690588D02575
-02C6F7A75B9A1C1B397781329832CF3EC43C09F1559CD562C48FA9500295CD3B0A790DD3FCD4684A
-7C7AC49AC9BFFF36B39A9FB148BC28D37907433943CBBF0CBDAB46D3EA86DC8F81C859C52D15302B
-94A9B51C199B7104DEEC9D769C2634CECF8B700CE9C04152CC59C9326BDACBEC4312DEED92DD087A
-1C4840868D9F97CAC046581F762F75E8D24D6445370A3F1E0AE74A6478D9DAC37E7FA5BEBEC0A1E0
-81AF89C1BBF7F51E3E2E22C8C405E8671BA85F1BF0DF79A465DAC7EC07F731E00632E017D190A99D
-83E27E5C2E63D7DABBA23B2E88334C63721AC5A4CBC5D45F4C177259F34C2EADE01FA008AF65EBC6
-01D8DD16436D86AA94C99F3CC0A2F87134E73BF22F108B825A8963B49C6C685474AFE4A542C8641D
-C0375D7EFE9AC1168D9700459BE52D0DA399023E141969F25C0DAC4668534B6647EC85454BE945E8
-26B26DE6E3C4584B97A38E2B40A0D23481BCA78084FE80E00A71A790BF31DF468A435ECC88E60A57
-860BBCA3D65930186E9917CBD209C230E8F8255A7ABC7D3F043AE4D7AD63D9980BEDF062B7D5C298
-C40225B6D03F29A0339E0FCA02138E526F06B9EF47F5E7A8068A846CFDE2BFDEBD24F5A73A66C079
-18662AEC80B43246284FA4E2EE0D9AAB172B1E59A6CC46B801149D8C0DF6DEC9A55D8E1B0EFD9D30
-2FF618075944CCCB6831D336B11617107B0530D09885E5CA11A5F1FCC8D69D603DA16BEA51116D42
-CAB1AA1E4D7B9B4D79993F2BFE53EAC904FEB70B2D330A89780EAC10D12CC0C35B8399F218AC2976
-E57A26BAD20CE2FA2AE2363D3FD2A8A971747556F2959DA74A8963C20B504711AE1CB0D0C02457FF
-2E9BF696B159AF031DD5155F21C0F5549B0471A3C5DC8918B675CEBCB23E29322B959ABC05283A70
-2E878DE8EF25EA760F3C5C7B7B49D398283DE2ED837FD59F7C22D62C58FE4448B1049FDEBFC8787E
-67D7DAFE9774979BB3802254DA59BCC0219F98C219F84D995CA768B8B5D9D4A32525DFECE003675E
-E4BD5D8DFFC11025AF2B468F9207B5B2B42349B98232BAC0759758C1F4A283405815BD7145C93FA0
-8F3ED2826655053A3C2559073D8ACD199DEA2C5BA5F616A2E48548B4370EC73493BA07E197165DCA
-774438B0766867819C1154D1959FE6E01E6312E0AB91FC2E2BD240FC8652A2D456A1DE7F34EF372A
-53794D4C4E050BF3CA5B7BD2F1B8DE93B4C8002485CB219AD2D029739FD3C81CC6E78EDF38723576
-1A57143EEDE5CC887F282FECD261F6A25D0A7E154ECDF5DC38E426811BE86AAA458577E5E0C5F0F7
-5AAFA9C41E5D1DC9D91ECD79B514F8CDF7A5F1A189470D35FDF4F9B8788879CCBD91B427822ED658
-389E981E0EE5F7FB87692A3E3E931DF8A1D1573E3B0166204240B7080089A09EF7487C9AEE2D665F
-5A82F94C877FB5B0DC531CEBF1E71C6592CEA2401E4B5122E5091DF03D203DF979B9A6EFBA12E2F6
-B422FDF15D49AC0914D372D21E871DE65CBECD105FD4A3E4714B9CCA5C6803FA39DBB015EA8A88BE
-7913502E562E5B170B87BFC8572DC9DF49AD63694311EF1334444BDF0B4CA3245271C1F7A4D7FAF1
-703E3AA0E1EA8D5C6E821B28707EE0C9B4F22F23796FE87356C58AE2CADC191F4C58E1FB58DA03B4
-5A25AC95DBAE13A293474217BDB214742B9D9D6AF35F70FED2891942EACE3E625E55FFB820543FBB
-250A062D3D395BC0F219ECFE0D76686AC148BC41476A887BC494DDBD396BE200FD3E03CFA12EC9AF
-6B934A283C42AA05589AA6B4A8D16946BB51F50419CABECEAEC5AEF9085C9989289E9B46BAFB6FB2
-782D84DE2B068F91A9744AAB237CEB1BA513E57E4C307108E993C972A3E0A898D5A8D27833155031
-FDB98863C3BE7FEF3004CBAA5CB60A1F2E3EB4D7290FF5FAFA088B1CECCB6CF51A58DAAD998F0839
-6CDFD68F5ABC9C1CCB8F6514107773C69C26873E889D1F79D10E866910E4684186FCD71C965ADF62
-39BA3418B313A27AD632300969B6F284519366ED85E7CD968D64823F8C59B5911A72D0A20EB72B60
-3A61E36F52F256FFCDF706B4560B4DFA5D918FBC530D83A4B3C01BDD3CB4572E24242D141BF9E775
-36693A0407D002E09CDA5B195BF1CCF430AE9824C07928A050D0B460F2704BE8F9E647A4884C4567
-0A81EACF7CC038643EB0FF18A376FF6F32B6FE4F197273327FBBDEC6443A299CAD4B26F7778A99F6
-5A11BDE047153E764039EDB251936AA43DEE50DDFDF8856519056AAFC4C5AE6F2051AF0579A9ACD4
-1D00775D7DBE70022CC263DCA5E0A25B9C7C4F5C418587666B2FE24816B1E0EC92F9074F1403BB83
-AFC3F1D52CA79C387BDEF864366E34C90BE52F7AA09935373A07E4E026224E76F9EC3CB9E7EDE50D
-EFDA48248D61F3CEC880A3B8843306375D9711E58645F3625BDB8E87052DA67F9794EF4AF8DB0BCF
-E00677C3A26907DC651BC838C40EC39E2B5A5DC0DBD345944A6C32226089D63C52490FA10B215AE7
-03CFB663EB8A47793B84CE7364DA1C4E7FCE32DFEF09490121222774915BA59C78C2275F829D15CF
-4D8686B095C38C731B83D48738C25F40B8ADD487C350A2EBE846C3916AE384CB1050F9F5DFE09FCB
-D9129C6270FD86D55A459618FDFA4F907E6B4746196BB717865AB378414029017551161A52E9D24B
-E4F7EED553A927933D4ABC8F25DF607779A717909CB4D810DE8F5762581900E224E4B91598149BA4
-71CF8068ABE8744356B261600BFCC57FB8BE45036CF6571D9B2A95304933BD4F17215F8EF53F8E08
-1AF61FA7F9583C34EB5655CB0ECB82246959F09091F36989EBDD646BEDCA614B9A61AB7696B3FF18
-1058A150FA6EC1BE2EBC7F64357A3FF2A2B0491D2F4E0B970DE5B7788B467CA678039B5EF55C88A3
-84578D427FD2CB16C87B0BF0A3D37CE8ED43E0F049AF2436344D5F47C948C632C94A287509282561
-6C64C5D262FE5B24916FFEE982A69A6CCF888BD01D62EA591EEC51F4B7DDFAFFBEEA93FE08D736C2
-0129E345D06B10246A5F57151C198D407730713F32299638EFBDC01367E23EB59AAD42A83AB41B43
-2DB462652E29813740F4680A5D4BD47B18328FAE6BDF4200CFA4CE3773809B45E8887C9B2E423698
-9F6C48D64F5986F563D9A7538A8716082F81936AEBD0461E6F4BD470436D8B7656F0FDF89108E6DD
-02ABDEF907731D458D690BC608EA9CED09EB1E6E64C0790C7A2378201CE997FFE0317679EE1D4EE9
-F91157449323E53B4ADA8096CD628B5861BF794543A98F2FA2AB54FF0F25A13DAD43DAF9394329B9
-5AA53CA32749FECB0B2BC035DD1EBD53FF9FB5AD8BCE06CD89E5568091C1CC314CFB1D9821D7F9AC
-7C55F55E0A16E39A87D43148201B928F3C42B110FC056189DEF183745F3B637441DE8BD4C3C7EF12
-F4258E306B2877ADAEC63441010750DB4E6269A4C78A0AC01BB3603C386651FE814031CB5D8C1F14
-9EEAFF652A53E57BBD4C8C0CE36A84A319A53BC1E5FD3F1ED1EE72F4C1A9BF264B594062FCAFB22C
-C1FDE3F2E3D3C17DD3F7FE0E15EBD812D550227C06D01127385374A11438ABD50048E17255FCD2BB
-85122A6FB9B7DA9D5E9DE8A747FAE0DA45A1FCEFE92B9E70A5B2CAC668D4D07527A5C1403267D823
-048BE671F725CFC7474B44FC5AAA348420B2D7C23C6CA066666FD6F2208E329878D90CEF1C2E77ED
-22D3BEBB9D547810B189F08920A27E7107F208591A84D463CE2576C70C3DFE6643E4EA93F4E1DAEB
-41D46F0E2F56FC10C69AD5034FC9859D31CF27A3A1EE256C93111F81C11ACF1FC0CE20B90BAC9AA3
-27A5C85A7985B951519FD4B03C40BE637162AF41B2FDA68F0D1E9B7602FE2659D3D75955C579AC51
-DF6A552EB9581AC3F712F083F19B52A6C4F560F36C59CEEB0C996AAF1728A2AA45DCAD79BD7B23AB
-388D5B0B64A2B95154B6259B730B0F4A72C8C7F7CC93C7D64D9D8810D1F63FF8ABD4DB89824E2D26
-4FDEE916C41E299211DB1A53256E1DB5CDD04862F034D9404B73183A99D3D13D642A663F129B6D16
-7095BEB4EAEFD03DF2FF2F0B6B594C1EE90FDB203DA89FACEE23F1BA3901FECC75FE1811BD701259
-343011262B6A0A9707AAA6316BC3C17F787BB80AC8DA5AAC942D90F80C5A3BB59E47EC767244AA95
-C63E50BF809998957936D3BF6ABC24B0A397258F9EB4DC8F65692CB023D9091FB180C69498CD0C08
-BBEBADC84A7E0016E8F8BEA325D924EB0DF82E75D2CC2CCBF039B11934363D4332C5FBC5EC556BE8
-5EE4E707CC2753CCC43D2ED50558E51A104221C9323CDCB0199B7B83454DE3FDC810D0F362C0299F
-5DD981B31D8E3DDA284FEF9DC8F9C8DE138D3065437A7FE8C30572AD06D62E8527AD37AE39AAB0B2
-25F76A25F6C6505241ED73BA494CF923E919F688DDEBF193E188F8C4C154F21631080763B4D091E8
-AD1D2FD6649E0CD9360E8D1A67A5B5FAFC67547CA31C95A5EA8D4EB5D68B9F6D6532DB9B54584735
-9558542A2AE58C09F3BD2918EFBE1699E9C8F2C2A11EA4D224C726D2ACD4A8D8ABAEDC6588CF2AE5
-66528B94F55B823A2A1F7BE19000F3E7579D094E047075DF18C8C868760295533B26EB3ED90635B1
-29C17ACA679C3E88B06998CE5A7A2544B700229F5A6A504BD3E45B276471959C8A3F81917A534287
-39B5EF9E3D463B3BA7318448E2A3E79520D2D245A2A72F31FF7070B6E4624E3A5E216BD103640C8D
-F387E49D732529C611F8B971073F17EBD2F6EB18F9B74A67E1997926DF178D4C9EDED435B9682F1A
-279C81BB9F60DAFE125845A2FF3B02979E5481C78A45C479BEFB9FEF3CE2BA9BC46C77B50B03E48D
-A6D17B76F06F3AD118371ADC69E178C52B5FB4B261C9311874ED07DD6D5B3226A005FDD7A6D53848
-09E7063F036CDEA41619122635E835D2D74CBB6AA9B38CAA4D819C26E95115FE0DBAB4198FC5838F
-2C91B7A87B07D734C6D4F4F83444C1E90AA9BFC908A2BAC4B3DEF9157AFCA5248F2DA31CA87BD363
-AC25E9E77F741D4B2C6E02F04987A6F49D30E9038CEFC41BA172DD675AED8B392164411144E5B738
-F3210B0E66B17A13CB9631C33D44484E792A7C082DD0A5382F34C5637653261B1EB6D2035B08B4D9
-1FA9AB770CAF40A103629511F7B43F2743D7E583433DECFB19C21FD4FD0AFCC22A4119E77C87BFE6
-FE50068B22479015BE5A9F06BEAB4D37412E062A45E0CBCD7BB39FEE747E96306F79FC4F2E8942DF
-5D9DA0E55AACCDA547DA19D30B8404FA121298B44C9CCE198C708C69A8D6BF17591C5C50D3FC5BE6
-961F7ABA8F366DAE957A1C3730DA4A5B4F035A9274675EE3BBF0CA8CE9D8349F50CABB1C3EA4948A
-BE6F9F143592F1EA95404E6909A909168E3279A957AE1924245C356331A75E7008BEE92BEAA304BA
-40B7C3F48F74D9018B3247DF50EBD7CE541DA48ECCB1B0BE51A455C3C13C279D4D8676078C3EBE43
-08748D52C9B041D3E7244C745B1F2F742D010A9E60695F3EC4FDC1050AC082B905D6A57E8F407A3B
-472F731011A5798965B7B1A307E252FE02C8F79CEEDDEB6E165F1A94D7FFF18DDBDF79477F14E9E9
-3981ABD200FE7771B29D1D2D120EE79D28B9543818527039AC74085EAFF241B56D08220C958B5D9C
-87C0C04A14D52AFD475B542D391BC54FF33DEF8D9484AFF6873BEED32DDA4B371112B523B6CE22B4
-0D1B416B64C9370F1CDF2C548F4CCBE9E12E21C36CC3EA52DA232DCFB65F66B22B5E2EC04852510D
-5E264EE939BB67AEC4764B87062AEB7F680B40BCEE04AD45C7519EB3B6199C9E0E332661463647F2
-FB7EDF303EFEF84891CEBCF0FAC5F723A9D0476C3F8C092604C87FC69C7A90F4D64AE45A478EE8BA
-2DF50FB93F55A3546123F0B0E2C1C40C98EAAE9F0F26B8F80FFE6E6B94B7E27D2884D58B8A119662
-2DF6BE608C5569D7864BB756DF2EDD184B90812B44ED4A32D001C31383A40AEEE9743651F7950846
-15C48E402DBC01C818D477EAC0347795CB2792E9C11E8FD4A02E194EED1C919D4598FEC003B6D9A8
-A0BC7D456047A1C0579453FC1D7CB2D158D466939A23D7A7B8ABED7E2777EC7487973E73F2266D9C
-250CE30729E3C5223AD93B9AE8443B35711E446A3DC660123ED45CE1942A1A2AD0610467E081CE2C
-8B92A6C82F0B17B5D2429E99F1A6268072C6B5AAAA6EB6283A872C54D3694CD825EB2926E57DBBC7
-C1663075E687A144E4D61C225781D80FCAE1497B442342B4A3F1CD6BDB50E31791CC3928C30835FE
-F845B6BE5E2D7E3F2F5F085AA3FAEB45CAD0D76BCBB1ED859A9CEBB9F7457036F0BC3F195CB1A98C
-9C8648F6583CDBB23894BC719D68C2DBD8003B10D08C8CAA40BCE784D7BFB4EEC9EA5359AC056E57
-B8B0F2EBCB1F4CE40C87FC7861180133E0CB6CE2FC4FE690756D327A2B5AE063E3021C0C0BD420D0
-56F0B941E6B36088A55BA11D0C35FD0132D5F48E5D9673572347171B4328D4807B972831C0D74CFF
-A5638C145B89C989E6EC942148207D6DB82257585958034D9F9D4221C7C9F7013790DBD130F277E0
-BC88BB179DD09E27062379ED06F25EEA8B7FB33C35861A0034776E3813D2E9E5C10E227CC569AB36
-CB2D9DF2E7B7B44758F9DC4FFAD7A24AC7E9F47AA850C221048C3CB35A37CE8EA75632AE65FE3212
-175146FECD6334AE3D3C5F492F067F795E1E8FF386BA198CB74F0BB4DC0000DA383BC4CC3F070DE1
-7721431988D69C8B1A5AFDCCC83C22E16A87E01C6D3E79DC7AFA3DB0371B0866EFB8B6F88900472A
-FEF1C4A878243C52D4E02E82658979731C841C489A6B97E271C4C93800EC7D91F93EB9B9C659A554
-E1FCE42A5EC65AC39190EF4B66DEAF6FC0569A000A9E1495F42F706FBEA4D32EB7EF11A648910259
-6A65CF899C2F322F5679C6D123469192A9BF1A7F1F2C81C554ADB97BD19ADB746A4F81A4D5559E60
-AB94C483DBABF6CE2F28CDB412D50FF3FCFA3B3DAAACC6A83CFED910CCB3B8D2C19590AFF4D75303
-4A6CE7F4156896A13808E0DFEAC547E69D3C886691728E4A35ACD575B40D721E8FCC5385A2EB28D7
-08101DC50811529528F5CB0C009BA7E3C88468E37768FB0D83895AB54DB2DD5426562AF9D8AF304B
-F6EDA54E9C92643DF926F5C3578269750120302A37CB140A18BA56BA01108D4ACACE8FEAE640A6C6
-958EF156B588ADB0EA5F3B0F37BBA12B7BCB221C811415387B024B7076FA4403A3AD6EBB5D9C26EF
-EBDB7ADE7C60B444AB9F90EA493B658B7767AE2BE649BDBB3FE85F460F1ED137C61BD95F7CD3D8B0
-15CE45138538930AB62AA0E54B4CE1A5EC5FEC0A2B28B345B67089A4E4AE14D2E1F5A9C8848DA688
-CA298F93860649EC3AAFEF3E820D86988C8E3E5A4D4BB937791827994AA3E81D0BB3EE115EC36D5F
-B9A392D09E79AF514D11C7B3A03C9F9C13355CE79E119A19177FFDCA34704D38118A8976D1EE5AA0
-2D14FEB1414419F5E85244ADC5C0A765A522EEF36170064BB19FEE3B5F7B441E4DB967DAE0BAC2C4
-8FC6A836E0EF5A69F073BEE1699F55E9C757EBD6FD8B514E2B49D6333815B7DBD1E0694695FCA3D2
-1320A0C4B852D9706DADD8369A95FDD917328BE93DD33818954DBD2C212D2CA81560ED5BC284EB04
-7A5F389E24E43F4FA8C97FECF46589FA7341076555CF55B1C21B28E0C1CBB00AB8B6F67472F27BC0
-D11148F407824B0159B5188D4BB7386FBDBF1C0FAF34721B7BCB5C0FCB7C4010DCB6A1284E9D7883
-9E3C2111A05D29AB7997073B590A81C6168020F1D48951BC7D8476D5BA593F4F23CAC1F9BB0E091E
-84B4E99E5C584D1370DD12DEE8DF16AF8BC6B7B23E2FEABDB7F32779AF8E2B5094A6E9B7A7225F24
-C43A8E5D2B977E1E19E633C26771E23017ED233DBB02C64F8CF03992C6484528D0C8464B46F24F9E
-8380F385D5D01B8893C67FC103498983CF939432AA380CA576D09030CD52FD99BDC3BE16C7204CDC
-3365BF76294A83A1FC14A236F5FE5321904E779B13232A76F8FE521F425562678436359C2461BEA5
-AB27209541F557AE2AA60009C9CA0A9FC7898C14306CE35A50017BADEFDECBBF94EE2905220706DC
-806409EF87DB1D73EAB0698AD2DB72CDCDB293E7FB13C94D9FC87E74502E6927A212F0D7D2F2D194
-64F7A66AC07872E18CB1DDE8F11835DCBC5C4EF039333FFFC0FC1456DAADE7DAE3EC2EE0D3415B0C
-ABB69FC5006F4D14A4EE1A5CA99AD4D5E629C0DD1E0F097B5B93DE2DD001A8C418234C9C45E8C13D
-1AE04E9466DAB8CF1ECB88A4E059C111A6468D2DABB90DA79C7C79E94DB28F6968B1A632F8C57D9E
-565FF91C6916026FFAC0661856B9FB8DE9C81661816221B1FC159CFEF1751E7E403F5F2CE32529DD
-540792FC17A12A3DCD7C50D38EEAADBD10ADBF5D8A82442AA900CE6150EB7A4639DD9FB6E385B2FD
-093493DCCD9014B23EB172E21AA89643A6CAD1093343D85D81261972DE0ACB16A4C6B5F0BE4C978B
-FA12D3CAF0134F9EA49F6E9687C8F99A456745EA252F0BA9968C7F9586E3DD841AA92DC7705BDD68
-2DAE41518A09DF0E209F321D7FA3417202F4BA76A984DA3ADDBC58136885362F02F0A24EBC439B3D
-BBDACFFD8498EBD29F88F016B1FEABC10785438EAC860B554525F3266097A675299AA0967BD3B7A0
-EEEE3FC578D1BE99D3533BD91571AED904BFC9DA1A1451FDC5406E1CD614E0C7FBC733563CD6CE6C
-C31E9237CA153F1F0411114361D731636BCF98555ABF12848AD109371A42B63675A4130B81E97C2A
-2EE2BB5D8FAE2640156001AF0F55D9D5DF8FF23C8AEFE14F120000F14149A36E5C94CD9081DEC277
-C2C34870D05011F99D48B0875A5FF542F067F7E9880109F586BCF2B50522A1F23ECE44349E539E70
-F84E207DC9BEC7CDF856A046F1A03226AA41F541719AD1AF88FF211E57DD0C1275DD0B7B47440DA0
-89B98C6EE92A7D94700B83CEBE19EAEDD8A615F6587587BA8BBA3CE3AA5E8EAFB1FB0F486BE3609B
-169EFB178A4292F4C0378AFE5D24EED1CAAB514DDC66C696D8E37F294A6579131DDF5488E9436609
-ACD750C3DB0A940C84FE022B22ADC2676F62E91E8F891225F891FBA537679B24547BBBF35F04915D
-20B11739F620D18B5B216921D222F15044368569AA302980B9225BB839F494588481B94B0C724352
-B2DF600A22B062561D86CB8F81514FBDAA4F8A043A0265F992FAB71FC9124A45B8475E1EF3DF6B6D
-E35CF329777D45F08325E8505EC0D979F542807AE77E57E453525F23BC59A50740371EFA98678AEE
-6C425374AEB745B99DDB5D8D908FDB551FBC0DB15832107BBECC4E11A1A8DEC69358A574A2ED46CC
-31D564549EFF23102D92BFDCBB2BB985F78F36033E34F59C0EBAFA3BDD71338736464CEFDBA91398
-33995EDA4207BFD4A9867D32E867FBEB7DE60D132803EF9347CB17BD91315484EF6570892297DD8B
-7D966103339535E28A00CB1EECA4A9775F60A9F5FC9BD8B06D78FE8E6318C31DA2E847E3F9CA587C
-B01AE2BA0A2EBDE308314413F4F230A758184ED60D4F71F6CEC22A93A01B6C54E0449A3860FCA895
-4A347B7588329A80974ECBECDA1070FBC055666375229F13DD995E99265DF870BC8B8CC6347FADBC
-1A6AF64599271A475B9123493D46BEC41289BEEB67EB97A8DED7A9C9730D37C65164CFBDC22E5CA5
-89D2E7954C7136EF4E084C43A6C7F361A3E96989239BDDB9A593CC2A80BA16DE9EE90E95CD39393C
-212AB22EECB677FD36D34DEB46C4AD0D21BF7E6D7CBD0C8083842FCD87B18FEA7CECF939987E99BA
-34C214E44DD84C176C9CC5A4CEA76D380CB316BB4EF9DE73D73B4AFD4ADB54451591DEF86621D138
-D5A0A29441502BF6C2ADE671CEC3CB5CAB903A657EB2D70C943F976C110E46C5D9D29BC00A875F27
-38E5D22496A43E096E009C5D3CB724B4CABB32838DBE527F83B18CB457E57B092C302EE557FD4F00
-DB9C56E66C9FDF4EC9FFAAB85F60D02BA79694FABA476A199A0331C30A78A92E10417BA236E23364
-8174C826331DC1BAB87C5F95027846130C6A2B4027930EBF9A97BA1B039D386FC51C302648E25980
-212F6A582CDE2778C677A01FBFB3C5D1B8A374ADAF6ADBF7DC94075F25ED66D440B3922C5F255FB2
-3FD8F6E21EA65B1D93BB225684B50F11310E242B087575973345B229BA62C1E2C35BDAEC04D10148
-F5B2F3BCF7399BDFDF1F3F79119714AEA697245BC647316EA157484ECB951BE367234FD02E8B1F09
-1AAC3D29BF282DFF4011BC0CBA8E55234D943DB3017CC7A766720BBC29B2D097A956C0F1067177F0
-12D42ADCB473CDE8D1BA35B4030757FA1D8211989DF3BD22CE5D501C21EF8708FB3449DF47D88650
-9FF7B59B76C0DBAE443F336FEE2D615D7EED1C284F14335BC8A26BF4621E10DE9611FB2F1DBD52E4
-B7565D8C65B54EA36D508BCF0C578A49A2665227CDE1F9768EFE847F9D94F1BBB7DB83701C232198
-5C7283D47B2E40B27A268428AAEFE75F6B2F8764A8494E5827573758CB9CA46FA93208836BCCC8B5
-564A69F5AD882052AF1C1417C3FA7F580569528682C77080F3688B65E7FC24D2A3AEB61574B4A321
-5927281544DDD7A6EE0A3E9388F8F631CE7251724DF70726E5912DDCCC8C652DD6C9608F8462303D
-867F589DE0F2F71711B35142EE6EF93B64D6326C4DD7DC83278E057100EE772082E6BA368ED91A55
-53ECFE2293A481E42F83BC8F9148C70EACE91F7B7D9CB8A72415BDB3AF66F68EA733A17ABE9DB005
-3BF148629132969589F38D30EABFA96A01FAC72650B5A6FF3935670198A1EA33810A9B11E330EB8B
-451F24F93544263436F669AB5A90A53B16CCEEAC36B1445574EFA7E802DE73522BE725E68704822C
-B7D3912717333367895BBFBE06966A5CC653AAB5E9B3596702086BF0010085B900711932A95ACF15
-CA4DC45A754EA334E9EB84D6FC8E3FC4F897456BED64BB93B593549FF0D5352275D8E417172A6664
-C5E0ECED1019494A7ED49AB0B965BEC1A82E5873766BB38D7D856049CCE2FCA65AAF61E961B60634
-E2A69EF059754C9D8163D87F928C222772D070D83FEC6FA5AC734AF65E40BFDE521F7D9CB1650FDF
-64754BFF21EA3FF0AF7611A93D525EC9B28C51AFECB04E7FC8323DD6C9B0D8539A34FC3CD8CEB795
-8E8EBBFED4313C77ED469C199552A9FF70BA5423B03B6148D4EAAE17B71C5B39DC436AC53D6BA8A7
-AD81AA8B02335A8B2B11E9F4FA913159A725B8AB60F52F1A2EA50EAF4D56656E615BF382CC68A690
-BF83DFF24FE986570ADC0290ED1A37C1C2AD469CE789E0EA0BB5CE01020100E729721AF3B5BADD33
-A2DAA6C33EB8F9064F5292F715F820B4BBFDD56F76D42E7A1A068C1CBDCE4640082F6E7D582D1939
-990CE6EE8D270015A2C461798B37DCB5798EE9F7512168B76D26C28BE4A49A1BF96C89D235F21A1D
-B6A96E5DA474D0B19B808D13D7A11BF39EA8647499C410ED9894A1ADF33D41B6FC2E614D8087F4C8
-4E437B136F3CB32DB8393C49177A0675A0C9E7EECEF448A97AFDBE840FA01FC7E5F2E8FECEDC1884
-84C312E8635CD79195475DDBFDD4D38D5A0246DE2C7F21608F8D2C0DA1371D302E941572E5792A3C
-F4E51A33228B93A814D03FD4FC223C314CF3714BB3A34BD4F7ED6348577FEED9DEB082C4049E57B5
-D3CDB7F26629E9F3BA36893E09E3C7463D02A22D7056BE76B87763260E46E48BB832B7EE13F8DC05
-37EC8E81E9BDFEAD8C27EBDF1AD706933EFD11131E12814F236EBB01BE85B7F1B2D627413B324918
-D247604F56EC128909873FEC3857028BEF76A3494364C2A7002D104D486236C30B48E2B75D851C34
-EA50BA7FFEB4E19190898AE21768C157C0CAC628A2181A32796FBC1A7271D2473CD88E5395DDBDB1
-FC3AA8DF0F3D588637F19A8B833AFDEB5F655A8838EECD684E2315B72C75CEEFBCEF94344ACE8D6A
-DBE355008EC72FE7CEEAB01363A895F4E73F867639BE0A0BE67333848816B05B419221BE8F9066C3
-62C23FE85B7F392930BFE4C12B9526FF2FDEC38F23A159ED61A0718E7115C24597D849FA76369153
-54A40C965D4D72EC94DA61A03766AB39AAB684E134FD1407A5B1B19BFEBA52AA0DA5D99CBE5C82DB
-AA663711E6DEBA180E1D4A39C320516A4350D296BC19BF1BE054859A0889C7E9727A021F3176FE62
-0FB0C837E4141FECE531A950C03D319E3255703220B7185BD20FE5DBA673F8129AB211EFCF36EE39
-4C7E00EB0876624BC840FA86E58B2F584754CB6BFDFD76810E300741EBE4544E5AC17413ADEB21C6
-2F66CA4F075C32381796BA709782DE34A675B717A2C7F6D88104CB924FDE5DF775B4F0B68E0E2E5C
-2F788BBDEAF06D8E1FC2105CCBBD5827C0B03FD6CD64F0D073F3192D5F94839644E5EC6C5185BADC
-F04112A65F49A8C83174A9AE958E76A2F5AF469E8B76C833782C5FFB8BD7B1BBBB3EA0CB7C9786C3
-BE2ADE5E7AFA8C8F20892659A59BC421E28845A108E34EE17864042EF587A6D67DECDFB3F510EB40
-D2229585347A0035670FCC76C2837A4E4D68304FE113C539B35C1F0234B5079B8E32934546982978
-C5E4DF955A454EA263C3CA5D7101F31A318D82A3F9FCB5A8AFD7A65209663B0FC9DA400B26F285EF
-46D0E1EAF8ACB1F1CB805E3986D04BC585073FC64895E4DAE1CCB749BB439CB32EA91176D5C39C36
-50D10AFB9C9884D5FB90183424CEE67EF2175D01D2478D67511EC9F54F88763C152697B06D948BED
-49240096EEE3D06AB4575E8E8B2CB8263B5BCF4FA1608720F52B675309833071879DF52C3EC2871D
-20F398B5CAC8F8A4D41D0F1D47584DD90DCDAEA4A1CF160C4B3BF1AAB890B5CEB6CB3488672AA68F
-BD938281DBC1D8BCFE92FBF514DA5358443CB6E0147254E91B38CE6787B2BB0DEDD2D38F5938737A
-977B5EA42892520C58F8FBB53C994B57382379E9490F0D6970B980E1BDF8CF9F4C3C5E0A18F66E86
-EE93FFE7FE546DE50F41364BCB3721B637072571FA1779F1D672FAD260C16D7F13CBDF3E4376E7FF
-56D2A710AC5AC35FCBDBCE2C9C17E523BBE6218617B13C1FA6679B308979AE7C61DA6E68369324C6
-CBC7DDEC364E5A86707266C0B459EE7B2C03FE584E529BFFDCE98C90A2F3D9305AA74D3ED8430DBF
-3A49FE2ECFD9C4BC9FEFD22618FE9C8A973AD072AB6F713E4DF02DCDA7AC5359B2D652013E131B76
-B3ED6C75FD53BA58D862846264627F6B9E70D8800F6D9B32242B747A67BB2B45675840D34F852AA8
-062FA6B01E31ED24DAE02F6CF788A17F7B9368175195DB0072259CCE0FFB2C1035C1D26E1777CCA3
-D56A827C3242069E76D6DD69B653768614B9ACFF16567FEA61508D51454BC02F6C60F755AEF6AFAE
-3536BBFA1823F8E1A53C41124DE983E51CEC92AEF4F99785D554488A51C20885346D1F761DA79017
-940A0C557D93F1DB6B3D00FFD61D08E96FF3AFCE5FEDF545CC9F47A2B1BB26713431D6D1E47FD6BD
-6E3C668B0368241F0EBB5FA9C991DF79890E52E83A3675EE699B61BAF869DE91F67278F510061C6F
-E41DE2D883F48CD0E068E2A652B244128D82E5CD52F35F210DDAE3054691ED55A7D99088AAE8FB04
-F525C2084AC09F5EDF80A4EFAFE981F74C0DE9D194320709B3464F3FF2C0F6AAEA6D973D9C323F53
-DE3D741F698FBF01036716BBD62957CB32CD81D3A2674560FFBC5BDC5C6E4F547E589AD0B1CFE14F
-5E17FED1C4A8ABE4E67CCF8A49F32C4C6044F1431E1CC382E7758722A6D0DF9ED23E51F8AD14D11D
-7B6428E27443715EBA4E9C05D6F238378F9498AEF0E7EE4FE6856622CC8E6ED141EE5F109E343CB6
-695C4BE1E0F66601C27975983BF557C04ACFC19227A1AD7E6C44C00529FC7EDD7F886D24B7E029B9
-C395260088BBFB96972199A7B32796D27257DE83A7402291C14FECDF7998C5C96B1EDADE0280F856
-8A8F5007852EED303969180B3329917973C2D32C080C9765B6BAB0673BC7ECFDBBFBEA980C263843
-39B7F1052591D91667D4FEE413AFC23DE2D4B9DA742F4269C6C939F5FC32A38040730A018155AD73
-3F231E4D5B9D01C03A58EAE7B5F590CCFAF25EDC8552CFC8D95C60EBAE1837D7A97CA137E9D4A4BD
-2CD34AEFD68D64B3F4F62326AC429921D7FB3C235184FE0899690A0B775F1A566EC29D5830D32372
-6526F7E7F5AFDD71B77E07613DDC4FC63EDF49051AEB59E6337AC0A4B6DD872E776C9CD0CCB86130
-5322D816732124F5978A86C186BF0A0F88E733CE38E4D7C1BA5378C5629B1EFC97806059990ED42C
-5CD183BAD7E94070E4058569DA2E51831FFE0D080301AEAB4350BA290318AEC582C78D05DD92E5AF
-B4424EA808629BC972E68F4FF2489C245593F07555CA6A2B25964794CF31CBD3AE5C229AB9B8C298
-06C01D116EBD0FF0F159ED2D3D7DFC73EAB4910BFF5B0B0B587CD9EA6E6FC45D63C09766224D8346
-1F0588140B258B1729F70BAE7962189B1554483392988CF230AF4077193E53330519394DD99BA135
-6D4730AB221DC6A66019BFAE564893DDAD7B177DADD16ADD21D396CFA6C3DC818052E2F71149FD59
-4A16DE0C2FFDD366C99B486C55A6E991E4D22CCB15843F0C3363676AF2F5B2D1B7EF66CCF2F12DC5
-0D63776BFFB058D70A9C76DCE96C754872D72C82A0C33F90D49C935402CDD26B6D743B1F43BED5D8
-B539424849C1495DAE73044E885A7D0F307F1816DF6244A6F2D97BFD4E200E93F69B08AF39EA21E6
-E347A47CEEBF803F73B978ADBFCF056789BB8E6E2563DE87DD9A8C877157B934102DCEDAC54D487A
-1BB2694F0034093C48F10A17D32E2BDD0C723CAF59ADDD1BE373AF8C9BEB4415AA5AF36310C31F24
-354A53C0B962573148BEF91D994FE3F3D8450DD4D686725799F53C373A0A3E3C060C2E1A3E800504
-9F26D716E1F381B9F83125E4683264A07E2D8938F605978E2513DD2050B3D8A1012797CBA8961632
-BED260916338A812AE751C7B657E086A0C7DDCD3BFDDFF3E48B84751925736D1310C4910FC114387
-F3ED7FE163F91895EBF55FCB425CEF5729D99BD8F2C072E36C310523E75CD8E5DE49C031C4263410
-9D56E91A46C8C8E89FD92012A00C33D0DEC52597B5C6933291A7BDC5CEDA95DCDA5600F9AE1C8250
-54E7EE1067458CCB66610704C58E4A4FC0CB5FC933D0322A716B2CD430A3AD48DAB3D4CBE9D23F2D
-092368CFC4E1F5495C133A92942EC62118D45C17723646E69407B4A89DCDFD2AB3FFC099A21D9D29
-741D68270629AA3A414FE58658DC9170C247B6E23F35C4BC5FF83009F462F2EEF4DBAC5FD158A658
-57F9B6DC1F5192DFB169DCB65621CAB2F1B07BD22F4155A8E9E2B6388D430FDE5EC1C834D22EA035
-C52E1E34482EADC36B4CAE902AAE89A7284E62B3C84B608D6BD05F75BC31310B2DD3B2C08A00E073
-7F104F03A41989D5F6B9A2C38B22F1D1803EE5D7A4D8DE44E4ABD496A1DE0C0E12C4BC96D0122846
-3F0EA9CE9509FEE987139F3DD3F9D0DF4313F555BE85433718F6D05F197C41A9D9C7A8B0D2740196
-82D49F58DD5F66B12A6520D9F226D1DF1F1B65CDFA261F980CA25A92645B86B64606293F8BFDE364
-C47D2AF2C709BBE77A70A5712F2CC26F3D66F5BE2C307A48E6F887F681D30121E32BBD87271B5DC4
-615D28C309F15AD263FB37424E56DDA6E17B998B45BE6C7FC6C28E3394A8764C9EB2DF5C06626593
-B5C665D550D4600172791CD208AE9F37BC082B0B242B0A504B751B18F4D7495172B697EE217834A8
-A4FB7CC16D6F9E8BB400BE8AEB0850960283DCE725249FCC4DE97D9886745AB6066C3E2F64DD8AB7
-9AA11667F11188D7965DC11EB760B772E282DBF13249F31986AC6898FEBFE23E3E8B8D2C33E00EA6
-FC493850ECB2E6D831D1EFCA3C2EC8EE2E394599091ED58BEDE97D7A43B6F739EB0F845EAC1DF6B1
-EBFE876009CC5D804B15ED4B56761B3CE1AF59C07B49DC798A44532297AD73D5101ED47F36A3678F
-818297CC27F6AAA2AACCC9AA9B6F5459911D8C56CF499E390AE607F3790450B2B9C9BE0F006EDA0C
-715B5CA0481734CFB0597478E7602B0D2C1E4F78F03C68C17C70E4B42D7D2D3C95CF40F73488B371
-8E2CB05A549944D86944D78724E266C3319AF89AE430E777E95F0D792B1C654306E421F3D63A26B2
-1E74B6E8B21B2E2B9DC596D013CDA16D08E65E8F24A84B12B2BADC653E6E1110DE2E709C1C1BED13
-707B70A421B384F20CA7A9A9D20324DD383F28B2D3C7A9C53F5D4C6B7C378D26DF11CF55238BE1B2
-4FA70DCC178DAD3D35670FE4919085EB1CD905971D76A368FDFCF9D2F0A23739851A3A6D2E02D65D
-54DEE69ED5D81315D3EA5E356F94EF256DD267FD1E1A9EDC9CD63E743F299BCC4A4506233B8DD765
-2CA067F741603F93250C087D368F9E9CC4CC1A6DED567487C05BAA992B0056A77F630A72008E3946
-15A9DB24FE56A956650EC9DE90A6C2259189440247970541CA198748928215C0E132A81AA13208D8
-63C1FE817F70CA573B54577D10B73100AF8EA088208A44FB92ACA314AE5879706180788C17BB1D0B
-81B6B95A1C4E0F9EA66F9B39BFE12444A6446691A7BDB03E0F03D9F07A10A7598F2166F108529F34
-CD90E601FFED3479ABCFCBDE8F051C348E48C61D95B00C59EA1287423F05666C3D36288844067E83
-E14F6B5210842C742B89F13ACD126B9FC50ABE2CA7D7ED513D43B6AC7F41EEDA416BFFFCC5C844AB
-2D23D4DC09B2D510504CE98D02E72020D9E669DDAA344C63A1B75632F912A1C0DA3885DA4AF7E243
-E4A4C6493D6595BB6D56B0359106957259E59E336BAAF35BD1CEC5CDE735272EBCCAE8D4904AEBD2
-B32610C6FEA2B69941D6542ECB44D71092A3CF067708A3D087AE99FF29671AB7DD8758759B971A08
-AE1BAD78270D2FBEE37AA2DCB119D72F6C7B0C8509018A70D0B0BE2C6830EF8E0B24B1CE1141EF87
-3A4D7DCC501F808BFD94E4DC0F2915AA023076BCC8006490A43685EA25AAFC187302EBDE7FE1965A
-04A5A398985D29F08E085127B56B057334D88EB638A4DDE64AFD204974C3939536B1B66A54B4DB81
-151853915718F70813F096CC1B0EA25E363B49264C2AD17158A4489F91453FBEDBDE15D7B74D7F98
-E81DF23251785D58295BA297F295AA6248A912CDD4F1111E6B628EECBB5139709E76EA4AB743CEC8
-26621D08E6BC64691CC90B3C3C1778931A28D3D5B1E20E96C643316613FC487C9B604C43463FA453
-3BCA1236286E6F5A6EEB2F1D9C34BDDE4595495A365F88055D9268541CF1654ACF478D384A5496A8
-772EA1402751A093582A6625A0A44816B5FDBE166835D598644296249B92CC90AA3FD6445C9A19BF
-27F59CB0616C7306070F33C7DF4E1DE64AC8C5BB2FFAC1EF2B1B30E5A0275E6004CF64BBE2C6710E
-DCFC3AA4ADD60106334708862FFA6652825BC84842736E47AE6917180365C75B27505EED3C6108E9
-898A780E20C3F606A860229AC46D0471ACA0187D6D539A1B8820F620F72B41AD1D3BF3834BF48CA2
-AFEA8BF535AF74C4562DEADCB63D2F5C7585722B77C989342D190FF926C8A5263B4F25286F99CF6F
-C62EE6E2AD61C82B29D82468AC10FD27764278E5558CE8B41BA111CB2F040914451A480C93084237
-CAC8F66BB7C6689F340B8ABF0150E06D5B1177278A4C08742FE22F42C28680F190900344ADFA486D
-59718C25D37275BCE4DF981AAC35D2C7E85C72A0188B8953CFA516FD545AEE0BF4B8BA301CFDE214
-4241FBDF3D204E3D2823301572E23F204C97305A82401660E12926EE7BA6EA1A81FF5C007933AFC7
-3266FAC4C134ED818A48E7DA01C71A46335C845F9DA5E960B25339D551582B375814148D94CFB781
-FC56093827B78578A73D4FF67B6B87F40CFA5E3F4325D9108CDB64BD06427B88C84105187316FA29
-90B4E3E8EDB6C78ABF164F4A9717D523794B2FE772A04DABBE688CCA977090979B5F47CEB90A1DBC
-167D305EAB231C9F4260C4AD10889CB785169902FC0BED78DA15B8417453BB65856EA0BEA5245BA0
-573F623D215F6C0CF801851C305B355D26B52B0B343645FE25C78A3526841EDA480919A1BBE5F56F
-C10ABEAA3E1FCCA7C43EE560F067F1AA2AFD642F769D1ACE8E2AAAF38850F0D757CD808C921D716E
-96FBC07DA7860DFA70CEAE2888C0ED3CBF9586443532B68DAED9A926655C157A416C383A53D8F283
-2A4E67468112A09ADC837ED8EC95F70852921F50D4417239FC42EE3624CA97F682745CC5E76CC7C6
-7BD99F2180F8C0B7FB49539C8CC474C25C0DDE491671FF329E51BCFA779346D4686835A3AD6633FC
-B5E0F67E0CA9CED8F215BEF4D240453EB2EDD6ADB22278AA5B985FA140C9834D38753DF2014F8C0E
-E6DAD19E8FC54C03C1F6CB0F858986691D99592562CAD95FA0A5B2ABE4A8B54B457D42E8C33A2D19
-51C0419A72FB94FDA78ECD92BD2A1416459E9DECA9469F35E4C47DB531726DEE8F203D7042EDB32F
-025DF3D582547BB1D45F7A5B70D317DF4EBB16E36B0D798E0932FD2A85B04FD67143E4B287A50416
-2C1F5A037CCD780088C5476385AF8168E12D97D44B0630621759173C8F1E3006B5B1C6D7138B7EEF
-C3CC5F54E24B2C3CA7B41AACFD25E554880AAF406EA4C3C6E21D3B550B040FB1952598A7E8E6488F
-E38288B2AEB6C4718338598A2BFE4D2B9D14C65732DA304C16FF3E1F8F03046EF095B65FD609DA87
-EC24A69278BFE65C905CD0329F6A486B8525B7EEA4F7AE56C2633CD83543269E8ACD6D71F500D82F
-DFBDE7F7F7B1AEE67328549232E26CA55085B6E84D9E2E7F74068F93A90C4654F2F396E57C5F76F7
-E61CBBE523DBFBA6E76638BBA3064DA025A79E3A294FE7F1CC28A3B4C57DD6FDC48E541A85534B25
-E1BC11B4F78019457239EAEFD4BE9007D205F1D985F389DB22400B279C10948551A6B4A17FBDA0FF
-C9428B18B43DC76EFB15FC2182216F1B60B4E344A03AD6C00F141EF99F89F24C819C3E32877A927D
-84C2D006940F39CA8B71E5951673EA9BFD1749923219DE38929ECAA9CE43B06CFA7DA1BBEDFDA56C
-61FF6C24F40E59B13870D5FDEB82D981154FAE5D6D5152DE69339359461A41A9713B6BBE47E868C9
-33CD74C75DB71D13BAE4DEC85E02FAA14EAD6C0A253B16C79514657B15E68CCFF9EE6AA385CFF9E2
-C53D9AE40F85C793E4E8FF50B2B7420F4FE69807BC5F37C3E300E6B3C3549D1D3246A2E70F091054
-1135BDF805E0A698E236B6496702D061241687B7B8D1A0E517DF0476DA09D89667A7AB375FD2672D
-CBAB8124E511502DDBD08BA04D941DF1CEBDCCF7ED48405CBCC33774A68C5212FC6F132641FF413C
-984F8B43BDFD7B1A2A3435F15AF07EF4970D3E4A0BB947C181E9CA27CC14A35BD1BD096875B45873
-8CA244F88C28728B74E25CB8C4FC1095A56CA75E4569AD3082EF194ADD11350DB3B74B96761D4538
-596FF7243B1E1B724716A144106E080D42036444FD472998460CE9ABBD05B42AF9389AC452BDBBA3
-A13A96890025789F16B9D92251FD3B3BEB2C61EDDB370A20456E3BFE5F4039E2557C451C524F8087
-015BAF3FF05F51869FB97512968BDB2B49589C1C7AF1E085250A47657465F480B7023E24C76731AC
-0EAB6704123D77977D3A2C4C56B691346EBE589C619C04515D34F81FC6A17527D5D8319013C5D4FF
-27CC3925E24C99231AC7FB9EAF0BBA482D3B75807AC85D03CD09DE5D9AE0B07B7A813F0449786500
-0AE8A7E00080300F0AB8C399057EDDBA273DD2E1B2A0DCEFAD3B332E6D4AC1FFAD846167DFD70E03
-46DAF84AF292D4F424256ED5AC4E104F80697050D50844A708EAC9E7F7784FD01646F3BD0C595CA5
-1EE6BD607D254E78ADDC5E15C3B6AC4940EC865A5C23105B6BE09EA09F2C05D6D76960A843B81EE4
-33977FAAC3CBDA85CDD2F4DB7C28293A77825635992AF8F3B38B4480D9A139B1662345A8ABE1634A
-77496C3F57597D2985E9E54717AB2E99CA35789441BCDDEDE9A9E2106B401D9684ADBEFE40D607F0
-75C179E9CC03E59E65430DB70B441D43DF03F2AA6FF06F224B6E455B01C64FB89EEC9103E48453A9
-749B4D602808C7E408A8903091D85E06AAF635D0D529C3CDD1B8479AC0F4208C284BB678A547F2BD
-77BB17C86D4560434F7AD1937760A6AA55B614CFA9FF8C9C96561AE6C8F2121C4E20237428BC51DF
-2099B6C49E3EFA18E6D439E6E6981E746EBB1DC461259D8EA0F8099C47CCA27B2D982B72C9A07CF2
-1B3C05D6E26E6E286E348B8944078E24809F9C5F3D014B4CBA02533F5621BFBA1F0EDB776C634746
-703C9F73BA89B1960A496420C68F54E5B901A6D733D7ACC79F275FFFB253F389AA480084468BB34D
-A1E797E43B7F6E8CAF5E8C93069A3A2730E57EC39B677BB73E3F07C2055599F7062E53B37A5F0099
-907D2ED87FF7A82C95FBAEB888033BDFD67BA3A6031A4CDC56CB1E4CF5B06B46E16D988BECCEFACB
-9E1C037023D7BF5CCF5D65AA66A17AB361BE7981F132A578F3ABFB97960A6034F052D9D5AFDC0679
-782EC90F240F943A5F9A3D969ED7399254FF67D89DF668F7C56FCEA1FFDCF20481474AC8495D3AF4
-B6D7EE093E369C057F0B70858220693B398ACF8E8143558132E4391405E30A73937C53402E459F4A
-A3539CF7A99A3F51C0307D045DF8B77757E92EA2F51BF0BB4F77D3904DD355665870C2B59F1ED7F8
-4FC71FDD7F0B6C5D3182DB77827CA6A2060D2B8C83C4EA4A432EF43A4D0A952CC6CBBE52A9F0CD66
-1A538973DE41FFE9C5CF55F2506B9EFEE51FBAE5E63BDCF5528499A47C031163C88D3022606784DE
-2F46A9C9235AEE3D4F71D4959B0CFDC5B7E78C8C0A8F9DC99440C2263DBACB343C5C648577F5610B
-50EAB1CF7FD02419EF3941C7CA0B0E64EBAD4B2CB05A0793DBC38F1946D44767BD287F5E9779C611
-CA0DAAA1E7393DBE0683C8D3455CDFEBC0E64B54B737E298DDA605227C0C4BBA87AA3EC7FA6EBAEC
-39E6EF2537D5974391D31739D9FC42983D81AEE44711C823F35F8E2321AC74943871739D2DBE9748
-FE68592263E7713F27E0D49B9B5CB7A4E55DE54E6B800D15856450FFD3AE5F287B12AE4F438B20AE
-9E27E6CAA00F3EAEADBE08432684FDF9931E925544A680182602A3C1997DE5D0630BD5A010535E66
-E1C123013D23966B3545C7431C39B97295BFA4099D14461004C42C85095EEACB9B47C593BC6DB863
-533A8619BAE09095DE8ECA432D4DDD49AA600D277E75DC3F5C6631E2A05382CB007825FADB77438D
-CFA78E252D79B6A196D5164C2FEB85D75ECA25FF80B1D97FE10E87960CA0FC47C41D3A213BF141B4
-8BC3AAA93FA86245064668394665BFD52D12C3BE4CE39EFD8111754398A944C3FD1AFA98EC337BAA
-AF899D35E804CF416AD7FE45FFF13FC6354007501043F98FE8428DE8013901BA6A28711A2CA85A27
-0BB135B72F1D5026E8217581860729E94F2F1878A0E96C59E9F62714FB5F8F25003DFC7347E99007
-8A9A331CB3A6A535BC61866F02513DEB982C4A13ADBFBAC3FF70A7335F40D5489E48E5EDEDEF1619
-1973D932479C62183B0E25EE8C4F76D4F1AE45DAEA4A12AEDD9EF81D248E8D19F8C8A5BECDD1EA1E
-98783EB7A38149170851B1942C96C53DE06DEF80913BFC04E539EC67C110498D15B78268853E5C72
-F485F8A27B768569E54241F6115875E2973292CF48FF91D45EBED627AE9F0766D22201B20AFDD40E
-5B17CF337F2999E0BD15B86E46EB3C18FC12B7DCADCF9DD50C6C7E3F37E615A892DB3F57E250A072
-A49F7277DD6A2C8042698233D35A699B17ECA5DBDA6D250ED4A16FCC893BF0DC2E33FB1EBD7DEDEA
-3C1C39603C8B7E1A5A833A8FCDD5570BD088749BB232615366687962C7E56ED089CD7B092505CAFA
-5A80F503C4CF337F07ADF0D106937E25670839D491F7BFF7A523DB609D126328C16113ECBCBF9C40
-04904427A108618AE5D4ED809F8CCAF72251104C94EC5BEE21F91B179D31DBA79CEEE5EC7FF698EB
-84AB1D2D1A624F58B3622A78844CE51498B2CEF38EAFE259D22C7BA61104651A862008BC1DDDA58C
-C45F663EB26428DAA85E7785363A69D2790996EF5D9621D53042F42F794962FEA46E46F37B8AD1FB
-76FC8D5CF2146843F8CC625139C75FB42DDA71A752BAC48F294E4C0C8289FC46DA5EFD9C91BDA6D0
-27518B7E81E8B21F755A9615627D5812ACA674D1527A1185EED4E3C628196E7D0759B1CAE6B9B7E9
-01E9599A65230F1EE469CD33B9BD9C104C44E3C1AB966C9678BD0AD78111A4E0F2D07A01A038CEDE
-7036D0534D684A1562A17AD64A00F279200C0371B1CBA61747671D2A21D3F9646CA290F6B82418A9
-6FA177C6278277504B7FBA936325F5FA124AB018A15DC18D2C5E8F93CDEEA52BEEDB78A57828D81A
-3E6C38B9FAF3DC4EB7273ECE3EA4482A1C6242A335862C2C3717F9C9ED95F77B140C4E1569B2192F
-C7DCF702D0BC9A50428EC406F8BD0CAF886B4D979320D3E429816D88F7C7146D960AC12E70F2CB7A
-9F4E3E366665AB3F1B4B6440F55EEA26DC9EE0096BB7763731740A537766490C8C174723BF0EB40C
-53701AAD12B21D436ADCE22203C1053A9DC4E9F17AE617888C4B4E6F3A720E4E6366BA628221A387
-D8AB15E04AD69387C310D3528BD2FAA5B22BFF3FA494F5FBFAC4F771C9C7402B95580C5AC4BB3AF6
-92A70CB2C851FA5CF1173EEC3EC29B5A05A0B728BBBB51D3B7AD8B0AF17A1563E82FAFD93F8B7118
-1FB7AFE352874F4EC6D334AB6747519AB8E847B7BCED33EB5458A828E074E74BA621BDCD03FEA604
-7F7B6ABDA01FC7514BA1AFF0D4D0C0CB8F4E42D5A87E395D9ACDD02CCC220C157153422018725846
-009A3ACD8C8CDDB66BC6836B4026FD9F526AA275D06C813179E5924F26A25094E7BDA8BD26AFC4CE
-B41D8964D4FC4AF1DFB0595BC5D6714C32F15DC7194E9A3A73013C45D8FA55CC0550A12D9AAE8E9F
-F199FA28EFC2426D8D1DEFB93A65717AF3EA8E2D5B4AA8EF0EF38E9600F7D4E7D9F1D67A2E63ECE4
-789FA74B159BFE2F91C19B0378BA52E93DF12830D99553B6618645E26126842AB70262D96E35E5E7
-50ECA0CE3458B3E51BEE2F21191136DFDBCA39BDC07939E521E4F492F392DEBD029C1EA237BD89AF
-76BC89F618D530160AB16269FA6B693CF14BDC4EC7C630025703C5337F61458FA09104EB15C7CB20
-AA4C9BDB7CEF3A09F25BC7F3149951A7CD75372993B80CD2112F7674CEFD6AFA764AA3486730D2C1
-897A264D82A91709FEC4A21E30D812F558451804EE6F3DEE2C4C437846BCBDA07C5B6CBA1D94AF02
-9163B7383CAC6E088AB1DC14ED3743EE77E26EA7AD3119A76C0B5F925C4DE305CD7BB3A09A453947
-5B9BD79BE28FC462D8718CE05F9D94CAF3387BA55E6E447BF81A9EDDD3A34E17BE66BC52B0C0BB6F
-86F6F008829173816D205182ED2ECED319864A796AB65D4E3950288BADA94FA32B6F453AFDFC6C39
-A4FCFE60353A64627E2057D4B379D3240012B3BB0ED0C7876CB83C1BA5EFB6E2A03F340C2B576731
-F848F762A7E1CCAF267EE06D621BC33FC245D0E1547ADC12CC0EB58B26BABDB8EAE9CBFBAB93836F
-FF22BDA1831DD01B7346AD377AA298D84628BF1C07433284B0A90FC89F5AEB2651BA2CEA405D4F52
-DDC0E74B871D43F71EB4ACE0D2B401F9348EAC3A2EF0AD295036BF6CF6F870D58E00B619D50EA7DD
-77BC28DEF91D805CD527DCBCFDC16C042BF9B874E3B1567EBA4C1E70744B9E7E5BD1FDA6A5FF6E10
-1613FBE58DC46CFAC1A65ADAF65E49757E9304E2AC9A91E0588600C709A61D4231730073A36D473F
-518A145E141D0A5A494441B9EA99AC23F60F54F8127B477E1CE698BB4129B4B1DFEEDF10D9E665C2
-47A62F112F5CA30B0AE5DBF3E495FF06EB28EB438CE8AAAD84D5F50FB56A3AF002C23BCF66ABC270
-7AC233FC0F2723DB99D2CFE7D3B3667732A531F5DC315CE74EDB9050BF75D29E6430F57CB6778B2A
-CBD57DFCEF896E6766C8FC5C9F9FBD701CD62CACF33EE0FC95E78DADD205B5F42CC63024624BAA0A
-B4DD447832B4E1DBA77BDFADD223989F8E958C8D759AAA37930664C6EFEC708116248A2A7AF3D656
-DDEAFD009B7F5333854608E67E5E588A857167ADF9225CF6C641F5E19C3E08678A281199EDDAC831
-B57223B1BEEADFDCBC8F6F25D32FCA2336C808162E8F381656E847FB6CB13969572425AA05AC830C
-33DE6E030F86A3A85D2A66A77F103C7042C97205526DC882EA9A00EB8BD5519847EB424C15F808A9
-1652A6CC89B66A5731126DEBADE123C63D88A2E550FACDEB3886FF98646000C64B3A91078012CA30
-904B71737CEF6BECABD43DD702880538F5A70085E6CC6015D2163681067C3D513A8C66032C34A0FE
-17A58AD4BC97CA69BF41F11D5E910FDFE9729652D3EA21F8DD8CC19160A8FC77573B1E9CEF4E790A
-79D8AD6723B6804E9616466C935303E063DEE29CAA6C3BAEBF278B818C2EC2F13ED645AB452397BF
-00DB8B26E115026E256746CD0C78A959364FDE6DEDDCD0F441A61A1EBA32C7BC172BB09512148D1E
-BAC9E791B7D51B71CAD2DC9B83B2F99B3726607D9CBE58B499A13753CE87FCDCE21C0AD0528ED0EF
-B9B2C927F57C78C626248AA2B835A0791244C5896686A66173EC9F802C4C633A42B086334D2A4878
-0E53D00809247BE64E529F96AD2F8B3922A6097D414DDE1EC76F9552F9B8D58B8E34F359AD792B2B
-E50C26DB05035E7497162E7C49C38D3CD9B98D620AA67492BE5AFCA3A81A7080185C7F0B5105223F
-1FA77805502A2E8C5FEEA27699858D84A95842C5F2FB68686D59FE24091FCDDE139B6463BC6C7B1E
-0E90D20A83651AF00C85797BB9F53ECEC1675C7EE636D0D9E77DBD8F89670F855EE4D4800FF3F695
-0EFF09BBF8A0DAF6B8242840CFA5BA73BEB95115F4A78BCC02D85ECCE0C0F2EF6F328AD1DD6CC049
-5A3315B414A4D61DA50DA46D7ACCEFF6EE56451805D26B0359AF193531F95F6589CEAD6FA041AF15
-3067F88A0A2FECD135C56682DB2B45A71D1FA737C064EE9A4F404BB72A70B3AF0330359393247EC7
-81512482579865240A23CD8479F21C2C44A119EBC4E81B308DD8AA86E60C3DD8ADA50E0DFE8308EB
-1A7F201EDE8DCFDA405AEFB47E0E6CA7DDB376DCB21D37F7ACC4D3E9F26B03A8DE0E8940CA3A9E75
-963A389DF8038D2C486072F61C0CEAF500753C7A6352B1CD0338D9212B42A4D3DA23D5BDF44C27C9
-4B88A415A3242FFE2E1B332477A21D2B9CE075EE479C6E657A4D8874A8C53964229310E01ED4F3C6
-86FEF5258EDF3B464DD6FFD7F1CAF473BBE722D60FB14AB4918E93878A8AE4773930B8CEE110F476
-7F42A52D9304C55BE12846C911A10AB9B2E036BF9DFD597F5348D42233315FA80D0F563C388BC253
-2103F05E90DBF1923F229F980A2F4585C7A373511372D07DCBACA583099EA972C03E5AA67E663882
-6DB134564DB993CEEB6E7A6659C7C5C05C310267D5F8A24EEC2D5CC3E3F3C808E6D6068D1A57646B
-37FABD98ECB7BAF99E7D9AC4414A491A73CA34C52F394352F6B5A15F0FC4D88622DAC694699C2464
-84ADAC3B1D366AFEDE2A2CD2042C90516A666A19A91C80248B11224BEDDF1A320E230739E755D098
-B6A67315535F4C187CFA67ED817A035056353FC859BF286317996FFFB478A2248B908FF12ABDE705
-402224A3EE5F463DD3D243875C84E02DB968ECA1CC52C75171EA50D6A88CA91327A7AA5795019F36
-C0A19C093A1C9D3723C7568F9D41F2E4FFB712FD47F897703D7A620B586B81936C84AAED61D84332
-B3BEBC4F95B796B93EF7A1F565C494F8A65EDB21E2EE18DC025522EF8E599887CA2836069CDDD889
-88E5862977B7472584303198CCE97EF9F9E1446D1F1F5ED1CFC666A8A0C3A03E1792EFB60A9B4065
-49E0DEDF6ACCDBD98742568B4735A747D8E5DE21E630125AE0C691D054E42199C15B1F80CAFA6E7B
-B2005F374A9A5F9900ABB7409CCD50C3AFCCAB1214E6A856F7C7EBA89BC3291801E1343DA9DAD2C6
-ED075C8ECA1423B43E587AEC67E6145272814B3F191B3C285639F9E2D6E148A02DC2CBC0E054D629
-5CD05DBAC1950400A9189316F0265B86A732D302C5BEE8ED233768F237C62600CBAAFF3A110D5EFB
-6CC7CA3B92D965CA7C5E8D3E64ECF239FE2507FC797FDBE54C1112B28D4DA44C60AB09D994C5BA78
-D663A2591934CC052BC70CD1DCA3325C66C9CB982E2039F5DB70C848D3DCEF655B1C2CD0CEC8865F
-E8E1C0A267BE4F707ECE6F5A3DFCA3CC1EDF92C760439F51AA69A4C1801E96CA4D6EA4AD980258F3
-D15C893913ABCE09101984C61B91D603053E49A97CB82FBA707DAE8AF1D579FD69C8481CB7B712CB
-CDDB4D287BE995E32C02B399602A08B9DD849039B5673F1930BEC7BF366EB082D2CA5DB2385C8CC4
-5BE3FC0E31820191A814EBA7C4F23B1938E6C4D800732787CD2CB97F762DFC85D4B798809B5F2254
-D826CA42B32695428D120298B44CF38494E56240B75DF1E41E46E53C44DC505452256DFEC819408D
-605FF14D6C1F3F152F2FEA96EA0AB3B472D8704E06BE9F8C3E8395CAADD06D6DA033E81ADE5DC3B8
-3DAFF743C6E9E48716003D358DF63CD7FD3E2F727D1F2D0C29962F76D5C95ED44B6F08D052025A66
-5785F264A3D5F5593677B630E628B5EA81FB37CFFD7A30B7FAD226B6FDC82B0878AF4C0EC4F4243A
-807B9839EA62BCBDF7C2E9B30A623876E632E084EBF4A21EDA04FC88A1C07021D0C72EC3E969D449
-FEB08E5826EC20E55B21EA71EA59F6E3B0710B0DDAB3261B4A2029ECAB68C19ADD5174E55D5E984A
-4E5F38F592A302FEE6ECE732DDE841A28672C620CC5D687455A5C06FA9FE688394A04F96312ED025
-B7AA6FBCE2925F3AE559CC1886BEECDB70822E2E5CA3F732A87404B1536AAC469989E9610CFA440A
-CE43875A70CA51F36CB6F629D9424C1E35A88F92D5DA3CD8CBAE6E8425A36968E21F4F30349749E0
-205BFF8D552837D6FC39532525370BBAC833F75F1854C93FC533A4AA53ADF7008173A70D94A4EBF5
-38EA9E62BCDA7C20E0A073BEE2EFAC34D2EF1D03BABD5147659E50B557045B2EB89DB303749B04D3
-F54B43FED612FCC68206E001A7AFE90230D9C12F74A32C7EDB5D0241DC3A5D51481FD7C8FAE08FEE
-263FBCED7C7D911B3A303C835AF5FADFD218F61A9D6DE80485ABCA88200047B094441F7767B97A24
-E8C612590FA2407BAB1E8B56C71914EEF2355DD97CFAFCC192BC06FCE063D3D9D1A629AADC75E3BF
-207234C208E7E30663EDD691043065C9CBC473D97C6D4DD3DFF59D6A9ABCDD4412C3128F603160AA
-D8F81C6E7A4DCAF35F3A99B4EA10A34375B477C2BF846521A7EABD4D28078E9340452A198F3F5ACC
-3DB7E3908939FF6E3709C6A3FD9889439A4AE3E10B618CC92E14B68429A3AD2C80940A1079452EC2
-66F254657BE7D79A2A24084AF73F6DF71FBCD32BF6913A3FAB25F977787F7BB0C3A3E8BAB38D7A2D
-B0B4826950643DD1E03BD7DD1FB149A33862A89226B7CB454DAF613128C2075470E42E70A9444A8E
-6ECA526345AB48E6F5160BA23B5BDDFDA6049EC44ED1461C7E0DD514B16E2FB285F72039DE3C7982
-EFD40D7F6C8E8F4CF35AC71B467BFC578002E8D2239A2FD2C4BCCDD8AF3D7DB1F4AE7F2D2E0811DF
-9D0155BA6EDE50B5F052F14F6AB884FFF244D8806C07EBCB49ED22D85DF696995991A954AA97A1EC
-D86ACD76E061B7541E87997FEF0657A826BD88EF3A4A5920462C6595E7A156F453291CA044CED810
-860C3B0149BCE73BECA713040664AD0591304106129600AF71317B0D2907839CEAC99515D357E980
-B1937B6E1200AACADA205421001F1B2F91753E80D2263C56AA164A74701A8D5FD28E46480B0DD963
-A683A1F355D7FB4463C7347C94EA5E2CA40B60B56297CB22D972C5BB10E56715A955605256C1541D
-9F3BC5768A6F355CD3B863F0FA1A781EDB49368F51B29481CBB41D4AEB07AF9DBE8F52C5D0FF75F7
-FB6431D37D6AED84D78C778871CB0F715B4F07580F23B586C969C81B471FF6A6C7276F7E141E02A8
-584D4B9AB00E7BD643D2C3FAAA299B1F1E25048461952EA42D4882768A70DE46B213A287F8D31AC4
-6D5436F22A796C05D1FE50A9BC2A928066627A0D87DD57A3AD91DB446404B41557D1457873482005
-EA20916BBE46C613F456C849D46BA79D20627B446B2F49E3FA309AE14F8C420CFD94922CBC0FB9D3
-5A0F7DBEF577F1849A1A80E0011DA8AC082A8C6F61658E65AD177ABDF23EE17C8CF0D26B9FA3A6E9
-4837EB9E930336889767A8D7EA3CE980A8EA95528B004957BE6067CD9BD8E02A0F23CC1762CCA656
-D33412FF45E917FD4A03EB6E8C1F43FDB0A8965A33B4FD26BC24A20B304CA817E88495BA9B361A3E
-933717FFB0271F7F70C5D3CBA1E86D0F51BF3ABA194DAF32C35C796627D00C7B2271ACE2463E37E9
-7B3C826CF3DB60028F240F9452CBE08F7EBCC5FDB1BCBB3C327A9F450B9E5671916101D6E3E5E458
-CA31F04D12F592F83BADA2C3683D3886AA3B403963AB5DBE220FEC00037A745839F67A3635DFD3BF
-F08F367482962DED88ECF6322852D643A54D5D303EB04BFDDEE9BBA1EBCCBA7C653B3A613A8E719A
-DEBE3CE1BD7E754E5F4977E863E3C2D388A65227B451D4F3A4F94E06513CBA4AC1F2F511613FF035
-611684CCC461599000E546E4D972CA6960E095A526E4735A23421A4C9B597ECE08AFA2753592BD16
-DED93255A1E33DEECE3C5EB77B94670E8137F2A4A4B98AC193258E7DEA5DB8408A806188F2D1DDC4
-40CCF0E9A6E2F0C78FDBD7B68DD4939D2458C1965BF8BED4564B32462FFF3EC892C03B11D3EA813F
-AB4CFBE8D3016329C5B7E3DFED0F08284D44AA0B7A2F6BC96EA4503E8EF52A64C22BED6B452581AE
-8FF8917D53976471941A9116A2D878FB2541B561767ABD4E31CCD8A590CA03494C62AFFD64EA0A1B
-C779173DAD84999C7A8D844EB1259DE7BB5B25CD023537A474A524EBE4660B22568949E624D8FEA0
-AD37F4CE1EC75955EEFA49C6BF1803BE87E9C9865FF3F6B8525B8C15FE8835CA153D27E6C0FF0CA5
-1029A7A9185D25F0F14D86FC797DCC1F99EE97E2054B9C2A2E06FDBEB8DEF6CDD368BF23A858D9F8
-C1DEFDCEAF1B4A8DE5EAFC604CECCF0D285BE00AA912EAB66EFF4D37AD2EFE34853BBFD87CE09B18
-749B489943EECAE7887B006FB827D10191DAD18466CD1F86505879310A8B171F902EA0C26A388E13
-B53C700272CEE2BFB47ACB58247C13449C6BB9D01232C32517358F1A3DE064D43C18F8827D53789C
-CF3CE2EBE78949A6ABFA1A6B8414CE360A5E22AFB7D1DCE6F5A06182C3B984B4F9BB1A905A9D5A14
-83750A1DE0A857CD5C06945EB7D4A2A6BF1237F32A154FDC06D51A703D44FE052FD3C53E9E8F417B
-35D1C851F9203A8997521529F21AD8498F96930AA77EBAF82EE02A57BC77C792D9F220294B45F48E
-A8FD94E01CD25645D36D168923562F3FDC93CB79DD4760DA0C103C2675722D7A1B79FCB4245ED12F
-A0DB52492C9CCE58B333CFEE822812F7DCA68E802C451B5CFAEBAC608B950386B6C58239D1C62D62
-4DD5D15782FC552222CCA06DDF387B373E32C3C2864C63C768350C37283760F3515A5B0AFD66C48A
-B522EB3E808C061F5CD6BD96CD18C9839D30508E7D4EDB88E8F11E31E10919B16B7971F06D7877A0
-58D8A4944C84FC6CAEDF3341B48B6E0D3C7B85D710E0C35F5B5053CF4B4798B3778CC28B2DC7AE0D
-F3A49F9F3BCD8E95D746C35C3F47D68B8AA35D97AA08E711B5FBE70D1A623C82541EBDC51A827D0A
-69E6C049087AD26F256EB7577F58CCFFBCCBA5A95D093DC29464C9A38DE95BC6B1853963B2DEB0B5
-7AD1248D6F1625E115EEB9510B5772AAE4E3C866657DB0B3BF0E0AC345E116F8D4976B770876FFE3
-748C36165522991F46A36F193DD1A1C94713673C7E4C81582391B636C72DE94CE6254374F99B623E
-5686C13D8A8322E83E11BB0B0A896C6A8C2C4F756C5385CD7017F26D23F7C3EE97372C868C8C9155
-81723BB6B76B4C3CE8998E4FA6CA40B633DFDAA59BA902A4952DA90EC4FC3CF0F2676ACFA7F76F78
-236FA2DE10FD3545357215246BB7E527F277C28B353CC6D79DCEF21BCC8F77603CDD58A2CCDDBE3A
-9802F941CED8E035313875319548C41992A2BE939A17CC109426E33825AE59BCD17CB19F50D972FF
-CBE7D9B4B0BB095303D9DC9D406696C2508D6CE99E11CF00F6461147E97449ED5F486D480A86D3A7
-ACECB7E9A945984724EFC21C5079B1FD03ED803C2DEAFCE3327D2D7827715FD65D9506216C88B0FA
-26935E95C64114A51919D419038B1A7E9C1E829FBFB53275093752DF19891A97F3CBF7719C1FD6CB
-17019A6D2D25360ECA804C4B35172662CC4769D2B785C6C87E5A4ECCE31704E59F71263B7C3CAEC8
-ACB4C7426EC25F11A0042323EE6C3EEB04284DBAE2C770BC419DCE79BD4560AEA41571C3B595F525
-60191DC7A8FBF63D413A77A0905E517441B16C2B501EA2F9E99CC38D052679F288FDF1894542E3A6
-6989A0090185EB2E75134BFA3D9147C3DB8A621D9D35E37786853779E157B47F71626D6B3E633005
-9159C17596C1B87FE2B4FF47ED9D78FA4C2160077276C8B58CEF5DC030B4A5D83CF257096C047FE6
-4DE307C598B815058E72D5F57DF5C369E664E137DE29349E2F9DCD8C9F4EBA6E765B6327D7A20DFC
-B20711273FD8091CBA605C4C494248076F7E03DF65A6A50164980BBBB708741E5BF6056E6F996DC0
-7FFF408C5B8EAB8DCEC315E92873228C805D4440A6470E3EE3983758DD211C9CECDBFAA4C9300CBA
-00608A4B2404A3C7AF017A3B7E67F39F0B51ACF950D3E75CC7BC2B8D3480202FA958E8EE0B240501
-5232EE0D264C7CA02C18CA45CB3C2DE322D3EB7F00F9455DB6C5B1F4E59C3E95520EC36D7D903CBB
-625D70B54BF6F8255E412604BBB29FEE026CC660577F91DB1DB4A613EEEFB20CF7AE3CD89D565AC8
-38416B01B5DE4FFA5550D17FB51FBBEBE21CF1D56038863EE931B90DEC2E211ED42BA92EC244D4CE
-2C4EC5CA87A026992772DC2AF754FC982B94F36EA7B7BF75E0ECE90CBB2A6AA1A012E8898BD679C2
-3CB3827C35D5D02F0569C7AA82615D4AA67518ECF668D3B57D6EF1A8013424AC2268BA0D9A74D588
-79EDCF6382A89D397864940303EAEC45A38304BA8B1CB198967AE23EB81054BE74B16909A405E8A7
-799CEE3C270FE2A6DC50BD7370B6B2C8FDB9A87D88D5D40348D3984E39C693B6F4486D994778607A
-80A3122872DD65E40492107C71C3CF708A9717E9EEFAFBDDC239C53AA9645B711038E59C8B861B37
-411AB2039BEDF9CFD00F08D9C5D76154427FF5DD39878CECC5D7BFB3F1F035087185C0981F3C2139
-BE84872FFAD3408531C4EA9387B89F5E3EC779E8850D50992DFDCF9132BC551E985943B07618AC10
-D1150451F0844C0DC41D6E17EB508DC8689EC726400D5A7F6FEB3CC7BCE05F09228B7CB2C5393664
-D8DD9A4B96B1020EF25D70AA2D91CAE93AFB5F2BF0AA18CA5C599FA1A708EF35BF8F7FFEC9AFC1F2
-42870D028B2B1459063B493943EF1283829783E1010242E5CF4DA39D93D506F3892936E7D6CF1124
-70A521D397438733D053944CFF12D6FFAE8246F20618684F263715AA98E15D72A526383E05C23214
-B78338E5B476F0981D90056E6E5D0DB66B1DF2298E597B2ABE1D817E18BEB056E65EDB4234342D96
-00470B1420C9210419D834E431B82F58608C87AC361A02D0F1FE4B470A3D71E0D21BB87E1023D428
-E23D596CB9E1A2184403A16E36E644BCCF9BBDE27290485057E62827283E7380AF786BF395B3961B
-A5EA469C315763FA59E0F176EF81985F38B882DE56A74D128E256D1B89939728E55A92ABA21A6B78
-44FAC1BA7BBDD8B34A18194A2984B000380FE9F672E83EFDBF276FE797A325815B0F25CC95C97A9D
-ACF56D583486305D7C9E51A7E337D14E3B900333EB38FD93A99587DA2341B10C059C71CE080FE753
-3C0F059FA40E560AF9C4A41A4BE6FB45846FF8F78165E10B4AD40F264BCF5596A1E8EF8CB6EA4B1A
-3A5C69059AB1563843679ECB2511A90E8898F54295649CB73D277760D8D04ABACC7BCC6E777A0530
-E2067CCBC08673F9C8C178F9D672AC8A15E5367F0C5651B53E75E0CFA57C931746AE1A679C246D7C
-9417F1CD89DDDBD1173C2F880B7B3847CBCCEBF99F7122E832D7C9BAFE2B54CBAA1ED48158DE3F36
-238B76B0E67644A28AEA996DDC006F6AC0242E4B667639E7523CBC90A0561193C1AF34481C2EF402
-EE43A82E1EBF4E3D601BB36B2D95CD93550D61CEE7A94E72F6D30C32C8F91A61E964B1F66ACFC398
-7F95D4028F116E9A9A8474AA29C1C1A984BE0E393BDC41DCEF6A6F1018DB60D52024899D8EB5D55D
-324D73F39BFA47377B9E15B3B06A7585589FCF52A54684173E5183367E7B0952DC4BC2767C4C6247
-B1D6103E52BC7B7EA6298F454C5D97AC575F19C10ACDFF4E10C7D3755CFAB4200CAC545269FF1D8D
-B0D607C7AD47F40DDF257AB4E7D0750577003C13E4941960C3DD7B0774DDAC18E8ABAF8F53E03CBE
-F6D57B44F24CF821014C064278FD51B3427593D17694B4ABCE81F49CBB984C5878CDF0C38D1ED7FD
-99B0B9A3BD8D8FF6219588B3B8FA59D0CDD1D9B2F65122AB45E48F1757467B9204926140E3C350C5
-A927A2E700173053EC35D3F1DA2D7258714C97FAA857F0898917BD94625C6D1E2D77138EFCAAAF51
-7B17FE187A2212C24A881A2C6A647DEF6376ED80AE4175C5EE80921F001995B44E49F0D33DD9075A
-CF33BB03671C0BCC34AD5784AD1CDFED3A6D9BA103B3DDC1CC2DE74DBB576A0277715275218CD19C
-A8899209125266D8BF1286F881DCC2C383749D1E768D670F4099F7DE959EDFE852583183C9111601
-2881A56A24AAF020EA45CD5F39660DEBCE30AC1C7B8CFC60387B1B0C3E361BE612FDFA9F01B7E4B4
-A18839A2C7E0E393EBC5AD9A8A4EBC316A740C1C295D9EF5F4DFFA0667F9582C0BB837B142C4CFC6
-B1798E9476D0631111033B8BA75A10FDC800E2AB1E0E829632F869CFE4737BE9E2800759EE0831DC
-7D1195EAF80555771981DD6DC6606812D92CB8EF86447F5F6C6F626D0E265C67E52A6319189EE349
-D48E49DFE6A9E98F76C414A1E3217AE0A215A17E54AA498F4ECDC50242ACC7E2322F63BB2FF2189D
-057E7354E32A3ED1803116176B9B9D0129930F919E2FEC280B2C8924E49E7BB75768A2EE1DA8ADBE
-D4E3589906DF1B923AEF84C1BD327438B731012E69BB0D43A1842CB88BB54EA4516477F704CFEB28
-6E3EA483445AD4D74586FCF32E96D366901084365F693A53C5FB532FBFE7BC0CADC404C4985042D6
-8DBB90A6DCDA3531EE324D558A214F935CD9FCC9A0CEBE9B5FB0323F4B3820529599EF48EE068B5A
-CE85004FEA2984F0A86F5AC9D56163BBFE1142B774148F1EB0A4DC89C3349052533A7DE66729DB24
-41B82F8F7360111DACF69293C9B281A0534F3E9E9224A75C49A832F28B2E497262475507B6DDFA9F
-01CA0A6696E3F5AC7EA68595EBA0C2EB8A47813FF936D84AC1B23ECA7AA2862B793CCBB0DF9FDD49
-31BEF354CEC12FBF478559FEC29F81ADF4452E83963E56541D31F3691C93A50F0BBA5E9552C4F2A2
-3A6E53060729854A3DD71CC4308B91957DB19E66AAA18FA67055A950F1C2CFF78A03BC1A588CF624
-696068068719AFB1001C4581EE072113882D9052B21E355D401ED8CD24D067B99E616BDA5A0A5A93
-36FC499632B79FF2FD0DEFB096EF46B75E2D4E0F48DAEA239719FEC4D9A29818F5875FC5041A9EDB
-D26CAF0ACE14CC80BA49BBA59E918EB3D8F1E541AA16026585A2F72DF7D83541816DE46981FB3EFD
-0C30E458CFAD04C79421AB7C4925E23AEA07F9F018431C790002596D26BD9663B51B699DF53E4882
-CBC34EDE88EB55045B889B6062E35FD1E018BCE785157B85EC3B9CA6C85D4B16238275385B8285DB
-012D8FB7C9F5B946A41D7A0FB878FF72C39683144D8A007CFF631B43748F2D5FC690300F9BC0C837
-006B92ECEBE0605E8C3A4A400E18AE8997D1B45FEE10068E247C647CF82C6DFBE5E881D511FFA687
-B7AEB78546BFD07D5F7EC242DCEF4930D8AAAD8C6152B6642AAC325963FD147F236BB850A9966573
-9D06CDBD7CA79A527DCF461E33F22BC9C5DB00DA2BD3DDDD8C99D99793BC98282AA8872FF96C3942
-85D82D9419EB78B6AE37A5F519397700F75D624A09BD255B576E955A323E784E8FC31131F003B0E3
-024A4F58FEF2A6C043796201FC425482E1155E229D1B2D43EF7B0D22322B22EF5C9A1BE026A1C3D3
-75EDAFF99597E1E5477952A4E8D2ACF5D014BC00DC2A272FA62B6983E27D228881E2EF2B8B95A681
-CBE90C5FDE16331C85222FE2A16F0A3C3000A63E2E21666C0C119F8AF89A543D37977069A5ACF155
-6324F05204CE8CAD50FF4FB630D9CBBFC324DEDA584AA56A99D3A76FF55BDC2C2EA3A021361CCD4A
-83C7A5E2768D210FA6DE889FD48A39D679C94EC3C99A8D33FF11377DA7F6F1B71A2A05B302ECDE95
-4F26773F39AC881542F0D0969C3995C3519A8EF70B4220D86BF01BEECC6462855E7B686E1AFF1CA9
-1FB8FD8B4A69E10EE0C2AD94ADD44449506F9B6EF43641F2026EFF6E605C670560C2B74706FB949A
-A7E8CC6A2D0D6207E457E7FD87EC1B9092DC68B9143947CC8ED14AFDDCBF8FDDA228A76847F96802
-E561F67CEEFDE45AE587673983FC04C96744DBAA83F2DC838D633943C75DCB9E6410474EB27B348F
-26E505F0AB90878940E846C5E9F3C5FE8C3558C3236B1B88C405716949B8506841CABE1717474BB7
-C30DB91CDEE33B0F844811762FAEC535BDCF84C1C747CEF9B1FA61D2AFB5A81335BC42C06A94D7D5
-9B7EDE55BCF6F9867AEE107555CDD084B7684C2C87087475A39A9DA6347BE281CE5635A4D07865BA
-98CE26C1465B1AB0343F49FF37B4D0CA9F3BB693D78DC3B21925CB996A038DCC172527FE57C07460
-EF39C07D4396E7FA970D9F22ABD21A9C794B64AD96762C7428F59A8757C36D6C4FFB23216195A04C
-2A2C2E7B10EF7193931544D782FEE4B91E01119C5553BBC6252270A8D8C56DD62D448F5AD8DC69CC
-B45E1F17F0AA1E445129DD00F000005B23D38DE93A3BE55A4C041947F36B4E4536E307D0180553F9
-2E46B743881CB5D5386C48C7D5F84C2BCD06B9C501F78C7EE61FA23516791FCF4DB278AF688A2E60
-10A56692AD92008497487EDFE4BD5FA083FA544138B20D6940020887E35D46E093B71F7A04A67460
-DC8116B4D4839625D7CA6959D6831CD93F81AC4EA2709036DD738364FDE71113BF22EBF13DFE1642
-E564701E6F0FFE7511EDF03FE448C2B28C64FB7D54B94CA576E481FA56B2B18AF10C71F699B6BFD4
-7459CDE1869D0FD306BF489A6F42E5B2F05CCF55BB6B9526973D19CB134CA7F13F1DB3716F8CC217
-73A832568C16250B5CDB16DF24BF81D49F5B37018BD310262EA7078107868AB0216CEC83CEFCAB1E
-9F2C665A31585CA04DC01879CAA79AAA5AB201B516F7052B01B16BEE5606098393B0E5D9F9E5E3F4
-EB20F63C958E796DF41CF28839F5C62A0431648745D7837B519F3AA36BC6C08EF040CCF53D9B6D8C
-0C7D1A84D707EC57A3C6AC9A62AB37251A01A5ED40FDEC6F5BE6E34C6A91D058319439778A2EE5D0
-363E2E1F33463C33327D05FFC0CBF08D5BC457C7230448972FB9B4D0D782BA7DBF10D3FFEF8BF523
-6EC16D4DD6D0D870D9D5EB5C64C9A46A4F583D4F831FEE74B0E5B33A09ABFD4444929BD8F638CD72
-EAB99CF2E9551DF427683964A592E49D186F285258C5D5F62196A98532421D73E3495F82695FEEC6
-E1952C562D546B28618FFAEEBEFF03A57F4D855021F85B0C7BC37FCC6DA9AECA099B646B99D41896
-09D3FF2D56422F8C37E97640293EC7C90E3380887836F4938FBF495CAC14FBA5648D89282D8D49D9
-1AF73ED36581139D8BD42551E263E830EA3C6EB381D85C42D74C50DB0CCAEC03F535ADE92128A016
-0E811C34748309AF7604919B66CD43EB5CA975302DCB6076FEB6BDD6FF55976FE990FB0CE9ABB11B
-195403FB26E3D6C6A0DE1C5BE79E171A61E21F79EE8DBE7A832519813EF6B33EA098C2C32ADEA219
-AB2AAC8B093F40000995539D1276D5F2EF84CCD099B71FE4269BDBDB6A8D59C86F7D2E3FBCCF8773
-D0FAE97640BC1AD43CB4B992BFADFB09DBD0CAAEB8CD9DA264187C4F97300E9A6C9DEED5525479E6
-05C65AE336CBBDF4E5D7F79AD098F977285E065579B748FEAA97F2A753E1F962FCAB68D72BAA8EE4
-FF6691C23E31BC0F3E981A96FB440404856AE1AB32A7205B17D411D8F21C8C93B704D07EC594422A
-BC368CDA2B1610CE6A973F4474E12B78B532666797F5755D269772C9F5400B3BFC6C58395D38527E
-2CCCF29B56123F7DCEF3BDE5DC1DFC5B0293BB125085B1D2D929BC3EE84F4FAD571A4991C3DEE03F
-2DB3A3097E52B1A7D5C73CCB6148EAC62E8E36DE9A71C57638C6E4D5D9DED18174E8C390E50B4A5B
-913C074EEAEBE390B214B3A68F02862B9A296DB4B409769649E51D738CBBDFB7702E15C73C2AFC6B
-C37CE15171F4E822CF20EFE55D9F061AA43E648989628FF79E65932390CBB15D8E621333B18B11C3
-BDF96F841D7434E01AD501FEA964A75B248A35CD9DF9A37E48A1E5A09C624B93CE44F0042FA00D7F
-9EE89B9F7AB785E9C718CF6E7228F743271C2C9BBA17E5208B920E44E765D99D86650EB454B0FAAA
-112753AA1BD3A24239E9C5FC47EEB1547AC9D23731B8DC48B9707830DAEC60C8D3790BBA1120F776
-4EFAC542CFFBCD5C05F9510B27B2534B704ECD36C8B041FD49A96881302FFF5B0163A2DD09C751D6
-D6AFEA9170A4F4C4AB8D46E62F763FE1BDA51DD1CE4A27E772F3A2869155F762FF26B7AA6FCFA4F1
-292E56F03AAB6322BF867E7710C34D43B5D85B45AA68014AD7879EED051B1933E491496E3E26D9AA
-8B80A07BF2B94F1077E84A9726F08199887D66DE7A307BF33C30DD9CF3DA188088C03B2BAD09A217
-6B110DB2C868B53DA9A66C85737BA66C93C58A259860E294AD0191E3A72C73F40B0BD98699AA08DA
-F03587B78F391F3A4313C58D9F29B53C70785637BD0C58310109C54091AB0A34CBB0C478613A7AC0
-FB8F0A8B4645AC966395D8BA775262CD291136AFFDDF01C1D83DD4EB3B59CCAD18057FE7D92A8CD4
-A58F22508D9FD7CF356571F701BBB23E749BDDCBF8A317FDA0AEFD952BB18545610FFAD3AC143D35
-1B8DB3F66293375E0E50235F0D0466932181D377EDD32A5F0FFA4E22B5A0CB4F343D9A7E4A342E9D
-09DFF6C697630CD3971802C277A5590B8CA94BDE6B38446C794D072BBCCB724D5BC208EEF1B018D7
-39373BB910D668882CAA779C2D686081DE6A2606417B54D7C20E0E7F722648D893E4EDBAE8F00D6A
-6DA3712F91AE860C756D1127D133AB828E9D80023B50B162C5A1C5CDF70CCB3FDD7EA060ED20838B
-E1E50C4094C9E79E1A0187CDF780CAF45A725964F004253E034C5BE46BBF89D94631F1A33BAA35B8
-4FA2A9D08481C6674126CD96ED05DCE48BDA069D902D6836D5DFBA701DC0F98A863E64F0E312145D
-8DC0B77F25B43AEC729A1243B45B08CA228DD6101CAA2AC5ADCC8EFF84A4CA3F254176C2CC711EE6
-C273835D0FD3528ECA2A976B88E51FE347FDB60F32370B66D338931D6581630ED586F349C638960C
-31AE4204E89521A96E1219E696B913DEB2AAB7A3B022D06F34FDFCB810A04E60A4FEBE284C2F063E
-0AE9EDF87704921CCFA193BDC912B747E13570066223A49F1F6E2AF0D4D65DA04CA876FF7A462FFC
-9C0BA2CC545C3BD36DBE762F32B2D6BE5867C59F479195C92440DC165098B74EA5C3AD93CDF2D410
-B04C16BC7801E7956F4E5107450787AA592493171C3628E6B8F49D4F8429EB98DC52EF025F001387
-BC1A7093F7A99F10B5D2D7DD8BBB393BF6E56F08F4F7FA1A343F220D5A1EAE7168C74D41BE1DC1A8
-3BD65B72B982F4F7B34F24F97F9EC9A91011064031FACFF2A14921A32024385F4E061CD07D152E74
-1BF97156D951A342488FA7F5EF934CCAD13E2753A0AB7A1F565C2F7F6B349DF03BBC25BBD972A9AD
-F809BB5C5048A8CCEF9297B2ED3324D18867F293CC66E88B3A39D107B610DFE79A3B4E83A96D3D52
-A17FE8A62C9FDD271130148366942C9CE57558D023DA5F7501319EBFA33DE9E6D1E76D7C20DB8A09
-B657839DA99F3D8143F1EE6253A3295C9651FA4366547893C2DC7ABCBF4BB7609DE5D001E0A36D9F
-FBE01F7D0903B3208AE8547E2E5F14EC1AF4C2535CA8F4EA37E3F3CE172C7A1E8308995B1CC23E6E
-81190246BCAB6E755BF868D449BB02A2AA87C44C9CC0F571ADC72547CEECBE104BB274B8AC16DCB7
-5D5F458D356466B921ACDEEAE384E2EB1DF6EF393B41B9747F0A4FAEB4AF1928D9AD6FB7E06FDC62
-1E4C6FC98CFB43F88584BD55D9B97CC9549093EDE586912161931162B1B1D52D0443260DABA02AF2
-B4432100D5506546013DA703573FA8013685CC798CE501960093DED713FFCCF89CA2B9106390198C
-29A00864108CDCC1984A8BAB53919028C01B26ECC7925E38CBE6CCA8978EE21C2B06E7B3E48FBA97
-8E2A7D186E563C088F84AA23178B60E4729EE87D67B1091F3B6973676C1CBFE6530EB773C62E2C24
-97014AB0E8B71A1F4E86A378AA26591511BEE3CF3D64C94848582E1354E1605B6457823F2C5E640A
-D3802946BB2E7E8E594E8C04B430C2385DD40746CE8534F50842E74D7115F3DB0C72D1C9C607C657
-3B094AEB73B7A79876CFFC3E2F8C9FEAAA07D3BFCE05B61F7749A8793BE90CCCECA2D7077F25E899
-D3331FE161A7E86C842495D584C6E4A0880B2951D8A13B88C4672080A0B1BE36BF47C3ACE7288CFE
-41A8C1BAA6F0814A947FBD6B3AA72B6C73A8C578CA51CCC96F2352316C467BB960E981F2B6485BFB
-44B577E71EFDA16E7405954BC7C9F0759F5A9F1EBCD2FA9CC9648D5831A68887F41B15081A204C24
-B4B992A231DEF9E698D4C3A25B6F5474F5BE6A601F2D337A58A0D21FF37FD91EB86D1D738893A03A
-69F0CD743F611CDFFE69DB2C6ED0E4611D56F803BB0DC06E7FE85A303839612707647B1BE9FAF8D6
-84122CA9E5CB8BDE2936D3F4FF254D31529D7538BBD4D35539489F9E7316F24214B996BCDCF1818E
-749A71CF0E8845AA1E2A58AA62A48E02BA4564625D20AA220EE719608521D7D7A7FCA0BD8904A401
-9819D371F3F59D46C1354E5FC1A6E5F79B20CF4ACA2BF0F2DE73DA193A6F9ACBFE0B4731C4BCEBE6
-D96FE822965DE965232282A3A130361F188B3AABDA95A8A2790D9240BE008B6A6DE4BBFCADA05B67
-86B9BB8E0DFA0C30043A3B07ED46277E07B9808422C8ED16758B9C396F4EA929D769785B2C9568E5
-70A83B989B25CE200F1727D41E2B702E7F88F1784F4C83FA60A74EB26B2DA95126E508ED519A61CC
-151DB6804F61826C5F86D8FA89D06E526FED97A0DB88EDB432FF32C1ACC9B622EEDF601081AF7B96
-3C9CFC1D13E4A9C74FEA0A1C8E3D8653CD92A944D4CA6B0D306619AFD503506D77732D6514F604BE
-4610C2560931BDE0B40939BC1D126B0E97F72AE1B4A9252123B54F7A27E0CFA4425B4546526FD741
-CA77952B10D13E0AC2E32006A903808FF0CD013F936238C74CC75FD915244C56A8412F37F0134840
-347699508D6F3D7F3203A25B7C70100719582CD588590EE34B3AB13E255B613A6D00386A0104CC5E
-D2C646F09A88888D3751651D5646C5227A3C80E8DA1B0A331121DD2429F1F4775D30564DFF47D01B
-BE2C6C72CE4D1FD9A2077C04D2B0274B8916F6A9D1A4A6964A534F47CF241D5A8E34B23F85BE9ACF
-FC2FEA961F277539F215F8728D6788F67BEAF45502839BCF23D8763C3949352F00C579A9A4FC408E
-C625E310DAE61512DFE6844E82D36A2F81709E1F05B38AE9C222ED62C961EE63593CED7AAF73CE2E
-D3667740C77B309B93EEFE1B4BA65D48575A66BE86743DC9E5D3C2FF418D11F7F211B86E827EE1DF
-C3613E7498030F07050524536D1F8A94DDB6698BE7B963C55CB3F74B676CD815A7B3DF4B1A0EA2BE
-1B0B9A11FFBFD5B1FA49668AEE14629316AF436A0821C20BEEF7B3480847934A99F6D85B68F4DDF8
-859A754E009428AF89A90D1852C220A607FF0806E8080726EDC94D691D214B4521C147C4273AEBDD
-BB4A697EF16448CD9B2FC95293305858DECFD406B89B9F3FDAE2AC579E80CF321EBAE5701FB2F7CA
-D8ED04B4A63115886D45D6120F69AEF1A21D80AD3C2D35D2899F1902242B96CD349E0AAADA40F7A1
-1282B6B52BDD97708E58DC5E2D22D1153E5FA3F3B300BCDFAF98DEC2F4E3C82A1C85F985735F3987
-4F557579F422664E07CBE19DA680EFB0FC82C323EC5C4644C51709AC8D674608A8043C91E6C7988D
-430F10BA6CE1FC7FC0604FCD8F723895250AEC36CC35B3FA14FE2A0D24095DCC30B2093F2298F5F0
-A97676A0BE66C3DC9ADACFE2FC0F721A20E945AFC1096A619075D5E9A264C796EC6C90EF1AEEA8DC
-089B44FFC13D27CB2370070A52D4416C53F364393E46EDD7EDE00799960CE6E0D57E4909E88ADD64
-BDD2B0EBE2D73FA6ACF8B40280DAA0637E705C65AABD523B8815F22F23E9FF81E7829C7E4BC980C9
-143AEBE1A04DC0D253396BBB7268BD5AEEA356B610D5DCEE03135E00AE34388251F31714A1C40E18
-2652C48CDA2211A22CB6F02490E69A44CECB169754C53B16028D352E0119F5D5FAE0BD7EA1CDA647
-12A6147374B64244E21E9EC9F0D1381AD22D5B6212B26C3F9AA5F6045F25DD9F5EB4489EA39B1945
-331AC70510C5752557DE21D0A6CFC1EB10A98FA867B76DA6E4249469F591FD154D39E89364A43DB0
-07AA0D7A911CFAE6CE2B557997FBC44F55A27F622BD7B8B10EC9F5D10F2649A646FD964AE1B111B3
-5B46A252C4DEE44E7426EB5739F24E8A390694597DB3A1FE7800C97E59558322F0E49A0CCE2AD94B
-1E2D1026AFA771723E3F523916F55ED866C9FB4A2F759651C613A2CFF362028CDF9D38F05D4C7C60
-24C533E930B64B099FB1AF04B01F5FB9CA6867E6EFF55A772C5391831059987E10CBF987E3F378E0
-1329F73D54DC0484177D3C3C06F67397955FF1CA4EF8AD1606B70455255D631A7D6EB92BFDBA14A0
-FF28B2ACE7E81AD666EA9B3A0F5A6BA3B5DFE35044FA4B3D8ED956009C60E98CC132F2E84967F4A9
-8A67B336D5EE7CAF7DD1F74D1FA08619941361FA7312CF225D89CEF97E864C8369EAFAB94D97F056
-5505D825972B754F6729596EEA91210B75DD8F645382ACE36DE60819A02B3B48DD00F5485F9264F9
-FA926D732E2C267B0BE8CA98526F124F97EFDB86132C5EF16B103908172FC51F286FFE45FF253512
-E0033F037FF182BA536A9EB2DF2D1DB257D9C86C46E1B002FB32AC70CA9462E6EB48994752CEBCE3
-9F08ABD4F4B0889283E55500702185A841E328
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndResource
-/NimbusMonL-Regu-iso1252 /NimbusMonL-Regu ISO1252Encoding psp_definefont
-/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
-294 310 moveto
-0 0 0 setrgbcolor
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<4558504F52545F505953435249505453202B3D20534D4553485F6669786174696F6E5F68657861
-2E70792C20534D4553485F666C696768745F736B696E2E7079>
-show
-294 398 moveto
-<69666571202840574954484E455447454E402C79657329>
-show
-294 442 moveto
-<20204558504F52545F505953435249505453202B3D20534D4553485F626F785F74657472612E70
-792C20534D4553485F626F78325F74657472612E70792C205C202020>
-show
-294 486 moveto
-<20202020202020202020202020202020202020202020534D4553485F626F78335F74657472612E
-70792C20534D4553485F6669786174696F6E5F74657472612E70792C205C>
-show
-294 530 moveto
-<20202020202020202020202020202020202020202020534D4553485F506172746974696F6E315F
-74657472612E7079>
-show
-294 574 moveto
-<656E646966>
-show
-295 691 moveto
-/Symbol findfont 50 -50 matrix scale makefont setfont
-<B7>
-show
-370 691 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<46696E616C656D656E74>
-show
-595 691 moveto
-<20>
-show
-607 691 moveto
-<3A>
-show
-294 797 moveto
-/NimbusMonL-Regu-iso1252  findfont 42 -42 matrix scale makefont setfont
-<2E2F6275696C645F636F6E666967757265>
-show
-294 841 moveto
-<636420534D4553485F4255494C44>
-show
-294 885 moveto
-<726D20636F6E6669672E2A>
-show
-294 929 moveto
-<53414C4F4D45325F524F4F542F534D4553485F5352432F636F6E6669677572652096776974682D
-6E657467656E3D6E657467656E5F696E7374616C6C6174696F6E5F70617468205C>
-show
-294 973 moveto
-<967072656669783D736D6573685F696E7374616C6C5F70617468>
-show
-294 1016 moveto
-<6D616B65>
-show
-220 1128 moveto
-/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
-<6FF920736D6573685F696E7374616C6C5F7061746820657374206C61206469726563746F727920
-6427696E7374616C6C6174696F6E206475206D6F64756C6520534D4553482E>
-show
-280 277 1 308 rectfill
-2125 277 1 308 rectfill
-280 277 1846 1 rectfill
-280 584 1846 1 rectfill
-280 763 1 264 rectfill
-2125 763 1 264 rectfill
-280 763 1846 1 rectfill
-280 1026 1846 1 rectfill
-showpage
-grestore grestore
-%%PageTrailer
-
-%%Trailer
-%%Pages: 7
-%%EOF
diff --git a/doc/salome/AddNetgenInSalome2.sxw b/doc/salome/AddNetgenInSalome2.sxw
deleted file mode 100644 (file)
index 1538190..0000000
Binary files a/doc/salome/AddNetgenInSalome2.sxw and /dev/null differ
diff --git a/doc/salome/PluginMeshers.txt b/doc/salome/PluginMeshers.txt
deleted file mode 100644 (file)
index 61bb084..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-#######################################################################################
-# File   : PluginMeshers.txt
-# Author : Julia DOROVSKIKH
-# Module : SMESH
-# $Header$
-#######################################################################################
-#
-# How to add your own mesher (as a set of hypotheses and algorithms) to the application
-#
-#######################################################################################
-
-1. Create mesher plugin package, e.g. MyMesher.
-
-2. Create XML file to describe all algorithms and hypotheses, provided by plugin package
-   (see SMESH_SRC/resources/SMESH_Meshers.xml for example).
-
-   <meshers-group name="MyName"
-                  resources="MyResourceKey"
-                  server-lib="libMyServerLib.so"
-                 gui-lib="libMyClientLib.so">
-     <hypotheses>
-       <hypothesis type="MyHypType1"
-                  label-id="My beautiful hypothesis name"
-                  icon-id="my_hypo_1_icon.png"/>
-     </hypotheses>
-     <algorithms>
-       <algorithm type="MyAlgType1"
-                 label-id="My beautiful algorithm name"
-                 icon-id="my_algo_1_icon.png"/>
-     </algorithms>
-   </meshers-group>
-
-   Attributes of <meshers-group> tag:
-
-        - value of <name> attribute is used to collect hypotheses/algoritms in groups;
-          you can also use this attribute for short description of your mesher plugin
-
-        - value of <resources> attribute (MyResourceKey) is used to access resources
-          (messages and icons) from GUI (see paragraphs 4.2 and 5);
-          currently it should coincide with the name of plugin package; this limitation
-          will be eliminated in the further development.
-
-        - value of <server-lib> attribute describes the name of your mesher's
-          server plugin library (See paragraph 3)
-
-        - value of <gui-lib> attribute describes the name of your mesher's
-          client plugin library (See paragraph 4)
-
-   Attributes of <hypothesis/algorithm> tag:
-
-        - value of <type> attribute is an unique name of the hypothesis/algorithm
-
-          * It is a value of _name field of your hypothesis class
-            (see paragraph 3, implementation of constructor of
-             StdMeshers_LocalLength class: _name = "LocalLength")
-
-          * It is a key to each certain hypothesis class
-            (see paragraph 3, implementation of "GetHypothesisCreator()" method in StdMeshers_i.cxx)
-
-          * It is a key to each certain hypothesis GUI
-            (see paragraph 4, implementation of "StdMeshersGUI_HypothesisCreator::CreateHypothesis()"
-             and "StdMeshersGUI_HypothesisCreator::EditHypothesis()" methods in StdMeshersGUI.cxx)
-
-          * It is a key to each certain hypothesis icon in Object Browser
-            (see paragraph 4.2.1)
-
-        - value of <label-id> attribute is displayed in the GUI in the list
-          of available hypotheses/algorithms ("Create Hypothesis/Algorithm" dialog)
-
-        - value of <icon-id> attribute is a name of icon file, which is displayed in GUI
-          in the list of available hypotheses/algorithms ("Create Hypothesis/Algorithm" dialog)
-
-   Note: All attributes values are accessible in your GUI via HypothesisData class
-         (see paragraph 4.1)
-
-   Note: The environment variable SMESH_MeshersList contains the list of plugins names, 
-         separated by colon (":") symbol, e.g.:
-
-        setenv SMESH_MeshersList StdMeshers:NETGENPlugin
-
-        Please, pay attention that StdMeshers should also be included into this environment variable,
-        if you want to use standard hypotheses/algorithms, provided with SMESH module.
-        
-        The SALOME automatically locates XML files, searching them in the following directories:
-
-         ${<PLUGINNAME>_ROOT_DIR}/share/salome/resources
-         ${SALOME_<PluginName>Resources}
-         ${HOME}/.salome/resources
-         ${KERNEL_ROOT_DIR}/share/salome/resources
-
-        where <PluginName> is a name of each mesher plugin package
-
-3. Build server plugin library <libMyServerLib.so>.
-
-   3.1. Define interface to your hypotheses and algorithms.
-
-        Example: SMESH_SRC/idl/SMESH_BasicHypothesis.idl
-                 NETGENPLUGIN_SRC/src/NETGENPlugin_Algorithm.idl
-
-   3.2. Implement functionality of your hypotheses and algorithms.
-        Inherit corresponding classes from SMESH.
-
-        Example: SMESH_SRC/src/StdMeshers/StdMeshers_*
-                 NETGENPLUGIN_SRC/src/NETGENPlugin_NETGEN_3D
-
-   3.3. Implement interface to your hypotheses and algorithms.
-        Inherit corresponding classes from SMESH_I.
-
-        Example: SMESH_SRC/src/StdMeshers_I/SMESH_*_i
-                 NETGENPLUGIN_SRC/src/NETGENPlugin_NETGEN_3D_i
-
-   3.4. Implement being exported method.
-
-        GenericHypothesisCreator_i* GetHypothesisCreator (const char* aHypType)
-
-       <aHypType> is a value of <type> attribute in the XML-description file
-
-        Example: SMESH_SRC/src/StdMeshers_I/StdMeshers_i.cxx
-                 NETGENPLUGIN_SRC/src/NETGENPlugin_i.cxx
-
-4. Build client (GUI) plugin library <libMyClientLib.so>.
-   This step is required only if your hypotheses/algorithms need specific GUI for their construction.
-
-   4.1. Implement the required GUI (e.g. construction dialog boxes).
-
-        Example: SMESH_SRC/src/StdMeshersGUI/StdMeshersGUI_*Dlg
-
-        Note: all data from XML-description files is accessible in your GUI via HypothesisData class
-              (mySMESHGUI->GetHypothesisData (aHypType),
-              see SMESHGUI_Hypotheses.h for HypothesisData definition)
-
-   4.2. Provide icons and messages for your GUI.
-
-        4.2.1. Implement resource files
-               MyResourceKey_icons.po and MyResourceKey_msg_en.po
-
-               Example: SMESH_SRC/src/StdMeshersGUI/StdMeshers_*.po
-                        NETGENPLUGIN_SRC/src/NETGENPlugin_icons.po
-
-               Note: ICON_SMESH_TREE_HYPO_MyHypType1 is ID of icon for Object Browser
-                     for hypothesis with type="MyHypType1".
-
-                     ICON_SMESH_TREE_ALGO_MyAlgType1 is ID of icon for Object Browser
-                     for algorithm with type="MyAlgType1".
-
-               See paragraph 2 for definition of MyResourceKey, MyHypType1, MyAlgType1.
-
-        4.2.2. Define environment variable SALOME_<MyResourceKey>Resources to point to the 
-               directory where resources are situated.
-
-               Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources
-
-   4.3. Implement your Hypothesis Creator and being exported method
-
-        SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator
-          (QString aHypType, QString aServerLibName, SMESHGUI* aSMESHGUI)
-
-       <aHypType> is to pass a value of <type> attribute in XML-description file;
-       <aServerLibName> is to pass a value of <server-lib> attribute in XML-description file.
-
-        Example: SMESH_SRC/src/StdMeshersGUI/StdMeshersGUI.cxx
-
-5. If your hypotheses/algorithms do not need specific GUI,
-   but you want to provide icons for object browser, see 4.2 paragrath
-
-6. Setup your SALOME environment.
-
-   6.1. Add your plugin to the LD_LIBRARY_PATH, PYTHONPATH (and maybe PATH) environment variables, e.g.:
-
-      setenv PATH <path-to-my-plugin>/bin/salome:${PATH}
-      setenv LD_LIBRARY_PATH <path-to-my-plugin>/lib/salome:${LD_LIBRARY_PATH}
-      setenv PYTHONPATH <path-to-my-plugin>/lib/python2.2/site-packages/salome:${PYTHONPATH}
-   
-   6.2. Set mesher plugin resources environment variable (see 4.2.2 paragraph)
-
-Note: If you use runSalome.py script from KERNEL package to launch SALOME, you may not to set 
-      environment variables, because this script sets them itself. All what you should do is
-      to add <plugin> section to your ${HOME}/.salome/salome.launch file for SMESH module section:
-
-      ...
-      <modules-list>
-          ...
-         <module name="SMESH">
-              <plugin name="MyMesher"/>
-          </module>
-          ...
-      </modules-list>
-      ...
\ No newline at end of file
diff --git a/doc/salome/gui/Makefile.in b/doc/salome/gui/Makefile.in
deleted file mode 100644 (file)
index 883a053..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Vasily Rusyaev (Open Cascade NN)
-#  Module : doc
-#  $Header: 
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-@COMMENCE@
-
-docs:
-       cp -fr $(srcdir)/SMESH ./
-       -find $(PWD) -name CVS -exec rm -rf {} \;
-
-clean:
-       rm -fr `ls | grep -v "Makefile"`
-
-distclean: clean
-       rm -fr SMESH
-
-install:
-       mkdir -p $(docdir)/gui
-       cp -rf SMESH $(docdir)/gui
-       -find $(PWD) -name CVS -exec rm -rf {} \;
-
-uninstall:
-       rm -rf $(docdir)/gui/SMESH
diff --git a/doc/salome/gui/SMESH/i_blue.jpg b/doc/salome/gui/SMESH/i_blue.jpg
deleted file mode 100755 (executable)
index ed3acfa..0000000
Binary files a/doc/salome/gui/SMESH/i_blue.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image22.gif b/doc/salome/gui/SMESH/image22.gif
deleted file mode 100755 (executable)
index 18b53bf..0000000
Binary files a/doc/salome/gui/SMESH/image22.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image22.jpg b/doc/salome/gui/SMESH/image22.jpg
deleted file mode 100755 (executable)
index b6a5e8d..0000000
Binary files a/doc/salome/gui/SMESH/image22.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image23.jpg b/doc/salome/gui/SMESH/image23.jpg
deleted file mode 100755 (executable)
index 74f899b..0000000
Binary files a/doc/salome/gui/SMESH/image23.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image24.gif b/doc/salome/gui/SMESH/image24.gif
deleted file mode 100755 (executable)
index 3d8032b..0000000
Binary files a/doc/salome/gui/SMESH/image24.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image25.gif b/doc/salome/gui/SMESH/image25.gif
deleted file mode 100755 (executable)
index cd7c967..0000000
Binary files a/doc/salome/gui/SMESH/image25.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image25.jpg b/doc/salome/gui/SMESH/image25.jpg
deleted file mode 100755 (executable)
index 4b2d4df..0000000
Binary files a/doc/salome/gui/SMESH/image25.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image26.jpg b/doc/salome/gui/SMESH/image26.jpg
deleted file mode 100755 (executable)
index 3a02cb9..0000000
Binary files a/doc/salome/gui/SMESH/image26.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image27.jpg b/doc/salome/gui/SMESH/image27.jpg
deleted file mode 100755 (executable)
index d2f32b1..0000000
Binary files a/doc/salome/gui/SMESH/image27.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image28.gif b/doc/salome/gui/SMESH/image28.gif
deleted file mode 100755 (executable)
index 21f54bf..0000000
Binary files a/doc/salome/gui/SMESH/image28.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image30.jpg b/doc/salome/gui/SMESH/image30.jpg
deleted file mode 100755 (executable)
index 997a36e..0000000
Binary files a/doc/salome/gui/SMESH/image30.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image31.jpg b/doc/salome/gui/SMESH/image31.jpg
deleted file mode 100755 (executable)
index aa00403..0000000
Binary files a/doc/salome/gui/SMESH/image31.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image32.gif b/doc/salome/gui/SMESH/image32.gif
deleted file mode 100755 (executable)
index a1ee2ee..0000000
Binary files a/doc/salome/gui/SMESH/image32.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image32.jpg b/doc/salome/gui/SMESH/image32.jpg
deleted file mode 100755 (executable)
index 77d595d..0000000
Binary files a/doc/salome/gui/SMESH/image32.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image33.gif b/doc/salome/gui/SMESH/image33.gif
deleted file mode 100755 (executable)
index ecdd47b..0000000
Binary files a/doc/salome/gui/SMESH/image33.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image34.gif b/doc/salome/gui/SMESH/image34.gif
deleted file mode 100755 (executable)
index 963095f..0000000
Binary files a/doc/salome/gui/SMESH/image34.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image35.gif b/doc/salome/gui/SMESH/image35.gif
deleted file mode 100755 (executable)
index 0e3b30f..0000000
Binary files a/doc/salome/gui/SMESH/image35.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image36.gif b/doc/salome/gui/SMESH/image36.gif
deleted file mode 100755 (executable)
index 7236ef8..0000000
Binary files a/doc/salome/gui/SMESH/image36.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image36.jpg b/doc/salome/gui/SMESH/image36.jpg
deleted file mode 100755 (executable)
index 9b44dc7..0000000
Binary files a/doc/salome/gui/SMESH/image36.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image37.gif b/doc/salome/gui/SMESH/image37.gif
deleted file mode 100755 (executable)
index edd5263..0000000
Binary files a/doc/salome/gui/SMESH/image37.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image38.gif b/doc/salome/gui/SMESH/image38.gif
deleted file mode 100755 (executable)
index 087f6e2..0000000
Binary files a/doc/salome/gui/SMESH/image38.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image38.jpg b/doc/salome/gui/SMESH/image38.jpg
deleted file mode 100755 (executable)
index 29d5e71..0000000
Binary files a/doc/salome/gui/SMESH/image38.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image39.gif b/doc/salome/gui/SMESH/image39.gif
deleted file mode 100755 (executable)
index b206af1..0000000
Binary files a/doc/salome/gui/SMESH/image39.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image40.gif b/doc/salome/gui/SMESH/image40.gif
deleted file mode 100755 (executable)
index becc12a..0000000
Binary files a/doc/salome/gui/SMESH/image40.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image41.gif b/doc/salome/gui/SMESH/image41.gif
deleted file mode 100755 (executable)
index 2e132c2..0000000
Binary files a/doc/salome/gui/SMESH/image41.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image46.gif b/doc/salome/gui/SMESH/image46.gif
deleted file mode 100755 (executable)
index 0f00ea7..0000000
Binary files a/doc/salome/gui/SMESH/image46.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image51.jpg b/doc/salome/gui/SMESH/image51.jpg
deleted file mode 100755 (executable)
index dfe3bc6..0000000
Binary files a/doc/salome/gui/SMESH/image51.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image52.jpg b/doc/salome/gui/SMESH/image52.jpg
deleted file mode 100755 (executable)
index 1c83b35..0000000
Binary files a/doc/salome/gui/SMESH/image52.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image63.gif b/doc/salome/gui/SMESH/image63.gif
deleted file mode 100755 (executable)
index 6a9c2c8..0000000
Binary files a/doc/salome/gui/SMESH/image63.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image64.gif b/doc/salome/gui/SMESH/image64.gif
deleted file mode 100755 (executable)
index 1d92c81..0000000
Binary files a/doc/salome/gui/SMESH/image64.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image67.gif b/doc/salome/gui/SMESH/image67.gif
deleted file mode 100755 (executable)
index 68bd3e3..0000000
Binary files a/doc/salome/gui/SMESH/image67.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image70.gif b/doc/salome/gui/SMESH/image70.gif
deleted file mode 100755 (executable)
index 120b8e8..0000000
Binary files a/doc/salome/gui/SMESH/image70.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image70.jpg b/doc/salome/gui/SMESH/image70.jpg
deleted file mode 100755 (executable)
index 0df360f..0000000
Binary files a/doc/salome/gui/SMESH/image70.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image71.gif b/doc/salome/gui/SMESH/image71.gif
deleted file mode 100755 (executable)
index 0008354..0000000
Binary files a/doc/salome/gui/SMESH/image71.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image71.jpg b/doc/salome/gui/SMESH/image71.jpg
deleted file mode 100755 (executable)
index cb1223d..0000000
Binary files a/doc/salome/gui/SMESH/image71.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image73.gif b/doc/salome/gui/SMESH/image73.gif
deleted file mode 100755 (executable)
index 504816a..0000000
Binary files a/doc/salome/gui/SMESH/image73.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image74.gif b/doc/salome/gui/SMESH/image74.gif
deleted file mode 100755 (executable)
index c66029e..0000000
Binary files a/doc/salome/gui/SMESH/image74.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image76.jpg b/doc/salome/gui/SMESH/image76.jpg
deleted file mode 100755 (executable)
index 88ec89f..0000000
Binary files a/doc/salome/gui/SMESH/image76.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image77.jpg b/doc/salome/gui/SMESH/image77.jpg
deleted file mode 100755 (executable)
index c253eac..0000000
Binary files a/doc/salome/gui/SMESH/image77.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image78.jpg b/doc/salome/gui/SMESH/image78.jpg
deleted file mode 100755 (executable)
index 80c2a16..0000000
Binary files a/doc/salome/gui/SMESH/image78.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image79.gif b/doc/salome/gui/SMESH/image79.gif
deleted file mode 100755 (executable)
index 9711ccb..0000000
Binary files a/doc/salome/gui/SMESH/image79.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image80.gif b/doc/salome/gui/SMESH/image80.gif
deleted file mode 100755 (executable)
index 399af0a..0000000
Binary files a/doc/salome/gui/SMESH/image80.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image82.gif b/doc/salome/gui/SMESH/image82.gif
deleted file mode 100755 (executable)
index 93c6c9b..0000000
Binary files a/doc/salome/gui/SMESH/image82.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image83.gif b/doc/salome/gui/SMESH/image83.gif
deleted file mode 100755 (executable)
index 331b64a..0000000
Binary files a/doc/salome/gui/SMESH/image83.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image84.gif b/doc/salome/gui/SMESH/image84.gif
deleted file mode 100755 (executable)
index ea8ec56..0000000
Binary files a/doc/salome/gui/SMESH/image84.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image88.gif b/doc/salome/gui/SMESH/image88.gif
deleted file mode 100755 (executable)
index b2d4b73..0000000
Binary files a/doc/salome/gui/SMESH/image88.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image91.gif b/doc/salome/gui/SMESH/image91.gif
deleted file mode 100755 (executable)
index a09ab9e..0000000
Binary files a/doc/salome/gui/SMESH/image91.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image92.gif b/doc/salome/gui/SMESH/image92.gif
deleted file mode 100755 (executable)
index 9e0517f..0000000
Binary files a/doc/salome/gui/SMESH/image92.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image94.gif b/doc/salome/gui/SMESH/image94.gif
deleted file mode 100755 (executable)
index 7313f5d..0000000
Binary files a/doc/salome/gui/SMESH/image94.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image95.gif b/doc/salome/gui/SMESH/image95.gif
deleted file mode 100755 (executable)
index 6491f27..0000000
Binary files a/doc/salome/gui/SMESH/image95.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image96.gif b/doc/salome/gui/SMESH/image96.gif
deleted file mode 100755 (executable)
index 1392ee7..0000000
Binary files a/doc/salome/gui/SMESH/image96.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image97.gif b/doc/salome/gui/SMESH/image97.gif
deleted file mode 100755 (executable)
index 480b584..0000000
Binary files a/doc/salome/gui/SMESH/image97.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image98.gif b/doc/salome/gui/SMESH/image98.gif
deleted file mode 100755 (executable)
index 5f375b7..0000000
Binary files a/doc/salome/gui/SMESH/image98.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/note1.gif b/doc/salome/gui/SMESH/note1.gif
deleted file mode 100755 (executable)
index b53e21d..0000000
Binary files a/doc/salome/gui/SMESH/note1.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/pics/exemple.gif b/doc/salome/gui/SMESH/pics/exemple.gif
deleted file mode 100755 (executable)
index 6350d17..0000000
Binary files a/doc/salome/gui/SMESH/pics/exemple.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/texture_horiz_ltbluebubbles.jpg b/doc/salome/gui/SMESH/texture_horiz_ltbluebubbles.jpg
deleted file mode 100755 (executable)
index a10d494..0000000
Binary files a/doc/salome/gui/SMESH/texture_horiz_ltbluebubbles.jpg and /dev/null differ
diff --git a/doc/salome/gui/SMESH/whestart.ico b/doc/salome/gui/SMESH/whestart.ico
deleted file mode 100755 (executable)
index 110f183..0000000
Binary files a/doc/salome/gui/SMESH/whestart.ico and /dev/null differ
diff --git a/doc/salome/gui/SMESH/whgdata/whexpbar.gif b/doc/salome/gui/SMESH/whgdata/whexpbar.gif
deleted file mode 100755 (executable)
index e677dc6..0000000
Binary files a/doc/salome/gui/SMESH/whgdata/whexpbar.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/whrstart.ico b/doc/salome/gui/SMESH/whrstart.ico
deleted file mode 100755 (executable)
index bffcd6e..0000000
Binary files a/doc/salome/gui/SMESH/whrstart.ico and /dev/null differ
diff --git a/doc/salome/gui/SMESH/whstart.ico b/doc/salome/gui/SMESH/whstart.ico
deleted file mode 100755 (executable)
index 365ecea..0000000
Binary files a/doc/salome/gui/SMESH/whstart.ico and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_fts_h.gif b/doc/salome/gui/SMESH/wht_fts_h.gif
deleted file mode 100755 (executable)
index feb79ae..0000000
Binary files a/doc/salome/gui/SMESH/wht_fts_h.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_fts_n.gif b/doc/salome/gui/SMESH/wht_fts_n.gif
deleted file mode 100755 (executable)
index 8483be4..0000000
Binary files a/doc/salome/gui/SMESH/wht_fts_n.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_glo_h.gif b/doc/salome/gui/SMESH/wht_glo_h.gif
deleted file mode 100755 (executable)
index 12223e5..0000000
Binary files a/doc/salome/gui/SMESH/wht_glo_h.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_glo_n.gif b/doc/salome/gui/SMESH/wht_glo_n.gif
deleted file mode 100755 (executable)
index 32803eb..0000000
Binary files a/doc/salome/gui/SMESH/wht_glo_n.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_go.gif b/doc/salome/gui/SMESH/wht_go.gif
deleted file mode 100755 (executable)
index 106f1d1..0000000
Binary files a/doc/salome/gui/SMESH/wht_go.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_hide.gif b/doc/salome/gui/SMESH/wht_hide.gif
deleted file mode 100755 (executable)
index 6ec602d..0000000
Binary files a/doc/salome/gui/SMESH/wht_hide.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_idx_h.gif b/doc/salome/gui/SMESH/wht_idx_h.gif
deleted file mode 100755 (executable)
index 2df1b16..0000000
Binary files a/doc/salome/gui/SMESH/wht_idx_h.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_idx_n.gif b/doc/salome/gui/SMESH/wht_idx_n.gif
deleted file mode 100755 (executable)
index fd193a0..0000000
Binary files a/doc/salome/gui/SMESH/wht_idx_n.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_logo1.gif b/doc/salome/gui/SMESH/wht_logo1.gif
deleted file mode 100755 (executable)
index 2ef5700..0000000
Binary files a/doc/salome/gui/SMESH/wht_logo1.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_logo2.gif b/doc/salome/gui/SMESH/wht_logo2.gif
deleted file mode 100755 (executable)
index 2ac62e8..0000000
Binary files a/doc/salome/gui/SMESH/wht_logo2.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_next.gif b/doc/salome/gui/SMESH/wht_next.gif
deleted file mode 100755 (executable)
index 8ea834d..0000000
Binary files a/doc/salome/gui/SMESH/wht_next.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_next_g.gif b/doc/salome/gui/SMESH/wht_next_g.gif
deleted file mode 100755 (executable)
index c0e9758..0000000
Binary files a/doc/salome/gui/SMESH/wht_next_g.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_prev.gif b/doc/salome/gui/SMESH/wht_prev.gif
deleted file mode 100755 (executable)
index b7eaba8..0000000
Binary files a/doc/salome/gui/SMESH/wht_prev.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_prev_g.gif b/doc/salome/gui/SMESH/wht_prev_g.gif
deleted file mode 100755 (executable)
index 8647909..0000000
Binary files a/doc/salome/gui/SMESH/wht_prev_g.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_spac.gif b/doc/salome/gui/SMESH/wht_spac.gif
deleted file mode 100755 (executable)
index fc25609..0000000
Binary files a/doc/salome/gui/SMESH/wht_spac.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_sync.gif b/doc/salome/gui/SMESH/wht_sync.gif
deleted file mode 100755 (executable)
index 0ef1747..0000000
Binary files a/doc/salome/gui/SMESH/wht_sync.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_tab0.gif b/doc/salome/gui/SMESH/wht_tab0.gif
deleted file mode 100755 (executable)
index 955c42f..0000000
Binary files a/doc/salome/gui/SMESH/wht_tab0.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_tab1.gif b/doc/salome/gui/SMESH/wht_tab1.gif
deleted file mode 100755 (executable)
index b3ec41d..0000000
Binary files a/doc/salome/gui/SMESH/wht_tab1.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_tab2.gif b/doc/salome/gui/SMESH/wht_tab2.gif
deleted file mode 100755 (executable)
index 08fb0ce..0000000
Binary files a/doc/salome/gui/SMESH/wht_tab2.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_tab3.gif b/doc/salome/gui/SMESH/wht_tab3.gif
deleted file mode 100755 (executable)
index 1819c8e..0000000
Binary files a/doc/salome/gui/SMESH/wht_tab3.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_tab4.gif b/doc/salome/gui/SMESH/wht_tab4.gif
deleted file mode 100755 (executable)
index 1a6fc4f..0000000
Binary files a/doc/salome/gui/SMESH/wht_tab4.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_tab5.gif b/doc/salome/gui/SMESH/wht_tab5.gif
deleted file mode 100755 (executable)
index 9340192..0000000
Binary files a/doc/salome/gui/SMESH/wht_tab5.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_tab6.gif b/doc/salome/gui/SMESH/wht_tab6.gif
deleted file mode 100755 (executable)
index fe312d2..0000000
Binary files a/doc/salome/gui/SMESH/wht_tab6.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_tab7.gif b/doc/salome/gui/SMESH/wht_tab7.gif
deleted file mode 100755 (executable)
index 3b95ae2..0000000
Binary files a/doc/salome/gui/SMESH/wht_tab7.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_tab8.gif b/doc/salome/gui/SMESH/wht_tab8.gif
deleted file mode 100755 (executable)
index c80acc8..0000000
Binary files a/doc/salome/gui/SMESH/wht_tab8.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_toc1.gif b/doc/salome/gui/SMESH/wht_toc1.gif
deleted file mode 100755 (executable)
index 515c352..0000000
Binary files a/doc/salome/gui/SMESH/wht_toc1.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_toc2.gif b/doc/salome/gui/SMESH/wht_toc2.gif
deleted file mode 100755 (executable)
index 2e3d6c8..0000000
Binary files a/doc/salome/gui/SMESH/wht_toc2.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_toc3.gif b/doc/salome/gui/SMESH/wht_toc3.gif
deleted file mode 100755 (executable)
index 330f369..0000000
Binary files a/doc/salome/gui/SMESH/wht_toc3.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_toc4.gif b/doc/salome/gui/SMESH/wht_toc4.gif
deleted file mode 100755 (executable)
index 3f9a036..0000000
Binary files a/doc/salome/gui/SMESH/wht_toc4.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_toc_h.gif b/doc/salome/gui/SMESH/wht_toc_h.gif
deleted file mode 100755 (executable)
index fe20f68..0000000
Binary files a/doc/salome/gui/SMESH/wht_toc_h.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_toc_n.gif b/doc/salome/gui/SMESH/wht_toc_n.gif
deleted file mode 100755 (executable)
index ce28310..0000000
Binary files a/doc/salome/gui/SMESH/wht_toc_n.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_ws.gif b/doc/salome/gui/SMESH/wht_ws.gif
deleted file mode 100755 (executable)
index 563db8b..0000000
Binary files a/doc/salome/gui/SMESH/wht_ws.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/wht_ws_g.gif b/doc/salome/gui/SMESH/wht_ws_g.gif
deleted file mode 100755 (executable)
index 3056b75..0000000
Binary files a/doc/salome/gui/SMESH/wht_ws_g.gif and /dev/null differ
diff --git a/doc/salome/tui/Makefile.in b/doc/salome/tui/Makefile.in
deleted file mode 100644 (file)
index 894cc0c..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Vasily Rusyaev (Open Cascade NN)
-#  Module : doc
-#  $Header: 
-
-top_srcdir=@top_srcdir@
-top_builddir=../../..
-root_srcdir=@ROOT_SRCDIR@
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-doxygen=@DOXYGEN@
-
-@COMMENCE@
-
-PYTHON_SCRIPTS = \
-       smesh.py
-
-docs:
-       cp -fr $(srcdir)/SMESH ./INPUT; \
-       cd INPUT; \
-       sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \
-       mv -f doxyfile1 doxyfile; \
-       $(doxygen) ./doxyfile; \
-       mkdir py1; mkdir py2; \
-       cd ..
-       for file in $(PYTHON_SCRIPTS) dummy; do \
-         if [ $$file != "dummy" ]; then \
-           cp $(root_srcdir)/src/SMESH_SWIG/$$file INPUT/py1/; \
-         fi ; \
-       done
-       cd INPUT; \
-       python $(KERNEL_ROOT_DIR)/doc/salome/tui/KERNEL/pythfilter.py ./py1 ./py2; \
-       sed 's|list_py_files_to_process|$(PYTHON_SCRIPTS)|' ./doxyfile_py > py2/doxyfile_py; \
-       cd py2; \
-       $(doxygen) ./doxyfile_py; \
-       cd ../..; \
-       cp -fr $(srcdir)/SMESH/sources/static/*.* ./SMESH/
-       cp -fr $(srcdir)/SMESH/sources/ SMESH/
-       cp -fr $(srcdir)/SMESH/HTML/ SMESH/
-       rm -fr INPUT
-
-clean:
-       rm -fr SMESH
-
-distclean: clean
-       rm -fr INPUT
-
-install:
-       $(INSTALL) -d $(docdir); \
-       mkdir -p $(docdir)/tui
-       cp -fr SMESH $(docdir)/tui
-
-uninstall:
-       rm -fr $(docdir)/tui/SMESH
diff --git a/doc/salome/tui/SMESH/HTML/SMESH_BasicHypothesis.html b/doc/salome/tui/SMESH/HTML/SMESH_BasicHypothesis.html
deleted file mode 100644 (file)
index 8007326..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-<HTML><b>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_LocalLength</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetLength ( in double length )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetLength ( length )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>double  GetLength (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetLength (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_NumberOfSegments</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetNumberOfSegments ( in long segmentsNumber )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetNumberOfSegments ( segmentsNumber )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  GetNumberOfSegments (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNumberOfSegments (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetScaleFactor ( in double scaleFactor )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetScaleFactor ( scaleFactor )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>double  GetScaleFactor (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetScaleFactor (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_Arithmetic1D</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetLength ( in double length, in boolean isStartLength )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetLength ( length, isStartLength )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>double  GetLength ( in boolean isStartLength )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetLength ( isStartLength )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_MaxElementArea</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetMaxElementArea ( in double area )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetMaxElementArea ( area )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>double  GetMaxElementArea (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetMaxElementArea (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_LengthFromEdges</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetMode ( in long mode )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetMode ( mode )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  GetMode (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetMode (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_StartEndLength</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetLength ( in double length, in boolean isStartLength )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetLength ( length, isStartLength )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>double  GetLength ( in boolean isStartLength )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetLength ( isStartLength )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_Deflection1D</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetDeflection ( in double deflection )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetDeflection ( deflection )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>double  GetDeflection (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetDeflection (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_MaxElementVolume</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetMaxElementVolume ( in double volume )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetMaxElementVolume ( volume )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>double  GetMaxElementVolume (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetMaxElementVolume (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_NotConformAllowed</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_Propagation</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_Regular_1D</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_MEFISTO_2D</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_Quadrangle_2D</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface StdMeshers_Hexa_3D</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-</table><br>
-</b></HTML>
diff --git a/doc/salome/tui/SMESH/HTML/SMESH_Gen.html b/doc/salome/tui/SMESH/HTML/SMESH_Gen.html
deleted file mode 100644 (file)
index 8fdf3b2..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<HTML><b>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Gen</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>FilterManager  CreateFilterManager (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = CreateFilterManager (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Pattern  GetPattern (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetPattern (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void SetCurrentStudy ( in Study theStudy )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>SetCurrentStudy ( theStudy )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>Study  GetCurrentStudy (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetCurrentStudy (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Hypothesis  CreateHypothesis ( in string theHypName, in string theLibName )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = CreateHypothesis ( theHypName, theLibName )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Mesh  CreateMesh ( in GEOM_Object theObject )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = CreateMesh ( theObject )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Mesh  CreateMeshesFromUNV ( in string theFileName )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = CreateMeshesFromUNV ( theFileName )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>mesh_array  CreateMeshesFromMED ( in string theFileName, out DriverMED_ReadStatus theStatus )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  theStatus ] = CreateMeshesFromMED ( theFileName )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Mesh  CreateMeshesFromSTL ( in string theFileName )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = CreateMeshesFromSTL ( theFileName )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  Compute ( in SMESH_Mesh theMesh, in GEOM_Object theSubObject )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = Compute ( theMesh, theSubObject )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsReadyToCompute ( in SMESH_Mesh theMesh, in GEOM_Object theSubObject )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsReadyToCompute ( theMesh, theSubObject )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long_array  GetSubShapesId ( in GEOM_Object theMainObject, in object_array theListOfSubObjects )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetSubShapesId ( theMainObject, theListOfSubObjects )</b></div></td>
-</tr>
-</table><br>
-</b></HTML>
diff --git a/doc/salome/tui/SMESH/HTML/SMESH_Hypothesis.html b/doc/salome/tui/SMESH/HTML/SMESH_Hypothesis.html
deleted file mode 100644 (file)
index ff9d3d6..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<HTML><b>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Hypothesis</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>string  GetName (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetName (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>string  GetLibName (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetLibName (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  GetId (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetId (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Algo</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>ListOfHypothesisName  GetCompatibleHypothesis (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetCompatibleHypothesis (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_1D_Algo</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_2D_Algo</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_3D_Algo</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-</table><br>
-</b></HTML>
diff --git a/doc/salome/tui/SMESH/HTML/SMESH_Mesh.html b/doc/salome/tui/SMESH/HTML/SMESH_Mesh.html
deleted file mode 100644 (file)
index 527298f..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-<HTML><b>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Mesh</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_subMesh  GetSubMesh ( in GEOM_Object aSubObject, in string name )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetSubMesh ( aSubObject, name )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void RemoveSubMesh ( in SMESH_subMesh aSubMesh )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>RemoveSubMesh ( aSubMesh )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Group  CreateGroup ( in ElementType elem_type, in string name )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = CreateGroup ( elem_type, name )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Group  CreateGroupFromGEOM ( in ElementType elem_type, in string name, in GEOM_Object theGEOMGroup )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = CreateGroupFromGEOM ( elem_type, name, theGEOMGroup )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void RemoveGroup ( in SMESH_Group aGroup )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>RemoveGroup ( aGroup )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void RemoveGroupWithContents ( in SMESH_Group aGroup )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>RemoveGroupWithContents ( aGroup )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Group  UnionGroups ( in SMESH_Group aGroup1, in SMESH_Group aGroup2, in string name )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = UnionGroups ( aGroup1, aGroup2, name )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Group  IntersectGroups ( in SMESH_Group aGroup1, in SMESH_Group aGroup2, in string name )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = IntersectGroups ( aGroup1, aGroup2, name )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Group  CutGroups ( in SMESH_Group aMainGroup, in SMESH_Group aToolGroup, in string name )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = CutGroups ( aMainGroup, aToolGroup, name )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>Hypothesis_Status  AddHypothesis ( in GEOM_Object aSubObject, in SMESH_Hypothesis anHyp )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddHypothesis ( aSubObject, anHyp )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>Hypothesis_Status  RemoveHypothesis ( in GEOM_Object aSubObject, in SMESH_Hypothesis anHyp )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = RemoveHypothesis ( aSubObject, anHyp )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>ListOfHypothesis  GetHypothesisList ( in GEOM_Object aSubObject )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetHypothesisList ( aSubObject )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>log_array  GetLog ( in boolean clearAfterGet )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetLog ( clearAfterGet )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void ClearLog (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>ClearLog (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  GetId (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetId (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  GetStudyId (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetStudyId (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_MeshEditor  GetMeshEditor (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetMeshEditor (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void ExportDAT ( in string file )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>ExportDAT ( file )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void ExportMED ( in string file, in boolean auto_groups )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>ExportMED ( file, auto_groups )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void ExportUNV ( in string file )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>ExportUNV ( file )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void ExportSTL ( in string file, in boolean isascii )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>ExportSTL ( file, isascii )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>MESH  GetMEDMesh (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetMEDMesh (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbNodes (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbNodes (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbEdges (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbEdges (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbFaces (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbFaces (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbTriangles (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbTriangles (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbQuadrangles (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbQuadrangles (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbVolumes (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbVolumes (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbTetras (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbTetras (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbHexas (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbHexas (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbPyramids (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbPyramids (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbPrisms (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbPrisms (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  NbSubMesh (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbSubMesh (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>string  Dump (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = Dump (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_subMesh</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  GetNumberOfElements (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNumberOfElements (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  GetNumberOfNodes ( in boolean all )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNumberOfNodes ( all )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long_array  GetElementsId (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetElementsId (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long_array  GetElementsByType ( in ElementType theType )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetElementsByType ( theType )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long_array  GetNodesId (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNodesId (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Mesh  GetFather (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetFather (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>long  GetId (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetId (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>FAMILY  GetFamily (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetFamily (  )</b></div></td>
-</tr>
-</table><br>
-<table width="100%" BORDER>
-<tr bgcolor="#FFFFCC">
-<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_MeshEditor</i></div></b></font></td>
-</tr>
-<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
-<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  RemoveElements ( in long_array IDsOfElements )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = RemoveElements ( IDsOfElements )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  RemoveNodes ( in long_array IDsOfNodes )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = RemoveNodes ( IDsOfNodes )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  AddNode ( in double x, in double y, in double z )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddNode ( x, y, z )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  AddEdge ( in long_array IDsOfNodes )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddEdge ( IDsOfNodes )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  AddFace ( in long_array IDsOfNodes )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddFace ( IDsOfNodes )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  AddVolume ( in long_array IDsOfNodes )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddVolume ( IDsOfNodes )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  MoveNode ( in long NodeID, in double x, in double y, in double z )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = MoveNode ( NodeID, x, y, z )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  InverseDiag ( in long NodeID1, in long NodeID2 )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = InverseDiag ( NodeID1, NodeID2 )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  DeleteDiag ( in long NodeID1, in long NodeID2 )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = DeleteDiag ( NodeID1, NodeID2 )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  Reorient ( in long_array IDsOfElements )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = Reorient ( IDsOfElements )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  TriToQuad ( in long_array IDsOfElements, in NumericalFunctor Criterion, in double MaxAngle )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = TriToQuad ( IDsOfElements, Criterion, MaxAngle )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  QuadToTri ( in long_array IDsOfElements, in NumericalFunctor Criterion )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = QuadToTri ( IDsOfElements, Criterion )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  SplitQuad ( in long_array IDsOfElements, in boolean Diag13 )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = SplitQuad ( IDsOfElements, Diag13 )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  Smooth ( in long_array IDsOfElements, in long_array IDsOfFixedNodes, in long MaxNbOfIterations, in double MaxAspectRatio, in Smooth_Method Method )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = Smooth ( IDsOfElements, IDsOfFixedNodes, MaxNbOfIterations, MaxAspectRatio, Method )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void RenumberNodes (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>RenumberNodes (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void RenumberElements (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>RenumberElements (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void RotationSweep ( in long_array IDsOfElements, in AxisStruct Axix, in double AngleInRadians, in long NbOfSteps, in double Tolerance )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>RotationSweep ( IDsOfElements, Axix, AngleInRadians, NbOfSteps, Tolerance )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void ExtrusionSweep ( in long_array IDsOfElements, in DirStruct StepVector, in long NbOfSteps )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>ExtrusionSweep ( IDsOfElements, StepVector, NbOfSteps )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void Mirror ( in long_array IDsOfElements, in AxisStruct Mirror, in MirrorType theMirrorType, in boolean Copy )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>Mirror ( IDsOfElements, Mirror, theMirrorType, Copy )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void Translate ( in long_array IDsOfElements, in DirStruct Vector, in boolean Copy )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>Translate ( IDsOfElements, Vector, Copy )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void Rotate ( in long_array IDsOfElements, in AxisStruct Axis, in double AngleInRadians, in boolean Copy )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>Rotate ( IDsOfElements, Axis, AngleInRadians, Copy )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void FindCoincidentNodes ( in double Tolerance, out array_of_long_array GroupsOfNodes )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>GroupsOfNodes = FindCoincidentNodes ( Tolerance )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void MergeNodes ( in array_of_long_array GroupsOfNodes )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>MergeNodes ( GroupsOfNodes )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>void MergeEqualElements (  )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>MergeEqualElements (  )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  SewFreeBorders ( in long FirstNodeID1, in long SecondNodeID1, in long LastNodeID1, in long FirstNodeID2, in long SecondNodeID2, in long LastNodeID2 )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = SewFreeBorders ( FirstNodeID1, SecondNodeID1, LastNodeID1, FirstNodeID2, SecondNodeID2, LastNodeID2 )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  SewConformFreeBorders ( in long FirstNodeID1, in long SecondNodeID1, in long LastNodeID1, in long FirstNodeID2, in long SecondNodeID2 )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = SewConformFreeBorders ( FirstNodeID1, SecondNodeID1, LastNodeID1, FirstNodeID2, SecondNodeID2 )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  SewBorderToSide ( in long FirstNodeIDOnFreeBorder, in long SecondNodeIDOnFreeBorder, in long LastNodeIDOnFreeBorder, in long FirstNodeIDOnSide, in long LastNodeIDOnSide )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = SewBorderToSide ( FirstNodeIDOnFreeBorder, SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder, FirstNodeIDOnSide, LastNodeIDOnSide )</b></div></td>
-</tr>
-<tr>
-<td bgcolor= "lightgreen"><div align="center"><b>boolean  SewSideElements ( in long_array IDsOfSide1Elements, in long_array IDsOfSide2Elements, in long NodeID1OfSide1ToMerge, in long NodeID1OfSide2ToMerge, in long NodeID2OfSide1ToMerge, in long NodeID2OfSide2ToMerge )</b></div></td>
-<td bgcolor= "lightgreen"><div align="center"><b>return_value = SewSideElements ( IDsOfSide1Elements, IDsOfSide2Elements, NodeID1OfSide1ToMerge, NodeID1OfSide2ToMerge, NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge )</b></div></td>
-</tr>
-</table><br>
-</b></HTML>
diff --git a/doc/salome/tui/SMESH/sources/Application-About.png b/doc/salome/tui/SMESH/sources/Application-About.png
deleted file mode 100755 (executable)
index 7b58330..0000000
Binary files a/doc/salome/tui/SMESH/sources/Application-About.png and /dev/null differ
diff --git a/doc/salome/tui/SMESH/sources/Application-About1.jpg b/doc/salome/tui/SMESH/sources/Application-About1.jpg
deleted file mode 100755 (executable)
index cf7ab8b..0000000
Binary files a/doc/salome/tui/SMESH/sources/Application-About1.jpg and /dev/null differ
diff --git a/doc/salome/tui/SMESH/sources/application.gif b/doc/salome/tui/SMESH/sources/application.gif
deleted file mode 100644 (file)
index 0b05d5c..0000000
Binary files a/doc/salome/tui/SMESH/sources/application.gif and /dev/null differ
diff --git a/doc/salome/tui/SMESH/sources/application.jpg b/doc/salome/tui/SMESH/sources/application.jpg
deleted file mode 100755 (executable)
index a6979ab..0000000
Binary files a/doc/salome/tui/SMESH/sources/application.jpg and /dev/null differ
diff --git a/doc/salome/tui/SMESH/sources/bg_salome.gif b/doc/salome/tui/SMESH/sources/bg_salome.gif
deleted file mode 100755 (executable)
index 677b704..0000000
Binary files a/doc/salome/tui/SMESH/sources/bg_salome.gif and /dev/null differ
diff --git a/doc/salome/tui/SMESH/sources/logocorp.gif b/doc/salome/tui/SMESH/sources/logocorp.gif
deleted file mode 100755 (executable)
index 7697e08..0000000
Binary files a/doc/salome/tui/SMESH/sources/logocorp.gif and /dev/null differ
diff --git a/doc/salome/tui/SMESH/sources/myheader.html b/doc/salome/tui/SMESH/sources/myheader.html
deleted file mode 100755 (executable)
index 83ca543..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
-   <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-&nbsp;
-<center><table WIDTH="96%" >
-<tr>
-<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
-
-
-<td>
-<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
-</td>
-</tr>
-</table></center>
-
-
-</body>
-</html>
diff --git a/doc/salome/tui/SMESH/sources/myheader_py2.html b/doc/salome/tui/SMESH/sources/myheader_py2.html
deleted file mode 100755 (executable)
index 372b224..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
-   <title>Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-&nbsp;
-<center><table WIDTH="96%" >
-<tr>
-<td><a href="http://www.opencascade.com"><img src="../sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
-
-
-<td>
-<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="../sources/application.gif" BORDER=0 height=46 width=108></a></div>
-</td>
-</tr>
-</table></center>
-
-
-</body>
-</html>
diff --git a/doc/salome/tui/SMESH/sources/occ.gif b/doc/salome/tui/SMESH/sources/occ.gif
deleted file mode 100755 (executable)
index ce017c8..0000000
Binary files a/doc/salome/tui/SMESH/sources/occ.gif and /dev/null differ
diff --git a/doc/salome/tui/SMESH/sources/static/PluginMeshers.html b/doc/salome/tui/SMESH/sources/static/PluginMeshers.html
deleted file mode 100755 (executable)
index f860aef..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-    
-  <meta http-equiv="Content-Type"
- content="text/html; charset=iso-8859-1">
-    
-  <meta name="GENERATOR"
- content="Mozilla/4.79 [en] (X11; U; SunOS 5.6 sun4u) [Netscape]">
-  <title>Main Page</title>
-     
-  <link href="doxygen.css" rel="stylesheet" type="text/css">
-</head>
-  <body>
- &nbsp; 
-<center>
-<table width="96%">
- <tbody>
-    <tr>
- <td> 
-      <h1> <a href="http://www.opencascade.com"><img
- src="sources/logocorp.gif" border="0" height="46" width="122"
- align="left">
-      </a></h1>
- </td>
-  <td> 
-      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img
- src="sources/application.gif" border="0" height="46" width="108"
- align="right">
-      </a></div>
- </td>
- </tr>
-  </tbody>
-</table>
-</center>
-  
-<center> 
-<h1> <a name="page2"></a>How to add your own mesher</h1>
-</center>
-  
-<center> 
-<h1> (as a set of hypotheses and algorithms)</h1>
-</center>
-  
-<center> 
-<h1> to the application.</h1>
-</center>
-  
-<h2> <a name="cont"></a>Table of contents</h2>
-  
-<ul>
- <li> <b><i><a href="#1">1. Introduction</a></i></b></li>
-  <li> <b><i><a href="#2">2. Implementation steps</a></i></b></li>
-  
-  <ul>
- <li> <b><i><a href="#2_1">2.1. Mesher plugin package</a></i></b></li>
-    <li>     <b><i><a href="#2_2">2.2. List of available hypotheses and algorithms</a></i></b></li>
-  <li> <b><i><a href="#2_3">2.3. Build server plugin library</a></i></b></li>
-  
-    <ul>
- <li> <b><i><a href="#2_3_1">2.3.1. Define interface to your hypotheses and
-algorithms</a></i></b></li>
-  <li> <b><i><a href="#2_3_2">2.3.2. Implement functionality of your hypotheses 
-and algorithms</a></i></b></li>
-  <li> <b><i><a href="#2_3_3">2.3.3. Implement interface to your hypotheses
-and algorithms</a></i></b></li>
-  <li> <b><i><a href="#2_3_4">2.3.4. Implement being exported method</a></i></b></li>
-    </ul>
-  <li> <b><i><a href="#2_4">2.4. Build client (GUI) plugin library</a></i></b></li>
-  
-    <ul>
- <li> <b><i><a href="#2_4_1">2.4.1. Implement the required GUI</a></i></b></li>
-  <li> <b><i><a href="#2_4_2">2.4.2. Provide icons and messages for your
-GUI</a></i></b></li>
-  <li> <b><i><a href="#2_4_3">2.4.3. Implement your hypotheses creator and
-being exported method</a></i></b></li>
-    </ul>
-  <li> <b><i><a href="#2_5">2.5. Provide icons for Object Browser</a></i></b></li>
-    <li> <b><i><a href="#2_6">2.6. Setup SALOME environment</a></i></b></li>
-    <ul type="square">
-      <li><b><i><a href="#2_6_1">2.6.1. Set LD_LIBRARY_PATH, PYTHONPATH,
-PATH environment variables</a></i></b></li>
-      <li><b><i><a href="#2_6_2">2.6.2. Set mesher plugin resources environment
-variable</a><br>
-        </i></b></li>
-    </ul>
-  </ul>
-</ul>
-  
-<h2> <a name="1"></a>1. Introduction</h2>
- All hypotheses and algorithms are available in SMESH module via plugin mechanism.
-Such approach allows easily to introduce new hypotheses and algorithms types
-to the application. Also, it makes possible the customization of available
-hypotheses and algorithms list for different users without recompilation
-of sources.<br>
-The goal of this document is to describe the process of creation external
-mesher plugins. 
-<p><i><a href="#cont">Back to the contents</a></i> </p>
-<h2> <a name="2"></a>2. Implementation steps</h2>
-  
-<h3> 
-<h3> <a name="2_1"></a>2.1. <small>Mesher plugin package</small></h3>
-</h3>
-Create your mesher plugin package which will contain the sources files, e.g.
-&nbsp;MyMesherPlugin.<br>
-<br>
-<i><a
- href="file:///home/vsr-local/work/SALOME/SALOME2/SMESH_SRC/doc/salome/tui/SMESH/sources/static/PluginMeshers.html#cont">Back
-to the contents</a></i><br>
-<h3><a name="2_2"></a>2.2. List of available hypotheses and algorithms</h3>
-Create XML file to describe all algorithms and hypotheses, provided by your
-plugin package (see SMESH_SRC/resources/SMESH_Meshers.xml for example).<br>
-<blockquote><small><tt><big>&lt;meshers-group name="MyName"<br>
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resources="MyResourceKey"<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-server-lib="libMyServerLib.so"<br>
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gui-lib="libMyClientLib.so"&gt;<br>
-&nbsp; &nbsp; &nbsp;&lt;hypotheses&gt;<br>
-&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&lt;hypothesis type="MyHypType1"<br>
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp;&nbsp; label-id="My beautiful hypothesis name"<br>
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp; icon-id="my_hypo_1_icon.png"/&gt;<br>
-&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &lt;/hypotheses&gt;<br>
-&nbsp;&nbsp;&nbsp;&nbsp; &lt;algorithms&gt;<br>
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &lt;algorithm type="MyAlgType1"<br>
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp;&nbsp; &nbsp;label-id="My beautiful algorithm name"<br>
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp;&nbsp; icon-id="my_algo_1_icon.png"/&gt;<br>
-&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/algorithms&gt;<br>
-&lt;/meshers-group&gt;<br>
-  </big></tt></small><br>
-  <ul>
-    <li>Attributes of &lt;meshers-group&gt; tag:</li>
-  </ul>
-  <blockquote>
-    <ul type="circle">
-      <li>value of &lt;name&gt; attribute is used to collect hypotheses/algoritms
-in groups; you can also use this attribute for short description of your
-mesher plugin.</li>
-      <li>value of &lt;resources&gt; attribute (MyResourceKey) is used to
-access resources (messages and icons) from GUI (see paragraphs <a
- href="#2_4_2">2.4.2</a> and <a href="#2_5">2.5</a>); in the current implementation
-it should coincide with the name of plugin package; this limitation will
-be eliminated in the further development.</li>
-      <li>value of &lt;server-lib&gt; attribute describes the name of your
-mesher's server plugin library (See paragraph <a href="#2_3">2.3</a>)</li>
-      <li>value of &lt;gui-lib&gt; attribute describes the name of your mesher's
-client plugin library (See paragraph <a href="#2_4">2.4</a>)</li>
-    </ul>
-  </blockquote>
-  <ul>
-    <li>Attributes of &lt;hypothesis/algorithm&gt; tag:</li>
-  </ul>
-  <blockquote>
-    <ul type="circle">
-      <li>value of &lt;type&gt; attribute is an unique name of the hypothesis/algorithm</li>
-    </ul>
-    <ul type="circle">
-      <ul type="square">
-        <li>It is a value of _name field of your hypothesis class (see paragraph
-          <a href="#2_3">2.3</a>, implementation of constructor of StdMeshers_LocalLength
-class: _name = "LocalLength")</li>
-        <li>It is a key to each certain hypothesis class (see paragraph <a
- href="#2_3">2.3</a>, implementation of "GetHypothesisCreator()" method in
-StdMeshers_i.cxx)</li>
-        <li>It is a key to each certain hypothesis GUI (see paragraph <a
- href="#2_4">2.4</a>, implementation of "StdMeshersGUI_HypothesisCreator::CreateHypothesis()"
-and "StdMeshersGUI_HypothesisCreator::EditHypothesis()" methods in StdMeshersGUI.cxx)</li>
-        <li>It is a key to each certain hypothesis icon in Object Browser
-(see paragraph <a href="#2_4_2_1">2.4.2.1</a>)</li>
-      </ul>
-    </ul>
-  </blockquote>
-  <blockquote>
-    <ul type="circle">
-      <li>value of &lt;label-id&gt; attribute is displayed in the GUI in
-the list of available hypotheses/algorithms ("Create Hypothesis/Algorithm"
-dialog)</li>
-      <li>value of &lt;icon-id&gt; attribute is a name of icon file, which
-is displayed in GUI in the list of available hypotheses/algorithms ("Create
-Hypothesis/Algorithm" dialog)</li>
-    </ul>
-  </blockquote>
-Note: All attributes values are accessible in your GUI via HypothesisData
-class (see paragraph <a href="#2_4_1">2.4.1</a>)<br>
-  <br>
-Note: The environment variable SMESH_MeshersList contains the list of plugins
-names, separated by colon (":") symbol, e.g.:<br>
-  <br>
-  <tt>&nbsp;&nbsp;&nbsp; setenv SMESH_MeshersList StdMeshers:NETGENPlugin</tt><br>
-  <br>
-Please, pay attention that StdMeshers should also be included into this environment
-variable, if you want to use standard hypotheses/algorithms, provided with
-SMESH module.<br>
-  <br>
-The SALOME automatically locates XML files, searching them in the following
-directories:<br>
-  <tt><br>
-&nbsp;&nbsp;&nbsp; ${&lt;PLUGINNAME&gt;_ROOT_DIR}/share/salome/resources<br>
-&nbsp;&nbsp;&nbsp; ${SALOME_&lt;PluginName&gt;Resources}<br>
-&nbsp;&nbsp;&nbsp; ${HOME}/.salome/resources<br>
-&nbsp;&nbsp;&nbsp; ${KERNEL_ROOT_DIR}/share/salome/resources</tt><br>
-  <br>
-where &lt;PluginName&gt; is a name of each mesher plugin package<br>
-</blockquote>
-<i><a href="#cont">Back to the contents</a></i> 
-<h3> <a name="2_3"></a>2.3. Build server plugin library &lt;libMyServerLib.so&gt;.</h3>
-  
-<h4> <a name="2_3_1"></a>2.3.1. Define interface to your hypotheses and algorithms.</h4>
-  
-<blockquote><tt>Example: SMESH_SRC/idl/SMESH_BasicHypothesis.idl<br>
-&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NETGENPLUGIN_SRC/src/NETGENPlugin_Algorithm.idl<br>
-  </tt><tt></tt></blockquote>
-  
-<h4> <a name="2_3_2"></a>2.3.2. Implement functionality of your hypotheses
-and algorithms.</h4>
-  
-<blockquote>Inherit corresponding classes from SMESH. 
-  <p><tt>Example: SMESH_SRC/src/StdMeshers/StdMeshers_*<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NETGENPLUGIN_SRC/src/NETGENPlugin_NETGEN_3D<br>
-  </tt><tt></tt></p>
-</blockquote>
-  
-<h4> <a name="2_3_3"></a>2.3.3.Implement interface to your hypotheses and
-algorithms.</h4>
-  
-<blockquote><tt>Inherit corresponding classes from SMESH_I.</tt> 
-  <p><tt>Example: SMESH_SRC/src/StdMeshers_I/SMESH_*_i<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NETGENPLUGIN_SRC/src/NETGENPlugin_NETGEN_3D_i<br>
-  </tt><tt></tt></p>
-</blockquote>
-  
-<h4> <a name="2_3_4"></a>2.3.4. Implement being exported method.</h4>
-  
-<blockquote><tt>GenericHypothesisCreator_i* GetHypothesisCreator (const char*
-aHypType)</tt> 
-  <p>&lt;aHypType&gt; is a value of &lt;type&gt; attribute in the XML-description
-file</p>
-</blockquote>
-  
-<blockquote><tt>Example: SMESH_SRC/src/StdMeshers_I/StdMeshers_i.cxx<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NETGENPLUGIN_SRC/src/NETGENPlugin_i.cxx<br>
-  </tt><tt></tt></blockquote>
- <i><a href="#cont">Back to the contents</a></i> 
-<h3> <a name="2_4"></a>2.4. Build client (GUI) plugin library &lt;libMyClientLib.so&gt;.</h3>
-  
-<blockquote>This step is required only if your hypotheses/algorithms need 
-specific GUI for their construction.</blockquote>
-  
-<h4> <a name="2_4_1"></a>2.4.1. Implement the required GUI (e.g. construction
-dialog boxes).</h4>
-  
-<blockquote><tt>Example: SMESH_SRC/src/StdMeshersGUI/StdMeshersGUI_*Dlg</tt> 
-  <p>Note: all data from XML-description files is accessible in your GUI
-via HypothesisData class&nbsp; (mySMESHGUI-&gt;GetHypothesisData (aHypType),
-see SMESHGUI_Hypotheses.h for HypothesisData definition)</p>
-</blockquote>
-  
-<h4> <a name="2_4_2"></a>2.4.2. Provide icons and messages for your GUI.</h4>
-  
-<h5> <a name="2_4_2_1"></a>2.4.2.1. Implement resource files</h5>
-  
-<blockquote><tt>MyResourceKey_icons.po and MyResourceKey_msg_en.po</tt> 
-  <p><tt>Example: SMESH_SRC/src/StdMeshersGUI/StdMeshers_*.po<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NETGENPLUGIN_SRC/src/NETGENPlugin_icons.po<br>
-  </tt><br>
-Note: ICON_SMESH_TREE_HYPO_MyHypType1 is ID of icon for Object Browser for
-hypothesis with type="MyHypType1"; ICON_SMESH_TREE_ALGO_MyAlgType1 is ID
-of icon for Object Browser for algorithm with type="MyAlgType1".<br>
-See paragraph 2 for definition of MyResourceKey, MyHypType1, MyAlgType1.<tt><br>
-  </tt></p>
-</blockquote>
-  
-<h5> <a name="2_4_2_2"></a>2.4.2.2. Define environment variable SALOME_&lt;MyResourceKey&gt;Resources</h5>
-<blockquote>It should point to the directory where resources are situated.</blockquote>
-  
-<blockquote><tt>Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources</tt></blockquote>
-  
-<h4> <a name="2_4_3"></a>2.4.3. Implement your Hypothesis Creator and being
-exported method</h4>
-  
-<blockquote><tt>SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator</tt> 
-  <br>
-  <tt>&nbsp; (QString aHypType, QString aServerLibName, SMESHGUI* aSMESHGUI)</tt> 
-  <p>&lt;aHypType&gt; is to pass a value of &lt;type&gt; attribute in XML-description
-file;<br>
-&lt;aServerLibName&gt; is to pass a value of &lt;server-lib&gt; attribute
-in XML-description file. </p>
-  <p><tt>Example: SMESH_SRC/src/StdMeshersGUI/StdMeshersGUI.cxx</tt></p>
-</blockquote>
- <i><a href="#cont">Back to the contents</a></i> 
-<h3> <a name="2_5"></a>2.5. Provide icons for object browser.</h3>
-  
-<blockquote>If your hypotheses/algorithms do not need specific GUI, but you
-want to provide icons for object browser, see <a href="#2_4_2">2.4.2</a> paragrath.<br>
-</blockquote>
-<div align="left">
-<p><i><a
- href="file:///home/vsr-local/work/SALOME/SALOME2/SMESH_SRC/doc/salome/tui/SMESH/sources/static/PluginMeshers.html#cont">Back
-to the contents</a></i> </p>
-</div>
-<h3> <a name="2_6"></a>2.6. Setup your SALOME environment.</h3>
-  
-<h4> <a name="2_6_1"></a>2.6.1.&nbsp; Add your plugin to the LD_LIBRARY_PATH,
-PYTHONPATH (and maybe PATH) environment variables.<br>
-</h4>
-<blockquote><tt>setenv PATH &lt;path-to-my-plugin&gt;/bin/salome:${PATH}<br>
-setenv LD_LIBRARY_PATH &lt;path-to-my-plugin&gt;/lib/salome:${LD_LIBRARY_PATH}<br>
-Setenv PYTHONPATH &lt;path-to-my-plugin&gt;/lib/python2.2/site-packages/salome:${PYTHONPATH}<br>
-  </tt>&nbsp;&nbsp; <br>
-</blockquote>
-<h4> <a name="2_6_2"></a>2.6.2.&nbsp; Set mesher plugin resources environment
-variable</h4>
-<blockquote>&nbsp;This enviroment variable is used to set meshers plugins
-which should be loaded by SMESH module (see <a href="#2_4_2_2">2.4.2.2</a>
-paragraph). Add your plugin to this variable. All plugins are separated by
-colon (":") symbol.<br>
-  <br>
-Note: If you use runSalome.py script from KERNEL package to launch SALOME,
-you may not to set environment variables, because this script sets them itself.
-All what you should do is to add &lt;plugin&gt; section to your ${HOME}/.salome/salome.launch
-file for SMESH module section:<br>
-  <tt><br>
-...<br>
-&lt;modules-list&gt;<br>
-&nbsp;&nbsp;&nbsp; ...<br>
-&nbsp;&nbsp;&nbsp; &lt;module name="SMESH"&gt;<br>
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;plugin name="MyMesher"/&gt;<br>
-&nbsp;&nbsp;&nbsp; &lt;/module&gt;<br>
-&nbsp;&nbsp;&nbsp; ...<br>
-&lt;/modules-list&gt;<br>
-...</tt><br>
-</blockquote>
-<i><a href="#cont">Back to the contents</a></i> <br>
-&nbsp; <br>
-</body>
-</html>
diff --git a/doc/salome/tui/SMESH/sources/static/doxygen.css b/doc/salome/tui/SMESH/sources/static/doxygen.css
deleted file mode 100755 (executable)
index 0a8e93d..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-H1 { text-align: center; }
-CAPTION { font-weight: bold }
-A.qindex {}
-A.qindexRef {}
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code { text-decoration: none; font-weight: normal; color: #4444ee }
-A.codeRef { font-weight: normal; color: #4444ee }
-A:hover { text-decoration: none; background-color: lightblue }
-DL.el { margin-left: -1cm }
-DIV.fragment { width: 100%; border: none; background-color: #CCCCCC }
-DIV.ah { background-color: #CCCCCC; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: lightblue; font-weight: bold; }
-TD.mdname1 { background-color: lightblue; font-weight: bold; color: #602020; }
-TD.mdname { background-color: lightblue; font-weight: bold; color: #602020; width: 600px; }
-DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
-BODY { background: url(sources/bg_salome.gif) }
-TD.indexkey { 
-   background-color: #CCCCCC; 
-   font-weight: bold; 
-   padding-right  : 10px; 
-   padding-top    : 2px; 
-   padding-left   : 10px; 
-   padding-bottom : 2px; 
-   margin-left    : 0px; 
-   margin-right   : 0px; 
-   margin-top     : 2px; 
-   margin-bottom  : 2px  
-}
-TD.indexvalue { 
-   background-color: #CCCCCC; 
-   font-style: italic; 
-   padding-right  : 10px; 
-   padding-top    : 2px; 
-   padding-left   : 10px; 
-   padding-bottom : 2px; 
-   margin-left    : 0px; 
-   margin-right   : 0px; 
-   margin-top     : 2px; 
-   margin-bottom  : 2px  
-}
-span.keyword       { color: #008000 }
-span.keywordtype   { color: #604020 }
-span.keywordflow   { color: #e08000 }
-span.comment       { color: #800000 }
-span.preprocessor  { color: #806020 }
-span.stringliteral { color: #002080 }
-span.charliteral   { color: #008080 }
diff --git a/doc/salome/tui/SMESH/sources/static/page2.html b/doc/salome/tui/SMESH/sources/static/page2.html
deleted file mode 100755 (executable)
index 0e5c0ad..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-    
-  <meta http-equiv="Content-Type"
- content="text/html; charset=iso-8859-1">
-    
-  <meta name="GENERATOR"
- content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
-  <title>Main Page</title>
-     
-  <link href="doxygen.css" rel="stylesheet" type="text/css">
-</head>
-  <body>
- &nbsp; 
-<center>
-<table width="96%">
- <tbody>
-    <tr>
- <td><a href="http://www.opencascade.com"><img
- src="sources/logocorp.gif" border="0" height="46" width="122">
-      </a></td>
-   <td> 
-      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img
- src="sources/application.gif" border="0" height="46" width="108">
-      </a></div>
- </td>
- </tr>
-  </tbody>
-</table>
-</center>
-   <!-- Generated by Doxygen 1.3-rc2 --> 
-<ul>
- <li><b>SALOME SMESH module</b>
-    <ul>
- <li><a href="HTML/SMESH_Gen.html">Mapping of SMESH_Gen functions</a></li>
-      <li><a href="HTML/SMESH_BasicHypothesis.html">Mapping of SMESH_BasicHypothesis functions</a></li>
-      <li><a href="HTML/SMESH_Hypothesis.html">Mapping of SMESH_Hypothesis functions</a></li>
-      <li><a href="HTML/SMESH_Mesh.html">Mapping of SMESH_Mesh functions</a></li>
-      <li><a href="HTML/SMESH_Filter.html">Mapping of SMESH_Filter functions</a></li>
-      <li><a href="HTML/SMESH_Gen.html">Mapping of SMESH_Gen functions</a></li>
-      <li><a href="HTML/SMESH_Group.html">Mapping of SMESH_Group functions</a></li>
-      <li><a href="HTML/SMESH_Pattern.html">Mapping of SMESH_Pattern functions</a></li>
-    </ul>
- </li>
-</ul>
- <br>
-</body>
-</html>
diff --git a/doc/salome/tui/SMESH/sources/static/treeview.js b/doc/salome/tui/SMESH/sources/static/treeview.js
deleted file mode 100644 (file)
index 55eb43d..0000000
+++ /dev/null
@@ -1,505 +0,0 @@
-//**************************************************************** 
-// You are free to copy the "Folder-Tree" script as long as you  
-// keep this copyright notice: 
-// Script found in: http://www.geocities.com/Paris/LeftBank/2178/ 
-// Author: Marcelino Alves Martins (martins@hks.com) December '97. 
-//**************************************************************** 
-//Log of changes: 
-//       17 Feb 98 - Fix initialization flashing problem with Netscape
-//       
-//       27 Jan 98 - Root folder starts open; support for USETEXTLINKS; 
-//                   make the ftien4 a js file 
-//       
-// DvH:  Dec 2000 -  Made some minor changes to support external 
-//                   references
-// Definition of class Folder 
-// ***************************************************************** 
-function Folder(folderDescription, tagName, hreference) //constructor 
-{ 
-  //constant data 
-  this.desc = folderDescription 
-  this.tagName = tagName
-  this.hreference = hreference 
-  this.id = -1   
-  this.navObj = 0  
-  this.iconImg = 0  
-  this.nodeImg = 0  
-  this.isLastNode = 0 
-  //dynamic data 
-  this.isOpen = true 
-  this.iconSrc = "ftv2folderopen.png"   
-  this.children = new Array 
-  this.nChildren = 0 
-  //methods 
-  this.initialize = initializeFolder 
-  this.setState = setStateFolder 
-  this.addChild = addChild 
-  this.createIndex = createEntryIndex 
-  this.hide = hideFolder 
-  this.display = display 
-  this.renderOb = drawFolder 
-  this.totalHeight = totalHeight 
-  this.subEntries = folderSubEntries 
-  this.outputLink = outputFolderLink 
-} 
-function setStateFolder(isOpen) 
-{ 
-  var subEntries 
-  var totalHeight 
-  var fIt = 0 
-  var i=0 
-  if (isOpen == this.isOpen) 
-    return 
-  if (browserVersion == 2)  
-  { 
-    totalHeight = 0 
-    for (i=0; i < this.nChildren; i++) 
-      totalHeight = totalHeight + this.children[i].navObj.clip.height 
-      subEntries = this.subEntries() 
-    if (this.isOpen) 
-      totalHeight = 0 - totalHeight 
-    for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) 
-      indexOfEntries[fIt].navObj.moveBy(0, totalHeight) 
-  }  
-  this.isOpen = isOpen 
-  propagateChangesInState(this) 
-} 
-function propagateChangesInState(folder) 
-{   
-  var i=0 
-  if (folder.isOpen) 
-  { 
-    if (folder.nodeImg) 
-      if (folder.isLastNode) 
-        folder.nodeImg.src = "ftv2mlastnode.png" 
-      else 
-         folder.nodeImg.src = "ftv2mnode.png" 
-    folder.iconImg.src = "ftv2folderopen.png" 
-    for (i=0; i<folder.nChildren; i++) 
-      folder.children[i].display() 
-  } 
-  else 
-  { 
-    if (folder.nodeImg) 
-      if (folder.isLastNode) 
-        folder.nodeImg.src = "ftv2plastnode.png" 
-      else 
-         folder.nodeImg.src = "ftv2pnode.png" 
-    folder.iconImg.src = "ftv2folderclosed.png" 
-    for (i=0; i<folder.nChildren; i++) 
-      folder.children[i].hide() 
-  }  
-} 
-function hideFolder() 
-{ 
-  if (browserVersion == 1 || browserVersion == 3) { 
-    if (this.navObj.style.display == "none") 
-      return 
-    this.navObj.style.display = "none" 
-  } else { 
-    if (this.navObj.visibility == "hidden") 
-      return 
-    this.navObj.visibility = "hidden" 
-  } 
-   
-  this.setState(0) 
-} 
-function initializeFolder(level, lastNode, leftSide) 
-{ 
-var j=0 
-var i=0 
-var numberOfFolders 
-var numberOfDocs 
-var nc 
-      
-  nc = this.nChildren 
-   
-  this.createIndex() 
-  var auxEv = "" 
-  if (browserVersion > 0) 
-    auxEv = "<a href='javascript:clickOnNode("+this.id+")'>" 
-  else 
-    auxEv = "<a>" 
-  if (level>0) 
-    if (lastNode) //the last 'brother' in the children array 
-    { 
-      this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mlastnode.png' width=16 height=22 border=0></a>") 
-//    leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"  
-      this.isLastNode = 1 
-    } 
-    else 
-    { 
-      this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mnode.png' width=16 height=22 border=0></a>") 
-      leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>" 
-      this.isLastNode = 0 
-    } 
-  else 
-    this.renderOb("") 
-   
-  if (nc > 0) 
-  { 
-    level = level + 1 
-    for (i=0 ; i < this.nChildren; i++)  
-    { 
-      if (i == this.nChildren-1) 
-        this.children[i].initialize(level, 1, leftSide) 
-      else 
-        this.children[i].initialize(level, 0, leftSide) 
-      } 
-  } 
-} 
-function drawFolder(leftSide) 
-{ 
-  if (browserVersion == 2) { 
-    if (!doc.yPos) 
-      doc.yPos=8 
-    doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>") 
-  } 
-  if (browserVersion == 3) 
-  {
-    doc.write("<div id='folder" + this.id + "' style='visibility:hide;'>") 
-  }
-   
-  doc.write("\n<table ") 
-  if (browserVersion == 1) 
-    doc.write(" id='folder" + this.id + "' style='position:block;' ") 
-  doc.write(" border=0 cellspacing=0 cellpadding=0>") 
-  doc.write("\n<tr><td>") 
-  doc.write(leftSide) 
-  this.outputLink() 
-  doc.write("<img name='folderIcon" + this.id + "' ") 
-  doc.write("src='" + this.iconSrc+"' border=0></a>") 
-  doc.write("</td>\n<td valign=middle nowrap>") 
-  if (USETEXTLINKS) 
-  { 
-    this.outputLink() 
-    doc.write(this.desc + "</a>") 
-  } 
-  else 
-    doc.write(this.desc)
-
-/*! 
-  if (this.tagName!="")
-  {
-    doc.write(" [external]")
-  }
-*/
-  doc.write("</td>")  
-  doc.write("\n</table>\n") 
-   
-  if (browserVersion == 2) { 
-    doc.write("</layer>") 
-  } 
-  if (browserVersion == 3) { 
-    doc.write("</div>") 
-  } 
-  if (browserVersion == 1) { 
-    this.navObj = doc.all["folder"+this.id] 
-    this.iconImg = doc.all["folderIcon"+this.id] 
-    this.nodeImg = doc.all["nodeIcon"+this.id] 
-  } else if (browserVersion == 2) { 
-    this.navObj = doc.layers["folder"+this.id] 
-    this.iconImg = this.navObj.document.images["folderIcon"+this.id] 
-    this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] 
-    doc.yPos=doc.yPos+this.navObj.clip.height 
-  } else if (browserVersion == 3) {
-    this.navObj = doc.getElementById("folder"+this.id)
-    this.iconImg = doc.images.namedItem("folderIcon"+this.id)
-    this.nodeImg = doc.images.namedItem("nodeIcon"+this.id)
-  }
-} 
-function outputFolderLink() 
-{ 
-  if (this.hreference) 
-  { 
-    doc.write("<a ")
-    if (this.tagName)
-    {
-      doc.write("doxygen='" + this.tagName + "' ");
-    }
-    doc.write("href='" + this.hreference + "' TARGET=\"basefrm\" ") 
-    if (browserVersion > 0) 
-      doc.write("onClick='javascript:clickOnFolder("+this.id+")'") 
-    doc.write(">") 
-  } 
-  else 
-    doc.write("<a>") 
-} 
-function addChild(childNode) 
-{ 
-  this.children[this.nChildren] = childNode 
-  this.nChildren++ 
-  return childNode 
-} 
-function folderSubEntries() 
-{ 
-  var i = 0 
-  var se = this.nChildren 
-  for (i=0; i < this.nChildren; i++){ 
-    if (this.children[i].children) //is a folder 
-      se = se + this.children[i].subEntries() 
-  } 
-  return se 
-} 
-// Definition of class Item (a document or link inside a Folder) 
-// ************************************************************* 
-function Item(itemDescription, tagName, itemLink) // Constructor 
-{ 
-  // constant data 
-  this.desc = itemDescription 
-  this.tagName = tagName
-  this.link = itemLink 
-  this.id = -1 //initialized in initalize() 
-  this.navObj = 0 //initialized in render() 
-  this.iconImg = 0 //initialized in render() 
-  this.iconSrc = "ftv2doc.png" 
-  // methods 
-  this.initialize = initializeItem 
-  this.createIndex = createEntryIndex 
-  this.hide = hideItem 
-  this.display = display 
-  this.renderOb = drawItem 
-  this.totalHeight = totalHeight 
-} 
-function hideItem() 
-{ 
-  if (browserVersion == 1 || browserVersion == 3) { 
-    if (this.navObj.style.display == "none") 
-      return 
-    this.navObj.style.display = "none" 
-  } else { 
-    if (this.navObj.visibility == "hidden") 
-      return 
-    this.navObj.visibility = "hidden" 
-  }     
-} 
-function initializeItem(level, lastNode, leftSide) 
-{  
-  this.createIndex() 
-  if (level>0) 
-    if (lastNode) //the last 'brother' in the children array 
-    { 
-      this.renderOb(leftSide + "<img src='ftv2lastnode.png' width=16 height=22>") 
-      leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"  
-    } 
-    else 
-    { 
-      this.renderOb(leftSide + "<img src='ftv2node.png' width=16 height=22>") 
-      leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>" 
-    } 
-  else 
-    this.renderOb("")   
-} 
-function drawItem(leftSide) 
-{ 
-  if (browserVersion == 2) 
-    doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>") 
-  if (browserVersion == 3) 
-    doc.write("<div id='item" + this.id + "' style='display:block;'>") 
-     
-  doc.write("\n<table ") 
-  if (browserVersion == 1) 
-    doc.write(" id='item" + this.id + "' style='position:block;' ") 
-  doc.write(" border=0 cellspacing=0 cellpadding=0>\n") 
-  doc.write("<tr><td>") 
-  doc.write(leftSide) 
-  if (this.link!="")
-  {
-    doc.write("<a href=" + this.link + ">") 
-  }
-  doc.write("<img id='itemIcon"+this.id+"' ") 
-  doc.write("src='"+this.iconSrc+"' border=0>") 
-  if (this.link!="")
-  {
-    doc.write("</a>")
-  } 
-  doc.write("</td>\n<td valign=middle nowrap>") 
-  if (USETEXTLINKS && this.link!="") 
-    doc.write("<a href=" + this.link + ">" + this.desc + "</a>") 
-  else 
-    doc.write(this.desc) 
-/*!
-  if (this.tagName!="")
-  {
-    doc.write(" [external]");
-  }
-*/
-  doc.write("\n</table>\n") 
-   
-  if (browserVersion == 2) 
-    doc.write("</layer>") 
-  if (browserVersion == 3) 
-    doc.write("</div>")
-  if (browserVersion == 1) { 
-    this.navObj = doc.all["item"+this.id] 
-    this.iconImg = doc.all["itemIcon"+this.id] 
-  } else if (browserVersion == 2) { 
-    this.navObj = doc.layers["item"+this.id] 
-    this.iconImg = this.navObj.document.images["itemIcon"+this.id] 
-    doc.yPos=doc.yPos+this.navObj.clip.height 
-  } else if (browserVersion == 3) {
-    this.navObj = doc.getElementById("item"+this.id)
-    this.iconImg = doc.images.namedItem("itemIcon"+this.id)
-  }
-} 
-// Methods common to both objects (pseudo-inheritance) 
-// ******************************************************** 
-function display() 
-{ 
-  if (browserVersion == 1 || browserVersion == 3) 
-    this.navObj.style.display = "block" 
-  else 
-    this.navObj.visibility = "show" 
-} 
-function createEntryIndex() 
-{ 
-  this.id = nEntries 
-  indexOfEntries[nEntries] = this 
-  nEntries++ 
-} 
-// total height of subEntries open 
-function totalHeight() //used with browserVersion == 2 
-{ 
-  var h = this.navObj.clip.height 
-  var i = 0 
-   
-  if (this.isOpen) //is a folder and _is_ open 
-    for (i=0 ; i < this.nChildren; i++)  
-      h = h + this.children[i].totalHeight() 
-  return h 
-} 
-// Events 
-// ********************************************************* 
-function clickOnFolder(folderId) 
-{ 
-  var clicked = indexOfEntries[folderId] 
-  if (!clicked.isOpen) 
-    clickOnNode(folderId) 
-  return  
-  if (clicked.isSelected) 
-    return 
-} 
-function clickOnNode(folderId) 
-{ 
-  var clickedFolder = 0 
-  var state = 0 
-  clickedFolder = indexOfEntries[folderId] 
-  state = clickedFolder.isOpen 
-  clickedFolder.setState(!state) //open<->close  
-} 
-function initializeDocument() 
-{ 
-  doc = document;
-  if (doc.all) 
-    browserVersion = 1 //IE4   
-  else 
-    if (doc.layers) 
-      browserVersion = 2 //NS4 
-    else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
-        browserVersion = 3 //mozilla
-      else 
-        browserVersion = 0 //other 
-
-  foldersTree.initialize(0, 1, "") 
-  foldersTree.display()
-  
-  if (browserVersion > 0) 
-  { 
-    if(browserVersion != 3)
-      doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+">&nbsp;</layer>") 
-    // close the whole tree 
-    clickOnNode(0) 
-    // open the root folder 
-    clickOnNode(0) 
-  } 
-} 
-// Auxiliary Functions for Folder-Treee backward compatibility 
-// ********************************************************* 
-function gFld(description, tagName, hreference) 
-{ 
-  folder = new Folder(description, tagName, hreference) 
-  return folder 
-} 
-function gLnk(description, tagName, linkData) 
-{ 
-  fullLink = "" 
-  if (linkData!="")
-  {
-    fullLink = "'"+linkData+"' target=\"basefrm\"" 
-  } 
-  linkItem = new Item(description, tagName, fullLink)   
-  return linkItem 
-} 
-function insFld(parentFolder, childFolder) 
-{ 
-  return parentFolder.addChild(childFolder) 
-} 
-function insDoc(parentFolder, document) 
-{ 
-  parentFolder.addChild(document) 
-} 
-// Global variables 
-// **************** 
-USETEXTLINKS = 1
-indexOfEntries = new Array 
-nEntries = 0 
-doc = document 
-browserVersion = 0 
-selectedFolder=0
diff --git a/idl/Makefile.in b/idl/Makefile.in
deleted file mode 100644 (file)
index 8bc4e84..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# generate dependencies for idl file :
-#
-
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-VPATH=.:${KERNEL_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
-
-@COMMENCE@
-
-IDL_FILES = \
-  SMESH_Gen.idl \
-  SMESH_Mesh.idl \
-  SMESH_Hypothesis.idl \
-  SMESH_BasicHypothesis.idl \
-  SMESH_Filter.idl \
-  SMESH_Group.idl \
-  SMESH_Pattern.idl
-
-PY_CLIENT_IDL = $(IDL_FILES)
-
-# we copy all idl file in $(top_builddir)/idl
-inc: $(top_builddir)/idl/salome $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
-
-$(top_builddir)/idl/salome:
-       mkdir $@
-
-$(IDL_FILES:%=$(top_builddir)/idl/salome/%):$(IDL_FILES:%=$(top_srcdir)/idl/%)
-#      $(CP) $< $@
-       cp -f $^ $(top_builddir)/idl/salome
-
-
-lib: pyidl
-
-PYTHON_BUILD_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/@PACKAGE@
-
-pyidl: $(PYTHON_BUILD_SITE) $(IDL_FILES:%.idl=$(PYTHON_BUILD_SITE)/%_idl.py)
-
-$(PYTHON_BUILD_SITE):
-       $(INSTALL) -d  $@
-
-$(PYTHON_BUILD_SITE)/%_idl.py: $(top_builddir)/idl/salome/%.idl
-       $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $<
-
-
-# install python client (generated from idl file
-install: install-pyidl install-idl
-
-# create directory $(idldir) and copy idl files into it
-install-idl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
-       $(INSTALL) -d  $(idldir)
-       $(INSTALL_DATA) $^ $(idldir)
-
-
-install-pyidl: $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
-       $(INSTALL) -d  $(PYTHON_SITE_INSTALL)
-       @for file in $^ dummy; do \
-         if [ $$file != "dummy" ]; then \
-           $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_SITE_INSTALL) $$file ; \
-         fi ; \
-       done ;
-
-#@ CONCLUDE @
-
-cleandep:
-       -$(RM) .dep*
-
-distclean:
-       -$(RM) *.py
-       -$(RM) $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
-       -$(RM) Makefile
-
diff --git a/idl/SMESH_Group.idl b/idl/SMESH_Group.idl
deleted file mode 100644 (file)
index 3765767..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-//  Copyright (C) 2004  CEA 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Group.idl
-//  Author : Sergey ANIKIN, OCC
-//  $Header$
-
-
-#ifndef _SMESH_GROUP_IDL_
-#define _SMESH_GROUP_IDL_
-
-#include "SALOME_Exception.idl"
-#include "SALOME_GenericObj.idl"
-
-#include "SMESH_Mesh.idl"
-
-module SMESH
-{
-  interface Predicate;
-
-  /*!
-   * SMESH_Group: base interface of group object
-   */
-  interface SMESH_GroupBase : SALOME::GenericObj, SMESH_IDSource
-  {
-    /*!
-     * Sets group name
-     */
-    void SetName( in string name );
-
-    /*!
-     * Returns group name
-     */
-    string GetName();
-
-    /*!
-     * Returns group type (type of elements in the group)
-     */
-    ElementType GetType();
-
-    /*!
-     * Returns the number of elements in the group
-     */
-    long Size();
-
-    /*!
-     * Returns true if the group does not contain any elements
-     */
-    boolean IsEmpty();
-
-    /*!
-     * returns true if the group contains an element with ID == <elem_id> 
-     */
-    boolean Contains( in long elem_id );
-
-    /*!
-     * Returns ID of an element at position <elem_index>
-     */
-    long GetID( in long elem_index );
-
-    /*!
-     * Returns a sequence of all element IDs in the group
-     */
-    long_array GetListOfID();
-
-    /*!
-     * Returns the mesh object this group belongs to
-     */
-    SMESH_Mesh GetMesh();
-  }; 
-
-  /*!
-   * SMESH_Group: interface of group object
-   */
-  interface SMESH_Group : SMESH_GroupBase
-  {
-    /*!
-     * Clears the group's contents
-     */
-    void Clear();
-
-    /*!
-     * Adds elements to the group
-     */
-    long Add( in long_array elem_ids );
-    long AddByPredicate( in Predicate thePredicate );
-
-    /*!
-     * Removes elements from the group
-     */
-    long Remove( in long_array elem_ids );
-    long RemoveByPredicate( in Predicate thePredicate );
-
-  };
-  /*!
-   * SMESH_Group: interface of group object linked to geometry
-   */
-  interface SMESH_GroupOnGeom : SMESH_GroupBase
-  {
-    GEOM::GEOM_Object GetShape();
-  };
-
-};
-
-
-#endif
diff --git a/idl/SMESH_Hypothesis.idl b/idl/SMESH_Hypothesis.idl
deleted file mode 100644 (file)
index 69832b9..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Hypothesis.idl
-//  Author : Paul RASCLE, EDF
-//  $Header$
-
-#ifndef _SMESH_HYPOTHESIS_IDL_
-#define _SMESH_HYPOTHESIS_IDL_
-
-#include "SALOME_Exception.idl"
-#include "SALOME_GenericObj.idl"
-
-module SMESH
-{
-  enum Dimension
-  {
-    DIM_1D,
-    DIM_2D,
-    DIM_3D
-  };
-  
-  interface SMESH_Hypothesis : SALOME::GenericObj
-  {
-    /*!
-     * Get the Hypothesis typeName 
-     */
-    string GetName();
-
-    /*!
-     * Get the Hypothesis plugin library Name 
-     */
-    string GetLibName();
-
-    /*!
-     * Get the internal Id 
-     */
-    long GetId();
-    
-    /*!
-     * Verify whether hypothesis supports given entity type 
-     */
-    boolean IsDimSupported( in Dimension type );
-  };
-
-  typedef sequence<string> ListOfHypothesisName;
-
-  interface SMESH_Algo : SMESH_Hypothesis
-  {
-    /*!
-     * Get list of hypothesis that can be used with this algorithm
-     */
-    ListOfHypothesisName GetCompatibleHypothesis();
-
-  };
-
-  interface SMESH_1D_Algo : SMESH_Algo
-  {
-    /*!
-     * 
-     */
-  };
-
-  interface SMESH_2D_Algo : SMESH_Algo
-  {
-    /*!
-     * 
-     */
-  };
-
-  interface SMESH_3D_Algo : SMESH_Algo
-  {
-    /*!
-     * 
-     */
-  };
-};
-
-  // -----------------------------------------------------------------
-  // Specific Algorithms in separate idl file
-  // -----------------------------------------------------------------
-
-
-#endif
diff --git a/idl/SMESH_Pattern.idl b/idl/SMESH_Pattern.idl
deleted file mode 100644 (file)
index d2324a0..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-// File    : SMESH_Pattern.idl
-// Created : Mon Aug  2 10:48:36 2004
-// Author  : Edward AGAPOV (eap)
-//  $Header:
-
-#ifndef _SMESH_PATTERN_IDL_
-#define _SMESH_PATTERN_IDL_
-
-#include "SMESH_Mesh.idl"
-
-module SMESH
-{
-  
-  typedef sequence<SMESH::PointStruct> point_array;
-
-  /*!
-   * SMESH_Pattern: interface of mesh pattern
-   */
-  interface SMESH_Pattern {
-
-    /*!
-     * Load a pattern from the string <theFileContents>
-     */
-    boolean LoadFromFile(in string theFileContents);
-
-    /*!
-     * Create a pattern from the mesh built on <theFace>.
-     * <theProject>==true makes override nodes positions
-     * on <theFace> computed by mesher
-     */
-    boolean LoadFromFace(in SMESH_Mesh        theMesh,
-                         in GEOM::GEOM_Object theFace,
-                         in boolean           theProject);
-
-    /*!
-     * Create a pattern from the mesh built on <theBlock>
-     */
-    boolean LoadFrom3DBlock(in SMESH_Mesh        theMesh,
-                            in GEOM::GEOM_Object theBlock);
-
-    /*!
-     * Compute nodes coordinates applying
-     * the loaded pattern to <theFace>. The first key-point
-     * will be mapped into <theVertexOnKeyPoint1>, which must
-     * be in the outer wire of theFace
-     */
-    point_array  ApplyToFace(in GEOM::GEOM_Object theFace,
-                             in GEOM::GEOM_Object theVertexOnKeyPoint1,
-                             in boolean           theReverse);
-
-    /*!
-     * Compute nodes coordinates applying
-     * the loaded pattern to <theBlock>. The (0,0,0) key-point
-     * will be mapped into <theVertex000>. The (0,0,1) 
-     * key-point will be mapped into <theVertex001>.
-     */
-    point_array  ApplyTo3DBlock(in GEOM::GEOM_Object theBlock,
-                                in GEOM::GEOM_Object theVertex000,
-                                in GEOM::GEOM_Object theVertex001);
-
-    /*!
-     * Compute nodes coordinates applying
-     * the loaded pattern to mesh faces. The first key-point
-     * will be mapped into <theNodeIndexOnKeyPoint1>-th node of each face
-     */
-    point_array  ApplyToMeshFaces(in SMESH_Mesh theMesh,
-                                  in long_array theFacesIDs,
-                                  in long       theNodeIndexOnKeyPoint1,
-                                  in boolean    theReverse);
-
-    /*!
-     * Compute nodes coordinates applying
-     * the loaded pattern to hexahedrons. The (0,0,0) key-point
-     * will be mapped into <theNode000Index>-th node of each volume.
-     * The (0,0,1) key-point will be mapped into <theNode001Index>-th
-     * node of each volume.
-     */
-    point_array  ApplyToHexahedrons(in SMESH_Mesh theMesh,
-                                    in long_array theVolumesIDs,
-                                    in long       theNode000Index,
-                                    in long       theNode001Index);
-
-    /*!
-     * Create nodes and elements in <theMesh> using nodes
-     * coordinates computed by either of Apply...() methods.
-     * If CreatePolygons is TRUE, replace adjacent faces by polygons
-     * to keep mesh conformity.
-     * If CreatePolyedrs is TRUE, replace adjacent volumes by polyedrs
-     * to keep mesh conformity.
-     */
-    boolean MakeMesh (in SMESH_Mesh theMesh,
-                     in boolean    CreatePolygons,
-                     in boolean    CreatePolyedrs);
-
-    /*!
-     * Return the loaded pattern in the string form to be saved in file
-     */
-    string GetString();
-
-    /*!
-     * error code of the last of one of above operations
-     */
-    enum ErrorCode {
-      ERR_OK,
-      // Load(file)
-      ERR_READ_NB_POINTS, // couldn't read nb of points
-      ERR_READ_POINT_COORDS, // invalid nb of point coordinates
-      ERR_READ_TOO_FEW_POINTS,  // too few points in a pattern
-      ERR_READ_3D_COORD,  // coordinate of 3D point out of [0,1] range
-      ERR_READ_NO_KEYPOINT, // no key-points in 2D pattern
-      ERR_READ_BAD_INDEX, // invalid point index
-      ERR_READ_ELEM_POINTS, // invalid nb of points in element
-      ERR_READ_NO_ELEMS, // no elements in a pattern
-      ERR_READ_BAD_KEY_POINT, // a key-point not on a boundary
-      // Save(file)
-      ERR_SAVE_NOT_LOADED, // pattern was not loaded
-      // Load(shape)
-      ERR_LOAD_EMPTY_SUBMESH, // no elements to load
-      // Load(face)
-      ERR_LOADF_NARROW_FACE, // too narrow face
-      ERR_LOADF_CLOSED_FACE, // closed face
-      // Load(volume)
-      ERR_LOADV_BAD_SHAPE, // volume is not a brick of 6 faces
-      ERR_LOADV_COMPUTE_PARAMS, // cant compute point parameters
-      // Apply(shape)
-      ERR_APPL_NOT_LOADED, // pattern was not loaded
-      ERR_APPL_BAD_DIMENTION, // wrong shape dimention
-      ERR_APPL_BAD_NB_VERTICES, // keypoints - vertices mismatch
-      // Apply(face)
-      ERR_APPLF_BAD_TOPOLOGY, // bad pattern topology
-      ERR_APPLF_BAD_VERTEX, // first vertex not on an outer face boundary
-      ERR_APPLF_INTERNAL_EEROR, // program error
-      // Apply(volume)
-      ERR_APPLV_BAD_SHAPE, // volume is not a brick of 6 faces
-      // MakeMesh
-      ERR_MAKEM_NOT_COMPUTED // mapping failed
-      };
-
-    /*!
-     * Return error code of the last operation
-     */
-    ErrorCode GetErrorCode();
-
-    /*!
-     * Return true if the loaded pattern is a 2D one
-     */
-    boolean Is2D();
-
-    /*!
-     * Return coordinates of pattern points
-     */
-    point_array GetPoints();
-
-    /*!
-     * Return indices of key-points within the arrays returned by
-     * GetPoints()
-     */
-    long_array GetKeyPoints();
-
-    /*!
-     * Return nodal connectivity of the elements of the pattern
-     * or of all elements to be crated
-     */
-    array_of_long_array GetElementPoints(in boolean all);
-  };
-};
-
-#endif
diff --git a/resources/ModuleMesh.png b/resources/ModuleMesh.png
deleted file mode 100755 (executable)
index 5e781ac..0000000
Binary files a/resources/ModuleMesh.png and /dev/null differ
diff --git a/resources/SMESH.config b/resources/SMESH.config
deleted file mode 100644 (file)
index ec67557..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-language=en
-resources=StdMeshers:NETGENPlugin
\ No newline at end of file
diff --git a/resources/SMESH_en.xml b/resources/SMESH_en.xml
deleted file mode 100644 (file)
index 7d314c7..0000000
+++ /dev/null
@@ -1,483 +0,0 @@
-<?xml version='1.0' encoding='us-ascii'?>
-<!DOCTYPE application PUBLIC "" "desktop.dtd">
-
-<!--  GUI customization for MESH component  -->
-
-<application
-       title="Mesh component"
-       date="13/05/2002"
-       author="Nicolas REJNERI"
-       appId="Mesh for Salome" >
-
-<desktop>
-<menubar>
-
-<!-- ************************** File  (menubar)  ************************************ -->
-<menu-item label-id="File" item-id="1" pos-id="">
-     <submenu label-id="Import" item-id="11" pos-id="8">
-       <popup-item item-id="111" pos-id="" label-id="DAT file" icon-id="" tooltip-id="" accel-id="Ctrl+B" toggle-id="" execute-action=""/>
-               <popup-item item-id="112" pos-id="" label-id="UNV File" icon-id="" tooltip-id="" accel-id="Ctrl+U" toggle-id="" execute-action=""/> 
-               <popup-item item-id="113" pos-id="" label-id="MED File" icon-id="" tooltip-id="" accel-id="Ctrl+M" toggle-id="" execute-action=""/> 
-      </submenu>
-      <endsubmenu />
-      <submenu label-id="Export" item-id="12" pos-id="9">
-        <popup-item item-id="121" pos-id="" label-id="DAT File" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="122" pos-id="" label-id="MED File" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="123" pos-id="" label-id="UNV File" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-      </submenu>
-      <endsubmenu />
-      <separator pos-id="10"/>
-</menu-item>
-
-<!-- ************************* Edit (menubar) ************************************** -->
-
-<menu-item label-id="Edit" item-id="3" pos-id="2">
-    <separator pos-id=""/>
-    <popup-item item-id="33" pos-id="" label-id="Delete" icon-id="delete.png" tooltip-id="" accel-id="" toggle-id="" execute-action="" />
-</menu-item>
-
-<!-- ************************* Tools (menubar) ************************************** -->
-
-<menu-item label-id="Tools" item-id="5" pos-id="">
-   <separator pos-id=""/>
-   <popup-item item-id="5105" pos-id="" label-id="Selection filters library" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-
-<!-- ************************** Hypothesis  (menubar)  ************************************ -->
-<menu-item label-id="Hypotheses" item-id="50" pos-id="3">
-       <popup-item item-id="5000" pos-id="" label-id="Create Hypotheses" icon-id="mesh_hypo_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="5010" pos-id="" label-id="Create Algorithms" icon-id="mesh_algo_mefisto.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-
-<!-- ************************** Mesh  (menubar)  ************************************ -->
-<menu-item label-id="Mesh" item-id="70" pos-id="4">
-     <popup-item item-id="703" pos-id="" label-id="Global Hypothesis" icon-id="mesh_init.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="702" pos-id="" label-id="Local Hypothesis" icon-id="mesh_add_sub.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="704" pos-id="" label-id="Edit Hypothesis" icon-id="mesh_edit.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <separator pos-id=""/>
-     <popup-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <separator pos-id=""/>
-     <popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="mesh_tree_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="802" pos-id="" label-id="Construct Group" icon-id="mesh_make_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="803" pos-id="" label-id="Edit Group" icon-id="mesh_edit_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <separator pos-id=""/>
-     <popup-item item-id="810" pos-id="" label-id="Union Groups" icon-id="mesh_unionGroups.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="811" pos-id="" label-id="Intersect Groups" icon-id="mesh_intersectGroups.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="812" pos-id="" label-id="Cut Groups" icon-id="mesh_cutGroups.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <separator pos-id=""/>
-     <popup-item item-id="813" pos-id="" label-id="Delete Groups" icon-id="mesh_deleteGroups.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <separator pos-id=""/>
-     <popup-item item-id="900" pos-id="" label-id="Advanced Mesh Infos" icon-id="advanced_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="902" pos-id="" label-id="Standard Mesh Infos" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-
-<!-- ************************** Control  (menubar)  ************************************ -->
-<menu-item label-id="Controls" item-id="60" pos-id="5">
-       <popup-item item-id="6003" pos-id="" label-id="Free Borders" icon-id="mesh_free_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6004" pos-id="" label-id="Borders at Multi-Connection" icon-id="mesh_multi_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6019" pos-id="" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6014" pos-id="" label-id="Minimum Angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6015" pos-id="" label-id="Warping" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>  
-        <separator pos-id=""/>
-        <popup-item item-id="6017" pos-id="" label-id="Aspect Ratio 3D" icon-id="mesh_aspect_3d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-        
-<!-- ************************** Entity  (menubar)  ************************************ -->
-<menu-item label-id="Modification" item-id="40" pos-id="6">
-     <submenu label-id="Add" item-id="402" pos-id="">
-     <popup-item item-id="400" pos-id="" label-id="Node" icon-id="mesh_vertex.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="401" pos-id="" label-id="Edge" icon-id="mesh_line.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4021" pos-id="" label-id="Triangle" icon-id="mesh_triangle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4022" pos-id="" label-id="Quadrangle" icon-id="mesh_quad.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4023" pos-id="" label-id="Polygon" icon-id="mesh_polygon.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4031" pos-id="" label-id="Tetrahedron" icon-id="mesh_tetra.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4032" pos-id="" label-id="Hexahedron" icon-id="mesh_hexa.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4033" pos-id="" label-id="Polyhedron" icon-id="mesh_polyhedron.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     </submenu>
-     <endsubmenu />
-     <submenu label-id="Remove" item-id="403" pos-id="">
-     <popup-item item-id="4041" pos-id="" label-id="Nodes" icon-id="mesh_rem_node.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4042" pos-id="" label-id="Elements" icon-id="mesh_rem_element.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     </submenu>
-     <endsubmenu />
-     <submenu label-id="Renumbering" item-id="404" pos-id="">
-     <popup-item item-id="4051" pos-id="" label-id="Nodes" icon-id="mesh_renumbering_nodes.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4052" pos-id="" label-id="Elements" icon-id="mesh_renumbering_elements.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     </submenu>
-     <endsubmenu />
-     <submenu label-id="Transformation" item-id="405" pos-id="">
-     <popup-item item-id="4061" pos-id="" label-id="Translation" icon-id="mesh_translation_vector.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4062" pos-id="" label-id="Rotation" icon-id="mesh_rotation.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4063" pos-id="" label-id="Symmetry" icon-id="mesh_symmetry_plane.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4064" pos-id="" label-id="Sewing" icon-id="mesh_sew_freeborders.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4065" pos-id="" label-id="Merge nodes" icon-id="mesh_merge_nodes.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     </submenu>
-     <endsubmenu />
-     <popup-item item-id="406" pos-id="" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="407" pos-id="" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="408" pos-id="" label-id="Union of two triangles" icon-id="mesh_union2tri.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="409" pos-id="" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="410" pos-id="" label-id="Union of triangles" icon-id="mesh_uniontri.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="411" pos-id="" label-id="Cutting of quadrangles" icon-id="mesh_cutquad.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="412" pos-id="" label-id="Smoothing" icon-id="mesh_smoothing.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="413" pos-id="" label-id="Extrusion" icon-id="mesh_extrusion.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="416" pos-id="" label-id="Extrusion along a path" icon-id="mesh_extrusionpath.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="414" pos-id="" label-id="Revolution" icon-id="mesh_revolution.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="415" pos-id="" label-id="Pattern mapping" icon-id="mesh_pattern.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-
-<!-- ********************************* Settings  (menubar) ********************************* -->
-<menu-item label-id="Preferences" item-id="4" pos-id="">
-   <submenu label-id="Mesh" item-id="100" pos-id="-1">
-   <submenu label-id="Display Mode" item-id="1000" pos-id="">
-       <popup-item item-id="10001" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-       <popup-item item-id="10002" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id="" accel-id="" toggle-id="true" execute-action=""/>
-       <popup-item item-id="10004" pos-id="" label-id="Nodes" icon-id="mesh_points.png" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="10003" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-    </submenu>
-    <endsubmenu /> 
-    <popup-item item-id="1001" pos-id="" label-id="Automatic Update" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-    <separator pos-id=""/>
-    <popup-item item-id="1003" pos-id="" label-id="Colors / Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-    <separator pos-id=""/>
-    <popup-item item-id="1005" pos-id="" label-id="Scalar Bar" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-    <separator pos-id=""/>
-    <popup-item item-id="1006" pos-id="" label-id="Selection" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-    <separator pos-id=""/>
-    <submenu label-id="Quality controls" item-id="1007" pos-id="">
-       <popup-item item-id="10070" pos-id="" label-id="Precision" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-       <popup-item item-id="10071" pos-id="" label-id="Display Entity" icon-id="" tooltip-id="" accel-id="" toggle-id="true" execute-action=""/>
-    </submenu>
-    <endsubmenu /> 
-   </submenu>
-   <endsubmenu />
-   <separator pos-id="-1"/>
-</menu-item>
-
-<!-- ********************************* View  (menubar) ********************************* -->
-<menu-item label-id="View" item-id="2" pos-id="">
-    <separator pos-id=""/>
-    <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-
-<!-- ################################# POPUP MENU #################################  -->
-
-<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Mesh">
-   <popup-item item-id="705" pos-id="" label-id="Edit Global Hypothesis" icon-id="mesh_edit.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <popup-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <popup-item item-id="900" pos-id="" label-id="Show Advanced Info" icon-id="advanced_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <popup-item item-id="902" pos-id="" label-id="Show Standard Info" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>
-   <popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="mesh_tree_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>
-   <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <popup-item item-id="122" pos-id="" label-id="Export to MED" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <popup-item item-id="123" pos-id="" label-id="Export to UNV" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-</popupmenu>
-
-<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="SubMesh">
-   <popup-item item-id="706" pos-id="" label-id="Edit Local Hypothesis" icon-id="mesh_edit.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>
-   <popup-item item-id="802" pos-id="" label-id="Construct Group" icon-id="mesh_make_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>
-   <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <popup-item item-id="33" pos-id="" label-id="Delete" icon-id="delete.png" tooltip-id="" accel-id="" toggle-id="" execute-action="" />
-</popupmenu>
-
-<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Group">
-   <popup-item item-id="803" pos-id="" label-id="Edit" icon-id="mesh_edit_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>
-   <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <popup-item item-id="33" pos-id="" label-id="Delete" icon-id="delete.png" tooltip-id="" accel-id="" toggle-id="" execute-action="" />
-</popupmenu>
-
-<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Hypothesis">
-   <popup-item item-id="1100" pos-id="" label-id="Edit" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1102" pos-id="" label-id="Unassign Hypothesis" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</popupmenu>
-
-<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Algorithm">
-   <popup-item item-id="1102" pos-id="" label-id="Unassign Algorithm" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</popupmenu>
-
-
-<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="Mesh">
-   <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/> 
-   <popup-item item-id="900" pos-id="" label-id="Show Advanced Info" icon-id="advanced_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <popup-item item-id="902" pos-id="" label-id="Show Standard Info" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>   
-   <submenu label-id="Numbering" item-id="114" pos-id="">
-     <popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="9011" pos-id="" label-id="Display Elements #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <separator pos-id=""/>   
-   <submenu label-id="Display Mode" item-id="1131" pos-id="">
-        <popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="215" pos-id="" label-id="Nodes" icon-id="mesh_points.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <submenu label-id="Display Entity" item-id="1135" pos-id="">
-       <popup-item item-id="217" pos-id="" label-id="Edges" icon-id="mesh_line.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="218" pos-id="" label-id="Faces" icon-id="mesh_triangle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="219" pos-id="" label-id="Volumes" icon-id="mesh_tetra.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="220" pos-id="" label-id="All" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <popup-item item-id="1132" pos-id="" label-id="Colors / Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1133" pos-id="" label-id="Transparency" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1134" pos-id="" label-id="Clipping" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <submenu label-id="Control" item-id="2000" pos-id="">
-       <popup-item item-id="200" pos-id="" label-id="Reset" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="6003" pos-id="" label-id="Free Borders" icon-id="mesh_free_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6004" pos-id="" label-id="Borders at Multi-Connection" icon-id="mesh_multi_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6019" pos-id="" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6014" pos-id="" label-id="Minimum Angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6015" pos-id="" label-id="Warping" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>  
-        <separator pos-id=""/>
-       <popup-item item-id="6017" pos-id="" label-id="Aspect Ratio 3D" icon-id="mesh_aspect_3d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-        <popup-item item-id="201" pos-id="" label-id="Scalar Bar Properties" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <separator pos-id=""/>
-</popupmenu>
-
-<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="SubMesh">
-   <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/> 
-   <popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>   
-   <submenu label-id="Numbering" item-id="114" pos-id="">
-     <popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="9011" pos-id="" label-id="Display Elements #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <separator pos-id=""/>   
-   <submenu label-id="Display Mode" item-id="1131" pos-id="">
-        <popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="215" pos-id="" label-id="Nodes" icon-id="mesh_points.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <submenu label-id="Display Entity" item-id="1135" pos-id="">
-       <popup-item item-id="217" pos-id="" label-id="Edges" icon-id="mesh_line.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="218" pos-id="" label-id="Faces" icon-id="mesh_triangle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="219" pos-id="" label-id="Volumes" icon-id="mesh_tetra.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="220" pos-id="" label-id="All" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <popup-item item-id="1132" pos-id="" label-id="Colors / Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1133" pos-id="" label-id="Transparency" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1134" pos-id="" label-id="Clipping" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <submenu label-id="Control" item-id="2000" pos-id="">
-       <popup-item item-id="200" pos-id="" label-id="Reset" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-        <popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6003" pos-id="" label-id="Free Borders" icon-id="mesh_free_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6004" pos-id="" label-id="Borders at Multi-Connection" icon-id="mesh_multi_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6019" pos-id="" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6014" pos-id="" label-id="Minimum Angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6015" pos-id="" label-id="Warping" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>  
-        <separator pos-id=""/>
-       <popup-item item-id="6017" pos-id="" label-id="Aspect Ratio 3D" icon-id="mesh_aspect_3d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-        <popup-item item-id="201" pos-id="" label-id="Scalar Bar Properties" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <separator pos-id=""/>
-</popupmenu>
-
-<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="Group">
-   <popup-item item-id="803" pos-id="" label-id="Edit" icon-id="mesh_edit_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/> 
-   <popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>   
-   <submenu label-id="Numbering" item-id="114" pos-id="">
-     <popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="9011" pos-id="" label-id="Display Elements #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <separator pos-id=""/>   
-   <submenu label-id="Display Mode" item-id="1131" pos-id="">
-        <popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="215" pos-id="" label-id="Nodes" icon-id="mesh_points.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <submenu label-id="Display Entity" item-id="1135" pos-id="">
-       <popup-item item-id="217" pos-id="" label-id="Edges" icon-id="mesh_line.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="218" pos-id="" label-id="Faces" icon-id="mesh_triangle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="219" pos-id="" label-id="Volumes" icon-id="mesh_tetra.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="220" pos-id="" label-id="All" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <popup-item item-id="1132" pos-id="" label-id="Colors / Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1133" pos-id="" label-id="Transparency" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1134" pos-id="" label-id="Clipping" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <submenu label-id="Control" item-id="2000" pos-id="">
-       <popup-item item-id="200" pos-id="" label-id="Reset" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="6003" pos-id="" label-id="Free Borders" icon-id="mesh_free_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6004" pos-id="" label-id="Borders at Multi-Connection" icon-id="mesh_multi_edges.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-       <popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6019" pos-id="" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="6014" pos-id="" label-id="Minimum Angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6015" pos-id="" label-id="Warping" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>  
-        <separator pos-id=""/>
-       <popup-item item-id="6017" pos-id="" label-id="Aspect Ratio 3D" icon-id="mesh_aspect_3d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <separator pos-id=""/>
-        <popup-item item-id="201" pos-id="" label-id="Scalar Bar Properties" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <separator pos-id=""/>
-</popupmenu>
-
-<popupmenu label-id="Elements" context-id="" parent-id="Viewer" object-id="Elements">
-   <popup-item item-id="804" pos-id="" label-id="Add" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="805" pos-id="" label-id="Remove" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</popupmenu>
-
-</menubar>
-
-<!-- ///////////////////////////////////// TOOLBARS ////////////////////////////////////// -->
-<toolbar label-id="Mesh Toolbar">
-   <toolbutton-item item-id="703" pos-id="" label-id="Init" icon-id="mesh_init.png" tooltip-id="Global Hypothesis" accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="702" pos-id="" label-id="Add SubMesh" icon-id="mesh_add_sub.png" tooltip-id="Local Hypothesis" accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="704" pos-id="" label-id="Edit" icon-id="mesh_edit.png" tooltip-id="Edit Hypothesis" accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-   <toolbutton-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="Compute" accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-   <toolbutton-item item-id="801" pos-id="" label-id="Create Group" icon-id="mesh_tree_group.png" tooltip-id="Create Group" accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="802" pos-id="" label-id="Construct Group" icon-id="mesh_make_group.png" tooltip-id="Construct Group" accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="803" pos-id="" label-id="Edit Group" icon-id="mesh_edit_group.png" tooltip-id="Edit Group" accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-   <toolbutton-item item-id="900" pos-id="" label-id="Advanced Mesh Infos" icon-id="advanced_mesh_info.png" tooltip-id="Advanced Mesh Infos" accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="902" pos-id="" label-id="Standard Mesh Infos" icon-id="standard_mesh_info.png" tooltip-id="Standard Mesh Infos" accel-id="" toggle-id="" execute-action=""/>    
-</toolbar>
-
-<toolbar label-id="Hypotheses Toolbar">
-   <toolbutton-item item-id="5000" label-id="Create Hypotheses" icon-id="mesh_hypo_length.png" tooltip-id="Create Hypotheses" accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="5010" label-id="Create Algorithms" icon-id="mesh_algo_mefisto.png" tooltip-id="Create Algorithms" accel-id="" toggle-id="" execute-action=""/>
-</toolbar>
-
-<toolbar label-id="Controls toolbar">
-       <toolbutton-item item-id="6001" label-id="Length" icon-id="mesh_length.png" tooltip-id="Length" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6003" label-id="Free Borders" icon-id="mesh_free_edges.png" tooltip-id="Free borders" accel-id="" toggle-id="" execute-action=""/>
-        <toolbutton-item item-id="6004" label-id="Borders at Multi-Connection" icon-id="mesh_multi_edges.png" tooltip-id="Borders at multi-connection" accel-id="" toggle-id="" execute-action=""/>
-        <separatorTB/>
-       <toolbutton-item item-id="6002" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="Free edges" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6018" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="Length2D" accel-id="" toggle-id="" execute-action=""/>
-        <toolbutton-item item-id="6019" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="Multiconnection 2D" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6011" label-id="Area" icon-id="mesh_area.png" tooltip-id="Area" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6012" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="Taper" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6013" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="Aspect Ratio" accel-id="" toggle-id="" execute-action=""/>
-        <toolbutton-item item-id="6014" label-id="Minimum Angle" icon-id="mesh_angle.png" tooltip-id="Minimum angle" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6015" label-id="Warping" icon-id="mesh_wrap.png" tooltip-id="Warping angle" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6016" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="Skew" accel-id="" toggle-id="" execute-action=""/>  
-        <separatorTB/>
-        <toolbutton-item item-id="6017" label-id="Aspect Ratio 3D" icon-id="mesh_aspect_3d.png" tooltip-id="Aspect Ratio 3D" accel-id="" toggle-id="" execute-action=""/>
-</toolbar>
-
-<toolbar label-id="Add/Remove toolbar">
-     <toolbutton-item item-id="400" label-id="Node" icon-id="mesh_vertex.png" tooltip-id="Add Node" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="401" label-id="Edge" icon-id="mesh_line.png" tooltip-id="Add Edge" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4021" label-id="Triangle" icon-id="mesh_triangle.png" tooltip-id="Add Triangle" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4022" label-id="Quadrangle" icon-id="mesh_quad.png" tooltip-id="Add Quadrangle" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4023" label-id="Polygon" icon-id="mesh_polygon.png" tooltip-id="Add Polygon" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4031" label-id="Tetrahedron" icon-id="mesh_tetra.png" tooltip-id="Add Tetrahedron" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4032" label-id="Hexahedron" icon-id="mesh_hexa.png" tooltip-id="Add Hexahedron" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4033" label-id="Polyhedron" icon-id="mesh_polyhedron.png" tooltip-id="Add Polyhedron" accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-     <toolbutton-item item-id="4041" label-id="Nodes" icon-id="mesh_rem_node.png" tooltip-id="Remove Nodes" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4042" label-id="Elements" icon-id="mesh_rem_element.png" tooltip-id="Remove Elements" accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-     <toolbutton-item item-id="4051" label-id="Nodes" icon-id="mesh_renumbering_nodes.png" tooltip-id="Renumbering Nodes" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4052" label-id="Elements" icon-id="mesh_renumbering_elements.png" tooltip-id="Renumbering Elements" accel-id="" toggle-id="" execute-action=""/>    
-   <separatorTB/>
-     <toolbutton-item item-id="4061" label-id="Translation" icon-id="mesh_translation_vector.png" tooltip-id="Displacement of a mesh by Translation" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4062" label-id="Rotation" icon-id="mesh_rotation.png" tooltip-id="Displacement of a mesh by Rotation" accel-id="" toggle-id="" execute-action=""/>         
-     <toolbutton-item item-id="4063" label-id="Symmetry" icon-id="mesh_symmetry_plane.png" tooltip-id="Displacement of a mesh by Symmetry" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4064" label-id="Sewing" icon-id="mesh_sew_freeborders.png" tooltip-id="Sewing of meshes" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4065" label-id="Merge nodes" icon-id="mesh_merge_nodes.png" tooltip-id="Merge nodes" accel-id="" toggle-id="" execute-action=""/>
-</toolbar>
-
-<toolbar label-id="Modification toolbar">
-     <toolbutton-item item-id="406" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="Move Node" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="407" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="Diagonal Inversion" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="408" label-id="Union of two triangles" icon-id="mesh_union2tri.png" tooltip-id="Union of two triangles" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="409" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="Orientation" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="410" label-id="Union of triangles" icon-id="mesh_uniontri.png" tooltip-id="Union of triangles" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="411" label-id="Cutting of quadrangles" icon-id="mesh_cutquad.png" tooltip-id="Cutting of quadrangles" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="412" label-id="Smoothing" icon-id="mesh_smoothing.png" tooltip-id="Smoothing" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="413" label-id="Extrusion" icon-id="mesh_extrusion.png" tooltip-id="Extrusion along a line" accel-id="" toggle-id="" execute-action=""/> 
-     <toolbutton-item item-id="416" label-id="Extrusion along a path" icon-id="mesh_extrusionpath.png" tooltip-id="Extrusion along a path" accel-id="" toggle-id="" execute-action=""/> 
-     <toolbutton-item item-id="414" label-id="Revolution" icon-id="mesh_revolution.png" tooltip-id="Revolution around an axis" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="415" label-id="Pattern mapping" icon-id="mesh_pattern.png" tooltip-id="2D and 3D pattern mapping" accel-id="" toggle-id="" execute-action=""/>     
-</toolbar>
-
-<toolbar label-id="Display Mode Toolbar">
-   <toolbutton-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="Update View" accel-id="" toggle-id="" execute-action=""/>
-</toolbar>
-
-</desktop>     
-
-</application>
diff --git a/resources/SMESH_fr.xml b/resources/SMESH_fr.xml
deleted file mode 100644 (file)
index d5dbf46..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version='1.0' encoding='us-ascii'?>
-<!DOCTYPE application PUBLIC "" "desktop.dtd">
-
-<!--  GUI customization for MESH component  -->
-
-<application
-       title="Mesh component"
-       date="13/05/2002"
-       author="Nicolas REJNERI"
-       appId="Mesh for Salome" >
-
-<desktop>
-<menubar>
-
-<!-- ************************** File  (menubar)  ************************************ -->
-<menu-item label-id="File" item-id="1" pos-id="">
-     <submenu label-id="Import" item-id="11" pos-id="8">
-       <popup-item item-id="111" pos-id="" label-id="DAT file" icon-id="" tooltip-id="" accel-id="Ctrl+B" toggle-id="" execute-action=""/>
-               <popup-item item-id="112" pos-id="" label-id="UNV File" icon-id="" tooltip-id="" accel-id="Ctrl+I" toggle-id="" execute-action=""/> 
-               <popup-item item-id="113" pos-id="" label-id="MED File" icon-id="" tooltip-id="" accel-id="Ctrl+M" toggle-id="" execute-action=""/> 
-      </submenu>
-      <endsubmenu />
-      <submenu label-id="Export" item-id="12" pos-id="9">
-        <popup-item item-id="121" pos-id="" label-id="DAT File" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="122" pos-id="" label-id="MED File" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="123" pos-id="" label-id="UNV File" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-      </submenu>
-      <endsubmenu />
-      <separator pos-id="10"/>
-</menu-item>
-
-<!-- ************************* Edit (menubar) ************************************** -->
-<menu-item label-id="Edit" item-id="3" pos-id="2">
-    <separator pos-id=""/>
-    <popup-item item-id="33" pos-id="" label-id="Delete" icon-id="delete.png" tooltip-id="" accel-id="" toggle-id="" execute-action="" />
-</menu-item>
-
-<!-- ************************** Hypothesis  (menubar)  ************************************ -->
-<menu-item label-id="Hypotheses" item-id="50" pos-id="3">
-       <popup-item item-id="5000" pos-id="" label-id="Create Hypothesis" icon-id="mesh_hypo_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="5010" pos-id="" label-id="Create Algorithm" icon-id="mesh_algo_mefisto.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-
-<!-- ************************** Mesh  (menubar)  ************************************ -->
-<menu-item label-id="Mesh" item-id="70" pos-id="4">
-     <popup-item item-id="703" pos-id="" label-id="Global Hyp." icon-id="mesh_init.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="702" pos-id="" label-id="Local Hyp." icon-id="mesh_add_sub.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="704" pos-id="" label-id="Edit Hyp." icon-id="mesh_edit.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <separator pos-id=""/>
-     <popup-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <separator pos-id=""/>
-     <popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <separator pos-id=""/>
-     <popup-item item-id="900" pos-id="" label-id="Mesh Infos" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-
-<!-- ************************** Control  (menubar)  ************************************ -->
-<menu-item label-id="Controls" item-id="60" pos-id="5">
-       <popup-item item-id="6001" pos-id="" label-id="Length" icon-id="mesh_length.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6002" pos-id="" label-id="Connectivity" icon-id="mesh_connectivity.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6014" pos-id="" label-id="Minimum angle" icon-id="mesh_angle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6015" pos-id="" label-id="Warp" icon-id="mesh_wrap.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="6016" pos-id="" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>  
-</menu-item>
-        
-<!-- ************************** Entity  (menubar)  ************************************ -->
-<menu-item label-id="Modification" item-id="40" pos-id="6">
-     <submenu label-id="Add" item-id="402" pos-id="">
-     <popup-item item-id="400" pos-id="" label-id="Node" icon-id="mesh_vertex.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="401" pos-id="" label-id="Edge" icon-id="mesh_line.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4021" pos-id="" label-id="Triangle" icon-id="mesh_triangle.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4022" pos-id="" label-id="Quadrangle" icon-id="mesh_quad.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4031" pos-id="" label-id="Tetrahedron" icon-id="mesh_tetra.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4032" pos-id="" label-id="Hexahedron" icon-id="mesh_hexa.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     </submenu>
-     <endsubmenu />
-     <submenu label-id="Remove" item-id="403" pos-id="">
-     <popup-item item-id="4041" pos-id="" label-id="Nodes" icon-id="mesh_rem_node.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4042" pos-id="" label-id="Elements" icon-id="mesh_rem_element.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     </submenu>
-     <endsubmenu />
-     <submenu label-id="Renumbering" item-id="404" pos-id="">
-     <popup-item item-id="4051" pos-id="" label-id="Nodes" icon-id="mesh_renumbering_nodes.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="4052" pos-id="" label-id="Elements" icon-id="mesh_renumbering_elements.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     </submenu>
-     <endsubmenu />
-     <popup-item item-id="405" pos-id="" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="406" pos-id="" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="407" pos-id="" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="408" pos-id="" label-id="Union of two triangles" icon-id="mesh_union2tri.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="406" pos-id="" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="409" pos-id="" label-id="Union of triangles" icon-id="mesh_uniontri.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="410" pos-id="" label-id="Cutting of quadrangles" icon-id="mesh_cutquad.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="411" pos-id="" label-id="Smoothing" icon-id="mesh_smoothing.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="412" pos-id="" label-id="Extrusion" icon-id="mesh_extrusion.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-     <popup-item item-id="413" pos-id="" label-id="Revolution" icon-id="mesh_revolution.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-
-<!-- ************************** Numbering  (menubar)  ************************************ -->
-<menu-item label-id="Numbering" item-id="80" pos-id="7">
-     <popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-     <popup-item item-id="9011" pos-id="" label-id="Display Elements #" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-</menu-item>
-
-<!-- ********************************* Settings  (menubar) ********************************* -->
-<menu-item label-id="Preferences" item-id="4" pos-id="">
-   <submenu label-id="Mesh" item-id="100" pos-id="-1">
-    <submenu label-id="Display Mode" item-id="1000" pos-id="">
-       <popup-item item-id="10001" pos-id="" label-id="Wireframe" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-       <popup-item item-id="10002" pos-id="" label-id="Shading" icon-id="" tooltip-id="" accel-id="" toggle-id="true" execute-action=""/>
-       <popup-item item-id="10003" pos-id="" label-id="Shrink" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-    </submenu>
-    <endsubmenu /> 
-    <popup-item item-id="1001" pos-id="" label-id="Automatic Update" icon-id="" tooltip-id="" accel-id="" toggle-id="false" execute-action=""/>
-    <separator pos-id=""/>
-    <popup-item item-id="1003" pos-id="" label-id="Colors - Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-    <separator pos-id=""/>
-    <popup-item item-id="1005" pos-id="" label-id="Scalars Bar" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-   <separator pos-id="-1"/>
-</menu-item>
-
-<!-- ********************************* View  (menubar) ********************************* -->
-<menu-item label-id="View" item-id="2" pos-id="">
-    <submenu label-id="Display Mode" item-id="21" pos-id="">
-       <popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       <popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-    </submenu>
-    <endsubmenu />
-    <separator pos-id=""/>
-    <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</menu-item>
-
-<!-- ################################# POPUP MENU #################################  -->
-
-<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Mesh">
-   <popup-item item-id="705" pos-id="" label-id="Edit Global Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <popup-item item-id="701" pos-id="" label-id="Compute" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <popup-item item-id="214" pos-id="" label-id="Update" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>
-   <popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>
-   <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</popupmenu>
-
-<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="SubMesh">
-   <popup-item item-id="706" pos-id="" label-id="Edit Local Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <separator pos-id=""/>
-   <popup-item item-id="802" pos-id="" label-id="Construct Group" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <separator pos-id=""/>
-   <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</popupmenu>
-
-<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Hypothesis">
-   <popup-item item-id="1100" pos-id="" label-id="Edit" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1102" pos-id="" label-id="Unassign Hyp." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</popupmenu>
-
-<popupmenu label-id="Popup for ObjectBrowser" context-id="" parent-id="ObjectBrowser" object-id="Algorithm">
-   <popup-item item-id="1102" pos-id="" label-id="Unassign Algo." icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-</popupmenu>
-
-
-<popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="Mesh">
-   <popup-item item-id="214" pos-id="" label-id="Update" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/> 
-   <separator pos-id=""/>   
-   <submenu label-id="Properties" item-id="113" pos-id="">
-        <submenu label-id="Display Mode" item-id="1131" pos-id="">
-               <popup-item item-id="211" pos-id="" label-id="Wireframe" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-               <popup-item item-id="212" pos-id="" label-id="Shading" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-               <popup-item item-id="213" pos-id="" label-id="Shrink" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-       </submenu>
-       <endsubmenu />
-        <separator pos-id=""/>
-        <popup-item item-id="1132" pos-id="" label-id="Colors - Size" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-        <popup-item item-id="1133" pos-id="" label-id="Transparency" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   </submenu>
-   <endsubmenu />
-</popupmenu>
-
-<popupmenu label-id="ScalarBar" context-id="" parent-id="Viewer" object-id="ScalarBar">
-   <popup-item item-id="200" pos-id="" label-id="Erase" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="201" pos-id="" label-id="Edit" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
-   <popup-item item-id="202" pos-id="" label-id="Update View" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>  
-</popupmenu>
-
-</menubar>
-
-<!-- ///////////////////////////////////// TOOLBARS ////////////////////////////////////// -->
-<toolbar label-id="Mesh Toolbar">
-   <toolbutton-item item-id="703" pos-id="" label-id="Init" icon-id="mesh_init.png" tooltip-id="Global Hyp." accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="702" pos-id="" label-id="Add SubMesh" icon-id="mesh_add_sub.png" tooltip-id="Local Hyp." accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="704" pos-id="" label-id="Edit" icon-id="mesh_edit.png" tooltip-id="Edit Hyp." accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-   <toolbutton-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="Compute" accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-   <toolbutton-item item-id="900" pos-id="" label-id="Mesh Infos" icon-id="mesh_info.png" tooltip-id="Mesh Infos" accel-id="" toggle-id="" execute-action=""/>
-</toolbar>
-
-<toolbar label-id="Hypotheses Toolbar">
-   <toolbutton-item item-id="5000" label-id="Create Hypothesis" icon-id="mesh_hypo_length.png" tooltip-id="Create Hypothesis" accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="5010" label-id="Create Algorithm" icon-id="mesh_algo_mefisto.png" tooltip-id="Create Algorithm" accel-id="" toggle-id="" execute-action=""/>
-</toolbar>
-
-<toolbar label-id="Controls toolbar">
-       <toolbutton-item item-id="6001" label-id="Length" icon-id="mesh_length.png" tooltip-id="Length" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6002" label-id="Connectivity" icon-id="mesh_connectivity.png" tooltip-id="Connectivity" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6011" label-id="Area" icon-id="mesh_area.png" tooltip-id="Area" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6012" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="Taper" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6013" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="Aspect Ratio" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6014" label-id="Minimum angle" icon-id="mesh_angle.png" tooltip-id="Minimum angle" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6015" label-id="Warp" icon-id="mesh_wrap.png" tooltip-id="Warp" accel-id="" toggle-id="" execute-action=""/>
-       <toolbutton-item item-id="6016" label-id="Skew" icon-id="mesh_skew.png" tooltip-id="Skew" accel-id="" toggle-id="" execute-action=""/>  
-</toolbar>
-
-<toolbar label-id="Add/Remove toolbar">
-     <toolbutton-item item-id="400" label-id="Node" icon-id="mesh_vertex.png" tooltip-id="Add Node" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="401" label-id="Edge" icon-id="mesh_line.png" tooltip-id="Add Edge" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4021" label-id="Triangle" icon-id="mesh_triangle.png" tooltip-id="Add Triangle" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4022" label-id="Quadrangle" icon-id="mesh_quad.png" tooltip-id="Add Quadrangle" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4031" label-id="Tetrahedron" icon-id="mesh_tetra.png" tooltip-id="Add Tetrahedron" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4032" label-id="Hexahedron" icon-id="mesh_hexa.png" tooltip-id="Add Hexahedron" accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-     <toolbutton-item item-id="4041" label-id="Nodes" icon-id="mesh_rem_node.png" tooltip-id="Remove Nodes" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4042" label-id="Elements" icon-id="mesh_rem_element.png" tooltip-id="Remove Elements" accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-     <toolbutton-item item-id="4051" label-id="Nodes" icon-id="mesh_renumbering_nodes.png" tooltip-id="Renumbering Nodes" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="4052" label-id="Elements" icon-id="mesh_renumbering_elements.png" tooltip-id="Renumbering Elements" accel-id="" toggle-id="" execute-action=""/>
-</toolbar>
-
-<toolbar label-id="Modification toolbar">
-     <toolbutton-item item-id="405" label-id="Move Node" icon-id="mesh_move_node.png" tooltip-id="Move Node" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="406" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="Orientation" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="407" label-id="Diagonal Inversion" icon-id="mesh_diagonal.png" tooltip-id="Diagonal Inversion" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="408" label-id="Union of two triangles" icon-id="mesh_union2tri.png" tooltip-id="Union of two triangles" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="406" label-id="Orientation" icon-id="mesh_orientation.png" tooltip-id="Orientation" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="409" label-id="Union of triangles" icon-id="mesh_uniontri.png" tooltip-id="Union of triangles" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="410" label-id="Cutting of quadrangles" icon-id="mesh_cutquad.png" tooltip-id="Cutting of quadrangles" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="411" label-id="Smoothing" icon-id="mesh_smoothing.png" tooltip-id="Smoothing" accel-id="" toggle-id="" execute-action=""/>
-     <toolbutton-item item-id="412" label-id="Extrusion" icon-id="mesh_extrusion.png" tooltip-id="Extrusion along a line" accel-id="" toggle-id="" execute-action=""/> 
-     <toolbutton-item item-id="413" label-id="Revolution" icon-id="mesh_revolution.png" tooltip-id="Revolution around an axis" accel-id="" toggle-id="" execute-action=""/> 
-</toolbar>
-
-<toolbar label-id="Display Mode Toolbar">
-   <toolbutton-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="Update View" accel-id="" toggle-id="" execute-action=""/>
-   <separatorTB/>
-   <toolbutton-item item-id="211" pos-id="" label-id="Wireframe" icon-id="mesh_wireframe.png" tooltip-id="Wireframe" accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="212" pos-id="" label-id="Shading" icon-id="mesh_shading.png" tooltip-id="shading" accel-id="" toggle-id="" execute-action=""/>
-   <toolbutton-item item-id="213" pos-id="" label-id="Shrink" icon-id="mesh_shrink.png" tooltip-id="shrink" accel-id="" toggle-id="" execute-action=""/>
-</toolbar>
-
-</desktop>     
-
-</application>
diff --git a/resources/advanced_mesh_info.png b/resources/advanced_mesh_info.png
deleted file mode 100644 (file)
index 01eaea2..0000000
Binary files a/resources/advanced_mesh_info.png and /dev/null differ
diff --git a/resources/delete.png b/resources/delete.png
deleted file mode 100644 (file)
index 8ae8475..0000000
Binary files a/resources/delete.png and /dev/null differ
diff --git a/resources/mesh.png b/resources/mesh.png
deleted file mode 100644 (file)
index f8147b3..0000000
Binary files a/resources/mesh.png and /dev/null differ
diff --git a/resources/mesh_add.png b/resources/mesh_add.png
deleted file mode 100755 (executable)
index 2dde69a..0000000
Binary files a/resources/mesh_add.png and /dev/null differ
diff --git a/resources/mesh_add_sub.png b/resources/mesh_add_sub.png
deleted file mode 100644 (file)
index 20d8d8f..0000000
Binary files a/resources/mesh_add_sub.png and /dev/null differ
diff --git a/resources/mesh_algo_hexa.png b/resources/mesh_algo_hexa.png
deleted file mode 100644 (file)
index 87e50a8..0000000
Binary files a/resources/mesh_algo_hexa.png and /dev/null differ
diff --git a/resources/mesh_algo_mefisto.png b/resources/mesh_algo_mefisto.png
deleted file mode 100644 (file)
index 21616d0..0000000
Binary files a/resources/mesh_algo_mefisto.png and /dev/null differ
diff --git a/resources/mesh_algo_netgen.png b/resources/mesh_algo_netgen.png
deleted file mode 100644 (file)
index 87e50a8..0000000
Binary files a/resources/mesh_algo_netgen.png and /dev/null differ
diff --git a/resources/mesh_algo_quad.png b/resources/mesh_algo_quad.png
deleted file mode 100644 (file)
index f31b93c..0000000
Binary files a/resources/mesh_algo_quad.png and /dev/null differ
diff --git a/resources/mesh_algo_regular.png b/resources/mesh_algo_regular.png
deleted file mode 100644 (file)
index 47593f1..0000000
Binary files a/resources/mesh_algo_regular.png and /dev/null differ
diff --git a/resources/mesh_algo_tetra.png b/resources/mesh_algo_tetra.png
deleted file mode 100644 (file)
index 3fb67d5..0000000
Binary files a/resources/mesh_algo_tetra.png and /dev/null differ
diff --git a/resources/mesh_angle.png b/resources/mesh_angle.png
deleted file mode 100644 (file)
index 5b03e57..0000000
Binary files a/resources/mesh_angle.png and /dev/null differ
diff --git a/resources/mesh_area.png b/resources/mesh_area.png
deleted file mode 100644 (file)
index 9c51c32..0000000
Binary files a/resources/mesh_area.png and /dev/null differ
diff --git a/resources/mesh_aspect.png b/resources/mesh_aspect.png
deleted file mode 100644 (file)
index ffc98c8..0000000
Binary files a/resources/mesh_aspect.png and /dev/null differ
diff --git a/resources/mesh_aspect_3d.png b/resources/mesh_aspect_3d.png
deleted file mode 100644 (file)
index 4792634..0000000
Binary files a/resources/mesh_aspect_3d.png and /dev/null differ
diff --git a/resources/mesh_compute.png b/resources/mesh_compute.png
deleted file mode 100644 (file)
index c06dc7b..0000000
Binary files a/resources/mesh_compute.png and /dev/null differ
diff --git a/resources/mesh_connectivity.png b/resources/mesh_connectivity.png
deleted file mode 100644 (file)
index 9ce3e44..0000000
Binary files a/resources/mesh_connectivity.png and /dev/null differ
diff --git a/resources/mesh_cutGroups.png b/resources/mesh_cutGroups.png
deleted file mode 100644 (file)
index b06bb80..0000000
Binary files a/resources/mesh_cutGroups.png and /dev/null differ
diff --git a/resources/mesh_cutquad.png b/resources/mesh_cutquad.png
deleted file mode 100644 (file)
index 836343c..0000000
Binary files a/resources/mesh_cutquad.png and /dev/null differ
diff --git a/resources/mesh_deleteGroups.png b/resources/mesh_deleteGroups.png
deleted file mode 100644 (file)
index b7126e0..0000000
Binary files a/resources/mesh_deleteGroups.png and /dev/null differ
diff --git a/resources/mesh_diagonal.png b/resources/mesh_diagonal.png
deleted file mode 100644 (file)
index c997cef..0000000
Binary files a/resources/mesh_diagonal.png and /dev/null differ
diff --git a/resources/mesh_edit.png b/resources/mesh_edit.png
deleted file mode 100644 (file)
index 5ad2f15..0000000
Binary files a/resources/mesh_edit.png and /dev/null differ
diff --git a/resources/mesh_edit_group.png b/resources/mesh_edit_group.png
deleted file mode 100644 (file)
index 4747a66..0000000
Binary files a/resources/mesh_edit_group.png and /dev/null differ
diff --git a/resources/mesh_extrusion.png b/resources/mesh_extrusion.png
deleted file mode 100644 (file)
index 76909c0..0000000
Binary files a/resources/mesh_extrusion.png and /dev/null differ
diff --git a/resources/mesh_extrusionpath.png b/resources/mesh_extrusionpath.png
deleted file mode 100644 (file)
index 47f0aa7..0000000
Binary files a/resources/mesh_extrusionpath.png and /dev/null differ
diff --git a/resources/mesh_free_edges.png b/resources/mesh_free_edges.png
deleted file mode 100755 (executable)
index 5813e11..0000000
Binary files a/resources/mesh_free_edges.png and /dev/null differ
diff --git a/resources/mesh_free_edges_2d.png b/resources/mesh_free_edges_2d.png
deleted file mode 100644 (file)
index cc6cdb8..0000000
Binary files a/resources/mesh_free_edges_2d.png and /dev/null differ
diff --git a/resources/mesh_hexa.png b/resources/mesh_hexa.png
deleted file mode 100644 (file)
index b4b64b2..0000000
Binary files a/resources/mesh_hexa.png and /dev/null differ
diff --git a/resources/mesh_hexa_n.png b/resources/mesh_hexa_n.png
deleted file mode 100644 (file)
index 74532b4..0000000
Binary files a/resources/mesh_hexa_n.png and /dev/null differ
diff --git a/resources/mesh_hypo_area.png b/resources/mesh_hypo_area.png
deleted file mode 100644 (file)
index 487fdb7..0000000
Binary files a/resources/mesh_hypo_area.png and /dev/null differ
diff --git a/resources/mesh_hypo_edit.png b/resources/mesh_hypo_edit.png
deleted file mode 100644 (file)
index 8f61dea..0000000
Binary files a/resources/mesh_hypo_edit.png and /dev/null differ
diff --git a/resources/mesh_hypo_length.png b/resources/mesh_hypo_length.png
deleted file mode 100644 (file)
index d6106a3..0000000
Binary files a/resources/mesh_hypo_length.png and /dev/null differ
diff --git a/resources/mesh_hypo_segment.png b/resources/mesh_hypo_segment.png
deleted file mode 100644 (file)
index 2d92450..0000000
Binary files a/resources/mesh_hypo_segment.png and /dev/null differ
diff --git a/resources/mesh_hypo_volume.png b/resources/mesh_hypo_volume.png
deleted file mode 100644 (file)
index 925a5ba..0000000
Binary files a/resources/mesh_hypo_volume.png and /dev/null differ
diff --git a/resources/mesh_info.png b/resources/mesh_info.png
deleted file mode 100644 (file)
index b0c0c17..0000000
Binary files a/resources/mesh_info.png and /dev/null differ
diff --git a/resources/mesh_init.png b/resources/mesh_init.png
deleted file mode 100644 (file)
index dbf1a2e..0000000
Binary files a/resources/mesh_init.png and /dev/null differ
diff --git a/resources/mesh_intersectGroups.png b/resources/mesh_intersectGroups.png
deleted file mode 100644 (file)
index 7d473cf..0000000
Binary files a/resources/mesh_intersectGroups.png and /dev/null differ
diff --git a/resources/mesh_length.png b/resources/mesh_length.png
deleted file mode 100644 (file)
index 64ddd51..0000000
Binary files a/resources/mesh_length.png and /dev/null differ
diff --git a/resources/mesh_length_2d.png b/resources/mesh_length_2d.png
deleted file mode 100644 (file)
index 0009dc0..0000000
Binary files a/resources/mesh_length_2d.png and /dev/null differ
diff --git a/resources/mesh_line.png b/resources/mesh_line.png
deleted file mode 100644 (file)
index f699e13..0000000
Binary files a/resources/mesh_line.png and /dev/null differ
diff --git a/resources/mesh_line_n.png b/resources/mesh_line_n.png
deleted file mode 100644 (file)
index ce082c6..0000000
Binary files a/resources/mesh_line_n.png and /dev/null differ
diff --git a/resources/mesh_make_group.png b/resources/mesh_make_group.png
deleted file mode 100644 (file)
index 19ba2e6..0000000
Binary files a/resources/mesh_make_group.png and /dev/null differ
diff --git a/resources/mesh_merge_elements.png b/resources/mesh_merge_elements.png
deleted file mode 100644 (file)
index 3bc292f..0000000
Binary files a/resources/mesh_merge_elements.png and /dev/null differ
diff --git a/resources/mesh_merge_nodes.png b/resources/mesh_merge_nodes.png
deleted file mode 100644 (file)
index 275862e..0000000
Binary files a/resources/mesh_merge_nodes.png and /dev/null differ
diff --git a/resources/mesh_move_node.png b/resources/mesh_move_node.png
deleted file mode 100644 (file)
index 678add5..0000000
Binary files a/resources/mesh_move_node.png and /dev/null differ
diff --git a/resources/mesh_multi_edges.png b/resources/mesh_multi_edges.png
deleted file mode 100755 (executable)
index 0a36db1..0000000
Binary files a/resources/mesh_multi_edges.png and /dev/null differ
diff --git a/resources/mesh_multi_edges_2d.png b/resources/mesh_multi_edges_2d.png
deleted file mode 100644 (file)
index 627ceeb..0000000
Binary files a/resources/mesh_multi_edges_2d.png and /dev/null differ
diff --git a/resources/mesh_orientation.png b/resources/mesh_orientation.png
deleted file mode 100644 (file)
index 9639b31..0000000
Binary files a/resources/mesh_orientation.png and /dev/null differ
diff --git a/resources/mesh_pattern.png b/resources/mesh_pattern.png
deleted file mode 100755 (executable)
index 9440269..0000000
Binary files a/resources/mesh_pattern.png and /dev/null differ
diff --git a/resources/mesh_points.png b/resources/mesh_points.png
deleted file mode 100644 (file)
index f0d2c78..0000000
Binary files a/resources/mesh_points.png and /dev/null differ
diff --git a/resources/mesh_polygon.png b/resources/mesh_polygon.png
deleted file mode 100644 (file)
index a1f671b..0000000
Binary files a/resources/mesh_polygon.png and /dev/null differ
diff --git a/resources/mesh_polyhedron.png b/resources/mesh_polyhedron.png
deleted file mode 100644 (file)
index f475dec..0000000
Binary files a/resources/mesh_polyhedron.png and /dev/null differ
diff --git a/resources/mesh_pyramid.png b/resources/mesh_pyramid.png
deleted file mode 100644 (file)
index 480f573..0000000
Binary files a/resources/mesh_pyramid.png and /dev/null differ
diff --git a/resources/mesh_pyramid_n.png b/resources/mesh_pyramid_n.png
deleted file mode 100644 (file)
index edde6a5..0000000
Binary files a/resources/mesh_pyramid_n.png and /dev/null differ
diff --git a/resources/mesh_quad.png b/resources/mesh_quad.png
deleted file mode 100644 (file)
index 1eba33e..0000000
Binary files a/resources/mesh_quad.png and /dev/null differ
diff --git a/resources/mesh_quad_n.png b/resources/mesh_quad_n.png
deleted file mode 100644 (file)
index 499068e..0000000
Binary files a/resources/mesh_quad_n.png and /dev/null differ
diff --git a/resources/mesh_rem_element.png b/resources/mesh_rem_element.png
deleted file mode 100644 (file)
index a2bb0f1..0000000
Binary files a/resources/mesh_rem_element.png and /dev/null differ
diff --git a/resources/mesh_rem_node.png b/resources/mesh_rem_node.png
deleted file mode 100644 (file)
index c4f2834..0000000
Binary files a/resources/mesh_rem_node.png and /dev/null differ
diff --git a/resources/mesh_remove.png b/resources/mesh_remove.png
deleted file mode 100755 (executable)
index 960f1ac..0000000
Binary files a/resources/mesh_remove.png and /dev/null differ
diff --git a/resources/mesh_renumbering_elements.png b/resources/mesh_renumbering_elements.png
deleted file mode 100644 (file)
index b7bcc1c..0000000
Binary files a/resources/mesh_renumbering_elements.png and /dev/null differ
diff --git a/resources/mesh_renumbering_nodes.png b/resources/mesh_renumbering_nodes.png
deleted file mode 100644 (file)
index dc1cb3d..0000000
Binary files a/resources/mesh_renumbering_nodes.png and /dev/null differ
diff --git a/resources/mesh_revolution.png b/resources/mesh_revolution.png
deleted file mode 100644 (file)
index 3190e5f..0000000
Binary files a/resources/mesh_revolution.png and /dev/null differ
diff --git a/resources/mesh_rotation.png b/resources/mesh_rotation.png
deleted file mode 100644 (file)
index b971d45..0000000
Binary files a/resources/mesh_rotation.png and /dev/null differ
diff --git a/resources/mesh_set_algo.png b/resources/mesh_set_algo.png
deleted file mode 100644 (file)
index d14d686..0000000
Binary files a/resources/mesh_set_algo.png and /dev/null differ
diff --git a/resources/mesh_set_hypo.png b/resources/mesh_set_hypo.png
deleted file mode 100644 (file)
index 68949b8..0000000
Binary files a/resources/mesh_set_hypo.png and /dev/null differ
diff --git a/resources/mesh_sew_bordertoside.png b/resources/mesh_sew_bordertoside.png
deleted file mode 100644 (file)
index 48a3ba1..0000000
Binary files a/resources/mesh_sew_bordertoside.png and /dev/null differ
diff --git a/resources/mesh_sew_conform_freeborders.png b/resources/mesh_sew_conform_freeborders.png
deleted file mode 100644 (file)
index fff04a2..0000000
Binary files a/resources/mesh_sew_conform_freeborders.png and /dev/null differ
diff --git a/resources/mesh_sew_freeborders.png b/resources/mesh_sew_freeborders.png
deleted file mode 100644 (file)
index 4b0f694..0000000
Binary files a/resources/mesh_sew_freeborders.png and /dev/null differ
diff --git a/resources/mesh_sew_sideelements.png b/resources/mesh_sew_sideelements.png
deleted file mode 100644 (file)
index 2c64b87..0000000
Binary files a/resources/mesh_sew_sideelements.png and /dev/null differ
diff --git a/resources/mesh_shading.png b/resources/mesh_shading.png
deleted file mode 100644 (file)
index a2535af..0000000
Binary files a/resources/mesh_shading.png and /dev/null differ
diff --git a/resources/mesh_shrink.png b/resources/mesh_shrink.png
deleted file mode 100644 (file)
index 59e7b40..0000000
Binary files a/resources/mesh_shrink.png and /dev/null differ
diff --git a/resources/mesh_skew.png b/resources/mesh_skew.png
deleted file mode 100644 (file)
index 45cca1b..0000000
Binary files a/resources/mesh_skew.png and /dev/null differ
diff --git a/resources/mesh_smoothing.png b/resources/mesh_smoothing.png
deleted file mode 100644 (file)
index 0da777d..0000000
Binary files a/resources/mesh_smoothing.png and /dev/null differ
diff --git a/resources/mesh_symmetry_axis.png b/resources/mesh_symmetry_axis.png
deleted file mode 100644 (file)
index dd5e19b..0000000
Binary files a/resources/mesh_symmetry_axis.png and /dev/null differ
diff --git a/resources/mesh_symmetry_plane.png b/resources/mesh_symmetry_plane.png
deleted file mode 100644 (file)
index 91a7203..0000000
Binary files a/resources/mesh_symmetry_plane.png and /dev/null differ
diff --git a/resources/mesh_symmetry_point.png b/resources/mesh_symmetry_point.png
deleted file mode 100644 (file)
index 81a29a7..0000000
Binary files a/resources/mesh_symmetry_point.png and /dev/null differ
diff --git a/resources/mesh_taper.png b/resources/mesh_taper.png
deleted file mode 100644 (file)
index 68dbc66..0000000
Binary files a/resources/mesh_taper.png and /dev/null differ
diff --git a/resources/mesh_tetra.png b/resources/mesh_tetra.png
deleted file mode 100644 (file)
index 6812d5b..0000000
Binary files a/resources/mesh_tetra.png and /dev/null differ
diff --git a/resources/mesh_tetra_n.png b/resources/mesh_tetra_n.png
deleted file mode 100644 (file)
index fa4d0fa..0000000
Binary files a/resources/mesh_tetra_n.png and /dev/null differ
diff --git a/resources/mesh_translation_points.png b/resources/mesh_translation_points.png
deleted file mode 100644 (file)
index 1805c97..0000000
Binary files a/resources/mesh_translation_points.png and /dev/null differ
diff --git a/resources/mesh_translation_vector.png b/resources/mesh_translation_vector.png
deleted file mode 100644 (file)
index dc4f08a..0000000
Binary files a/resources/mesh_translation_vector.png and /dev/null differ
diff --git a/resources/mesh_tree_algo.png b/resources/mesh_tree_algo.png
deleted file mode 100644 (file)
index 61b11bb..0000000
Binary files a/resources/mesh_tree_algo.png and /dev/null differ
diff --git a/resources/mesh_tree_algo_hexa.png b/resources/mesh_tree_algo_hexa.png
deleted file mode 100644 (file)
index cb75b7e..0000000
Binary files a/resources/mesh_tree_algo_hexa.png and /dev/null differ
diff --git a/resources/mesh_tree_algo_mefisto.png b/resources/mesh_tree_algo_mefisto.png
deleted file mode 100644 (file)
index 5375071..0000000
Binary files a/resources/mesh_tree_algo_mefisto.png and /dev/null differ
diff --git a/resources/mesh_tree_algo_netgen.png b/resources/mesh_tree_algo_netgen.png
deleted file mode 100644 (file)
index cb75b7e..0000000
Binary files a/resources/mesh_tree_algo_netgen.png and /dev/null differ
diff --git a/resources/mesh_tree_algo_quad.png b/resources/mesh_tree_algo_quad.png
deleted file mode 100644 (file)
index fe6ce02..0000000
Binary files a/resources/mesh_tree_algo_quad.png and /dev/null differ
diff --git a/resources/mesh_tree_algo_regular.png b/resources/mesh_tree_algo_regular.png
deleted file mode 100644 (file)
index ecd1f73..0000000
Binary files a/resources/mesh_tree_algo_regular.png and /dev/null differ
diff --git a/resources/mesh_tree_algo_tetra.png b/resources/mesh_tree_algo_tetra.png
deleted file mode 100644 (file)
index 9c21a58..0000000
Binary files a/resources/mesh_tree_algo_tetra.png and /dev/null differ
diff --git a/resources/mesh_tree_group.png b/resources/mesh_tree_group.png
deleted file mode 100644 (file)
index cfcfc68..0000000
Binary files a/resources/mesh_tree_group.png and /dev/null differ
diff --git a/resources/mesh_tree_hypo.png b/resources/mesh_tree_hypo.png
deleted file mode 100644 (file)
index 3ab76a6..0000000
Binary files a/resources/mesh_tree_hypo.png and /dev/null differ
diff --git a/resources/mesh_tree_hypo_area.png b/resources/mesh_tree_hypo_area.png
deleted file mode 100644 (file)
index 22c8bd0..0000000
Binary files a/resources/mesh_tree_hypo_area.png and /dev/null differ
diff --git a/resources/mesh_tree_hypo_length.png b/resources/mesh_tree_hypo_length.png
deleted file mode 100644 (file)
index abe34f5..0000000
Binary files a/resources/mesh_tree_hypo_length.png and /dev/null differ
diff --git a/resources/mesh_tree_hypo_segment.png b/resources/mesh_tree_hypo_segment.png
deleted file mode 100644 (file)
index 1957e6d..0000000
Binary files a/resources/mesh_tree_hypo_segment.png and /dev/null differ
diff --git a/resources/mesh_tree_hypo_volume.png b/resources/mesh_tree_hypo_volume.png
deleted file mode 100644 (file)
index fb18ead..0000000
Binary files a/resources/mesh_tree_hypo_volume.png and /dev/null differ
diff --git a/resources/mesh_tree_importedmesh.png b/resources/mesh_tree_importedmesh.png
deleted file mode 100644 (file)
index 0c37d0a..0000000
Binary files a/resources/mesh_tree_importedmesh.png and /dev/null differ
diff --git a/resources/mesh_tree_mesh.png b/resources/mesh_tree_mesh.png
deleted file mode 100644 (file)
index 2a2ff57..0000000
Binary files a/resources/mesh_tree_mesh.png and /dev/null differ
diff --git a/resources/mesh_tree_mesh_warn.png b/resources/mesh_tree_mesh_warn.png
deleted file mode 100644 (file)
index d61b873..0000000
Binary files a/resources/mesh_tree_mesh_warn.png and /dev/null differ
diff --git a/resources/mesh_triangle.png b/resources/mesh_triangle.png
deleted file mode 100644 (file)
index 9a2a6fd..0000000
Binary files a/resources/mesh_triangle.png and /dev/null differ
diff --git a/resources/mesh_triangle_n.png b/resources/mesh_triangle_n.png
deleted file mode 100644 (file)
index a7228d3..0000000
Binary files a/resources/mesh_triangle_n.png and /dev/null differ
diff --git a/resources/mesh_union2tri.png b/resources/mesh_union2tri.png
deleted file mode 100644 (file)
index 88831b9..0000000
Binary files a/resources/mesh_union2tri.png and /dev/null differ
diff --git a/resources/mesh_unionGroups.png b/resources/mesh_unionGroups.png
deleted file mode 100644 (file)
index c3412bb..0000000
Binary files a/resources/mesh_unionGroups.png and /dev/null differ
diff --git a/resources/mesh_uniontri.png b/resources/mesh_uniontri.png
deleted file mode 100644 (file)
index 229cb6a..0000000
Binary files a/resources/mesh_uniontri.png and /dev/null differ
diff --git a/resources/mesh_update.png b/resources/mesh_update.png
deleted file mode 100644 (file)
index 8757e30..0000000
Binary files a/resources/mesh_update.png and /dev/null differ
diff --git a/resources/mesh_vertex.png b/resources/mesh_vertex.png
deleted file mode 100644 (file)
index b85d63a..0000000
Binary files a/resources/mesh_vertex.png and /dev/null differ
diff --git a/resources/mesh_vertex_n.png b/resources/mesh_vertex_n.png
deleted file mode 100644 (file)
index dfbafc9..0000000
Binary files a/resources/mesh_vertex_n.png and /dev/null differ
diff --git a/resources/mesh_wireframe.png b/resources/mesh_wireframe.png
deleted file mode 100644 (file)
index 01e82f0..0000000
Binary files a/resources/mesh_wireframe.png and /dev/null differ
diff --git a/resources/mesh_wrap.png b/resources/mesh_wrap.png
deleted file mode 100644 (file)
index c919168..0000000
Binary files a/resources/mesh_wrap.png and /dev/null differ
diff --git a/resources/pattern_sample_2d.png b/resources/pattern_sample_2d.png
deleted file mode 100755 (executable)
index 290872b..0000000
Binary files a/resources/pattern_sample_2d.png and /dev/null differ
diff --git a/resources/pattern_sample_3D.png b/resources/pattern_sample_3D.png
deleted file mode 100755 (executable)
index b306685..0000000
Binary files a/resources/pattern_sample_3D.png and /dev/null differ
diff --git a/resources/select1.png b/resources/select1.png
deleted file mode 100644 (file)
index 99ebde6..0000000
Binary files a/resources/select1.png and /dev/null differ
diff --git a/resources/standard_mesh_info.png b/resources/standard_mesh_info.png
deleted file mode 100644 (file)
index 0600087..0000000
Binary files a/resources/standard_mesh_info.png and /dev/null differ
diff --git a/src/Controls/SMESHControls.cxx b/src/Controls/SMESHControls.cxx
deleted file mode 100644 (file)
index 0c8d145..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "SMESH_ControlsDef.hxx"
-
-int main(int argc, char** argv)
-{
-  using namespace SMESH::Controls;
-  new MinimumAngle();
-  new AspectRatio();
-  new Warping();
-  new Taper();
-  new Skew();
-  new Area();
-  new Length();
-  //  new Length2D();
-  new MultiConnection();
-  //  new MultiConnection2D();
-  new FreeBorders();
-  new LessThan();
-  new MoreThan();
-  new EqualTo();
-  new LogicalNOT();
-  new LogicalAND();
-  new LogicalOR();
-  new ManifoldPart();
-
-  return 1;
-}
diff --git a/src/Controls/SMESH_Controls.hxx b/src/Controls/SMESH_Controls.hxx
deleted file mode 100644 (file)
index fa4558d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _SMESH_CONTROLS_HXX_
-#define _SMESH_CONTROLS_HXX_
-
-#include <boost/shared_ptr.hpp>
-
-namespace SMESH{
-  namespace Controls{
-
-    class Functor;
-    typedef boost::shared_ptr<Functor> FunctorPtr;
-
-
-    class NumericalFunctor;
-    typedef boost::shared_ptr<NumericalFunctor> NumericalFunctorPtr;
-  
-  
-    class Predicate;
-    typedef boost::shared_ptr<Predicate> PredicatePtr;
-
-  }
-}
-
-
-#endif
diff --git a/src/Controls/SMESH_ControlsDef.hxx b/src/Controls/SMESH_ControlsDef.hxx
deleted file mode 100644 (file)
index 576b1e8..0000000
+++ /dev/null
@@ -1,660 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _SMESH_CONTROLSDEF_HXX_
-#define _SMESH_CONTROLSDEF_HXX_
-
-#include <set>
-#include <map>
-#include <vector>
-#include <boost/shared_ptr.hpp>
-#include <gp_XYZ.hxx>
-#include <Geom_Surface.hxx>
-#include <TColStd_SequenceOfInteger.hxx>
-#include <TColStd_MapOfInteger.hxx>
-#include <TCollection_AsciiString.hxx>
-
-#include "SMDSAbs_ElementType.hxx"
-#include "SMDS_MeshNode.hxx"
-
-#include "SMESH_Controls.hxx"
-
-class SMDS_MeshElement;
-class SMDS_MeshFace;
-class SMDS_MeshNode;
-class SMDS_Mesh;
-
-class SMESHDS_Mesh;
-class SMESHDS_SubMesh;
-
-class gp_Pnt;
-class TopoDS_Shape;
-
-
-namespace SMESH{
-  namespace Controls{
-
-    class TSequenceOfXYZ: public std::vector<gp_XYZ>
-    {
-    public:
-      typedef std::vector<gp_XYZ> TSuperClass;
-      TSequenceOfXYZ()
-      {}
-
-      TSequenceOfXYZ(size_type n):
-       TSuperClass(n)
-      {}
-
-      TSequenceOfXYZ(size_type n, const value_type& t):
-       TSuperClass(n,t)
-      {}
-
-      TSequenceOfXYZ(const TSequenceOfXYZ& theSequenceOfXYZ):
-       TSuperClass(theSequenceOfXYZ)
-      {}
-
-      template <class InputIterator>
-      TSequenceOfXYZ(InputIterator theBegin, InputIterator theEnd):
-       TSuperClass(theBegin,theEnd)
-      {}
-
-      TSequenceOfXYZ& operator=(const TSequenceOfXYZ& theSequenceOfXYZ){
-       TSuperClass::operator=(theSequenceOfXYZ);
-       return *this;
-      }
-
-      reference operator()(size_type n){
-       return TSuperClass::operator[](n-1);
-      }
-
-      const_reference operator()(size_type n) const{
-       return TSuperClass::operator[](n-1);
-      }
-
-    private:
-      reference operator[](size_type n);
-
-      const_reference operator[](size_type n) const;
-    };
-
-    /*
-      Class       : Functor
-      Description : Root of all Functors
-    */
-    class Functor
-    {
-    public:
-      ~Functor(){}
-      virtual void SetMesh( const SMDS_Mesh* theMesh ) = 0;
-      virtual SMDSAbs_ElementType GetType() const = 0;
-    };
-
-    /*
-      Class       : NumericalFunctor
-      Description : Root of all Functors returning numeric value
-    */
-    class NumericalFunctor: public virtual Functor{
-    public:
-      NumericalFunctor();
-      virtual void SetMesh( const SMDS_Mesh* theMesh );
-      virtual double GetValue( long theElementId );
-      virtual double GetValue(const TSequenceOfXYZ& thePoints) { return -1.0;};
-      virtual SMDSAbs_ElementType GetType() const = 0;
-      virtual double GetBadRate( double Value, int nbNodes ) const = 0;
-      long  GetPrecision() const;
-      void  SetPrecision( const long thePrecision );
-      
-      bool GetPoints(const int theId, 
-                    TSequenceOfXYZ& theRes) const;
-      static bool GetPoints(const SMDS_MeshElement* theElem, 
-                           TSequenceOfXYZ& theRes);
-    protected:
-      const SMDS_Mesh* myMesh;
-      long       myPrecision;
-    };
-  
-  
-    /*
-      Class       : Volume
-      Description : Functor calculating volume of 3D mesh element
-    */
-    class Volume: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( long theElementId );
-      //virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-    };
-  
-  
-    /*
-      Class       : SMESH_MinimumAngle
-      Description : Functor for calculation of minimum angle
-    */
-    class MinimumAngle: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-    };
-  
-  
-    /*
-      Class       : AspectRatio
-      Description : Functor for calculating aspect ratio
-    */
-    class AspectRatio: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-    };
-  
-  
-    /*
-      Class       : AspectRatio3D
-      Description : Functor for calculating aspect ratio of 3D elems.
-    */
-    class AspectRatio3D: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-    };
-  
-  
-    /*
-      Class       : Warping
-      Description : Functor for calculating warping
-    */
-    class Warping: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-      
-    private:
-      double ComputeA( const gp_XYZ&, const gp_XYZ&, const gp_XYZ&, const gp_XYZ& ) const;
-    };
-  
-  
-    /*
-      Class       : Taper
-      Description : Functor for calculating taper
-    */
-    class Taper: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-    };
-    
-  
-    /*
-      Class       : Skew
-      Description : Functor for calculating skew in degrees
-    */
-    class Skew: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-    };
-  
-    
-    /*
-      Class       : Area
-      Description : Functor for calculating area
-    */
-    class Area: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-    };
-  
-  
-    /*
-      Class       : Length
-      Description : Functor for calculating length of edge
-    */
-    class Length: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-    };
-  
-    /*
-      Class       : Length2D
-      Description : Functor for calculating length of edge
-    */
-    class Length2D: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( long theElementId );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-      struct Value{
-       double myLength;
-       long myPntId[2];
-       Value(double theLength, long thePntId1, long thePntId2);
-       bool operator<(const Value& x) const;
-      };
-      typedef std::set<Value> TValues;
-      void GetValues(TValues& theValues);
-      
-    };
-    typedef boost::shared_ptr<Length2D> Length2DPtr;
-
-    /*
-      Class       : MultiConnection
-      Description : Functor for calculating number of faces conneted to the edge
-    */
-    class MultiConnection: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( long theElementId );
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-    };
-    
-    /*
-      Class       : MultiConnection2D
-      Description : Functor for calculating number of faces conneted to the edge
-    */
-    class MultiConnection2D: public virtual NumericalFunctor{
-    public:
-      virtual double GetValue( long theElementId );
-      virtual double GetValue( const TSequenceOfXYZ& thePoints );
-      virtual double GetBadRate( double Value, int nbNodes ) const;
-      virtual SMDSAbs_ElementType GetType() const;
-      struct Value{
-       long myPntId[2];
-       Value(long thePntId1, long thePntId2);
-       bool operator<(const Value& x) const;
-      };
-      typedef std::map<Value,int> MValues;
-
-      void GetValues(MValues& theValues);
-    };
-    typedef boost::shared_ptr<MultiConnection2D> MultiConnection2DPtr;
-    /*
-      PREDICATES
-    */
-    /*
-      Class       : Predicate
-      Description : Base class for all predicates
-    */
-    class Predicate: public virtual Functor{
-    public:
-      virtual bool IsSatisfy( long theElementId ) = 0;
-      virtual SMDSAbs_ElementType GetType() const = 0;
-    };
-    
-  
-  
-    /*
-      Class       : FreeBorders
-      Description : Predicate for free borders
-    */
-    class FreeBorders: public virtual Predicate{
-    public:
-      FreeBorders();
-      virtual void SetMesh( const SMDS_Mesh* theMesh );
-      virtual bool IsSatisfy( long theElementId );
-      virtual SMDSAbs_ElementType GetType() const;
-            
-    protected:
-      const SMDS_Mesh* myMesh;
-    };
-   
-
-    /*
-      Class       : BadOrientedVolume
-      Description : Predicate bad oriented volumes
-    */
-    class BadOrientedVolume: public virtual Predicate{
-    public:
-      BadOrientedVolume();
-      virtual void SetMesh( const SMDS_Mesh* theMesh );
-      virtual bool IsSatisfy( long theElementId );
-      virtual SMDSAbs_ElementType GetType() const;
-            
-    protected:
-      const SMDS_Mesh* myMesh;
-    };
-   
-
-    /*
-      Class       : FreeEdges
-      Description : Predicate for free Edges
-    */
-    class FreeEdges: public virtual Predicate{
-    public:
-      FreeEdges();
-      virtual void SetMesh( const SMDS_Mesh* theMesh );
-      virtual bool IsSatisfy( long theElementId );
-      virtual SMDSAbs_ElementType GetType() const;
-      static bool IsFreeEdge( const SMDS_MeshNode** theNodes, const int theFaceId  );
-      typedef long TElemId;
-      struct Border{
-       TElemId myElemId;
-       TElemId myPntId[2];
-       Border(long theElemId, long thePntId1, long thePntId2);
-       bool operator<(const Border& x) const;
-      };
-      typedef std::set<Border> TBorders;
-      void GetBoreders(TBorders& theBorders);
-      
-    protected:
-      const SMDS_Mesh* myMesh;
-    };
-    typedef boost::shared_ptr<FreeEdges> FreeEdgesPtr;
-
-
-    /*
-      Class       : RangeOfIds
-      Description : Predicate for Range of Ids.
-                    Range may be specified with two ways.
-                    1. Using AddToRange method
-                    2. With SetRangeStr method. Parameter of this method is a string
-                       like as "1,2,3,50-60,63,67,70-"
-    */
-    class RangeOfIds: public virtual Predicate
-    {
-    public:
-                                    RangeOfIds();
-      virtual void                  SetMesh( const SMDS_Mesh* theMesh );
-      virtual bool                  IsSatisfy( long theNodeId );
-      virtual SMDSAbs_ElementType   GetType() const;
-      virtual void                  SetType( SMDSAbs_ElementType theType );
-
-      bool                          AddToRange( long theEntityId );
-      void                          GetRangeStr( TCollection_AsciiString& );
-      bool                          SetRangeStr( const TCollection_AsciiString& );
-
-    protected:
-      const SMDS_Mesh*              myMesh;
-
-      TColStd_SequenceOfInteger     myMin;
-      TColStd_SequenceOfInteger     myMax;
-      TColStd_MapOfInteger          myIds;
-
-      SMDSAbs_ElementType           myType;
-    };
-    
-    typedef boost::shared_ptr<RangeOfIds> RangeOfIdsPtr;
-   
-    
-    /*
-      Class       : Comparator
-      Description : Base class for comparators
-    */
-    class Comparator: public virtual Predicate{
-    public:
-      Comparator();
-      virtual ~Comparator();
-      virtual void SetMesh( const SMDS_Mesh* theMesh );
-      virtual void SetMargin(double theValue);
-      virtual void SetNumFunctor(NumericalFunctorPtr theFunct);
-      virtual bool IsSatisfy( long theElementId ) = 0;
-      virtual SMDSAbs_ElementType GetType() const;
-      double  GetMargin();
-  
-    protected:
-      double myMargin;
-      NumericalFunctorPtr myFunctor;
-    };
-    typedef boost::shared_ptr<Comparator> ComparatorPtr;
-  
-  
-    /*
-      Class       : LessThan
-      Description : Comparator "<"
-    */
-    class LessThan: public virtual Comparator{
-    public:
-      virtual bool IsSatisfy( long theElementId );
-    };
-  
-  
-    /*
-      Class       : MoreThan
-      Description : Comparator ">"
-    */
-    class MoreThan: public virtual Comparator{
-    public:
-      virtual bool IsSatisfy( long theElementId );
-    };
-  
-  
-    /*
-      Class       : EqualTo
-      Description : Comparator "="
-    */
-    class EqualTo: public virtual Comparator{
-    public:
-      EqualTo();
-      virtual bool IsSatisfy( long theElementId );
-      virtual void SetTolerance( double theTol );
-      virtual double GetTolerance();
-  
-    private:
-      double myToler;
-    };
-    typedef boost::shared_ptr<EqualTo> EqualToPtr;
-  
-    
-    /*
-      Class       : LogicalNOT
-      Description : Logical NOT predicate
-    */
-    class LogicalNOT: public virtual Predicate{
-    public:
-      LogicalNOT();
-      virtual ~LogicalNOT();
-      virtual bool IsSatisfy( long theElementId );
-      virtual void SetMesh( const SMDS_Mesh* theMesh );
-      virtual void SetPredicate(PredicatePtr thePred);
-      virtual SMDSAbs_ElementType GetType() const;
-  
-    private:
-      PredicatePtr myPredicate;
-    };
-    typedef boost::shared_ptr<LogicalNOT> LogicalNOTPtr;
-    
-  
-    /*
-      Class       : LogicalBinary
-      Description : Base class for binary logical predicate
-    */
-    class LogicalBinary: public virtual Predicate{
-    public:
-      LogicalBinary();
-      virtual ~LogicalBinary();
-      virtual void SetMesh( const SMDS_Mesh* theMesh );
-      virtual void SetPredicate1(PredicatePtr thePred);
-      virtual void SetPredicate2(PredicatePtr thePred);
-      virtual SMDSAbs_ElementType GetType() const;
-  
-    protected:
-      PredicatePtr myPredicate1;
-      PredicatePtr myPredicate2;
-    };
-    typedef boost::shared_ptr<LogicalBinary> LogicalBinaryPtr;
-  
-  
-    /*
-      Class       : LogicalAND
-      Description : Logical AND
-    */
-    class LogicalAND: public virtual LogicalBinary{
-    public:
-      virtual bool IsSatisfy( long theElementId );
-    };
-  
-  
-    /*
-      Class       : LogicalOR
-      Description : Logical OR
-    */
-    class LogicalOR: public virtual LogicalBinary{
-    public:
-      virtual bool IsSatisfy( long theElementId );
-    };
-  
-  
-    /*
-      Class       : ManifoldPart
-      Description : Predicate for manifold part of mesh
-    */
-    class ManifoldPart: public virtual Predicate{
-    public:
-
-      /* internal class for algorithm uses */
-      class Link
-      {
-      public:
-        Link( SMDS_MeshNode* theNode1,
-              SMDS_MeshNode* theNode2 );
-        ~Link();
-        
-        bool IsEqual( const ManifoldPart::Link& theLink ) const;
-        bool operator<(const ManifoldPart::Link& x) const;
-        
-        SMDS_MeshNode* myNode1;
-        SMDS_MeshNode* myNode2;
-      };
-
-      bool IsEqual( const ManifoldPart::Link& theLink1,
-                    const ManifoldPart::Link& theLink2 );
-      
-      typedef std::set<ManifoldPart::Link>                TMapOfLink;
-      typedef std::vector<SMDS_MeshFace*>                 TVectorOfFacePtr;
-      typedef std::vector<ManifoldPart::Link>             TVectorOfLink;
-      typedef std::map<SMDS_MeshFace*,int>                TDataMapFacePtrInt;
-      typedef std::map<ManifoldPart::Link,SMDS_MeshFace*> TDataMapOfLinkFacePtr;
-      
-      ManifoldPart();
-      ~ManifoldPart();
-      virtual void SetMesh( const SMDS_Mesh* theMesh );
-      // inoke when all parameters already set
-      virtual bool IsSatisfy( long theElementId );
-      virtual      SMDSAbs_ElementType GetType() const;
-
-      void    SetAngleTolerance( const double theAngToler );
-      double  GetAngleTolerance() const;
-      void    SetIsOnlyManifold( const bool theIsOnly );
-      void    SetStartElem( const long  theStartElemId );
-
-    private:
-      bool    process();
-      bool    findConnected( const TDataMapFacePtrInt& theAllFacePtrInt,
-                             SMDS_MeshFace*            theStartFace,
-                             TMapOfLink&               theNonManifold,
-                             TColStd_MapOfInteger&     theResFaces );
-      bool    isInPlane( const SMDS_MeshFace* theFace1,
-                          const SMDS_MeshFace* theFace2 );
-      void    expandBoundary( TMapOfLink&            theMapOfBoundary,
-                              TVectorOfLink&         theSeqOfBoundary,
-                              TDataMapOfLinkFacePtr& theDMapLinkFacePtr,
-                              TMapOfLink&            theNonManifold,
-                              SMDS_MeshFace*         theNextFace ) const;
-
-     void     getFacesByLink( const Link& theLink,
-                              TVectorOfFacePtr& theFaces ) const;
-
-    private:
-      const SMDS_Mesh*      myMesh;
-      TColStd_MapOfInteger  myMapIds;
-      TColStd_MapOfInteger  myMapBadGeomIds;
-      TVectorOfFacePtr      myAllFacePtr;
-      TDataMapFacePtrInt    myAllFacePtrIntDMap;
-      double                myAngToler;
-      bool                  myIsOnlyManifold;
-      long                  myStartElemId;
-
-    };
-    typedef boost::shared_ptr<ManifoldPart> ManifoldPartPtr;
-                         
-
-    /*
-      Class       : ElementsOnSurface
-      Description : Predicate elements that lying on indicated surface
-                    (plane or cylinder)
-    */
-    class ElementsOnSurface : public virtual Predicate {
-    public:
-      ElementsOnSurface();
-      ~ElementsOnSurface();
-      virtual void SetMesh( const SMDS_Mesh* theMesh );
-      virtual bool IsSatisfy( long theElementId );
-      virtual      SMDSAbs_ElementType GetType() const;
-
-      void    SetTolerance( const double theToler );
-      double  GetTolerance() const;
-      void    SetSurface( const TopoDS_Shape& theShape,
-                          const SMDSAbs_ElementType theType );
-
-    private:
-      void    process();
-      void    process( const SMDS_MeshElement* theElem  );
-      bool    isOnSurface( const SMDS_MeshNode* theNode ) const;
-
-    private:
-      const SMDS_Mesh*      myMesh;
-      TColStd_MapOfInteger  myIds;
-      SMDSAbs_ElementType   myType;
-      Handle(Geom_Surface)  mySurf;
-      double                myToler;
-    };
-    
-    typedef boost::shared_ptr<ElementsOnSurface> ElementsOnSurfacePtr;
-      
-
-    /*
-      FILTER
-    */
-    class Filter{
-    public:
-      Filter();
-      virtual ~Filter();
-      virtual void SetPredicate(PredicatePtr thePred);
-
-      typedef std::vector<long> TIdSequence;
-
-      virtual 
-      void
-      GetElementsId( const SMDS_Mesh* theMesh,
-                    TIdSequence& theSequence );
-
-      static
-      void
-      GetElementsId( const SMDS_Mesh* theMesh, 
-                    PredicatePtr thePredicate,
-                    TIdSequence& theSequence );
-      
-    protected:
-      PredicatePtr myPredicate;
-    };
-  };  
-};
-
-
-#endif
diff --git a/src/Driver/Driver_Document.cxx b/src/Driver/Driver_Document.cxx
deleted file mode 100644 (file)
index 159c1a8..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "Driver_Document.h"
-
-Driver_Document::Driver_Document():
-  myDocument(NULL)
-{}
-
-
-void Driver_Document::SetFile(const std::string& theFileName)
-{
-  myFile = theFileName;
-}
-
-
-void Driver_Document::SetDocument(SMESHDS_Document * theDocument)
-{
-  myDocument = theDocument;
-}
diff --git a/src/Driver/Driver_Document.h b/src/Driver/Driver_Document.h
deleted file mode 100644 (file)
index 8d4ff5a..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVER_DOCUMENT
-#define _INCLUDE_DRIVER_DOCUMENT
-
-#include <string>
-
-class SMESHDS_Document;
-
-class Driver_Document
-{
- public:
-  Driver_Document();
-  virtual ~Driver_Document(){}
-
-  virtual void Perform() = 0;
-  void SetFile(const std::string& theFileName);
-  void SetDocument(SMESHDS_Document *theDocument);
-
- protected:
-  SMESHDS_Document * myDocument;
-  std::string myFile;
-
-};
-
-
-#endif
diff --git a/src/Driver/Driver_Mesh.cxx b/src/Driver/Driver_Mesh.cxx
deleted file mode 100644 (file)
index f656bdd..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//  SMESH Driver : implementaion of driver for reading and writing     
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : Mesh_Reader.cxx
-//  Module : SMESH
-
-#include "Driver_Mesh.h"
-
-using namespace std;
-
-Driver_Mesh::Driver_Mesh():
-  myFile(""),
-  myMeshId(-1)
-{}
-
-
-void Driver_Mesh::SetMeshId(int theMeshId)
-{
-  myMeshId = theMeshId;
-}
-
-
-void Driver_Mesh::SetFile(const std::string& theFileName)
-{
-  myFile = theFileName;
-}
diff --git a/src/Driver/Driver_Mesh.h b/src/Driver/Driver_Mesh.h
deleted file mode 100644 (file)
index 14ca22f..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//  SMESH Driver : implementaion of driver for reading and writing  
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : Mesh_Reader.h
-//  Module : SMESH
-
-#ifndef _INCLUDE_DRIVER_MESH
-#define _INCLUDE_DRIVER_MESH
-
-#include <string>
-
-#if defined WNT && defined WIN32 && defined DRIVER_EXPORTS
-#define DRIVER_WNT_EXPORT __declspec( dllexport )
-#else
-#define DRIVER_WNT_EXPORT
-#endif
-
-class DRIVER_WNT_EXPORT Driver_Mesh
-{
- public:
-  Driver_Mesh();
-  virtual ~Driver_Mesh(){}
-
-  enum Status {
-    DRS_OK,
-    DRS_EMPTY,          // a file contains no mesh with the given name
-    DRS_WARN_RENUMBER,  // a file has overlapped ranges of element numbers,
-                        // so the numbers from the file are ignored
-    DRS_WARN_SKIP_ELEM, // some elements were skipped due to incorrect file data
-    DRS_FAIL            // general failure (exception etc.)
-  };
-
-  virtual Status Perform() = 0;
-  void SetMeshId(int theMeshId);
-  void SetFile(const std::string& theFileName);
-
- protected:
-  std::string myFile;
-  int myMeshId;
-
-};
-
-#endif
diff --git a/src/Driver/Driver_SMDS_Mesh.cxx b/src/Driver/Driver_SMDS_Mesh.cxx
deleted file mode 100644 (file)
index dae030d..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "Driver_SMDS_Mesh.h"
-
-using namespace std;
-
-Driver_SMDS_Mesh::Driver_SMDS_Mesh():
-  myMesh(NULL)
-{}
-
-void Driver_SMDS_Mesh::SetMesh(SMDS_Mesh *theMesh)
-{
-  myMesh = theMesh;
-}
diff --git a/src/Driver/Driver_SMDS_Mesh.h b/src/Driver/Driver_SMDS_Mesh.h
deleted file mode 100644 (file)
index 1ea3756..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVER_SMDS_MESH
-#define _INCLUDE_DRIVER_SMDS_MESH
-
-#include "Driver_Mesh.h"
-
-class SMDS_Mesh;
-
-class Driver_SMDS_Mesh: public Driver_Mesh
-{
- public:
-  Driver_SMDS_Mesh();
-  void SetMesh(SMDS_Mesh *theMesh);
-  
- protected:
-  SMDS_Mesh *myMesh;
-
-};
-
-#endif
diff --git a/src/Driver/Driver_SMESHDS_Mesh.cxx b/src/Driver/Driver_SMESHDS_Mesh.cxx
deleted file mode 100644 (file)
index 2bf8827..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "Driver_SMESHDS_Mesh.h"
-
-using namespace std;
-
-Driver_SMESHDS_Mesh::Driver_SMESHDS_Mesh():
-  myMesh(NULL)
-{}
-
-void Driver_SMESHDS_Mesh::SetMesh(SMESHDS_Mesh *theMesh)
-{
-  myMesh = theMesh;
-}
diff --git a/src/Driver/Driver_SMESHDS_Mesh.h b/src/Driver/Driver_SMESHDS_Mesh.h
deleted file mode 100644 (file)
index 30e0595..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVER_SMESHDS_MESH
-#define _INCLUDE_DRIVER_SMESHDS_MESH
-
-#include "Driver_Mesh.h"
-
-class SMESHDS_Mesh;
-
-#if defined WNT && defined WIN32 && defined DRIVER_EXPORTS
-#define DRIVER_WNT_EXPORT __declspec( dllexport )
-#else
-#define DRIVER_WNT_EXPORT
-#endif
-
-class DRIVER_WNT_EXPORT Driver_SMESHDS_Mesh: public Driver_Mesh
-{
- public:
-  Driver_SMESHDS_Mesh();
-  void SetMesh(SMESHDS_Mesh *theMesh);
-  
- protected:
-  SMESHDS_Mesh *myMesh;
-
-};
-
-#endif
diff --git a/src/Driver/Makefile.in b/src/Driver/Makefile.in
deleted file mode 100644 (file)
index d1c7141..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#  SMESH Driver : implementaion of driver for reading and writing      
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Marc Tajchman (CEA)
-#  Module : SMESH
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-
-@COMMENCE@
-
-# header files 
-EXPORT_HEADERS= Driver_Document.h Driver_Mesh.h \
-               Driver_SMDS_Mesh.h Driver_SMESHDS_Mesh.h
-
-# Libraries targets
-LIB = libMeshDriver.la
-LIB_SRC = Driver_Document.cxx Driver_Mesh.cxx \
-         Driver_SMDS_Mesh.cxx Driver_SMESHDS_Mesh.cxx
-
-LIB_CLIENT_IDL =
-
-LIB_SERVER_IDL =
-
-# additionnal information to compil and link file
-CPPFLAGS += 
-CXXFLAGS += 
-
-LDFLAGS  += $(OCC_KERNEL_LIBS) -lTKTopAlgo -lSMESHDS -L${KERNEL_ROOT_DIR}/lib/salome -lOpUtil
-
-
-@CONCLUDE@
-
-
-
diff --git a/src/DriverDAT/DAT_Test.cxx b/src/DriverDAT/DAT_Test.cxx
deleted file mode 100644 (file)
index a36b4dd..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverDAT_R_SMDS_Mesh.h"
-#include "DriverDAT_W_SMDS_Mesh.h"
-
-int main(int argc, char** argv)
-{
-  DriverDAT_R_SMDS_Mesh aR;
-  DriverDAT_W_SMDS_Mesh aW;
-  return 1;
-}
diff --git a/src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx b/src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx
deleted file mode 100644 (file)
index a49d7db..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include <stdio.h>
-
-#include "DriverDAT_R_SMDS_Mesh.h"
-#include "SMDS_Mesh.hxx"
-
-#include "utilities.h"
-
-using namespace std;
-
-Driver_Mesh::Status DriverDAT_R_SMDS_Mesh::Perform()
-{
-  Status aResult = DRS_OK;
-
-  int i, j;
-  int nbNodes, nbCells;
-  int intNumPoint;
-  float coordX, coordY, coordZ;
-  int nbNoeuds;
-  
-  int intNumMaille, Degre;
-  int ValElement;
-  int ValDegre;
-  int NoeudsMaille[20];
-  int NoeudMaille;
-  
-  bool ok;
-  
-  MESSAGE("in DriverDAT_R_SMDS_Mesh::Read()");
-  /****************************************************************************
-   *                      OUVERTURE DU FICHIER EN LECTURE                      *
-   ****************************************************************************/
-  char *file2Read = (char *)myFile.c_str();
-  FILE* aFileId = fopen(file2Read, "r");
-  if (aFileId < 0) {
-    fprintf(stderr, ">> ERREUR : ouverture du fichier %s \n", file2Read);
-    return DRS_FAIL;
-  }
-  
-  fscanf(aFileId, "%d %d\n", &nbNodes, &nbCells);
-  
-  /****************************************************************************
-   *                       LECTURE DES NOEUDS                                  *
-   ****************************************************************************/
-  fprintf(stdout, "\n(************************)\n");
-  fprintf(stdout, "(* NOEUDS DU MAILLAGE : *)\n");
-  fprintf(stdout, "(************************)\n");
-  
-  for (i = 0; i < nbNodes; i++){
-    fscanf(aFileId, "%d %e %e %e\n", &intNumPoint, &coordX, &coordY, &coordZ);
-    ok = myMesh->AddNodeWithID(coordX, coordY, coordZ, intNumPoint);
-  }
-  
-  fprintf(stdout, "%d noeuds\n", myMesh->NbNodes());
-  /****************************************************************************
-   *                       LECTURE DES ELEMENTS                                *
-   ****************************************************************************/
-  fprintf(stdout, "\n(**************************)\n");
-  fprintf(stdout, "(* ELEMENTS DU MAILLAGE : *)\n");
-  fprintf(stdout, "(**************************)");
-  
-  fprintf(stdout, "%d elements\n", nbCells);
-  
-  for (i = 0; i < nbCells; i++) {
-    fscanf(aFileId, "%d %d", &intNumMaille, &ValElement);
-    Degre = abs(ValElement / 100);
-    nbNoeuds = ValElement - (Degre * 100);
-    
-    // Recuperation des noeuds de la maille
-    for (j = 0; j < nbNoeuds; j++) {
-      fscanf(aFileId, "%d", &NoeudMaille);
-      NoeudsMaille[j] = NoeudMaille;
-    }
-    
-    // Analyse des cas de cellules
-    switch (ValElement) {
-    case 102:
-    case 103:
-      ValDegre = 3;
-      nbNoeuds = 2;
-      ok = myMesh->AddEdgeWithID(NoeudsMaille[0], NoeudsMaille[1], 
-                                intNumMaille);
-      break;
-    case 204:
-    case 208:
-      ValDegre = 9;
-      nbNoeuds = 4;
-      ok = myMesh->AddFaceWithID(NoeudsMaille[0], NoeudsMaille[1],
-                                NoeudsMaille[2], NoeudsMaille[3], 
-                                intNumMaille);
-      break;
-    case 203:
-    case 206:
-      ValDegre = 5;
-      nbNoeuds = 3;
-      ok = myMesh->AddFaceWithID(NoeudsMaille[0], NoeudsMaille[1],
-                                NoeudsMaille[2], intNumMaille);
-      break;
-    case 308:
-    case 320:
-      ValDegre = 12;
-      nbNoeuds = 8;
-      if (ValElement == 320){
-       //A voir, correspondance VTK
-       NoeudsMaille[4] = NoeudsMaille[8];
-       NoeudsMaille[5] = NoeudsMaille[9];
-       NoeudsMaille[6] = NoeudsMaille[10];
-       NoeudsMaille[7] = NoeudsMaille[11];
-      }
-      ok = myMesh->AddVolumeWithID(NoeudsMaille[0], NoeudsMaille[1],
-                                  NoeudsMaille[2], NoeudsMaille[3], 
-                                  NoeudsMaille[4], NoeudsMaille[5], 
-                                  NoeudsMaille[6], NoeudsMaille[7],
-                                  intNumMaille);
-      break;
-    case 304:
-    case 310:
-      ValDegre = 10;
-      nbNoeuds = 4;
-      if (ValElement == 310)
-       NoeudsMaille[3] = NoeudsMaille[6];
-      ok = myMesh->AddVolumeWithID(NoeudsMaille[0], NoeudsMaille[1],
-                                  NoeudsMaille[2], NoeudsMaille[3], 
-                                  intNumMaille);
-      break;
-    case 306:
-    case 315:
-      ValDegre = 12;
-      nbNoeuds = 8;
-      if (ValElement == 315) {
-       NoeudsMaille[3] = NoeudsMaille[6];
-       NoeudsMaille[4] = NoeudsMaille[7];
-       NoeudsMaille[5] = NoeudsMaille[8];
-      }
-      NoeudsMaille[7] = NoeudsMaille[5];
-      NoeudsMaille[6] = NoeudsMaille[5];
-      NoeudsMaille[5] = NoeudsMaille[4];
-      NoeudsMaille[4] = NoeudsMaille[3];
-      NoeudsMaille[3] = NoeudsMaille[2];
-      ok = myMesh->AddVolumeWithID(NoeudsMaille[0], NoeudsMaille[1],
-                                  NoeudsMaille[2], NoeudsMaille[3], 
-                                  NoeudsMaille[4], NoeudsMaille[5], 
-                                  intNumMaille);
-                               break;
-    }
-  }
-  /****************************************************************************
-   *                      FERMETURE DU FICHIER                      *
-   ****************************************************************************/
-  fclose(aFileId);
-  return aResult;
-}
diff --git a/src/DriverDAT/DriverDAT_R_SMDS_Mesh.h b/src/DriverDAT/DriverDAT_R_SMDS_Mesh.h
deleted file mode 100644 (file)
index d955cf7..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERDAT_R_SMDS_MESH
-#define _INCLUDE_DRIVERDAT_R_SMDS_MESH
-
-#include "Driver_SMDS_Mesh.h"
-
-class DriverDAT_R_SMDS_Mesh: public Driver_SMDS_Mesh
-{
- public:
-  virtual Status Perform();
-};
-
-#endif
diff --git a/src/DriverDAT/DriverDAT_R_SMESHDS_Document.cxx b/src/DriverDAT/DriverDAT_R_SMESHDS_Document.cxx
deleted file mode 100644 (file)
index c7d9b22..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverDAT_R_SMESHDS_Document.h"
diff --git a/src/DriverDAT/DriverDAT_R_SMESHDS_Document.h b/src/DriverDAT/DriverDAT_R_SMESHDS_Document.h
deleted file mode 100644 (file)
index 3d63ced..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERDAT_R_SMESHDS_DOCUMENT
-#define _INCLUDE_DRIVERDAT_R_SMESHDS_DOCUMENT
-
-#include "Driver_Document.h"
-
-class DriverDAT_R_SMESHDS_Document : public Driver_Document 
-{};
-
-#endif
diff --git a/src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx b/src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx
deleted file mode 100644 (file)
index a7e974f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverDAT_R_SMESHDS_Mesh.h"
diff --git a/src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.h b/src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.h
deleted file mode 100644 (file)
index e749675..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERDAT_R_SMESHDS_MESH
-#define _INCLUDE_DRIVERDAT_R_SMESHDS_MESH
-
-#include "Driver_SMESHDS_Mesh.h"
-
-class DriverDAT_R_SMESHDS_Mesh: public Driver_SMESHDS_Mesh
-{};
-
-#endif
diff --git a/src/DriverDAT/DriverDAT_W_SMDS_Mesh.cxx b/src/DriverDAT/DriverDAT_W_SMDS_Mesh.cxx
deleted file mode 100644 (file)
index 1f8d5ab..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include <stdio.h>
-
-#include "DriverDAT_W_SMDS_Mesh.h"
-
-#include "SMDS_Mesh.hxx"
-
-#include "utilities.h"
-
-using namespace std;
-
-Driver_Mesh::Status DriverDAT_W_SMDS_Mesh::Perform()
-{
-  Status aResult = DRS_OK;
-
-  int nbNodes, nbCells;
-  int i;
-  
-  char *file2Read = (char *)myFile.c_str();
-  FILE* aFileId = fopen(file2Read, "w+");
-  if (aFileId < 0) {
-    fprintf(stderr, ">> ERREUR : ouverture du fichier %s \n", file2Read);
-    return DRS_FAIL;
-  }
-  SCRUTE(myMesh);
-  /****************************************************************************
-   *                       NOMBRES D'OBJETS                                    *
-   ****************************************************************************/
-  fprintf(stdout, "\n(****************************)\n");
-  fprintf(stdout, "(* INFORMATIONS GENERALES : *)\n");
-  fprintf(stdout, "(****************************)\n");
-  
-  /* Combien de noeuds ? */
-  nbNodes = myMesh->NbNodes();
-  
-  /* Combien de mailles, faces ou aretes ? */
-  int nb_of_nodes, nb_of_edges, nb_of_faces, nb_of_volumes;
-  nb_of_edges = myMesh->NbEdges();
-  nb_of_faces = myMesh->NbFaces();
-  nb_of_volumes = myMesh->NbVolumes();
-  nbCells = nb_of_edges + nb_of_faces + nb_of_volumes;
-  SCRUTE(nb_of_edges);
-  SCRUTE(nb_of_faces);
-  SCRUTE(nb_of_volumes);
-  
-  fprintf(stdout, "%d %d\n", nbNodes, nbCells);
-  fprintf(aFileId, "%d %d\n", nbNodes, nbCells);
-  
-  /****************************************************************************
-   *                       ECRITURE DES NOEUDS                                 *
-   ****************************************************************************/
-  fprintf(stdout, "\n(************************)\n");
-  fprintf(stdout, "(* NOEUDS DU MAILLAGE : *)\n");
-  fprintf(stdout, "(************************)\n");
-  
-  SMDS_NodeIteratorPtr itNodes=myMesh->nodesIterator();
-  while(itNodes->more()){              
-    const SMDS_MeshNode * node = itNodes->next();
-    fprintf(aFileId, "%d %e %e %e\n", node->GetID(), node->X(), node->Y(), node->Z());
-  }
-       
-  /****************************************************************************
-   *                       ECRITURE DES ELEMENTS                                *
-   ****************************************************************************/
-  fprintf(stdout, "\n(**************************)\n");
-  fprintf(stdout, "(* ELEMENTS DU MAILLAGE : *)\n");
-  fprintf(stdout, "(**************************)");
-  /* Ecriture des connectivites, noms, numeros des mailles */
-  
-  SMDS_EdgeIteratorPtr itEdges=myMesh->edgesIterator();
-  while(itEdges->more()){
-    const SMDS_MeshElement * elem = itEdges->next();
-    switch (elem->NbNodes()) {
-    case 2:
-      fprintf(aFileId, "%d %d ", elem->GetID(), 102);
-      break;
-    case 3:
-      fprintf(aFileId, "%d %d ", elem->GetID(), 103);
-      break;
-    }
-    SMDS_ElemIteratorPtr it=elem->nodesIterator();
-    while(it->more()) 
-      fprintf(aFileId, "%d ", it->next()->GetID());
-    fprintf(aFileId, "\n");
-  }
-  
-  SMDS_FaceIteratorPtr itFaces=myMesh->facesIterator();
-  while(itFaces->more()){
-    const SMDS_MeshElement * elem = itFaces->next();
-    switch (elem->NbNodes()) {
-    case 3:
-      fprintf(aFileId, "%d %d ", elem->GetID(), 203);
-      break;
-    case 4:
-      fprintf(aFileId, "%d %d ", elem->GetID(), 204);
-      break;
-    case 6:
-      fprintf(aFileId, "%d %d ", elem->GetID(), 206);
-      break;
-    }
-    SMDS_ElemIteratorPtr it=elem->nodesIterator();
-    while(it->more()) 
-      fprintf(aFileId, "%d ", it->next()->GetID());
-    fprintf(aFileId, "\n");
-  }
-
-  SMDS_VolumeIteratorPtr itVolumes=myMesh->volumesIterator();
-  while(itVolumes->more()){
-    const SMDS_MeshElement * elem = itVolumes->next();
-    switch (elem->NbNodes()) {
-    case 8:
-      fprintf(aFileId, "%d %d ", elem->GetID(), 308);
-      break;
-    }
-
-    SMDS_ElemIteratorPtr it=elem->nodesIterator();
-    while(it->more()) 
-      fprintf(aFileId, "%d ", it->next()->GetID());
-
-    fprintf(aFileId, "\n");
-  }
-  
-  fclose(aFileId);
-
-  return aResult;
-}
diff --git a/src/DriverDAT/DriverDAT_W_SMDS_Mesh.h b/src/DriverDAT/DriverDAT_W_SMDS_Mesh.h
deleted file mode 100644 (file)
index ebd3d64..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//  SMESH DriverDAT : driver to read and write 'dat' files
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : DriverDAT_W_SMDS_Mesh.h
-//  Module : SMESH
-
-#ifndef _INCLUDE_DRIVERDAT_W_SMDS_MESH
-#define _INCLUDE_DRIVERDAT_W_SMDS_MESH
-
-#include "Driver_SMDS_Mesh.h"
-
-class DriverDAT_W_SMDS_Mesh: public Driver_SMDS_Mesh
-{
- public:
-  virtual Status Perform();
-};
-
-#endif
diff --git a/src/DriverDAT/DriverDAT_W_SMESHDS_Document.cxx b/src/DriverDAT/DriverDAT_W_SMESHDS_Document.cxx
deleted file mode 100644 (file)
index 1cd9699..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverDAT_W_SMESHDS_Document.h"
diff --git a/src/DriverDAT/DriverDAT_W_SMESHDS_Document.h b/src/DriverDAT/DriverDAT_W_SMESHDS_Document.h
deleted file mode 100644 (file)
index 6b2bad5..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERDAT_W_SMESHDS_DOCUMENT
-#define _INCLUDE_DRIVERDAT_W_SMESHDS_DOCUMENT
-
-#include "Driver_Document.h"
-
-class DriverDAT_W_SMESHDS_Document: public Driver_Document 
-{};
-
-#endif
diff --git a/src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx b/src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx
deleted file mode 100644 (file)
index e17c6cd..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverDAT_W_SMESHDS_Mesh.h"
diff --git a/src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.h b/src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.h
deleted file mode 100644 (file)
index b9b9130..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-//  SMESH DriverDAT : driver to read and write 'dat' files
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : DriverDAT_W_SMESHDS_Mesh.h
-//  Module : SMESH
-
-#ifndef _INCLUDE_DRIVERDAT_W_SMESHDS_MESH
-#define _INCLUDE_DRIVERDAT_W_SMESHDS_MESH
-
-#include "Driver_SMESHDS_Mesh.h"
-
-class DriverDAT_W_SMESHDS_Mesh: public Driver_SMESHDS_Mesh
-{};
-
-#endif
diff --git a/src/DriverMED/DriverMED_Family.cxx b/src/DriverMED/DriverMED_Family.cxx
deleted file mode 100644 (file)
index 47a923d..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-//  SMESH DriverMED : tool to split groups on families
-//
-//  Copyright (C) 2003  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : DriverMED_Family.cxx
-//  Author : Julia DOROVSKIKH
-//  Module : SMESH
-//  $Header$
-
-#include "DriverMED_Family.h"
-#include "MED_Factory.hxx"
-
-#include <sstream>     
-
-using namespace std;
-
-//=============================================================================
-/*!
- *  Split each group from list <aGroups> on some parts (families)
- *  on the basis of the elements membership in other groups from this list.
- *  Resulting families have no common elements.
- */
-//=============================================================================
-list<DriverMED_FamilyPtr> DriverMED_Family::MakeFamilies
-                         (const map <int, SMESHDS_SubMesh*>& theSubMeshes,
-                          const list<SMESHDS_GroupBase*>& theGroups,
-                          const bool doGroupOfNodes,
-                          const bool doGroupOfEdges,
-                          const bool doGroupOfFaces,
-                          const bool doGroupOfVolumes)
-{
-  list<DriverMED_FamilyPtr> aFamilies;
-
-  string anAllNodesGroupName = "Group_Of_All_Nodes";
-  string anAllEdgesGroupName = "Group_Of_All_Edges";
-  string anAllFacesGroupName = "Group_Of_All_Faces";
-  string anAllVolumesGroupName = "Group_Of_All_Volumes";
-
-  // Reserve four ids for families of free elements
-  // (1 - nodes, -1 - edges, -2 - faces, -3 - volumes).
-  // 'Free' means here not belonging to any group.
-  int aNodeFamId = FIRST_NODE_FAMILY;
-  int aElemFamId = FIRST_ELEM_FAMILY;
-
-  // Process sub-meshes
-  map<int, SMESHDS_SubMesh*>::const_iterator aSMIter = theSubMeshes.begin();
-  for (; aSMIter != theSubMeshes.end(); aSMIter++)
-  {
-    if ( aSMIter->second->IsComplexSubmesh() )
-      continue; // submesh containing other submeshs
-    list<DriverMED_FamilyPtr> aSMFams = SplitByType((*aSMIter).second, (*aSMIter).first);
-    list<DriverMED_FamilyPtr>::iterator aSMFamsIter = aSMFams.begin();
-    for (; aSMFamsIter != aSMFams.end(); aSMFamsIter++)
-    {
-      DriverMED_FamilyPtr aFam2 = (*aSMFamsIter);
-
-      list<DriverMED_FamilyPtr>::iterator aFamsIter = aFamilies.begin();
-      while (aFamsIter != aFamilies.end())
-      {
-        DriverMED_FamilyPtr aFam1 = *aFamsIter;
-        list<DriverMED_FamilyPtr>::iterator aCurrIter = aFamsIter++;
-        if (aFam1->myType == aFam2->myType)
-        {
-          DriverMED_FamilyPtr aCommon (new DriverMED_Family);
-          aFam1->Split(aFam2, aCommon);
-          if (!aCommon->IsEmpty())
-          {
-            aFamilies.push_back(aCommon);
-          }
-          if (aFam1->IsEmpty())
-          {
-            aFamilies.erase(aCurrIter);
-          }
-          if (aFam2->IsEmpty()) break;
-        }
-      }
-      // The rest elements of family
-      if (!aFam2->IsEmpty())
-      {
-        aFamilies.push_back(aFam2);
-      }
-    }
-  }
-
-  // Process groups
-  list<SMESHDS_GroupBase*>::const_iterator aGroupsIter = theGroups.begin();
-  for (; aGroupsIter != theGroups.end(); aGroupsIter++)
-  {
-    DriverMED_FamilyPtr aFam2 (new DriverMED_Family);
-    aFam2->Init(*aGroupsIter);
-
-    list<DriverMED_FamilyPtr>::iterator aFamsIter = aFamilies.begin();
-    while (aFamsIter != aFamilies.end())
-    {
-      DriverMED_FamilyPtr aFam1 = *aFamsIter;
-      list<DriverMED_FamilyPtr>::iterator aCurrIter = aFamsIter++;
-      if (aFam1->myType == aFam2->myType)
-      {
-        DriverMED_FamilyPtr aCommon (new DriverMED_Family);
-        aFam1->Split(aFam2, aCommon);
-        if (!aCommon->IsEmpty())
-        {
-          aFamilies.push_back(aCommon);
-        }
-        if (aFam1->IsEmpty())
-        {
-          aFamilies.erase(aCurrIter);
-        }
-        if (aFam2->IsEmpty()) break;
-      }
-    }
-    // The rest elements of group
-    if (!aFam2->IsEmpty())
-    {
-      aFamilies.push_back(aFam2);
-    }
-  }
-
-  list<DriverMED_FamilyPtr>::iterator aFamsIter = aFamilies.begin();
-  for (; aFamsIter != aFamilies.end(); aFamsIter++)
-  {
-    DriverMED_FamilyPtr aFam = *aFamsIter;
-    if (aFam->myType == SMDSAbs_Node) {
-      aFam->SetId(aNodeFamId++);
-      if (doGroupOfNodes) aFam->myGroupNames.insert(anAllNodesGroupName);
-    }
-    else {
-      aFam->SetId(aElemFamId--);
-      if (aFam->myType == SMDSAbs_Edge) {
-        if (doGroupOfEdges) aFam->myGroupNames.insert(anAllEdgesGroupName);
-      }
-      else if (aFam->myType == SMDSAbs_Face) {
-        if (doGroupOfFaces) aFam->myGroupNames.insert(anAllFacesGroupName);
-      }
-      else if (aFam->myType == SMDSAbs_Volume) {
-        if (doGroupOfVolumes) aFam->myGroupNames.insert(anAllVolumesGroupName);
-      }
-    }
-  }
-
-  // Create families for elements, not belonging to any group
-  if (doGroupOfNodes)
-  {
-    DriverMED_FamilyPtr aFreeNodesFam (new DriverMED_Family);
-    aFreeNodesFam->SetId(REST_NODES_FAMILY);
-    aFreeNodesFam->myType = SMDSAbs_Node;
-    aFreeNodesFam->myGroupNames.insert(anAllNodesGroupName);
-    aFamilies.push_back(aFreeNodesFam);
-  }
-
-  if (doGroupOfEdges)
-  {
-    DriverMED_FamilyPtr aFreeEdgesFam (new DriverMED_Family);
-    aFreeEdgesFam->SetId(REST_EDGES_FAMILY);
-    aFreeEdgesFam->myType = SMDSAbs_Edge;
-    aFreeEdgesFam->myGroupNames.insert(anAllEdgesGroupName);
-    aFamilies.push_back(aFreeEdgesFam);
-  }
-
-  if (doGroupOfFaces)
-  {
-    DriverMED_FamilyPtr aFreeFacesFam (new DriverMED_Family);
-    aFreeFacesFam->SetId(REST_FACES_FAMILY);
-    aFreeFacesFam->myType = SMDSAbs_Face;
-    aFreeFacesFam->myGroupNames.insert(anAllFacesGroupName);
-    aFamilies.push_back(aFreeFacesFam);
-  }
-
-  if (doGroupOfVolumes)
-  {
-    DriverMED_FamilyPtr aFreeVolumesFam (new DriverMED_Family);
-    aFreeVolumesFam->SetId(REST_VOLUMES_FAMILY);
-    aFreeVolumesFam->myType = SMDSAbs_Volume;
-    aFreeVolumesFam->myGroupNames.insert(anAllVolumesGroupName);
-    aFamilies.push_back(aFreeVolumesFam);
-  }
-
-  DriverMED_FamilyPtr aNullFam (new DriverMED_Family);
-  aNullFam->SetId(0);
-  aNullFam->myType = SMDSAbs_All;
-  aFamilies.push_back(aNullFam);
-
-  return aFamilies;
-}
-
-//=============================================================================
-/*!
- *  Create TFamilyInfo for this family
- */
-//=============================================================================
-MED::PFamilyInfo 
-DriverMED_Family::GetFamilyInfo(const MED::PWrapper& theWrapper, 
-                               const MED::PMeshInfo& theMeshInfo) const
-{
-  string aValue;
-
-  ostringstream aStr;
-
-  aStr << "FAM_" << myId;
-  set<string>::const_iterator aGrIter = myGroupNames.begin();
-  for (; aGrIter != myGroupNames.end(); aGrIter++)
-  {
-    aStr << "_" << *aGrIter;
-  }
-
-  aValue = aStr.str();
-  /*
-  MED::TStringVector anAttrDescs (1, "");  // 1 attribute with empty description,
-  MED::TIntVector anAttrIds (1, myId);        // Id=0,
-  MED::TIntVector anAttrVals (1, myId);       // Value=0
-  */
-  
-  MED::PFamilyInfo anInfo = theWrapper->CrFamilyInfo(theMeshInfo,
-                                                    aValue,
-                                                    myId,
-                                                    myGroupNames);
-/*                                                  
-                                                   anAttrDescs,
-                                                   anAttrIds,
-                                                   anAttrVals);
-*/
-
-//  cout << endl;
-//  cout << "Groups: ";
-//  set<string>::iterator aGrIter = myGroupNames.begin();
-//  for (; aGrIter != myGroupNames.end(); aGrIter++)
-//  {
-//    cout << " " << *aGrIter;
-//  }
-//  cout << endl;
-//
-//  cout << "Elements: ";
-//  set<const SMDS_MeshElement *>::iterator anIter = myElements.begin();
-//  for (; anIter != myElements.end(); anIter++)
-//  {
-//    cout << " " << (*anIter)->GetID();
-//  }
-//  cout << endl;
-
-  return anInfo;
-}
-
-//=============================================================================
-/*!
- *  Initialize the tool by SMESHDS_GroupBase
- */
-//=============================================================================
-void DriverMED_Family::Init (SMESHDS_GroupBase* theGroup)
-{
-  // Elements
-  myElements.clear();
-  SMDS_ElemIteratorPtr elemIt = theGroup->GetElements();
-  while (elemIt->more())
-  {
-    myElements.insert(elemIt->next());
-  }
-
-  // Type
-  myType = theGroup->GetType();
-
-  // Groups list
-  myGroupNames.clear();
-  myGroupNames.insert(string(theGroup->GetStoreName()));
-}
-
-//=============================================================================
-/*!
- *  Split <theSubMesh> on some parts (families)
- *  on the basis of the elements type.
- */
-//=============================================================================
-list<DriverMED_FamilyPtr> DriverMED_Family::SplitByType (SMESHDS_SubMesh* theSubMesh,
-                                                         const int        theId)
-{
-  list<DriverMED_FamilyPtr> aFamilies;
-  DriverMED_FamilyPtr aNodesFamily   (new DriverMED_Family);
-  DriverMED_FamilyPtr anEdgesFamily  (new DriverMED_Family);
-  DriverMED_FamilyPtr aFacesFamily   (new DriverMED_Family);
-  DriverMED_FamilyPtr aVolumesFamily (new DriverMED_Family);
-
-  char submeshGrpName[ 30 ];
-  sprintf( submeshGrpName, "SubMesh %d", theId );
-
-  SMDS_NodeIteratorPtr aNodesIter = theSubMesh->GetNodes();
-  while (aNodesIter->more())
-  {
-    const SMDS_MeshNode* aNode = aNodesIter->next();
-    aNodesFamily->AddElement(aNode);
-  }
-
-  SMDS_ElemIteratorPtr anElemsIter = theSubMesh->GetElements();
-  while (anElemsIter->more())
-  {
-    const SMDS_MeshElement* anElem = anElemsIter->next();
-    switch (anElem->GetType())
-    {
-    case SMDSAbs_Edge:
-      anEdgesFamily->AddElement(anElem);
-      break;
-    case SMDSAbs_Face:
-      aFacesFamily->AddElement(anElem);
-      break;
-    case SMDSAbs_Volume:
-      aVolumesFamily->AddElement(anElem);
-      break;
-    default:
-      break;
-    }
-  }
-
-  if (!aNodesFamily->IsEmpty()) {
-    aNodesFamily->SetType(SMDSAbs_Node);
-    aNodesFamily->AddGroupName(submeshGrpName);
-    aFamilies.push_back(aNodesFamily);
-  }
-  if (!anEdgesFamily->IsEmpty()) {
-    anEdgesFamily->SetType(SMDSAbs_Edge);
-    anEdgesFamily->AddGroupName(submeshGrpName);
-    aFamilies.push_back(anEdgesFamily);
-  }
-  if (!aFacesFamily->IsEmpty()) {
-    aFacesFamily->SetType(SMDSAbs_Face);
-    aFacesFamily->AddGroupName(submeshGrpName);
-    aFamilies.push_back(aFacesFamily);
-  }
-  if (!aVolumesFamily->IsEmpty()) {
-    aVolumesFamily->SetType(SMDSAbs_Volume);
-    aVolumesFamily->AddGroupName(submeshGrpName);
-    aFamilies.push_back(aVolumesFamily);
-  }
-
-  return aFamilies;
-}
-
-//=============================================================================
-/*!
- *  Remove from <myElements> elements, common with <by>,
- *  Remove from <by> elements, common with <myElements>,
- *  Create family <common> from common elements, with combined groups list.
- */
-//=============================================================================
-void DriverMED_Family::Split (DriverMED_FamilyPtr by,
-                              DriverMED_FamilyPtr common)
-{
-  // Elements
-  set<const SMDS_MeshElement *>::iterator anIter = by->myElements.begin();
-  while ( anIter != by->myElements.end())
-  {
-    if (myElements.find(*anIter) != myElements.end())
-    {
-      common->myElements.insert(*anIter);
-      myElements.erase(*anIter);
-      by->myElements.erase(anIter++);
-    }
-    else
-      anIter++;
-  }
-
-  if (!common->IsEmpty())
-  {
-    // Groups list
-    common->myGroupNames = myGroupNames;
-    set<string>::iterator aGrNamesIter = by->myGroupNames.begin();
-    for (; aGrNamesIter != by->myGroupNames.end(); aGrNamesIter++)
-    {
-      common->myGroupNames.insert(*aGrNamesIter);
-    }
-
-    // Type
-    common->myType = myType;
-  }
-}
diff --git a/src/DriverMED/DriverMED_Family.h b/src/DriverMED/DriverMED_Family.h
deleted file mode 100644 (file)
index 1632ccb..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-//  SMESH DriverMED : tool to split groups on families
-//
-//  Copyright (C) 2003  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : DriverMED_Family.hxx
-//  Author : Julia DOROVSKIKH
-//  Module : SMESH
-//  $Header$
-
-#ifndef _INCLUDE_DRIVERMED_FAMILY
-#define _INCLUDE_DRIVERMED_FAMILY
-
-#include "SMDS_Mesh.hxx"
-#include "SMESHDS_GroupBase.hxx"
-#include "SMESHDS_SubMesh.hxx"
-#include "MED_Common.hxx"
-
-#include <boost/shared_ptr.hpp>
-#include <set>
-
-#define REST_NODES_FAMILY 1
-#define REST_EDGES_FAMILY -1
-#define REST_FACES_FAMILY -2
-#define REST_VOLUMES_FAMILY -3
-#define FIRST_NODE_FAMILY 2
-#define FIRST_ELEM_FAMILY -4
-
-class DriverMED_Family;
-typedef boost::shared_ptr<DriverMED_Family> DriverMED_FamilyPtr;
-
-class DriverMED_Family
-{
- public:
-
-  // Methods for groups storing to MED
-
-  static std::list<DriverMED_FamilyPtr> MakeFamilies (const std::map <int, SMESHDS_SubMesh*>& theSubMeshes,
-                                                     const std::list<SMESHDS_GroupBase*>& theGroups,
-                                                     const bool doGroupOfNodes,
-                                                     const bool doGroupOfEdges,
-                                                     const bool doGroupOfFaces,
-                                                     const bool doGroupOfVolumes);
-  // Split each group from list <theGroups> and each sub-mesh from list <theSubMeshes>
-  // on some parts (families) on the basis of the elements membership in other groups
-  // from <theGroups> and other sub-meshes from <theSubMeshes>.
-  // Resulting families have no common elements.
-
-  MED::PFamilyInfo GetFamilyInfo (const MED::PWrapper& theWrapper, 
-                                 const MED::PMeshInfo& theMeshInfo) const;
-  // Create TFamilyInfo for this family
-
-  const std::set<const SMDS_MeshElement *>& GetElements () const { return myElements; }
-  // Returns elements of this family
-
-  int GetId () const { return myId; }
-  // Returns a family ID
-
- public:
-
-  // Methods for groups reading from MED
-
-  void AddElement (const SMDS_MeshElement* theElement) { myElements.insert(theElement); }
-
-  void AddGroupName (std::string theGroupName) { myGroupNames.insert(theGroupName); }
-
-  void SetType (const SMDSAbs_ElementType theType) { myType = theType; }
-  SMDSAbs_ElementType GetType () { return myType; }
-
-  bool MemberOf (std::string theGroupName) const
-    { return (myGroupNames.find(theGroupName) != myGroupNames.end()); }
-
-  const MED::TStringSet& GetGroupNames () const { return myGroupNames; }
-
-  void SetId (const int theId) { myId = theId; }
-  // Sets a family ID
-
- private:
-  void Init (SMESHDS_GroupBase* group);
-  // Initialize the tool by SMESHDS_GroupBase
-
-  static std::list<DriverMED_FamilyPtr> SplitByType (SMESHDS_SubMesh* theSubMesh,
-                                                    const int        theId);
-  // Split <theSubMesh> on some parts (families)
-  // on the basis of the elements type.
-
-  void Split (DriverMED_FamilyPtr by,
-             DriverMED_FamilyPtr common);
-  // Remove from <Elements> elements, common with <by>,
-  // Remove from <by> elements, common with <Elements>,
-  // Create family <common> from common elements, with combined groups list.
-
-  bool IsEmpty () const { return myElements.empty(); }
-  // Check, if this family has empty list of elements
-
- private:
-  int                           myId;
-  SMDSAbs_ElementType           myType;
-  std::set<const SMDS_MeshElement *> myElements;
-  MED::TStringSet               myGroupNames;
-};
-
-#endif
diff --git a/src/DriverMED/DriverMED_R_SMDS_Mesh.cxx b/src/DriverMED/DriverMED_R_SMDS_Mesh.cxx
deleted file mode 100644 (file)
index cac48ff..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverMED_R_SMDS_Mesh.h"
diff --git a/src/DriverMED/DriverMED_R_SMDS_Mesh.h b/src/DriverMED/DriverMED_R_SMDS_Mesh.h
deleted file mode 100644 (file)
index a6ece30..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERMED_R_SMDS_MESH
-#define _INCLUDE_DRIVERMED_R_SMDS_MESH
-
-#include "Driver_SMDS_Mesh.h"
-
-class DriverMED_R_SMDS_Mesh: public Driver_SMDS_Mesh
-{};
-
-#endif
diff --git a/src/DriverMED/DriverMED_R_SMESHDS_Document.cxx b/src/DriverMED/DriverMED_R_SMESHDS_Document.cxx
deleted file mode 100644 (file)
index 9527382..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverMED_R_SMESHDS_Document.h"
diff --git a/src/DriverMED/DriverMED_R_SMESHDS_Document.h b/src/DriverMED/DriverMED_R_SMESHDS_Document.h
deleted file mode 100644 (file)
index c933e0c..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERMED_R_SMESHDS_DOCUMENT
-#define _INCLUDE_DRIVERMED_R_SMESHDS_DOCUMENT
-
-#include "Driver_Document.h"
-
-class DriverMED_R_SMESHDS_Document : public Driver_Document 
-{};
-
-#endif
diff --git a/src/DriverMED/DriverMED_R_SMESHDS_Mesh.h b/src/DriverMED/DriverMED_R_SMESHDS_Mesh.h
deleted file mode 100644 (file)
index cb72bcc..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//  SMESH DriverMED : driver to read and write 'med' files
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : DriverMED_R_SMESHDS_Mesh.h
-//  Module : SMESH
-
-#ifndef _INCLUDE_DRIVERMED_R_SMESHDS_MESH
-#define _INCLUDE_DRIVERMED_R_SMESHDS_MESH
-
-#include "Driver_SMESHDS_Mesh.h"
-#include "DriverMED_Family.h"
-
-#include <list>
-
-class SMESHDS_Mesh;
-class SMESHDS_Group;
-class SMESHDS_SubMesh;
-
-typedef std::pair< std::string, SMDSAbs_ElementType > TNameAndType;
-
-class DriverMED_R_SMESHDS_Mesh: public Driver_SMESHDS_Mesh
-{
- public:
-  virtual Status Perform();
-
-  std::list< TNameAndType > GetGroupNamesAndTypes();
-  void GetGroup(SMESHDS_Group* theGroup);
-  void CreateAllSubMeshes();
-  void GetSubMesh(SMESHDS_SubMesh* theSubMesh, const int theId);
-
-  std::list<std::string> GetMeshNames(Status& theStatus);
-  void SetMeshName(std::string theMeshName);
-
- private:
-  /*!
-   * \brief Ensure aFamily has required ID
-    * \param aFamily - a family to check
-    * \param anID - an ID aFamily should have
-    * \retval bool  - true if successful
-   */
-  bool checkFamilyID(DriverMED_FamilyPtr & aFamily, int anID) const;
-
- private:
-  std::string myMeshName;
-  std::map<int, DriverMED_FamilyPtr> myFamilies;
-
-};
-
-#endif
diff --git a/src/DriverMED/DriverMED_W_SMDS_Mesh.cxx b/src/DriverMED/DriverMED_W_SMDS_Mesh.cxx
deleted file mode 100644 (file)
index d48e085..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverMED_W_SMDS_Mesh.h"
diff --git a/src/DriverMED/DriverMED_W_SMDS_Mesh.h b/src/DriverMED/DriverMED_W_SMDS_Mesh.h
deleted file mode 100644 (file)
index 2151ae6..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERMED_W_SMDS_MESH
-#define _INCLUDE_DRIVERMED_W_SMDS_MESH
-
-#include "Driver_SMDS_Mesh.h"
-
-class DriverMED_W_SMDS_Mesh: public Driver_SMDS_Mesh
-{};
-
-#endif
diff --git a/src/DriverMED/DriverMED_W_SMESHDS_Document.cxx b/src/DriverMED/DriverMED_W_SMESHDS_Document.cxx
deleted file mode 100644 (file)
index d0537c2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-//  SMESH DriverMED : driver to read and write 'med' files
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : DriverMED_W_SMESHDS_Document.cxx
-//  Module : SMESH
-
-#include "DriverMED_W_SMESHDS_Document.h"
diff --git a/src/DriverMED/DriverMED_W_SMESHDS_Document.h b/src/DriverMED/DriverMED_W_SMESHDS_Document.h
deleted file mode 100644 (file)
index 2f0cce3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERMED_W_SMESHDS_DOCUMENT
-#define _INCLUDE_DRIVERMED_W_SMESHDS_DOCUMENT
-
-#include "Driver_Document.h"
-
-class DriverMED_W_SMESHDS_Document : public Driver_Document 
-{};
-
-#endif
diff --git a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.h b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.h
deleted file mode 100644 (file)
index 1cc8649..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//  SMESH DriverMED : driver to read and write 'med' files
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : DriverMED_W_SMESHDS_Mesh.h
-//  Module : SMESH
-
-#ifndef _INCLUDE_DRIVERMED_W_SMESHDS_MESH
-#define _INCLUDE_DRIVERMED_W_SMESHDS_MESH
-
-#include "Driver_SMESHDS_Mesh.h"
-#include "MED_Factory.hxx"
-
-#include <string>
-#include <list>
-#include <map>
-
-class SMESHDS_Mesh;
-class SMESHDS_GroupBase;
-class SMESHDS_SubMesh;
-
-class DriverMED_W_SMESHDS_Mesh: public Driver_SMESHDS_Mesh
-{
-  public:
-
-  DriverMED_W_SMESHDS_Mesh();
-
-  virtual void SetFile(const std::string& theFileName);
-  void SetFile(const std::string& theFileName, MED::EVersion theId);
-
-  /*! sets file name; only for usage with Add(), not Write()
-   */
-  void AddGroupOfNodes();
-  void AddGroupOfEdges();
-  void AddGroupOfFaces();
-  void AddGroupOfVolumes();
-
-  /*! functions to prepare adding one mesh
-   */
-  void SetMeshName(const std::string& theMeshName);
-  void AddGroup(SMESHDS_GroupBase * theGroup);
-  void AddAllSubMeshes();
-  void AddSubMesh(SMESHDS_SubMesh* theSubMesh, int theID);
-
-  /*! add one mesh
-   */
-  virtual Status Perform();
-
- private:
-
-  MED::PWrapper myMed;
-  std::string myMeshName;
-  std::list<SMESHDS_GroupBase*> myGroups;
-  bool myAllSubMeshes;
-  std::map<int,SMESHDS_SubMesh*> mySubMeshes;
-  bool myDoGroupOfNodes;
-  bool myDoGroupOfEdges;
-  bool myDoGroupOfFaces;
-  bool myDoGroupOfVolumes;
-};
-
-
-#endif
-
diff --git a/src/DriverMED/MED_Test.cxx b/src/DriverMED/MED_Test.cxx
deleted file mode 100644 (file)
index 7d6c3cd..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverMED_R_SMESHDS_Mesh.h"
-#include "DriverMED_W_SMESHDS_Mesh.h"
-
-int main(int argc, char** argv)
-{
-  DriverMED_R_SMESHDS_Mesh aR;
-  DriverMED_W_SMESHDS_Mesh aW;
-  return 1;
-}
diff --git a/src/DriverSTL/DriverSTL_R_SMDS_Mesh.cxx b/src/DriverSTL/DriverSTL_R_SMDS_Mesh.cxx
deleted file mode 100644 (file)
index 2064453..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include <stdio.h>
-#include <gp_Pnt.hxx>
-//=======================================================================
-//function : HashCode
-//purpose  : 
-//=======================================================================
-inline Standard_Integer HashCode
-  (const gp_Pnt& point,  Standard_Integer Upper)
-{
-  union 
-    {
-    Standard_Real R[3];
-    Standard_Integer I[6];
-    } U;
-
-  point.Coord(U.R[0],U.R[1],U.R[2]);  
-
-  return ::HashCode(U.I[0]/23+U.I[1]/19+U.I[2]/17+U.I[3]/13+U.I[4]/11+U.I[5]/7,Upper);
-}
-static Standard_Real tab1[3];
-static Standard_Real tab2[3];
-//=======================================================================
-//function : IsEqual
-//purpose  : 
-//=======================================================================
-inline Standard_Boolean IsEqual
-  (const gp_Pnt& point1, const gp_Pnt& point2)
-{
-  point1.Coord(tab1[0],tab1[1],tab1[2]);  
-  point2.Coord(tab2[0],tab2[1],tab2[2]);  
-  return (memcmp(tab1,tab2,sizeof(tab1)) == 0);
-}
-#include "DriverSTL_R_SMDS_Mesh.h"
-
-#include "SMDS_Mesh.hxx"
-#include "SMDS_MeshElement.hxx"
-#include "SMDS_MeshNode.hxx"
-
-#include <OSD_Path.hxx>
-#include <OSD_File.hxx>
-#include <OSD_FromWhere.hxx>
-#include <OSD_Protection.hxx>
-#include <OSD_SingleProtection.hxx>
-#include <Standard_NoMoreObject.hxx>
-
-#include "utilities.h"
-
-static const int HEADER_SIZE           =  84;
-static const int SIZEOF_STL_FACET      =  50;
-//static const int STL_MIN_FILE_SIZE     = 284;
-static const int ASCII_LINES_PER_FACET =   7;
-
-
-//typedef NCollection_BaseCollection<SMDS_MeshNodePtr> DriverSTL_ColOfNodePtr;
-
-
-#include <NCollection_DataMap.hxx>
-typedef NCollection_DataMap<gp_Pnt,SMDS_MeshNode*> DriverSTL_DataMapOfPntNodePtr;
-//=======================================================================
-//function : DriverSTL_R_SMDS_Mesh
-//purpose  : 
-//=======================================================================
-
-DriverSTL_R_SMDS_Mesh::DriverSTL_R_SMDS_Mesh()
-{
-  myIsCreateFaces = true;
-  myIsAscii = Standard_True;
-}
-
-//=======================================================================
-//function : SetIsCreateFaces
-//purpose  : 
-//=======================================================================
-
-void DriverSTL_R_SMDS_Mesh::SetIsCreateFaces( const bool theIsCreate )
-{ myIsCreateFaces = theIsCreate; }
-
-//=======================================================================
-//function : Perform
-//purpose  : 
-//=======================================================================
-
-Driver_Mesh::Status DriverSTL_R_SMDS_Mesh::Perform()
-{
-  Status aResult = DRS_OK;
-
-  TCollection_AsciiString aFileName( (char *)myFile.c_str() );
-  if ( aFileName.IsEmpty() ) {
-    fprintf(stderr, ">> ERREOR : invalid file name \n");
-    return DRS_FAIL;
-  }
-
-  filebuf fic;
-  Standard_IStream is(&fic);
-  if (!fic.open(aFileName.ToCString(),ios::in)) {
-    fprintf(stderr, ">> ERROR : cannot open file %s \n", aFileName.ToCString());
-    return DRS_FAIL;
-  }
-
-
-  OSD_Path aPath( aFileName );
-  OSD_File file = OSD_File( aPath );
-  file.Open(OSD_ReadOnly,OSD_Protection(OSD_RWD,OSD_RWD,OSD_RWD,OSD_RWD));
-  unsigned char str[128];
-  Standard_Integer lread,i;
-  Standard_Address ach;
-  ach = (Standard_Address)str;
-  // we skip the header which is in Ascii for both modes
-  file.Read(ach,HEADER_SIZE,lread);
-
-  // we read 128 characters to detect if we have a non-ascii char
-  file.Read(ach,sizeof(str),lread);
-  
-  myIsAscii = Standard_True;
-  for (i = 0; i < lread; ++i) {
-    if (str[i] > '~') {
-      myIsAscii = Standard_False;
-      break;
-    }
-  }
-      
-  file.Close();
-
-  if ( !myMesh ) {
-    fprintf(stderr, ">> ERREOR : cannot create mesh \n");
-    return DRS_FAIL;
-  }
-
-  if ( myIsAscii )
-    aResult = readAscii();
-  else
-    aResult = readBinary();
-
-  return aResult;
-}
-
-// static methods
-
-static Standard_Real readFloat(OSD_File& theFile)
-{
-  union {
-    Standard_Boolean i; 
-    Standard_ShortReal f;
-  }u;
-
-  char c[4];
-  Standard_Address adr;
-  adr = (Standard_Address)c;
-  Standard_Integer lread;
-  theFile.Read(adr,4,lread);
-  u.i  =  c[0] & 0xFF;
-  u.i |= (c[1] & 0xFF) << 0x08;
-  u.i |= (c[2] & 0xFF) << 0x10;
-  u.i |= (c[3] & 0xFF) << 0x18;
-
-  return u.f;
-}
-
-static SMDS_MeshNode* addNode(const gp_Pnt& P,
-                              DriverSTL_DataMapOfPntNodePtr& uniqnodes,
-                              SMDS_Mesh* theMesh)
-{
-  SMDS_MeshNode* node = 0;
-  if ( uniqnodes.IsBound(P) ) {
-    node = uniqnodes.Find(P);
-  } else {
-    node = theMesh->AddNode(P.X(), P.Y(), P.Z() );
-    uniqnodes.Bind(P,node);
-  }
-  
-  return node;
-}                                
-
-static SMDS_MeshNode* readNode(FILE* file,
-                               DriverSTL_DataMapOfPntNodePtr& uniqnodes,
-                               SMDS_Mesh* theMesh)
-{
-  Standard_ShortReal coord[3];
-  // reading vertex
-  fscanf(file,"%*s %f %f %f\n",&coord[0],&coord[1],&coord[2]);
-
-  gp_Pnt P(coord[0],coord[1],coord[2]);
-  return addNode( P, uniqnodes, theMesh );
-}
-
-static SMDS_MeshNode* readNode(OSD_File& theFile,
-                               DriverSTL_DataMapOfPntNodePtr& uniqnodes,
-                               SMDS_Mesh* theMesh)
-{
-  Standard_ShortReal coord[3];
-  coord[0] = readFloat(theFile);
-  coord[1] = readFloat(theFile);
-  coord[2] = readFloat(theFile);
-
-  gp_Pnt P(coord[0],coord[1],coord[2]);
-  return addNode( P, uniqnodes, theMesh );
-}
-
-//=======================================================================
-//function : readAscii
-//purpose  : 
-//=======================================================================
-
-Driver_Mesh::Status DriverSTL_R_SMDS_Mesh::readAscii() const
-{
-  Status aResult = DRS_OK;
-  long ipos;
-  Standard_Integer nbLines = 0;
-
-  // Open the file 
-  TCollection_AsciiString aFileName( (char *)myFile.c_str() );
-  FILE* file = fopen(aFileName.ToCString(),"r");
-  fseek(file,0L,SEEK_END);
-  // get the file size
-  long filesize = ftell(file);
-  fclose(file);
-  file = fopen(aFileName.ToCString(),"r");
-  
-  // count the number of lines
-  for (ipos = 0; ipos < filesize; ++ipos) {
-    if (getc(file) == '\n')
-      nbLines++;
-  }
-
-  // go back to the beginning of the file
-//  fclose(file);
-//  file = fopen(aFileName.ToCString(),"r");
-  rewind(file);
-  
-  Standard_Integer nbTri = (nbLines / ASCII_LINES_PER_FACET);
-
-  DriverSTL_DataMapOfPntNodePtr uniqnodes;
-  // skip header
-  while (getc(file) != '\n');
-
-  // main reading
-  for (Standard_Integer iTri = 0; iTri < nbTri; ++iTri) {
-
-    // skipping the facet normal
-    Standard_ShortReal normal[3];
-    fscanf(file,"%*s %*s %f %f %f\n",&normal[0],&normal[1],&normal[2]);
-
-    // skip the keywords "outer loop"
-    fscanf(file,"%*s %*s");
-
-    // reading nodes
-    SMDS_MeshNode* node1 = readNode( file, uniqnodes, myMesh );
-    SMDS_MeshNode* node2 = readNode( file, uniqnodes, myMesh );
-    SMDS_MeshNode* node3 = readNode( file, uniqnodes, myMesh );
-
-    if (myIsCreateFaces)
-      myMesh->AddFace(node1,node2,node3);
-
-    // skip the keywords "endloop"
-    fscanf(file,"%*s");
-
-    // skip the keywords "endfacet"
-    fscanf(file,"%*s");
-  }
-
-  fclose(file);
-  return aResult;
-}
-
-//=======================================================================
-//function : readBinary
-//purpose  : 
-//=======================================================================
-
-Driver_Mesh::Status DriverSTL_R_SMDS_Mesh::readBinary() const
-{
-  Status aResult = DRS_OK;
-
-  char buftest[5];
-  Standard_Address adr;
-  adr = (Standard_Address)buftest;
-
-  TCollection_AsciiString aFileName( (char *)myFile.c_str() );
-  OSD_File aFile = OSD_File(OSD_Path( aFileName ));
-  aFile.Open(OSD_ReadOnly,OSD_Protection(OSD_RWD,OSD_RWD,OSD_RWD,OSD_RWD));
-
-  // the size of the file (minus the header size)
-  // must be a multiple of SIZEOF_STL_FACET
-
-  // compute file size
-  Standard_Integer filesize = aFile.Size();
-
-  if ( (filesize - HEADER_SIZE) % SIZEOF_STL_FACET !=0 
-      // Commented to allow reading small files (ex: 1 face)
-      /*|| (filesize < STL_MIN_FILE_SIZE)*/) {
-    Standard_NoMoreObject::Raise("DriverSTL_R_SMDS_MESH::readBinary (wrong file size)");
-  }
-
-  // don't trust the number of triangles which is coded in the file
-  // sometimes it is wrong, and with this technique we don't need to swap endians for integer
-  Standard_Integer nbTri = ((filesize - HEADER_SIZE) / SIZEOF_STL_FACET);
-
-  // skip the header
-  aFile.Seek(HEADER_SIZE,OSD_FromBeginning);
-
-  DriverSTL_DataMapOfPntNodePtr uniqnodes;
-  Standard_Integer lread;
-  
-  for (Standard_Integer iTri = 0; iTri < nbTri; ++iTri) {
-
-    // ignore normals
-    readFloat(aFile);
-    readFloat(aFile);
-    readFloat(aFile);
-
-    // read vertices
-    SMDS_MeshNode* node1 = readNode( aFile, uniqnodes, myMesh );
-    SMDS_MeshNode* node2 = readNode( aFile, uniqnodes, myMesh );
-    SMDS_MeshNode* node3 = readNode( aFile, uniqnodes, myMesh );
-
-    if (myIsCreateFaces)
-      myMesh->AddFace(node1,node2,node3);
-
-    // skip extra bytes
-    aFile.Read(adr,2,lread);
-  }
-  aFile.Close();
-  return aResult;
-}
diff --git a/src/DriverSTL/DriverSTL_R_SMDS_Mesh.h b/src/DriverSTL/DriverSTL_R_SMDS_Mesh.h
deleted file mode 100644 (file)
index 14afd3c..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERSTL_R_SMDS_MESH
-#define _INCLUDE_DRIVERSTL_R_SMDS_MESH
-
-#include "Driver_SMDS_Mesh.h"
-
-#include <Standard_TypeDef.hxx>
-
-class DriverSTL_R_SMDS_Mesh: public Driver_SMDS_Mesh
-{
- public:
-  DriverSTL_R_SMDS_Mesh();
-  virtual Status Perform();
-  void           SetIsCreateFaces( const bool theIsCreate = true );
-  
- private:
-  // PRIVATE METHODS
-  Status           readAscii() const;
-  Status           readBinary() const;
-  
- private:
-  // PRIVATE FIELDS
-  bool myIsCreateFaces;
-  bool myIsAscii;
-};
-
-#endif
diff --git a/src/DriverSTL/DriverSTL_W_SMDS_Mesh.cxx b/src/DriverSTL/DriverSTL_W_SMDS_Mesh.cxx
deleted file mode 100644 (file)
index 04ce405..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include <stdio.h>
-
-#include "DriverSTL_W_SMDS_Mesh.h"
-
-#include "SMDS_Mesh.hxx"
-#include "SMDS_MeshElement.hxx"
-#include "SMDS_MeshNode.hxx"
-#include <gp_XYZ.hxx>
-#include <OSD_Path.hxx>
-#include <OSD_File.hxx>
-#include <OSD_FromWhere.hxx>
-#include <OSD_Protection.hxx>
-#include <OSD_SingleProtection.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TColgp_Array1OfXYZ.hxx>
-
-#include "utilities.h"
-
-//using namespace std;
-
-// definition des constantes 
-static const int LABEL_SIZE = 80;
-
-DriverSTL_W_SMDS_Mesh::DriverSTL_W_SMDS_Mesh()
-{
-  myIsAscii = false;
-}
-
-void DriverSTL_W_SMDS_Mesh::SetIsAscii( const bool theIsAscii )
-{
-  myIsAscii = theIsAscii;
-}
-
-Driver_Mesh::Status DriverSTL_W_SMDS_Mesh::Perform()
-{
-  Status aResult = DRS_OK;
-
-  if ( !myMesh ) {
-    fprintf(stderr, ">> ERROR : Mesh is null \n");
-    return DRS_FAIL;
-  }
-  if ( myIsAscii )
-    aResult = writeAscii();
-  else
-    aResult = writeBinary();
-
-  return aResult;
-}
-
-// static methods
-
-static void writeInteger( const Standard_Integer& theVal,
-                        OSD_File& ofile )
-{
-  union {
-    Standard_Integer i;
-    char c[4];
-  }u;
-
-  u.i = theVal;
-
-  Standard_Integer entier;
-  entier  =  u.c[0] & 0xFF;
-  entier |= (u.c[1] & 0xFF) << 0x08;
-  entier |= (u.c[2] & 0xFF) << 0x10;
-  entier |= (u.c[3] & 0xFF) << 0x18;
-
-  ofile.Write((char *)&entier,sizeof(u.c));
-}
-
-static void writeFloat  ( const Standard_ShortReal& theVal,
-                        OSD_File& ofile)
-{
-  union {
-    Standard_ShortReal f;
-    char c[4]; 
-  }u;
-
-  u.f = theVal;
-
-  Standard_Integer entier;
-
-  entier  =  u.c[0] & 0xFF;
-  entier |= (u.c[1] & 0xFF) << 0x08;
-  entier |= (u.c[2] & 0xFF) << 0x10;
-  entier |= (u.c[3] & 0xFF) << 0x18;
-
-  ofile.Write((char *)&entier,sizeof(u.c));
-}
-
-static gp_XYZ getNormale( const SMDS_MeshFace* theFace )
-{
-  gp_XYZ n;
-  int aNbNode = theFace->NbNodes();
-  TColgp_Array1OfXYZ anArrOfXYZ(1,4);
-  gp_XYZ p1, p2, p3, p4;
-  SMDS_ElemIteratorPtr aNodeItr = theFace->nodesIterator();
-  int i = 1;
-  for ( ; aNodeItr->more() && i <= 4; i++ )
-  {
-    SMDS_MeshNode* aNode = (SMDS_MeshNode*)aNodeItr->next();
-    anArrOfXYZ.SetValue(i, gp_XYZ( aNode->X(), aNode->Y(), aNode->Z() ) );
-  }
-  
-  gp_XYZ q1 = anArrOfXYZ.Value(2) - anArrOfXYZ.Value(1);
-  gp_XYZ q2 = anArrOfXYZ.Value(3) - anArrOfXYZ.Value(1);
-  n  = q1 ^ q2;
-  if ( aNbNode > 3 )
-  {
-    gp_XYZ q3 = anArrOfXYZ.Value(4) - anArrOfXYZ.Value(1);
-    n += q2 ^ q3;
-  }
-  double len = n.Modulus();
-  if ( len > 0 )
-    n /= len;
-
-  return n;
-}
-
-// private methods
-
-Driver_Mesh::Status DriverSTL_W_SMDS_Mesh::writeAscii() const
-{
-  Status aResult = DRS_OK;
-  TCollection_AsciiString aFileName( (char *)myFile.c_str() );
-  if ( aFileName.IsEmpty() ) {
-    fprintf(stderr, ">> ERREOR : invalid file name \n");
-    return DRS_FAIL;
-  }
-
-  OSD_File aFile = OSD_File(OSD_Path(aFileName));
-  aFile.Build(OSD_WriteOnly,OSD_Protection());
-  TCollection_AsciiString buf = TCollection_AsciiString ("solid\n");
-  aFile.Write (buf,buf.Length());buf.Clear();
-  char sval[16];
-
-  SMDS_FaceIteratorPtr itFaces = myMesh->facesIterator();
-  
-  for (; itFaces->more() ;) {
-    SMDS_MeshFace* aFace = (SMDS_MeshFace*)itFaces->next();
-    
-    if (aFace->NbNodes() == 3) {
-      gp_XYZ normale = getNormale( aFace );
-
-      buf += " facet normal "; 
-      sprintf (sval,"% 12e",normale.X());
-      buf += sval;
-      buf += " "; 
-      sprintf (sval,"% 12e",normale.Y());
-      buf += sval;
-      buf += " "; 
-      sprintf (sval,"% 12e",normale.Z());
-      buf += sval;
-      buf += '\n';
-      aFile.Write (buf,buf.Length());buf.Clear();
-      buf += "   outer loop\n"; 
-      aFile.Write (buf,buf.Length());buf.Clear();
-      
-      SMDS_ElemIteratorPtr aNodeIter = aFace->nodesIterator();
-      for (; aNodeIter->more(); ) {
-       SMDS_MeshNode* node = (SMDS_MeshNode*)aNodeIter->next();
-        buf += "     vertex "; 
-        sprintf (sval,"% 12e",node->X());
-        buf += sval;
-        buf += " "; 
-        sprintf (sval,"% 12e",node->Y());
-        buf += sval;
-        buf += " "; 
-        sprintf (sval,"% 12e",node->Z());
-        buf += sval;
-        buf += '\n';
-        aFile.Write (buf,buf.Length());buf.Clear();
-      }
-      buf += "   endloop\n"; 
-      aFile.Write (buf,buf.Length());buf.Clear();
-      buf += " endfacet\n"; 
-      aFile.Write (buf,buf.Length());buf.Clear();
-    } 
-  }
-  buf += "endsolid\n";
-  aFile.Write (buf,buf.Length());buf.Clear();
-  
-  aFile.Close ();
-
-  return aResult;
-}
-
-Driver_Mesh::Status DriverSTL_W_SMDS_Mesh::writeBinary() const
-{
-  Status aResult = DRS_OK;
-  TCollection_AsciiString aFileName( (char *)myFile.c_str() );
-  if ( aFileName.IsEmpty() ) {
-    fprintf(stderr, ">> ERREOR : invalid filename \n");
-    return DRS_FAIL;
-  }
-
-  OSD_File aFile = OSD_File(OSD_Path(aFileName));
-  aFile.Build(OSD_WriteOnly,OSD_Protection());
-
-  char sval[80];
-  Standard_Integer nbTri = 0;
-  SMDS_FaceIteratorPtr itFaces = myMesh->facesIterator();
-
-  // we first count the number of triangles
-  for (;itFaces->more();) {
-    SMDS_MeshFace* aFace = (SMDS_MeshFace*)itFaces->next();
-    if (aFace->NbNodes() == 3)
-      nbTri++;
-  }
-
-  // write number of triangles
-  unsigned int NBT = nbTri;
-  aFile.Write((Standard_Address)sval,LABEL_SIZE);
-  writeInteger(nbTri,aFile);  
-
-  // loop writing nodes. take face iterator again
-  int dum=0;
-  itFaces = myMesh->facesIterator();
-  
-  for (;itFaces->more();) {
-    SMDS_MeshFace* aFace = (SMDS_MeshFace*)itFaces->next();
-    
-    if (aFace->NbNodes() == 3) {
-      gp_XYZ aNorm = getNormale( aFace );
-      writeFloat(aNorm.X(),aFile);
-      writeFloat(aNorm.Y(),aFile);
-      writeFloat(aNorm.Z(),aFile);
-
-      SMDS_ElemIteratorPtr aNodeIter = aFace->nodesIterator();
-      for (; aNodeIter->more(); ) {
-       SMDS_MeshNode* node = (SMDS_MeshNode*)aNodeIter->next();
-       writeFloat(node->X(),aFile);
-       writeFloat(node->Y(),aFile);
-       writeFloat(node->Z(),aFile);
-      }
-      aFile.Write (&dum,2);
-    } 
-  }
-  aFile.Close ();
-
-  return aResult;
-}
diff --git a/src/DriverSTL/DriverSTL_W_SMDS_Mesh.h b/src/DriverSTL/DriverSTL_W_SMDS_Mesh.h
deleted file mode 100644 (file)
index 49d7520..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//  SMESH DriverSTL : driver to read and write 'stl' files
-//
-//  Copyright (C) 2004  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : DriverSTL_W_SMDS_Mesh.h
-//  Module : SMESH
-
-#ifndef _INCLUDE_DRIVERSTL_W_SMDS_MESH
-#define _INCLUDE_DRIVERSTL_W_SMDS_MESH
-
-#include "Driver_SMDS_Mesh.h"
-#include <Standard_TypeDef.hxx>
-
-class DriverSTL_W_SMDS_Mesh: public Driver_SMDS_Mesh
-{
- public:
-  
-  DriverSTL_W_SMDS_Mesh();
-  virtual Status Perform();
-  void    SetIsAscii( const bool theIsAscii = false );
-
- private:
-  // PRIVATE METHODS
-  Status  writeAscii  () const;
-  Status  writeBinary () const;
-
- private:
-  // PRIVATE FIELDS
-  bool myIsAscii;
-};
-
-#endif
diff --git a/src/DriverSTL/STL_Test.cxx b/src/DriverSTL/STL_Test.cxx
deleted file mode 100644 (file)
index 78dc0df..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-//#include "DriverSTL_R_SMDS_Mesh.h"
-#include "DriverSTL_W_SMDS_Mesh.h"
-
-int main(int argc, char** argv)
-{
-//  DriverSTL_R_SMDS_Mesh aR;
-  DriverSTL_W_SMDS_Mesh aW;
-  return 1;
-}
diff --git a/src/DriverUNV/DriverUNV_R_SMDS_Mesh.h b/src/DriverUNV/DriverUNV_R_SMDS_Mesh.h
deleted file mode 100644 (file)
index 46c6ad3..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERUNV_R_SMDS_MESH
-#define _INCLUDE_DRIVERUNV_R_SMDS_MESH
-
-#include "Driver_SMDS_Mesh.h"
-
-class SMDS_Mesh;
-
-class DriverUNV_R_SMDS_Mesh: public Driver_SMDS_Mesh
-{
- public:
-  virtual Status Perform();
-};
-
-#endif
diff --git a/src/DriverUNV/DriverUNV_R_SMESHDS_Document.cxx b/src/DriverUNV/DriverUNV_R_SMESHDS_Document.cxx
deleted file mode 100644 (file)
index 0e1b871..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverUNV_R_SMESHDS_Document.h"
diff --git a/src/DriverUNV/DriverUNV_R_SMESHDS_Document.h b/src/DriverUNV/DriverUNV_R_SMESHDS_Document.h
deleted file mode 100644 (file)
index 4d38a67..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERUNV_R_SMESHDS_DOCUMENT
-#define _INCLUDE_DRIVERUNV_R_SMESHDS_DOCUMENT
-
-#include "Driver_Document.h"
-
-class DriverUNV_R_SMESHDS_Document: public Driver_Document
-{};
-
-#endif
diff --git a/src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx b/src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx
deleted file mode 100644 (file)
index e4fcbf3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverUNV_R_SMESHDS_Mesh.h"
diff --git a/src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.h b/src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.h
deleted file mode 100644 (file)
index fce4b66..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERUNV_R_SMESHDS_MESH
-#define _INCLUDE_DRIVERUNV_R_SMESHDS_MESH
-
-#include "Driver_SMESHDS_Mesh.h"
-
-class DriverUNV_R_SMESHDS_Mesh: public Driver_SMESHDS_Mesh
-{};
-
-#endif
diff --git a/src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx b/src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx
deleted file mode 100644 (file)
index 3fe3b18..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include <algorithm>
-
-#include "DriverUNV_W_SMDS_Mesh.h"
-
-#include "SMDS_Mesh.hxx"
-
-#include "utilities.h"
-
-#include "UNV2411_Structure.hxx"
-#include "UNV2412_Structure.hxx"
-#include "UNV_Utilities.hxx"
-
-using namespace std;
-
-namespace{
-  typedef std::vector<size_t> TConnect;
-
-  int GetConnect(const SMDS_ElemIteratorPtr& theNodesIter, 
-                TConnect& theConnect)
-  {
-    theConnect.clear();
-    for(; theNodesIter->more();){
-      const SMDS_MeshElement* anElem = theNodesIter->next();
-      theConnect.push_back(anElem->GetID());
-    }
-    return theConnect.size();
-  }
-  
-}
-
-Driver_Mesh::Status DriverUNV_W_SMDS_Mesh::Perform()
-{
-  Status aResult = DRS_OK;
-  std::ofstream out_stream(myFile.c_str());
-  try{
-    {
-      using namespace UNV2411;
-      TDataSet aDataSet2411;
-      // Storing SMDS nodes to the UNV file
-      //-----------------------------------
-      MESSAGE("Perform - myMesh->NbNodes() = "<<myMesh->NbNodes());
-      SMDS_NodeIteratorPtr aNodesIter = myMesh->nodesIterator();
-      for(; aNodesIter->more();){
-       const SMDS_MeshNode* aNode = aNodesIter->next();
-       TRecord aRec;
-       aRec.coord[0] = aNode->X();
-       aRec.coord[1] = aNode->Y();
-       aRec.coord[2] = aNode->Z();
-       const TNodeLab& aLabel = aNode->GetID();
-       aDataSet2411.insert(TDataSet::value_type(aLabel,aRec));
-      }
-      MESSAGE("Perform - aDataSet2411.size() = "<<aDataSet2411.size());
-      UNV2411::Write(out_stream,aDataSet2411);
-    }
-    {
-      using namespace UNV2412;
-      TDataSet aDataSet2412;
-      TConnect aConnect;
-
-      // Storing SMDS Edges
-      MESSAGE("Perform - myMesh->NbEdges() = "<<myMesh->NbEdges());
-      if(myMesh->NbEdges()){
-       SMDS_EdgeIteratorPtr anIter = myMesh->edgesIterator();
-       for(; anIter->more();){
-         const SMDS_MeshEdge* anElem = anIter->next();
-         TElementLab aLabel = anElem->GetID();
-         int aNbNodes = anElem->NbNodes();
-         TRecord aRec;
-         aRec.node_labels.reserve(aNbNodes);
-         SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
-         for(; aNodesIter->more();){
-           const SMDS_MeshElement* aNode = aNodesIter->next();
-           aRec.node_labels.push_back(aNode->GetID());
-         }
-         aRec.fe_descriptor_id = 11;
-         aDataSet2412.insert(TDataSet::value_type(aLabel,aRec));
-       }
-       MESSAGE("Perform - aDataSet2412.size() = "<<aDataSet2412.size());
-      }
-
-      MESSAGE("Perform - myMesh->NbFaces() = "<<myMesh->NbFaces());
-      if(myMesh->NbFaces()){
-       SMDS_FaceIteratorPtr anIter = myMesh->facesIterator();
-       for(; anIter->more();){
-         const SMDS_MeshFace* anElem = anIter->next();
-         TElementLab aLabel = anElem->GetID();
-         int aNbNodes = anElem->NbNodes();
-         TRecord aRec;
-         aRec.node_labels.reserve(aNbNodes);
-         SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
-         for(; aNodesIter->more();){
-           const SMDS_MeshElement* aNode = aNodesIter->next();
-           aRec.node_labels.push_back(aNode->GetID());
-         }
-         switch(aNbNodes){
-         case 3:
-           aRec.fe_descriptor_id = 41;
-           break;
-         case 4:
-           aRec.fe_descriptor_id = 44;
-           break;
-         default:
-           continue;
-         }
-         aDataSet2412.insert(TDataSet::value_type(aLabel,aRec));
-       }
-       MESSAGE("Perform - aDataSet2412.size() = "<<aDataSet2412.size());
-      }
-
-      MESSAGE("Perform - myMesh->NbVolumes() = "<<myMesh->NbVolumes());
-      if(myMesh->NbVolumes()){
-       SMDS_VolumeIteratorPtr anIter = myMesh->volumesIterator();
-       for(; anIter->more();){
-         const SMDS_MeshVolume* anElem = anIter->next();
-         TElementLab aLabel = anElem->GetID();
-
-         int aNbNodes = anElem->NbNodes();
-         aConnect.resize(aNbNodes);
-
-         SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
-         GetConnect(aNodesIter,aConnect);
-
-         int anId = -1;
-         int* aConn = NULL;
-         switch(aNbNodes){
-         case 4: {
-           static int anIds[] = {0,2,1,3};
-           aConn = anIds;
-           anId = 111;
-           break;
-         }
-         case 6: {
-           static int anIds[] = {0,2,1,3,5,4};
-           aConn = anIds;
-           anId = 112;
-           break;
-         }
-         case 8: {
-           static int anIds[] = {0,3,2,1,4,7,6,5};
-           aConn = anIds;
-           anId = 115;
-           break;
-         }
-         default:
-           continue;
-         }
-         if(aConn){
-           TRecord aRec;
-           aRec.fe_descriptor_id = anId;
-           aRec.node_labels.resize(aNbNodes);
-           for(int aNodeId = 0; aNodeId < aNbNodes; aNodeId++){
-             aRec.node_labels[aConn[aNodeId]] = aConnect[aNodeId];
-           }
-           aDataSet2412.insert(TDataSet::value_type(aLabel,aRec));
-         }
-       }
-       MESSAGE("Perform - aDataSet2412.size() = "<<aDataSet2412.size());
-      }
-      UNV2412::Write(out_stream,aDataSet2412);
-    }
-  }catch(const std::exception& exc){
-    INFOS("Follow exception was cought:\n\t"<<exc.what());
-  }catch(...){
-    INFOS("Unknown exception was cought !!!");
-  }
-  return aResult;
-}
diff --git a/src/DriverUNV/DriverUNV_W_SMDS_Mesh.h b/src/DriverUNV/DriverUNV_W_SMDS_Mesh.h
deleted file mode 100644 (file)
index 88ff5e8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERUNV_W_SMDS_MESH
-#define _INCLUDE_DRIVERUNV_W_SMDS_MESH
-
-#include "Driver_SMDS_Mesh.h"
-
-class DriverUNV_W_SMDS_Mesh: public Driver_SMDS_Mesh
-{
- public:
-  virtual Status Perform();
-};
-
-
-#endif
diff --git a/src/DriverUNV/DriverUNV_W_SMESHDS_Document.cxx b/src/DriverUNV/DriverUNV_W_SMESHDS_Document.cxx
deleted file mode 100644 (file)
index 0e73e1c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverUNV_W_SMESHDS_Document.h"
diff --git a/src/DriverUNV/DriverUNV_W_SMESHDS_Document.h b/src/DriverUNV/DriverUNV_W_SMESHDS_Document.h
deleted file mode 100644 (file)
index 77feb0e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERUNV_W_SMESHDS_DOCUMENT
-#define _INCLUDE_DRIVERUNV_W_SMESHDS_DOCUMENT
-
-#include "Driver_Document.h"
-
-class DriverUNV_W_SMESHDS_Document : public Driver_Document 
-{};
-
-#endif
diff --git a/src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx b/src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx
deleted file mode 100644 (file)
index 2cbfe4d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "DriverUNV_W_SMESHDS_Mesh.h"
diff --git a/src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.h b/src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.h
deleted file mode 100644 (file)
index 8bc7284..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _INCLUDE_DRIVERUNV_W_SMESHDS_MESH
-#define _INCLUDE_DRIVERUNV_W_SMESHDS_MESH
-
-#include "Driver_SMESHDS_Mesh.h"
-
-class DriverUNV_W_SMESHDS_Mesh: public Driver_SMESHDS_Mesh
-{};
-
-#endif
diff --git a/src/DriverUNV/UNV2411_Structure.cxx b/src/DriverUNV/UNV2411_Structure.cxx
deleted file mode 100644 (file)
index 9b78920..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include <fstream>     
-#include <stdio.h>     
-
-#include "UNV2411_Structure.hxx"
-#include "UNV_Utilities.hxx"
-
-using namespace std;
-using namespace UNV;
-using namespace UNV2411;
-
-#ifdef _DEBUG_
-static int MYDEBUG = 1;
-#else
-static int MYDEBUG = 0;
-#endif
-
-static string _label_dataset = "2411";
-
-UNV2411::TRecord::TRecord():
-  exp_coord_sys_num(0),
-  disp_coord_sys_num(0),
-  color(0)
-{}
-
-void UNV2411::Read(std::ifstream& in_stream, TDataSet& theDataSet)
-{
-  if(!in_stream.good())
-    EXCEPTION(runtime_error,"ERROR: Input file not good.");
-
-  /*
-   * adjust the \p istream to our
-   * position
-   */
-  if(!beginning_of_dataset(in_stream,_label_dataset))
-    EXCEPTION(runtime_error,"ERROR: Could not find "<<_label_dataset<<" dataset!");
-
-  /**
-   * always 3 coordinates in the UNV file, no matter
-   * which dimensionality libMesh is in
-   */
-  TNodeLab aLabel;
-  std::string num_buf;
-  for(; !in_stream.eof();){
-    in_stream >> aLabel ;
-    if(aLabel == -1){
-      // end of dataset is reached
-      break;
-    }
-
-    TRecord aRec;
-    in_stream>>aRec.exp_coord_sys_num;
-    in_stream>>aRec.disp_coord_sys_num;
-    in_stream>>aRec.color;
-
-    /*
-     * take care of the
-     * floating-point data
-     */
-    for(int d = 0; d < 3; d++){
-      in_stream>>num_buf;
-      aRec.coord[d] = D_to_e(num_buf);
-    }
-
-    theDataSet.insert(TDataSet::value_type(aLabel,aRec));
-  }
-}
-
-
-void UNV2411::Write(std::ofstream& out_stream, const TDataSet& theDataSet)
-{
-  if(!out_stream.good())
-    EXCEPTION(runtime_error,"ERROR: Output file not good.");
-  
-  /*
-   * Write beginning of dataset
-   */
-  out_stream<<"    -1\n";
-  out_stream<<"  "<<_label_dataset<<"\n";
-
-  TDataSet::const_iterator anIter = theDataSet.begin();
-  for(; anIter != theDataSet.end(); anIter++){
-    const TNodeLab& aLabel = anIter->first;
-    const TRecord& aRec = anIter->second;
-    char buf[78];
-    sprintf(buf, "%10d%10d%10d%10d\n", 
-           aLabel,
-           aRec.exp_coord_sys_num,
-           aRec.disp_coord_sys_num,
-           aRec.color);
-    out_stream<<buf;
-
-    // the coordinates
-    sprintf(buf, "%25.16E%25.16E%25.16E\n", 
-           aRec.coord[0],
-           aRec.coord[1],
-           aRec.coord[2]);
-    out_stream<<buf;
-  }
-  
-  
-  /*
-   * Write end of dataset
-   */
-  out_stream<<"    -1\n";
-}
diff --git a/src/DriverUNV/UNV2411_Structure.hxx b/src/DriverUNV/UNV2411_Structure.hxx
deleted file mode 100644 (file)
index 4f6a393..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef UNV2411_Structure_HeaderFile
-#define UNV2411_Structure_HeaderFile
-
-#include <map>
-#include <fstream>     
-
-namespace UNV2411{
-  
-  struct TRecord{
-    TRecord();
-    int exp_coord_sys_num;  // export coordinate system number
-    int disp_coord_sys_num;  // displacement coordinate system number
-    int color;  // color                                
-    double coord[3];  // node coordinates in the part coordinate system
-  };
-  
-  typedef int TNodeLab; // type of node label
-  typedef std::map<TNodeLab,TRecord> TDataSet;
-
-  void Read(std::ifstream& in_stream, TDataSet& theDataSet);
-
-  void Write(std::ofstream& out_stream, const TDataSet& theDataSet);
-
-};
-
-
-#endif
diff --git a/src/DriverUNV/UNV2412_Structure.cxx b/src/DriverUNV/UNV2412_Structure.cxx
deleted file mode 100644 (file)
index 0160d7b..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include <fstream>     
-#include <iomanip>
-
-#include "UNV2412_Structure.hxx"
-#include "UNV_Utilities.hxx"
-
-using namespace std;
-using namespace UNV;
-using namespace UNV2412;
-
-#ifdef _DEBUG_
-static int MYDEBUG = 1;
-#else
-static int MYDEBUG = 0;
-#endif
-
-static string _label_dataset = "2412";
-
-UNV2412::TRecord::TRecord():
-  phys_prop_tab_num(2),
-  mat_prop_tab_num(1),
-  color(7),
-  beam_orientation(0),
-  beam_fore_end(0),
-  beam_aft_end(0)
-{}
-
-void UNV2412::Read(std::ifstream& in_stream, TDataSet& theDataSet)
-{
-  if(!in_stream.good())
-    EXCEPTION(runtime_error,"ERROR: Input file not good.");
-
-  /*
-   * adjust the \p istream to our
-   * position
-   */
-  if(!beginning_of_dataset(in_stream,_label_dataset))
-    EXCEPTION(runtime_error,"ERROR: Could not find "<<_label_dataset<<" dataset!");
-
-  TElementLab aLabel;
-  for(; !in_stream.eof();){
-    in_stream >> aLabel ;
-    if(aLabel == -1){
-      // end of dataset is reached
-      break;
-    }
-
-    int n_nodes;
-    TRecord aRec;
-    in_stream>>aRec.fe_descriptor_id;
-    in_stream>>aRec.phys_prop_tab_num;
-    in_stream>>aRec.mat_prop_tab_num;
-    in_stream>>aRec.color;
-    in_stream>>n_nodes;
-
-    if(IsBeam(aRec.fe_descriptor_id)){
-      in_stream>>aRec.beam_orientation;
-      in_stream>>aRec.beam_fore_end;
-      in_stream>>aRec.beam_aft_end;
-    }
-
-    aRec.node_labels.resize(n_nodes);
-    for(int j=0; j < n_nodes; j++){
-      // read node labels
-      in_stream>>aRec.node_labels[j];             
-    }
-
-    theDataSet.insert(TDataSet::value_type(aLabel,aRec));
-  }
-
-}
-
-
-void UNV2412::Write(std::ofstream& out_stream, const TDataSet& theDataSet)
-{
-  if(!out_stream.good())
-    EXCEPTION(runtime_error,"ERROR: Output file not good.");
-  
-  /*
-   * Write beginning of dataset
-   */
-  out_stream<<"    -1\n";
-  out_stream<<"  "<<_label_dataset<<"\n";
-
-  TDataSet::const_iterator anIter = theDataSet.begin();
-  for(; anIter != theDataSet.end(); anIter++){
-    const TElementLab& aLabel = anIter->first;
-    const TRecord& aRec = anIter->second;
-    out_stream<<std::setw(10)<<aLabel;  /* element ID */
-    out_stream<<std::setw(10)<<aRec.fe_descriptor_id;  /* type of element */
-    out_stream<<std::setw(10)<<aRec.phys_prop_tab_num;
-    out_stream<<std::setw(10)<<aRec.mat_prop_tab_num;
-    out_stream<<std::setw(10)<<aRec.color;
-    out_stream<<std::setw(10)<<aRec.node_labels.size()<<std::endl;  /* No. of nodes per element */
-
-    if(IsBeam(aRec.fe_descriptor_id)){
-      out_stream<<std::setw(10)<<aRec.beam_orientation;
-      out_stream<<std::setw(10)<<aRec.beam_fore_end;
-      out_stream<<std::setw(10)<<aRec.beam_aft_end<<std::endl;
-    }
-
-    int n_nodes = aRec.node_labels.size();
-    int iEnd = (n_nodes-1)/8 + 1;
-    for(int i = 0, k = 0; i < iEnd; i++){
-      int jEnd = n_nodes - 8*(i+1);
-      if(jEnd < 0) 
-       jEnd = 8 + jEnd;
-      else
-       jEnd = 8;
-      for(int j = 0; j < jEnd ; k++, j++){
-       out_stream<<std::setw(10)<<aRec.node_labels[k];
-      }
-      out_stream<<std::endl;
-    }
-  }
-
-  /*
-   * Write end of dataset
-   */
-  out_stream<<"    -1\n";
-}
-
-
-bool UNV2412::IsBeam(int theFeDescriptorId){
-  switch (theFeDescriptorId){
-  case 11:
-  case 21:
-  case 22:
-  case 24:
-  case 25:
-    return true;
-  }
-  return false;
-}
-
-
-bool UNV2412::IsFace(int theFeDescriptorId){
-  switch (theFeDescriptorId){
-    
-  case 71: // TRI3
-  case 72:
-  case 74:
-
-  case 41: // Plane Stress Linear Triangle - TRI3
-  case 91: // Thin Shell Linear Triangle - TRI3
-
-  case 42: // Plane Stress Quadratic Triangle - TRI6
-  case 92: // Thin Shell Quadratic Triangle - TRI6
-
-  case 43: // Plane Stress Cubic Triangle
-
-  case 44: // Plane Stress Linear Quadrilateral - QUAD4
-  case 94: // Thin Shell   Linear Quadrilateral -  QUAD4
-
-  case 45: // Plane Stress Quadratic Quadrilateral - QUAD8
-  case 95: // Thin Shell   Quadratic Quadrilateral - QUAD8
-
-  case 46: // Plane Stress Cubic Quadrilateral
-
-    return true;
-  }
-  return false;
-}
-
-
-bool UNV2412::IsVolume(int theFeDescriptorId){
-  //if(!IsBeam(theFeDescriptorId) && !IsFace(theFeDescriptorId))
-  //  return true;
-  switch (theFeDescriptorId){
-
-  case 111: // Solid Linear Tetrahedron - TET4
-  case 118: // Solid Quadratic Tetrahedron - TET10
-
-  case 112: // Solid Linear Prism - PRISM6
-  case 113: // Solid Quadratic Prism - PRISM15
-
-  case 115: // Solid Linear Brick - HEX8
-  case 116: // Solid Quadratic Brick - HEX20
-
-  case 117: // Solid Cubic Brick
-    return true;
-  }
-  return false;
-}
diff --git a/src/DriverUNV/UNV2412_Structure.hxx b/src/DriverUNV/UNV2412_Structure.hxx
deleted file mode 100644 (file)
index 0892c5f..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef UNV2412_Structure_HeaderFile
-#define UNV2412_Structure_HeaderFile
-
-#include <map>
-#include <vector>
-#include <fstream>     
-
-
-namespace UNV2412{
-  
-  typedef std::vector<int> TNodeLabels; // Nodal connectivities
-
-  struct TRecord{
-    TRecord();
-
-    int fe_descriptor_id;  // FE descriptor id
-    int phys_prop_tab_num;  // physical property table number
-    int mat_prop_tab_num;  // material property table number
-    int color;  // color
-    TNodeLabels node_labels;  // node labels defining element
-
-    //FOR BEAM ELEMENTS ONLY
-    int beam_orientation;  // beam orientation node number
-    int beam_fore_end;  // beam fore-end cross section number
-    int beam_aft_end;  // beam  aft-end cross section number
-  };
-  
-  typedef int TElementLab; // type of element label
-  typedef std::map<TElementLab,TRecord> TDataSet;
-
-  void Read(std::ifstream& in_stream, TDataSet& theDataSet);
-
-  void Write(std::ofstream& out_stream, const TDataSet& theDataSet);
-
-  bool IsBeam(int theFeDescriptorId);
-  bool IsFace(int theFeDescriptorId);
-  bool IsVolume(int theFeDescriptorId);
-
-};
-
-
-#endif
diff --git a/src/DriverUNV/UNV_Test.cxx b/src/DriverUNV/UNV_Test.cxx
deleted file mode 100644 (file)
index 0156b50..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "UNV2411_Structure.hxx"
-#include "UNV2412_Structure.hxx"
-#include "UNV_Utilities.hxx"
-
-#include "DriverUNV_R_SMDS_Mesh.h"
-#include "DriverUNV_W_SMDS_Mesh.h"
-
-using namespace std;
-
-#ifdef DEBUG
-static int MYDEBUG = 1;
-#else
-static int MYDEBUG = 0;
-#endif
-
-
-void ReadMed(const char* theFileName){
-  std::ifstream in_stream(theFileName);
-
-  UNV2411::TDataSet aDataSet2411;
-  UNV2411::Read(in_stream,aDataSet2411);
-
-  in_stream.seekg(0);
-  UNV2412::TDataSet aDataSet2412;
-  UNV2412::Read(in_stream,aDataSet2412);
-
-  string aFileName(theFileName);
-  aFileName += "-";
-  std::ofstream out_stream(aFileName.c_str());
-
-  UNV2411::Write(out_stream,aDataSet2411);
-  UNV2412::Write(out_stream,aDataSet2412);
-}
-
-
-int main(int argc, char** argv){ 
-  DriverUNV_R_SMDS_Mesh aR;
-  DriverUNV_W_SMDS_Mesh aW;
-  try{
-    if(argc > 1){
-      ReadMed(argv[1]);
-    }
-    return 0;
-  }catch(std::exception& exc){
-    MESSAGE("Follow exception was accured :\n"<<exc.what());
-  }catch(...){
-    MESSAGE("Unknown exception was accured !!!");
-  } 
-  return 1;
-}
diff --git a/src/DriverUNV/UNV_Utilities.cxx b/src/DriverUNV/UNV_Utilities.cxx
deleted file mode 100644 (file)
index 0781e5a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
-//  File   : VISU_DatConvertor.cxx
-//  Author : Alexey PETROV
-//  Module : VISU
-
-#include "UNV_Utilities.hxx"
-
-using namespace std;
-
-#ifdef _DEBUG_
-static int MYDEBUG = 1;
-#else
-static int MYDEBUG = 0;
-#endif
-
-
-int UNV::PrefixPrinter::myCounter = 0;
-
-UNV::PrefixPrinter::PrefixPrinter()
-{
-  myCounter++;
-}
-
-UNV::PrefixPrinter::~PrefixPrinter()
-{
-  myCounter--;
-}
-
-string UNV::PrefixPrinter::GetPrefix()
-{
-  if(myCounter)
-    return string(myCounter*2,' ');
-  return "";
-}
diff --git a/src/DriverUNV/UNV_Utilities.hxx b/src/DriverUNV/UNV_Utilities.hxx
deleted file mode 100644 (file)
index bf7b8d4..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
-//  File   : VISU_DatConvertor.hxx
-//  Author : Alexey PETROV
-//  Module : VISU
-
-#ifndef MED_Utilities_HeaderFile
-#define MED_Utilities_HeaderFile
-
-#include <iostream>    
-#include <sstream>     
-#include <string>
-#include <stdexcept>
-#include <cassert>
-
-namespace UNV{
-  using namespace std;
-
-  class PrefixPrinter{
-    static int myCounter;
-  public:
-    PrefixPrinter();
-    ~PrefixPrinter();
-
-    static string GetPrefix();
-  };
-
-  /**
-   * @returns \p false when error occured, \p true otherwise.
-   * Adjusts the \p in_stream to the beginning of the
-   * dataset \p ds_name.
-   */
-  inline bool beginning_of_dataset(std::istream& in_file, const std::string& ds_name)
-  {
-    assert (in_file.good());
-    assert (!ds_name.empty());
-    
-    std::string olds, news;
-    
-    while(true){
-      in_file >> olds >> news;
-      /*
-       * a "-1" followed by a number means the beginning of a dataset
-       * stop combing at the end of the file
-       */
-      while( ((olds != "-1") || (news == "-1") ) && !in_file.eof() ){    
-       olds = news;
-       in_file >> news;
-      }
-      if(in_file.eof())
-       return false;
-      if (news == ds_name)
-       return true;
-    }
-    // should never end up here
-    return false;
-  }
-
-  /**
-   * Method for converting exponential notation
-   * from "D" to "e", for example
-   * \p 3.141592654D+00 \p --> \p 3.141592654e+00
-   * in order to make it readable for C++.
-   */
-  inline double D_to_e(std::string& number)
-  {
-    /* find "D" in string, start looking at 
-     * 6th element, to improve speed.
-     * We dont expect a "D" earlier
-     */
-    const int position = number.find("D",6);
-    if(position != std::string::npos){
-      number.replace(position, 1, "e"); 
-    }
-    return atof (number.c_str());
-  }
-
-};
-
-
-#ifndef MESSAGE
-
-#define MESSAGE(msg) std::cout<<__FILE__<<"["<<__LINE__<<"]::"<<msg<<endl;
-
-#define BEGMSG(msg) std::cout<<UNV::PrefixPrinter::GetPrefix()<<msg
-
-#define ADDMSG(msg) std::cout<<msg
-
-#endif
-
-
-#ifndef EXCEPTION
-
-#define EXCEPTION(TYPE, MSG) {\
-  std::ostringstream aStream;\
-  aStream<<__FILE__<<"["<<__LINE__<<"]::"<<MSG;\
-  throw TYPE(aStream.str());\
-}
-
-#endif
-
-#endif
diff --git a/src/MEFISTO2/Rn.h b/src/MEFISTO2/Rn.h
deleted file mode 100755 (executable)
index 9aafe70..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-//  MEFISTO :  library to compute 2D triangulation from segmented boundaries
-//
-//  Copyright (C) 2003  Laboratoire J.-L. Lions UPMC Paris
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.ann.jussieu.fr/~perronne or email Perronnet@ann.jussieu.fr
-//                                          or email Hecht@ann.jussieu.fr
-//
-//
-//  File   : Rn.h
-//  Module : SMESH
-//  Authors: Frederic HECHT & Alain PERRONNET
-//
-
-#ifndef Rn__h
-#define Rn__h
-
-#include <gp_Pnt.hxx>      //Dans OpenCascade
-#include <gp_Vec.hxx>      //Dans OpenCascade
-#include <gp_Dir.hxx>      //Dans OpenCascade
-
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// BUT:   Definir les espaces affines R R2 R3 R4 soit Rn pour n=1,2,3,4
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// AUTEUR : Frederic HECHT      ANALYSE NUMERIQUE UPMC  PARIS   OCTOBRE   2000
-// MODIFS : Alain    PERRONNET  ANALYSE NUMERIQUE UPMC  PARIS   NOVEMBRE  2000
-//...............................................................................
-#include <iostream>
-#include <cmath>
-
-
-template<class T> inline T Abs (const T &a){return a <0 ? -a : a;}
-template<class T> inline void Echange (T& a,T& b) {T c=a;a=b;b=c;}
-
-template<class T> inline T Min (const T &a,const T &b)  {return a < b ? a : b;}
-template<class T> inline T Max (const T &a,const T & b) {return a > b ? a : b;}
-
-template<class T> inline T Max (const T &a,const T & b,const T & c){return Max(Max(a,b),c);}
-template<class T> inline T Min (const T &a,const T & b,const T & c){return Min(Min(a,b),c);}
-
-template<class T> inline T Max (const T &a,const T & b,const T & c,const T & d)
- {return Max(Max(a,b),Max(c,d));}
-template<class T> inline T Min (const T &a,const T & b,const T & c,const T & d)
- {return Min(Min(a,b),Min(c,d));}
-
-//le type Nom des entites geometriques P L S V O
-//===========
-typedef char Nom[1+24];
-
-//le type N des nombres entiers positifs
-//=========
-typedef unsigned long int N;
-
-//le type Z des nombres entiers relatifs
-//=========
-typedef long int Z;
-
-//le type R des nombres "reels"
-//=========
-typedef double R;
-
-//le type XPoint  des coordonnees d'un pixel dans une fenetre
-//==============
-//typedef struct { short int x,y } XPoint;  //en fait ce type est defini dans X11-Window
-                                            // #include <X11/Xlib.h>
-//la classe R2
-//============
-class R2 
-{
-  friend std::ostream& operator << (std::ostream& f, const R2 & P)
-  { f << P.x << ' ' << P.y ; return f; }
-  friend std::istream& operator >> (std::istream& f, R2 & P)
-  { f >> P.x >> P.y ; return f; }
-
-  friend std::ostream& operator << (std::ostream& f, const R2 * P)
-  { f << P->x << ' ' << P->y ; return f; }
-  friend std::istream& operator >> (std::istream& f, R2 * P)
-  { f >> P->x >> P->y ; return f; }
-
-public:
-  R x,y;  //les donnees
-
-  R2 () :x(0),y(0) {}              //les constructeurs
-  R2 (R a,R b)   :x(a),y(b)  {}
-  R2 (R2 A,R2 B) :x(B.x-A.x),y(B.y-A.y)  {} //vecteur defini par 2 points
-
-  R2  operator+(R2 P) const {return R2(x+P.x,y+P.y);}     // Q+P possible
-  R2  operator+=(R2 P)  {x += P.x;y += P.y; return *this;}// Q+=P;
-  R2  operator-(R2 P) const {return R2(x-P.x,y-P.y);}     // Q-P
-  R2  operator-=(R2 P) {x -= P.x;y -= P.y; return *this;} // Q-=P;
-  R2  operator-()const  {return R2(-x,-y);}               // -Q
-  R2  operator+()const  {return *this;}                   // +Q
-  R   operator,(R2 P)const {return x*P.x+y*P.y;} // produit scalaire (Q,P)
-  R   operator^(R2 P)const {return x*P.y-y*P.x;} // produit vectoriel Q^P
-  R2  operator*(R c)const {return R2(x*c,y*c);}  // produit a droite  P*c
-  R2  operator*=(R c)  {x *= c; y *= c; return *this;}
-  R2  operator/(R c)const {return R2(x/c,y/c);}  // division par un reel
-  R2  operator/=(R c)  {x /= c; y /= c; return *this;}
-  R & operator[](int i) {return (&x)[i];}        // la coordonnee i
-  R2  orthogonal() {return R2(-y,x);}    //le vecteur orthogonal dans R2
-  friend R2 operator*(R c,R2 P) {return P*c;}    // produit a gauche c*P
-};
-
-
-//la classe R3
-//============
-class R3
-{
-  friend std::ostream& operator << (std::ostream& f, const R3 & P)
-  { f << P.x << ' ' << P.y << ' ' << P.z ; return f; }
-  friend std::istream& operator >> (std::istream& f, R3 & P)
-  { f >> P.x >> P.y >> P.z ; return f; }
-
-  friend std::ostream& operator << (std::ostream& f, const R3 * P)
-  { f << P->x << ' ' << P->y << ' ' << P->z ; return f; }
-  friend std::istream& operator >> (std::istream& f, R3 * P)
-  { f >> P->x >> P->y >> P->z ; return f; }
-
-public:  
-  R  x,y,z;  //les 3 coordonnees
-  R3 () :x(0),y(0),z(0) {}  //les constructeurs
-  R3 (R a,R b,R c):x(a),y(b),z(c)  {}                  //Point ou Vecteur (a,b,c)
-  R3 (R3 A,R3 B):x(B.x-A.x),y(B.y-A.y),z(B.z-A.z)  {}  //Vecteur AB
-
-  R3 (gp_Pnt P) : x(P.X()), y(P.Y()), z(P.Z()) {}      //Point     d'OpenCascade
-  R3 (gp_Vec V) : x(V.X()), y(V.Y()), z(V.Z()) {}      //Vecteur   d'OpenCascade
-  R3 (gp_Dir P) : x(P.X()), y(P.Y()), z(P.Z()) {}      //Direction d'OpenCascade
-
-  R3   operator+(R3 P)const  {return R3(x+P.x,y+P.y,z+P.z);}
-  R3   operator+=(R3 P)  {x += P.x; y += P.y; z += P.z; return *this;}
-  R3   operator-(R3 P)const  {return R3(x-P.x,y-P.y,z-P.z);}
-  R3   operator-=(R3 P)  {x -= P.x; y -= P.y; z -= P.z; return *this;}
-  R3   operator-()const  {return R3(-x,-y,-z);}
-  R3   operator+()const  {return *this;}
-  R    operator,(R3 P)const {return  x*P.x+y*P.y+z*P.z;} // produit scalaire
-  R3   operator^(R3 P)const {return R3(y*P.z-z*P.y ,P.x*z-x*P.z, x*P.y-y*P.x);} // produit vectoriel
-  R3   operator*(R c)const {return R3(x*c,y*c,z*c);}
-  R3   operator*=(R c)  {x *= c; y *= c; z *= c; return *this;}
-  R3   operator/(R c)const {return R3(x/c,y/c,z/c);}
-  R3   operator/=(R c)  {x /= c; y /= c; z /= c; return *this;}
-  R  & operator[](int i) {return (&x)[i];}
-  friend R3 operator*(R c,R3 P) {return P*c;}
-
-  R3   operator=(gp_Pnt P) {return R3(P.X(),P.Y(),P.Z());}
-  R3   operator=(gp_Dir P) {return R3(P.X(),P.Y(),P.Z());}
-
-  friend gp_Pnt gp_pnt(R3 xyz) { return gp_Pnt(xyz.x,xyz.y,xyz.z); }
-  //friend gp_Pnt operator=() { return gp_Pnt(x,y,z); }
-  friend gp_Dir gp_dir(R3 xyz) { return gp_Dir(xyz.x,xyz.y,xyz.z); }
-
-  bool  DansPave( R3 & xyzMin, R3 & xyzMax )
-    { return xyzMin.x<=x && x<=xyzMax.x &&
-            xyzMin.y<=y && y<=xyzMax.y &&
-            xyzMin.z<=z && z<=xyzMax.z; }
-};
-
-//la classe R4
-//============
-class R4: public R3
-{
-  friend std::ostream& operator <<(std::ostream& f, const R4 & P )
-  { f << P.x << ' ' << P.y << ' ' << P.z << ' ' << P.omega; return f; }
-  friend istream& operator >>(istream& f,  R4 & P)
-  { f >> P.x >>  P.y >>  P.z >> P.omega ; return f; }
-
-  friend std::ostream& operator <<(std::ostream& f, const R4 * P )
-  { f << P->x << ' ' << P->y << ' ' << P->z << ' ' << P->omega; return f; }
-  friend istream& operator >>(istream& f,  R4 * P)
-  { f >> P->x >>  P->y >>  P->z >> P->omega ; return f; }
-
-public:  
-  R  omega;  //la donnee du poids supplementaire
-  R4 () :omega(1.0) {}  //les constructeurs
-  R4 (R a,R b,R c,R d):R3(a,b,c),omega(d) {}
-  R4 (R4 A,R4 B) :R3(B.x-A.x,B.y-A.y,B.z-A.z),omega(B.omega-A.omega) {}
-
-  R4   operator+(R4 P)const  {return R4(x+P.x,y+P.y,z+P.z,omega+P.omega);}
-  R4   operator+=(R4 P)  {x += P.x;y += P.y;z += P.z;omega += P.omega;return *this;}
-  R4   operator-(R4 P)const  {return R4(x-P.x,y-P.y,z-P.z,omega-P.omega);}
-  R4   operator-=(R4 P) {x -= P.x;y -= P.y;z -= P.z;omega -= P.omega;return *this;}
-  R4   operator-()const  {return R4(-x,-y,-z,-omega);}
-  R4   operator+()const  {return *this;}
-  R    operator,(R4 P)const {return  x*P.x+y*P.y+z*P.z+omega*P.omega;} // produit scalaire
-  R4   operator*(R c)const {return R4(x*c,y*c,z*c,omega*c);}
-  R4   operator*=(R c)  {x *= c; y *= c; z *= c; omega *= c; return *this;}
-  R4   operator/(R c)const {return R4(x/c,y/c,z/c,omega/c);}
-  R4   operator/=(R c)  {x /= c; y /= c; z /= c; omega /= c; return *this;}
-  R  & operator[](int i) {return (&x)[i];}
-  friend R4 operator*(R c,R4 P) {return P*c;}
-};
-
-//quelques fonctions supplementaires sur ces classes
-//==================================================
-inline R Aire2d(const R2 A,const R2 B,const R2 C){return (B-A)^(C-A);} 
-inline R Angle2d(R2 P){ return atan2(P.y,P.x);}
-
-inline R Norme2_2(const R2 & A){ return (A,A);}
-inline R Norme2(const R2 & A){ return sqrt((A,A));}
-inline R NormeInfinie(const R2 & A){return Max(Abs(A.x),Abs(A.y));}
-
-inline R Norme2_2(const R3 & A){ return (A,A);}
-inline R Norme2(const R3 & A){ return sqrt((A,A));}
-inline R NormeInfinie(const R3 & A){return Max(Abs(A.x),Abs(A.y),Abs(A.z));}
-
-inline R Norme2_2(const R4 & A){ return (A,A);}
-inline R Norme2(const R4 & A){ return sqrt((A,A));}
-inline R NormeInfinie(const R4 & A){return Max(Abs(A.x),Abs(A.y),Abs(A.z),Abs(A.omega));}
-
-inline R2 XY(R3 P) {return R2(P.x, P.y);}  //restriction a R2 d'un R3 par perte de z
-inline R3 Min(R3 P, R3 Q) 
-{return R3(P.x<Q.x ? P.x : Q.x, P.y<Q.y ? P.y : Q.y, P.z<Q.z ? P.z : Q.z);} //Pt de xyz Min
-inline R3 Max(R3 P, R3 Q) 
-{return R3(P.x>Q.x ? P.x : Q.x, P.y>Q.y ? P.y : Q.y, P.z>Q.z ? P.z : Q.z);} //Pt de xyz Max
-
-#endif
diff --git a/src/MEFISTO2/aptrte.cxx b/src/MEFISTO2/aptrte.cxx
deleted file mode 100755 (executable)
index 40c0905..0000000
+++ /dev/null
@@ -1,786 +0,0 @@
-//  MEFISTO : library to compute 2D triangulation from segmented boundaries
-//
-//  Copyright (C) 2003  Laboratoire J.-L. Lions UPMC Paris
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.ann.jussieu.fr/~perronne or email Perronnet@ann.jussieu.fr
-//
-//
-//  File   : aptrte.cxx
-//  Module : SMESH
-//  Author: Alain PERRONNET
-
-#include "Rn.h"
-#include "aptrte.h"
-#include "utilities.h"
-
-using namespace std;
-
-extern "C"
-{
-  R aretemaxface_;
-  R areteideale_( R3 xyz, R3 direction )
-  {
-    return aretemaxface_;
-  }
-}
-//calcul de la longueur ideale de l'arete au sommet xyz (z ici inactif)
-//dans la direction donnee
-//a ajuster pour chaque surface plane et selon l'entier notysu (voir plus bas)
-
-
-static double cpunew, cpuold=0;
-
-void tempscpu_( double & tempsec )
-//Retourne le temps CPU utilise en secondes
-{  
-  tempsec = ( (double) clock() ) / CLOCKS_PER_SEC;
-  //MESSAGE( "temps cpu=" << tempsec );
-}
-
-
-void deltacpu_( R & dtcpu )
-//Retourne le temps CPU utilise en secondes depuis le precedent appel
-{
-  tempscpu_( cpunew );
-  dtcpu  = R( cpunew - cpuold );
-  cpuold = cpunew;
-  //MESSAGE( "delta temps cpu=" << dtcpu );
-  return;
-}
-
-
-void  aptrte( Z nutysu, R aretmx,
-             Z nblf,   Z * nudslf, R2 * uvslf,
-             Z nbpti,  R2 *uvpti,
-             Z & nbst, R2 * & uvst, Z & nbt, Z * & nust,
-             Z & ierr )
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but : appel de la triangulation par un arbre-4 recouvrant
-// ----- de triangles equilateraux
-//       le contour du domaine plan est defini par des lignes fermees
-//       la premiere ligne etant l'enveloppe de toutes les autres
-//       la fonction areteideale(s,d) donne la taille d'arete
-//       au point s dans la direction (actuellement inactive) d
-//       des lors toute arete issue d'un sommet s devrait avoir une longueur
-//       comprise entre 0.65 areteideale_(s,d) et 1.3 areteideale_(s,d)
-//
-//Attention:
-//  Les tableaux uvslf et uvpti sont supposes ne pas avoir de sommets identiques!
-//  De meme, un sommet d'une ligne fermee ne peut appartenir a une autre ligne fermee
-//
-// entrees:
-// --------
-// nutysu : numero de traitement de areteideale_(s,d) selon le type de surface
-//          0 pas d'emploi de la fonction areteideale_() et aretmx est active
-//          1 il existe une fonction areteideale_(s,d)
-//            dont seules les 2 premieres composantes de uv sont actives
-//          ... autres options a definir ...
-// aretmx : longueur maximale des aretes de la future triangulation
-// nblf   : nombre de lignes fermees de la surface
-// nudslf : numero du dernier sommet de chacune des nblf lignes fermees
-//          nudslf(0)=0 pour permettre la difference sans test
-//          Attention le dernier sommet de chaque ligne est raccorde au premier
-//          tous les sommets et les points internes ont des coordonnees
-//          UV differentes <=> Pas de point double!
-// uvslf  : uv des nudslf(nblf) sommets des lignes fermees
-// nbpti  : nombre de points internes futurs sommets de la triangulation
-// uvpti  : uv des points internes futurs sommets de la triangulation
-//
-// sorties:
-// --------
-// nbst   : nombre de sommets de la triangulation finale
-// uvst   : coordonnees uv des nbst sommets de la triangulation
-// nbt    : nombre de triangles de la triangulation finale
-// nust   : 4 numeros dans uvst des sommets des nbt triangles
-//          s1, s2, s3, 0: no dans uvst des 3 sommets et 0 car quadrangle!
-// ierr   : 0 si pas d'erreur
-//        > 0 sinon
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// auteur : Alain Perronnet  Analyse Numerique Paris UPMC   decembre 2001
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-{
-  R  d, tcpu=0;
-  R3 direction=R3(0,0,0);  //direction pour areteideale() inactive ici!
-  Z  nbarfr=nudslf[nblf];  //nombre total d'aretes des lignes fermees
-  Z  mxtrou = Max( 1024, nblf );  //nombre maximal de trous dans la surface
-
-  R3 *mnpxyd=NULL;
-  Z  *mnsoar=NULL, mosoar=7, mxsoar, n1soar; //le hachage des aretes
-  Z  *mnartr=NULL, moartr=3, mxartr, n1artr; //le no des 3 aretes des triangles
-  Z  *mntree=NULL, motree=9, mxtree;   //L'arbre 4 de TE et nombre d'entiers par TE
-  Z  *mnqueu=NULL, mxqueu;
-  Z  *mn1arcf=NULL;
-  Z  *mnarcf=NULL, mxarcf;
-  Z  *mnarcf1=NULL;
-  Z  *mnarcf2=NULL;
-  Z  *mnarcf3=NULL;
-  Z  *mntrsu=NULL;
-  Z  *mndalf=NULL;
-  Z  *mnslig=NULL;
-  Z  *mnarst=NULL;
-  Z  *mnlftr=NULL;
-
-  R3 comxmi[2];            //coordonnees UV Min et Maximales
-  R  aremin, aremax;       //longueur minimale et maximale des aretes
-  R  quamoy, quamin;
-
-  Z  noar0, noar, na;
-  Z  i, l, n, ns, ns0, ns1, ns2, nosotr[3], nt;
-  Z  mxsomm, nbsomm, nbarpi, nbarli, ndtri0, mn;
-  Z  moins1=-1;
-
-  aretemaxface_ = aretmx;
-
-  // initialisation du temps cpu
-  deltacpu_( d );
-  ierr = 0;
-
-  // quelques reservations de tableaux pour faire les calculs
-  // ========================================================
-  // le tableau pointeur sur la premiere arete de chaque ligne fermee
-  if( mndalf!=NULL ) delete [] mndalf;
-  mndalf = new Z[1+nblf];
-  if( mndalf==NULL ) goto ERREUR;
-  mndalf[0]=0;
-
-  // declaration du tableau des coordonnees des sommets de la frontiere
-  // puis des sommets internes ajoutes
-  // majoration empirique du nombre de sommets de la triangulation
-  i =  4*nbarfr/10;
-  mxsomm = Max( 20000, 64*nbpti+i*i );
-  MESSAGE( "APTRTE: Depart de la triangulation avec " );
-  MESSAGE( "nutysu=" << nutysu << "  aretmx=" << aretmx << "  mxsomm=" << mxsomm );
-
- NEWDEPART:
-  //mnpxyd( 3, mxsomm ) les coordonnees UV des sommets et la taille d'arete aux sommets
-  if( mnpxyd!=NULL ) delete [] mnpxyd;
-  mnpxyd = new R3[mxsomm];
-  if( mnpxyd==NULL ) goto ERREUR;
-
-  // le tableau mnsoar des aretes des triangles
-  // 1: sommet 1 dans pxyd,
-  // 2: sommet 2 dans pxyd,
-  // 3: numero de 1 a nblf de la ligne qui supporte l'arete
-  // 4: numero dans mnartr du triangle 1 partageant cette arete,
-  // 5: numero dans mnartr du triangle 2 partageant cette arete,
-  // 6: chainage des aretes frontalieres ou internes ou
-  //    des aretes simples des etoiles de triangles,
-  // 7: chainage du hachage des aretes
-  // nombre d'aretes = 3 ( nombre de sommets - 1 + nombre de trous )
-  // pour le hachage des aretes mxsoar doit etre > 3*mxsomm!
-  // h(ns1,ns2) = min( ns1, ns2 )
-  if( mnsoar!=NULL ) delete [] mnsoar;
-  mxsoar = 3 * ( mxsomm + mxtrou );
-  mnsoar = new Z[mosoar*mxsoar];
-  if( mnsoar==NULL ) goto ERREUR;
-  //initialiser le tableau mnsoar pour le hachage des aretes
-  insoar_( mxsomm, mosoar, mxsoar, n1soar, mnsoar );
-
-  // mnarst( mxsomm ) numero mnsoar d'une arete pour chacun des sommets
-  if( mnarst!=NULL ) delete [] mnarst;
-  mnarst = new Z[1+mxsomm];
-  if( mnarst==NULL ) goto ERREUR;
-  n = 1+mxsomm;
-  azeroi_( n, mnarst );
-
-  // mnslig( mxsomm ) no de sommet dans sa ligne pour chaque sommet frontalier
-  //               ou no du point si interne forc'e par l'utilisateur
-  //               ou  0 si interne cree par le module
-  if( mnslig!=NULL ) delete [] mnslig;
-  mnslig = new Z[mxsomm];
-  if( mnslig==NULL ) goto ERREUR;
-  azeroi_( mxsomm, mnslig );
-
-  // initialisation des aretes frontalieres de la triangulation future
-  // renumerotation des sommets des aretes des lignes pour la triangulation
-  // mise a l'echelle des coordonnees des sommets pour obtenir une
-  // meilleure precision lors des calculs + quelques verifications
-  // boucle sur les lignes fermees qui forment la frontiere
-  // ======================================================================
-  noar = 0;
-  aremin = 1e100;
-  aremax = 0;
-
-  for (n=1; n<=nblf; n++)
-  {
-    //l'initialisation de la premiere arete de la ligne n dans la triangulation
-    //-------------------------------------------------------------------------
-    //le sommet ns0 est le numero de l'origine de la ligne
-    ns0 = nudslf[n-1];
-    mnpxyd[ns0].x = uvslf[ns0].x;
-    mnpxyd[ns0].y = uvslf[ns0].y;
-    mnpxyd[ns0].z = areteideale_( mnpxyd[ns0], direction );
-//     MESSAGE("Sommet " << ns0 << ": " << mnpxyd[ns0].x
-//      << " " << mnpxyd[ns0].y << " longueur arete=" << mnpxyd[ns0].z);
-
-    //carre de la longueur de l'arete 1 de la ligne fermee n
-    d = pow( uvslf[ns0+1].x - uvslf[ns0].x, 2 ) 
-      + pow( uvslf[ns0+1].y - uvslf[ns0].y, 2 ) ;
-    aremin = Min( aremin, d );
-    aremax = Max( aremax, d );
-
-    //le numero des 2 sommets (ns1,ns2) de la premiere arete de la ligne
-    //initialisation de la 1-ere arete ns1-ns1+1 de cette ligne fermee n
-    //le numero des 2 sommets ns1 ns2 de la 1-ere arete
-    //Attention: les numeros ns debutent a 1 (ils ont >0)
-    //           les tableaux c++ demarrent a zero!
-    //           les tableaux fortran demarrent ou l'on veut!
-    ns0++;
-    ns1 = ns0;
-    ns2 = ns1+1;
-
-     //le numero n de la ligne du sommet et son numero ns1 dans la ligne
-    mnslig[ns0-1] = 1000000 * n + ns1-nudslf[n-1];
-    fasoar_( ns1, ns2, moins1, moins1, n,
-            mosoar, mxsoar, n1soar, mnsoar, mnarst,
-            noar0,  ierr );
-    //pas de test sur ierr car pas de saturation possible a ce niveau
-
-    //le pointeur dans le hachage sur la premiere arete de la ligne fermee n
-    mndalf[n] = noar0;
-
-    //la nouvelle arete est la suivante de l'arete definie juste avant
-    if( noar > 0 )
-      mnsoar[mosoar * noar - mosoar + 5] = noar0;
-
-    //l'initialisation des aretes suivantes de la ligne dans la triangulation
-    //-----------------------------------------------------------------------
-    nbarli = nudslf[n] - nudslf[n-1];  //nombre d'aretes=sommets de la ligne n
-    for (i=2; i<=nbarli; i++)
-    {
-      ns1 = ns2; //le numero de l'arete et le numero du premier sommet de l'arete
-      if( i < nbarli )
-       //nbs+1 est le 2-eme sommet de l'arete i de la ligne fermee n
-       ns2 = ns1+1;
-      else
-       //le 2-eme sommet de la derniere arete est le premier sommet de la ligne
-       ns2 = ns0;
-
-      //l'arete precedente est dotee de sa suivante:celle cree ensuite
-      //les 2 coordonnees du sommet ns2 de la ligne
-      ns = ns1 - 1;
-      mnpxyd[ns].x = uvslf[ns].x;
-      mnpxyd[ns].y = uvslf[ns].y;
-      mnpxyd[ns].z = areteideale_( mnpxyd[ns], direction );
-//       MESSAGE("Sommet " << ns << ": " << mnpxyd[ns].x
-//        << " " << mnpxyd[ns].y << " longueur arete=" << mnpxyd[ns].z);
-
-      //carre de la longueur de l'arete
-      d = pow( uvslf[ns2-1].x - uvslf[ns1-1].x, 2) 
-        + pow( uvslf[ns2-1].y - uvslf[ns1-1].y, 2);
-      aremin = Min( aremin, d );
-      aremax = Max( aremax, d );
-
-      //le numero n de la ligne du sommet et son numero ns1 dans la ligne
-      mnslig[ns] = 1000000 * n + ns1-nudslf[n-1];
-
-      //ajout de l'arete dans la liste
-      fasoar_( ns1, ns2, moins1, moins1, n,
-              mosoar, mxsoar, n1soar, mnsoar,
-              mnarst, noar, ierr );
-      //pas de test sur ierr car pas de saturation possible a ce niveau
-
-      //chainage des aretes frontalieres en position 6 du tableau mnsoar
-      //la nouvelle arete est la suivante de l'arete definie juste avant
-      mnsoar[ mosoar * noar0 - mosoar + 5 ] = noar;
-      noar0 = noar;
-   }
-    //attention: la derniere arete de la ligne fermee enveloppe
-    //           devient en fait la premiere arete de cette ligne
-    //           dans le chainage des aretes de la frontiere!
-  }
-  if( ierr != 0 ) goto ERREUR;
-
-  aremin = sqrt( aremin );  //longueur minimale d'une arete des lignes fermees
-  aremax = sqrt( aremax );  //longueur maximale d'une arete
-
-  aretmx = Min( aretmx, aremax );  //pour homogeneiser
-  MESSAGE("nutysu=" << nutysu << "  aretmx=" << aretmx 
-       << "  arete min=" << aremin << "  arete max=" << aremax);
-
-  //chainage des aretes frontalieres : la derniere arete frontaliere
-  mnsoar[ mosoar * noar - mosoar + 5 ] = 0;
-
-  //tous les sommets et aretes frontaliers sont numerotes de 1 a nbarfr
-  //reservation du tableau des numeros des 3 aretes de chaque triangle
-  //mnartr( moartr, mxartr )
-  //En nombre: Triangles = Aretes Internes + Aretes Frontalieres - Sommets + 1-Trous
-  //          3Triangles = 2 Aretes internes + Aretes frontalieres
-  //       d'ou 3T/2 < AI + AF => T < 3T/2  - Sommets + 1-Trous
-  //nombre de triangles < 2 ( nombre de sommets - 1 + nombre de trous )
-  if( mnartr!=NULL ) delete [] mnartr;
-  mxartr = 2 * ( mxsomm + mxtrou );
-  mnartr = new Z[moartr*mxartr];
-  if( mnartr==NULL ) goto ERREUR;
-
-  //Ajout des points internes
-  ns1 = nudslf[ nblf ];
-  for (i=0; i<nbpti; i++)
-  {
-    //les 2 coordonnees du point i de sommet nbs
-    mnpxyd[ns1].x = uvpti[i].x;
-    mnpxyd[ns1].y = uvpti[i].y;
-    mnpxyd[ns1].z = areteideale_( mnpxyd[ns1], direction );
-    //le numero i du point interne
-    mnslig[ns1] = i+1;
-    ns1++;
-  }
-
-  //nombre de sommets de la frontiere et internes
-  nbarpi = ns1;
-
-  // creation de l'arbre-4 des te (tableau letree)
-  // ajout dans les te des sommets des lignes et des points internes imposes
-  // =======================================================================
-  // premiere estimation de mxtree
-  mxtree = 2 * mxsomm;
-
- NEWTREE:  //en cas de saturation de l'un des tableaux, on boucle
-  MESSAGE( "Debut triangulation avec mxsomm=" << mxsomm );
-  if( mntree != NULL ) delete [] mntree;
-  nbsomm = nbarpi;
-  mntree = new Z[motree*(1+mxtree)];
-  if( mntree==NULL ) goto ERREUR;
-
-  //initialisation du tableau letree et ajout dans letree des sommets 1 a nbsomm
-  teajte_( mxsomm, nbsomm, mnpxyd, comxmi, aretmx, mxtree, mntree, ierr );
-  comxmi[0].z=0;
-  comxmi[1].z=0;
-
-  if( ierr == 51 )
-  {
-    //saturation de letree => sa taille est augmentee et relance
-    mxtree = mxtree * 2;
-    ierr   = 0;
-    MESSAGE( "Nouvelle valeur de mxtree=" << mxtree );
-    goto NEWTREE;
-  }
-
-  deltacpu_( d );
-  tcpu += d;
-  MESSAGE( "Temps de l'ajout arbre-4 des Triangles Equilateraux=" << d << " secondes" );
-  if( ierr != 0 ) goto ERREUR;
-  //ici le tableau mnpxyd contient les sommets des te et les points frontaliers et internes
-
-  // homogeneisation de l'arbre des te a un saut de taille au plus
-  // prise en compte des tailles d'aretes souhaitees autour des sommets initiaux
-  // ===========================================================================
-  // reservation de la queue pour parcourir les te de l'arbre
-  if( mnqueu != NULL ) delete [] mnqueu;
-  mxqueu = mxtree;
-  mnqueu = new Z[mxqueu];
-  if( mnqueu==NULL) goto ERREUR;
-
-  tehote_( nutysu, nbarpi, mxsomm, nbsomm, mnpxyd,
-          comxmi, aretmx,
-          mntree, mxqueu, mnqueu,
-          ierr );
-
-  deltacpu_( d );
-  tcpu += d;
-  MESSAGE("Temps de l'adaptation et l'homogeneisation de l'arbre-4 des TE="
-       << d << " secondes");
-  if( ierr != 0 )
-  {
-    //destruction du tableau auxiliaire et de l'arbre
-    if( ierr == 51 )
-    {
-      //letree sature
-      mxtree = mxtree * 2;
-      MESSAGE( "Redemarrage avec la valeur de mxtree=" << mxtree );
-      ierr = 0;
-      goto NEWTREE;
-    }
-    else
-      goto ERREUR;
-  }
-
-  // trianguler les triangles equilateraux feuilles a partir de leurs 3 sommets
-  // et des points de la frontiere, des points internes imposes interieurs
-  // ==========================================================================
-  tetrte_( comxmi, aretmx, nbarpi, mxsomm, mnpxyd,
-          mxqueu, mnqueu, mntree, mosoar, mxsoar, n1soar, mnsoar,
-          moartr, mxartr, n1artr, mnartr, mnarst,
-          ierr );
-
-  // destruction de la queue et de l'arbre devenus inutiles
-  delete [] mnqueu;  mnqueu=NULL;
-  delete [] mntree;  mntree=NULL;
-
-  //Temps calcul
-  deltacpu_( d );
-  tcpu += d;
-  MESSAGE( "Temps de la triangulation des TE=" << d << " secondes" );
-
-  // ierr =0 si pas d'erreur
-  //      =1 si le tableau mnsoar est sature
-  //      =2 si le tableau mnartr est sature
-  //      =3 si aucun des triangles ne contient l'un des points internes
-  //      =5 si saturation de la queue de parcours de l'arbre des te
-  if( ierr != 0 ) goto ERREUR;
-
-  //qualites de la triangulation actuelle
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-              nbt, quamoy, quamin );
-
-  // boucle sur les aretes internes (non sur une ligne de la frontiere)
-  // avec echange des 2 diagonales afin de rendre la triangulation delaunay
-  // ======================================================================
-  // formation du chainage 6 des aretes internes a echanger eventuellement
-  aisoar_( mosoar, mxsoar, mnsoar, na );
-  tedela_( mnpxyd, mnarst,
-          mosoar, mxsoar, n1soar, mnsoar, na,
-          moartr, mxartr, n1artr, mnartr, n );
-
-  MESSAGE( "Nombre d'echanges des diagonales de 2 triangles=" << n );
-  deltacpu_( d );
-  tcpu += d;
-  MESSAGE("Temps de la triangulation Delaunay par echange des diagonales="
-       << d << " secondes");
-
-  //qualites de la triangulation actuelle
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-              nbt, quamoy, quamin );
-
-  // detection des aretes frontalieres initiales perdues
-  // triangulation frontale pour les restaurer
-  // ===================================================
-  mxarcf = mxsomm/5;
-  if( mn1arcf != NULL ) delete [] mn1arcf;
-  if( mnarcf  != NULL ) delete [] mnarcf;
-  if( mnarcf1 != NULL ) delete [] mnarcf1;
-  if( mnarcf2 != NULL ) delete [] mnarcf2;
-  mn1arcf = new Z[1+mxarcf];
-  if( mn1arcf == NULL ) goto ERREUR;
-  mnarcf  = new Z[3*mxarcf];
-  if( mnarcf == NULL ) goto ERREUR;
-  mnarcf1 = new Z[mxarcf];
-  if( mnarcf1 == NULL ) goto ERREUR;
-  mnarcf2 = new Z[mxarcf];
-  if( mnarcf2 == NULL ) goto ERREUR;
-
-  terefr_( nbarpi, mnpxyd,
-          mosoar, mxsoar, n1soar, mnsoar,
-          moartr, n1artr, mnartr, mnarst,
-          mxarcf, mn1arcf, mnarcf, mnarcf1, mnarcf2,
-          n, ierr );
-
-  MESSAGE( "Restauration de " << n << " aretes perdues de la frontiere" );
-  deltacpu_( d );
-  tcpu += d;
-  MESSAGE("Temps de la recuperation des aretes perdues de la frontiere="
-       << d << " secondes");
-
-  if( ierr != 0 ) goto ERREUR;
-
-  //qualites de la triangulation actuelle
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-              nbt, quamoy, quamin );
-
-  // fin de la triangulation avec respect des aretes initiales frontalieres
-
-  // suppression des triangles externes a la surface
-  // ===============================================
-  // recherche du dernier triangle utilise
-  mn = mxartr * moartr;
-  for ( ndtri0=mxartr; ndtri0<=1; ndtri0-- )
-  {
-    mn -= moartr;
-    if( mnartr[mn] != 0 ) break;
-  }
-
-  if( mntrsu != NULL ) delete [] mntrsu;
-  mntrsu = new Z[ndtri0];
-  if( mntrsu == NULL ) goto ERREUR;
-
-  if( mnlftr != NULL ) delete [] mnlftr;
-  mnlftr = new Z[nblf];
-  if( mnlftr == NULL ) goto ERREUR;
-
-  for (n=0; n<nblf; n++)  //numero de la ligne fermee de 1 a nblf
-    mnlftr[n] = n+1;
-
-  tesuex_( nblf,   mnlftr,
-          ndtri0, nbsomm, mnpxyd, mnslig,
-          mosoar, mxsoar, mnsoar,
-          moartr, mxartr, n1artr, mnartr, mnarst,
-          nbt, mntrsu, ierr );
-
-  delete [] mnlftr; mnlftr=NULL;
-  delete [] mntrsu; mntrsu=NULL;
-
-  deltacpu_( d );
-  tcpu += d;
-  MESSAGE( "Temps de la suppression des triangles externes=" << d );
-  if( ierr != 0 ) goto ERREUR;
-
-  //qualites de la triangulation actuelle
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-              nbt, quamoy, quamin );
-
-  // amelioration de la qualite de la triangulation par
-  // barycentrage des sommets internes a la triangulation
-  // suppression des aretes trop longues ou trop courtes
-  // modification de la topologie des groupes de triangles
-  // mise en delaunay de la triangulation
-  // =====================================================
-  mnarcf3 = new Z[mxarcf];
-  if( mnarcf3 == NULL ) goto ERREUR;
-
-  teamqt_( nutysu,
-          mnarst, mosoar, mxsoar, n1soar, mnsoar,
-          moartr, mxartr, n1artr, mnartr,
-          mxarcf, mnarcf2, mnarcf3,
-          mn1arcf, mnarcf, mnarcf1,
-          comxmi, nbarpi, nbsomm, mxsomm, mnpxyd, mnslig,
-          ierr );
-  if( mn1arcf != NULL ) {delete [] mn1arcf; mn1arcf=NULL;}
-  if( mnarcf  != NULL ) {delete [] mnarcf;  mnarcf =NULL;}
-  if( mnarcf1 != NULL ) {delete [] mnarcf1; mnarcf1=NULL;}
-  if( mnarcf2 != NULL ) {delete [] mnarcf2; mnarcf2=NULL;}
-  if( mnarcf3 != NULL ) {delete [] mnarcf3; mnarcf3=NULL;}
-
-  deltacpu_( d );
-  tcpu += d;
-  MESSAGE( "Temps de l'amelioration de la qualite de la triangulation=" << d );
-  if( ierr != 0 ) goto ERREUR;
-
-  //qualites de la triangulation finale
-  qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr,
-              nbt, quamoy, quamin );
-
-  // renumerotation des sommets internes: mnarst(i)=numero final du sommet
-  // ===================================
-  for (i=0; i<=nbsomm; i++)
-    mnarst[i] = 0;
-
-  for (nt=1; nt<=mxartr; nt++)
-  {
-    if( mnartr[nt*moartr-moartr] != 0 )
-    {
-      //le numero des 3 sommets du triangle nt
-      nusotr_( nt, mosoar, mnsoar, moartr, mnartr, nosotr );
-      //les 3 sommets du triangle sont actifs
-      mnarst[ nosotr[0] ] = 1;
-      mnarst[ nosotr[1] ] = 1;
-      mnarst[ nosotr[2] ] = 1;
-    }
-  }
-  nbst = 0;
-  for (i=1; i<=nbsomm; i++)
-  {
-    if( mnarst[i] >0 )
-      mnarst[i] = ++nbst;
-  }
-
-  // generation du tableau uvst de la surface triangulee
-  // ---------------------------------------------------
-  if( uvst != NULL ) delete [] uvst;
-  uvst = new R2[nbst];
-  if( uvst == NULL ) goto ERREUR;
-
-  nbst=-1;
-  for (i=0; i<nbsomm; i++ )
-  {
-    if( mnarst[i+1]>0 )
-    {
-      nbst++;
-      uvst[nbst].x = mnpxyd[i].x;
-      uvst[nbst].y = mnpxyd[i].y;
-
-      //si le sommet est un point ou appartient a une ligne
-      //ses coordonnees initiales sont restaurees
-      n = mnslig[i];
-      if( n > 0 )
-      {
-       if( n >= 1000000 )
-       {
-         //sommet d'une ligne
-         //retour aux coordonnees initiales dans uvslf
-         l = n / 1000000;
-         n = n - 1000000 * l + nudslf[l-1] - 1;
-         uvst[nbst].x = uvslf[n].x;
-         uvst[nbst].y = uvslf[n].y;
-       }
-       else
-       {
-         //point utilisateur n interne impose
-         //retour aux coordonnees initiales dans uvpti
-         uvst[nbst].x = uvpti[n-1].x;
-         uvst[nbst].y = uvpti[n-1].y;
-       }
-      }
-    }
-  }
-  nbst++;
-
-  // generation du tableau 'nsef' de la surface triangulee
-  // -----------------------------------------------------
-  // boucle sur les triangles occupes (internes et externes)
-  if( nust != NULL ) delete [] nust;
-  nust = new Z[4*nbt];
-  if( nust == NULL ) goto ERREUR;
-  nbt = 0;
-  for (i=1; i<=mxartr; i++)
-  {
-    //le triangle i de mnartr
-    if( mnartr[i*moartr-moartr] != 0 )
-    {
-      //le triangle i est interne => nosotr numero de ses 3 sommets
-      nusotr_( i, mosoar, mnsoar, moartr, mnartr,  nosotr );
-      nust[nbt++] = mnarst[ nosotr[0] ];
-      nust[nbt++] = mnarst[ nosotr[1] ];
-      nust[nbt++] = mnarst[ nosotr[2] ];
-      nust[nbt++] = 0;
-    }
-  }
-  nbt /= 4;  //le nombre final de triangles de la surface
-  MESSAGE("Nombre de sommets=" << nbst
-       << "  Nombre de triangles=" << nbt);
-
-  deltacpu_( d );
-  tcpu += d;
-  MESSAGE( "Temps total de la triangulation=" << tcpu << " secondes" );
-
-  // destruction des tableaux auxiliaires
-  // ------------------------------------
- NETTOYAGE:
-  if( mnarst != NULL ) delete [] mnarst;
-  if( mnartr != NULL ) delete [] mnartr;
-  if( mnslig != NULL ) delete [] mnslig;
-  if( mnsoar != NULL ) delete [] mnsoar;
-  if( mnpxyd != NULL ) delete [] mnpxyd;
-  if( mndalf != NULL ) delete [] mndalf;
-  if( mntree != NULL ) delete [] mntree;
-  if( mnqueu != NULL ) delete [] mnqueu;
-  if( mntrsu != NULL ) delete [] mntrsu;
-  if( mnlftr != NULL ) delete [] mnlftr;
-  if( mn1arcf != NULL ) delete [] mn1arcf;
-  if( mnarcf  != NULL ) delete [] mnarcf;
-  if( mnarcf1 != NULL ) delete [] mnarcf1;
-  if( mnarcf2 != NULL ) delete [] mnarcf2;
-  if( mnarcf3 != NULL ) delete [] mnarcf3;
-  return;
-
- ERREUR:
-  if( ierr == 51 || ierr == 52 )
-  {
-    //saturation des sommets => redepart avec 2 fois plus de sommets
-    mxsomm = 2 * mxsomm;
-    ierr   = 0;
-    goto NEWDEPART;
-  }
-  else
-  {
-    MESSAGE( "Triangulation non realisee " << ierr );
-    if( ierr == 0 ) ierr=1;
-    goto NETTOYAGE;
-  }
-}
-
-
-void qualitetrte( R3 *mnpxyd,
-                 Z & mosoar, Z & mxsoar, Z *mnsoar,
-                 Z & moartr, Z & mxartr, Z *mnartr,
-                 Z & nbtria, R & quamoy, R & quamin )
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but :    calculer la qualite moyenne et minimale de la triangulation
-// -----    actuelle definie par les tableaux mnsoar et mnartr
-// entrees:
-// --------
-// mnpxyd : tableau des coordonnees 2d des points
-//          par point : x  y  distance_souhaitee
-// mosoar : nombre maximal d'entiers par arete et
-//          indice dans mnsoar de l'arete suivante dans le hachage
-// mxsoar : nombre maximal d'aretes stockables dans le tableau mnsoar
-//          attention: mxsoar>3*mxsomm obligatoire!
-// mnsoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-//          chainage des aretes frontalieres, chainage du hachage des aretes
-//          hachage des aretes = mnsoar(1)+mnsoar(2)*2
-//          avec mxsoar>=3*mxsomm
-//          une arete i de mnsoar est vide <=> mnsoar(1,i)=0 et
-//          mnsoar(2,arete vide)=l'arete vide qui precede
-//          mnsoar(3,arete vide)=l'arete vide qui suit
-// moartr : nombre maximal d'entiers par arete du tableau mnartr
-// mxartr : nombre maximal de triangles declarables
-// mnartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-//          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-// sorties:
-// --------
-// nbtria : nombre de triangles internes au domaine
-// quamoy : qualite moyenne  des triangles actuels
-// quamin : qualite minimale des triangles actuels
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-{
-  R  d, aire, qualite;
-  Z  nosotr[3], mn, nbtrianeg, nt;
-
-  aire   = 0;
-  quamoy = 0;
-  quamin = 2.0;
-  nbtria = 0;
-  nbtrianeg = 0;
-
-  mn = -moartr;
-  for ( nt=1; nt<=mxartr; nt++ )
-  {
-    mn += moartr;
-    if( mnartr[mn]!=0 )
-    {
-      //un triangle occupe de plus
-      nbtria++;
-
-      //le numero des 3 sommets du triangle nt
-      nusotr_( nt, mosoar, mnsoar, moartr, mnartr,  nosotr );
-
-      //la qualite du triangle ns1 ns2 ns3
-      qutr2d_( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1],
-              qualite );
-
-      //la qualite moyenne
-      quamoy += qualite;
-
-      //la qualite minimale
-      quamin = Min( quamin, qualite );
-
-      //aire signee du triangle nt
-      d = surtd2_( mnpxyd[nosotr[0]-1], mnpxyd[nosotr[1]-1], mnpxyd[nosotr[2]-1] );
-      if( d<0 )
-      {
-       //un triangle d'aire negative de plus
-       nbtrianeg++;
-       MESSAGE("ATTENTION: le triangle " << nt << " de sommets:"
-            << nosotr[0] << " " << nosotr[1] << " " << nosotr[2]
-            << " a une aire " << d <<"<=0");
-      }
-
-      //aire des triangles actuels
-      aire += Abs(d);
-    }
-  }
-
-  //les affichages
-  quamoy /= nbtria;
-  MESSAGE("Qualite moyenne=" << quamoy
-       << "  Qualite minimale=" << quamin
-       << " des " << nbtria << " triangles de surface totale="
-       << aire);
-
-  if( nbtrianeg>0 )
-    MESSAGE( "ATTENTION: nombre de triangles d'aire negative=" << nbtrianeg );
-  return;
-}
diff --git a/src/MEFISTO2/aptrte.h b/src/MEFISTO2/aptrte.h
deleted file mode 100755 (executable)
index 5310877..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-//  SMESH MEFISTO2 : algorithm for meshing
-//
-//  Copyright (C) 2003  Laboratoire J.-L. Lions UPMC Paris
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.ann.jussieu.fr/~perronne or email Perronnet@ann.jussieu.fr
-//
-//
-//
-//  File   : aptrte.h
-//  Author: Alain PERRONNET
-//  Module : SMESH
-
-#ifndef aptrte__h
-#define aptrte__h
-
-#include <limits.h>   // limites min max int long real ...
-#include <unistd.h>   // gethostname, ...
-#include <stdio.h>
-#include <iostream.h> // pour cout cin ...
-#include <iomanip.h>  // pour le format des io setw, stx, setfill, ...
-#include <string.h>   // pour les fonctions sur les chaines de caracteres
-#include <ctype.h>
-#include <stdlib.h>
-#include <math.h>     // pour les fonctions mathematiques
-#include <time.h>
-
-#include <sys/types.h>
-#include <sys/time.h>
-
-void qualitetrte( R3 *mnpxyd,
-                 Z & mosoar, Z & mxsoar, Z *mnsoar,
-                 Z & moartr, Z & mxartr, Z *mnartr,
-                 Z & nbtria, R & quamoy, R & quamin );
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but :    calculer la qualite moyenne et minimale de la triangulation
-// -----    actuelle definie par les tableaux nosoar et noartr
-// entrees:
-// --------
-// mnpxyd : tableau des coordonnees 2d des points
-//          par point : x  y  distance_souhaitee
-// mosoar : nombre maximal d'entiers par arete et
-//          indice dans nosoar de l'arete suivante dans le hachage
-// mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-//          attention: mxsoar>3*mxsomm obligatoire!
-// nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-//          chainage des aretes frontalieres, chainage du hachage des aretes
-//          hachage des aretes = nosoar(1)+nosoar(2)*2
-//          avec mxsoar>=3*mxsomm
-//          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-//          nosoar(2,arete vide)=l'arete vide qui precede
-//          nosoar(3,arete vide)=l'arete vide qui suit
-// moartr : nombre maximal d'entiers par arete du tableau noartr
-// mxartr : nombre maximal de triangles declarables
-// noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-//          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-// sorties:
-// --------
-// nbtria : nombre de triangles internes au domaine
-// quamoy : qualite moyenne  des triangles actuels
-// quamin : qualite minimale des triangles actuels
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-
-void  aptrte( Z nutysu, R aretmx,
-             Z nblf,   Z *nudslf, R2 *uvslf,
-             Z nbpti,  R2 *uvpti,
-             Z & nbst, R2 * & uvst, Z & nbt, Z * & nust,
-             Z & ierr );
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but : appel de la triangulation par un arbre-4 recouvrant
-// ----- de triangles equilateraux
-//       le contour du domaine plan est defini par des lignes fermees
-//       la premiere ligne etant l'enveloppe de toutes les autres
-//       la fonction areteideale_(s,d) donne la taille d'arete
-//       au point s dans la direction d (direction inactive pour l'instant)
-//       des lors toute arete issue d'un sommet s devrait avoir une longueur
-//       comprise entre 0.65 areteideale_(s,d) et 1.3 areteideale_(s,d)
-//
-//Attention:
-//  Les tableaux uvslf et uvpti sont supposes ne pas avoir de sommets identiques!
-//  De meme, un sommet d'une ligne fermee ne peut appartenir a une autre ligne fermee
-//
-// entrees:
-// --------
-// nutysu : numero de traitement de areteideale_() selon le type de surface
-//          0 pas d'emploi de la fonction areteideale_() et aretmx est active
-//          1 il existe une fonction areteideale_(s,d)
-//            dont seules les 2 premieres composantes de uv sont actives
-//          ... autres options a definir ...
-// aretmx : longueur maximale des aretes de la future triangulation
-// nblf   : nombre de lignes fermees de la surface
-// nudslf : numero du dernier sommet de chacune des nblf lignes fermees
-//          nudslf(0)=0 pour permettre la difference sans test
-//          Attention le dernier sommet de chaque ligne est raccorde au premier
-//          tous les sommets et les points internes ont des coordonnees
-//          UV differentes <=> Pas de point double!
-// uvslf  : uv des nudslf(nblf) sommets des lignes fermees
-// nbpti  : nombre de points internes futurs sommets de la triangulation
-// uvpti  : uv des points internes futurs sommets de la triangulation
-//
-// sorties:
-// --------
-// nbst   : nombre de sommets de la triangulation finale
-// uvst   : coordonnees uv des nbst sommets de la triangulation
-// nbt    : nombre de triangles de la triangulation finale
-// nust   : 3 numeros dans uvst des sommets des nbt triangles
-// ierr   : 0 si pas d'erreur
-//        > 0 sinon
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// auteur : Alain Perronnet  Analyse Numerique Paris UPMC   decembre 2001
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-extern "C" {  void tempscpu_( double & tempsec );  }
-//Retourne le temps CPU utilise en secondes
-
-extern "C" { void deltacpu_( R & dtcpu ); }
-//Retourne le temps CPU utilise en secondes depuis le precedent appel
-
-//initialiser le tableau mnsoar pour le hachage des aretes
-extern "C" {void insoar_( Z & mxsomm, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar );}
-
-//mettre a zero les nb entiers de tab
-extern "C" {void azeroi_( Z & nb, Z * tab );}
-
-extern "C" {void fasoar_( Z & ns1, Z & ns2, Z & nt1, Z & nt2, Z & nolign,
-                         Z & mosoar,  Z & mxsoar,  Z & n1soar,  Z * mnsoar,  Z * mnarst,
-                         Z & noar, Z & ierr );}
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// but :    former l'arete de sommet ns1-ns2 dans le hachage du tableau
-// -----    nosoar des aretes de la triangulation
-// entrees:
-// --------
-// ns1 ns2: numero pxyd des 2 sommets de l'arete
-// nt1    : numero du triangle auquel appartient l'arete
-//          nt1=-1 si numero inconnu
-// nt2    : numero de l'eventuel second triangle de l'arete si connu
-//          nt2=-1 si numero inconnu
-// nolign : numero de la ligne fermee de l'arete
-//          =0 si l'arete n'est une arete de ligne
-//          ce numero est ajoute seulement si l'arete est creee
-// mosoar : nombre maximal d'entiers par arete du tableau nosoar
-// mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-// modifies:
-// ---------
-// n1soar : numero de la premiere arete vide dans le tableau nosoar
-//          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-//          chainage des aretes vides amont et aval
-//          l'arete vide qui precede=nosoar(4,i)
-//          l'arete vide qui suit   =nosoar(5,i)
-// nosoar : numero des 2 sommets, no ligne, 2 triangles de l'arete,
-//          chainage momentan'e d'aretes, chainage du hachage des aretes
-//          hachage des aretes = min( nosoar(1), nosoar(2) )
-// noarst : noarst(np) numero d'une arete du sommet np
-
-// ierr   : si < 0  en entree pas d'affichage en cas d'erreur du type
-//         "arete appartenant a plus de 2 triangles et a creer!"
-//          si >=0  en entree       affichage de ce type d'erreur
-// sorties:
-// --------
-// noar   : >0 numero de l'arete retrouvee ou ajoutee
-// ierr   : =0 si pas d'erreur
-//          =1 si le tableau nosoar est sature
-//          =2 si arete a creer et appartenant a 2 triangles distincts
-//             des triangles nt1 et nt2
-//          =3 si arete appartenant a 2 triangles distincts
-//             differents des triangles nt1 et nt2
-//          =4 si arete appartenant a 2 triangles distincts
-//             dont le second n'est pas le triangle nt2
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-//initialisation du tableau letree et ajout dans letree des sommets 1 a nbsomm
-extern "C" {void teajte_( Z & mxsomm, Z &  nbsomm, R3 * mnpxyd,  R3 * comxmi,
-                         R & aretmx,  Z & mxtree, Z * letree,
-                         Z & ierr );}
-
-
-extern "C" {void tehote_( Z & nutysu, Z & nbarpi, Z &  mxsomm, Z &  nbsomm, R3 * mnpxyd,
-                         R3 * comxmi, R & aretmx,
-                         Z * letree, Z & mxqueu, Z * mnqueu,
-                         Z & ierr );}
-// homogeneisation de l'arbre des te a un saut de taille au plus
-// prise en compte des tailles d'aretes souhaitees autour des sommets initiaux
-
-extern "C" {void tetrte_(  R3 * comxmi, R & aretmx, Z & nbarpi, Z & mxsomm, R3 * mnpxyd,
-                          Z & mxqueu,  Z * mnqueu,  Z * mntree,
-                          Z & mosoar,  Z & mxsoar,  Z & n1soar, Z * mnsoar,
-                          Z & moartr, Z &  mxartr,  Z & n1artr,  Z * mnartr,  Z * mnarst,
-                          Z & ierr );}
-// trianguler les triangles equilateraux feuilles a partir de leurs 3 sommets
-// et des points de la frontiere, des points internes imposes interieurs
-
-extern "C" {void aisoar_( Z & mosoar, Z & mxsoar, Z * mnsoar, Z & na );}
-  // formation du chainage 6 des aretes internes a echanger eventuellement
-
-extern "C" {void tedela_( R3 * mnpxyd, Z * mnarst,
-                         Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar, Z & na,
-                         Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z & n );}
-  // boucle sur les aretes internes (non sur une ligne de la frontiere)
-  // avec echange des 2 diagonales afin de rendre la triangulation delaunay
-extern "C" {void terefr_( Z & nbarpi, R3 * mnpxyd,
-                         Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar,
-                         Z & moartr, Z & n1artr, Z * mnartr, Z * mnarst,
-                         Z & mxarcf, Z * mnarc1, Z * mnarc2,
-                         Z * mnarc3, Z * mnarc4,
-                         Z & n, Z & ierr );}
-// detection des aretes frontalieres initiales perdues
-// triangulation frontale pour les restaurer
-
-extern "C" {void tesuex_( Z & nblf, Z * nulftr,
-                         Z & ndtri0, Z & nbsomm, R3 * mnpxyd, Z * mnslig,
-                         Z & mosoar, Z & mxsoar, Z * mnsoar,
-                         Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr, Z * mnarst,
-                         Z & nbtria, Z * mntrsu, Z & ierr );}
-// suppression des triangles externes a la surface
-
-extern "C" {void teamqt_( Z & nutysu,
-                         Z * mnarst, Z & mosoar, Z & mxsoar, Z & n1soar, Z * mnsoar,
-                         Z & moartr, Z & mxartr, Z & n1artr, Z * mnartr,
-                         Z & mxarcf, Z * mntrcf, Z * mnstbo,
-                         Z * n1arcf, Z * mnarcf, Z * mnarc1,
-                         R3 * comxmi, Z & nbarpi, Z & nbsomm, Z & mxsomm,
-                         R3 * mnpxyd, Z * mnslig,
-                         Z & ierr );}
-// amelioration de la qualite de la triangulation par
-// barycentrage des sommets internes a la triangulation
-// suppression des aretes trop longues ou trop courtes
-// modification de la topologie des groupes de triangles
-// mise en delaunay de la triangulation
-extern "C" {void nusotr_( Z & nt, Z & mosoar, Z * mnsoar, Z & moartr, Z * mnartr,
-                         Z * nosotr );}
-//retrouver les numero des 3 sommets du triangle nt
-
-extern "C" {void qutr2d_( R3 & p1, R3 & p2, R3 & p3, R & qualite );}
-//calculer la qualite d'un triangle de R2 de sommets p1, p2, p3
-
-extern "C" { R surtd2_( R3 & p1, R3 & p2, R3 & p3 ); }
-//calcul de la surface d'un triangle defini par 3 points de r**2
-
-#endif
diff --git a/src/MEFISTO2/areteideale.f b/src/MEFISTO2/areteideale.f
deleted file mode 100755 (executable)
index f0c8744..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-c  MEFISTO : library to compute 2D triangulation from segmented boundaries
-c
-c  Copyright (C) 2003  Laboratoire J.-L. Lions UPMC Paris
-c
-c  This library is free software; you can redistribute it and/or
-c  modify it under the terms of the GNU Lesser General Public
-c  License as published by the Free Software Foundation; either
-c  version 2.1 of the License.
-c
-c  This library is distributed in the hope that it will be useful,
-c  but WITHOUT ANY WARRANTY; without even the implied warranty of
-c  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-c  Lesser General Public License for more details.
-c
-c  You should have received a copy of the GNU Lesser General Public
-c  License along with this library; if not, write to the Free Software
-c  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-c
-c  See http://www.ann.jussieu.fr/~perronne or email Perronnet@ann.jussieu.fr
-c
-c
-c  File   : areteideale.f
-c  Module : SMESH
-c  Author: Alain PERRONNET
-
-      double precision function areteideale( xyz, direction )
-      double precision xyz(3), direction(3)
-      areteideale = 10
-      return
-      end
diff --git a/src/MEFISTO2/trte.f b/src/MEFISTO2/trte.f
deleted file mode 100755 (executable)
index 8e0388b..0000000
+++ /dev/null
@@ -1,8332 +0,0 @@
-c  MEFISTO : library to compute 2D triangulation from segmented boundaries
-c
-c  Copyright (C) 2003  Laboratoire J.-L. Lions UPMC Paris
-c
-c  This library is free software; you can redistribute it and/or
-c  modify it under the terms of the GNU Lesser General Public
-c  License as published by the Free Software Foundation; either
-c  version 2.1 of the License.
-c
-c  This library is distributed in the hope that it will be useful,
-c  but WITHOUT ANY WARRANTY; without even the implied warranty of
-c  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-c  Lesser General Public License for more details.
-c
-c  You should have received a copy of the GNU Lesser General Public
-c  License along with this library; if not, write to the Free Software
-c  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-c
-c  See http://www.ann.jussieu.fr/~perronne or email Perronnet@ann.jussieu.fr
-c
-c
-c  File   : trte.f
-c  Module : SMESH
-c  Author: Alain PERRONNET
-
-      subroutine qutr2d( p1, p2, p3, qualite )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :     calculer la qualite d'un triangle de r**2
-c -----     2 coordonnees des 3 sommets en double precision
-c
-c entrees :
-c ---------
-c p1,p2,p3 : les 3 coordonnees des 3 sommets du triangle
-c            sens direct pour une surface et qualite >0
-c sorties :
-c ---------
-c qualite: valeur de la qualite du triangle entre 0 et 1 (equilateral)
-c          1 etant la qualite optimale
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique upmc paris     janvier 1995
-c2345x7..............................................................012
-      parameter  ( d2uxr3 = 3.4641016151377544d0 )
-c                  d2uxr3 = 2 * sqrt(3)
-      double precision  p1(2), p2(2), p3(2), qualite, a, b, c, p
-c
-c     la longueur des 3 cotes
-      a = sqrt( (p2(1)-p1(1))**2 + (p2(2)-p1(2))**2 )
-      b = sqrt( (p3(1)-p2(1))**2 + (p3(2)-p2(2))**2 )
-      c = sqrt( (p1(1)-p3(1))**2 + (p1(2)-p3(2))**2 )
-c
-c     demi perimetre
-      p = (a+b+c) * 0.5d0
-c
-      if ( (a*b*c) .ne. 0d0 ) then
-c        critere : 2 racine(3) * rayon_inscrit / plus longue arete
-         qualite = d2uxr3 * sqrt( abs( (p-a) / p * (p-b) * (p-c) ) )
-     %          / max(a,b,c)
-      else
-         qualite = 0d0
-      endif
-c
-c
-c     autres criteres possibles:
-c     critere : 2 * rayon_inscrit / rayon_circonscrit
-c     qualite = 8d0 * (p-a) * (p-b) * (p-c) / (a * b * c)
-c
-c     critere : 3*sqrt(3.) * ray_inscrit / demi perimetre
-c     qualite = 3*sqrt(3.) * sqrt ((p-a)*(p-b)*(p-c) / p**3)
-c
-c     critere : 2*sqrt(3.) * ray_inscrit / max( des aretes )
-c     qualite = 2*sqrt(3.) * sqrt( (p-a)*(p-b)*(p-c) / p ) / max(a,b,c)
-      end
-
-
-      double precision function surtd2( p1 , p2 , p3 )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but : calcul de la surface d'un triangle defini par 3 points de R**2
-c -----
-c parametres d entree :
-c ---------------------
-c p1 p2 p3 : les 3 fois 2 coordonnees des sommets du triangle
-c
-c parametre resultat :
-c --------------------
-c surtd2 : surface du triangle
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique upmc paris     fevrier 1992
-c2345x7..............................................................012
-      double precision  p1(2), p2(2), p3(2)
-c
-c     la surface du triangle
-      surtd2 = ( ( p2(1)-p1(1) ) * ( p3(2)-p1(2) )
-     %         - ( p2(2)-p1(2) ) * ( p3(1)-p1(1) ) ) * 0.5d0
-      end
-
-      integer function nopre3( i )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   numero precedent i dans le sens circulaire  1 2 3 1 ...
-c -----
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      if( i .eq. 1 ) then
-         nopre3 = 3
-      else
-         nopre3 = i - 1
-      endif
-      end
-
-      integer function nosui3( i )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   numero suivant i dans le sens circulaire  1 2 3 1 ...
-c -----
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      if( i .eq. 3 ) then
-         nosui3 = 1
-      else
-         nosui3 = i + 1
-      endif
-      end
-
-      subroutine provec( v1 , v2 , v3 )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    v3 vecteur = produit vectoriel de 2 vecteurs de r ** 3
-c -----
-c entrees:
-c --------
-c v1, v2 : les 2 vecteurs de 3 composantes
-c
-c sortie :
-c --------
-c v3     : vecteur = v1  produit vectoriel v2
-cc++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : perronnet alain upmc analyse numerique paris        mars 1987
-c2345x7..............................................................012
-      double precision    v1(3), v2(3), v3(3)
-c
-      v3( 1 ) = v1( 2 ) * v2( 3 ) - v1( 3 ) * v2( 2 )
-      v3( 2 ) = v1( 3 ) * v2( 1 ) - v1( 1 ) * v2( 3 )
-      v3( 3 ) = v1( 1 ) * v2( 2 ) - v1( 2 ) * v2( 1 )
-c
-      return
-      end
-
-      subroutine norme1( n, v, ierr )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   normalisation euclidienne a 1 d un vecteur v de n composantes
-c -----
-c entrees :
-c ---------
-c n       : nombre de composantes du vecteur
-c
-c modifie :
-c ---------
-c v       : le vecteur a normaliser a 1
-c
-c sortie  :
-c ---------
-c ierr    : 1 si la norme de v est egale a 0
-c           0 si pas d'erreur
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique paris             mars 1987
-c ......................................................................
-      double precision  v( n ), s, sqrt
-c
-      s = 0.0d0
-      do 10 i=1,n
-         s = s + v( i ) * v( i )
-   10 continue
-c
-c     test de nullite de la norme du vecteur
-c     --------------------------------------
-      if( s .le. 0.0d0 ) then
-c        norme nulle du vecteur non normalisable a 1
-         ierr = 1
-         return
-      endif
-c
-      s = 1.0d0 / sqrt( s )
-      do 20 i=1,n
-         v( i ) = v ( i ) * s
-   20 continue
-c
-      ierr = 0
-      end
-
-
-      subroutine insoar( mxsomm, mosoar, mxsoar, n1soar, nosoar )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    initialiser le tableau nosoar pour le hachage des aretes
-c -----
-c
-c entrees:
-c --------
-c mxsomm : plus grand numero de sommet d'une arete au cours du calcul
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          avec mxsoar>=3*mxsomm
-c
-c sorties:
-c --------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c          chainage des aretes vides amont et aval
-c          l'arete vide qui precede=nosoar(4,i)
-c          l'arete vide qui suit   =nosoar(5,i)
-c nosoar : numero des 2 sommets, no ligne, 2 triangles de l'arete,
-c          chainage momentan'e d'aretes, chainage du hachage des aretes
-c          hachage des aretes = min( nosoar(1), nosoar(2) )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      integer   nosoar(mosoar,mxsoar)
-c
-c     initialisation des aretes 1 a mxsomm
-      do 10 i=1,mxsomm
-c
-c        sommet 1 = 0 <=> temoin d'arete vide pour le hachage
-         nosoar( 1, i ) = 0
-c
-c        arete sur aucune ligne
-         nosoar( 3, i ) = 0
-c
-c        la position de l'arete interne ou frontaliere est inconnue
-         nosoar( 6, i ) = -2
-c
-c        fin de chainage du hachage pas d'arete suivante
-         nosoar( mosoar, i ) = 0
-c
- 10   continue
-c
-c     la premiere arete vide chainee est la mxsomm+1 du tableau
-c     car ces aretes ne sont pas atteignables par le hachage direct
-      n1soar = mxsomm + 1
-c
-c     initialisation des aretes vides et des chainages
-      do 20 i = n1soar, mxsoar
-c
-c        sommet 1 = 0 <=> temoin d'arete vide pour le hachage
-         nosoar( 1, i ) = 0
-c
-c        arete sur aucune ligne
-         nosoar( 3, i ) = 0
-c
-c        chainage sur l'arete vide qui precede
-c        (si arete occupee cela deviendra le no du triangle 1 de l'arete)
-         nosoar( 4, i ) = i-1
-c
-c        chainage sur l'arete vide qui suit
-c        (si arete occupee cela deviendra le no du triangle 2 de l'arete)
-         nosoar( 5, i ) = i+1
-c
-c        chainages des aretes frontalieres ou internes ou ...
-         nosoar( 6, i ) = -2
-c
-c        fin de chainage du hachage
-         nosoar( mosoar, i ) = 0
-c
- 20   continue
-c
-c     la premiere arete vide n'a pas de precedent
-      nosoar( 4, n1soar ) = 0
-c
-c     la derniere arete vide est mxsoar sans arete vide suivante
-      nosoar( 5, mxsoar ) = 0
-      end
-
-
-      subroutine azeroi ( l , ntab )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but : initialisation a zero d un tableau ntab de l variables entieres
-c -----
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique upmc paris septembre 1988
-c23456---------------------------------------------------------------012
-      integer ntab(l)
-      do 1 i = 1 , l
-         ntab( i ) = 0
-    1 continue
-      end
-
-
-      subroutine fasoar( ns1,    ns2,    nt1,    nt2,    nolign,
-     %                   mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                   noar,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former l'arete de sommet ns1-ns2 dans le hachage du tableau
-c -----    nosoar des aretes de la triangulation
-c
-c entrees:
-c --------
-c ns1 ns2: numero pxyd des 2 sommets de l'arete
-c nt1    : numero du triangle auquel appartient l'arete
-c          nt1=-1 si numero inconnu
-c nt2    : numero de l'eventuel second triangle de l'arete si connu
-c          nt2=-1 si numero inconnu
-c nolign : numero de la ligne de l'arete dans ladefi(wulftr-1+nolign)
-c          =0 si l'arete n'est une arete de ligne
-c          ce numero est ajoute seulement si l'arete est creee
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c          chainage des aretes vides amont et aval
-c          l'arete vide qui precede=nosoar(4,i)
-c          l'arete vide qui suit   =nosoar(5,i)
-c nosoar : numero des 2 sommets, no ligne, 2 triangles de l'arete,
-c          chainage momentan'e d'aretes, chainage du hachage des aretes
-c          hachage des aretes = min( nosoar(1), nosoar(2) )
-c noarst : noarst(np) numero d'une arete du sommet np
-c
-c ierr   : si < 0  en entree pas d'affichage en cas d'erreur du type
-c         "arete appartenant a plus de 2 triangles et a creer!"
-c          si >=0  en entree       affichage de ce type d'erreur
-c
-c sorties:
-c --------
-c noar   : >0 numero de l'arete retrouvee ou ajoutee
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si arete a creer et appartenant a 2 triangles distincts
-c             des triangles nt1 et nt2
-c          =3 si arete appartenant a 2 triangles distincts
-c             differents des triangles nt1 et nt2
-c          =4 si arete appartenant a 2 triangles distincts
-c             dont le second n'est pas le triangle nt2
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,mxsoar), noarst(*)
-      integer           nu2sar(2)
-c
-c     ajout eventuel de l'arete s1 s2 dans nosoar
-      nu2sar(1) = ns1
-      nu2sar(2) = ns2
-c
-c     hachage de l'arete de sommets nu2sar
-      call hasoar( mosoar, mxsoar, n1soar, nosoar, nu2sar, noar )
-c     en sortie: noar>0 => no arete retrouvee
-c                    <0 => no arete ajoutee
-c                    =0 => saturation du tableau nosoar
-c
-      if( noar .eq. 0 ) then
-c
-c        saturation du tableau nosoar
-         write(imprim,*) 'fasoar: tableau nosoar sature'
-         ierr = 1
-         return
-c
-      else if( noar .lt. 0 ) then
-c
-c        l'arete a ete ajoutee. initialisation des autres informations
-         noar = -noar
-c        le numero de la ligne de l'arete
-         nosoar(3,noar) = nolign
-c        le triangle 1 de l'arete => le triangle nt1
-         nosoar(4,noar) = nt1
-c        le triangle 2 de l'arete => le triangle nt2
-         nosoar(5,noar) = nt2
-c
-c        le sommet appartient a l'arete noar
-         noarst( nu2sar(1) ) = noar
-         noarst( nu2sar(2) ) = noar
-c
-      else
-c
-c        l'arete a ete retrouvee.
-c        si elle appartient a 2 triangles differents de nt1 et nt2
-c        alors il y a une erreur
-         if( nosoar(4,noar) .gt. 0 .and.
-     %       nosoar(5,noar) .gt. 0 ) then
-             if( nosoar(4,noar) .ne. nt1 .and.
-     %           nosoar(4,noar) .ne. nt2 .or.
-     %           nosoar(5,noar) .ne. nt1 .and.
-     %           nosoar(5,noar) .ne. nt2 ) then
-c                arete appartenant a plus de 2 triangles => erreur
-                 if( ierr .ge. 0 ) then
-                    write(imprim,*) 'erreur fasoar: arete ',noar,
-     %              ' dans 2 triangles et a creer!'
-                 endif
-                 ierr = 2
-                 return
-             endif
-         endif
-c
-c        mise a jour du numero des triangles de l'arete noar
-c        le triangle 2 de l'arete => le triangle nt1
-         if( nosoar(4,noar) .lt. 0 ) then
-c            pas de triangle connu pour cette arete
-             n = 4
-         else
-c            deja un triangle connu. ce nouveau est le second
-             if( nosoar(5,noar) .gt. 0  .and.  nt1 .gt. 0 .and.
-     %          nosoar(5,noar) .ne. nt1 ) then
-c               arete appartenant a plus de 2 triangles => erreur
-                write(imprim,*) 'erreur fasoar: arete ',noar,
-     %          ' dans plus de 2 triangles'
-                ierr = 3
-                return
-             endif
-             n = 5
-         endif
-         nosoar(n,noar) = nt1
-c
-c        cas de l'arete frontaliere retrouvee comme diagonale d'un quadrangle
-         if( nt2 .gt. 0 ) then
-c           l'arete appartient a 2 triangles
-            if( nosoar(5,noar) .gt. 0  .and.
-     %          nosoar(5,noar) .ne. nt2 ) then
-c               arete appartenant a plus de 2 triangles => erreur
-                write(imprim,*) 'erreur fasoar: arete ',noar,
-     %         ' dans plus de 2 triangles'
-                ierr = 4
-                return
-            endif
-            nosoar(5,noar) = nt2
-         endif
-c
-      endif
-c
-c     pas d'erreur
-      ierr = 0
-      end
-
-      subroutine fq1inv( x, y, s, xc, yc, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   calcul des 2 coordonnees (xc,yc) dans le carre (0,1)
-c -----   image par f:carre unite-->quadrangle appartenant a q1**2
-c         par une resolution directe due a nicolas thenault
-c
-c entrees:
-c --------
-c x,y   : coordonnees du point image dans le quadrangle de sommets s
-c s     : les 2 coordonnees des 4 sommets du quadrangle
-c
-c sorties:
-c --------
-c xc,yc : coordonnees dans le carre dont l'image par f vaut (x,y)
-c ierr  : 0 si calcul sans erreur, 1 si quadrangle degenere
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteurs: thenault tulenew  analyse numerique paris        janvier 1998
-c modifs : perronnet alain   analyse numerique paris        janvier 1998
-c234567..............................................................012
-      real             s(1:2,1:4), dist(2)
-      double precision a,b,c,d,alpha,beta,gamma,delta,x0,y0,t(2),u,v,w
-c
-      a = s(1,1)
-      b = s(1,2) - s(1,1)
-      c = s(1,4) - s(1,1)
-      d = s(1,1) - s(1,2) + s(1,3) - s(1,4)
-c
-      alpha = s(2,1)
-      beta  = s(2,2) - s(2,1)
-      gamma = s(2,4) - s(2,1)
-      delta = s(2,1) - s(2,2) + s(2,3) - s(2,4)
-c
-      u = beta  * c - b * gamma
-      if( u .eq. 0 ) then
-c        quadrangle degenere
-         ierr = 1
-         return
-      endif
-      v = delta * c - d * gamma
-      w = b * delta - beta * d
-c
-      x0 = c * (y-alpha) - gamma * (x-a)
-      y0 = b * (y-alpha) - beta  * (x-a)
-c
-      a = v  * w
-      b = u  * u - w * x0 - v * y0
-      c = x0 * y0
-c
-      if( a .ne. 0 ) then
-c
-         delta = sqrt( b*b-4*a*c )
-         if( b .ge. 0.0 ) then
-            t(2) = -b - delta
-         else
-            t(2) = -b + delta
-         endif
-c        la racine de plus grande valeur absolue
-c       (elle donne le plus souvent le point exterieur au carre unite
-c        donc a tester en second pour reduire les calculs)
-         t(2) = t(2) / ( 2 * a )
-c        calcul de la seconde racine a partir de la somme => plus stable
-         t(1) = - b/a - t(2)
-c
-         do 10 i=1,2
-c
-c           la solution i donne t elle un point interne au carre unite?
-            xc = ( x0 - v * t(i) ) / u
-            yc = ( w * t(i) - y0 ) / u
-            if( 0.0 .le. xc .and. xc .le. 1.0 ) then
-               if( 0.0 .le. yc .and. yc .le. 1.0 ) goto 9000
-            endif
-c
-c           le point (xc,yc) n'est pas dans le carre unite
-c           cela peut etre du aux erreurs d'arrondi
-c           => choix par le minimum de la distance aux bords du carre
-            dist(i) = max( 0.0, -xc, xc-1.0, -yc, yc-1.0 )
-c
- 10      continue
-c
-         if( dist(1) .gt. dist(2) ) then
-c           f(xc,yc) pour la racine 2 est plus proche de x,y
-c           xc yc sont deja calcules
-            goto 9000
-         endif
-c
-      else if ( b .ne. 0 ) then
-         t(1) = - c / b
-      else
-         t(1) = 0
-      endif
-c
-c     les 2 coordonnees du point dans le carre unite
-      xc = ( x0 - v * t(1) ) / u
-      yc = ( w * t(1) - y0 ) / u
-c
- 9000 ierr = 0
-      return
-      end
-
-
-      subroutine ptdatr( point, pxyd, nosotr, nsigne )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    le point est il dans le triangle de sommets nosotr
-c -----
-c
-c entrees:
-c --------
-c point  : les 2 coordonnees du point
-c pxyd   : les 2 coordonnees et distance souhaitee des points du maillage
-c nosotr : le numero des 3 sommets du triangle
-c
-c sorties:
-c --------
-c nsigne : >0 si le point est dans le triangle ou sur une des 3 aretes
-c          =0 si le triangle est degenere ou indirect ou ne contient pas le poin
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      integer           nosotr(3)
-      double precision  point(2), pxyd(3,*)
-      double precision  xp,yp, x1,x2,x3, y1,y2,y3, d,dd, cb1,cb2,cb3
-c
-      xp = point( 1 )
-      yp = point( 2 )
-c
-      n1 = nosotr( 1 )
-      x1 = pxyd( 1 , n1 )
-      y1 = pxyd( 2 , n1 )
-c
-      n2 = nosotr( 2 )
-      x2 = pxyd( 1 , n2 )
-      y2 = pxyd( 2 , n2 )
-c
-      n3 = nosotr( 3 )
-      x3 = pxyd( 1 , n3 )
-      y3 = pxyd( 2 , n3 )
-c
-c     2 fois la surface du triangle = determinant de la matrice
-c     de calcul des coordonnees barycentriques du point p
-      d  = ( x2 - x1 ) * ( y3 - y1 ) - ( x3 - x1 ) * ( y2 - y1 )
-c
-      if( d .gt. 0 ) then
-c
-c        triangle non degenere
-c        =====================
-c        calcul des 3 coordonnees barycentriques du
-c        point xp yp dans le triangle
-         cb1 = ( ( x2-xp ) * ( y3-yp ) - ( x3-xp ) * ( y2-yp ) ) / d
-         cb2 = ( ( x3-xp ) * ( y1-yp ) - ( x1-xp ) * ( y3-yp ) ) / d
-         cb3 = 1d0 - cb1 -cb2
-ccc         cb3 = ( ( x1-xp ) * ( y2-yp ) - ( x2-xp ) * ( y1-yp ) ) / d
-c
-ccc         if( cb1 .ge. -0.00005d0 .and. cb1 .le. 1.00005d0 .and.
-         if( cb1 .ge. 0d0 .and. cb1 .le. 1d0 .and.
-     %       cb2 .ge. 0d0 .and. cb2 .le. 1d0 .and.
-     %       cb3 .ge. 0d0 .and. cb3 .le. 1d0 ) then
-c
-c           le triangle nosotr contient le point
-            nsigne = 1
-         else
-            nsigne = 0
-         endif
-c
-      else
-c
-c        triangle degenere
-c        =================
-c        le point est il du meme cote que le sommet oppose de chaque arete?
-         nsigne = 0
-         do 10 i=1,3
-c           le sinus de l'angle p1 p2-p1 point
-            x1  = pxyd(1,n1)
-            y1  = pxyd(2,n1)
-            d   = ( pxyd(1,n2) - x1 ) * ( point(2) - y1 )
-     %          - ( pxyd(2,n2) - y1 ) * ( point(1) - x1 )
-            dd  = ( pxyd(1,n2) - x1 ) * ( pxyd(2,n3) - y1 )
-     %          - ( pxyd(2,n2) - y1 ) * ( pxyd(1,n3) - x1 )
-            cb1 = ( pxyd(1,n2) - x1 ) ** 2
-     %          + ( pxyd(2,n2) - y1 ) ** 2
-            cb2 = ( point(1) - x1 ) ** 2
-     %          + ( point(2) - y1 ) ** 2
-            cb3 = ( pxyd(1,n3) - x1 ) ** 2
-     %          + ( pxyd(2,n3) - y1 ) ** 2
-            if( abs( dd ) .le. 1e-4 * sqrt( cb1 * cb3 ) ) then
-c              le point 3 est sur l'arete 1-2
-c              le point doit y etre aussi
-               if( abs( d ) .le. 1e-4 * sqrt( cb1 * cb2 ) ) then
-c                 point sur l'arete
-                  nsigne = nsigne + 1
-               endif
-            else
-c              le point 3 n'est pas sur l'arete . test des signes
-               if( d * dd .ge. 0 ) then
-                  nsigne = nsigne + 1
-               endif
-            endif
-c           permutation circulaire des 3 sommets et aretes
-            n  = n1
-            n1 = n2
-            n2 = n3
-            n3 = n
- 10      continue
-         if( nsigne .ne. 3 ) nsigne = 0
-      endif
-      end
-
-      integer function nosstr( p, pxyd, nt, letree )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calculer le numero 0 a 3 du sous-triangle te contenant
-c -----    le point p
-c
-c entrees:
-c --------
-c p      : point de r**2 contenu dans le te nt de letree
-c pxyd   : x y distance des points
-c nt     : numero letree du te de te voisin a calculer
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c      letree(0,0)  no du 1-er te vide dans letree
-c      letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c      letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c      letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c      si letree(0,.)>0 alors
-c         letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c      sinon
-c         letree(0:3,j) :-no pxyd des 1 \85a 4 points internes au triangle j
-c                         0  si pas de point
-c                       ( j est alors une feuille de l'arbre )
-c      letree(4,j) : no letree du sur-triangle du triangle j
-c      letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c      letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c nosstr : 0 si le sous-triangle central contient p
-c          i =1,2,3 numero du sous-triangle contenant p
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      integer           letree(0:8,0:*)
-      double precision  pxyd(3,*), p(2),
-     %                  x1, y1, x21, y21, x31, y31, d, xe, ye
-c
-c     le numero des 3 sommets du triangle
-      ns1 = letree( 6, nt )
-      ns2 = letree( 7, nt )
-      ns3 = letree( 8, nt )
-c
-c     les coordonnees entre 0 et 1 du point p
-      x1  = pxyd(1,ns1)
-      y1  = pxyd(2,ns1)
-c
-      x21 = pxyd(1,ns2) - x1
-      y21 = pxyd(2,ns2) - y1
-c
-      x31 = pxyd(1,ns3) - x1
-      y31 = pxyd(2,ns3) - y1
-c
-      d   = 1.0 / ( x21 * y31 - x31 * y21 )
-c
-      xe  = ( ( p(1) - x1 ) * y31 - ( p(2) - y1 ) * x31 ) * d
-      ye  = ( ( p(2) - y1 ) * x21 - ( p(1) - x1 ) * y21 ) * d
-c
-      if( xe .gt. 0.5d0 ) then
-c        sous-triangle droit
-         nosstr = 2
-      else if( ye .gt. 0.5d0 ) then
-c        sous-triangle haut
-         nosstr = 3
-      else if( xe+ye .lt. 0.5d0 ) then
-c        sous-triangle gauche
-         nosstr = 1
-      else
-c        sous-triangle central
-         nosstr = 0
-      endif
-      end
-
-
-      integer function notrpt( p, pxyd, notrde, letree )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calculer le numero letree du sous-triangle feuille contenant
-c -----    le point p a partir du te notrde de letree
-c
-c entrees:
-c --------
-c p      : point de r**2 contenu dans le te nt de letree
-c pxyd   : x y distance des points
-c notrde : numero letree du triangle depart de recherche (1=>racine)
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c      letree(0,0)  no du 1-er te vide dans letree
-c      letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c      letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c      letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c      si letree(0,.)>0 alors
-c         letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c      sinon
-c         letree(0:3,j) :-no pxyd des 1 \85 4 points internes au triangle j
-c                         0  si pas de point
-c                        ( j est alors une feuille de l'arbre )
-c      letree(4,j) : no letree du sur-triangle du triangle j
-c      letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c      letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c notrpt : numero letree du triangle contenant le point p
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      integer           letree(0:8,0:*)
-      double precision  pxyd(1:3,*), p(2)
-c
-c     la racine depart de la recherche
-      notrpt = notrde
-c
-c     tant que la feuille n'est pas atteinte descendre l'arbre
- 10   if( letree(0,notrpt) .gt. 0 ) then
-c
-c        recherche du sous-triangle contenant p
-         nsot = nosstr( p, pxyd, notrpt, letree )
-c
-c        le numero letree du sous-triangle
-         notrpt = letree( nsot, notrpt )
-         goto 10
-c
-      endif
-      end
-
-
-      subroutine teajpt( ns,   nbsomm, mxsomm, pxyd, letree,
-     &                   ntrp, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    ajout du point ns de pxyd dans letree
-c -----
-c
-c entrees:
-c --------
-c ns     : numero du point a ajouter dans letree
-c mxsomm : nombre maximal de points declarables dans pxyd
-c pxyd   : tableau des coordonnees des points
-c          par point : x  y  distance_souhaitee
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de points dans pxyd
-c
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c      letree(0,0) : no du 1-er te vide dans letree
-c      letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c      letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c      letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c      si letree(0,.)>0 alors
-c         letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c      sinon
-c         letree(0:3,j) :-no pxyd des 1 \85a 4 points internes au triangle j
-c                         0  si pas de point
-c                        ( j est alors une feuille de l'arbre )
-c      letree(4,j) : no letree du sur-triangle du triangle j
-c      letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c      letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c ntrp    : numero letree du triangle te ou a ete ajoute le point
-c ierr    : 0 si pas d'erreur,  51 saturation letree, 52 saturation pxyd
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      integer           letree(0:8,0:*)
-      double precision  pxyd(3,mxsomm)
-c
-c     depart de la racine
-      ntrp = 1
-c
-c     recherche du triangle contenant le point pxyd(ns)
- 1    ntrp = notrpt( pxyd(1,ns), pxyd, ntrp, letree )
-c
-c     existe t il un point libre
-      do 10 i=0,3
-         if( letree(i,ntrp) .eq. 0 ) then
-c           la place i est libre
-            letree(i,ntrp) = -ns
-            return
-         endif
- 10   continue
-c
-c     pas de place libre => 4 sous-triangles sont crees
-c                           a partir des 3 milieux des aretes
-      call te4ste( nbsomm, mxsomm, pxyd, ntrp, letree, ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout du point ns
-      goto 1
-      end
-
-      subroutine n1trva( nt, lar, letree, notrva, lhpile )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calculer le numero letree du triangle voisin du te nt
-c -----    par l'arete lar (1 a 3 ) de nt
-c          attention : notrva n'est pas forcement minimal
-c
-c entrees:
-c --------
-c nt     : numero letree du te de te voisin a calculer
-c lar    : numero 1 a 3 de l'arete du triangle nt
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c   letree(0,0)  no du 1-er te vide dans letree
-c   letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c   letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c   letree(0:8,1) : racine de l'arbre  (triangle sans sur-triangle)
-c   si letree(0,.)>0 alors
-c      letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c   sinon
-c      letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                      0  si pas de point
-c                     ( j est alors une feuille de l'arbre )
-c   letree(4,j) : no letree du sur-triangle du triangle j
-c   letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c   letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c notrva  : >0 numero letree du te voisin par l'arete lar
-c           =0 si pas de te voisin (racine , ... )
-c lhpile  : =0 si nt et notrva ont meme taille
-c           >0 nt est 4**lhpile fois plus petit que notrva
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      integer   letree(0:8,0:*)
-      integer   lapile(1:64)
-c
-c     initialisation de la pile
-c     le triangle est empile
-      lapile(1) = nt
-      lhpile = 1
-c
-c     tant qu'il existe un sur-triangle
- 10   ntr  = lapile( lhpile )
-      if( ntr .eq. 1 ) then
-c        racine atteinte => pas de triangle voisin
-         notrva = 0
-         lhpile = lhpile - 1
-         return
-      endif
-c
-c     le type du triangle ntr
-      nty  = letree( 5, ntr )
-c     l'eventuel sur-triangle
-      nsut = letree( 4, ntr )
-c
-      if( nty .eq. 0 ) then
-c
-c        triangle de type 0 => triangle voisin de type precedent(lar)
-c                              dans le sur-triangle de ntr
-c                              ce triangle remplace ntr dans lapile
-         lapile( lhpile ) = letree( nopre3(lar), nsut )
-         goto 20
-      endif
-c
-c     triangle ntr de type nty>0
-      if( nosui3(nty) .eq. lar ) then
-c
-c        le triangle voisin par lar est le triangle 0
-         lapile( lhpile ) = letree( 0, nsut )
-         goto 20
-      endif
-c
-c     triangle sans voisin direct => passage par le sur-triangle
-      if( nsut .eq. 0 ) then
-c
-c        ntr est la racine => pas de triangle voisin par cette arete
-         notrva = 0
-         return
-      else
-c
-c        le sur-triangle est empile
-         lhpile = lhpile + 1
-         lapile(lhpile) = nsut
-         goto 10
-      endif
-c
-c     descente aux sous-triangles selon la meme arete
- 20   notrva = lapile( lhpile )
-c
- 30   lhpile = lhpile - 1
-      if( letree(0,notrva) .le. 0 ) then
-c        le triangle est une feuille de l'arbre 0 sous-triangle
-c        lhpile = nombre de differences de niveaux dans l'arbre
-         return
-      else
-c        le triangle a 4 sous-triangles
-         if( lhpile .gt. 0 ) then
-c
-c           bas de pile non atteint
-            nty  = letree( 5, lapile(lhpile) )
-            if( nty .eq. lar ) then
-c              l'oppose est suivant(nty) de notrva
-               notrva = letree( nosui3(nty) , notrva )
-            else
-c              l'oppose est precedent(nty) de notrva
-               notrva = letree( nopre3(nty) , notrva )
-            endif
-            goto 30
-         endif
-      endif
-c
-c     meme niveau dans l'arbre lhpile = 0
-      end
-
-
-      subroutine cenced( xy1, xy2, xy3, cetria, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but : calcul des coordonnees du centre du cercle circonscrit
-c ----- du triangle defini par ses 3 sommets de coordonnees
-c       xy1 xy2 xy3 ainsi que le carre du rayon de ce cercle
-c
-c entrees :
-c ---------
-c xy1 xy2 xy3 : les 2 coordonnees des 3 sommets du triangle
-c ierr   : <0  => pas d'affichage si triangle degenere
-c          >=0 =>       affichage si triangle degenere
-c
-c sortie :
-c --------
-c cetria : cetria(1)=abcisse  du centre
-c          cetria(2)=ordonnee du centre
-c          cetria(3)=carre du rayon   1d28 si triangle degenere
-c ierr   : 0 si triangle non degenere
-c          1 si triangle degenere
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : perronnet alain upmc analyse numerique paris        juin 1995
-c2345x7..............................................................012
-      parameter        (epsurf=1d-7)
-      common / unites / lecteu,imprim,nunite(30)
-      double precision  x1,y1,x21,y21,x31,y31,
-     %                  aire2,xc,yc,rot,
-     %                  xy1(2),xy2(2),xy3(2),cetria(3)
-c
-c     le calcul de 2 fois l'aire du triangle
-c     attention l'ordre des 3 sommets est direct ou non
-      x1  = xy1(1)
-      x21 = xy2(1) - x1
-      x31 = xy3(1) - x1
-c
-      y1  = xy1(2)
-      y21 = xy2(2) - y1
-      y31 = xy3(2) - y1
-c
-      aire2  = x21 * y31 - x31 * y21
-c
-c     recherche d'un test relatif peu couteux
-c     pour reperer la degenerescence du triangle
-      if( abs(aire2) .le.
-     %    epsurf*(abs(x21)+abs(x31))*(abs(y21)+abs(y31)) ) then
-c        triangle de qualite trop faible
-         if( ierr .ge. 0 ) then
-c            nblgrc(nrerr) = 1
-c            kerr(1) = 'erreur cenced: triangle degenere'
-c            call lereur
-            write(imprim,*) 'erreur cenced: triangle degenere'
-            write(imprim,10000)  xy1,xy2,xy3,aire2
-         endif
-10000 format( 3(' x=',g24.16,' y=',g24.16/),' aire*2=',g24.16)
-         cetria(1) = 0d0
-         cetria(2) = 0d0
-         cetria(3) = 1d28
-         ierr = 1
-         return
-      endif
-c
-c     les 2 coordonnees du centre intersection des 2 mediatrices
-c     x = (x1+x2)/2 + lambda * (y2-y1)
-c     y = (y1+y2)/2 - lambda * (x2-x1)
-c     x = (x1+x3)/2 + rot    * (y3-y1)
-c     y = (y1+y3)/2 - rot    * (x3-x1)
-c     ==========================================================
-      rot = ((xy2(1)-xy3(1))*x21 + (xy2(2)-xy3(2))*y21) / (2 * aire2)
-c
-      xc = ( x1 + xy3(1) ) * 0.5d0 + rot * y31
-      yc = ( y1 + xy3(2) ) * 0.5d0 - rot * x31
-c
-      cetria(1) = xc
-      cetria(2) = yc
-c
-c     le carre du rayon
-      cetria(3) = (x1-xc) ** 2 + (y1-yc) ** 2
-c
-c     pas d'erreur rencontree
-      ierr = 0
-      end
-
-
-      double precision function angled( p1, p2, p3 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   calculer l'angle (p1p2,p1p3) en radians
-c -----
-c
-c entrees :
-c ---------
-c p1,p2,p3 : les 2 coordonnees des 3 sommets de l'angle
-c               sens direct pour une surface >0
-c sorties :
-c ---------
-c angled :  angle (p1p2,p1p3) en radians entre [0 et 2pi]
-c           0 si p1=p2 ou p1=p3
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet analyse numerique upmc paris     fevrier 1992
-c2345x7..............................................................012
-      double precision  p1(2),p2(2),p3(2),x21,y21,x31,y31,a1,a2,d,c
-c
-c     les cotes
-      x21 = p2(1) - p1(1)
-      y21 = p2(2) - p1(2)
-      x31 = p3(1) - p1(1)
-      y31 = p3(2) - p1(2)
-c
-c     longueur des cotes
-      a1 = x21 * x21 + y21 * y21
-      a2 = x31 * x31 + y31 * y31
-      d  = sqrt( a1 * a2 )
-      if( d .eq. 0 ) then
-         angled = 0
-         return
-      endif
-c
-c     cosinus de l'angle
-      c  = ( x21 * x31 + y21 * y31 ) / d
-      if( c .le. -1.d0 ) then
-c        tilt sur apollo si acos( -1 -eps )
-         angled = atan( 1.d0 ) * 4.d0
-         return
-      else if( c .ge. 1.d0 ) then
-c        tilt sur apollo si acos( 1 + eps )
-         angled = 0
-         return
-      endif
-c
-      angled = acos( c )
-      if( x21 * y31 - x31 * y21 .lt. 0 ) then
-c        demi plan inferieur
-         angled = 8.d0 * atan( 1.d0 ) - angled
-      endif
-      end
-
-
-      subroutine teajte( mxsomm, nbsomm, pxyd,   comxmi,
-     %                   aretmx, mxtree, letree,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    initialisation des tableaux letree
-c -----    ajout des sommets 1 a nbsomm (valeur en entree) dans letree
-c
-c entrees:
-c --------
-c mxsomm : nombre maximal de sommets permis pour la triangulation
-c mxtree : nombre maximal de triangles equilateraux (te) declarables
-c aretmx : longueur maximale des aretes des triangles equilateraux
-c
-c entrees et sorties :
-c --------------------
-c nbsomm : nombre de sommets apres identification
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c          tableau reel(3,mxsomm)
-c
-c sorties:
-c --------
-c comxmi : coordonnees minimales et maximales des points frontaliers
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          letree(0,0) : no du 1-er te vide dans letree
-c          letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c          letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c          letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c          si letree(0,.)>0 alors
-c             letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                             0  si pas de point
-c                             ( j est alors une feuille de l'arbre )
-c          letree(4,j) : no letree du sur-triangle du triangle j
-c          letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c ierr   :  0 si pas d'erreur
-c          51 saturation letree
-c          52 saturation pxyd
-c           7 tous les points sont alignes
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    juillet 1994
-c....................................................................012
-      integer           letree(0:8,0:mxtree)
-      double precision  pxyd(3,mxsomm)
-      double precision  comxmi(3,2)
-      double precision  a(2),s,aretmx,rac3
-c
-c     protection du nombre de sommets avant d'ajouter ceux de tetree
-      nbsofr = nbsomm
-      do 1 i = 1, nbsomm 
-         comxmi(1,1) = min( comxmi(1,1), pxyd(1,i) )
-         comxmi(1,2) = max( comxmi(1,2), pxyd(1,i) )
-         comxmi(2,1) = min( comxmi(2,1), pxyd(2,i) )
-         comxmi(2,2) = max( comxmi(2,2), pxyd(2,i) )
- 1    continue
-c
-c     creation de l'arbre tee
-c     =======================
-c     la premiere colonne vide de letree
-      letree(0,0) = 2
-c     chainage des te vides
-      do 4 i = 2 , mxtree
-         letree(0,i) = i+1
- 4    continue
-      letree(0,mxtree) = 0
-c     les maxima des 2 indices de letree
-      letree(1,0) = 8
-      letree(2,0) = mxtree
-c
-c     la racine
-c     aucun point interne au triangle equilateral (te) 1
-      letree(0,1) = 0
-      letree(1,1) = 0
-      letree(2,1) = 0
-      letree(3,1) = 0
-c     pas de sur-triangle
-      letree(4,1) = 0
-      letree(5,1) = 0
-c     le numero pxyd des 3 sommets du te 1
-      letree(6,1) = nbsomm + 1
-      letree(7,1) = nbsomm + 2
-      letree(8,1) = nbsomm + 3
-c
-c     calcul de la largeur et hauteur du rectangle englobant
-c     ======================================================
-      a(1) = comxmi(1,2) - comxmi(1,1)
-      a(2) = comxmi(2,2) - comxmi(2,1)
-c     la longueur de la diagonale
-      s = sqrt( a(1)**2 + a(2)**2 )
-      do 60 k=1,2
-         if( a(k) .lt. 1e-4 * s ) then
-c            nblgrc(nrerr) = 1
-            write(imprim,*) 'tous les points sont alignes'
-c            call lereur
-            ierr = 7
-            return
-         endif
- 60   continue
-c
-c     le maximum des ecarts
-      s = s + s
-c
-c     le triangle equilateral englobant
-c     =================================
-c     ecart du rectangle au triangle equilateral
-      rac3 = sqrt( 3.0d0 )
-      arete = a(1) + 2 * aretmx + 2 * ( a(2) + aretmx ) / rac3
-c
-c     le point nbsomm + 1 en bas a gauche
-      nbsomm = nbsomm + 1
-      pxyd(1,nbsomm) = (comxmi(1,1)+comxmi(1,2))*0.5d0 - arete*0.5d0
-      pxyd(2,nbsomm) =  comxmi(2,1) - aretmx
-      pxyd(3,nbsomm) = s
-c
-c     le point nbsomm + 2 en bas a droite
-      nbsomm = nbsomm + 1
-      pxyd(1,nbsomm) = pxyd(1,nbsomm-1) + arete
-      pxyd(2,nbsomm) = pxyd(2,nbsomm-1)
-      pxyd(3,nbsomm) = s
-c
-c     le point nbsomm + 3 sommet au dessus
-      nbsomm = nbsomm + 1
-      pxyd(1,nbsomm) = pxyd(1,nbsomm-2) + arete * 0.5d0
-      pxyd(2,nbsomm) = pxyd(2,nbsomm-2) + arete * 0.5d0 * rac3
-      pxyd(3,nbsomm) = s
-c
-c     ajout des sommets des lignes pour former letree
-c     ===============================================
-      do 150 i=1,nbsofr
-c        ajout du point i de pxyd a letree
-         call teajpt(  i, nbsomm, mxsomm, pxyd, letree,
-     &                nt, ierr )
-         if( ierr .ne. 0 ) return
- 150  continue
-c
-      return
-      end
-
-
-      subroutine tetaid( nutysu, dx, dy, longai, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :     calculer la longueur de l'arete ideale en dx,dy
-c -----
-c
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale(xyz,xyzdir)
-c          ... autres options a definir ...
-c dx, dy : abscisse et ordonnee dans le plan du point (reel2!)
-c
-c sorties:
-c --------
-c longai : longueur de l'areteideale(xyz,xyzdir) autour du point xyz
-c ierr   : 0 si pas d'erreur, <>0 sinon
-c          1 calcul incorrect de areteideale(xyz,xyzdir)
-c          2 longueur calculee nulle
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-c
-      double precision  areteideale
-      double precision  dx, dy, longai
-      double precision  xyz(3), xyzd(3), d0
-c
-      ierr = 0
-      if( nutysu .gt. 0 ) then
-         d0 = longai
-c        le point ou se calcule la longueur
-         xyz(1) = dx
-         xyz(2) = dy
-c        z pour le calcul de la longueur (inactif ici!)
-         xyz(3) = 0d0
-c        la direction pour le calcul de la longueur (inactif ici!)
-         xyzd(1) = 0d0
-         xyzd(2) = 0d0
-         xyzd(3) = 0d0
-
-         longai = areteideale(xyz,xyzd)
-         if( longai .lt. 0d0 ) then
-            write(imprim,10000) xyz
-10000       format('attention: longueur de areteideale(',
-     %              g14.6,',',g14.6,',',g14.6,')<=0! => rendue >0' )
-            longai = -longai
-         endif
-         if( longai .eq. 0d0 ) then
-            write(imprim,10001) xyz
-10001       format('erreur: longueur de areteideale(',
-     %              g14.6,',',g14.6,',',g14.6,')=0!' )
-            ierr = 2
-            longai = d0
-         endif
-      endif
-      end
-
-
-      subroutine tehote( nutysu,
-     %                   nbarpi, mxsomm, nbsomm, pxyd,
-     %                   comxmi, aretmx,
-     %                   letree, mxqueu, laqueu,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :     homogeneisation de l'arbre des te a un saut de taille au plus
-c -----     prise en compte des distances souhaitees autour des sommets initiaux
-c
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale()
-c            dont seules les 2 premieres composantes de uv sont actives
-c          autres options a definir...
-c nbarpi : nombre de sommets de la frontiere + nombre de points internes
-c          imposes par l'utilisateur
-c mxsomm : nombre maximal de sommets permis pour la triangulation  et te
-c mxqueu : nombre d'entiers utilisables dans laqueu
-c comxmi : minimum et maximum des coordonnees de l'objet
-c aretmx : longueur maximale des aretes des triangles equilateraux
-c permtr : perimetre de la ligne enveloppe dans le plan
-c          avant mise a l'echelle a 2**20
-c
-c modifies :
-c ----------
-c nbsomm : nombre de sommets apres identification
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          letree(0,0) : no du 1-er te vide dans letree
-c          letree(1,0) : maximum du 1-er indice de letree (ici 8)
-c          letree(2,0) : maximum declare du 2-eme indice de letree (ici mxtree)
-c          letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c          si letree(0,.)>0 alors
-c             letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                             0  si pas de point
-c                             ( j est alors une feuille de l'arbre )
-c          letree(4,j) : no letree du sur-triangle du triangle j
-c          letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c auxiliaire :
-c ------------
-c laqueu : mxqueu entiers servant de queue pour le parcours de letree
-c
-c sorties:
-c --------
-c ierr   :  0 si pas d'erreur
-c          51 si saturation letree dans te4ste
-c          52 si saturation pxyd   dans te4ste
-c          >0 si autre erreur
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc      avril 1997
-c2345x7..............................................................012
-      double precision  ampli
-      parameter        (ampli=1.34d0)
-      common / unites / lecteu, imprim, intera, nunite(29)
-c
-      double precision  pxyd(3,mxsomm), d2, aretm2
-      double precision  comxmi(3,2),aretmx,a,s,xrmin,xrmax,yrmin,yrmax
-      double precision  dmin, dmax
-      integer           letree(0:8,0:*)
-c
-      integer           laqueu(1:mxqueu),lequeu
-c                       lequeu : entree dans la queue
-c                       lhqueu : longueur de la queue
-c                       gestion circulaire
-c
-      integer           nuste(3)
-      equivalence      (nuste(1),ns1),(nuste(2),ns2),(nuste(3),ns3)
-c
-c     existence ou non de la fonction 'taille_ideale' des aretes
-c     autour du point.  ici la carte est supposee isotrope
-c     ==========================================================
-c     attention: si la fonction taille_ideale existe
-c                alors pxyd(3,*) est la taille_ideale dans l'espace initial
-c                sinon pxyd(3,*) est la distance calculee dans le plan par
-c                propagation a partir des tailles des aretes de la frontiere
-c
-      if( nutysu .gt. 0 ) then
-c
-c        la fonction taille_ideale(x,y,z) existe
-c        ---------------------------------------
-c        initialisation de la distance souhaitee autour des points 1 a nbsomm
-         do 1 i=1,nbsomm
-c           calcul de pxyzd(3,i)
-            call tetaid( nutysu, pxyd(1,i), pxyd(2,i),
-     %                   pxyd(3,i), ierr )
-            if( ierr .ne. 0 ) goto 9999
- 1       continue
-c
-      else
-c
-c        la fonction taille_ideale(x,y,z) n'existe pas
-c        ---------------------------------------------
-c        prise en compte des distances souhaitees dans le plan
-c        autour des points frontaliers et des points internes imposes
-c        toutes les autres distances souhaitees ont ete mis a aretmx
-c        lors de l'execution du sp teqini
-         do 3 i=1,nbarpi
-c           le sommet i n'est pas un sommet de letree => sommet frontalier
-c           recherche du sous-triangle minimal feuille contenant le point i
-            nte = 1
- 2          nte = notrpt( pxyd(1,i), pxyd, nte, letree )
-c           la distance au sommet le plus eloigne est elle inferieure
-c           a la distance souhaitee?
-            ns1 = letree(6,nte)
-            ns2 = letree(7,nte)
-            ns3 = letree(8,nte)
-            d2  = max( ( pxyd(1,i)-pxyd(1,ns1) )**2 +
-     %                 ( pxyd(2,i)-pxyd(2,ns1) )**2
-     %               , ( pxyd(1,i)-pxyd(1,ns2) )**2 +
-     %                 ( pxyd(2,i)-pxyd(2,ns2) )**2
-     %               , ( pxyd(1,i)-pxyd(1,ns3) )**2 +
-     %                 ( pxyd(2,i)-pxyd(2,ns3) )**2 )
-            if( d2 .gt. pxyd(3,i)**2 ) then
-c              le triangle nte trop grand doit etre subdivise en 4 sous-triangle
-               call te4ste( nbsomm, mxsomm, pxyd, nte, letree,
-     &                      ierr )
-               if( ierr .ne. 0 ) return
-               goto 2
-            endif
- 3       continue
-      endif
-c
-c     le sous-triangle central de la racine est decoupe systematiquement
-c     ==================================================================
-      nte = 2
-      if( letree(0,2) .le. 0 ) then
-c        le sous-triangle central de la racine n'est pas subdivise
-c        il est donc decoupe en 4 soustriangles
-         nbsom0 = nbsomm
-         call te4ste( nbsomm, mxsomm, pxyd, nte, letree,
-     %                ierr )
-         if( ierr .ne. 0 ) return
-         do 4 i=nbsom0+1,nbsomm
-c           mise a jour de taille_ideale des nouveaux sommets de te
-            call tetaid( nutysu, pxyd(1,i), pxyd(2,i), pxyd(3,i), ierr )
-            if( ierr .ne. 0 ) goto 9999
- 4       continue
-      endif
-c
-c     le carre de la longueur de l'arete de triangles equilateraux
-c     souhaitee pour le fond de la triangulation
-      aretm2 = (aretmx*ampli) ** 2
-c
-c     tout te contenu dans le rectangle englobant doit avoir un
-c     cote < aretmx et etre de meme taille que les te voisins
-c     s'il contient un point; sinon un seul saut de taille est permis
-c     ===============================================================
-c     le rectangle englobant pour selectionner les te "internes"
-c     le numero des 3 sommets du te englobant racine de l'arbre des te
-      ns1 = letree(6,1)
-      ns2 = letree(7,1)
-      ns3 = letree(8,1)
-      a   = aretmx * 0.01d0
-c     abscisse du milieu de l'arete gauche du te 1
-      s      = ( pxyd(1,ns1) + pxyd(1,ns3) ) / 2
-      xrmin  = min( s, comxmi(1,1) - aretmx ) - a
-c     abscisse du milieu de l'arete droite du te 1
-      s      = ( pxyd(1,ns2) + pxyd(1,ns3) ) / 2
-      xrmax  = max( s, comxmi(1,2) + aretmx ) + a
-      yrmin  = comxmi(2,1) - aretmx
-c     ordonnee de la droite passant par les milieus des 2 aretes
-c     droite gauche du te 1
-      s      = ( pxyd(2,ns1) + pxyd(2,ns3) ) / 2
-      yrmax  = max( s, comxmi(2,2) + aretmx ) + a
-c
-c     cas particulier de 3 ou 4 ou peu d'aretes frontalieres
-      if( nbarpi .le. 8 ) then
-c        tout le triangle englobant (racine) est a prendre en compte
-         xrmin = pxyd(1,ns1) - a
-         xrmax = pxyd(1,ns2) + a
-         yrmin = pxyd(2,ns1) - a
-         yrmax = pxyd(2,ns3) + a
-      endif
-c
-      nbs0   = nbsomm
-      nbiter = -1
-c
-c     initialisation de la queue
-  5   nbiter = nbiter + 1
-      lequeu = 1
-      lhqueu = 0
-c     la racine de letree initialise la queue
-      laqueu(1) = 1
-c
-c     tant que la longueur de la queue est >=0 traiter le debut de queue
- 10   if( lhqueu .ge. 0 ) then
-c
-c        le triangle te a traiter
-         i   = lequeu - lhqueu
-         if( i .le. 0 ) i = mxqueu + i
-         nte = laqueu( i )
-c        la longueur de la queue est reduite
-         lhqueu = lhqueu - 1
-c
-c        nte est il un sous-triangle feuille minimal ?
- 15      if( letree(0,nte) .gt. 0 ) then
-c
-c           non les 4 sous-triangles sont mis dans la queue
-            if( lhqueu + 4 .ge. mxqueu ) then
-               write(imprim,*) 'tehote: saturation de la queue'
-               ierr = 7
-               return
-            endif
-            do 20 i=3,0,-1
-c              ajout du sous-triangle i
-               lhqueu = lhqueu + 1
-               lequeu = lequeu + 1
-               if( lequeu .gt. mxqueu ) lequeu = lequeu - mxqueu
-               laqueu( lequeu ) = letree( i, nte )
- 20         continue
-            goto 10
-c
-         endif
-c
-c        ici nte est un triangle minimal non subdivise
-c        ---------------------------------------------
-c        le te est il dans le cadre englobant de l'objet ?
-         ns1 = letree(6,nte)
-         ns2 = letree(7,nte)
-         ns3 = letree(8,nte)
-         if( pxyd(1,ns1) .gt. pxyd(1,ns2) ) then
-            dmin = pxyd(1,ns2)
-            dmax = pxyd(1,ns1)
-         else
-            dmin = pxyd(1,ns1)
-            dmax = pxyd(1,ns2)
-         endif
-         if( (xrmin .le. dmin .and. dmin .le. xrmax) .or.
-     %       (xrmin .le. dmax .and. dmax .le. xrmax) ) then
-            if( pxyd(2,ns1) .gt. pxyd(2,ns3) ) then
-               dmin = pxyd(2,ns3)
-               dmax = pxyd(2,ns1)
-            else
-               dmin = pxyd(2,ns1)
-               dmax = pxyd(2,ns3)
-            endif
-            if( (yrmin .le. dmin .and. dmin .le. yrmax) .or.
-     %          (yrmin .le. dmax .and. dmax .le. yrmax) ) then
-c
-c              nte est un te feuille et interne au rectangle englobant
-c              =======================================================
-c              le carre de la longueur de l'arete du te de numero nte
-               d2 = (pxyd(1,ns1)-pxyd(1,ns2)) ** 2 +
-     %              (pxyd(2,ns1)-pxyd(2,ns2)) ** 2
-c
-               if( nutysu .eq. 0 ) then
-c
-c                 il n'existe pas de fonction 'taille_ideale'
-c                 -------------------------------------------
-c                 si la taille effective de l'arete du te est superieure a aretmx
-c                 alors le te est decoupe
-                  if( d2 .gt. aretm2 ) then
-c                    le triangle nte trop grand doit etre subdivise
-c                    en 4 sous-triangles
-                     call te4ste( nbsomm,mxsomm, pxyd,
-     %                            nte, letree, ierr )
-                     if( ierr .ne. 0 ) return
-                     goto 15
-                  endif
-c
-               else
-c
-c                 il existe ici une fonction 'taille_ideale'
-c                 ------------------------------------------
-c                 si la taille effective de l'arete du te est superieure au mini
-c                 des 3 tailles_ideales aux sommets  alors le te est decoupe
-                  do 28 i=1,3
-                     if( d2 .gt. (pxyd(3,nuste(i))*ampli)**2 ) then
-c                       le triangle nte trop grand doit etre subdivise
-c                       en 4 sous-triangles
-                        nbsom0 = nbsomm
-                        call te4ste( nbsomm, mxsomm, pxyd,
-     &                               nte, letree, ierr )
-                        if( ierr .ne. 0 ) return
-                        do 27 j=nbsom0+1,nbsomm
-c                          mise a jour de taille_ideale des nouveaux sommets de
-                           call tetaid( nutysu, pxyd(1,j), pxyd(2,j),
-     %                                  pxyd(3,j), ierr )
-                           if( ierr .ne. 0 ) goto 9999
- 27                     continue
-                        goto 15
-                     endif
- 28               continue
-               endif
-c
-c              recherche du nombre de niveaux entre nte et les te voisins par se
-c              si la difference de subdivisions excede 1 alors le plus grand des
-c              =================================================================
- 29            do 30 i=1,3
-c
-c                 noteva triangle voisin de nte par l'arete i
-                  call n1trva( nte, i, letree, noteva, niveau )
-                  if( noteva .le. 0 ) goto 30
-c                 il existe un te voisin
-                  if( niveau .gt. 0 ) goto 30
-c                 nte a un te voisin plus petit ou egal
-                  if( letree(0,noteva) .le. 0 ) goto 30
-c                 nte a un te voisin noteva subdivise au moins une fois
-c
-                  if( nbiter .gt. 0 ) then
-c                    les 2 sous triangles voisins sont-ils subdivises?
-                     ns2 = letree(i,noteva)
-                     if( letree(0,ns2) .le. 0 ) then
-c                       ns2 n'est pas subdivise
-                        ns2 = letree(nosui3(i),noteva)
-                        if( letree(0,ns2) .le. 0 ) then
-c                          les 2 sous-triangles ne sont pas subdivises
-                           goto 30
-                        endif
-                     endif
-                  endif
-c
-c                 saut>1 => le triangle nte doit etre subdivise en 4 sous-triang
-c                 --------------------------------------------------------------
-                  nbsom0 = nbsomm
-                  call te4ste( nbsomm,mxsomm, pxyd, nte, letree,
-     &                         ierr )
-                  if( ierr .ne. 0 ) return
-                  if( nutysu .gt. 0 ) then
-                     do 32 j=nbsom0+1,nbsomm
-c                       mise a jour de taille_ideale des nouveaux sommets de te
-                        call tetaid( nutysu, pxyd(1,j), pxyd(2,j),
-     %                               pxyd(3,j), ierr )
-                        if( ierr .ne. 0 ) goto 9999
- 32                  continue
-                  endif
-                  goto 15
-c
- 30            continue
-            endif
-         endif
-         goto 10
-      endif
-      if( nbs0 .lt. nbsomm ) then
-         nbs0 = nbsomm
-         goto 5
-      endif
-      return
-c
-c     pb dans le calcul de la fonction taille_ideale
-
- 9999 write(imprim,*) 'pb dans le calcul de taille_ideale'
-c      nblgrc(nrerr) = 1
-c      kerr(1) = 'pb dans le calcul de taille_ideale'
-c      call lereur
-      return
-      end
-
-
-      subroutine tetrte( comxmi, aretmx, nbarpi, mxsomm, pxyd,
-     %                   mxqueu, laqueu, letree,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr, noarst,
-     %                   ierr  )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    trianguler les triangles equilateraux feuilles et
-c -----    les points de la frontiere et les points internes imposes
-c
-c attention: la triangulation finale n'est pas de type delaunay!
-c
-c entrees:
-c --------
-c comxmi : minimum et maximum des coordonnees de l'objet
-c aretmx : longueur maximale des aretes des triangles equilateraux
-c nbarpi : nombre de sommets de la frontiere + nombre de points internes
-c          imposes par l'utilisateur
-c mxsomm : nombre maximal de sommets declarables dans pxyd
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c
-c mxqueu : nombre d'entiers utilisables dans laqueu
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          letree(0,0) : no du 1-er te vide dans letree
-c          letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c          letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c          letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c          si letree(0,.)>0 alors
-c             letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                             0  si pas de point
-c                             ( j est alors une feuille de l'arbre )
-c          letree(4,j) : no letree du sur-triangle du triangle j
-c          letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c auxiliaire :
-c ------------
-c laqueu : mxqueu entiers servant de queue pour le parcours de letree
-c
-c sorties:
-c --------
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes d'un t
-c          =5 si saturation de la queue de parcours de l'arbre des te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, intera, nunite(29)
-c
-      double precision  pxyd(3,mxsomm)
-      double precision  comxmi(3,2),aretmx,a,s,xrmin,xrmax,yrmin,yrmax
-      double precision  dmin, dmax
-c
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(mxsomm)
-c
-      integer           letree(0:8,0:*)
-      integer           laqueu(1:mxqueu)
-c                       lequeu:entree dans la queue en gestion circulaire
-c                       lhqueu:longueur de la queue en gestion circulaire
-c
-      integer           milieu(3), nutr(1:13)
-c
-c     le rectangle englobant pour selectionner les te "internes"
-c     le numero des 3 sommets du te englobant racine de l'arbre des te
-      ns1 = letree(6,1)
-      ns2 = letree(7,1)
-      ns3 = letree(8,1)
-      a   = aretmx * 0.01d0
-c     abscisse du milieu de l'arete gauche du te 1
-      s      = ( pxyd(1,ns1) + pxyd(1,ns3) ) / 2
-      xrmin  = min( s, comxmi(1,1) - aretmx ) - a
-c     abscisse du milieu de l'arete droite du te 1
-      s      = ( pxyd(1,ns2) + pxyd(1,ns3) ) / 2
-      xrmax  = max( s, comxmi(1,2) + aretmx ) + a
-      yrmin  = comxmi(2,1) - aretmx
-c     ordonnee de la droite passant par les milieus des 2 aretes
-c     droite gauche du te 1
-      s      = ( pxyd(2,ns1) + pxyd(2,ns3) ) / 2
-      yrmax  = max( s, comxmi(2,2) + aretmx ) + a
-c
-c     cas particulier de 3 ou 4 ou peu d'aretes frontalieres
-      if( nbarpi .le. 8 ) then
-c        tout le triangle englobant (racine) est a prendre en compte
-         xrmin = pxyd(1,ns1) - a
-         xrmax = pxyd(1,ns2) + a
-         yrmin = pxyd(2,ns1) - a
-         yrmax = pxyd(2,ns3) + a
-      endif
-c
-c     initialisation du tableau noartr
-      do 5 i=1,mxartr
-c        le numero de l'arete est inconnu
-         noartr(1,i) = 0
-c        le chainage sur le triangle vide suivant
-         noartr(2,i) = i+1
- 5    continue
-      noartr(2,mxartr) = 0
-      n1artr = 1
-c
-c     parcours des te jusqu'a trianguler toutes les feuilles (triangles eq)
-c     =====================================================================
-c     initialisation de la queue sur les te
-      ierr   = 0
-      lequeu = 1
-      lhqueu = 0
-c     la racine de letree initialise la queue
-      laqueu(1) = 1
-c
-c     tant que la longueur de la queue est >=0 traiter le debut de queue
- 10   if( lhqueu .ge. 0 ) then
-c
-c        le triangle te a traiter
-         i   = lequeu - lhqueu
-         if( i .le. 0 ) i = mxqueu + i
-         nte = laqueu( i )
-c        la longueur est reduite
-         lhqueu = lhqueu - 1
-c
-c        nte est il un sous-triangle feuille (minimal) ?
- 15      if( letree(0,nte) .gt. 0 ) then
-c           non les 4 sous-triangles sont mis dans la queue
-            if( lhqueu + 4 .ge. mxqueu ) then
-               write(imprim,*) 'tetrte: saturation de la queue'
-               ierr = 5
-               return
-            endif
-            do 20 i=3,0,-1
-c              ajout du sous-triangle i
-               lhqueu = lhqueu + 1
-               lequeu = lequeu + 1
-               if( lequeu .gt. mxqueu ) lequeu = lequeu - mxqueu
-               laqueu( lequeu ) = letree( i, nte )
- 20         continue
-            goto 10
-         endif
-c
-c        ici nte est un triangle minimal non subdivise
-c        ---------------------------------------------
-c        le te est il dans le cadre englobant de l'objet ?
-         ns1 = letree(6,nte)
-         ns2 = letree(7,nte)
-         ns3 = letree(8,nte)
-         if( pxyd(1,ns1) .gt. pxyd(1,ns2) ) then
-            dmin = pxyd(1,ns2)
-            dmax = pxyd(1,ns1)
-         else
-            dmin = pxyd(1,ns1)
-            dmax = pxyd(1,ns2)
-         endif
-         if( (xrmin .le. dmin .and. dmin .le. xrmax) .or.
-     %       (xrmin .le. dmax .and. dmax .le. xrmax) ) then
-            if( pxyd(2,ns1) .gt. pxyd(2,ns3) ) then
-               dmin = pxyd(2,ns3)
-               dmax = pxyd(2,ns1)
-            else
-               dmin = pxyd(2,ns1)
-               dmax = pxyd(2,ns3)
-            endif
-            if( (yrmin .le. dmin .and. dmin .le. yrmax) .or.
-     %          (yrmin .le. dmax .and. dmax .le. yrmax) ) then
-c
-c              te minimal et interne au rectangle englobant
-c              --------------------------------------------
-c              recherche du nombre de niveaux entre nte et les te voisins
-c              par ses aretes
-               nbmili = 0
-               do 30 i=1,3
-c
-c                 a priori pas de milieu de l'arete i du te nte
-                  milieu(i) = 0
-c
-c                 recherche de noteva te voisin de nte par l'arete i
-                  call n1trva( nte, i, letree, noteva, niveau )
-c                 noteva  : >0 numero letree du te voisin par l'arete i
-c                           =0 si pas de te voisin (racine , ... )
-c                 niveau  : =0 si nte et noteva ont meme taille
-c                           >0 nte est 4**niveau fois plus petit que noteva
-                  if( noteva .gt. 0 ) then
-c                    il existe un te voisin
-                     if( letree(0,noteva) .gt. 0 ) then
-c                       noteva est plus petit que nte
-c                       => recherche du numero du milieu du cote=sommet du te no
-c                       le sous-te 0 du te noteva
-                        nsot = letree(0,noteva)
-c                       le numero dans pxyd du milieu de l'arete i de nte
-                        milieu( i ) = letree( 5+nopre3(i), nsot )
-                        nbmili = nbmili + 1
-                     endif
-                  endif
-c
- 30            continue
-c
-c              triangulation du te nte en fonction du nombre de ses milieux
-               goto( 50, 100, 200, 300 ) , nbmili + 1
-c
-c              0 milieu => 1 triangle = le te nte
-c              ----------------------------------
- 50            call f0trte( letree(0,nte),  pxyd,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nbtr,   nutr,   ierr )
-               if( ierr .ne. 0 ) return
-               goto 10
-c
-c              1 milieu => 2 triangles = 2 demi te
-c              -----------------------------------
- 100           call f1trte( letree(0,nte),  pxyd,   milieu,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nbtr,   nutr,   ierr )
-               if( ierr .ne. 0 ) return
-               goto 10
-c
-c              2 milieux => 3 triangles
-c              -----------------------------------
- 200           call f2trte( letree(0,nte),  pxyd,   milieu,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nbtr,   nutr,   ierr )
-               if( ierr .ne. 0 ) return
-               goto 10
-c
-c              3 milieux => 4 triangles = 4 quart te
-c              -------------------------------------
- 300           call f3trte( letree(0,nte),  pxyd,   milieu,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nbtr,   nutr,   ierr )
-               if( ierr .ne. 0 ) return
-               goto 10
-            endif
-         endif
-         goto 10
-      endif
-      end
-
-
-      subroutine aisoar( mosoar, mxsoar, nosoar, na1 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    chainer en colonne lchain les aretes non vides et
-c -----    non frontalieres du tableau nosoar
-c
-c entrees:
-c --------
-c mosoar : nombre maximal d'entiers par arete dans le tableau nosoar
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c
-c modifies :
-c ----------
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          nosoar(lchain,i)=arete interne suivante
-c
-c sortie :
-c --------
-c na1    : numero dans nosoar de la premiere arete interne
-c          les suivantes sont nosoar(lchain,na1), ...
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter (lchain=6)
-      integer    nosoar(mosoar,mxsoar)
-c
-c     formation du chainage des aretes internes a echanger eventuellement
-c     recherche de la premiere arete non vide et non frontaliere
-      do 10 na1=1,mxsoar
-         if( nosoar(1,na1) .gt. 0 .and. nosoar(3,na1) .le. 0 ) goto 15
- 10   continue
-c
-c     protection de la premiere arete non vide et non frontaliere
- 15   na0 = na1
-      do 20 na=na1+1,mxsoar
-         if( nosoar(1,na) .gt. 0 .and. nosoar(3,na) .le. 0 ) then
-c           arete interne => elle est chainee a partir de la precedente
-            nosoar(lchain,na0) = na
-            na0 = na
-         endif
- 20   continue
-c
-c     la derniere arete interne n'a pas de suivante
-      nosoar(lchain,na0) = 0
-      end
-
-
-      subroutine tedela( pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar, n1ardv,
-     %                   moartr, mxartr, n1artr, noartr, modifs )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    pour toutes les aretes chainees dans nosoar(lchain,*)
-c -----    du tableau nosoar
-c          echanger la diagonale des 2 triangles si le sommet oppose
-c          a un triangle ayant en commun une arete appartient au cercle
-c          circonscrit de l'autre (violation boule vide delaunay)
-c
-c entrees:
-c --------
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c
-c modifies :
-c ----------
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete dans le tableau nosoar
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c n1ardv : numero dans nosoar de la premiere arete du chainage
-c          des aretes a rendre delaunay
-c
-c moartr : nombre d'entiers par triangle dans le tableau noartr
-c mxartr : nombre maximal de triangles declarables dans noartr
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c modifs : nombre d'echanges de diagonales pour maximiser la qualite
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter        (lchain=6)
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*), surtd2, s123, s142, s143, s234,
-     %                  s12, s34, a12, cetria(3), r0
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*)
-c
-c     le nombre d'echanges de diagonales pour minimiser l'aire
-      modifs = 0
-      r0     = 0
-c
-c     la premiere arete du chainage des aretes a rendre delaunay
-      na0 = n1ardv
-c
-c     tant que la pile des aretes a echanger eventuellement est non vide
-c     ==================================================================
- 20   if( na0 .gt. 0 ) then
-c
-c        l'arete a traiter
-         na  = na0
-c        la prochaine arete a traiter
-         na0 = nosoar(lchain,na0)
-c
-c        l'arete est marquee traitee avec le numero -1
-         nosoar(lchain,na) = -1
-c
-c        l'arete est elle active?
-         if( nosoar(1,na) .eq. 0 ) goto 20
-c
-c        si arete frontaliere pas d'echange possible
-         if( nosoar(3,na) .gt. 0 ) goto 20
-c
-c        existe-t-il 2 triangles ayant cette arete commune?
-         if( nosoar(4,na) .le. 0 .or. nosoar(5,na) .le. 0 ) goto 20
-c
-c        aucun des 2 triangles est-il desactive?
-         if( noartr(1,nosoar(4,na)) .eq. 0 .or.
-     %       noartr(1,nosoar(5,na)) .eq. 0 ) goto 20
-c
-c        l'arete appartient a deux triangles actifs
-c        le numero des 4 sommets du quadrangle des 2 triangles
-         call mt4sqa( na, moartr, noartr, mosoar, nosoar,
-     %                ns1, ns2, ns3, ns4 )
-         if( ns4 .eq. 0 ) goto 20
-c
-c        carre de la longueur de l'arete ns1 ns2
-         a12 = (pxyd(1,ns2)-pxyd(1,ns1))**2+(pxyd(2,ns2)-pxyd(2,ns1))**2
-c
-c        comparaison de la somme des aires des 2 triangles
-c        -------------------------------------------------
-c        calcul des surfaces des triangles 123 et 142 de cette arete
-         s123=surtd2( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3) )
-         s142=surtd2( pxyd(1,ns1), pxyd(1,ns4), pxyd(1,ns2) )
-         s12 = abs( s123 ) + abs( s142 )
-         if( s12 .le. 0.001*a12 ) goto 20
-c
-c        calcul des surfaces des triangles 143 et 234 de cette arete
-         s143=surtd2( pxyd(1,ns1), pxyd(1,ns4), pxyd(1,ns3) )
-         s234=surtd2( pxyd(1,ns2), pxyd(1,ns3), pxyd(1,ns4) )
-         s34 = abs( s234 ) + abs( s143 )
-c
-         if( abs(s34-s12) .gt. 1d-15*s34 ) goto 20
-c
-c        quadrangle convexe : le critere de delaunay intervient
-c        ------------------   ---------------------------------
-c        calcul du centre et rayon de la boule circonscrite a 123
-c        pas d'affichage si le triangle est degenere
-         ierr = -1
-         call cenced( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3), cetria,
-     %                ierr )
-         if( ierr .gt. 0 ) then
-c           ierr=1 si triangle degenere  => abandon
-            goto 20
-         endif
-c
-         if( (cetria(1)-pxyd(1,ns4))**2+(cetria(2)-pxyd(2,ns4))**2
-     %       .lt. cetria(3) ) then
-c
-c           protection contre une boucle infinie sur le meme cercle
-            if( r0 .eq. cetria(3) ) goto 20
-c
-c           oui: ns4 est dans le cercle circonscrit a ns1 ns2 ns3
-c           => ns3 est aussi dans le cercle circonscrit de ns1 ns2 ns4
-c
-cccc           les 2 triangles d'arete na sont effaces
-ccc            do 25 j=4,5
-ccc               nt = nosoar(j,na)
-cccc              trace du triangle nt
-ccc               call mttrtr( pxyd, nt, moartr, noartr, mosoar, nosoar,
-ccc     %                      ncnoir, ncjaun )
-ccc 25         continue
-c
-c           echange de la diagonale 12 par 34 des 2 triangles
-            call te2t2t( na,     mosoar, n1soar, nosoar, noarst,
-     %                   moartr, noartr, na34 )
-            if( na34 .eq. 0 ) goto 20
-            r0 = cetria(3)
-c
-c           l'arete na34 est marquee traitee
-            nosoar(lchain,na34) = -1
-            modifs = modifs + 1
-c
-c           les aretes internes peripheriques des 2 triangles sont enchainees
-            do 60 j=4,5
-               nt = nosoar(j,na34)
-cccc              trace du triangle nt
-ccc               call mttrtr( pxyd, nt, moartr, noartr, mosoar, nosoar,
-ccc     %                      ncoran, ncgric )
-               do 50 i=1,3
-                  n = abs( noartr(i,nt) )
-                  if( n .ne. na34 ) then
-                     if( nosoar(3,n)      .eq.  0  .and.
-     %                   nosoar(lchain,n) .eq. -1 ) then
-c                        cette arete marquee est chainee pour etre traitee
-                         nosoar(lchain,n) = na0
-                         na0 = n
-                     endif
-                  endif
- 50            continue
- 60         continue
-            goto 20
-         endif
-c
-c        retour en haut de la pile des aretes a traiter
-         goto 20
-      endif
-      end
-
-
-      subroutine terefr( nbarpi, pxyd,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, larmin, notrcf,
-     %                   nbarpe, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   recherche des aretes de la frontiere non dans la triangulation
-c -----   triangulation frontale pour les reobtenir
-c
-c         attention: le chainage lchain de nosoar devient celui des cf
-c
-c entrees:
-c --------
-c          le tableau nosoar
-c nbarpi : numero du dernier point interne impose par l'utilisateur
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxarcf : nombre de variables des tableaux n1arcf, noarcf, larmin, notrcf
-c
-c modifies:
-c ---------
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c
-c auxiliaires :
-c -------------
-c n1arcf : tableau (0:mxarcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxarcf) auxiliaire d'entiers
-c larmin : tableau (mxarcf)   auxiliaire d'entiers
-c notrcf : tableau (mxarcf)   auxiliaire d'entiers
-c
-c sortie :
-c --------
-c nbarpe : nombre d'aretes perdues puis retrouvees
-c ierr   : =0 si pas d'erreur
-c          >0 si une erreur est survenue
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter        (lchain=6)
-      common / unites / lecteu,imprim,intera,nunite(29)
-      double precision  pxyd(3,*)
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,*),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf)
-c
-c     le nombre d'aretes de la frontiere non arete de la triangulation
-      nbarpe = 0
-c
-c     initialisation du chainage des aretes des cf => 0 arete de cf
-      do 10 narete=1,mxsoar
-         nosoar( lchain, narete) = -1
- 10   continue
-c
-c     boucle sur l'ensemble des aretes actuelles
-c     ==========================================
-      do 30 narete=1,mxsoar
-c
-         if( nosoar(3,narete) .gt. 0 ) then
-c           arete appartenant a une ligne => frontaliere
-c
-            if(nosoar(4,narete) .le. 0 .or. nosoar(5,narete) .le. 0)then
-c              l'arete narete frontaliere n'appartient pas a 2 triangles
-c              => elle est perdue
-               nbarpe = nbarpe + 1
-c
-c              le numero des 2 sommets de l'arete frontaliere perdue
-               ns1 = nosoar( 1, narete )
-               ns2 = nosoar( 2, narete )
-c               write(imprim,10000) ns1,(pxyd(j,ns1),j=1,2),
-c     %                             ns2,(pxyd(j,ns2),j=1,2)
-10000          format(' arete perdue a forcer',
-     %               (t24,'sommet=',i6,' x=',g13.5,' y=',g13.5))
-c
-c              traitement de cette arete perdue ns1-ns2
-               call tefoar( narete, nbarpi, pxyd,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, n1artr, noartr, noarst,
-     %                      mxarcf, n1arcf, noarcf, larmin, notrcf,
-     %                      ierr )
-               if( ierr .ne. 0 ) return
-c
-c              fin du traitement de cette arete perdue et retrouvee
-            endif
-         endif
-c
- 30   continue
-      end
-
-
-      subroutine tesuex( nblftr, nulftr,
-     %                   ndtri0, nbsomm, pxyd, nslign,
-     %                   mosoar, mxsoar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr, noarst,
-     %                   nbtria, letrsu, ierr  )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    supprimer du tableau noartr les triangles externes au domaine
-c -----    en annulant le numero de leur 1-ere arete dans noartr
-c          et en les chainant comme triangles vides
-c
-c entrees:
-c --------
-c nblftr : nombre de  lignes fermees definissant la surface
-c nulftr : numero des lignes fermees definissant la surface
-c ndtri0 : plus grand numero dans noartr d'un triangle
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c nslign : tableau du numero de sommet dans sa ligne pour chaque
-c          sommet frontalier
-c          numero du point dans le lexique point si interne impose
-c          0 si le point est interne non impose par l'utilisateur
-c         -1 si le sommet est externe au domaine
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles declarables
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero nosoar d'une arete de sommet i
-c
-c sorties:
-c --------
-c nbtria : nombre de triangles internes au domaine
-c letrsu : letrsu(nt)=numero du triangle interne, 0 sinon
-c noarst : noarst(i) numero nosoar d'une arete du sommet i (modifi'e)
-c ierr   : 0 si pas d'erreur, >0 sinon
-cc++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc        mai 1999
-c2345x7..............................................................012
-      double precision  pxyd(3,*)
-      integer           nulftr(nblftr),nslign(nbsomm),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*)
-      integer           letrsu(1:ndtri0)
-      double precision  dmin
-c
-c     les triangles sont a priori non marques
-      do 5 nt=1,ndtri0
-         letrsu(nt) = 0
- 5    continue
-c
-c     les aretes sont marquees non chainees
-      do 10 noar1=1,mxsoar
-         nosoar(6,noar1) = -2
- 10   continue
-c
-c     recherche du sommet de la triangulation de plus petite abscisse
-c     ===============================================================
-      ntmin = 0
-      dmin  = 1d38
-      do 20 i=1,nbsomm
-         if( pxyd(1,i) .lt. dmin ) then
-c           le nouveau minimum
-            noar1 = noarst(i)
-            if( noar1 .gt. 0 ) then
-c              le sommet appartient a une arete de triangle
-               if( nosoar(4,noar1) .gt. 0 ) then
-c                 le nouveau minimum
-                  dmin  = pxyd(1,i)
-                  ntmin = i
-               endif
-            endif
-         endif
- 20   continue
-c
-c     une arete de sommet ntmin
-      noar1 = noarst( ntmin )
-c     un triangle d'arete noar1
-      ntmin = nosoar( 4, noar1 )
-      if( ntmin .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         kerr(1) = 'pas de triangle d''abscisse minimale'
-c         call lereur
-         write(imprim,*) 'pas de triangle d''abscisse minimale'
-         ierr = 2
-         goto 9990
-      endif
-c
-c     chainage des 3 aretes du triangle ntmin
-c     =======================================
-c     la premiere arete du chainage des aretes traitees
-      noar1 = abs( noartr(1,ntmin) )
-      na0   = abs( noartr(2,ntmin) )
-c     elle est chainee sur la seconde arete du triangle ntmin
-      nosoar(6,noar1) = na0
-c     les 2 autres aretes du triangle ntmin sont chainees
-      na1 = abs( noartr(3,ntmin) )
-c     la seconde est chainee sur la troisieme arete
-      nosoar(6,na0) = na1
-c     la troisieme n'a pas de suivante
-      nosoar(6,na1) = 0
-c
-c     le triangle ntmin est a l'exterieur du domaine
-c     tous les triangles externes sont marques -123 456 789
-c     les triangles de l'autre cote d'une arete sur une ligne
-c     sont marques: no de la ligne de l'arete * signe oppose
-c     =======================================================
-      ligne0 = 0
-      ligne  = -123 456 789
-c
- 40   if( noar1 .ne. 0 ) then
-c
-c        l'arete noar1 du tableau nosoar est a traiter
-c        ---------------------------------------------
-         noar = noar1
-c        l'arete suivante devient la premiere a traiter ensuite
-         noar1 = nosoar(6,noar1)
-c        l'arete noar est traitee
-         nosoar(6,noar) = -3
-c
-         do 60 i=4,5
-c
-c           l'un des 2 triangles de l'arete
-            nt = nosoar(i,noar)
-            if( nt .gt. 0 ) then
-c
-c              triangle deja traite pour une ligne anterieure?
-               if(     letrsu(nt)  .ne. 0      .and.
-     %             abs(letrsu(nt)) .ne. ligne ) goto 60
-c
-cccc              trace du triangle nt en couleur ligne0
-ccc               call mttrtr( pxyd,   nt, moartr, noartr, mosoar, nosoar,
-ccc     %                      ligne0, ncnoir )
-c
-c              le triangle est marque avec la valeur de ligne
-               letrsu(nt) = ligne
-c
-c              chainage eventuel des autres aretes de ce triangle
-c              si ce n'est pas encore fait
-               do 50 j=1,3
-c
-c                 le numero na de l'arete j du triangle nt dans nosoar
-                  na = abs( noartr(j,nt) )
-                  if( nosoar(6,na) .ne. -2 ) goto 50
-c
-c                 le numero de 1 a nblftr dans nulftr de la ligne de l'arete
-                  nl = nosoar(3,na)
-c
-c                 si l'arete est sur une ligne fermee differente de celle envelo
-c                 et non marquee alors examen du triangle oppose
-                  if( nl .gt. 0 ) then
-c
-                     if( nl .eq. ligne0 ) goto 50
-c
-c                    arete frontaliere de ligne non traitee
-c                    => passage de l'autre cote de la ligne
-c                    le triangle de l'autre cote de la ligne est recherche
-                     if( nt .eq. abs( nosoar(4,na) ) ) then
-                        nt2 = 5
-                     else
-                        nt2 = 4
-                     endif
-                     nt2 = abs( nosoar(nt2,na) )
-                     if( nt2 .gt. 0 ) then
-c
-c                       le triangle nt2 de l'autre cote est marque avec le
-c                       avec le signe oppose de celui de ligne
-                        if( ligne .ge. 0 ) then
-                           lsigne = -1
-                        else
-                           lsigne =  1
-                        endif
-                        letrsu(nt2) = lsigne * nl
-c
-c                       temoin de ligne a traiter ensuite dans nulftr
-                        nulftr(nl) = -abs( nulftr(nl) )
-c
-cccc                       trace du triangle nt2 en jaune borde de magenta
-ccc                        call mttrtr( pxyd,nt2,
-ccc     %                               moartr,noartr,mosoar,nosoar,
-ccc     %                               ncjaun, ncmage )
-c
-c                       l'arete est traitee
-                        nosoar(6,na) = -3
-c
-                     endif
-c
-c                    l'arete est traitee
-                     goto 50
-c
-                  endif
-c
-c                 arete non traitee => elle est chainee
-                  nosoar(6,na) = noar1
-                  noar1 = na
-c
- 50            continue
-c
-            endif
- 60      continue
-c
-         goto 40
-      endif
-c     les triangles de la ligne fermee ont tous ete marques
-c     plus d'arete chainee
-c
-c     recherche d'une nouvelle ligne fermee a traiter
-c     ===============================================
- 65   do 70 nl=1,nblftr
-         if( nulftr(nl) .lt. 0 ) goto 80
- 70   continue
-c     plus de ligne fermee a traiter
-      goto 110
-c
-c     tous les triangles de cette composante connexe
-c     entre ligne et ligne0 vont etre marques
-c     ==============================================
-c     remise en etat du numero de ligne
-c     nl est le numero de la ligne dans nulftr a traiter
- 80   nulftr(nl) = -nulftr(nl)
-      do 90 nt2=1,ndtri0
-         if( abs(letrsu(nt2)) .eq. nl ) goto 92
- 90   continue
-c
-c     recherche de l'arete j du triangle nt2 avec ce numero de ligne nl
- 92   do 95 j=1,3
-c
-c        le numero de l'arete j du triangle dans nosoar
-         noar1 = 0
-         na0   = abs( noartr(j,nt2) )
-         if( nl .eq. nosoar(3,na0) ) then
-c
-c           na0 est l'arete de ligne nl
-c           l'arete suivante du triangle nt2
-            i   = mod(j,3) + 1
-c           le numero dans nosoar de l'arete i de nt2
-            na1 = abs( noartr(i,nt2) )
-            if( nosoar(6,na1) .eq. -2 ) then
-c              arete non traitee => elle est la premiere du chainage
-               noar1 = na1
-c              pas de suivante dans ce chainage
-               nosoar(6,na1) = 0
-            else
-               na1 = 0
-            endif
-c
-c           l'eventuelle seconde arete suivante
-            i  = mod(i,3) + 1
-            na = abs( noartr(i,nt2) )
-            if( nosoar(6,na) .eq. -2 ) then
-               if( na1 .eq. 0 ) then
-c                 1 arete non traitee et seule a chainer
-                  noar1 = na
-                  nosoar(6,na) = 0
-               else
-c                 2 aretes a chainer
-                  noar1 = na
-                  nosoar(6,na) = na1
-               endif
-            endif
-c
-            if( noar1 .gt. 0 ) then
-c
-c              il existe au moins une arete a visiter pour ligne
-c              marquage des triangles internes a la ligne nl
-               ligne  = letrsu(nt2)
-               ligne0 = nl
-               goto 40
-c
-            else
-c
-c              nt2 est le seul triangle de la ligne fermee
-               goto 65
-c
-            endif
-         endif
- 95   continue
-c
-c     reperage des sommets internes ou externes dans nslign
-c     nslign(sommet externe au domaine)=-1
-c     nslign(sommet interne au domaine)= 0
-c     =====================================================
- 110  do 170 ns1=1,nbsomm
-c        tout sommet non sur la frontiere ou interne impose
-c        est suppose externe
-         if( nslign(ns1) .eq. 0 ) nslign(ns1) = -1
- 170  continue
-c
-c     les triangles externes sont marques vides dans le tableau noartr
-c     ================================================================
-      nbtria = 0
-      do 200 nt=1,ndtri0
-c
-         if( letrsu(nt) .le. 0 ) then
-c
-c           triangle nt externe
-            if( noartr(1,nt) .ne. 0 ) then
-c              la premiere arete est annulee
-               noartr(1,nt) = 0
-c              le triangle nt est considere comme etant vide
-               noartr(2,nt) = n1artr
-               n1artr = nt
-            endif
-c
-         else
-c
-c           triangle nt interne
-            nbtria = nbtria + 1
-            letrsu(nt) = nbtria
-c
-c           marquage des 3 sommets du triangle nt
-            do 190 i=1,3
-c              le numero nosoar de l'arete i du triangle nt
-               noar = abs( noartr(i,nt) )
-c              le numero des 2 sommets
-               ns1 = nosoar(1,noar)
-               ns2 = nosoar(2,noar)
-c              mise a jour du numero d'une arete des 2 sommets de l'arete
-               noarst( ns1 ) = noar
-               noarst( ns2 ) = noar
-c              ns1 et ns2 sont des sommets de la triangulation du domaine
-               if( nslign(ns1) .lt. 0 ) nslign(ns1)=0
-               if( nslign(ns2) .lt. 0 ) nslign(ns2)=0
- 190        continue
-c
-         endif
-c
- 200  continue
-c     ici tout sommet externe ns verifie nslign(ns)=-1
-c
-c     les triangles externes sont mis a zero dans nosoar
-c     ==================================================
-      do 300 noar=1,mxsoar
-c
-         if( nosoar(1,noar) .gt. 0 ) then
-c
-c           le second triangle de l'arete noar
-            nt = nosoar(5,noar)
-            if( nt .gt. 0 ) then
-c              si le triangle nt est externe
-c              alors il est supprime pour l'arete noar
-               if( letrsu(nt) .le. 0 ) nosoar(5,noar)=0
-            endif
-c
-c           le premier triangle de l'arete noar
-            nt = nosoar(4,noar)
-            if( nt .gt. 0 ) then
-               if( letrsu(nt) .le. 0 ) then
-c                 si le triangle nt est externe
-c                 alors il est supprime pour l'arete noar
-c                 et l'eventuel triangle oppose prend sa place
-c                 en position 4 de nosoar
-                  if( nosoar(5,noar) .gt. 0 ) then
-                     nosoar(4,noar)=nosoar(5,noar)
-                     nosoar(5,noar)=0
-                  else
-                     nosoar(4,noar)=0
-                  endif
-               endif
-            endif
-         endif
-c
- 300  continue
-c
-c     remise en etat pour eviter les modifications de ladefi
- 9990 do 9991 nl=1,nblftr
-         if( nulftr(nl) .lt. 0 ) nulftr(nl)=-nulftr(nl)
- 9991 continue
-      return
-      end
-
-
-
-      subroutine trp1st( ns,     noarst, mosoar, nosoar, moartr, noartr,
-     %                   mxpile, lhpile, lapile )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   recherche des triangles de noartr partageant le sommet ns
-c -----
-c         limite: un camembert de centre ns entame 2 fois
-c                 ne donne que l'une des parties
-c
-c entrees:
-c --------
-c ns     : numero du sommet
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c mxpile : nombre maximal de triangles empilables
-c
-c sorties :
-c --------
-c lhpile : >0 nombre de triangles empiles
-c          =0       si impossible de tourner autour du point
-c          =-lhpile si apres butee sur la frontiere il y a a nouveau
-c          butee sur la frontiere . a ce stade on ne peut dire si tous
-c          les triangles ayant ce sommet ont ete recenses
-c          ce cas arrive seulement si le sommet est sur la frontiere
-c lapile : numero dans noartr des triangles de sommet ns
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,*),
-     %                  noarst(*)
-      integer           lapile(1:mxpile)
-      integer           nosotr(3)
-c
-c     la premiere arete de sommet ns
-      nar = noarst( ns )
-      if( nar .le. 0 ) then
-         write(imprim,*) 'trp1st: sommet',ns,' sans arete'
-         goto 9999
-      endif
-c
-c     l'arete nar est elle active?
-      if( nosoar(1,nar) .le. 0 ) then
-ccc         write(imprim,*) 'trp1st: arete vide',nar,
-ccc     %                  ' st1:', nosoar(1,nar),' st2:',nosoar(2,nar)
-         goto 9999
-      endif
-c
-c     le premier triangle de sommet ns
-      nt0 = abs( nosoar(4,nar) )
-      if( nt0 .le. 0 ) then
-         write(imprim,*) 'trp1st: sommet',ns,' dans aucun triangle'
-         goto 9999
-      endif
-c
-c     le triangle est il interne?
-      if( noartr(1,nt0) .eq. 0 ) goto 9999
-c
-c     le numero des 3 sommets du triangle nt0 dans le sens direct
-      call nusotr( nt0, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c     reperage du sommet ns dans le triangle nt0
-      do 5 nar=1,3
-         if( nosotr(nar) .eq. ns ) goto 10
- 5    continue
-      nta = nt0
-      goto 9995
-c
-c     ns retrouve : le triangle nt0 est empile
- 10   lhpile = 1
-      lapile(1) = nt0
-      nta = nt0
-c
-c     recherche dans le sens des aiguilles d'une montre
-c     (sens indirect) du triangle nt1 de l'autre cote de l'arete
-c     nar du triangle et en tournant autour du sommet ns
-c     ==========================================================
-      noar = abs( noartr(nar,nt0) )
-c     le triangle nt1 oppose du triangle nt0 par l'arete noar
-      if( nosoar(4,noar) .eq. nt0 ) then
-         nt1 = nosoar(5,noar)
-      else
-         nt1 = nosoar(4,noar)
-      endif
-c
-c     la boucle sur les triangles nt1 de sommet ns dans le sens indirect
-c     ==================================================================
-      if( nt1 .gt. 0 ) then
-c
-         if( noartr(1,nt1) .eq. 0 ) goto 30
-c
-c        le triangle nt1 n'a pas ete detruit. il est actif
-c        le triangle oppose par l'arete noar existe
-c        le numero des 3 sommets du triangle nt1 dans le sens direct
- 15      call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c        reperage du sommet ns dans nt1
-         do 20 nar=1,3
-            if( nosotr(nar) .eq. ns ) goto 25
- 20      continue
-         nta = nt1
-         goto 9995
-c
-c        nt1 est empile
- 25      if( lhpile .ge. mxpile ) goto 9990
-         lhpile = lhpile + 1
-         lapile(lhpile) = nt1
-c
-c        le triangle nt1 de l'autre cote de l'arete de sommet ns
-c        sauvegarde du precedent triangle dans nta
-         nta  = nt1
-         noar = abs( noartr(nar,nt1) )
-         if( nosoar(4,noar) .eq. nt1 ) then
-            nt1 = nosoar(5,noar)
-         else
-            nt1 = nosoar(4,noar)
-         endif
-         if( nt1 .le. 0   ) goto 30
-c        le triangle suivant est a l'exterieur
-         if( nt1 .ne. nt0 ) goto 15
-c
-c        recherche terminee par arrivee sur nt0
-c        les triangles forment un "cercle" de "centre" ns
-         return
-c
-      endif
-c
-c     pas de triangle voisin a nt1
-c     ============================
-c     le parcours passe par 1 des triangles exterieurs
-c     le parcours est inverse par l'arete de gauche
-c     le triangle nta est le premier triangle empile
- 30   lhpile = 1
-      lapile(lhpile) = nta
-c
-c     le numero des 3 sommets du triangle nta dans le sens direct
-      call nusotr( nta, mosoar, nosoar, moartr, noartr, nosotr )
-      do 32 nar=1,3
-         if( nosotr(nar) .eq. ns ) goto 33
- 32   continue
-      goto 9995
-c
-c     l'arete qui precede (rotation / ns dans le sens direct)
- 33   if( nar .eq. 1 ) then
-         nar = 3
-      else
-         nar = nar - 1
-      endif
-c
-c     le triangle voisin de nta dans le sens direct
-      noar = abs( noartr(nar,nta) )
-      if( nosoar(4,noar) .eq. nta ) then
-         nt1 = nosoar(5,noar)
-      else
-         nt1 = nosoar(4,noar)
-      endif
-      if( nt1 .le. 0 ) then
-c        un seul triangle contient ns
-         goto 70
-      endif
-c
-c     boucle sur les triangles de sommet ns dans le sens direct
-c     ==========================================================
- 40   if( noartr(1,nt1) .eq. 0 ) goto 70
-c
-c     le triangle nt1 n'a pas ete detruit. il est actif
-c     le numero des 3 sommets du triangle nt1 dans le sens direct
-      call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c     reperage du sommet ns dans nt1
-      do 50 nar=1,3
-         if( nosotr(nar) .eq. ns ) goto 60
- 50   continue
-      nta = nt1
-      goto 9995
-c
-c     nt1 est empile
- 60   if( lhpile .ge. mxpile ) goto 9990
-      lhpile = lhpile + 1
-      lapile(lhpile) = nt1
-c
-c     l'arete qui precede dans le sens direct
-      if( nar .eq. 1 ) then
-         nar = 3
-      else
-         nar = nar - 1
-      endif
-c
-c     l'arete de sommet ns dans nosoar
-      noar = abs( noartr(nar,nt1) )
-c
-c     le triangle voisin de nta dans le sens direct
-      nta  = nt1
-      if( nosoar(4,noar) .eq. nt1 ) then
-         nt1 = nosoar(5,noar)
-      else
-         nt1 = nosoar(4,noar)
-      endif
-      nta = nt1
-      if( nt1 .gt. 0 ) goto 40
-c
-c     butee sur le trou => fin des triangles de sommet ns
-c     ----------------------------------------------------
- 70   lhpile = -lhpile
-c     impossible ici de trouver les autres triangles de sommet ns
-c     les triangles de sommet ns ne forment pas une boule de centre ns
-      return
-c
-c     saturation de la pile des triangles
-c     -----------------------------------
- 9990 write(imprim,*) 'trp1st:saturation pile des triangles autour ',
-     %'sommet',ns
-      goto 9999
-c
-c     erreur triangle ne contenant pas le sommet ns
-c     ----------------------------------------------
- 9995 write(imprim,*) 'trp1st:triangle ',nta,' st=',
-     %   (nosotr(nar),nar=1,3),' sans le sommet' ,ns
-c
- 9999 lhpile = 0
-      return
-      end
-
-
-
-      subroutine nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calcul du numero des 3 sommets du triangle nt de noartr
-c -----    dans le sens direct (aire>0 si non degenere)
-c
-c entrees:
-c --------
-c nt     : numero du triangle dans le tableau noartr
-c mosoar : nombre maximal d'entiers par arete
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1=0 si triangle vide => arete2=triangle vide suivant
-c
-c sorties:
-c --------
-c nosotr : numero (dans le tableau pxyd) des 3 sommets du triangle
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      integer     nosoar(mosoar,*), noartr(moartr,*), nosotr(3)
-c
-c     les 2 sommets de l'arete 1 du triangle nt dans le sens direct
-      na = noartr( 1, nt )
-      if( na .gt. 0 ) then
-         nosotr(1) = 1
-         nosotr(2) = 2
-      else
-         nosotr(1) = 2
-         nosotr(2) = 1
-         na = -na
-      endif
-      nosotr(1) = nosoar( nosotr(1), na )
-      nosotr(2) = nosoar( nosotr(2), na )
-c
-c     l'arete suivante
-      na = abs( noartr(2,nt) )
-c
-c     le sommet nosotr(3 du triangle 123
-      nosotr(3) = nosoar( 1, na )
-      if( nosotr(3) .eq. nosotr(1) .or. nosotr(3) .eq. nosotr(2) ) then
-         nosotr(3) = nosoar(2,na)
-      endif
-      end
-
-
-      subroutine tesusp( nbarpi, pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxarcf, n1arcf, noarcf, larmin, notrcf, liarcf,
-     %                   nbstsu, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   supprimer de la triangulation les sommets de te trop proches
-c -----   soit d'un sommet frontalier ou point interne impose
-c         soit d'une arete frontaliere
-c
-c         attention: le chainage lchain de nosoar devient celui des cf
-c
-c entrees:
-c --------
-c nbarpi : numero du dernier point interne impose par l'utilisateur
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxarcf : nombre de variables des tableaux n1arcf, noarcf, larmin, notrcf
-c
-c modifies:
-c ---------
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c
-c auxiliaires :
-c -------------
-c n1arcf : tableau (0:mxarcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxarcf) auxiliaire d'entiers
-c larmin : tableau ( mxarcf ) auxiliaire d'entiers
-c notrcf : tableau ( mxarcf ) auxiliaire d'entiers
-c liarcf : tableau ( mxarcf ) auxiliaire d'entiers
-c
-c sortie :
-c --------
-c nbstsu : nombre de sommets de te supprimes
-c ierr   : =0 si pas d'erreur
-c          >0 si une erreur est survenue
-c          11 algorithme defaillant
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-c      parameter       ( quamal=0.3 ) => ok
-c      parameter       ( quamal=0.4 ) => pb pour le test ocean
-c      parameter       ( quamal=0.5 ) => pb pour le test ocean
-c
-      parameter       ( quamal=0.333, lchain=6 )
-      common / unites / lecteu,imprim,intera,nunite(29)
-      double precision  pxyd(3,*), qualit
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,*),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf),
-     %                  liarcf(mxarcf)
-c
-      integer           nosotr(3)
-      equivalence      (nosotr(1),ns1), (nosotr(2),ns2),
-     %                 (nosotr(3),ns3)
-c
-c     le nombre de sommets de te supprimes
-      nbstsu = 0
-c
-c     initialisation du chainage des aretes des cf => 0 arete de cf
-      do 10 narete=1,mxsoar
-         nosoar( lchain, narete ) = -1
- 10   continue
-c
-c     boucle sur l'ensemble des sommets frontaliers ou points internes
-c     ================================================================
-      do 100 ns = 1, nbarpi
-c
-cccc        le nombre de sommets supprimes pour ce sommet ns
-ccc         nbsuns = 0
-c
-c        la qualite minimale au dessous de laquelle le point proche
-c        interne est supprime
-         quaopt = quamal
-c
-c        une arete de sommet ns
- 15      narete = noarst( ns )
-         if( narete .le. 0 ) then
-c           erreur: le point appartient a aucune arete
-            write(imprim,*) 'sommet ',ns,' dans aucune arete'
-            ierr = 11
-            return
-         endif
-c
-c        recherche des triangles de sommet ns
-c        ils doivent former un contour ferme de type etoile
-         call trp1st( ns, noarst, mosoar, nosoar, moartr, noartr,
-     %                mxarcf, nbtrcf, notrcf )
-         if( nbtrcf .le. 0 ) then
-c           erreur: impossible de trouver tous les triangles de sommet ns
-c           seule une partie est a priori retrouvee
-            nbtrcf = -nbtrcf
-         endif
-c
-c        boucle sur les triangles de l'etoile du sommet ns
-         quamin = 2.0
-         do 20 i=1,nbtrcf
-c
-c           le numero des 3 sommets du triangle nt
-            nt = notrcf(i)
-            call nusotr( nt, mosoar, nosoar, moartr, noartr,
-     %                   nosotr )
-c           nosotr(1:3) est en equivalence avec ns1, ns2, ns3
-c
-c           la qualite du triangle ns1 ns2 ns3
-            call qutr2d( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3), qualit )
-            if( qualit .lt. quamin ) then
-               quamin = qualit
-               ntqmin = nt
-            endif
- 20      continue
-c
-c        bilan sur la qualite des triangles de sommet ns
-         if( quamin .lt. quaopt ) then
-c
-c           recherche du sommet de ntqmin le plus proche et non frontalier
-c           ==============================================================
-c           le numero des 3 sommets du triangle nt
-            call nusotr( ntqmin, mosoar, nosoar, moartr, noartr,
-     %                   nosotr )
-            nste   = 0
-            quamin = 1e28
-            do 30 j=1,3
-               if( nosotr(j) .ne. ns .and. nosotr(j) .gt. nbarpi ) then
-                  d = (pxyd(1,nosotr(j))-pxyd(1,ns))**2
-     %              + (pxyd(2,nosotr(j))-pxyd(2,ns))**2
-                  if( d .lt. quamin ) then
-                     quamin = d
-                     nste   = j
-                  endif
-               endif
- 30         continue
-c
-            if( nste .gt. 0 ) then
-c
-c              nste est le sommet le plus proche de ns de ce
-c              triangle de mauvaise qualite et sommet non encore traite
-               nste = nosotr( nste )
-c
-c              nste est un sommet de triangle equilateral
-c              => le sommet nste va etre supprime
-c              ==========================================
-               call te1stm( nste,   pxyd,   noarst,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      mxarcf, n1arcf, noarcf,
-     %                      larmin, notrcf, liarcf, ierr )
-               if( ierr .eq. 0 ) then
-c                 un sommet de te supprime de plus
-                  nbstsu = nbstsu + 1
-               else if( ierr .lt. 0 ) then
-c                 le sommet nste est externe donc non supprime
-c                 ou bien le sommet nste est le centre d'un cf dont toutes
-c                 les aretes simples sont frontalieres
-c                 dans les 2 cas le sommet n'est pas supprime
-                  ierr = 0
-                  goto 100
-               else
-c                 erreur motivant un arret de la triangulation
-                  return
-               endif
-c
-c              boucle jusqu'a obtenir une qualite suffisante
-c              si triangulation tres irreguliere =>
-c              destruction de beaucoup de points internes
-c              les 2 variables suivantes brident ces destructions massives
-ccc               nbsuns = nbsuns + 1
-               quaopt = quaopt * 0.8
-ccc               if( nbsuns .le. 5 ) goto 15
-               goto 15
-            endif
-         endif
-c
- 100  continue
-      end
-
-
-      subroutine teamqa( nutysu,
-     %                   noarst, mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxtrcf, notrcf, nostbo,
-     %                   n1arcf, noarcf, larmin,
-     %                   comxmi, nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but:    si la taille de l'arete moyenne est >ampli*taille souhaitee
-c ----    alors ajout d'un sommet barycentre du plus grand triangle
-c               de sommet ns
-c         si la taille de l'arete moyenne est <ampli/2*taille souhaitee
-c         alors suppression du sommet ns
-c         sinon le sommet ns devient le barycentre pondere de ses voisins
-c
-c         remarque: ampli est defini dans $mefisto/mail/tehote.f
-c         et doit avoir la meme valeur pour eviter trop de modifications
-c
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale()
-c            dont seules les 2 premieres composantes de uv sont actives
-c          autres options a definir...
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles declarables dans noartr
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c mxtrcf : nombre maximal de triangles empilables
-c nbarpi : numero du dernier sommet frontalier ou interne impose
-c nslign : tableau du numero de sommet dans sa ligne pour chaque
-c          sommet frontalier
-c          numero du point dans le lexique point si interne impose
-c          0 si le point est interne non impose par l'utilisateur
-c         -1 si le sommet est externe au domaine
-c comxmi : min et max des coordonneees des sommets du maillage
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de sommets de la triangulation
-c          (certains sommets internes ont ete desactives ou ajoutes)
-c pxyd   : tableau des coordonnees 2d des points
-c
-c auxiliaires:
-c ------------
-c notrcf : tableau ( mxtrcf ) auxiliaire d'entiers
-c          numero dans noartr des triangles de sommet ns
-c nostbo : tableau ( mxtrcf ) auxiliaire d'entiers
-c          numero dans pxyd des sommets des aretes simples de la boule
-c n1arcf : tableau (0:mxtrcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxtrcf) auxiliaire d'entiers
-c larmin : tableau ( mxtrcf ) auxiliaire d'entiers
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       juin 1997
-c....................................................................012
-      double precision  ampli,ampli2
-      parameter        (ampli=1.34d0,ampli2=ampli/2d0)
-      parameter        (lchain=6)
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      double precision  ponder, ponde1, xbar, ybar, x, y, surtd2
-      double precision  d, dmoy
-      double precision  d2d3(3,3)
-      real              origin(3), xyz(3)
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,*),
-     %                  noarst(*),
-     %                  notrcf(mxtrcf),
-     %                  nslign(*),
-     %                  nostbo(*),
-     %                  n1arcf(0:mxtrcf),
-     %                  noarcf(3,mxtrcf),
-     %                  larmin(mxtrcf)
-      double precision  comxmi(3,2)
-      integer           nosotr(3)
-c
-c     le nombre d'iterations pour ameliorer la qualite
-      nbitaq = 4
-      ier    = 0
-c
-c     initialisation du parcours
-      nbs1 = nbsomm
-      nbs2 = nbarpi + 1
-      nbs3 = -1
-c
-      do 5000 iter=1,nbitaq
-c
-c        le nombre de sommets supprimes
-         nbstsu = 0
-         nbbaaj = 0
-c
-c        coefficient de ponderation croissant avec les iterations
-         ponder = min( 1d0, ( 50 + (50*iter)/nbitaq ) * 0.01d0 )
-         ponde1 = 1d0 - ponder
-c
-c        l'ordre du parcours dans le sens croissant ou decroissant
-         nt   = nbs1
-         nbs1 = nbs2
-         nbs2 = nt
-c        alternance du parcours
-         nbs3 = -nbs3
-c
-         do 1000 ns = nbs1, nbs2, nbs3
-c
-c           le sommet est il interne au domaine?
-            if( nslign(ns) .ne. 0 ) goto 1000
-c
-c           existe-t-il une arete de sommet ns ?
- 10         noar = noarst( ns )
-            if( noar .le. 0 ) goto 1000
-c
-c           le 1-er triangle de l'arete noar
-            nt = nosoar( 4, noar )
-            if( nt .le. 0 ) goto 1000
-c
-c           recherche des triangles de sommet ns
-c           ils doivent former un contour ferme de type etoile
-            call trp1st( ns, noarst, mosoar, nosoar, moartr, noartr,
-     %                   mxtrcf, nbtrcf, notrcf )
-            if( nbtrcf .le. 0 ) goto 1000
-c
-c           mise a jour de la distance souhaitee
-            if( nutysu .gt. 0 ) then
-c              la fonction taille_ideale(x,y,z) existe
-c              calcul de pxyzd(3,ns) dans le repere initial => xyz(1:3)
-               call tetaid( nutysu, pxyd(1,ns), pxyd(2,ns),
-     %                      pxyd(3,ns), ier )
-            endif
-c
-c           boucle sur les triangles qui forment une boule autour du sommet ns
-            nbstbo = 0
-c           chainage des aretes simples de la boule a rendre delaunay
-            noar0  = 0
-            do 40 i=1,nbtrcf
-c
-c              le numero de l'arete du triangle nt ne contenant pas le sommet ns
-               nt = notrcf(i)
-               do 20 na=1,3
-c                 le numero de l'arete na dans le tableau nosoar
-                  noar = abs( noartr(na,nt) )
-                  if( nosoar(1,noar) .ne. ns   .and.
-     %                nosoar(2,noar) .ne. ns ) goto 25
- 20            continue
-c
-c              construction de la liste des sommets des aretes simples
-c              de la boule des triangles de sommet ns
-c              -------------------------------------------------------
- 25            do 35 na=1,2
-                  ns1 = nosoar(na,noar)
-                  do 30 j=nbstbo,1,-1
-                     if( ns1 .eq. nostbo(j) ) goto 35
- 30               continue
-c                 ns1 est un nouveau sommet a ajouter
-                  nbstbo = nbstbo + 1
-                  nostbo(nbstbo) = ns1
- 35            continue
-c
-c              noar est une arete potentielle a rendre delaunay
-               if( nosoar(3,noar) .eq. 0 ) then
-c                 arete non frontaliere
-                  nosoar(lchain,noar) = noar0
-                  noar0 = noar
-               endif
-c
- 40         continue
-c
-c           calcul des 2 coordonnees du barycentre de la boule du sommet ns
-c           calcul de la longueur moyenne des aretes issues du sommet ns
-c           ---------------------------------------------------------------
-            xbar = 0d0
-            ybar = 0d0
-            dmoy = 0d0
-            do 50 i=1,nbstbo
-               x    = pxyd(1,nostbo(i))
-               y    = pxyd(2,nostbo(i))
-               xbar = xbar + x
-               ybar = ybar + y
-               dmoy = dmoy + sqrt( (x-pxyd(1,ns))**2+(y-pxyd(2,ns))**2 )
- 50         continue
-            dmoy = dmoy / nbstbo
-c
-c           pas de modification de la topologie lors de la derniere iteration
-c           =================================================================
-            if( iter .eq. nbitaq ) goto 200
-c
-c           si la taille de l'arete moyenne est >ampli*taille souhaitee
-c           alors ajout d'un sommet barycentre du plus grand triangle
-c                 de sommet ns
-c           ===========================================================
-            if( dmoy .gt. ampli*pxyd(3,ns) ) then
-c
-               dmoy = 0d0
-               do 150 i=1,nbtrcf
-c                 recherche du plus grand triangle en surface
-                  call nusotr( notrcf(i), mosoar, nosoar,
-     %                         moartr, noartr, nosotr )
-                  d  = surtd2( pxyd(1,nosotr(1)),
-     %                         pxyd(1,nosotr(2)),
-     %                         pxyd(1,nosotr(3)) )
-                  if( d .gt. dmoy ) then
-                     dmoy = d
-                     imax = i
-                  endif
- 150           continue
-c
-c              ajout du barycentre du triangle notrcf(imax)
-               nt = notrcf( imax )
-               call nusotr( nt, mosoar, nosoar,
-     %                      moartr, noartr, nosotr )
-               if( nbsomm .ge. mxsomm ) then
-                  write(imprim,*) 'saturation du tableau pxyd'
-c                 abandon de l'amelioration du sommet ns
-                  goto 9999
-               endif
-               nbsomm = nbsomm + 1
-               do 160 i=1,3
-                  pxyd(i,nbsomm) = ( pxyd(i,nosotr(1))
-     %                             + pxyd(i,nosotr(2))
-     %                             + pxyd(i,nosotr(3)) ) / 3d0
- 160           continue
-c
-               if( nutysu .gt. 0 ) then
-c                 la fonction taille_ideale(x,y,z) existe
-c                 calcul de pxyzd(3,nbsomm) dans le repere initial => xyz(1:3)
-                  call tetaid( nutysu, pxyd(1,nbsomm), pxyd(2,nbsomm),
-     %                         pxyd(3,nbsomm), ier )
-               endif
-c
-c              sommet interne a la triangulation
-               nslign(nbsomm) = 0
-c
-c              les 3 aretes du triangle nt sont a rendre delaunay
-               do 170 i=1,3
-                  noar = abs( noartr(i,nt) )
-                  if( nosoar(3,noar) .eq. 0 ) then
-c                    arete non frontaliere
-                     if( nosoar(lchain,noar) .lt. 0 ) then
-c                       arete non encore chainee
-                        nosoar(lchain,noar) = noar0
-                        noar0 = noar
-                     endif
-                  endif
- 170           continue
-c
-c              triangulation du triangle de barycentre nbsomm
-c              protection a ne pas modifier sinon erreur!
-               call tr3str( nbsomm, nt,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nosotr, ierr )
-               if( ierr .ne. 0 ) goto 9999
-c
-c              un barycentre ajoute de plus
-               nbbaaj = nbbaaj + 1
-c
-c              les aretes chainees de la boule sont rendues delaunay
-               goto 900
-c
-            endif
-c
-c           si la taille de l'arete moyenne est <ampli/2*taille souhaitee
-c           alors suppression du sommet ns
-c           =============================================================
-            if( dmoy .lt. ampli2*pxyd(3,ns) ) then
-c              remise a -1 du chainage des aretes peripheriques de la boule ns
-               noar = noar0
- 90            if( noar .gt. 0 ) then
-c                 protection du no de l'arete suivante
-                  na = nosoar(lchain,noar)
-c                 l'arete interne est remise a -1
-                  nosoar(lchain,noar) = -1
-c                 l'arete suivante
-                  noar = na
-                  goto 90
-               endif
-               call te1stm( ns,     pxyd,   noarst,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      mxtrcf, n1arcf, noarcf,
-     %                      larmin, notrcf, nostbo,
-     %                      ierr )
-               if( ierr .lt. 0 ) then
-c                 le sommet ns est externe donc non supprime
-c                 ou bien le sommet ns est le centre d'un cf dont toutes
-c                 les aretes simples sont frontalieres
-c                 dans les 2 cas le sommet ns n'est pas supprime
-                  ierr = 0
-                  goto 200
-               else if( ierr .gt. 0 ) then
-c                 erreur irrecuperable
-                  goto 9999
-               endif
-               nbstsu = nbstsu + 1
-               goto 1000
-c
-            endif
-c
-c           les 2 coordonnees du barycentre des sommets des aretes
-c           simples de la boule du sommet ns
-c           ======================================================
- 200        xbar = xbar / nbstbo
-            ybar = ybar / nbstbo
-c
-c           ponderation pour eviter les degenerescenses
-            pxyd(1,ns) = ponde1 * pxyd(1,ns) + ponder * xbar
-            pxyd(2,ns) = ponde1 * pxyd(2,ns) + ponder * ybar
-c
-            if( nutysu .gt. 0 ) then
-c              la fonction taille_ideale(x,y,z) existe
-c              calcul de pxyzd(3,ns) dans le repere initial => xyz(1:3)
-               call tetaid( nutysu, pxyd(1,ns), pxyd(2,ns),
-     %                      pxyd(3,ns), ier )
-            endif
-c
-c           les aretes chainees de la boule sont rendues delaunay
- 900        call tedela( pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar, noar0,
-     %                   moartr, mxartr, n1artr, noartr, modifs )
-c
- 1000    continue
-c
-ccc         write(imprim,11000) nbstsu, nbbaaj
-ccc11000 format( i6,' sommets supprimes ' ,
-ccc     %        i6,' barycentres ajoutes' )
-c
-c        mise a jour pour ne pas oublier les nouveaux sommets
-         if( nbs1 .gt. nbs2 ) then
-            nbs1 = nbsomm
-         else
-            nbs2 = nbsomm
-         endif
-c
- 5000 continue
-c
- 9999 return
-      end
-
-
-      subroutine teamsf( nutysu,
-     %                   noarst, mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxtrcf, notrcf, nostbo,
-     %                   n1arcf, noarcf, larmin,
-     %                   comxmi, nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    modification de la topologie des triangles autour des
-c -----    sommets frontaliers et mise en triangulation delaunay locale
-c
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale()
-c            dont seules les 2 premieres composantes de uv sont actives
-c          autres options a definir...
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles declarables dans noartr
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c mxtrcf : nombre maximal de triangles empilables
-c nbarpi : numero du dernier sommet frontalier ou interne impose
-c nslign : >0 => ns numero du point dans le lexique point si interne impose
-c          ou => 1 000 000 * n + ns1
-c              ou n   est le numero (1 a nblftr) de la ligne de ce point
-c                 ns1 est le numero du point dans sa ligne
-c          = 0 si le point est interne non impose par l'utilisateur
-c          =-1 si le sommet est externe au domaine
-c comxmi : min et max des coordonneees des sommets du maillage
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de sommets de la triangulation
-c          (certains sommets internes ont ete desactives ou ajoutes)
-c pxyd   : tableau des coordonnees 2d des points
-c
-c auxiliaires:
-c ------------
-c notrcf : tableau ( mxtrcf ) auxiliaire d'entiers
-c          numero dans noartr des triangles de sommet ns
-c nostbo : tableau ( mxtrcf ) auxiliaire d'entiers
-c          numero dans pxyd des sommets des aretes simples de la boule
-c n1arcf : tableau (0:mxtrcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxtrcf) auxiliaire d'entiers
-c larmin : tableau ( mxtrcf ) auxiliaire d'entiers
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    janvier 1998
-c....................................................................012
-      parameter        (lchain=6)
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      double precision  a, angle, angled, pi, deuxpi, pis3
-      double precision  d2d3(3,3)
-      real              origin(3), xyz(3)
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,*),
-     %                  noarst(*),
-     %                  notrcf(mxtrcf),
-     %                  nslign(*),
-     %                  nostbo(*),
-     %                  n1arcf(0:mxtrcf),
-     %                  noarcf(3,mxtrcf),
-     %                  larmin(mxtrcf),
-     %                  nosotr(3)
-      double precision  comxmi(3,2)
-c
-c     le nombre d'iterations pour ameliorer la qualite
-      nbitaq = 2
-      ier    = 0
-c
-c     pi / 3
-      pi     = atan(1d0) * 4d0
-      pis3   = pi / 3d0
-      deuxpi = 2d0 * pi
-c
-c     initialisation du parcours
-      modifs = 0
-      nbs1   = nbarpi
-      nbs2   =  1
-c     => pas de traitement sur les points des lignes de la frontiere
-      nbs3   = -1
-c
-      do 5000 iter=1,nbitaq
-c
-c        le nombre de sommets supprimes
-         nbstsu = 0
-c
-c        l'ordre du parcours dans le sens croissant ou decroissant
-         nt   = nbs1
-         nbs1 = nbs2
-         nbs2 = nt
-c        alternance du parcours
-         nbs3 = -nbs3
-c
-         do 1000 ns = nbs1, nbs2, nbs3
-c
-c           le sommet est il sur une ligne de la frontiere?
-c           if( nslign(ns) .lt. 1 000 000 ) goto 1000
-c
-c           traitement d'un sommet d'une ligne de la frontiere
-c           ==================================================
-c           existe-t-il une arete de sommet ns ?
-            noar = noarst( ns )
-            if( noar .le. 0 ) goto 1000
-c
-c           le 1-er triangle de l'arete noar
-            nt = nosoar( 4, noar )
-            if( nt .le. 0 ) goto 1000
-c
-c           recherche des triangles de sommet ns
-c           ils doivent former un contour ferme de type camembert
-            call trp1st( ns, noarst, mosoar, nosoar, moartr, noartr,
-     %                   mxtrcf, nbtrcf, notrcf )
-            if( nbtrcf .ge. -1 ) goto 1000
-c
-c           boucle sur les triangles qui forment un camembert autour du sommet n
-            nbtrcf = -nbtrcf
-c
-c           angle interne au camembert autour du sommet ns
-            angle = 0d0
-            do 540 i=1,nbtrcf
-c
-c              le numero de l'arete du triangle nt ne contenant pas le sommet ns
-               nt = notrcf(i)
-               do 520 na=1,3
-c                 le numero de l'arete na dans le tableau nosoar
-                  noar = abs( noartr(na,nt) )
-                  if( nosoar(1,noar) .ne. ns   .and.
-     %                nosoar(2,noar) .ne. ns ) goto 525
- 520           continue
-c
-c              calcul de l'angle (ns-st1 arete, ns-st2 arete)
- 525           ns1 = nosoar(1,noar)
-               ns2 = nosoar(2,noar)
-               a   = angled( pxyd(1,ns), pxyd(1,ns1), pxyd(1,ns2) )
-               if( a .gt. pi ) a = deuxpi - a
-               angle = angle + a
-c
- 540        continue
-c
-c           nombre ideal de triangles autour du sommet ns
-            n = nint( angle / pis3 )
-            if( n .le. 1 ) goto 1000
-            i = 1
-            if( nbtrcf .gt. n ) then
-c
-c              ajout du barycentre du triangle "milieu"
-               nt = notrcf( (n+1)/2 )
-               call nusotr( nt, mosoar, nosoar,
-     %                      moartr, noartr, nosotr )
-               if( nbsomm .ge. mxsomm ) then
-                  write(imprim,*) 'saturation du tableau pxyd'
-c                 abandon de l'amelioration du sommet ns
-                  goto 1000
-               endif
-               nbsomm = nbsomm + 1
-               do 560 i=1,3
-                  pxyd(i,nbsomm) = ( pxyd(i,nosotr(1))
-     %                             + pxyd(i,nosotr(2))
-     %                             + pxyd(i,nosotr(3)) ) / 3d0
- 560           continue
-c
-               if( nutysu .gt. 0 ) then
-c                 la fonction taille_ideale(x,y,z) existe
-c                 calcul de pxyzd(3,nbsomm) dans le repere initial => xyz(1:3)
-                  call tetaid( nutysu, pxyd(1,nbsomm), pxyd(2,nbsomm),
-     %                         pxyd(3,nbsomm), ier )
-               endif
-c
-c              sommet interne a la triangulation
-               nslign(nbsomm) = 0
-c
-c              les 3 aretes du triangle nt sont a rendre delaunay
-               noar0 = 0
-               do 570 i=1,3
-                  noar = abs( noartr(i,nt) )
-                  if( nosoar(3,noar) .eq. 0 ) then
-c                    arete non frontaliere
-                     if( nosoar(lchain,noar) .lt. 0 ) then
-c                       arete non encore chainee
-                        nosoar(lchain,noar) = noar0
-                        noar0 = noar
-                     endif
-                  endif
- 570           continue
-c
-c              triangulation du triangle de barycentre nbsomm
-c              protection a ne pas modifier sinon erreur!
-               call tr3str( nbsomm, nt,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nosotr, ierr )
-               if( ierr .ne. 0 ) goto 9999
-c
-c              les aretes chainees de la boule sont rendues delaunay
-               call tedela( pxyd,   noarst,
-     %                      mosoar, mxsoar, n1soar, nosoar, noar0,
-     %                      moartr, mxartr, n1artr, noartr, modifs )
-            endif
-c
- 1000    continue
-c
- 5000 continue
-c
- 9999 return
-      end
-
-
-      subroutine teamqs( nutysu,
-     %                   noarst, mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxtrcf, notrcf, nostbo,
-     %                   n1arcf, noarcf, larmin,
-     %                   comxmi, nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    une iteration de barycentrage des points internes
-c -----    modification de la topologie pour avoir 4 ou 5 ou 6 triangles
-c          pour chaque sommet de la triangulation
-c          mise en triangulation delaunay
-c
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale()
-c            dont seules les 2 premieres composantes de uv sont actives
-c          autres options a definir...
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles declarables dans noartr
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c mxtrcf : nombre maximal de triangles empilables
-c nbarpi : numero du dernier sommet frontalier ou interne impose
-c nslign : >0 => ns numero du point dans le lexique point si interne impose
-c          ou => 1 000 000 * n + ns1
-c              ou n   est le numero (1 a nblftr) de la ligne de ce point
-c                 ns1 est le numero du point dans sa ligne
-c          = 0 si le point est interne non impose par l'utilisateur
-c          =-1 si le sommet est externe au domaine
-c comxmi : min et max des coordonneees des sommets du maillage
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de sommets de la triangulation
-c          (certains sommets internes ont ete desactives ou ajoutes)
-c pxyd   : tableau des coordonnees 2d des points
-c
-c auxiliaires:
-c ------------
-c notrcf : tableau ( mxtrcf ) auxiliaire d'entiers
-c          numero dans noartr des triangles de sommet ns
-c nostbo : tableau ( mxtrcf ) auxiliaire d'entiers
-c          numero dans pxyd des sommets des aretes simples de la boule
-c n1arcf : tableau (0:mxtrcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxtrcf) auxiliaire d'entiers
-c larmin : tableau ( mxtrcf ) auxiliaire d'entiers
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc        mai 1997
-c....................................................................012
-      parameter        (lchain=6)
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      double precision  ponder, ponde1, xbar, ybar, x, y, d, dmin, dmax
-      double precision  d2d3(3,3)
-      real              origin(3), xyz(3)
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,*),
-     %                  noarst(*),
-     %                  notrcf(mxtrcf),
-     %                  nslign(*),
-     %                  nostbo(*),
-     %                  n1arcf(0:mxtrcf),
-     %                  noarcf(3,mxtrcf),
-     %                  larmin(mxtrcf)
-      integer           nosotr(3,2)
-      double precision  comxmi(3,2)
-c
-c     le nombre d'iterations pour ameliorer la qualite
-      nbitaq = 6
-      ier    = 0
-c
-c     initialisation du parcours
-      nbs1 = nbsomm
-      nbs2 = nbarpi + 1
-c     => pas de traitement sur les points des lignes de la frontiere
-      nbs3 = -1
-c
-      do 5000 iter=1,nbitaq
-c
-c        le nombre de sommets supprimes
-         nbstsu = 0
-c
-c        les compteurs de passage sur les differents cas
-         nbst4 = 0
-         nbst5 = 0
-         nbst8 = 0
-c
-c        coefficient de ponderation croissant avec les iterations
-         ponder = min( 1d0, ( 50 + (50*iter)/nbitaq ) * 0.01d0 )
-         ponde1 = 1d0 - ponder
-c
-c        l'ordre du parcours dans le sens croissant ou decroissant
-         nt   = nbs1
-         nbs1 = nbs2
-         nbs2 = nt
-c        alternance du parcours
-         nbs3 = -nbs3
-c
-         do 1000 ns = nbs1, nbs2, nbs3
-c
-c           le sommet est il interne au domaine?
-            if( nslign(ns) .ne. 0 ) goto 1000
-c
-c           traitement d'un sommet interne non impose par l'utilisateur
-c           ===========================================================
-c           existe-t-il une arete de sommet ns ?
- 10         noar = noarst( ns )
-            if( noar .le. 0 ) goto 1000
-c
-c           le 1-er triangle de l'arete noar
-            nt = nosoar( 4, noar )
-            if( nt .le. 0 ) goto 1000
-c
-c           recherche des triangles de sommet ns
-c           ils doivent former un contour ferme de type etoile
-            call trp1st( ns, noarst, mosoar, nosoar, moartr, noartr,
-     %                   mxtrcf, nbtrcf, notrcf )
-            if( nbtrcf .le. 0 ) goto 1000
-c
-c           boucle sur les triangles qui forment une boule autour du sommet ns
-            nbstbo = 0
-c           chainage des aretes simples de la boule a rendre delaunay
-            noar0  = 0
-            do 40 i=1,nbtrcf
-c
-c              le numero de l'arete du triangle nt ne contenant pas le sommet ns
-               nt = notrcf(i)
-               do 20 na=1,3
-c                 le numero de l'arete na dans le tableau nosoar
-                  noar = abs( noartr(na,nt) )
-                  if( nosoar(1,noar) .ne. ns   .and.
-     %                nosoar(2,noar) .ne. ns ) goto 25
- 20            continue
-c
-c              construction de la liste des sommets des aretes simples
-c              de la boule des triangles de sommet ns
-c              -------------------------------------------------------
- 25            do 35 na=1,2
-                  ns1 = nosoar(na,noar)
-                  do 30 j=nbstbo,1,-1
-                     if( ns1 .eq. nostbo(j) ) goto 35
- 30               continue
-c                 ns1 est un nouveau sommet a ajouter
-                  nbstbo = nbstbo + 1
-                  nostbo(nbstbo) = ns1
- 35            continue
-c
-c              noar est une arete potentielle a rendre delaunay
-               if( nosoar(3,noar) .eq. 0 ) then
-c                 arete non frontaliere
-                  nosoar(lchain,noar) = noar0
-                  noar0 = noar
-               endif
-c
- 40         continue
-c
-c           calcul des 2 coordonnees du barycentre de la boule du sommet ns
-c           calcul de l'arete de taille maximale et minimale issue de ns
-c           ---------------------------------------------------------------
-            xbar = 0d0
-            ybar = 0d0
-            dmin = 1d28
-            dmax = 0d0
-            do 50 i=1,nbstbo
-               x    = pxyd(1,nostbo(i))
-               y    = pxyd(2,nostbo(i))
-               xbar = xbar + x
-               ybar = ybar + y
-               d    = (x-pxyd(1,ns)) ** 2 + (y-pxyd(2,ns)) ** 2
-               if( d .gt. dmax ) then
-                  dmax = d
-                  imax = i
-               endif
-               if( d .lt. dmin ) then
-                  dmin = d
-                  imin = i
-               endif
- 50         continue
-c
-c           pas de modification de la topologie lors de la derniere iteration
-c           =================================================================
-            if( iter .ge. nbitaq ) goto 200
-c
-c           si la boule de ns contient 3 ou 4 triangles le sommet ns est detruit
-c           ====================================================================
-            if( nbtrcf .le. 4 ) then
-c
-c              remise a -1 du chainage des aretes peripheriques de la boule ns
-               noar = noar0
- 60            if( noar .gt. 0 ) then
-c                 protection du no de l'arete suivante
-                  na = nosoar(lchain,noar)
-c                 l'arete interne est remise a -1
-                  nosoar(lchain,noar) = -1
-c                 l'arete suivante
-                  noar = na
-                  goto 60
-               endif
-               call te1stm( ns,     pxyd,   noarst,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      mxtrcf, n1arcf, noarcf,
-     %                      larmin, notrcf, nostbo,
-     %                      ierr )
-               if( ierr .lt. 0 ) then
-c                 le sommet ns est externe donc non supprime
-c                 ou bien le sommet ns est le centre d'un cf dont toutes
-c                 les aretes simples sont frontalieres
-c                 dans les 2 cas le sommet ns n'est pas supprime
-                  ierr = 0
-                  goto 200
-               else if( ierr .eq. 0 ) then
-                  nbst4  = nbst4 + 1
-                  nbstsu = nbstsu + 1
-               else
-c                 erreur irrecuperable
-                  goto 9999
-               endif
-               goto 1000
-c
-            endif
-c
-c           si la boule de ns contient 5 triangles et a un sommet voisin
-c           sommet de 5 triangles alors l'arete joignant ces 2 sommets
-c           est transformee en un seul sommet de 6 triangles
-c           ============================================================
-            if( nbtrcf .eq. 5 ) then
-c
-               do 80 i=1,5
-c                 le numero du sommet de l'arete i et different de ns
-                  ns1 = nostbo(i)
-c                 la liste des triangles de sommet ns1
-                  call trp1st( ns1, noarst,
-     %                         mosoar, nosoar, moartr, noartr,
-     %                         mxtrcf-5, nbtrc1, notrcf(6) )
-                  if( nbtrc1 .eq. 5 ) then
-c
-c                    l'arete de sommets ns-ns1 devient un point
-c                    par suppression du sommet ns
-c
-c                    remise a -1 du chainage des aretes peripheriques de la boul
-                     noar = noar0
- 70                  if( noar .gt. 0 ) then
-c                       protection du no de l'arete suivante
-                        na = nosoar(lchain,noar)
-c                       l'arete interne est remise a -1
-                        nosoar(lchain,noar) = -1
-c                       l'arete suivante
-                        noar = na
-                        goto 70
-                     endif
-c
-c                    le point ns1 devient le milieu de l'arete ns-ns1
-                     do 75 j=1,3
-                        pxyd(j,ns1) = (pxyd(j,ns) + pxyd(j,ns1)) * 0.5d0
- 75                  continue
-c
-                     if( nutysu .gt. 0 ) then
-c                       la fonction taille_ideale(x,y,z) existe
-c                       calcul de pxyzd(3,ns1) dans le repere initial => xyz(1:3
-                        call tetaid( nutysu,pxyd(1,ns1),pxyd(2,ns1),
-     %                               pxyd(3,ns1), ier )
-                     endif
-c
-c                    suppression du point ns et mise en delaunay
-                     call te1stm( ns,     pxyd,   noarst,
-     %                            mosoar, mxsoar, n1soar, nosoar,
-     %                            moartr, mxartr, n1artr, noartr,
-     %                            mxtrcf, n1arcf, noarcf,
-     %                            larmin, notrcf, nostbo,
-     %                            ierr )
-                     if( ierr .lt. 0 ) then
-c                       le sommet ns est externe donc non supprime
-c                       ou bien le sommet ns est le centre d'un cf dont toutes
-c                       les aretes simples sont frontalieres
-c                       dans les 2 cas le sommet ns n'est pas supprime
-                        ierr = 0
-                        goto 200
-                     else if( ierr .eq. 0 ) then
-                        nbstsu = nbstsu + 1
-                        nbst5  = nbst5 + 1
-                        goto 1000
-                     else
-c                       erreur irrecuperable
-                        goto 9999
-                     endif
-                  endif
- 80            continue
-            endif
-c
-c           si la boule de ns contient au moins 8 triangles
-c           alors un triangle interne est ajoute + 3 triangles (1 par arete)
-c           ================================================================
-            if( nbtrcf .ge. 8 ) then
-c
-c              modification des coordonnees du sommet ns
-c              il devient le barycentre du triangle notrcf(1)
-               call nusotr( notrcf(1), mosoar, nosoar,
-     %                      moartr, noartr, nosotr )
-               do 110 i=1,3
-                  pxyd(i,ns) = ( pxyd(i,nosotr(1,1))
-     %                         + pxyd(i,nosotr(2,1))
-     %                         + pxyd(i,nosotr(3,1)) ) / 3d0
- 110           continue
-c
-               if( nutysu .gt. 0 ) then
-c                 la fonction taille_ideale(x,y,z) existe
-c                 calcul de pxyzd(3,nbsomm) dans le repere initial => xyz(1:3)
-                  call tetaid( nutysu, pxyd(1,ns), pxyd(2,ns),
-     %                         pxyd(3,ns), ier )
-               endif
-c
-c              ajout des 2 autres sommets comme barycentres des triangles
-c              notrcf(1+nbtrcf/3) et notrcf(1+2*nbtrcf/3)
-               nbt1 = ( nbtrcf + 1 ) / 3
-               do 140 n=1,2
-c
-c                 le triangle traite
-                  nt = notrcf(1 + n * nbt1 )
-c
-c                 le numero pxyd de ses 3 sommets
-                  call nusotr( nt, mosoar, nosoar,
-     %                         moartr, noartr, nosotr )
-c
-c                 ajout du nouveau barycentre
-                  if( nbsomm .ge. mxsomm ) then
-                     write(imprim,*) 'saturation du tableau pxyd'
-c                    abandon de l'amelioration
-                     goto 1100
-                  endif
-                  nbsomm = nbsomm + 1
-                  do 120 i=1,3
-                     pxyd(i,nbsomm) = ( pxyd(i,nosotr(1,1))
-     %                                + pxyd(i,nosotr(2,1))
-     %                                + pxyd(i,nosotr(3,1)) ) / 3d0
- 120              continue
-c
-                  if( nutysu .gt. 0 ) then
-c                    la fonction taille_ideale(x,y,z) existe
-c                    calcul de pxyzd(3,nbsomm) dans le repere initial => xyz(1:3
-                     call tetaid( nutysu, pxyd(1,nbsomm),pxyd(2,nbsomm),
-     %                            pxyd(3,nbsomm), ier )
-                  endif
-c
-c                 sommet interne a la triangulation
-                  nslign(nbsomm) = 0
-c
-c                 les 3 aretes du triangle nt sont a rendre delaunay
-                  do 130 i=1,3
-                     noar = abs( noartr(i,nt) )
-                     if( nosoar(3,noar) .eq. 0 ) then
-c                       arete non frontaliere
-                        if( nosoar(lchain,noar) .lt. 0 ) then
-c                          arete non encore chainee
-                           nosoar(lchain,noar) = noar0
-                           noar0 = noar
-                        endif
-                     endif
- 130              continue
-c
-c                 triangulation du triangle de barycentre nbsomm
-c                 protection a ne pas modifier sinon erreur!
-                  call tr3str( nbsomm, nt,
-     %                         mosoar, mxsoar, n1soar, nosoar,
-     %                         moartr, mxartr, n1artr, noartr,
-     %                         noarst,
-     %                         nosotr, ierr )
-                  if( ierr .ne. 0 ) goto 9999
- 140           continue
-c
-               nbst8  = nbst8 + 1
-c
-c              les aretes chainees de la boule sont rendues delaunay
-               goto 300
-c
-            endif
-c
-c           nbtrcf est compris entre 5 et 7 => barycentrage simple
-c           ======================================================
-c           les 2 coordonnees du barycentre des sommets des aretes
-c           simples de la boule du sommet ns
- 200        xbar = xbar / nbstbo
-            ybar = ybar / nbstbo
-c
-c           ponderation pour eviter les degenerescenses
-            pxyd(1,ns) = ponde1 * pxyd(1,ns) + ponder * xbar
-            pxyd(2,ns) = ponde1 * pxyd(2,ns) + ponder * ybar
-c
-c           les aretes chainees de la boule sont rendues delaunay
- 300        call tedela( pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar, noar0,
-     %                   moartr, mxartr, n1artr, noartr, modifs )
-c
- 1000    continue
-c
-c        trace de la triangulation actuelle et calcul de la qualite
- 1100    continue
-c
-ccc         write(imprim,11000) nbst4, nbst5, nbst8
-ccc11000 format( i7,' sommets de 4t',
-ccc     %        i7,' sommets 5t+5t',
-ccc     %        i7,' sommets >7t' )
-c
-c        mise a jour pour ne pas oublier les nouveaux sommets
-         if( nbs1 .gt. nbs2 ) then
-            nbs1 = nbsomm
-            nbs2 = nbarpi + 1
-         else
-            nbs1 = nbarpi + 1
-            nbs2 = nbsomm
-         endif
-c
- 5000 continue
-c
- 9999 return
-      end
-
-
-      subroutine teamqt( nutysu,
-     %                   noarst, mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxarcf, notrcf, nostbo,
-     %                   n1arcf, noarcf, larmin,
-     %                   comxmi, nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    amelioration de la qualite de la triangulation issue de teabr4
-c -----
-c
-c entrees:
-c --------
-c nutysu : numero de traitement de areteideale() selon le type de surface
-c          0 pas d'emploi de la fonction areteideale() => aretmx active
-c          1 il existe une fonction areteideale()
-c            dont seules les 2 premieres composantes de uv sont actives
-c          autres options a definir...
-c noarst : noarst(i) numero d'une arete de sommet i
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes frontalieres declarables
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles declarables dans noartr
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c mxarcf : nombre maximal de triangles empilables
-c nbarpi : numero du dernier sommet frontalier ou interne impose
-c nslign : tableau du numero de sommet dans sa ligne pour chaque
-c          sommet frontalier
-c          numero du point dans le lexique point si interne impose
-c          0 si le point est interne non impose par l'utilisateur
-c         -1 si le sommet est externe au domaine
-c comxmi : min et max des coordonneees des sommets du maillage
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de sommets de la triangulation
-c          (certains sommets internes ont ete desactives ou ajoutes)
-c pxyd   : tableau des coordonnees 2d des points
-c
-c auxiliaires:
-c ------------
-c notrcf : tableau ( mxarcf ) auxiliaire d'entiers
-c          numero dans noartr des triangles de sommet ns
-c nostbo : tableau ( mxarcf ) auxiliaire d'entiers
-c          numero dans pxyd des sommets des aretes simples de la boule
-c n1arcf : tableau (0:mxarcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxarcf) auxiliaire d'entiers
-c larmin : tableau ( mxarcf ) auxiliaire d'entiers
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       juin 1997
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*), d2d3(3,3)
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,*),
-     %                  noarst(*),
-     %                  notrcf(mxarcf),
-     %                  nslign(*),
-     %                  nostbo(mxarcf),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf)
-      double precision  comxmi(3,2)
-c
-c     suppression des sommets de triangles equilateraux trop proches
-c     d'un sommet frontalier ou d'un point interne impose par
-c     triangulation frontale de l'etoile et mise en delaunay
-c     ==============================================================
-      call tesusp( nbarpi, pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr,
-     %             mxarcf, n1arcf, noarcf, larmin, notrcf, nostbo,
-     %             nbstsu, ierr )
-      if( ierr .ne. 0 ) goto 9999
-c      write(imprim,*) 'retrait de',nbstsu,
-c     %                ' sommets de te trop proches de la frontiere'
-c
-c     ajustage des tailles moyennes des aretes avec ampli=1.34d0 entre
-c     ampli/2 x taille_souhaitee et ampli x taille_souhaitee 
-c     + barycentrage des sommets et mise en triangulation delaunay
-c     ================================================================
-      call teamqa( nutysu,
-     %             noarst, mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr,
-     %             mxarcf, notrcf, nostbo,
-     %             n1arcf, noarcf, larmin,
-     %             comxmi, nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %             ierr )
-      if( ierr .ne. 0 ) goto 9999
-c
-c     modification de la topologie autour des sommets frontaliers
-c     pour avoir un nombre de triangles egal a l'angle/60 degres
-c     et mise en triangulation delaunay locale
-c     ===========================================================
-      call teamsf( nutysu,
-     %             noarst, mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr,
-     %             mxarcf, notrcf, nostbo,
-     %             n1arcf, noarcf, larmin,
-     %             comxmi, nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %             ierr )
-      if( ierr .ne. 0 ) goto 9999
-c
-c     quelques iterations de barycentrage des points internes
-c     modification de la topologie pour avoir 4 ou 5 ou 6 triangles
-c     pour chaque sommet de la triangulation
-c     et mise en triangulation delaunay
-c     =============================================================
-      call teamqs( nutysu,
-     %             noarst, mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr,
-     %             mxarcf, notrcf, nostbo,
-     %             n1arcf, noarcf, larmin,
-     %             comxmi, nbarpi, nbsomm, mxsomm, pxyd, nslign,
-     %             ierr )
-c
- 9999 return
-      end
-
-      subroutine trfrcf( nscent, mosoar, nosoar, moartr, noartr,
-     %                   nbtrcf, notrcf, nbarfr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calculer le nombre d'aretes simples du contour ferme des
-c -----    nbtrcf triangles de numeros stockes dans le tableau notrcf
-c          ayant tous le sommet nscent
-c
-c entrees:
-c --------
-c nscent : numero du sommet appartenant a tous les triangles notrcf
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c nbtrcf : >0 nombre de triangles empiles
-c          =0       si impossible de tourner autour du point
-c          =-nbtrcf si apres butee sur la frontiere il y a a nouveau
-c          butee sur la frontiere . a ce stade on ne peut dire si tous
-c          les triangles ayant ce sommet ont ete recenses
-c          ce cas arrive seulement si le sommet est sur la frontiere
-c notrcf : numero dans noartr des triangles de sommet ns
-c
-c sortie :
-c --------
-c nbarfr : nombre d'aretes simples frontalieres
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       juin 1997
-c....................................................................012
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,*),
-     %                  notrcf(1:nbtrcf)
-c
-      nbarfr = 0
-      do 50 n=1,nbtrcf
-c        le numero du triangle n dans le tableau noartr
-         nt = notrcf( n )
-c        parcours des 3 aretes du triangle nt
-         do 40 i=1,3
-c           le numero de l'arete i dans le tableau nosoar
-            noar = abs( noartr( i, nt ) )
-            do 30 j=1,2
-c              le numero du sommet j de l'arete noar
-               ns = nosoar( j, noar )
-               if( ns .eq. nscent ) goto 40
- 30         continue
-c           l'arete noar (sans sommet nscent) est elle frontaliere?
-            if( nosoar( 5, noar ) .le. 0 ) then
-c              l'arete appartient au plus a un triangle
-c              une arete simple frontaliere de plus
-               nbarfr = nbarfr + 1
-            endif
-c           le triangle a au plus une arete sans sommet nscent
-            goto 50
- 40      continue
- 50   continue
-      end
-
-      subroutine int2ar( p1, p2, p3, p4, oui )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    les 2 aretes de r**2 p1-p2  p3-p4 s'intersectent elles
-c -----    entre leurs sommets?
-c
-c entrees:
-c --------
-c p1,p2,p3,p4 : les 2 coordonnees reelles des sommets des 2 aretes
-c
-c sortie :
-c --------
-c oui    : .true. si intersection, .false. sinon
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    octobre 1991
-c2345x7..............................................................012
-      double precision  p1(2),p2(2),p3(2),p4(2)
-      double precision  x21,y21,d21,x43,y43,d43,d,x,y,xx
-      logical  oui
-c
-c     longueur des aretes
-      x21 = p2(1)-p1(1)
-      y21 = p2(2)-p1(2)
-      d21 = x21**2 + y21**2
-c
-      x43 = p4(1)-p3(1)
-      y43 = p4(2)-p3(2)
-      d43 = x43**2 + y43**2
-c
-c     les 2 aretes sont-elles jugees paralleles ?
-      d = x43 * y21 - y43 * x21
-      if( abs(d) .le. 0.001 * sqrt(d21 * d43) ) then
-c        aretes paralleles . pas d'intersection
-         oui = .false.
-         return
-      endif
-c
-c     les 2 coordonnees du point d'intersection
-      x = ( p1(1)*x43*y21 - p3(1)*x21*y43 - (p1(2)-p3(2))*x21*x43 ) / d
-      y =-( p1(2)*y43*x21 - p3(2)*y21*x43 - (p1(1)-p3(1))*y21*y43 ) / d
-c
-c     coordonnees de x,y dans le repere ns1-ns2
-      xx  = ( x - p1(1) ) * x21 + ( y - p1(2) ) * y21
-c     le point est il entre p1 et p2 ?
-      oui = -0.00001d0*d21 .le. xx .and. xx .le. 1.00001d0*d21
-c
-c     coordonnees de x,y dans le repere ns3-ns4
-      xx  = ( x - p3(1) ) * x43 + ( y - p3(2) ) * y43
-c     le point est il entre p3 et p4 ?
-      oui = oui .and. -0.00001d0*d43 .le. xx .and. xx .le. 1.00001d0*d43
-      end
-
-
-      subroutine trchtd( pxyd,   nar00, nar0,  noarcf,
-     %                   namin0, namin, larmin )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    recherche dans le contour ferme du sommet qui joint a la plus
-c -----    courte arete nar00 donne le triangle sans intersection
-c          avec le contour ferme de meilleure qualite
-c
-c entrees:
-c --------
-c pxyd   : tableau des coordonnees des sommets et distance_souhaitee
-c
-c entrees et sorties:
-c -------------------
-c nar00  : numero dans noarcf de l'arete avant nar0
-c nar0   : numero dans noarcf de la plus petite arete du contour ferme
-c          a joindre a noarcf(1,namin) pour former le triangle ideal
-c noarcf : numero du sommet , numero de l'arete suivante
-c          numero du triangle exterieur a l'etoile
-c
-c sortie :
-c --------
-c namin0 : numero dans noarcf de l'arete avant namin
-c namin  : numero dans noarcf du sommet choisi
-c          0 si contour ferme reduit a moins de 3 aretes
-c larmin : tableau auxiliaire pour stocker la liste des numeros des
-c          aretes de meilleure qualite pour faire le choix final
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      double precision dmaxim, precision
-      parameter        (dmaxim=1.7d+308, precision=1d-16)
-c     ATTENTION:variables a ajuster selon la machine!
-c     ATTENTION:dmaxim : le plus grand reel machine
-c     ATTENTION:sur dec-alpha la precision est de 10**-14 seulement
-
-      common / unites / lecteu,imprim,nunite(30)
-      double precision  pxyd(1:3,1:*)
-      integer           noarcf(1:3,1:*),
-     %                  larmin(1:*)
-      double precision  q, dd, dmima,
-     %                  unpeps, rayon, surtd2
-      logical           oui
-      double precision  centre(3)
-c
-c     initialisations
-c     dmaxim : le plus grand reel machine
-      unpeps = 1d0 + 100d0 * precision
-c
-c     recherche de la plus courte arete du contour ferme
-      nbmin = 0
-      na00  = nar00
-      dmima = dmaxim
-      nbar  = 0
-c
- 2    na0  = noarcf( 2, na00 )
-      na1  = noarcf( 2, na0  )
-      nbar = nbar + 1
-c     les 2 sommets de l'arete na0 du cf
-      ns1  = noarcf( 1, na0 )
-      ns2  = noarcf( 1, na1 )
-      dd   = (pxyd(1,ns2)-pxyd(1,ns1))**2 + (pxyd(2,ns2)-pxyd(2,ns1))**2
-      if( dd .lt. dmima ) then
-         dmima = dd
-         larmin(1) = na00
-      endif
-      na00 = na0
-      if( na00 .ne. nar00 ) then
-c        derniere arete non atteinte
-         goto 2
-      endif
-c
-      if( nbar .eq. 3 ) then
-c
-c        contour ferme reduit a un triangle
-c        ----------------------------------
-         namin  = nar00
-         nar0   = noarcf( 2, nar00 )
-         namin0 = noarcf( 2, nar0  )
-         return
-c
-      else if( nbar .le. 2 ) then
-         write(imprim,*) 'erreur trchtd: cf<3 aretes'
-         namin  = 0
-         namin0 = 0
-         return
-      endif
-c
-c     cf non reduit a un triangle
-c     la plus petite arete est nar0 dans noarcf
-      nar00 = larmin( 1 )
-      nar0  = noarcf( 2, nar00 )
-      nar   = noarcf( 2, nar0  )
-c
-      ns1   = noarcf( 1, nar0 )
-      ns2   = noarcf( 1, nar  )
-c
-c     recherche dans cette etoile du sommet offrant la meilleure qualite
-c     du triangle ns1-ns2 ns3 sans intersection avec le contour ferme
-c     ==================================================================
-      nar3  = nar
-      qmima = -1
-c
-c     parcours des sommets possibles ns3
- 10   nar3  = noarcf( 2, nar3 )
-      if( nar3 .ne. nar0 ) then
-c
-c        il existe un sommet ns3 different de ns1 et ns2
-         ns3 = noarcf( 1, nar3 )
-c
-c        les aretes ns1-ns3 et ns2-ns3 intersectent-elles une arete
-c        du contour ferme ?
-c        ----------------------------------------------------------
-c        intersection de l'arete ns2-ns3 et des aretes du cf
-c        jusqu'au sommet ns3
-         nar1 = noarcf( 2, nar )
-c
- 15      if( nar1 .ne. nar3 .and. noarcf( 2, nar1 ) .ne. nar3 ) then
-c           l'arete suivante
-            nar2 = noarcf( 2, nar1 )
-c           le numero des 2 sommets de l'arete
-            np1  = noarcf( 1, nar1 )
-            np2  = noarcf( 1, nar2 )
-            call int2ar( pxyd(1,ns2), pxyd(1,ns3),
-     %                   pxyd(1,np1), pxyd(1,np2), oui )
-            if( oui ) goto 10
-c           les 2 aretes ne s'intersectent pas entre leurs sommets
-            nar1 = nar2
-            goto 15
-         endif
-c
-c        intersection de l'arete ns3-ns1 et des aretes du cf
-c        jusqu'au sommet de l'arete nar0
-         nar1 = noarcf( 2, nar3 )
-c
- 18      if( nar1 .ne. nar0 .and. noarcf( 2, nar1 ) .ne. nar0 ) then
-c           l'arete suivante
-            nar2 = noarcf( 2, nar1 )
-c           le numero des 2 sommets de l'arete
-            np1  = noarcf( 1, nar1 )
-            np2  = noarcf( 1, nar2 )
-            call int2ar( pxyd(1,ns1), pxyd(1,ns3),
-     %                   pxyd(1,np1), pxyd(1,np2), oui )
-            if( oui ) goto 10
-c           les 2 aretes ne s'intersectent pas entre leurs sommets
-            nar1 = nar2
-            goto 18
-         endif
-c
-c        le triangle ns1-ns2-ns3 n'intersecte pas une arete du contour ferme
-c        le calcul de la surface du triangle
-         dd = surtd2( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3) )
-         if( dd .le. 0d0 ) then
-c           surface negative => triangle a rejeter
-            q = 0
-         else
-c           calcul de la qualite du  triangle  ns1-ns2-ns3
-            call qutr2d( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3), q )
-         endif
-c
-         if( q .ge. qmima*1.00001 ) then
-c           q est un vrai maximum de la qualite
-            qmima = q
-            nbmin = 1
-            larmin(1) = nar3
-         else if( q .ge. qmima*0.999998 ) then
-c           q est voisin de qmima
-c           il est empile
-            nbmin = nbmin + 1
-            larmin( nbmin ) = nar3
-         endif
-         goto 10
-      endif
-c
-c     bilan : existe t il plusieurs sommets de meme qualite?
-c     ======================================================
-      if( nbmin .gt. 1 ) then
-c
-c        oui:recherche de ceux de cercle ne contenant pas d'autres sommets
-         do 80 i=1,nbmin
-c           le sommet
-            nar = larmin( i )
-            if( nar .le. 0 ) goto 80
-            ns3 = noarcf(1,nar)
-c           les coordonnees du centre du cercle circonscrit
-c           et son rayon
-            ier = -1
-            call cenced( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3),
-     %                   centre, ier )
-            if( ier .ne. 0 ) then
-c              le sommet ns3 ne convient pas
-               larmin( i ) = 0
-               goto 80
-            endif
-            rayon = centre(3) * unpeps
-            do 70 j=1,nbmin
-               if( j .ne. i ) then
-c                 l'autre sommet
-                  nar1 = larmin(j)
-                  if( nar1 .le. 0 ) goto 70
-                  ns4 = noarcf(1,nar1)
-c                 appartient t il au cercle ns1 ns2 ns3 ?
-                  dd = (centre(1)-pxyd(1,ns4))**2 +
-     %                 (centre(2)-pxyd(2,ns4))**2
-                  if( dd .le. rayon ) then
-c                    ns4 est dans le cercle circonscrit  ns1 ns2 ns3
-c                    le sommet ns3 ne convient pas
-                     larmin( i ) = 0
-                     goto 80
-                  endif
-               endif
- 70         continue
- 80      continue
-c
-c        existe t il plusieurs sommets ?
-         j = 0
-         do 90 i=1,nbmin
-            if( larmin( i ) .gt. 0 ) then
-c              compactage des min
-               j = j + 1
-               larmin(j) = larmin(i)
-            endif
- 90      continue
-c
-         if( j .gt. 1 ) then
-c           oui : choix du plus petit rayon de cercle circonscrit
-            dmima = dmaxim
-            do 120 i=1,nbmin
-               ns3 = noarcf(1,larmin(i))
-c
-c              les coordonnees du centre de cercle circonscrit
-c              au triangle nt et son rayon
-               ier = -1
-               call cenced( pxyd(1,ns1), pxyd(1,ns2), pxyd(1,ns3),
-     %                      centre, ier )
-               if( ier .ne. 0 ) then
-c                 le sommet ns3 ne convient pas
-                  goto 120
-               endif
-               rayon = sqrt( centre(3) )
-               if( rayon .lt. dmima ) then
-                  dmima = rayon
-                  larmin(1) = larmin(i)
-               endif
- 120        continue
-         endif
-      endif
-c
-c     le choix final
-c     ==============
-      namin = larmin(1)
-c
-c     recherche de l'arete avant namin ( nar0 <> namin )
-c     ==================================================
-      nar1 = nar0
- 200  if( nar1 .ne. namin ) then
-         namin0 = nar1
-         nar1   = noarcf( 2, nar1 )
-         goto 200
-      endif
-      end
-
-      subroutine trcf0a( nbcf,   na01,   na1, na2, na3,
-     %                   noar1,  noar2,  noar3,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, nt )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    modification de la triangulation du contour ferme nbcf
-c -----    par ajout d'un triangle ayant 0 arete sur le contour
-c          creation des 3 aretes dans le tableau nosoar
-c          modification du contour par ajout de la 3-eme arete
-c          creation d'un contour ferme a partir de la seconde arete
-c
-c entrees:
-c --------
-c nbcf    : numero dans n1arcf du cf traite ici
-c na01    : numero noarcf de l'arete precedent l'arete na1 de noarcf
-c na1     : numero noarcf du 1-er sommet du triangle
-c           implicitement l'arete na1 n'est pas une arete du triangle
-c na2     : numero noarcf du 2-eme sommet du triangle
-c           implicitement l'arete na1 n'est pas une arete du triangle
-c na3     : numero noarcf du 3-eme sommet du triangle
-c           implicitement l'arete na1 n'est pas une arete du triangle
-c
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c entrees et sorties :
-c --------------------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1arcf : numero d'une arete de chaque contour
-c noarcf : numero des aretes de la ligne du contour ferme
-c          attention : chainage circulaire des aretes
-c
-c sortie :
-c --------
-c noar1  : numero dans le tableau nosoar de l'arete 1 du triangle
-c noar2  : numero dans le tableau nosoar de l'arete 2 du triangle
-c noar3  : numero dans le tableau nosoar de l'arete 3 du triangle
-c nt     : numero du triangle ajoute dans noartr
-c          0 si saturation du tableau noartr ou noarcf ou n1arcf
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,*),
-     %                  noartr(moartr,*),
-     %                  noarst(*),
-     %                  n1arcf(0:*),
-     %                  noarcf(3,*)
-c
-      ierr = 0
-c
-c     2 contours fermes peuvent ils etre ajoutes ?
-      if( nbcf+2 .gt. mxarcf ) goto 9100
-c
-c     creation des 3 aretes du triangle dans le tableau nosoar
-c     ========================================================
-c     la formation de l'arete sommet1-sommet2 dans le tableau nosoar
-      call fasoar( noarcf(1,na1), noarcf(1,na2), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar1,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     la formation de l'arete sommet2-sommet3 dans le tableau nosoar
-      call fasoar( noarcf(1,na2), noarcf(1,na3), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar2,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     la formation de l'arete sommet3-sommet1 dans le tableau nosoar
-      call fasoar( noarcf(1,na3), noarcf(1,na1), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar3,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     ajout dans noartr de ce triangle nt
-c     ===================================
-      call trcf3a( noarcf(1,na1),  noarcf(1,na2), noarcf(1,na3),
-     %             noar1,  noar2,  noar3,
-     %             mosoar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nt )
-      if( nt .le. 0 ) return
-c
-c     modification du contour nbcf existant
-c     chainage de l'arete na2 vers l'arete na1
-c     ========================================
-c     modification du cf en pointant na2 sur na1
-      na2s = noarcf( 2, na2 )
-      noarcf( 2, na2 ) = na1
-c     le numero de l'arete dans le tableau nosoar
-      noar2s = noarcf( 3, na2 )
-c     le numero de l'arete dans le tableau nosoar
-      noarcf( 3, na2 ) = noar1
-c     debut du cf
-      n1arcf( nbcf ) = na2
-c
-c     creation d'un nouveau contour ferme na2 - na3
-c     =============================================
-      nbcf = nbcf + 1
-c     recherche d'une arete de cf vide
-      nav = n1arcf(0)
-      if( nav .le. 0 ) goto 9100
-c     la 1-ere arete vide est mise a jour
-      n1arcf(0) = noarcf( 2, nav )
-c
-c     ajout de l'arete nav pointant sur na2s
-c     le numero du sommet
-      noarcf( 1, nav ) = noarcf( 1, na2 )
-c     l'arete suivante
-      noarcf( 2, nav ) = na2s
-c     le numero nosoar de cette arete
-      noarcf( 3, nav ) = noar2s
-c
-c     l'arete na3 se referme sur nav
-      na3s = noarcf( 2, na3 )
-      noarcf( 2, na3 ) = nav
-c     le numero de l'arete dans le tableau nosoar
-      noar3s = noarcf( 3, na3 )
-      noarcf( 3, na3 ) = noar2
-c     debut du cf+1
-      n1arcf( nbcf ) = na3
-c
-c     creation d'un nouveau contour ferme na3 - na1
-c     =============================================
-      nbcf = nbcf + 1
-c     recherche d'une arete de cf vide
-      nav = n1arcf(0)
-      if( nav .le. 0 ) goto 9100
-c     la 1-ere arete vide est mise a jour
-      n1arcf(0) = noarcf( 2, nav )
-c
-c     ajout de l'arete nav pointant sur na3s
-c     le numero du sommet
-      noarcf( 1, nav ) = noarcf( 1, na3 )
-c     l'arete suivante
-      noarcf( 2, nav ) = na3s
-c     le numero de l'arete dans le tableau nosoar
-      noarcf( 3, nav ) = noar3s
-c
-c     recherche d'une arete de cf vide
-      nav1 = n1arcf(0)
-      if( nav1 .le. 0 ) goto 9100
-c     la 1-ere arete vide est mise a jour
-      n1arcf(0) = noarcf( 2, nav1 )
-c
-c     l'arete precedente na01 de na1 pointe sur la nouvelle nav1
-      noarcf( 2, na01 ) = nav1
-c
-c     ajout de l'arete nav1 pointant sur nav
-c     le numero du sommet
-      noarcf( 1, nav1 ) = noarcf( 1, na1 )
-c     l'arete suivante
-      noarcf( 2, nav1 ) = nav
-c     le numero de l'arete dans le tableau nosoar
-      noarcf( 3, nav1 ) = noar3
-c
-c     debut du cf+2
-      n1arcf( nbcf ) = nav1
-      return
-c
-c     erreur
- 9100 write(imprim,*) 'saturation du tableau mxarcf'
-      nt = 0
-      return
-c
-c     erreur tableau nosoar sature
- 9900 write(imprim,*) 'saturation du tableau nosoar'
-      nt = 0
-      return
-      end
-
-
-      subroutine trcf1a( nbcf,   na01,   na1,    na2, noar1, noar3,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, nt )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    modification de la triangulation du contour ferme nbcf
-c -----    par ajout d'un triangle ayant 1 arete sur le contour
-c          modification du contour par ajout de la 3-eme arete
-c          creation d'un contour ferme a partir de la seconde arete
-c
-c entrees:
-c --------
-c nbcf    : numero dans n1arcf du cf traite ici
-c na01    : numero noarcf de l'arete precedant l'arete na1 de noarcf
-c na1     : numero noarcf du 1-er sommet du triangle
-c           implicitement l'arete na1 n'est pas une arete du triangle
-c na2     : numero noarcf du 2-eme sommet du triangle
-c           cette arete est l'arete 2 du triangle a ajouter
-c           son arete suivante dans noarcf n'est pas sur le contour
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c entrees et sorties :
-c --------------------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1arcf : numero d'une arete de chaque contour
-c noarcf : numero des aretes de la ligne du contour ferme
-c          attention : chainage circulaire des aretes
-c
-c sortie :
-c --------
-c noar1  : numero nosoar de l'arete 1 du triangle cree
-c noar3  : numero nosoar de l'arete 3 du triangle cree
-c nt     : numero du triangle ajoute dans notria
-c          0 si saturation du tableau notria ou noarcf ou n1arcf
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,*),
-     %                  noarst(*),
-     %                  n1arcf(0:*),
-     %                  noarcf(3,*)
-c
-c     un cf supplementaire peut il etre ajoute ?
-      if( nbcf .ge. mxarcf ) then
-         write(imprim,*) 'saturation du tableau noarcf'
-         nt = 0
-         return
-      endif
-c
-      ierr = 0
-c
-c     l' arete suivante du triangle non sur le cf
-      na3 = noarcf( 2, na2 )
-c
-c     creation des 2 nouvelles aretes du triangle dans le tableau nosoar
-c     ==================================================================
-c     la formation de l'arete sommet1-sommet2 dans le tableau nosoar
-      call fasoar( noarcf(1,na1), noarcf(1,na2), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar1,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     la formation de l'arete sommet1-sommet3 dans le tableau nosoar
-      call fasoar( noarcf(1,na3), noarcf(1,na1), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar3,  ierr )
-      if( ierr .ne. 0 ) goto 9900
-c
-c     le triangle nt de noartr a l'arete 2 comme arete du contour na2
-c     ===============================================================
-      call trcf3a( noarcf(1,na1), noarcf(1,na2), noarcf(1,na3),
-     %             noar1, noarcf(3,na2), noar3,
-     %             mosoar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nt )
-      if( nt .le. 0 ) return
-c
-c     modification du contour ferme existant
-c     suppression de l'arete na2 du cf
-c     ======================================
-c     modification du cf en pointant na2 sur na1
-      noarcf( 2, na2 ) = na1
-      noarcf( 3, na2 ) = noar1
-c     debut du cf
-      n1arcf( nbcf ) = na2
-c
-c     creation d'un nouveau contour ferme na3 - na1
-c     =============================================
-      nbcf = nbcf + 1
-c
-c     recherche d'une arete de cf vide
-      nav = n1arcf(0)
-      if( nav .le. 0 ) then
-         write(imprim,*) 'saturation du tableau noarcf'
-         nt = 0
-         return
-      endif
-c
-c     la 1-ere arete vide est mise a jour
-      n1arcf(0) = noarcf( 2, nav )
-c
-c     ajout de l'arete nav pointant sur na3
-c     le numero du sommet
-      noarcf( 1, nav ) = noarcf( 1, na1 )
-c     l'arete suivante
-      noarcf( 2, nav ) = na3
-c     le numero de l'arete dans le tableau nosoar
-      noarcf( 3, nav ) = noar3
-c
-c     l'arete precedente na01 de na1 pointe sur la nouvelle nav
-      noarcf( 2, na01 ) = nav
-c
-c     debut du cf
-      n1arcf( nbcf ) = nav
-      return
-c
-c     erreur tableau nosoar sature
- 9900 write(imprim,*) 'saturation du tableau nosoar'
-      nt = 0
-      return
-      end
-
-
-      subroutine trcf2a( nbcf,   na1,    noar3,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   n1arcf, noarcf, nt )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    modification de la triangulation du contour ferme nbcf
-c -----    par ajout d'un triangle ayant 2 aretes sur le contour
-c          creation d'une arete dans nosoar (sommet3-sommet1)
-c          et modification du contour par ajout de la 3-eme arete
-c
-c entrees:
-c --------
-c nbcf   : numero dans n1arcf du cf traite ici
-c na1    : numero noarcf de la premiere arete sur le contour
-c          implicitement sa suivante est sur le contour
-c          la suivante de la suivante n'est pas sur le contour
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c entrees et sorties :
-c --------------------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1arcf : numero d'une arete de chaque contour
-c noarcf : numero des aretes de la ligne du contour ferme
-c          attention : chainage circulaire des aretes
-c
-c sortie :
-c --------
-c noar3  : numero de l'arete 3 dans le tableau nosoar
-c nt     : numero du triangle ajoute dans noartr
-c          0 si saturation du tableau noartr ou nosoar
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,*),
-     %                  noartr(moartr,*),
-     %                  noarst(*)
-      integer           n1arcf(0:*),
-     %                  noarcf(3,*)
-c
-      ierr = 0
-c
-c     l'arete suivante de l'arete na1 dans noarcf
-      na2 = noarcf( 2, na1 )
-c     l'arete suivante de l'arete na2 dans noarcf
-      na3 = noarcf( 2, na2 )
-c
-c     la formation de l'arete sommet3-sommet1 dans le tableau nosoar
-      call fasoar( noarcf(1,na3), noarcf(1,na1), -1, -1,  0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar3,  ierr )
-      if( ierr .ne. 0 ) then
-         if( ierr .eq. 1 ) then
-            write(imprim,*) 'saturation des aretes (tableau nosoar)'
-         endif
-         nt = 0
-         return
-      endif
-c
-c     le triangle a ses 2 aretes na1 na2 sur le contour ferme
-c     ajout dans noartr de ce triangle nt
-      call trcf3a( noarcf(1,na1), noarcf(1,na2), noarcf(1,na3),
-     %             noarcf(3,na1), noarcf(3,na2), noar3,
-     %             mosoar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nt )
-      if( nt .le. 0 ) return
-c
-c     suppression des 2 aretes (na1 na2) du cf
-c     ces 2 aretes se suivent dans le chainage du cf
-c     ajout de la 3-eme arete  (noar3) dans le cf
-c     l'arete suivante de na1 devient la suivante de na2
-      noarcf(2,na1) = na3
-      noarcf(3,na1) = noar3
-c
-c     l'arete na2 devient vide dans noarcf
-      noarcf(2,na2) = n1arcf( 0 )
-      n1arcf( 0 )   = na2
-c
-c     la premiere pointee dans noarcf est na1
-c     chainage circulaire => ce peut etre n'importe laquelle
-      n1arcf(nbcf) = na1
-      end
-
-
-      subroutine trcf3a( ns1,    ns2,    ns3,
-     %                   noar1,  noar2,  noar3,
-     %                   mosoar, nosoar,
-     %                   moartr, n1artr, noartr,
-     %                   nt )
-c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    ajouter dans le tableau noartr le triangle
-c -----    de sommets ns1   ns2   ns3
-c          d'aretes   noar1 noar2 noar3 deja existantes
-c                     dans le tableau nosoar des aretes
-c
-c entrees:
-c --------
-c ns1,  ns2,  ns3   : le numero dans pxyd   des 3 sommets du triangle
-c noar1,noar2,noar3 : le numero dans nosoar des 3 aretes  du triangle
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies :
-c ----------
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c sorties:
-c --------
-c nt     : numero dans noartr du triangle ajoute
-c          =0 si le tableau noartr est sature
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu,imprim,nunite(30)
-      integer           nosoar(mosoar,*),
-     %                  noartr(moartr,*)
-c
-c     recherche d'un triangle libre dans le tableau noartr
-      if( n1artr .le. 0 ) then
-         write(imprim,*) 'saturation du tableau noartr des aretes'
-         nt = 0
-         return
-      endif
-c
-c     le numero dans noartr du nouveau triangle
-      nt = n1artr
-c
-c     le nouveau premier triangle vide dans le tableau noartr
-      n1artr = noartr(2,n1artr)
-c
-c     arete 1 du triangle nt
-c     ======================
-c     orientation des 3 aretes du triangle pour qu'il soit direct
-      if( ns1 .eq. nosoar(1,noar1) ) then
-         n =  1
-      else
-         n = -1
-      endif
-c     le numero de l'arete 1 du triangle nt
-      noartr(1,nt) = n * noar1
-c
-c     le numero du triangle nt pour l'arete
-      if( nosoar(4,noar1) .le. 0 ) then
-         n = 4
-      else
-         n = 5
-      endif
-      nosoar(n,noar1) = nt
-c
-c     arete 2 du triangle nt
-c     ======================
-c     orientation des 3 aretes du triangle pour qu'il soit direct
-      if( ns2 .eq. nosoar(1,noar2) ) then
-         n =  1
-      else
-         n = -1
-      endif
-c     le numero de l'arete 2 du triangle nt
-      noartr(2,nt) = n * noar2
-c
-c     le numero du triangle nt pour l'arete
-      if( nosoar(4,noar2) .le. 0 ) then
-         n = 4
-      else
-         n = 5
-      endif
-      nosoar(n,noar2) = nt
-c
-c     arete 3 du triangle nt
-c     ======================
-c     orientation des 3 aretes du triangle pour qu'il soit direct
-      if( ns3 .eq. nosoar(1,noar3) ) then
-         n =  1
-      else
-         n = -1
-      endif
-c     le numero de l'arete 3 du triangle nt
-      noartr(3,nt) = n * noar3
-c
-c     le numero du triangle nt pour l'arete
-      if( nosoar(4,noar3) .le. 0 ) then
-         n = 4
-      else
-         n = 5
-      endif
-      nosoar(n,noar3) = nt
-      end
-
-
-
-      subroutine trcf3s( nbcf,   na01,   na1,    na02,  na2, na03, na3,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, nt )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :     ajout d'un triangle d'aretes na1 2 3 du tableau noarcf
-c -----     a la triangulation d'un contour ferme (cf)
-c
-c entrees:
-c --------
-c nbcf    : numero dans n1arcf du cf traite ici
-c           mais aussi nombre actuel de cf avant ajout du triangle
-c na01    : numero noarcf de l'arete precedent l'arete na1 de noarcf
-c na1     : numero noarcf du 1-er sommet du triangle
-c na02    : numero noarcf de l'arete precedent l'arete na2 de noarcf
-c na2     : numero noarcf du 2-eme sommet du triangle
-c na03    : numero noarcf de l'arete precedent l'arete na3 de noarcf
-c na3     : numero noarcf du 3-eme sommet du triangle
-c
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxarcf : nombre maximal d'aretes declarables dans noarcf, n1arcf
-c
-c modifies:
-c ---------
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c n1arcf : numero d'une arete de chaque contour ferme
-c noarcf : numero du sommet , numero de l'arete suivante
-c          numero de l'arete dans le tableau nosoar
-c          attention : chainage circulaire des aretes
-c
-c sortie :
-c --------
-c nbcf   : nombre actuel de cf apres ajout du triangle
-c nt     : numero du triangle ajoute dans noartr
-c          0 si saturation du tableau nosoar ou noartr ou noarcf ou n1arcf
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      integer        nosoar(mosoar,*),
-     %               noartr(moartr,*),
-     %               noarst(*),
-     %               n1arcf(0:mxarcf),
-     %               noarcf(3,mxarcf)
-c
-c     combien y a t il d'aretes nbascf sur le cf ?
-c     ============================================
-c     la premiere arete est elle sur le cf?
-      if( noarcf(2,na1) .eq. na2 ) then
-c        la 1-ere arete est sur le cf
-         na1cf  = 1
-      else
-c        la 1-ere arete n'est pas sur le cf
-         na1cf  = 0
-      endif
-c
-c     la seconde arete est elle sur le cf?
-      if( noarcf(2,na2) .eq. na3 ) then
-c        la 2-eme arete est sur le cf
-         na2cf = 1
-      else
-         na2cf = 0
-      endif
-c
-c     la troisieme arete est elle sur le cf?
-      if( noarcf(2,na3) .eq. na1 ) then
-c        la 3-eme arete est sur le cf
-         na3cf = 1
-      else
-         na3cf = 0
-      endif
-c
-c     le nombre d'aretes sur le cf
-      nbascf = na1cf + na2cf + na3cf
-c
-c     traitement selon le nombre d'aretes sur le cf
-c     =============================================
-      if( nbascf .eq. 3 ) then
-c
-c        le contour ferme se reduit a un triangle avec 3 aretes sur le cf
-c        ----------------------------------------------------------------
-c        ajout dans noartr de ce nouveau triangle
-         call trcf3a( noarcf(1,na1), noarcf(1,na2), noarcf(1,na3),
-     %                noarcf(3,na1), noarcf(3,na2), noarcf(3,na3),
-     %                mosoar, nosoar,
-     %                moartr, n1artr, noartr,
-     %                nt )
-         if( nt .le. 0 ) return
-c
-c        le cf est supprime et chaine vide
-         noarcf(2,na3) = n1arcf(0)
-         n1arcf( 0 )   = na1
-c
-c        ce cf a ete traite => un cf de moins a traiter
-         nbcf = nbcf - 1
-c
-      else if( nbascf .eq. 2 ) then
-c
-c        le triangle a 2 aretes sur le contour
-c        -------------------------------------
-c        les 2 aretes sont la 1-ere et 2-eme du triangle
-         if( na1cf .eq. 0 ) then
-c           l'arete 1 n'est pas sur le cf
-            naa1 = na2
-         else if( na2cf .eq. 0 ) then
-c           l'arete 2 n'est pas sur le cf
-            naa1 = na3
-         else
-c           l'arete 3 n'est pas sur le cf
-            naa1 = na1
-         endif
-c        le triangle oppose a l'arete 3 est inconnu
-c        modification du contour apres integration du
-c        triangle ayant ses 2-eres aretes sur le cf
-         call trcf2a( nbcf,   naa1,   naor3,
-     %                mosoar, mxsoar, n1soar, nosoar,
-     %                moartr, n1artr, noartr, noarst,
-     %                n1arcf, noarcf, nt )
-c
-      else if( nbascf .eq. 1 ) then
-c
-c        le triangle a 1 arete sur le contour
-c        ------------------------------------
-c        cette arete est la seconde du triangle
-         if( na3cf .ne. 0 ) then
-c           l'arete 3 est sur le cf
-            naa01 = na02
-            naa1  = na2
-            naa2  = na3
-         else if( na1cf .ne. 0 ) then
-c           l'arete 1 est sur le cf
-            naa01 = na03
-            naa1  = na3
-            naa2  = na1
-         else
-c           l'arete 2 est sur le cf
-            naa01 = na01
-            naa1  = na1
-            naa2  = na2
-         endif
-c        le triangle oppose a l'arete 1 et 3 est inconnu
-c        modification du contour apres integration du
-c        triangle ayant 1 arete sur le cf avec creation
-c        d'un nouveau contour ferme
-         call trcf1a( nbcf, naa01, naa1, naa2, naor1, naor3,
-     %                mosoar, mxsoar, n1soar, nosoar,
-     %                moartr, n1artr, noartr, noarst,
-     %                mxarcf, n1arcf, noarcf, nt )
-c
-      else
-c
-c        le triangle a 0 arete sur le contour
-c        ------------------------------------
-c        modification du contour apres integration du
-c        triangle ayant 0 arete sur le cf avec creation
-c        de 2 nouveaux contours fermes
-         call trcf0a( nbcf, na01,  na1, na2, na3,
-     %                naa1, naa2, naa01,
-     %                mosoar, mxsoar, n1soar, nosoar,
-     %                moartr, n1artr, noartr, noarst,
-     %                mxarcf, n1arcf, noarcf, nt )
-      endif
-      end
-
-
-      subroutine tridcf( nbcf0,  pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr,
-     %                   mxarcf, n1arcf, noarcf, larmin,
-     %                   nbtrcf, notrcf, ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    triangulation directe de nbcf0 contours fermes (cf)
-c -----    definis par la liste circulaire de leurs aretes peripheriques
-c
-c entrees:
-c --------
-c nbcf0  : nombre initial de cf a trianguler
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxarcf  : nombre maximal d'aretes declarables dans noarcf, n1arcf, larmin, not
-c
-c modifies:
-c ---------
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c n1arcf : numero de la premiere arete de chacun des nbcf0 cf
-c          n1arcf(0)   no de la premiere arete vide du tableau noarcf
-c          noarcf(2,i) no de l'arete suivante
-c noarcf : numero du sommet , numero de l'arete suivante du cf
-c          numero de l'arete dans le tableau nosoar
-c
-c auxiliaires :
-c -------------
-c larmin : tableau (mxarcf)   auxiliaire
-c          stocker la liste des numeros des meilleures aretes
-c          lors de la selection du meilleur sommet du cf a trianguler
-c          cf le sp trchtd
-c
-c sortie :
-c --------
-c nbtrcf : nombre de  triangles des nbcf0 cf
-c notrcf : numero des triangles des nbcf0 cf dans le tableau noartr
-c ierr   : 0 si pas d'erreur
-c          2 saturation de l'un des des tableaux nosoar, noartr, ...
-c          3 si contour ferme reduit a moins de 3 aretes
-c          4 saturation du tableau notrcf
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf)
-c
-ccc      integer           nosotr(3)
-ccc      double precision  d, surtd2
-c
-c     depart avec nbcf0 cf a trianguler
-      nbcf   = nbcf0
-c
-c     le nombre de triangles formes dans l'ensemble des cf
-      nbtrcf = 0
-c
-c     tant qu'il existe un cf a trianguler faire
-c     la triangulation directe du cf
-c     ==========================================
- 10   if( nbcf .gt. 0 ) then
-c
-c        le cf en haut de pile a pour premiere arete
-         na01 = n1arcf( nbcf )
-         na1  = noarcf( 2, na01 )
-c
-c        choix du sommet du cf a relier a l'arete na1
-c        --------------------------------------------
-         call trchtd( pxyd, na01, na1, noarcf,
-     %                na03, na3,  larmin )
-         if( na3 .eq. 0 ) then
-            ierr = 3
-            return
-         endif
-c
-c        l'arete suivante de na1
-         na02 = na1
-         na2  = noarcf( 2, na1 )
-c
-c        formation du triangle arete na1 - sommet noarcf(1,na3)
-c        ------------------------------------------------------
-         call trcf3s( nbcf,   na01, na1, na02, na2, na03, na3,
-     %                mosoar, mxsoar, n1soar, nosoar,
-     %                moartr, n1artr, noartr, noarst,
-     %                mxarcf, n1arcf, noarcf, nt )
-         if( nt .le. 0 ) then
-c           saturation du tableau noartr ou noarcf ou n1arcf
-            ierr = 2
-            return
-         endif
-c
-c        ajout du triangle cree a sa pile
-         if( nbtrcf .ge. mxarcf ) then
-            write(imprim,*) 'saturation du tableau notrcf'
-            ierr = 4
-            return
-         endif
-         nbtrcf = nbtrcf + 1
-         notrcf( nbtrcf ) = nt
-         goto 10
-      endif
-c
-c     mise a jour du chainage des triangles des aretes
-c     ================================================
-      do 30 ntp0 = 1, nbtrcf
-c
-c        le numero du triangle ajoute dans le tableau noartr
-         nt0 = notrcf( ntp0 )
-c
-cccc        aire signee du triangle nt0
-cccc        le numero des 3 sommets du triangle nt
-ccc         call nusotr( nt0, mosoar, nosoar, moartr, noartr,
-ccc     %                nosotr )
-ccc         d = surtd2( pxyd(1,nosotr(1)), pxyd(1,nosotr(2)),
-ccc     %               pxyd(1,nosotr(3)) )
-ccc         if( d .le. 0 ) then
-cccc
-cccc           un triangle d'aire negative de plus
-ccc            write(imprim,*) 'triangle ',nt0,' st:',nosotr,
-ccc     %                      ' d aire ',d,'<=0'
-ccc            pause
-ccc         endif
-c
-cccc        trace du triangle nt0
-ccc         call mttrtr( pxyd, nt0, moartr, noartr, mosoar, nosoar,
-ccc     %                ncturq, ncblan )
-c
-c        boucle sur les 3 aretes du triangle
-         do 20 i=1,3
-c
-c           le numero de l'arete i du triangle dans le tableau nosoar
-            noar = abs( noartr(i,nt0) )
-c
-c           ce triangle est il deja chaine dans cette arete?
-            nt1 = nosoar(4,noar)
-            nt2 = nosoar(5,noar)
-            if( nt1 .eq. nt0 .or. nt2 .eq. nt0 ) goto 20
-c
-c           ajout de ce triangle nt0 a l'arete noar
-            if( nt1 .le. 0 ) then
-c               le triangle est ajoute a l'arete
-                nosoar( 4, noar ) = nt0
-            else if( nt2 .le. 0 ) then
-c               le triangle est ajoute a l'arete
-                nosoar( 5, noar ) = nt0
-            else
-c              l'arete appartient a 2 triangles differents de nt0
-c              anomalie. chainage des triangles des aretes defectueux
-c              a corriger
-               write(imprim,*) 'pause dans tridcf'
-               ierr = 5
-               return
-            endif
-c
- 20      continue
-c
- 30   continue
-      end
-
-
-      subroutine te1stm( nsasup, pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   mxarcf, n1arcf, noarcf, larmin, notrcf, liarcf,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    supprimer de la triangulation le sommet nsasup qui doit
-c -----    etre un sommet interne ("centre" d'une boule de triangles)
-c
-c          attention: le chainage lchain de nosoar devient celui des cf
-c
-c entrees:
-c --------
-c nsasup : numero dans le tableau pxyd du sommet a supprimer
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxarcf : nombre de variables des tableaux n1arcf, noarcf, larmin, notrcf
-c
-c modifies:
-c ---------
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c
-c auxiliaires :
-c -------------
-c n1arcf : tableau (0:mxarcf) auxiliaire d'entiers
-c noarcf : tableau (3,mxarcf) auxiliaire d'entiers
-c larmin : tableau ( mxarcf ) auxiliaire d'entiers
-c notrcf : tableau ( mxarcf ) auxiliaire d'entiers
-c liarcf : tableau ( mxarcf ) auxiliaire d'entiers
-c
-c sortie :
-c --------
-c ierr   : =0 si pas d'erreur
-c          -1 le sommet a supprimer n'est pas le centre d'une boule
-c             de triangles. il est suppose externe
-c             ou bien le sommet est centre d'un cf dont toutes les
-c             aretes sont frontalieres
-c             dans les 2 cas => retour sans modifs
-c          >0 si une erreur est survenue
-c          =11 algorithme defaillant
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter       ( lchain=6, quamal=0.3)
-      common / unites / lecteu,imprim,intera,nunite(29)
-      double precision  pxyd(3,*)
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,*),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf),
-     %                  liarcf(mxarcf)
-c
-c     nsasup est il un sommet interne, "centre" d'une boule de triangles?
-c     => le sommet nsasup peut etre supprime
-c     ===================================================================
-c     formation du cf de ''centre'' le sommet nsasup
-      call trp1st( nsasup, noarst, mosoar, nosoar,
-     %             moartr, noartr,
-     %             mxarcf, nbtrcf, notrcf )
-      if( nbtrcf .le. 0 ) then
-c        erreur: impossible de trouver tous les triangles de sommet nsasup
-c        le sommet nsasup n'est pas supprime de la triangulation
-         ierr = -1
-         return
-      else if( nbtrcf .le. 2 ) then
-c        le sommet nsasup n'est pas supprime
-         ierr = -1
-         return
-      endif
-      if( nbtrcf*3 .gt. mxarcf ) then
-         write(imprim,*) 'saturation du tableau noarcf'
-         ierr = 10
-         return
-      endif
-c
-ccc      trace des triangles de l'etoile du sommet nsasup
-ccc      call trpltr( nbtrcf, notrcf, pxyd,
-ccc     %             moartr, noartr, mosoar, nosoar,
-ccc     %             ncroug, ncblan )
-c
-c     si toutes les aretes du cf sont frontalieres, alors il est
-c     interdit de detruire le sommet "centre" du cf
-c     calcul du nombre nbarfr des aretes simples des nbtrcf triangles
-      call trfrcf( nsasup, mosoar, nosoar, moartr, noartr,
-     %             nbtrcf, notrcf, nbarfr  )
-      if( nbarfr .ge. nbtrcf ) then
-c        toutes les aretes simples sont frontalieres
-c        le sommet nsasup ("centre" de la cavite) n'est pas supprime
-         ierr = -1
-         return
-      endif
-c
-c     formation du contour ferme (liste chainee des aretes simples)
-c     forme a partir des aretes des triangles de l'etoile du sommet nsasup
-      call focftr( nbtrcf, notrcf, pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nbarcf, n1arcf, noarcf,
-     %             ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ici le sommet nsasup appartient a aucune arete
-      noarst( nsasup ) = 0
-c
-c     chainage des aretes vides dans le tableau noarcf
-      n1arcf(0) = nbarcf+1
-      mmarcf = min(8*nbarcf,mxarcf)
-      do 40 i=nbarcf+1,mmarcf
-         noarcf(2,i) = i+1
- 40   continue
-      noarcf(2,mmarcf) = 0
-c
-c     sauvegarde du chainage des aretes peripheriques
-c     pour la mise en delaunay du maillage
-      nbcf = n1arcf(1)
-      do 50 i=1,nbarcf
-c        le numero de l'arete dans le tableau nosoar
-         liarcf( i ) = noarcf( 3, nbcf )
-c        l'arete suivante dans le cf
-         nbcf = noarcf( 2, nbcf )
- 50   continue
-c
-c     triangulation directe du contour ferme sans le sommet nsasup
-c     ============================================================
-      nbcf = 1
-      call tridcf( nbcf,   pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             mxarcf, n1arcf, noarcf, larmin,
-     %             nbtrcf, notrcf, ierr )
-      if( ierr .ne. 0 ) return
-c
-c     transformation des triangles du cf en triangles delaunay
-c     ========================================================
-c     construction du chainage lchain dans nosoar
-c     des aretes peripheriques du cf a partir de la sauvegarde liarcf
-      noar0 = liarcf(1)
-      do 60 i=2,nbarcf
-c        le numero de l'arete peripherique du cf dans nosoar
-         noar = liarcf( i )
-         if( nosoar(3,noar) .le. 0 ) then
-c           arete interne => elle est chainee a partir de la precedente
-            nosoar( lchain, noar0 ) = noar
-            noar0 = noar
-         endif
- 60   continue
-c     la derniere arete peripherique n'a pas de suivante
-      nosoar(lchain,noar0) = 0
-c
-c     mise en delaunay des aretes chainees
-      call tedela( pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar, liarcf(1),
-     %             moartr, mxartr, n1artr, noartr, modifs )
-ccc   write(imprim,*) 'nombre echanges diagonales =',modifs
-      return
-      end
-
-
-      subroutine tr3str( np,     nt,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former les 3 sous-triangles du triangle nt a partir
-c -----    du point interne np
-c
-c entrees:
-c --------
-c np     : numero dans le tableau pxyd du point
-c nt     : numero dans le tableau noartr du triangle a trianguler
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c sorties:
-c --------
-c nutr   : le numero des 3 sous-triangles du triangle nt
-c nt     : en sortie le triangle initial n'est plus actif dans noartr
-c          c'est en fait le premier triangle vide de noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      integer    nosoar(mosoar,mxsoar),
-     %           noartr(moartr,mxartr),
-     %           noarst(*),
-     %           nutr(3)
-c
-      integer    nosotr(3), nu2sar(2), nuarco(3)
-c
-c     reservation des 3 nouveaux triangles dans le tableau noartr
-c     ===========================================================
-      do 10 i=1,3
-c        le numero du sous-triangle i dans le tableau noartr
-         if( n1artr .le. 0 ) then
-c           tableau noartr sature
-            ierr = 2
-            return
-         endif
-         nutr(i) = n1artr
-c        le nouveau premier triangle libre dans noartr
-         n1artr = noartr(2,n1artr)
- 10   continue
-c
-c     les numeros des 3 sommets du triangle nt
-      call nusotr( nt, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c     formation des 3 aretes nosotr(i)-np dans le tableau nosoar
-c     ==========================================================
-      nt0 = nutr(3)
-      do 20 i=1,3
-c
-c        le triangle a creer
-         nti = nutr(i)
-c
-c        les 2 sommets du cote i du triangle nosotr
-         nu2sar(1) = nosotr(i)
-         nu2sar(2) = np
-         call hasoar( mosoar, mxsoar, n1soar, nosoar, nu2sar, noar )
-c        en sortie: noar>0 => no arete retrouvee
-c                       <0 => no arete ajoutee
-c                       =0 => saturation du tableau nosoar
-c
-         if( noar .eq. 0 ) then
-c           saturation du tableau nosoar
-            ierr = 1
-            return
-         else if( noar .lt. 0 ) then
-c           l'arete a ete ajoutee. initialisation des autres informations
-            noar = -noar
-c           le numero des 2 sommets a ete initialise par hasoar
-c           et (nosoar(1,noar)<nosoar(2,noar))
-c           le numero de la ligne de l'arete: ici arete interne
-            nosoar(3,noar) = 0
-c        else
-c           l'arete a ete retrouvee
-c           le numero des 2 sommets a ete retrouve par hasoar
-c           et (nosoar(1,noar)<nosoar(2,noar))
-c           le numero de ligne reste inchange
-         endif
-c
-c        le triangle 1 de l'arete noar => le triangle nt0
-         nosoar(4,noar) = nt0
-c        le triangle 2 de l'arete noar => le triangle nti
-         nosoar(5,noar) = nti
-c
-c        le sommet nosotr(i) appartient a l'arete noar
-         noarst( nosotr(i) ) = noar
-c
-c        le numero d'arete nosotr(i)-np
-         nuarco(i) = noar
-c
-c        le triangle qui precede le suivant
-         nt0 = nti
- 20   continue
-c
-c     le numero d'une arete du point np
-      noarst( np ) = noar
-c
-c     les 3 sous-triangles du triangle nt sont formes dans le tableau noartr
-c     ======================================================================
-      do 30 i=1,3
-c
-c        le numero suivant i => i mod 3 + 1
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c
-c        le numero dans noartr du sous-triangle a ajouter
-         nti = nutr( i )
-c
-c        le numero de l'arete i du triangle initial nt
-c        est l'arete 1 du sous-triangle i
-         noar = noartr(i,nt)
-         noartr( 1, nti ) = noar
-c
-c        mise a jour du numero de triangle de cette arete
-         noar = abs( noar )
-         if( nosoar(4,noar) .eq. nt ) then
-c           le sous-triangle nti remplace le triangle nt
-            nosoar(4,noar) = nti
-         else
-c           le sous-triangle nti remplace le triangle nt
-            nosoar(5,noar) = nti
-         endif
-c
-c        l'arete 2 du sous-triangle i est l'arete i1 ajoutee
-         if( nosotr(i1) .eq. nosoar(1,nuarco(i1)) ) then
-c           l'arete ns i1-np dans nosoar est dans le sens direct
-            noartr( 2, nti ) = nuarco(i1)
-         else
-c           l'arete ns i1-np dans nosoar est dans le sens indirect
-            noartr( 2, nti ) = -nuarco(i1)
-         endif
-c
-c        l'arete 3 du sous-triangle i est l'arete i ajoutee
-         if( nosotr(i) .eq. nosoar(1,nuarco(i)) ) then
-c           l'arete ns i1-np dans nosoar est dans le sens indirect
-            noartr( 3, nti ) = -nuarco(i)
-         else
-c           l'arete ns i1-np dans nosoar est dans le sens direct
-            noartr( 3, nti ) = nuarco(i)
-         endif
- 30   continue
-c
-c     le triangle nt est rendu libre
-c     ==============================
-c     il devient n1artr le premier triangle libre
-      noartr( 1, nt ) = 0
-      noartr( 2, nt ) = n1artr
-      n1artr = nt
-      end
-
-
-      subroutine mt4sqa( na,  moartr, noartr, mosoar, nosoar,
-     %                   ns1, ns2, ns3, ns4)
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    calcul du numero des 4 sommets de l'arete na de nosoar
-c -----    formant un quadrangle
-c
-c entrees:
-c --------
-c na     : numero de l'arete dans nosoar a traiter
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1=0 si triangle vide => arete2=triangle vide suivant
-c mosoar : nombre maximal d'entiers par arete
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c
-c sorties:
-c --------
-c ns1,ns2,ns3 : les 3 numeros des sommets du triangle t1 en sens direct
-c ns1,ns4,ns2 : les 3 numeros des sommets du triangle t2 en sens direct
-c
-c si erreur rencontree => ns4 = 0
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           noartr(moartr,*), nosoar(mosoar,*)
-c
-c     le numero de triangle est il correct  ?
-c     a supprimer apres mise au point
-      if( na .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') na
-c         kerr(1) = kerr(mxlger)(1:6) //
-c     %           ' no incorrect arete dans nosoar'
-c         call lereur
-          write(imprim,*) na, ' no incorrect arete dans nosoar'
-         ns4 = 0
-         return
-      endif
-c
-      if( nosoar(1,na) .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') na
-c         kerr(1) = kerr(mxlger)(1:6) //
-c     %           ' arete non active dans nosoar'
-c         call lereur
-         write(imprim,*) na, ' arete non active dans nosoar'
-         ns4 = 0
-         return
-      endif
-c
-c     recherche de l'arete na dans le premier triangle
-      nt = nosoar(4,na)
-      if( nt .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') na
-c         kerr(1) =  'triangle 1 incorrect pour l''arete ' //
-c     %               kerr(mxlger)(1:6)
-c         call lereur
-         write(imprim,*) 'triangle 1 incorrect pour l''arete ', na
-         ns4 = 0
-         return
-      endif
-c
-      do 5 i=1,3
-         if( abs( noartr(i,nt) ) .eq. na ) goto 8
- 5    continue
-c     si arrivee ici => bogue avant
-      write(imprim,*) 'mt4sqa: arete',na,' non dans le triangle',nt
-      ns4 = 0
-      return
-c
-c     les 2 sommets de l'arete na
- 8    if( noartr(i,nt) .gt. 0 ) then
-         ns1 = 1
-         ns2 = 2
-      else
-         ns1 = 2
-         ns2 = 1
-      endif
-      ns1 = nosoar(ns1,na)
-      ns2 = nosoar(ns2,na)
-c
-c     l'arete suivante
-      if( i .lt. 3 ) then
-         i = i + 1
-      else
-         i = 1
-      endif
-      naa = abs( noartr(i,nt) )
-c
-c     le sommet ns3 du triangle 123
-      ns3 = nosoar(1,naa)
-      if( ns3 .eq. ns1 .or. ns3 .eq. ns2 ) then
-         ns3 = nosoar(2,naa)
-      endif
-c
-c     le triangle de l'autre cote de l'arete na
-c     =========================================
-      nt = nosoar(5,na)
-      if( nt .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') na
-c         kerr(1) =  'triangle 2 incorrect pour l''arete ' //
-c     %               kerr(mxlger)(1:6)
-c         call lereur
-          write(imprim,*) 'triangle 2 incorrect pour l''arete ',na
-         ns4 = 0
-         return
-      endif
-c
-c     le numero de l'arete naa du triangle nt
-      naa = abs( noartr(1,nt) )
-      if( naa .eq. na ) naa = abs( noartr(2,nt) )
-      ns4 = nosoar(1,naa)
-      if( ns4 .eq. ns1 .or. ns4 .eq. ns2 ) then
-         ns4 = nosoar(2,naa)
-      endif
-      end
-
-
-      subroutine te2t2t( noaret, mosoar, n1soar, nosoar, noarst,
-     %                   moartr, noartr, noar34 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    echanger la diagonale des 2 triangles ayant en commun
-c -----    l'arete noaret du tableau nosoar si c'est possible
-c
-c entrees:
-c --------
-c noaret : numero de l'arete a echanger entre les 2 triangles
-c mosoar : nombre maximal d'entiers par arete
-c moartr : nombre maximal d'entiers par triangle
-c
-c modifies :
-c ----------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c noarst : noarst(i) numero d'une arete de sommet i
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c sortie :
-c --------
-c noar34 : numero nosoar de la nouvelle arete diagonale
-c          0 si pas d'echange des aretes diagonales
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc      avril 1997
-c....................................................................012
-      integer     nosoar(mosoar,*),
-     %            noartr(moartr,*),
-     %            noarst(*)
-c
-c     une arete frontaliere ne peut etre echangee
-      noar34 = 0
-      if( nosoar(3,noaret) .gt. 0 ) return
-c
-c     les 4 sommets des 2 triangles ayant l'arete noaret en commun
-      call mt4sqa( noaret, moartr, noartr, mosoar, nosoar,
-     %             ns1, ns2, ns3, ns4)
-c     ns1,ns2,ns3 : les 3 numeros des sommets du triangle nt1 en sens direct
-c     ns1,ns4,ns2 : les 3 numeros des sommets du triangle nt2 en sens direct
-c
-c     recherche du numero de l'arete noaret dans le triangle nt1
-      nt1 = nosoar(4,noaret)
-      do 10 n1 = 1, 3
-         if( abs(noartr(n1,nt1)) .eq. noaret ) goto 15
- 10   continue
-c     impossible d'arriver ici sans bogue!
-      write(imprim,*) 'pause dans te2t2t 1'
-c
-c     l'arete de sommets 2 et 3
- 15   if( n1 .lt. 3 ) then
-         n2 = n1 + 1
-      else
-         n2 = 1
-      endif
-      na23 = noartr(n2,nt1)
-c
-c     l'arete de sommets 3 et 1
-      if( n2 .lt. 3 ) then
-         n3 = n2 + 1
-      else
-         n3 = 1
-      endif
-      na31 = noartr(n3,nt1)
-c
-c     recherche du numero de l'arete noaret dans le triangle nt2
-      nt2 = nosoar(5,noaret)
-      do 20 n1 = 1, 3
-         if( abs(noartr(n1,nt2)) .eq. noaret ) goto 25
- 20   continue
-c     impossible d'arriver ici sans bogue!
-      write(imprim,*) 'pause dans te2t2t 2'
-c
-c     l'arete de sommets 1 et 4
- 25   if( n1 .lt. 3 ) then
-         n2 = n1 + 1
-      else
-         n2 = 1
-      endif
-      na14 = noartr(n2,nt2)
-c
-c     l'arete de sommets 4 et 2
-      if( n2 .lt. 3 ) then
-         n3 = n2 + 1
-      else
-         n3 = 1
-      endif
-      na42 = noartr(n3,nt2)
-c
-c     les triangles 123 142 deviennent 143 234
-c     ========================================
-c     ajout de l'arete ns3-ns4
-c     on evite l'affichage de l'erreur
-      ierr = -1
-      call fasoar( ns3,    ns4,    nt1,    nt2,    0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             noar34, ierr )
-      if( ierr .gt. 0 ) then
-c        ierr=1 si le tableau nosoar est sature
-c            =2 si arete a creer et appartenant a 2 triangles distincts
-c               des triangles nt1 et nt2
-c            =3 si arete appartenant a 2 triangles distincts
-c               differents des triangles nt1 et nt2
-c            =4 si arete appartenant a 2 triangles distincts
-c               dont le second n'est pas le triangle nt2
-c        => pas d'echange
-         noar34 = 0
-         return
-      endif
-c
-c     suppression de l'arete noaret
-      call sasoar( noaret, mosoar, mxsoar, n1soar, nosoar )
-c
-c     nt1 = triangle 143
-      noartr(1,nt1) =  na14
-c     sens de stockage de l'arete ns3-ns4 dans nosoar?
-      if( nosoar(1,noar34) .eq. ns3 ) then
-         n1 = -1
-      else
-         n1 =  1
-      endif
-      noartr(2,nt1) = noar34 * n1
-      noartr(3,nt1) = na31
-c
-c     nt2 = triangle 234
-      noartr(1,nt2) =  na23
-      noartr(2,nt2) = -noar34 * n1
-      noartr(3,nt2) =  na42
-c
-c     echange nt1 -> nt2 pour l'arete na23
-      na23 = abs( na23 )
-      if( nosoar(4,na23) .eq. nt1 ) then
-         n1 = 4
-      else
-         n1 = 5
-      endif
-      nosoar(n1,na23) = nt2
-c
-c     echange nt2 -> nt1 pour l'arete na14
-      na14 = abs( na14 )
-      if( nosoar(4,na14) .eq. nt2 ) then
-         n1 = 4
-      else
-         n1 = 5
-      endif
-      nosoar(n1,na14) = nt1
-c
-c     numero d'une arete de chacun des 4 sommets
-      noarst(ns1) = na14
-      noarst(ns2) = na23
-      noarst(ns3) = noar34
-      noarst(ns4) = noar34
-      end
-
-
-
-      subroutine f0trte( letree, pxyd,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former le ou les triangles du triangle equilateral letree
-c -----    les points internes au te deviennent des sommets des
-c          sous-triangles du te
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          si letree(0)>0 alors
-c             letree(0:3) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3) :-no pxyd des 1 a 4 points internes au triangle j
-c                           0  si pas de point
-c                         ( le te est une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te, triangulation du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-      integer           nuarco(3)
-c
-c     le numero nt du triangle dans le tableau noartr
-      if( n1artr .le. 0 ) then
-c        tableau noartr sature
-         write(imprim,*) 'f0trte: tableau noartr sature'
-         ierr = 2
-         return
-      endif
-      nt = n1artr
-c     le numero du nouveau premier triangle libre dans noartr
-      n1artr = noartr( 2, n1artr )
-c
-c     formation du triangle = le triangle equilateral letree
-      do 10 i=1,3
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c        ajout eventuel de l'arete si si+1 dans le tableau nosoar
-         call fasoar( letree(5+i), letree(5+i1), nt, -1, 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i), ierr )
-         if( ierr .ne. 0 ) return
- 10   continue
-c
-c     le triangle nt est forme dans le tableau noartr
-      do 20 i=1,3
-c        letree(5+i) est le numero du sommet 1 de l'arete i du te
-         if( letree(5+i) .eq. nosoar(1,nuarco(i)) ) then
-            lesign =  1
-         else
-            lesign = -1
-         endif
-c        l'arete ns1-ns2 dans nosoar est celle du cote du te
-         noartr( i, nt ) = lesign * nuarco(i)
- 20   continue
-c
-c     triangulation du te=triangle nt par ajout des points internes du te
-      nbtr    = 1
-      nutr(1) = nt
-      call trpite( letree, pxyd,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr, noarst,
-     %             nbtr,   nutr,   ierr )
-      end
-
-
-      subroutine f1trte( letree, pxyd,   milieu,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former les triangles du triangle equilateral letree
-c -----    a partir de l'un des 3 milieux des cotes du te
-c          et des points internes au te
-c          ils deviennent tous des sommets des sous-triangles du te
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          si letree(0)>0 alors
-c             letree(0:3) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3) :-no pxyd des 1 a 4 points internes au triangle j
-c                           0  si pas de point
-c                         ( le te est une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c milieu : milieu(i) numero dans pxyd du milieu de l'arete i du te
-c                    0 si pas de milieu du cote i a ajouter
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(np) numero d'une arete du sommet np
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te, triangulation du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  milieu(3),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-c
-      integer           nosotr(3), nuarco(5)
-c
-c     le numero des 2 triangles (=2 demi te) a creer dans le tableau noartr
-      do 5 nbtr=1,2
-         if( n1artr .le. 0 ) then
-c           tableau noartr sature
-            ierr = 2
-            return
-         endif
-         nutr(nbtr) = n1artr
-c        le nouveau premier triangle libre dans noartr
-         n1artr = noartr(2,n1artr)
- 5    continue
-      nbtr = 2
-c
-c     recherche du milieu a creer
-      do 7 i=1,3
-         if( milieu(i) .ne. 0 ) goto 9
- 7    continue
-c     le numero pxyd du point milieu du cote i
- 9    nm = milieu( i )
-c
-c     on se ramene au seul cas i=3 c-a-d le milieu est sur le cote 3
-      if( i .eq. 1 ) then
-c        milieu sur le cote 1
-         nosotr(1) = letree(7)
-         nosotr(2) = letree(8)
-         nosotr(3) = letree(6)
-      else if( i .eq. 2 ) then
-c        milieu sur le cote 2
-         nosotr(1) = letree(8)
-         nosotr(2) = letree(6)
-         nosotr(3) = letree(7)
-      else
-c        milieu sur le cote 3
-         nosotr(1) = letree(6)
-         nosotr(2) = letree(7)
-         nosotr(3) = letree(8)
-      endif
-c
-c     formation des 2 aretes s1 s2 et s2 s3
-      do 10 i=1,2
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c        ajout eventuel de l'arete dans nosoar
-         call fasoar( nosotr(i), nosotr(i1), nutr(i), -1, 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i), ierr )
-         if( ierr .ne. 0 ) return
- 10   continue
-c
-c     ajout eventuel de l'arete s3 milieu dans nosoar
-      call fasoar( nosotr(3), nm, nutr(2), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(3), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete milieu s1 dans nosoar
-      call fasoar( nosotr(1), nm, nutr(1), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(4), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete milieu s2 dans nosoar
-      call fasoar( nosotr(2), nm, nutr(1), nutr(2), 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(5), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     les aretes s1 s2 et s2 s3 dans le tableau noartr
-      do 20 i=1,2
-c        nosotr(i) est le numero du sommet 1 de l'arete i du te
-         if( nosotr(i) .eq. nosoar(1,nuarco(i)) ) then
-            lesign = 1
-         else
-            lesign = -1
-         endif
-c        l'arete ns1-ns2 dans nosoar est celle du cote du te
-         noartr( 1, nutr(i) ) = lesign * nuarco(i)
- 20   continue
-c
-c     l'arete mediane s2 milieu
-      if( nm .eq. nosoar(1,nuarco(5)) ) then
-         lesign = -1
-      else
-         lesign =  1
-      endif
-      noartr( 2, nutr(1) ) =  lesign * nuarco(5)
-      noartr( 3, nutr(2) ) = -lesign * nuarco(5)
-c
-c     l'arete s1 milieu
-      if( nm .eq. nosoar(1,nuarco(4)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 3, nutr(1) ) = lesign * nuarco(4)
-c
-c     l'arete s3 milieu
-      if( nm .eq. nosoar(1,nuarco(3)) ) then
-         lesign = -1
-      else
-         lesign =  1
-      endif
-      noartr( 2, nutr(2) ) = lesign * nuarco(3)
-c
-c     triangulation des 2 demi te par ajout des points internes du te
-      call trpite( letree, pxyd,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr, noarst,
-     %             nbtr,   nutr,   ierr )
-      end
-
-
-      subroutine f2trte( letree, pxyd,   milieu,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former les triangles du triangle equilateral letree
-c -----    a partir de 2 milieux des cotes du te
-c          et des points internes au te
-c          ils deviennent tous des sommets des sous-triangles du te
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          si letree(0)>0 alors
-c             letree(0:3) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3) :-no pxyd des 1 a 4 points internes au triangle j
-c                           0  si pas de point
-c                         ( le te est une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c milieu : milieu(i) numero dans pxyd du milieu de l'arete i du te
-c                    0 si pas de milieu du cote i a ajouter
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(np) numero d'une arete du sommet np
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te, triangulation du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  milieu(3),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-c
-      integer           nosotr(3), nuarco(7)
-c
-c     le numero des 3 triangles a creer dans le tableau noartr
-      do 5 nbtr=1,3
-         if( n1artr .le. 0 ) then
-c           tableau noartr sature
-            ierr = 2
-            return
-         endif
-         nutr(nbtr) = n1artr
-c        le nouveau premier triangle libre dans noartr
-         n1artr = noartr(2,n1artr)
- 5    continue
-      nbtr = 3
-c
-c     recherche du premier milieu a creer
-      do 7 i=1,3
-         if( milieu(i) .ne. 0 ) goto 9
- 7    continue
-c
-c     on se ramene au seul cas i=2 c-a-d le cote 1 n'a pas de milieu
- 9    if( i .eq. 2 ) then
-c        pas de milieu sur le cote 1
-         nosotr(1) = letree(6)
-         nosotr(2) = letree(7)
-         nosotr(3) = letree(8)
-c        le numero pxyd du milieu du cote 2
-         nm2 = milieu( 2 )
-c        le numero pxyd du milieu du cote 3
-         nm3 = milieu( 3 )
-      else if( milieu(2) .ne. 0 ) then
-c        pas de milieu sur le cote 3
-         nosotr(1) = letree(8)
-         nosotr(2) = letree(6)
-         nosotr(3) = letree(7)
-c        le numero pxyd du milieu du cote 2
-         nm2 = milieu( 1 )
-c        le numero pxyd du milieu du cote 3
-         nm3 = milieu( 2 )
-      else
-c        pas de milieu sur le cote 2
-         nosotr(1) = letree(7)
-         nosotr(2) = letree(8)
-         nosotr(3) = letree(6)
-c        le numero pxyd du milieu du cote 2
-         nm2 = milieu( 3 )
-c        le numero pxyd du milieu du cote 3
-         nm3 = milieu( 1 )
-      endif
-c
-c     ici seul le cote 1 n'a pas de milieu
-c     nm2 est le milieu du cote 2
-c     nm3 est le milieu du cote 3
-c
-c     ajout eventuel de l'arete s1 s2 dans nosoar
-      call fasoar( nosotr(1), nosotr(2), nutr(1), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(1), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete s1 s2 dans nosoar
-      call fasoar( nosotr(2), nm2, nutr(1), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(2), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete s1 nm2 dans nosoar
-      call fasoar( nosotr(1), nm2, nutr(1), nutr(2), 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(3), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete nm2 nm3 dans nosoar
-      call fasoar( nm3, nm2, nutr(2), nutr(3), 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(4), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete s1 nm3 dans nosoar
-      call fasoar( nosotr(1), nm3, nutr(2), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(5), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     ajout eventuel de l'arete nm2 s3 dans nosoar
-      call fasoar( nm2, nosotr(3), nutr(3), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(6), ierr )
-c
-c     ajout eventuel de l'arete nm3 s3 dans nosoar
-      call fasoar( nosotr(3), nm3, nutr(3), -1, 0,
-     %             mosoar, mxsoar, n1soar, nosoar, noarst,
-     %             nuarco(7), ierr )
-      if( ierr .ne. 0 ) return
-c
-c     le triangle s1 s2 nm2  ou arete1 arete2 arete3
-      do 20 i=1,2
-c        nosotr(i) est le numero du sommet 1 de l'arete i du te
-         if( nosotr(i) .eq. nosoar(1,nuarco(i)) ) then
-            lesign = 1
-         else
-            lesign = -1
-         endif
-c        l'arete ns1-ns2 dans nosoar est celle du cote du te
-         noartr( i, nutr(1) ) = lesign * nuarco(i)
- 20   continue
-      if( nm2 .eq. nosoar(1,nuarco(3)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 3, nutr(1) ) = lesign * nuarco(3)
-c
-c     le triangle s1 nm2 nm3
-      noartr( 1, nutr(2) ) = -lesign * nuarco(3)
-      if( nm2 .eq. nosoar(1,nuarco(4)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 2, nutr(2) ) =  lesign * nuarco(4)
-      noartr( 1, nutr(3) ) = -lesign * nuarco(4)
-      if( nm3 .eq. nosoar(1,nuarco(5)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 3, nutr(2) ) = lesign * nuarco(5)
-c
-c     le triangle nm2 nm3 s3
-      if( nm2 .eq. nosoar(1,nuarco(6)) ) then
-         lesign =  1
-      else
-         lesign = -1
-      endif
-      noartr( 2, nutr(3) ) =  lesign * nuarco(6)
-      if( nm3 .eq. nosoar(1,nuarco(7)) ) then
-         lesign = -1
-      else
-         lesign =  1
-      endif
-      noartr( 3, nutr(3) ) = lesign * nuarco(7)
-c
-c     triangulation des 3 sous-te par ajout des points internes du te
-      call trpite( letree, pxyd,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr, noarst,
-     %             nbtr,   nutr,   ierr )
-      end
-
-
-      subroutine f3trte( letree, pxyd,   milieu,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former les triangles du triangle equilateral letree
-c -----    a partir de 3 milieux des cotes du te
-c          et des points internes au te
-c          ils deviennent tous des sommets des sous-triangles du te
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          si letree(0)>0 alors
-c             letree(0:3) : no (>0) letree des 4 sous-triangles du triangle j
-c          sinon
-c             letree(0:3) :-no pxyd des 1 a 4 points internes au triangle j
-c                           0  si pas de point
-c                         ( le te est une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c milieu : milieu(i) numero dans pxyd du milieu de l'arete i du te
-c                    0 si pas de milieu du cote i a ajouter
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(np) numero d'une arete du sommet np
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te, triangulation du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  milieu(3),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-c
-      integer           nuarco(9)
-c
-c     le numero des 4 triangles a creer dans le tableau noartr
-      do 5 nbtr=1,4
-         if( n1artr .le. 0 ) then
-c           tableau noartr sature
-            ierr = 2
-            return
-         endif
-         nutr(nbtr) = n1artr
-c        le nouveau premier triangle libre dans noartr
-         n1artr = noartr(2,n1artr)
- 5    continue
-      nbtr = 4
-c
-      do 10 i=1,3
-c        le sommet suivant
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c        le sommet precedant
-         if( i .ne. 1 ) then
-            i0 = i - 1
-         else
-            i0 = 3
-         endif
-         i3 = 3 * i
-c
-c        ajout eventuel de l'arete si mi dans nosoar
-         call fasoar( letree(5+i), milieu(i), nutr(i), -1, 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i3-2), ierr )
-         if( ierr .ne. 0 ) return
-c
-c        ajout eventuel de l'arete mi mi-1 dans nosoar
-         call fasoar( milieu(i), milieu(i0), nutr(i), nutr(4), 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i3-1), ierr )
-         if( ierr .ne. 0 ) return
-c
-c        ajout eventuel de l'arete m i-1  si dans nosoar
-         call fasoar( milieu(i0), letree(5+i), nutr(i), -1, 0,
-     %                mosoar, mxsoar, n1soar, nosoar, noarst,
-     %                nuarco(i3), ierr )
-         if( ierr .ne. 0 ) return
-c
- 10   continue
-c
-c     les 3 sous-triangles pres des sommets
-      do 20 i=1,3
-c        le sommet suivant
-         if( i .ne. 3 ) then
-            i1 = i + 1
-         else
-            i1 = 1
-         endif
-c        le sommet precedant
-         if( i .ne. 1 ) then
-            i0 = i - 1
-         else
-            i0 = 3
-         endif
-         i3 = 3 * i
-c
-c        ajout du triangle  arete3i-2 arete3i-1 arete3i
-         if( letree(5+i) .eq. nosoar(1,nuarco(i3-2)) ) then
-            lesign =  1
-         else
-            lesign = -1
-         endif
-         noartr( 1, nutr(i) ) = lesign * nuarco(i3-2)
-c
-         if( milieu(i) .eq. nosoar(1,nuarco(i3-1)) ) then
-            lesign =  1
-         else
-            lesign = -1
-         endif
-         noartr( 2, nutr(i) ) = lesign * nuarco(i3-1)
-c
-         if( milieu(i0) .eq. nosoar(1,nuarco(i3)) ) then
-            lesign =  1
-         else
-            lesign = -1
-         endif
-         noartr( 3, nutr(i) ) = lesign * nuarco(i3)
-c
- 20   continue
-c
-c     le sous triangle central
-      i3 = -1
-      do 30 i=1,3
-         i3 = i3 + 3
-         if( milieu(i) .eq. nosoar(1,nuarco(i3)) ) then
-            lesign = -1
-         else
-            lesign =  1
-         endif
-         noartr( i, nutr(4) ) = lesign * nuarco(i3)
- 30   continue
-c
-c     triangulation des 3 sous-te par ajout des points internes du te
-      call trpite( letree, pxyd,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, mxartr, n1artr, noartr, noarst,
-     %             nbtr,   nutr,   ierr )
-      end
-
-
-
-      subroutine hasoar( mosoar, mxsoar, n1soar, nosoar, nu2sar,
-     %                   noar )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    rechercher le numero des 2 sommets d'une arete parmi
-c -----    les numeros des 2 sommets des aretes du tableau nosoar
-c          s ils n y sont pas stockes les y ajouter
-c          dans tous les cas retourner le numero de l'arete dans nosoar
-c
-c          la methode employee ici est celle du hachage
-c          avec pour fonction d'adressage h(ns1,ns2)=min(ns1,ns2)
-c
-c          remarque: h(ns1,ns2)=ns1 + 2*ns2
-c                    ne marche pas si des aretes sont detruites
-c                    et ajoutees aux aretes vides
-c                    le chainage est commun a plusieurs hachages!
-c                    d'ou ce choix du minimum pour le hachage
-c
-c entrees:
-c --------
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c          chainage des aretes vides amont et aval
-c          l'arete vide qui precede=nosoar(4,i)
-c          l'arete vide qui suit   =nosoar(5,i)
-c nosoar : numero des 2 sommets, no ligne, 2 triangles de l'arete,
-c          chainage momentan'e d'aretes, chainage du hachage des aretes
-c          hachage des aretes = min( nosoar(1), nosoar(2) )
-c nu2sar : en entree les 2 numeros des sommets de l'arete
-c          en sortie nu2sar(1)<nu2sar(2) numeros des 2 sommets de l'arete
-c
-c sorties:
-c --------
-c noar   : numero dans nosoar de l'arete apres hachage
-c          =0 si saturation du tableau nosoar
-c          >0 si le tableau nu2sar est l'arete noar retrouvee
-c             dans le tableau nosoar
-c          <0 si le tableau nu2sar a ete ajoute et forme l'arete
-c             -noar du tableau nosoar avec nosoar(1,noar)<nosoar(2,noar)
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique upmc paris       mars 1997
-c ...................................................................012
-      integer  nu2sar(2), nosoar(mosoar,mxsoar)
-c
-      if( nu2sar(1) .gt. nu2sar(2) ) then
-c
-c        permutation des numeros des 2 sommets pour
-c        amener le plus petit dans nu2sar(1)
-         i         = nu2sar(1)
-         nu2sar(1) = nu2sar(2)
-         nu2sar(2) = i
-      endif
-c
-c     la fonction d'adressage du hachage des aretes : h(ns1,ns2)=min(ns1,ns2)
-c     ===============================================
-      noar = nu2sar(1)
-c
-c     la recherche de l'arete dans le chainage du hachage
-c     ---------------------------------------------------
- 10   if( nu2sar(1) .eq. nosoar(1,noar) ) then
-         if( nu2sar(2) .eq. nosoar(2,noar) ) then
-c
-c           l'arete est retrouvee
-c           .....................
-            return
-         endif
-      endif
-c
-c     l'arete suivante parmi celles ayant meme fonction d'adressage
-      i = nosoar( mosoar, noar )
-      if( i .gt. 0 ) then
-         noar = i
-         goto 10
-      endif
-c
-c     noar est ici la derniere arete (sans suivante) du chainage
-c     a partir de l'adressage du hachage
-c
-c     l'arete non retrouvee doit etre ajoutee
-c     .......................................
-      if( nosoar( 1, nu2sar(1) ) .eq. 0 ) then
-c
-c        l'adresse de hachage est libre => elle devient la nouvelle arete
-c        retouche des chainages de cette arete noar qui ne sera plus vide
-         noar = nu2sar(1)
-c        l'eventuel chainage du hachage n'est pas modifie
-c
-      else
-c
-c        la premiere arete dans l'adressage du hachage n'est pas libre
-c        => choix quelconque d'une arete vide pour ajouter cette arete
-         if( n1soar .le. 0 ) then
-c
-c           le tableau nosoar est sature avec pour temoin d'erreur
-            noar = 0
-            return
-c
-         else
-c
-c           l'arete n1soar est vide => c'est la nouvelle arete
-c           mise a jour du chainage de la derniere arete noar du chainage
-c           sa suivante est la nouvelle arete n1soar
-            nosoar( mosoar, noar ) = n1soar
-c
-c           l'arete ajoutee est n1soar
-            noar = n1soar
-c
-c           la nouvelle premiere arete vide
-            n1soar = nosoar( 5, n1soar )
-c
-c           la premiere arete vide n1soar n'a pas d'arete vide precedente
-            nosoar( 4, n1soar ) = 0
-c
-c           noar la nouvelle arete est la derniere du chainage du hachage
-            nosoar( mosoar, noar ) = 0
-c
-         endif
-c
-      endif
-c
-c     les 2 sommets de la nouvelle arete noar
-      nosoar( 1, noar ) = nu2sar(1)
-      nosoar( 2, noar ) = nu2sar(2)
-c
-c     le tableau nu2sar a ete ajoute avec l'indice -noar
-      noar = - noar
-      end
-
-
-      subroutine mt3str( nt, moartr, noartr, mosoar, nosoar,
-     %                   ns1, ns2, ns3 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but : calcul du numero des 3 sommets du triangle nt du tableau noartr
-c -----
-c
-c entrees:
-c --------
-c nt     : numero du triangle de noartr a traiter
-c moartr : nombre maximal d'entiers par triangle
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1=0 si triangle vide => arete2=triangle vide suivant
-c mosoar : nombre maximal d'entiers par arete
-c nosoar : numero des 2 sommets , no ligne, 2 triangles, chainages en +
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c
-c sorties:
-c --------
-c ns1,ns2,ns3 : les 3 numeros des sommets du triangle en sens direct
-c
-c si erreur rencontree => ns1 = 0
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    juillet 1995
-c2345x7..............................................................012
-      integer    noartr(moartr,*), nosoar(mosoar,*)
-c
-c     le numero de triangle est il correct  ?
-c     a supprimer apres mise au point
-      if( nt .le. 0 ) then
-c         nblgrc(nrerr) = 1
-c         write(kerr(mxlger)(1:6),'(i6)') nt
-c         kerr(1) = kerr(mxlger)(1:6) //
-c     %           ' no triangle dans noartr incorrect'
-c         call lereur
-         write(imprim,*) nt,' no triangle dans noartr incorrect'
-         ns1 = 0
-         return
-      endif
-c
-      na = noartr(1,nt)
-      if( na .gt. 0 ) then
-c        arete dans le sens direct
-         ns1 = nosoar(1,na)
-         ns2 = nosoar(2,na)
-      else
-c        arete dans le sens indirect
-         ns1 = nosoar(2,-na)
-         ns2 = nosoar(1,-na)
-      endif
-c
-      na = noartr(2,nt)
-      if( na .gt. 0 ) then
-c        arete dans le sens direct => ns3 est le second sommet de l'arete
-         ns3 = nosoar(2,na)
-      else
-c        arete dans le sens indirect => ns3 est le premier sommet de l'arete
-         ns3 = nosoar(1,-na)
-      endif
-      end
-      subroutine trpite( letree, pxyd,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, mxartr, n1artr, noartr,
-     %                   noarst,
-     %                   nbtr,   nutr,   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former le ou les sous-triangles des nbtr triangles nutr
-c -----    qui forment le triangle equilateral letree par ajout
-c          des points internes au te qui deviennent des sommets des
-c          sous-triangles des nbtr triangles
-c
-c entrees:
-c --------
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c          letree(0:3):-no pxyd des 1 a 4 points internes au triangle j
-c                       0  si pas de point
-c                     ( le te est ici une feuille de l'arbre )
-c          letree(4) : no letree du sur-triangle du triangle j
-c          letree(5) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c          letree(6:8) : no pxyd des 3 sommets du triangle j
-c pxyd   : tableau des x  y  distance_souhaitee de chaque sommet
-c mosoar : nombre maximal d'entiers par arete du tableau nosoar
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c mxartr : nombre maximal de triangles stockables dans le tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = (nosoar(1)+nosoar(2)) modulo mxsoar
-c          sommet 1 = 0 si arete vide => sommet 2 = arete vide suivante
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c sorties:
-c --------
-c nbtr   : nombre de sous-triangles du te
-c nutr   : numero des nbtr sous-triangles du te dans le tableau noartr
-c ierr   : =0 si pas d'erreur
-c          =1 si le tableau nosoar est sature
-c          =2 si le tableau noartr est sature
-c          =3 si aucun des triangles ne contient l'un des points internes au te
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      logical           tratri
-      common / dv2dco / tratri
-c     trace ou non des triangles generes dans la triangulation
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           letree(0:8),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,mxartr),
-     %                  noarst(*),
-     %                  nutr(1:nbtr)
-c
-      integer           nosotr(3)
-c
-c     si pas de point interne alors trace eventuel puis retour
-      if( letree(0) .eq. 0 ) goto 150
-c
-c     il existe au moins un point interne a trianguler
-c     dans les nbtr triangles
-      do 100 k=0,3
-c
-c        le numero du point
-         np = -letree(k)
-         if( np .eq. 0 ) goto 150
-c
-c        le point np dans pxyd est a traiter
-         do 10 n = 1, nbtr
-c
-c           les numeros des 3 sommets du triangle nt=nutr(n)
-            nt = nutr(n)
-            call nusotr( nt, mosoar, nosoar, moartr, noartr,  nosotr )
-c
-c           le triangle nt contient il le point np?
-            call ptdatr( pxyd(1,np), pxyd, nosotr, nsigne )
-c           nsigne>0 si le point est dans le triangle ou sur une des 3 aretes
-c                 =0 si triangle degenere ou indirect ou ne contient pas le poin
-c
-            if( nsigne .gt. 0 ) then
-c
-c              le triangle nt est triangule en 3 sous-triangles
-               call tr3str( np, nt,
-     %                      mosoar, mxsoar, n1soar, nosoar,
-     %                      moartr, mxartr, n1artr, noartr,
-     %                      noarst,
-     %                      nutr(nbtr+1),  ierr )
-               if( ierr .ne. 0 ) return
-c
-c              reamenagement des 3 triangles crees dans nutr
-c              en supprimant le triangle nt
-               nutr( n ) = nutr( nbtr + 3 )
-               nbtr = nbtr + 2
-c              le point np est triangule
-               goto 100
-c
-            endif
- 10      continue
-c
-c        erreur: le point np n'est pas dans l'un des nbtr triangles
-         write(imprim,10010) np
-         ierr = 3
-         return
-c
- 100  continue
-10010 format(' erreur trpite: pas de triangle contenant le point',i7)
-c
- 150  continue
-
-ccc 150  if( tratri ) then
-cccc       les traces sont demandes
-ccc        call efface
-cccc       le cadre objet global en unites utilisateur
-ccc        xx1 = min(pxyd(1,nosotr(1)),pxyd(1,nosotr(2)),pxyd(1,nosotr(3)))
-ccc        xx2 = max(pxyd(1,nosotr(1)),pxyd(1,nosotr(2)),pxyd(1,nosotr(3)))
-ccc        yy1 = min(pxyd(2,nosotr(1)),pxyd(2,nosotr(2)),pxyd(2,nosotr(3)))
-ccc        yy2 = max(pxyd(2,nosotr(1)),pxyd(2,nosotr(2)),pxyd(2,nosotr(3)))
-ccc        if( xx1 .ge. xx2 ) xx2 = xx1 + (yy2-yy1)
-ccc        if( yy1 .ge. yy2 ) yy2 = yy1 + (xx2-xx1)*0.5
-ccc        call isofenetre( xx1-(xx2-xx1), xx2+(xx2-xx1),
-ccc     %                   yy1-(yy2-yy1), yy2+(yy2-yy1) )
-ccc         do 200 i=1,nbtr
-cccc           trace du triangle nutr(i)
-ccc            call mttrtr( pxyd, nutr(i), moartr, noartr, mosoar, nosoar,
-ccc     %                   i, ncblan )
-ccc 200     continue
-ccc      endif
-
-      end
-
-
-      subroutine sasoar( noar, mosoar, mxsoar, n1soar, nosoar )
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    supprimer l'arete noar du tableau nosoar
-c -----    si celle ci n'est pas une arete des lignes de la frontiere
-c
-c          la methode employee ici est celle du hachage
-c          avec pour fonction d'adressage h = min( nu2sar(1), nu2sar(2) )
-c
-c          attention: il faut mettre a jour le no d'arete des 2 sommets
-c                     de l'arete supprimee dans le tableau noarst!
-c
-c entrees:
-c --------
-c noar   : numero de l'arete de nosoar a supprimer
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage h
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c
-c modifies:
-c ---------
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(4,arete vide)=l'arete vide qui precede
-c          nosoar(5,arete vide)=l'arete vide qui suit
-c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique upmc paris       mars 1997
-c ...................................................................012
-      common / unites / lecteu, imprim, nunite(30)
-      integer           nosoar(mosoar,mxsoar)
-c
-      if( nosoar(3,noar) .le. 0 ) then
-c
-c        l'arete n'est pas frontaliere => elle devient une arete vide
-c
-c        recherche de l'arete qui precede dans le chainage du hachage
-         noar1 = nosoar(1,noar)
-c
-c        parcours du chainage du hachage jusqu'a retrouver l'arete noar
- 10      if( noar1 .ne. noar ) then
-c
-c           l'arete suivante parmi celles ayant meme fonction d'adressage
-            noar0 = noar1
-            noar1 = nosoar( mosoar, noar1 )
-            if( noar1 .gt. 0 ) goto 10
-c
-c           l'arete noar n'a pas ete retrouvee dans le chainage => erreur
-            write(imprim,*) 'erreur sasoar:arete non dans le chainage '
-     %                      ,noar
-            write(imprim,*) 'arete de st1=',nosoar(1,noar),
-     %      ' st2=',nosoar(2,noar),' ligne=',nosoar(3,noar),
-     %      ' tr1=',nosoar(4,noar),' tr2=',nosoar(5,noar)
-            write(imprim,*) 'chainages=',(nosoar(i,noar),i=6,mosoar)
-c           l'arete n'est pas detruite
-            return
-c
-         endif
-c
-         if( noar .ne. nosoar(1,noar) ) then
-c
-c           saut de l'arete noar dans le chainage du hachage
-c           noar0 initialisee est ici l'arete qui precede noar dans ce chainage
-            nosoar( mosoar, noar0 ) = nosoar( mosoar, noar )
-c
-c           le chainage du hachage n'existe plus pour noar
-c           pas utile car mise a zero faite dans le sp hasoar
-ccc         nosoar( mosoar, noar ) = 0
-c
-c           noar devient la nouvelle premiere arete du chainage des vides
-            nosoar( 4, noar ) = 0
-            nosoar( 5, noar ) = n1soar
-c           la nouvelle precede l'ancienne premiere
-            nosoar( 4, n1soar ) = noar
-            n1soar = noar
-c
-ccc      else
-c
-c           noar est la premiere arete du chainage du hachage h
-c           cette arete ne peut etre consideree dans le chainage des vides
-c           car le chainage du hachage doit etre conserve (sinon perte...)
-c
-         endif
-c
-c        le temoin d'arete vide
-         nosoar( 1, noar ) = 0
-      endif
-      end
-
-
-      subroutine caetoi( noar,   mosoar, mxsoar, n1soar, nosoar,
-     %                   n1aeoc, nbtrar  )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    ajouter (ou retirer) l'arete noar de nosoar de l'etoile
-c -----    des aretes simples chainees en position lchain de nosoar
-c          detruire du tableau nosoar les aretes doubles
-c
-c          attention: le chainage lchain de nosoar devient celui des cf
-c
-c entree :
-c --------
-c noar   : numero dans le tableau nosoar de l'arete a traiter
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c
-c entrees et sorties:
-c -------------------
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c n1aeoc : numero dans nosoar de la premiere arete simple de l'etoile
-c
-c sortie :
-c --------
-c nbtrar : 1 si arete ajoutee, 2 si arete double supprimee
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c2345x7..............................................................012
-      parameter        (lchain=6)
-      integer           nosoar(mosoar,mxsoar)
-c
-c     si    l'arete n'appartient pas aux aretes de l'etoile naetoi
-c     alors elle est ajoutee a l'etoile dans naetoi
-c     sinon elle est empilee dans npile pour etre detruite ensuite
-c           elle est supprimee de l'etoile naetoi
-c
-      if( nosoar( lchain, noar ) .lt. 0 ) then
-c
-c        arete de l'etoile vue pour la premiere fois
-c        elle est ajoutee au chainage
-         nosoar( lchain, noar ) = n1aeoc
-c        elle devient la premiere du chainage
-         n1aeoc = noar
-c        arete simple
-         nbtrar = 1
-c
-      else
-c
-c        arete double de l'etoile. elle est supprimee du chainage
-         na0 = 0
-         na  = n1aeoc
-c        parcours des aretes chainees jusqu'a trouver l'arete noar
- 10      if( na .ne. noar ) then
-c           passage a la suivante
-            na0 = na
-            na  = nosoar( lchain, na )
-            goto 10
-         endif
-c
-c        suppression de noar du chainage des aretes simples de l'etoile
-         if( na0 .gt. 0 ) then
-c           il existe une arete qui precede
-            nosoar( lchain, na0 ) = nosoar( lchain, noar )
-         else
-c           noar est en fait n1aeoc la premiere du chainage
-            n1aeoc = nosoar( lchain, noar )
-         endif
-c        noar n'est plus une arete simple de l'etoile
-         nosoar( lchain, noar ) = -1
-c
-c        destruction du tableau nosoar de l'arete double noar
-         call sasoar( noar, mosoar, mxsoar, n1soar, nosoar )
-c
-c        arete double
-         nbtrar = 2
-      endif
-      end
-
-
-      subroutine focftr( nbtrcf, notrcf, pxyd,   noarst,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr,
-     %                   nbarcf, n1arcf, noarcf,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    former un contour ferme (cf) avec les aretes simples des
-c -----    nbtrcf triangles du tableau notrcf
-c          destruction des nbtrcf triangles du tableau noartr
-c          destruction des aretes doubles   du tableau nosoar
-c
-c          attention: le chainage lchain de nosoar devient celui des cf
-c
-c entrees:
-c --------
-c nbtrcf : nombre de  triangles du cf a former
-c notrcf : numero des triangles dans le tableau noartr
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c entrees et sorties :
-c --------------------
-c noarst : noarst(i) numero d'une arete de sommet i
-c n1soar : numero de la premiere arete vide dans le tableau nosoar
-c          une arete i de nosoar est vide  <=>  nosoar(1,i)=0
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c
-c sorties:
-c --------
-c nbarcf : nombre d'aretes du cf
-c n1arcf : numero d'une arete de chaque contour
-c noarcf : numero des aretes de la ligne du contour ferme
-c attention: chainage circulaire des aretes
-c            les aretes vides pointes par n1arcf(0) ne sont pas chainees
-c ierr   :  0 si pas d'erreur
-c          14 si les lignes fermees se coupent => donnees a revoir
-c          15 si une seule arete simple frontaliere
-c          16 si boucle infinie car toutes les aretes simples
-c                de la boule sont frontalieres!
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter        (lchain=6)
-      common / unites / lecteu, imprim, nunite(30)
-      double precision  pxyd(3,*)
-      integer           notrcf(1:nbtrcf)
-      integer           nosoar(mosoar,mxsoar),
-     %                  noartr(moartr,*),
-     %                  n1arcf(0:*),
-     %                  noarcf(3,*),
-     %                  noarst(*)
-c
-c     formation des aretes simples du cf autour de l'arete ns1-ns2
-c     attention: le chainage lchain du tableau nosoar devient actif
-c     ============================================================
-c     ici toutes les aretes du tableau nosoar verifient nosoar(lchain,i) = -1
-c     ce qui equivaut a dire que l'etoile des aretes simples est vide
-c     (initialisation dans le sp insoar puis remise a -1 dans la suite!)
-      n1aeoc = 0
-c
-c     ajout a l'etoile des aretes simples des 3 aretes des triangles a supprimer
-c     suppression des triangles de l'etoile pour les aretes simples de l'etoile
-      do 10 i=1,nbtrcf
-c        ajout ou retrait des 3 aretes du triangle notrcf(i) de l'etoile
-         nt = notrcf( i )
-         do 5 j=1,3
-c           l'arete de nosoar a traiter
-            noar = abs( noartr(j,nt) )
-            call caetoi( noar,   mosoar, mxsoar, n1soar, nosoar,
-     %                   n1aeoc, nbtrar  )
-c           si arete simple alors suppression du numero de triangle pour cette a
-            if( nbtrar .eq. 1 ) then
-               if( nosoar(4,noar) .eq. nt ) then
-                  nosoar(4,noar) = nosoar(5,noar)
-               endif
-               nosoar(5,noar) = -1
-c           else
-c              l'arete appartient a aucun triangle => elle est vide
-c              les positions 4 et 5 servent maintenant aux chainages des vides
-            endif
-  5      continue
- 10   continue
-c
-c     les aretes simples de l'etoile sont reordonnees pour former une
-c     ligne fermee = un contour ferme peripherique de l'etoile encore dit 1 cf
-c     ========================================================================
-      n1ae00 = n1aeoc
- 12   na1    = n1aeoc
-c     la premiere arete du contour ferme
-      ns0 = nosoar(1,na1)
-      ns1 = nosoar(2,na1)
-c
-c     l'arete est-elle dans le sens direct?
-c     recherche de l'arete du triangle exterieur nt d'arete na1
-      nt = nosoar(4,na1)
-      if( nt .le. 0 ) nt = nosoar(5,na1)
-c
-c     attention au cas de l'arete initiale frontaliere de no de triangles 0 et -
-      if( nt .le. 0 ) then
-c        permutation circulaire des aretes simples chainees
-c        la premiere arete doit devenir la derniere du chainage,
-c        la 2=>1, la 3=>2, ... , la derniere=>l'avant derniere, 1=>derniere
-         n1aeoc = nosoar( lchain, n1aeoc )
-         if( n1aeoc .eq. n1ae00 ) then
-c           attention: boucle infinie si toutes les aretes simples
-c           de la boule sont frontalieres!... arretee par ce test
-            ierr = 16
-            return
-         endif
-         noar = n1aeoc
-         na0  = 0
- 14      if( noar .gt. 0 ) then
-c           la sauvegarde de l'arete et l'arete suivante
-            na0  = noar
-            noar = nosoar(lchain,noar)
-            goto 14
-         endif
-         if( na0 .le. 0 ) then
-c           une seule arete simple frontaliere
-            ierr = 15
-            return
-         endif
-c        le suivant de l'ancien dernier est l'ancien premier
-         nosoar(lchain,na0) = na1
-c        le nouveau dernier est l'ancien premier
-         nosoar(lchain,na1) = 0
-         goto 12
-      endif
-c
-c     ici l'arete na1 est l'une des aretes du triangle nt
-      do 15 i=1,3
-         if( abs(noartr(i,nt)) .eq. na1 ) then
-c           c'est l'arete
-            if( noartr(i,nt) .gt. 0 ) then
-c              elle est parcourue dans le sens indirect de l'etoile
-c             (car c'est en fait le triangle exterieur a la boule)
-               ns0 = nosoar(2,na1)
-               ns1 = nosoar(1,na1)
-            endif
-            goto 17
-         endif
- 15   continue
-c
-c     le 1-er sommet ou arete du contour ferme
- 17   n1arcf( 1 ) = 1
-c     le nombre de sommets du contour ferme de l'etoile
-      nbarcf = 1
-c     le premier sommet de l'etoile
-      noarcf( 1, nbarcf ) = ns0
-c     l'arete suivante du cf
-      noarcf( 2, nbarcf ) = nbarcf + 1
-c     le numero de cette arete dans le tableau nosoar
-      noarcf( 3, nbarcf ) = na1
-c     mise a jour du numero d'arete du sommet ns0
-      noarst(ns0) = na1
-c
-cccc     trace de l'arete
-ccc      call dvtrar( pxyd, ns0, ns1, ncvert, ncblan )
-c
-c     l'arete suivante a chainer
-      n1aeoc = nosoar( lchain, na1 )
-c     l'arete na1 n'est plus dans l'etoile
-      nosoar( lchain, na1 ) = -1
-c
-c     boucle sur les aretes simples de l'etoile
- 20   if( n1aeoc .gt. 0 ) then
-c
-c        recherche de l'arete de 1-er sommet ns1
-         na0 = -1
-         na1 = n1aeoc
- 25      if( na1 .gt. 0 ) then
-c
-c           le numero du dernier sommet de l'arete precedente
-c           est il l'un des 2 sommets de l'arete na1?
-            if ( ns1 .eq. nosoar(1,na1) ) then
-c               l'autre sommet de l'arete na1
-                ns2 = nosoar(2,na1)
-            else if( ns1 .eq. nosoar(2,na1) ) then
-c               l'autre sommet de l'arete na1
-                ns2 = nosoar(1,na1)
-            else
-c              non: passage a l'arete suivante
-               na0 = na1
-               na1 = nosoar( lchain, na1 )
-               goto 25
-            endif
-c
-c           oui: na1 est l'arete peripherique suivante
-c                na0 est sa precedente dans le chainage
-c           une arete de plus dans le contour ferme (cf)
-            nbarcf = nbarcf + 1
-c           le premier sommet de l'arete nbarcf peripherique
-            noarcf( 1, nbarcf ) = ns1
-c           l'arete suivante du cf
-            noarcf( 2, nbarcf ) = nbarcf + 1
-c           le numero de cette arete dans le tableau nosoar
-            noarcf( 3, nbarcf ) = na1
-c           mise a jour du numero d'arete du sommet ns1
-            noarst(ns1) = na1
-c
-cccc           trace de l'arete
-ccc            call dvtrar( pxyd, ns1, ns2, ncvert, ncblan )
-c
-c           suppression de l'arete des aretes simples de l'etoile
-            if( n1aeoc .eq. na1 ) then
-                n1aeoc = nosoar( lchain, na1 )
-            else
-                nosoar( lchain, na0 ) = nosoar( lchain, na1 )
-            endif
-c           l'arete n'est plus une arete simple de l'etoile
-            nosoar( lchain, na1 ) = -1
-c
-c           le sommet final de l'arete a rechercher ensuite
-            ns1 = ns2
-            goto 20
-         endif
-      endif
-c
-c     verification
-      if( ns1 .ne. ns0 ) then
-c        arete non retrouvee : l'etoile ne se referme pas
-c         nblgrc(nrerr) = 3
-c         kerr(1) = 'focftr: revoyez vos donnees'
-c         kerr(2) = 'les lignes fermees doivent etre disjointes'
-c         kerr(3) = 'verifiez si elles ne se coupent pas'
-c         call lereur
-          write(imprim,*) 'focftr: revoyez vos donnees'
-          write(imprim,*)'les lignes fermees doivent etre disjointes'
-          write(imprim,*)'verifiez si elles ne se coupent pas'
-         ierr = 14
-         return
-      endif
-c
-c     l'arete suivant la derniere arete du cf est la premiere du cf
-c     => realisation d'un chainage circulaire des aretes du cf
-      noarcf( 2, nbarcf ) = 1
-c
-c     destruction des triangles de l'etoile du tableau noartr
-c     -------------------------------------------------------
-      do 50 i=1,nbtrcf
-c        le numero du triangle dans noartr
-         nt0 = notrcf( i )
-c        l'arete 1 de nt0 devient nulle
-         noartr( 1, nt0 ) = 0
-c        chainage de nt0 en tete du chainage des triangles vides de noartr
-         noartr( 2, nt0 ) = n1artr
-         n1artr = nt0
- 50   continue
-      end
-
-
-      subroutine int1sd( ns1, ns2, ns3, ns4, pxyd, linter, x0, y0 )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    existence ou non  d'une intersection a l'interieur
-c -----    des 2 aretes ns1-ns2 et ns3-ns4
-c          attention les intersections au sommet sont comptees
-c
-c entrees:
-c --------
-c ns1,...ns4 : numero pxyd des 4 sommets
-c pxyd   : les coordonnees des sommets
-c
-c sortie :
-c --------
-c linter : -1 si ns3-ns4 parallele a ns1 ns2
-c           0 si ns3-ns4 n'intersecte pas ns1-ns2 entre les aretes
-c           1 si ns3-ns4   intersecte     ns1-ns2 entre les aretes
-c           2 si le point d'intersection est ns1  entre ns3-ns4
-c           3 si le point d'intersection est ns3  entre ns1-ns2
-c           4 si le point d'intersection est ns4  entre ns1-ns2
-c x0,y0  :  2 coordonnees du point d'intersection s'il existe(linter>=1)
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    fevrier 1992
-c2345x7..............................................................012
-      parameter        ( epsmoi=-0.000001d0, eps=0.001d0,
-     %                   unmeps= 0.999d0, unpeps=1.000001d0 )
-      double precision  pxyd(3,*), x0, y0
-      double precision  x1,y1,x21,y21,d21,x43,y43,d43,d,x,y,p21,p43
-c
-      x1  = pxyd(1,ns1)
-      y1  = pxyd(2,ns1)
-      x21 = pxyd(1,ns2) - x1
-      y21 = pxyd(2,ns2) - y1
-      d21 = x21**2 + y21**2
-c
-      x43 = pxyd(1,ns4) - pxyd(1,ns3)
-      y43 = pxyd(2,ns4) - pxyd(2,ns3)
-      d43 = x43**2 + y43**2
-c
-c     les 2 aretes sont-elles jugees paralleles ?
-      d = x43 * y21 - y43 * x21
-      if( d*d .le. 0.000001d0 * d21 * d43 ) then
-c        cote i parallele a ns1-ns2
-         linter = -1
-         return
-      endif
-c
-c     les 2 coordonnees du point d'intersection
-      x =( x1*x43*y21-pxyd(1,ns3)*x21*y43-(y1-pxyd(2,ns3))*x21*x43)/d
-      y =(-y1*y43*x21+pxyd(2,ns3)*y21*x43+(x1-pxyd(1,ns3))*y21*y43)/d
-c
-c     coordonnee barycentrique de x,y dans le repere ns1-ns2
-      p21 = ( ( x - x1 )       * x21 + ( y - y1 )        * y21 ) / d21
-c     coordonnee barycentrique de x,y dans le repere ns3-ns4
-      p43 = ( (x - pxyd(1,ns3))* x43 + (y - pxyd(2,ns3)) * y43 ) / d43
-c
-c
-      if( epsmoi .le. p21 .and. p21 .le. unpeps ) then
-c        x,y est entre ns1-ns2
-         if( (p21 .le. eps)  .and.
-     %       (epsmoi .le. p43 .and. p43 .le. unpeps) ) then
-c           le point x,y est proche de ns1 et interne a ns3-ns4
-            linter = 2
-            x0 = pxyd(1,ns1)
-            y0 = pxyd(2,ns1)
-            return
-         else if( epsmoi .le. p43 .and. p43 .le. eps ) then
-c           le point x,y est proche de ns3 et entre ns1-ns2
-            linter = 3
-            x0 = pxyd(1,ns3)
-            y0 = pxyd(2,ns3)
-            return
-         else if( unmeps .le. p43 .and. p43 .le. unpeps ) then
-c           le point x,y est proche de ns4 et entre ns1-ns2
-            linter = 4
-            x0 = pxyd(1,ns4)
-            y0 = pxyd(2,ns4)
-            return
-         else if( eps .le. p43 .and. p43 .le. unmeps ) then
-c           le point x,y est entre ns3-ns4
-            linter = 1
-            x0     = x
-            y0     = y
-            return
-         endif
-      endif
-c
-c     pas d'intersection a l'interieur des aretes
-      linter = 0
-      end
-
-
-      subroutine tefoar( narete, nbarpi, pxyd,
-     %                   mosoar, mxsoar, n1soar, nosoar,
-     %                   moartr, n1artr, noartr, noarst,
-     %                   mxarcf, n1arcf, noarcf, larmin, notrcf,
-     %                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :   forcer l'arete narete de nosoar dans la triangulation actuelle
-c -----   triangulation frontale pour la reobtenir
-c
-c         attention: le chainage lchain(=6) de nosoar devient actif
-c                    durant la formation des contours fermes (cf)
-c
-c entrees:
-c --------
-c narete : numero nosoar de l'arete frontaliere a forcer
-c nbarpi : numero du dernier point interne impose par l'utilisateur
-c pxyd   : tableau des coordonnees 2d des points
-c          par point : x  y  distance_souhaitee
-c
-c mosoar : nombre maximal d'entiers par arete et
-c          indice dans nosoar de l'arete suivante dans le hachage
-c mxsoar : nombre maximal d'aretes stockables dans le tableau nosoar
-c          attention: mxsoar>3*mxsomm obligatoire!
-c moartr : nombre maximal d'entiers par arete du tableau noartr
-c
-c modifies:
-c ---------
-c n1soar : no de l'eventuelle premiere arete libre dans le tableau nosoar
-c          chainage des vides suivant en 3 et precedant en 2 de nosoar
-c nosoar : numero des 2 sommets , no ligne, 2 triangles de l'arete,
-c          chainage des aretes frontalieres, chainage du hachage des aretes
-c          hachage des aretes = nosoar(1)+nosoar(2)*2
-c          avec mxsoar>=3*mxsomm
-c          une arete i de nosoar est vide <=> nosoar(1,i)=0 et
-c          nosoar(2,arete vide)=l'arete vide qui precede
-c          nosoar(3,arete vide)=l'arete vide qui suit
-c n1artr : numero du premier triangle vide dans le tableau noartr
-c          le chainage des triangles vides se fait sur noartr(2,.)
-c noartr : les 3 aretes des triangles +-arete1, +-arete2, +-arete3
-c          arete1 = 0 si triangle vide => arete2 = triangle vide suivant
-c noarst : noarst(i) numero d'une arete de sommet i
-c
-c mxarcf : nombre de variables des tableaux n1arcf, noarcf, larmin, notrcf
-c
-c tableaux auxiliaires :
-c ----------------------
-c n1arcf : tableau (0:mxarcf) auxiliaire
-c noarcf : tableau (3,mxarcf) auxiliaire
-c larmin : tableau (mxarcf)   auxiliaire
-c notrcf : tableau (1:mxarcf) auxiliaire
-c
-c sortie :
-c --------
-c ierr   : 0 si pas d'erreur
-c          1 saturation des sommets
-c          2 ns1 dans aucun triangle
-c          9 tableau nosoar de taille insuffisante car trop d'aretes
-c            a probleme
-c          10 un des tableaux n1arcf, noarcf notrcf est sature
-c             augmenter a l'appel mxarcf
-c          11 algorithme defaillant
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc       mars 1997
-c....................................................................012
-      parameter        (mxpitr=32)
-      common / unites / lecteu,imprim,intera,nunite(29)
-      logical           tratri
-      common / dv2dco / tratri
-      double precision  pxyd(3,*)
-      integer           noartr(moartr,*),
-     %                  nosoar(mosoar,mxsoar),
-     %                  noarst(*),
-     %                  n1arcf(0:mxarcf),
-     %                  noarcf(3,mxarcf),
-     %                  larmin(mxarcf),
-     %                  notrcf(mxarcf)
-c
-      integer           lapitr(mxpitr)
-      double precision  x1,y1,x2,y2,d12,d3,d4,x,y,d,dmin
-      integer           nosotr(3), ns(2)
-      integer           nacf(1:2), nacf1, nacf2
-      equivalence      (nacf(1),nacf1), (nacf(2),nacf2)
-c
-c     traitement de cette arete perdue
-      ns1 = nosoar( 1, narete )
-      ns2 = nosoar( 2, narete )
-c
-      if( tratri ) then
-c        les traces sont demandes
-c         call efface
-c        le cadre objet global en unites utilisateur
-         xx1 = min( pxyd(1,ns1), pxyd(1,ns2) )
-         xx2 = max( pxyd(1,ns1), pxyd(1,ns2) )
-         yy1 = min( pxyd(2,ns1), pxyd(2,ns2) )
-         yy2 = max( pxyd(2,ns1), pxyd(2,ns2) )
-         if( xx1 .ge. xx2 ) xx2 = xx1 + (yy2-yy1)
-         if( yy1 .ge. yy2 ) yy2 = yy1 + (xx2-xx1)*0.5
-c         call isofenetre( xx1-(xx2-xx1), xx2+(xx2-xx1),
-c     %                    yy1-(yy2-yy1), yy2+(yy2-yy1) )
-      endif
-c
-cccc     trace de l'arete perdue
-ccc      call dvtrar( pxyd, ns1, ns2, ncroug, ncblan )
-c
-c     le sommet ns2 est il correct?
-      na = noarst( ns2 )
-      if( na .le. 0 ) then
-         write(imprim,*) 'tefoar: erreur sommet ',ns2,' sans arete'
-         ierr = 8
-         return
-      endif
-      if( nosoar(4,na) .le. 0 ) then
-         write(imprim,*) 'tefoar: erreur sommet ',ns2,
-     %                   ' dans aucun triangle'
-         ierr = 8
-         return
-      endif
-c
-c     recherche du triangle voisin dans le sens indirect de rotation
-      nsens = -1
-c     le premier passage: recherche dans le sens ns1->ns2
-      ipas = 0
-c
-c     recherche des triangles intersectes par le segment ns1-ns2
-c     ==========================================================
- 3    x1  = pxyd(1,ns1)
-      y1  = pxyd(2,ns1)
-      x2  = pxyd(1,ns2)
-      y2  = pxyd(2,ns2)
-      d12 = (x2-x1)**2 + (y2-y1)**2
-c
-c     recherche du no local du sommet ns1 dans l'un de ses triangles
-      na01 = noarst( ns1 )
-      if( na01 .le. 0 ) then
-         write(imprim,*) 'tefoar: sommet ',ns1,' sans arete'
-         ierr = 8
-         return
-      endif
-      nt0 = nosoar(4,na01)
-      if( nt0 .le. 0 ) then
-         write(imprim,*) 'tefoar: sommet ',ns1,' dans aucun triangle'
-         ierr = 8
-         return
-      endif
-c
-c     le numero des 3 sommets du triangle nt0 dans le sens direct
- 20   call nusotr( nt0, mosoar, nosoar, moartr, noartr, nosotr )
-      do 22 na00=1,3
-         if( nosotr(na00) .eq. ns1 ) goto 26
- 22   continue
-c
- 25   if( ipas .eq. 0 ) then
-c        le second passage: recherche dans le sens ns2->ns1
-c        tentative d'inversion des 2 sommets extremites de l'arete a forcer
-         na00 = ns1
-         ns1  = ns2
-         ns2  = na00
-         ipas = 1
-         goto 3
-      else
-c        les sens ns1->ns2 et ns2->ns1 ne donne pas de solution!
-         write(imprim,*)'tefoar:arete ',ns1,' - ',ns2,' a imposer'
-         write(imprim,*)'tefoar:anomalie sommet ',ns1,
-     %   'non dans le triangle de sommets ',(nosotr(i),i=1,3)
-         ierr = 11
-         return
-      endif
-c
-c     le numero des aretes suivante et precedente
- 26   na0 = nosui3( na00 )
-      na1 = nopre3( na00 )
-      ns3 = nosotr( na0 )
-      ns4 = nosotr( na1 )
-c
-cccc     trace du triangle nt0 et de l'arete perdue
-ccc      call mttrtr( pxyd, nt0, moartr, noartr, mosoar, nosoar,
-ccc     %             ncblan, ncjaun )
-ccc      call dvtrar( pxyd, ns1, ns2, ncroug, ncblan )
-ccc      call dvtrar( pxyd, ns3, ns4, ncbleu, nccyan )
-c
-c     point d'intersection du segment ns1-ns2 avec l'arete ns3-ns4
-c     ------------------------------------------------------------
-      call int1sd( ns1, ns2, ns3, ns4, pxyd, linter, x1, y1 )
-      if( linter .le. 0 ) then
-c
-c        pas d'intersection: rotation autour du point ns1
-c        pour trouver le triangle de l'autre cote de l'arete na01
-         if( nsens .lt. 0 ) then
-c           sens indirect de rotation: l'arete de sommet ns1
-            na01 = abs( noartr(na00,nt0) )
-         else
-c           sens direct de rotation: l'arete de sommet ns1 qui precede
-            na01 = abs( noartr(na1,nt0) )
-         endif
-c        le triangle de l'autre cote de l'arete na01
-         if( nosoar(4,na01) .eq. nt0 ) then
-            nt0 = nosoar(5,na01)
-         else
-            nt0 = nosoar(4,na01)
-         endif
-         if( nt0 .gt. 0 ) goto 20
-c
-c        le parcours sort du domaine
-c        il faut tourner dans l'autre sens autour de ns1
-         if( nsens .lt. 0 ) then
-            nsens = 1
-            nt0   = noarst( ns1 )
-            goto 20
-         endif
-c
-c        dans les 2 sens, pas d'intersection => impossible
-c        essai avec l'arete inversee ns1 <-> ns2
-         if( ipas .eq. 0 ) goto 25
-         write(imprim,*) 'tefoar: arete ',ns1,' ',ns2,
-     %  ' sans intersection avec les triangles actuels'
-         write(imprim,*) 'revoyez les lignes du contour'
-         ierr = 11
-         return
-      endif
-c
-c     il existe une intersection avec l'arete opposee au sommet ns1
-c     =============================================================
-c     nbtrcf : nombre de triangles du cf
-      nbtrcf = 1
-      notrcf( 1 ) = nt0
-c
-c     le triangle oppose a l'arete na0 de nt0
- 30   noar = abs( noartr(na0,nt0) )
-      if( nosoar(4,noar) .eq. nt0 ) then
-         nt1 = nosoar(5,noar)
-      else
-         nt1 = nosoar(4,noar)
-      endif
-c
-cccc     trace du triangle nt1 et de l'arete perdue
-ccc      call mttrtr( pxyd, nt1, moartr, noartr, mosoar, nosoar,
-ccc     %             ncjaun, ncmage )
-ccc      call dvtrar( pxyd, ns1, ns2, ncroug, ncblan )
-c
-c     le numero des 3 sommets du triangle nt1 dans le sens direct
-      call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr )
-c
-c     le triangle nt1 contient il ns2 ?
-      do 32 j=1,3
-         if( nosotr(j) .eq. ns2 ) goto 70
- 32   continue
-c
-c     recherche de l'arete noar, na1 dans nt1 qui est l'arete na0 de nt0
-      do 34 na1=1,3
-         if( abs( noartr(na1,nt1) ) .eq. noar ) goto 35
- 34   continue
-c
-c     trace du triangle nt1 et de l'arete perdue
- 35   continue
-ccc 35   call mttrtr( pxyd, nt1, moartr, noartr, mosoar, nosoar,
-ccc     %             ncjaun, ncmage )
-ccc      call dvtrar( pxyd, ns1, ns2, ncroug, ncblan )
-c
-c     recherche de l'intersection de ns1-ns2 avec les 2 autres aretes de nt1
-c     ======================================================================
-      na2 = na1
-      do 50 i1 = 1,2
-c        l'arete suivante
-         na2 = nosui3(na2)
-c
-c        les 2 sommets de l'arete na2 de nt1
-         noar = abs( noartr(na2,nt1) )
-         ns3  = nosoar( 1, noar )
-         ns4  = nosoar( 2, noar )
-ccc         call dvtrar( pxyd, ns3, ns4, ncbleu, nccyan )
-c
-c        point d'intersection du segment ns1-ns2 avec l'arete ns3-ns4
-c        ------------------------------------------------------------
-         call int1sd( ns1, ns2, ns3, ns4, pxyd, linter, x , y )
-         if( linter .gt. 0 ) then
-c
-c           les 2 aretes s'intersectent en (x,y)
-c           distance de (x,y) a ns3 et ns4
-            d3 = (pxyd(1,ns3)-x)**2 + (pxyd(2,ns3)-y)**2
-            d4 = (pxyd(1,ns4)-x)**2 + (pxyd(2,ns4)-y)**2
-c           nsp est le point le plus proche de (x,y)
-            if( d3 .lt. d4 ) then
-               nsp = ns3
-               d   = d3
-            else
-               nsp = ns4
-               d   = d4
-            endif
-            if( d .gt. 1d-5*d12 ) goto 60
-c
-c           ici le sommet nsp est trop proche de l'arete perdue ns1-ns2
-            if( nsp .le. nbarpi ) then
-c              point utilisateur ou frontalier non supprimable
-               ierr = 11
-               write(imprim,*) 'pause dans tefoar 1', d, d3, d4, d12
-               return
-            endif
-c
-c           le sommet interne nsp est supprime en mettant tous les triangles
-c           l'ayant comme sommet dans la pile notrcf des triangles a supprimer
-c           ------------------------------------------------------------------
-ccc            write(imprim,*) 'tefoar: le sommet ',nsp,' est supprime'
-c           construction de la liste des triangles de sommet nsp
-            call trp1st( nsp, noarst, mosoar, nosoar, moartr, noartr,
-     %                   mxpitr, nbt, lapitr )
-            if( nbt .le. 0 ) then
-c              les triangles de sommet nsp ne forme pas une "boule"
-c              avec ce sommet nsp pour "centre"
-               write(imprim,*)
-     %        'tefoar: pas d''etoile de triangles autour du sommet',nsp
-cccc              trace des triangles de l'etoile du sommet nsp
-ccc               tratri = .true.
-ccc               call trpltr( nbt,    lapitr, pxyd,
-ccc     %                      moartr, noartr, mosoar, nosoar,
-ccc     %                      ncroug, ncblan )
-ccc               tratri = .false.
-               ierr = 11
-               write(imprim,*) 'pause dans tefoar 2'
-               return
-            endif
-c
-c           ajout des triangles de sommet ns1 a notrcf
-            nbtrc0 = nbtrcf
-            do 38 j=1,nbt
-               nt = lapitr(j)
-               do 37 k=nbtrcf,1,-1
-                  if( nt .eq. notrcf(k) ) goto 38
- 37            continue
-c              triangle ajoute
-               nbtrcf = nbtrcf + 1
-               notrcf( nbtrcf ) = nt
-ccc               call mttrtr( pxyd, nt, moartr, noartr, mosoar, nosoar,
-ccc     %                      ncjaun, ncmage )
-ccc               call dvtrar( pxyd, ns1, ns2, ncroug, ncblan )
- 38         continue
-c
-c           ce sommet supprime n'appartient plus a aucun triangle
-            noarst( nsp ) = 0
-c
-c           ns2 est-il un sommet des triangles empiles?
-c           -------------------------------------------
-            do 40 nt=nbtrc0+1,nbtrcf
-c              le triangle a supprimer nt
-               nt1 = notrcf( nt )
-c              le numero des 3 sommets du triangle nt1 dans le sens direct
-               call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr)
-               do 39 k=1,3
-c                 le sommet k de nt1
-                  if( nosotr( k ) .eq. ns2 ) then
-c                    but atteint
-                     goto 80
-                  endif
- 39            continue
- 40         continue
-c
-c           recherche du plus proche point d'intersection de ns1-ns2
-c           par rapport a ns2 avec les aretes des triangles ajoutes
-            nt0  = 0
-            dmin = d12 * 10000
-            do 48 nt=nbtrc0+1,nbtrcf
-               nt1 = notrcf( nt )
-c              le numero des 3 sommets du triangle nt1 dans le sens direct
-               call nusotr( nt1, mosoar, nosoar, moartr, noartr, nosotr)
-               do 45 k=1,3
-c                 les 2 sommets de l'arete k de nt
-                  ns3 = nosotr( k )
-                  ns4 = nosotr( nosui3(k) )
-c
-c                 point d'intersection du segment ns1-ns2 avec l'arete ns3-ns4
-c                 ------------------------------------------------------------
-                  call int1sd( ns1, ns2, ns3, ns4, pxyd,
-     %                         linter, x , y )
-                  if( linter .gt. 0 ) then
-c                    les 2 aretes s'intersectent en (x,y)
-                     d = (x-x2)**2+(y-y2)**2
-                     if( d .lt. dmin ) then
-                        nt0  = nt1
-                        na0  = k
-                        dmin = d
-                     endif
-                  endif
- 45            continue
- 48         continue
-c
-c           redemarrage avec le triangle nt0 et l'arete na0
-            if( nt0 .gt. 0 ) goto 30
-c
-            write(imprim,*) 'tefoar: algorithme defaillant'
-            ierr = 11
-            return
-         endif
- 50   continue
-c
-c     pas d'intersection differente de l'initiale => sommet sur ns1-ns2
-c     rotation autour du sommet par l'arete suivant na1
-      write(imprim,*)
-      write(imprim,*) 'tefoar 50: revoyez vos donnees'
-      write(imprim,*) 'les lignes fermees doivent etre disjointes'
-      write(imprim,*) 'verifiez si elles ne se coupent pas'
-      ierr = 13
-      return
-c
-c     cas sans probleme : intersection differente de celle initiale
-c     =================   =========================================
- 60   nbtrcf = nbtrcf + 1
-      notrcf( nbtrcf ) = nt1
-c     passage au triangle suivant
-      na0 = na2
-      nt0 = nt1
-      goto 30
-c
-c     ----------------------------------------------------------
-c     ici toutes les intersections de ns1-ns2 ont ete parcourues
-c     tous les triangles intersectes ou etendus forment les
-c     nbtrcf triangles du tableau notrcf
-c     ----------------------------------------------------------
- 70   nbtrcf = nbtrcf + 1
-      notrcf( nbtrcf ) = nt1
-c
-c     formation du cf des aretes simples des triangles de notrcf
-c     et destruction des nbtrcf triangles du tableau noartr
-c     attention: le chainage lchain du tableau nosoar devient actif
-c     =============================================================
- 80   if( nbtrcf*3 .gt. mxarcf ) then
-         write(imprim,*) 'saturation du tableau noarcf'
-         ierr = 10
-         return
-      endif
-c
-      call focftr( nbtrcf, notrcf, pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             nbarcf, n1arcf, noarcf,
-     %             ierr )
-      if( ierr .ne. 0 ) return
-c
-c     chainage des aretes vides dans le tableau noarcf
-c     ------------------------------------------------
-c     decalage de 2 aretes car 2 aretes sont necessaires ensuite pour
-c     integrer 2 fois l'arete perdue et former ainsi 2 cf
-c     comme nbtrcf*3 minore mxarcf il existe au moins 2 places vides
-c     derriere => pas de test de debordement
-      n1arcf(0) = nbarcf+3
-      mmarcf = min(8*nbarcf,mxarcf)
-      do 90 i=nbarcf+3,mmarcf
-         noarcf(2,i) = i+1
- 90   continue
-      noarcf(2,mmarcf) = 0
-c
-c     reperage des sommets ns1 ns2 de l'arete perdue dans le cf
-c     ---------------------------------------------------------
-      ns1   = nosoar( 1, narete )
-      ns2   = nosoar( 2, narete )
-      ns(1) = ns1
-      ns(2) = ns2
-      do 120 i=1,2
-c        la premiere arete dans noarcf du cf
-         na0 = n1arcf(1)
- 110     if( noarcf(1,na0) .ne. ns(i) ) then
-c           passage a l'arete suivante
-            na0 = noarcf( 2, na0 )
-            goto 110
-         endif
-c        position dans noarcf du sommet i de l'arete perdue
-         nacf(i) = na0
- 120  continue
-c
-c     formation des 2 cf chacun contenant l'arete ns1-ns2
-c     ---------------------------------------------------
-c     sauvegarde de l'arete suivante de celle de sommet ns1
-      na0 = noarcf( 2, nacf1 )
-      nt1 = noarcf( 3, nacf1 )
-c
-c     le premier cf
-      n1arcf( 1 ) = nacf1
-c     l'arete suivante dans le premier cf
-      noarcf( 2, nacf1 ) = nacf2
-c     cette arete est celle perdue
-      noarcf( 3, nacf1 ) = narete
-c
-c     le second cf
-c     l'arete doublee
-      n1 = nbarcf + 1
-      n2 = nbarcf + 2
-c     le premier sommet de la premiere arete du second cf
-      noarcf( 1, n1 ) = ns2
-c     l'arete suivante dans le second cf
-      noarcf( 2, n1 ) = n2
-c     cette arete est celle perdue
-      noarcf( 3, n1 ) = narete
-c     la seconde arete du second cf
-      noarcf( 1, n2 ) = ns1
-      noarcf( 2, n2 ) = na0
-      noarcf( 3, n2 ) = nt1
-      n1arcf( 2 ) = n1
-c
-c     recherche du precedent de nacf2
- 130  na1 = noarcf( 2, na0 )
-      if( na1 .ne. nacf2 ) then
-c        passage a l'arete suivante
-         na0 = na1
-         goto 130
-      endif
-c     na0 precede nacf2 => il precede n1
-      noarcf( 2, na0 ) = n1
-c
-c     depart avec 2 cf
-      nbcf   = 2
-c
-c     triangulation directe des 2 contours fermes
-c     l'arete ns1-ns2 devient une arete de la triangulation des 2 cf
-c     ==============================================================
-      call tridcf( nbcf,   pxyd,   noarst,
-     %             mosoar, mxsoar, n1soar, nosoar,
-     %             moartr, n1artr, noartr,
-     %             mxarcf, n1arcf, noarcf, larmin,
-     %             nbtrcf, notrcf, ierr )
-      end
-
-
-      subroutine te4ste( nbsomm, mxsomm, pxyd, ntrp, letree,
-     &                   ierr )
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c but :    decouper un te ntrp de letree en 4 sous-triangles
-c -----    eliminer les sommets de te trop proches des points
-c
-c entrees:
-c --------
-c mxsomm : nombre maximal de points declarables dans pxyd
-c ntrp   : numero letree du triangle a decouper en 4 sous-triangles
-c
-c modifies :
-c ----------
-c nbsomm : nombre actuel de points dans pxyd
-c pxyd   : tableau des coordonnees des points
-c          par point : x  y  distance_souhaitee
-c letree : arbre-4 des triangles equilateraux (te) fond de la triangulation
-c      letree(0,0) :  no du 1-er te vide dans letree
-c      letree(0,1) : maximum du 1-er indice de letree (ici 8)
-c      letree(0,2) : maximum declare du 2-eme indice de letree (ici mxtree)
-c      letree(0:8,1) : racine de l'arbre  (triangle sans sur triangle)
-c      si letree(0,.)>0 alors
-c         letree(0:3,j) : no (>0) letree des 4 sous-triangles du triangle j
-c      sinon
-c         letree(0:3,j) :-no pxyd des 1 a 4 points internes au triangle j
-c                         0  si pas de point
-c                        ( j est alors une feuille de l'arbre )
-c      letree(4,j) : no letree du sur-triangle du triangle j
-c      letree(5,j) : 0 1 2 3 no du sous-triangle j pour son sur-triangle
-c      letree(6:8,j) : no pxyd des 3 sommets du triangle j
-c
-c sorties :
-c ---------
-c ierr    : 0 si pas d'erreur, 51 saturation letree, 52 saturation pxyd
-c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-c auteur : alain perronnet  analyse numerique paris upmc    juillet 1994
-c2345x7..............................................................012
-      common / unites / lecteu,imprim,nunite(30)
-      integer           letree(0:8,0:*)
-      double precision  pxyd(3,mxsomm)
-      integer           np(0:3),milieu(3)
-c
-c     debut par l'arete 2 du triangle ntrp
-      i1 = 2
-      i2 = 3
-      do 30 i=1,3
-c
-c        le milieu de l'arete i1 existe t il deja ?
-         call n1trva( ntrp, i1, letree, noteva, niveau )
-         if( noteva .gt. 0 ) then
-c           il existe un te voisin
-c           s'il existe 4 sous-triangles le milieu existe deja
-            if( letree(0,noteva) .gt. 0 ) then
-c              le milieu existe
-               nsot = letree(0,noteva)
-               milieu(i) = letree( 5+nopre3(i1), nsot )
-               goto 25
-            endif
-         endif
-c
-c        le milieu n'existe pas. il est cree
-         nbsomm = nbsomm + 1
-         if( nbsomm .gt. mxsomm ) then
-c           plus assez de place dans pxyd
-            write(imprim,*) 'te4ste: saturation pxyd'
-            write(imprim,*)
-            ierr = 52
-            return
-         endif
-c        le milieu de l'arete i
-         milieu(i) = nbsomm
-c
-c        ntrp est le triangle de milieux d'arete ces 3 sommets
-         ns1    = letree( 5+i1, ntrp )
-         ns2    = letree( 5+i2, ntrp )
-         pxyd(1,nbsomm) = ( pxyd(1,ns1) + pxyd(1,ns2) ) * 0.5
-         pxyd(2,nbsomm) = ( pxyd(2,ns1) + pxyd(2,ns2) ) * 0.5
-c
-c        l'arete et milieu suivant
- 25      i1 = i2
-         i2 = nosui3( i2 )
- 30   continue
-c
-      do 50 i=0,3
-c
-c        le premier triangle vide
-         nsot = letree(0,0)
-         if( nsot .le. 0 ) then
-c           manque de place. saturation letree
-            ierr = 51
-            write(imprim,*) 'te4ste: saturation letree'
-            write(imprim,*)
-            return
-         endif
-c
-c        mise a jour du premier te libre
-         letree(0,0) = letree(0,nsot)
-c
-c        nsot est le i-eme sous triangle
-         letree(0,nsot) = 0
-         letree(1,nsot) = 0
-         letree(2,nsot) = 0
-         letree(3,nsot) = 0
-c
-c        le numero des points et sous triangles dans ntrp
-         np(i) = -letree(i,ntrp)
-         letree(i,ntrp) = nsot
-c
-c        le sommet commun avec le triangle ntrp
-         letree(5+i,nsot) = letree(5+i,ntrp)
-c
-c        le sur-triangle et numero de sous-triangle de nsot
-c        a laisser ici car incorrect sinon pour i=0
-         letree(4,nsot) = ntrp
-         letree(5,nsot) = i
-c
-c        le sous-triangle du triangle
-         letree(i,ntrp) = nsot
- 50   continue
-c
-c     le numero des nouveaux sommets milieux
-      nsot = letree(0,ntrp)
-      letree(6,nsot) = milieu(1)
-      letree(7,nsot) = milieu(2)
-      letree(8,nsot) = milieu(3)
-c
-      nsot = letree(1,ntrp)
-      letree(7,nsot) = milieu(3)
-      letree(8,nsot) = milieu(2)
-c
-      nsot = letree(2,ntrp)
-      letree(6,nsot) = milieu(3)
-      letree(8,nsot) = milieu(1)
-c
-      nsot = letree(3,ntrp)
-      letree(6,nsot) = milieu(2)
-      letree(7,nsot) = milieu(1)
-c
-c     repartition des eventuels 4 points np dans ces 4 sous-triangles
-c     il y a obligatoirement suffisamment de place
-      do 110 i=0,3
-         if( np(i) .gt. 0 ) then
-            nsot = notrpt( pxyd(1,np(i)), pxyd, ntrp, letree )
-c           ajout du point
-            do 100 i1=0,3
-               if( letree(i1,nsot) .eq. 0 ) then
-c                 place libre a occuper
-                  letree(i1,nsot) = -np(i)
-                  goto 110
-               endif
- 100        continue
-         endif
- 110  continue
-      end
diff --git a/src/Makefile.in b/src/Makefile.in
deleted file mode 100644 (file)
index c4bbfd8..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Patrick GOLDBRONN (CEA)
-#  Module : SMESH
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-@COMMENCE@
-
-SUBDIRS = \
-       SMDS SMESHDS Controls Driver DriverMED DriverDAT DriverUNV DriverSTL \
-       SMESH SMESH_I OBJECT SMESHFiltersSelection SMESHGUI SMESH_SWIG \
-       MEFISTO2 StdMeshers StdMeshers_I StdMeshersGUI
-
-@MODULE@
diff --git a/src/NETGEN/Makefile.in b/src/NETGEN/Makefile.in
deleted file mode 100644 (file)
index fc2e047..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-# -* Makefile *- 
-#
-# Author : Nadir Bouhamou (CEA)
-# Module : SMESH
-# Date : 10/10/2003
-#
-#
-
-# source path
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@
-
-@COMMENCE@
-
-# Libraries targets
-LIB = libNETGEN.la
-
-# additionnal information to compil and link file
-CPPFLAGS += -DSOLIDGEOM -DLINUX $(OCC_INCLUDES)
-CXXFLAGS += -DSOLIDGEOM -DLINUX $(OCC_CXXFLAGS)
-
-LDFLAGS += $(OCC_KERNEL_LIBS) $(OCC_MODELER_LIBS) -lg2c
-
-NETGEN_LIBS_DIR=@NETGEN_LIBS_DIR@
-
-LIB_OBJ_O = linopt.o \
-       bfgs.o \
-        linsearch.o \
-       global.o \
-       bisect.o \
-       meshtool.o \
-       refine.o \
-       ruler3.o \
-       improve3.o \
-       adfront3.o \
-       tetrarls.o \
-       prism2rls.o \
-       pyramidrls.o \
-       pyramid2rls.o \
-       netrule3.o \
-       ruler2.o \
-       meshclass.o \
-       improve2.o \
-       adfront2.o \
-       netrule2.o \
-       triarls.o \
-       geomsearch.o \
-       secondorder.o \
-       meshtype.o \
-       parser3.o \
-       quadrls.o \
-       specials.o \
-       parser2.o \
-       meshing2.o \
-       meshing3.o \
-       meshfunc.o \
-       localh.o \
-       improve2gen.o \
-       delaunay.o \
-       boundarylayer.o \
-       msghandler.o \
-       meshfunc2d.o \
-       smoothing2.o \
-       smoothing3.o \
-       topology.o \
-       curvedelems.o \
-       clusters.o \
-       zrefine.o \
-       ngexception.o \
-       geomtest3d.o \
-       geom2d.o \
-       geom3d.o \
-       adtree.o \
-       transform3d.o \
-       geomfuncs.o \
-       polynomial.o \
-       densemat.o \
-       vector.o \
-       basemat.o \
-       sparsmat.o \
-       algprim.o \
-       brick.o \
-       manifold.o \
-       bspline2d.o \
-       meshsurf.o \
-       csgeom.o \
-       polyhedra.o \
-       curve2d.o \
-       singularref.o \
-       edgeflw.o \
-       solid.o \
-       explicitcurve2d.o \
-       specpoin.o \
-       gencyl.o \
-       revolution.o \
-       genmesh.o \
-       spline3d.o \
-       surface.o \
-       identify.o \
-       triapprox.o \
-       meshstlsurface.o \
-       stlline.o \
-       stltopology.o \
-       stltool.o \
-       stlgeom.o \
-       stlgeomchart.o \
-       stlgeommesh.o \
-       table.o \
-       optmem.o \
-       spbita2d.o \
-       hashtabl.o \
-       sort.o \
-       flags.o \
-       seti.o \
-       bitarray.o \
-       array.o \
-       symbolta.o \
-       mystring.o \
-       moveablemem.o \
-       spline2d.o \
-       splinegeometry2.o \
-       ngnewdelete.o \
-       nglib.o
-
-$(LIB_OBJ_O):
-       ar x $(NETGEN_LIBS_DIR)/libnginterface.a
-       ar x $(NETGEN_LIBS_DIR)/libcsg.a
-       ar x $(NETGEN_LIBS_DIR)/libgprim.a
-       ar x $(NETGEN_LIBS_DIR)/libmesh.a
-       ar x $(NETGEN_LIBS_DIR)/libopti.a
-       ar x $(NETGEN_LIBS_DIR)/libgen.a
-       ar x $(NETGEN_LIBS_DIR)/libla.a
-       ar x $(NETGEN_LIBS_DIR)/libstlgeom.a
-       ar x $(NETGEN_LIBS_DIR)/libgeom2d.a
-       rm -rf sgparser.o hprefinement.o parthreads.o writediffpack.o writepermas.o writeuser.o dynamicmem.o importsolution.o readuser.o writefeap.o writetecplot.o wuchemnitz.o extrusion.o writeabaqus.o writefluent.o writetochnog.o csgparser.o geom2dmesh.o
-
-LIB_OBJ_LO = $(LIB_OBJ_O:%.o=%.lo)
-
-#implicits rules
-
-.o.lo:
-       ln -s $< $@ || true
-
-@CONCLUDE@
-
-$(LIB): $(LIB_OBJ_O) $(LIB_OBJ_LO)
-       @$(LT) --mode=link $(CXX) -rpath $(libdir) -o $@ $(CXXFLAGS) $(LIB_OBJ_LO) $(LDFLAGS) $(LIBS)
-
-mostlyclean: cleandep
-       -$(RM) $(LIB_OBJ_O) $(LIB_OBJ_LO)
diff --git a/src/NETGEN/ReadMeForNgUsers b/src/NETGEN/ReadMeForNgUsers
deleted file mode 100644 (file)
index 555eb97..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-The Netgen 4.3 from the web location : http://www.hpfem.jku.at/netgen/ is used
-in the SMESH Module of Salome2 distribution.
-
-How to build Netgen for Salome
-------------------------------
-
-Patch the official netgen 4.3 distribution:
-
-$ cd netgen43
-$ patch -p1 < patch_directory/netgen43ForSalome.patch
-
-Then run makeForSalome.sh:
-$ sh makeForSalome.sh
-
-
-Additional information for maintainers
---------------------------------------
-
-The SMESH Engine of SALOME2 (particularly the m4 file check_Netgen.m4) assume
-that Netgen is installed in the directory <netgen_installation_path> as follow:
-
-prompt> ls <netgen_installation_path>
-
-bin/  cshrc_for_netgen  doc/  include/  lib/  tutorials/
-
-prompt> ls <netgen_installation_path>/bin
-
-LINUX/
-
-prompt> ls <netgen_installation_path>/bin/LINUX/
-
-demoapp/  ng  ng.tcl  ngtcltk/  startup.tcl
-
-prompt> ls <netgen_installation_path>/bin/LINUX/demoapp/
-
-demoapp.tcl
-
-prompt> ls <netgen_installation_path>/bin/LINUX/ngtcltk/
-
-dialog.tcl   menustat.tcl  ngicon.tcl    parameters.tcl
-drawing.tcl  nghelp.tcl    ngvisual.tcl  variables.tcl
-
-prompt> ls <netgen_installation_path>/doc/
-
-ng4.pdf  usenetgen.ps
-
-prompt> ls <netgen_installation_path>/include/
-
-nglib.h
-
-prompt> ls <netgen_installation_path>/lib/
-
-LINUX/
-
-prompt> ls <netgen_installation_path>/lib/LINUX/
-
-libcsg.a  libgeom2d.a  libla.a    libnginterface.a  libstlgeom.a
-libgen.a  libgprim.a   libmesh.a  libopti.a         libvis.a
-
-prompt> ls <netgen_installation_path>/tutorials/
-
-boxcyl.geo          cylinder.geo     ficherea.geo   part1.stl         square.in2d
-cone.geo            cylsphere.geo    hinge.stl      sculpture.geo     trafo.geo
-cubeandspheres.geo  demo2d.in2d      lshape3d.geo   shaft.geo         twobricks.geo
-cube.geo            ellipsoid.geo    manyholes.geo  sphere.geo        twocubes.geo
-cubemcyl.geo        ellipticcyl.geo  matrix.geo     sphereincube.geo  twocyl.geo
-cubemsphere.geo
-
-All *.tcl files are needed to control and initiate the Netgen mesher throughout its
-MHI (Machine Human Interface).<netgen_installation_path>/bin/LINUX/ng is the Netgen
-executable with its embarked MHI. All the libraries *.a should be compiled without
-the option -DOPENGL which is only needed for the Netgen MHI. netgen43 is assumed to
-be the directory downloaded from the above web location archive of Netgen. The library
-<netgen_installation_path>/lib/LINUX/libnginterface.a should contain the objects
-nglib.o (from netgen43/libsrc/interface/nglib.cpp) and ngnewdelete.o
-(from netgen43/ngtcltk/ngnewdelete.cpp).
-
-To have that kind of distribution from the version in the above web location you
-should first compile Netgen as suggested in the netgen43/README.INSTALL file. It will
-then produce the executable ng linked statically with the libraries *.a. Then modify
-the Makefiles to remove -DOPENGL from compiler flags list, add the objects nglib.o
-and ngnewdelete.o to the library libnginterface.a and recompile the libraries only.
-
-From the above web location perhaps, you will have to alter some Netgen sources to
-compile them; if you find any difficulties to do that, just ask me.
-
-Nadir
-
-********************************
-* Dr Nadir Bouhamou            *
-* Ingénieur-chercheur          *
-* Engineer-Researcher          *
-*                              *
-* CEA Saclay                   *
-* DEN/DM2S/SFME/LGLS           *
-* Bat 454 Pièce 5A             *
-* 91191 Gif-Sur-Yvette cédex   *
-*                              *
-* Tél: +33 (0)1 69 08 73 07    *
-* Fax: +33 (0)1 69 08 96 96    *
-* email: nadir.bouhamou@cea.fr *
-********************************
diff --git a/src/NETGEN/netgen43ForSalome.patch b/src/NETGEN/netgen43ForSalome.patch
deleted file mode 100644 (file)
index 5e08d88..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-diff -N -r -u netgen43/libsrc/include/spline2d.hpp /tmp/netgen43/libsrc/include/spline2d.hpp
---- netgen43/libsrc/include/spline2d.hpp       1970-01-01 01:00:00.000000000 +0100
-+++ /tmp/netgen43/libsrc/include/spline2d.hpp  2003-12-10 16:28:12.000000000 +0100
-@@ -0,0 +1 @@
-+#include "../geom2d/spline2d.hpp"
-diff -N -r -u netgen43/libsrc/include/splinegeometry2.hpp /tmp/netgen43/libsrc/include/splinegeometry2.hpp
---- netgen43/libsrc/include/splinegeometry2.hpp        1970-01-01 01:00:00.000000000 +0100
-+++ /tmp/netgen43/libsrc/include/splinegeometry2.hpp   2003-12-10 16:28:23.000000000 +0100
-@@ -0,0 +1 @@
-+#include "../geom2d/splinegeometry2.hpp"
-diff -N -r -u netgen43/libsrc/interface/Makefile /tmp/netgen43/libsrc/interface/Makefile
---- netgen43/libsrc/interface/Makefile 2003-05-07 16:01:43.000000000 +0200
-+++ /tmp/netgen43/libsrc/interface/Makefile    2003-12-10 15:59:47.000000000 +0100
-@@ -1,4 +1,4 @@
--src = nginterface.cpp writeuser.cpp writediffpack.cpp writeabaqus.cpp writefluent.cpp writepermas.cpp writetochnog.cpp writetecplot.cpp wuchemnitz.cpp writetochnog.cpp writefeap.cpp readuser.cpp importsolution.cpp
-+src = writeuser.cpp writediffpack.cpp writeabaqus.cpp writefluent.cpp writepermas.cpp writetochnog.cpp writetecplot.cpp wuchemnitz.cpp writetochnog.cpp writefeap.cpp readuser.cpp importsolution.cpp nglib.cpp ngnewdelete.cpp
- #
- lib = nginterface
- libpath = libsrc/interface
-diff -N -r -u netgen43/libsrc/interface/nglib.cpp /tmp/netgen43/libsrc/interface/nglib.cpp
---- netgen43/libsrc/interface/nglib.cpp        2003-05-07 16:01:43.000000000 +0200
-+++ /tmp/netgen43/libsrc/interface/nglib.cpp   2003-12-10 16:32:54.000000000 +0100
-@@ -23,6 +23,20 @@
- #include "nglib.h"
-+namespace netgen
-+{
-+  char geomfilename [100];
-+
-+  //Destination for messages, errors, ...
-+  void Ng_PrintDest(const char * s)
-+  {
-+    (*mycout) << s << flush;
-+  }
-+
-+#include <spline2d.hpp>
-+#include <splinegeometry2.hpp>
-+}
-+
- using namespace netgen;
- // constants and types:
-@@ -171,8 +185,6 @@
- // CSG Geometry
- // FlexLexer * lexer;
--char geomfilename [100];
--
- // 2D Meshing Functions:
-@@ -362,7 +374,18 @@
-         cout << "e(" << readedges.Get(i) << "," << readedges.Get(i+1) << ")" << endl;
-       }
-       */
--      geo->AddEdges(readedges);
-+
-+      ARRAY< Point<3> > readedges1;
-+
-+      for (i = 1; i <= readedges.Size(); i++)
-+      {
-+        Point3d readedgesData = readedges.Get(i);
-+        Point <3> readedges1Data = Point<3>(readedgesData.X(),readedgesData.Y(),readedgesData.Z());
-+
-+        readedges1.Append(readedges1Data);
-+      }
-+
-+      geo->AddEdges(readedges1);
-     }
-   if (geo->GetStatus() == STLTopology::STL_GOOD || geo->GetStatus() == STLTopology::STL_WARNING) return NG_OK;
-@@ -472,7 +495,14 @@
-     n = Vec3d(nv[0],nv[1],nv[2]);
-   }
--  readtrias.Append(STLReadTriangle(apts,n));
-+  Point<3> apts1[3];
-+  apts1[0] = Point<3>(p1[0],p1[1],p1[2]);
-+  apts1[1] = Point<3>(p2[0],p2[1],p2[2]);
-+  apts1[2] = Point<3>(p3[0],p3[1],p3[2]);
-+
-+  Vec<3> n1 = Vec<3>(n.X(),n.Y(),n.Z());
-+
-+  readtrias.Append(STLReadTriangle(apts1,n1));
- }
-   // add (optional) edges:
-@@ -487,30 +517,29 @@
- // compatibility functions:
--void MyError (const char * ch)
-+void netgen::MyError (const char * ch)
- {
-   cerr << ch;
- }
--//Destination for messages, errors, ...
--void Ng_PrintDest(const char * s)
--{
--  (*mycout) << s << flush;
--}
--
--
--double GetTime ()
-+double netgen::GetTime ()
- {
-   return 0;
- }
--void ResetTime ()
-+void netgen::ResetTime ()
- {
-   ;
- }
--void MyBeep (int i)
-+void netgen::MyBeep (int i)
- {
-   ;
- }
-+void MeshFromSpline2D (SplineGeometry2d & geometry,
-+                     Mesh *& mesh, 
-+                     MeshingParameters & mp)
-+{
-+  MeshFromSpline2D (geometry, mesh,  mp);
-+}
-diff -N -r -u netgen43/libsrc/makefile.mach.LINUX /tmp/netgen43/libsrc/makefile.mach.LINUX
---- netgen43/libsrc/makefile.mach.LINUX        2003-05-07 16:01:43.000000000 +0200
-+++ /tmp/netgen43/libsrc/makefile.mach.LINUX   2003-12-10 15:12:18.000000000 +0100
-@@ -14,7 +14,8 @@
- #
- CFLAGS2 =
- # pg stands for profiling - also in linkflags2
--CPLUSPLUSFLAGS2 =  -O2 -I/usr/X11R6/include -DLINUX -DOPENGL
-+#CPLUSPLUSFLAGS2 =  -O2 -I/usr/X11R6/include -DLINUX -DOPENGL
-+CPLUSPLUSFLAGS2 =  -O2 -I/usr/X11R6/include -DLINUX
- # -fomit-frame-pointer
- # -ffast-math
- #
-diff -N -r -u netgen43/libsrc/meshing/improve2.cpp /tmp/netgen43/libsrc/meshing/improve2.cpp
---- netgen43/libsrc/meshing/improve2.cpp       2003-05-07 16:01:43.000000000 +0200
-+++ /tmp/netgen43/libsrc/meshing/improve2.cpp  2003-12-10 15:42:00.000000000 +0100
-@@ -3,7 +3,7 @@
- #include "meshing.hpp"
- #include <opti.hpp>
--#include <visual.hpp>
-+/*#include <visual.hpp>*/
- namespace netgen
-diff -N -r -u netgen43/libsrc/meshing/meshing2.cpp /tmp/netgen43/libsrc/meshing/meshing2.cpp
---- netgen43/libsrc/meshing/meshing2.cpp       2003-05-07 16:01:43.000000000 +0200
-+++ /tmp/netgen43/libsrc/meshing/meshing2.cpp  2003-12-10 15:34:35.000000000 +0100
-@@ -1785,7 +1785,7 @@
- #else
--void glrender (int wait)
-+void netgen::glrender (int wait)
- {
-   ;
- } 
-diff -N -r -u netgen43/libsrc/visualization/stlmeshing.cpp /tmp/netgen43/libsrc/visualization/stlmeshing.cpp
---- netgen43/libsrc/visualization/stlmeshing.cpp       2003-05-07 16:01:43.000000000 +0200
-+++ /tmp/netgen43/libsrc/visualization/stlmeshing.cpp  2003-12-10 15:52:53.000000000 +0100
-@@ -5,7 +5,7 @@
- #include <stlgeom.hpp>
- #include <meshing.hpp>
--#include <visual.hpp>
-+/*#include <visual.hpp>*/
- namespace netgen
- {
-diff -N -r -u netgen43/Makefile /tmp/netgen43/Makefile
---- netgen43/Makefile  2003-05-07 16:01:43.000000000 +0200
-+++ /tmp/netgen43/Makefile     2003-12-10 15:11:41.000000000 +0100
-@@ -35,7 +35,8 @@
- .SUFFIXES: .cpp .o
- #
- #
--CPLUSPLUSFLAGS1 = -c -I$(LIBSRC_DIR)/include  -DOPENGL
-+#CPLUSPLUSFLAGS1 = -c -I$(LIBSRC_DIR)/include  -DOPENGL
-+CPLUSPLUSFLAGS1 = -c -I$(LIBSRC_DIR)/include
- LINKFLAGS1 =   -lGL -lGLU -lX11 -lXext -lXmu
- #
- CPLUSPLUSFLAGS = $(CPLUSPLUSFLAGS1) $(CPLUSPLUSFLAGS2) $(CPLUSPLUSFLAGS3)
-diff -N -r -u netgen43/makeForSalome.sh /tmp/netgen43/makeForSalome.sh
---- netgen43/makeForSalome.sh  1970-01-01 01:00:00.000000000 +0100
-+++ /tmp/netgen43/makeForSalome.sh     2004-01-05 12:33:59.000000000 +0100
-@@ -0,0 +1,26 @@
-+#! /bin/sh
-+cp ngtcltk/ngnewdelete.* libsrc/interface/
-+
-+MACHINE=LINUX
-+export MACHINE
-+make -C libsrc/csg
-+make -C libsrc/general
-+make -C libsrc/geom2d
-+make -C libsrc/gprim
-+make -C libsrc/interface
-+make -C libsrc/linalg
-+make -C libsrc/meshing
-+make -C libsrc/opti
-+make -C libsrc/stlgeom
-+
-+if [ ! -d install ] ; then
-+      mkdir install
-+fi
-+
-+cp -r lib install/
-+
-+if [ ! -d install/include ] ; then
-+      mkdir install/include
-+fi
-+
-+cp libsrc/interface/nglib.h install/include
diff --git a/src/NETGENPlugin/Makefile.in b/src/NETGENPlugin/Makefile.in
deleted file mode 100644 (file)
index 5771909..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#  SMESH NETGENPlugin : implementaion of SMESH idl descriptions
-#
-#  Copyright (C) 2004  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Julia DOROVSKIKH
-#  Module : SMESH
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:
-
-
-@COMMENCE@
-
-EXPORT_PYSCRIPTS =
-
-# .po files to transform in .qm
-PO_FILES = NETGENPlugin_icons.po
-
-# Libraries targets
-LIB = libNETGENEngine.la
-LIB_SRC = \
-       NETGENPlugin_NETGEN_3D.cxx \
-       NETGENPlugin_NETGEN_3D_i.cxx \
-       NETGENPlugin_i.cxx
-
-LIB_SERVER_IDL = SMESH_NetgenAlgorithm.idl
-
-LIB_CLIENT_IDL = SMESH_Gen.idl SMESH_Mesh.idl SMESH_Group.idl
-
-# Executables targets
-BIN = 
-BIN_SRC = 
-
-# additionnal information to compil and link file
-NETGEN_INCLUDES=@NETGEN_INCLUDES@
-
-CPPFLAGS+= $(OCC_INCLUDES) $(HDF5_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome \
-           -I${GEOM_ROOT_DIR}/include/salome $(NETGEN_INCLUDES) $(BOOST_CPPFLAGS)
-CXXFLAGS+= $(OCC_CXXFLAGS) $(HDF5_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome \
-           -I${GEOM_ROOT_DIR}/include/salome $(NETGEN_INCLUDES)
-
-LDFLAGS+= $(HDF5_LIBS) -lSMESHimpl -lSMESHEngine -lStdMeshers -lStdMeshersEngine -lNETGEN -L${KERNEL_ROOT_DIR}/lib/salome -L${GEOM_ROOT_DIR}/lib/salome -lSalomeGenericObj
-
-@CONCLUDE@
diff --git a/src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.cxx b/src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.cxx
deleted file mode 100644 (file)
index 489d682..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : NETGENPlugin_NETGEN_3D_i.cxx
-//           Moved here from SMESH_NETGEN_3D_i.cxx
-//  Author : Nadir Bouhamou CEA
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "NETGENPlugin_NETGEN_3D_i.hxx"
-#include "SMESH_Gen.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  NETGENPlugin_NETGEN_3D_i::NETGENPlugin_NETGEN_3D_i
- *
- *  Constructor
- */
-//=============================================================================
-
-NETGENPlugin_NETGEN_3D_i::NETGENPlugin_NETGEN_3D_i( PortableServer::POA_ptr thePOA,
-                                     int                     theStudyId,
-                                     ::SMESH_Gen*            theGenImpl )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA ), 
-       SMESH_Algo_i( thePOA ),
-       SMESH_3D_Algo_i( thePOA )
-{
-  MESSAGE( "NETGENPlugin_NETGEN_3D_i::NETGENPlugin_NETGEN_3D_i" );
-  myBaseImpl = new ::NETGENPlugin_NETGEN_3D( theGenImpl->GetANewId(),
-                                     theStudyId,
-                                     theGenImpl );
-}
-
-//=============================================================================
-/*!
- *  NETGENPlugin_NETGEN_3D_i::~NETGENPlugin_NETGEN_3D_i
- *
- *  Destructor
- */
-//=============================================================================
-
-NETGENPlugin_NETGEN_3D_i::~NETGENPlugin_NETGEN_3D_i()
-{
-  MESSAGE( "NETGENPlugin_NETGEN_3D_i::~NETGENPlugin_NETGEN_3D_i" );
-}
-
-//=============================================================================
-/*!
- *  NETGENPlugin_NETGEN_3D_i::GetImpl
- *
- *  Get implementation
- */
-//=============================================================================
-
-::NETGENPlugin_NETGEN_3D* NETGENPlugin_NETGEN_3D_i::GetImpl()
-{
-  MESSAGE( "NETGENPlugin_NETGEN_3D_i::GetImpl" );
-  return ( ::NETGENPlugin_NETGEN_3D* )myBaseImpl;
-}
-
diff --git a/src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.hxx b/src/NETGENPlugin/NETGENPlugin_NETGEN_3D_i.hxx
deleted file mode 100644 (file)
index 724fafa..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : NETGENPlugin_NETGEN_3D_i.hxx
-//           Moved here from SMESH_NETGEN_3D_i.hxx
-//  Author : Nadir Bouhamou CEA
-//  Module : SMESH
-//  $Header$
-
-#ifndef _NETGENPlugin_NETGEN_3D_I_HXX_
-#define _NETGENPlugin_NETGEN_3D_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_NetgenAlgorithm)
-
-#include "SMESH_3D_Algo_i.hxx"
-#include "NETGENPlugin_NETGEN_3D.hxx"
-
-// ======================================================
-// NETGEN 3d algorithm
-// ======================================================
-class NETGENPlugin_NETGEN_3D_i:
-  public virtual POA_NETGENPlugin::NETGENPlugin_NETGEN_3D,
-  public virtual SMESH_3D_Algo_i
-{
-public:
-  // Constructor
-  NETGENPlugin_NETGEN_3D_i( PortableServer::POA_ptr thePOA,
-                     int                     theStudyId,
-                     ::SMESH_Gen*            theGenImpl );
-  // Destructor
-  virtual ~NETGENPlugin_NETGEN_3D_i();
-  // Get implementation
-  ::NETGENPlugin_NETGEN_3D* GetImpl();
-};
-
-#endif
diff --git a/src/NETGENPlugin/NETGENPlugin_i.cxx b/src/NETGENPlugin/NETGENPlugin_i.cxx
deleted file mode 100644 (file)
index 7ec0e06..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//  SMESH NETGENPlugin : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : NETGENPlugin.cxx
-//  Author : Julia DOROVSKIKH
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESH_Hypothesis_i.hxx"
-#include "SMESH_Gen_i.hxx"
-
-#include "utilities.h"
-
-#include "NETGENPlugin_NETGEN_3D_i.hxx"
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-extern "C"
-{
-  GenericHypothesisCreator_i* GetHypothesisCreator (const char* aHypName)
-  {
-    MESSAGE("GetHypothesisCreator " << aHypName);
-
-    GenericHypothesisCreator_i* aCreator = 0;
-
-    // Hypotheses
-
-    // Algorithms
-    if (strcmp(aHypName, "NETGEN_3D") == 0)
-      aCreator = new HypothesisCreator_i<NETGENPlugin_NETGEN_3D_i>;
-    else ;
-
-    return aCreator;
-  }
-}
diff --git a/src/NETGENPlugin/NETGENPlugin_icons.po b/src/NETGENPlugin/NETGENPlugin_icons.po
deleted file mode 100644 (file)
index a3f6297..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# This is a Qt message file in .po format.  Each msgid starts with
-# a scope.  This scope should *NOT* be translated - eg. "Foo::Bar"
-# would be translated to "Pub", not "Foo::Pub".
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
-"PO-Revision-Date: YYYY-MM-DD\n"
-"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-
-
-#-----------------------------------------------------------
-# ObjectBrowser
-#-----------------------------------------------------------
-
-#mesh_tree_algo_netgen
-msgid "ICON_SMESH_TREE_ALGO_NETGEN_3D"
-msgstr "mesh_tree_algo_tetra.png"
-#msgstr "mesh_tree_algo_netgen.png"
diff --git a/src/OBJECT/Makefile.in b/src/OBJECT/Makefile.in
deleted file mode 100644 (file)
index 8cf070c..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#  SMESH OBJECT : interactive object for SMESH visualization
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Module : SMESH
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl
-
-@COMMENCE@
-
-EXPORT_HEADERS = SMESH_Actor.h SMESH_Object.h SMESH_ObjectDef.h SMESH_ActorUtils.h
-
-
-# Libraries targets
-
-LIB = libSMESHObject.la
-LIB_SRC = SMESH_Object.cxx SMESH_DeviceActor.cxx SMESH_Actor.cxx \
-         SMESH_ExtractGeometry.cxx SMESH_ActorUtils.cxx
-
-LIB_CLIENT_IDL = SALOME_Exception.idl \
-                SALOME_GenericObj.idl \
-                SMESH_Mesh.idl \
-                SMESH_Group.idl
-
-
-# Executables targets
-BIN = 
-BIN_SRC        =
-
-CPPFLAGS+=$(OCC_INCLUDES) $(VTK_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome \
-         $(BOOST_CPPFLAGS) $(QT_INCLUDES)
-LDFLAGS+=$(OCC_KERNEL_LIBS) $(VTK_LIBS) -L${KERNEL_ROOT_DIR}/lib/salome -L${GUI_ROOT_DIR}/lib/salome -lSMDS \
-         -lSalomeApp -lSalomeObject -lSMESHControls
-
-@CONCLUDE@
diff --git a/src/OBJECT/SMESH_Actor.cxx b/src/OBJECT/SMESH_Actor.cxx
deleted file mode 100644 (file)
index 3c5e2e0..0000000
+++ /dev/null
@@ -1,1627 +0,0 @@
-//  SMESH OBJECT : interactive object for SMESH visualization
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Actor.cxx
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-
-#include "SMESH_ActorDef.h"
-#include "SMESH_ActorUtils.h"
-#include "SMESH_DeviceActor.h"
-#include "SMESH_ControlsDef.hxx"
-#include <VTKViewer_ExtractUnstructuredGrid.h>
-
-#include "SUIT_Session.h"
-#include "SUIT_ResourceMgr.h"
-
-#include <qstringlist.h>
-
-#include <vtkTimeStamp.h>
-#include <vtkObjectFactory.h>
-#include <vtkShrinkPolyData.h>
-#include <vtkMergeFilter.h>
-
-#include <vtkMatrix4x4.h>
-#include <vtkUnstructuredGrid.h>
-#include <vtkPointData.h>
-#include <vtkCellData.h>
-
-#include <vtkMapper.h>
-#include <vtkRenderer.h>
-
-#include <vtkCell.h>
-#include <vtkIdList.h>
-#include <vtkIntArray.h>
-
-#include <vtkActor2D.h>
-#include <vtkProperty2D.h>
-#include <vtkPolyData.h>
-#include <vtkMaskPoints.h>
-#include <vtkCellCenters.h>
-#include <vtkTextProperty.h>
-#include <vtkLabeledDataMapper.h>
-#include <vtkSelectVisiblePoints.h>
-
-#include <vtkScalarBarActor.h>
-#include <vtkLookupTable.h>
-
-#include <vtkMath.h>
-#include <vtkPlane.h>
-#include <vtkImplicitBoolean.h>
-#include <vtkImplicitFunctionCollection.h>
-
-#include "utilities.h"
-
-#ifdef _DEBUG_
-static int MYDEBUG = 1;
-#else
-static int MYDEBUG = 0;
-#endif
-
-static int aLineWidthInc = 2;
-static int aPointSizeInc = 2;
-
-
-SMESH_ActorDef* SMESH_ActorDef::New(){
-  return new SMESH_ActorDef();
-}
-
-
-SMESH_Actor* SMESH_Actor::New(TVisualObjPtr theVisualObj, 
-                             const char* theEntry, 
-                             const char* theName,
-                             int theIsClear)
-{
-  SMESH_ActorDef* anActor = SMESH_ActorDef::New();
-  if(!anActor->Init(theVisualObj,theEntry,theName,theIsClear)){
-    anActor->Delete();
-    anActor = NULL;
-  }
-  if( anActor )
-    anActor->UpdateScalarBar();
-  return anActor;
-}
-
-
-SMESH_ActorDef::SMESH_ActorDef()
-{
-  if(MYDEBUG) MESSAGE("SMESH_ActorDef - "<<this);
-
-  myTimeStamp = vtkTimeStamp::New();
-
-  myIsPointsVisible = false;
-
-  myIsShrinkable = false;
-  myIsShrunk = false;
-
-  myControlsPrecision = -1;
-  SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
-  if ( mgr && mgr->booleanValue( "SMESH", "use_precision", false ) )
-    myControlsPrecision = (long)SMESH::GetFloat( "SMESH", "controls_precision", -1 );
-
-  float aPointSize = SMESH::GetFloat("SMESH:node_size",3);
-  float aLineWidth = SMESH::GetFloat("SMESH:element_width",1);
-
-  vtkMatrix4x4 *aMatrix = vtkMatrix4x4::New();
-  VTKViewer_ExtractUnstructuredGrid* aFilter = NULL;
-
-  //Definition 2D and 3D divices of the actor
-  //-----------------------------------------
-  float anRGB[3] = {1,1,1};
-  mySurfaceProp = vtkProperty::New();
-  SMESH::GetColor( "SMESH", "fill_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) );
-  mySurfaceProp->SetColor( anRGB[0], anRGB[1], anRGB[2] );
-
-  myBackSurfaceProp = vtkProperty::New();
-  SMESH::GetColor( "SMESH", "backface_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 0, 255 ) );
-  myBackSurfaceProp->SetColor( anRGB[0], anRGB[1], anRGB[2] );
-
-  my2DActor = SMESH_DeviceActor::New();
-  my2DActor->SetUserMatrix(aMatrix);
-  my2DActor->PickableOff();
-  my2DActor->SetProperty(mySurfaceProp);
-  my2DActor->SetBackfaceProperty(myBackSurfaceProp);
-  my2DActor->SetRepresentation(SMESH_DeviceActor::eSurface);
-  aFilter = my2DActor->GetExtractUnstructuredGrid();
-  aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
-  aFilter->RegisterCellsWithType(VTK_TRIANGLE);
-  aFilter->RegisterCellsWithType(VTK_POLYGON);
-  aFilter->RegisterCellsWithType(VTK_QUAD);
-
-  my3DActor = SMESH_DeviceActor::New();
-  my3DActor->SetUserMatrix(aMatrix);
-  my3DActor->PickableOff();
-  my3DActor->SetProperty(mySurfaceProp);
-  my3DActor->SetBackfaceProperty(myBackSurfaceProp);
-  my3DActor->SetRepresentation(SMESH_DeviceActor::eSurface);
-  aFilter = my3DActor->GetExtractUnstructuredGrid();
-  aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
-  aFilter->RegisterCellsWithType(VTK_TETRA);
-  aFilter->RegisterCellsWithType(VTK_VOXEL);
-  aFilter->RegisterCellsWithType(VTK_HEXAHEDRON);
-  aFilter->RegisterCellsWithType(VTK_WEDGE);
-  aFilter->RegisterCellsWithType(VTK_PYRAMID);
-  aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
-
-  //Definition 1D divice of the actor
-  //---------------------------------
-  myEdgeProp = vtkProperty::New();
-  myEdgeProp->SetAmbient(1.0);
-  myEdgeProp->SetDiffuse(0.0);
-  myEdgeProp->SetSpecular(0.0);
-  SMESH::GetColor( "SMESH", "outline_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) );
-  myEdgeProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
-  myEdgeProp->SetLineWidth(aLineWidth);
-
-  my1DActor = SMESH_DeviceActor::New();
-  my1DActor->SetUserMatrix(aMatrix);
-  my1DActor->PickableOff();
-  my1DActor->SetHighlited(true);
-  my1DActor->SetProperty(myEdgeProp);
-  my1DActor->SetRepresentation(SMESH_DeviceActor::eSurface);
-  aFilter = my1DActor->GetExtractUnstructuredGrid();
-  aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
-  aFilter->RegisterCellsWithType(VTK_LINE);
-
-  my1DProp = vtkProperty::New();
-  my1DProp->DeepCopy(myEdgeProp);
-  my1DProp->SetLineWidth(aLineWidth + aLineWidthInc);
-  my1DProp->SetPointSize(aPointSize);
-
-  my1DExtProp = vtkProperty::New();
-  my1DExtProp->DeepCopy(myEdgeProp);
-  anRGB[0] = 1 - anRGB[0];
-  anRGB[1] = 1 - anRGB[1];
-  anRGB[2] = 1 - anRGB[2];
-  my1DExtProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
-  my1DExtProp->SetLineWidth(aLineWidth + aLineWidthInc);
-  my1DExtProp->SetPointSize(aPointSize + aPointSizeInc);
-
-  my1DExtActor = SMESH_DeviceActor::New();
-  my1DExtActor->SetUserMatrix(aMatrix);
-  my1DExtActor->PickableOff();
-  my1DExtActor->SetHighlited(true);
-  my1DExtActor->SetVisibility(false);
-  my1DExtActor->SetProperty(my1DExtProp);
-  my1DExtActor->SetRepresentation(SMESH_DeviceActor::eInsideframe);
-  aFilter = my1DExtActor->GetExtractUnstructuredGrid();
-  aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
-  aFilter->RegisterCellsWithType(VTK_LINE);
-
-
-  //Definition 0D divice of the actor
-  //---------------------------------
-  myNodeProp = vtkProperty::New();
-  SMESH::GetColor( "SMESH", "node_color", anRGB[0], anRGB[1], anRGB[2], QColor( 255, 0, 0 ) );
-  myNodeProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
-  myNodeProp->SetPointSize(aPointSize);
-
-  myNodeActor = SMESH_DeviceActor::New();
-  myNodeActor->SetUserMatrix(aMatrix);
-  myNodeActor->SetStoreClippingMapping(true);
-  myNodeActor->PickableOff();
-  myNodeActor->SetVisibility(false);
-  myNodeActor->SetProperty(myNodeProp);
-  myNodeActor->SetRepresentation(SMESH_DeviceActor::ePoint);
-  aFilter = myNodeActor->GetExtractUnstructuredGrid();
-  aFilter->SetModeOfExtraction(VTKViewer_ExtractUnstructuredGrid::ePoints);
-
-
-  //Definition of Pickable and Highlitable engines
-  //----------------------------------------------
-
-  myBaseActor = SMESH_DeviceActor::New();
-  myBaseActor->SetUserMatrix(aMatrix);
-  myBaseActor->SetStoreGemetryMapping(true);
-  myBaseActor->GetProperty()->SetOpacity(0.0);
-
-  myPickableActor = myBaseActor;
-  
-  myHighlightProp = vtkProperty::New();
-  myHighlightProp->SetAmbient(1.0);
-  myHighlightProp->SetDiffuse(0.0);
-  myHighlightProp->SetSpecular(0.0);
-  SMESH::GetColor( "SMESH", "selection_object_color", anRGB[0], anRGB[1], anRGB[2], QColor( 255, 255, 255 ) );
-  myHighlightProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
-  myHighlightProp->SetPointSize(aPointSize);
-  myHighlightProp->SetRepresentation(1);
-  myPreselectProp = vtkProperty::New();
-  myPreselectProp->SetAmbient(1.0);
-  myPreselectProp->SetDiffuse(0.0);
-  myPreselectProp->SetSpecular(0.0);
-  SMESH::GetColor( "SMESH", "highlight_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 255, 255 ) );
-  myPreselectProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
-  myPreselectProp->SetPointSize(aPointSize);
-  myPreselectProp->SetRepresentation(1);
-
-  myHighlitableActor = SMESH_DeviceActor::New();
-  myHighlitableActor->SetUserMatrix(aMatrix);
-  myHighlitableActor->PickableOff();
-  myHighlitableActor->SetRepresentation(SMESH_DeviceActor::eWireframe);
-
-  SetShrinkFactor( SMESH::GetFloat( "SMESH:shrink_coeff", 0.75 ) );
-
-  myName = "";
-  myIO = NULL;
-
-  myControlMode = eNone;
-  myControlActor = my2DActor;
-
-  //Definition of myScalarBarActor
-  //------------------------------
-  myLookupTable = vtkLookupTable::New();
-  //Fix for Bug PAL5195 - SMESH764: 
-  //Controls - Aspect Ratio: incorrect colors of the best and worst values
-  myLookupTable->SetHueRange(0.667,0.0);
-
-  myScalarBarActor = vtkScalarBarActor::New();
-  myScalarBarActor->SetVisibility(false);
-  myScalarBarActor->SetLookupTable(myLookupTable);
-
-  mgr = SUIT_Session::session()->resourceMgr();
-  if( !mgr )
-    return;
-
-  //Definition of points numbering pipeline
-  //---------------------------------------
-  myPointsNumDataSet = vtkUnstructuredGrid::New();
-
-  myPtsMaskPoints = vtkMaskPoints::New();
-  myPtsMaskPoints->SetInput(myPointsNumDataSet);
-  myPtsMaskPoints->SetOnRatio(1);
-
-  myPtsSelectVisiblePoints = vtkSelectVisiblePoints::New();
-  myPtsSelectVisiblePoints->SetInput(myPtsMaskPoints->GetOutput());
-  myPtsSelectVisiblePoints->SelectInvisibleOff();
-  myPtsSelectVisiblePoints->SetTolerance(0.1);
-    
-  myPtsLabeledDataMapper = vtkLabeledDataMapper::New();
-  myPtsLabeledDataMapper->SetInput(myPtsSelectVisiblePoints->GetOutput());
-  myPtsLabeledDataMapper->SetLabelFormat("%g");
-  myPtsLabeledDataMapper->SetLabelModeToLabelScalars();
-    
-  vtkTextProperty* aPtsTextProp = vtkTextProperty::New();
-  aPtsTextProp->SetFontFamilyToTimes();
-  static int aPointsFontSize = 10;
-  aPtsTextProp->SetFontSize(aPointsFontSize);
-  aPtsTextProp->SetBold(1);
-  aPtsTextProp->SetItalic(0);
-  aPtsTextProp->SetShadow(0);
-  myPtsLabeledDataMapper->SetLabelTextProperty(aPtsTextProp);
-  aPtsTextProp->Delete();
-  
-  myEntityMode = eAllEntity;
-
-  myIsPointsLabeled = false;
-
-  myPointLabels = vtkActor2D::New();
-  myPointLabels->SetMapper(myPtsLabeledDataMapper);
-  myPointLabels->GetProperty()->SetColor(1,1,1);
-  myPointLabels->SetVisibility(myIsPointsLabeled);
-
-
-  //Definition of cells numbering pipeline
-  //---------------------------------------
-  myCellsNumDataSet = vtkUnstructuredGrid::New();
-
-  myCellCenters = vtkCellCenters::New();
-  myCellCenters->SetInput(myCellsNumDataSet);
-
-  myClsMaskPoints = vtkMaskPoints::New();
-  myClsMaskPoints->SetInput(myCellCenters->GetOutput());
-  myClsMaskPoints->SetOnRatio(1);
-    
-  myClsSelectVisiblePoints = vtkSelectVisiblePoints::New();
-  myClsSelectVisiblePoints->SetInput(myClsMaskPoints->GetOutput());
-  myClsSelectVisiblePoints->SelectInvisibleOff();
-  myClsSelectVisiblePoints->SetTolerance(0.1);
-    
-  myClsLabeledDataMapper = vtkLabeledDataMapper::New();
-  myClsLabeledDataMapper->SetInput(myClsSelectVisiblePoints->GetOutput());
-  myClsLabeledDataMapper->SetLabelFormat("%g");
-  myClsLabeledDataMapper->SetLabelModeToLabelScalars();
-    
-  vtkTextProperty* aClsTextProp = vtkTextProperty::New();
-  aClsTextProp->SetFontFamilyToTimes();
-  static int aCellsFontSize = 12;
-  aClsTextProp->SetFontSize(aCellsFontSize);
-  aClsTextProp->SetBold(1);
-  aClsTextProp->SetItalic(0);
-  aClsTextProp->SetShadow(0);
-  myClsLabeledDataMapper->SetLabelTextProperty(aClsTextProp);
-  aClsTextProp->Delete();
-    
-  myIsCellsLabeled = false;
-
-  myCellsLabels = vtkActor2D::New();
-  myCellsLabels->SetMapper(myClsLabeledDataMapper);
-  myCellsLabels->GetProperty()->SetColor(0,1,0);
-  myCellsLabels->SetVisibility(myIsCellsLabeled);
-
-  // Clipping planes
-  myImplicitBoolean = vtkImplicitBoolean::New();
-  myImplicitBoolean->SetOperationTypeToIntersection();
-}
-
-
-SMESH_ActorDef::~SMESH_ActorDef()
-{
-  if(MYDEBUG) MESSAGE("~SMESH_ActorDef - "<<this);
-
-  myScalarBarActor->Delete();
-  myLookupTable->Delete();
-
-  mySurfaceProp->Delete();
-  myBackSurfaceProp->Delete();
-
-  myEdgeProp->Delete();
-  myHighlightProp->Delete();
-  myPreselectProp->Delete();
-
-  myNodeProp->Delete();
-
-  my1DProp->Delete();
-  my1DActor->Delete();
-
-  my1DExtProp->Delete();
-  my1DExtActor->Delete();
-
-  my2DActor->Delete();
-  my3DActor->Delete();
-
-  myNodeActor->Delete();
-  myBaseActor->Delete();
-
-  myHighlitableActor->Delete();
-
-  //Deleting of pints numbering pipeline
-  //---------------------------------------
-  myPointsNumDataSet->Delete();
-
-  myPtsLabeledDataMapper->RemoveAllInputs();
-  myPtsLabeledDataMapper->Delete();
-
-  myPtsSelectVisiblePoints->UnRegisterAllOutputs();
-  myPtsSelectVisiblePoints->Delete();
-
-  myPtsMaskPoints->UnRegisterAllOutputs();
-  myPtsMaskPoints->Delete();
-
-  myPointLabels->Delete();
-
-
-  //Deleting of cells numbering pipeline
-  //---------------------------------------
-  myCellsNumDataSet->Delete();
-
-  myClsLabeledDataMapper->RemoveAllInputs();
-  myClsLabeledDataMapper->Delete();
-
-  myClsSelectVisiblePoints->UnRegisterAllOutputs();
-  myClsSelectVisiblePoints->Delete();
-
-  myClsMaskPoints->UnRegisterAllOutputs();
-  myClsMaskPoints->Delete();
-
-  myCellCenters->UnRegisterAllOutputs();
-  myCellCenters->Delete();
-
-  myCellsLabels->Delete();
-
-  myImplicitBoolean->Delete();
-
-  myTimeStamp->Delete();
-}
-
-
-void SMESH_ActorDef::SetPointsLabeled( bool theIsPointsLabeled )
-{
-  vtkUnstructuredGrid* aGrid = GetUnstructuredGrid();
-  myIsPointsLabeled = theIsPointsLabeled && aGrid->GetNumberOfPoints();
-
-  if ( myIsPointsLabeled )
-  {
-    myPointsNumDataSet->ShallowCopy(aGrid);
-    vtkDataSet *aDataSet = myPointsNumDataSet;
-    
-    int aNbElem = aDataSet->GetNumberOfPoints();
-    
-    vtkIntArray *anArray = vtkIntArray::New();
-    anArray->SetNumberOfValues( aNbElem );
-    
-    for ( int anId = 0; anId < aNbElem; anId++ )
-    {
-      int aSMDSId = myVisualObj->GetNodeObjId( anId );
-      anArray->SetValue( anId, aSMDSId );
-    }
-    
-    aDataSet->GetPointData()->SetScalars( anArray );
-    anArray->Delete();
-    myPtsMaskPoints->SetInput( aDataSet );
-    myPointLabels->SetVisibility( GetVisibility() );
-  }
-  else
-  {
-    myPointLabels->SetVisibility( false );
-  }
-  SetRepresentation(GetRepresentation());
-  myTimeStamp->Modified();
-}
-
-
-void SMESH_ActorDef::SetCellsLabeled(bool theIsCellsLabeled)
-{
-  vtkUnstructuredGrid* aGrid = GetUnstructuredGrid();
-  myIsCellsLabeled = theIsCellsLabeled && aGrid->GetNumberOfPoints();
-  if(myIsCellsLabeled){
-    myCellsNumDataSet->ShallowCopy(aGrid);
-    vtkDataSet *aDataSet = myCellsNumDataSet;
-    int aNbElem = aDataSet->GetNumberOfCells();
-    vtkIntArray *anArray = vtkIntArray::New();
-    anArray->SetNumberOfValues(aNbElem);
-    for(int anId = 0; anId < aNbElem; anId++){
-      int aSMDSId = myVisualObj->GetElemObjId(anId);
-      anArray->SetValue(anId,aSMDSId);
-    }
-    aDataSet->GetCellData()->SetScalars(anArray);
-    myCellCenters->SetInput(aDataSet);
-    myCellsLabels->SetVisibility(GetVisibility());
-  }else{
-    myCellsLabels->SetVisibility(false);
-  }
-  myTimeStamp->Modified();
-}
-
-
-void 
-SMESH_ActorDef::
-SetControlMode(eControl theMode)
-{
-  SetControlMode(theMode,true);
-}
-
-
-void 
-SMESH_ActorDef::
-SetControlMode(eControl theMode,
-              bool theCheckEntityMode)
-{
-  SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();  
-  if( !mgr )
-    return;
-
-  myControlMode = eNone;
-  theCheckEntityMode &= mgr->booleanValue( "SMESH", "display_entity", false );
-
-  my1DActor->GetMapper()->SetScalarVisibility(false);
-  my2DActor->GetMapper()->SetScalarVisibility(false);
-  my3DActor->GetMapper()->SetScalarVisibility(false);
-  myScalarBarActor->SetVisibility(false);
-
-  bool anIsScalarVisible = theMode > eNone;
-
-  if(anIsScalarVisible){
-    SMESH::Controls::FunctorPtr aFunctor;
-    switch(theMode){
-    case eLength:
-    {
-      SMESH::Controls::Length* aControl = new SMESH::Controls::Length();
-      aControl->SetPrecision( myControlsPrecision );
-      aFunctor.reset( aControl );
-      myControlActor = my1DActor;
-      break;
-    }
-    case eLength2D:
-    {
-      aFunctor.reset(new SMESH::Controls::Length2D());
-      myControlActor = my2DActor;
-      break;
-    }
-    case eFreeBorders:
-      aFunctor.reset(new SMESH::Controls::FreeBorders());
-      myControlActor = my1DActor;
-      break;
-    case eFreeEdges:
-      aFunctor.reset(new SMESH::Controls::FreeEdges());
-      myControlActor = my2DActor;
-      break;
-    case eMultiConnection:
-      aFunctor.reset(new SMESH::Controls::MultiConnection());
-      myControlActor = my1DActor;
-      break;
-    case eMultiConnection2D:
-      aFunctor.reset(new SMESH::Controls::MultiConnection2D());
-      myControlActor = my2DActor;
-      break;
-    case eArea:
-    {
-      SMESH::Controls::Area* aControl = new SMESH::Controls::Area();
-      aControl->SetPrecision( myControlsPrecision );
-      aFunctor.reset( aControl );
-      myControlActor = my2DActor;
-      break;
-    }
-    case eTaper:
-    {
-      SMESH::Controls::Taper* aControl = new SMESH::Controls::Taper();
-      aControl->SetPrecision( myControlsPrecision );
-      aFunctor.reset( aControl );
-      myControlActor = my2DActor;
-      break;
-    }
-    case eAspectRatio:
-    {
-      SMESH::Controls::AspectRatio* aControl = new SMESH::Controls::AspectRatio();
-      aControl->SetPrecision( myControlsPrecision );
-      aFunctor.reset( aControl );
-      myControlActor = my2DActor;
-      break;
-    }
-    case eAspectRatio3D:
-    {
-      SMESH::Controls::AspectRatio3D* aControl = new SMESH::Controls::AspectRatio3D();
-      aControl->SetPrecision( myControlsPrecision );
-      aFunctor.reset( aControl );
-      myControlActor = my3DActor;
-      break;
-    }
-    case eVolume3D:
-    {
-      SMESH::Controls::Volume* aControl = new SMESH::Controls::Volume();
-      aControl->SetPrecision( myControlsPrecision );
-      aFunctor.reset( aControl );
-      myControlActor = my3DActor;
-      break;
-    }
-    case eMinimumAngle:
-    {
-      SMESH::Controls::MinimumAngle* aControl = new SMESH::Controls::MinimumAngle();
-      aControl->SetPrecision( myControlsPrecision );
-      aFunctor.reset( aControl );
-      myControlActor = my2DActor;
-      break;
-    }
-    case eWarping:
-    {
-      SMESH::Controls::Warping* aControl = new SMESH::Controls::Warping();
-      aControl->SetPrecision( myControlsPrecision );
-      aFunctor.reset( aControl );
-      myControlActor = my2DActor;
-      break;
-    }
-    case eSkew:
-    {
-      SMESH::Controls::Skew* aControl = new SMESH::Controls::Skew();
-      aControl->SetPrecision( myControlsPrecision );
-      aFunctor.reset( aControl );
-      myControlActor = my2DActor;
-      break;
-    }
-    default:
-      return;
-    }
-
-    vtkUnstructuredGrid* aGrid = myControlActor->GetUnstructuredGrid();
-    vtkIdType aNbCells = aGrid->GetNumberOfCells();
-    if(aNbCells){
-      myControlMode = theMode;
-      switch(myControlMode){
-      case eFreeEdges:
-      case eFreeBorders:
-       my1DExtActor->SetExtControlMode(aFunctor);
-       break;
-      case eLength2D:
-      case eMultiConnection2D:
-       my1DExtActor->SetExtControlMode(aFunctor,myScalarBarActor,myLookupTable);
-       break;
-      default:
-       myControlActor->SetControlMode(aFunctor,myScalarBarActor,myLookupTable);
-      }
-    }
-
-    if(theCheckEntityMode){
-      if(myControlActor == my1DActor)
-       SetEntityMode(eEdges);
-      else if(myControlActor == my2DActor){
-       switch(myControlMode){
-       case eLength2D:
-       case eFreeEdges:
-       case eMultiConnection2D:
-         //SetEntityMode(eEdges);
-         SetEntityMode(eFaces);
-         break;
-       default:
-         SetEntityMode(eFaces);
-       }
-      }else if(myControlActor == my3DActor)
-       SetEntityMode(eVolumes);
-    }
-
-  }else if(theCheckEntityMode){
-    myEntityMode = eAllEntity;
-  }
-
-  SetRepresentation(GetRepresentation());
-
-  myTimeStamp->Modified();
-  Modified();
-}
-
-
-void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){
-  SALOME_Actor::AddToRender(theRenderer);
-
-  theRenderer->AddActor(myNodeActor);
-  theRenderer->AddActor(myBaseActor);
-
-  theRenderer->AddActor(my3DActor);
-  theRenderer->AddActor(my2DActor);
-
-  theRenderer->AddActor(my1DActor);
-  theRenderer->AddActor(my1DExtActor);
-
-  theRenderer->AddActor(myHighlitableActor);
-
-  theRenderer->AddActor2D(myScalarBarActor);
-
-  myPtsSelectVisiblePoints->SetRenderer(theRenderer);
-  myClsSelectVisiblePoints->SetRenderer(theRenderer);
-
-  theRenderer->AddActor2D(myPointLabels);
-  theRenderer->AddActor2D(myCellsLabels);
-}
-
-void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer){
-  SALOME_Actor::RemoveFromRender(theRenderer);
-
-  theRenderer->RemoveActor(myNodeActor);
-  theRenderer->RemoveActor(myBaseActor);
-
-  theRenderer->RemoveActor(myHighlitableActor);
-
-  theRenderer->RemoveActor(my1DActor);
-  theRenderer->RemoveActor(my1DExtActor);
-
-  theRenderer->RemoveActor(my2DActor);
-  theRenderer->RemoveActor(my3DActor);
-
-  theRenderer->RemoveActor(myScalarBarActor);
-  theRenderer->RemoveActor(myPointLabels);
-  theRenderer->RemoveActor(myCellsLabels);
-}
-
-
-bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj, 
-                         const char* theEntry, 
-                         const char* theName,
-                         int theIsClear)
-{
-  Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject(theEntry,"SMESH",theName);
-  setIO(anIO);
-  setName(theName);
-
-  myVisualObj = theVisualObj;
-  myVisualObj->Update(theIsClear);
-
-  myNodeActor->Init(myVisualObj,myImplicitBoolean);
-  myBaseActor->Init(myVisualObj,myImplicitBoolean);
-  
-  myHighlitableActor->Init(myVisualObj,myImplicitBoolean);
-  
-  my1DActor->Init(myVisualObj,myImplicitBoolean);
-  my1DExtActor->Init(myVisualObj,myImplicitBoolean);
-  
-  my2DActor->Init(myVisualObj,myImplicitBoolean);
-  my3DActor->Init(myVisualObj,myImplicitBoolean);
-  
-  my1DActor->GetMapper()->SetLookupTable(myLookupTable);
-  my1DExtActor->GetMapper()->SetLookupTable(myLookupTable);
-
-  my2DActor->GetMapper()->SetLookupTable(myLookupTable);
-  my3DActor->GetMapper()->SetLookupTable(myLookupTable);
-    
-  float aFactor, aUnits;
-  my2DActor->GetPolygonOffsetParameters(aFactor,aUnits);
-  my2DActor->SetPolygonOffsetParameters(aFactor,aUnits*0.75);
-
-  //SetIsShrunkable(theGrid->GetNumberOfCells() > 10);
-  SetIsShrunkable(true);
-
-  SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
-  if( !mgr )
-    return false;
-
-  int aMode = mgr->integerValue( "SMESH", "display_mode" );
-  SetRepresentation(-1);
-  
-  if(aMode == 0){
-    SetRepresentation(eEdge);
-  }else if(aMode == 1){
-    SetRepresentation(eSurface);
-  }else if(aMode == 2){
-    SetRepresentation(ePoint);
-  }
-  
-  if(aMode == 3){
-    SetShrink();
-  }
-
-  myTimeStamp->Modified();
-  Modified();
-  return true;
-}
-
-
-float* SMESH_ActorDef::GetBounds(){
-  return myNodeActor->GetBounds();
-}
-
-
-vtkDataSet* SMESH_ActorDef::GetInput(){
-  return GetUnstructuredGrid();
-}
-
-
-void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform){
-  myNodeActor->SetTransform(theTransform);
-  myBaseActor->SetTransform(theTransform);
-
-  myHighlitableActor->SetTransform(theTransform);
-
-  my1DActor->SetTransform(theTransform);
-  my1DExtActor->SetTransform(theTransform);
-
-  my2DActor->SetTransform(theTransform);
-  my3DActor->SetTransform(theTransform);
-
-  Modified();
-}
-
-
-void SMESH_ActorDef::SetMapper(vtkMapper* theMapper){
-  vtkLODActor::SetMapper(theMapper);
-}
-
-
-void SMESH_ActorDef::ShallowCopy(vtkProp *prop){
-  SALOME_Actor::ShallowCopy(prop);
-}
-
-
-vtkMapper* SMESH_ActorDef::GetMapper(){
-  return myPickableActor->GetMapper();
-}
-
-
-vtkUnstructuredGrid* SMESH_ActorDef::GetUnstructuredGrid(){ 
-  return myVisualObj->GetUnstructuredGrid();
-}
-
-
-bool SMESH_ActorDef::IsInfinitive(){
-  vtkDataSet *aDataSet = myPickableActor->GetUnstructuredGrid();
-  aDataSet->Update();
-  myIsInfinite = aDataSet->GetNumberOfCells() == 0 ||
-    aDataSet->GetNumberOfCells() == 1 && 
-    aDataSet->GetCell(0)->GetCellType() == VTK_VERTEX;
-  return SALOME_Actor::IsInfinitive();
-}
-
-
-void SMESH_ActorDef::SetIsShrunkable(bool theShrunkable){
-  myIsShrinkable = theShrunkable;
-  Modified();
-}
-
-float SMESH_ActorDef::GetShrinkFactor(){
-  return myBaseActor->GetShrinkFactor();
-}
-
-void SMESH_ActorDef::SetShrinkFactor(float theValue){
-  myBaseActor->SetShrinkFactor(theValue);
-
-  my1DActor->SetShrinkFactor(theValue);
-  my1DExtActor->SetShrinkFactor(theValue);
-
-  my2DActor->SetShrinkFactor(theValue);
-  my3DActor->SetShrinkFactor(theValue);
-
-  Modified();
-}
-
-void SMESH_ActorDef::SetShrink(){
-  if(!myIsShrinkable) return;
-
-  myBaseActor->SetShrink();
-
-  my1DActor->SetShrink();
-  my1DExtActor->SetShrink();
-
-  my2DActor->SetShrink();
-  my3DActor->SetShrink();
-
-  myIsShrunk = true;
-  Modified();
-}
-
-void SMESH_ActorDef::UnShrink(){
-  if(!myIsShrunk) return;
-
-  myBaseActor->UnShrink();
-
-  my1DActor->UnShrink();
-  my1DExtActor->UnShrink();
-
-  my2DActor->UnShrink();
-  my3DActor->UnShrink();
-
-  myIsShrunk = false;
-  Modified();
-}
-
-
-int SMESH_ActorDef::GetNodeObjId(int theVtkID){
-  return myPickableActor->GetNodeObjId(theVtkID);
-}
-
-float* SMESH_ActorDef::GetNodeCoord(int theObjID){
-  return myPickableActor->GetNodeCoord(theObjID);
-}
-
-
-int SMESH_ActorDef::GetElemObjId(int theVtkID){
-  return myPickableActor->GetElemObjId(theVtkID);
-}
-
-vtkCell* SMESH_ActorDef::GetElemCell(int theObjID){
-  return myPickableActor->GetElemCell(theObjID);
-}
-
-
-void SMESH_ActorDef::SetVisibility(int theMode){
-  SetVisibility(theMode,true);
-}
-
-
-void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
-  SALOME_Actor::SetVisibility(theMode);
-
-  myNodeActor->VisibilityOff();
-  myBaseActor->VisibilityOff();
-  
-  my1DActor->VisibilityOff();
-  my1DExtActor->VisibilityOff();
-  
-  my2DActor->VisibilityOff();
-  my3DActor->VisibilityOff();
-  
-  myScalarBarActor->VisibilityOff();
-  myPointLabels->VisibilityOff();
-  myCellsLabels->VisibilityOff();
-  
-  if(GetVisibility()){
-    if(theIsUpdateRepersentation)
-      SetRepresentation(GetRepresentation());
-
-    if(myControlMode != eNone){
-      switch(myControlMode){
-      case eFreeEdges:
-      case eFreeBorders:
-       my1DExtActor->VisibilityOn();
-       break;
-      case eLength2D:
-      case eMultiConnection2D:
-       my1DExtActor->VisibilityOn();
-      default:
-       if(myControlActor->GetUnstructuredGrid()->GetNumberOfCells())
-         myScalarBarActor->VisibilityOn();
-      }
-    }
-
-    if(myRepresentation != ePoint)
-      myPickableActor->VisibilityOn();
-    else {
-      myNodeActor->VisibilityOn();
-    }
-
-    if(myEntityMode & eEdges){
-      my1DActor->VisibilityOn();
-    }
-    
-    if(myEntityMode & eFaces){
-      my2DActor->VisibilityOn();
-    }
-    
-    if(myEntityMode & eVolumes){
-      my3DActor->VisibilityOn();
-    }
-    
-    if(myIsPointsLabeled){ 
-      myPointLabels->VisibilityOn();
-      myNodeActor->VisibilityOn();
-    }
-
-    if(myIsCellsLabeled) 
-      myCellsLabels->VisibilityOn();
-  }
-
-  Modified();
-}
-
-
-void SMESH_ActorDef::SetEntityMode(unsigned int theMode){
-  myEntityState = eAllEntity;
-
-  if(!myVisualObj->GetNbEntities(SMDSAbs_Edge)){
-    myEntityState &= ~eEdges;
-    theMode &= ~eEdges;
-  }
-
-  if(!myVisualObj->GetNbEntities(SMDSAbs_Face)){
-    myEntityState &= ~eFaces;
-    theMode &= ~eFaces;
-  }
-
-  if(!myVisualObj->GetNbEntities(SMDSAbs_Volume)){
-    myEntityState &= ~eVolumes;
-    theMode &= ~eVolumes;
-  }
-
-  if(!theMode){
-    if(myVisualObj->GetNbEntities(SMDSAbs_Edge))
-      theMode |= eEdges;
-
-    if(myVisualObj->GetNbEntities(SMDSAbs_Face))
-      theMode |= eFaces;
-
-    if(myVisualObj->GetNbEntities(SMDSAbs_Volume))
-      theMode |= eVolumes;
-  }
-
-  myBaseActor->myGeomFilter->SetInside(myEntityMode != myEntityState);
-
-  myEntityMode = theMode;
-  VTKViewer_ExtractUnstructuredGrid* aFilter = NULL;
-  aFilter = myBaseActor->GetExtractUnstructuredGrid();
-  aFilter->ClearRegisteredCellsWithType();
-  aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
-  
-  if(myEntityMode & eEdges){
-    if (MYDEBUG) MESSAGE("EDGES");
-    aFilter->RegisterCellsWithType(VTK_LINE);
-  }
-
-  if(myEntityMode & eFaces){
-    if (MYDEBUG) MESSAGE("FACES");
-    aFilter->RegisterCellsWithType(VTK_TRIANGLE);
-    aFilter->RegisterCellsWithType(VTK_POLYGON);
-    aFilter->RegisterCellsWithType(VTK_QUAD);
-  }
-
-  if(myEntityMode & eVolumes){
-    if (MYDEBUG) MESSAGE("VOLUMES");
-    aFilter->RegisterCellsWithType(VTK_TETRA);
-    aFilter->RegisterCellsWithType(VTK_VOXEL);
-    aFilter->RegisterCellsWithType(VTK_HEXAHEDRON);
-    aFilter->RegisterCellsWithType(VTK_WEDGE);
-    aFilter->RegisterCellsWithType(VTK_PYRAMID);
-    aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
-  }
-  aFilter->Update();
-  if (MYDEBUG) MESSAGE(aFilter->GetOutput()->GetNumberOfCells());
-  SetVisibility(GetVisibility(),false);
-}
-
-void SMESH_ActorDef::SetRepresentation(int theMode){ 
-  int aNbEdges = myVisualObj->GetNbEntities(SMDSAbs_Edge);
-  int aNbFaces = myVisualObj->GetNbEntities(SMDSAbs_Face);
-  int aNbVolumes = myVisualObj->GetNbEntities(SMDSAbs_Volume);
-  if(theMode < 0){
-    myRepresentation = eSurface;
-    if(!aNbFaces && !aNbVolumes && aNbEdges){
-      myRepresentation = eEdge;
-    }else if(!aNbFaces && !aNbVolumes && !aNbEdges){
-      myRepresentation = ePoint;
-    }
-  }else{
-    switch(theMode){
-    case eEdge:
-      if(!aNbFaces && !aNbVolumes && !aNbEdges) return;
-      break;
-    case eSurface:
-      if(!aNbFaces && !aNbVolumes) return;
-      break;
-    }    
-    myRepresentation = theMode;
-  }
-
-  if(!GetUnstructuredGrid()->GetNumberOfCells())
-    myRepresentation = ePoint;
-
-  if(myIsShrunk){
-    if(myRepresentation == ePoint){
-      UnShrink();
-      myIsShrunk = true;
-    }else{
-      SetShrink();
-    }      
-  }
-
-  myPickableActor = myBaseActor;
-  myNodeActor->SetVisibility(false);
-  vtkProperty *aProp = NULL, *aBackProp = NULL;
-  SMESH_DeviceActor::EReperesent aReperesent = SMESH_DeviceActor::EReperesent(-1);
-  switch(myRepresentation){
-  case ePoint:
-    myPickableActor = myNodeActor;
-    myNodeActor->SetVisibility(true);
-    
-    aProp = aBackProp = myNodeProp;
-    aReperesent = SMESH_DeviceActor::ePoint;
-    break;
-  case eEdge:
-    aProp = aBackProp = myEdgeProp;
-    aReperesent = SMESH_DeviceActor::eInsideframe;
-    break;
-  case eSurface:
-    aProp = mySurfaceProp;
-    aBackProp = myBackSurfaceProp;
-    aReperesent = SMESH_DeviceActor::eSurface;
-    break;
-  }    
-
-  my2DActor->SetProperty(aProp);
-  my2DActor->SetBackfaceProperty(aBackProp);
-  my2DActor->SetRepresentation(aReperesent);
-  
-  my3DActor->SetProperty(aProp);
-  my3DActor->SetBackfaceProperty(aBackProp);
-  my3DActor->SetRepresentation(aReperesent);
-
-  my1DExtActor->SetVisibility(false);
-
-  switch(myControlMode){
-  case eLength:
-  case eMultiConnection:
-    aProp = aBackProp = my1DProp;
-    if(myRepresentation != ePoint)
-      aReperesent = SMESH_DeviceActor::eInsideframe;
-    break;
-  }
-  
-  my1DActor->SetProperty(aProp);
-  my1DActor->SetBackfaceProperty(aBackProp);
-  my1DActor->SetRepresentation(aReperesent);
-
-  my1DExtActor->SetRepresentation(aReperesent);
-  
-  if(myIsPointsVisible)
-    myPickableActor = myNodeActor;
-  if(GetPointRepresentation())
-    myNodeActor->SetVisibility(true);
-
-  SetMapper(myPickableActor->GetMapper());
-
-  SetVisibility(GetVisibility(),false);
-
-  Modified();
-}
-
-
-void SMESH_ActorDef::SetPointRepresentation(bool theIsPointsVisible){
-  myIsPointsVisible = theIsPointsVisible;
-  SetRepresentation(GetRepresentation());
-}
-
-bool SMESH_ActorDef::GetPointRepresentation(){ 
-  return myIsPointsVisible || myIsPointsLabeled;
-}
-
-
-void SMESH_ActorDef::UpdateHighlight(){
-  myHighlitableActor->SetVisibility(false);
-  myHighlitableActor->SetHighlited(false);
-
-  if(myIsHighlighted){
-    myHighlitableActor->SetProperty(myHighlightProp);
-  }else if(myIsPreselected){
-    myHighlitableActor->SetProperty(myPreselectProp);
-  }
-
-  bool anIsVisible = GetVisibility();
-
-  if(myIsHighlighted || myIsPreselected){
-    if(GetUnstructuredGrid()->GetNumberOfCells()){
-      myHighlitableActor->SetHighlited(anIsVisible);
-      myHighlitableActor->SetVisibility(anIsVisible);
-      myHighlitableActor->GetExtractUnstructuredGrid()->
-       SetModeOfExtraction(VTKViewer_ExtractUnstructuredGrid::eCells);
-      myHighlitableActor->SetRepresentation(SMESH_DeviceActor::eWireframe);
-    }else if(myRepresentation == ePoint || GetPointRepresentation()){
-      myHighlitableActor->SetHighlited(anIsVisible);
-      myHighlitableActor->SetVisibility(anIsVisible);
-      myHighlitableActor->GetExtractUnstructuredGrid()->
-       SetModeOfExtraction(VTKViewer_ExtractUnstructuredGrid::ePoints);
-      myHighlitableActor->SetRepresentation(SMESH_DeviceActor::ePoint);
-    }
-  }
-}
-
-
-void SMESH_ActorDef::highlight(bool theHighlight){
-  myIsHighlighted = theHighlight;
-  UpdateHighlight();
-}
-
-
-void SMESH_ActorDef::SetPreSelected(bool thePreselect){ 
-  myIsPreselected = thePreselect; 
-  UpdateHighlight();
-}
-
-
-// From vtkFollower
-int SMESH_ActorDef::RenderOpaqueGeometry(vtkViewport *vp)
-{
-  if (myPickableActor->GetIsOpaque())
-    {
-    vtkRenderer *ren = static_cast<vtkRenderer *>(vp);
-    this->Render(ren);
-    return 1;
-    }
-  return 0;
-}
-
-
-int SMESH_ActorDef::RenderTranslucentGeometry(vtkViewport *vp)
-{
-  if (!myPickableActor->GetIsOpaque())
-    {
-    vtkRenderer *ren = static_cast<vtkRenderer *>(vp);
-    this->Render(ren);
-    return 1;
-    }
-  return 0;
-}
-
-
-void SMESH_ActorDef::Render(vtkRenderer *ren){
-  unsigned long aTime = myTimeStamp->GetMTime();
-  unsigned long anObjTime = myVisualObj->GetUnstructuredGrid()->GetMTime();
-  unsigned long aClippingTime = myImplicitBoolean->GetMTime();
-  if(anObjTime > aTime || aClippingTime > aTime)
-    Update();
-}
-
-
-void SMESH_ActorDef::Update(){
-  if(MYDEBUG) MESSAGE("SMESH_ActorDef::Update");
-
-  if(GetControlMode() != eNone) {
-    unsigned long aTime = myTimeStamp->GetMTime();
-    unsigned long anObjTime = myVisualObj->GetUnstructuredGrid()->GetMTime();
-    if (anObjTime > aTime)
-      SetControlMode(GetControlMode(),false);
-  }
-  if(myIsPointsLabeled){
-    SetPointsLabeled(myIsPointsLabeled);
-  }
-  if(myIsCellsLabeled){
-    SetCellsLabeled(myIsCellsLabeled);
-  }
-  SetEntityMode(GetEntityMode());
-  SetVisibility(GetVisibility());
-  
-  myTimeStamp->Modified();
-  Modified();
-}
-
-
-void SMESH_ActorDef::ReleaseGraphicsResources(vtkWindow *renWin){
-  SALOME_Actor::ReleaseGraphicsResources(renWin);
-
-  myPickableActor->ReleaseGraphicsResources(renWin);
-}
-
-
-static void GetColor(vtkProperty *theProperty, float& r,float& g,float& b){
-  float* aColor = theProperty->GetColor();
-  r = aColor[0];
-  g = aColor[1];
-  b = aColor[2];
-}
-
-
-void SMESH_ActorDef::SetOpacity(float theValue){
-  mySurfaceProp->SetOpacity(theValue);
-  myBackSurfaceProp->SetOpacity(theValue);
-  myEdgeProp->SetOpacity(theValue);
-  myNodeProp->SetOpacity(theValue);
-
-  my1DProp->SetOpacity(theValue);
-}
-
-
-float SMESH_ActorDef::GetOpacity(){
-  return mySurfaceProp->GetOpacity();
-}
-
-
-void SMESH_ActorDef::SetSufaceColor(float r,float g,float b){
-  mySurfaceProp->SetColor(r,g,b);
-  Modified();
-}
-
-void SMESH_ActorDef::GetSufaceColor(float& r,float& g,float& b){
-  ::GetColor(mySurfaceProp,r,g,b);
-}
-
-void SMESH_ActorDef::SetBackSufaceColor(float r,float g,float b){
-  myBackSurfaceProp->SetColor(r,g,b);
-  Modified();
-}
-
-void SMESH_ActorDef::GetBackSufaceColor(float& r,float& g,float& b){
-  ::GetColor(myBackSurfaceProp,r,g,b);
-}
-
-void SMESH_ActorDef::SetEdgeColor(float r,float g,float b){
-  myEdgeProp->SetColor(r,g,b);
-  my1DProp->SetColor(r,g,b);
-  my1DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
-  Modified();
-}
-
-void SMESH_ActorDef::GetEdgeColor(float& r,float& g,float& b){
-  ::GetColor(myEdgeProp,r,g,b);
-}
-
-void SMESH_ActorDef::SetNodeColor(float r,float g,float b){ 
-  myNodeProp->SetColor(r,g,b);
-  Modified();
-}
-
-void SMESH_ActorDef::GetNodeColor(float& r,float& g,float& b){ 
-  ::GetColor(myNodeProp,r,g,b);
-}
-
-void SMESH_ActorDef::SetHighlightColor(float r,float g,float b){ 
-  myHighlightProp->SetColor(r,g,b);
-  Modified();
-}
-
-void SMESH_ActorDef::GetHighlightColor(float& r,float& g,float& b){ 
-  ::GetColor(myHighlightProp,r,g,b);
-}
-
-void SMESH_ActorDef::SetPreHighlightColor(float r,float g,float b){ 
-  myPreselectProp->SetColor(r,g,b);
-  Modified();
-}
-
-void SMESH_ActorDef::GetPreHighlightColor(float& r,float& g,float& b){ 
-  ::GetColor(myPreselectProp,r,g,b);
-}
-
-
-float SMESH_ActorDef::GetLineWidth(){
-  return myEdgeProp->GetLineWidth();
-}
-
-
-void SMESH_ActorDef::SetLineWidth(float theVal){
-  myEdgeProp->SetLineWidth(theVal);
-
-  my1DProp->SetLineWidth(theVal + aLineWidthInc);
-  my1DExtProp->SetLineWidth(theVal + aLineWidthInc);
-
-  Modified();
-}
-
-
-void SMESH_ActorDef::SetNodeSize(float theVal){
-  myNodeProp->SetPointSize(theVal);
-  myHighlightProp->SetPointSize(theVal);
-  myPreselectProp->SetPointSize(theVal);
-
-  my1DProp->SetPointSize(theVal + aPointSizeInc);
-  my1DExtProp->SetPointSize(theVal + aPointSizeInc);
-
-  Modified();
-}
-
-float SMESH_ActorDef::GetNodeSize(){
-  return myNodeProp->GetPointSize();
-}
-
-int SMESH_ActorDef::GetObjDimension( const int theObjId )
-{
-  return myVisualObj->GetElemDimension( theObjId );
-}
-
-bool
-SMESH_ActorDef::
-IsImplicitFunctionUsed() const
-{
-  return myBaseActor->IsImplicitFunctionUsed();
-}
-
-void
-SMESH_ActorDef::
-SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
-{
-  myNodeActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
-  myBaseActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
-  
-  myHighlitableActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
-  
-  my1DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
-  my1DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
-  
-  my2DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
-  my3DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
-}
-
-vtkIdType 
-SMESH_ActorDef::
-AddClippingPlane(vtkPlane* thePlane)
-{
-  if(thePlane){
-    myImplicitBoolean->GetFunction()->AddItem(thePlane);
-    myCippingPlaneCont.push_back(thePlane);
-    if(!IsImplicitFunctionUsed())
-      SetImplicitFunctionUsed(true);
-  }
-  return myCippingPlaneCont.size();
-}
-
-void
-SMESH_ActorDef::
-RemoveAllClippingPlanes()
-{
-  myImplicitBoolean->GetFunction()->RemoveAllItems();
-  myImplicitBoolean->GetFunction()->Modified(); // VTK bug
-  myCippingPlaneCont.clear();
-  SetImplicitFunctionUsed(false);
-}
-
-vtkIdType
-SMESH_ActorDef::
-GetNumberOfClippingPlanes()
-{
-  return myCippingPlaneCont.size();
-}
-
-vtkPlane* 
-SMESH_ActorDef::
-GetClippingPlane(vtkIdType theID)
-{
-  if(theID >= myCippingPlaneCont.size())
-    return NULL;
-  return myCippingPlaneCont[theID].Get();
-}
-
-
-static void ComputeBoundsParam(vtkDataSet* theDataSet,
-                              float theDirection[3], float theMinPnt[3],
-                              float& theMaxBoundPrj, float& theMinBoundPrj)
-{
-  float aBounds[6];
-  theDataSet->GetBounds(aBounds);
-
-  //Enlarge bounds in order to avoid conflicts of precision
-  for(int i = 0; i < 6; i += 2){
-    static double EPS = 1.0E-3;
-    float aDelta = (aBounds[i+1] - aBounds[i])*EPS;
-    aBounds[i] -= aDelta;
-    aBounds[i+1] += aDelta;
-  }
-
-  float aBoundPoints[8][3] = { {aBounds[0],aBounds[2],aBounds[4]},
-                              {aBounds[1],aBounds[2],aBounds[4]},
-                              {aBounds[0],aBounds[3],aBounds[4]},
-                              {aBounds[1],aBounds[3],aBounds[4]},
-                              {aBounds[0],aBounds[2],aBounds[5]},
-                              {aBounds[1],aBounds[2],aBounds[5]}, 
-                              {aBounds[0],aBounds[3],aBounds[5]}, 
-                              {aBounds[1],aBounds[3],aBounds[5]}};
-
-  int aMaxId = 0, aMinId = aMaxId;
-  theMaxBoundPrj = vtkMath::Dot(theDirection,aBoundPoints[aMaxId]);
-  theMinBoundPrj = theMaxBoundPrj;
-  for(int i = 1; i < 8; i++){
-    float aTmp = vtkMath::Dot(theDirection,aBoundPoints[i]);
-    if(theMaxBoundPrj < aTmp){
-      theMaxBoundPrj = aTmp;
-      aMaxId = i;
-    }
-    if(theMinBoundPrj > aTmp){
-      theMinBoundPrj = aTmp;
-      aMinId = i;
-    }
-  }
-  float *aMinPnt = aBoundPoints[aMaxId];
-  theMinPnt[0] = aMinPnt[0];
-  theMinPnt[1] = aMinPnt[1];
-  theMinPnt[2] = aMinPnt[2];
-}
-
-
-static void DistanceToPosition(vtkDataSet* theDataSet,
-                              float theDirection[3], float theDist, float thePos[3])
-{
-  float aMaxBoundPrj, aMinBoundPrj, aMinPnt[3];
-  ComputeBoundsParam(theDataSet,theDirection,aMinPnt,aMaxBoundPrj,aMinBoundPrj);
-  float aLength = (aMaxBoundPrj-aMinBoundPrj)*theDist;
-  thePos[0] = aMinPnt[0]-theDirection[0]*aLength;
-  thePos[1] = aMinPnt[1]-theDirection[1]*aLength;
-  thePos[2] = aMinPnt[2]-theDirection[2]*aLength;
-}
-
-
-static void PositionToDistance(vtkDataSet* theDataSet, 
-                              float theDirection[3], float thePos[3], float& theDist)
-{
-  float aMaxBoundPrj, aMinBoundPrj, aMinPnt[3];
-  ComputeBoundsParam(theDataSet,theDirection,aMinPnt,aMaxBoundPrj,aMinBoundPrj);
-  float aPrj = vtkMath::Dot(theDirection,thePos);
-  theDist = (aPrj-aMinBoundPrj)/(aMaxBoundPrj-aMinBoundPrj);
-}
-
-
-void SMESH_ActorDef::SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane)
-{
-  thePlane->SetNormal(theDir);
-  float anOrigin[3];
-  ::DistanceToPosition(GetUnstructuredGrid(),theDir,theDist,anOrigin);
-  thePlane->SetOrigin(anOrigin);
-}
-
-
-void SMESH_ActorDef::GetPlaneParam(float theDir[3], float& theDist, vtkPlane* thePlane)
-{
-  thePlane->GetNormal(theDir);
-
-  float anOrigin[3];
-  thePlane->GetOrigin(anOrigin);
-  ::PositionToDistance(GetUnstructuredGrid(),theDir,anOrigin,theDist);
-}
-
-void SMESH_ActorDef::UpdateScalarBar()
-{
-  SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
-  if( !mgr )
-    return;
-
-  vtkTextProperty* aScalarBarTitleProp = vtkTextProperty::New();
-
-  QColor aTColor = mgr->colorValue( "SMESH", "scalar_bar_title_color", QColor( 255, 255, 255 ) );
-  aScalarBarTitleProp->SetColor( aTColor.red()/255., aTColor.green()/255., aTColor.blue()/255. );
-
-  aScalarBarTitleProp->SetFontFamilyToArial();
-
-  if ( mgr->hasValue( "SMESH", "scalar_bar_title_font" ) )
-  {
-    QFont f = mgr->fontValue( "SMESH", "scalar_bar_title_font" );
-    if ( f.family() == "Arial" )
-      aScalarBarTitleProp->SetFontFamilyToArial();
-    else if ( f.family() == "Courier" )
-      aScalarBarTitleProp->SetFontFamilyToCourier();
-    else if ( f.family() == "Times" )
-      aScalarBarTitleProp->SetFontFamilyToTimes();
-
-    if ( f.bold() )
-      aScalarBarTitleProp->BoldOn();
-    else
-      aScalarBarTitleProp->BoldOff();
-
-    if ( f.italic() )
-      aScalarBarTitleProp->ItalicOn();
-    else
-     aScalarBarTitleProp->ItalicOff();
-
-    if ( f.underline() )
-      aScalarBarTitleProp->ShadowOn();
-    else
-      aScalarBarTitleProp->ShadowOff();
-  }
-
-  myScalarBarActor->SetTitleTextProperty( aScalarBarTitleProp );
-  aScalarBarTitleProp->Delete();
-
-  vtkTextProperty* aScalarBarLabelProp = vtkTextProperty::New();
-
-  aTColor = mgr->colorValue( "SMESH", "scalar_bar_label_color", QColor( 255, 255, 255 ) );
-  aScalarBarLabelProp->SetColor( aTColor.red()/255., aTColor.green()/255., aTColor.blue()/255. );
-
-  aScalarBarLabelProp->SetFontFamilyToArial();
-  if( mgr->hasValue( "SMESH", "scalar_bar_label_font" ) )
-  {
-    QFont f = mgr->stringValue( "SMESH", "scalar_bar_label_font" );
-    if( f.family() == "Arial" )
-      aScalarBarLabelProp->SetFontFamilyToArial();
-    else if( f.family() == "Courier" )
-      aScalarBarLabelProp->SetFontFamilyToCourier();
-    else if( f.family() == "Times" )
-      aScalarBarLabelProp->SetFontFamilyToTimes();
-
-    if ( f.bold() )
-      aScalarBarLabelProp->BoldOn();
-    else
-      aScalarBarLabelProp->BoldOff();
-
-    if ( f.italic() )
-      aScalarBarLabelProp->ItalicOn();
-    else
-      aScalarBarLabelProp->ItalicOff();
-
-    if( f.underline() )
-      aScalarBarLabelProp->ShadowOn();
-    else
-      aScalarBarLabelProp->ShadowOff();
-  }
-
-  myScalarBarActor->SetLabelTextProperty( aScalarBarLabelProp );
-  aScalarBarLabelProp->Delete();
-
-  bool horiz = ( mgr->integerValue( "SMESH", "scalar_bar_orientation" ) == 1 );
-  QString name = QString( "scalar_bar_%1_" ).arg( horiz ? "horizontal" : "vertical" );
-  if( horiz )
-    myScalarBarActor->SetOrientationToHorizontal();
-  else
-    myScalarBarActor->SetOrientationToVertical();
-
-
-  float aXVal = horiz ? 0.20 : 0.01;
-  if( mgr->hasValue( "SMESH", name + "x" ) )
-    aXVal = mgr->doubleValue( "SMESH", name + "x", aXVal );
-
-  float aYVal = horiz ? 0.01 : 0.1;
-  if( mgr->hasValue( "SMESH", name + "y" ) )
-    aYVal = mgr->doubleValue( "SMESH", name + "y", aYVal );
-  myScalarBarActor->SetPosition( aXVal, aYVal );
-
-  float aWVal = horiz ? 0.60 : 0.10;
-  if( mgr->hasValue( "SMESH", name + "width" ) )
-    aWVal = mgr->doubleValue( "SMESH", name + "width", aWVal );
-  myScalarBarActor->SetWidth( aWVal );
-
-  float aHVal = horiz ? 0.12 : 0.80;
-  if( mgr->hasValue( "SMESH", name + "height" ) )
-    aHVal = mgr->doubleValue( "SMESH", name + "height", aHVal );
-  myScalarBarActor->SetHeight( aHVal );
-
-  int anIntVal = 5;
-  if( mgr->hasValue( "SMESH", "scalar_bar_num_labels" ) )
-    anIntVal = mgr->integerValue( "SMESH", "scalar_bar_num_labels", anIntVal );
-  myScalarBarActor->SetNumberOfLabels( anIntVal == 0 ? 5: anIntVal );
-
-  anIntVal = 64;
-  if( mgr->hasValue( "SMESH", "scalar_bar_num_colors" ) )
-    anIntVal = mgr->integerValue( "SMESH", "scalar_bar_num_colors", anIntVal );
-  myScalarBarActor->SetMaximumNumberOfColors( anIntVal == 0 ? 64 : anIntVal );
-  
-}
diff --git a/src/OBJECT/SMESH_Actor.h b/src/OBJECT/SMESH_Actor.h
deleted file mode 100644 (file)
index 7319914..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-//  SMESH OBJECT : interactive object for SMESH visualization
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Actor.h
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#ifndef SMESH_ACTOR_H
-#define SMESH_ACTOR_H
-
-#include <SALOME_Actor.h>
-#include "SMESH_Object.h"
-
-class vtkUnstructuredGrid;
-
-class vtkScalarBarActor;
-
-class vtkPlane;
-class vtkImplicitBoolean;
-
-class SMESH_Actor: public SALOME_Actor
-{
-  static SMESH_Actor* New() { return NULL;}
-
- public:
-  vtkTypeMacro(SMESH_Actor,SALOME_Actor);
-  static SMESH_Actor* New(TVisualObjPtr theVisualObj, 
-                         const char* theEntry, 
-                         const char* theName,
-                         int theIsClear);
-  
-  virtual void SetSufaceColor(float r,float g,float b) = 0;
-  virtual void GetSufaceColor(float& r,float& g,float& b) = 0;
-  
-  virtual void SetBackSufaceColor(float r,float g,float b) = 0;
-  virtual void GetBackSufaceColor(float& r,float& g,float& b) = 0;
-  
-  virtual void SetEdgeColor(float r,float g,float b) = 0;
-  virtual void GetEdgeColor(float& r,float& g,float& b) = 0;
-
-  virtual void SetNodeColor(float r,float g,float b) = 0;
-  virtual void GetNodeColor(float& r,float& g,float& b) = 0;
-
-  virtual void SetHighlightColor(float r,float g,float b) = 0;
-  virtual void GetHighlightColor(float& r,float& g,float& b) = 0;
-
-  virtual void SetPreHighlightColor(float r,float g,float b) = 0;
-  virtual void GetPreHighlightColor(float& r,float& g,float& b) = 0;
-  virtual float GetLineWidth() = 0;
-  virtual void SetLineWidth(float theVal) = 0;
-
-  virtual void SetNodeSize(float size) = 0;
-  virtual float GetNodeSize() = 0;
-
-  enum EReperesent { ePoint, eEdge, eSurface};
-  
-  enum EEntityMode { eEdges = 0x01, eFaces = 0x02, eVolumes = 0x04, eAllEntity = 0x07};
-  virtual void SetEntityMode(unsigned int theMode) = 0;
-  virtual unsigned int GetEntityMode() const = 0;
-
-  virtual void SetPointRepresentation(bool theIsPointsVisible) = 0;
-  virtual bool GetPointRepresentation() = 0;
-
-  virtual vtkUnstructuredGrid* GetUnstructuredGrid() = 0;
-
-  virtual void SetShrinkFactor(float theValue) = 0;
-
-  virtual void SetPointsLabeled(bool theIsPointsLabeled) = 0;
-  virtual bool GetPointsLabeled() = 0;
-
-  virtual void SetCellsLabeled(bool theIsCellsLabeled) = 0;
-  virtual bool GetCellsLabeled() = 0;
-
-  enum eControl{eNone, eLength, eLength2D, eFreeBorders, eFreeEdges, eMultiConnection, 
-               eArea, eTaper, eAspectRatio, eMinimumAngle, eWarping, eSkew,
-               eAspectRatio3D, eMultiConnection2D, eVolume3D};
-  virtual void SetControlMode(eControl theMode) = 0;
-  virtual eControl GetControlMode() = 0;
-
-  virtual vtkScalarBarActor* GetScalarBarActor() = 0;
-
-  virtual void SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane) = 0;
-  virtual void GetPlaneParam(float theDir[3], float& theDist, vtkPlane* thePlane) = 0;
-
-  virtual void RemoveAllClippingPlanes() = 0; 
-  virtual vtkIdType GetNumberOfClippingPlanes() = 0; 
-  virtual vtkPlane* GetClippingPlane(vtkIdType theID) = 0; 
-  virtual vtkIdType AddClippingPlane(vtkPlane* thePlane) = 0; 
-
-  virtual TVisualObjPtr GetObject() = 0;
-
-  virtual void SetControlsPrecision( const long ) = 0;
-  virtual long GetControlsPrecision() const = 0;
-
-  virtual void UpdateScalarBar() = 0;
-};
-
-
-#endif //SMESH_ACTOR_H
diff --git a/src/OBJECT/SMESH_ActorDef.h b/src/OBJECT/SMESH_ActorDef.h
deleted file mode 100644 (file)
index 7ed5149..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-//  SMESH OBJECT : interactive object for SMESH visualization
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_ActorDef.h
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#ifndef SMESH_ACTORDEF_H
-#define SMESH_ACTORDEF_H
-
-#include "SMESH_Actor.h"
-#include "SMESH_Object.h"
-
-#include <vtkSmartPointer.h>
-
-template <class T>
-class TVTKSmartPtr: public vtkSmartPointer<T>
-{
-public:
-  TVTKSmartPtr() {}
-  TVTKSmartPtr(T* r, bool theIsOwner = false): vtkSmartPointer<T>(r) { 
-    if(r && theIsOwner) 
-      r->Delete();
-  }
-  TVTKSmartPtr& operator()(T* r, bool theIsOwner = false){ 
-    vtkSmartPointer<T>::operator=(r); 
-    if(r && theIsOwner) 
-      r->Delete();
-    return *this;
-  }
-  TVTKSmartPtr& operator=(T* r){ vtkSmartPointer<T>::operator=(r); return *this;}
-  T* Get() const { return this->GetPointer();}
-};
-
-
-class vtkProperty;
-class vtkShrinkFilter;
-class vtkPolyDataMapper;
-class vtkUnstructuredGrid;
-class vtkMergeFilter;
-class vtkPolyData;
-
-class vtkMapper;
-class vtkActor2D;
-class vtkMaskPoints;
-class vtkCellCenters;
-class vtkLabeledDataMapper;
-class vtkSelectVisiblePoints;
-
-class vtkScalarBarActor;
-class vtkLookupTable;
-
-class vtkPlane;
-class vtkImplicitBoolean;
-
-class vtkTimeStamp;
-
-class SMESH_DeviceActor;
-
-
-class SMESH_ActorDef : public SMESH_Actor{
-  friend class SMESH_VisualObj;
-  friend class SMESH_Actor;
-
- public:
-  vtkTypeMacro(SMESH_ActorDef,SMESH_Actor);
-  
-  virtual void ReleaseGraphicsResources(vtkWindow *renWin);
-  virtual int RenderOpaqueGeometry(vtkViewport *viewport);
-  virtual int RenderTranslucentGeometry(vtkViewport *viewport);
-  virtual void Render(vtkRenderer *ren);
-
-  virtual void AddToRender(vtkRenderer* theRenderer); 
-  virtual void RemoveFromRender(vtkRenderer* theRenderer);
-
-  virtual bool hasHighlight() { return true; }  
-  virtual void highlight(bool theHighlight);  
-  virtual void SetPreSelected(bool thePreselect = false);
-
-  virtual bool IsInfinitive();  
-
-  virtual void SetOpacity(float theValue);
-  virtual float GetOpacity();
-
-  virtual void SetSufaceColor(float r,float g,float b);
-  virtual void GetSufaceColor(float& r,float& g,float& b);
-
-  virtual void SetBackSufaceColor(float r,float g,float b);
-  virtual void GetBackSufaceColor(float& r,float& g,float& b);
-
-  virtual void SetEdgeColor(float r,float g,float b);
-  virtual void GetEdgeColor(float& r,float& g,float& b);
-
-  virtual void SetNodeColor(float r,float g,float b);
-  virtual void GetNodeColor(float& r,float& g,float& b);
-
-  virtual void SetHighlightColor(float r,float g,float b);
-  virtual void GetHighlightColor(float& r,float& g,float& b);
-
-  virtual void SetPreHighlightColor(float r,float g,float b);
-  virtual void GetPreHighlightColor(float& r,float& g,float& b);
-  virtual float GetLineWidth();
-  virtual void SetLineWidth(float theVal);
-
-  virtual void SetNodeSize(float size) ;
-  virtual float GetNodeSize() ;
-
-  virtual int GetNodeObjId(int theVtkID);
-  virtual float* GetNodeCoord(int theObjID);
-
-  virtual int GetElemObjId(int theVtkID);
-  virtual vtkCell* GetElemCell(int theObjID);
-
-  virtual int GetObjDimension( const int theObjId );
-
-  virtual void SetVisibility(int theMode);
-  void SetVisibility(int theMode, bool theIsUpdateRepersentation);
-
-  virtual void SetRepresentation(int theMode);
-  
-  virtual unsigned int GetEntityMode() const { return myEntityMode;}
-  virtual void SetEntityMode(unsigned int theMode);
-
-  virtual void SetPointRepresentation(bool theIsPointsVisible);
-  virtual bool GetPointRepresentation();
-
-  virtual float* GetBounds();
-  virtual void SetTransform(VTKViewer_Transform* theTransform); 
-
-  virtual vtkUnstructuredGrid* GetUnstructuredGrid();
-  virtual vtkDataSet* GetInput();
-  virtual vtkMapper* GetMapper();
-
-  virtual float GetShrinkFactor();
-  virtual void SetShrinkFactor(float theValue);
-
-  virtual bool IsShrunkable() { return myIsShrinkable;}
-  virtual bool IsShrunk() { return myIsShrunk;}
-  virtual void SetShrink(); 
-  virtual void UnShrink(); 
-
-  virtual void SetPointsLabeled(bool theIsPointsLabeled);
-  virtual bool GetPointsLabeled(){ return myIsPointsLabeled;}
-
-  virtual void SetCellsLabeled(bool theIsCellsLabeled);
-  virtual bool GetCellsLabeled(){ return myIsCellsLabeled;}
-
-  virtual void SetControlMode(eControl theMode);
-  virtual eControl GetControlMode(){ return myControlMode;}
-
-  virtual vtkScalarBarActor* GetScalarBarActor(){ return myScalarBarActor;}
-
-  virtual void SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane);
-  virtual void GetPlaneParam(float theDir[3], float& theDist, vtkPlane* thePlane);
-
-  virtual void RemoveAllClippingPlanes();
-  virtual vtkIdType GetNumberOfClippingPlanes();
-  virtual vtkPlane* GetClippingPlane(vtkIdType theID);
-  virtual vtkIdType AddClippingPlane(vtkPlane* thePlane); 
-
-  virtual TVisualObjPtr GetObject() { return myVisualObj;}
-
-  virtual void SetControlsPrecision( const long p ) { myControlsPrecision = p; }
-  virtual long GetControlsPrecision() const { return myControlsPrecision; }
-
-  virtual void UpdateScalarBar();
-  
- protected:
-  void SetControlMode(eControl theMode, bool theCheckEntityMode);
-  void SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed);
-  bool IsImplicitFunctionUsed() const;
-
-  TVisualObjPtr myVisualObj;
-  vtkTimeStamp* myTimeStamp;
-
-  vtkScalarBarActor* myScalarBarActor;
-  vtkLookupTable* myLookupTable;
-
-  vtkProperty* mySurfaceProp;
-  vtkProperty* myBackSurfaceProp;
-  vtkProperty* myEdgeProp;
-  vtkProperty* myNodeProp;
-
-  SMESH_DeviceActor* myBaseActor;
-  SMESH_DeviceActor* myNodeActor;
-  SMESH_DeviceActor* myPickableActor;
-
-  vtkProperty* myHighlightProp;
-  vtkProperty* myPreselectProp;
-  SMESH_DeviceActor* myHighlitableActor;
-
-  eControl myControlMode;
-  SMESH_DeviceActor* my2DActor;
-  SMESH_DeviceActor* my3DActor;
-  SMESH_DeviceActor* myControlActor;
-
-  vtkProperty* my1DProp;
-  SMESH_DeviceActor* my1DActor;
-  vtkProperty* my1DExtProp;
-  SMESH_DeviceActor* my1DExtActor;
-
-  unsigned int myEntityMode;
-  unsigned int myEntityState;
-  bool myIsPointsVisible;
-
-  bool myIsShrinkable;
-  bool myIsShrunk;
-  
-  bool myIsPointsLabeled;
-  vtkUnstructuredGrid* myPointsNumDataSet;
-  vtkActor2D *myPointLabels;
-  vtkMaskPoints* myPtsMaskPoints;
-  vtkLabeledDataMapper* myPtsLabeledDataMapper;
-  vtkSelectVisiblePoints* myPtsSelectVisiblePoints;
-
-  bool myIsCellsLabeled;
-  vtkUnstructuredGrid* myCellsNumDataSet;
-  vtkActor2D *myCellsLabels;
-  vtkMaskPoints* myClsMaskPoints;
-  vtkCellCenters* myCellCenters;
-  vtkLabeledDataMapper* myClsLabeledDataMapper;
-  vtkSelectVisiblePoints* myClsSelectVisiblePoints;
-
-  vtkImplicitBoolean* myImplicitBoolean;
-  typedef TVTKSmartPtr<vtkPlane> TPlanePtr;
-  typedef std::vector<TPlanePtr> TCippingPlaneCont;
-  TCippingPlaneCont myCippingPlaneCont;
-  long myControlsPrecision;
-
-  SMESH_ActorDef();
-  ~SMESH_ActorDef();
-
-  bool Init(TVisualObjPtr theVisualObj, 
-           const char* theEntry, 
-           const char* theName,
-           int theIsClear);
-
-  void SetIsShrunkable(bool theShrunkable);
-  void UpdateHighlight();
-  void Update();
-
- private:
-  // hide the two parameter Render() method from the user and the compiler.
-  virtual void Render(vtkRenderer *, vtkMapper *) {};
-  virtual void ShallowCopy(vtkProp *prop);
-  virtual void SetMapper(vtkMapper *);
-  static SMESH_ActorDef* New();
-
-  // Not implemented.
-  SMESH_ActorDef(const SMESH_ActorDef&);  
-  void operator=(const SMESH_ActorDef&);
-};
-
-
-#endif //SMESH_ACTORDEF_H
diff --git a/src/OBJECT/SMESH_ActorUtils.cxx b/src/OBJECT/SMESH_ActorUtils.cxx
deleted file mode 100644 (file)
index feee143..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-
-#include "SMESH_ActorUtils.h"
-
-#include "SUIT_Tools.h"
-#include "SUIT_Session.h"
-#include "SUIT_ResourceMgr.h"
-
-#include "utilities.h"
-
-#include <vtkUnstructuredGrid.h>
-#include <vtkUnstructuredGridWriter.h>
-
-#ifdef _DEBUG_
-static int MYDEBUG = 1;
-#else
-static int MYDEBUG = 0;
-#endif
-
-namespace SMESH{
-
-  float GetFloat( const QString& theValue, float theDefault )
-  {
-    int pos = theValue.find( ":" );
-    float val = theDefault;
-    if( pos>=0 ) 
-    {
-      QString name = theValue.right( theValue.length()-pos-1 ),
-              sect = theValue.left( pos );
-      if( !name.isEmpty() && !sect.isEmpty() )
-       val = GetFloat( name, sect, theDefault );
-    }
-    return val;
-  }
-
-  float GetFloat( const QString& theValue, const QString& theSection, float theDefault )
-  {
-    float val = theDefault;
-    SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
-    if( mgr )
-      val = (float) mgr->doubleValue( theValue, theSection, theDefault );
-
-    return val;
-  }
-
-  void WriteUnstructuredGrid(vtkUnstructuredGrid* theGrid, const char* theFileName){
-    vtkUnstructuredGridWriter* aWriter = vtkUnstructuredGridWriter::New();
-    aWriter->SetFileName(theFileName);
-    aWriter->SetInput(theGrid);
-    if(theGrid->GetNumberOfCells()){
-      aWriter->Write();
-    }
-    aWriter->Delete();
-  }
-
-  QColor GetColor( const QString& theSect, const QString& theName, const QColor& def )
-  {
-    QColor c = def;
-    SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
-    if ( mgr )
-      c = mgr->colorValue( theSect, theName, def );
-    return c;
-  }
-
-  void GetColor( const QString& theSect, const QString& theName, int& r, int& g, int& b, const QColor& def )
-  {
-    QColor c = def;
-    SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
-    if ( mgr )
-      c = mgr->colorValue( theSect, theName, def );
-
-    SUIT_Tools::rgbSet( SUIT_Tools::rgbSet( c ), r, g, b );
-  }
-
-  void GetColor( const QString& theSect, const QString& theName, float& r, float& g, float& b, const QColor& def )
-  {
-    int ir( 0 ), ig( 0 ), ib( 0 );
-    GetColor( theSect, theName, ir, ig, ib, def );
-    r = ir / 255.;
-    g = ig / 255.;
-    b = ib / 255.;
-  }
-}
diff --git a/src/OBJECT/SMESH_ActorUtils.h b/src/OBJECT/SMESH_ActorUtils.h
deleted file mode 100644 (file)
index f28e8d6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef SMESH_ACTORUTILS_H
-#define SMESH_ACTORUTILS_H
-
-#include <qcolor.h>
-#include <qstring.h>
-
-class vtkUnstructuredGrid;
-
-namespace SMESH{
-  
-  float GetFloat( const QString& theValue, float theDefault = 0 );
-  float GetFloat( const QString& theName, const QString& theSection, float theDefault = 0 );
-
-  QColor GetColor( const QString& theSect, const QString& theName, const QColor&t = QColor() );
-  void   GetColor( const QString& theSect, const QString& theName, int&, int&, int&, const QColor&t = QColor() );
-  void   GetColor( const QString& theSect, const QString& theName, float&, float&, float&, const QColor&t = QColor() );
-
-  void WriteUnstructuredGrid(vtkUnstructuredGrid* theGrid, const char* theFileName);
-
-}
-
-#endif
diff --git a/src/OBJECT/SMESH_DeviceActor.cxx b/src/OBJECT/SMESH_DeviceActor.cxx
deleted file mode 100644 (file)
index 3548aae..0000000
+++ /dev/null
@@ -1,676 +0,0 @@
-//  SMESH OBJECT : interactive object for SMESH visualization
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_DeviceActor.cxx
-//  Author : 
-//  Module : SMESH
-//  $Header$
-
-
-#include "SMESH_DeviceActor.h"
-#include "SMESH_ExtractGeometry.h"
-#include "SMESH_ControlsDef.hxx"
-#include "SMESH_ActorUtils.h"
-
-#include <VTKViewer_Transform.h>
-#include <VTKViewer_TransformFilter.h>
-#include <VTKViewer_PassThroughFilter.h>
-#include <VTKViewer_ExtractUnstructuredGrid.h>
-
-// VTK Includes
-#include <vtkObjectFactory.h>
-#include <vtkShrinkFilter.h>
-#include <vtkShrinkPolyData.h>
-
-#include <vtkProperty.h>
-#include <vtkPolyData.h>
-#include <vtkMergeFilter.h>
-#include <vtkPolyDataMapper.h>
-#include <vtkUnstructuredGrid.h>
-
-#include <vtkScalarBarActor.h>
-#include <vtkLookupTable.h>
-#include <vtkDoubleArray.h>
-#include <vtkCellData.h>
-
-#include <vtkCell.h>
-#include <vtkIdList.h>
-#include <vtkIntArray.h>
-#include <vtkCellArray.h>
-#include <vtkUnsignedCharArray.h>
-
-#include <vtkImplicitBoolean.h>
-
-#include "utilities.h"
-
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
-using namespace std;
-
-
-vtkStandardNewMacro(SMESH_DeviceActor);
-
-
-SMESH_DeviceActor::SMESH_DeviceActor()
-{
-  if(MYDEBUG) MESSAGE("SMESH_DeviceActor - "<<this);
-
-  myIsShrunk = false;
-  myIsShrinkable = false;
-  myRepresentation = eSurface;
-
-  myProperty = vtkProperty::New();
-  myMapper = vtkPolyDataMapper::New();
-
-  vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor,
-                                                                myPolygonOffsetUnits);
-
-  myMapper->UseLookupTableScalarRangeOn();
-  myMapper->SetColorModeToMapScalars();
-
-  myShrinkFilter = vtkShrinkFilter::New();
-
-  myStoreClippingMapping = false;
-
-  myExtractGeometry = SMESH_ExtractGeometry::New();
-  myExtractGeometry->SetReleaseDataFlag(true);
-  myIsImplicitFunctionUsed = false;
-
-  myExtractUnstructuredGrid = VTKViewer_ExtractUnstructuredGrid::New();
-    
-  myMergeFilter = vtkMergeFilter::New();
-
-  myGeomFilter = VTKViewer_GeometryFilter::New();
-
-  myTransformFilter = VTKViewer_TransformFilter::New();
-
-  for(int i = 0; i < 6; i++)
-    myPassFilter.push_back(VTKViewer_PassThroughFilter::New());
-}
-
-
-SMESH_DeviceActor::~SMESH_DeviceActor(){
-  if(MYDEBUG) MESSAGE("~SMESH_DeviceActor - "<<this);
-
-  myProperty->Delete();
-
-  myMapper->Delete();
-
-  myShrinkFilter->Delete();
-
-  myExtractUnstructuredGrid->Delete();
-
-  myMergeFilter->Delete();
-
-  myGeomFilter->Delete();
-
-  myExtractGeometry->Delete();
-
-  myTransformFilter->Delete();
-
-  for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++){
-    myPassFilter[i]->Delete();
-  }
-}
-
-
-void
-SMESH_DeviceActor::
-SetStoreGemetryMapping(bool theStoreMapping)
-{
-  myGeomFilter->SetStoreMapping(theStoreMapping);
-  SetStoreClippingMapping(theStoreMapping);
-}
-
-
-void
-SMESH_DeviceActor::
-SetStoreClippingMapping(bool theStoreMapping)
-{
-  myStoreClippingMapping = theStoreMapping;
-  myExtractGeometry->SetStoreMapping(theStoreMapping && myIsImplicitFunctionUsed);
-  SetStoreIDMapping(theStoreMapping);
-}
-
-
-void
-SMESH_DeviceActor::
-SetStoreIDMapping(bool theStoreMapping)
-{
-  myExtractUnstructuredGrid->SetStoreMapping(theStoreMapping);
-}
-
-
-void SMESH_DeviceActor::Init(TVisualObjPtr theVisualObj, 
-                            vtkImplicitBoolean* theImplicitBoolean)
-{
-  myVisualObj = theVisualObj;
-  myExtractGeometry->SetImplicitFunction(theImplicitBoolean);
-  SetUnstructuredGrid(myVisualObj->GetUnstructuredGrid());
-}
-
-
-void
-SMESH_DeviceActor::
-SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
-{
-  int anId = 0;
-  if(theIsImplicitFunctionUsed)
-    myPassFilter[ anId ]->SetInput( myExtractGeometry->GetOutput() );
-  else
-    myPassFilter[ anId ]->SetInput( myMergeFilter->GetOutput() );
-    
-  myIsImplicitFunctionUsed = theIsImplicitFunctionUsed;
-  SetStoreClippingMapping(myStoreClippingMapping);
-}
-
-
-void SMESH_DeviceActor::SetUnstructuredGrid(vtkUnstructuredGrid* theGrid){
-  if(theGrid){
-    //myIsShrinkable = theGrid->GetNumberOfCells() > 10;
-    myIsShrinkable = true;
-
-    myExtractUnstructuredGrid->SetInput(theGrid);
-
-    myMergeFilter->SetGeometry(myExtractUnstructuredGrid->GetOutput());
-
-    myExtractGeometry->SetInput(myMergeFilter->GetOutput());
-
-    int anId = 0;
-    SetImplicitFunctionUsed(myIsImplicitFunctionUsed);
-    myPassFilter[ anId + 1]->SetInput( myPassFilter[ anId ]->GetOutput() );
-    
-    anId++; // 1
-    myGeomFilter->SetInput( myPassFilter[ anId ]->GetOutput() );
-
-    anId++; // 2
-    myPassFilter[ anId ]->SetInput( myGeomFilter->GetOutput() ); 
-    myPassFilter[ anId + 1 ]->SetInput( myPassFilter[ anId ]->GetOutput() );
-
-    anId++; // 3
-    myTransformFilter->SetInput( myPassFilter[ anId ]->GetPolyDataOutput() );
-    myTransformFilter->SetInput( myPassFilter[ anId ]->GetPolyDataOutput() );
-
-    anId++; // 4
-    myPassFilter[ anId ]->SetInput( myTransformFilter->GetOutput() );
-    myPassFilter[ anId + 1 ]->SetInput( myPassFilter[ anId ]->GetOutput() );
-    myPassFilter[ anId ]->SetInput( myTransformFilter->GetOutput() );
-    myPassFilter[ anId + 1 ]->SetInput( myPassFilter[ anId ]->GetOutput() );
-
-    anId++; // 5
-    myMapper->SetInput( myPassFilter[ anId ]->GetPolyDataOutput() );
-    myMapper->SetInput( myPassFilter[ anId ]->GetPolyDataOutput() );
-
-    vtkLODActor::SetMapper( myMapper );
-    Modified();
-  }
-}
-
-
-VTKViewer_ExtractUnstructuredGrid* SMESH_DeviceActor::GetExtractUnstructuredGrid(){
-  return myExtractUnstructuredGrid;
-}
-
-
-vtkUnstructuredGrid* SMESH_DeviceActor::GetUnstructuredGrid(){
-  myExtractUnstructuredGrid->Update();
-  return myExtractUnstructuredGrid->GetOutput();
-}
-
-
-void SMESH_DeviceActor::SetControlMode(SMESH::Controls::FunctorPtr theFunctor,
-                                      vtkScalarBarActor* theScalarBarActor,
-                                      vtkLookupTable* theLookupTable)
-{
-  bool anIsInitialized = theFunctor;
-  if(anIsInitialized){
-    vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New();
-
-    SetStoreIDMapping(true);
-    myExtractUnstructuredGrid->Update();
-    vtkUnstructuredGrid* aGrid = myExtractUnstructuredGrid->GetOutput();
-
-    aDataSet->ShallowCopy(aGrid);
-    
-    vtkDoubleArray *aScalars = vtkDoubleArray::New();
-    vtkIdType aNbCells = aGrid->GetNumberOfCells();
-    aScalars->SetNumberOfComponents(1);
-    aScalars->SetNumberOfTuples(aNbCells);
-    
-    myVisualObj->UpdateFunctor(theFunctor);
-
-    using namespace SMESH::Controls;
-    if(NumericalFunctor* aNumericalFunctor = dynamic_cast<NumericalFunctor*>(theFunctor.get())){
-      for(vtkIdType i = 0; i < aNbCells; i++){
-       vtkIdType anId = myExtractUnstructuredGrid->GetInputId(i);
-       vtkIdType anObjId = myVisualObj->GetElemObjId(anId);
-       double aValue = aNumericalFunctor->GetValue(anObjId);
-       aScalars->SetValue(i,aValue);
-      }
-    }else if(Predicate* aPredicate = dynamic_cast<Predicate*>(theFunctor.get())){
-      for(vtkIdType i = 0; i < aNbCells; i++){
-       vtkIdType anId = myExtractUnstructuredGrid->GetInputId(i);
-       vtkIdType anObjId = myVisualObj->GetElemObjId(anId);
-       bool aValue = aPredicate->IsSatisfy(anObjId);
-       aScalars->SetValue(i,aValue);
-      }
-    }
-
-    aDataSet->GetCellData()->SetScalars(aScalars);
-    aScalars->Delete();
-       
-    theLookupTable->SetRange(aScalars->GetRange());
-    theLookupTable->Build();
-    
-    myMergeFilter->SetScalars(aDataSet);
-    aDataSet->Delete();
-  }
-  GetMapper()->SetScalarVisibility(anIsInitialized);
-  theScalarBarActor->SetVisibility(anIsInitialized);
-}
-
-void SMESH_DeviceActor::SetExtControlMode(SMESH::Controls::FunctorPtr theFunctor,
-                                         vtkScalarBarActor* theScalarBarActor,
-                                         vtkLookupTable* theLookupTable)
-{
-  bool anIsInitialized = theFunctor;
-  myExtractUnstructuredGrid->ClearRegisteredCells();
-  myExtractUnstructuredGrid->ClearRegisteredCellsWithType();
-  myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::ePassAll);
-  myVisualObj->UpdateFunctor(theFunctor);
-
-  using namespace SMESH::Controls;
-  if (anIsInitialized){
-    if (Length2D* aLength2D = dynamic_cast<Length2D*>(theFunctor.get())){
-      SMESH::Controls::Length2D::TValues aValues;
-
-      aLength2D->GetValues(aValues);
-      vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New();
-      vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
-
-      aDataSet->SetPoints(aGrid->GetPoints());
-      
-      vtkIdType aNbCells = aValues.size();
-      
-      vtkDoubleArray *aScalars = vtkDoubleArray::New();
-      aScalars->SetNumberOfComponents(1);
-      aScalars->SetNumberOfTuples(aNbCells);
-
-      vtkIdType aCellsSize = 3*aNbCells;
-      vtkCellArray* aConnectivity = vtkCellArray::New();
-      aConnectivity->Allocate( aCellsSize, 0 );
-      
-      vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
-      aCellTypesArray->SetNumberOfComponents( 1 );
-      aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() );
-      
-      vtkIdList *anIdList = vtkIdList::New();
-      anIdList->SetNumberOfIds(2);
-      
-      Length2D::TValues::const_iterator anIter = aValues.begin();
-      for(vtkIdType aVtkId = 0; anIter != aValues.end(); anIter++,aVtkId++){
-       const Length2D::Value& aValue = *anIter;
-       int aNode[2] = {
-         myVisualObj->GetNodeVTKId(aValue.myPntId[0]),
-         myVisualObj->GetNodeVTKId(aValue.myPntId[1])
-       };
-       if(aNode[0] >= 0 && aNode[1] >= 0){
-         anIdList->SetId( 0, aNode[0] );
-         anIdList->SetId( 1, aNode[1] );
-         aConnectivity->InsertNextCell( anIdList );
-         aCellTypesArray->InsertNextValue( VTK_LINE );
-         aScalars->SetValue(aVtkId,aValue.myLength);
-       }
-      }
-      
-      vtkIntArray* aCellLocationsArray = vtkIntArray::New();
-      aCellLocationsArray->SetNumberOfComponents( 1 );
-      aCellLocationsArray->SetNumberOfTuples( aNbCells );
-      
-      aConnectivity->InitTraversal();
-      for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ )
-       aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) );
-      
-      aDataSet->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity );
-      SetUnstructuredGrid(aDataSet);
-
-      aDataSet->GetCellData()->SetScalars(aScalars);
-      aScalars->Delete();
-      
-      theLookupTable->SetRange(aScalars->GetRange());
-      theLookupTable->Build();
-      
-      myMergeFilter->SetScalars(aDataSet);
-      aDataSet->Delete();
-    }
-    else if (MultiConnection2D* aMultiConnection2D = dynamic_cast<MultiConnection2D*>(theFunctor.get())){
-      SMESH::Controls::MultiConnection2D::MValues aValues;
-
-      aMultiConnection2D->GetValues(aValues);
-      vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New();
-      vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
-      aDataSet->SetPoints(aGrid->GetPoints());
-      
-      vtkIdType aNbCells = aValues.size();
-      vtkDoubleArray *aScalars = vtkDoubleArray::New();
-      aScalars->SetNumberOfComponents(1);
-      aScalars->SetNumberOfTuples(aNbCells);
-
-      vtkIdType aCellsSize = 3*aNbCells;
-      vtkCellArray* aConnectivity = vtkCellArray::New();
-      aConnectivity->Allocate( aCellsSize, 0 );
-      
-      vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
-      aCellTypesArray->SetNumberOfComponents( 1 );
-      aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() );
-      
-      vtkIdList *anIdList = vtkIdList::New();
-      anIdList->SetNumberOfIds(2);
-      
-      MultiConnection2D::MValues::const_iterator anIter = aValues.begin();
-      for(vtkIdType aVtkId = 0; anIter != aValues.end(); anIter++,aVtkId++){
-       const MultiConnection2D::Value& aValue = (*anIter).first;
-       int aNode[2] = {
-         myVisualObj->GetNodeVTKId(aValue.myPntId[0]),
-         myVisualObj->GetNodeVTKId(aValue.myPntId[1])
-       };
-       if(aNode[0] >= 0 && aNode[1] >= 0){
-         anIdList->SetId( 0, aNode[0] );
-         anIdList->SetId( 1, aNode[1] );
-         aConnectivity->InsertNextCell( anIdList );
-         aCellTypesArray->InsertNextValue( VTK_LINE );
-         aScalars->SetValue(aVtkId,(*anIter).second);
-       }
-      }
-      
-      vtkIntArray* aCellLocationsArray = vtkIntArray::New();
-      aCellLocationsArray->SetNumberOfComponents( 1 );
-      aCellLocationsArray->SetNumberOfTuples( aNbCells );
-      
-      aConnectivity->InitTraversal();
-      for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ )
-       aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) );
-      
-      aDataSet->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity );
-      SetUnstructuredGrid(aDataSet);
-
-      aDataSet->GetCellData()->SetScalars(aScalars);
-      aScalars->Delete();
-      
-      theLookupTable->SetRange(aScalars->GetRange());
-      theLookupTable->Build();
-      
-      myMergeFilter->SetScalars(aDataSet);
-      aDataSet->Delete();
-    }
-  }
-  GetMapper()->SetScalarVisibility(anIsInitialized);
-  theScalarBarActor->SetVisibility(anIsInitialized);
-}
-
-void SMESH_DeviceActor::SetExtControlMode(SMESH::Controls::FunctorPtr theFunctor)
-{
-  myExtractUnstructuredGrid->ClearRegisteredCells();
-  myExtractUnstructuredGrid->ClearRegisteredCellsWithType();
-  myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::ePassAll);
-  myVisualObj->UpdateFunctor(theFunctor);
-
-  using namespace SMESH::Controls;
-  if(FreeBorders* aFreeBorders = dynamic_cast<FreeBorders*>(theFunctor.get())){
-    myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
-    vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
-    vtkIdType aNbCells = aGrid->GetNumberOfCells();
-    for( vtkIdType i = 0; i < aNbCells; i++ ){
-      vtkIdType anObjId = myVisualObj->GetElemObjId(i);
-      if(aFreeBorders->IsSatisfy(anObjId))
-       myExtractUnstructuredGrid->RegisterCell(i);
-    }
-    if(!myExtractUnstructuredGrid->IsCellsRegistered())
-      myExtractUnstructuredGrid->RegisterCell(-1);
-    SetUnstructuredGrid(myVisualObj->GetUnstructuredGrid());
-  }else if(FreeEdges* aFreeEdges = dynamic_cast<FreeEdges*>(theFunctor.get())){
-    SMESH::Controls::FreeEdges::TBorders aBorders;
-    aFreeEdges->GetBoreders(aBorders);
-    vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New();
-    vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
-    aDataSet->SetPoints(aGrid->GetPoints());
-
-    vtkIdType aNbCells = aBorders.size();
-    vtkIdType aCellsSize = 3*aNbCells;
-    vtkCellArray* aConnectivity = vtkCellArray::New();
-    aConnectivity->Allocate( aCellsSize, 0 );
-    
-    vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
-    aCellTypesArray->SetNumberOfComponents( 1 );
-    aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() );
-    
-    vtkIdList *anIdList = vtkIdList::New();
-    anIdList->SetNumberOfIds(2);
-    
-    FreeEdges::TBorders::const_iterator anIter = aBorders.begin();
-    for(; anIter != aBorders.end(); anIter++){
-      const FreeEdges::Border& aBorder = *anIter;
-      int aNode[2] = {
-       myVisualObj->GetNodeVTKId(aBorder.myPntId[0]),
-       myVisualObj->GetNodeVTKId(aBorder.myPntId[1])
-      };
-      //cout<<"aNode = "<<aBorder.myPntId[0]<<"; "<<aBorder.myPntId[1]<<endl;
-      if(aNode[0] >= 0 && aNode[1] >= 0){
-       anIdList->SetId( 0, aNode[0] );
-       anIdList->SetId( 1, aNode[1] );
-       aConnectivity->InsertNextCell( anIdList );
-       aCellTypesArray->InsertNextValue( VTK_LINE );
-      }
-    }
-    
-    vtkIntArray* aCellLocationsArray = vtkIntArray::New();
-    aCellLocationsArray->SetNumberOfComponents( 1 );
-    aCellLocationsArray->SetNumberOfTuples( aNbCells );
-    
-    aConnectivity->InitTraversal();
-    for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ )
-      aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) );
-    
-    aDataSet->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity );
-
-    SetUnstructuredGrid(aDataSet);
-    aDataSet->Delete();
-  }
-}
-
-
-
-
-unsigned long int SMESH_DeviceActor::GetMTime(){
-  unsigned long mTime = this->Superclass::GetMTime();
-  mTime = max(mTime,myExtractGeometry->GetMTime());
-  mTime = max(mTime,myExtractUnstructuredGrid->GetMTime());
-  mTime = max(mTime,myMergeFilter->GetMTime());
-  mTime = max(mTime,myGeomFilter->GetMTime());
-  mTime = max(mTime,myTransformFilter->GetMTime());
-  return mTime;
-}
-
-
-void SMESH_DeviceActor::SetTransform(VTKViewer_Transform* theTransform){
-  myTransformFilter->SetTransform(theTransform);
-}
-
-
-void SMESH_DeviceActor::SetShrink() {
-  if ( !myIsShrinkable ) return;
-  if ( vtkDataSet* aDataSet = myPassFilter[ 0 ]->GetOutput() )
-  {
-    myShrinkFilter->SetInput( aDataSet );
-    myPassFilter[ 1 ]->SetInput( myShrinkFilter->GetOutput() );
-    myIsShrunk = true;
-  }
-}
-
-void SMESH_DeviceActor::UnShrink() {
-  if ( !myIsShrunk ) return;
-  if ( vtkDataSet* aDataSet = myPassFilter[ 0 ]->GetOutput() )
-  {    
-    myPassFilter[ 1 ]->SetInput( aDataSet );
-    myPassFilter[ 1 ]->Modified();
-    myIsShrunk = false;
-    Modified();
-  }
-}
-
-
-void SMESH_DeviceActor::SetRepresentation(EReperesent theMode){
-  switch(theMode){
-  case ePoint:
-    myGeomFilter->SetInside(true);
-    GetProperty()->SetRepresentation(0);
-    break;
-  case eInsideframe:
-    myGeomFilter->SetInside(true);
-    GetProperty()->SetRepresentation(1);
-    break;
-  default :
-    myGeomFilter->SetInside(false);
-    GetProperty()->SetRepresentation(theMode);
-  }
-  myRepresentation = theMode;
-  GetProperty()->Modified();
-  myMapper->Modified();
-  Modified();
-}
-
-
-void SMESH_DeviceActor::SetVisibility(int theMode){
-  if(!myExtractUnstructuredGrid->GetInput() || 
-     GetUnstructuredGrid()->GetNumberOfCells())
-  {
-    vtkLODActor::SetVisibility(theMode);
-  }else{
-    vtkLODActor::SetVisibility(false);
-  }
-}
-
-
-int SMESH_DeviceActor::GetVisibility(){
-  if(!GetUnstructuredGrid()->GetNumberOfCells()){
-    vtkLODActor::SetVisibility(false);
-  }
-  return vtkLODActor::GetVisibility();
-}
-
-
-int SMESH_DeviceActor::GetNodeObjId(int theVtkID){
-  vtkIdType anID = theVtkID;
-
-  if(IsImplicitFunctionUsed())
-    anID = myExtractGeometry->GetNodeObjId(theVtkID);
-
-  vtkIdType aRetID = myVisualObj->GetNodeObjId(anID);
-  if(MYDEBUG) MESSAGE("GetNodeObjId - theVtkID = "<<theVtkID<<"; anID = "<<anID<<"; aRetID = "<<aRetID);
-  return aRetID;
-}
-
-float* SMESH_DeviceActor::GetNodeCoord(int theObjID){
-  vtkDataSet* aDataSet = myMergeFilter->GetOutput();
-  vtkIdType anID = myVisualObj->GetNodeVTKId(theObjID);
-  float* aCoord = aDataSet->GetPoint(anID);
-  if(MYDEBUG) MESSAGE("GetNodeCoord - theObjID = "<<theObjID<<"; anID = "<<anID);
-  return aCoord;
-}
-
-
-int SMESH_DeviceActor::GetElemObjId(int theVtkID){
-  vtkIdType anId = myGeomFilter->GetElemObjId(theVtkID);
-  if(anId < 0) 
-    return -1;
-
-  vtkIdType anId2 = anId;
-  if(IsImplicitFunctionUsed())
-    anId2 = myExtractGeometry->GetElemObjId(anId);
-  if(anId2 < 0) 
-    return -1;
-
-  vtkIdType anId3 = myExtractUnstructuredGrid->GetInputId(anId2);
-  if(anId3 < 0) 
-    return -1;
-
-  vtkIdType aRetID = myVisualObj->GetElemObjId(anId3);
-  if(MYDEBUG) 
-     MESSAGE("GetElemObjId - theVtkID = "<<theVtkID<<"; anId2 = "<<anId2<<"; anId3 = "<<anId3<<"; aRetID = "<<aRetID);
-  return aRetID;
-}
-
-vtkCell* SMESH_DeviceActor::GetElemCell(int theObjID){
-  vtkDataSet* aDataSet = myVisualObj->GetUnstructuredGrid();
-  vtkIdType aGridID = myVisualObj->GetElemVTKId(theObjID);
-  vtkCell* aCell = aDataSet->GetCell(aGridID);
-  if(MYDEBUG) 
-    MESSAGE("GetElemCell - theObjID = "<<theObjID<<"; aGridID = "<<aGridID);
-  return aCell;
-}
-
-
-float SMESH_DeviceActor::GetShrinkFactor(){
-  return myShrinkFilter->GetShrinkFactor();
-}
-
-void SMESH_DeviceActor::SetShrinkFactor(float theValue){
-  theValue = theValue > 0.1? theValue: 0.8;
-  myShrinkFilter->SetShrinkFactor(theValue);
-  Modified();
-}
-
-
-void SMESH_DeviceActor::SetHighlited(bool theIsHighlited){
-  myIsHighlited = theIsHighlited;
-  Modified();
-}
-
-void SMESH_DeviceActor::Render(vtkRenderer *ren, vtkMapper* m){
-  int aResolveCoincidentTopology = vtkMapper::GetResolveCoincidentTopology();
-  float aStoredFactor, aStoredUnit; 
-  vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(aStoredFactor,aStoredUnit);
-
-  vtkMapper::SetResolveCoincidentTopologyToPolygonOffset();
-  float aFactor = myPolygonOffsetFactor, aUnits = myPolygonOffsetUnits;
-  if(myIsHighlited){
-    static float EPS = .01;
-    aUnits *= (1.0-EPS);
-  }
-  vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(aFactor,aUnits);
-  vtkLODActor::Render(ren,m);
-
-  vtkMapper::SetResolveCoincidentTopologyPolygonOffsetParameters(aStoredFactor,aStoredUnit);
-  vtkMapper::SetResolveCoincidentTopology(aResolveCoincidentTopology);
-}
-
-
-void SMESH_DeviceActor::SetPolygonOffsetParameters(float factor, float units){
-  myPolygonOffsetFactor = factor;
-  myPolygonOffsetUnits = units;
-}
-
diff --git a/src/OBJECT/SMESH_DeviceActor.h b/src/OBJECT/SMESH_DeviceActor.h
deleted file mode 100644 (file)
index 88da39f..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-//  SMESH OBJECT : interactive object for SMESH visualization
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_DeviceActor.h
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#ifndef SMESH_DEVICE_ACTOR_H
-#define SMESH_DEVICE_ACTOR_H
-
-#include <VTKViewer_GeometryFilter.h>
-#include "SMESH_Controls.hxx"
-#include "SMESH_Object.h"
-
-#include <vtkLODActor.h>
-#include <vtkSmartPointer.h>
-
-class vtkCell;
-class vtkProperty;
-class vtkMergeFilter;
-class vtkShrinkFilter;
-class vtkPolyDataMapper;
-class vtkUnstructuredGrid;
-class vtkScalarBarActor;
-class vtkLookupTable;
-class vtkImplicitBoolean;
-
-class VTKViewer_Transform;
-class VTKViewer_TransformFilter;
-class VTKViewer_PassThroughFilter;
-class VTKViewer_ExtractUnstructuredGrid;
-
-class SMESH_ExtractGeometry;
-
-
-class SMESH_DeviceActor: public vtkLODActor{
-  friend class SMESH_ActorDef;
-
- public:
-  vtkTypeMacro(SMESH_DeviceActor,vtkLODActor);
-  static SMESH_DeviceActor* New();
-
-  void SetStoreClippingMapping(bool theStoreMapping);
-  void SetStoreGemetryMapping(bool theStoreMapping);
-  void SetStoreIDMapping(bool theStoreMapping);
-
-  virtual int GetNodeObjId(int theVtkID);
-  virtual float* GetNodeCoord(int theObjID);
-
-  virtual int GetElemObjId(int theVtkID);
-  virtual vtkCell* GetElemCell(int theObjID);
-
-  virtual void SetTransform(VTKViewer_Transform* theTransform); 
-  virtual unsigned long int GetMTime();
-
-  float GetShrinkFactor();
-  void  SetShrinkFactor(float value);
-
-  bool IsShrunkable() { return myIsShrinkable;}
-  bool IsShrunk() { return myIsShrunk;}
-  void SetShrink(); 
-  void UnShrink(); 
-
-  enum EReperesent { ePoint, eWireframe, eSurface, eInsideframe};
-  EReperesent GetRepresentation(){ return myRepresentation;}
-  void SetRepresentation(EReperesent theMode);
-
-  virtual void SetVisibility(int theMode);
-  virtual int GetVisibility();
-
-  VTKViewer_ExtractUnstructuredGrid* GetExtractUnstructuredGrid();
-  vtkUnstructuredGrid* GetUnstructuredGrid();
-
-  void SetControlMode(SMESH::Controls::FunctorPtr theFunctor,
-                     vtkScalarBarActor* theScalarBarActor,
-                     vtkLookupTable* theLookupTable);
-  void SetExtControlMode(SMESH::Controls::FunctorPtr theFunctor,
-                        vtkScalarBarActor* theScalarBarActor,
-                        vtkLookupTable* theLookupTable);
-  void SetExtControlMode(SMESH::Controls::FunctorPtr theFunctor);
-
-  bool IsHighlited() { return myIsHighlited;}
-  void SetHighlited(bool theIsHighlited);
-
-  virtual void Render(vtkRenderer *, vtkMapper *);
-
-  void SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed);
-  bool IsImplicitFunctionUsed() const{ return myIsImplicitFunctionUsed;}
-
- protected:
-  void Init(TVisualObjPtr theVisualObj, vtkImplicitBoolean* theImplicitBoolean);
-  void SetUnstructuredGrid(vtkUnstructuredGrid* theGrid);
-
-  vtkPolyDataMapper *myMapper;
-  TVisualObjPtr myVisualObj;
-
-  vtkProperty *myProperty;
-  EReperesent myRepresentation;
-
-  SMESH_ExtractGeometry* myExtractGeometry;
-  bool myIsImplicitFunctionUsed;
-
-  vtkMergeFilter* myMergeFilter;
-  VTKViewer_ExtractUnstructuredGrid* myExtractUnstructuredGrid;
-
-  bool myStoreClippingMapping;
-  VTKViewer_GeometryFilter *myGeomFilter;
-  VTKViewer_TransformFilter *myTransformFilter;
-  std::vector<VTKViewer_PassThroughFilter*> myPassFilter;
-
-  vtkShrinkFilter* myShrinkFilter;
-  bool myIsShrinkable;
-  bool myIsShrunk;
-  
-  bool myIsHighlited;
-
-  float myPolygonOffsetFactor;
-  float myPolygonOffsetUnits;
-
-  void SetPolygonOffsetParameters(float factor, float units);
-  void GetPolygonOffsetParameters(float& factor, float& units){
-    factor = myPolygonOffsetFactor;
-    units = myPolygonOffsetUnits;
-  }
-
-  SMESH_DeviceActor();
-  ~SMESH_DeviceActor();
-  SMESH_DeviceActor(const SMESH_DeviceActor&);
-  void operator=(const SMESH_DeviceActor&);
-
-};
-
-
-#endif //SMESH_DEVICE_ACTOR_H
diff --git a/src/OBJECT/SMESH_ExtractGeometry.cxx b/src/OBJECT/SMESH_ExtractGeometry.cxx
deleted file mode 100644 (file)
index 84812a1..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-
-#include "SMESH_ExtractGeometry.h"
-
-#include "vtkCell.h"
-#include "vtkCellData.h"
-#include "vtkFloatArray.h"
-#include "vtkIdList.h"
-#include "vtkImplicitFunction.h"
-#include "vtkObjectFactory.h"
-#include "vtkPointData.h"
-#include "vtkUnstructuredGrid.h"
-
-using namespace std;
-
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
-#if defined __GNUC__
-  #if __GNUC__ == 2
-    #define __GNUC_2__
-  #endif
-#endif
-
-
-vtkStandardNewMacro(SMESH_ExtractGeometry);
-
-
-SMESH_ExtractGeometry::SMESH_ExtractGeometry()
-{}
-
-
-SMESH_ExtractGeometry::~SMESH_ExtractGeometry(){}
-
-
-vtkIdType SMESH_ExtractGeometry::GetElemObjId(int theVtkID){
-  if(myElemVTK2ObjIds.empty() || theVtkID > myElemVTK2ObjIds.size()) return -1;
-#if defined __GNUC_2__
-  return myElemVTK2ObjIds[theVtkID];
-#else
-  return myElemVTK2ObjIds.at(theVtkID);
-#endif
-}
-
-
-vtkIdType SMESH_ExtractGeometry::GetNodeObjId(int theVtkID){
-  if(myNodeVTK2ObjIds.empty() || theVtkID > myNodeVTK2ObjIds.size()) return -1;
-#if defined __GNUC_2__
-  return myNodeVTK2ObjIds[theVtkID];
-#else
-  return myNodeVTK2ObjIds.at(theVtkID);
-#endif
-}
-
-
-void SMESH_ExtractGeometry::Execute()
-{
-  vtkIdType ptId, numPts, numCells, i, cellId, newCellId, newId, *pointMap;
-  vtkIdList *cellPts;
-  vtkCell *cell;
-  int numCellPts;
-  float *x;
-  float multiplier;
-  vtkPoints *newPts;
-  vtkIdList *newCellPts;
-  vtkDataSet *input = this->GetInput();
-  vtkPointData *pd = input->GetPointData();
-  vtkCellData *cd = input->GetCellData();
-  vtkUnstructuredGrid *output = this->GetOutput();
-  vtkPointData *outputPD = output->GetPointData();
-  vtkCellData *outputCD = output->GetCellData();
-  int npts;
-  numCells = input->GetNumberOfCells();
-  numPts = input->GetNumberOfPoints();
-  
-  vtkDebugMacro(<< "Extracting geometry");
-
-  if ( ! this->ImplicitFunction )
-    {
-    vtkErrorMacro(<<"No implicit function specified");
-    return;
-    }
-
-  newCellPts = vtkIdList::New();
-  newCellPts->Allocate(VTK_CELL_SIZE);
-
-  if ( this->ExtractInside )
-    {
-    multiplier = 1.0;
-    }
-  else 
-    {
-    multiplier = -1.0;
-    }
-
-  // Loop over all points determining whether they are inside the
-  // implicit function. Copy the points and point data if they are.
-  //
-  pointMap = new vtkIdType[numPts]; // maps old point ids into new
-  for (i=0; i < numPts; i++)
-    {
-    pointMap[i] = -1;
-    }
-
-  output->Allocate(numCells/4); //allocate storage for geometry/topology
-  newPts = vtkPoints::New();
-  newPts->Allocate(numPts/4,numPts);
-  outputPD->CopyAllocate(pd);
-  outputCD->CopyAllocate(cd);
-  vtkFloatArray *newScalars = NULL;
-  
-  if(myStoreMapping){
-    myElemVTK2ObjIds.clear();
-    myElemVTK2ObjIds.reserve(numCells);
-    myNodeVTK2ObjIds.clear();
-    myNodeVTK2ObjIds.reserve(numPts);
-  }
-
-  if ( ! this->ExtractBoundaryCells )
-    {
-    for ( ptId=0; ptId < numPts; ptId++ )
-      {
-      x = input->GetPoint(ptId);
-      if ( (this->ImplicitFunction->FunctionValue(x)*multiplier) < 0.0 )
-        {
-        newId = newPts->InsertNextPoint(x);
-        pointMap[ptId] = newId;
-       myNodeVTK2ObjIds.push_back(ptId);
-        outputPD->CopyData(pd,ptId,newId);
-        }
-      }
-    }
-  else
-    {
-    // To extract boundary cells, we have to create supplemental information
-    if ( this->ExtractBoundaryCells )
-      {
-      float val;
-      newScalars = vtkFloatArray::New();
-      newScalars->SetNumberOfValues(numPts);
-
-      for (ptId=0; ptId < numPts; ptId++ )
-        {
-        x = input->GetPoint(ptId);
-        val = this->ImplicitFunction->FunctionValue(x) * multiplier;
-        newScalars->SetValue(ptId, val);
-        if ( val < 0.0 )
-          {
-          newId = newPts->InsertNextPoint(x);
-          pointMap[ptId] = newId;
-         myNodeVTK2ObjIds.push_back(ptId);
-          outputPD->CopyData(pd,ptId,newId);
-          }
-        }
-      }
-    }
-
-  // Now loop over all cells to see whether they are inside implicit
-  // function (or on boundary if ExtractBoundaryCells is on).
-  //
-  for (cellId=0; cellId < numCells; cellId++)
-    {
-    cell = input->GetCell(cellId);
-    cellPts = cell->GetPointIds();
-    numCellPts = cell->GetNumberOfPoints();
-
-    newCellPts->Reset();
-    if ( ! this->ExtractBoundaryCells ) //requires less work
-      {
-      for ( npts=0, i=0; i < numCellPts; i++, npts++)
-        {
-        ptId = cellPts->GetId(i);
-        if ( pointMap[ptId] < 0 )
-          {
-          break; //this cell won't be inserted
-          }
-        else
-          {
-          newCellPts->InsertId(i,pointMap[ptId]);
-          }
-        }
-      } //if don't want to extract boundary cells
-    
-    else //want boundary cells
-      {
-      for ( npts=0, i=0; i < numCellPts; i++ )
-        {
-        ptId = cellPts->GetId(i);
-        if ( newScalars->GetValue(ptId) <= 0.0 )
-          {
-          npts++;
-          }
-        }
-      if ( npts > 0 )
-        {
-        for ( i=0; i < numCellPts; i++ )
-          {
-          ptId = cellPts->GetId(i);
-          if ( pointMap[ptId] < 0 )
-            {
-            x = input->GetPoint(ptId);
-            newId = newPts->InsertNextPoint(x);
-            pointMap[ptId] = newId;
-           myNodeVTK2ObjIds.push_back(ptId);
-            outputPD->CopyData(pd,ptId,newId);
-            }
-          newCellPts->InsertId(i,pointMap[ptId]);
-          }
-        }//a boundary or interior cell
-      }//if mapping boundary cells
-      
-    if ( npts >= numCellPts || (this->ExtractBoundaryCells && npts > 0) )
-      {
-      newCellId = output->InsertNextCell(cell->GetCellType(),newCellPts);
-      myElemVTK2ObjIds.push_back(cellId);
-      outputCD->CopyData(cd,cellId,newCellId);
-      }
-    }//for all cells
-
-  // Update ourselves and release memory
-  //
-  delete [] pointMap;
-  newCellPts->Delete();
-  output->SetPoints(newPts);
-  newPts->Delete();
-  
-  if ( this->ExtractBoundaryCells )
-    {
-    newScalars->Delete();
-    }
-
-  output->Squeeze();
-}
diff --git a/src/OBJECT/SMESH_ExtractGeometry.h b/src/OBJECT/SMESH_ExtractGeometry.h
deleted file mode 100644 (file)
index 7942295..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef SALOME_ExtractGeometry_HeaderFile
-#define SALOME_ExtractGeometry_HeaderFile
-
-#include <vtkExtractGeometry.h>
-#include <vector>
-
-
-class SMESH_ExtractGeometry : public vtkExtractGeometry{
-public:
-  vtkTypeMacro(SMESH_ExtractGeometry,vtkExtractGeometry);
-
-  static SMESH_ExtractGeometry *New();
-
-  void SetStoreMapping(bool theStoreMapping){
-    myStoreMapping = theStoreMapping;
-    Modified();
-  }
-  bool GetStoreMapping(){ return myStoreMapping;}
-
-  virtual vtkIdType GetNodeObjId(int theVtkID);
-  virtual vtkIdType GetElemObjId(int theVtkID);
-
-protected:
-  SMESH_ExtractGeometry();
-  ~SMESH_ExtractGeometry();
-
-  void Execute();
-
-private:
-  bool myStoreMapping;   
-  typedef std::vector<vtkIdType> TVectorId;
-  TVectorId myElemVTK2ObjIds;
-  TVectorId myNodeVTK2ObjIds;
-
-  SMESH_ExtractGeometry(const SMESH_ExtractGeometry&);  // Not implemented.
-  void operator=(const SMESH_ExtractGeometry&);  // Not implemented.
-};
-
-
-#endif
-
-
diff --git a/src/OBJECT/SMESH_Object.cxx b/src/OBJECT/SMESH_Object.cxx
deleted file mode 100644 (file)
index 885ee3d..0000000
+++ /dev/null
@@ -1,1270 +0,0 @@
-//  SMESH OBJECT : interactive object for SMESH visualization
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Grid.cxx
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-
-#include "SMESH_ObjectDef.h"
-#include "SMESH_ActorUtils.h"
-
-#include "SMDS_Mesh.hxx"
-#include "SMESH_Actor.h"
-#include "SMESH_ControlsDef.hxx"
-#include <VTKViewer_ExtractUnstructuredGrid.h>
-
-#include CORBA_SERVER_HEADER(SALOME_Exception)
-
-#include <vtkCell.h>
-#include <vtkIdList.h>
-#include <vtkIntArray.h>
-#include <vtkCellArray.h>
-#include <vtkUnsignedCharArray.h>
-
-#include <vtkUnstructuredGrid.h>
-
-#include <memory>
-#include <sstream>     
-#include <stdexcept>
-#include <set>
-
-#include "utilities.h"
-
-using namespace std;
-
-#ifndef EXCEPTION
-#define EXCEPTION(TYPE, MSG) {\
-  std::ostringstream aStream;\
-  aStream<<__FILE__<<"["<<__LINE__<<"]::"<<MSG;\
-  throw TYPE(aStream.str());\
-}
-#endif
-
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-static int MYDEBUGWITHFILES = 0;
-#else
-static int MYDEBUG = 0;
-static int MYDEBUGWITHFILES = 0;
-#endif
-
-
-namespace{
-
-  inline const SMDS_MeshNode* FindNode(const SMDS_Mesh* theMesh, int theId){
-    if(const SMDS_MeshNode* anElem = theMesh->FindNode(theId)) return anElem;
-    EXCEPTION(runtime_error,"SMDS_Mesh::FindNode - cannot find a SMDS_MeshNode for ID = "<<theId);
-  }
-
-
-  inline const SMDS_MeshElement* FindElement(const SMDS_Mesh* theMesh, int theId){
-    if(const SMDS_MeshElement* anElem = theMesh->FindElement(theId)) return anElem;
-    EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot find a SMDS_MeshElement for ID = "<<theId);
-  }
-
-
-  inline void AddNodesWithID(SMDS_Mesh* theMesh, 
-                            SMESH::log_array_var& theSeq,
-                            CORBA::Long theId)
-  {
-    const SMESH::double_array& aCoords = theSeq[theId].coords;
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
-    if(3*aNbElems != aCoords.length())
-      EXCEPTION(runtime_error,"AddNodesWithID - 3*aNbElems != aCoords.length()");
-    for(CORBA::Long aCoordId = 0; anElemId < aNbElems; anElemId++, aCoordId+=3){
-      SMDS_MeshElement* anElem = theMesh->AddNodeWithID(aCoords[aCoordId],
-                                                       aCoords[aCoordId+1],
-                                                       aCoords[aCoordId+2],
-                                                       anIndexes[anElemId]);
-      if(!anElem)
-       EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddNodeWithID for ID = "<<anElemId);
-    }
-  }
-
-
-  inline void AddEdgesWithID(SMDS_Mesh* theMesh, 
-                            SMESH::log_array_var& theSeq,
-                            CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
-    if(3*aNbElems != anIndexes.length())
-      EXCEPTION(runtime_error,"AddEdgeWithID - 3*aNbElems != aCoords.length()");
-    for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=3){
-      SMDS_MeshElement* anElem = theMesh->AddEdgeWithID(anIndexes[anIndexId+1],
-                                                       anIndexes[anIndexId+2],
-                                                       anIndexes[anIndexId]);
-      if(!anElem)
-       EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddEdgeWithID for ID = "<<anElemId);
-    }
-  }
-
-
-  inline void AddTriasWithID(SMDS_Mesh* theMesh, 
-                            SMESH::log_array_var& theSeq,
-                            CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
-    if(4*aNbElems != anIndexes.length())
-      EXCEPTION(runtime_error,"AddEdgeWithID - 4*aNbElems != anIndexes.length()");
-    for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){
-      SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
-                                                       anIndexes[anIndexId+2],
-                                                       anIndexes[anIndexId+3],
-                                                       anIndexes[anIndexId]);
-      if(!anElem)
-       EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddFaceWithID for ID = "<<anElemId);
-    }
-  }
-
-
-  inline void AddQuadsWithID(SMDS_Mesh* theMesh, 
-                            SMESH::log_array_var theSeq,
-                            CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
-    if(5*aNbElems != anIndexes.length())
-      EXCEPTION(runtime_error,"AddEdgeWithID - 4*aNbElems != anIndexes.length()");
-    for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
-      SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
-                                                       anIndexes[anIndexId+2],
-                                                       anIndexes[anIndexId+3],
-                                                       anIndexes[anIndexId+4],
-                                                       anIndexes[anIndexId]);
-      if(!anElem)
-       EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddFaceWithID for ID = "<<anElemId);
-    }
-  }
-
-
-  inline void AddPolygonsWithID(SMDS_Mesh* theMesh, 
-                                SMESH::log_array_var& theSeq,
-                                CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anIndexId = 0, aNbElems = theSeq[theId].number;
-
-    for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++) {
-      int aFaceId = anIndexes[anIndexId++];
-
-      int aNbNodes = anIndexes[anIndexId++];
-      std::vector<int> nodes_ids (aNbNodes);
-      for (int i = 0; i < aNbNodes; i++) {
-        nodes_ids[i] = anIndexes[anIndexId++];
-      }
-
-      SMDS_MeshElement* anElem = theMesh->AddPolygonalFaceWithID(nodes_ids, aFaceId);
-      if (!anElem)
-       EXCEPTION(runtime_error, "SMDS_Mesh::FindElement - cannot AddPolygonalFaceWithID for ID = "
-                  << anElemId);
-    }
-  }
-
-
-  inline void AddTetrasWithID(SMDS_Mesh* theMesh, 
-                             SMESH::log_array_var& theSeq,
-                             CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
-    if(5*aNbElems != anIndexes.length())
-      EXCEPTION(runtime_error,"AddEdgeWithID - 5*aNbElems != anIndexes.length()");
-    for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
-      SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
-                                                         anIndexes[anIndexId+2],
-                                                         anIndexes[anIndexId+3],
-                                                         anIndexes[anIndexId+4],
-                                                         anIndexes[anIndexId]);
-      if(!anElem)
-       EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<<anElemId);
-    }
-  }
-
-
-  inline void AddPiramidsWithID(SMDS_Mesh* theMesh, 
-                               SMESH::log_array_var& theSeq,
-                               CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
-    if(6*aNbElems != anIndexes.length())
-      EXCEPTION(runtime_error,"AddEdgeWithID - 6*aNbElems != anIndexes.length()");
-    for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=6){
-      SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
-                                                         anIndexes[anIndexId+2],
-                                                         anIndexes[anIndexId+3],
-                                                         anIndexes[anIndexId+4],
-                                                         anIndexes[anIndexId+5],
-                                                         anIndexes[anIndexId]);
-      if(!anElem)
-       EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<<anElemId);
-    }
-  }
-
-
-  inline void AddPrismsWithID(SMDS_Mesh* theMesh, 
-                             SMESH::log_array_var& theSeq,
-                             CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
-    if(7*aNbElems != anIndexes.length())
-      EXCEPTION(runtime_error,"AddEdgeWithID - 7*aNbElems != anIndexes.length()");
-    for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=7){
-      SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
-                                                         anIndexes[anIndexId+2],
-                                                         anIndexes[anIndexId+3],
-                                                         anIndexes[anIndexId+4],
-                                                         anIndexes[anIndexId+5],
-                                                         anIndexes[anIndexId+6],
-                                                         anIndexes[anIndexId]);
-      if(!anElem)
-       EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<<anElemId);
-    }
-  }
-
-
-  inline void AddHexasWithID(SMDS_Mesh* theMesh, 
-                            SMESH::log_array_var& theSeq,
-                            CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
-    if(9*aNbElems != anIndexes.length())
-      EXCEPTION(runtime_error,"AddEdgeWithID - 9*aNbElems != anIndexes.length()");
-    for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=9){
-      SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
-                                                         anIndexes[anIndexId+2],
-                                                         anIndexes[anIndexId+3],
-                                                         anIndexes[anIndexId+4],
-                                                         anIndexes[anIndexId+5],
-                                                         anIndexes[anIndexId+6],
-                                                         anIndexes[anIndexId+7],
-                                                         anIndexes[anIndexId+8],
-                                                         anIndexes[anIndexId]);
-      if(!anElem)
-       EXCEPTION(runtime_error,"SMDS_Mesh::FindElement - cannot AddVolumeWithID for ID = "<<anElemId);
-    }
-  }
-
-
-  inline void AddPolyhedronsWithID (SMDS_Mesh* theMesh, 
-                                    SMESH::log_array_var& theSeq,
-                                    CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long anIndexId = 0, aNbElems = theSeq[theId].number;
-
-    for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++) {
-      int aFaceId = anIndexes[anIndexId++];
-
-      int aNbNodes = anIndexes[anIndexId++];
-      std::vector<int> nodes_ids (aNbNodes);
-      for (int i = 0; i < aNbNodes; i++) {
-        nodes_ids[i] = anIndexes[anIndexId++];
-      }
-
-      int aNbFaces = anIndexes[anIndexId++];
-      std::vector<int> quantities (aNbFaces);
-      for (int i = 0; i < aNbFaces; i++) {
-        quantities[i] = anIndexes[anIndexId++];
-      }
-
-      SMDS_MeshElement* anElem =
-        theMesh->AddPolyhedralVolumeWithID(nodes_ids, quantities, aFaceId);
-      if (!anElem)
-       EXCEPTION(runtime_error, "SMDS_Mesh::FindElement - cannot AddPolyhedralVolumeWithID for ID = "
-                  << anElemId);
-    }
-  }
-
-
-  inline void ChangePolyhedronNodes (SMDS_Mesh* theMesh, 
-                                     SMESH::log_array_var& theSeq,
-                                     CORBA::Long theId)
-  {
-    const SMESH::long_array& anIndexes = theSeq[theId].indexes;
-    CORBA::Long iind = 0, aNbElems = theSeq[theId].number;
-
-    for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++)
-    {
-      // find element
-      const SMDS_MeshElement* elem = FindElement(theMesh, anIndexes[iind++]);
-      // nb nodes
-      int nbNodes = anIndexes[iind++];
-      // nodes
-      std::vector<const SMDS_MeshNode*> aNodes (nbNodes);
-      for (int iNode = 0; iNode < nbNodes; iNode++) {
-        aNodes[iNode] = FindNode(theMesh, anIndexes[iind++]);
-      }
-      // nb faces
-      int nbFaces = anIndexes[iind++];
-      // quantities
-      std::vector<int> quantities (nbFaces);
-      for (int iFace = 0; iFace < nbFaces; iFace++) {
-        quantities[iFace] = anIndexes[iind++];
-      }
-      // change
-      theMesh->ChangePolyhedronNodes(elem, aNodes, quantities);
-    }
-  }
-
-
-}
-/*
-  Class       : SMESH_VisualObjDef
-  Description : Base class for all mesh objects to be visuilised
-*/
-
-//=================================================================================
-// function : getCellType
-// purpose  : Get type of VTK cell
-//=================================================================================
-static inline vtkIdType getCellType( const SMDSAbs_ElementType theType,
-                                    const bool thePoly,
-                                     const int theNbNodes )
-{
-  switch( theType )
-  {
-    case SMDSAbs_Edge: 
-      return theNbNodes == 2 ? VTK_LINE : VTK_EMPTY_CELL;
-
-    case SMDSAbs_Face  :
-      if (thePoly && theNbNodes>2 ) return VTK_POLYGON;
-      else if ( theNbNodes == 3 )   return VTK_TRIANGLE;
-      else if ( theNbNodes == 4 )   return VTK_QUAD;
-      else return VTK_EMPTY_CELL;
-      
-    case SMDSAbs_Volume:
-      if (thePoly && theNbNodes>3 ) return VTK_CONVEX_POINT_SET;
-      else if ( theNbNodes == 4 )   return VTK_TETRA;
-      else if ( theNbNodes == 5 )   return VTK_PYRAMID;
-      else if ( theNbNodes == 6 )   return VTK_WEDGE;
-      else if ( theNbNodes == 8 )   return VTK_HEXAHEDRON;
-      else return VTK_EMPTY_CELL;
-
-    default: return VTK_EMPTY_CELL;
-  }
-}
-
-//=================================================================================
-// functions : SMESH_VisualObjDef
-// purpose   : Constructor
-//=================================================================================
-SMESH_VisualObjDef::SMESH_VisualObjDef()
-{
-  myGrid = vtkUnstructuredGrid::New();
-}
-SMESH_VisualObjDef::~SMESH_VisualObjDef()
-{
-  if ( MYDEBUG )
-    MESSAGE( "~SMESH_MeshObj - myGrid->GetReferenceCount() = " << myGrid->GetReferenceCount() );
-  myGrid->Delete();
-}
-
-//=================================================================================
-// functions : GetNodeObjId, GetNodeVTKId, GetElemObjId, GetElemVTKId
-// purpose   : Methods for retrieving VTK IDs by SMDS IDs and  vice versa
-//=================================================================================
-vtkIdType SMESH_VisualObjDef::GetNodeObjId( int theVTKID )
-{
-  return myVTK2SMDSNodes.find(theVTKID) == myVTK2SMDSNodes.end() ? -1 : myVTK2SMDSNodes[theVTKID];
-}
-
-vtkIdType SMESH_VisualObjDef::GetNodeVTKId( int theObjID )
-{
-  return mySMDS2VTKNodes.find(theObjID) == mySMDS2VTKNodes.end() ? -1 : mySMDS2VTKNodes[theObjID];
-}
-
-vtkIdType SMESH_VisualObjDef::GetElemObjId( int theVTKID )
-{
-  return myVTK2SMDSElems.find(theVTKID) == myVTK2SMDSElems.end() ? -1 : myVTK2SMDSElems[theVTKID];
-}
-
-vtkIdType SMESH_VisualObjDef::GetElemVTKId( int theObjID )
-{
-  return mySMDS2VTKElems.find(theObjID) == mySMDS2VTKElems.end() ? -1 : mySMDS2VTKElems[theObjID];
-}
-
-//=================================================================================
-// function : SMESH_VisualObjDef::createPoints
-// purpose  : Create points from nodes
-//=================================================================================
-void SMESH_VisualObjDef::createPoints( vtkPoints* thePoints )
-{
-  if ( thePoints == 0 )
-    return;
-
-  TEntityList aNodes;
-  vtkIdType nbNodes = GetEntities( SMDSAbs_Node, aNodes );
-  thePoints->SetNumberOfPoints( nbNodes );
-  
-  int nbPoints = 0;
-
-  TEntityList::const_iterator anIter;
-  for ( anIter = aNodes.begin(); anIter != aNodes.end(); ++anIter )
-  {
-    const SMDS_MeshNode* aNode = ( const SMDS_MeshNode* )(*anIter);
-    if ( aNode != 0 )
-    {
-      thePoints->SetPoint( nbPoints, aNode->X(), aNode->Y(), aNode->Z() );
-      int anId = aNode->GetID();
-      mySMDS2VTKNodes.insert( TMapOfIds::value_type( anId, nbPoints ) );
-      myVTK2SMDSNodes.insert( TMapOfIds::value_type( nbPoints, anId ) );
-      nbPoints++;
-    }
-  }
-
-  if ( nbPoints != nbNodes )
-    thePoints->SetNumberOfPoints( nbPoints );
-}
-
-//=================================================================================
-// function : buildPrs
-// purpose  : create VTK cells( fill unstructured grid )
-//=================================================================================
-void SMESH_VisualObjDef::buildPrs()
-{
-  try
-  {
-    mySMDS2VTKNodes.clear();
-    myVTK2SMDSNodes.clear();
-    mySMDS2VTKElems.clear();
-    myVTK2SMDSElems.clear();
-    
-    if ( IsNodePrs() )
-      buildNodePrs();
-    else
-      buildElemPrs();
-  }
-  catch( const std::exception& exc )
-  {
-    INFOS("Follow exception was cought:\n\t"<<exc.what());
-  }
-  catch(...)
-  {
-    INFOS("Unknown exception was cought !!!");
-  }
-  
-  if( MYDEBUG ) MESSAGE( "Update - myGrid->GetNumberOfCells() = "<<myGrid->GetNumberOfCells() );
-  if( MYDEBUGWITHFILES ) SMESH::WriteUnstructuredGrid( myGrid,"/tmp/buildPrs" );
-}
-
-//=================================================================================
-// function : buildNodePrs
-// purpose  : create VTK cells for nodes
-//=================================================================================
-void SMESH_VisualObjDef::buildNodePrs()
-{
-  vtkPoints* aPoints = vtkPoints::New();
-  createPoints( aPoints );
-  myGrid->SetPoints( aPoints );
-  aPoints->Delete();
-
-  myGrid->SetCells( 0, 0, 0 );
-
-  // Create cells
-  /*
-  int nbPoints = aPoints->GetNumberOfPoints();
-  vtkIdList *anIdList = vtkIdList::New();
-  anIdList->SetNumberOfIds( 1 );
-
-  vtkCellArray *aCells = vtkCellArray::New();
-  aCells->Allocate( 2 * nbPoints, 0 );
-
-  vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
-  aCellTypesArray->SetNumberOfComponents( 1 );
-  aCellTypesArray->Allocate( nbPoints );
-
-  for( vtkIdType aCellId = 0; aCellId < nbPoints; aCellId++ )
-  {
-    anIdList->SetId( 0, aCellId );
-    aCells->InsertNextCell( anIdList );
-    aCellTypesArray->InsertNextValue( VTK_VERTEX );
-  }
-
-  vtkIntArray* aCellLocationsArray = vtkIntArray::New();
-  aCellLocationsArray->SetNumberOfComponents( 1 );
-  aCellLocationsArray->SetNumberOfTuples( nbPoints );
-
-  aCells->InitTraversal();
-  for( vtkIdType i = 0, *pts, npts; aCells->GetNextCell( npts, pts ); i++ )
-    aCellLocationsArray->SetValue( i, aCells->GetTraversalLocation( npts ) );
-
-  myGrid->SetCells( aCellTypesArray, aCellLocationsArray, aCells );
-
-  aCellLocationsArray->Delete();
-  aCellTypesArray->Delete();
-  aCells->Delete();
-  anIdList->Delete(); 
-  */
-}
-
-//=================================================================================
-// function : buildElemPrs
-// purpose  : Create VTK cells for elements
-//=================================================================================
-
-namespace{
-  typedef std::vector<const SMDS_MeshElement*> TConnect;
-
-  int GetConnect(const SMDS_ElemIteratorPtr& theNodesIter, 
-                TConnect& theConnect)
-  {
-    theConnect.clear();
-    for(; theNodesIter->more();)
-      theConnect.push_back(theNodesIter->next());
-    return theConnect.size();
-  }
-  
-  inline 
-  void SetId(vtkIdList *theIdList, 
-            const SMESH_VisualObjDef::TMapOfIds& theSMDS2VTKNodes, 
-            const TConnect& theConnect, 
-            int thePosition,
-            int theId)
-  {
-    theIdList->SetId(thePosition,theSMDS2VTKNodes.find(theConnect[theId]->GetID())->second);
-  }
-
-}
-
-
-void SMESH_VisualObjDef::buildElemPrs()
-{
-  // Create points
-  
-  vtkPoints* aPoints = vtkPoints::New();
-  createPoints( aPoints );
-  myGrid->SetPoints( aPoints );
-  aPoints->Delete();
-    
-  if ( MYDEBUG )
-    MESSAGE("Update - myGrid->GetNumberOfPoints() = "<<myGrid->GetNumberOfPoints());
-
-  // Calculate cells size
-
-  static SMDSAbs_ElementType aTypes[ 3 ] = { SMDSAbs_Edge, SMDSAbs_Face, SMDSAbs_Volume };
-
-  // get entity data
-  map<SMDSAbs_ElementType,int> nbEnts;
-  map<SMDSAbs_ElementType,TEntityList> anEnts;
-
-  for ( int i = 0; i <= 2; i++ )
-    nbEnts[ aTypes[ i ] ] = GetEntities( aTypes[ i ], anEnts[ aTypes[ i ] ] );
-
-  vtkIdType aCellsSize =  3 * nbEnts[ SMDSAbs_Edge ];
-
-  for ( int i = 1; i <= 2; i++ ) // iterate through faces and volumes
-  {
-    if ( nbEnts[ aTypes[ i ] ] )
-    {
-      const TEntityList& aList = anEnts[ aTypes[ i ] ];
-      TEntityList::const_iterator anIter;
-      for ( anIter = aList.begin(); anIter != aList.end(); ++anIter )
-        aCellsSize += (*anIter)->NbNodes() + 1;
-    }
-  }
-
-  vtkIdType aNbCells = nbEnts[ SMDSAbs_Edge ] + nbEnts[ SMDSAbs_Face ] + nbEnts[ SMDSAbs_Volume ];
-  
-  if ( MYDEBUG )
-    MESSAGE( "Update - aNbCells = "<<aNbCells<<"; aCellsSize = "<<aCellsSize );
-
-  // Create cells
-  
-  vtkCellArray* aConnectivity = vtkCellArray::New();
-  aConnectivity->Allocate( aCellsSize, 0 );
-  
-  vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
-  aCellTypesArray->SetNumberOfComponents( 1 );
-  aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() );
-  
-  vtkIdList *anIdList = vtkIdList::New();
-  vtkIdType iElem = 0;
-
-  TConnect aConnect;
-  aConnect.reserve(VTK_CELL_SIZE);
-
-  for ( int i = 0; i <= 2; i++ ) // iterate through edges, faces and volumes
-  {
-    if( nbEnts[ aTypes[ i ] ] > 0 )
-    {
-      const SMDSAbs_ElementType& aType = aTypes[ i ];
-      const TEntityList& aList = anEnts[ aType ];
-      TEntityList::const_iterator anIter;
-      for ( anIter = aList.begin(); anIter != aList.end(); ++anIter )
-      {
-        const SMDS_MeshElement* anElem = *anIter;
-        
-        vtkIdType aNbNodes = anElem->NbNodes();
-        anIdList->SetNumberOfIds( aNbNodes );
-
-        int anId = anElem->GetID();
-
-        mySMDS2VTKElems.insert( TMapOfIds::value_type( anId, iElem ) );
-        myVTK2SMDSElems.insert( TMapOfIds::value_type( iElem, anId ) );
-
-        SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
-       switch(aType){
-       case SMDSAbs_Volume:{
-         std::vector<int> aConnectivities;
-         GetConnect(aNodesIter,aConnect);
-         // Convertions connectivities from SMDS to VTK
-         if (anElem->IsPoly() && aNbNodes > 3) { // POLYEDRE
-           for (int k = 0; k < aNbNodes; k++) {
-             aConnectivities.push_back(k);
-           }
-
-         } else if (aNbNodes == 4) {
-           static int anIds[] = {0,2,1,3};
-           for (int k = 0; k < aNbNodes; k++) aConnectivities.push_back(anIds[k]);
-
-         } else if (aNbNodes == 5) {
-           static int anIds[] = {0,3,2,1,4};
-           for (int k = 0; k < aNbNodes; k++) aConnectivities.push_back(anIds[k]);
-
-         } else if (aNbNodes == 6) {
-           static int anIds[] = {0,1,2,3,4,5};
-           for (int k = 0; k < aNbNodes; k++) aConnectivities.push_back(anIds[k]);
-
-         } else if (aNbNodes == 8) {
-           static int anIds[] = {0,3,2,1,4,7,6,5};
-           for (int k = 0; k < aNbNodes; k++) aConnectivities.push_back(anIds[k]);
-
-         } else {
-          }
-
-         if (aConnectivities.size() > 0) {
-           for (vtkIdType aNodeId = 0; aNodeId < aNbNodes; aNodeId++)
-             SetId(anIdList,mySMDS2VTKNodes,aConnect,aNodeId,aConnectivities[aNodeId]);
-         }
-         break;
-       }
-       default:
-         for( vtkIdType aNodeId = 0; aNodesIter->more(); aNodeId++ ){
-           const SMDS_MeshElement* aNode = aNodesIter->next();
-           anIdList->SetId( aNodeId, mySMDS2VTKNodes[aNode->GetID()] );
-         }
-       }
-
-        aConnectivity->InsertNextCell( anIdList );
-        aCellTypesArray->InsertNextValue( getCellType( aType, anElem->IsPoly(), aNbNodes ) );
-
-        iElem++;
-      }
-    }
-  }
-
-  // Insert cells in grid
-  
-  vtkIntArray* aCellLocationsArray = vtkIntArray::New();
-  aCellLocationsArray->SetNumberOfComponents( 1 );
-  aCellLocationsArray->SetNumberOfTuples( aNbCells );
-  
-  aConnectivity->InitTraversal();
-  for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ )
-    aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) );
-
-  myGrid->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity );
-  
-  aCellLocationsArray->Delete();
-  aCellTypesArray->Delete();
-  aConnectivity->Delete();
-  anIdList->Delete();
-}
-
-//=================================================================================
-// function : GetEdgeNodes
-// purpose  : Retrieve ids of nodes from edge of elements ( edge is numbered from 1 )
-//=================================================================================
-bool SMESH_VisualObjDef::GetEdgeNodes( const int theElemId,
-                                      const int theEdgeNum,
-                                      int&      theNodeId1,
-                                      int&      theNodeId2 ) const
-{
-  const SMDS_Mesh* aMesh = GetMesh();
-  if ( aMesh == 0 )
-    return false;
-    
-  const SMDS_MeshElement* anElem = aMesh->FindElement( theElemId );
-  if ( anElem == 0 )
-    return false;
-    
-  int nbNodes = anElem->NbNodes();
-
-  if ( theEdgeNum < 0 || theEdgeNum > 3 || nbNodes != 3 && nbNodes != 4 || theEdgeNum > nbNodes )
-    return false;
-
-  int anIds[ nbNodes ];
-  SMDS_ElemIteratorPtr anIter = anElem->nodesIterator();
-  int i = 0;
-  while( anIter->more() )
-    anIds[ i++ ] = anIter->next()->GetID();
-
-  if ( theEdgeNum < nbNodes - 1 )
-  {
-    theNodeId1 = anIds[ theEdgeNum ];
-    theNodeId2 = anIds[ theEdgeNum + 1 ];
-  }
-  else
-  {
-    theNodeId1 = anIds[ nbNodes - 1 ];
-    theNodeId2 = anIds[ 0 ];
-  }
-
-  return true;
-}
-
-/*
-  Class       : SMESH_MeshObj
-  Description : Class for visualisation of mesh
-*/
-
-//=================================================================================
-// function : SMESH_MeshObj
-// purpose  : Constructor
-//=================================================================================
-SMESH_MeshObj::SMESH_MeshObj(SMESH::SMESH_Mesh_ptr theMesh)
-{
-  if ( MYDEBUG ) 
-    MESSAGE("SMESH_MeshObj - theMesh->_is_nil() = "<<theMesh->_is_nil());
-    
-  myMeshServer = SMESH::SMESH_Mesh::_duplicate( theMesh );
-  myMeshServer->Register();
-  myMesh = new SMDS_Mesh();
-}
-
-//=================================================================================
-// function : ~SMESH_MeshObj
-// purpose  : Destructor
-//=================================================================================
-SMESH_MeshObj::~SMESH_MeshObj()
-{
-  myMeshServer->Destroy();
-  delete myMesh;
-}
-
-//=================================================================================
-// function : Update
-// purpose  : Update mesh and fill grid with new values if necessary 
-//=================================================================================
-void SMESH_MeshObj::Update( int theIsClear )
-{
-  // Update SMDS_Mesh on client part
-  
-  try
-  {
-    SMESH::log_array_var aSeq = myMeshServer->GetLog( theIsClear );
-    CORBA::Long aLength = aSeq->length();
-    
-    if( MYDEBUG ) MESSAGE( "Update: length of the script is "<<aLength );
-    
-    if( !aLength )
-      return;
-
-    for ( CORBA::Long anId = 0; anId < aLength; anId++)
-    {
-      const SMESH::double_array& aCoords = aSeq[anId].coords;
-      const SMESH::long_array& anIndexes = aSeq[anId].indexes;
-      CORBA::Long anElemId = 0, aNbElems = aSeq[anId].number;
-      CORBA::Long aCommand = aSeq[anId].commandType;
-
-      switch(aCommand)
-      {
-        case SMESH::ADD_NODE       : AddNodesWithID      ( myMesh, aSeq, anId ); break;
-        case SMESH::ADD_EDGE       : AddEdgesWithID      ( myMesh, aSeq, anId ); break;
-        case SMESH::ADD_TRIANGLE   : AddTriasWithID      ( myMesh, aSeq, anId ); break;
-        case SMESH::ADD_QUADRANGLE : AddQuadsWithID      ( myMesh, aSeq, anId ); break;
-        case SMESH::ADD_POLYGON    : AddPolygonsWithID   ( myMesh, aSeq, anId ); break;
-        case SMESH::ADD_TETRAHEDRON: AddTetrasWithID     ( myMesh, aSeq, anId ); break;
-        case SMESH::ADD_PYRAMID    : AddPiramidsWithID   ( myMesh, aSeq, anId ); break;
-        case SMESH::ADD_PRISM      : AddPrismsWithID     ( myMesh, aSeq, anId ); break;
-        case SMESH::ADD_HEXAHEDRON : AddHexasWithID      ( myMesh, aSeq, anId ); break;
-        case SMESH::ADD_POLYHEDRON : AddPolyhedronsWithID( myMesh, aSeq, anId ); break;
-
-        case SMESH::REMOVE_NODE:
-          for( ; anElemId < aNbElems; anElemId++ )
-            myMesh->RemoveNode( FindNode( myMesh, anIndexes[anElemId] ) );
-        break;
-        
-        case SMESH::REMOVE_ELEMENT:
-          for( ; anElemId < aNbElems; anElemId++ )
-            myMesh->RemoveElement( FindElement( myMesh, anIndexes[anElemId] ) );
-        break;
-
-        case SMESH::MOVE_NODE:
-          for(CORBA::Long aCoordId=0; anElemId < aNbElems; anElemId++, aCoordId+=3)
-          {
-            SMDS_MeshNode* node =
-              const_cast<SMDS_MeshNode*>( FindNode( myMesh, anIndexes[anElemId] ));
-            node->setXYZ( aCoords[aCoordId], aCoords[aCoordId+1], aCoords[aCoordId+2] );
-          }
-        break;
-
-        case SMESH::CHANGE_ELEMENT_NODES:
-          for ( CORBA::Long i = 0; anElemId < aNbElems; anElemId++ )
-          {
-            // find element
-            const SMDS_MeshElement* elem = FindElement( myMesh, anIndexes[i++] );
-            // nb nodes
-            int nbNodes = anIndexes[i++];
-            // nodes
-            //ASSERT( nbNodes < 9 );
-            const SMDS_MeshNode* aNodes[ nbNodes ];
-            for ( int iNode = 0; iNode < nbNodes; iNode++ )
-              aNodes[ iNode ] = FindNode( myMesh, anIndexes[i++] );
-            // change
-            myMesh->ChangeElementNodes( elem, aNodes, nbNodes );
-          }
-          break;
-
-        case SMESH::CHANGE_POLYHEDRON_NODES:
-          ChangePolyhedronNodes(myMesh, aSeq, anId);
-          break;
-        case SMESH::RENUMBER:
-          for(CORBA::Long i=0; anElemId < aNbElems; anElemId++, i+=3)
-          {
-            myMesh->Renumber( anIndexes[i], anIndexes[i+1], anIndexes[i+2] );
-          }
-          break;
-          
-        default:;
-      }
-    }
-  }
-  catch ( SALOME::SALOME_Exception& exc )
-  {
-    INFOS("Following exception was cought:\n\t"<<exc.details.text);
-  }
-  catch( const std::exception& exc)
-  {
-    INFOS("Following exception was cought:\n\t"<<exc.what());
-  }
-  catch(...)
-  {
-    INFOS("Unknown exception was cought !!!");
-  }
-  
-  if ( MYDEBUG )
-  {
-    MESSAGE("Update - myMesh->NbNodes() = "<<myMesh->NbNodes());
-    MESSAGE("Update - myMesh->NbEdges() = "<<myMesh->NbEdges());
-    MESSAGE("Update - myMesh->NbFaces() = "<<myMesh->NbFaces());
-    MESSAGE("Update - myMesh->NbVolumes() = "<<myMesh->NbVolumes());
-  }
-
-  // Fill unstructured grid
-  buildPrs();
-}
-
-//=================================================================================
-// function : GetElemDimension
-// purpose  : Get dimension of element
-//=================================================================================
-int SMESH_MeshObj::GetElemDimension( const int theObjId )
-{
-  const SMDS_MeshElement* anElem = myMesh->FindElement( theObjId );
-  if ( anElem == 0 )
-    return 0;
-
-  int aType = anElem->GetType();
-  switch ( aType )
-  {
-    case SMDSAbs_Edge  : return 1;
-    case SMDSAbs_Face  : return 2;
-    case SMDSAbs_Volume: return 3;
-    default            : return 0;
-  }
-}
-
-//=================================================================================
-// function : GetEntities
-// purpose  : Get entities of specified type. Return number of entities
-//=================================================================================
-int SMESH_MeshObj::GetNbEntities( const SMDSAbs_ElementType theType) const
-{
-  switch ( theType )
-  {
-    case SMDSAbs_Node:
-    {
-      return myMesh->NbNodes();
-    }
-    break;
-    case SMDSAbs_Edge:
-    {
-      return myMesh->NbEdges();
-    }
-    break;
-    case SMDSAbs_Face:
-    {
-      return myMesh->NbFaces();
-    }
-    break;
-    case SMDSAbs_Volume:
-    {
-      return myMesh->NbVolumes();
-    }
-    break;
-    default:
-      return 0;
-    break;
-  }
-}
-
-int SMESH_MeshObj::GetEntities( const SMDSAbs_ElementType theType, TEntityList& theObjs ) const
-{
-  theObjs.clear();
-
-  switch ( theType )
-  {
-    case SMDSAbs_Node:
-    {
-      SMDS_NodeIteratorPtr anIter = myMesh->nodesIterator();
-      while ( anIter->more() ) theObjs.push_back( anIter->next() );
-    }
-    break;
-    case SMDSAbs_Edge:
-    {
-      SMDS_EdgeIteratorPtr anIter = myMesh->edgesIterator();
-      while ( anIter->more() ) theObjs.push_back( anIter->next() );
-    }
-    break;
-    case SMDSAbs_Face:
-    {
-      SMDS_FaceIteratorPtr anIter = myMesh->facesIterator();
-      while ( anIter->more() ) theObjs.push_back( anIter->next() );
-    }
-    break;
-    case SMDSAbs_Volume:
-    {
-      SMDS_VolumeIteratorPtr anIter = myMesh->volumesIterator();
-      while ( anIter->more() ) theObjs.push_back( anIter->next() );
-    }
-    break;
-    default:
-    break;
-  }
-
-  return theObjs.size();
-}
-
-//=================================================================================
-// function : UpdateFunctor
-// purpose  : Update functor in accordance with current mesh
-//=================================================================================
-void SMESH_MeshObj::UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunctor )
-{
-  theFunctor->SetMesh( GetMesh() );
-}
-
-//=================================================================================
-// function : IsNodePrs
-// purpose  : Return true if node presentation is used
-//=================================================================================
-bool SMESH_MeshObj::IsNodePrs() const
-{
-  return myMesh->NbEdges() == 0 &&myMesh->NbFaces() == 0 &&myMesh->NbVolumes() == 0 ;
-}
-
-
-/*
-  Class       : SMESH_SubMeshObj
-  Description : Base class for visualisation of submeshes and groups
-*/
-
-//=================================================================================
-// function : SMESH_SubMeshObj
-// purpose  : Constructor
-//=================================================================================
-SMESH_SubMeshObj::SMESH_SubMeshObj( SMESH_MeshObj* theMeshObj )
-{
-  if ( MYDEBUG ) MESSAGE( "SMESH_SubMeshObj - theMeshObj = " << theMeshObj );
-  
-  myMeshObj = theMeshObj;
-}
-
-SMESH_SubMeshObj::~SMESH_SubMeshObj()
-{
-}
-
-//=================================================================================
-// function : GetElemDimension
-// purpose  : Get dimension of element
-//=================================================================================
-int SMESH_SubMeshObj::GetElemDimension( const int theObjId )
-{
-  return myMeshObj == 0 ? 0 : myMeshObj->GetElemDimension( theObjId );
-}
-
-//=================================================================================
-// function : UpdateFunctor
-// purpose  : Update functor in accordance with current mesh
-//=================================================================================
-void SMESH_SubMeshObj::UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunctor )
-{
-  theFunctor->SetMesh( myMeshObj->GetMesh() );
-}
-
-//=================================================================================
-// function : Update
-// purpose  : Update mesh object and fill grid with new values 
-//=================================================================================
-void SMESH_SubMeshObj::Update( int theIsClear )
-{
-  myMeshObj->Update( theIsClear );
-  buildPrs();
-}
-
-
-/*
-  Class       : SMESH_GroupObj
-  Description : Class for visualisation of groups
-*/
-
-//=================================================================================
-// function : SMESH_GroupObj
-// purpose  : Constructor
-//=================================================================================
-SMESH_GroupObj::SMESH_GroupObj( SMESH::SMESH_GroupBase_ptr theGroup, 
-                                SMESH_MeshObj*             theMeshObj )
-: SMESH_SubMeshObj( theMeshObj ),
-  myGroupServer( SMESH::SMESH_GroupBase::_duplicate(theGroup) )
-{
-  if ( MYDEBUG ) MESSAGE("SMESH_GroupObj - theGroup->_is_nil() = "<<theGroup->_is_nil());
-  myGroupServer->Register();
-}
-
-SMESH_GroupObj::~SMESH_GroupObj()
-{
-  if ( MYDEBUG ) MESSAGE("~SMESH_GroupObj");
-  myGroupServer->Destroy();
-}
-
-//=================================================================================
-// function : IsNodePrs
-// purpose  : Return true if node presentation is used
-//=================================================================================
-bool SMESH_GroupObj::IsNodePrs() const
-{
-  return myGroupServer->GetType() == SMESH::NODE;
-}
-
-//=================================================================================
-// function : getNodesFromElems
-// purpose  : Retrieve nodes from elements
-//=================================================================================
-static int getNodesFromElems( SMESH::long_array_var&              theElemIds,
-                              const SMDS_Mesh*                    theMesh,
-                              std::list<const SMDS_MeshElement*>& theResList )
-{
-  set<const SMDS_MeshElement*> aNodeSet;
-
-  for ( CORBA::Long i = 0, n = theElemIds->length(); i < n; i++ )
-  {
-    const SMDS_MeshElement* anElem = theMesh->FindElement( theElemIds[ i ] );
-    if ( anElem != 0 )
-    {
-      SMDS_ElemIteratorPtr anIter = anElem->nodesIterator();
-      while ( anIter->more() )
-      {
-        const SMDS_MeshElement* aNode = anIter->next();
-        if ( aNode != 0 )
-          aNodeSet.insert( aNode );
-      }
-    }
-  }
-
-  set<const SMDS_MeshElement*>::const_iterator anIter;
-  for ( anIter = aNodeSet.begin(); anIter != aNodeSet.end(); ++anIter )
-    theResList.push_back( *anIter );
-
-  return theResList.size();    
-}
-
-//=================================================================================
-// function : getPointers
-// purpose  : Get std::list<const SMDS_MeshElement*> from list of IDs
-//=================================================================================
-static int getPointers( const SMDSAbs_ElementType            theRequestType,
-                        SMESH::long_array_var&              theElemIds,
-                        const SMDS_Mesh*                    theMesh,
-                        std::list<const SMDS_MeshElement*>& theResList )
-{
-  for ( CORBA::Long i = 0, n = theElemIds->length(); i < n; i++ )
-  {
-    const SMDS_MeshElement* anElem = theRequestType == SMDSAbs_Node
-      ? theMesh->FindNode( theElemIds[ i ] ) : theMesh->FindElement( theElemIds[ i ] );
-
-    if ( anElem != 0 )
-      theResList.push_back( anElem );
-  }
-
-  return theResList.size();
-}
-
-
-//=================================================================================
-// function : GetEntities
-// purpose  : Get entities of specified type. Return number of entities
-//=================================================================================
-int SMESH_GroupObj::GetNbEntities( const SMDSAbs_ElementType theType) const
-{
-  if(SMDSAbs_ElementType(myGroupServer->GetType()) == theType){
-    return myGroupServer->Size();
-  }
-  return 0;
-}
-
-int SMESH_GroupObj::GetEntities( const SMDSAbs_ElementType theType, TEntityList& theResList ) const
-{
-  theResList.clear();
-  SMDS_Mesh* aMesh = myMeshObj->GetMesh();
-  
-  if ( myGroupServer->Size() == 0 || aMesh == 0 )
-    return 0;
-
-  SMDSAbs_ElementType aGrpType = SMDSAbs_ElementType(myGroupServer->GetType());
-  SMESH::long_array_var anIds = myGroupServer->GetListOfID();
-
-  if ( aGrpType == theType )
-    return getPointers( theType, anIds, aMesh, theResList );
-  else if ( theType == SMDSAbs_Node )
-    return getNodesFromElems( anIds, aMesh, theResList );
-  else
-    return 0;
-}    
-
-
-
-/*
-  Class       : SMESH_subMeshObj
-  Description : Class for visualisation of submeshes
-*/
-
-//=================================================================================
-// function : SMESH_subMeshObj
-// purpose  : Constructor
-//=================================================================================
-SMESH_subMeshObj::SMESH_subMeshObj( SMESH::SMESH_subMesh_ptr theSubMesh,
-                                    SMESH_MeshObj*           theMeshObj )
-: SMESH_SubMeshObj( theMeshObj ),
-  mySubMeshServer( SMESH::SMESH_subMesh::_duplicate( theSubMesh ) )
-{
-  if ( MYDEBUG ) MESSAGE( "SMESH_subMeshObj - theSubMesh->_is_nil() = " << theSubMesh->_is_nil() );
-  
-  mySubMeshServer->Register();
-}
-
-SMESH_subMeshObj::~SMESH_subMeshObj()
-{
-  if ( MYDEBUG ) MESSAGE( "~SMESH_subMeshObj" );
-  mySubMeshServer->Destroy();
-}
-
-//=================================================================================
-// function : GetEntities
-// purpose  : Get entities of specified type. Return number of entities
-//=================================================================================
-int SMESH_subMeshObj::GetNbEntities( const SMDSAbs_ElementType theType) const
-{
-  switch ( theType )
-  {
-    case SMDSAbs_Node:
-    {
-      return mySubMeshServer->GetNumberOfNodes( false );
-    }
-    break;
-    case SMDSAbs_Edge:
-    case SMDSAbs_Face:
-    case SMDSAbs_Volume:
-    {
-      SMESH::long_array_var anIds = 
-       mySubMeshServer->GetElementsByType( SMESH::ElementType(theType) );
-      return anIds->length();
-    }
-    default:
-      return 0;
-    break;
-  }
-}
-
-int SMESH_subMeshObj::GetEntities( const SMDSAbs_ElementType theType, TEntityList& theResList ) const
-{
-  theResList.clear();
-
-  SMDS_Mesh* aMesh = myMeshObj->GetMesh();
-  if ( aMesh == 0 )
-    return 0;
-
-  bool isNodal = IsNodePrs();
-
-  if ( isNodal )
-  {
-    if ( theType == SMDSAbs_Node )
-    {
-      SMESH::long_array_var anIds = mySubMeshServer->GetNodesId();
-      return getPointers( SMDSAbs_Node, anIds, aMesh, theResList );
-    }
-  }
-  else
-  {
-    if ( theType == SMDSAbs_Node )
-    {
-      SMESH::long_array_var anIds = mySubMeshServer->GetElementsId();
-      return getNodesFromElems( anIds, aMesh, theResList );
-    }
-    else
-    {
-      SMESH::long_array_var anIds = 
-       mySubMeshServer->GetElementsByType( SMESH::ElementType(theType) );
-      return getPointers( theType, anIds, aMesh, theResList );
-    }
-  }
-
-  return 0;
-}
-
-//=================================================================================
-// function : IsNodePrs
-// purpose  : Return true if node presentation is used
-//=================================================================================
-bool SMESH_subMeshObj::IsNodePrs() const
-{
-  return mySubMeshServer->GetNumberOfElements() == 0;
-}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/OBJECT/SMESH_Object.h b/src/OBJECT/SMESH_Object.h
deleted file mode 100644 (file)
index aea4f77..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//  SMESH OBJECT : interactive object for SMESH visualization
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Object.h
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#ifndef SMESH_OBJECT_H
-#define SMESH_OBJECT_H
-
-#include <boost/shared_ptr.hpp>
-#include <vtkSystemIncludes.h>
-
-#include "SMESH_Controls.hxx"
-#include "SMDSAbs_ElementType.hxx"
-
-class SMDS_Mesh;
-class vtkUnstructuredGrid;
-
-/*
-  Class       : SMESH_VisualObj
-  Description : Base class for all mesh objects to be visuilised
-*/
-class SMESH_VisualObj
-{
-public:
-  virtual void Update( int theIsClear = true ) = 0;
-  virtual void UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunctor ) = 0;
-  virtual int GetElemDimension( const int theObjId ) = 0;
-
-  virtual int GetNbEntities( const SMDSAbs_ElementType theType) const = 0;
-  virtual SMDS_Mesh* GetMesh() const = 0;
-
-  virtual bool GetEdgeNodes( const int theElemId,
-                            const int theEdgeNum,
-                            int&      theNodeId1,
-                            int&      theNodeId2 ) const = 0;
-  
-  virtual vtkUnstructuredGrid* GetUnstructuredGrid() = 0;
-  
-  virtual vtkIdType GetNodeObjId( int theVTKID ) = 0;
-  virtual vtkIdType GetNodeVTKId( int theObjID ) = 0;
-  virtual vtkIdType GetElemObjId( int theVTKID ) = 0;
-  virtual vtkIdType GetElemVTKId( int theObjID ) = 0;
-};
-
-typedef boost::shared_ptr<SMESH_VisualObj> TVisualObjPtr;
-
-#endif
diff --git a/src/OBJECT/SMESH_ObjectDef.h b/src/OBJECT/SMESH_ObjectDef.h
deleted file mode 100644 (file)
index 134b47b..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-//  SMESH OBJECT : interactive object for SMESH visualization
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Object.h
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#ifndef SMESH_OBJECTDEF_H
-#define SMESH_OBJECTDEF_H
-
-// IDL Headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_SERVER_HEADER(SMESH_Group)
-
-#include <map>
-#include <list>
-
-#include "SMESH_Controls.hxx"
-#include "SMESH_Object.h"
-
-class vtkPoints;
-class SALOME_ExtractUnstructuredGrid;
-
-class SMESH_Actor;
-class SMDS_MeshNode;
-class SMDS_MeshElement;
-
-/*
-  Class       : SMESH_VisualObj
-  Description : Base class for all mesh objects to be visuilised
-*/
-class SMESH_VisualObjDef: public SMESH_VisualObj
-{
-public:
-  typedef std::list<const SMDS_MeshElement*>   TEntityList;
-  typedef std::map<vtkIdType,vtkIdType>  TMapOfIds;
-  
-                            SMESH_VisualObjDef();
-  virtual                   ~SMESH_VisualObjDef();
-  
-  virtual void              Update( int theIsClear = true ) = 0;
-  virtual void              UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunctor ) = 0;
-  virtual int               GetElemDimension( const int theObjId ) = 0;
-
-  virtual int               GetNbEntities( const SMDSAbs_ElementType theType) const = 0;
-  virtual int               GetEntities( const SMDSAbs_ElementType, TEntityList& ) const = 0;
-  virtual bool              IsNodePrs() const = 0;
-  virtual SMDS_Mesh*        GetMesh() const = 0;
-
-  virtual bool              GetEdgeNodes( const int theElemId,
-                                          const int theEdgeNum,
-                                          int&      theNodeId1,
-                                          int&      theNodeId2 ) const;
-
-  virtual vtkUnstructuredGrid* GetUnstructuredGrid() { return myGrid; }
-  
-  virtual vtkIdType         GetNodeObjId( int theVTKID );
-  virtual vtkIdType         GetNodeVTKId( int theObjID );
-  virtual vtkIdType         GetElemObjId( int theVTKID );
-  virtual vtkIdType         GetElemVTKId( int theObjID );
-  
-protected:
-
-  void                      createPoints( vtkPoints* );
-  void                      buildPrs();
-  void                      buildNodePrs();
-  void                      buildElemPrs();
-  
-private:                                   
-
-  TMapOfIds                 mySMDS2VTKNodes;
-  TMapOfIds                 myVTK2SMDSNodes;
-  TMapOfIds                 mySMDS2VTKElems;
-  TMapOfIds                 myVTK2SMDSElems;
-
-  vtkUnstructuredGrid*      myGrid;
-};
-
-
-/*
-  Class       : SMESH_MeshObj
-  Description : Class for visualisation of mesh
-*/
-
-class SMESH_MeshObj: public SMESH_VisualObjDef
-{
-public:
-
-                            SMESH_MeshObj( SMESH::SMESH_Mesh_ptr );
-  virtual                   ~SMESH_MeshObj();
-  
-  virtual void              Update( int theIsClear = true );
-  
-  virtual int               GetNbEntities( const SMDSAbs_ElementType) const;
-  virtual int               GetEntities( const SMDSAbs_ElementType, TEntityList& ) const;
-  virtual bool              IsNodePrs() const;
-
-  virtual int               GetElemDimension( const int theObjId );
-
-  virtual void              UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunctor );
-  
-  SMESH::SMESH_Mesh_ptr     GetMeshServer() { return myMeshServer.in(); }
-  SMDS_Mesh*                GetMesh() const { return myMesh; }
-
-protected:
-
-  SMESH::SMESH_Mesh_var     myMeshServer;
-  SMDS_Mesh*                myMesh;
-};
-
-
-/*
-  Class       : SMESH_SubMeshObj
-  Description : Base class for visualisation of submeshes and groups
-*/
-
-class SMESH_SubMeshObj: public SMESH_VisualObjDef
-{
-public:
-
-                            SMESH_SubMeshObj(SMESH_MeshObj* theMeshObj);
-  virtual                   ~SMESH_SubMeshObj();
-
-  virtual void              Update( int theIsClear = true );
-  
-  virtual void              UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunctor );
-  virtual int               GetElemDimension( const int theObjId );
-  virtual SMDS_Mesh*        GetMesh() const { return myMeshObj->GetMesh(); }
-  
-protected:
-
-  SMESH_MeshObj*            myMeshObj;
-};
-
-
-/*
-  Class       : SMESH_GroupObj
-  Description : Class for visualisation of groups
-*/
-
-class SMESH_GroupObj: public SMESH_SubMeshObj
-{
-public:
-                            SMESH_GroupObj( SMESH::SMESH_GroupBase_ptr, SMESH_MeshObj* );
-  virtual                   ~SMESH_GroupObj();
-
-  virtual int               GetNbEntities( const SMDSAbs_ElementType) const;
-  virtual int               GetEntities( const SMDSAbs_ElementType, TEntityList& ) const;
-  virtual bool              IsNodePrs() const;
-
-private:
-
-  SMESH::SMESH_GroupBase_var    myGroupServer;
-};
-
-
-/*
-  Class       : SMESH_subMeshObj
-  Description : Class for visualisation of submeshes
-*/
-
-class SMESH_subMeshObj : public SMESH_SubMeshObj
-{
-public:
-
-                            SMESH_subMeshObj( SMESH::SMESH_subMesh_ptr, 
-                                              SMESH_MeshObj* );
-  virtual                   ~SMESH_subMeshObj();
-
-  virtual int               GetNbEntities( const SMDSAbs_ElementType) const;
-  virtual int               GetEntities( const SMDSAbs_ElementType, TEntityList& ) const;
-  virtual bool              IsNodePrs() const;    
-  
-protected:
-
-  SMESH::SMESH_subMesh_var  mySubMeshServer;
-};
-
-
-#endif
diff --git a/src/SMDS/Makefile.in b/src/SMDS/Makefile.in
deleted file mode 100644 (file)
index e066e25..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-#  SMESH SMDS : implementaion of Salome mesh data structure
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Patrick GOLDBRONN (CEA)
-#  Module : SMESH
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# Libraries targets
-
-LIB = libSMDS.la 
-LIB_SRC = \
-       SMDS_MeshObject.cxx \
-       SMDS_MeshElement.cxx \
-       SMDS_Position.cxx \
-       SMDS_EdgePosition.cxx \
-       SMDS_FacePosition.cxx \
-       SMDS_SpacePosition.cxx \
-       SMDS_VertexPosition.cxx \
-       SMDS_MeshNode.cxx \
-       SMDS_MeshEdge.cxx \
-       SMDS_MeshFace.cxx \
-       SMDS_MeshVolume.cxx \
-       SMDS_MeshElementIDFactory.cxx \
-       SMDS_MeshGroup.cxx \
-       SMDS_MeshIDFactory.cxx \
-       SMDS_Mesh.cxx \
-       SMDS_IteratorOfElements.cxx \
-       SMDS_VolumeOfFaces.cxx \
-       SMDS_VolumeOfNodes.cxx \
-       SMDS_PolyhedralVolumeOfNodes.cxx \
-       SMDS_FaceOfEdges.cxx \
-       SMDS_FaceOfNodes.cxx \
-       SMDS_PolygonalFaceOfNodes.cxx \
-       SMDS_VolumeTool.cxx
-#      SMDS_Tria3OfNodes.cxx \
-#      SMDS_HexahedronOfNodes.cxx
-
-#SMDSControl_BoundaryEdges.cxx \
-#SMDSControl_BoundaryFaces.cxx \
-#SMDSControl.cxx \
-#SMDSControl_MeshBoundary.cxx \
-#SMDSEdit_Transform.cxx \
-#SMDS_MeshNodeIDFactory.cxx \
-#SMDS_MeshPrism.cxx \
-#SMDS_MeshPyramid.cxx \
-#SMDS_MeshQuadrangle.cxx \
-#SMDS_MeshTetrahedron.cxx \
-#SMDS_MeshTriangle.cxx \
-
-
-LIB_CLIENT_IDL = 
-LIB_SERVER_IDL = 
-
-# Executables targets
-BIN =
-BIN_SRC =
-BIN_CLIENT_IDL = 
-BIN_SERVER_IDL = 
-
-# header files 
-EXPORT_HEADERS= \
-       SMDS_TypeOfPosition.hxx \
-       SMDSAbs_ElementType.hxx \
-       SMDS_EdgePosition.hxx \
-       SMDS_ElemIterator.hxx \
-       SMDS_FacePosition.hxx \
-       SMDS_Mesh.hxx \
-       SMDS_MeshEdge.hxx \
-       SMDS_MeshElement.hxx \
-       SMDS_MeshElementIDFactory.hxx \
-       SMDS_MeshFace.hxx \
-       SMDS_MeshGroup.hxx \
-       SMDS_MeshIDFactory.hxx \
-       SMDS_MeshNode.hxx \
-       SMDS_MeshObject.hxx \
-       SMDS_MeshVolume.hxx \
-       SMDS_Position.hxx \
-       SMDS_SpacePosition.hxx \
-       SMDS_VertexPosition.hxx \
-       SMDS_Iterator.hxx \
-       SMDS_IteratorOfElements.hxx \
-       SMDS_VolumeOfFaces.hxx \
-       SMDS_VolumeOfNodes.hxx \
-       SMDS_PolyhedralVolumeOfNodes.hxx \
-       SMDS_FaceOfEdges.hxx \
-       SMDS_FaceOfNodes.hxx \
-       SMDS_PolygonalFaceOfNodes.hxx \
-       SMDS_VolumeTool.hxx
-#      SMDS_Tria3OfNodes.hxx \
-#      SMDS_HexahedronOfNodes.hxx
-
-#SMDSControl_BoundaryEdges.hxx \
-#SMDSControl_BoundaryFaces.hxx \
-#SMDSControl.hxx \
-#SMDSControl_MeshBoundary.hxx \
-#SMDSEdit_Transform.hxx \
-#SMDS_MeshPrism.hxx \
-#SMDS_MeshPyramid.hxx \
-#SMDS_MeshQuadrangle.hxx \
-#SMDS_MeshTetrahedron.hxx \
-#SMDS_MeshTriangle.hxx \
-#SMDS_MeshNodeIDFactory.hxx
-
-# additionnal information to compil and link file
-CPPFLAGS += -I${KERNEL_ROOT_DIR}/include/salome $(OCC_INCLUDES) $(BOOST_CPPFLAGS)
-CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome
-LDFLAGS  += -L${KERNEL_ROOT_DIR}/lib/salome $(OCC_KERNEL_LIBS)
-
-
-# additional file to be cleaned
-MOSTLYCLEAN =
-CLEAN =
-DISTCLEAN =
-
-@CONCLUDE@
diff --git a/src/SMDS/SMDSAbs_ElementType.hxx b/src/SMDS/SMDSAbs_ElementType.hxx
deleted file mode 100644 (file)
index c474a4e..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org or email : webmaster@opencascade.org 
-//
-//
-//
-//  File   : SMDSAbs_ElementType.hxx
-//  Module : SMESH
-
-#ifndef _SMDSAbs_ElementType_HeaderFile
-#define _SMDSAbs_ElementType_HeaderFile
-
-///////////////////////////////////////////////////////////////////////////////
-/// Type (node, edge, face or volume) of elements
-///////////////////////////////////////////////////////////////////////////////
-enum SMDSAbs_ElementType
-{
-       SMDSAbs_All,
-       SMDSAbs_Node,
-       SMDSAbs_Edge,
-       SMDSAbs_Face,
-       SMDSAbs_Volume
-};
-
-#endif
diff --git a/src/SMDS/SMDS_EdgePosition.cxx b/src/SMDS/SMDS_EdgePosition.cxx
deleted file mode 100644 (file)
index 82c92b3..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_EdgePosition.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#include "SMDS_EdgePosition.hxx"
-
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : SMDS_EdgePosition
-//purpose  : 
-//=======================================================================
-
-SMDS_EdgePosition::SMDS_EdgePosition(const int aEdgeId,
-       const double aUParam):SMDS_Position(aEdgeId), myUParameter(aUParam)
-{
-}
-
-//=======================================================================
-//function : Coords
-//purpose  : 
-//=======================================================================
-
-const double *SMDS_EdgePosition::Coords() const
-{
-       static double origin[]={0,0,0};
-       MESSAGE("SMDS_EdgePosition::Coords not implemented");
-       return origin;
-}
-
-/**
-*/
-SMDS_TypeOfPosition SMDS_EdgePosition::GetTypeOfPosition() const
-{
-       return SMDS_TOP_EDGE;
-}
-
-void SMDS_EdgePosition::SetUParameter(double aUparam)
-{
-       myUParameter = aUparam;
-}
-
-//=======================================================================
-//function : GetUParameter
-//purpose  : 
-//=======================================================================
-
-double SMDS_EdgePosition::GetUParameter() const 
-{
-       return myUParameter;
-}
diff --git a/src/SMDS/SMDS_EdgePosition.hxx b/src/SMDS/SMDS_EdgePosition.hxx
deleted file mode 100644 (file)
index fd297d3..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_EdgePosition.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_EdgePosition_HeaderFile
-#define _SMDS_EdgePosition_HeaderFile
-
-#include "SMDS_Position.hxx"
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-class SMDS_WNT_EXPORT SMDS_EdgePosition:public SMDS_Position
-{
-
-  public:
-       SMDS_EdgePosition(const int aEdgeId=0, const double aUParam=0);
-       const virtual double * Coords() const;
-       SMDS_TypeOfPosition GetTypeOfPosition() const;
-       void SetUParameter(double aUparam);
-       double GetUParameter() const;
-
-  private:
-
-       double myUParameter;
-
-};
-
-#endif
diff --git a/src/SMDS/SMDS_ElemIterator.hxx b/src/SMDS/SMDS_ElemIterator.hxx
deleted file mode 100755 (executable)
index c8432af..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshElement.hxx
-//  Module : SMESH
-// Created:   12.01.05 18:02:52
-// Author:    Michael Sazonov
-
-#ifndef SMDS_ElemIterator_HeaderFile
-#define SMDS_ElemIterator_HeaderFile
-
-#include "SMDS_Iterator.hxx"
-#include <boost/shared_ptr.hpp>
-
-class SMDS_MeshElement;
-
-typedef SMDS_Iterator<const SMDS_MeshElement *> SMDS_ElemIterator;
-typedef boost::shared_ptr<SMDS_Iterator<const SMDS_MeshElement *> > SMDS_ElemIteratorPtr;
-
-#endif
diff --git a/src/SMDS/SMDS_FaceOfEdges.cxx b/src/SMDS/SMDS_FaceOfEdges.cxx
deleted file mode 100644 (file)
index 640c55d..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_FaceOfEdges.hxx"
-#include "SMDS_IteratorOfElements.hxx"
-#include "SMDS_MeshNode.hxx"
-
-using namespace std;
-
-//=======================================================================
-//function : NbEdges
-//purpose  : 
-//=======================================================================
-
-int SMDS_FaceOfEdges::NbEdges() const
-{
-       return myNbEdges;
-}
-
-int SMDS_FaceOfEdges::NbFaces() const
-{
-       return 1;
-}
-//=======================================================================
-//function : Print
-//purpose  : 
-//=======================================================================
-
-void SMDS_FaceOfEdges::Print(ostream & OS) const
-{
-       OS << "face <" << GetID() << " > : ";
-       int i;
-       for (i = 0; i < NbEdges() - 1; i++) OS << myEdges[i] << ",";
-       OS << myEdges[i] << ") " << endl;
-}
-
-SMDSAbs_ElementType SMDS_FaceOfEdges::GetType() const
-{
-       return SMDSAbs_Face;
-}
-
-//=======================================================================
-//function : elementsIterator
-//purpose  : 
-//=======================================================================
-
-class SMDS_FaceOfEdges_MyIterator:public SMDS_ElemIterator
-{
-  const SMDS_MeshEdge* const *mySet;
-  int myLength;
-  int index;
- public:
-  SMDS_FaceOfEdges_MyIterator(const SMDS_MeshEdge* const *s, int l):
-    mySet(s),myLength(l),index(0) {}
-
-  bool more()
-  {
-    return index<myLength;
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    index++;
-    return mySet[index-1];
-  }    
-};
-
-SMDS_ElemIteratorPtr SMDS_FaceOfEdges::elementsIterator
-                         (SMDSAbs_ElementType type) const
-{
-  switch(type)
-  {
-  case SMDSAbs_Face:
-    return SMDS_MeshElement::elementsIterator(SMDSAbs_Face);
-  case SMDSAbs_Edge:
-    return SMDS_ElemIteratorPtr(new SMDS_FaceOfEdges_MyIterator(myEdges,myNbEdges));
-  default:
-    return SMDS_ElemIteratorPtr
-      (new SMDS_IteratorOfElements
-       (this,type, SMDS_ElemIteratorPtr
-        (new SMDS_FaceOfEdges_MyIterator(myEdges,myNbEdges))));
-  }
-}
-
-SMDS_FaceOfEdges::SMDS_FaceOfEdges(const SMDS_MeshEdge* edge1,
-                                   const SMDS_MeshEdge* edge2,
-                                   const SMDS_MeshEdge* edge3)
-{
-       myNbEdges = 3;
-       myEdges[0]=edge1;
-       myEdges[1]=edge2;
-       myEdges[2]=edge3;
-       myEdges[3]=0;
-}
-
-SMDS_FaceOfEdges::SMDS_FaceOfEdges(const SMDS_MeshEdge* edge1,
-                                   const SMDS_MeshEdge* edge2,
-                                   const SMDS_MeshEdge* edge3,
-                                   const SMDS_MeshEdge* edge4)
-{
-       myNbEdges = 4;
-       myEdges[0]=edge1;
-       myEdges[1]=edge2;
-       myEdges[2]=edge3;
-       myEdges[3]=edge4;       
-}
-
-/*bool operator<(const SMDS_FaceOfEdges& f1, const SMDS_FaceOfEdges& f2)
-{
-       set<SMDS_MeshNode> set1,set2;
-       SMDS_ElemIteratorPtr it;
-       const SMDS_MeshNode * n;
-
-       it=f1.nodesIterator();
-
-       while(it->more())
-       {
-               n=static_cast<const SMDS_MeshNode *>(it->next());
-               set1.insert(*n);
-       }
-
-       delete it;
-       it=f2.nodesIterator();
-       
-       while(it->more())
-       {       
-               n=static_cast<const SMDS_MeshNode *>(it->next());
-               set2.insert(*n);
-       }
-
-       delete it;
-       return set1<set2;       
-
-}*/
-
diff --git a/src/SMDS/SMDS_FaceOfEdges.hxx b/src/SMDS/SMDS_FaceOfEdges.hxx
deleted file mode 100644 (file)
index cd8e5dd..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _SMDS_FaceOfEdges_HeaderFile
-#define _SMDS_FaceOfEdges_HeaderFile
-
-#include "SMDS_MeshFace.hxx"
-#include "SMDS_MeshEdge.hxx"
-#include "SMDS_Iterator.hxx"
-
-#include <iostream>
-
-
-class SMDS_FaceOfEdges:public SMDS_MeshFace
-{
-  public:
-       void Print(std::ostream & OS) const;
-       SMDS_FaceOfEdges(const SMDS_MeshEdge* edge1,
-                         const SMDS_MeshEdge* edge2,
-                         const SMDS_MeshEdge* edge3);
-       SMDS_FaceOfEdges(const SMDS_MeshEdge* edge1,
-                         const SMDS_MeshEdge* edge2,
-                         const SMDS_MeshEdge* edge3,
-                         const SMDS_MeshEdge* edge4);
-               
-       SMDSAbs_ElementType GetType() const;
-       int NbEdges() const;
-       int NbFaces() const;
-//     friend bool operator<(const SMDS_FaceOfEdges& e1, const SMDS_FaceOfEdges& e2);
-
-  protected:
-       SMDS_ElemIteratorPtr
-               elementsIterator(SMDSAbs_ElementType type) const;
-
-  private:
-       const SMDS_MeshEdge* myEdges[4];
-        int                  myNbEdges;
-
-};
-
-#endif
diff --git a/src/SMDS/SMDS_FaceOfNodes.cxx b/src/SMDS/SMDS_FaceOfNodes.cxx
deleted file mode 100644 (file)
index aa68708..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_FaceOfNodes.hxx"
-#include "SMDS_IteratorOfElements.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : NbEdges
-//purpose  : 
-//=======================================================================
-
-int SMDS_FaceOfNodes::NbEdges() const
-{
-       return NbNodes();
-}
-
-int SMDS_FaceOfNodes::NbFaces() const
-{
-       return 1;
-}
-
-int SMDS_FaceOfNodes::NbNodes() const
-{
-       return myNbNodes;
-}
-
-//=======================================================================
-//function : Print
-//purpose  : 
-//=======================================================================
-
-void SMDS_FaceOfNodes::Print(ostream & OS) const
-{
-       OS << "face <" << GetID() << " > : ";
-       int i;
-       for (i = 0; i < NbNodes() - 1; i++) OS << myNodes[i] << ",";
-       OS << myNodes[i] << ") " << endl;
-}
-
-//=======================================================================
-//function : elementsIterator
-//purpose  : 
-//=======================================================================
-
-class SMDS_FaceOfNodes_MyIterator:public SMDS_ElemIterator
-{
-  const SMDS_MeshNode* const *mySet;
-  int myLength;
-  int index;
- public:
-  SMDS_FaceOfNodes_MyIterator(const SMDS_MeshNode* const *s, int l):
-    mySet(s),myLength(l),index(0) {}
-
-  bool more()
-  {
-    return index<myLength;
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    index++;
-    return mySet[index-1];
-  }
-};
-
-SMDS_ElemIteratorPtr SMDS_FaceOfNodes::elementsIterator
-                         (SMDSAbs_ElementType type) const
-{
-  switch(type)
-  {
-  case SMDSAbs_Face:
-    return SMDS_MeshElement::elementsIterator(SMDSAbs_Face);
-  case SMDSAbs_Node:
-    return SMDS_ElemIteratorPtr(new SMDS_FaceOfNodes_MyIterator(myNodes,myNbNodes));
-  case SMDSAbs_Edge:
-    MESSAGE("Error : edge iterator for SMDS_FaceOfNodes not implemented");
-    break;
-  default:
-    return SMDS_ElemIteratorPtr
-      (new SMDS_IteratorOfElements
-       (this,type,SMDS_ElemIteratorPtr
-        (new SMDS_FaceOfNodes_MyIterator(myNodes,myNbNodes))));
-  }
-  return SMDS_ElemIteratorPtr();
-}
-
-SMDS_FaceOfNodes::SMDS_FaceOfNodes(const SMDS_MeshNode* node1,
-                                   const SMDS_MeshNode* node2,
-                                   const SMDS_MeshNode* node3)
-{
-       myNbNodes = 3;
-       myNodes[0]=node1;
-       myNodes[1]=node2;
-       myNodes[2]=node3;
-       myNodes[3]=0;
-}
-
-SMDS_FaceOfNodes::SMDS_FaceOfNodes(const SMDS_MeshNode* node1,
-                                   const SMDS_MeshNode* node2,
-                                   const SMDS_MeshNode* node3,
-                                   const SMDS_MeshNode* node4)
-{
-       myNbNodes = 4;
-       myNodes[0]=node1;
-       myNodes[1]=node2;
-       myNodes[2]=node3;
-       myNodes[3]=node4;       
-}
-bool SMDS_FaceOfNodes::ChangeNodes(const SMDS_MeshNode* nodes[],
-                                   const int            nbNodes)
-{
-  myNbNodes = nbNodes;
-  myNodes[0]=nodes[0];
-  myNodes[1]=nodes[1];
-  myNodes[2]=nodes[2];
-  if (nbNodes == 4)
-    myNodes[3]=nodes[3];
-  else if (nbNodes != 3)
-    return false;
-
-  return true;
-}
-
-/*bool operator<(const SMDS_FaceOfNodes& f1, const SMDS_FaceOfNodes& f2)
-{
-       set<SMDS_MeshNode> set1,set2;
-       SMDS_ElemIteratorPtr it;
-       const SMDS_MeshNode * n;
-
-       it=f1.nodesIterator();
-
-       while(it->more())
-       {
-               n=static_cast<const SMDS_MeshNode *>(it->next());
-               set1.insert(*n);
-       }
-
-       delete it;
-       it=f2.nodesIterator();
-       
-       while(it->more())
-       {       
-               n=static_cast<const SMDS_MeshNode *>(it->next());
-               set2.insert(*n);
-       }
-
-       delete it;
-       return set1<set2;       
-
-}*/
-
diff --git a/src/SMDS/SMDS_FaceOfNodes.hxx b/src/SMDS/SMDS_FaceOfNodes.hxx
deleted file mode 100644 (file)
index 2901951..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _SMDS_FaceOfNodes_HeaderFile
-#define _SMDS_FaceOfNodes_HeaderFile
-
-#include "SMDS_MeshFace.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "SMDS_Iterator.hxx"
-
-#include <iostream>
-
-class SMDS_FaceOfNodes:public SMDS_MeshFace
-{
-  public:
-       void Print(std::ostream & OS) const;
-       SMDS_FaceOfNodes(const SMDS_MeshNode* node1,
-                         const SMDS_MeshNode* node2,
-                         const SMDS_MeshNode* node3);
-       SMDS_FaceOfNodes(const SMDS_MeshNode* node1,
-                         const SMDS_MeshNode* node2,
-                         const SMDS_MeshNode* node3,
-                         const SMDS_MeshNode* node4);
-        bool ChangeNodes(const SMDS_MeshNode* nodes[],
-                         const int            nbNodes);
-       int NbEdges() const;
-       int NbFaces() const;
-       int NbNodes() const;
-  protected:
-       SMDS_ElemIteratorPtr
-               elementsIterator(SMDSAbs_ElementType type) const;
-
-  private:
-       const SMDS_MeshNode* myNodes[4];
-        int                  myNbNodes;
-
-};
-
-#endif
diff --git a/src/SMDS/SMDS_FacePosition.cxx b/src/SMDS/SMDS_FacePosition.cxx
deleted file mode 100644 (file)
index c97e64f..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_FacePosition.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#include "SMDS_FacePosition.hxx"
-
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : SMDS_FacePosition
-//purpose  : 
-//=======================================================================
-
-SMDS_FacePosition::SMDS_FacePosition(const int aEdgeId,
-                                    const double aUParam,
-                                    const double aVParam)
-  :SMDS_Position(aEdgeId),
-   myUParameter(aUParam),myVParameter(aVParam)
-{
-}
-
-//=======================================================================
-//function : Coords
-//purpose  : 
-//=======================================================================
-const double *SMDS_FacePosition::Coords() const
-{
-       static double origin[]={0,0,0};
-       MESSAGE("SMDS_EdgePosition::Coords not implemented");
-       return origin;
-}
-
-/**
-*/
-SMDS_TypeOfPosition SMDS_FacePosition::GetTypeOfPosition() const
-{
-       return SMDS_TOP_FACE;
-}
-
-void SMDS_FacePosition::SetUParameter(double aUparam)
-{
-       myUParameter = aUparam;
-}
-
-//=======================================================================
-//function : SetVParameter
-//purpose  : 
-//=======================================================================
-
-void SMDS_FacePosition::SetVParameter(double aVparam)
-{
-       myVParameter = aVparam;
-}
-
-//=======================================================================
-//function : GetUParameter
-//purpose  : 
-//=======================================================================
-
-double SMDS_FacePosition::GetUParameter() const 
-{
-       return myUParameter;
-}
-
-//=======================================================================
-//function : GetVParameter
-//purpose  : 
-//=======================================================================
-
-double SMDS_FacePosition::GetVParameter() const 
-{
-       return myVParameter;
-}
diff --git a/src/SMDS/SMDS_FacePosition.hxx b/src/SMDS/SMDS_FacePosition.hxx
deleted file mode 100644 (file)
index 8ca7413..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_FacePosition.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_FacePosition_HeaderFile
-#define _SMDS_FacePosition_HeaderFile
-
-#include "SMDS_Position.hxx"
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-class SMDS_WNT_EXPORT SMDS_FacePosition:public SMDS_Position
-{
-
-  public:
-       SMDS_FacePosition(int aFaceId=0, double aUParam=0,
-               double aVParam=0);
-       const virtual double * Coords() const;
-       SMDS_TypeOfPosition GetTypeOfPosition() const;
-       void SetUParameter(double aUparam);
-       void SetVParameter(double aVparam);
-       double GetUParameter() const;
-       double GetVParameter() const;
-
-  private:
-       double myUParameter;
-       double myVParameter;
-};
-#endif
diff --git a/src/SMDS/SMDS_Iterator.hxx b/src/SMDS/SMDS_Iterator.hxx
deleted file mode 100644 (file)
index 264438c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _SMDS_Iterator_HeaderFile
-#define _SMDS_Iterator_HeaderFile
-
-///////////////////////////////////////////////////////////////////////////////
-///Abstract class for iterators
-///@author Jerome Robert
-///////////////////////////////////////////////////////////////////////////////
-template<typename VALUE> class SMDS_Iterator
-{
-  public:
-       /// Return true if and only if there are other object in this iterator
-       virtual bool more()=0;
-       
-       /// Return the current object and step to the next one
-       virtual VALUE next()=0;
-       
-       /// Delete the current element and step to the next one
-       virtual void remove(){}
-       
-       /// Provide virtual destructor just for case if some derived iterator
-        /// must have a destructor
-       virtual ~SMDS_Iterator(){}
-};
-
-#endif
diff --git a/src/SMDS/SMDS_IteratorOfElements.cxx b/src/SMDS/SMDS_IteratorOfElements.cxx
deleted file mode 100644 (file)
index 472ae0d..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_IteratorOfElements.hxx"
-
-bool SMDS_IteratorOfElements::subMore()
-{
-       if((t2Iterator.get()==NULL)||(!t2Iterator->more()))
-       {
-               if(t1Iterator->more())
-               {
-                       t2Iterator=t1Iterator->next()->elementsIterator(myType);
-                       return subMore();
-               }
-               else return false;
-       }
-       else return true;
-}
-
-const SMDS_MeshElement * SMDS_IteratorOfElements::subNext()
-{
-       if((t2Iterator.get()==NULL)||(!t2Iterator->more()))
-               if(t1Iterator->more())
-                       t2Iterator=t1Iterator->next()->elementsIterator(myType);
-       return t2Iterator->next();
-}
-
-/////////////////////////////////////////////////////////////////////////////
-/// Create an iterator which look for elements of type type which are linked 
-/// to the element element. it is the iterator to get connectivity of element
-//////////////////////////////////////////////////////////////////////////////
-SMDS_IteratorOfElements::SMDS_IteratorOfElements(const SMDS_MeshElement * element,
-                                                 SMDSAbs_ElementType type,
-                                                 const SMDS_ElemIteratorPtr& it)
-     : t1Iterator(it),
-       t2Iterator(SMDS_ElemIteratorPtr((SMDS_ElemIterator*)NULL)),
-       myType(type), myElement(element),
-       myProxyElement(NULL)
-{
-       while(subMore())
-               alreadyReturnedElements.insert(subNext());
-       itAlreadyReturned= alreadyReturnedElements.begin();
-       switch(myElement->GetType())
-       {
-       case SMDSAbs_Node: 
-       case SMDSAbs_Edge: myReverseIteration=true; break;
-       case SMDSAbs_Face: myReverseIteration=(type==SMDSAbs_Volume); break;
-       default: myReverseIteration=false;
-       }       
-}
-
-bool SMDS_IteratorOfElements::more()
-{
-       if(myProxyElement==NULL)
-       {
-               while(itAlreadyReturned!=alreadyReturnedElements.end())
-               {
-                       myProxyElement=*itAlreadyReturned;
-                       itAlreadyReturned++;    
-
-                       if(myReverseIteration)
-                       {
-                               SMDS_ElemIteratorPtr it=
-                                       myProxyElement->elementsIterator(myElement->GetType());
-                               while(it->more())
-                               {                               
-                                       if(it->next()==myElement) return true;
-                               }
-                       }
-                       else return true;
-               }
-               myProxyElement=NULL;
-               return false;
-       }
-       else return true;
-}
-
-const SMDS_MeshElement * SMDS_IteratorOfElements::next()
-{
-       more();
-       const SMDS_MeshElement *e=myProxyElement;
-       myProxyElement=NULL;
-       return e;
-}
diff --git a/src/SMDS/SMDS_IteratorOfElements.hxx b/src/SMDS/SMDS_IteratorOfElements.hxx
deleted file mode 100644 (file)
index faf777d..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "SMDS_Iterator.hxx"
-#include "SMDS_MeshElement.hxx"
-#include <set>
-
-
-class SMDS_IteratorOfElements:public SMDS_ElemIterator
-{
-  public:
-/////////////////////////////////////////////////////////////////////////////
-/// Create an iterator which look for elements of type type which are linked 
-/// to the element element. it is the iterator to get connectivity of element
-//////////////////////////////////////////////////////////////////////////////
-       SMDS_IteratorOfElements(const SMDS_MeshElement * element,
-                                SMDSAbs_ElementType type,
-                                const SMDS_ElemIteratorPtr& it);
-       bool more();
-       const SMDS_MeshElement * next();
-
-  private:
-       SMDS_ElemIteratorPtr t2Iterator;
-       SMDS_ElemIteratorPtr t1Iterator;
-       SMDSAbs_ElementType myType;     
-       const SMDS_MeshElement * myProxyElement;
-       const SMDS_MeshElement * myElement;             
-       bool myReverseIteration;
-
-       std::set<const SMDS_MeshElement*> alreadyReturnedElements;
-       std::set<const SMDS_MeshElement*>::iterator itAlreadyReturned;  
-       bool subMore();
-       const SMDS_MeshElement * subNext();
-};
diff --git a/src/SMDS/SMDS_Mesh.cxx b/src/SMDS/SMDS_Mesh.cxx
deleted file mode 100644 (file)
index 6381e54..0000000
+++ /dev/null
@@ -1,2203 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "utilities.h"
-#include "SMDS_Mesh.hxx"
-#include "SMDS_VolumeOfNodes.hxx"
-#include "SMDS_VolumeOfFaces.hxx"
-#include "SMDS_FaceOfNodes.hxx"
-#include "SMDS_FaceOfEdges.hxx"
-#include "SMDS_PolyhedralVolumeOfNodes.hxx"
-#include "SMDS_PolygonalFaceOfNodes.hxx"
-
-#include <algorithm>
-#include <map>
-using namespace std;
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create a new mesh object
-///////////////////////////////////////////////////////////////////////////////
-SMDS_Mesh::SMDS_Mesh()
-       :myParent(NULL),
-        myNodeIDFactory(new SMDS_MeshElementIDFactory()),
-       myElementIDFactory(new SMDS_MeshElementIDFactory()),
-       myHasConstructionEdges(false), myHasConstructionFaces(false),
-       myHasInverseElements(true)
-{
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create a new child mesh
-/// Note that the tree structure of SMDS_Mesh seems to be unused in this version
-/// (2003-09-08) of SMESH
-///////////////////////////////////////////////////////////////////////////////
-SMDS_Mesh::SMDS_Mesh(SMDS_Mesh * parent)
-       :myParent(parent), myNodeIDFactory(parent->myNodeIDFactory),
-       myElementIDFactory(parent->myElementIDFactory),
-       myHasConstructionEdges(false), myHasConstructionFaces(false),
-       myHasInverseElements(true)
-{
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a submesh and add it to the current mesh
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_Mesh *SMDS_Mesh::AddSubMesh()
-{
-       SMDS_Mesh *submesh = new SMDS_Mesh(this);
-       myChildren.insert(myChildren.end(), submesh);
-       return submesh;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///create a MeshNode and add it to the current Mesh
-///An ID is automatically assigned to the node.
-///@return : The created node
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshNode * SMDS_Mesh::AddNode(double x, double y, double z)
-{
-  return SMDS_Mesh::AddNodeWithID(x,y,z,myNodeIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///create a MeshNode and add it to the current Mesh
-///@param ID : The ID of the MeshNode to create
-///@return : The created node or NULL if a node with this ID already exists
-///////////////////////////////////////////////////////////////////////////////
-SMDS_MeshNode * SMDS_Mesh::AddNodeWithID(double x, double y, double z, int ID)
-{
-  // find the MeshNode corresponding to ID
-  const SMDS_MeshElement *node = myNodeIDFactory->MeshElement(ID);
-  if(!node){
-    SMDS_MeshNode * node=new SMDS_MeshNode(x, y, z);
-    myNodes.Add(node);
-    myNodeIDFactory->BindID(ID,node);
-    return node;
-  }else
-    return NULL;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// create a MeshEdge and add it to the current Mesh
-/// @return : The created MeshEdge
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshEdge* SMDS_Mesh::AddEdgeWithID(int idnode1, int idnode2, int ID) 
-{
-  SMDS_MeshNode * node1 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode1);
-  SMDS_MeshNode * node2 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode2);
-  if(!node1 || !node2) return NULL;
-  return SMDS_Mesh::AddEdgeWithID(node1, node2, ID);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// create a MeshEdge and add it to the current Mesh
-/// @return : The created MeshEdge
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshEdge* SMDS_Mesh::AddEdge(const SMDS_MeshNode * node1,
-                                 const SMDS_MeshNode * node2)
-{
-  return SMDS_Mesh::AddEdgeWithID(node1, node2, myElementIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create a new edge and at it to the mesh
-/// @param idnode1 ID of the first node
-/// @param idnode2 ID of the second node
-/// @param ID ID of the edge to create
-/// @return The created edge or NULL if an element with this ID already exists or
-/// if input nodes are not found.
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshEdge* SMDS_Mesh::AddEdgeWithID(const SMDS_MeshNode * n1,
-                                       const SMDS_MeshNode * n2, 
-                                       int ID)
-{
-  SMDS_MeshEdge * edge=new SMDS_MeshEdge(n1,n2);
-  if(myElementIDFactory->BindID(ID, edge)) {
-    SMDS_MeshNode *node1,*node2;
-    node1=const_cast<SMDS_MeshNode*>(n1);
-    node2=const_cast<SMDS_MeshNode*>(n2);
-    node1->AddInverseElement(edge);
-    node2->AddInverseElement(edge);            
-    myEdges.Add(edge);
-    return edge;
-  } 
-  else {
-    delete edge;
-    return NULL;
-  }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a triangle defined by its nodes. An ID is automatically affected to the
-/// Created face
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFace(const SMDS_MeshNode * n1,
-                                 const SMDS_MeshNode * n2,
-                                 const SMDS_MeshNode * n3)
-{
-  return SMDS_Mesh::AddFaceWithID(n1,n2,n3, myElementIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a triangle defined by its nodes IDs
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(int idnode1, int idnode2, int idnode3, int ID)
-{
-  SMDS_MeshNode * node1 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode1);
-  SMDS_MeshNode * node2 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode2);
-  SMDS_MeshNode * node3 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode3);
-  if(!node1 || !node2 || !node3) return NULL;
-  return SMDS_Mesh::AddFaceWithID(node1, node2, node3, ID);    
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a triangle defined by its nodes
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
-                                        const SMDS_MeshNode * n2,
-                                        const SMDS_MeshNode * n3,
-                                        int ID)
-{
-  SMDS_MeshFace * face=createTriangle(n1, n2, n3);
-
-  if (!registerElement(ID, face)) {
-    RemoveElement(face, false);
-    face = NULL;
-  }
-  return face;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a quadrangle defined by its nodes. An ID is automatically affected to the
-/// created face
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFace(const SMDS_MeshNode * n1,
-                                 const SMDS_MeshNode * n2,
-                                 const SMDS_MeshNode * n3,
-                                 const SMDS_MeshNode * n4)
-{
-  return SMDS_Mesh::AddFaceWithID(n1,n2,n3, n4, myElementIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a quadrangle defined by its nodes IDs
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(int idnode1, 
-                                       int idnode2, 
-                                       int idnode3,
-                                       int idnode4, 
-                                       int ID)
-{
-  SMDS_MeshNode *node1, *node2, *node3, *node4;
-  node1 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode1);
-  node2 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode2);
-  node3 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode3);
-  node4 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode4);
-  if(!node1 || !node2 || !node3 || !node4) return NULL;
-  return SMDS_Mesh::AddFaceWithID(node1, node2, node3, node4, ID);     
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a quadrangle defined by its nodes
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
-                                        const SMDS_MeshNode * n2,
-                                        const SMDS_MeshNode * n3,
-                                        const SMDS_MeshNode * n4,
-                                        int ID)
-{
-  SMDS_MeshFace * face=createQuadrangle(n1, n2, n3, n4);
-
-  if (!registerElement(ID, face)) {
-    RemoveElement(face, false);
-    face = NULL;
-  }
-  return face;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a triangle defined by its edges. An ID is automatically assigned to the
-/// Created face
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFace(const SMDS_MeshEdge * e1,
-                                  const SMDS_MeshEdge * e2,
-                                  const SMDS_MeshEdge * e3)
-{
-  if (!hasConstructionEdges())
-    return NULL;
-  return AddFaceWithID(e1,e2,e3, myElementIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a triangle defined by its edges
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshEdge * e1,
-                                        const SMDS_MeshEdge * e2,
-                                        const SMDS_MeshEdge * e3,
-                                        int ID)
-{
-  if (!hasConstructionEdges())
-    return NULL;
-  SMDS_MeshFace * face = new SMDS_FaceOfEdges(e1,e2,e3);
-  myFaces.Add(face);
-
-  if (!registerElement(ID, face)) {
-    RemoveElement(face, false);
-    face = NULL;
-  }
-  return face;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a quadrangle defined by its edges. An ID is automatically assigned to the
-/// Created face
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFace(const SMDS_MeshEdge * e1,
-                                  const SMDS_MeshEdge * e2,
-                                  const SMDS_MeshEdge * e3,
-                                  const SMDS_MeshEdge * e4)
-{
-  if (!hasConstructionEdges())
-    return NULL;
-  return AddFaceWithID(e1,e2,e3,e4, myElementIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a quadrangle defined by its edges
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshEdge * e1,
-                                        const SMDS_MeshEdge * e2,
-                                        const SMDS_MeshEdge * e3,
-                                        const SMDS_MeshEdge * e4,
-                                        int ID)
-{
-  if (!hasConstructionEdges())
-    return NULL;
-  SMDS_MeshFace * face = new SMDS_FaceOfEdges(e1,e2,e3,e4);
-  myFaces.Add(face);
-
-  if (!registerElement(ID, face))
-  {
-    RemoveElement(face, false);
-    face = NULL;
-  }
-  return face;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new tetrahedron and add it to the mesh. 
-///@return The created tetrahedron 
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                     const SMDS_MeshNode * n2, 
-                                     const SMDS_MeshNode * n3,
-                                     const SMDS_MeshNode * n4)
-{
-  int ID = myElementIDFactory->GetFreeID();
-  SMDS_MeshVolume * v = SMDS_Mesh::AddVolumeWithID(n1, n2, n3, n4, ID);
-  if(v==NULL) myElementIDFactory->ReleaseID(ID);
-  return v;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new tetrahedron and add it to the mesh. 
-///@param ID The ID of the new volume
-///@return The created tetrahedron or NULL if an element with this ID already exists
-///or if input nodes are not found.
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume * SMDS_Mesh::AddVolumeWithID(int idnode1, 
-                                            int idnode2,
-                                            int idnode3, 
-                                            int idnode4, 
-                                            int ID)
-{
-  SMDS_MeshNode *node1, *node2, *node3, *node4;
-  node1 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode1);
-  node2 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode2);
-  node3 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode3);
-  node4 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode4);
-  if(!node1 || !node2 || !node3 || !node4) return NULL;
-  return SMDS_Mesh::AddVolumeWithID(node1, node2, node3, node4, ID);
-}
-       
-///////////////////////////////////////////////////////////////////////////////
-///Create a new tetrahedron and add it to the mesh. 
-///@param ID The ID of the new volume
-///@return The created tetrahedron 
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
-                                            const SMDS_MeshNode * n2,
-                                            const SMDS_MeshNode * n3,
-                                            const SMDS_MeshNode * n4,
-                                            int ID)
-{
-  SMDS_MeshVolume* volume;
-  if(hasConstructionFaces()) {
-    SMDS_MeshFace * f1=FindFaceOrCreate(n1,n2,n3);
-    SMDS_MeshFace * f2=FindFaceOrCreate(n1,n2,n4);
-    SMDS_MeshFace * f3=FindFaceOrCreate(n1,n3,n4);
-    SMDS_MeshFace * f4=FindFaceOrCreate(n2,n3,n4);
-    volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4);
-    myVolumes.Add(volume);
-  }
-  else if(hasConstructionEdges()) {
-    MESSAGE("Error : Not implemented");
-    return NULL;
-  }
-  else {
-    volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4);
-    myVolumes.Add(volume);
-  }
-
-  if (!registerElement(ID, volume)) {
-    RemoveElement(volume, false);
-    volume = NULL;
-  }
-  return volume;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new pyramid and add it to the mesh. 
-///Nodes 1,2,3 and 4 define the base of the pyramid
-///@return The created pyramid 
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                     const SMDS_MeshNode * n2, 
-                                     const SMDS_MeshNode * n3,
-                                     const SMDS_MeshNode * n4, 
-                                     const SMDS_MeshNode * n5)
-{
-  int ID = myElementIDFactory->GetFreeID();
-  SMDS_MeshVolume * v = SMDS_Mesh::AddVolumeWithID(n1, n2, n3, n4, n5, ID);
-  if(v==NULL) myElementIDFactory->ReleaseID(ID);
-  return v;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new pyramid and add it to the mesh. 
-///Nodes 1,2,3 and 4 define the base of the pyramid
-///@param ID The ID of the new volume
-///@return The created pyramid or NULL if an element with this ID already exists
-///or if input nodes are not found.
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume * SMDS_Mesh::AddVolumeWithID(int idnode1, 
-                                            int idnode2,
-                                            int idnode3, 
-                                            int idnode4, 
-                                            int idnode5, 
-                                            int ID)
-{
-  SMDS_MeshNode *node1, *node2, *node3, *node4, *node5;
-  node1 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode1);
-  node2 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode2);
-  node3 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode3);
-  node4 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode4);
-  node5 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode5);
-  if(!node1 || !node2 || !node3 || !node4 || !node5) return NULL;
-  return SMDS_Mesh::AddVolumeWithID(node1, node2, node3, node4, node5, ID);
-}
-       
-///////////////////////////////////////////////////////////////////////////////
-///Create a new pyramid and add it to the mesh.
-///Nodes 1,2,3 and 4 define the base of the pyramid
-///@param ID The ID of the new volume
-///@return The created pyramid
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
-                                            const SMDS_MeshNode * n2,
-                                            const SMDS_MeshNode * n3,
-                                            const SMDS_MeshNode * n4,
-                                            const SMDS_MeshNode * n5,
-                                            int ID)
-{
-  SMDS_MeshVolume* volume;
-  if(hasConstructionFaces()) {
-    SMDS_MeshFace * f1=FindFaceOrCreate(n1,n2,n3,n4);
-    SMDS_MeshFace * f2=FindFaceOrCreate(n1,n2,n5);
-    SMDS_MeshFace * f3=FindFaceOrCreate(n2,n3,n5);
-    SMDS_MeshFace * f4=FindFaceOrCreate(n3,n4,n5);
-    volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4);
-    myVolumes.Add(volume);
-  }
-  else if(hasConstructionEdges()) {
-    MESSAGE("Error : Not implemented");
-    return NULL;
-  }
-  else {
-    volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5);
-    myVolumes.Add(volume);
-  }
-
-  if (!registerElement(ID, volume)) {
-    RemoveElement(volume, false);
-    volume = NULL;
-  }
-  return volume;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new prism and add it to the mesh. 
-///Nodes 1,2,3 is a triangle and 1,2,5,4 a quadrangle.
-///@return The created prism 
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                     const SMDS_MeshNode * n2, 
-                                     const SMDS_MeshNode * n3,
-                                     const SMDS_MeshNode * n4, 
-                                     const SMDS_MeshNode * n5,
-                                     const SMDS_MeshNode * n6)
-{
-  int ID = myElementIDFactory->GetFreeID();
-  SMDS_MeshVolume * v = SMDS_Mesh::AddVolumeWithID(n1, n2, n3, n4, n5, n6, ID);
-  if(v==NULL) myElementIDFactory->ReleaseID(ID);
-  return v;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new prism and add it to the mesh. 
-///Nodes 1,2,3 is a triangle and 1,2,5,4 a quadrangle.
-///@param ID The ID of the new volume
-///@return The created prism or NULL if an element with this ID already exists
-///or if input nodes are not found.
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume * SMDS_Mesh::AddVolumeWithID(int idnode1, 
-                                            int idnode2,
-                                            int idnode3, 
-                                            int idnode4, 
-                                            int idnode5, 
-                                            int idnode6, 
-                                            int ID)
-{
-  SMDS_MeshNode *node1, *node2, *node3, *node4, *node5, *node6;
-  node1 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode1);
-  node2 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode2);
-  node3 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode3);
-  node4 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode4);
-  node5 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode5);
-  node6 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode6);
-  if(!node1 || !node2 || !node3 || !node4 || !node5 || !node6) return NULL;
-  return SMDS_Mesh::AddVolumeWithID(node1, node2, node3, node4, node5, node6, ID);
-}
-       
-///////////////////////////////////////////////////////////////////////////////
-///Create a new prism and add it to the mesh.
-///Nodes 1,2,3 is a triangle and 1,2,5,4 a quadrangle.
-///@param ID The ID of the new volume
-///@return The created prism
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
-                                            const SMDS_MeshNode * n2,
-                                            const SMDS_MeshNode * n3,
-                                            const SMDS_MeshNode * n4,
-                                            const SMDS_MeshNode * n5,
-                                            const SMDS_MeshNode * n6,
-                                            int ID)
-{
-  SMDS_MeshVolume* volume;
-  if(hasConstructionFaces()) {
-    SMDS_MeshFace * f1=FindFaceOrCreate(n1,n2,n3);
-    SMDS_MeshFace * f2=FindFaceOrCreate(n4,n5,n6);
-    SMDS_MeshFace * f3=FindFaceOrCreate(n1,n4,n5,n2);
-    SMDS_MeshFace * f4=FindFaceOrCreate(n2,n5,n6,n3);
-    SMDS_MeshFace * f5=FindFaceOrCreate(n3,n6,n4,n1);
-    volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5);
-    myVolumes.Add(volume);
-  }
-  else if(hasConstructionEdges()) {
-    MESSAGE("Error : Not implemented");
-    return NULL;
-  }
-  else {
-    volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5,n6);
-    myVolumes.Add(volume);
-  }
-
-  if (!registerElement(ID, volume)) {
-    RemoveElement(volume, false);
-    volume = NULL;
-  }
-  return volume;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new hexahedron and add it to the mesh. 
-///Nodes 1,2,3,4 and 5,6,7,8 are quadrangle and 5,1 and 7,3 are an edges.
-///@return The created hexahedron 
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                     const SMDS_MeshNode * n2, 
-                                     const SMDS_MeshNode * n3,
-                                     const SMDS_MeshNode * n4, 
-                                     const SMDS_MeshNode * n5,
-                                     const SMDS_MeshNode * n6, 
-                                     const SMDS_MeshNode * n7,
-                                     const SMDS_MeshNode * n8)
-{
-  int ID = myElementIDFactory->GetFreeID();
-  SMDS_MeshVolume * v = SMDS_Mesh::AddVolumeWithID(n1, n2, n3, n4, n5, n6, n7, n8, ID);
-  if(v==NULL) myElementIDFactory->ReleaseID(ID);
-  return v;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new hexahedron and add it to the mesh. 
-///Nodes 1,2,3,4 and 5,6,7,8 are quadrangle and 5,1 and 7,3 are an edges.
-///@param ID The ID of the new volume
-///@return The created hexahedron or NULL if an element with this ID already
-///exists or if input nodes are not found.
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume * SMDS_Mesh::AddVolumeWithID(int idnode1, 
-                                            int idnode2,
-                                            int idnode3, 
-                                            int idnode4, 
-                                            int idnode5, 
-                                            int idnode6, 
-                                            int idnode7,
-                                            int idnode8, 
-                                            int ID)
-{
-  SMDS_MeshNode *node1, *node2, *node3, *node4, *node5, *node6, *node7, *node8;
-  node1 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode1);
-  node2 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode2);
-  node3 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode3);
-  node4 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode4);
-  node5 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode5);
-  node6 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode6);
-  node7 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode7);
-  node8 = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(idnode8);
-  if(!node1 || !node2 || !node3 || !node4 || !node5 || !node6 || !node7 || !node8)
-    return NULL;
-  return SMDS_Mesh::AddVolumeWithID(node1, node2, node3, node4, node5, node6,
-                                    node7, node8, ID);
-}
-       
-///////////////////////////////////////////////////////////////////////////////
-///Create a new hexahedron and add it to the mesh.
-///Nodes 1,2,3,4 and 5,6,7,8 are quadrangle and 5,1 and 7,3 are an edges.
-///@param ID The ID of the new volume
-///@return The created prism or NULL if an element with this ID already exists
-///or if input nodes are not found.
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
-                                            const SMDS_MeshNode * n2,
-                                            const SMDS_MeshNode * n3,
-                                            const SMDS_MeshNode * n4,
-                                            const SMDS_MeshNode * n5,
-                                            const SMDS_MeshNode * n6,
-                                            const SMDS_MeshNode * n7,
-                                            const SMDS_MeshNode * n8,
-                                            int ID)
-{
-  SMDS_MeshVolume* volume;
-  if(hasConstructionFaces()) {
-    SMDS_MeshFace * f1=FindFaceOrCreate(n1,n2,n3,n4);
-    SMDS_MeshFace * f2=FindFaceOrCreate(n5,n6,n7,n8);
-    SMDS_MeshFace * f3=FindFaceOrCreate(n1,n4,n8,n5);
-    SMDS_MeshFace * f4=FindFaceOrCreate(n1,n2,n6,n5);
-    SMDS_MeshFace * f5=FindFaceOrCreate(n2,n3,n7,n6);
-    SMDS_MeshFace * f6=FindFaceOrCreate(n3,n4,n8,n7);
-    volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5,f6);
-    myVolumes.Add(volume);
-  }
-  else if(hasConstructionEdges()) {
-    MESSAGE("Error : Not implemented");
-    return NULL;
-  }
-  else {
-//    volume=new SMDS_HexahedronOfNodes(n1,n2,n3,n4,n5,n6,n7,n8);
-    volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5,n6,n7,n8);
-    myVolumes.Add(volume);
-  }
-
-  if (!registerElement(ID, volume)) {
-    RemoveElement(volume, false);
-    volume = NULL;
-  }
-  return volume;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new tetrahedron defined by its faces and add it to the mesh.
-///@return The created tetrahedron
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolume(const SMDS_MeshFace * f1,
-                                      const SMDS_MeshFace * f2,
-                                      const SMDS_MeshFace * f3,
-                                      const SMDS_MeshFace * f4)
-{
-  if (!hasConstructionFaces())
-    return NULL;
-  return AddVolumeWithID(f1,f2,f3,f4, myElementIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new tetrahedron defined by its faces and add it to the mesh.
-///@param ID The ID of the new volume
-///@return The created tetrahedron 
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshFace * f1,
-                                            const SMDS_MeshFace * f2,
-                                            const SMDS_MeshFace * f3,
-                                            const SMDS_MeshFace * f4,
-                                            int ID)
-{
-  if (!hasConstructionFaces())
-    return NULL;
-  SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4);
-  myVolumes.Add(volume);
-
-  if (!registerElement(ID, volume)) {
-    RemoveElement(volume, false);
-    volume = NULL;
-  }
-  return volume;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new pyramid defined by its faces and add it to the mesh.
-///@return The created pyramid
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolume(const SMDS_MeshFace * f1,
-                                      const SMDS_MeshFace * f2,
-                                      const SMDS_MeshFace * f3,
-                                      const SMDS_MeshFace * f4,
-                                      const SMDS_MeshFace * f5)
-{
-  if (!hasConstructionFaces())
-    return NULL;
-  return AddVolumeWithID(f1,f2,f3,f4,f5, myElementIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new pyramid defined by its faces and add it to the mesh.
-///@param ID The ID of the new volume
-///@return The created pyramid 
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshFace * f1,
-                                            const SMDS_MeshFace * f2,
-                                            const SMDS_MeshFace * f3,
-                                            const SMDS_MeshFace * f4,
-                                            const SMDS_MeshFace * f5,
-                                            int ID)
-{
-  if (!hasConstructionFaces())
-    return NULL;
-  SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5);
-  myVolumes.Add(volume);
-
-  if (!registerElement(ID, volume)) {
-    RemoveElement(volume, false);
-    volume = NULL;
-  }
-  return volume;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new prism defined by its faces and add it to the mesh.
-///@return The created prism
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolume(const SMDS_MeshFace * f1,
-                                      const SMDS_MeshFace * f2,
-                                      const SMDS_MeshFace * f3,
-                                      const SMDS_MeshFace * f4,
-                                      const SMDS_MeshFace * f5,
-                                      const SMDS_MeshFace * f6)
-{
-  if (!hasConstructionFaces())
-    return NULL;
-  return AddVolumeWithID(f1,f2,f3,f4,f5,f6, myElementIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a new prism defined by its faces and add it to the mesh.
-///@param ID The ID of the new volume
-///@return The created prism 
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshFace * f1,
-                                            const SMDS_MeshFace * f2,
-                                            const SMDS_MeshFace * f3,
-                                            const SMDS_MeshFace * f4,
-                                            const SMDS_MeshFace * f5,
-                                            const SMDS_MeshFace * f6,
-                                            int ID)
-{
-  if (!hasConstructionFaces())
-    return NULL;
-  SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5,f6);
-  myVolumes.Add(volume);
-
-  if (!registerElement(ID, volume)) {
-    RemoveElement(volume, false);
-    volume = NULL;
-  }
-  return volume;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a polygon defined by its nodes IDs
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddPolygonalFaceWithID (std::vector<int> nodes_ids,
-                                                  const int        ID)
-{
-  int nbNodes = nodes_ids.size();
-  std::vector<const SMDS_MeshNode*> nodes (nbNodes);
-  for (int i = 0; i < nbNodes; i++) {
-    nodes[i] = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(nodes_ids[i]);
-    if (!nodes[i]) return NULL;
-  }
-  return SMDS_Mesh::AddPolygonalFaceWithID(nodes, ID); 
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a polygon defined by its nodes
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddPolygonalFaceWithID
-                          (std::vector<const SMDS_MeshNode*> nodes,
-                           const int                         ID)
-{
-  SMDS_MeshFace * face;
-
-  if (hasConstructionEdges())
-  {
-    MESSAGE("Error : Not implemented");
-    return NULL;
-  }
-  else
-  {
-    face = new SMDS_PolygonalFaceOfNodes(nodes);
-    myFaces.Add(face);
-  }
-
-  if (!registerElement(ID, face)) {
-    RemoveElement(face, false);
-    face = NULL;
-  }
-  return face;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Add a polygon defined by its nodes.
-/// An ID is automatically affected to the created face.
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshFace* SMDS_Mesh::AddPolygonalFace (std::vector<const SMDS_MeshNode*> nodes)
-{
-  return SMDS_Mesh::AddPolygonalFaceWithID(nodes, myElementIDFactory->GetFreeID());
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create a new polyhedral volume and add it to the mesh. 
-/// @param ID The ID of the new volume
-/// @return The created volume or NULL if an element with this ID already exists
-/// or if input nodes are not found.
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume * SMDS_Mesh::AddPolyhedralVolumeWithID
-                             (std::vector<int> nodes_ids,
-                              std::vector<int> quantities,
-                              const int        ID)
-{
-  int nbNodes = nodes_ids.size();
-  std::vector<const SMDS_MeshNode*> nodes (nbNodes);
-  for (int i = 0; i < nbNodes; i++) {
-    nodes[i] = (SMDS_MeshNode *)myNodeIDFactory->MeshElement(nodes_ids[i]);
-    if (!nodes[i]) return NULL;
-  }
-  return SMDS_Mesh::AddPolyhedralVolumeWithID(nodes, quantities, ID);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create a new polyhedral volume and add it to the mesh. 
-/// @param ID The ID of the new volume
-/// @return The created  volume
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddPolyhedralVolumeWithID
-                            (std::vector<const SMDS_MeshNode*> nodes,
-                             std::vector<int>                  quantities,
-                             const int                         ID)
-{
-  SMDS_MeshVolume* volume;
-  if (hasConstructionFaces()) {
-    MESSAGE("Error : Not implemented");
-    return NULL;
-  } else if (hasConstructionEdges()) {
-    MESSAGE("Error : Not implemented");
-    return NULL;
-  } else {
-    volume = new SMDS_PolyhedralVolumeOfNodes(nodes, quantities);
-    myVolumes.Add(volume);
-  }
-
-  if (!registerElement(ID, volume)) {
-    RemoveElement(volume, false);
-    volume = NULL;
-  }
-  return volume;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create a new polyhedral volume and add it to the mesh. 
-/// @return The created  volume
-///////////////////////////////////////////////////////////////////////////////
-
-SMDS_MeshVolume* SMDS_Mesh::AddPolyhedralVolume
-                            (std::vector<const SMDS_MeshNode*> nodes,
-                             std::vector<int>                  quantities)
-{
-  int ID = myElementIDFactory->GetFreeID();
-  SMDS_MeshVolume * v = SMDS_Mesh::AddPolyhedralVolumeWithID(nodes, quantities, ID);
-  if (v == NULL) myElementIDFactory->ReleaseID(ID);
-  return v;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Registers element with the given ID, maintains inverse connections
-///////////////////////////////////////////////////////////////////////////////
-bool SMDS_Mesh::registerElement(int ID, SMDS_MeshElement * element)
-{
-  if (myElementIDFactory->BindID(ID, element)) {
-    SMDS_ElemIteratorPtr it = element->nodesIterator();
-    while (it->more()) {
-      SMDS_MeshNode *node = static_cast<SMDS_MeshNode*>
-        (const_cast<SMDS_MeshElement*>(it->next()));
-      node->AddInverseElement(element);
-    }
-    return true;
-  }
-  return false;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the node whose ID is 'ID'.
-///////////////////////////////////////////////////////////////////////////////
-const SMDS_MeshNode * SMDS_Mesh::FindNode(int ID) const
-{
-  return (const SMDS_MeshNode *)myNodeIDFactory->MeshElement(ID);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a triangle and add it to the current mesh. This methode do not bind a
-///ID to the create triangle.
-///////////////////////////////////////////////////////////////////////////////
-SMDS_MeshFace * SMDS_Mesh::createTriangle(const SMDS_MeshNode * node1,
-                                          const SMDS_MeshNode * node2,
-                                          const SMDS_MeshNode * node3)
-{
-       if(hasConstructionEdges())
-       {
-               SMDS_MeshEdge *edge1, *edge2, *edge3;
-               edge1=FindEdgeOrCreate(node1,node2);
-               edge2=FindEdgeOrCreate(node2,node3);
-               edge3=FindEdgeOrCreate(node3,node1);
-
-               SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3);
-               myFaces.Add(face);
-               return face;
-       }
-       else
-       {
-               SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3);
-               myFaces.Add(face);
-               return face;
-       }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create a quadrangle and add it to the current mesh. This methode do not bind
-///a ID to the create triangle.
-///////////////////////////////////////////////////////////////////////////////
-SMDS_MeshFace * SMDS_Mesh::createQuadrangle(const SMDS_MeshNode * node1,
-                                           const SMDS_MeshNode * node2,
-                                           const SMDS_MeshNode * node3,
-                                           const SMDS_MeshNode * node4)
-{
-       if(hasConstructionEdges())
-       {
-               SMDS_MeshEdge *edge1, *edge2, *edge3, *edge4;
-               edge1=FindEdgeOrCreate(node1,node2);
-               edge2=FindEdgeOrCreate(node2,node3);
-               edge3=FindEdgeOrCreate(node3,node4);
-               edge4=FindEdgeOrCreate(node4,node1);
-
-               SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3,edge4);
-               myFaces.Add(face);
-               return face;
-       }
-       else
-       {
-               SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3,node4);
-               myFaces.Add(face);
-               return face;
-       }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Remove a node and all the elements which own this node
-///////////////////////////////////////////////////////////////////////////////
-
-void SMDS_Mesh::RemoveNode(const SMDS_MeshNode * node)
-{
-       RemoveElement(node, true);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Remove an edge and all the elements which own this edge
-///////////////////////////////////////////////////////////////////////////////
-
-void SMDS_Mesh::RemoveEdge(const SMDS_MeshEdge * edge)
-{
-       RemoveElement(edge,true);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Remove an face and all the elements which own this face
-///////////////////////////////////////////////////////////////////////////////
-
-void SMDS_Mesh::RemoveFace(const SMDS_MeshFace * face)
-{
-       RemoveElement(face, true);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Remove a volume
-///////////////////////////////////////////////////////////////////////////////
-
-void SMDS_Mesh::RemoveVolume(const SMDS_MeshVolume * volume)
-{
-       RemoveElement(volume, true);
-}
-
-//=======================================================================
-//function : RemoveFromParent
-//purpose  :
-//=======================================================================
-
-bool SMDS_Mesh::RemoveFromParent()
-{
-       if (myParent==NULL) return false;
-       else return (myParent->RemoveSubMesh(this));
-}
-
-//=======================================================================
-//function : RemoveSubMesh
-//purpose  :
-//=======================================================================
-
-bool SMDS_Mesh::RemoveSubMesh(const SMDS_Mesh * aMesh)
-{
-       bool found = false;
-
-       list<SMDS_Mesh *>::iterator itmsh=myChildren.begin();
-       for (; itmsh!=myChildren.end() && !found; itmsh++)
-       {
-               SMDS_Mesh * submesh = *itmsh;
-               if (submesh == aMesh)
-               {
-                       found = true;
-                       myChildren.erase(itmsh);
-               }
-       }
-
-       return found;
-}
-
-//=======================================================================
-//function : ChangeElementNodes
-//purpose  : 
-//=======================================================================
-
-bool SMDS_Mesh::ChangeElementNodes(const SMDS_MeshElement * elem,
-                                   const SMDS_MeshNode    * nodes[],
-                                   const int                nbnodes)
-{
-  // keep current nodes of elem
-  set<const SMDS_MeshElement*> oldNodes;
-  SMDS_ElemIteratorPtr itn = elem->nodesIterator();
-  while(itn->more())
-    oldNodes.insert(  itn->next() );
-
-  // change nodes
-  bool Ok = false;
-  switch ( elem->GetType() )
-  {
-  case SMDSAbs_Edge: {
-    if ( nbnodes == 2 ) {
-      const SMDS_MeshEdge* edge = dynamic_cast<const SMDS_MeshEdge*>( elem );
-      if ( edge )
-        Ok = const_cast<SMDS_MeshEdge*>( edge )->ChangeNodes( nodes[0], nodes[1] );
-    }
-    break;
-  }
-  case SMDSAbs_Face: {
-    const SMDS_FaceOfNodes* face = dynamic_cast<const SMDS_FaceOfNodes*>( elem );
-    if ( face ) {
-      Ok = const_cast<SMDS_FaceOfNodes*>( face )->ChangeNodes( nodes, nbnodes );
-    } else {
-      /// ??? begin
-      const SMDS_PolygonalFaceOfNodes* face = dynamic_cast<const SMDS_PolygonalFaceOfNodes*>(elem);
-      if (face) {
-        Ok = const_cast<SMDS_PolygonalFaceOfNodes*>(face)->ChangeNodes(nodes, nbnodes);
-      }
-      /// ??? end
-    }
-    break;
-  }
-  //case SMDSAbs_PolygonalFace: {
-  //  const SMDS_PolygonalFaceOfNodes* face = dynamic_cast<const SMDS_PolygonalFaceOfNodes*>(elem);
-  //  if (face) {
-  //    Ok = const_cast<SMDS_PolygonalFaceOfNodes*>(face)->ChangeNodes(nodes, nbnodes);
-  //  }
-  //  break;
-  //}
-  case SMDSAbs_Volume: {
-    const SMDS_VolumeOfNodes* vol = dynamic_cast<const SMDS_VolumeOfNodes*>( elem );
-    if ( vol )
-      Ok = const_cast<SMDS_VolumeOfNodes*>( vol )->ChangeNodes( nodes, nbnodes );
-    break;
-  }
-  default:
-    MESSAGE ( "WRONG ELEM TYPE");
-  }
-
-  if ( Ok ) { // update InverseElements
-
-    // AddInverseElement to new nodes
-    for ( int i = 0; i < nbnodes; i++ )
-      if ( oldNodes.find( nodes[i] ) == oldNodes.end() )
-        // new node
-        const_cast<SMDS_MeshNode*>( nodes[i] )->AddInverseElement( elem );
-      else
-        // remove from oldNodes a node that remains in elem
-        oldNodes.erase( nodes[i] );
-
-
-    // RemoveInverseElement from the nodes removed from elem
-    set<const SMDS_MeshElement*>::iterator it;
-    for ( it = oldNodes.begin(); it != oldNodes.end(); it++ )
-    {
-      SMDS_MeshNode * n = static_cast<SMDS_MeshNode *>
-        (const_cast<SMDS_MeshElement *>( *it ));
-      n->RemoveInverseElement( elem );
-    }
-  }
-
-  //MESSAGE ( "::ChangeNodes() Ok = " << Ok);
-
-  return Ok;
-}
-
-//=======================================================================
-//function : ChangePolyhedronNodes
-//purpose  : to change nodes of polyhedral volume
-//=======================================================================
-bool SMDS_Mesh::ChangePolyhedronNodes (const SMDS_MeshElement * elem,
-                                       std::vector<const SMDS_MeshNode*> nodes,
-                                       std::vector<int>                  quantities)
-{
-  if (elem->GetType() != SMDSAbs_Volume) {
-    MESSAGE("WRONG ELEM TYPE");
-    return false;
-  }
-
-  const SMDS_PolyhedralVolumeOfNodes* vol = dynamic_cast<const SMDS_PolyhedralVolumeOfNodes*>(elem);
-  if (!vol) {
-    return false;
-  }
-
-  // keep current nodes of elem
-  set<const SMDS_MeshElement*> oldNodes;
-  SMDS_ElemIteratorPtr itn = elem->nodesIterator();
-  while (itn->more()) {
-    oldNodes.insert(itn->next());
-  }
-
-  // change nodes
-  bool Ok = const_cast<SMDS_PolyhedralVolumeOfNodes*>(vol)->ChangeNodes(nodes, quantities);
-  if (!Ok) {
-    return false;
-  }
-
-  // update InverseElements
-
-  // AddInverseElement to new nodes
-  int nbnodes = nodes.size();
-  for (int i = 0; i < nbnodes; i++) {
-    if (oldNodes.find(nodes[i]) == oldNodes.end()) {
-      // new node
-      const_cast<SMDS_MeshNode*>(nodes[i])->AddInverseElement(elem);
-    } else {
-      // remove from oldNodes a node that remains in elem
-      oldNodes.erase(nodes[i]);
-    }
-  }
-
-  // RemoveInverseElement from the nodes removed from elem
-  set<const SMDS_MeshElement*>::iterator it;
-  for (it = oldNodes.begin(); it != oldNodes.end(); it++) {
-    SMDS_MeshNode * n = static_cast<SMDS_MeshNode *>
-      (const_cast<SMDS_MeshElement *>( *it ));
-    n->RemoveInverseElement(elem);
-  }
-
-  return Ok;
-}
-
-//=======================================================================
-//function : FindEdge
-//purpose  :
-//=======================================================================
-
-const SMDS_MeshEdge* SMDS_Mesh::FindEdge(int idnode1, int idnode2) const
-{
-       const SMDS_MeshNode * node1=FindNode(idnode1);
-       const SMDS_MeshNode * node2=FindNode(idnode2);
-       if((node1==NULL)||(node2==NULL)) return NULL;
-       return FindEdge(node1,node2);
-}
-
-//#include "Profiler.h"
-const SMDS_MeshEdge* SMDS_Mesh::FindEdge(const SMDS_MeshNode * node1,
-                                         const SMDS_MeshNode * node2)
-{
-       const SMDS_MeshEdge * toReturn=NULL;
-       //PROFILER_Init();
-       //PROFILER_Set();
-       SMDS_ElemIteratorPtr it1=node1->edgesIterator();
-       //PROFILER_Get(0);
-       //PROFILER_Set();
-       while(it1->more())
-       {
-               const SMDS_MeshEdge * e=static_cast<const SMDS_MeshEdge *>
-                       (it1->next());
-               SMDS_ElemIteratorPtr it2=e->nodesIterator();
-               while(it2->more())
-               {
-                       if(it2->next()->GetID()==node2->GetID())
-                       {
-                               toReturn=e;
-                               break;
-                       }
-               }
-       }
-       //PROFILER_Get(1);
-       return toReturn;
-}
-
-
-SMDS_MeshEdge* SMDS_Mesh::FindEdgeOrCreate(const SMDS_MeshNode * node1,
-       const SMDS_MeshNode * node2) 
-{
-       SMDS_MeshEdge * toReturn=NULL;
-       toReturn=const_cast<SMDS_MeshEdge*>(FindEdge(node1,node2));
-       if(toReturn==NULL)      
-       {
-          toReturn=new SMDS_MeshEdge(node1,node2);
-          myEdges.Add(toReturn);
-       } 
-       return toReturn;
-}
-
-//=======================================================================
-//function : FindFace
-//purpose  :
-//=======================================================================
-
-const SMDS_MeshFace* SMDS_Mesh::FindFace(int idnode1, int idnode2,
-       int idnode3) const
-{
-       const SMDS_MeshNode * node1=FindNode(idnode1);
-       const SMDS_MeshNode * node2=FindNode(idnode2);
-       const SMDS_MeshNode * node3=FindNode(idnode3);
-       if((node1==NULL)||(node2==NULL)||(node3==NULL)) return NULL;
-       return FindFace(node1, node2, node3);
-}
-
-const SMDS_MeshFace* SMDS_Mesh::FindFace(
-               const SMDS_MeshNode *node1,
-               const SMDS_MeshNode *node2,
-               const SMDS_MeshNode *node3)
-{
-       const SMDS_MeshFace * face;
-       const SMDS_MeshElement * node;
-       bool node2found, node3found;
-
-       SMDS_ElemIteratorPtr it1=node1->facesIterator();
-       while(it1->more())
-       {
-               face=static_cast<const SMDS_MeshFace*>(it1->next());
-               if(face->NbNodes()!=3) continue;
-               SMDS_ElemIteratorPtr it2=face->nodesIterator();
-               node2found=false;
-               node3found=false;
-               while(it2->more())
-               {
-                       node=it2->next();
-                       if(node->GetID()==node2->GetID()) node2found=true;
-                       if(node->GetID()==node3->GetID()) node3found=true;
-               }
-               if(node2found&&node3found)
-                       return face;
-       }
-       return NULL;
-}
-
-SMDS_MeshFace* SMDS_Mesh::FindFaceOrCreate(
-               const SMDS_MeshNode *node1,
-               const SMDS_MeshNode *node2,
-               const SMDS_MeshNode *node3)
-{
-       SMDS_MeshFace * toReturn=NULL;
-       toReturn=const_cast<SMDS_MeshFace*>(FindFace(node1,node2,node3));
-       if(toReturn==NULL)
-       {
-         toReturn=createTriangle(node1,node2,node3);
-       }
-       return toReturn;
-}
-
-//=======================================================================
-//function : FindFace
-//purpose  :
-//=======================================================================
-
-const SMDS_MeshFace* SMDS_Mesh::FindFace(int idnode1, int idnode2, int idnode3,
-       int idnode4) const
-{
-       const SMDS_MeshNode * node1=FindNode(idnode1);
-       const SMDS_MeshNode * node2=FindNode(idnode2);
-       const SMDS_MeshNode * node3=FindNode(idnode3);
-       const SMDS_MeshNode * node4=FindNode(idnode4);
-       if((node1==NULL)||(node2==NULL)||(node3==NULL)||(node4==NULL)) return NULL;
-       return FindFace(node1, node2, node3, node4);
-}
-
-const SMDS_MeshFace* SMDS_Mesh::FindFace(
-               const SMDS_MeshNode *node1,
-               const SMDS_MeshNode *node2,
-               const SMDS_MeshNode *node3,
-               const SMDS_MeshNode *node4)
-{
-       const SMDS_MeshFace * face;
-       const SMDS_MeshElement * node;
-       bool node2found, node3found, node4found;
-       SMDS_ElemIteratorPtr it1=node1->facesIterator();
-       while(it1->more())
-       {
-               face=static_cast<const SMDS_MeshFace *>(it1->next());
-               if(face->NbNodes()!=4) continue;
-               SMDS_ElemIteratorPtr it2=face->nodesIterator();
-               node2found=false;
-               node3found=false;
-               node4found=false;
-               while(it2->more())
-               {
-                       node=it2->next();
-                       if(node->GetID()==node2->GetID()) node2found=true;
-                       if(node->GetID()==node3->GetID()) node3found=true;
-                       if(node->GetID()==node4->GetID()) node4found=true;
-               }
-               if(node2found&&node3found&&node4found)
-                       return face;
-       }
-       return NULL;
-}
-
-SMDS_MeshFace* SMDS_Mesh::FindFaceOrCreate(
-               const SMDS_MeshNode *node1,
-               const SMDS_MeshNode *node2,
-               const SMDS_MeshNode *node3,
-               const SMDS_MeshNode *node4)
-{
-       SMDS_MeshFace * toReturn=NULL;
-       toReturn=const_cast<SMDS_MeshFace*>(FindFace(node1,node2,node3,node4));
-       if(toReturn==NULL)
-       {
-         toReturn=createQuadrangle(node1,node2,node3,node4);
-       }
-       return toReturn;
-}
-
-//=======================================================================
-//function : FindElement
-//purpose  :
-//=======================================================================
-
-const SMDS_MeshElement* SMDS_Mesh::FindElement(int IDelem) const
-{
-       return myElementIDFactory->MeshElement(IDelem);
-}
-
-//=======================================================================
-//function : FindFace
-//purpose  : find polygon
-//=======================================================================
-
-const SMDS_MeshFace* SMDS_Mesh::FindFace (std::vector<int> nodes_ids) const
-{
-  int nbnodes = nodes_ids.size();
-  std::vector<const SMDS_MeshNode *> poly_nodes (nbnodes);
-  for (int inode = 0; inode < nbnodes; inode++) {
-    const SMDS_MeshNode * node = FindNode(nodes_ids[inode]);
-    if (node == NULL) return NULL;
-  }
-  return FindFace(poly_nodes);
-}
-
-const SMDS_MeshFace* SMDS_Mesh::FindFace (std::vector<const SMDS_MeshNode *> nodes)
-{
-  int nbNodes = nodes.size();
-  if (nbNodes < 1) return NULL;
-
-  bool isFound = true;
-  const SMDS_MeshFace * face;
-  set<const SMDS_MeshFace *> faces;
-
-  for (int inode = 0; inode < nbNodes && isFound; inode++) {
-    set<const SMDS_MeshFace *> new_faces;
-
-    SMDS_ElemIteratorPtr itF = nodes[inode]->facesIterator();
-    while (itF->more()) {
-      face = static_cast<const SMDS_MeshFace *>(itF->next());
-      if (face->NbNodes() == nbNodes) {
-        if (inode == 0 || faces.find(face) != faces.end()) {
-          new_faces.insert(face);
-        }
-      }
-    }
-    faces = new_faces;
-    if (new_faces.size() == 0) {
-      isFound = false;
-    }
-  }
-
-  if (isFound)
-    return face;
-
-  return NULL;
-}
-
-//=======================================================================
-//function : DumpNodes
-//purpose  : 
-//=======================================================================
-
-void SMDS_Mesh::DumpNodes() const
-{
-       MESSAGE("dump nodes of mesh : ");
-       SMDS_NodeIteratorPtr itnode=nodesIterator();
-       while(itnode->more()) MESSAGE(itnode->next());
-}
-
-//=======================================================================
-//function : DumpEdges
-//purpose  : 
-//=======================================================================
-
-void SMDS_Mesh::DumpEdges() const
-{
-       MESSAGE("dump edges of mesh : ");
-       SMDS_EdgeIteratorPtr itedge=edgesIterator();
-       while(itedge->more()) MESSAGE(itedge->next());
-}
-
-//=======================================================================
-//function : DumpFaces
-//purpose  : 
-//=======================================================================
-
-void SMDS_Mesh::DumpFaces() const
-{
-       MESSAGE("dump faces of mesh : ");
-       SMDS_FaceIteratorPtr itface=facesIterator();
-       while(itface->more()) MESSAGE(itface->next());
-}
-
-//=======================================================================
-//function : DumpVolumes
-//purpose  : 
-//=======================================================================
-
-void SMDS_Mesh::DumpVolumes() const
-{
-       MESSAGE("dump volumes of mesh : ");
-       SMDS_VolumeIteratorPtr itvol=volumesIterator();
-       while(itvol->more()) MESSAGE(itvol->next());
-}
-
-//=======================================================================
-//function : DebugStats
-//purpose  : 
-//=======================================================================
-
-void SMDS_Mesh::DebugStats() const
-{
-       MESSAGE("Debug stats of mesh : ");
-
-       MESSAGE("===== NODES ====="<<NbNodes());
-       MESSAGE("===== EDGES ====="<<NbEdges());
-       MESSAGE("===== FACES ====="<<NbFaces());
-       MESSAGE("===== VOLUMES ====="<<NbVolumes());
-
-       MESSAGE("End Debug stats of mesh ");
-
-       //#ifdef DEB
-       
-       SMDS_NodeIteratorPtr itnode=nodesIterator();
-       int sizeofnodes = 0;
-       int sizeoffaces = 0;
-
-       while(itnode->more())
-       {
-               const SMDS_MeshNode *node = itnode->next();
-
-               sizeofnodes += sizeof(*node);
-               
-               SMDS_ElemIteratorPtr it = node->GetInverseElementIterator();
-               while(it->more())
-               {
-                       const SMDS_MeshElement *me = it->next();
-                       sizeofnodes += sizeof(me);
-               }
-
-       }
-
-       SMDS_FaceIteratorPtr itface=facesIterator();
-       while(itface->more())
-       {
-               const SMDS_MeshElement *face = itface->next();          
-               sizeoffaces += sizeof(*face);
-
-       }
-       MESSAGE("total size of node elements = " << sizeofnodes);;
-       MESSAGE("total size of face elements = " << sizeoffaces);;
-
-       //#endif
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of nodes
-///////////////////////////////////////////////////////////////////////////////
-int SMDS_Mesh::NbNodes() const
-{
-       return myNodes.Size();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of edges (including construction edges)
-///////////////////////////////////////////////////////////////////////////////
-int SMDS_Mesh::NbEdges() const
-{
-       return myEdges.Size();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of faces (including construction faces)
-///////////////////////////////////////////////////////////////////////////////
-int SMDS_Mesh::NbFaces() const
-{
-       return myFaces.Size();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of volumes
-///////////////////////////////////////////////////////////////////////////////
-int SMDS_Mesh::NbVolumes() const
-{
-       return myVolumes.Size();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of child mesh of this mesh.
-/// Note that the tree structure of SMDS_Mesh seems to be unused in this version
-/// (2003-09-08) of SMESH
-///////////////////////////////////////////////////////////////////////////////
-int SMDS_Mesh::NbSubMesh() const
-{
-       return myChildren.size();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Destroy the mesh and all its elements
-/// All pointer on elements owned by this mesh become illegals.
-///////////////////////////////////////////////////////////////////////////////
-SMDS_Mesh::~SMDS_Mesh()
-{
-  list<SMDS_Mesh*>::iterator itc=myChildren.begin();
-  while(itc!=myChildren.end())
-  {
-    delete *itc;
-    itc++;
-  }
-
-  SetOfNodes::Iterator itn(myNodes);
-  for (; itn.More(); itn.Next())
-    delete itn.Value();
-
-  SetOfEdges::Iterator ite(myEdges);
-  for (; ite.More(); ite.Next())
-  {
-    SMDS_MeshElement* elem = ite.Value();
-    if(myParent!=NULL)
-      myElementIDFactory->ReleaseID(elem->GetID());
-    delete elem;
-  }
-
-  SetOfFaces::Iterator itf(myFaces);
-  for (; itf.More(); itf.Next())
-  {
-    SMDS_MeshElement* elem = itf.Value();
-    if(myParent!=NULL)
-      myElementIDFactory->ReleaseID(elem->GetID());
-    delete elem;
-  }
-
-  SetOfVolumes::Iterator itv(myVolumes);
-  for (; itv.More(); itv.Next())
-  {
-    SMDS_MeshElement* elem = itv.Value();
-    if(myParent!=NULL)
-      myElementIDFactory->ReleaseID(elem->GetID());
-    delete elem;
-  }
-
-  if(myParent==NULL)
-  {
-    delete myNodeIDFactory;
-    delete myElementIDFactory;
-  }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return true if this mesh create faces with edges.
-/// A false returned value mean that faces are created with nodes. A concequence
-/// is, iteration on edges (SMDS_Element::edgesIterator) will be unavailable.
-///////////////////////////////////////////////////////////////////////////////
-bool SMDS_Mesh::hasConstructionEdges()
-{
-       return myHasConstructionEdges;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return true if this mesh create volumes with faces
-/// A false returned value mean that volumes are created with nodes or edges.
-/// (see hasConstructionEdges)
-/// A concequence is, iteration on faces (SMDS_Element::facesIterator) will be
-/// unavailable.
-///////////////////////////////////////////////////////////////////////////////
-bool SMDS_Mesh::hasConstructionFaces()
-{
-       return myHasConstructionFaces;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return true if nodes are linked to the finit elements, they are belonging to.
-/// Currently, It always return true.
-///////////////////////////////////////////////////////////////////////////////
-bool SMDS_Mesh::hasInverseElements()
-{
-       return myHasInverseElements;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Make this mesh creating construction edges (see hasConstructionEdges)
-/// @param b true to have construction edges, else false.
-///////////////////////////////////////////////////////////////////////////////
-void SMDS_Mesh::setConstructionEdges(bool b)
-{
-       myHasConstructionEdges=b;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Make this mesh creating construction faces (see hasConstructionFaces)
-/// @param b true to have construction faces, else false.
-///////////////////////////////////////////////////////////////////////////////
-void SMDS_Mesh::setConstructionFaces(bool b)
-{
-        myHasConstructionFaces=b;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Make this mesh creating link from nodes to elements (see hasInverseElements)
-/// @param b true to link nodes to elements, else false.
-///////////////////////////////////////////////////////////////////////////////
-void SMDS_Mesh::setInverseElements(bool b)
-{
-       if(!b) MESSAGE("Error : inverseElement=false not implemented");
-       myHasInverseElements=b;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return an iterator on nodes of the current mesh factory
-///////////////////////////////////////////////////////////////////////////////
-class SMDS_Mesh_MyNodeIterator:public SMDS_NodeIterator
-{
-  SMDS_ElemIteratorPtr myIterator;
- public:
-  SMDS_Mesh_MyNodeIterator(const SMDS_ElemIteratorPtr& it):myIterator(it)
-  {}
-
-  bool more()
-  {
-    return myIterator->more();
-  }
-
-  const SMDS_MeshNode* next()
-  {
-    return static_cast<const SMDS_MeshNode*>(myIterator->next());
-  }
-};
-
-SMDS_NodeIteratorPtr SMDS_Mesh::nodesIterator() const
-{
-  return SMDS_NodeIteratorPtr
-    (new SMDS_Mesh_MyNodeIterator(myNodeIDFactory->elementsIterator()));
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return an iterator on elements of the current mesh factory
-///////////////////////////////////////////////////////////////////////////////
-SMDS_ElemIteratorPtr SMDS_Mesh::elementsIterator() const
-{
-  return myElementIDFactory->elementsIterator();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Return an iterator on edges of the current mesh.
-///////////////////////////////////////////////////////////////////////////////
-class SMDS_Mesh_MyEdgeIterator:public SMDS_EdgeIterator
-{
-  typedef SMDS_Mesh::SetOfEdges SetOfEdges;
-  SetOfEdges::Iterator myIterator;
- public:
-  SMDS_Mesh_MyEdgeIterator(const SetOfEdges& s):myIterator(s)
-  {}
-
-  bool more()
-  {
-    while(myIterator.More())
-    {
-      if(myIterator.Value()->GetID()!=-1)
-        return true;
-      myIterator.Next();
-    }
-    return false;
-  }
-
-  const SMDS_MeshEdge* next()
-  {
-    const SMDS_MeshEdge* current = myIterator.Value();
-    myIterator.Next();
-    return current;
-  }
-};
-
-SMDS_EdgeIteratorPtr SMDS_Mesh::edgesIterator() const
-{
-  return SMDS_EdgeIteratorPtr(new SMDS_Mesh_MyEdgeIterator(myEdges));
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Return an iterator on faces of the current mesh.
-///////////////////////////////////////////////////////////////////////////////
-class SMDS_Mesh_MyFaceIterator:public SMDS_FaceIterator
-{
-  typedef SMDS_Mesh::SetOfFaces SetOfFaces;
-  SetOfFaces::Iterator myIterator;
- public:
-  SMDS_Mesh_MyFaceIterator(const SetOfFaces& s):myIterator(s)
-  {}
-
-  bool more()
-  {
-    while(myIterator.More())
-    {
-      if(myIterator.Value()->GetID()!=-1)
-        return true;
-      myIterator.Next();
-    }
-    return false;
-  }
-
-  const SMDS_MeshFace* next()
-  {
-    const SMDS_MeshFace* current = myIterator.Value();
-    myIterator.Next();
-    return current;
-  }
-};
-
-SMDS_FaceIteratorPtr SMDS_Mesh::facesIterator() const
-{
-  return SMDS_FaceIteratorPtr(new SMDS_Mesh_MyFaceIterator(myFaces));
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Return an iterator on volumes of the current mesh.
-///////////////////////////////////////////////////////////////////////////////
-class SMDS_Mesh_MyVolumeIterator:public SMDS_VolumeIterator
-{
-  typedef SMDS_Mesh::SetOfVolumes SetOfVolumes;
-  SetOfVolumes::Iterator myIterator;
- public:
-  SMDS_Mesh_MyVolumeIterator(const SetOfVolumes& s):myIterator(s)
-  {}
-
-  bool more()
-  {
-    return myIterator.More() != Standard_False;
-  }
-
-  const SMDS_MeshVolume* next()
-  {
-    const SMDS_MeshVolume* current = myIterator.Value();
-    myIterator.Next();
-    return current;
-  }
-};
-
-SMDS_VolumeIteratorPtr SMDS_Mesh::volumesIterator() const
-{
-  return SMDS_VolumeIteratorPtr(new SMDS_Mesh_MyVolumeIterator(myVolumes));
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Do intersection of sets (more than 2)
-///////////////////////////////////////////////////////////////////////////////
-static set<const SMDS_MeshElement*> * intersectionOfSets(
-       set<const SMDS_MeshElement*> vs[], int numberOfSets)
-{
-       set<const SMDS_MeshElement*>* rsetA=new set<const SMDS_MeshElement*>(vs[0]);
-       set<const SMDS_MeshElement*>* rsetB;
-
-       for(int i=0; i<numberOfSets-1; i++)
-       {
-               rsetB=new set<const SMDS_MeshElement*>();
-               set_intersection(
-                       rsetA->begin(), rsetA->end(),
-                       vs[i+1].begin(), vs[i+1].end(),
-                       inserter(*rsetB, rsetB->begin()));
-               delete rsetA;
-               rsetA=rsetB;
-       }
-       return rsetA;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the list of finit elements owning the given element
-///////////////////////////////////////////////////////////////////////////////
-static set<const SMDS_MeshElement*> * getFinitElements(const SMDS_MeshElement * element)
-{
-       int numberOfSets=element->NbNodes();
-       set<const SMDS_MeshElement*> *initSet = new set<const SMDS_MeshElement*>[numberOfSets];
-
-       SMDS_ElemIteratorPtr itNodes=element->nodesIterator();
-
-       int i=0;
-       while(itNodes->more())
-       {
-               const SMDS_MeshNode * n=static_cast<const SMDS_MeshNode*>(itNodes->next());
-               SMDS_ElemIteratorPtr itFe = n->GetInverseElementIterator();
-
-               //initSet[i]=set<const SMDS_MeshElement*>();
-               while(itFe->more())
-                  initSet[i].insert(itFe->next());
-
-               i++;
-       }
-       set<const SMDS_MeshElement*> *retSet=intersectionOfSets(initSet, numberOfSets);
-        delete [] initSet;
-       return retSet;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the list of nodes used only by the given elements
-///////////////////////////////////////////////////////////////////////////////
-static set<const SMDS_MeshElement*> * getExclusiveNodes(
-       set<const SMDS_MeshElement*>& elements)
-{
-       set<const SMDS_MeshElement*> * toReturn=new set<const SMDS_MeshElement*>();
-       set<const SMDS_MeshElement*>::iterator itElements=elements.begin();
-
-       while(itElements!=elements.end())
-       {
-               SMDS_ElemIteratorPtr itNodes = (*itElements)->nodesIterator();
-               itElements++;
-       
-               while(itNodes->more())
-               {
-                       const SMDS_MeshNode * n=static_cast<const SMDS_MeshNode*>(itNodes->next());
-                       SMDS_ElemIteratorPtr itFe = n->GetInverseElementIterator();
-                       set<const SMDS_MeshElement*> s;
-                       while(itFe->more())
-                          s.insert(itFe->next());
-                       if(s==elements) toReturn->insert(n);
-               }
-       }
-       return toReturn;        
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Find the children of an element that are made of given nodes 
-///@param setOfChildren The set in which matching children will be inserted
-///@param element The element were to search matching children
-///@param nodes The nodes that the children must have to be selected
-///////////////////////////////////////////////////////////////////////////////
-void SMDS_Mesh::addChildrenWithNodes(set<const SMDS_MeshElement*>&     setOfChildren, 
-       const SMDS_MeshElement * element, set<const SMDS_MeshElement*>& nodes)
-{
-       
-       switch(element->GetType())
-       {
-       case SMDSAbs_Node:
-               MESSAGE("Internal Error: This should not append");
-               break;
-       case SMDSAbs_Edge:
-       {
-               SMDS_ElemIteratorPtr itn=element->nodesIterator();
-               while(itn->more())
-               {
-                       const SMDS_MeshElement * e=itn->next();
-                       if(nodes.find(e)!=nodes.end())
-                        {
-                          setOfChildren.insert(element);
-                          break;
-                        }
-               }
-       } break;
-       case SMDSAbs_Face:
-       {
-               SMDS_ElemIteratorPtr itn=element->nodesIterator();
-               while(itn->more())
-               {
-                       const SMDS_MeshElement * e=itn->next();
-                       if(nodes.find(e)!=nodes.end())
-                        {
-                          setOfChildren.insert(element);
-                          break;
-                        }
-               }
-               if(hasConstructionEdges())
-               {
-                       SMDS_ElemIteratorPtr ite=element->edgesIterator();
-                       while(ite->more())
-                               addChildrenWithNodes(setOfChildren, ite->next(), nodes);
-               }
-       } break;        
-       case SMDSAbs_Volume:
-       {
-               if(hasConstructionFaces())
-               {
-                       SMDS_ElemIteratorPtr ite=element->facesIterator();
-                       while(ite->more())
-                               addChildrenWithNodes(setOfChildren, ite->next(), nodes);
-               }
-               else if(hasConstructionEdges())
-               {
-                       SMDS_ElemIteratorPtr ite=element->edgesIterator();
-                       while(ite->more())
-                               addChildrenWithNodes(setOfChildren, ite->next(), nodes);
-               }
-       }
-       }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///@param elem The element to delete
-///@param removenodes if true remaining nodes will be removed
-///////////////////////////////////////////////////////////////////////////////
-void SMDS_Mesh::RemoveElement(const SMDS_MeshElement * elem,
-       const bool removenodes)
-{
-  list<const SMDS_MeshElement *> removedElems;
-  list<const SMDS_MeshElement *> removedNodes;
-  RemoveElement( elem, removedElems, removedNodes, removenodes );
-}
-  
-///////////////////////////////////////////////////////////////////////////////
-///@param elem The element to delete
-///@param removedElems contains all removed elements
-///@param removedNodes contains all removed nodes
-///@param removenodes if true remaining nodes will be removed
-///////////////////////////////////////////////////////////////////////////////
-void SMDS_Mesh::RemoveElement(const SMDS_MeshElement *        elem,
-                              list<const SMDS_MeshElement *>& removedElems,
-                              list<const SMDS_MeshElement *>& removedNodes,
-                              bool                            removenodes)
-{
-  // get finite elements built on elem
-  set<const SMDS_MeshElement*> * s1;
-  if (!hasConstructionEdges() && elem->GetType() == SMDSAbs_Edge ||
-      !hasConstructionFaces() && elem->GetType() == SMDSAbs_Face ||
-      elem->GetType() == SMDSAbs_Volume)
-  {
-    s1 = new set<const SMDS_MeshElement*>();
-    s1->insert(elem);
-  }
-  else
-    s1 = getFinitElements(elem);
-
-  // get exclusive nodes (which would become free afterwards)
-  set<const SMDS_MeshElement*> * s2;
-  if (elem->GetType() == SMDSAbs_Node) // a node is removed
-  {
-    // do not remove nodes except elem
-    s2 = new set<const SMDS_MeshElement*>();
-    s2->insert(elem);
-    removenodes = true;
-  }
-  else
-    s2 = getExclusiveNodes(*s1);
-
-  // form the set of finite and construction elements to remove
-  set<const SMDS_MeshElement*> s3;
-  set<const SMDS_MeshElement*>::iterator it=s1->begin();
-  while(it!=s1->end())
-  {
-    addChildrenWithNodes(s3, *it ,*s2);
-    s3.insert(*it);
-    it++;
-  }
-  if(elem->GetType()!=SMDSAbs_Node) s3.insert(elem);
-
-  // remove finite and construction elements
-  it=s3.begin();
-  while(it!=s3.end())
-  {
-    // Remove element from <InverseElements> of its nodes
-    SMDS_ElemIteratorPtr itn=(*it)->nodesIterator();
-    while(itn->more())
-    {
-      SMDS_MeshNode * n = static_cast<SMDS_MeshNode *>
-        (const_cast<SMDS_MeshElement *>(itn->next()));
-      n->RemoveInverseElement( (*it) );
-    }
-
-    switch((*it)->GetType())
-    {
-    case SMDSAbs_Node:
-      MESSAGE("Internal Error: This should not happen");
-      break;
-    case SMDSAbs_Edge:
-      myEdges.Remove(static_cast<SMDS_MeshEdge*>
-                    (const_cast<SMDS_MeshElement*>(*it)));
-      break;
-    case SMDSAbs_Face:
-      myFaces.Remove(static_cast<SMDS_MeshFace*>
-                    (const_cast<SMDS_MeshElement*>(*it)));
-      break;
-    case SMDSAbs_Volume:
-      myVolumes.Remove(static_cast<SMDS_MeshVolume*>
-                      (const_cast<SMDS_MeshElement*>(*it)));
-      break;
-    }
-    //MESSAGE( "SMDS: RM elem " << (*it)->GetID() );
-    removedElems.push_back( (*it) );
-    myElementIDFactory->ReleaseID((*it)->GetID());
-    delete (*it);
-    it++;
-  }
-
-  // remove exclusive (free) nodes
-  if(removenodes)
-  {
-    it=s2->begin();
-    while(it!=s2->end())
-    {
-      //MESSAGE( "SMDS: RM node " << (*it)->GetID() );
-      myNodes.Remove(static_cast<SMDS_MeshNode*>
-                    (const_cast<SMDS_MeshElement*>(*it)));
-      myNodeIDFactory->ReleaseID((*it)->GetID());
-      removedNodes.push_back( (*it) );
-      delete *it;
-      it++;
-    }
-  }
-
-  delete s2;
-  delete s1;
-}
-
-/*!
- * Checks if the element is present in mesh.
- * Useful to determine dead pointers.
- */
-bool SMDS_Mesh::Contains (const SMDS_MeshElement* elem) const
-{
-  // we should not imply on validity of *elem, so iterate on containers
-  // of all types in the hope of finding <elem> somewhere there
-  SMDS_NodeIteratorPtr itn = nodesIterator();
-  while (itn->more())
-    if (elem == itn->next())
-      return true;
-  SMDS_EdgeIteratorPtr ite = edgesIterator();
-  while (ite->more())
-    if (elem == ite->next())
-      return true;
-  SMDS_FaceIteratorPtr itf = facesIterator();
-  while (itf->more())
-    if (elem == itf->next())
-      return true;
-  SMDS_VolumeIteratorPtr itv = volumesIterator();
-  while (itv->more())
-    if (elem == itv->next())
-      return true;
-  return false;
-}
-
-//=======================================================================
-//function : MaxNodeID
-//purpose  : 
-//=======================================================================
-
-int SMDS_Mesh::MaxNodeID() const
-{
-  return myNodeIDFactory->GetMaxID();
-}
-
-//=======================================================================
-//function : MinNodeID
-//purpose  : 
-//=======================================================================
-
-int SMDS_Mesh::MinNodeID() const
-{
-  return myNodeIDFactory->GetMinID();
-}
-
-//=======================================================================
-//function : MaxElementID
-//purpose  : 
-//=======================================================================
-
-int SMDS_Mesh::MaxElementID() const
-{
-  return myElementIDFactory->GetMaxID();
-}
-
-//=======================================================================
-//function : MinElementID
-//purpose  : 
-//=======================================================================
-
-int SMDS_Mesh::MinElementID() const
-{
-  return myElementIDFactory->GetMinID();
-}
-
-//=======================================================================
-//function : Renumber
-//purpose  : Renumber all nodes or elements.
-//=======================================================================
-
-void SMDS_Mesh::Renumber (const bool isNodes, const int  startID, const int  deltaID)
-{
-  if ( deltaID == 0 )
-    return;
-
-  SMDS_MeshElementIDFactory * idFactory =
-    isNodes ? myNodeIDFactory : myElementIDFactory;
-
-  // get existing elements in the order of ID increasing
-  map<int,SMDS_MeshElement*> elemMap;
-  SMDS_ElemIteratorPtr idElemIt = idFactory->elementsIterator();
-  while ( idElemIt->more() ) {
-    SMDS_MeshElement* elem = const_cast<SMDS_MeshElement*>(idElemIt->next());
-    int id = elem->GetID();
-    elemMap.insert(map<int,SMDS_MeshElement*>::value_type(id, elem));
-  }
-  // release their ids
-  map<int,SMDS_MeshElement*>::iterator elemIt = elemMap.begin();
-  for ( ; elemIt != elemMap.end(); elemIt++ )
-  {
-    int id = (*elemIt).first;
-    idFactory->ReleaseID( id );
-  }
-  // set new IDs
-  int ID = startID;
-  elemIt = elemMap.begin();
-  for ( ; elemIt != elemMap.end(); elemIt++ )
-  {
-    idFactory->BindID( ID, (*elemIt).second );
-    ID += deltaID;
-  }
-}
-
-//=======================================================================
-//function : GetElementType
-//purpose  : Return type of element or node with id
-//=======================================================================
-
-SMDSAbs_ElementType SMDS_Mesh::GetElementType( const int id, const bool iselem ) const
-{
-  SMDS_MeshElement* elem = 0;
-  if( iselem )
-    elem = myElementIDFactory->MeshElement( id );
-  else
-    elem = myNodeIDFactory->MeshElement( id );
-
-  if( !elem )
-  {
-    //throw SALOME_Exception(LOCALIZED ("this element isn't exist"));
-    return SMDSAbs_All;
-  }
-  else
-    return elem->GetType();
-}
\ No newline at end of file
diff --git a/src/SMDS/SMDS_Mesh.hxx b/src/SMDS/SMDS_Mesh.hxx
deleted file mode 100644 (file)
index 612082c..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_Mesh.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_Mesh_HeaderFile
-#define _SMDS_Mesh_HeaderFile
-
-#include "SMDS_MeshNode.hxx"
-#include "SMDS_MeshEdge.hxx"
-#include "SMDS_MeshFace.hxx"
-#include "SMDS_MeshVolume.hxx"
-#include "SMDS_MeshElementIDFactory.hxx"
-#include "SMDS_ElemIterator.hxx"
-#include <NCollection_Map.hxx>
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-#include <boost/shared_ptr.hpp>
-#include <set>
-#include <list>
-
-typedef SMDS_Iterator<const SMDS_MeshNode *> SMDS_NodeIterator;
-typedef boost::shared_ptr<SMDS_Iterator<const SMDS_MeshNode *> > SMDS_NodeIteratorPtr;
-typedef SMDS_Iterator<const SMDS_MeshEdge *> SMDS_EdgeIterator;
-typedef boost::shared_ptr<SMDS_Iterator<const SMDS_MeshEdge *> > SMDS_EdgeIteratorPtr;
-typedef SMDS_Iterator<const SMDS_MeshFace *> SMDS_FaceIterator;
-typedef boost::shared_ptr<SMDS_Iterator<const SMDS_MeshFace *> > SMDS_FaceIteratorPtr;
-typedef SMDS_Iterator<const SMDS_MeshVolume *> SMDS_VolumeIterator;
-typedef boost::shared_ptr<SMDS_Iterator<const SMDS_MeshVolume *> > SMDS_VolumeIteratorPtr;
-
-class SMDS_WNT_EXPORT SMDS_Mesh:public SMDS_MeshObject{
-public:
-  
-  SMDS_Mesh();
-  
-  SMDS_NodeIteratorPtr nodesIterator() const;
-  SMDS_EdgeIteratorPtr edgesIterator() const;
-  SMDS_FaceIteratorPtr facesIterator() const;
-  SMDS_VolumeIteratorPtr volumesIterator() const;
-  SMDS_ElemIteratorPtr elementsIterator() const;  
-  
-  SMDSAbs_ElementType GetElementType( const int id, const bool iselem ) const;
-
-  SMDS_Mesh *AddSubMesh();
-  
-  virtual SMDS_MeshNode* AddNodeWithID(double x, double y, double z, int ID);
-  virtual SMDS_MeshNode* AddNode(double x, double y, double z);
-  
-  virtual SMDS_MeshEdge* AddEdgeWithID(int n1, int n2, int ID);
-  virtual SMDS_MeshEdge* AddEdgeWithID(const SMDS_MeshNode * n1,
-                                      const SMDS_MeshNode * n2, 
-                                      int ID);
-  virtual SMDS_MeshEdge* AddEdge(const SMDS_MeshNode * n1,
-                                const SMDS_MeshNode * n2);
-  
-  virtual SMDS_MeshFace* AddFaceWithID(int n1, int n2, int n3, int ID);
-  virtual SMDS_MeshFace* AddFaceWithID(const SMDS_MeshNode * n1,
-                                      const SMDS_MeshNode * n2,
-                                      const SMDS_MeshNode * n3, 
-                                      int ID);
-  virtual SMDS_MeshFace* AddFace(const SMDS_MeshNode * n1,
-                                const SMDS_MeshNode * n2,
-                                const SMDS_MeshNode * n3);
-  
-  virtual SMDS_MeshFace* AddFaceWithID(int n1, int n2, int n3, int n4, int ID);
-  virtual SMDS_MeshFace* AddFaceWithID(const SMDS_MeshNode * n1,
-                                      const SMDS_MeshNode * n2,
-                                      const SMDS_MeshNode * n3,
-                                      const SMDS_MeshNode * n4, 
-                                      int ID);
-  virtual SMDS_MeshFace* AddFace(const SMDS_MeshNode * n1,
-                                const SMDS_MeshNode * n2,
-                                const SMDS_MeshNode * n3,
-                                const SMDS_MeshNode * n4);
-  
-  virtual SMDS_MeshFace* AddFaceWithID(const SMDS_MeshEdge * e1,
-                                       const SMDS_MeshEdge * e2,
-                                       const SMDS_MeshEdge * e3, int ID);
-  virtual SMDS_MeshFace* AddFace(const SMDS_MeshEdge * e1,
-                                 const SMDS_MeshEdge * e2,
-                                 const SMDS_MeshEdge * e3);
-
-  virtual SMDS_MeshFace* AddFaceWithID(const SMDS_MeshEdge * e1,
-                                       const SMDS_MeshEdge * e2,
-                                       const SMDS_MeshEdge * e3,
-                                       const SMDS_MeshEdge * e4, int ID);
-  virtual SMDS_MeshFace* AddFace(const SMDS_MeshEdge * e1,
-                                 const SMDS_MeshEdge * e2,
-                                 const SMDS_MeshEdge * e3,
-                                 const SMDS_MeshEdge * e4);
-
-  virtual SMDS_MeshVolume* AddVolumeWithID(int n1, int n2, int n3, int n4, int ID);
-  virtual SMDS_MeshVolume* AddVolumeWithID(const SMDS_MeshNode * n1,
-                                          const SMDS_MeshNode * n2,
-                                          const SMDS_MeshNode * n3,
-                                          const SMDS_MeshNode * n4, 
-                                          int ID);
-  virtual SMDS_MeshVolume* AddVolume(const SMDS_MeshNode * n1,
-                                    const SMDS_MeshNode * n2,
-                                    const SMDS_MeshNode * n3,
-                                    const SMDS_MeshNode * n4);
-  
-  virtual SMDS_MeshVolume* AddVolumeWithID(int n1, int n2, int n3, int n4,
-                                           int n5, int ID);
-  virtual SMDS_MeshVolume* AddVolumeWithID(const SMDS_MeshNode * n1,
-                                          const SMDS_MeshNode * n2,
-                                          const SMDS_MeshNode * n3,
-                                          const SMDS_MeshNode * n4,
-                                          const SMDS_MeshNode * n5, 
-                                          int ID);
-  virtual SMDS_MeshVolume* AddVolume(const SMDS_MeshNode * n1,
-                                    const SMDS_MeshNode * n2,
-                                    const SMDS_MeshNode * n3,
-                                    const SMDS_MeshNode * n4,
-                                    const SMDS_MeshNode * n5);
-  
-  virtual SMDS_MeshVolume* AddVolumeWithID(int n1, int n2, int n3, int n4,
-                                           int n5, int n6, int ID);
-  virtual SMDS_MeshVolume* AddVolumeWithID(const SMDS_MeshNode * n1,
-                                          const SMDS_MeshNode * n2,
-                                          const SMDS_MeshNode * n3,
-                                          const SMDS_MeshNode * n4,
-                                          const SMDS_MeshNode * n5,
-                                          const SMDS_MeshNode * n6, 
-                                          int ID);
-  virtual SMDS_MeshVolume* AddVolume(const SMDS_MeshNode * n1,
-                                    const SMDS_MeshNode * n2,
-                                    const SMDS_MeshNode * n3,
-                                    const SMDS_MeshNode * n4,
-                                    const SMDS_MeshNode * n5,
-                                    const SMDS_MeshNode * n6);
-  
-  virtual SMDS_MeshVolume* AddVolumeWithID(int n1, int n2, int n3, int n4,
-                                           int n5, int n6, int n7, int n8, int ID);
-  virtual SMDS_MeshVolume* AddVolumeWithID(const SMDS_MeshNode * n1,
-                                          const SMDS_MeshNode * n2,
-                                          const SMDS_MeshNode * n3,
-                                          const SMDS_MeshNode * n4,
-                                          const SMDS_MeshNode * n5,
-                                          const SMDS_MeshNode * n6,
-                                          const SMDS_MeshNode * n7,
-                                          const SMDS_MeshNode * n8, 
-                                          int ID);
-  virtual SMDS_MeshVolume* AddVolume(const SMDS_MeshNode * n1,
-                                    const SMDS_MeshNode * n2,
-                                    const SMDS_MeshNode * n3,
-                                    const SMDS_MeshNode * n4,
-                                    const SMDS_MeshNode * n5,
-                                    const SMDS_MeshNode * n6,
-                                    const SMDS_MeshNode * n7,
-                                    const SMDS_MeshNode * n8);
-
-  virtual SMDS_MeshVolume* AddVolumeWithID(const SMDS_MeshFace * f1,
-                                           const SMDS_MeshFace * f2,
-                                           const SMDS_MeshFace * f3,
-                                           const SMDS_MeshFace * f4, int ID);
-  virtual SMDS_MeshVolume* AddVolume(const SMDS_MeshFace * f1,
-                                     const SMDS_MeshFace * f2,
-                                     const SMDS_MeshFace * f3,
-                                     const SMDS_MeshFace * f4);
-
-  virtual SMDS_MeshVolume* AddVolumeWithID(const SMDS_MeshFace * f1,
-                                           const SMDS_MeshFace * f2,
-                                           const SMDS_MeshFace * f3,
-                                           const SMDS_MeshFace * f4,
-                                           const SMDS_MeshFace * f5, int ID);
-  virtual SMDS_MeshVolume* AddVolume(const SMDS_MeshFace * f1,
-                                     const SMDS_MeshFace * f2,
-                                     const SMDS_MeshFace * f3,
-                                     const SMDS_MeshFace * f4,
-                                     const SMDS_MeshFace * f5);
-
-  virtual SMDS_MeshVolume* AddVolumeWithID(const SMDS_MeshFace * f1,
-                                           const SMDS_MeshFace * f2,
-                                           const SMDS_MeshFace * f3,
-                                           const SMDS_MeshFace * f4,
-                                           const SMDS_MeshFace * f5,
-                                           const SMDS_MeshFace * f6, int ID);
-  virtual SMDS_MeshVolume* AddVolume(const SMDS_MeshFace * f1,
-                                     const SMDS_MeshFace * f2,
-                                     const SMDS_MeshFace * f3,
-                                     const SMDS_MeshFace * f4,
-                                     const SMDS_MeshFace * f5,
-                                     const SMDS_MeshFace * f6);
-
-  virtual SMDS_MeshFace* AddPolygonalFaceWithID (std::vector<int> nodes_ids,
-                                                 const int        ID);
-
-  virtual SMDS_MeshFace* AddPolygonalFaceWithID (std::vector<const SMDS_MeshNode*> nodes,
-                                                 const int                         ID);
-
-  virtual SMDS_MeshFace* AddPolygonalFace (std::vector<const SMDS_MeshNode*> nodes);
-
-  virtual SMDS_MeshVolume* AddPolyhedralVolumeWithID
-                           (std::vector<int> nodes_ids,
-                            std::vector<int> quantities,
-                            const int        ID);
-
-  virtual SMDS_MeshVolume* AddPolyhedralVolumeWithID
-                           (std::vector<const SMDS_MeshNode*> nodes,
-                            std::vector<int>                  quantities,
-                            const int                         ID);
-
-  virtual SMDS_MeshVolume* AddPolyhedralVolume
-                           (std::vector<const SMDS_MeshNode*> nodes,
-                            std::vector<int>                  quantities);
-
-  virtual void RemoveElement(const SMDS_MeshElement *        elem,
-                             std::list<const SMDS_MeshElement *>& removedElems,
-                             std::list<const SMDS_MeshElement *>& removedNodes,
-                             const bool                      removenodes = false);
-  virtual void RemoveElement(const SMDS_MeshElement * elem, bool removenodes = false);
-  virtual void RemoveNode(const SMDS_MeshNode * node);
-  virtual void RemoveEdge(const SMDS_MeshEdge * edge);
-  virtual void RemoveFace(const SMDS_MeshFace * face);
-  virtual void RemoveVolume(const SMDS_MeshVolume * volume);
-  
-  virtual bool RemoveFromParent();
-  virtual bool RemoveSubMesh(const SMDS_Mesh * aMesh);
-
-  static bool ChangeElementNodes(const SMDS_MeshElement * elem,
-                                 const SMDS_MeshNode    * nodes[],
-                                 const int                nbnodes);
-  static bool ChangePolyhedronNodes(const SMDS_MeshElement * elem,
-                                    std::vector<const SMDS_MeshNode*> nodes,
-                                    std::vector<int>                  quantities);
-
-  virtual void Renumber (const bool isNodes, const int startID = 1, const int deltaID = 1);
-  // Renumber all nodes or elements.
-
-  const SMDS_MeshNode *FindNode(int idnode) const;
-  const SMDS_MeshEdge *FindEdge(int idnode1, int idnode2) const;
-  const SMDS_MeshFace *FindFace(int idnode1, int idnode2, int idnode3) const;
-  const SMDS_MeshFace *FindFace(int idnode1, int idnode2, int idnode3, int idnode4) const;
-  const SMDS_MeshElement *FindElement(int IDelem) const;
-  static const SMDS_MeshEdge* FindEdge(const SMDS_MeshNode * n1,
-                                       const SMDS_MeshNode * n2);
-  static const SMDS_MeshFace* FindFace(const SMDS_MeshNode *n1,
-                                       const SMDS_MeshNode *n2,
-                                       const SMDS_MeshNode *n3);
-  static const SMDS_MeshFace* FindFace(const SMDS_MeshNode *n1,
-                                       const SMDS_MeshNode *n2,
-                                       const SMDS_MeshNode *n3,
-                                       const SMDS_MeshNode *n4);
-
-  const SMDS_MeshFace *FindFace(std::vector<int> nodes_ids) const;
-  static const SMDS_MeshFace* FindFace(std::vector<const SMDS_MeshNode *> nodes);
-
-  int MaxNodeID() const;
-  int MinNodeID() const;
-  int MaxElementID() const;
-  int MinElementID() const;
-
-
-  int NbNodes() const;
-  int NbEdges() const;
-  int NbFaces() const;
-  int NbVolumes() const;
-  int NbSubMesh() const;
-  void DumpNodes() const;
-  void DumpEdges() const;
-  void DumpFaces() const;
-  void DumpVolumes() const;
-  void DebugStats() const;
-  SMDS_Mesh *boundaryFaces();
-  SMDS_Mesh *boundaryEdges();
-  virtual ~SMDS_Mesh();
-  bool hasConstructionEdges();
-  bool hasConstructionFaces();
-  bool hasInverseElements();
-  void setConstructionEdges(bool);
-  void setConstructionFaces(bool);
-  void setInverseElements(bool);
-
-  /*!
-   * Checks if the element is present in mesh.
-   * Useful to determine dead pointers.
-   * Use this function for debug purpose only! Do not check in the code
-   * using it even in _DEBUG_ mode
-   */
-  bool Contains (const SMDS_MeshElement* elem) const;
-
-  typedef NCollection_Map<SMDS_MeshNode *> SetOfNodes;
-  typedef NCollection_Map<SMDS_MeshEdge *> SetOfEdges;
-  typedef NCollection_Map<SMDS_MeshFace *> SetOfFaces;
-  typedef NCollection_Map<SMDS_MeshVolume *> SetOfVolumes;
-
-private:
-  SMDS_Mesh(SMDS_Mesh * parent);
-
-  SMDS_MeshFace * createTriangle(const SMDS_MeshNode * node1, 
-                                const SMDS_MeshNode * node2, 
-                                const SMDS_MeshNode * node3);
-  SMDS_MeshFace * createQuadrangle(const SMDS_MeshNode * node1,
-                                  const SMDS_MeshNode * node2, 
-                                  const SMDS_MeshNode * node3, 
-                                  const SMDS_MeshNode * node4);
-  SMDS_MeshEdge* FindEdgeOrCreate(const SMDS_MeshNode * n1,
-                                 const SMDS_MeshNode * n2);
-  SMDS_MeshFace* FindFaceOrCreate(const SMDS_MeshNode *n1,
-                                 const SMDS_MeshNode *n2,
-                                 const SMDS_MeshNode *n3);
-  SMDS_MeshFace* FindFaceOrCreate(const SMDS_MeshNode *n1,
-                                 const SMDS_MeshNode *n2,
-                                 const SMDS_MeshNode *n3,
-                                 const SMDS_MeshNode *n4);
-
-  bool registerElement(int ID, SMDS_MeshElement * element);
-
-  void addChildrenWithNodes(std::set<const SMDS_MeshElement*>& setOfChildren, 
-                           const SMDS_MeshElement * element, 
-                           std::set<const SMDS_MeshElement*>& nodes);
-
-  // Fields PRIVATE
-  
-  SetOfNodes myNodes;
-  SetOfEdges myEdges;
-  SetOfFaces myFaces;
-  SetOfVolumes myVolumes;
-  SMDS_Mesh *myParent;
-  std::list<SMDS_Mesh *> myChildren;
-  SMDS_MeshElementIDFactory *myNodeIDFactory;
-  SMDS_MeshElementIDFactory *myElementIDFactory;
-  
-  bool myHasConstructionEdges;
-  bool myHasConstructionFaces;
-  bool myHasInverseElements;
-};
-
-
-#endif
diff --git a/src/SMDS/SMDS_MeshEdge.cxx b/src/SMDS/SMDS_MeshEdge.cxx
deleted file mode 100644 (file)
index 66c8ae3..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshEdge.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_MeshEdge.hxx"
-#include "SMDS_IteratorOfElements.hxx"
-#include "SMDS_MeshNode.hxx"
-
-using namespace std;
-
-//=======================================================================
-//function : SMDS_MeshEdge
-//purpose  : 
-//=======================================================================
-
-SMDS_MeshEdge::SMDS_MeshEdge(const SMDS_MeshNode * node1,
-                             const SMDS_MeshNode * node2)
-{      
-       myNodes[0]=node1;
-       myNodes[1]=node2;
-}
-
-//=======================================================================
-//function : Print
-//purpose  : 
-//=======================================================================
-
-void SMDS_MeshEdge::Print(ostream & OS) const
-{
-       OS << "edge <" << GetID() << "> : (" << myNodes[0] << " , " << myNodes[1] <<
-               ") " << endl;
-}
-
-int SMDS_MeshEdge::NbNodes() const
-{
-       return 2;
-}
-
-int SMDS_MeshEdge::NbEdges() const
-{
-       return 1;
-}
-
-SMDSAbs_ElementType SMDS_MeshEdge::GetType() const
-{
-       return SMDSAbs_Edge;
-}
-
-class SMDS_MeshEdge_MyNodeIterator:public SMDS_ElemIterator
-{
-  const SMDS_MeshNode *const* myNodes;
-  int myIndex;
- public:
-  SMDS_MeshEdge_MyNodeIterator(const SMDS_MeshNode * const* nodes):
-    myNodes(nodes),myIndex(0) {}
-
-  bool more()
-  {
-    return myIndex<2;
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    myIndex++;
-    return myNodes[myIndex-1];
-  }
-};
-
-SMDS_ElemIteratorPtr SMDS_MeshEdge::
-       elementsIterator(SMDSAbs_ElementType type) const
-{
-  switch(type)
-  {
-  case SMDSAbs_Edge:
-    return SMDS_MeshElement::elementsIterator(SMDSAbs_Edge); 
-  case SMDSAbs_Node:
-    return SMDS_ElemIteratorPtr(new SMDS_MeshEdge_MyNodeIterator(myNodes));
-  default:
-    return SMDS_ElemIteratorPtr
-      (new SMDS_IteratorOfElements
-       (this,type, SMDS_ElemIteratorPtr(new SMDS_MeshEdge_MyNodeIterator(myNodes))));
-  }
-}
-
-bool operator<(const SMDS_MeshEdge & e1, const SMDS_MeshEdge & e2)
-{
-       int id11=e1.myNodes[0]->GetID();
-       int id21=e2.myNodes[0]->GetID();
-       int id12=e1.myNodes[1]->GetID();
-       int id22=e2.myNodes[1]->GetID();
-       int tmp;
-
-       if(id11>=id12) 
-       {
-               tmp=id11;
-               id11=id12;
-               id12=tmp;       
-       }
-       if(id21>=id22) 
-       {
-               tmp=id21;
-               id21=id22;
-               id22=tmp;       
-       }
-
-       if(id11<id21) return true;
-       else if(id11==id21) return (id21<id22);
-       else return false;
-}
-
-//=======================================================================
-//function : ChangeNodes
-//purpose  : 
-//=======================================================================
-
-bool SMDS_MeshEdge::ChangeNodes(const SMDS_MeshNode * node1,
-                                const SMDS_MeshNode * node2)
-{
-  myNodes[0]=node1;
-  myNodes[1]=node2;
-  return true;
-}
-
diff --git a/src/SMDS/SMDS_MeshEdge.hxx b/src/SMDS/SMDS_MeshEdge.hxx
deleted file mode 100644 (file)
index 290210c..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshEdge.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_MeshEdge_HeaderFile
-#define _SMDS_MeshEdge_HeaderFile
-
-#include "SMDS_MeshElement.hxx"
-#include <iostream>
-
-class SMDS_MeshEdge:public SMDS_MeshElement
-{
-
-  public:
-       SMDS_MeshEdge(const SMDS_MeshNode * node1,
-                      const SMDS_MeshNode * node2);
-        bool ChangeNodes(const SMDS_MeshNode * node1,
-                         const SMDS_MeshNode * node2);
-       void Print(std::ostream & OS) const;
-
-       SMDSAbs_ElementType GetType() const;
-       int NbNodes() const;
-       int NbEdges() const;
-       friend bool operator<(const SMDS_MeshEdge& e1, const SMDS_MeshEdge& e2);
-  protected:
-       SMDS_ElemIteratorPtr
-               elementsIterator(SMDSAbs_ElementType type) const;
-
-  private:
-       const SMDS_MeshNode* myNodes[2];
-
-};
-#endif
diff --git a/src/SMDS/SMDS_MeshElement.cxx b/src/SMDS/SMDS_MeshElement.cxx
deleted file mode 100644 (file)
index 8d4d9b7..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_MeshElement.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "SMDS_MeshEdge.hxx"
-#include "SMDS_MeshFace.hxx"
-#include "SMDS_MeshVolume.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-SMDS_MeshElement::SMDS_MeshElement(int ID):myID(ID)
-{
-}
-
-void SMDS_MeshElement::Print(ostream & OS) const
-{
-       OS << "dump of mesh element" << endl;
-}
-
-ostream & operator <<(ostream & OS, const SMDS_MeshElement * ME)
-{
-       ME->Print(OS);
-       return OS;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create an iterator which iterate on nodes owned by the element.
-/// This method call elementsIterator().
-///////////////////////////////////////////////////////////////////////////////
-SMDS_ElemIteratorPtr SMDS_MeshElement::nodesIterator() const
-{
-       return elementsIterator(SMDSAbs_Node);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create an iterator which iterate on edges linked with or owned by the element.
-/// This method call elementsIterator().
-///////////////////////////////////////////////////////////////////////////////
-SMDS_ElemIteratorPtr SMDS_MeshElement::edgesIterator() const
-{
-       return elementsIterator(SMDSAbs_Edge);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create an iterator which iterate on faces linked with or owned by the element.
-/// This method call elementsIterator().
-///////////////////////////////////////////////////////////////////////////////
-SMDS_ElemIteratorPtr SMDS_MeshElement::facesIterator() const
-{
-       return elementsIterator(SMDSAbs_Face);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Return The number of nodes owned by the current element
-///////////////////////////////////////////////////////////////////////////////
-int SMDS_MeshElement::NbNodes() const
-{
-       int nbnodes=0;
-       SMDS_ElemIteratorPtr it=nodesIterator();
-       while(it->more())
-       {
-               it->next();
-               nbnodes++;
-       }
-       return nbnodes;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Return the number of edges owned by or linked with the current element
-///////////////////////////////////////////////////////////////////////////////
-int SMDS_MeshElement::NbEdges() const
-{
-       int nbedges=0;
-       SMDS_ElemIteratorPtr it=edgesIterator();
-       while(it->more())
-       {
-               it->next();
-               nbedges++;
-       }
-       return nbedges;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Return the number of faces owned by or linked with the current element
-///////////////////////////////////////////////////////////////////////////////
-int SMDS_MeshElement::NbFaces() const
-{
-       int nbfaces=0;
-       SMDS_ElemIteratorPtr it=facesIterator();
-       while(it->more())
-       {
-               it->next();
-               nbfaces++;
-       }
-       return nbfaces;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Create an iterator which iterate on elements linked with the current element.
-///@param type The of elements on which you want to iterate
-///@return A smart pointer to iterator, you are not to take care of freeing memory
-///////////////////////////////////////////////////////////////////////////////
-class SMDS_MeshElement_MyIterator:public SMDS_ElemIterator
-{
-  const SMDS_MeshElement * myElement;
-  bool myMore;
- public:
-  SMDS_MeshElement_MyIterator(const SMDS_MeshElement * element):
-    myElement(element),myMore(true) {}
-
-  bool more()
-  {
-    return myMore;
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    myMore=false;
-    return myElement;  
-  }    
-};
-SMDS_ElemIteratorPtr SMDS_MeshElement::
-       elementsIterator(SMDSAbs_ElementType type) const
-{
-       /** @todo Check that iterator in the child classes return elements
-       in the same order for each different implementation (i.e: SMDS_VolumeOfNodes
-       and SMDS_VolumeOfFaces */
-       
-       if(type==GetType())
-          return SMDS_ElemIteratorPtr(new SMDS_MeshElement_MyIterator(this));
-       else 
-       {
-          MESSAGE("Iterator not implemented");
-          return SMDS_ElemIteratorPtr((SMDS_ElemIterator*)NULL);
-       }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-///Return the ID of the element
-///////////////////////////////////////////////////////////////////////////////
-int SMDS_MeshElement::GetID() const
-{
-       return myID;
-}
-
-bool operator<(const SMDS_MeshElement& e1, const SMDS_MeshElement& e2)
-{
-       if(e1.GetType()!=e2.GetType()) return false;
-       switch(e1.GetType())
-       {
-       case SMDSAbs_Node:
-               return static_cast<const SMDS_MeshNode &>(e1) <
-                       static_cast<const SMDS_MeshNode &>(e2);
-
-       case SMDSAbs_Edge:
-               return static_cast<const SMDS_MeshEdge &>(e1) <
-                       static_cast<const SMDS_MeshEdge &>(e2);
-
-       case SMDSAbs_Face:
-               return static_cast<const SMDS_MeshFace &>(e1) <
-                       static_cast<const SMDS_MeshFace &>(e2);
-
-       case SMDSAbs_Volume:
-               return static_cast<const SMDS_MeshVolume &>(e1) <
-                       static_cast<const SMDS_MeshVolume &>(e2);
-
-       default : MESSAGE("Internal Error");
-       }
-        return false;
-}
diff --git a/src/SMDS/SMDS_MeshElement.hxx b/src/SMDS/SMDS_MeshElement.hxx
deleted file mode 100644 (file)
index 73870b7..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshElement.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_MeshElement_HeaderFile
-#define _SMDS_MeshElement_HeaderFile
-       
-#include "SMDSAbs_ElementType.hxx"
-#include "SMDS_MeshObject.hxx"
-#include "SMDS_ElemIterator.hxx"
-#include "SMDS_MeshElementIDFactory.hxx"
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-#include <vector>
-#include <iostream>
-
-class SMDS_MeshNode;
-class SMDS_MeshEdge;
-class SMDS_MeshFace;   
-
-///////////////////////////////////////////////////////////////////////////////
-/// Base class for elements
-///////////////////////////////////////////////////////////////////////////////
-class SMDS_WNT_EXPORT SMDS_MeshElement:public SMDS_MeshObject
-{
-
-  public:
-       SMDS_ElemIteratorPtr nodesIterator() const;
-       SMDS_ElemIteratorPtr edgesIterator() const;
-       SMDS_ElemIteratorPtr facesIterator() const;
-       virtual SMDS_ElemIteratorPtr
-               elementsIterator(SMDSAbs_ElementType type) const;
-
-       virtual int NbNodes() const;
-       virtual int NbEdges() const;
-       virtual int NbFaces() const;
-       int GetID() const;
-
-       ///Return the type of the current element
-       virtual SMDSAbs_ElementType GetType() const = 0;
-       virtual bool IsPoly() const { return false; };
-
-       friend std::ostream & operator <<(std::ostream & OS, const SMDS_MeshElement *);
-       friend bool SMDS_MeshElementIDFactory::BindID(int ID,SMDS_MeshElement*elem);
-
-  protected:
-       SMDS_MeshElement(int ID=-1);
-       virtual void Print(std::ostream & OS) const;
-       
-  private:
-       int myID;
-};
-
-#endif
diff --git a/src/SMDS/SMDS_MeshElementIDFactory.cxx b/src/SMDS/SMDS_MeshElementIDFactory.cxx
deleted file mode 100644 (file)
index 8fc0923..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshElementIDFactory.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_MeshElementIDFactory.hxx"
-#include "SMDS_MeshElement.hxx"
-
-using namespace std;
-
-//=======================================================================
-//function : SMDS_MeshElementIDFactory
-//purpose  : 
-//=======================================================================
-SMDS_MeshElementIDFactory::SMDS_MeshElementIDFactory():
-  SMDS_MeshIDFactory(),
-  myMin(0), myMax(0)
-{
-}
-
-//=======================================================================
-//function : BindID
-//purpose  : 
-//=======================================================================
-bool SMDS_MeshElementIDFactory::BindID(int ID, SMDS_MeshElement * elem)
-{
-  if (myIDElements.IsBound(ID))
-    return false;
-  myIDElements.Bind(ID,elem);
-  elem->myID=ID;
-  updateMinMax (ID);
-  return true;
-}
-
-//=======================================================================
-//function : MeshElement
-//purpose  : 
-//=======================================================================
-SMDS_MeshElement* SMDS_MeshElementIDFactory::MeshElement(int ID)
-{
-  if (!myIDElements.IsBound(ID))
-    return NULL;
-  return myIDElements.Find(ID);
-}
-
-
-//=======================================================================
-//function : GetFreeID
-//purpose  : 
-//=======================================================================
-int SMDS_MeshElementIDFactory::GetFreeID()
-{
-  int ID;
-  do {
-    ID = SMDS_MeshIDFactory::GetFreeID();
-  } while (myIDElements.IsBound(ID));
-  return ID;
-}
-
-//=======================================================================
-//function : ReleaseID
-//purpose  : 
-//=======================================================================
-void SMDS_MeshElementIDFactory::ReleaseID(const int ID)
-{
-  myIDElements.UnBind(ID);
-  SMDS_MeshIDFactory::ReleaseID(ID);
-  if (ID == myMax)
-    myMax = 0;
-  if (ID == myMin)
-    myMin = 0;
-}
-
-//=======================================================================
-//function : GetMaxID
-//purpose  : 
-//=======================================================================
-
-int SMDS_MeshElementIDFactory::GetMaxID() const
-{
-  if (myMax == 0)
-    updateMinMax();
-  return myMax;
-}
-
-//=======================================================================
-//function : GetMinID
-//purpose  : 
-//=======================================================================
-
-int SMDS_MeshElementIDFactory::GetMinID() const
-{
-  if (myMin == 0)
-    updateMinMax();
-  return myMin;
-}
-
-//=======================================================================
-//function : updateMinMax
-//purpose  : 
-//=======================================================================
-
-void SMDS_MeshElementIDFactory::updateMinMax() const
-{
-  myMin = IntegerLast();
-  myMax = 0;
-  SMDS_IdElementMap::Iterator it(myIDElements);
-  for (; it.More(); it.Next())
-    updateMinMax (it.Key());
-  if (myMin == IntegerLast())
-    myMin = 0;
-}
-
-//=======================================================================
-//function : elementsIterator
-//purpose  : Return an iterator on elements of the factory
-//=======================================================================
-
-class SMDS_Fact_MyElemIterator:public SMDS_ElemIterator
-{
-  SMDS_IdElementMap::Iterator myIterator;
- public:
-  SMDS_Fact_MyElemIterator(const SMDS_IdElementMap& s):myIterator(s)
-  {}
-
-  bool more()
-  {
-    return myIterator.More() != Standard_False;
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    const SMDS_MeshElement* current = myIterator.Value();
-    myIterator.Next();
-    return current;
-  }
-};
-
-SMDS_ElemIteratorPtr SMDS_MeshElementIDFactory::elementsIterator() const
-{
-  return SMDS_ElemIteratorPtr
-    (new SMDS_Fact_MyElemIterator(myIDElements));
-}
diff --git a/src/SMDS/SMDS_MeshElementIDFactory.hxx b/src/SMDS/SMDS_MeshElementIDFactory.hxx
deleted file mode 100644 (file)
index 526bcb5..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshElementIDFactory.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_MeshElementIDFactory_HeaderFile
-#define _SMDS_MeshElementIDFactory_HeaderFile
-
-#include "SMDS_MeshIDFactory.hxx"
-#include "SMDS_ElemIterator.hxx"
-
-#include <NCollection_DataMap.hxx>
-
-class SMDS_MeshElement;
-
-typedef NCollection_DataMap<int, SMDS_MeshElement *> SMDS_IdElementMap;
-
-class SMDS_MeshElementIDFactory:public SMDS_MeshIDFactory
-{
-public:
-  SMDS_MeshElementIDFactory();
-  bool BindID(int ID, SMDS_MeshElement * elem);
-  SMDS_MeshElement * MeshElement(int ID);
-  virtual int GetFreeID();
-  virtual void ReleaseID(int ID);
-  int GetMaxID() const;
-  int GetMinID() const;
-  SMDS_ElemIteratorPtr elementsIterator() const;
-private:
-  void updateMinMax() const;
-  void updateMinMax(int id) const
-  {
-    if (id > myMax) myMax = id;
-    if (id < myMin) myMin = id;
-  }
-
-  SMDS_IdElementMap myIDElements;
-  mutable int myMin, myMax;
-
-};
-
-#endif
diff --git a/src/SMDS/SMDS_MeshFace.cxx b/src/SMDS/SMDS_MeshFace.cxx
deleted file mode 100644 (file)
index b701429..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#include "SMDS_MeshFace.hxx"
-
-SMDSAbs_ElementType SMDS_MeshFace::GetType() const
-{
-       return SMDSAbs_Face;
-}
diff --git a/src/SMDS/SMDS_MeshFace.hxx b/src/SMDS/SMDS_MeshFace.hxx
deleted file mode 100644 (file)
index 36f2fa5..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshFace.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_MeshFace_HeaderFile
-#define _SMDS_MeshFace_HeaderFile
-
-#include "SMDS_MeshElement.hxx"
-
-class SMDS_MeshFace:public SMDS_MeshElement
-{
-  public:
-       SMDSAbs_ElementType GetType() const;
-};
-
-#endif
diff --git a/src/SMDS/SMDS_MeshGroup.cxx b/src/SMDS/SMDS_MeshGroup.cxx
deleted file mode 100644 (file)
index 0cb481c..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org or email : webmaster@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshGroup.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_MeshGroup.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : SMDS_MeshGroup
-//purpose  : 
-//=======================================================================
-
-SMDS_MeshGroup::SMDS_MeshGroup(const SMDS_Mesh * theMesh,
-                               const SMDSAbs_ElementType theType)
-       :myMesh(theMesh),myType(theType), myParent(NULL)
-{
-}
-
-//=======================================================================
-//function : SMDS_MeshGroup
-//purpose  : 
-//=======================================================================
-
-SMDS_MeshGroup::SMDS_MeshGroup(SMDS_MeshGroup * theParent,
-                               const SMDSAbs_ElementType theType)
-       :myMesh(theParent->myMesh),myType(theType), myParent(theParent)
-{
-}
-
-//=======================================================================
-//function : AddSubGroup
-//purpose  : 
-//=======================================================================
-
-const SMDS_MeshGroup *SMDS_MeshGroup::AddSubGroup
-                (const SMDSAbs_ElementType theType)
-{
-       const SMDS_MeshGroup * subgroup = new SMDS_MeshGroup(this,theType);
-       myChildren.insert(myChildren.end(),subgroup);
-       return subgroup;
-}
-
-//=======================================================================
-//function : RemoveSubGroup
-//purpose  : 
-//=======================================================================
-
-bool SMDS_MeshGroup::RemoveSubGroup(const SMDS_MeshGroup * theGroup)
-{
-       bool found = false;     
-       list<const SMDS_MeshGroup*>::iterator itgroup;
-       for(itgroup=myChildren.begin(); itgroup!=myChildren.end(); itgroup++)
-       {
-               const SMDS_MeshGroup* subgroup=*itgroup;
-               if (subgroup == theGroup)
-               {
-                       found = true;
-                       myChildren.erase(itgroup);
-               }
-       }
-
-       return found;
-}
-
-//=======================================================================
-//function : RemoveFromParent
-//purpose  : 
-//=======================================================================
-
-bool SMDS_MeshGroup::RemoveFromParent()
-{
-       
-       if (myParent==NULL) return false;
-       else
-       {
-               return (myParent->RemoveSubGroup(this));
-       }
-}
-//=======================================================================
-//function : Clear
-//purpose  : 
-//=======================================================================
-
-void SMDS_MeshGroup::Clear()
-{
-       myElements.clear();
-       myType = SMDSAbs_All;
-}
-
-//=======================================================================
-//function : Add
-//purpose  : 
-//=======================================================================
-
-void SMDS_MeshGroup::Add(const SMDS_MeshElement * theElem)
-{
-       // the type of the group is determined by the first element added
-       if (myElements.empty()) myType = theElem->GetType();
-       else if (theElem->GetType() != myType)
-         MESSAGE("SMDS_MeshGroup::Add : Type Mismatch "<<theElem->GetType()<<"!="<<myType);
-       
-       myElements.insert(theElem);
-}
-
-//=======================================================================
-//function : Remove
-//purpose  : 
-//=======================================================================
-
-void SMDS_MeshGroup::Remove(const SMDS_MeshElement * theElem)
-{
-       myElements.erase(theElem);
-       if (myElements.empty()) myType = SMDSAbs_All;
-}
-
-//=======================================================================
-//function : Contains
-//purpose  : 
-//=======================================================================
-
-bool SMDS_MeshGroup::Contains(const SMDS_MeshElement * theElem) const
-{
-       return myElements.find(theElem)!=myElements.end();
-}
-
-//=======================================================================
-//function : SetType
-//purpose  : 
-//=======================================================================
-
-void SMDS_MeshGroup::SetType(const SMDSAbs_ElementType theType)
-{
-  if (IsEmpty())
-    myType = theType;
-}
diff --git a/src/SMDS/SMDS_MeshGroup.hxx b/src/SMDS/SMDS_MeshGroup.hxx
deleted file mode 100644 (file)
index 37893fa..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org or email : webmaster@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshGroup.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_MeshGroup_HeaderFile
-#define _SMDS_MeshGroup_HeaderFile
-
-#include "SMDS_Mesh.hxx"
-#include <set>
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-class SMDS_WNT_EXPORT SMDS_MeshGroup:public SMDS_MeshObject
-{
-  public:
-       SMDS_MeshGroup(const SMDS_Mesh * theMesh,
-                       const SMDSAbs_ElementType theType = SMDSAbs_All);
-       const SMDS_MeshGroup * AddSubGroup
-                      (const SMDSAbs_ElementType theType = SMDSAbs_All);
-       virtual bool RemoveSubGroup(const SMDS_MeshGroup* theGroup);
-       virtual bool RemoveFromParent();
-
-        const SMDS_Mesh* GetMesh() const { return myMesh; }
-
-        void SetType (const SMDSAbs_ElementType theType);
-        void Clear();
-       void Add(const SMDS_MeshElement * theElem);
-       void Remove(const SMDS_MeshElement * theElem);
-       bool IsEmpty() const { return myElements.empty(); }
-       int Extent() const { return myElements.size(); }
-
-        SMDSAbs_ElementType GetType() const { return myType; }
-
-       bool Contains(const SMDS_MeshElement * theElem) const;
-
-        void InitIterator() const
-        { const_cast<TIterator&>(myIterator) = myElements.begin(); }
-
-        bool More() const { return myIterator != myElements.end(); }
-
-        const SMDS_MeshElement* Next() const
-        { return *(const_cast<TIterator&>(myIterator))++; }
-
-  private:
-       SMDS_MeshGroup(SMDS_MeshGroup* theParent,
-                       const SMDSAbs_ElementType theType = SMDSAbs_All);
-
-        typedef std::set<const SMDS_MeshElement *>::const_iterator TIterator;
-       const SMDS_Mesh *                       myMesh;
-       SMDSAbs_ElementType                     myType;
-       std::set<const SMDS_MeshElement *>      myElements;
-       SMDS_MeshGroup *                        myParent;
-       std::list<const SMDS_MeshGroup*>        myChildren;
-        TIterator                               myIterator;
-};
-#endif
diff --git a/src/SMDS/SMDS_MeshIDFactory.cxx b/src/SMDS/SMDS_MeshIDFactory.cxx
deleted file mode 100644 (file)
index 536b2f7..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshIDFactory.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-
-#include "SMDS_MeshIDFactory.hxx"
-
-using namespace std;
-
-//=======================================================================
-//function : SMDS_MeshIDFactory
-//purpose  : 
-//=======================================================================
-
-SMDS_MeshIDFactory::SMDS_MeshIDFactory():myMaxID(0)
-{
-}
-
-int SMDS_MeshIDFactory::GetFreeID()
-{
-       if (myPoolOfID.empty()) return ++myMaxID;
-       else
-       {
-                set<int>::iterator i = myPoolOfID.begin();
-               int ID = *i;//myPoolOfID.top();
-               myPoolOfID.erase( i );//myPoolOfID.pop();
-               return ID;
-       }
-}
-
-//=======================================================================
-//function : ReleaseID
-//purpose  : 
-//=======================================================================
-void SMDS_MeshIDFactory::ReleaseID(const int ID)
-{
-  if ( ID > 0 )
-  {
-    if ( ID < myMaxID )
-    {
-      myPoolOfID.insert(ID);
-    }
-    else if ( ID == myMaxID )
-    {
-      --myMaxID;
-      if ( !myPoolOfID.empty() ) // assure that myMaxID is not in myPoolOfID
-      {
-        set<int>::iterator i = --myPoolOfID.end();
-        while ( i != myPoolOfID.begin() && myMaxID == *i ) {
-          --myMaxID; --i;
-        }
-        if ( myMaxID == *i )
-          --myMaxID; // begin of myPoolOfID reached
-        else
-          ++i;
-        myPoolOfID.erase( i, myPoolOfID.end() );
-      }
-    }
-  }
-}
diff --git a/src/SMDS/SMDS_MeshIDFactory.hxx b/src/SMDS/SMDS_MeshIDFactory.hxx
deleted file mode 100644 (file)
index 8a6425a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshIDFactory.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_MeshIDFactory_HeaderFile
-#define _SMDS_MeshIDFactory_HeaderFile
-
-#include "SMDS_MeshObject.hxx"
-#include <set>
-
-
-class SMDS_MeshIDFactory:public SMDS_MeshObject
-{
-  public:
-       virtual int GetFreeID();
-       virtual void ReleaseID(int ID);
-
-  protected:
-       SMDS_MeshIDFactory();
-       int myMaxID;
-       std::set<int> myPoolOfID;
-};
-
-#endif
diff --git a/src/SMDS/SMDS_MeshNode.cxx b/src/SMDS/SMDS_MeshNode.cxx
deleted file mode 100644 (file)
index 06ab121..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_MeshNode.hxx"
-#include "SMDS_SpacePosition.hxx"
-#include "SMDS_IteratorOfElements.hxx"
-
-using namespace std;
-
-//=======================================================================
-//function : SMDS_MeshNode
-//purpose  : 
-//=======================================================================
-
-SMDS_MeshNode::SMDS_MeshNode(double x, double y, double z):
-       myX(x), myY(y), myZ(z),
-       myPosition(SMDS_SpacePosition::originSpacePosition())
-{
-}
-
-//=======================================================================
-//function : RemoveInverseElement
-//purpose  : 
-//=======================================================================
-
-void SMDS_MeshNode::RemoveInverseElement(const SMDS_MeshElement * parent)
-{
-  NCollection_List<const SMDS_MeshElement*>::Iterator it(myInverseElements);
-  while (it.More()) {
-    const SMDS_MeshElement* elem = it.Value();
-    if (elem == parent)
-      myInverseElements.Remove(it);
-    else
-      it.Next();
-  }
-}
-
-//=======================================================================
-//function : Print
-//purpose  : 
-//=======================================================================
-
-void SMDS_MeshNode::Print(ostream & OS) const
-{
-       OS << "Node <" << GetID() << "> : X = " << myX << " Y = "
-               << myY << " Z = " << myZ << endl;
-}
-
-//=======================================================================
-//function : SetPosition
-//purpose  : 
-//=======================================================================
-
-void SMDS_MeshNode::SetPosition(const SMDS_PositionPtr& aPos)
-{
-       myPosition = aPos;
-}
-
-//=======================================================================
-//function : GetPosition
-//purpose  : 
-//=======================================================================
-
-const SMDS_PositionPtr& SMDS_MeshNode::GetPosition() const
-{
-       return myPosition;
-}
-
-class SMDS_MeshNode_MyInvIterator:public SMDS_ElemIterator
-{
-  NCollection_List<const SMDS_MeshElement*>::Iterator myIterator;
- public:
-  SMDS_MeshNode_MyInvIterator(const NCollection_List<const SMDS_MeshElement*>& s):
-    myIterator(s)
-  {}
-
-  bool more()
-  {
-    return myIterator.More() != Standard_False;
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    const SMDS_MeshElement* current=myIterator.Value();
-    myIterator.Next();
-    return current;
-  }    
-};
-
-SMDS_ElemIteratorPtr SMDS_MeshNode::
-       GetInverseElementIterator() const
-{
-  return SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyInvIterator(myInverseElements));
-}
-
-// Same as GetInverseElementIterator but the create iterator only return
-// wanted type elements.
-class SMDS_MeshNode_MyIterator:public SMDS_ElemIterator
-{
-  NCollection_List<const SMDS_MeshElement*> mySet;
-  NCollection_List<const SMDS_MeshElement*>::Iterator myIterator;
- public:
-  SMDS_MeshNode_MyIterator(SMDSAbs_ElementType type,
-                           const NCollection_List<const SMDS_MeshElement*>& s)
-  {
-    const SMDS_MeshElement * e;
-    bool toInsert;
-    NCollection_List<const SMDS_MeshElement*>::Iterator it(s);
-    for(; it.More(); it.Next())
-    {
-      e=it.Value();
-      switch(type)
-      {
-      case SMDSAbs_Edge: toInsert=true; break;
-      case SMDSAbs_Face: toInsert=(e->GetType()!=SMDSAbs_Edge); break;
-      case SMDSAbs_Volume: toInsert=(e->GetType()==SMDSAbs_Volume); break;
-      }
-      if(toInsert) mySet.Append(e);
-    }
-    myIterator.Init(mySet);
-  }
-
-  bool more()
-  {
-    return myIterator.More() != Standard_False;
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    const SMDS_MeshElement* current=myIterator.Value();
-    myIterator.Next();
-    return current;
-  }
-};
-
-SMDS_ElemIteratorPtr SMDS_MeshNode::
-       elementsIterator(SMDSAbs_ElementType type) const
-{
-  if(type==SMDSAbs_Node)
-    return SMDS_MeshElement::elementsIterator(SMDSAbs_Node); 
-  else
-    return SMDS_ElemIteratorPtr
-      (new SMDS_IteratorOfElements
-       (this,type,
-        SMDS_ElemIteratorPtr(new SMDS_MeshNode_MyIterator(type, myInverseElements))));
-}
-
-int SMDS_MeshNode::NbNodes() const
-{
-       return 1;
-}
-
-double SMDS_MeshNode::X() const
-{
-       return myX;
-}
-
-double SMDS_MeshNode::Y() const
-{
-       return myY;
-}
-
-double SMDS_MeshNode::Z() const
-{
-       return myZ;
-}
-
-void SMDS_MeshNode::setXYZ(double x, double y, double z)
-{
-       myX=x;
-       myY=y;
-       myZ=z;  
-}
-
-SMDSAbs_ElementType SMDS_MeshNode::GetType() const
-{
-       return SMDSAbs_Node;
-}
-
-//=======================================================================
-//function : AddInverseElement
-//purpose  :
-//=======================================================================
-void SMDS_MeshNode::AddInverseElement(const SMDS_MeshElement* ME)
-{
-  NCollection_List<const SMDS_MeshElement*>::Iterator it(myInverseElements);
-  for (; it.More(); it.Next()) {
-    const SMDS_MeshElement* elem = it.Value();
-    if (elem == ME)
-      return;
-  }
-  myInverseElements.Append(ME);
-}
-
-//=======================================================================
-//function : ClearInverseElements
-//purpose  :
-//=======================================================================
-void SMDS_MeshNode::ClearInverseElements()
-{
-  myInverseElements.Clear();
-}
-
-bool SMDS_MeshNode::emptyInverseElements()
-{
-  return myInverseElements.IsEmpty() != Standard_False;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// To be used with STL set
-///////////////////////////////////////////////////////////////////////////////
-bool operator<(const SMDS_MeshNode& e1, const SMDS_MeshNode& e2)
-{
-       return e1.GetID()<e2.GetID();
-       /*if(e1.myX<e2.myX) return true;
-       else if(e1.myX==e2.myX)
-       {
-               if(e1.myY<e2.myY) return true;
-               else if(e1.myY==e2.myY) return (e1.myZ<e2.myZ);
-               else return false;
-       }
-       else return false;*/
-}
-
diff --git a/src/SMDS/SMDS_MeshNode.hxx b/src/SMDS/SMDS_MeshNode.hxx
deleted file mode 100644 (file)
index 042a173..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshNode.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_MeshNode_HeaderFile
-#define _SMDS_MeshNode_HeaderFile
-
-#include "SMDS_MeshElement.hxx"
-#include "SMDS_Position.hxx"
-#include <NCollection_List.hxx>
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-class SMDS_WNT_EXPORT SMDS_MeshNode:public SMDS_MeshElement
-{
-
-  public:
-       SMDS_MeshNode(double x, double y, double z);
-       void Print(std::ostream & OS) const;
-       double X() const;
-       double Y() const;
-       double Z() const;
-       void AddInverseElement(const SMDS_MeshElement * ME);
-       void RemoveInverseElement(const SMDS_MeshElement * parent);
-       void ClearInverseElements();
-       bool emptyInverseElements();
-       SMDS_ElemIteratorPtr GetInverseElementIterator() const; 
-       void SetPosition(const SMDS_PositionPtr& aPos);
-       const SMDS_PositionPtr& GetPosition() const;
-       SMDSAbs_ElementType GetType() const;
-       int NbNodes() const;
-       void setXYZ(double x, double y, double z);
-       friend bool operator<(const SMDS_MeshNode& e1, const SMDS_MeshNode& e2);
-
-  protected:
-       SMDS_ElemIteratorPtr
-               elementsIterator(SMDSAbs_ElementType type) const;
-
-  private:
-       double myX, myY, myZ;
-       SMDS_PositionPtr myPosition;
-       NCollection_List<const SMDS_MeshElement*> myInverseElements;
-};
-
-#endif
diff --git a/src/SMDS/SMDS_MeshObject.cxx b/src/SMDS/SMDS_MeshObject.cxx
deleted file mode 100644 (file)
index b822b80..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshObject.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#include "SMDS_MeshObject.hxx"
diff --git a/src/SMDS/SMDS_MeshObject.hxx b/src/SMDS/SMDS_MeshObject.hxx
deleted file mode 100644 (file)
index f734309..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshObject.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_MeshObject_HeaderFile
-#define _SMDS_MeshObject_HeaderFile
-
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-class SMDS_WNT_EXPORT SMDS_MeshObject
-{
- public:
-  virtual ~SMDS_MeshObject() {}
-};
-#endif
diff --git a/src/SMDS/SMDS_MeshVolume.cxx b/src/SMDS/SMDS_MeshVolume.cxx
deleted file mode 100644 (file)
index 561f0dc..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshVolume.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#include "SMDS_MeshVolume.hxx"
-//=======================================================================
-//function : Print
-//purpose  : 
-//=======================================================================
-
-SMDSAbs_ElementType SMDS_MeshVolume::GetType() const
-{
-       return SMDSAbs_Volume;
-}
-
diff --git a/src/SMDS/SMDS_MeshVolume.hxx b/src/SMDS/SMDS_MeshVolume.hxx
deleted file mode 100644 (file)
index c543c30..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshVolume.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_MeshVolume_HeaderFile
-#define _SMDS_MeshVolume_HeaderFile
-
-#include "SMDS_MeshElement.hxx"
-
-class SMDS_MeshVolume:public SMDS_MeshElement
-{
-       
-  public:
-       SMDSAbs_ElementType GetType() const;
-};
-#endif
diff --git a/src/SMDS/SMDS_PolygonalFaceOfNodes.cxx b/src/SMDS/SMDS_PolygonalFaceOfNodes.cxx
deleted file mode 100644 (file)
index 38abf18..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_PolygonalFaceOfNodes.hxx"
-
-#include "SMDS_IteratorOfElements.hxx"
-//#include "SMDS_MeshNode.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : Constructor
-//purpose  : 
-//=======================================================================
-SMDS_PolygonalFaceOfNodes::SMDS_PolygonalFaceOfNodes
-                          (std::vector<const SMDS_MeshNode *> nodes)
-{
-  myNodes = nodes;
-}
-
-//=======================================================================
-//function : GetType
-//purpose  : 
-//=======================================================================
-SMDSAbs_ElementType SMDS_PolygonalFaceOfNodes::GetType() const
-{
-  return SMDSAbs_Face;
-  //return SMDSAbs_PolygonalFace;
-}
-
-//=======================================================================
-//function : ChangeNodes
-//purpose  : 
-//=======================================================================
-bool SMDS_PolygonalFaceOfNodes::ChangeNodes (std::vector<const SMDS_MeshNode *> nodes)
-{
-  if (nodes.size() < 3)
-    return false;
-
-  myNodes = nodes;
-
-  return true;
-}
-
-//=======================================================================
-//function : ChangeNodes
-//purpose  : to support the same interface, as SMDS_FaceOfNodes
-//=======================================================================
-bool SMDS_PolygonalFaceOfNodes::ChangeNodes (const SMDS_MeshNode* nodes[],
-                                             const int            nbNodes)
-{
-  if (nbNodes < 3)
-    return false;
-
-  myNodes.resize(nbNodes);
-  int i = 0;
-  for (; i < nbNodes; i++) {
-    myNodes[i] = nodes[i];
-  }
-
-  return true;
-}
-
-//=======================================================================
-//function : NbNodes
-//purpose  : 
-//=======================================================================
-int SMDS_PolygonalFaceOfNodes::NbNodes() const
-{
-  return myNodes.size();
-}
-
-//=======================================================================
-//function : NbEdges
-//purpose  : 
-//=======================================================================
-int SMDS_PolygonalFaceOfNodes::NbEdges() const
-{
-  return NbNodes();
-}
-
-//=======================================================================
-//function : NbFaces
-//purpose  : 
-//=======================================================================
-int SMDS_PolygonalFaceOfNodes::NbFaces() const
-{
-  return 1;
-}
-
-//=======================================================================
-//function : Print
-//purpose  : 
-//=======================================================================
-void SMDS_PolygonalFaceOfNodes::Print(ostream & OS) const
-{
-  OS << "polygonal face <" << GetID() << " > : ";
-  int i, nbNodes = myNodes.size();
-  for (i = 0; i < nbNodes - 1; i++)
-    OS << myNodes[i] << ",";
-  OS << myNodes[i] << ") " << endl;
-}
-
-//=======================================================================
-//function : elementsIterator
-//purpose  : 
-//=======================================================================
-class SMDS_PolygonalFaceOfNodes_MyIterator:public SMDS_ElemIterator
-{
-  //const SMDS_MeshNode* const *mySet;
-  const std::vector<const SMDS_MeshNode *> mySet;
-  //int myLength;
-  int index;
- public:
-  //SMDS_PolygonalFaceOfNodes_MyIterator(const SMDS_MeshNode* const *s, int l):
-  //  mySet(s),myLength(l),index(0) {}
-  SMDS_PolygonalFaceOfNodes_MyIterator(const std::vector<const SMDS_MeshNode *> s):
-    mySet(s),index(0) {}
-
-  bool more()
-  {
-    return index < mySet.size();
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    index++;
-    return mySet[index-1];
-  }
-};
-
-SMDS_ElemIteratorPtr SMDS_PolygonalFaceOfNodes::elementsIterator
-                                         (SMDSAbs_ElementType type) const
-{
-  switch(type)
-  {
-  case SMDSAbs_Face:
-    return SMDS_MeshElement::elementsIterator(SMDSAbs_Face);
-  case SMDSAbs_Node:
-    return SMDS_ElemIteratorPtr(new SMDS_PolygonalFaceOfNodes_MyIterator(myNodes));
-  case SMDSAbs_Edge:
-    MESSAGE("Error : edge iterator for SMDS_PolygonalFaceOfNodes not implemented");
-    break;
-  default:
-    return SMDS_ElemIteratorPtr
-      (new SMDS_IteratorOfElements
-       (this,type,SMDS_ElemIteratorPtr
-        (new SMDS_PolygonalFaceOfNodes_MyIterator(myNodes))));
-  }
-  return SMDS_ElemIteratorPtr();
-}
diff --git a/src/SMDS/SMDS_PolygonalFaceOfNodes.hxx b/src/SMDS/SMDS_PolygonalFaceOfNodes.hxx
deleted file mode 100644 (file)
index 5677462..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef _SMDS_PolygonalFaceOfNodes_HeaderFile
-#define _SMDS_PolygonalFaceOfNodes_HeaderFile
-
-#include "SMDS_MeshFace.hxx"
-//#include "SMDS_FaceOfNodes.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "SMDS_Iterator.hxx"
-
-#include <iostream>
-
-//class SMDS_PolygonalFaceOfNodes:public SMDS_FaceOfNodes
-class SMDS_PolygonalFaceOfNodes:public SMDS_MeshFace
-{
- public:
-  SMDS_PolygonalFaceOfNodes (std::vector<const SMDS_MeshNode *> nodes);
-
-  virtual SMDSAbs_ElementType GetType() const;
-  virtual bool IsPoly() const { return true; };
-
-  bool ChangeNodes (std::vector<const SMDS_MeshNode *> nodes);
-
-  bool ChangeNodes (const SMDS_MeshNode* nodes[],
-                    const int            nbNodes);
-  // to support the same interface, as SMDS_FaceOfNodes
-
-  virtual int NbNodes() const;
-  virtual int NbEdges() const;
-  virtual int NbFaces() const;
-
-  virtual void Print (std::ostream & OS) const;
-
- protected:
-  virtual SMDS_ElemIteratorPtr elementsIterator (SMDSAbs_ElementType type) const;
-
- private:
-  std::vector<const SMDS_MeshNode *> myNodes;
-};
-
-#endif
diff --git a/src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx b/src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx
deleted file mode 100644 (file)
index 84ce213..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_PolyhedralVolumeOfNodes.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "utilities.h"
-
-#include <set>
-
-using namespace std;
-
-//=======================================================================
-//function : Constructor
-//purpose  : Create a volume of many faces
-//=======================================================================
-SMDS_PolyhedralVolumeOfNodes::SMDS_PolyhedralVolumeOfNodes
-                                (std::vector<const SMDS_MeshNode *> nodes,
-                                 std::vector<int>                   quantities)
-: SMDS_VolumeOfNodes(NULL, NULL, NULL, NULL)
-{
-  ChangeNodes(nodes, quantities);
-}
-
-//=======================================================================
-//function : GetType
-//purpose  : 
-//=======================================================================
-SMDSAbs_ElementType SMDS_PolyhedralVolumeOfNodes::GetType() const
-{
-//  return SMDSAbs_PolyhedralVolume;
-  return SMDSAbs_Volume;
-}
-
-//=======================================================================
-//function : ChangeNodes
-//purpose  : 
-//=======================================================================
-bool SMDS_PolyhedralVolumeOfNodes::ChangeNodes (std::vector<const SMDS_MeshNode *> nodes,
-                                                std::vector<int>                   quantities)
-{
-  myNodesByFaces = nodes;
-  myQuantities = quantities;
-
-  // Init fields of parent class
-  int aNbNodes = 0;
-  std::set<const SMDS_MeshNode *> aSet;
-  int nodes_len = nodes.size();
-  for (int j = 0; j < nodes_len; j++) {
-    if (aSet.find(nodes[j]) == aSet.end()) {
-      aSet.insert(nodes[j]);
-      aNbNodes++;
-    }
-  }
-
-  int k = 0;
-#ifndef WNT
-  const SMDS_MeshNode* aNodes [aNbNodes];
-#else
-  const SMDS_MeshNode** aNodes = (const SMDS_MeshNode **)new SMDS_MeshNode*[aNbNodes];
-#endif
-  std::set<const SMDS_MeshNode *>::iterator anIter = aSet.begin();
-  for (; anIter != aSet.end(); anIter++, k++) {
-    aNodes[k] = *anIter;
-  }
-
-  //SMDS_VolumeOfNodes::ChangeNodes(aNodes, aNbNodes);
-  delete [] myNodes;
-  //myNbNodes = nodes.size();
-  myNbNodes = aNbNodes;
-  myNodes = new const SMDS_MeshNode* [myNbNodes];
-  for (int i = 0; i < myNbNodes; i++) {
-    //myNodes[i] = nodes[i];
-    myNodes[i] = aNodes[i];
-  }
-
-#ifdef WNT
-  delete [] aNodes;
-#endif
-
-  return true;
-}
-
-//=======================================================================
-//function : NbEdges
-//purpose  : 
-//=======================================================================
-int SMDS_PolyhedralVolumeOfNodes::NbEdges() const
-{
-  int nbEdges = 0;
-
-  for (int ifa = 0; ifa < myQuantities.size(); ifa++) {
-    nbEdges += myQuantities[ifa];
-  }
-  nbEdges /= 2;
-
-  return nbEdges;
-}
-
-//=======================================================================
-//function : NbFaces
-//purpose  : 
-//=======================================================================
-int SMDS_PolyhedralVolumeOfNodes::NbFaces() const
-{
-  return myQuantities.size();
-}
-
-//=======================================================================
-//function : NbFaceNodes
-//purpose  : 
-//=======================================================================
-int SMDS_PolyhedralVolumeOfNodes::NbFaceNodes (const int face_ind) const
-{
-  if (face_ind < 1 || myQuantities.size() < face_ind)
-    return 0;
-  return myQuantities[face_ind - 1];
-}
-
-//=======================================================================
-//function : GetFaceNode
-//purpose  : 
-//=======================================================================
-const SMDS_MeshNode* SMDS_PolyhedralVolumeOfNodes::GetFaceNode (const int face_ind,
-                                                                const int node_ind) const
-{
-  if (node_ind < 1 || NbFaceNodes(face_ind) < node_ind)
-    return NULL;
-
-  int i, first_node = 0;
-  for (i = 0; i < face_ind - 1; i++) {
-    first_node += myQuantities[i];
-  }
-
-  return myNodesByFaces[first_node + node_ind - 1];
-}
-
-//=======================================================================
-//function : Print
-//purpose  : 
-//=======================================================================
-void SMDS_PolyhedralVolumeOfNodes::Print (ostream & OS) const
-{
-  OS << "polyhedral volume <" << GetID() << "> : ";
-
-  int faces_len = myQuantities.size();
-  //int nodes_len = myNodesByFaces.size();
-  int cur_first_node = 0;
-
-  int i, j;
-  for (i = 0; i < faces_len; i++) {
-    OS << "face_" << i << " (";
-    for (j = 0; j < myQuantities[i] - 1; j++) {
-      OS << myNodesByFaces[cur_first_node + j] << ",";
-    }
-    OS << myNodesByFaces[cur_first_node + j] << ") ";
-    cur_first_node += myQuantities[i];
-  }
-}
-
-//=======================================================================
-//function : ChangeNodes
-//purpose  : usage disabled
-//=======================================================================
-bool SMDS_PolyhedralVolumeOfNodes::ChangeNodes (const SMDS_MeshNode* nodes[],
-                                                const int            nbNodes)
-{
-  return false;
-}
diff --git a/src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx b/src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx
deleted file mode 100644 (file)
index baecaf3..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_PolyhedralVolumeOfNodes.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_PolyhedralVolumeOfNodes_HeaderFile
-#define _SMDS_PolyhedralVolumeOfNodes_HeaderFile
-
-#include "SMDS_VolumeOfNodes.hxx"
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-class SMDS_WNT_EXPORT SMDS_PolyhedralVolumeOfNodes:public SMDS_VolumeOfNodes
-{
- public:
-  SMDS_PolyhedralVolumeOfNodes (std::vector<const SMDS_MeshNode *> nodes,
-                                std::vector<int>                   quantities);
-
-  //virtual ~SMDS_PolyhedralVolumeOfNodes();
-
-  virtual SMDSAbs_ElementType GetType() const; 
-  virtual bool IsPoly() const { return true; };
-
-  bool ChangeNodes (std::vector<const SMDS_MeshNode *> nodes,
-                    std::vector<int>                   quantities);
-
-  //virtual int NbNodes() const;
-  virtual int NbEdges() const;
-  virtual int NbFaces() const;
-
-  int NbFaceNodes (const int face_ind) const;
-  // 1 <= face_ind <= NbFaces()
-
-  const SMDS_MeshNode* GetFaceNode (const int face_ind, const int node_ind) const;
-  // 1 <= face_ind <= NbFaces()
-  // 1 <= node_ind <= NbFaceNodes()
-
-  virtual void Print (std::ostream & OS) const;
-
- protected:
-  //virtual SMDS_ElemIteratorPtr elementsIterator (SMDSAbs_ElementType type) const;
-
- private:
-  // usage disabled
-  bool ChangeNodes (const SMDS_MeshNode* nodes[],
-                    const int            nbNodes);
-
- private:
-  std::vector<const SMDS_MeshNode *> myNodesByFaces;
-  std::vector<int> myQuantities;
-};
-
-#endif
diff --git a/src/SMDS/SMDS_Position.cxx b/src/SMDS/SMDS_Position.cxx
deleted file mode 100644 (file)
index 926aa4b..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_Position.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#include "SMDS_Position.hxx"
-
-//=======================================================================
-//function : SMDS_Position
-//purpose  : 
-//=======================================================================
-
-SMDS_Position::SMDS_Position(int aShapeId) :myShapeId(aShapeId)
-{
-}
-
-//=======================================================================
-//function : SetShapeId
-//purpose  : 
-//=======================================================================
-
-void SMDS_Position::SetShapeId(int aShapeId)
-{
-       myShapeId = aShapeId;
-}
-
-//=======================================================================
-//function : GetShapeId
-//purpose  : 
-//=======================================================================
-
-int SMDS_Position::GetShapeId() const
-{
-       return myShapeId;
-}
-
-//=======================================================================
-//function : GetDim
-//purpose  : 
-//=======================================================================
-
-int SMDS_Position::GetDim() const
-{
-//   switch ( GetTypeOfPosition() ) {
-//   case SMDS_TOP_UNSPEC:  return -1;
-//   case SMDS_TOP_VERTEX:  return 0;
-//   case SMDS_TOP_EDGE:    return 1;
-//   case SMDS_TOP_FACE:    return 2;
-//   case SMDS_TOP_3DSPACE: return 3;
-//   }
-  return GetTypeOfPosition();
-}
-
-     
diff --git a/src/SMDS/SMDS_Position.hxx b/src/SMDS/SMDS_Position.hxx
deleted file mode 100644 (file)
index 9b11dc6..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_Position.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_Position_HeaderFile
-#define _SMDS_Position_HeaderFile
-
-#include "SMDS_TypeOfPosition.hxx"
-#include <boost/shared_ptr.hpp>
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-class SMDS_Position;
-typedef boost::shared_ptr<SMDS_Position> SMDS_PositionPtr;
-
-
-class SMDS_WNT_EXPORT SMDS_Position
-{
-
-  public:
-       const virtual double * Coords() const = 0;
-       virtual SMDS_TypeOfPosition GetTypeOfPosition() const = 0;
-       virtual int GetDim() const;
-       void SetShapeId(int aShapeId);
-       int GetShapeId() const;
-       virtual ~SMDS_Position() {}
-
-  protected:
-         SMDS_Position(int aShapeId);
-
-  private:
-       int myShapeId;
-};
-
-
-#endif
diff --git a/src/SMDS/SMDS_SpacePosition.cxx b/src/SMDS/SMDS_SpacePosition.cxx
deleted file mode 100644 (file)
index 7ce582f..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_SpacePosition.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#include "SMDS_SpacePosition.hxx"
-
-//=======================================================================
-//function : SMDS_SpacePosition
-//purpose  : 
-//=======================================================================
-
-SMDS_SpacePosition::SMDS_SpacePosition(double x, double y, double z):
-       SMDS_Position(0)
-{
-       myCoords[0]=x;
-       myCoords[1]=y;
-       myCoords[2]=z;
-}
-
-/**
-*/
-SMDS_TypeOfPosition SMDS_SpacePosition::GetTypeOfPosition() const
-{
-       return SMDS_TOP_3DSPACE;
-}
-
-const double * SMDS_SpacePosition::Coords() const
-{
-       return myCoords;
-}
-
-SMDS_PositionPtr SMDS_SpacePosition::originSpacePosition()
-{
-  static SMDS_PositionPtr staticpos (new SMDS_SpacePosition());
-  return staticpos;
-}
diff --git a/src/SMDS/SMDS_SpacePosition.hxx b/src/SMDS/SMDS_SpacePosition.hxx
deleted file mode 100644 (file)
index f4c7bff..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_SpacePosition.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_SpacePosition_HeaderFile
-#define _SMDS_SpacePosition_HeaderFile
-
-#include "SMDS_Position.hxx"
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-class SMDS_WNT_EXPORT SMDS_SpacePosition:public SMDS_Position
-{
-
-  public:
-       SMDS_SpacePosition(double x=0, double y=0, double z=0);
-       const virtual double * Coords() const;
-       virtual inline SMDS_TypeOfPosition GetTypeOfPosition() const;
-       inline void SetCoords(const double x, const double y, const double z);
-        static SMDS_PositionPtr originSpacePosition();
-  private:
-       double myCoords[3];     
-};
-
-#endif
diff --git a/src/SMDS/SMDS_TypeOfPosition.hxx b/src/SMDS/SMDS_TypeOfPosition.hxx
deleted file mode 100644 (file)
index 8c0631b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_TypeOfPosition.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_TypeOfPosition_HeaderFile
-#define _SMDS_TypeOfPosition_HeaderFile
-
-enum SMDS_TypeOfPosition // Value is equal to shape dimention
-{
-       SMDS_TOP_UNSPEC  = -1,
-       SMDS_TOP_VERTEX  = 0,
-       SMDS_TOP_EDGE    = 1,
-       SMDS_TOP_FACE    = 2,
-       SMDS_TOP_3DSPACE = 3
-};
-
-#endif
diff --git a/src/SMDS/SMDS_VertexPosition.cxx b/src/SMDS/SMDS_VertexPosition.cxx
deleted file mode 100644 (file)
index 022f76a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_VertexPosition.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#include "SMDS_VertexPosition.hxx"
-
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : SMDS_VertexPosition
-//purpose  : 
-//=======================================================================
-
-SMDS_VertexPosition:: SMDS_VertexPosition(const int aVertexId)
-       :SMDS_Position(aVertexId)
-{
-}
-
-//=======================================================================
-//function : Coords
-//purpose  : 
-//=======================================================================
-
-const double *SMDS_VertexPosition::Coords() const
-{
-       const static double origin[]={0,0,0};
-       MESSAGE("SMDS_VertexPosition::Coords not implemented");
-       return origin;
-}
-
-
-SMDS_TypeOfPosition SMDS_VertexPosition::GetTypeOfPosition() const
-{
-       return SMDS_TOP_VERTEX;
-}
diff --git a/src/SMDS/SMDS_VertexPosition.hxx b/src/SMDS/SMDS_VertexPosition.hxx
deleted file mode 100644 (file)
index 68c1e3a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_VertexPosition.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_VertexPosition_HeaderFile
-#define _SMDS_VertexPosition_HeaderFile
-
-#include "SMDS_Position.hxx"
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-class SMDS_WNT_EXPORT SMDS_VertexPosition:public SMDS_Position
-{
-
-  public:      
-       SMDS_TypeOfPosition GetTypeOfPosition() const;
-       SMDS_VertexPosition(int aVertexId=0);
-       const double *Coords() const;
-};
-
-#endif
diff --git a/src/SMDS/SMDS_VolumeOfFaces.cxx b/src/SMDS/SMDS_VolumeOfFaces.cxx
deleted file mode 100644 (file)
index 51e71f8..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_VolumeOfFaces.cxx
-//  Author : Jean-Michel BOULCOURT
-//  Module : SMESH
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_VolumeOfFaces.hxx"
-#include "SMDS_IteratorOfElements.hxx"
-
-using namespace std;
-
-//=======================================================================
-//function : Print
-//purpose  : 
-//=======================================================================
-
-void SMDS_VolumeOfFaces::Print(ostream & OS) const
-{
-       OS << "volume <" << GetID() << "> : ";
-       int i;
-       for (i = 0; i < NbFaces()-1; ++i) OS << myFaces[i] << ",";
-       OS << myFaces[i]<< ") " << endl;
-}
-
-
-int SMDS_VolumeOfFaces::NbFaces() const
-{
-       return myNbFaces;
-}
-
-class SMDS_VolumeOfFaces_MyIterator:public SMDS_ElemIterator
-{
-  const SMDS_MeshFace* const *mySet;
-  int myLength;
-  int index;
- public:
-  SMDS_VolumeOfFaces_MyIterator(const SMDS_MeshFace* const *s, int l):
-    mySet(s),myLength(l),index(0) {}
-
-  bool more()
-  {
-    return index<myLength;
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    index++;
-    return mySet[index-1];
-  }
-};
-
-SMDS_ElemIteratorPtr SMDS_VolumeOfFaces::
-       elementsIterator(SMDSAbs_ElementType type) const
-{
-  switch(type)
-  {
-  case SMDSAbs_Volume:
-    return SMDS_MeshElement::elementsIterator(SMDSAbs_Volume);
-  case SMDSAbs_Face:
-    return SMDS_ElemIteratorPtr(new SMDS_VolumeOfFaces_MyIterator(myFaces,myNbFaces));
-  default:
-    return SMDS_ElemIteratorPtr
-      (new SMDS_IteratorOfElements
-       (this,type,SMDS_ElemIteratorPtr
-        (new SMDS_VolumeOfFaces_MyIterator(myFaces,myNbFaces))));
-  }
-}
-
-SMDS_VolumeOfFaces::SMDS_VolumeOfFaces(const SMDS_MeshFace * face1,
-                                       const SMDS_MeshFace * face2,
-                                       const SMDS_MeshFace * face3,
-                                       const SMDS_MeshFace * face4)
-{
-       myNbFaces = 4;
-       myFaces[0]=face1;
-       myFaces[1]=face2;
-       myFaces[2]=face3;
-       myFaces[3]=face4;
-       myFaces[4]=0;
-       myFaces[5]=0;
-}
-
-SMDS_VolumeOfFaces::SMDS_VolumeOfFaces(const SMDS_MeshFace * face1,
-                                       const SMDS_MeshFace * face2,
-                                       const SMDS_MeshFace * face3,
-                                       const SMDS_MeshFace * face4,
-                                       const SMDS_MeshFace * face5)
-{
-       myNbFaces = 5;
-       myFaces[0]=face1;
-       myFaces[1]=face2;
-       myFaces[2]=face3;
-       myFaces[3]=face4;
-       myFaces[4]=face5;
-       myFaces[5]=0;
-}
-
-SMDS_VolumeOfFaces::SMDS_VolumeOfFaces(const SMDS_MeshFace * face1,
-                                       const SMDS_MeshFace * face2,
-                                       const SMDS_MeshFace * face3,
-                                       const SMDS_MeshFace * face4,
-                                       const SMDS_MeshFace * face5,
-                                       const SMDS_MeshFace * face6)
-{
-       myNbFaces = 6;
-       myFaces[0]=face1;
-       myFaces[1]=face2;
-       myFaces[2]=face3;
-       myFaces[3]=face4;
-       myFaces[4]=face5;
-       myFaces[5]=face6;
-}
-
diff --git a/src/SMDS/SMDS_VolumeOfFaces.hxx b/src/SMDS/SMDS_VolumeOfFaces.hxx
deleted file mode 100644 (file)
index ae3b288..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_VolumeOfFaces.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_VolumeOfFaces_HeaderFile
-#define _SMDS_VolumeOfFaces_HeaderFile
-
-#include "SMDS_MeshVolume.hxx"
-#include "SMDS_MeshFace.hxx"
-#include "SMDS_Iterator.hxx"
-#include <iostream>
-
-
-class SMDS_VolumeOfFaces:public SMDS_MeshVolume
-{
-       
-  public:
-       SMDS_VolumeOfFaces(const SMDS_MeshFace * face1,
-                           const SMDS_MeshFace * face2,
-                           const SMDS_MeshFace * face3,
-                           const SMDS_MeshFace * face4);
-       SMDS_VolumeOfFaces(const SMDS_MeshFace * face1,
-                           const SMDS_MeshFace * face2,
-                           const SMDS_MeshFace * face3,
-                           const SMDS_MeshFace * face4,
-                           const SMDS_MeshFace * face5);
-       SMDS_VolumeOfFaces(const SMDS_MeshFace * face1,
-                           const SMDS_MeshFace * face2,
-                           const SMDS_MeshFace * face3,
-                           const SMDS_MeshFace * face4,
-                           const SMDS_MeshFace * face5,
-                           const SMDS_MeshFace * face6);
-
-       void Print(std::ostream & OS) const;
-       
-       int NbFaces() const;
-
-  protected:
-       SMDS_ElemIteratorPtr
-               elementsIterator(SMDSAbs_ElementType type) const;
-       const SMDS_MeshFace * myFaces[6];
-       int                   myNbFaces;
-};
-#endif
diff --git a/src/SMDS/SMDS_VolumeOfNodes.cxx b/src/SMDS/SMDS_VolumeOfNodes.cxx
deleted file mode 100644 (file)
index cd893f4..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#endif
-
-#include "SMDS_VolumeOfNodes.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-///////////////////////////////////////////////////////////////////////////////
-/// Create an hexahedron. node 1,2,3,4 and 5,6,7,8 are quadrangle and
-/// 5,1 and 7,3 are an edges.
-///////////////////////////////////////////////////////////////////////////////
-SMDS_VolumeOfNodes::SMDS_VolumeOfNodes(
-               const SMDS_MeshNode * node1,
-               const SMDS_MeshNode * node2,
-               const SMDS_MeshNode * node3,
-               const SMDS_MeshNode * node4,
-               const SMDS_MeshNode * node5,
-               const SMDS_MeshNode * node6,
-               const SMDS_MeshNode * node7,
-               const SMDS_MeshNode * node8)
-{
-       myNbNodes = 8;
-       myNodes = new const SMDS_MeshNode* [myNbNodes];
-       myNodes[0]=node1;
-       myNodes[1]=node2;
-       myNodes[2]=node3;
-       myNodes[3]=node4;
-       myNodes[4]=node5;
-       myNodes[5]=node6;
-       myNodes[6]=node7;
-       myNodes[7]=node8;
-}
-
-SMDS_VolumeOfNodes::SMDS_VolumeOfNodes(
-               const SMDS_MeshNode * node1,
-               const SMDS_MeshNode * node2,
-               const SMDS_MeshNode * node3,
-               const SMDS_MeshNode * node4)
-{
-       myNbNodes = 4;
-       myNodes = new const SMDS_MeshNode* [myNbNodes];
-       myNodes[0]=node1;
-       myNodes[1]=node2;
-       myNodes[2]=node3;
-       myNodes[3]=node4;
-}
-
-SMDS_VolumeOfNodes::SMDS_VolumeOfNodes(
-               const SMDS_MeshNode * node1,
-               const SMDS_MeshNode * node2,
-               const SMDS_MeshNode * node3,
-               const SMDS_MeshNode * node4,
-               const SMDS_MeshNode * node5)
-{
-       myNbNodes = 5;
-       myNodes = new const SMDS_MeshNode* [myNbNodes];
-       myNodes[0]=node1;
-       myNodes[1]=node2;
-       myNodes[2]=node3;
-       myNodes[3]=node4;
-       myNodes[4]=node5;
-}
-
-SMDS_VolumeOfNodes::SMDS_VolumeOfNodes(
-               const SMDS_MeshNode * node1,
-               const SMDS_MeshNode * node2,
-               const SMDS_MeshNode * node3,
-               const SMDS_MeshNode * node4,
-               const SMDS_MeshNode * node5,
-               const SMDS_MeshNode * node6)
-{
-       myNbNodes = 6;
-       myNodes = new const SMDS_MeshNode* [myNbNodes];
-       myNodes[0]=node1;
-       myNodes[1]=node2;
-       myNodes[2]=node3;
-       myNodes[3]=node4;
-       myNodes[4]=node5;
-       myNodes[5]=node6;
-}
-
-bool SMDS_VolumeOfNodes::ChangeNodes(const SMDS_MeshNode* nodes[],
-                                     const int            nbNodes)
-{
-  if (nbNodes < 4 || nbNodes > 8 || nbNodes == 7)
-    return false;
-
-  delete [] myNodes;
-  myNbNodes = nbNodes;
-  myNodes = new const SMDS_MeshNode* [myNbNodes];
-  for ( int i = 0; i < nbNodes; i++ )
-    myNodes[ i ] = nodes [ i ];
-
-  return true;
-}
-
-SMDS_VolumeOfNodes::~SMDS_VolumeOfNodes()
-{
-  if (myNodes != NULL) {
-    delete [] myNodes;
-    myNodes = NULL;
-  }
-}
-
-//=======================================================================
-//function : Print
-//purpose  : 
-//=======================================================================
-
-void SMDS_VolumeOfNodes::Print(ostream & OS) const
-{
-       OS << "volume <" << GetID() << "> : ";
-       int i;
-       for (i = 0; i < NbNodes(); ++i) OS << myNodes[i] << ",";
-       OS << myNodes[NbNodes()-1]<< ") " << endl;
-}
-
-int SMDS_VolumeOfNodes::NbFaces() const
-{
-       switch(NbNodes())
-       {
-       case 4: return 4;
-       case 5: return 5;
-       case 6: return 5;
-       case 8: return 6;
-       default: MESSAGE("invalid number of nodes");
-       }
-        return 0;
-}
-
-int SMDS_VolumeOfNodes::NbNodes() const
-{
-       return myNbNodes;
-}
-
-int SMDS_VolumeOfNodes::NbEdges() const
-{
-       switch(NbNodes())
-       {
-       case 4: return 6;
-       case 5: return 8;
-       case 6: return 9;
-       case 8: return 12;
-       default: MESSAGE("invalid number of nodes");
-       }
-        return 0;
-}
-
-class SMDS_VolumeOfNodes_MyIterator:public SMDS_ElemIterator
-{
-  const SMDS_MeshNode* const* mySet;
-  int myLength;
-  int index;
- public:
-  SMDS_VolumeOfNodes_MyIterator(const SMDS_MeshNode* const* s, int l):
-    mySet(s),myLength(l),index(0) {}
-
-  bool more()
-  {
-    return index<myLength;
-  }
-
-  const SMDS_MeshElement* next()
-  {
-    index++;
-    return mySet[index-1];
-  }
-};
-
-SMDS_ElemIteratorPtr SMDS_VolumeOfNodes::
-       elementsIterator(SMDSAbs_ElementType type) const
-{
-  switch(type)
-  {
-  case SMDSAbs_Volume:
-    return SMDS_MeshElement::elementsIterator(SMDSAbs_Volume);
-  case SMDSAbs_Node:
-    return SMDS_ElemIteratorPtr(new SMDS_VolumeOfNodes_MyIterator(myNodes,myNbNodes));
-  default:
-    MESSAGE("ERROR : Iterator not implemented");
-    return SMDS_ElemIteratorPtr((SMDS_ElemIterator*)NULL);
-  }
-}
-
-SMDSAbs_ElementType SMDS_VolumeOfNodes::GetType() const
-{
-       return SMDSAbs_Volume;
-}
diff --git a/src/SMDS/SMDS_VolumeOfNodes.hxx b/src/SMDS/SMDS_VolumeOfNodes.hxx
deleted file mode 100644 (file)
index bb553a0..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMDS_MeshVolume.hxx
-//  Module : SMESH
-
-#ifndef _SMDS_VolumeOfNodes_HeaderFile
-#define _SMDS_VolumeOfNodes_HeaderFile
-
-#include "SMDS_MeshVolume.hxx"
-
-
-class SMDS_VolumeOfNodes:public SMDS_MeshVolume
-{
-       
-  public:
-       SMDS_VolumeOfNodes(
-               const SMDS_MeshNode * node1,
-               const SMDS_MeshNode * node2,
-               const SMDS_MeshNode * node3,
-               const SMDS_MeshNode * node4);
-       SMDS_VolumeOfNodes(
-               const SMDS_MeshNode * node1,
-               const SMDS_MeshNode * node2,
-               const SMDS_MeshNode * node3,
-               const SMDS_MeshNode * node4,
-               const SMDS_MeshNode * node5);
-       SMDS_VolumeOfNodes(
-               const SMDS_MeshNode * node1,
-               const SMDS_MeshNode * node2,
-               const SMDS_MeshNode * node3,
-               const SMDS_MeshNode * node4,
-               const SMDS_MeshNode * node5,
-               const SMDS_MeshNode * node6);
-       SMDS_VolumeOfNodes(
-               const SMDS_MeshNode * node1,
-               const SMDS_MeshNode * node2,
-               const SMDS_MeshNode * node3,
-               const SMDS_MeshNode * node4,
-               const SMDS_MeshNode * node5,
-               const SMDS_MeshNode * node6,
-               const SMDS_MeshNode * node7,
-               const SMDS_MeshNode * node8);
-        bool ChangeNodes(const SMDS_MeshNode* nodes[],
-                         const int            nbNodes);
-        ~SMDS_VolumeOfNodes();
-
-       void Print(std::ostream & OS) const;
-       int NbFaces() const;
-       int NbNodes() const;
-       int NbEdges() const;
-       SMDSAbs_ElementType GetType() const;    
-  protected:
-       SMDS_ElemIteratorPtr
-               elementsIterator(SMDSAbs_ElementType type) const;
-       const SMDS_MeshNode** myNodes;
-       int                   myNbNodes;
-};
-#endif
diff --git a/src/SMDS/SMDS_VolumeTool.hxx b/src/SMDS/SMDS_VolumeTool.hxx
deleted file mode 100644 (file)
index beec061..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-//  SMESH SMDS : implementaion of Salome mesh data structure
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-// File      : SMDS_VolumeTool.hxx
-// Module    : SMESH
-// Created   : Tue Jul 13 11:27:17 2004
-// Author    : Edward AGAPOV (eap)
-
-
-#ifndef SMDS_VolumeTool_HeaderFile
-#define SMDS_VolumeTool_HeaderFile
-
-class SMDS_MeshElement;
-class SMDS_MeshNode;
-class SMDS_PolyhedralVolumeOfNodes;
-
-#include <vector>
-#include <set>
-
-//#ifdef WNT
-//#include <SALOME_WNT.hxx>
-//#else
-//#define SALOME_WNT_EXPORT
-//#endif
-
-#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
-#define SMDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMDS_WNT_EXPORT
-#endif
-
-// =========================================================================
-//
-// Class providing topological and other information about SMDS_MeshVolume:
-// allows iteration on faces or, to be precise, on nodes of volume sides;
-// provides info on nodes connection etc.
-//
-// =========================================================================
-
-class SMDS_WNT_EXPORT SMDS_VolumeTool
-{
- public:
-
-  enum VolumeType { UNKNOWN = -1, TETRA = 0, PYRAM, PENTA, HEXA, POLYHEDA };
-
-  SMDS_VolumeTool ();
-  ~SMDS_VolumeTool ();
-  SMDS_VolumeTool (const SMDS_MeshElement* theVolume);
-
-  bool Set (const SMDS_MeshElement* theVolume);
-  // Set volume.
-  // Return false if theVolume is not of type SMDSAbs_Volume
-
-  // -----------------------
-  // general info
-  // -----------------------
-
-  VolumeType GetVolumeType() const;
-
-  bool IsForward() const { return myVolForward; }
-  // Check volume orientation. can be changed by Inverse().
-  // See node order of forward volumes at the file bottom
-
-  void Inverse();
-  // Change nodes order as if the volume changes its orientation:
-  // top and bottom faces are reversed.
-  // Result of IsForward() and methods returning nodes change
-
-  const SMDS_MeshNode** GetNodes() { return myVolumeNodes; }
-  // Return array of volume nodes
-
-  int NbNodes() { return myVolumeNbNodes; }
-  // Return array of volume nodes
-
-  double GetSize() const;
-  // Return element volume
-
-  bool GetBaryCenter (double & X, double & Y, double & Z) const;
-
-
-  // -----------------------
-  // info on node connection
-  // -----------------------
-
-  bool IsLinked (const SMDS_MeshNode* theNode1,
-                 const SMDS_MeshNode* theNode2) const;
-  // Return true if theNode1 is linked with theNode2.
-
-  bool IsLinked (const int theNode1Index,
-                 const int theNode2Index) const;
-  // Return true if the node with theNode1Index is linked
-  // with the node with theNode2Index
-
-  int GetNodeIndex(const SMDS_MeshNode* theNode) const;
-  // Return an index of theNode
-
-  // -------------
-  // info on faces
-  // -------------
-
-  void SetExternalNormal ();
-  // Node order in faces  will be so that faces normals are external.
-
-  int NbFaces() const { return myNbFaces; }
-  // Return number of faces of the volume. In the following
-  // methods 0 <= faceIndex < NbFaces()
-
-  int NbFaceNodes( int faceIndex );
-  // Return number of nodes in the array of face nodes
-
-  const int* GetFaceNodesIndices( int faceIndex );
-  // Return the array of face nodes indices
-  // To comfort link iteration, the array
-  // length == NbFaceNodes( faceIndex ) + 1 and
-  // the last node index == the first one.
-
-  const SMDS_MeshNode** GetFaceNodes( int faceIndex );
-  // Return the array of face nodes.
-  // To comfort link iteration, the array
-  // length == NbFaceNodes( faceIndex ) + 1 and
-  // the last node == the first one.
-  // WARNING: do not modify the array, some methods
-  //          work basing on its contents
-
-  bool GetFaceNodes (int faceIndex,
-                     std::set<const SMDS_MeshNode*>& theFaceNodes );
-  // Return a set of face nodes.
-
-  bool IsFaceExternal( int faceIndex );
-  // Check normal orientation of a face.
-  // SetExternalNormal() is taken into account.
-
-  bool IsFreeFace(  int faceIndex );
-  // Check that all volumes built on the face nodes lays on one side
-
-  bool GetFaceNormal (int faceIndex, double & X, double & Y, double & Z);
-  // Return a normal to a face
-
-  double GetFaceArea( int faceIndex );
-  // Return face area
-
-  int GetOppFaceIndex( int faceIndex ) const;
-  // Return index of the opposite face if it exists, else -1.
-
-  int GetFaceIndex( const std::set<const SMDS_MeshNode*>& theFaceNodes );
-  // Return index of a face formed by theFaceNodes.
-  // Return -1 if a face not found
-
-  //int GetFaceIndex( const std::set<int>& theFaceNodesIndices );
-  // Return index of a face formed by theFaceNodesIndices
-  // Return -1 if a face not found
-
-  // ------------------------
-  // static methods for faces
-  // ------------------------
-
-  static VolumeType GetType(int nbNodes);
-  // return VolumeType by nb of nodes in a volume
-
-  static int NbFaces( VolumeType type );
-  // return nb of faces by volume type
-
-  static const int* GetFaceNodesIndices(VolumeType type,
-                                        int        faceIndex,
-                                        bool       external);
-  // Return the array of face nodes indices
-  // To comfort link iteration, the array
-  // length == NbFaceNodes( faceIndex ) + 1 and
-  // the last node index == the first one.
-
-  static int NbFaceNodes(VolumeType type,
-                         int        faceIndex );
-  // Return number of nodes in the array of face nodes
-
- private:
-
-  bool setFace( int faceIndex );
-
-  const SMDS_MeshElement* myVolume;
-  const SMDS_PolyhedralVolumeOfNodes* myPolyedre;
-
-  bool                    myVolForward;
-  int                     myNbFaces;
-  int                     myVolumeNbNodes;
-  const SMDS_MeshNode**   myVolumeNodes;
-
-  bool                    myExternalFaces;
-
-  int                     myCurFace;
-  int                     myFaceNbNodes;
-  int*                    myFaceNodeIndices;
-  const SMDS_MeshNode**   myFaceNodes;
-
-};
-#endif
-
-
-///////////////////////////////////////////////////////////////////////////
-//
-//                   ORDER OF NODES OF FORWARD ELEMENT
-//
-///////////////////////////////////////////////////////////////////////////
-/*
-//           N3
-//           +
-//          /|\
-//         / | \
-//        /  |  \
-//    N0 +---|---+ N1                TETRAHEDRON
-//       \   |   /
-//        \  |  /
-//         \ | /
-//          \|/
-//           +
-//           N2
-
-//            + N4
-//           /|\
-//          / | \
-//         /  |  \
-//        /   |   \
-//    N3 +---------+ N5
-//       |    |    |
-//       |    + N1 |
-//       |   / \   |                PENTAHEDRON
-//       |  /   \  |
-//       | /     \ |
-//       |/       \|
-//    N0 +---------+ N2
-
-//         N5+----------+N6
-//          /|         /|
-//         / |        / |
-//        /  |       /  |
-//     N4+----------+N7 |
-//       |   |      |   |           HEXAHEDRON
-//       |   |      |   |
-//       |   |      |   |
-//       | N1+------|---+N2
-//       |  /       |  /
-//       | /        | /
-//       |/         |/
-//     N0+----------+N3
-//
-*/
diff --git a/src/SMESH/SMESH_1D_Algo.cxx b/src/SMESH/SMESH_1D_Algo.cxx
deleted file mode 100644 (file)
index 37567a5..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_1D_Algo.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESH_1D_Algo.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_subMesh.hxx"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_1D_Algo::SMESH_1D_Algo(int hypId, int studyId, SMESH_Gen* gen)
-  : SMESH_Algo(hypId, studyId, gen)
-{
-//   _compatibleHypothesis.push_back("hypothese_1D_bidon");
-  _type = ALGO_1D;
-  gen->_map1D_Algo[hypId] = this;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_1D_Algo::~SMESH_1D_Algo()
-{
-}
-
diff --git a/src/SMESH/SMESH_1D_Algo.hxx b/src/SMESH/SMESH_1D_Algo.hxx
deleted file mode 100644 (file)
index 378ed75..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_1D_Algo.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_1D_ALGO_HXX_
-#define _SMESH_1D_ALGO_HXX_
-
-#include "SMESH_Algo.hxx"
-
-class SMESH_1D_Algo:
-  public SMESH_Algo
-{
-public:
-  SMESH_1D_Algo(int hypId, int studyId,  SMESH_Gen* gen);
-  virtual ~SMESH_1D_Algo();
-};
-
-#endif
diff --git a/src/SMESH/SMESH_2D_Algo.cxx b/src/SMESH/SMESH_2D_Algo.cxx
deleted file mode 100644 (file)
index d1084f7..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_2D_Algo.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESH_2D_Algo.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_subMesh.hxx"
-
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_2D_Algo::SMESH_2D_Algo(int hypId, int studyId, SMESH_Gen* gen)
-  : SMESH_Algo(hypId, studyId, gen)
-{
-//   _compatibleHypothesis.push_back("hypothese_2D_bidon");
-  _type = ALGO_2D;
-  gen->_map2D_Algo[hypId] = this;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_2D_Algo::~SMESH_2D_Algo()
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-int SMESH_2D_Algo::NumberOfWires(const TopoDS_Shape& S)
-{
-  int i = 0;
-  for (TopExp_Explorer exp(S,TopAbs_WIRE); exp.More(); exp.Next())
-    i++;
-  return i;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-int SMESH_2D_Algo::NumberOfPoints(SMESH_Mesh& aMesh, const TopoDS_Wire& W)
-{
-  int nbPoints = 0;
-  for (TopExp_Explorer exp(W,TopAbs_EDGE); exp.More(); exp.Next())
-    {
-      const TopoDS_Edge& E = TopoDS::Edge(exp.Current());
-      int nb = aMesh.GetSubMesh(E)->GetSubMeshDS()->NbNodes();
-      //SCRUTE(nb);
-      nbPoints += nb +1; // internal points plus 1 vertex of 2 (last point ?)
-    }
-  //SCRUTE(nbPoints);
-  return nbPoints;
-}
diff --git a/src/SMESH/SMESH_2D_Algo.hxx b/src/SMESH/SMESH_2D_Algo.hxx
deleted file mode 100644 (file)
index 5c904e2..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_2D_Algo.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_2D_ALGO_HXX_
-#define _SMESH_2D_ALGO_HXX_
-
-#include "SMESH_Algo.hxx"
-#include <TopoDS_Wire.hxx>
-
-class SMESH_2D_Algo:
-  public SMESH_Algo
-{
-public:
-  SMESH_2D_Algo(int hypId, int studyId, SMESH_Gen* gen);
-  virtual ~SMESH_2D_Algo();
-
-  int NumberOfWires(const TopoDS_Shape& S);
-  int NumberOfPoints(SMESH_Mesh& aMesh,const TopoDS_Wire& W);
-};
-
-#endif
diff --git a/src/SMESH/SMESH_3D_Algo.cxx b/src/SMESH/SMESH_3D_Algo.cxx
deleted file mode 100644 (file)
index d42680f..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_3D_Algo.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESH_3D_Algo.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_subMesh.hxx"
-
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_3D_Algo::SMESH_3D_Algo(int hypId, int studyId, SMESH_Gen* gen)
-  : SMESH_Algo(hypId, studyId, gen)
-{
-//   _compatibleHypothesis.push_back("hypothese_3D_bidon");
-  _type = ALGO_3D;
-  gen->_map3D_Algo[hypId] = this;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_3D_Algo::~SMESH_3D_Algo()
-{
-}
diff --git a/src/SMESH/SMESH_3D_Algo.hxx b/src/SMESH/SMESH_3D_Algo.hxx
deleted file mode 100644 (file)
index 62621ce..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_3D_Algo.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_3D_ALGO_HXX_
-#define _SMESH_3D_ALGO_HXX_
-
-#include "SMESH_Algo.hxx"
-
-class SMESH_3D_Algo:
-  public SMESH_Algo
-{
-public:
-  SMESH_3D_Algo(int hypId, int studyId, SMESH_Gen* gen);
-  virtual ~SMESH_3D_Algo();
-};
-
-#endif
diff --git a/src/SMESH/SMESH_Block.cxx b/src/SMESH/SMESH_Block.cxx
deleted file mode 100644 (file)
index 431208f..0000000
+++ /dev/null
@@ -1,1391 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-// File      : SMESH_Pattern.hxx
-// Created   : Mon Aug  2 10:30:00 2004
-// Author    : Edward AGAPOV (eap)
-
-#include "SMESH_Block.hxx"
-
-#include <BRepTools.hxx>
-#include <BRepTools_WireExplorer.hxx>
-#include <BRep_Tool.hxx>
-#include <Extrema_ExtPC.hxx>
-#include <Extrema_POnCurv.hxx>
-#include <GeomAdaptor_Curve.hxx>
-#include <TopAbs_ShapeEnum.hxx>
-#include <TopExp_Explorer.hxx>
-#include <TopLoc_Location.hxx>
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Iterator.hxx>
-#include <TopoDS_Wire.hxx>
-#include <gp_Trsf.hxx>
-#include <gp_Vec.hxx>
-#include <math_FunctionSetRoot.hxx>
-
-#include "SMDS_MeshNode.hxx"
-#include "SMDS_MeshVolume.hxx"
-#include "SMDS_VolumeTool.hxx"
-#include "utilities.h"
-
-#include <list>
-
-using namespace std;
-
-#define SQRT_FUNC 1
-
-//=======================================================================
-//function : SMESH_Block::TEdge::GetU
-//purpose  : 
-//=======================================================================
-
-double SMESH_Block::TEdge::GetU( const gp_XYZ& theParams ) const
-{
-  double u = theParams.Coord( myCoordInd );
-  if ( myC3d.IsNull() ) // if mesh block
-    return u;
-  return ( 1 - u ) * myFirst + u * myLast;
-}
-
-//=======================================================================
-//function : SMESH_Block::TEdge::Point
-//purpose  : 
-//=======================================================================
-
-gp_XYZ SMESH_Block::TEdge::Point( const gp_XYZ& theParams ) const
-{
-  double u = GetU( theParams );
-
-  if ( myC3d.IsNull() ) // if mesh block
-    return myNodes[0] * ( 1 - u ) + myNodes[1] * u;
-
-  gp_XYZ p = myC3d->Value( u ).XYZ();
-  if ( myTrsf.Form() != gp_Identity )
-    myTrsf.Transforms( p );
-  return p;
-}
-
-//=======================================================================
-//function : SMESH_Block::TFace::GetCoefs
-//purpose  : return coefficients for addition of [0-3]-th edge and vertex
-//=======================================================================
-
-void SMESH_Block::TFace::GetCoefs(int           iE,
-                                  const gp_XYZ& theParams,
-                                  double&       Ecoef,
-                                  double&       Vcoef ) const
-{
-  double dU = theParams.Coord( GetUInd() );
-  double dV = theParams.Coord( GetVInd() );
-  switch ( iE ) {
-  case 0:
-    Ecoef = ( 1 - dV ); // u0
-    Vcoef = ( 1 - dU ) * ( 1 - dV ); break; // 00
-  case 1:
-    Ecoef = dV; // u1
-    Vcoef = dU * ( 1 - dV ); break; // 10
-  case 2:
-    Ecoef = ( 1 - dU ); // 0v
-    Vcoef = dU * dV  ; break; // 11
-  case 3:
-    Ecoef = dU  ; // 1v
-    Vcoef = ( 1 - dU ) * dV  ; break; // 01
-  default: ASSERT(0);
-  }
-}
-
-//=======================================================================
-//function : SMESH_Block::TFace::GetUV
-//purpose  : 
-//=======================================================================
-
-gp_XY SMESH_Block::TFace::GetUV( const gp_XYZ& theParams ) const
-{
-  gp_XY uv(0.,0.);
-  for ( int iE = 0; iE < 4; iE++ ) // loop on 4 edges
-  {
-    double Ecoef = 0, Vcoef = 0;
-    GetCoefs( iE, theParams, Ecoef, Vcoef );
-    // edge addition
-    double u = theParams.Coord( myCoordInd[ iE ] );
-    u = ( 1 - u ) * myFirst[ iE ] + u * myLast[ iE ];
-    uv += Ecoef * myC2d[ iE ]->Value( u ).XY();
-    // corner addition
-    uv -= Vcoef * myCorner[ iE ];
-  }
-  return uv;
-}
-
-//=======================================================================
-//function : SMESH_Block::TFace::Point
-//purpose  : 
-//=======================================================================
-
-gp_XYZ SMESH_Block::TFace::Point( const gp_XYZ& theParams ) const
-{
-  gp_XYZ p(0.,0.,0.);
-  if ( myS.IsNull() ) // if mesh block
-  {
-    for ( int iE = 0; iE < 4; iE++ ) // loop on 4 edges
-    {
-      double Ecoef = 0, Vcoef = 0;
-      GetCoefs( iE, theParams, Ecoef, Vcoef );
-      // edge addition
-      double u = theParams.Coord( myCoordInd[ iE ] );
-      int i1 = 0, i2 = 1;
-      switch ( iE ) {
-      case 1: i1 = 3; i2 = 2; break;
-      case 2: i1 = 1; i2 = 2; break;
-      case 3: i1 = 0; i2 = 3; break;
-      }
-      p += Ecoef * ( myNodes[ i1 ] * ( 1 - u ) + myNodes[ i2 ] * u );
-      // corner addition
-      p -= Vcoef * myNodes[ iE ];
-    }
-    
-  }
-  else // shape block
-  {
-    gp_XY uv = GetUV( theParams );
-    p = myS->Value( uv.X(), uv.Y() ).XYZ();
-    if ( myTrsf.Form() != gp_Identity )
-      myTrsf.Transforms( p );
-  }
-  return p;
-}
-
-//=======================================================================
-//function : GetShapeCoef
-//purpose  : 
-//=======================================================================
-
-double* SMESH_Block::GetShapeCoef (const int theShapeID)
-{
-  static double shapeCoef[][3] = {
-    //    V000,        V100,        V010,         V110
-    { -1,-1,-1 }, {  1,-1,-1 }, { -1, 1,-1 }, {  1, 1,-1 },
-    //    V001,        V101,        V011,         V111,
-    { -1,-1, 1 }, {  1,-1, 1 }, { -1, 1, 1 }, {  1, 1, 1 },
-    //    Ex00,        Ex10,        Ex01,         Ex11,
-    {  0,-1,-1 }, {  0, 1,-1 }, {  0,-1, 1 }, {  0, 1, 1 },
-    //    E0y0,        E1y0,        E0y1,         E1y1,
-    { -1, 0,-1 }, {  1, 0,-1 }, { -1, 0, 1 }, {  1, 0, 1 },
-    //    E00z,        E10z,        E01z,         E11z,
-    { -1,-1, 0 }, {  1,-1, 0 }, { -1, 1, 0 }, {  1, 1, 0 },
-    //    Fxy0,        Fxy1,        Fx0z,         Fx1z,         F0yz,           F1yz,
-    {  0, 0,-1 }, {  0, 0, 1 }, {  0,-1, 0 }, {  0, 1, 0 }, { -1, 0, 0 }, {  1, 0, 0 },
-    // ID_Shell
-    {  0, 0, 0 }
-  };
-  if ( theShapeID < ID_V000 || theShapeID > ID_F1yz )
-    return shapeCoef[ ID_Shell - 1 ];
-
-  return shapeCoef[ theShapeID - 1 ];
-}
-
-//=======================================================================
-//function : ShellPoint
-//purpose  : return coordinates of a point in shell
-//=======================================================================
-
-bool SMESH_Block::ShellPoint( const gp_XYZ& theParams, gp_XYZ& thePoint ) const
-{
-  thePoint.SetCoord( 0., 0., 0. );
-  for ( int shapeID = ID_V000; shapeID < ID_Shell; shapeID++ )
-  {
-    // coef
-    double* coefs = GetShapeCoef( shapeID );
-    double k = 1;
-    for ( int iCoef = 0; iCoef < 3; iCoef++ ) {
-      if ( coefs[ iCoef ] != 0 ) {
-        if ( coefs[ iCoef ] < 0 )
-          k *= ( 1. - theParams.Coord( iCoef + 1 ));
-        else
-          k *= theParams.Coord( iCoef + 1 );
-      }
-    }
-    // point on a shape
-    gp_XYZ Ps;
-    if ( shapeID < ID_Ex00 ) // vertex
-      VertexPoint( shapeID, Ps );
-    else if ( shapeID < ID_Fxy0 ) { // edge
-      EdgePoint( shapeID, theParams, Ps );
-      k = -k;
-    } else // face
-      FacePoint( shapeID, theParams, Ps );
-
-    thePoint += k * Ps;
-  }
-  return true;
-}
-
-//=======================================================================
-//function : ShellPoint
-//purpose  : computes coordinates of a point in shell by points on sub-shapes;
-//           thePointOnShape[ subShapeID ] must be a point on a subShape
-//=======================================================================
-
-bool SMESH_Block::ShellPoint(const gp_XYZ&         theParams,
-                             const vector<gp_XYZ>& thePointOnShape,
-                             gp_XYZ&               thePoint )
-{
-  if ( thePointOnShape.size() < ID_F1yz )
-    return false;
-
-  double x = theParams.X(), y = theParams.Y(), z = theParams.Z();
-  double x1 = 1. - x,       y1 = 1. - y,       z1 = 1. - z;
-  const vector<gp_XYZ>& p = thePointOnShape;
-
-  thePoint = 
-    x1 * p[ID_F0yz] + x * p[ID_F1yz]
-      + y1 * p[ID_Fx0z] + y * p[ID_Fx1z]
-        + z1 * p[ID_Fxy0] + z * p[ID_Fxy1]
-          + x1 * (y1 * (z1 * p[ID_V000] + z * p[ID_V001])
-                  + y * (z1 * p[ID_V010] + z * p[ID_V011]))
-            + x * (y1 * (z1 * p[ID_V100] + z * p[ID_V101])
-                   + y * (z1 * p[ID_V110] + z * p[ID_V111]));
-  thePoint -=
-    x1 * (y1 * p[ID_E00z] + y * p[ID_E01z])
-      + x * (y1 * p[ID_E10z] + y * p[ID_E11z])
-        + y1 * (z1 * p[ID_Ex00] + z * p[ID_Ex01])
-          + y * (z1 * p[ID_Ex10] + z * p[ID_Ex11])
-            + z1 * (x1 * p[ID_E0y0] + x * p[ID_E1y0])
-              + z * (x1 * p[ID_E0y1] + x * p[ID_E1y1]);
-
-  return true;
-}
-
-//=======================================================================
-//function : NbVariables
-//purpose  : 
-//=======================================================================
-
-Standard_Integer SMESH_Block::NbVariables() const
-{
-  return 3;
-}
-
-//=======================================================================
-//function : NbEquations
-//purpose  : 
-//=======================================================================
-
-Standard_Integer SMESH_Block::NbEquations() const
-{
-  return 1;
-}
-
-//=======================================================================
-//function : Value
-//purpose  : 
-//=======================================================================
-
-Standard_Boolean SMESH_Block::Value(const math_Vector& theXYZ, math_Vector& theFxyz) 
-{
-  gp_XYZ P, params( theXYZ(1), theXYZ(2), theXYZ(3) );
-  if ( params.IsEqual( myParam, DBL_MIN )) { // same param
-    theFxyz( 1 ) = myValues[ 0 ];
-  }
-  else {
-    ShellPoint( params, P );
-    gp_Vec dP( P - myPoint );
-    theFxyz(1) = SQRT_FUNC ? dP.SquareMagnitude() : dP.Magnitude();
-  }
-  return true;
-}
-
-//=======================================================================
-//function : Derivatives
-//purpose  : 
-//=======================================================================
-
-Standard_Boolean SMESH_Block::Derivatives(const math_Vector& XYZ,math_Matrix& Df) 
-{
-  MESSAGE( "SMESH_Block::Derivatives()");
-  math_Vector F(1,3);
-  return Values(XYZ,F,Df);
-}
-
-//=======================================================================
-//function : Values
-//purpose  : 
-//=======================================================================
-
-Standard_Boolean SMESH_Block::Values(const math_Vector& theXYZ,
-                                     math_Vector&       theFxyz,
-                                     math_Matrix&       theDf) 
-{
-//  MESSAGE( endl<<"SMESH_Block::Values( "<<theXYZ(1)<<", "<<theXYZ(2)<<", "<<theXYZ(3)<<")");
-
-  gp_XYZ P, params( theXYZ(1), theXYZ(2), theXYZ(3) );
-  if ( params.IsEqual( myParam, DBL_MIN )) { // same param
-    theFxyz( 1 ) = myValues[ 0 ];
-    theDf( 1,1 ) = myValues[ 1 ];
-    theDf( 1,2 ) = myValues[ 2 ];
-    theDf( 1,3 ) = myValues[ 3 ];
-    return true;
-  }
-
-  ShellPoint( params, P );
-  //myNbIterations++; // how many time call ShellPoint()
-
-  gp_Vec dP( P - myPoint );
-  theFxyz(1) = SQRT_FUNC ? dP.SquareMagnitude() : dP.Magnitude();
-  if ( theFxyz(1) < 1e-6 ) {
-    myParam      = params;
-    myValues[ 0 ]= 0;
-    theDf( 1,1 ) = 0;
-    theDf( 1,2 ) = 0;
-    theDf( 1,3 ) = 0;
-    return true;
-  }
-
-  if ( theFxyz(1) < myValues[0] ) // a better guess
-  {
-    // 3 partial derivatives
-    gp_Vec drv[ 3 ];
-    for ( int iP = 1; iP <= 3; iP++ ) {
-      gp_XYZ Pi;
-      params.SetCoord( iP, theXYZ( iP ) + 0.001 );
-      ShellPoint( params, Pi );
-      params.SetCoord( iP, theXYZ( iP ) ); // restore params
-      gp_Vec dPi ( P, Pi );
-      double mag = dPi.Magnitude();
-      if ( mag > DBL_MIN )
-        dPi /= mag;
-      drv[ iP - 1 ] = dPi;
-    }
-    for ( int iP = 0; iP < 3; iP++ ) {
-      if ( iP == myFaceIndex )
-        theDf( 1, iP + 1 ) = myFaceParam;
-      else {
-        // like IntAna_IntConicQuad::Perform (const gp_Lin& L, const gp_Pln& P)
-        // where L is (P -> myPoint), P is defined by the 2 other derivative direction
-        int iPrev = ( iP ? iP - 1 : 2 );
-        int iNext = ( iP == 2 ? 0 : iP + 1 );
-        gp_Vec plnNorm = drv[ iPrev ].Crossed( drv [ iNext ] );
-        double Direc = plnNorm * drv[ iP ];
-        if ( Abs(Direc) <= DBL_MIN )
-          theDf( 1, iP + 1 ) = dP * drv[ iP ];
-        else {
-          double Dis = plnNorm * P - plnNorm * myPoint;
-          theDf( 1, iP + 1 ) = Dis/Direc;
-        }
-      }
-    }
-    //myNbIterations +=3; // how many time call ShellPoint()
-
-    // store better values
-    myParam    = params;
-    myValues[0]= theFxyz(1);
-    myValues[1]= theDf(1,1);
-    myValues[2]= theDf(1,2);
-    myValues[3]= theDf(1,3);
-
-//     SCRUTE( theFxyz(1)  );
-//     SCRUTE( theDf( 1,1 ));
-//     SCRUTE( theDf( 1,2 ));
-//     SCRUTE( theDf( 1,3 ));
-  }
-
-  return true;
-}
-
-//=======================================================================
-//function : ComputeParameters
-//purpose  : compute point parameters in the block
-//=======================================================================
-
-bool SMESH_Block::ComputeParameters(const gp_Pnt& thePoint,
-                                    gp_XYZ&       theParams,
-                                    const int     theShapeID)
-{
-  if ( VertexParameters( theShapeID, theParams ))
-    return true;
-
-  if ( IsEdgeID( theShapeID )) {
-    TEdge& e = myEdge[ theShapeID - ID_Ex00 ];
-    GeomAdaptor_Curve curve( e.myC3d );
-    double f = Min( e.myFirst, e.myLast ), l = Max( e.myFirst, e.myLast );
-    Extrema_ExtPC anExtPC( thePoint, curve, f, l );
-    int i, nb = anExtPC.IsDone() ? anExtPC.NbExt() : 0;
-    for ( i = 1; i <= nb; i++ ) {
-      if ( anExtPC.IsMin( i ))
-        return EdgeParameters( theShapeID, anExtPC.Point( i ).Parameter(), theParams );
-    }
-    return false;
-  }
-
-//   MESSAGE( endl<<"SMESH_Block::ComputeParameters( "
-//           <<thePoint.X()<<", "<<thePoint.Y()<<", "<<thePoint.Z()<<")");
-  myPoint = thePoint.XYZ();
-
-  myParam.SetCoord( -1,-1,-1 );
-  myValues[0] = 1e100;
-
-  const bool isOnFace = IsFaceID( theShapeID );
-  double * coef = GetShapeCoef( theShapeID );
-
-  // the first guess
-  math_Vector start( 1, 3, 0.0 );
-  if ( !myGridComputed )
-  {
-    // define the first guess by thePoint projection on lines
-    // connecting vertices
-    bool needGrid = false;
-    gp_XYZ par000( 0, 0, 0 ), par111( 1, 1, 1 );
-    double zero = DBL_MIN * DBL_MIN;
-    for ( int iEdge = 0, iParam = 1; iParam <= 3 && !needGrid; iParam++ )
-    {
-      if ( isOnFace && coef[ iParam - 1 ] != 0 ) {
-        iEdge += 4;
-        continue;
-      }
-      for ( int iE = 0; iE < 4; iE++, iEdge++ ) { // loop on 4 parallel edges
-        gp_Pnt p0 = myEdge[ iEdge ].Point( par000 );
-        gp_Pnt p1 = myEdge[ iEdge ].Point( par111 );
-        gp_Vec v01( p0, p1 ), v0P( p0, thePoint );
-        double len2 = v01.SquareMagnitude();
-        double par = 0;
-        if ( len2 > zero ) {
-          par = v0P.Dot( v01 ) / len2;
-          if ( par < 0 || par > 1 ) {
-            needGrid = true;
-            break;
-          }
-        }
-        start( iParam ) += par;
-      }
-      start( iParam ) /= 4.;
-    }
-    if ( needGrid ) {
-      // compute nodes of 3 x 3 x 3 grid
-      int iNode = 0;
-      for ( double x = 0.25; x < 0.9; x += 0.25 )
-        for ( double y = 0.25; y < 0.9; y += 0.25 )
-          for ( double z = 0.25; z < 0.9; z += 0.25 ) {
-            TxyzPair & prmPtn = my3x3x3GridNodes[ iNode++ ];
-            prmPtn.first.SetCoord( x, y, z );
-            ShellPoint( prmPtn.first, prmPtn.second );
-          }
-      myGridComputed = true;
-    }
-  }
-  if ( myGridComputed ) {
-    double minDist = DBL_MAX;
-    gp_XYZ* bestParam = 0;
-    for ( int iNode = 0; iNode < 27; iNode++ ) {
-      TxyzPair & prmPtn = my3x3x3GridNodes[ iNode ];
-      double dist = ( thePoint.XYZ() - prmPtn.second ).SquareModulus();
-      if ( dist < minDist ) {
-        minDist = dist;
-        bestParam = & prmPtn.first;
-      }
-    }
-    start( 1 ) = bestParam->X();
-    start( 2 ) = bestParam->Y();
-    start( 3 ) = bestParam->Z();
-  }
-
-  int myFaceIndex = -1;
-  if ( isOnFace ) {
-    // put a point on the face
-    for ( int iCoord = 0; iCoord < 3; iCoord++ )
-      if ( coef[ iCoord ] ) {
-        myFaceIndex = iCoord;
-        myFaceParam = ( coef[ myFaceIndex ] < 0.5 ) ? 0.0 : 1.0;
-        start( iCoord + 1 ) = myFaceParam;
-      }
-  }
-  math_Vector low  ( 1, 3, 0.0 );
-  math_Vector up   ( 1, 3, 1.0 );
-  math_Vector tol  ( 1, 3, 1e-4 );
-  math_FunctionSetRoot paramSearch( *this, tol );
-
-  int nbLoops = 0;
-  while ( myValues[0] > 1e-1 && nbLoops++ < 10 ) {
-    paramSearch.Perform ( *this, start, low, up );
-    if ( !paramSearch.IsDone() ) {
-      //MESSAGE( " !paramSearch.IsDone() " );
-    }
-    else {
-      //MESSAGE( " NB ITERATIONS: " << paramSearch.NbIterations() );
-    }
-    start( 1 ) = myParam.X();
-    start( 2 ) = myParam.Y();
-    start( 3 ) = myParam.Z();
-    //MESSAGE( "Distance: " << ( SQRT_FUNC ? sqrt(myValues[0]) : myValues[0] ));
-  }
-//   MESSAGE( endl << myParam.X() << " " << myParam.Y() << " " << myParam.Z() << endl);
-//   mySumDist += myValues[0];
-//   MESSAGE( " TOTAL NB ITERATIONS: " << myNbIterations <<
-//             " DIST: " << ( SQRT_FUNC ? sqrt(mySumDist) : mySumDist ));
-
-
-  theParams = myParam;
-
-  return true;
-}
-
-//=======================================================================
-//function : VertexParameters
-//purpose  : return parameters of a vertex given by TShapeID
-//=======================================================================
-
-bool SMESH_Block::VertexParameters(const int theVertexID, gp_XYZ& theParams)
-{
-  switch ( theVertexID ) {
-  case ID_V000: theParams.SetCoord(0., 0., 0.); return true;
-  case ID_V100: theParams.SetCoord(1., 0., 0.); return true;
-  case ID_V110: theParams.SetCoord(1., 1., 0.); return true;
-  case ID_V010: theParams.SetCoord(0., 1., 0.); return true;
-  default:;
-  }
-  return false;
-}
-
-//=======================================================================
-//function : EdgeParameters
-//purpose  : return parameters of a point given by theU on edge
-//=======================================================================
-
-bool SMESH_Block::EdgeParameters(const int theEdgeID, const double theU, gp_XYZ& theParams)
-{
-  if ( IsEdgeID( theEdgeID )) {
-    vector< int > vertexVec;
-    GetEdgeVertexIDs( theEdgeID, vertexVec );
-    VertexParameters( vertexVec[0], theParams );
-    TEdge& e = myEdge[ theEdgeID - ID_Ex00 ];
-    double param = ( theU - e.myFirst ) / ( e.myLast - e.myFirst );
-    theParams.SetCoord( e.myCoordInd, param );
-    return true;
-  }
-  return false;
-}
-
-//=======================================================================
-//function : GetStateNumber
-//purpose  : 
-//=======================================================================
-
-Standard_Integer SMESH_Block::GetStateNumber ()
-{
-//   MESSAGE( endl<<"SMESH_Block::GetStateNumber( "<<myParam.X()<<", "<<
-//           myParam.Y()<<", "<<myParam.Z()<<") DISTANCE: " << myValues[0]);
-  return myValues[0] < 1e-1;
-}
-
-//=======================================================================
-//function : DumpShapeID
-//purpose  : debug an id of a block sub-shape
-//=======================================================================
-
-#define CASEDUMP(id,strm) case id: strm << #id; break;
-
-ostream& SMESH_Block::DumpShapeID (const int id, ostream& stream)
-{
-  switch ( id ) {
-  CASEDUMP( ID_V000, stream );
-  CASEDUMP( ID_V100, stream );
-  CASEDUMP( ID_V010, stream );
-  CASEDUMP( ID_V110, stream );
-  CASEDUMP( ID_V001, stream );
-  CASEDUMP( ID_V101, stream );
-  CASEDUMP( ID_V011, stream );
-  CASEDUMP( ID_V111, stream );
-  CASEDUMP( ID_Ex00, stream );
-  CASEDUMP( ID_Ex10, stream );
-  CASEDUMP( ID_Ex01, stream );
-  CASEDUMP( ID_Ex11, stream );
-  CASEDUMP( ID_E0y0, stream );
-  CASEDUMP( ID_E1y0, stream );
-  CASEDUMP( ID_E0y1, stream );
-  CASEDUMP( ID_E1y1, stream );
-  CASEDUMP( ID_E00z, stream );
-  CASEDUMP( ID_E10z, stream );
-  CASEDUMP( ID_E01z, stream );
-  CASEDUMP( ID_E11z, stream );
-  CASEDUMP( ID_Fxy0, stream );
-  CASEDUMP( ID_Fxy1, stream );
-  CASEDUMP( ID_Fx0z, stream );
-  CASEDUMP( ID_Fx1z, stream );
-  CASEDUMP( ID_F0yz, stream );
-  CASEDUMP( ID_F1yz, stream );
-  CASEDUMP( ID_Shell, stream );
-  default: stream << "ID_INVALID";
-  }
-  return stream;
-}
-
-//=======================================================================
-//function : GetShapeIDByParams
-//purpose  : define an id of the block sub-shape by normlized point coord
-//=======================================================================
-
-int SMESH_Block::GetShapeIDByParams ( const gp_XYZ& theCoord )
-{
-  //   id ( 0 - 26 ) computation:
-
-  //   vertex     ( 0 - 7 )  : id = 1*x + 2*y + 4*z
-
-  //   edge || X  ( 8 - 11 ) : id = 8   + 1*y + 2*z
-  //   edge || Y  ( 12 - 15 ): id = 1*x + 12  + 2*z
-  //   edge || Z  ( 16 - 19 ): id = 1*x + 2*y + 16 
-
-  //   face || XY ( 20 - 21 ): id = 8   + 12  + 1*z - 0
-  //   face || XZ ( 22 - 23 ): id = 8   + 1*y + 16  - 2
-  //   face || YZ ( 24 - 25 ): id = 1*x + 12  + 16  - 4
-
-  static int iAddBnd[]    = { 1, 2, 4 };
-  static int iAddNotBnd[] = { 8, 12, 16 };
-  static int iFaceSubst[] = { 0, 2, 4 };
-
-  int id = 0;
-  int iOnBoundary = 0;
-  for ( int iCoord = 0; iCoord < 3; iCoord++ )
-  {
-    double val = theCoord.Coord( iCoord + 1 );
-    if ( val == 0.0 )
-      iOnBoundary++;
-    else if ( val == 1.0 )
-      id += iAddBnd[ iOnBoundary++ ];
-    else
-      id += iAddNotBnd[ iCoord ];
-  }
-  if ( iOnBoundary == 1 ) // face
-    id -= iFaceSubst[ (id - 20) / 4 ];
-  else if ( iOnBoundary == 0 ) // shell
-    id = 26;
-
-  if ( id > 26 || id < 0 ) {
-    MESSAGE( "GetShapeIDByParams() = " << id
-            <<" "<< theCoord.X() <<" "<< theCoord.Y() <<" "<< theCoord.Z() );
-  }
-
-  return id + 1; // shape ids start at 1
-}
-
-
-//=======================================================================
-//function : getOrderedEdges
-//purpose  : return nb wires and a list of oredered edges
-//=======================================================================
-
-static int getOrderedEdges (const TopoDS_Face&   theFace,
-                            const TopoDS_Vertex& theFirstVertex,
-                            list< TopoDS_Edge >& theEdges,
-                            list< int >  &       theNbVertexInWires)
-{
-  // put wires in a list, so that an outer wire comes first
-  list<TopoDS_Wire> aWireList;
-  TopoDS_Wire anOuterWire = BRepTools::OuterWire( theFace );
-  aWireList.push_back( anOuterWire );
-  for ( TopoDS_Iterator wIt (theFace); wIt.More(); wIt.Next() )
-    if ( !anOuterWire.IsSame( wIt.Value() ))
-      aWireList.push_back( TopoDS::Wire( wIt.Value() ));
-
-  // loop on edges of wires
-  theNbVertexInWires.clear();
-  list<TopoDS_Wire>::iterator wlIt = aWireList.begin();
-  for ( ; wlIt != aWireList.end(); wlIt++ )
-  {
-    int iE;
-    BRepTools_WireExplorer wExp( *wlIt, theFace );
-    for ( iE = 0; wExp.More(); wExp.Next(), iE++ )
-    {
-      TopoDS_Edge edge = wExp.Current();
-      edge = TopoDS::Edge( edge.Oriented( wExp.Orientation() ));
-      theEdges.push_back( edge );
-    }
-    theNbVertexInWires.push_back( iE );
-    iE = 0;
-    if ( wlIt == aWireList.begin() && theEdges.size() > 1 ) { // the outer wire
-      // orient closed edges
-      list< TopoDS_Edge >::iterator eIt, eIt2;
-      for ( eIt = theEdges.begin(); eIt != theEdges.end(); eIt++ )
-      {
-        TopoDS_Edge& edge = *eIt;
-        if ( TopExp::FirstVertex( edge ).IsSame( TopExp::LastVertex( edge ) ))
-        {
-          eIt2 = eIt;
-          bool isNext = ( eIt2 == theEdges.begin() );
-          TopoDS_Edge edge2 = isNext ? *(++eIt2) : *(--eIt2);
-          double f1,l1,f2,l2;
-          Handle(Geom2d_Curve) c1 = BRep_Tool::CurveOnSurface( edge, theFace, f1,l1 );
-          Handle(Geom2d_Curve) c2 = BRep_Tool::CurveOnSurface( edge2, theFace, f2,l2 );
-          gp_Pnt2d pf = c1->Value( edge.Orientation() == TopAbs_FORWARD ? f1 : l1 );
-          gp_Pnt2d pl = c1->Value( edge.Orientation() == TopAbs_FORWARD ? l1 : f1 );
-          bool isFirst = ( edge2.Orientation() == TopAbs_FORWARD ? isNext : !isNext );
-          gp_Pnt2d p2 = c2->Value( isFirst ? f2 : l2 );
-          isFirst = ( p2.SquareDistance( pf ) < p2.SquareDistance( pl ));
-          if ( isNext ? isFirst : !isFirst )
-            edge.Reverse();
-        }
-      }
-      // rotate theEdges until it begins from theFirstVertex
-      if ( ! theFirstVertex.IsNull() )
-        while ( !theFirstVertex.IsSame( TopExp::FirstVertex( theEdges.front(), true )))
-        {
-          theEdges.splice(theEdges.end(), theEdges,
-                          theEdges.begin(), ++ theEdges.begin());
-          if ( iE++ > theNbVertexInWires.back() ) 
-            break; // break infinite loop
-        }
-    }
-  }
-
-  return aWireList.size();
-}
-
-//=======================================================================
-//function : LoadMeshBlock
-//purpose  : prepare to work with theVolume
-//=======================================================================
-
-#define gpXYZ(n) gp_XYZ(n->X(),n->Y(),n->Z())
-
-bool SMESH_Block::LoadMeshBlock(const SMDS_MeshVolume*        theVolume,
-                                const int                     theNode000Index,
-                                const int                     theNode001Index,
-                                vector<const SMDS_MeshNode*>& theOrderedNodes)
-{
-  MESSAGE(" ::LoadMeshBlock()");
-
-  myNbIterations = 0;
-  mySumDist = 0;
-  myGridComputed = false;
-
-  SMDS_VolumeTool vTool;
-  if (!vTool.Set( theVolume ) || vTool.NbNodes() != 8 ||
-      !vTool.IsLinked( theNode000Index, theNode001Index )) {
-    MESSAGE(" Bad arguments ");
-    return false;
-  }
-  vTool.SetExternalNormal();
-  // In terms of indices used for access to nodes and faces in SMDS_VolumeTool:
-  int V000, V100, V010, V110, V001, V101, V011, V111; // 8 vertices
-  int Fxy0, Fxy1; // bottom and top faces
-  // vertices of faces
-  vector<int> vFxy0, vFxy1;
-
-  V000 = theNode000Index;
-  V001 = theNode001Index;
-
-  // get faces sharing V000 and V001
-  list<int> fV000, fV001;
-  int i, iF, iE, iN;
-  for ( iF = 0; iF < vTool.NbFaces(); ++iF ) {
-    const int* nid = vTool.GetFaceNodesIndices( iF );
-    for ( iN = 0; iN < 4; ++iN )
-      if ( nid[ iN ] == V000 ) {
-        fV000.push_back( iF );
-      } else if ( nid[ iN ] == V001 ) {
-        fV001.push_back( iF );
-      }
-  }
-
-  // find the bottom (Fxy0), the top (Fxy1) faces
-  list<int>::iterator fIt1, fIt2, Fxy0Pos;
-  for ( fIt1 = fV000.begin(); fIt1 != fV000.end(); fIt1++) {
-    fIt2 = std::find( fV001.begin(), fV001.end(), *fIt1 );
-    if ( fIt2 != fV001.end() ) { // *fIt1 is in the both lists
-      fV001.erase( fIt2 ); // erase Fx0z or F0yz from fV001
-    } else { // *fIt1 is in fV000 only
-      Fxy0Pos = fIt1; // points to Fxy0
-    }
-  }
-  Fxy0 = *Fxy0Pos;
-  Fxy1 = fV001.front();
-  const SMDS_MeshNode** nn = vTool.GetNodes();
-
-  // find bottom veritices, their order is that a face normal is external
-  vFxy0.resize(4);
-  const int* nid = vTool.GetFaceNodesIndices( Fxy0 );
-  for ( i = 0; i < 4; ++i )
-    if ( nid[ i ] == V000 )
-      break;
-  for ( iN = 0; iN < 4; ++iN, ++i ) {
-    if ( i == 4 ) i = 0;
-    vFxy0[ iN ] = nid[ i ];
-  }
-  // find top veritices, their order is that a face normal is external
-  vFxy1.resize(4);
-  nid = vTool.GetFaceNodesIndices( Fxy1 );
-  for ( i = 0; i < 4; ++i )
-    if ( nid[ i ] == V001 )
-      break;
-  for ( iN = 0; iN < 4; ++iN, ++i ) {
-    if ( i == 4 ) i = 0;
-    vFxy1[ iN ] = nid[ i ];
-  }
-  // find indices of the rest veritices 
-  V100 = vFxy0[3];
-  V010 = vFxy0[1];
-  V110 = vFxy0[2];
-  V101 = vFxy1[1];
-  V011 = vFxy1[3];
-  V111 = vFxy1[2];
-
-  // set points coordinates
-  myPnt[ ID_V000 - 1 ] = gpXYZ( nn[ V000 ] );
-  myPnt[ ID_V100 - 1 ] = gpXYZ( nn[ V100 ] );
-  myPnt[ ID_V010 - 1 ] = gpXYZ( nn[ V010 ] );
-  myPnt[ ID_V110 - 1 ] = gpXYZ( nn[ V110 ] );
-  myPnt[ ID_V001 - 1 ] = gpXYZ( nn[ V001 ] );
-  myPnt[ ID_V101 - 1 ] = gpXYZ( nn[ V101 ] );
-  myPnt[ ID_V011 - 1 ] = gpXYZ( nn[ V011 ] );
-  myPnt[ ID_V111 - 1 ] = gpXYZ( nn[ V111 ] );
-
-  // fill theOrderedNodes
-  theOrderedNodes.resize( 8 );
-  theOrderedNodes[ 0 ] = nn[ V000 ];
-  theOrderedNodes[ 1 ] = nn[ V100 ];
-  theOrderedNodes[ 2 ] = nn[ V010 ];
-  theOrderedNodes[ 3 ] = nn[ V110 ];
-  theOrderedNodes[ 4 ] = nn[ V001 ];
-  theOrderedNodes[ 5 ] = nn[ V101 ];
-  theOrderedNodes[ 6 ] = nn[ V011 ];
-  theOrderedNodes[ 7 ] = nn[ V111 ];
-  
-  // fill edges
-  myEdge[ ID_Ex00 - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V000 - 1 ];
-  myEdge[ ID_Ex00 - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V100 - 1 ];
-
-  myEdge[ ID_Ex10 - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V010 - 1 ];
-  myEdge[ ID_Ex10 - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V110 - 1 ];
-
-  myEdge[ ID_Ex01 - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V001 - 1 ];
-  myEdge[ ID_Ex01 - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V101 - 1 ];
-
-  myEdge[ ID_Ex11 - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V011 - 1 ];
-  myEdge[ ID_Ex11 - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V111 - 1 ];
-
-  myEdge[ ID_E0y0 - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V000 - 1 ];
-  myEdge[ ID_E0y0 - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V010 - 1 ];
-
-  myEdge[ ID_E1y0 - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V100 - 1 ];
-  myEdge[ ID_E1y0 - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V110 - 1 ];
-
-  myEdge[ ID_E0y1 - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V001 - 1 ];
-  myEdge[ ID_E0y1 - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V011 - 1 ];
-
-  myEdge[ ID_E1y1 - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V101 - 1 ];
-  myEdge[ ID_E1y1 - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V111 - 1 ];
-
-  myEdge[ ID_E00z - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V000 - 1 ];
-  myEdge[ ID_E00z - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V001 - 1 ];
-
-  myEdge[ ID_E10z - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V100 - 1 ];
-  myEdge[ ID_E10z - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V101 - 1 ];
-
-  myEdge[ ID_E01z - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V010 - 1 ];
-  myEdge[ ID_E01z - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V011 - 1 ];
-
-  myEdge[ ID_E11z - ID_Ex00 ].myNodes[ 0 ] = myPnt[ ID_V110 - 1 ];
-  myEdge[ ID_E11z - ID_Ex00 ].myNodes[ 1 ] = myPnt[ ID_V111 - 1 ];
-
-  for ( iE = ID_Ex00; iE <= ID_E11z; ++iE )
-    myEdge[ iE - ID_Ex00 ].myCoordInd = GetCoordIndOnEdge( iE );
-
-  // fill faces corners
-  for ( iF = ID_Fxy0; iF < ID_Shell; ++iF )
-  {
-    TFace& tFace = myFace[ iF - ID_Fxy0 ];
-    vector< int > edgeIdVec(4, -1);
-    GetFaceEdgesIDs( iF, edgeIdVec );
-    tFace.myNodes[ 0 ] = myEdge[ edgeIdVec [ 0 ] - ID_Ex00 ].myNodes[ 1 ];
-    tFace.myNodes[ 1 ] = myEdge[ edgeIdVec [ 0 ] - ID_Ex00 ].myNodes[ 0 ];
-    tFace.myNodes[ 2 ] = myEdge[ edgeIdVec [ 1 ] - ID_Ex00 ].myNodes[ 0 ];
-    tFace.myNodes[ 3 ] = myEdge[ edgeIdVec [ 1 ] - ID_Ex00 ].myNodes[ 1 ];
-    tFace.myCoordInd[ 0 ] = GetCoordIndOnEdge( edgeIdVec[ 0 ] );
-    tFace.myCoordInd[ 1 ] = GetCoordIndOnEdge( edgeIdVec[ 1 ] );
-    tFace.myCoordInd[ 2 ] = GetCoordIndOnEdge( edgeIdVec[ 2 ] );
-    tFace.myCoordInd[ 3 ] = GetCoordIndOnEdge( edgeIdVec[ 3 ] );
-  }
-
-  return true;
-}
-
-//=======================================================================
-//function : LoadBlockShapes
-//purpose  : add sub-shapes of theBlock to theShapeIDMap so that they get
-//           IDs acoording to enum TShapeID
-//=======================================================================
-
-bool SMESH_Block::LoadBlockShapes(const TopoDS_Shell&         theShell,
-                                  const TopoDS_Vertex&        theVertex000,
-                                  const TopoDS_Vertex&        theVertex001,
-                                  TopTools_IndexedMapOfOrientedShape& theShapeIDMap )
-{
-  MESSAGE(" ::LoadBlockShapes()");
-
-  myShell = theShell;
-  myNbIterations = 0;
-  mySumDist = 0;
-  myGridComputed = false;
-
-  // 8 vertices
-  TopoDS_Shape V000, V100, V010, V110, V001, V101, V011, V111;
-  // 12 edges
-  TopoDS_Shape Ex00, Ex10, Ex01, Ex11;
-  TopoDS_Shape E0y0, E1y0, E0y1, E1y1;
-  TopoDS_Shape E00z, E10z, E01z, E11z;
-  // 6 faces
-  TopoDS_Shape Fxy0, Fx0z, F0yz, Fxy1, Fx1z, F1yz;
-
-  // nb of faces bound to a vertex in TopTools_IndexedDataMapOfShapeListOfShape
-  // filled by TopExp::MapShapesAndAncestors()
-  const int NB_FACES_BY_VERTEX = 6;
-
-  TopTools_IndexedDataMapOfShapeListOfShape vfMap;
-  TopExp::MapShapesAndAncestors( myShell, TopAbs_VERTEX, TopAbs_FACE, vfMap );
-  if ( vfMap.Extent() != 8 ) {
-    MESSAGE(" Wrong nb of vertices in the block: " << vfMap.Extent() );
-    return false;
-  }
-
-  V000 = theVertex000;
-  V001 = theVertex001;
-
-  if ( V000.IsNull() ) {
-    // find vertex 000 - the one with smallest coordinates
-    double minVal = DBL_MAX, minX, val;
-    for ( int i = 1; i <= 8; i++ ) {
-      const TopoDS_Vertex& v = TopoDS::Vertex( vfMap.FindKey( i ));
-      gp_Pnt P = BRep_Tool::Pnt( v );
-      val = P.X() + P.Y() + P.Z();
-      if ( val < minVal || ( val == minVal && P.X() < minX )) {
-        V000 = v;
-        minVal = val;
-        minX = P.X();
-      }
-    }
-    // find vertex 001 - the one on the most vertical edge passing through V000
-    TopTools_IndexedDataMapOfShapeListOfShape veMap;
-    TopExp::MapShapesAndAncestors( myShell, TopAbs_VERTEX, TopAbs_EDGE, veMap );
-    gp_Vec dir001 = gp::DZ();
-    gp_Pnt p000 = BRep_Tool::Pnt( TopoDS::Vertex( V000 ));
-    double maxVal = -DBL_MAX;
-    TopTools_ListIteratorOfListOfShape eIt ( veMap.FindFromKey( V000 ));
-    for (  ; eIt.More(); eIt.Next() ) {
-      const TopoDS_Edge& e = TopoDS::Edge( eIt.Value() );
-      TopoDS_Vertex v = TopExp::FirstVertex( e );
-      if ( v.IsSame( V000 ))
-        v = TopExp::LastVertex( e );
-      val = dir001 * gp_Vec( p000, BRep_Tool::Pnt( v )).Normalized();
-      if ( val > maxVal ) {
-        V001 = v;
-        maxVal = val;
-      }
-    }
-  }
-
-  // find the bottom (Fxy0), Fx0z and F0yz faces
-
-  const TopTools_ListOfShape& f000List = vfMap.FindFromKey( V000 );
-  const TopTools_ListOfShape& f001List = vfMap.FindFromKey( V001 );
-  if (f000List.Extent() != NB_FACES_BY_VERTEX ||
-      f001List.Extent() != NB_FACES_BY_VERTEX ) {
-    MESSAGE(" LoadBlockShapes() " << f000List.Extent() << " " << f001List.Extent());
-    return false;
-  }
-  TopTools_ListIteratorOfListOfShape f001It, f000It ( f000List );
-  int i, j, iFound1, iFound2;
-  for ( j = 0; f000It.More(); f000It.Next(), j++ )
-  {
-    if ( NB_FACES_BY_VERTEX == 6 && j % 2 ) continue; // each face encounters twice
-    const TopoDS_Shape& F = f000It.Value();
-    for ( i = 0, f001It.Initialize( f001List ); f001It.More(); f001It.Next(), i++ ) {
-      if ( NB_FACES_BY_VERTEX == 6 && i % 2 ) continue; // each face encounters twice
-      if ( F.IsSame( f001It.Value() ))
-        break;
-    }
-    if ( f001It.More() ) // Fx0z or F0yz found
-      if ( Fx0z.IsNull() ) {
-        Fx0z = F;
-        iFound1 = i;
-      } else {
-        F0yz = F;
-        iFound2 = i;
-      }
-    else // F is the bottom face
-      Fxy0 = F;
-  }
-  if ( Fxy0.IsNull() || Fx0z.IsNull() || F0yz.IsNull() ) {
-    MESSAGE( Fxy0.IsNull() <<" "<< Fx0z.IsNull() <<" "<< F0yz.IsNull() );
-    return false;
-  }
-
-  // choose the top face (Fxy1)
-  for ( i = 0, f001It.Initialize( f001List ); f001It.More(); f001It.Next(), i++ ) {
-    if ( NB_FACES_BY_VERTEX == 6 && i % 2 ) continue; // each face encounters twice
-    if ( i != iFound1 && i != iFound2 )
-      break;
-  }
-  Fxy1 = f001It.Value();
-  if ( Fxy1.IsNull() ) {
-    MESSAGE(" LoadBlockShapes() error ");
-    return false;
-  }
-
-  // find bottom edges and veritices
-  list< TopoDS_Edge > eList;
-  list< int >         nbVertexInWires;
-  getOrderedEdges( TopoDS::Face( Fxy0 ), TopoDS::Vertex( V000 ), eList, nbVertexInWires );
-  if ( nbVertexInWires.size() != 1 || nbVertexInWires.front() != 4 ) {
-    MESSAGE(" LoadBlockShapes() error ");
-    return false;
-  }
-  list< TopoDS_Edge >::iterator elIt = eList.begin();
-  for ( i = 0; elIt != eList.end(); elIt++, i++ )
-    switch ( i ) {
-    case 0: E0y0 = *elIt; V010 = TopExp::LastVertex( *elIt, true ); break;
-    case 1: Ex10 = *elIt; V110 = TopExp::LastVertex( *elIt, true ); break;
-    case 2: E1y0 = *elIt; V100 = TopExp::LastVertex( *elIt, true ); break;
-    case 3: Ex00 = *elIt; break;
-    default:;
-    }
-  if ( i != 4 || E0y0.IsNull() || Ex10.IsNull() || E1y0.IsNull() || Ex00.IsNull() ) {
-    MESSAGE(" LoadBlockShapes() error, eList.size()=" << eList.size());
-    return false;
-  }
-
-
-  // find top edges and veritices
-  eList.clear();
-  getOrderedEdges( TopoDS::Face( Fxy1 ), TopoDS::Vertex( V001 ), eList, nbVertexInWires );
-  if ( nbVertexInWires.size() != 1 || nbVertexInWires.front() != 4 ) {
-    MESSAGE(" LoadBlockShapes() error ");
-    return false;
-  }
-  for ( i = 0, elIt = eList.begin(); elIt != eList.end(); elIt++, i++ )
-    switch ( i ) {
-    case 0: Ex01 = *elIt; V101 = TopExp::LastVertex( *elIt, true ); break;
-    case 1: E1y1 = *elIt; V111 = TopExp::LastVertex( *elIt, true ); break;
-    case 2: Ex11 = *elIt; V011 = TopExp::LastVertex( *elIt, true ); break;
-    case 3: E0y1 = *elIt; break;
-    default:;
-    }
-  if ( i != 4 || Ex01.IsNull() || E1y1.IsNull() || Ex11.IsNull() || E0y1.IsNull() ) {
-    MESSAGE(" LoadBlockShapes() error, eList.size()=" << eList.size());
-    return false;
-  }
-
-  // swap Fx0z and F0yz if necessary
-  TopExp_Explorer exp( Fx0z, TopAbs_VERTEX );
-  for ( ; exp.More(); exp.Next() ) // Fx0z shares V101 and V100
-    if ( V101.IsSame( exp.Current() ) || V100.IsSame( exp.Current() ))
-      break; // V101 or V100 found
-  if ( !exp.More() ) { // not found
-    TopoDS_Shape f = Fx0z; Fx0z = F0yz; F0yz = f;
-  }
-
-  // find Fx1z and F1yz faces
-  const TopTools_ListOfShape& f111List = vfMap.FindFromKey( V111 );
-  const TopTools_ListOfShape& f110List = vfMap.FindFromKey( V110 );
-  if (f111List.Extent() != NB_FACES_BY_VERTEX ||
-      f110List.Extent() != NB_FACES_BY_VERTEX ) {
-    MESSAGE(" LoadBlockShapes() " << f111List.Extent() << " " << f110List.Extent());
-    return false;
-  }
-  TopTools_ListIteratorOfListOfShape f111It, f110It ( f110List);
-  for ( j = 0 ; f110It.More(); f110It.Next(), j++ ) {
-    if ( NB_FACES_BY_VERTEX == 6 && j % 2 ) continue; // each face encounters twice
-    const TopoDS_Shape& F = f110It.Value();
-    for ( i = 0, f111It.Initialize( f111List ); f111It.More(); f111It.Next(), i++ ) {
-      if ( NB_FACES_BY_VERTEX == 6 && i % 2 ) continue; // each face encounters twice
-      if ( F.IsSame( f111It.Value() )) { // Fx1z or F1yz found
-        if ( Fx1z.IsNull() )
-          Fx1z = F;
-        else
-          F1yz = F;
-      }
-    }
-  }
-  if ( Fx1z.IsNull() || F1yz.IsNull() ) {
-    MESSAGE(" LoadBlockShapes() error ");
-    return false;
-  }
-
-  // swap Fx1z and F1yz if necessary
-  for ( exp.Init( Fx1z, TopAbs_VERTEX ); exp.More(); exp.Next() )
-    if ( V010.IsSame( exp.Current() ) || V011.IsSame( exp.Current() ))
-      break;
-  if ( !exp.More() ) {
-    TopoDS_Shape f = Fx1z; Fx1z = F1yz; F1yz = f;
-  }
-
-  // find vertical edges
-  for ( exp.Init( Fx0z, TopAbs_EDGE ); exp.More(); exp.Next() ) {
-    const TopoDS_Edge& edge = TopoDS::Edge( exp.Current() );
-    const TopoDS_Shape& vFirst = TopExp::FirstVertex( edge, true );
-    if ( vFirst.IsSame( V001 ))
-      E00z = edge;
-    else if ( vFirst.IsSame( V100 ))
-      E10z = edge;
-  }
-  if ( E00z.IsNull() || E10z.IsNull() ) {
-    MESSAGE(" LoadBlockShapes() error ");
-    return false;
-  }
-  for ( exp.Init( Fx1z, TopAbs_EDGE ); exp.More(); exp.Next() ) {
-    const TopoDS_Edge& edge = TopoDS::Edge( exp.Current() );
-    const TopoDS_Shape& vFirst = TopExp::FirstVertex( edge, true );
-    if ( vFirst.IsSame( V111 ))
-      E11z = edge;
-    else if ( vFirst.IsSame( V010 ))
-      E01z = edge;
-  }
-  if ( E01z.IsNull() || E11z.IsNull() ) {
-    MESSAGE(" LoadBlockShapes() error ");
-    return false;
-  }
-
-  // load shapes in theShapeIDMap
-
-  theShapeIDMap.Clear();
-  
-  theShapeIDMap.Add(V000.Oriented( TopAbs_FORWARD ));
-  theShapeIDMap.Add(V100.Oriented( TopAbs_FORWARD ));
-  theShapeIDMap.Add(V010.Oriented( TopAbs_FORWARD ));
-  theShapeIDMap.Add(V110.Oriented( TopAbs_FORWARD ));
-  theShapeIDMap.Add(V001.Oriented( TopAbs_FORWARD ));
-  theShapeIDMap.Add(V101.Oriented( TopAbs_FORWARD ));
-  theShapeIDMap.Add(V011.Oriented( TopAbs_FORWARD ));
-  theShapeIDMap.Add(V111.Oriented( TopAbs_FORWARD ));
-
-  theShapeIDMap.Add(Ex00);
-  theShapeIDMap.Add(Ex10);
-  theShapeIDMap.Add(Ex01);
-  theShapeIDMap.Add(Ex11);
-
-  theShapeIDMap.Add(E0y0);
-  theShapeIDMap.Add(E1y0);
-  theShapeIDMap.Add(E0y1);
-  theShapeIDMap.Add(E1y1);
-
-  theShapeIDMap.Add(E00z);
-  theShapeIDMap.Add(E10z);
-  theShapeIDMap.Add(E01z);
-  theShapeIDMap.Add(E11z);
-
-  theShapeIDMap.Add(Fxy0);
-  theShapeIDMap.Add(Fxy1);
-  theShapeIDMap.Add(Fx0z);
-  theShapeIDMap.Add(Fx1z);
-  theShapeIDMap.Add(F0yz);
-  theShapeIDMap.Add(F1yz);
-  
-  theShapeIDMap.Add(myShell);
-
-  if ( theShapeIDMap.Extent() != 27 ) {
-    MESSAGE("LoadBlockShapes() " << theShapeIDMap.Extent() );
-    return false;
-  }
-
-  // store shapes geometry
-  for ( int shapeID = 1; shapeID < theShapeIDMap.Extent(); shapeID++ )
-  {
-    const TopoDS_Shape& S = theShapeIDMap( shapeID );
-    switch ( S.ShapeType() )
-    {
-    case TopAbs_VERTEX: {
-
-      if ( shapeID > ID_V111 ) {
-        MESSAGE(" shapeID =" << shapeID );
-        return false;
-      }
-      myPnt[ shapeID - ID_V000 ] =
-        BRep_Tool::Pnt( TopoDS::Vertex( S )).XYZ();
-      break;
-    }
-    case TopAbs_EDGE: {
-
-      const TopoDS_Edge& edge = TopoDS::Edge( S );
-      if ( shapeID < ID_Ex00 || shapeID > ID_E11z || edge.IsNull() ) {
-        MESSAGE(" shapeID =" << shapeID );
-        return false;
-      }
-      TEdge& tEdge = myEdge[ shapeID - ID_Ex00 ];
-      tEdge.myCoordInd = GetCoordIndOnEdge( shapeID );
-      TopLoc_Location loc;
-      tEdge.myC3d = BRep_Tool::Curve( edge, loc, tEdge.myFirst, tEdge.myLast );
-      if ( !IsForwardEdge( edge, theShapeIDMap ))
-        Swap( tEdge.myFirst, tEdge.myLast );
-      tEdge.myTrsf = loc;
-      break;
-    }
-    case TopAbs_FACE: {
-
-      const TopoDS_Face& face = TopoDS::Face( S );
-      if ( shapeID < ID_Fxy0 || shapeID > ID_F1yz || face.IsNull() ) {
-        MESSAGE(" shapeID =" << shapeID );
-        return false;
-      }
-      TFace& tFace = myFace[ shapeID - ID_Fxy0 ];
-      // pcurves
-      vector< int > edgeIdVec(4, -1);
-      GetFaceEdgesIDs( shapeID, edgeIdVec );
-      for ( int iE = 0; iE < 4; iE++ ) // loop on 4 edges
-      {
-        const TopoDS_Edge& edge = TopoDS::Edge( theShapeIDMap( edgeIdVec[ iE ]));
-        tFace.myCoordInd[ iE ] = GetCoordIndOnEdge( edgeIdVec[ iE ] );
-        tFace.myC2d[ iE ] =
-          BRep_Tool::CurveOnSurface( edge, face, tFace.myFirst[iE], tFace.myLast[iE] );
-        if ( !IsForwardEdge( edge, theShapeIDMap ))
-          Swap( tFace.myFirst[ iE ], tFace.myLast[ iE ] );
-      }
-      // 2d corners
-      tFace.myCorner[ 0 ] = tFace.myC2d[ 0 ]->Value( tFace.myFirst[0] ).XY();
-      tFace.myCorner[ 1 ] = tFace.myC2d[ 0 ]->Value( tFace.myLast[0] ).XY();
-      tFace.myCorner[ 2 ] = tFace.myC2d[ 1 ]->Value( tFace.myLast[1] ).XY();
-      tFace.myCorner[ 3 ] = tFace.myC2d[ 1 ]->Value( tFace.myFirst[1] ).XY();
-      // sufrace
-      TopLoc_Location loc;
-      tFace.myS = BRep_Tool::Surface( face, loc );
-      tFace.myTrsf = loc;
-      break;
-    }
-    default: break;
-    }
-  } // loop on shapes in theShapeIDMap
-
-  return true;
-}
-
-//=======================================================================
-//function : GetFaceEdgesIDs
-//purpose  : return edges IDs in the order u0, u1, 0v, 1v
-//           u0 means "|| u, v == 0"
-//=======================================================================
-
-void SMESH_Block::GetFaceEdgesIDs (const int faceID, vector< int >& edgeVec )
-{
-  edgeVec.resize( 4 );
-  switch ( faceID ) {
-  case ID_Fxy0:
-    edgeVec[ 0 ] = ID_Ex00;
-    edgeVec[ 1 ] = ID_Ex10;
-    edgeVec[ 2 ] = ID_E0y0;
-    edgeVec[ 3 ] = ID_E1y0;
-    break;
-  case ID_Fxy1:
-    edgeVec[ 0 ] = ID_Ex01;
-    edgeVec[ 1 ] = ID_Ex11;
-    edgeVec[ 2 ] = ID_E0y1;
-    edgeVec[ 3 ] = ID_E1y1;
-    break;
-  case ID_Fx0z:
-    edgeVec[ 0 ] = ID_Ex00;
-    edgeVec[ 1 ] = ID_Ex01;
-    edgeVec[ 2 ] = ID_E00z;
-    edgeVec[ 3 ] = ID_E10z;
-    break;
-  case ID_Fx1z:
-    edgeVec[ 0 ] = ID_Ex10;
-    edgeVec[ 1 ] = ID_Ex11;
-    edgeVec[ 2 ] = ID_E01z;
-    edgeVec[ 3 ] = ID_E11z;
-    break;
-  case ID_F0yz:
-    edgeVec[ 0 ] = ID_E0y0;
-    edgeVec[ 1 ] = ID_E0y1;
-    edgeVec[ 2 ] = ID_E00z;
-    edgeVec[ 3 ] = ID_E01z;
-    break;
-  case ID_F1yz:
-    edgeVec[ 0 ] = ID_E1y0;
-    edgeVec[ 1 ] = ID_E1y1;
-    edgeVec[ 2 ] = ID_E10z;
-    edgeVec[ 3 ] = ID_E11z;
-    break;
-  default:
-    MESSAGE(" GetFaceEdgesIDs(), wrong face ID: " << faceID );
-  }
-}
-
-//=======================================================================
-//function : GetEdgeVertexIDs
-//purpose  : return vertex IDs of an edge
-//=======================================================================
-
-void SMESH_Block::GetEdgeVertexIDs (const int edgeID, vector< int >& vertexVec )
-{
-  vertexVec.resize( 2 );
-  switch ( edgeID ) {
-
-  case ID_Ex00:
-    vertexVec[ 0 ] = ID_V000;
-    vertexVec[ 1 ] = ID_V100;
-    break;
-  case ID_Ex10:
-    vertexVec[ 0 ] = ID_V010;
-    vertexVec[ 1 ] = ID_V110;
-    break;
-  case ID_Ex01:
-    vertexVec[ 0 ] = ID_V001;
-    vertexVec[ 1 ] = ID_V101;
-    break;
-  case ID_Ex11:
-    vertexVec[ 0 ] = ID_V011;
-    vertexVec[ 1 ] = ID_V111;
-    break;
-
-  case ID_E0y0:
-    vertexVec[ 0 ] = ID_V000;
-    vertexVec[ 1 ] = ID_V010;
-    break;
-  case ID_E1y0:
-    vertexVec[ 0 ] = ID_V100;
-    vertexVec[ 1 ] = ID_V110;
-    break;
-  case ID_E0y1:
-    vertexVec[ 0 ] = ID_V001;
-    vertexVec[ 1 ] = ID_V011;
-    break;
-  case ID_E1y1:
-    vertexVec[ 0 ] = ID_V101;
-    vertexVec[ 1 ] = ID_V111;
-    break;
-
-  case ID_E00z:
-    vertexVec[ 0 ] = ID_V000;
-    vertexVec[ 1 ] = ID_V001;
-    break;
-  case ID_E10z:
-    vertexVec[ 0 ] = ID_V100;
-    vertexVec[ 1 ] = ID_V101;
-    break;
-  case ID_E01z:
-    vertexVec[ 0 ] = ID_V010;
-    vertexVec[ 1 ] = ID_V011;
-    break;
-  case ID_E11z:
-    vertexVec[ 0 ] = ID_V110;
-    vertexVec[ 1 ] = ID_V111;
-    break;
-  default:
-    MESSAGE(" GetEdgeVertexIDs(), wrong edge ID: " << edgeID );
-  }
-}
-
diff --git a/src/SMESH/SMESH_Block.hxx b/src/SMESH/SMESH_Block.hxx
deleted file mode 100644 (file)
index 1551048..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-// File      : SMESH_Block.hxx
-// Created   : Tue Nov 30 12:42:18 2004
-// Author    : Edward AGAPOV (eap)
-
-
-#ifndef SMESH_Block_HeaderFile
-#define SMESH_Block_HeaderFile
-
-#include <Geom2d_Curve.hxx>
-#include <Geom_Curve.hxx>
-#include <Geom_Surface.hxx>
-#include <TopExp.hxx>
-#include <TopTools_IndexedMapOfOrientedShape.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Shell.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <gp_Pnt.hxx>
-#include <gp_Trsf.hxx>
-#include <gp_XY.hxx>
-#include <gp_XYZ.hxx>
-#include <math_FunctionSetWithDerivatives.hxx>
-#include <math_Matrix.hxx>
-#include <math_Vector.hxx>
-
-#include <ostream>
-#include <vector>
-
-class SMDS_MeshVolume;
-class SMDS_MeshNode;
-
-// =========================================================
-// class calculating coordinates of 3D points by normalized
-// parameters inside the block and vice versa
-// =========================================================
-
-class SMESH_Block: public math_FunctionSetWithDerivatives
-{
- public:
-  enum TShapeID { // ids of the block sub-shapes
-    ID_NONE = 0,
-
-    ID_V000 = 1, ID_V100, ID_V010, ID_V110, ID_V001, ID_V101, ID_V011, ID_V111,
-
-    ID_Ex00, ID_Ex10, ID_Ex01, ID_Ex11,
-    ID_E0y0, ID_E1y0, ID_E0y1, ID_E1y1,
-    ID_E00z, ID_E10z, ID_E01z, ID_E11z,
-
-    ID_Fxy0, ID_Fxy1, ID_Fx0z, ID_Fx1z, ID_F0yz, ID_F1yz,
-
-    ID_Shell
-    };
-
-
- public: // methods about ids of the block sub-shapes
-
-  static int NbVertices()  { return  8; }
-  static int NbEdges()     { return 12; }
-  static int NbFaces()     { return  6; }
-  static int NbSubShapes() { return ID_Shell; }
-  // to avoid magic numbers when allocating memory for subshapes
-
-  static inline bool IsVertexID( int theShapeID )
-  { return ( theShapeID >= ID_V000 && theShapeID <= ID_V111 ); }
-
-  static inline bool IsEdgeID( int theShapeID )
-  { return ( theShapeID >= ID_Ex00 && theShapeID <= ID_E11z ); }
-
-  static inline bool IsFaceID( int theShapeID )
-  { return ( theShapeID >= ID_Fxy0 && theShapeID <= ID_F1yz ); }
-
-  static int ShapeIndex( int theShapeID )
-  {
-    if ( IsVertexID( theShapeID )) return theShapeID - ID_V000;
-    if ( IsEdgeID( theShapeID ))   return theShapeID - ID_Ex00;
-    if ( IsFaceID( theShapeID ))   return theShapeID - ID_Fxy0;
-    return 0;
-  }
-  // return index [0-...] for each type of sub-shapes,
-  // for example :
-  // ShapeIndex( ID_Ex00 ) == 0
-  // ShapeIndex( ID_Ex10 ) == 1
-
-  static void GetFaceEdgesIDs (const int faceID, vector< int >& edgeVec );
-  // return edges IDs of a face in the order u0, u1, 0v, 1v
-
-  static void GetEdgeVertexIDs (const int edgeID, vector< int >& vertexVec );
-  // return vertex IDs of an edge
-
-  static int GetCoordIndOnEdge (const int theEdgeID)
-  { return (theEdgeID < ID_E0y0) ? 1 : (theEdgeID < ID_E00z) ? 2 : 3; }
-  // return an index of a coordinate which varies along the edge
-
-  static double* GetShapeCoef (const int theShapeID);
-  // for theShapeID( TShapeID ), returns 3 coefficients used
-  // to compute an addition of an on-theShape point to coordinates
-  // of an in-shell point. If an in-shell point has parameters (Px,Py,Pz),
-  // then the addition of a point P is computed as P*kx*ky*kz and ki is
-  // defined by the returned coef like this:
-  // ki = (coef[i] == 0) ? 1 : (coef[i] < 0) ? 1 - Pi : Pi
-
-  static int GetShapeIDByParams ( const gp_XYZ& theParams );
-  // define an id of the block sub-shape by point parameters
-
-  static ostream& DumpShapeID (const int theBlockShapeID, ostream& stream);
-  // DEBUG: dump an id of a block sub-shape
-
-
- public: // initialization
-
-  SMESH_Block (): myNbIterations(0), mySumDist(0.) {}
-
-  bool LoadBlockShapes(const TopoDS_Shell&         theShell,
-                       const TopoDS_Vertex&        theVertex000,
-                       const TopoDS_Vertex&        theVertex001,
-                       TopTools_IndexedMapOfOrientedShape& theShapeIDMap );
-  // add sub-shapes of theBlock to theShapeIDMap so that they get
-  // IDs acoording to enum TShapeID
-
-  bool LoadMeshBlock(const SMDS_MeshVolume*        theVolume,
-                     const int                     theNode000Index,
-                     const int                     theNode001Index,
-                     vector<const SMDS_MeshNode*>& theOrderedNodes);
-  // prepare to work with theVolume and
-  // return nodes in the order of TShapeID enum
-
-
- public: // define coordinates by parameters
-
-  bool VertexPoint( const int theVertexID, gp_XYZ& thePoint ) const {
-    if ( !IsVertexID( theVertexID ))           return false;
-    thePoint = myPnt[ theVertexID - ID_V000 ]; return true;
-  }
-  // return vertex coordinates, parameters are defined by theVertexID
-
-  bool EdgePoint( const int theEdgeID, const gp_XYZ& theParams, gp_XYZ& thePoint ) const {
-    if ( !IsEdgeID( theEdgeID ))                                 return false;
-    thePoint = myEdge[ theEdgeID - ID_Ex00 ].Point( theParams ); return true;
-  }
-  // return coordinates of a point on edge
-
-  bool FacePoint( const int theFaceID, const gp_XYZ& theParams, gp_XYZ& thePoint ) const {
-    if ( !IsFaceID ( theFaceID ))                                return false;
-    thePoint = myFace[ theFaceID - ID_Fxy0 ].Point( theParams ); return true;
-  }
-  // return coordinates of a point on face
-
-  bool ShellPoint( const gp_XYZ& theParams, gp_XYZ& thePoint ) const;
-  // return coordinates of a point in shell
-
-  static bool ShellPoint(const gp_XYZ&         theParams,
-                         const vector<gp_XYZ>& thePointOnShape,
-                         gp_XYZ&               thePoint );
-  // computes coordinates of a point in shell by points on sub-shapes;
-  // thePointOnShape[ subShapeID ] must be a point on a subShape;
-  // thePointOnShape.size() == ID_Shell, thePointOnShape[0] not used
-
-
- public: // define parameters by coordinates
-
-  bool ComputeParameters (const gp_Pnt& thePoint,
-                          gp_XYZ&       theParams,
-                          const int     theShapeID = ID_Shell);
-  // compute point parameters in the block.
-  // Note: for edges, it is better to use EdgeParameters()
-
-  bool VertexParameters(const int theVertexID, gp_XYZ& theParams);
-  // return parameters of a vertex given by TShapeID
-
-  bool EdgeParameters(const int theEdgeID, const double theU, gp_XYZ& theParams);
-  // return parameters of a point given by theU on edge
-
-
- public: // services
-
-  static bool IsForwardEdge (const TopoDS_Edge &                 theEdge,
-                             TopTools_IndexedMapOfOrientedShape& theShapeIDMap) {
-    int v1ID = theShapeIDMap.FindIndex( TopExp::FirstVertex( theEdge ).Oriented( TopAbs_FORWARD ));
-    int v2ID = theShapeIDMap.FindIndex( TopExp::LastVertex( theEdge ).Oriented( TopAbs_FORWARD ));
-    return ( v1ID < v2ID );
-  }
-  // Return true if an in-block parameter increases along theEdge curve
-
-  static void Swap(double& a, double& b) { double tmp = a; a = b; b = tmp; }
-
-
- public:
-  // methods of math_FunctionSetWithDerivatives used internally
-  // to define parameters by coordinates
-  Standard_Integer NbVariables() const;
-  Standard_Integer NbEquations() const;
-  Standard_Boolean Value(const math_Vector& X,math_Vector& F) ;
-  Standard_Boolean Derivatives(const math_Vector& X,math_Matrix& D) ;
-  Standard_Boolean Values(const math_Vector& X,math_Vector& F,math_Matrix& D) ;
-  Standard_Integer GetStateNumber ();
-
- private:
-
-  struct TEdge {
-    int                myCoordInd;
-    double             myFirst;
-    double             myLast;
-    Handle(Geom_Curve) myC3d;
-    gp_Trsf            myTrsf;
-    double GetU( const gp_XYZ& theParams ) const;
-    gp_XYZ Point( const gp_XYZ& theParams ) const;
-    // if mesh volume
-    gp_XYZ             myNodes[2];
-  };
-
-  struct TFace {
-    // 4 edges in the order u0, u1, 0v, 1v
-    int                  myCoordInd[ 4 ];
-    double               myFirst   [ 4 ];
-    double               myLast    [ 4 ];
-    Handle(Geom2d_Curve) myC2d     [ 4 ];
-    // 4 corner points in the order 00, 10, 11, 01
-    gp_XY                myCorner  [ 4 ];
-    // surface
-    Handle(Geom_Surface) myS;
-    gp_Trsf              myTrsf;
-    gp_XY  GetUV( const gp_XYZ& theParams ) const;
-    gp_XYZ Point( const gp_XYZ& theParams ) const;
-    int GetUInd() const { return myCoordInd[ 0 ]; }
-    int GetVInd() const { return myCoordInd[ 2 ]; }
-    void GetCoefs( int i, const gp_XYZ& theParams, double& eCoef, double& vCoef ) const;
-    // if mesh volume
-    gp_XYZ               myNodes[4];
-  };
-
-  TopoDS_Shell myShell;
-  // geometry in the order as in TShapeID:
-  // 8 vertices
-  gp_XYZ myPnt[ 8 ];
-  // 12 edges
-  TEdge  myEdge[ 12 ];
-  // 6 faces
-  TFace  myFace[ 6 ];
-
-  // for param computation
-
-  int      myFaceIndex;
-  double   myFaceParam;
-  int      myNbIterations;
-  double   mySumDist;
-
-  gp_XYZ   myPoint; // the given point
-  gp_XYZ   myParam; // the best parameters guess
-  double   myValues[ 4 ]; // values computed at myParam
-
-  typedef pair<gp_XYZ,gp_XYZ> TxyzPair;
-  TxyzPair my3x3x3GridNodes[ 27 ];
-  bool     myGridComputed;
-};
-
-
-#endif
diff --git a/src/SMESH/SMESH_Group.cxx b/src/SMESH/SMESH_Group.cxx
deleted file mode 100644 (file)
index 49cade1..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2004  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESH_Group.cxx
-//  Author : Michael Sazonov (OCC)
-//  Module : SMESH
-//  $Header$
-
-#include "SMESH_Group.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESHDS_Group.hxx"
-#include "SMESHDS_GroupOnGeom.hxx"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_Group::SMESH_Group (int                       theID,
-                          const SMESH_Mesh*         theMesh,
-                          const SMDSAbs_ElementType theType,
-                          const char*               theName,
-                          const TopoDS_Shape&       theShape)
-     : myName(theName)
-{
-  if ( theShape.IsNull() )
-    myGroupDS = new SMESHDS_Group (theID,
-                                   const_cast<SMESH_Mesh*>(theMesh)->GetMeshDS(),
-                                   theType);
-  else
-    myGroupDS = new SMESHDS_GroupOnGeom (theID,
-                                         const_cast<SMESH_Mesh*>(theMesh)->GetMeshDS(),
-                                         theType,
-                                         theShape);
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_Group::~SMESH_Group ()
-{
-  delete myGroupDS;
-}
diff --git a/src/SMESH/SMESH_Group.hxx b/src/SMESH/SMESH_Group.hxx
deleted file mode 100644 (file)
index 26493e4..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2004  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESH_Group.hxx
-//  Author : Michael Sazonov (OCC)
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_Group_HeaderFile
-#define _SMESH_Group_HeaderFile
-
-#include <SMDSAbs_ElementType.hxx>
-#include <string>
-#include <TopoDS_Shape.hxx>
-
-
-class SMESHDS_GroupBase;
-class SMESH_Mesh;
-
-class SMESH_Group
-{
- public:
-
-  SMESH_Group (int                       theID,
-               const SMESH_Mesh*         theMesh,
-               const SMDSAbs_ElementType theType,
-               const char*               theName,
-               const TopoDS_Shape&       theShape = TopoDS_Shape());
-  ~SMESH_Group ();
-
-  void SetName (const char* theName) { myName = theName; }
-
-  const char* GetName () const { return myName.c_str(); }
-
-  SMESHDS_GroupBase * GetGroupDS () { return myGroupDS; }
-
- private:
-  SMESH_Group (const SMESH_Group& theOther);
-  // prohibited copy constructor
-  SMESH_Group& operator = (const SMESH_Group& theOther);
-  // prohibited assign operator
-
-  SMESHDS_GroupBase * myGroupDS;
-  std::string         myName;
-
-};
-
-#endif
diff --git a/src/SMESH/SMESH_HypoFilter.cxx b/src/SMESH/SMESH_HypoFilter.cxx
deleted file mode 100644 (file)
index ff14016..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_HypoFilter.cxx
-//  Module : SMESH
-//  $Header$
-
-#include "SMESH_HypoFilter.hxx"
-
-#include "SMESH_Hypothesis.hxx"
-#include "SMESH_subMesh.hxx"
-
-using namespace std;
-
-
-//=======================================================================
-//function : NamePredicate::Value
-//purpose  : 
-//=======================================================================
-
-bool SMESH_HypoFilter::NamePredicate::IsOk (const SMESH_Hypothesis* aHyp,
-                                            const TopoDS_Shape&     /*aShape*/ ) const
-{
-  return ( _name == aHyp->GetName() );
-}
-
-//=======================================================================
-//function : TypePredicate::Value
-//purpose  : 
-//=======================================================================
-
-int SMESH_HypoFilter::TypePredicate::Value( const SMESH_Hypothesis* aHyp ) const
-{
-  return aHyp->GetType();
-};
-
-//=======================================================================
-//function : DimPredicate::Value
-//purpose  : 
-//=======================================================================
-
-int SMESH_HypoFilter::DimPredicate::Value( const SMESH_Hypothesis* aHyp ) const
-{
-  return aHyp->GetDim();
-}
-
-//=======================================================================
-//function : ApplicablePredicate::IsOk
-//purpose  : 
-//=======================================================================
-
-bool SMESH_HypoFilter::ApplicablePredicate::IsOk(const SMESH_Hypothesis* aHyp,
-                                                 const TopoDS_Shape&     /*aShape*/) const
-{
-  return SMESH_subMesh::IsApplicableHypotesis( aHyp, (TopAbs_ShapeEnum)_shapeType );
-};
-
-//=======================================================================
-//function : ApplicablePredicate::ApplicablePredicate
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoFilter::ApplicablePredicate::ApplicablePredicate( const TopoDS_Shape& theShape )
-{
-  _shapeType = ( theShape.IsNull() ? TopAbs_SHAPE : theShape.ShapeType());
-}
-
-//=======================================================================
-//function : InstancePredicate::IsOk
-//purpose  : 
-//=======================================================================
-
-bool SMESH_HypoFilter::InstancePredicate::IsOk(const SMESH_Hypothesis* aHyp,
-                                               const TopoDS_Shape&     /*aShape*/) const
-{
-  return _hypo == aHyp;
-}
-
-//=======================================================================
-//function : IsAssignedToPredicate::IsOk
-//purpose  : 
-//=======================================================================
-
-bool SMESH_HypoFilter::IsAssignedToPredicate::IsOk(const SMESH_Hypothesis* aHyp,
-                                               const TopoDS_Shape&     aShape) const
-{
-  return ( !_mainShape.IsNull() && !aShape.IsNull() && _mainShape.IsSame( aShape ));
-}
-
-//=======================================================================
-//function : SMESH_HypoFilter
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoFilter::SMESH_HypoFilter()
-{
-}
-
-//=======================================================================
-//function : SMESH_HypoFilter
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoFilter::SMESH_HypoFilter( SMESH_HypoPredicate* aPredicate, bool notNagate )
-{
-  add( notNagate ? AND : AND_NOT, aPredicate );
-}
-
-//=======================================================================
-//function : And
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoFilter & SMESH_HypoFilter::And( SMESH_HypoPredicate* aPredicate )
-{
-  add( AND, aPredicate );
-  return *this;
-}
-
-//=======================================================================
-//function : AndNot
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoFilter & SMESH_HypoFilter::AndNot( SMESH_HypoPredicate* aPredicate )
-{
-  add( AND_NOT, aPredicate );
-  return *this;
-}
-
-//=======================================================================
-//function : Or
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoFilter & SMESH_HypoFilter::Or( SMESH_HypoPredicate* aPredicate )
-{
-  add( OR, aPredicate );
-  return *this;
-}
-
-//=======================================================================
-//function : OrNot
-//purpose  : Return predicates
-//=======================================================================
-
-SMESH_HypoFilter & SMESH_HypoFilter::OrNot( SMESH_HypoPredicate* aPredicate )
-{
-  add( OR_NOT, aPredicate );
-  return *this;
-}
-
-//=======================================================================
-//function : Is
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoPredicate* SMESH_HypoFilter::Is(const SMESH_Hypothesis* theHypo)
-{
-  return new InstancePredicate( theHypo );
-}
-
-//=======================================================================
-//function : IsAlgo
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoPredicate* SMESH_HypoFilter::IsAlgo()
-{
-  return new TypePredicate( MORE, SMESHDS_Hypothesis::PARAM_ALGO );
-}
-
-//=======================================================================
-//function : IsGlobal
-//purpose  : 
-//=======================================================================
-
- SMESH_HypoPredicate* SMESH_HypoFilter::IsGlobal(const TopoDS_Shape& theMainShape)
-{
-  return new IsAssignedToPredicate( theMainShape );
-}
-
-//=======================================================================
-//function : IsAssignedTo
-//purpose  : 
-//=======================================================================
-
- SMESH_HypoPredicate* SMESH_HypoFilter::IsAssignedTo(const TopoDS_Shape& theShape)
-{
-  return new IsAssignedToPredicate( theShape );
-}
-
-//=======================================================================
-//function : HasName
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoPredicate* SMESH_HypoFilter::HasName(const string & theName)
-{
-  return new NamePredicate( theName );
-}
-
-//=======================================================================
-//function : HasDim
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoPredicate* SMESH_HypoFilter::HasDim(const int theDim)
-{
-  return new DimPredicate( EQUAL, theDim );
-}
-
-//=======================================================================
-//function : IsApplicableTo
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoPredicate* SMESH_HypoFilter::IsApplicableTo(const TopoDS_Shape& theShape)
-{
-  return new ApplicablePredicate( theShape );
-}
-
-//=======================================================================
-//function : HasType
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoPredicate* SMESH_HypoFilter::HasType(const int theHypType)
-{
-  return new TypePredicate( EQUAL, theHypType );
-}
-
-//=======================================================================
-//function : IsOk
-//purpose  : 
-//=======================================================================
-
-bool SMESH_HypoFilter::IsOk (const SMESH_Hypothesis* aHyp,
-                             const TopoDS_Shape&     aShape) const
-{
-  if ( myPredicates.empty() )
-    return true;
-
-  bool ok = ( myPredicates.front()->_logical_op <= AND_NOT );
-  list<SMESH_HypoPredicate*>::const_iterator pred = myPredicates.begin();
-  for ( ; pred != myPredicates.end(); ++pred )
-  {
-    bool ok2 = (*pred)->IsOk( aHyp, aShape );
-    switch ( (*pred)->_logical_op ) {
-    case AND:     ok = ok && ok2; break;
-    case AND_NOT: ok = ok && !ok2; break;
-    case OR:      ok = ok || ok2; break;
-    case OR_NOT:  ok = ok || !ok2; break;
-    default:;
-    }
-  }
-  return ok;
-}
-
-//=======================================================================
-//function : Init
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoFilter & SMESH_HypoFilter::Init  ( SMESH_HypoPredicate* aPredicate, bool notNagate )
-{
-  list<SMESH_HypoPredicate*>::const_iterator pred = myPredicates.begin();
-  for ( ; pred != myPredicates.end(); ++pred )
-    delete *pred;
-
-  add( notNagate ? AND : AND_NOT, aPredicate );
-  return *this;
-}
-
-
-//=======================================================================
-//function : IsOk
-//purpose  : 
-//=======================================================================
-
-SMESH_HypoFilter::~SMESH_HypoFilter()
-{
-  Init(0);
-}
-
diff --git a/src/SMESH/SMESH_HypoFilter.hxx b/src/SMESH/SMESH_HypoFilter.hxx
deleted file mode 100644 (file)
index 6bc34bf..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_HypoFilter.hxx
-//  Module : SMESH
-//  $Header$
-
-
-#ifndef SMESH_HypoFilter_HeaderFile
-#define SMESH_HypoFilter_HeaderFile
-
-// ===========================
-// Filter of SMESH_Hypothesis
-// ===========================
-
-#include <list>
-#include <string>
-#include <TopoDS_Shape.hxx>
-
-class SMESH_HypoFilter;
-class SMESH_Hypothesis;
-
-class SMESH_HypoPredicate {
- public:
-  virtual bool IsOk(const SMESH_Hypothesis* aHyp,
-                    const TopoDS_Shape&     aShape) const = 0;
-  // check aHyp or/and aShape it is assigned to
-  virtual ~SMESH_HypoPredicate() {}
- private:
-  int _logical_op;
-  friend class SMESH_HypoFilter;
-};
-
-class SMESH_HypoFilter: public SMESH_HypoPredicate
-{
- public:
-  // Create and add predicates.
-  // Added predicates will be destroyed by filter when it dies
-  SMESH_HypoFilter();
-  SMESH_HypoFilter( SMESH_HypoPredicate* aPredicate, bool notNagate = true );
-  // notNagate==false means !aPredicate->IsOk()
-  SMESH_HypoFilter & Init  ( SMESH_HypoPredicate* aPredicate, bool notNagate = true );
-  SMESH_HypoFilter & And   ( SMESH_HypoPredicate* aPredicate );
-  SMESH_HypoFilter & AndNot( SMESH_HypoPredicate* aPredicate );
-  SMESH_HypoFilter & Or    ( SMESH_HypoPredicate* aPredicate );
-  SMESH_HypoFilter & OrNot ( SMESH_HypoPredicate* aPredicate );
-
-  // Create predicates
-  static SMESH_HypoPredicate* IsAlgo();
-  static SMESH_HypoPredicate* IsApplicableTo(const TopoDS_Shape& theShape);
-  static SMESH_HypoPredicate* IsAssignedTo(const TopoDS_Shape& theShape);
-  static SMESH_HypoPredicate* Is(const SMESH_Hypothesis* theHypo);
-  static SMESH_HypoPredicate* IsGlobal(const TopoDS_Shape& theMainShape);
-  static SMESH_HypoPredicate* HasName(const std::string & theName);
-  static SMESH_HypoPredicate* HasDim(const int theDim);
-  static SMESH_HypoPredicate* HasType(const int theHypType);
-
-  bool IsOk (const SMESH_Hypothesis* aHyp,
-             const TopoDS_Shape&     aShape) const;
-  // check aHyp or/and aShape it is assigned to
-
-  ~SMESH_HypoFilter();
-
-
- protected:
-  // fields
-
-  std::list<SMESH_HypoPredicate*> myPredicates;
-
-  // private methods
-
-  enum Logical { AND, AND_NOT, OR, OR_NOT };
-  enum Comparison { EQUAL, NOT_EQUAL, MORE, LESS };
-
-  SMESH_HypoFilter(const SMESH_HypoFilter& other){}
-
-  void add( Logical bool_op, SMESH_HypoPredicate* pred )
-  {
-    if ( pred ) {
-      pred->_logical_op = bool_op;
-      myPredicates.push_back( pred );
-    }
-  }
-
-  // predicates implementation
-
-  template <typename TValue>
-    struct templPredicate: public SMESH_HypoPredicate {
-      Comparison _comp;
-      TValue     _val;
-      virtual TValue Value(const SMESH_Hypothesis* aHyp) const = 0;
-      virtual bool IsOk(const SMESH_Hypothesis* aHyp, const TopoDS_Shape& ) const
-      {
-        if      ( _comp == EQUAL )     return _val == Value( aHyp );
-        else if ( _comp == NOT_EQUAL ) return _val != Value( aHyp );
-        else if ( _comp == MORE )      return _val < Value( aHyp );
-        else                           return _val > Value( aHyp );
-      }
-    };
-
-  struct NamePredicate : public SMESH_HypoPredicate {
-    std::string _name;
-    NamePredicate( std::string name ): _name(name){}
-    bool IsOk(const SMESH_Hypothesis* aHyp,
-              const TopoDS_Shape&     aShape) const;
-  };
-  
-  struct TypePredicate : public templPredicate< int > {
-    TypePredicate( Comparison comp, int hypType )
-    { _comp = comp; _val = hypType; }
-    int Value( const SMESH_Hypothesis* aHyp ) const;
-  };
-  
-  struct DimPredicate : public templPredicate< int > {
-    DimPredicate( Comparison comp, int dim )
-    { _comp = comp; _val = dim; }
-    int Value( const SMESH_Hypothesis* aHyp ) const;
-  };
-  
-  struct ApplicablePredicate : public SMESH_HypoPredicate {
-    int _shapeType;
-    ApplicablePredicate( const TopoDS_Shape& theShape );
-    bool IsOk(const SMESH_Hypothesis* aHyp,
-              const TopoDS_Shape&     aShape) const;
-  };
-        
-  struct InstancePredicate : public SMESH_HypoPredicate {
-    const SMESH_Hypothesis* _hypo;
-    InstancePredicate( const SMESH_Hypothesis* hypo ):_hypo(hypo){}
-    bool IsOk(const SMESH_Hypothesis* aHyp,
-              const TopoDS_Shape&     aShape) const;
-  };
-        
-  struct IsAssignedToPredicate : public SMESH_HypoPredicate {
-    TopoDS_Shape _mainShape;
-    IsAssignedToPredicate( const TopoDS_Shape& mainShape ):_mainShape(mainShape){}
-    bool IsOk(const SMESH_Hypothesis* aHyp,
-              const TopoDS_Shape&     aShape) const;
-  };
-        
-};
-
-
-#endif
diff --git a/src/SMESH/SMESH_Hypothesis.cxx b/src/SMESH/SMESH_Hypothesis.cxx
deleted file mode 100644 (file)
index 0107c3e..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Hypothesis.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-using namespace std;
-#include "SMESH_Hypothesis.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_subMesh.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESH_Hypothesis::SMESH_Hypothesis(int hypId,
-                                  int studyId,
-                                  SMESH_Gen* gen) : SMESHDS_Hypothesis(hypId)
-{
-  //MESSAGE("SMESH_Hypothesis::SMESH_Hypothesis");
-  _gen = gen;
-  _studyId = studyId;
-  StudyContextStruct* myStudyContext = _gen->GetStudyContext(_studyId);
-  myStudyContext->mapHypothesis[_hypId] = this;
-  _type = PARAM_ALGO;
-  _shapeType = 0; // to be set by algo with TopAbs_Enum
-  _param_algo_dim = -1; // to be set by algo parameter
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESH_Hypothesis::~SMESH_Hypothesis()
-{
-  MESSAGE("SMESH_Hypothesis::~SMESH_Hypothesis");
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-int SMESH_Hypothesis::GetDim() const
-{
-  int dim = -1;
-  switch (_type)
-    {
-    case ALGO_1D: dim = 1; break;
-    case ALGO_2D: dim = 2; break;
-    case ALGO_3D: dim = 3; break;
-    case PARAM_ALGO: dim = _param_algo_dim; break;
-    }
-  return dim;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-int SMESH_Hypothesis::GetShapeType() const
-{
-  return _shapeType;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-int SMESH_Hypothesis::GetStudyId() const
-{
-  return _studyId;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-void SMESH_Hypothesis::NotifySubMeshesHypothesisModification()
-{
-  MESSAGE("SMESH_Hypothesis::NotifySubMeshesHypothesisModification");
-
-  // for all meshes in study
-
-  StudyContextStruct* myStudyContext = _gen->GetStudyContext(_studyId);
-  map<int, SMESH_Mesh*>::iterator itm;
-  for (itm = myStudyContext->mapMesh.begin();
-       itm != myStudyContext->mapMesh.end();
-       itm++)
-    {
-      SMESH_Mesh* mesh = (*itm).second;
-      const list<SMESH_subMesh*>& subMeshes =
-        mesh->GetSubMeshUsingHypothesis(this);
-
-      //for all subMeshes using hypothesis
-       
-      list<SMESH_subMesh*>::const_iterator its;
-      for (its = subMeshes.begin(); its != subMeshes.end(); its++)
-       (*its)->ComputeStateEngine(SMESH_subMesh::MODIF_HYP);
-    }
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-const char* SMESH_Hypothesis::GetLibName() const
-{
-//   MESSAGE("SMESHDS_Hypothesis::GetLibName");
-//   SCRUTE(_LibName);
-//   SCRUTE(&_LibName);
-  return _libName.c_str();
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-void SMESH_Hypothesis::SetLibName(const char* theLibName)
-{
-//   MESSAGE("SMESHDS_Hypothesis::SetLibName");
-  _libName = string(theLibName);
-}
diff --git a/src/SMESH/SMESH_Hypothesis.hxx b/src/SMESH/SMESH_Hypothesis.hxx
deleted file mode 100644 (file)
index 1d881a6..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Hypothesis.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_HYPOTHESIS_HXX_
-#define _SMESH_HYPOTHESIS_HXX_
-
-#include "SMESHDS_Hypothesis.hxx"
-
-class SMESH_Gen;
-
-class SMESH_Hypothesis: public SMESHDS_Hypothesis
-{
-public:
-  enum Hypothesis_Status // in the order of severity
-  {
-    HYP_OK,
-    HYP_MISSING,      // algo misses a hypothesis
-    HYP_CONCURENT,    // several applicable hypotheses
-    HYP_BAD_PARAMETER,// hypothesis has a bad parameter value
-    HYP_UNKNOWN_FATAL,//  --- all statuses below should be considered as fatal
-                      //      for Add/RemoveHypothesis operations
-    HYP_INCOMPATIBLE, // hypothesis does not fit algo
-    HYP_NOTCONFORM,   // not conform mesh is produced appling a hypothesis
-    HYP_ALREADY_EXIST,// such hypothesis already exist
-    HYP_BAD_DIM       // bad dimension
-  };
-  static bool IsStatusFatal(Hypothesis_Status theStatus)
-  { return theStatus >= HYP_UNKNOWN_FATAL; }
-
-  SMESH_Hypothesis(int hypId, int studyId, SMESH_Gen* gen);
-  virtual ~SMESH_Hypothesis();
-  int GetDim() const;
-  int GetStudyId() const;
-  void NotifySubMeshesHypothesisModification();
-  int GetShapeType() const;
-  const char* GetLibName() const;
-  void  SetLibName(const char* theLibName);
-
-protected:
-  SMESH_Gen* _gen;
-  int _studyId;
-  int _shapeType;
-  int _param_algo_dim;
-
-private:
-  std::string _libName;
-};
-
-#endif
diff --git a/src/SMESH/SMESH_Mesh.cxx b/src/SMESH/SMESH_Mesh.cxx
deleted file mode 100644 (file)
index ffd77cd..0000000
+++ /dev/null
@@ -1,1430 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Mesh.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#include "SMESH_Mesh.hxx"
-#include "SMESH_subMesh.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_Hypothesis.hxx"
-#include "SMESH_Group.hxx"
-#include "SMESH_HypoFilter.hxx"
-#include "SMESHDS_Group.hxx"
-#include "SMESHDS_Script.hxx"
-#include "SMESHDS_GroupOnGeom.hxx"
-#include "SMDS_MeshVolume.hxx"
-
-#include "utilities.h"
-
-#include "DriverMED_W_SMESHDS_Mesh.h"
-#include "DriverDAT_W_SMDS_Mesh.h"
-#include "DriverUNV_W_SMDS_Mesh.h"
-#include "DriverSTL_W_SMDS_Mesh.h"
-
-#include "DriverMED_R_SMESHDS_Mesh.h"
-#include "DriverUNV_R_SMDS_Mesh.h"
-#include "DriverSTL_R_SMDS_Mesh.h"
-
-#include <BRepTools_WireExplorer.hxx>
-#include <BRep_Builder.hxx>
-#include <gp_Pnt.hxx>
-
-#include <TCollection_AsciiString.hxx>
-#include <TopExp.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_Array1OfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_MapOfShape.hxx>
-
-#include <memory>
-
-#include "Utils_ExceptHandlers.hxx"
-
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESH_Mesh::SMESH_Mesh(int localId, int studyId, SMESH_Gen * gen, SMESHDS_Document * myDocument)
-: _groupId( 0 )
-{
-  INFOS("SMESH_Mesh::SMESH_Mesh(int localId)");
-       _id = localId;
-       _studyId = studyId;
-       _gen = gen;
-       _myDocument = myDocument;
-       _idDoc = _myDocument->NewMesh();
-       _myMeshDS = _myDocument->GetMesh(_idDoc);
-       _isShapeToMesh = false;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESH_Mesh::~SMESH_Mesh()
-{
-  INFOS("SMESH_Mesh::~SMESH_Mesh");
-
-  // delete groups
-  map < int, SMESH_Group * >::iterator itg;
-  for (itg = _mapGroup.begin(); itg != _mapGroup.end(); itg++) {
-    SMESH_Group *aGroup = (*itg).second;
-    delete aGroup;
-  }
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-void SMESH_Mesh::ShapeToMesh(const TopoDS_Shape & aShape)
-{
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::ShapeToMesh");
-
-  if ( !_myMeshDS->ShapeToMesh().IsNull() && aShape.IsNull() )
-  {
-    // removal of a shape to mesh, delete objects referring to sub-shapes:
-    // - sub-meshes
-    map <int, SMESH_subMesh *>::iterator i_sm = _mapSubMesh.begin();
-    for ( ; i_sm != _mapSubMesh.end(); ++i_sm )
-      delete i_sm->second;
-    _mapSubMesh.clear();
-    //  - groups on geometry
-    map <int, SMESH_Group *>::iterator i_gr = _mapGroup.begin();
-    while ( i_gr != _mapGroup.end() ) {
-      if ( dynamic_cast<SMESHDS_GroupOnGeom*>( i_gr->second->GetGroupDS() )) {
-        _myMeshDS->RemoveGroup( i_gr->second->GetGroupDS() );
-        delete i_gr->second;
-        _mapGroup.erase( i_gr++ );
-      }
-      else
-        i_gr++;
-    }
-    _mapPropagationChains.Clear();
-  }
-  else
-  {
-    if (_isShapeToMesh)
-      throw SALOME_Exception(LOCALIZED ("a shape to mesh has already been defined"));
-  }
-  _isShapeToMesh = true;
-  _myMeshDS->ShapeToMesh(aShape);
-
-  // fill _mapAncestors
-  _mapAncestors.Clear();
-  int desType, ancType;
-  for ( desType = TopAbs_EDGE; desType > TopAbs_COMPOUND; desType-- )
-    for ( ancType = desType - 1; ancType >= TopAbs_COMPOUND; ancType-- )
-      TopExp::MapShapesAndAncestors ( aShape,
-                                     (TopAbs_ShapeEnum) desType,
-                                     (TopAbs_ShapeEnum) ancType,
-                                     _mapAncestors );
-
-  // NRI : 24/02/03
-  //EAP: 1/9/04 TopExp::MapShapes(aShape, _subShapes); USE the same map of _myMeshDS
-}
-
-//=======================================================================
-//function : UNVToMesh
-//purpose  : 
-//=======================================================================
-
-int SMESH_Mesh::UNVToMesh(const char* theFileName)
-{
-  if(MYDEBUG) MESSAGE("UNVToMesh - theFileName = "<<theFileName);
-  if(_isShapeToMesh)
-    throw SALOME_Exception(LOCALIZED("a shape to mesh has already been defined"));
-  _isShapeToMesh = true;
-  DriverUNV_R_SMDS_Mesh myReader;
-  myReader.SetMesh(_myMeshDS);
-  myReader.SetFile(theFileName);
-  myReader.SetMeshId(-1);
-  myReader.Perform();
-  if(MYDEBUG){
-    MESSAGE("MEDToMesh - _myMeshDS->NbNodes() = "<<_myMeshDS->NbNodes());
-    MESSAGE("MEDToMesh - _myMeshDS->NbEdges() = "<<_myMeshDS->NbEdges());
-    MESSAGE("MEDToMesh - _myMeshDS->NbFaces() = "<<_myMeshDS->NbFaces());
-    MESSAGE("MEDToMesh - _myMeshDS->NbVolumes() = "<<_myMeshDS->NbVolumes());
-  }
-  return 1;
-}
-
-//=======================================================================
-//function : MEDToMesh
-//purpose  : 
-//=======================================================================
-
-int SMESH_Mesh::MEDToMesh(const char* theFileName, const char* theMeshName)
-{
-  if(MYDEBUG) MESSAGE("MEDToMesh - theFileName = "<<theFileName<<", mesh name = "<<theMeshName);
-  if(_isShapeToMesh)
-    throw SALOME_Exception(LOCALIZED("a shape to mesh has already been defined"));
-  _isShapeToMesh = true;
-  DriverMED_R_SMESHDS_Mesh myReader;
-  myReader.SetMesh(_myMeshDS);
-  myReader.SetMeshId(-1);
-  myReader.SetFile(theFileName);
-  myReader.SetMeshName(theMeshName);
-  Driver_Mesh::Status status = myReader.Perform();
-  if(MYDEBUG){
-    MESSAGE("MEDToMesh - _myMeshDS->NbNodes() = "<<_myMeshDS->NbNodes());
-    MESSAGE("MEDToMesh - _myMeshDS->NbEdges() = "<<_myMeshDS->NbEdges());
-    MESSAGE("MEDToMesh - _myMeshDS->NbFaces() = "<<_myMeshDS->NbFaces());
-    MESSAGE("MEDToMesh - _myMeshDS->NbVolumes() = "<<_myMeshDS->NbVolumes());
-  }
-
-  // Reading groups (sub-meshes are out of scope of MED import functionality)
-  list<TNameAndType> aGroupNames = myReader.GetGroupNamesAndTypes();
-  if(MYDEBUG) MESSAGE("MEDToMesh - Nb groups = "<<aGroupNames.size()); 
-  int anId;
-  list<TNameAndType>::iterator name_type = aGroupNames.begin();
-  for ( ; name_type != aGroupNames.end(); name_type++ ) {
-    SMESH_Group* aGroup = AddGroup( name_type->second, name_type->first.c_str(), anId );
-    if ( aGroup ) {
-      if(MYDEBUG) MESSAGE("MEDToMesh - group added: "<<name_type->first.c_str());      
-      SMESHDS_Group* aGroupDS = dynamic_cast<SMESHDS_Group*>( aGroup->GetGroupDS() );
-      if ( aGroupDS ) {
-        aGroupDS->SetStoreName( name_type->first.c_str() );
-        myReader.GetGroup( aGroupDS );
-      }
-    }
-  }
-  return (int) status;
-}
-
-//=======================================================================
-//function : STLToMesh
-//purpose  : 
-//=======================================================================
-
-int SMESH_Mesh::STLToMesh(const char* theFileName)
-{
-  if(MYDEBUG) MESSAGE("UNVToMesh - theFileName = "<<theFileName);
-  if(_isShapeToMesh)
-    throw SALOME_Exception(LOCALIZED("a shape to mesh has already been defined"));
-  _isShapeToMesh = true;
-  DriverSTL_R_SMDS_Mesh myReader;
-  myReader.SetMesh(_myMeshDS);
-  myReader.SetFile(theFileName);
-  myReader.SetMeshId(-1);
-  myReader.Perform();
-  if(MYDEBUG){
-    MESSAGE("MEDToMesh - _myMeshDS->NbNodes() = "<<_myMeshDS->NbNodes());
-    MESSAGE("MEDToMesh - _myMeshDS->NbEdges() = "<<_myMeshDS->NbEdges());
-    MESSAGE("MEDToMesh - _myMeshDS->NbFaces() = "<<_myMeshDS->NbFaces());
-    MESSAGE("MEDToMesh - _myMeshDS->NbVolumes() = "<<_myMeshDS->NbVolumes());
-  }
-  return 1;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESH_Hypothesis::Hypothesis_Status
-  SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape,
-                            int                  anHypId  ) throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::AddHypothesis");
-
-  SMESH_subMesh *subMesh = GetSubMesh(aSubShape);
-  SMESHDS_SubMesh *subMeshDS = subMesh->GetSubMeshDS();
-  if ( subMeshDS && subMeshDS->IsComplexSubmesh() ) // group of sub-shapes and maybe of not sub-
-  {
-    MESSAGE("AddHypothesis() to complex submesh");
-    // return the worst but not fatal state of all group memebers
-    SMESH_Hypothesis::Hypothesis_Status aBestRet, aWorstNotFatal, ret;
-    aBestRet = SMESH_Hypothesis::HYP_BAD_DIM;
-    aWorstNotFatal = SMESH_Hypothesis::HYP_OK;
-    for ( TopoDS_Iterator itS ( aSubShape ); itS.More(); itS.Next())
-    {
-      if ( !GetMeshDS()->ShapeToIndex( itS.Value() ))
-        continue; // not sub-shape
-      ret = AddHypothesis( itS.Value(), anHypId );
-      if ( !SMESH_Hypothesis::IsStatusFatal( ret ) && ret > aWorstNotFatal )
-        aWorstNotFatal = ret;
-      if ( ret < aBestRet )
-        aBestRet = ret;
-    }
-    if ( SMESH_Hypothesis::IsStatusFatal( aBestRet ))
-      return aBestRet;
-    return aWorstNotFatal;
-  }
-
-  StudyContextStruct *sc = _gen->GetStudyContext(_studyId);
-  if (sc->mapHypothesis.find(anHypId) == sc->mapHypothesis.end())
-  {
-    if(MYDEBUG) MESSAGE("Hypothesis ID does not give an hypothesis");
-    if(MYDEBUG) {
-      SCRUTE(_studyId);
-      SCRUTE(anHypId);
-    }
-    throw SALOME_Exception(LOCALIZED("hypothesis does not exist"));
-  }
-
-  SMESH_Hypothesis *anHyp = sc->mapHypothesis[anHypId];
-  MESSAGE( "SMESH_Mesh::AddHypothesis " << anHyp->GetName() );
-
-  bool isGlobalHyp = IsMainShape( aSubShape );
-
-  // NotConformAllowed can be only global
-  if ( !isGlobalHyp )
-  {
-    string hypName = anHyp->GetName();
-    if ( hypName == "NotConformAllowed" )
-    {
-      if(MYDEBUG) MESSAGE( "Hypotesis <NotConformAllowed> can be only global" );
-      return SMESH_Hypothesis::HYP_INCOMPATIBLE;
-    }
-  }
-
-  // shape 
-
-  int event;
-  if (anHyp->GetType() == SMESHDS_Hypothesis::PARAM_ALGO)
-    event = SMESH_subMesh::ADD_HYP;
-  else
-    event = SMESH_subMesh::ADD_ALGO;
-  SMESH_Hypothesis::Hypothesis_Status ret = subMesh->AlgoStateEngine(event, anHyp);
-
-  // subShapes
-  if (!SMESH_Hypothesis::IsStatusFatal(ret) &&
-      !subMesh->IsApplicableHypotesis( anHyp )) // is added on father
-  {
-    if (anHyp->GetType() == SMESHDS_Hypothesis::PARAM_ALGO)
-      event = SMESH_subMesh::ADD_FATHER_HYP;
-    else
-      event = SMESH_subMesh::ADD_FATHER_ALGO;
-    SMESH_Hypothesis::Hypothesis_Status ret2 =
-      subMesh->SubMeshesAlgoStateEngine(event, anHyp);
-    if (ret2 > ret)
-      ret = ret2;
-
-    // check concurent hypotheses on ansestors
-    if (ret < SMESH_Hypothesis::HYP_CONCURENT && !isGlobalHyp )
-    {
-      const map < int, SMESH_subMesh * >& smMap = subMesh->DependsOn();
-      map < int, SMESH_subMesh * >::const_iterator smIt = smMap.begin();
-      for ( ; smIt != smMap.end(); smIt++ ) {
-        if ( smIt->second->IsApplicableHypotesis( anHyp )) {
-          ret2 = smIt->second->CheckConcurentHypothesis( anHyp->GetType() );
-          if (ret2 > ret) {
-            ret = ret2;
-            break;
-          }
-        }
-      }
-    }
-  }
-
-  if(MYDEBUG) subMesh->DumpAlgoState(true);
-  SCRUTE(ret);
-  return ret;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESH_Hypothesis::Hypothesis_Status
-  SMESH_Mesh::RemoveHypothesis(const TopoDS_Shape & aSubShape,
-                               int anHypId)throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::RemoveHypothesis");
-  
-  SMESH_subMesh *subMesh = GetSubMesh(aSubShape);
-  SMESHDS_SubMesh *subMeshDS = subMesh->GetSubMeshDS();
-  if ( subMeshDS && subMeshDS->IsComplexSubmesh() )
-  {
-    // return the worst but not fatal state of all group memebers
-    SMESH_Hypothesis::Hypothesis_Status aBestRet, aWorstNotFatal, ret;
-    aBestRet = SMESH_Hypothesis::HYP_BAD_DIM;
-    aWorstNotFatal = SMESH_Hypothesis::HYP_OK;
-    for ( TopoDS_Iterator itS ( aSubShape ); itS.More(); itS.Next())
-    {
-      if ( !GetMeshDS()->ShapeToIndex( itS.Value() ))
-        continue; // not sub-shape
-      ret = RemoveHypothesis( itS.Value(), anHypId );
-      if ( !SMESH_Hypothesis::IsStatusFatal( ret ) && ret > aWorstNotFatal )
-        aWorstNotFatal = ret;
-      if ( ret < aBestRet )
-        aBestRet = ret;
-    }
-    if ( SMESH_Hypothesis::IsStatusFatal( aBestRet ))
-      return aBestRet;
-    return aWorstNotFatal;
-  }
-
-  StudyContextStruct *sc = _gen->GetStudyContext(_studyId);
-  if (sc->mapHypothesis.find(anHypId) == sc->mapHypothesis.end())
-    throw SALOME_Exception(LOCALIZED("hypothesis does not exist"));
-  
-  SMESH_Hypothesis *anHyp = sc->mapHypothesis[anHypId];
-  int hypType = anHyp->GetType();
-  if(MYDEBUG) SCRUTE(hypType);
-  int event;
-  
-  // shape 
-  
-  if (anHyp->GetType() == SMESHDS_Hypothesis::PARAM_ALGO)
-    event = SMESH_subMesh::REMOVE_HYP;
-  else
-    event = SMESH_subMesh::REMOVE_ALGO;
-  SMESH_Hypothesis::Hypothesis_Status ret = subMesh->AlgoStateEngine(event, anHyp);
-
-  // there may appear concurrent hyps that were covered by the removed hyp
-  if (ret < SMESH_Hypothesis::HYP_CONCURENT &&
-      subMesh->IsApplicableHypotesis( anHyp ) &&
-      subMesh->CheckConcurentHypothesis( anHyp->GetType() ) != SMESH_Hypothesis::HYP_OK)
-    ret = SMESH_Hypothesis::HYP_CONCURENT;
-
-  // subShapes
-  if (!SMESH_Hypothesis::IsStatusFatal(ret) &&
-      !subMesh->IsApplicableHypotesis( anHyp )) // is removed from father
-  {
-    if (anHyp->GetType() == SMESHDS_Hypothesis::PARAM_ALGO)
-      event = SMESH_subMesh::REMOVE_FATHER_HYP;
-    else
-      event = SMESH_subMesh::REMOVE_FATHER_ALGO;
-    SMESH_Hypothesis::Hypothesis_Status ret2 =
-      subMesh->SubMeshesAlgoStateEngine(event, anHyp);
-    if (ret2 > ret) // more severe
-      ret = ret2;
-
-    // check concurent hypotheses on ansestors
-    if (ret < SMESH_Hypothesis::HYP_CONCURENT && !IsMainShape( aSubShape ) )
-    {
-      const map < int, SMESH_subMesh * >& smMap = subMesh->DependsOn();
-      map < int, SMESH_subMesh * >::const_iterator smIt = smMap.begin();
-      for ( ; smIt != smMap.end(); smIt++ ) {
-        if ( smIt->second->IsApplicableHypotesis( anHyp )) {
-          ret2 = smIt->second->CheckConcurentHypothesis( anHyp->GetType() );
-          if (ret2 > ret) {
-            ret = ret2;
-            break;
-          }
-        }
-      }
-    }
-  }
-  
-  if(MYDEBUG) subMesh->DumpAlgoState(true);
-  if(MYDEBUG) SCRUTE(ret);
-  return ret;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESHDS_Mesh * SMESH_Mesh::GetMeshDS()
-{
-  return _myMeshDS;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-const list<const SMESHDS_Hypothesis*>&
-SMESH_Mesh::GetHypothesisList(const TopoDS_Shape & aSubShape) const
-  throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  return _myMeshDS->GetHypothesis(aSubShape);
-}
-
-//=======================================================================
-//function : GetHypothesis
-//purpose  : 
-//=======================================================================
-
-const SMESH_Hypothesis * SMESH_Mesh::GetHypothesis(const TopoDS_Shape &    aSubShape,
-                                                   const SMESH_HypoFilter& aFilter,
-                                                   const bool              andAncestors) const
-{
-  {
-    const list<const SMESHDS_Hypothesis*>& hypList = _myMeshDS->GetHypothesis(aSubShape);
-    list<const SMESHDS_Hypothesis*>::const_iterator hyp = hypList.begin();
-    for ( ; hyp != hypList.end(); hyp++ ) {
-      const SMESH_Hypothesis * h = static_cast<const SMESH_Hypothesis*>( *hyp );
-      if ( aFilter.IsOk( h, aSubShape))
-        return h;
-    }
-  }
-  if ( andAncestors )
-  {
-    TopTools_ListIteratorOfListOfShape it( GetAncestors( aSubShape ));
-    for (; it.More(); it.Next() )
-    {
-      const list<const SMESHDS_Hypothesis*>& hypList = _myMeshDS->GetHypothesis(it.Value());
-      list<const SMESHDS_Hypothesis*>::const_iterator hyp = hypList.begin();
-      for ( ; hyp != hypList.end(); hyp++ ) {
-        const SMESH_Hypothesis * h = static_cast<const SMESH_Hypothesis*>( *hyp );
-        if (aFilter.IsOk( h, it.Value() ))
-          return h;
-      }
-    }
-  }
-  return 0;
-}
-
-//=======================================================================
-//function : GetHypotheses
-//purpose  : 
-//=======================================================================
-
-bool SMESH_Mesh::GetHypotheses(const TopoDS_Shape &                aSubShape,
-                               const SMESH_HypoFilter&             aFilter,
-                               list <const SMESHDS_Hypothesis * >& aHypList,
-                               const bool                          andAncestors) const
-{
-  int nbHyp = 0;
-  {
-    const list<const SMESHDS_Hypothesis*>& hypList = _myMeshDS->GetHypothesis(aSubShape);
-    list<const SMESHDS_Hypothesis*>::const_iterator hyp = hypList.begin();
-    for ( ; hyp != hypList.end(); hyp++ )
-      if ( aFilter.IsOk (static_cast<const SMESH_Hypothesis*>( *hyp ), aSubShape)) {
-        aHypList.push_back( *hyp );
-        nbHyp++;
-      }
-  }
-  // get hypos from shape of one type only: if any hypo is found on edge, do
-  // not look up on faces
-  if ( !nbHyp && andAncestors )
-  {
-    TopTools_MapOfShape map;
-    TopTools_ListIteratorOfListOfShape it( GetAncestors( aSubShape ));
-    int shapeType = it.More() ? it.Value().ShapeType() : TopAbs_SHAPE;
-    for (; it.More(); it.Next() )
-    {
-      if ( nbHyp && shapeType != it.Value().ShapeType() )
-        break;
-      shapeType = it.Value().ShapeType();
-      if ( !map.Add( it.Value() ))
-        continue;
-      const list<const SMESHDS_Hypothesis*>& hypList = _myMeshDS->GetHypothesis(it.Value());
-      list<const SMESHDS_Hypothesis*>::const_iterator hyp = hypList.begin();
-      for ( ; hyp != hypList.end(); hyp++ )
-        if (aFilter.IsOk( static_cast<const SMESH_Hypothesis*>( *hyp ), it.Value() )) {
-        aHypList.push_back( *hyp );
-        nbHyp++;
-      }
-    }
-  }
-  return nbHyp;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-const list<SMESHDS_Command*> & SMESH_Mesh::GetLog() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::GetLog");
-  return _myMeshDS->GetScript()->GetCommands();
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-void SMESH_Mesh::ClearLog() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::ClearLog");
-  _myMeshDS->GetScript()->Clear();
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-int SMESH_Mesh::GetId()
-{
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::GetId");
-  return _id;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESH_Gen *SMESH_Mesh::GetGen()
-{
-  return _gen;
-}
-
-//=============================================================================
-/*!
- * Get or Create the SMESH_subMesh object implementation
- */
-//=============================================================================
-
-SMESH_subMesh *SMESH_Mesh::GetSubMesh(const TopoDS_Shape & aSubShape)
-throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  SMESH_subMesh *aSubMesh;
-  int index = _myMeshDS->ShapeToIndex(aSubShape);
-  
-  // for submeshes on GEOM Group
-  if ( !index && aSubShape.ShapeType() == TopAbs_COMPOUND ) {
-    TopoDS_Iterator it( aSubShape );
-    if ( it.More() )
-      index = _myMeshDS->AddCompoundSubmesh( aSubShape, it.Value().ShapeType() );
-  }
-
-  if (_mapSubMesh.find(index) != _mapSubMesh.end())
-    {
-      aSubMesh = _mapSubMesh[index];
-    }
-  else
-    {
-      aSubMesh = new SMESH_subMesh(index, this, _myMeshDS, aSubShape);
-      _mapSubMesh[index] = aSubMesh;
-    }
-  return aSubMesh;
-}
-
-//=============================================================================
-/*!
- * Get the SMESH_subMesh object implementation. Dont create it, return null
- * if it does not exist.
- */
-//=============================================================================
-
-SMESH_subMesh *SMESH_Mesh::GetSubMeshContaining(const TopoDS_Shape & aSubShape)
-throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  bool isFound = false;
-  SMESH_subMesh *aSubMesh = NULL;
-  
-  int index = _myMeshDS->ShapeToIndex(aSubShape);
-  if (_mapSubMesh.find(index) != _mapSubMesh.end())
-    {
-      aSubMesh = _mapSubMesh[index];
-      isFound = true;
-    }
-  if (!isFound)
-    aSubMesh = NULL;
-  return aSubMesh;
-}
-
-//=============================================================================
-/*!
- * Get the SMESH_subMesh object implementation. Dont create it, return null
- * if it does not exist.
- */
-//=============================================================================
-
-SMESH_subMesh *SMESH_Mesh::GetSubMeshContaining(const int aShapeID)
-throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  
-  map <int, SMESH_subMesh *>::iterator i_sm = _mapSubMesh.find(aShapeID);
-  if (i_sm == _mapSubMesh.end())
-    return NULL;
-  return i_sm->second;
-}
-
-//=======================================================================
-//function : IsUsedHypothesis
-//purpose  : Return True if anHyp is used to mesh aSubShape
-//=======================================================================
-
-bool SMESH_Mesh::IsUsedHypothesis(SMESHDS_Hypothesis * anHyp,
-                                  const TopoDS_Shape & aSubShape)
-{
-  SMESH_Hypothesis* hyp = static_cast<SMESH_Hypothesis*>(anHyp);
-  // check if anHyp is applicable to aSubShape
-  SMESH_subMesh * subMesh = GetSubMeshContaining( aSubShape );
-  if ( !subMesh || !subMesh->IsApplicableHypotesis( hyp ))
-    return false;
-
-  SMESH_Algo *algo = _gen->GetAlgo(*this, aSubShape);
-
-  // algorithm
-  if (anHyp->GetType() > SMESHDS_Hypothesis::PARAM_ALGO)
-    return ( anHyp == algo );
-
-  // algorithm parameter
-  if (algo)
-  {
-    // look trough hypotheses used by algo
-    const list <const SMESHDS_Hypothesis * >&usedHyps =
-      algo->GetUsedHypothesis(*this, aSubShape);
-    return ( find( usedHyps.begin(), usedHyps.end(), anHyp ) != usedHyps.end() );
-  }
-
-  // look through all assigned hypotheses
-  SMESH_HypoFilter filter( SMESH_HypoFilter::Is( hyp ));
-  return GetHypothesis( aSubShape, filter, true );
-}
-
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-const list < SMESH_subMesh * >&
-       SMESH_Mesh::GetSubMeshUsingHypothesis(SMESHDS_Hypothesis * anHyp)
-throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-       if(MYDEBUG) MESSAGE("SMESH_Mesh::GetSubMeshUsingHypothesis");
-       map < int, SMESH_subMesh * >::iterator itsm;
-       _subMeshesUsingHypothesisList.clear();
-       for (itsm = _mapSubMesh.begin(); itsm != _mapSubMesh.end(); itsm++)
-       {
-               SMESH_subMesh *aSubMesh = (*itsm).second;
-               if ( IsUsedHypothesis ( anHyp, aSubMesh->GetSubShape() ))
-                       _subMeshesUsingHypothesisList.push_back(aSubMesh);
-       }
-       return _subMeshesUsingHypothesisList;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-void SMESH_Mesh::ExportMED(const char *file, 
-                          const char* theMeshName, 
-                          bool theAutoGroups,
-                          int theVersion) 
-  throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  DriverMED_W_SMESHDS_Mesh myWriter;
-  myWriter.SetFile    ( file, MED::EVersion(theVersion) );
-  myWriter.SetMesh    ( _myMeshDS   );
-  if ( !theMeshName ) 
-    myWriter.SetMeshId  ( _idDoc      );
-  else {
-    myWriter.SetMeshId  ( -1          );
-    myWriter.SetMeshName( theMeshName );
-  }
-
-  if ( theAutoGroups ) {
-    myWriter.AddGroupOfNodes();
-    myWriter.AddGroupOfEdges();
-    myWriter.AddGroupOfFaces();
-    myWriter.AddGroupOfVolumes();
-  }
-
-  for ( map<int, SMESH_Group*>::iterator it = _mapGroup.begin(); it != _mapGroup.end(); it++ ) {
-    SMESH_Group*       aGroup   = it->second;
-    SMESHDS_GroupBase* aGroupDS = aGroup->GetGroupDS();
-    if ( aGroupDS ) {
-      aGroupDS->SetStoreName( aGroup->GetName() );
-      myWriter.AddGroup( aGroupDS );
-    }
-  }
-
-  myWriter.Perform();
-}
-
-void SMESH_Mesh::ExportDAT(const char *file) throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  DriverDAT_W_SMDS_Mesh myWriter;
-  myWriter.SetFile(string(file));
-  myWriter.SetMesh(_myMeshDS);
-  myWriter.SetMeshId(_idDoc);
-  myWriter.Perform();
-}
-
-void SMESH_Mesh::ExportUNV(const char *file) throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  DriverUNV_W_SMDS_Mesh myWriter;
-  myWriter.SetFile(string(file));
-  myWriter.SetMesh(_myMeshDS);
-  myWriter.SetMeshId(_idDoc);
-  myWriter.Perform();
-}
-
-void SMESH_Mesh::ExportSTL(const char *file, const bool isascii) throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  DriverSTL_W_SMDS_Mesh myWriter;
-  myWriter.SetFile(string(file));
-  myWriter.SetIsAscii( isascii );
-  myWriter.SetMesh(_myMeshDS);
-  myWriter.SetMeshId(_idDoc);
-  myWriter.Perform();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-int SMESH_Mesh::NbNodes() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  return _myMeshDS->NbNodes();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-int SMESH_Mesh::NbEdges() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  return _myMeshDS->NbEdges();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-int SMESH_Mesh::NbFaces() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  return _myMeshDS->NbFaces();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of 3 nodes faces in the mesh. This method run in O(n)
-///////////////////////////////////////////////////////////////////////////////
-int SMESH_Mesh::NbTriangles() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  int Nb = 0;
-  
-  SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator();
-  //while(itFaces->more()) if(itFaces->next()->NbNodes()==3) Nb++;
-  const SMDS_MeshFace * curFace;
-  while (itFaces->more()) {
-    curFace = itFaces->next();
-    if (!curFace->IsPoly() && curFace->NbNodes() == 3) Nb++;
-  }
-  return Nb;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of 4 nodes faces in the mesh. This method run in O(n)
-///////////////////////////////////////////////////////////////////////////////
-int SMESH_Mesh::NbQuadrangles() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  int Nb = 0;
-  
-  SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator();
-  //while(itFaces->more()) if(itFaces->next()->NbNodes()==4) Nb++;
-  const SMDS_MeshFace * curFace;
-  while (itFaces->more()) {
-    curFace = itFaces->next();
-    if (!curFace->IsPoly() && curFace->NbNodes() == 4) Nb++;
-  }
-  return Nb;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the number of polygonal faces in the mesh. This method run in O(n)
-///////////////////////////////////////////////////////////////////////////////
-int SMESH_Mesh::NbPolygons() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  int Nb = 0;
-  SMDS_FaceIteratorPtr itFaces = _myMeshDS->facesIterator();
-  while (itFaces->more())
-    if (itFaces->next()->IsPoly()) Nb++;
-  return Nb;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-int SMESH_Mesh::NbVolumes() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  return _myMeshDS->NbVolumes();
-}
-
-int SMESH_Mesh::NbTetras() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  int Nb = 0;
-  SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
-  //while(itVolumes->more()) if(itVolumes->next()->NbNodes()==4) Nb++;
-  const SMDS_MeshVolume * curVolume;
-  while (itVolumes->more()) {
-    curVolume = itVolumes->next();
-    if (!curVolume->IsPoly() && curVolume->NbNodes() == 4) Nb++;
-  }
-  return Nb;
-}
-
-int SMESH_Mesh::NbHexas() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  int Nb = 0;
-  SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
-  //while(itVolumes->more()) if(itVolumes->next()->NbNodes()==8) Nb++;
-  const SMDS_MeshVolume * curVolume;
-  while (itVolumes->more()) {
-    curVolume = itVolumes->next();
-    if (!curVolume->IsPoly() && curVolume->NbNodes() == 8) Nb++;
-  }
-  return Nb;
-}
-
-int SMESH_Mesh::NbPyramids() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  int Nb = 0;
-  SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
-  //while(itVolumes->more()) if(itVolumes->next()->NbNodes()==5) Nb++;
-  const SMDS_MeshVolume * curVolume;
-  while (itVolumes->more()) {
-    curVolume = itVolumes->next();
-    if (!curVolume->IsPoly() && curVolume->NbNodes() == 5) Nb++;
-  }
-  return Nb;
-}
-
-int SMESH_Mesh::NbPrisms() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  int Nb = 0;
-  SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
-  //while(itVolumes->more()) if(itVolumes->next()->NbNodes()==6) Nb++;
-  const SMDS_MeshVolume * curVolume;
-  while (itVolumes->more()) {
-    curVolume = itVolumes->next();
-    if (!curVolume->IsPoly() && curVolume->NbNodes() == 6) Nb++;
-  }
-  return Nb;
-}
-
-int SMESH_Mesh::NbPolyhedrons() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  int Nb = 0;
-  SMDS_VolumeIteratorPtr itVolumes = _myMeshDS->volumesIterator();
-  while (itVolumes->more())
-    if (itVolumes->next()->IsPoly()) Nb++;
-  return Nb;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-int SMESH_Mesh::NbSubMesh() throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-  return _myMeshDS->NbSubMesh();
-}
-
-//=======================================================================
-//function : IsNotConformAllowed
-//purpose  : check if a hypothesis alowing notconform mesh is present
-//=======================================================================
-
-bool SMESH_Mesh::IsNotConformAllowed() const
-{
-  if(MYDEBUG) MESSAGE("SMESH_Mesh::IsNotConformAllowed");
-
-  SMESH_HypoFilter filter( SMESH_HypoFilter::HasName( "NotConformAllowed" ));
-  return GetHypothesis( _myMeshDS->ShapeToMesh(), filter, false );
-}
-
-//=======================================================================
-//function : IsMainShape
-//purpose  : 
-//=======================================================================
-
-bool SMESH_Mesh::IsMainShape(const TopoDS_Shape& theShape) const
-{
-  return theShape.IsSame(_myMeshDS->ShapeToMesh() );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_Group* SMESH_Mesh::AddGroup (const SMDSAbs_ElementType theType,
-                                   const char*               theName,
-                                  int&                      theId,
-                                   const TopoDS_Shape&       theShape)
-{
-  if (_mapGroup.find(_groupId) != _mapGroup.end())
-    return NULL;
-  theId = _groupId;
-  SMESH_Group* aGroup = new SMESH_Group (theId, this, theType, theName, theShape);
-  GetMeshDS()->AddGroup( aGroup->GetGroupDS() );
-  _mapGroup[_groupId++] = aGroup;
-  return aGroup;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_Group* SMESH_Mesh::GetGroup (const int theGroupID)
-{
-  if (_mapGroup.find(theGroupID) == _mapGroup.end())
-    return NULL;
-  return _mapGroup[theGroupID];
-}
-
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-list<int> SMESH_Mesh::GetGroupIds()
-{
-  list<int> anIds;
-  for ( map<int, SMESH_Group*>::const_iterator it = _mapGroup.begin(); it != _mapGroup.end(); it++ )
-    anIds.push_back( it->first );
-  
-  return anIds;
-}
-
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void SMESH_Mesh::RemoveGroup (const int theGroupID)
-{
-  if (_mapGroup.find(theGroupID) == _mapGroup.end())
-    return;
-  GetMeshDS()->RemoveGroup( _mapGroup[theGroupID]->GetGroupDS() );
-  _mapGroup.erase (theGroupID);
-  delete _mapGroup[theGroupID];
-}
-
-//=============================================================================
-/*!
- *  IsLocal1DHypothesis
- *  Returns a local 1D hypothesis used for theEdge
- */
-//=============================================================================
-const SMESH_Hypothesis* SMESH_Mesh::IsLocal1DHypothesis (const TopoDS_Shape& theEdge)
-{
-  SMESH_HypoFilter hypo ( SMESH_HypoFilter::HasDim( 1 ));
-  hypo.AndNot( hypo.IsAlgo() ).AndNot( hypo.IsAssignedTo( GetMeshDS()->ShapeToMesh() ));
-
-  return GetHypothesis( theEdge, hypo, true );
-}
-
-//=============================================================================
-/*!
- *  IsPropagationHypothesis
- */
-//=============================================================================
-bool SMESH_Mesh::IsPropagationHypothesis (const TopoDS_Shape& theEdge)
-{
-  return _mapPropagationChains.Contains(theEdge);
-}
-
-//=============================================================================
-/*!
- *  IsPropagatedHypothesis
- */
-//=============================================================================
-bool SMESH_Mesh::IsPropagatedHypothesis (const TopoDS_Shape& theEdge,
-                                         TopoDS_Shape&       theMainEdge)
-{
-  int nbChains = _mapPropagationChains.Extent();
-  for (int i = 1; i <= nbChains; i++) {
-    //const TopTools_IndexedMapOfShape& aChain = _mapPropagationChains.FindFromIndex(i);
-    const SMESH_IndexedMapOfShape& aChain = _mapPropagationChains.FindFromIndex(i);
-    if (aChain.Contains(theEdge)) {
-      theMainEdge = _mapPropagationChains.FindKey(i);
-      return true;
-    }
-  }
-
-  return false;
-}
-//=============================================================================
-/*!
- *  IsReversedInChain
- */
-//=============================================================================
-
-bool SMESH_Mesh::IsReversedInChain (const TopoDS_Shape& theEdge,
-                                    const TopoDS_Shape& theMainEdge)
-{
-  if ( !theMainEdge.IsNull() && !theEdge.IsNull() &&
-      _mapPropagationChains.Contains( theMainEdge ))
-  {
-    const SMESH_IndexedMapOfShape& aChain =
-      _mapPropagationChains.FindFromKey( theMainEdge );
-    int index = aChain.FindIndex( theEdge );
-    if ( index )
-      return aChain(index).Orientation() == TopAbs_REVERSED;
-  }
-  return false;
-}
-
-//=============================================================================
-/*!
- *  CleanMeshOnPropagationChain
- */
-//=============================================================================
-void SMESH_Mesh::CleanMeshOnPropagationChain (const TopoDS_Shape& theMainEdge)
-{
-  const SMESH_IndexedMapOfShape& aChain = _mapPropagationChains.FindFromKey(theMainEdge);
-  int i, nbEdges = aChain.Extent();
-  for (i = 1; i <= nbEdges; i++) {
-    TopoDS_Shape anEdge = aChain.FindKey(i);
-    SMESH_subMesh *subMesh = GetSubMesh(anEdge);
-    SMESHDS_SubMesh *subMeshDS = subMesh->GetSubMeshDS();
-    if (subMeshDS && subMeshDS->NbElements() > 0) {
-      subMesh->ComputeStateEngine(SMESH_subMesh::CLEANDEP);
-    }
-  }
-}
-
-//=============================================================================
-/*!
- *  RebuildPropagationChains
- *  Rebuild all existing propagation chains.
- *  Have to be used, if 1D hypothesis have been assigned/removed to/from any edge
- */
-//=============================================================================
-bool SMESH_Mesh::RebuildPropagationChains()
-{
-  bool ret = true;
-
-  // Clean all chains, because they can be not up-to-date
-  int i, nbChains = _mapPropagationChains.Extent();
-  for (i = 1; i <= nbChains; i++) {
-    TopoDS_Shape aMainEdge = _mapPropagationChains.FindKey(i);
-    CleanMeshOnPropagationChain(aMainEdge);
-    _mapPropagationChains.ChangeFromIndex(i).Clear();
-  }
-
-  // Build all chains
-  for (i = 1; i <= nbChains; i++) {
-    TopoDS_Shape aMainEdge = _mapPropagationChains.FindKey(i);
-    if (!BuildPropagationChain(aMainEdge))
-      ret = false;
-    CleanMeshOnPropagationChain(aMainEdge);
-  }
-
-  return ret;
-}
-
-//=============================================================================
-/*!
- *  RemovePropagationChain
- *  Have to be used, if Propagation hypothesis is removed from <theMainEdge>
- */
-//=============================================================================
-bool SMESH_Mesh::RemovePropagationChain (const TopoDS_Shape& theMainEdge)
-{
-  if (!_mapPropagationChains.Contains(theMainEdge))
-    return false;
-
-  // Clean mesh elements and nodes, built on the chain
-  CleanMeshOnPropagationChain(theMainEdge);
-
-  // Clean the chain
-  _mapPropagationChains.ChangeFromKey(theMainEdge).Clear();
-
-  // Remove the chain from the map
-  int i = _mapPropagationChains.FindIndex(theMainEdge);
-  if ( i == _mapPropagationChains.Extent() )
-    _mapPropagationChains.RemoveLast();
-  else {
-    TopoDS_Vertex anEmptyShape;
-    BRep_Builder BB;
-    BB.MakeVertex(anEmptyShape, gp_Pnt(0,0,0), 0.1);
-    SMESH_IndexedMapOfShape anEmptyMap;
-    _mapPropagationChains.Substitute(i, anEmptyShape, anEmptyMap);
-  }
-
-  return true;
-}
-
-//=============================================================================
-/*!
- *  BuildPropagationChain
- */
-//=============================================================================
-bool SMESH_Mesh::BuildPropagationChain (const TopoDS_Shape& theMainEdge)
-{
-  if (theMainEdge.ShapeType() != TopAbs_EDGE) return true;
-
-  // Add new chain, if there is no
-  if (!_mapPropagationChains.Contains(theMainEdge)) {
-    SMESH_IndexedMapOfShape aNewChain;
-    _mapPropagationChains.Add(theMainEdge, aNewChain);
-  }
-
-  // Check presence of 1D hypothesis to be propagated
-  const SMESH_Hypothesis* aMainHyp = IsLocal1DHypothesis(theMainEdge);
-  if (!aMainHyp) {
-    MESSAGE("Warning: There is no 1D hypothesis to propagate. Please, assign.");
-    return true;
-  }
-
-  // Edges, on which the 1D hypothesis will be propagated from <theMainEdge>
-  SMESH_IndexedMapOfShape& aChain = _mapPropagationChains.ChangeFromKey(theMainEdge);
-  if (aChain.Extent() > 0) {
-    CleanMeshOnPropagationChain(theMainEdge);
-    aChain.Clear();
-  }
-
-  // At first put <theMainEdge> in the chain
-  aChain.Add(theMainEdge);
-
-  // List of edges, added to chain on the previous cycle pass
-  TopTools_ListOfShape listPrevEdges;
-  listPrevEdges.Append(theMainEdge.Oriented( TopAbs_FORWARD ));
-
-//   5____4____3____4____5____6
-//   |    |    |    |    |    |
-//   |    |    |    |    |    |
-//   4____3____2____3____4____5
-//   |    |    |    |    |    |      Number in the each knot of
-//   |    |    |    |    |    |      grid indicates cycle pass,
-//   3____2____1____2____3____4      on which corresponding edge
-//   |    |    |    |    |    |      (perpendicular to the plane
-//   |    |    |    |    |    |      of view) will be found.
-//   2____1____0____1____2____3
-//   |    |    |    |    |    |
-//   |    |    |    |    |    |
-//   3____2____1____2____3____4
-
-  // Collect all edges pass by pass
-  while (listPrevEdges.Extent() > 0) {
-    // List of edges, added to chain on this cycle pass
-    TopTools_ListOfShape listCurEdges;
-
-    // Find the next portion of edges
-    TopTools_ListIteratorOfListOfShape itE (listPrevEdges);
-    for (; itE.More(); itE.Next()) {
-      TopoDS_Shape anE = itE.Value();
-
-      // Iterate on faces, having edge <anE>
-      TopTools_ListIteratorOfListOfShape itA (GetAncestors(anE));
-      for (; itA.More(); itA.Next()) {
-        TopoDS_Shape aW = itA.Value();
-
-        // There are objects of different type among the ancestors of edge
-        if (aW.ShapeType() == TopAbs_WIRE) {
-          TopoDS_Shape anOppE;
-
-          BRepTools_WireExplorer aWE (TopoDS::Wire(aW));
-          Standard_Integer nb = 1, found = 0;
-          TopTools_Array1OfShape anEdges (1,4);
-          for (; aWE.More(); aWE.Next(), nb++) {
-            if (nb > 4) {
-              found = 0;
-              break;
-            }
-            anEdges(nb) = aWE.Current();
-            if (!_mapAncestors.Contains(anEdges(nb))) {
-              MESSAGE("WIRE EXPLORER HAVE GIVEN AN INVALID EDGE !!!");
-              break;
-            }
-            if (anEdges(nb).IsSame(anE)) found = nb;
-          }
-
-          if (nb == 5 && found > 0) {
-            // Quadrangle face found, get an opposite edge
-            Standard_Integer opp = found + 2;
-            if (opp > 4) opp -= 4;
-            anOppE = anEdges(opp);
-
-            // add anOppE to aChain if ...
-            if (!aChain.Contains(anOppE)) { // ... anOppE is not in aChain
-              if (!IsLocal1DHypothesis(anOppE)) { // ... no other 1d hyp on anOppE
-                TopoDS_Shape aMainEdgeForOppEdge; // ... no other hyp is propagated to anOppE
-                if (!IsPropagatedHypothesis(anOppE, aMainEdgeForOppEdge))
-                {
-                  // Add found edge to the chain oriented so that to
-                  // have it co-directed with a forward MainEdge
-                  TopAbs_Orientation ori = anE.Orientation();
-                  if ( anEdges(opp).Orientation() == anEdges(found).Orientation() )
-                    ori = TopAbs::Reverse( ori );
-                  anOppE.Orientation( ori );
-                  aChain.Add(anOppE);
-                  listCurEdges.Append(anOppE);
-                }
-                else {
-                  // Collision!
-                  MESSAGE("Error: Collision between propagated hypotheses");
-                  CleanMeshOnPropagationChain(theMainEdge);
-                  aChain.Clear();
-                  return ( aMainHyp == IsLocal1DHypothesis(aMainEdgeForOppEdge) );
-                }
-              }
-            }
-          } // if (nb == 5 && found > 0)
-        } // if (aF.ShapeType() == TopAbs_WIRE)
-      } // for (; itF.More(); itF.Next())
-    } // for (; itE.More(); itE.Next())
-
-    listPrevEdges = listCurEdges;
-  } // while (listPrevEdges.Extent() > 0)
-
-  CleanMeshOnPropagationChain(theMainEdge);
-  return true;
-}
-
-//=======================================================================
-//function : GetAncestors
-//purpose  : return list of ancestors of theSubShape in the order
-//           that lower dimention shapes come first.
-//=======================================================================
-
-const TopTools_ListOfShape& SMESH_Mesh::GetAncestors(const TopoDS_Shape& theS) const
-{
-  if ( _mapAncestors.Contains( theS ) )
-    return _mapAncestors.FindFromKey( theS );
-
-  static TopTools_ListOfShape emptyList;
-  return emptyList;
-}
-
-//=======================================================================
-//function : Dump
-//purpose  : dumps contents of mesh to stream [ debug purposes ]
-//=======================================================================
-ostream& SMESH_Mesh::Dump(ostream& save)
-{
-  save << "========================== Dump contents of mesh ==========================" << endl;
-  save << "1) Total number of nodes:     " << NbNodes() << endl;
-  save << "2) Total number of edges:     " << NbEdges() << endl;
-  save << "3) Total number of faces:     " << NbFaces() << endl;
-  if ( NbFaces() > 0 ) {
-    int nb3 = NbTriangles();
-    int nb4 = NbQuadrangles();
-    save << "3.1.) Number of triangles:    " << nb3 << endl;
-    save << "3.2.) Number of quadrangles:  " << nb4 << endl;
-    if ( nb3 + nb4 !=  NbFaces() ) {
-      map<int,int> myFaceMap;
-      SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator();
-      while( itFaces->more( ) ) {
-       int nbNodes = itFaces->next()->NbNodes();
-       if ( myFaceMap.find( nbNodes ) == myFaceMap.end() )
-         myFaceMap[ nbNodes ] = 0;
-       myFaceMap[ nbNodes ] = myFaceMap[ nbNodes ] + 1;
-      }
-      save << "3.3.) Faces in detail: " << endl;
-      map <int,int>::iterator itF;
-      for (itF = myFaceMap.begin(); itF != myFaceMap.end(); itF++)
-       save << "--> nb nodes: " << itF->first << " - nb elemens: " << itF->second << endl;
-    }
-  }
-  save << "4) Total number of volumes:   " << NbVolumes() << endl;
-  if ( NbVolumes() > 0 ) {
-    int nb8 = NbHexas();
-    int nb4 = NbTetras();
-    int nb5 = NbPyramids();
-    int nb6 = NbPrisms();
-    save << "4.1.) Number of hexahedrons:  " << nb8 << endl;
-    save << "4.2.) Number of tetrahedrons: " << nb4 << endl;
-    save << "4.3.) Number of prisms:       " << nb6 << endl;
-    save << "4.4.) Number of pyramides:    " << nb5 << endl;
-    if ( nb8 + nb4 + nb5 + nb6 != NbVolumes() ) {
-      map<int,int> myVolumesMap;
-      SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
-      while( itVolumes->more( ) ) {
-       int nbNodes = itVolumes->next()->NbNodes();
-       if ( myVolumesMap.find( nbNodes ) == myVolumesMap.end() )
-         myVolumesMap[ nbNodes ] = 0;
-       myVolumesMap[ nbNodes ] = myVolumesMap[ nbNodes ] + 1;
-      }
-      save << "4.5.) Volumes in detail: " << endl;
-      map <int,int>::iterator itV;
-      for (itV = myVolumesMap.begin(); itV != myVolumesMap.end(); itV++)
-       save << "--> nb nodes: " << itV->first << " - nb elemens: " << itV->second << endl;
-    }
-  }
-  save << "===========================================================================" << endl;
-  return save;
-}
-
-//=======================================================================
-//function : GetElementType
-//purpose  : Returns type of mesh element with certain id
-//=======================================================================
-SMDSAbs_ElementType SMESH_Mesh::GetElementType( const int id, const bool iselem )
-{
-  return _myMeshDS->GetElementType( id, iselem );
-}
diff --git a/src/SMESH/SMESH_Mesh.hxx b/src/SMESH/SMESH_Mesh.hxx
deleted file mode 100644 (file)
index 5054e00..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Mesh.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_MESH_HXX_
-#define _SMESH_MESH_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-//#include "SMESH_subMesh.hxx"
-
-#include "SMESHDS_Document.hxx"
-#include "SMESHDS_Mesh.hxx"
-#include "SMESHDS_Command.hxx"
-#include "SMDSAbs_ElementType.hxx"
-
-//#include "NMTTools_IndexedDataMapOfShapeIndexedMapOfShape.hxx"
-#include "SMESH_IndexedDataMapOfShapeIndexedMapOfShape.hxx"
-
-#include "Utils_SALOME_Exception.hxx"
-
-#include <TopExp.hxx>
-#include <TopExp_Explorer.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Iterator.hxx>
-#include <TopoDS_Compound.hxx>
-#include <TopoDS_CompSolid.hxx>
-#include <TopoDS_Solid.hxx>
-#include <TopoDS_Shell.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Wire.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <TopoDS_Shape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-
-#include <vector>
-#include <list>
-#include <map>
-
-#include <string>
-#include <iostream>
-
-class SMESH_Gen;
-class SMESH_Group;
-class TopTools_ListOfShape;
-class SMESH_subMesh;
-class SMESH_HypoFilter;
-
-//typedef NMTTools_IndexedDataMapOfShapeIndexedMapOfShape IndexedMapOfChain;
-typedef SMESH_IndexedDataMapOfShapeIndexedMapOfShape IndexedMapOfChain;
-
-class SMESH_Mesh
-{
-  SMESH_Mesh();
-  SMESH_Mesh(const SMESH_Mesh&);
-public:
-  SMESH_Mesh(int localId, int studyId, SMESH_Gen * gen,
-            SMESHDS_Document * myDocument);
-  
-  virtual ~SMESH_Mesh();
-  
-  void ShapeToMesh(const TopoDS_Shape & aShape);
-  
-  int UNVToMesh(const char* theFileName);
-  /*!
-   * consult DriverMED_R_SMESHDS_Mesh::ReadStatus for returned value
-   */
-  int MEDToMesh(const char* theFileName, const char* theMeshName);
-  
-  int STLToMesh(const char* theFileName);
-
-  SMESH_Hypothesis::Hypothesis_Status
-  AddHypothesis(const TopoDS_Shape & aSubShape, int anHypId)
-    throw(SALOME_Exception);
-  
-  SMESH_Hypothesis::Hypothesis_Status
-  RemoveHypothesis(const TopoDS_Shape & aSubShape, int anHypId)
-    throw(SALOME_Exception);
-  
-  const list <const SMESHDS_Hypothesis * >&
-  GetHypothesisList(const TopoDS_Shape & aSubShape) const
-    throw(SALOME_Exception);
-
-  const SMESH_Hypothesis * GetHypothesis(const TopoDS_Shape &    aSubShape,
-                                         const SMESH_HypoFilter& aFilter,
-                                         const bool              andAncestors) const;
-  
-  bool GetHypotheses(const TopoDS_Shape &                aSubShape,
-                     const SMESH_HypoFilter&             aFilter,
-                     list <const SMESHDS_Hypothesis * >& aHypList,
-                     const bool                          andAncestors) const;
-
-  const list<SMESHDS_Command*> & GetLog() throw(SALOME_Exception);
-  
-  void ClearLog() throw(SALOME_Exception);
-  
-  int GetId();
-  
-  SMESHDS_Mesh * GetMeshDS();
-  
-  SMESH_Gen *GetGen();
-  
-  SMESH_subMesh *GetSubMesh(const TopoDS_Shape & aSubShape)
-    throw(SALOME_Exception);
-  
-  SMESH_subMesh *GetSubMeshContaining(const TopoDS_Shape & aSubShape)
-    throw(SALOME_Exception);
-  
-  SMESH_subMesh *GetSubMeshContaining(const int aShapeID)
-    throw(SALOME_Exception);
-  
-  const list < SMESH_subMesh * >&
-  GetSubMeshUsingHypothesis(SMESHDS_Hypothesis * anHyp)
-    throw(SALOME_Exception);
-  
-  bool IsUsedHypothesis(SMESHDS_Hypothesis * anHyp,
-                       const TopoDS_Shape & aSubShape);
-  // Return True if anHyp is used to mesh aSubShape
-  
-  bool IsNotConformAllowed() const;
-  // check if a hypothesis alowing notconform mesh is present
-  
-  bool IsMainShape(const TopoDS_Shape& theShape) const;
-
-  const TopTools_ListOfShape& GetAncestors(const TopoDS_Shape& theSubShape) const;
-  // return list of ancestors of theSubShape in the order
-  // that lower dimention shapes come first.
-  
-  void ExportMED(const char *file, 
-                const char* theMeshName = NULL, 
-                bool theAutoGroups = true, 
-                int theVersion = 0) 
-    throw(SALOME_Exception);
-
-  void ExportDAT(const char *file) throw(SALOME_Exception);
-  void ExportUNV(const char *file) throw(SALOME_Exception);
-  void ExportSTL(const char *file, const bool isascii) throw(SALOME_Exception);
-  
-  int NbNodes() throw(SALOME_Exception);
-  
-  int NbEdges() throw(SALOME_Exception);
-  
-  int NbFaces() throw(SALOME_Exception);
-  
-  int NbTriangles() throw(SALOME_Exception);
-  
-  int NbQuadrangles() throw(SALOME_Exception);
-
-  int NbPolygons() throw(SALOME_Exception);
-  
-  int NbVolumes() throw(SALOME_Exception);
-  
-  int NbTetras() throw(SALOME_Exception);
-  
-  int NbHexas() throw(SALOME_Exception);
-  
-  int NbPyramids() throw(SALOME_Exception);
-
-  int NbPrisms() throw(SALOME_Exception);
-  
-  int NbPolyhedrons() throw(SALOME_Exception);
-  
-  int NbSubMesh() throw(SALOME_Exception);
-  
-  int NbGroup() const { return _mapGroup.size(); }
-  
-  SMESH_Group* AddGroup (const SMDSAbs_ElementType theType,
-                        const char*               theName,
-                        int&                      theId,
-                         const TopoDS_Shape&       theShape=TopoDS_Shape());
-  
-  SMESH_Group* GetGroup (const int theGroupID);
-  
-  list<int> GetGroupIds();
-  
-  void RemoveGroup (const int theGroupID);
-
-  // Propagation hypothesis management
-
-  const SMESH_Hypothesis* IsLocal1DHypothesis (const TopoDS_Shape& theEdge);
-  // Returns a local 1D hypothesis used for theEdge.
-
-  bool IsPropagationHypothesis (const TopoDS_Shape& theEdge);
-  // Returns true, if a local Propagation hypothesis is set directly on <theEdge>
-
-  bool IsPropagatedHypothesis (const TopoDS_Shape& theEdge,
-                               TopoDS_Shape&       theMainEdge);
-  // Returns true, if a local 1D hypothesis is
-  // propagated on <theEdge> from some other edge.
-  // Returns through <theMainEdge> the edge, from
-  // which the 1D hypothesis is propagated on <theEdge>
-
-  bool IsReversedInChain (const TopoDS_Shape& theEdge,
-                          const TopoDS_Shape& theMainEdge);
-  // Returns true if theEdge should be reversed to be
-  // co-directed with theMainEdge
-
-  bool RebuildPropagationChains();
-  bool RemovePropagationChain (const TopoDS_Shape& theMainEdge);
-  bool BuildPropagationChain (const TopoDS_Shape& theMainEdge);
-  
-  SMDSAbs_ElementType GetElementType( const int id, const bool iselem );
-
-  //
-  
-  ostream& Dump(ostream & save);
-  
-private:
-  // Propagation hypothesis management
-  void CleanMeshOnPropagationChain(const TopoDS_Shape& theMainEdge);
-  //
-  
-private:
-  int                        _id;           // id given by creator (unique within the creator instance)
-  int                        _studyId;
-  int                        _idDoc;        // id given by SMESHDS_Document
-  int                        _groupId;      // id generator for group objects
-  bool                       _isShapeToMesh;// set to true when a shape is given (only once)
-  list <SMESH_subMesh *>     _subMeshesUsingHypothesisList;
-  SMESHDS_Document *         _myDocument;
-  SMESHDS_Mesh *             _myMeshDS;
-  map <int, SMESH_subMesh *> _mapSubMesh;
-  map <int, SMESH_Group *>   _mapGroup;
-  SMESH_Gen *                _gen;
-  
-  TopTools_IndexedDataMapOfShapeListOfShape _mapAncestors;
-
-  IndexedMapOfChain _mapPropagationChains; // Propagation hypothesis management
-};
-
-#endif
diff --git a/src/SMESH/SMESH_subMesh.hxx b/src/SMESH/SMESH_subMesh.hxx
deleted file mode 100644 (file)
index 8251c6b..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_subMesh.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_SUBMESH_HXX_
-#define _SMESH_SUBMESH_HXX_
-
-#include "SMESHDS_Mesh.hxx"
-#include "SMESHDS_SubMesh.hxx"
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-#include <TopoDS_Shape.hxx>
-#include <TColStd_IndexedMapOfTransient.hxx>
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-
-#include <set>
-#include <list>
-#include <map>
-
-class SMESH_Mesh;
-class SMESH_Hypothesis;
-class SMESH_Algo;
-class SMESH_Gen;
-
-class SMESH_subMesh
-{
- public:
-  SMESH_subMesh(int Id, SMESH_Mesh * father, SMESHDS_Mesh * meshDS,
-               const TopoDS_Shape & aSubShape);
-  virtual ~ SMESH_subMesh();
-
-  int GetId() const;
-
-  //   bool Contains(const TopoDS_Shape & aSubShape)
-  //     throw (SALOME_Exception);
-
-  SMESH_Mesh* GetFather() { return _father; }
-  
-  SMESHDS_SubMesh * GetSubMeshDS();
-
-  SMESHDS_SubMesh* CreateSubMeshDS();
-  // Explicit SMESHDS_SubMesh creation method, required for persistence mechanism
-
-  SMESH_subMesh *GetFirstToCompute();
-
-  const map < int, SMESH_subMesh * >&DependsOn();
-  //const map < int, SMESH_subMesh * >&Dependants();
-
-  const TopoDS_Shape & GetSubShape();
-
-//  bool _vertexSet;                   // only for vertex subMesh, set to false for dim > 0
-
-  enum compute_state
-  {
-    NOT_READY, READY_TO_COMPUTE,
-    COMPUTE_OK, FAILED_TO_COMPUTE
-    };
-  enum algo_state
-  {
-    NO_ALGO, MISSING_HYP, HYP_OK
-    };
-  enum algo_event
-  {
-    ADD_HYP, ADD_ALGO,
-    REMOVE_HYP, REMOVE_ALGO,
-    ADD_FATHER_HYP, ADD_FATHER_ALGO,
-    REMOVE_FATHER_HYP, REMOVE_FATHER_ALGO
-    };
-  enum compute_event
-  {
-    MODIF_HYP, MODIF_ALGO_STATE, COMPUTE,
-    CLEAN, CLEANDEP, SUBMESH_COMPUTED, SUBMESH_RESTORED,
-    MESH_ENTITY_REMOVED, CHECK_COMPUTE_STATE
-    };
-
-  SMESH_Hypothesis::Hypothesis_Status
-    AlgoStateEngine(int event, SMESH_Hypothesis * anHyp);
-
-  SMESH_Hypothesis::Hypothesis_Status
-    SubMeshesAlgoStateEngine(int event, SMESH_Hypothesis * anHyp);
-
-  int GetAlgoState() { return _algoState; }
-
-  void DumpAlgoState(bool isMain);
-
-  bool ComputeStateEngine(int event);
-
-  int GetComputeState()
-  {
-    return _computeState;
-  };
-
-  bool IsConform(const SMESH_Algo* theAlgo);
-  // check if a conform mesh will be produced by the Algo
-
-  bool CanAddHypothesis(const SMESH_Hypothesis* theHypothesis) const;
-  // return true if theHypothesis can be attached to me:
-  // its dimention is checked
-
-  static bool IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis,
-                                    const TopAbs_ShapeEnum  theShapeType);
-
-  bool IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis) const
-  { return IsApplicableHypotesis( theHypothesis, _subShape.ShapeType() ); }
-  // return true if theHypothesis can be used to mesh me:
-  // its shape type is checked
-  
-  SMESH_Hypothesis::Hypothesis_Status CheckConcurentHypothesis (const int theHypType);
-  // check if there are several applicable hypothesis on fathers
-
- protected:
-  void InsertDependence(const TopoDS_Shape aSubShape);
-
-  bool SubMeshesComputed();
-
-  bool SubMeshesReady();
-
-  void RemoveSubMeshElementsAndNodes();
-  void UpdateDependantsState(const compute_event theEvent);
-  void UpdateSubMeshState(const compute_state theState);
-  void ComputeSubMeshStateEngine(int event);
-  void CleanDependants();
-  void CleanDependsOn();
-  void SetAlgoState(int state);
-
-  bool IsMeshComputed() const;
-  // check if _subMeshDS contains mesh elements
-
-  TopoDS_Shape GetCollection(SMESH_Gen * theGen, SMESH_Algo* theAlgo);
-  // return a shape containing all sub-shapes of the MainShape that can be
-  // meshed at once along with _subShape
-
-  bool ApplyToCollection (SMESH_Algo*         theAlgo,
-                          const TopoDS_Shape& theCollection);
-  // Apply theAlgo to all subshapes in theCollection
-
-  const SMESH_Hypothesis* GetSimilarAttached(const TopoDS_Shape&      theShape,
-                                             const SMESH_Hypothesis * theHyp,
-                                             const int                theHypType = 0);
-  // return a hypothesis attached to theShape.
-  // If theHyp is provided, similar but not same hypotheses
-  // is returned; else an applicable ones having theHypType
-  // is returned
-  
-  TopoDS_Shape _subShape;
-  SMESHDS_Mesh * _meshDS;
-  SMESHDS_SubMesh * _subMeshDS;
-  int _Id;
-  SMESH_Mesh *_father;
-  map < int, SMESH_subMesh * >_mapDepend;
-  bool _dependenceAnalysed;
-
-  int _algoState;
-  int _computeState;
-
-};
-
-#endif
diff --git a/src/SMESHDS/Makefile.in b/src/SMESHDS/Makefile.in
deleted file mode 100644 (file)
index 50d4fa7..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-#  SMESH SMESHDS : management of mesh data and SMESH document
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Patrick GOLDBRONN (CEA)
-#  Module : SMESH
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# Libraries targets
-
-LIB = libSMESHDS.la 
-LIB_SRC = \
-       SMESHDS_Document.cxx \
-       SMESHDS_Hypothesis.cxx \
-       SMESHDS_Script.cxx \
-       SMESHDS_Command.cxx \
-       SMESHDS_SubMesh.cxx \
-       SMESHDS_Mesh.cxx \
-       SMESHDS_GroupBase.cxx \
-       SMESHDS_Group.cxx \
-       SMESHDS_GroupOnGeom.cxx
-
-LIB_CLIENT_IDL = 
-LIB_SERVER_IDL = 
-
-# Executables targets
-BIN =
-BIN_SRC =
-BIN_CLIENT_IDL = 
-BIN_SERVER_IDL = 
-
-# header files 
-EXPORT_HEADERS= \
-       SMESHDS_Document.hxx \
-       SMESHDS_Hypothesis.hxx \
-       SMESHDS_Mesh.hxx \
-       SMESHDS_Script.hxx \
-       SMESHDS_Command.hxx \
-       SMESHDS_CommandType.hxx \
-       SMESHDS_SubMesh.hxx \
-       SMESHDS_GroupBase.hxx \
-       SMESHDS_Group.hxx \
-       SMESHDS_GroupOnGeom.hxx
-
-# additionnal information to compil and link file
-CPPFLAGS += $(OCC_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS)
-CXXFLAGS += $(OCC_CXXFLAGS) -I${KERNEL_ROOT_DIR}/include/salome
-LDFLAGS  += $(OCC_KERNEL_LIBS) -lSMDS
-
-
-# additional file to be cleaned
-MOSTLYCLEAN =
-CLEAN =
-DISTCLEAN =
-
-@CONCLUDE@
diff --git a/src/SMESHDS/SMESHDS_Command.cxx b/src/SMESHDS/SMESHDS_Command.cxx
deleted file mode 100644 (file)
index b55b5af..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Command.cxx
-//  Author : Yves FRICAUD, OCC
-//  Module : SMESH
-//  $Header: 
-
-#include "SMESHDS_Command.hxx"
-
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-SMESHDS_Command::SMESHDS_Command(const SMESHDS_CommandType aType):myType(aType),
-myNumber(0)
-{
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddNode(int NewNodeID, double x, double y, double z)
-{
-       if (!myType == SMESHDS_AddNode)
-       {
-               MESSAGE("SMESHDS_Command::AddNode : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NewNodeID);
-       myReals.push_back(x);
-       myReals.push_back(y);
-       myReals.push_back(z);
-       myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::MoveNode(int NodeID, double x, double y, double z)
-{
-       if (!myType == SMESHDS_MoveNode)
-       {
-               MESSAGE("SMESHDS_Command::MoveNode : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NodeID);
-       myReals.push_back(x);
-       myReals.push_back(y);
-       myReals.push_back(z);
-       myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddEdge(int NewEdgeID, int idnode1, int idnode2)
-{
-       if (!myType == SMESHDS_AddEdge)
-       {
-               MESSAGE("SMESHDS_Command::AddEdge : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NewEdgeID);
-       myIntegers.push_back(idnode1);
-       myIntegers.push_back(idnode2);
-       myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddFace(int NewFaceID,
-       int idnode1, int idnode2, int idnode3)
-{
-       if (!myType == SMESHDS_AddTriangle)
-       {
-               MESSAGE("SMESHDS_Command::AddFace : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NewFaceID);
-       myIntegers.push_back(idnode1);
-       myIntegers.push_back(idnode2);
-       myIntegers.push_back(idnode3);
-       myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddFace(int NewFaceID,
-       int idnode1, int idnode2, int idnode3, int idnode4)
-{
-       if (!myType == SMESHDS_AddQuadrangle)
-       {
-               MESSAGE("SMESHDS_Command::AddFace : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NewFaceID);
-       myIntegers.push_back(idnode1);
-       myIntegers.push_back(idnode2);
-       myIntegers.push_back(idnode3);
-       myIntegers.push_back(idnode4);
-       myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddVolume(int NewVolID,
-       int idnode1, int idnode2, int idnode3, int idnode4)
-{
-       if (!myType == SMESHDS_AddTetrahedron)
-       {
-               MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NewVolID);
-       myIntegers.push_back(idnode1);
-       myIntegers.push_back(idnode2);
-       myIntegers.push_back(idnode3);
-       myIntegers.push_back(idnode4);
-       myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddVolume(int NewVolID,
-       int idnode1, int idnode2, int idnode3, int idnode4, int idnode5)
-{
-       if (!myType == SMESHDS_AddPyramid)
-       {
-               MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NewVolID);
-       myIntegers.push_back(idnode1);
-       myIntegers.push_back(idnode2);
-       myIntegers.push_back(idnode3);
-       myIntegers.push_back(idnode4);
-       myIntegers.push_back(idnode5);
-       myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddVolume(int NewVolID,
-       int idnode1,
-       int idnode2, int idnode3, int idnode4, int idnode5, int idnode6)
-{
-       if (!myType == SMESHDS_AddPrism)
-       {
-               MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NewVolID);
-       myIntegers.push_back(idnode1);
-       myIntegers.push_back(idnode2);
-       myIntegers.push_back(idnode3);
-       myIntegers.push_back(idnode4);
-       myIntegers.push_back(idnode5);
-       myIntegers.push_back(idnode6);
-       myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddVolume(int NewVolID,
-       int idnode1,
-       int idnode2,
-       int idnode3,
-       int idnode4, int idnode5, int idnode6, int idnode7, int idnode8)
-{
-       if (!myType == SMESHDS_AddHexahedron)
-       {
-               MESSAGE("SMESHDS_Command::AddVolume : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NewVolID);
-       myIntegers.push_back(idnode1);
-       myIntegers.push_back(idnode2);
-       myIntegers.push_back(idnode3);
-       myIntegers.push_back(idnode4);
-       myIntegers.push_back(idnode5);
-       myIntegers.push_back(idnode6);
-       myIntegers.push_back(idnode7);
-       myIntegers.push_back(idnode8);
-       myNumber++;
-}
-
-//=======================================================================
-//function : AddPolygonalFace
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddPolygonalFace (const int        ElementID,
-                                        std::vector<int> nodes_ids)
-{
-  if (!myType == SMESHDS_AddPolygon) {
-    MESSAGE("SMESHDS_Command::AddPolygonalFace : Bad Type");
-    return;
-  }
-  myIntegers.push_back(ElementID);
-
-  int i, nbNodes = nodes_ids.size();
-  myIntegers.push_back(nbNodes);
-  for (i = 0; i < nbNodes; i++) {
-    myIntegers.push_back(nodes_ids[i]);
-  }
-
-  myNumber++;
-}
-
-//=======================================================================
-//function : AddPolyhedralVolume
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::AddPolyhedralVolume (const int        ElementID,
-                                           std::vector<int> nodes_ids,
-                                           std::vector<int> quantities)
-{
-  if (!myType == SMESHDS_AddPolyhedron) {
-    MESSAGE("SMESHDS_Command::AddPolyhedralVolume : Bad Type");
-    return;
-  }
-  myIntegers.push_back(ElementID);
-
-  int i, nbNodes = nodes_ids.size();
-  myIntegers.push_back(nbNodes);
-  for (i = 0; i < nbNodes; i++) {
-    myIntegers.push_back(nodes_ids[i]);
-  }
-
-  int nbFaces = quantities.size();
-  myIntegers.push_back(nbFaces);
-  for (i = 0; i < nbFaces; i++) {
-    myIntegers.push_back(quantities[i]);
-  }
-
-  myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::RemoveNode(int NodeID)
-{
-       if (!myType == SMESHDS_RemoveNode)
-       {
-               MESSAGE("SMESHDS_Command::RemoveNode : Bad Type");
-               return;
-       }
-       myIntegers.push_back(NodeID);
-       myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::RemoveElement(int ElementID)
-{
-       if (!myType == SMESHDS_RemoveElement)
-       {
-               MESSAGE("SMESHDS_Command::RemoveElement : Bad Type");
-               return;
-       }
-       myIntegers.push_back(ElementID);
-       myNumber++;
-}
-
-//=======================================================================
-//function : ChangeElementNodes
-//purpose  : 
-//=======================================================================
-
-void SMESHDS_Command::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
-{
-  if (!myType == SMESHDS_ChangeElementNodes)
-  {
-    MESSAGE("SMESHDS_Command::ChangeElementNodes : Bad Type");
-    return;
-  }
-  myIntegers.push_back(ElementID);
-  myIntegers.push_back(nbnodes);
-  for ( int i = 0; i < nbnodes; i++ )
-    myIntegers.push_back( nodes[ i ] );
-
-  myNumber++;
-}
-
-//=======================================================================
-//function : ChangePolyhedronNodes
-//purpose  : 
-//=======================================================================
-void SMESHDS_Command::ChangePolyhedronNodes (const int ElementID,
-                                             std::vector<int> nodes_ids,
-                                             std::vector<int> quantities)
-{
-  if (myType != SMESHDS_ChangePolyhedronNodes)
-  {
-    MESSAGE("SMESHDS_Command::ChangePolyhedronNodes : Bad Type");
-    return;
-  }
-  myIntegers.push_back(ElementID);
-
-  int i, nbNodes = nodes_ids.size();
-  myIntegers.push_back(nbNodes);
-  for (i = 0; i < nbNodes; i++) {
-    myIntegers.push_back(nodes_ids[i]);
-  }
-
-  int nbFaces = quantities.size();
-  myIntegers.push_back(nbFaces);
-  for (i = 0; i < nbFaces; i++) {
-    myIntegers.push_back(quantities[i]);
-  }
-
-  myNumber++;
-}
-
-//=======================================================================
-//function : Renumber
-//purpose  : 
-//=======================================================================
-
-void SMESHDS_Command::Renumber (const bool isNodes, const int startID, const int deltaID)
-{
-  if (!myType == SMESHDS_Renumber)
-  {
-    MESSAGE("SMESHDS_Command::Renumber : Bad Type");
-    return;
-  }
-  myIntegers.push_back(isNodes);
-  myIntegers.push_back(startID);
-  myIntegers.push_back(deltaID);
-  myNumber++;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-SMESHDS_CommandType SMESHDS_Command::GetType()
-{
-       return myType;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-int SMESHDS_Command::GetNumber()
-{
-       return myNumber;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-const list < int >&SMESHDS_Command::GetIndexes()
-{
-       return myIntegers;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-const list < double >&SMESHDS_Command::GetCoords()
-{
-       return myReals;
-}
diff --git a/src/SMESHDS/SMESHDS_Command.hxx b/src/SMESHDS/SMESHDS_Command.hxx
deleted file mode 100644 (file)
index 3ecd762..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_Command.hxx
-//  Module : SMESH
-
-#ifndef _SMESHDS_Command_HeaderFile
-#define _SMESHDS_Command_HeaderFile
-
-#include "SMESHDS_CommandType.hxx"
-#include <list>
-#include <vector>
-
-class SMESHDS_Command
-{
-
-  public:
-       SMESHDS_Command(const SMESHDS_CommandType aType);
-       void AddNode(int NewNodeID, double x, double y, double z);
-       void AddEdge(int NewEdgeID, int idnode1, int idnode2);
-       void AddFace(int NewFaceID, int idnode1, int idnode2, int idnode3);
-       void AddFace(int NewFaceID, int idnode1, int idnode2, int idnode3,
-               int idnode4);
-       void AddVolume(int NewVolID, int idnode1, int idnode2, int idnode3,
-               int idnode4);
-       void AddVolume(int NewVolID, int idnode1, int idnode2, int idnode3,
-               int idnode4, int idnode5);
-       void AddVolume(int NewVolID, int idnode1, int idnode2, int idnode3,
-               int idnode4, int idnode5, int idnode6);
-       void AddVolume(int NewVolID, int idnode1, int idnode2, int idnode3,
-               int idnode4, int idnode5, int idnode6, int idnode7, int idnode8);
-        void AddPolygonalFace (const int        ElementID,
-                               std::vector<int> nodes_ids);
-        void AddPolyhedralVolume (const int        ElementID,
-                                  std::vector<int> nodes_ids,
-                                  std::vector<int> quantities);
-       void MoveNode(int NewNodeID, double x, double y, double z);
-       void RemoveNode(int NodeID);
-       void RemoveElement(int ElementID);
-       void ChangeElementNodes(int ElementID, int nodes[], int nbnodes);
-       void ChangePolyhedronNodes(const int ElementID,
-                                   std::vector<int> nodes_ids,
-                                   std::vector<int> quantities);
-       void Renumber (const bool isNodes, const int startID, const int deltaID);
-       SMESHDS_CommandType GetType();
-       int GetNumber();
-       const std::list<int> & GetIndexes();
-       const std::list<double> & GetCoords();
-        ~SMESHDS_Command();
-  private:
-       SMESHDS_CommandType myType;
-       int myNumber;
-       std::list<double> myReals;
-       std::list<int> myIntegers;
-};
-#endif
diff --git a/src/SMESHDS/SMESHDS_CommandType.hxx b/src/SMESHDS/SMESHDS_CommandType.hxx
deleted file mode 100644 (file)
index f2c505b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_CommandType.hxx
-//  Module : SMESH
-
-#ifndef _SMESHDS_CommandType_HeaderFile
-#define _SMESHDS_CommandType_HeaderFile
-
-//#include <Standard_PrimitiveTypes.hxx>
-
-enum SMESHDS_CommandType { 
- SMESHDS_AddNode,
- SMESHDS_AddEdge,
- SMESHDS_AddTriangle,
- SMESHDS_AddQuadrangle,
- SMESHDS_AddPolygon,
- SMESHDS_AddTetrahedron,
- SMESHDS_AddPyramid,
- SMESHDS_AddPrism,
- SMESHDS_AddHexahedron,
- SMESHDS_AddPolyhedron,
- SMESHDS_RemoveNode,
- SMESHDS_RemoveElement,
- SMESHDS_MoveNode,
- SMESHDS_ChangeElementNodes,
- SMESHDS_ChangePolyhedronNodes,
- SMESHDS_Renumber
-};
-
-
-#endif
diff --git a/src/SMESHDS/SMESHDS_Document.cxx b/src/SMESHDS/SMESHDS_Document.cxx
deleted file mode 100644 (file)
index f533a72..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_Document.cxx
-//  Author : Yves FRICAUD, OCC
-//  Module : SMESH
-//  $Header: 
-
-#include "SMESHDS_Document.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : Create
-//purpose  : 
-//=======================================================================
-SMESHDS_Document::SMESHDS_Document(int UserID):myUserID(UserID)
-{
-}
-
-//=======================================================================
-//function : NewMesh
-//purpose  : 
-//=======================================================================
-int SMESHDS_Document::NewMesh()
-{
-       static int NewMeshID = 0;
-       NewMeshID++;
-       SMESHDS_Mesh *aNewMesh = new SMESHDS_Mesh(NewMeshID);
-       myMeshes[NewMeshID] = aNewMesh;
-       return NewMeshID;
-}
-
-//=======================================================================
-//function : GetMesh
-//purpose  : 
-//=======================================================================
-SMESHDS_Mesh *SMESHDS_Document::GetMesh(int MeshID)
-{
-       map<int,SMESHDS_Mesh*>::iterator it=myMeshes.find(MeshID);
-       if (it==myMeshes.end())
-       {
-               MESSAGE("SMESHDS_Document::GetMesh : ID not found");
-               return NULL;
-       }
-       else return (*it).second;
-}
-
-//=======================================================================
-//function : RemoveMesh
-//purpose  : 
-//=======================================================================
-void SMESHDS_Document::RemoveMesh(int MeshID)
-{
-       map<int,SMESHDS_Mesh*>::iterator it=myMeshes.find(MeshID);
-       if (it==myMeshes.end())
-               MESSAGE("SMESHDS_Document::RemoveMesh : ID not found"); 
-       myMeshes.erase(it);
-}
-
-//=======================================================================
-//function : AddHypothesis
-//purpose  : 
-//=======================================================================
-void SMESHDS_Document::AddHypothesis(SMESHDS_Hypothesis * H)
-{
-       myHypothesis[H->GetID()]=H;
-}
-
-//=======================================================================
-//function : GetHypothesis
-//purpose  : 
-//=======================================================================
-SMESHDS_Hypothesis * SMESHDS_Document::GetHypothesis(int HypID)
-{
-       map<int,SMESHDS_Hypothesis*>::iterator it=myHypothesis.find(HypID);
-       if (it==myHypothesis.end())
-       {
-               MESSAGE("SMESHDS_Document::GetHypothesis : ID not found");
-               return NULL;
-       }
-       else return (*it).second;
-}
-
-//=======================================================================
-//function : RemoveHypothesis
-//purpose  : 
-//=======================================================================
-void SMESHDS_Document::RemoveHypothesis(int HypID)
-{
-       map<int,SMESHDS_Hypothesis*>::iterator it=myHypothesis.find(HypID);
-       if (it==myHypothesis.end())
-               MESSAGE("SMESHDS_Document::RemoveHypothesis : ID not found");   
-       myHypothesis.erase(it);
-}
-
-//=======================================================================
-//function : NbMeshes
-//purpose  : 
-//=======================================================================
-int SMESHDS_Document::NbMeshes()
-{
-       return myMeshes.size();
-}
-
-//=======================================================================
-//function : NbHypothesis
-//purpose  : 
-//=======================================================================
-int SMESHDS_Document::NbHypothesis()
-{
-       return myHypothesis.size();
-}
-
-//=======================================================================
-//function : InitMeshesIterator
-//purpose  : 
-//=======================================================================
-void SMESHDS_Document::InitMeshesIterator()
-{
-       myMeshesIt=myMeshes.begin();
-}
-
-//=======================================================================
-//function : NextMesh
-//purpose  : 
-//=======================================================================
-SMESHDS_Mesh * SMESHDS_Document::NextMesh()
-{
-       SMESHDS_Mesh * toReturn=(*myMeshesIt).second;
-       myMeshesIt++;
-       return toReturn;
-}
-
-//=======================================================================
-//function : MoreMesh
-//purpose  : 
-//=======================================================================
-bool SMESHDS_Document::MoreMesh()
-{
-       return myMeshesIt!=myMeshes.end();
-}
-
-//=======================================================================
-//function : InitHypothesisIterator
-//purpose  : 
-//=======================================================================
-void SMESHDS_Document::InitHypothesisIterator()
-{
-       myHypothesisIt=myHypothesis.begin();
-}
-
-//=======================================================================
-//function : NextMesh
-//purpose  : 
-//=======================================================================
-SMESHDS_Hypothesis * SMESHDS_Document::NextHypothesis()
-{
-       SMESHDS_Hypothesis * toReturn=(*myHypothesisIt).second;
-       myHypothesisIt++;
-       return toReturn;
-}
-
-//=======================================================================
-//function : MoreMesh
-//purpose  : 
-//=======================================================================
-bool SMESHDS_Document::MoreHypothesis()
-{
-       return myHypothesisIt!=myHypothesis.end();
-}
diff --git a/src/SMESHDS/SMESHDS_Document.hxx b/src/SMESHDS/SMESHDS_Document.hxx
deleted file mode 100644 (file)
index e95269f..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_Document.hxx
-//  Module : SMESH
-
-#ifndef _SMESHDS_Document_HeaderFile
-#define _SMESHDS_Document_HeaderFile
-
-#include "SMESHDS_Mesh.hxx"
-#include "SMESHDS_Hypothesis.hxx"
-#include <map>
-
-
-class SMESHDS_Document
-{
-  public:
-       SMESHDS_Document(int UserID);
-       int NewMesh();
-       void RemoveMesh(int MeshID);
-       SMESHDS_Mesh * GetMesh(int MeshID);
-       void AddHypothesis(SMESHDS_Hypothesis * H);
-       void RemoveHypothesis(int HypID);
-       SMESHDS_Hypothesis * GetHypothesis(int HypID);
-       int NbMeshes();
-       int NbHypothesis();
-       void InitMeshesIterator();
-       SMESHDS_Mesh * NextMesh();
-       bool MoreMesh();        
-       void InitHypothesisIterator();
-       SMESHDS_Hypothesis * NextHypothesis();
-       bool MoreHypothesis();  
-        ~SMESHDS_Document();
-
-  private:
-       int myUserID;
-       std::map<int,SMESHDS_Mesh*> myMeshes;
-       std::map<int,SMESHDS_Hypothesis*> myHypothesis;
-       std::map<int,SMESHDS_Mesh*>::iterator myMeshesIt;
-       std::map<int,SMESHDS_Hypothesis*>::iterator myHypothesisIt;
-};
-
-#endif
diff --git a/src/SMESHDS/SMESHDS_Group.cxx b/src/SMESHDS/SMESHDS_Group.cxx
deleted file mode 100644 (file)
index 9c7dfa4..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-//  SMESH SMESHDS : idl implementation based on 'SMESH' unit's classes
-//
-//  Copyright (C) 2004  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_Group.cxx
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHDS_Group.hxx"
-#include "SMESHDS_Mesh.hxx"
-
-using namespace std;
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESHDS_Group::SMESHDS_Group (const int                 theID,
-                              const SMESHDS_Mesh*       theMesh,
-                              const SMDSAbs_ElementType theType)
-     : SMESHDS_GroupBase(theID,theMesh,theType),
-       myGroup(theMesh,theType)
-{
-}
-
-//=======================================================================
-//function : Extent
-//purpose  : 
-//=======================================================================
-
-int SMESHDS_Group::Extent()
-{
-  return myGroup.Extent();
-}
-
-//=======================================================================
-//function : IsEmpty
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_Group::IsEmpty()
-{
-  return myGroup.IsEmpty();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool SMESHDS_Group::Contains (const int theID)
-{
-  const SMDS_MeshElement* aElem = findInMesh (theID);
-  if (aElem)
-    return myGroup.Contains(aElem);
-  return false;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool SMESHDS_Group::Add (const int theID)
-{
-  const SMDS_MeshElement* aElem = findInMesh (theID);
-  if (!aElem || myGroup.Contains(aElem))
-    return false;
-
-  if (myGroup.IsEmpty())
-    SetType( aElem->GetType() );
-
-  myGroup.Add (aElem);
-  resetIterator();
-  return true;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool SMESHDS_Group::Remove (const int theID)
-{
-  const SMDS_MeshElement* aElem = findInMesh (theID);
-  if (!aElem || !myGroup.Contains(aElem))
-    return false;
-  myGroup.Remove (aElem);
-  resetIterator();
-  return true;
-}
-
-//=======================================================================
-//function : Clear
-//purpose  : 
-//=======================================================================
-
-void SMESHDS_Group::Clear()
-{
-  myGroup.Clear();
-  resetIterator();
-}
-
-// =====================
-// class MyGroupIterator
-// =====================
-
-class MyGroupIterator: public SMDS_ElemIterator
-{
-  const SMDS_MeshGroup& myGroup;
- public:
-  MyGroupIterator(const SMDS_MeshGroup& group): myGroup(group) { myGroup.InitIterator(); }
-  bool more() { return myGroup.More(); }
-  const SMDS_MeshElement* next() { return myGroup.Next(); }
-};
-   
-//=======================================================================
-//function : GetElements
-//purpose  : 
-//=======================================================================
-
-SMDS_ElemIteratorPtr SMESHDS_Group::GetElements()
-{
-  return SMDS_ElemIteratorPtr( new MyGroupIterator ( myGroup ));
-}
-
-//=======================================================================
-//function : SetType
-//purpose  : 
-//=======================================================================
-
-void SMESHDS_Group::SetType(SMDSAbs_ElementType theType)
-{
-  if ( myGroup.IsEmpty() || GetType() == SMDSAbs_All ) {
-    SMESHDS_GroupBase::SetType( theType );
-    myGroup.SetType ( theType );
-  }
-  else
-    SMESHDS_GroupBase::SetType( myGroup.GetType() );
-}
-
diff --git a/src/SMESHDS/SMESHDS_Group.hxx b/src/SMESHDS/SMESHDS_Group.hxx
deleted file mode 100644 (file)
index b318a0f..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2004  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHDS_Group.hxx
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESHDS_Group_HeaderFile
-#define _SMESHDS_Group_HeaderFile
-
-#include <string>
-#include "SMESHDS_GroupBase.hxx"
-#include "SMDS_MeshGroup.hxx"
-
-class SMESHDS_Mesh;
-
-class SMESHDS_Group : public SMESHDS_GroupBase
-{
- public:
-
-  SMESHDS_Group (const int                 theID,
-                 const SMESHDS_Mesh*       theMesh,
-                 const SMDSAbs_ElementType theType);
-
-  virtual void SetType(SMDSAbs_ElementType theType);
-
-  virtual int Extent();
-
-  virtual bool IsEmpty();
-
-  virtual bool Contains (const int theID);
-
-  virtual SMDS_ElemIteratorPtr GetElements();
-
-  bool SMESHDS_Group::Add (const int theID);
-
-  bool SMESHDS_Group::Remove (const int theID);
-
-  void Clear();
-
-  SMDS_MeshGroup& SMDSGroup() { return myGroup; }
-
- private:
-
-  SMDS_MeshGroup myGroup;
-
-};
-
-#endif
diff --git a/src/SMESHDS/SMESHDS_GroupBase.cxx b/src/SMESHDS/SMESHDS_GroupBase.cxx
deleted file mode 100644 (file)
index c4adcc5..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-//  SMESH SMESHDS : idl implementation based on 'SMESH' unit's classes
-//
-//  Copyright (C) 2004  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_Group.cxx
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHDS_GroupBase.hxx"
-#include "SMESHDS_Mesh.hxx"
-
-#include "utilities.h"
-
-using namespace std;
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESHDS_GroupBase::SMESHDS_GroupBase (const int                 theID,
-                                      const SMESHDS_Mesh*       theMesh,
-                                      const SMDSAbs_ElementType theType):
-       myID(theID), myMesh(theMesh), myType(theType), myStoreName(""),
-       myCurIndex(0), myCurID(-1)
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-int SMESHDS_GroupBase::GetID (const int theIndex)
-{
-  if (myCurIndex < 1 || myCurIndex > theIndex) {
-    myIterator = GetElements();
-    myCurIndex = 0;
-    myCurID = -1;
-  }
-  while (myCurIndex < theIndex && myIterator->more()) {
-    myCurIndex++;
-    myCurID = myIterator->next()->GetID();
-  }
-  return myCurIndex == theIndex ? myCurID : -1;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-const SMDS_MeshElement* SMESHDS_GroupBase::findInMesh (const int theID) const
-{
-  SMDSAbs_ElementType aType = GetType();
-  const SMDS_MeshElement* aElem = NULL;
-  if (aType == SMDSAbs_Node) {
-    aElem = GetMesh()->FindNode(theID);
-  }
-  else if (aType != SMDSAbs_All) {
-    aElem = GetMesh()->FindElement(theID);
-    if (aElem && aType != aElem->GetType())
-      aElem = NULL;
-  }
-  return aElem;
-}
-
-//=============================================================================
-/*!
- *  Internal method: resets cached iterator, should be called by ancestors
- *  when they are modified (ex: Add() or Remove() )
- */
-//=============================================================================
-void SMESHDS_GroupBase::resetIterator()
-{
-  myCurIndex = 0;
-  myCurID = -1;
-}
-
-//=======================================================================
-//function : Extent
-//purpose  : 
-//=======================================================================
-
-int SMESHDS_GroupBase::Extent()
-{
-  SMDS_ElemIteratorPtr it = GetElements();
-  int nb = 0;
-  if ( it )
-    for ( ; it->more(); it->next() ) 
-      nb++;
-  return nb;
-}
-
-//=======================================================================
-//function : IsEmpty
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_GroupBase::IsEmpty()
-{
-  SMDS_ElemIteratorPtr it = GetElements();
-  return ( !it || !it->more() );
-}
-
-//=======================================================================
-//function : Contains
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_GroupBase::Contains (const int theID)
-{
-  SMDS_ElemIteratorPtr it = GetElements();
-  bool contains = false;
-  if ( it )
-    while ( !contains && it->more() )
-      contains = ( it->next()->GetID() == theID );
-  return contains;
-}
-
-//=======================================================================
-//function : SetType
-//purpose  : 
-//=======================================================================
-
-void SMESHDS_GroupBase::SetType(SMDSAbs_ElementType theType)
-{
-  myType = theType;
-}
diff --git a/src/SMESHDS/SMESHDS_GroupBase.hxx b/src/SMESHDS/SMESHDS_GroupBase.hxx
deleted file mode 100644 (file)
index a7aa87c..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2004  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHDS_Group.hxx
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESHDS_GroupBase_HeaderFile
-#define _SMESHDS_GroupBase_HeaderFile
-
-#include <string>
-#include "SMDSAbs_ElementType.hxx"
-#include "SMDS_MeshElement.hxx"
-  
-class SMESHDS_Mesh;
-
-class SMESHDS_GroupBase
-{
- public:
-
-  SMESHDS_GroupBase (const int                 theID,
-                     const SMESHDS_Mesh*       theMesh,
-                     const SMDSAbs_ElementType theType);
-
-  int GetID() const { return myID; }
-
-  const SMESHDS_Mesh* GetMesh() const { return myMesh; }
-
-  virtual void SetType(SMDSAbs_ElementType theType);
-
-  SMDSAbs_ElementType GetType() const { return myType; }
-
-  void SetStoreName (const char* theName) { myStoreName = theName; }
-
-  const char* GetStoreName () const { return myStoreName.c_str(); }
-
-  virtual int Extent();
-
-  virtual bool IsEmpty();
-
-  virtual bool Contains (const int theID);
-
-  virtual SMDS_ElemIteratorPtr GetElements() = 0;
-
-  int GetID (const int theIndex);
-  // use it for iterations 1..Extent()
-
-  virtual ~SMESHDS_GroupBase() {}
-
- protected:
-  const SMDS_MeshElement* findInMesh (const int theID) const;
-  void resetIterator();
-
- private:
-  SMESHDS_GroupBase (const SMESHDS_GroupBase& theOther);
-  // prohibited copy constructor
-  SMESHDS_GroupBase& operator = (const SMESHDS_GroupBase& theOther);
-  // prohibited assign operator
-
-  int                  myID;
-  const SMESHDS_Mesh*  myMesh;
-  SMDSAbs_ElementType  myType;
-  std::string          myStoreName;
-  // for GetID()
-  int                  myCurIndex;
-  int                  myCurID;
-  SMDS_ElemIteratorPtr myIterator;
-
-};
-
-#endif
diff --git a/src/SMESHDS/SMESHDS_GroupOnGeom.cxx b/src/SMESHDS/SMESHDS_GroupOnGeom.cxx
deleted file mode 100644 (file)
index 187357a..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-//  SMESH SMESHDS : idl implementation based on 'SMESH' unit's classes
-//
-//  Copyright (C) 2004  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_GroupOnGeom.cxx
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHDS_GroupOnGeom.hxx"
-#include "SMESHDS_Mesh.hxx"
-#include "utilities.h"
-
-using namespace std;
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESHDS_GroupOnGeom::SMESHDS_GroupOnGeom (const int                 theID,
-                                          const SMESHDS_Mesh*       theMesh,
-                                          const SMDSAbs_ElementType theType,
-                                          const TopoDS_Shape&       theShape)
-     : SMESHDS_GroupBase(theID,theMesh,theType), myShape(theShape)
-{
-  SMESHDS_Mesh* aMesh = const_cast<SMESHDS_Mesh*>(theMesh);
-  mySubMesh = aMesh->MeshElements( aMesh->AddCompoundSubmesh( theShape ));
-}
-
-// =====================
-// class MyGroupIterator
-// =====================
-
-class MyIterator: public SMDS_ElemIterator
-{
-  SMDSAbs_ElementType     myType;
-  SMDS_ElemIteratorPtr    myElemIt;
-  SMDS_NodeIteratorPtr    myNodeIt;
-  const SMDS_MeshElement* myElem;
- public:
-  MyIterator(SMDSAbs_ElementType type, const SMESHDS_SubMesh* subMesh)
-    : myType(type), myElem(0)
-  {
-    if ( subMesh ) 
-      if ( myType == SMDSAbs_Node )
-        myNodeIt = subMesh->GetNodes();
-      else {
-        myElemIt = subMesh->GetElements();
-        next();
-      }
-  }
-  bool more()
-  {
-    if ( myType == SMDSAbs_Node && myNodeIt )
-      return myNodeIt->more();
-    return ( myElem != 0 );
-  }
-  const SMDS_MeshElement* next()
-  {
-    if ( myType == SMDSAbs_Node && myNodeIt )
-      return myNodeIt->next();
-    const SMDS_MeshElement* res = myElem;
-    myElem = 0;
-    while ( myElemIt && myElemIt->more() ) {
-      myElem = myElemIt->next();
-      if ( myElem && myElem->GetType() == myType )
-        break;
-      else
-        myElem = 0;
-    }
-    return res;
-  }
-};
-
-//=======================================================================
-//function : GetElements
-//purpose  : 
-//=======================================================================
-
-SMDS_ElemIteratorPtr SMESHDS_GroupOnGeom::GetElements()
-{
-  return SMDS_ElemIteratorPtr( new MyIterator ( GetType(), mySubMesh ));
-}
-
-//=======================================================================
-//function : Contains
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_GroupOnGeom::Contains (const int theID)
-{
-  return mySubMesh->Contains( findInMesh( theID ));
-}
diff --git a/src/SMESHDS/SMESHDS_GroupOnGeom.hxx b/src/SMESHDS/SMESHDS_GroupOnGeom.hxx
deleted file mode 100644 (file)
index 6a514e2..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2004  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHDS_GroupOnGeom.hxx
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESHDS_GroupOnGeom_HeaderFile
-#define _SMESHDS_GroupOnGeom_HeaderFile
-
-#include "SMESHDS_GroupBase.hxx"
-#include <TopoDS_Shape.hxx>
-  
-class SMESHDS_SubMesh;
-
-class SMESHDS_GroupOnGeom: public SMESHDS_GroupBase
-{
- public:
-
-  SMESHDS_GroupOnGeom (const int                 theID,
-                       const SMESHDS_Mesh*       theMesh,
-                       const SMDSAbs_ElementType theType,
-                       const TopoDS_Shape&       theShape);
-
-  TopoDS_Shape GetShape() const { return myShape; }
-
-  virtual bool Contains (const int theID);
-
-  virtual SMDS_ElemIteratorPtr GetElements();
-
- private:
-
-  TopoDS_Shape           myShape;
-  const SMESHDS_SubMesh* mySubMesh;
-};
-
-#endif
diff --git a/src/SMESHDS/SMESHDS_Hypothesis.cxx b/src/SMESHDS/SMESHDS_Hypothesis.cxx
deleted file mode 100644 (file)
index 29501c4..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_Hypothesis.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHDS_Hypothesis.hxx"
-
-using namespace std;
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESHDS_Hypothesis::SMESHDS_Hypothesis(int hypId)
-{
-//   MESSAGE("SMESHDS_Hypothesis::SMESHDS_Hypothesis");
-  _hypId = hypId;
-  _name = "generic";
-//   SCRUTE(_name);
-//   SCRUTE(_hypId);
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-SMESHDS_Hypothesis::~SMESHDS_Hypothesis()
-{
-//   MESSAGE("SMESHDS_Hypothesis::~SMESHDS_Hypothesis");
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-const char* SMESHDS_Hypothesis::GetName() const
-{
-//   MESSAGE("SMESHDS_Hypothesis::GetName");
-//   SCRUTE(_name);
-//   SCRUTE(&_name);
-  return _name.c_str();
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-int SMESHDS_Hypothesis::GetID() const
-{
-//   MESSAGE("SMESHDS_Hypothesis::GetId");
-//   SCRUTE(_hypId);
-  return _hypId;
-}
-
-//=============================================================================
-/*!
- * 
- */
-//=============================================================================
-
-int SMESHDS_Hypothesis::GetType() const
-{
-//   MESSAGE("SMESHDS_Hypothesis::GetType");
-//   SCRUTE(_type);
-  return _type;
-}
-
diff --git a/src/SMESHDS/SMESHDS_Hypothesis.hxx b/src/SMESHDS/SMESHDS_Hypothesis.hxx
deleted file mode 100644 (file)
index 9fb413f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_Hypothesis.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESHDS_HYPOTHESIS_HXX_
-#define _SMESHDS_HYPOTHESIS_HXX_
-
-#include <string>
-#include <iostream>
-
-class SMESHDS_Hypothesis
-{
-public:
-  SMESHDS_Hypothesis(int hypId);
-  virtual ~SMESHDS_Hypothesis();
-
-  const char* GetName() const;
-  int GetID() const;
-  int GetType() const;
-
-  virtual std::ostream & SaveTo(std::ostream & save)=0;
-  virtual std::istream & LoadFrom(std::istream & load)=0;
-
-enum hypothesis_type {PARAM_ALGO, ALGO, ALGO_1D, ALGO_2D, ALGO_3D};
-
-protected:
-  std::string _name;
-  int _hypId;
-  int _type;
-};
-
-#endif
diff --git a/src/SMESHDS/SMESHDS_Mesh.cxx b/src/SMESHDS/SMESHDS_Mesh.cxx
deleted file mode 100644 (file)
index 5f92232..0000000
+++ /dev/null
@@ -1,1065 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Mesh.cxx
-//  Author : Yves FRICAUD, OCC
-//  Module : SMESH
-//  $Header: 
-
-#include "SMESHDS_Mesh.hxx"
-
-#include "SMESHDS_Group.hxx"
-#include "SMDS_VertexPosition.hxx"
-#include "SMDS_EdgePosition.hxx"
-#include "SMDS_FacePosition.hxx"
-#include "SMESHDS_GroupOnGeom.hxx"
-#include <TopExp_Explorer.hxx>
-#include <TopExp.hxx>
-#include <TopoDS_Iterator.hxx>
-
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : Create
-//purpose  : 
-//=======================================================================
-SMESHDS_Mesh::SMESHDS_Mesh(int MeshID):myMeshID(MeshID)
-{
-       myScript = new SMESHDS_Script();
-}
-
-//=======================================================================
-//function : ShapeToMesh
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::ShapeToMesh(const TopoDS_Shape & S)
-{
-  if ( !myShape.IsNull() && S.IsNull() )
-  {
-    // removal of a shape to mesh, delete ...
-    // - hypotheses
-    myShapeToHypothesis.clear();
-    // - shape indices in SMDS_Position of nodes
-    map<int,SMESHDS_SubMesh*>::iterator i_sub = myShapeIndexToSubMesh.begin();
-    for ( ; i_sub != myShapeIndexToSubMesh.end(); i_sub++ ) {
-      if ( !i_sub->second->IsComplexSubmesh() ) {
-        SMDS_NodeIteratorPtr nIt = i_sub->second->GetNodes();
-        while ( nIt->more() )
-          nIt->next()->GetPosition()->SetShapeId( 0 );
-      }
-    }
-    // - sub-meshes
-    myIndexToShape.Clear();
-    myShapeIndexToSubMesh.clear();
-    // - groups on geometry
-    set<SMESHDS_GroupBase*>::iterator gr = myGroups.begin();
-    while ( gr != myGroups.end() ) {
-      if ( dynamic_cast<SMESHDS_GroupOnGeom*>( *gr ))
-        myGroups.erase( gr++ );
-      else
-        gr++;
-    }
-  }
-  else {
-    myShape = S;
-    if ( !S.IsNull() )
-      TopExp::MapShapes(myShape, myIndexToShape);
-  }
-}
-
-//=======================================================================
-//function : AddHypothesis
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_Mesh::AddHypothesis(const TopoDS_Shape & SS,
-       const SMESHDS_Hypothesis * H)
-{
-       list<const SMESHDS_Hypothesis *>& alist=myShapeToHypothesis[SS];
-
-       //Check if the Hypothesis is still present
-       list<const SMESHDS_Hypothesis*>::iterator ith=alist.begin();
-
-       for (; ith!=alist.end(); ith++)
-               if (H == *ith) return false;
-
-       alist.push_back(H);
-       return true;
-}
-
-//=======================================================================
-//function : RemoveHypothesis
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_Mesh::RemoveHypothesis(const TopoDS_Shape & S,
-       const SMESHDS_Hypothesis * H)
-{
-       ShapeToHypothesis::iterator its=myShapeToHypothesis.find(S);
-       if(its!=myShapeToHypothesis.end())
-       {
-               list<const SMESHDS_Hypothesis*>::iterator ith=(*its).second.begin();
-
-               for (; ith!=(*its).second.end(); ith++)
-                       if (H == *ith)
-                       {
-                               (*its).second.erase(ith);
-                               return true;
-                       }
-       }
-       return false;
-}
-
-//=======================================================================
-//function : AddNode
-//purpose  : 
-//=======================================================================
-SMDS_MeshNode* SMESHDS_Mesh::AddNode(double x, double y, double z){
-  SMDS_MeshNode* node = SMDS_Mesh::AddNode(x, y, z);
-  if(node!=NULL) myScript->AddNode(node->GetID(), x, y, z);
-  return node;
-}
-
-SMDS_MeshNode* SMESHDS_Mesh::AddNodeWithID(double x, double y, double z, int ID){
-  SMDS_MeshNode* node = SMDS_Mesh::AddNodeWithID(x,y,z,ID);
-  if(node!=NULL) myScript->AddNode(node->GetID(), x, y, z);
-  return node;
-}
-
-//=======================================================================
-//function : MoveNode
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::MoveNode(const SMDS_MeshNode *n, double x, double y, double z)
-{
-  SMDS_MeshNode * node=const_cast<SMDS_MeshNode*>(n);
-  node->setXYZ(x,y,z);
-  myScript->MoveNode(n->GetID(), x, y, z);
-}
-
-//=======================================================================
-//function : ChangeElementNodes
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_Mesh::ChangeElementNodes(const SMDS_MeshElement * elem,
-                                      const SMDS_MeshNode    * nodes[],
-                                      const int                nbnodes)
-{
-  if ( ! SMDS_Mesh::ChangeElementNodes( elem, nodes, nbnodes ))
-    return false;
-
-  vector<int> IDs( nbnodes );
-  for ( int i = 0; i < nbnodes; i++ )
-    IDs [ i ] = nodes[ i ]->GetID();
-  myScript->ChangeElementNodes( elem->GetID(), &IDs[0], nbnodes);
-
-  return true;
-}
-
-//=======================================================================
-//function : ChangePolygonNodes
-//purpose  : 
-//=======================================================================
-bool SMESHDS_Mesh::ChangePolygonNodes
-                   (const SMDS_MeshElement *     elem,
-                    vector<const SMDS_MeshNode*> nodes)
-{
-  ASSERT(nodes.size() > 3);
-
-  return ChangeElementNodes(elem, &nodes[0], nodes.size());
-}
-
-//=======================================================================
-//function : ChangePolyhedronNodes
-//purpose  : 
-//=======================================================================
-bool SMESHDS_Mesh::ChangePolyhedronNodes
-                   (const SMDS_MeshElement * elem,
-                    std::vector<const SMDS_MeshNode*> nodes,
-                    std::vector<int>                  quantities)
-{
-  ASSERT(nodes.size() > 3);
-
-  if (!SMDS_Mesh::ChangePolyhedronNodes(elem, nodes, quantities))
-    return false;
-
-  int i, len = nodes.size();
-  std::vector<int> nodes_ids (len);
-  for (i = 0; i < len; i++) {
-    nodes_ids[i] = nodes[i]->GetID();
-  }
-  myScript->ChangePolyhedronNodes(elem->GetID(), nodes_ids, quantities);
-
-  return true;
-}
-
-//=======================================================================
-//function : Renumber
-//purpose  : 
-//=======================================================================
-
-void SMESHDS_Mesh::Renumber (const bool isNodes, const int startID, const int deltaID)
-{
-  SMDS_Mesh::Renumber( isNodes, startID, deltaID );
-  myScript->Renumber( isNodes, startID, deltaID );
-}
-
-//=======================================================================
-//function :AddEdgeWithID
-//purpose  : 
-//=======================================================================
-SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(int n1, int n2, int ID)
-{
-  SMDS_MeshEdge* anElem = SMDS_Mesh::AddEdgeWithID(n1,n2,ID);
-  if(anElem) myScript->AddEdge(ID,n1,n2);
-  return anElem;
-}
-
-SMDS_MeshEdge* SMESHDS_Mesh::AddEdgeWithID(const SMDS_MeshNode * n1,
-                                          const SMDS_MeshNode * n2, 
-                                          int ID)
-{
-  return AddEdgeWithID(n1->GetID(),
-                      n2->GetID(),
-                      ID);
-}
-
-SMDS_MeshEdge* SMESHDS_Mesh::AddEdge(const SMDS_MeshNode * n1,
-                                    const SMDS_MeshNode * n2)
-{
-  SMDS_MeshEdge* anElem = SMDS_Mesh::AddEdge(n1,n2);
-  if(anElem) myScript->AddEdge(anElem->GetID(), 
-                              n1->GetID(), 
-                              n2->GetID());
-  return anElem;
-}
-
-//=======================================================================
-//function :AddFace
-//purpose  : 
-//=======================================================================
-SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(int n1, int n2, int n3, int ID)
-{
-  SMDS_MeshFace *anElem = SMDS_Mesh::AddFaceWithID(n1, n2, n3, ID);
-  if(anElem) myScript->AddFace(ID,n1,n2,n3);
-  return anElem;
-}
-
-SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
-                                          const SMDS_MeshNode * n2,
-                                          const SMDS_MeshNode * n3, 
-                                          int ID)
-{
-  return AddFaceWithID(n1->GetID(),
-                      n2->GetID(),
-                      n3->GetID(),
-                      ID);
-}
-
-SMDS_MeshFace* SMESHDS_Mesh::AddFace( const SMDS_MeshNode * n1,
-                                     const SMDS_MeshNode * n2,
-                                     const SMDS_MeshNode * n3)
-{
-  SMDS_MeshFace *anElem = SMDS_Mesh::AddFace(n1, n2, n3);
-  if(anElem) myScript->AddFace(anElem->GetID(), 
-                              n1->GetID(), 
-                              n2->GetID(),
-                              n3->GetID());
-  return anElem;
-}
-
-//=======================================================================
-//function :AddFace
-//purpose  : 
-//=======================================================================
-SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(int n1, int n2, int n3, int n4, int ID)
-{
-  SMDS_MeshFace *anElem = SMDS_Mesh::AddFaceWithID(n1, n2, n3, n4, ID);
-  if(anElem) myScript->AddFace(ID, n1, n2, n3, n4);
-  return anElem;
-}
-
-SMDS_MeshFace* SMESHDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
-                                          const SMDS_MeshNode * n2,
-                                          const SMDS_MeshNode * n3,
-                                          const SMDS_MeshNode * n4, 
-                                          int ID)
-{
-  return AddFaceWithID(n1->GetID(),
-                      n2->GetID(),
-                      n3->GetID(),
-                      n4->GetID(),
-                      ID);
-}
-
-SMDS_MeshFace* SMESHDS_Mesh::AddFace(const SMDS_MeshNode * n1,
-                                    const SMDS_MeshNode * n2,
-                                    const SMDS_MeshNode * n3,
-                                    const SMDS_MeshNode * n4)
-{
-  SMDS_MeshFace *anElem = SMDS_Mesh::AddFace(n1, n2, n3, n4);
-  if(anElem) myScript->AddFace(anElem->GetID(), 
-                              n1->GetID(), 
-                              n2->GetID(), 
-                              n3->GetID(),
-                              n4->GetID());
-  return anElem;
-}
-
-//=======================================================================
-//function :AddVolume
-//purpose  : 
-//=======================================================================
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(int n1, int n2, int n3, int n4, int ID)
-{
-  SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolumeWithID(n1, n2, n3, n4, ID);
-  if(anElem) myScript->AddVolume(ID, n1, n2, n3, n4);
-  return anElem;
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
-                                              const SMDS_MeshNode * n2,
-                                              const SMDS_MeshNode * n3,
-                                              const SMDS_MeshNode * n4, 
-                                              int ID)
-{
-  return AddVolumeWithID(n1->GetID(), 
-                        n2->GetID(), 
-                        n3->GetID(),
-                        n4->GetID(),
-                        ID);
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                        const SMDS_MeshNode * n2,
-                                        const SMDS_MeshNode * n3,
-                                        const SMDS_MeshNode * n4)
-{
-  SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1, n2, n3, n4);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
-                                n1->GetID(), 
-                                n2->GetID(), 
-                                n3->GetID(),
-                                n4->GetID());
-  return anElem;
-}
-
-//=======================================================================
-//function :AddVolume
-//purpose  : 
-//=======================================================================
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(int n1, int n2, int n3, int n4, int n5, int ID)
-{
-  SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolumeWithID(n1, n2, n3, n4, n5, ID);
-  if(anElem) myScript->AddVolume(ID, n1, n2, n3, n4, n5);
-  return anElem;
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
-                                              const SMDS_MeshNode * n2,
-                                              const SMDS_MeshNode * n3,
-                                              const SMDS_MeshNode * n4,
-                                              const SMDS_MeshNode * n5, 
-                                              int ID)
-{
-  return AddVolumeWithID(n1->GetID(), 
-                        n2->GetID(), 
-                        n3->GetID(),
-                        n4->GetID(), 
-                        n5->GetID(),
-                        ID);
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                        const SMDS_MeshNode * n2,
-                                        const SMDS_MeshNode * n3,
-                                        const SMDS_MeshNode * n4,
-                                        const SMDS_MeshNode * n5)
-{
-  SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1, n2, n3, n4, n5);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
-                                n1->GetID(), 
-                                n2->GetID(), 
-                                n3->GetID(),
-                                n4->GetID(), 
-                                n5->GetID());
-  return anElem;
-}
-
-//=======================================================================
-//function :AddVolume
-//purpose  : 
-//=======================================================================
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(int n1, int n2, int n3, int n4, int n5, int n6, int ID)
-{
-  SMDS_MeshVolume *anElem= SMDS_Mesh::AddVolumeWithID(n1, n2, n3, n4, n5, n6, ID);
-  if(anElem) myScript->AddVolume(ID, n1, n2, n3, n4, n5, n6);
-  return anElem;
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
-                                              const SMDS_MeshNode * n2,
-                                              const SMDS_MeshNode * n3,
-                                              const SMDS_MeshNode * n4,
-                                              const SMDS_MeshNode * n5,
-                                              const SMDS_MeshNode * n6, 
-                                              int ID)
-{
-  return AddVolumeWithID(n1->GetID(), 
-                        n2->GetID(), 
-                        n3->GetID(),
-                        n4->GetID(), 
-                        n5->GetID(), 
-                        n6->GetID(),
-                        ID);
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                        const SMDS_MeshNode * n2,
-                                        const SMDS_MeshNode * n3,
-                                        const SMDS_MeshNode * n4,
-                                        const SMDS_MeshNode * n5,
-                                        const SMDS_MeshNode * n6)
-{
-  SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1, n2, n3, n4, n5, n6);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
-                                n1->GetID(), 
-                                n2->GetID(), 
-                                n3->GetID(),
-                                n4->GetID(), 
-                                n5->GetID(), 
-                                n6->GetID());
-  return anElem;
-}
-
-//=======================================================================
-//function :AddVolume
-//purpose  : 
-//=======================================================================
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int ID)
-{
-  SMDS_MeshVolume *anElem= SMDS_Mesh::AddVolumeWithID(n1, n2, n3, n4, n5, n6, n7, n8, ID);
-  if(anElem) myScript->AddVolume(ID, n1, n2, n3, n4, n5, n6, n7, n8);
-  return anElem;
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
-                                              const SMDS_MeshNode * n2,
-                                              const SMDS_MeshNode * n3,
-                                              const SMDS_MeshNode * n4,
-                                              const SMDS_MeshNode * n5,
-                                              const SMDS_MeshNode * n6,
-                                              const SMDS_MeshNode * n7,
-                                              const SMDS_MeshNode * n8, 
-                                              int ID)
-{
-  return AddVolumeWithID(n1->GetID(), 
-                        n2->GetID(), 
-                        n3->GetID(),
-                        n4->GetID(), 
-                        n5->GetID(), 
-                        n6->GetID(), 
-                        n7->GetID(), 
-                        n8->GetID(),
-                        ID);
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddVolume(const SMDS_MeshNode * n1,
-                                        const SMDS_MeshNode * n2,
-                                        const SMDS_MeshNode * n3,
-                                        const SMDS_MeshNode * n4,
-                                        const SMDS_MeshNode * n5,
-                                        const SMDS_MeshNode * n6,
-                                        const SMDS_MeshNode * n7,
-                                        const SMDS_MeshNode * n8)
-{
-  SMDS_MeshVolume *anElem = SMDS_Mesh::AddVolume(n1, n2, n3, n4, n5, n6, n7, n8);
-  if(anElem) myScript->AddVolume(anElem->GetID(), 
-                                n1->GetID(), 
-                                n2->GetID(), 
-                                n3->GetID(),
-                                n4->GetID(), 
-                                n5->GetID(), 
-                                n6->GetID(), 
-                                n7->GetID(), 
-                                n8->GetID());
-  return anElem;
-}
-
-//=======================================================================
-//function : AddPolygonalFace
-//purpose  : 
-//=======================================================================
-SMDS_MeshFace* SMESHDS_Mesh::AddPolygonalFaceWithID (std::vector<int> nodes_ids,
-                                                     const int        ID)
-{
-  SMDS_MeshFace *anElem = SMDS_Mesh::AddPolygonalFaceWithID(nodes_ids, ID);
-  if (anElem) {
-    myScript->AddPolygonalFace(ID, nodes_ids);
-  }
-  return anElem;
-}
-
-SMDS_MeshFace* SMESHDS_Mesh::AddPolygonalFaceWithID
-                             (std::vector<const SMDS_MeshNode*> nodes,
-                              const int                         ID)
-{
-  SMDS_MeshFace *anElem = SMDS_Mesh::AddPolygonalFaceWithID(nodes, ID);
-  if (anElem) {
-    int i, len = nodes.size();
-    std::vector<int> nodes_ids (len);
-    for (i = 0; i < len; i++) {
-      nodes_ids[i] = nodes[i]->GetID();
-    }
-    myScript->AddPolygonalFace(ID, nodes_ids);
-  }
-  return anElem;
-}
-
-SMDS_MeshFace* SMESHDS_Mesh::AddPolygonalFace
-                             (std::vector<const SMDS_MeshNode*> nodes)
-{
-  SMDS_MeshFace *anElem = SMDS_Mesh::AddPolygonalFace(nodes);
-  if (anElem) {
-    int i, len = nodes.size();
-    std::vector<int> nodes_ids (len);
-    for (i = 0; i < len; i++) {
-      nodes_ids[i] = nodes[i]->GetID();
-    }
-    myScript->AddPolygonalFace(anElem->GetID(), nodes_ids);
-  }
-  return anElem;
-}
-
-//=======================================================================
-//function : AddPolyhedralVolume
-//purpose  : 
-//=======================================================================
-SMDS_MeshVolume* SMESHDS_Mesh::AddPolyhedralVolumeWithID (std::vector<int> nodes_ids,
-                                                          std::vector<int> quantities,
-                                                          const int        ID)
-{
-  SMDS_MeshVolume *anElem = SMDS_Mesh::AddPolyhedralVolumeWithID(nodes_ids, quantities, ID);
-  if (anElem) {
-    myScript->AddPolyhedralVolume(ID, nodes_ids, quantities);
-  }
-  return anElem;
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddPolyhedralVolumeWithID
-                               (std::vector<const SMDS_MeshNode*> nodes,
-                                std::vector<int>                  quantities,
-                                const int                         ID)
-{
-  SMDS_MeshVolume *anElem = SMDS_Mesh::AddPolyhedralVolumeWithID(nodes, quantities, ID);
-  if (anElem) {
-    int i, len = nodes.size();
-    std::vector<int> nodes_ids (len);
-    for (i = 0; i < len; i++) {
-      nodes_ids[i] = nodes[i]->GetID();
-    }
-    myScript->AddPolyhedralVolume(ID, nodes_ids, quantities);
-  }
-  return anElem;
-}
-
-SMDS_MeshVolume* SMESHDS_Mesh::AddPolyhedralVolume
-                               (std::vector<const SMDS_MeshNode*> nodes,
-                                std::vector<int>                  quantities)
-{
-  SMDS_MeshVolume *anElem = SMDS_Mesh::AddPolyhedralVolume(nodes, quantities);
-  if (anElem) {
-    int i, len = nodes.size();
-    std::vector<int> nodes_ids (len);
-    for (i = 0; i < len; i++) {
-      nodes_ids[i] = nodes[i]->GetID();
-    }
-    myScript->AddPolyhedralVolume(anElem->GetID(), nodes_ids, quantities);
-  }
-  return anElem;
-}
-
-//=======================================================================
-//function : removeFromContainers
-//purpose  : 
-//=======================================================================
-
-static void removeFromContainers (map<int,SMESHDS_SubMesh*> &      theSubMeshes,
-                                  set<SMESHDS_GroupBase*>&             theGroups,
-                                  list<const SMDS_MeshElement *> & theElems,
-                                  const bool                       isNode)
-{
-  if ( theElems.empty() )
-    return;
-
-  // Rm from group
-  // Element can belong to several groups
-  if ( !theGroups.empty() )
-  {
-    set<SMESHDS_GroupBase*>::iterator GrIt = theGroups.begin();
-    for ( ; GrIt != theGroups.end(); GrIt++ )
-    {
-      SMESHDS_Group* group = dynamic_cast<SMESHDS_Group*>( *GrIt );
-      if ( !group || group->IsEmpty() ) continue;
-
-      list<const SMDS_MeshElement *>::iterator elIt = theElems.begin();
-      for ( ; elIt != theElems.end(); elIt++ )
-      {
-        group->SMDSGroup().Remove( *elIt );
-        if ( group->IsEmpty() ) break;
-      }
-    }
-  }
-
-  // Rm from sub-meshes
-  // Element should belong to only one sub-mesh
-  map<int,SMESHDS_SubMesh*>::iterator SubIt = theSubMeshes.begin();
-  for ( ; SubIt != theSubMeshes.end(); SubIt++ )
-  {
-    int size = isNode ? (*SubIt).second->NbNodes() : (*SubIt).second->NbElements();
-    if ( size == 0 ) continue;
-
-    list<const SMDS_MeshElement *>::iterator elIt = theElems.begin();
-    while ( elIt != theElems.end() )
-    {
-      bool removed = false;
-      if ( isNode )
-        removed = (*SubIt).second->RemoveNode( static_cast<const SMDS_MeshNode*> (*elIt) );
-      else
-        removed = (*SubIt).second->RemoveElement( *elIt );
-
-      if (removed)
-      {
-        elIt = theElems.erase( elIt );
-        if ( theElems.empty() )
-          return; // all elements are found and removed
-      }
-      else
-      {
-        elIt++ ;
-      }
-    }
-  }
-}
-  
-//=======================================================================
-//function : RemoveNode
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::RemoveNode(const SMDS_MeshNode * n)
-{
-  myScript->RemoveNode(n->GetID());
-  
-  list<const SMDS_MeshElement *> removedElems;
-  list<const SMDS_MeshElement *> removedNodes;
-
-  SMDS_Mesh::RemoveElement( n, removedElems, removedNodes, true );
-
-  removeFromContainers( myShapeIndexToSubMesh, myGroups, removedElems, false );
-  removeFromContainers( myShapeIndexToSubMesh, myGroups, removedNodes, true );
-}
-
-//=======================================================================
-//function : RemoveElement
-//purpose  : 
-//========================================================================
-void SMESHDS_Mesh::RemoveElement(const SMDS_MeshElement * elt)
-{
-  if (elt->GetType() == SMDSAbs_Node)
-  {
-    RemoveNode( static_cast<const SMDS_MeshNode*>( elt ));
-    return;
-  }
-
-  myScript->RemoveElement(elt->GetID());
-
-  list<const SMDS_MeshElement *> removedElems;
-  list<const SMDS_MeshElement *> removedNodes;
-
-  SMDS_Mesh::RemoveElement(elt, removedElems, removedNodes, false);
-  
-  removeFromContainers( myShapeIndexToSubMesh, myGroups, removedElems, false );
-}
-
-//=======================================================================
-//function : SetNodeOnVolume
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetNodeInVolume(SMDS_MeshNode *      aNode,
-                                   const TopoDS_Shell & S)
-{
-  SetNodeInVolume( aNode, myIndexToShape.FindIndex(S) );
-}
-//=======================================================================
-//function : SetNodeOnVolume
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetNodeInVolume(SMDS_MeshNode *      aNode,
-                                   const TopoDS_Solid & S)
-{
-  SetNodeInVolume( aNode, myIndexToShape.FindIndex(S) );
-}
-
-//=======================================================================
-//function : SetNodeOnFace
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetNodeOnFace(SMDS_MeshNode *     aNode,
-                                 const TopoDS_Face & S,
-                                 double              u,
-                                 double              v)
-{
-  SetNodeOnFace( aNode, myIndexToShape.FindIndex(S), u, v );
-}
-
-//=======================================================================
-//function : SetNodeOnEdge
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetNodeOnEdge(SMDS_MeshNode *     aNode,
-                                 const TopoDS_Edge & S,
-                                 double              u)
-{
-  SetNodeOnEdge( aNode, myIndexToShape.FindIndex(S), u );
-}
-
-//=======================================================================
-//function : SetNodeOnVertex
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetNodeOnVertex(SMDS_MeshNode *       aNode,
-                                   const TopoDS_Vertex & S)
-{
-  SetNodeOnVertex( aNode, myIndexToShape.FindIndex(S));
-}
-
-//=======================================================================
-//function : UnSetNodeOnShape
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::UnSetNodeOnShape(const SMDS_MeshNode* aNode)
-{
-       MESSAGE("not implemented");
-}
-
-//=======================================================================
-//function : SetMeshElementOnShape
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetMeshElementOnShape(const SMDS_MeshElement * anElement,
-       const TopoDS_Shape & S)
-{
-       if (myShape.IsNull()) MESSAGE("myShape is NULL");
-
-       int Index = myIndexToShape.FindIndex(S);
-
-       if (myShapeIndexToSubMesh.find(Index)==myShapeIndexToSubMesh.end())
-               myShapeIndexToSubMesh[Index]=new SMESHDS_SubMesh();
-
-       myShapeIndexToSubMesh[Index]->AddElement(anElement);
-}
-
-//=======================================================================
-//function : UnSetMeshElementOnShape
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::
-UnSetMeshElementOnShape(const SMDS_MeshElement * anElement,
-       const TopoDS_Shape & S)
-{
-       if (myShape.IsNull()) MESSAGE("myShape is NULL");
-
-       int Index = myIndexToShape.FindIndex(S);
-
-       if (myShapeIndexToSubMesh.find(Index)!=myShapeIndexToSubMesh.end())
-               myShapeIndexToSubMesh[Index]->RemoveElement(anElement);
-}
-
-//=======================================================================
-//function : ShapeToMesh
-//purpose  : 
-//=======================================================================
-TopoDS_Shape SMESHDS_Mesh::ShapeToMesh() const
-{
-       return myShape;
-}
-
-//=======================================================================
-//function : IsGroupOfSubShapes
-//purpose  : return true if at least one subshape of theShape is a subshape
-//           of myShape or theShape == myShape
-//=======================================================================
-
-bool SMESHDS_Mesh::IsGroupOfSubShapes (const TopoDS_Shape& theShape) const
-{
-  if ( myShape.IsSame( theShape ))
-    return true;
-
-  for ( TopoDS_Iterator it( theShape ); it.More(); it.Next() ) {
-    if (myIndexToShape.Contains( it.Value() ) ||
-        IsGroupOfSubShapes( it.Value() ))
-      return true;
-  }
-  
-  return false;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the sub mesh linked to the a given TopoDS_Shape or NULL if the given
-/// TopoDS_Shape is unknown
-///////////////////////////////////////////////////////////////////////////////
-SMESHDS_SubMesh * SMESHDS_Mesh::MeshElements(const TopoDS_Shape & S) const
-{
-  if (myShape.IsNull()) MESSAGE("myShape is NULL");
-
-  int Index = ShapeToIndex(S);
-  TShapeIndexToSubMesh::const_iterator anIter = myShapeIndexToSubMesh.find(Index);
-  if (anIter != myShapeIndexToSubMesh.end())
-    return anIter->second;
-  else
-    return NULL;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-/// Return the sub mesh by Id of shape it is linked to
-///////////////////////////////////////////////////////////////////////////////
-SMESHDS_SubMesh * SMESHDS_Mesh::MeshElements(const int Index)
-{
-  if (myShape.IsNull()) MESSAGE("myShape is NULL");
-
-  if (myShapeIndexToSubMesh.find(Index)!=myShapeIndexToSubMesh.end())
-    return myShapeIndexToSubMesh[Index];
-  else
-    return NULL;
-}
-
-//=======================================================================
-//function : SubMeshIndices
-//purpose  : 
-//=======================================================================
-list<int> SMESHDS_Mesh::SubMeshIndices()
-{
-  list<int> anIndices;
-  std::map<int,SMESHDS_SubMesh*>::iterator anIter = myShapeIndexToSubMesh.begin();
-  for (; anIter != myShapeIndexToSubMesh.end(); anIter++) {
-    anIndices.push_back((*anIter).first);
-  }
-  return anIndices;
-}
-
-//=======================================================================
-//function : GetHypothesis
-//purpose  : 
-//=======================================================================
-
-const list<const SMESHDS_Hypothesis*>& SMESHDS_Mesh::GetHypothesis(
-       const TopoDS_Shape & S) const
-{
-       if (myShapeToHypothesis.find(S)!=myShapeToHypothesis.end())
-               return myShapeToHypothesis.find(S)->second;
-
-       static list<const SMESHDS_Hypothesis*> empty;
-       return empty;
-}
-
-//=======================================================================
-//function : GetScript
-//purpose  : 
-//=======================================================================
-SMESHDS_Script* SMESHDS_Mesh::GetScript()
-{
-       return myScript;
-}
-
-//=======================================================================
-//function : ClearScript
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::ClearScript()
-{
-       myScript->Clear();
-}
-
-//=======================================================================
-//function : HasMeshElements
-//purpose  : 
-//=======================================================================
-bool SMESHDS_Mesh::HasMeshElements(const TopoDS_Shape & S)
-{
-       if (myShape.IsNull()) MESSAGE("myShape is NULL");
-       int Index = myIndexToShape.FindIndex(S);
-       return myShapeIndexToSubMesh.find(Index)!=myShapeIndexToSubMesh.end();
-}
-
-//=======================================================================
-//function : HasHypothesis
-//purpose  : 
-//=======================================================================
-bool SMESHDS_Mesh::HasHypothesis(const TopoDS_Shape & S)
-{
-       return myShapeToHypothesis.find(S)!=myShapeToHypothesis.end();
-}
-
-//=======================================================================
-//function : NewSubMesh 
-//purpose  : 
-//=======================================================================
-SMESHDS_SubMesh * SMESHDS_Mesh::NewSubMesh(int Index)
-{
-  SMESHDS_SubMesh* SM = 0;
-  TShapeIndexToSubMesh::iterator anIter = myShapeIndexToSubMesh.find(Index);
-  if (anIter == myShapeIndexToSubMesh.end())
-  {
-    SM = new SMESHDS_SubMesh();
-    myShapeIndexToSubMesh[Index]=SM;
-  }
-  else
-    SM = anIter->second;
-  return SM;
-}
-
-//=======================================================================
-//function : AddCompoundSubmesh
-//purpose  : 
-//=======================================================================
-
-int SMESHDS_Mesh::AddCompoundSubmesh(const TopoDS_Shape& S,
-                                     TopAbs_ShapeEnum    type)
-{
-  int aMainIndex = 0;
-  if ( IsGroupOfSubShapes( S ) || (S.ShapeType() == TopAbs_VERTEX && myIndexToShape.Contains(S)) )
-  {
-    aMainIndex = myIndexToShape.Add( S );
-    bool all = ( type == TopAbs_SHAPE );
-    if ( all ) // corresponding simple submesh may exist
-      aMainIndex = -aMainIndex;
-    //MESSAGE("AddCompoundSubmesh index = " << aMainIndex );
-    SMESHDS_SubMesh * aNewSub = NewSubMesh( aMainIndex );
-    if ( !aNewSub->IsComplexSubmesh() ) // is empty
-    {
-      int shapeType = all ? myShape.ShapeType() : type;
-      int typeLimit = all ? TopAbs_VERTEX : type;
-      for ( ; shapeType <= typeLimit; shapeType++ )
-      {
-        TopExp_Explorer exp( S, TopAbs_ShapeEnum( shapeType ));
-        for ( ; exp.More(); exp.Next() )
-        {
-          int index = myIndexToShape.FindIndex( exp.Current() );
-          if ( index )
-            aNewSub->AddSubMesh( NewSubMesh( index ));
-        }
-      }
-    }
-  }
-  return aMainIndex;
-}
-
-//=======================================================================
-//function : IndexToShape
-//purpose  : 
-//=======================================================================
-TopoDS_Shape SMESHDS_Mesh::IndexToShape(int ShapeIndex)
-{
-       return myIndexToShape.FindKey(ShapeIndex);
-}
-
-//=======================================================================
-//function : ShapeToIndex
-//purpose  : 
-//=======================================================================
-int SMESHDS_Mesh::ShapeToIndex(const TopoDS_Shape & S) const
-{
-  if (myShape.IsNull())
-    MESSAGE("myShape is NULL");
-
-  int index = myIndexToShape.FindIndex(S);
-  
-  return index;
-}
-
-//=======================================================================
-//function : SetNodeOnVolume
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetNodeInVolume(const SMDS_MeshNode* aNode, int Index)
-{
-  addNodeToSubmesh( aNode, Index );
-}
-
-//=======================================================================
-//function : SetNodeOnFace
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetNodeOnFace(SMDS_MeshNode* aNode, int Index, double u, double v)
-{
-  //Set Position on Node
-  aNode->SetPosition(SMDS_PositionPtr(new SMDS_FacePosition(Index, u, v)));
-
-  addNodeToSubmesh( aNode, Index );
-}
-
-//=======================================================================
-//function : SetNodeOnEdge
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetNodeOnEdge(SMDS_MeshNode* aNode,
-                                 int            Index,
-                                 double         u)
-{
-  //Set Position on Node
-  aNode->SetPosition(SMDS_PositionPtr(new SMDS_EdgePosition(Index, u)));
-
-  addNodeToSubmesh( aNode, Index );
-}
-
-//=======================================================================
-//function : SetNodeOnVertex
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetNodeOnVertex(SMDS_MeshNode* aNode, int Index)
-{
-  //Set Position on Node
-  aNode->SetPosition(SMDS_PositionPtr(new SMDS_VertexPosition(Index)));
-
-  addNodeToSubmesh( aNode, Index );
-}
-
-//=======================================================================
-//function : SetMeshElementOnShape
-//purpose  : 
-//=======================================================================
-void SMESHDS_Mesh::SetMeshElementOnShape(const SMDS_MeshElement* anElement,
-       int Index)
-{
-       if (myShapeIndexToSubMesh.find(Index)==myShapeIndexToSubMesh.end())
-               myShapeIndexToSubMesh[Index]=new SMESHDS_SubMesh();
-
-       myShapeIndexToSubMesh[Index]->AddElement(anElement);
-}
-
-SMESHDS_Mesh::~SMESHDS_Mesh()
-{
-}
diff --git a/src/SMESHDS/SMESHDS_Script.cxx b/src/SMESHDS/SMESHDS_Script.cxx
deleted file mode 100644 (file)
index 369ab46..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Script.cxx
-//  Author : Yves FRICAUD, OCC
-//  Module : SMESH
-//  $Header: 
-
-#include "SMESHDS_Script.hxx"
-
-using namespace std;
-
-//=======================================================================
-//function : getCommand
-//purpose  : 
-//=======================================================================
-SMESHDS_Command* SMESHDS_Script::getCommand(const SMESHDS_CommandType aType)
-{
-  SMESHDS_Command* com;
-  if (myCommands.empty())
-  {
-    com = new SMESHDS_Command(aType);
-    myCommands.insert(myCommands.end(),com);
-  }
-  else
-  {
-    com = myCommands.back();
-    if (com->GetType() != aType)
-    {
-      com = new SMESHDS_Command(aType);
-      myCommands.insert(myCommands.end(),com);
-    }
-  }
-  return com;
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddNode(int NewNodeID, double x, double y, double z)
-{
-  getCommand(SMESHDS_AddNode)->AddNode(NewNodeID, x, y, z);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddEdge(int NewEdgeID, int idnode1, int idnode2)
-{
-  getCommand(SMESHDS_AddEdge)->AddEdge(NewEdgeID, idnode1, idnode2);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddFace(int NewFaceID,
-                             int idnode1, int idnode2, int idnode3)
-{
-  getCommand(SMESHDS_AddTriangle)->AddFace(NewFaceID,
-                                           idnode1, idnode2, idnode3);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddFace(int NewFaceID,
-                             int idnode1, int idnode2,
-                             int idnode3, int idnode4)
-{
-  getCommand(SMESHDS_AddQuadrangle)->AddFace(NewFaceID,
-                                             idnode1, idnode2,
-                                             idnode3, idnode4);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddVolume(int NewID,
-                               int idnode1, int idnode2,
-                               int idnode3, int idnode4)
-{
-  getCommand(SMESHDS_AddTetrahedron)->AddVolume(NewID,
-                                                idnode1, idnode2,
-                                                idnode3, idnode4);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddVolume(int NewID,
-                               int idnode1, int idnode2,
-                               int idnode3, int idnode4, int idnode5)
-{
-  getCommand(SMESHDS_AddPyramid)->AddVolume(NewID,
-                                            idnode1, idnode2,
-                                            idnode3, idnode4, idnode5);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddVolume(int NewID,
-                               int idnode1, int idnode2, int idnode3,
-                               int idnode4, int idnode5, int idnode6)
-{
-  getCommand(SMESHDS_AddPrism)->AddVolume(NewID,
-                                          idnode1, idnode2, idnode3,
-                                          idnode4, idnode5, idnode6);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddVolume(int NewID,
-                               int idnode1, int idnode2, int idnode3, int idnode4,
-                               int idnode5, int idnode6, int idnode7, int idnode8)
-{
-  getCommand(SMESHDS_AddHexahedron)->AddVolume(NewID,
-                                               idnode1, idnode2, idnode3, idnode4,
-                                               idnode5, idnode6, idnode7, idnode8);
-}
-
-//=======================================================================
-//function : AddPolygonalFace
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddPolygonalFace (int NewFaceID, std::vector<int> nodes_ids)
-{
-  getCommand(SMESHDS_AddPolygon)->AddPolygonalFace(NewFaceID, nodes_ids);
-}
-
-//=======================================================================
-//function : AddPolyhedralVolume
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::AddPolyhedralVolume (int NewID,
-                                          std::vector<int> nodes_ids,
-                                          std::vector<int> quantities)
-{
-  getCommand(SMESHDS_AddPolyhedron)->AddPolyhedralVolume
-    (NewID, nodes_ids, quantities);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::MoveNode(int NewNodeID, double x, double y, double z)
-{
-  getCommand(SMESHDS_MoveNode)->MoveNode(NewNodeID, x, y, z);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::RemoveNode(int ID)
-{
-  getCommand(SMESHDS_RemoveNode)->RemoveNode(ID);
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::RemoveElement(int ElementID)
-{
-  getCommand(SMESHDS_RemoveElement)->RemoveElement(ElementID);
-}
-
-//=======================================================================
-//function : ChangeElementNodes
-//purpose  : 
-//=======================================================================
-
-void SMESHDS_Script::ChangeElementNodes(int ElementID, int nodes[], int nbnodes)
-{
-  getCommand(SMESHDS_ChangeElementNodes)->ChangeElementNodes( ElementID, nodes, nbnodes );
-}
-
-//=======================================================================
-//function : ChangePolyhedronNodes
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::ChangePolyhedronNodes (const int        ElementID,
-                                            std::vector<int> nodes_ids,
-                                            std::vector<int> quantities)
-{
-  getCommand(SMESHDS_ChangePolyhedronNodes)->ChangePolyhedronNodes
-    (ElementID, nodes_ids, quantities);
-}
-
-//=======================================================================
-//function : Renumber
-//purpose  : 
-//=======================================================================
-
-void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int deltaID)
-{
-  getCommand(SMESHDS_Renumber)->Renumber( isNodes, startID, deltaID );
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-void SMESHDS_Script::Clear()
-{
-       myCommands.clear();
-}
-
-//=======================================================================
-//function : 
-//purpose  : 
-//=======================================================================
-const list<SMESHDS_Command*>& SMESHDS_Script::GetCommands()
-{
-       return myCommands;
-}
diff --git a/src/SMESHDS/SMESHDS_Script.hxx b/src/SMESHDS/SMESHDS_Script.hxx
deleted file mode 100644 (file)
index 3874fac..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_Script.hxx
-//  Module : SMESH
-
-#ifndef _SMESHDS_Script_HeaderFile
-#define _SMESHDS_Script_HeaderFile
-
-#include "SMESHDS_Command.hxx"
-
-#include <list>
-#include <vector>
-
-
-class SMESHDS_Script
-{
-  public:
-       void AddNode(int NewNodeID, double x, double y, double z);
-       void AddEdge(int NewEdgeID, int idnode1, int idnode2);
-       void AddFace(int NewFaceID, int idnode1, int idnode2, int idnode3);
-       void AddFace(int NewFaceID, int idnode1, int idnode2, int idnode3,
-               int idnode4);
-       void AddVolume(int NewVolID, int idnode1, int idnode2, int idnode3,
-               int idnode4);
-       void AddVolume(int NewVolID, int idnode1, int idnode2, int idnode3,
-               int idnode4, int idnode5);
-       void AddVolume(int NewVolID, int idnode1, int idnode2, int idnode3,
-               int idnode4, int idnode5, int idnode6);
-       void AddVolume(int NewVolID, int idnode1, int idnode2, int idnode3,
-               int idnode4, int idnode5, int idnode6, int idnode7, int idnode8);
-
-        void AddPolygonalFace (const int NewFaceID,
-                               std::vector<int> nodes_ids);
-       void AddPolyhedralVolume (const int NewVolID,
-                                  std::vector<int> nodes_ids,
-                                  std::vector<int> quantities);
-
-        void MoveNode(int NewNodeID, double x, double y, double z);
-       void RemoveNode(int NodeID);
-       void RemoveElement(int ElementID);
-       void ChangeElementNodes(int ElementID, int nodes[], int nbnodes);
-       void ChangePolyhedronNodes(const int        ElementID,
-                                   std::vector<int> nodes_ids,
-                                   std::vector<int> quantities);
-       void Renumber (const bool isNodes, const int startID, const int deltaID);
-       void Clear();
-       const std::list<SMESHDS_Command*> & GetCommands();
-       ~SMESHDS_Script();
-  
-  private:
-       SMESHDS_Command* getCommand(const SMESHDS_CommandType aType);
-
-       std::list<SMESHDS_Command*> myCommands;
-};
-
-#endif
diff --git a/src/SMESHDS/SMESHDS_SubMesh.cxx b/src/SMESHDS/SMESHDS_SubMesh.cxx
deleted file mode 100644 (file)
index 5bdbfc6..0000000
+++ /dev/null
@@ -1,299 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_SubMesh.cxx
-//  Author : Yves FRICAUD, OCC
-//  Module : SMESH
-//  $Header: 
-
-#include "SMESHDS_SubMesh.hxx"
-
-#include "utilities.h"
-
-using namespace std;
-
-//=======================================================================
-//function : AddElement
-//purpose  : 
-//=======================================================================
-void SMESHDS_SubMesh::AddElement(const SMDS_MeshElement * ME)
-{
-  if ( !IsComplexSubmesh() )
-    myElements.insert(ME);
-}
-
-//=======================================================================
-//function : RemoveElement
-//purpose  : 
-//=======================================================================
-bool SMESHDS_SubMesh::RemoveElement(const SMDS_MeshElement * ME)
-{
-  if ( !IsComplexSubmesh() && NbElements() )
-    return myElements.erase(ME);
-  
-  return false;
-}
-
-//=======================================================================
-//function : AddNode
-//purpose  : 
-//=======================================================================
-void SMESHDS_SubMesh::AddNode(const SMDS_MeshNode * N)
-{
-  if ( !IsComplexSubmesh() )
-    myNodes.insert(N);
-}
-
-//=======================================================================
-//function : RemoveNode
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_SubMesh::RemoveNode(const SMDS_MeshNode * N)
-{
-  if ( !IsComplexSubmesh() && NbNodes() )
-    return myNodes.erase(N);
-
-  return false;
-}
-
-//=======================================================================
-//function : NbElements
-//purpose  : 
-//=======================================================================
-int SMESHDS_SubMesh::NbElements() const
-{
-  if ( !IsComplexSubmesh() )
-    return myElements.size();
-
-  int nbElems = 0;
-#ifndef WNT
-  set<const SMESHDS_SubMesh*>::iterator it = mySubMeshes.begin();
-#else
-  set<const SMESHDS_SubMesh*>::const_iterator it = mySubMeshes.begin();
-#endif
-  for ( ; it != mySubMeshes.end(); it++ )
-    nbElems += (*it)->NbElements();
-
-  return nbElems;
-}
-
-//=======================================================================
-//function : NbNodes
-//purpose  : 
-//=======================================================================
-
-int SMESHDS_SubMesh::NbNodes() const
-{
- if ( !IsComplexSubmesh() )
-   return myNodes.size(); 
-
-  int nbElems = 0;
-#ifndef WNT
-  set<const SMESHDS_SubMesh*>::iterator it = mySubMeshes.begin();
-#else
-  set<const SMESHDS_SubMesh*>::const_iterator it = mySubMeshes.begin();
-#endif
-  for ( ; it != mySubMeshes.end(); it++ )
-    nbElems += (*it)->NbNodes();
-
-  return nbElems;
-}
-
-// =====================
-// class MySetIterator
-// =====================
-
-template<typename T> class MySetIterator:public SMDS_Iterator<const T*>
-{
-  typedef const set<const T*> TSet;
-  typename TSet::const_iterator myIt;
-  TSet& mySet;
-
-  public:
-       MySetIterator(const set<const T*>& s):mySet(s), myIt(s.begin())
-       {
-       }
-
-       bool more()
-       {
-               return myIt!=mySet.end();
-       }
-       const T* next()
-       {
-               const T* t=*myIt;
-               myIt++;
-               return t;                       
-       }
-};
-
-// =====================
-// class MyIterator
-// =====================
-
-template<typename VALUE> class MyIterator : public SMDS_Iterator<VALUE>
-{
- public:
-  MyIterator (const set<const SMESHDS_SubMesh*>& theSubMeshes)
-    : mySubMeshes( theSubMeshes ), mySubIt( theSubMeshes.begin() ), myMore(false)
-    {}
-  bool more()
-  {
-    while (( !myElemIt.get() || !myElemIt->more() ) &&
-           mySubIt != mySubMeshes.end())
-    {
-      myElemIt = getElements(*mySubIt);
-      mySubIt++;
-    }
-    myMore = myElemIt.get() && myElemIt->more();
-    return myMore;
-  }
-  VALUE next()
-  {
-    VALUE elem = 0;
-    if ( myMore )
-      elem = myElemIt->next();
-    return elem;
-  }
- protected:
-  virtual boost::shared_ptr< SMDS_Iterator<VALUE> >
-    getElements(const SMESHDS_SubMesh*) const = 0;
-
- private:
-  bool                                        myMore;
-  const set<const SMESHDS_SubMesh*>&          mySubMeshes;
-  set<const SMESHDS_SubMesh*>::const_iterator mySubIt;
-  boost::shared_ptr< SMDS_Iterator<VALUE> >   myElemIt;
-};
-
-// =====================
-// class MyElemIterator
-// =====================
-
-class MyElemIterator: public MyIterator<const SMDS_MeshElement*>
-{
- public:
-  MyElemIterator (const set<const SMESHDS_SubMesh*>& theSubMeshes)
-    :MyIterator<const SMDS_MeshElement*>( theSubMeshes ) {}
-  SMDS_ElemIteratorPtr getElements(const SMESHDS_SubMesh* theSubMesh) const
-  { return theSubMesh->GetElements(); }
-};
-
-// =====================
-// class MyNodeIterator
-// =====================
-
-class MyNodeIterator: public MyIterator<const SMDS_MeshNode*>
-{
- public:
-  MyNodeIterator (const set<const SMESHDS_SubMesh*>& theSubMeshes)
-    :MyIterator<const SMDS_MeshNode*>( theSubMeshes ) {}
-  SMDS_NodeIteratorPtr getElements(const SMESHDS_SubMesh* theSubMesh) const
-  { return theSubMesh->GetNodes(); }
-};
-  
-//=======================================================================
-//function : GetElements
-//purpose  : 
-//=======================================================================
-
-SMDS_ElemIteratorPtr SMESHDS_SubMesh::GetElements() const
-{
-  if ( IsComplexSubmesh() )
-    return SMDS_ElemIteratorPtr( new MyElemIterator( mySubMeshes ));
-
-  return SMDS_ElemIteratorPtr(new MySetIterator<SMDS_MeshElement>(myElements));
-}
-
-//=======================================================================
-//function : GetNodes
-//purpose  : 
-//=======================================================================
-
-SMDS_NodeIteratorPtr SMESHDS_SubMesh::GetNodes() const
-{
-  if ( IsComplexSubmesh() )
-    return SMDS_NodeIteratorPtr( new MyNodeIterator( mySubMeshes ));
-
-  return SMDS_NodeIteratorPtr(new MySetIterator<SMDS_MeshNode>(myNodes));
-}
-
-//=======================================================================
-//function : Contains
-//purpose  : check if elem or node is in
-//=======================================================================
-
-bool SMESHDS_SubMesh::Contains(const SMDS_MeshElement * ME) const
-{
-  // DO NOT TRY TO FIND A REMOVED ELEMENT !!
-  if ( !ME )
-    return false;
-
-  if ( IsComplexSubmesh() )
-  {
-    set<const SMESHDS_SubMesh*>::const_iterator aSubIt = mySubMeshes.begin();
-    for ( ; aSubIt != mySubMeshes.end(); aSubIt++ )
-      if ( (*aSubIt)->Contains( ME ))
-        return true;
-    return false;
-  }
-
-  if ( ME->GetType() == SMDSAbs_Node )
-  {
-    const SMDS_MeshNode* n = static_cast<const SMDS_MeshNode*>( ME );
-    return ( myNodes.find( n ) != myNodes.end() );
-  }
-
-  return ( myElements.find( ME ) != myElements.end() );
-}
-
-//=======================================================================
-//function : AddSubMesh
-//purpose  : 
-//=======================================================================
-
-void SMESHDS_SubMesh::AddSubMesh( const SMESHDS_SubMesh* theSubMesh )
-{
-  ASSERT( theSubMesh );
-  mySubMeshes.insert( theSubMesh );
-}
-
-//=======================================================================
-//function : RemoveSubMesh
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_SubMesh::RemoveSubMesh( const SMESHDS_SubMesh* theSubMesh )
-{
-  return mySubMeshes.erase( theSubMesh );
-}
-
-//=======================================================================
-//function : ContainsSubMesh
-//purpose  : 
-//=======================================================================
-
-bool SMESHDS_SubMesh::ContainsSubMesh( const SMESHDS_SubMesh* theSubMesh ) const
-{
-  return mySubMeshes.find( theSubMesh ) != mySubMeshes.end();
-}
diff --git a/src/SMESHDS/SMESHDS_SubMesh.hxx b/src/SMESHDS/SMESHDS_SubMesh.hxx
deleted file mode 100644 (file)
index ac3cd1c..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//  SMESH SMESHDS : management of mesh data and SMESH document
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHDS_SubMesh.hxx
-//  Module : SMESH
-
-#ifndef _SMESHDS_SubMesh_HeaderFile
-#define _SMESHDS_SubMesh_HeaderFile
-
-#include "SMDS_Mesh.hxx"
-#include <set>
-
-#if defined WNT && defined WIN32 && defined SMESHDS_EXPORTS
-#define SMESHDS_WNT_EXPORT __declspec( dllexport )
-#else
-#define SMESHDS_WNT_EXPORT
-#endif
-
-class SMESHDS_WNT_EXPORT SMESHDS_SubMesh
-{
- public:
-
-  bool IsComplexSubmesh() const { return !mySubMeshes.empty(); }
-
-  // if !IsComplexSubmesh()
-  void AddElement(const SMDS_MeshElement * ME);
-  bool RemoveElement(const SMDS_MeshElement * ME); // ret true if ME was in
-  void AddNode(const SMDS_MeshNode * ME);
-  bool RemoveNode(const SMDS_MeshNode * ME);       // ret true if ME was in
-
-  // if IsComplexSubmesh()
-  void AddSubMesh( const SMESHDS_SubMesh* theSubMesh );
-  bool RemoveSubMesh( const SMESHDS_SubMesh* theSubMesh );
-  bool ContainsSubMesh( const SMESHDS_SubMesh* theSubMesh ) const;
-
-  // for both types
-  int NbElements() const;
-  SMDS_ElemIteratorPtr GetElements() const;
-  int NbNodes() const;
-  SMDS_NodeIteratorPtr GetNodes() const;
-  bool Contains(const SMDS_MeshElement * ME) const;      // check if elem or node is in
-
- private:
-  //const SMDS_Mesh * myMesh;
-  std::set<const SMDS_MeshElement*> myElements;
-  std::set<const SMDS_MeshNode*>    myNodes;
-  std::set<const SMESHDS_SubMesh*>  mySubMeshes;
-};
-#endif
diff --git a/src/SMESHFiltersSelection/Handle_SMESH_TypeFilter.hxx b/src/SMESHFiltersSelection/Handle_SMESH_TypeFilter.hxx
deleted file mode 100644 (file)
index 79db470..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-// File generated by CPPExt (Transient)
-//
-//                     Copyright (C) 1991,1995 by
-//  
-//                      MATRA DATAVISION, FRANCE
-//  
-// This software is furnished in accordance with the terms and conditions
-// of the contract and with the inclusion of the above copyright notice.
-// This software or any other copy thereof may not be provided or otherwise
-// be made available to any other person. No title to an ownership of the
-// software is hereby transferred.
-//  
-// At the termination of the contract, the software and all copies of this
-// software must be deleted.
-
-#ifndef _Handle_SMESH_TypeFilter_HeaderFile
-#define _Handle_SMESH_TypeFilter_HeaderFile
-
-#ifndef _Standard_Macro_HeaderFile
-#include <Standard_Macro.hxx>
-#endif
-#ifndef _Standard_HeaderFile
-#include <Standard.hxx>
-#endif
-
-#ifndef _Handle_SALOME_Filter_HeaderFile
-#include "Handle_SALOME_Filter.hxx"
-#endif
-
-class Standard_Transient;
-class Handle_Standard_Type;
-class Handle(SALOME_Filter);
-class SMESH_TypeFilter;
-Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SMESH_TypeFilter);
-
-class Handle(SMESH_TypeFilter) : public Handle(SALOME_Filter) {
-  public:
-    inline void* operator new(size_t,void* anAddress) 
-      {
-        return anAddress;
-      }
-    inline void* operator new(size_t size) 
-      { 
-        return Standard::Allocate(size); 
-      }
-    inline void  operator delete(void *anAddress) 
-      { 
-        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
-      }
-//    inline void  operator delete(void *anAddress, size_t size) 
-//      { 
-//        if (anAddress) Standard::Free((Standard_Address&)anAddress,size); 
-//      }
-    Handle(SMESH_TypeFilter)():Handle(SALOME_Filter)() {} 
-    Handle(SMESH_TypeFilter)(const Handle(SMESH_TypeFilter)& aHandle) : Handle(SALOME_Filter)(aHandle) 
-     {
-     }
-
-    Handle(SMESH_TypeFilter)(const SMESH_TypeFilter* anItem) : Handle(SALOME_Filter)((SALOME_Filter *)anItem) 
-     {
-     }
-
-    Handle(SMESH_TypeFilter)& operator=(const Handle(SMESH_TypeFilter)& aHandle)
-     {
-      Assign(aHandle.Access());
-      return *this;
-     }
-
-    Handle(SMESH_TypeFilter)& operator=(const SMESH_TypeFilter* anItem)
-     {
-      Assign((Standard_Transient *)anItem);
-      return *this;
-     }
-
-    SMESH_TypeFilter* operator->() 
-     {
-      return (SMESH_TypeFilter *)ControlAccess();
-     }
-
-    SMESH_TypeFilter* operator->() const 
-     {
-      return (SMESH_TypeFilter *)ControlAccess();
-     }
-
-   Standard_EXPORT ~Handle(SMESH_TypeFilter)();
-   Standard_EXPORT static const Handle(SMESH_TypeFilter) DownCast(const Handle(Standard_Transient)& AnObject);
-};
-#endif
diff --git a/src/SMESHFiltersSelection/SMESH_TypeFilter.ixx b/src/SMESHFiltersSelection/SMESH_TypeFilter.ixx
deleted file mode 100644 (file)
index a01d02e..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-// File generated by CPPExt (Transient)
-//                     Copyright (C) 1991,1995 by
-//  
-//                      MATRA DATAVISION, FRANCE
-//  
-// This software is furnished in accordance with the terms and conditions
-// of the contract and with the inclusion of the above copyright notice.
-// This software or any other copy thereof may not be provided or otherwise
-// be made available to any other person. No title to an ownership of the
-// software is hereby transferred.
-//  
-// At the termination of the contract, the software and all copies of this
-// software must be deleted.
-//
-#include "SMESH_TypeFilter.jxx"
-
-#ifndef _Standard_TypeMismatch_HeaderFile
-#include <Standard_TypeMismatch.hxx>
-#endif
-
-SMESH_TypeFilter::~SMESH_TypeFilter() {}
-
-
-Standard_EXPORT Handle_Standard_Type& SMESH_TypeFilter_Type_()
-{
-
-    static Handle_Standard_Type aType1 = STANDARD_TYPE(SALOME_Filter);
-  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(SALOME_Filter);
-  static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared);
-  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared);
-  static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient);
-  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient);
-
-  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
-  static Handle_Standard_Type _aType = new Standard_Type("SMESH_TypeFilter",
-                                                        sizeof(SMESH_TypeFilter),
-                                                        1,
-                                                        (Standard_Address)_Ancestors,
-                                                        (Standard_Address)NULL);
-
-  return _aType;
-}
-
-
-// DownCast method
-//   allow safe downcasting
-//
-const Handle(SMESH_TypeFilter) Handle(SMESH_TypeFilter)::DownCast(const Handle(Standard_Transient)& AnObject) 
-{
-  Handle(SMESH_TypeFilter) _anOtherObject;
-
-  if (!AnObject.IsNull()) {
-     if (AnObject->IsKind(STANDARD_TYPE(SMESH_TypeFilter))) {
-       _anOtherObject = Handle(SMESH_TypeFilter)((Handle(SMESH_TypeFilter)&)AnObject);
-     }
-  }
-
-  return _anOtherObject ;
-}
-const Handle(Standard_Type)& SMESH_TypeFilter::DynamicType() const 
-{ 
-  return STANDARD_TYPE(SMESH_TypeFilter) ; 
-}
-Standard_Boolean SMESH_TypeFilter::IsKind(const Handle(Standard_Type)& AType) const 
-{ 
-  return (STANDARD_TYPE(SMESH_TypeFilter) == AType || SALOME_Filter::IsKind(AType)); 
-}
-Handle_SMESH_TypeFilter::~Handle_SMESH_TypeFilter() {}
-
diff --git a/src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.h b/src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.h
deleted file mode 100644 (file)
index e2bb65a..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_CreateHypothesesDlg.h
-//  Author : Julia DOROVSKIKH
-//  Module : SMESH
-//  $Header$
-
-#ifndef DIALOGBOX_CREATE_HYPOTHESES_H
-#define DIALOGBOX_CREATE_HYPOTHESES_H
-
-// QT Includes
-#include <qvariant.h>
-#include <qdialog.h>
-#include <qstringlist.h>
-
-// IDL Headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(GEOM_Gen)
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-
-#include <map>
-#include <string>
-
-class QButtonGroup;
-class QGroupBox;
-class QPushButton;
-class QListView;
-class QListViewItem;
-class SMESHGUI;
-
-//=================================================================================
-// class    : SMESHGUI_CreateHypothesesDlg
-// purpose  :
-//=================================================================================
-class SMESHGUI_CreateHypothesesDlg : public QDialog
-{
-    Q_OBJECT
-
-public:
-    SMESHGUI_CreateHypothesesDlg (SMESHGUI*,
-                                 const char* name = 0,
-                                 bool modal = FALSE,
-                                 bool isAlgo = FALSE);
-    ~SMESHGUI_CreateHypothesesDlg ();
-
-private:
-
-    void Init() ;
-    void closeEvent( QCloseEvent* e ) ;
-    void enterEvent ( QEvent * ) ;
-
-    void InitAlgoDefinition();
-
-    SMESHGUI*     mySMESHGUI;
-    bool          myIsAlgo;
-
-    QGroupBox*    GroupButtons;
-    QPushButton*  buttonCancel;
-    QPushButton*  buttonApply;
-
-    QGroupBox* GroupAlgorithms;
-    QListView* ListAlgoDefinition;
-
-private slots:
-
-    void ClickOnCancel();
-    void ClickOnApply();
-    void ActivateThisDialog() ;
-
-    void onSelectionChanged();
-    void onDoubleClicked(QListViewItem*);
-};
-
-#endif // DIALOGBOX_CREATE_HYPOTHESES_H
diff --git a/src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx b/src/SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx
deleted file mode 100644 (file)
index c2d0185..0000000
+++ /dev/null
@@ -1,963 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_EditHypothesesDlg.cxx
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHGUI_EditHypothesesDlg.h"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
-#include "SMESHGUI_GEOMGenUtils.h"
-#include "SMESHGUI_HypothesesUtils.h"
-
-#include "SMESH_TypeFilter.hxx"
-#include "SMESH_NumberFilter.hxx"
-
-#include "SALOME_ListIO.hxx"
-#include "SALOME_ListIteratorOfListIO.hxx"
-
-#include "SALOMEDSClient_Study.hxx"
-#include "SALOMEDSClient_AttributeIOR.hxx"
-#include "SALOMEDSClient_AttributeName.hxx"
-
-#include "SUIT_Session.h"
-#include "SUIT_OverrideCursor.h"
-#include "SUIT_Operation.h"
-#include "SUIT_Desktop.h"
-
-#include "utilities.h"
-
-#include "SVTK_ViewModel.h"
-
-// QT Includes
-#include <qgroupbox.h>
-#include <qlabel.h>
-#include <qlineedit.h>
-#include <qpushbutton.h>
-#include <qlayout.h>
-#include <qpixmap.h>
-
-using namespace std;
-
-//VRV: porting on Qt 3.0.5
-#if QT_VERSION >= 0x030005
-#include <qlistbox.h>
-#endif
-//VRV: porting on Qt 3.0.5
-
-class ListBoxIOR : public QListBoxText
-{
-public:
-  enum { RTTI_IOR = 1000 };
-
-public:
-  ListBoxIOR (QListBox* listbox,
-              const char* ior,
-              const QString& text = QString::null)
-  : QListBoxText(listbox, text), myIOR(ior) {}
-  virtual ~ListBoxIOR() {};
-  virtual int rtti() const { return RTTI_IOR; }
-  const char* GetIOR() { return myIOR.c_str(); }
-
-private:
-  string myIOR;
-};
-
-#define ALLOW_CHANGE_SHAPE 0
-
-int findItem (QListBox* listBox, const string& ior)
-{
-  for (int i = 0; i < listBox->count(); i++) {
-    if (listBox->item(i)->rtti() == ListBoxIOR::RTTI_IOR) {
-      ListBoxIOR* anItem = (ListBoxIOR*)(listBox->item(i));
-      if (anItem && ior == string(anItem->GetIOR()))
-       return i;
-    }
-  }
-  return -1;
-}
-
-//=================================================================================
-// function : SMESHGUI_EditHypothesesDlg()
-// purpose  : Constructs a SMESHGUI_EditHypothesesDlg which is a child of 'parent', with the
-//            name 'name' and widget flags set to 'f'.
-//            The dialog will by default be modeless, unless you set 'modal' to
-//            TRUE to construct a modal dialog.
-//=================================================================================
-SMESHGUI_EditHypothesesDlg::SMESHGUI_EditHypothesesDlg (SMESHGUI* theModule, const char* name,
-                                                        bool modal, WFlags fl)
-     : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
-                WStyle_Title | WStyle_SysMenu | WDestructiveClose),
-    myImportedMesh(false),
-    mySMESHGUI( theModule ),
-    mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
-{
-    QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
-    if (!name)
-      setName("SMESHGUI_EditHypothesesDlg");
-    setCaption(tr("SMESH_EDIT_HYPOTHESES"));
-    setSizeGripEnabled(TRUE);
-    QGridLayout* SMESHGUI_EditHypothesesDlgLayout = new QGridLayout(this);
-    SMESHGUI_EditHypothesesDlgLayout->setSpacing(6);
-    SMESHGUI_EditHypothesesDlgLayout->setMargin(11);
-
-    /***************************************************************/
-    GroupC1 = new QGroupBox(tr("SMESH_ARGUMENTS"), this, "GroupC1");
-    GroupC1->setColumnLayout(0, Qt::Vertical);
-    GroupC1->layout()->setSpacing(0);
-    GroupC1->layout()->setMargin(0);
-    QGridLayout* GroupC1Layout = new QGridLayout(GroupC1->layout());
-    GroupC1Layout->setAlignment(Qt::AlignTop);
-    GroupC1Layout->setSpacing(6);
-    GroupC1Layout->setMargin(11);
-
-    TextLabelC1A1 = new QLabel(tr("SMESH_OBJECT_MESHorSUBMESH"), GroupC1, "TextLabelC1A1");
-    GroupC1Layout->addWidget(TextLabelC1A1, 0, 0);
-    SelectButtonC1A1 = new QPushButton(GroupC1, "SelectButtonC1A1");
-    SelectButtonC1A1->setPixmap(image0);
-    GroupC1Layout->addWidget(SelectButtonC1A1, 0, 1);
-    LineEditC1A1 = new QLineEdit(GroupC1, "LineEditC1A1");
-    LineEditC1A1->setReadOnly(true);
-    GroupC1Layout->addWidget(LineEditC1A1, 0, 2);
-
-    TextLabelC1A2 = new QLabel(tr("SMESH_OBJECT_GEOM"), GroupC1, "TextLabelC1A2");
-    GroupC1Layout->addWidget(TextLabelC1A2, 1, 0);
-    SelectButtonC1A2 = new QPushButton(GroupC1, "SelectButtonC1A2");
-    SelectButtonC1A2->setPixmap(image0);
-    SelectButtonC1A2->setToggleButton(FALSE);
-    GroupC1Layout->addWidget(SelectButtonC1A2, 1, 1);
-    LineEditC1A2 = new QLineEdit(GroupC1, "LineEditC1A2");
-    LineEditC1A2->setReadOnly(true);
-    GroupC1Layout->addWidget(LineEditC1A2, 1, 2);
-
-    SMESHGUI_EditHypothesesDlgLayout->addWidget(GroupC1, 0, 0);
-
-    /***************************************************************/
-    GroupHypotheses = new QGroupBox(tr("SMESH_HYPOTHESES"), this, "GroupHypotheses");
-    GroupHypotheses->setColumnLayout(0, Qt::Vertical);
-    GroupHypotheses->layout()->setSpacing(0);
-    GroupHypotheses->layout()->setMargin(0);
-    QGridLayout* grid_3 = new QGridLayout(GroupHypotheses->layout());
-    grid_3->setAlignment(Qt::AlignTop);
-    grid_3->setSpacing(6);
-    grid_3->setMargin(11);
-
-    TextHypDefinition = new QLabel(tr("SMESH_AVAILABLE"), GroupHypotheses, "TextHypDefinition");
-    grid_3->addWidget(TextHypDefinition, 0, 0);
-
-    ListHypDefinition = new QListBox(GroupHypotheses, "ListHypDefinition");
-    ListHypDefinition->setMinimumSize(100, 100);
-    grid_3->addWidget(ListHypDefinition, 1, 0);
-
-    TextHypAssignation = new QLabel(tr("SMESH_EDIT_USED"), GroupHypotheses, "TextHypAssignation");
-    grid_3->addWidget(TextHypAssignation, 0, 1);
-
-    ListHypAssignation = new QListBox(GroupHypotheses, "ListHypAssignation");
-    ListHypAssignation->setMinimumSize(100, 100);
-    grid_3->addWidget(ListHypAssignation, 1, 1);
-
-    SMESHGUI_EditHypothesesDlgLayout->addWidget(GroupHypotheses, 1, 0);
-
-    /***************************************************************/
-    GroupAlgorithms = new QGroupBox(tr("SMESH_ADD_ALGORITHM"), this, "GroupAlgorithms");
-    GroupAlgorithms->setColumnLayout(0, Qt::Vertical);
-    GroupAlgorithms->layout()->setSpacing(0);
-    GroupAlgorithms->layout()->setMargin(0);
-    QGridLayout* grid_4 = new QGridLayout(GroupAlgorithms->layout());
-    grid_4->setAlignment(Qt::AlignTop);
-    grid_4->setSpacing(6);
-    grid_4->setMargin(11);
-
-    TextAlgoDefinition = new QLabel(tr("SMESH_AVAILABLE"), GroupAlgorithms, "TextAlgoDefinition");
-    grid_4->addWidget(TextAlgoDefinition, 0, 0);
-
-    ListAlgoDefinition = new QListBox(GroupAlgorithms, "ListAlgoDefinition");
-    ListAlgoDefinition->setMinimumSize(100, 100);
-    grid_4->addWidget(ListAlgoDefinition, 1, 0);
-
-    TextAlgoAssignation = new QLabel(tr("SMESH_EDIT_USED"), GroupAlgorithms, "TextAlgoAssignation");
-    grid_4->addWidget(TextAlgoAssignation, 0, 1);
-
-    ListAlgoAssignation = new QListBox(GroupAlgorithms, "ListAlgoAssignation");
-    ListAlgoAssignation ->setMinimumSize(100, 100);
-    grid_4->addWidget(ListAlgoAssignation, 1, 1);
-
-    SMESHGUI_EditHypothesesDlgLayout->addWidget(GroupAlgorithms, 2, 0);
-
-    /***************************************************************/
-    GroupButtons = new QGroupBox(this, "GroupButtons");
-    GroupButtons->setColumnLayout(0, Qt::Vertical);
-    GroupButtons->layout()->setSpacing(0);
-    GroupButtons->layout()->setMargin(0);
-    QGridLayout* GroupButtonsLayout = new QGridLayout(GroupButtons->layout());
-    GroupButtonsLayout->setAlignment(Qt::AlignTop);
-    GroupButtonsLayout->setSpacing(6);
-    GroupButtonsLayout->setMargin(11);
-
-    buttonOk = new QPushButton(tr("SMESH_BUT_OK"), GroupButtons, "buttonOk");
-    buttonOk->setAutoDefault(TRUE);
-    buttonOk->setDefault(FALSE);
-    GroupButtonsLayout->addWidget(buttonOk, 0, 0);
-
-    buttonApply = new QPushButton(tr("SMESH_BUT_APPLY"), GroupButtons, "buttonApply");
-    buttonApply->setAutoDefault(TRUE);
-    buttonApply->setDefault(FALSE);
-    GroupButtonsLayout->addWidget(buttonApply, 0, 1);
-
-    GroupButtonsLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 2);
-
-    buttonCancel = new QPushButton(tr("SMESH_BUT_CLOSE"), GroupButtons, "buttonCancel");
-    buttonCancel->setAutoDefault(TRUE);
-    buttonCancel->setDefault(TRUE);
-    buttonCancel->setEnabled(TRUE);
-    GroupButtonsLayout->addWidget(buttonCancel, 0, 3);
-
-    SMESHGUI_EditHypothesesDlgLayout->addWidget(GroupButtons, 4, 0);
-
-    /***************************************************************/
-    Init();
-}
-
-//=================================================================================
-// function : ~SMESHGUI_EditHypothesesDlg()
-// purpose  : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_EditHypothesesDlg::~SMESHGUI_EditHypothesesDlg()
-{
-  // no need to delete child widgets, Qt does it all for us
-}
-
-//=================================================================================
-// function : Init()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::Init()
-{
-  mySMESHGUI->SetActiveDialogBox((QDialog*)this);
-
-  InitHypDefinition();
-  InitAlgoDefinition();
-
-  //myGeomFilter = new SALOME_TypeFilter ("GEOM");
-  TColStd_MapOfInteger allTypesMap;
-  for (int i = 0; i < 10; i++)
-    allTypesMap.Add(i);
-  myGeomFilter          = new SMESH_NumberFilter ("GEOM", TopAbs_SHAPE, 0, allTypesMap);
-  myMeshOrSubMeshFilter = new SMESH_TypeFilter (MESHorSUBMESH);
-
-  myGeomShape = GEOM::GEOM_Object::_nil();
-  myMesh = SMESH::SMESH_Mesh::_nil();
-  mySubMesh = SMESH::SMESH_subMesh::_nil();
-
-  /* signals and slots connections */
-  connect(buttonOk,     SIGNAL(clicked()), this, SLOT(ClickOnOk()));
-  connect(buttonApply,  SIGNAL(clicked()), this, SLOT(ClickOnApply()));
-  connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
-
-  connect(SelectButtonC1A1, SIGNAL (clicked()), this, SLOT(SetEditCurrentArgument()));
-  connect(SelectButtonC1A2, SIGNAL (clicked()), this, SLOT(SetEditCurrentArgument()));
-
-  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()),      this, SLOT(SelectionIntoArgument()));
-  connect(mySMESHGUI,     SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
-  connect(mySMESHGUI,     SIGNAL(SignalCloseAllDialogs()),        this, SLOT(ClickOnCancel()));
-
-  connect(ListHypAssignation,  SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(removeItem(QListBoxItem*)));
-  connect(ListAlgoAssignation, SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(removeItem(QListBoxItem*)));
-
-  connect(ListHypDefinition,  SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(addItem(QListBoxItem*)));
-  connect(ListAlgoDefinition, SIGNAL(doubleClicked(QListBoxItem*)), this, SLOT(addItem(QListBoxItem*)));
-
-  int x, y;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-  this->show();
-
-  LineEditC1A1->setFocus();
-  myEditCurrentArgument = LineEditC1A1;
-  mySelectionMgr->clearFilters();
-  mySelectionMgr->installFilter(myMeshOrSubMeshFilter);
-
-  SelectionIntoArgument();
-
-  UpdateControlState();
-}
-
-//=================================================================================
-// function : ClickOnOk()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::ClickOnOk()
-{
-  if (ClickOnApply())
-    ClickOnCancel();
-}
-
-//=================================================================================
-// function : ClickOnApply()
-// purpose  :
-//=================================================================================
-bool SMESHGUI_EditHypothesesDlg::ClickOnApply()
-{
-  if (mySMESHGUI->isActiveStudyLocked())
-    return false;
-
-  bool aRes = false;
-
-  SUIT_OverrideCursor wc;
-
-  SUIT_Operation* op = new SUIT_Operation
-    (SUIT_Session::session()->activeApplication());
-
-  // start transaction
-  op->start();
-
-  if (!myMesh->_is_nil())
-    aRes = StoreMesh();
-  else if (!mySubMesh->_is_nil())
-    aRes = StoreSubMesh();
-
-  if (true/*aRes*/) { // abort desynchronizes contents of a Study and a mesh on server
-    // commit transaction
-    op->commit();
-    InitHypAssignation();
-    InitAlgoAssignation();
-  } else {
-    // abort transaction
-    op->abort();
-  }
-
-  UpdateControlState();
-  mySMESHGUI->updateObjBrowser();
-
-  return aRes;
-}
-
-//=================================================================================
-// function : ClickOnCancel()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::ClickOnCancel()
-{
-  close();
-}
-
-//=================================================================================
-// function : SelectionIntoArgument()
-// purpose  : Called when selection as changed or other case
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::SelectionIntoArgument()
-{
-  QString aString = "";
-
-  SALOME_ListIO aList;
-  mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type());
-
-  int nbSel = SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString);
-
-  if (myEditCurrentArgument == LineEditC1A1) {
-    if (nbSel != 1) {
-      myMesh    = SMESH::SMESH_Mesh::_nil();
-      mySubMesh = SMESH::SMESH_subMesh::_nil();
-      aString   = "";
-    } else {
-      Handle(SALOME_InteractiveObject) IO = aList.First();
-      myMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(IO);
-      if (myMesh->_is_nil()) {
-       mySubMesh = SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(IO);
-       if (mySubMesh->_is_nil()) {
-         aString = "";
-       }
-      }
-    }
-    myEditCurrentArgument->setText(aString);
-
-    // InitGeom() will try to retrieve a shape from myMesh or mySubMesh
-    myGeomShape = GEOM::GEOM_Object::_nil();
-    InitGeom();
-
-    myImportedMesh = myGeomShape->_is_nil();
-
-    InitHypAssignation();
-    InitAlgoAssignation();
-
-  } else if (myEditCurrentArgument == LineEditC1A2) {
-    if (nbSel != 1) {
-      myGeomShape = GEOM::GEOM_Object::_nil();
-    } else {
-      Handle(SALOME_InteractiveObject) IO = aList.First();
-      myGeomShape = SMESH::IObjectToInterface<GEOM::GEOM_Object>(IO);
-    }
-    InitGeom();
-  }
-
-  UpdateControlState();
-}
-
-//=================================================================================
-// function : SetEditCurrentArgument()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::SetEditCurrentArgument()
-{
-  QPushButton* send = (QPushButton*)sender();
-  if(send == SelectButtonC1A1) {
-    LineEditC1A1->setFocus();
-    myEditCurrentArgument = LineEditC1A1;
-    mySelectionMgr->clearFilters();
-    mySelectionMgr->installFilter(myMeshOrSubMeshFilter);
-  } else if (send == SelectButtonC1A2) {
-    LineEditC1A2->setFocus();
-    myEditCurrentArgument = LineEditC1A2;
-    mySelectionMgr->clearFilters();
-    mySelectionMgr->installFilter(myGeomFilter);
-  }
-  SelectionIntoArgument();
-}
-
-//=================================================================================
-// function : DeactivateActiveDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::DeactivateActiveDialog()
-{
-  if (GroupC1->isEnabled()) {
-    disconnect(mySelectionMgr, 0, this, 0);
-    GroupC1->setEnabled(false);
-    GroupButtons->setEnabled(false);
-  }
-}
-
-//=================================================================================
-// function : ActivateThisDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::ActivateThisDialog()
-{
-  mySMESHGUI->EmitSignalDeactivateDialog();
-  GroupC1->setEnabled(true);
-  GroupButtons->setEnabled(true);
-  connect (mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
-}
-
-//=================================================================================
-// function : enterEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::enterEvent (QEvent*)
-{
-  if (!GroupC1->isEnabled())
-    ActivateThisDialog();
-}
-
-//=================================================================================
-// function : closeEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::closeEvent (QCloseEvent* e)
-{
-  disconnect(mySelectionMgr, 0, this, 0);
-  mySMESHGUI->ResetState();
-  mySelectionMgr->clearFilters();
-  QDialog::closeEvent(e);
-}
-
-//=======================================================================
-// function : IsOld()
-// purpose  :
-//=======================================================================
-bool SMESHGUI_EditHypothesesDlg::IsOld (QListBoxItem* hypItem)
-{
-  if (hypItem->rtti() == ListBoxIOR::RTTI_IOR) {
-    ListBoxIOR* hyp = (ListBoxIOR*) hypItem;
-    return (myMapOldHypos.find(hyp->GetIOR()) != myMapOldHypos.end() ||
-            myMapOldAlgos.find(hyp->GetIOR()) != myMapOldAlgos.end());
-  }
-
-  return false;
-}
-
-//=================================================================================
-// function : removeItem()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::removeItem (QListBoxItem* item)
-{
-  const QObject* aSender = sender();
-
-  if (!item) return;
-
-  if (aSender == ListHypAssignation) {
-    myNbModification += IsOld(item) ? 1 : -1;
-    ListHypAssignation->removeItem(ListHypAssignation->index(item));
-  }
-  else if (aSender == ListAlgoAssignation) {
-    myNbModification += IsOld(item) ? 1 : -1;
-    ListAlgoAssignation->removeItem(ListAlgoAssignation->index(item));
-  }
-
-  UpdateControlState();
-}
-
-//=================================================================================
-// function : addItem()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::addItem (QListBoxItem* item)
-{
-  const QObject* aSender = sender();
-
-  if (!item) return;
-
-  ListBoxIOR* i = 0;
-  if (item->rtti() == ListBoxIOR::RTTI_IOR)
-    i = (ListBoxIOR*)item;
-  if (!i) return;
-
-  bool isFound = false;
-
-  ListBoxIOR* anItem;
-  if (aSender == ListHypDefinition) {
-    for (int j = 0, n = ListHypAssignation->count(); !isFound && j < n; j++) {
-      if (ListHypAssignation->item(j)->rtti() == ListBoxIOR::RTTI_IOR) {
-       anItem = (ListBoxIOR*)ListHypAssignation->item(j);
-       isFound = !strcmp(anItem->GetIOR(), i->GetIOR());
-      }
-    }
-    if (!isFound)
-      anItem = new ListBoxIOR (ListHypAssignation,
-                               CORBA::string_dup(i->GetIOR()),
-                               CORBA::string_dup(i->text().latin1()));
-
-  } else if (aSender == ListAlgoDefinition) {
-    for (int j = 0, n = ListAlgoAssignation->count(); !isFound && j < n; j++) {
-      if (ListAlgoAssignation->item(j)->rtti() == ListBoxIOR::RTTI_IOR) {
-       anItem = (ListBoxIOR*)ListAlgoAssignation->item(j);
-       isFound = !strcmp(anItem->GetIOR(), i->GetIOR());
-      }
-    }
-    if (!isFound)
-      anItem = new ListBoxIOR (ListAlgoAssignation,
-                               CORBA::string_dup(i->GetIOR()),
-                               CORBA::string_dup(i->text().latin1()));
-  } else {
-  }
-
-  if (!isFound)
-    myNbModification += IsOld(item) ? -1 : 1;
-
-  UpdateControlState();
-}
-
-//=================================================================================
-// function : InitHypDefinition()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::InitHypDefinition()
-{
-  ListHypDefinition->clear();
-
-  _PTR(SComponent) father = SMESH::GetActiveStudyDocument()->FindComponent("SMESH");
-  if (!father)
-    return;
-
-  _PTR(SObject)          HypothesisRoot;
-  _PTR(GenericAttribute) anAttr;
-  _PTR(AttributeName)    aName;
-  _PTR(AttributeIOR)     anIOR;
-
-  //int Tag_HypothesisRoot = 1;
-  if (father->FindSubObject(1, HypothesisRoot)) {
-    _PTR(ChildIterator) it =
-      SMESH::GetActiveStudyDocument()->NewChildIterator(HypothesisRoot);
-    ListBoxIOR* anItem;
-    for (; it->More();it->Next()) {
-      _PTR(SObject) Obj = it->Value();
-      if (Obj->FindAttribute(anAttr, "AttributeName")) {
-        aName = anAttr;
-        if (Obj->FindAttribute(anAttr, "AttributeIOR")) {
-          anIOR = anAttr;
-          anItem = new ListBoxIOR (ListHypDefinition,
-                                   anIOR->Value().c_str(),
-                                   aName->Value().c_str());
-        }
-      }
-    }
-  }
-}
-
-//=================================================================================
-// function : InitHypAssignation()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::InitHypAssignation()
-{
-  myNbModification = 0;
-
-  myMapOldHypos.clear();
-  ListHypAssignation->clear();
-  if (myImportedMesh)
-    return;
-
-  _PTR(SObject)          aMorSM, AHR, aRef;
-  _PTR(GenericAttribute) anAttr;
-  _PTR(AttributeName)    aName;
-  _PTR(AttributeIOR)     anIOR;
-
-  if (!myMesh->_is_nil())
-    aMorSM = SMESH::FindSObject(myMesh);
-  else if (!mySubMesh->_is_nil())
-    aMorSM = SMESH::FindSObject(mySubMesh);
-
-  if (aMorSM && aMorSM->FindSubObject(2, AHR)) {
-    _PTR(ChildIterator) it =
-      SMESH::GetActiveStudyDocument()->NewChildIterator(AHR);
-    for (; it->More();it->Next()) {
-      _PTR(SObject) Obj = it->Value();
-      if (Obj->ReferencedObject(aRef)) {
-        if (aRef->FindAttribute(anAttr, "AttributeName")) {
-          aName = anAttr;
-         if (aRef->FindAttribute(anAttr, "AttributeIOR")) {
-            anIOR = anAttr;
-           ListBoxIOR* anItem = new ListBoxIOR (ListHypAssignation,
-                                                anIOR->Value().c_str(),
-                                                aName->Value().c_str());
-           myMapOldHypos[ anIOR->Value() ] = ListHypAssignation->index(anItem);
-         }
-       }
-      }
-    }
-  }
-}
-
-//=================================================================================
-// function : InitAlgoDefinition()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::InitAlgoDefinition()
-{
-  ListAlgoDefinition->clear();
-
-  _PTR(SComponent) father = SMESH::GetActiveStudyDocument()->FindComponent("SMESH");
-  if (!father)
-    return;
-
-  _PTR(SObject)          AlgorithmsRoot;
-  _PTR(GenericAttribute) anAttr;
-  _PTR(AttributeName)    aName;
-  _PTR(AttributeIOR)     anIOR;
-
-  if (father->FindSubObject (2, AlgorithmsRoot)) {
-    _PTR(ChildIterator) it =
-      SMESH::GetActiveStudyDocument()->NewChildIterator(AlgorithmsRoot);
-    ListBoxIOR* anItem;
-    for (; it->More();it->Next()) {
-      _PTR(SObject) Obj = it->Value();
-      if (Obj->FindAttribute(anAttr, "AttributeName")) {
-        aName = anAttr;
-        if (Obj->FindAttribute(anAttr, "AttributeIOR")) {
-          anIOR = anAttr;
-          anItem = new ListBoxIOR (ListAlgoDefinition,
-                                   anIOR->Value().c_str(),
-                                   aName->Value().c_str());
-        }
-      }
-    }
-  }
-}
-
-//=================================================================================
-// function : InitAlgoAssignation()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::InitAlgoAssignation()
-{
-  myMapOldAlgos.clear();
-  ListAlgoAssignation->clear();
-  if (myImportedMesh)
-    return;
-
-  _PTR(SObject)          aMorSM, AHR, aRef;
-  _PTR(GenericAttribute) anAttr;
-  _PTR(AttributeName)    aName;
-  _PTR(AttributeIOR)     anIOR;
-
-  if (!myMesh->_is_nil())
-    aMorSM = SMESH::FindSObject(myMesh);
-  else if (!mySubMesh->_is_nil())
-    aMorSM = SMESH::FindSObject(mySubMesh);
-
-  if (aMorSM && aMorSM->FindSubObject(3, AHR)) {
-    _PTR(ChildIterator) it =
-      SMESH::GetActiveStudyDocument()->NewChildIterator(AHR);
-    for (; it->More();it->Next()) {
-      _PTR(SObject) Obj = it->Value();
-      if (Obj->ReferencedObject(aRef)) {
-        if (aRef->FindAttribute(anAttr, "AttributeName")) {
-         aName = anAttr;
-         if (aRef->FindAttribute(anAttr, "AttributeIOR")) {
-           anIOR = anAttr;
-           ListBoxIOR* anItem = new ListBoxIOR (ListAlgoAssignation,
-                                                anIOR->Value().c_str(),
-                                                aName->Value().c_str());
-           myMapOldAlgos[ anIOR->Value() ] = ListAlgoAssignation->index(anItem);
-         }
-       }
-      }
-    }
-  }
-}
-
-//=================================================================================
-// function : InitGeom()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::InitGeom()
-{
-  LineEditC1A2->setText("");
-
-  if (myGeomShape->_is_nil() && !myMesh->_is_nil()) {
-    _PTR(SObject) aMesh = SMESH::FindSObject(myMesh);
-    if (aMesh)
-      myGeomShape = SMESH::GetShapeOnMeshOrSubMesh(aMesh);
-  }
-  if (myGeomShape->_is_nil() && !mySubMesh->_is_nil()) {
-    _PTR(SObject) aSubMesh = SMESH::FindSObject(mySubMesh);
-    if (aSubMesh)
-      myGeomShape = SMESH::GetShapeOnMeshOrSubMesh(aSubMesh);
-  }
-
-  _PTR(GenericAttribute) anAttr;
-  _PTR(AttributeName)    aName;
-  if (!myGeomShape->_is_nil() && (!myMesh->_is_nil() || !mySubMesh->_is_nil())) {
-    _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
-    //_PTR(SObject) aSO = aStudy->FindObjectIOR(aStudy->ConvertObjectToIOR(myGeomShape));
-    _PTR(SObject) aSO = aStudy->FindObjectID(myGeomShape->GetStudyEntry());
-    if (aSO) {
-      if (aSO->FindAttribute(anAttr, "AttributeName")) {
-       aName = anAttr;
-       LineEditC1A2->setText(QString(aName->Value().c_str()));
-      }
-    }
-  }
-}
-
-//=================================================================================
-// function : UpdateControlState()
-// purpose  :
-//=================================================================================
-void SMESHGUI_EditHypothesesDlg::UpdateControlState()
-{
-  // asl the check of "count" is commented because of PAL9787
-  bool isEnabled = (!myMesh->_is_nil() && !myGeomShape->_is_nil() /*&&
-                    ListHypAssignation->count() && ListAlgoAssignation->count()*/ )
-    ||
-      (!mySubMesh->_is_nil() && !myGeomShape->_is_nil() /*&&
-       (ListHypAssignation->count() || ListAlgoAssignation->count())*/);
-
-  buttonOk   ->setEnabled(myNbModification && isEnabled && !myImportedMesh);
-  buttonApply->setEnabled(myNbModification && isEnabled && !myImportedMesh);
-
-  SelectButtonC1A2   ->setEnabled(ALLOW_CHANGE_SHAPE && !myImportedMesh);
-  LineEditC1A2       ->setEnabled(ALLOW_CHANGE_SHAPE && !myImportedMesh);
-  ListHypDefinition  ->setEnabled(!myImportedMesh);
-  ListHypAssignation ->setEnabled(!myImportedMesh);
-  ListAlgoDefinition ->setEnabled(!myImportedMesh);
-  ListAlgoAssignation->setEnabled(!myImportedMesh);
-}
-
-//=================================================================================
-// function : StoreMesh()
-// purpose  :
-//=================================================================================
-bool SMESHGUI_EditHypothesesDlg::StoreMesh()
-{
-  MapIOR anOldHypos, aNewHypos;
-  if (myGeomShape->_is_nil())
-    return false;
-
-  // 1. Check whether the geometric shape has changed
-  _PTR(SObject) aMeshSO = SMESH::FindSObject(myMesh);
-  GEOM::GEOM_Object_var aIniGeomShape = SMESH::GetShapeOnMeshOrSubMesh(aMeshSO);
-  bool bShapeChanged = aIniGeomShape->_is_nil() ||
-                       !aIniGeomShape->_is_equivalent(myGeomShape);
-  if (bShapeChanged) {
-    // VSR : TODO : Set new shape - not supported yet by SMESH engine
-    // 1. remove all old hypotheses and algorithms and also submeshes
-    // 2. set new shape
-  }
-
-  int nbFail = 0;
-  MapIOR::iterator it;
-
-  // 2. remove not used hypotheses from the mesh
-  for (it = myMapOldHypos.begin(); it != myMapOldHypos.end(); ++it) {
-    string ior = it->first;
-    int index = findItem(ListHypAssignation, ior);
-    if (index < 0) {
-      SMESH::SMESH_Hypothesis_var aHyp =
-        SMESH::IORToInterface<SMESH::SMESH_Hypothesis>(ior.c_str());
-      if (!aHyp->_is_nil()) {
-       if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh(aMeshSO, aHyp))
-         nbFail++;
-      }
-    }
-  }
-
-  // 3. remove not used algorithms from the mesh
-  for (it = myMapOldAlgos.begin(); it != myMapOldAlgos.end(); ++it) {
-    string ior = it->first;
-    int index = findItem(ListAlgoAssignation, ior);
-    if (index < 0) {
-      SMESH::SMESH_Hypothesis_var aHyp =
-        SMESH::IORToInterface<SMESH::SMESH_Hypothesis>(ior.c_str());
-      if (!aHyp->_is_nil()) {
-       if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh(aMeshSO, aHyp))
-         nbFail++;
-      }
-    }
-  }
-
-  // 4. Add new algorithms
-  for (int i = 0; i < ListAlgoAssignation->count(); i++) {
-    if (ListAlgoAssignation->item(i)->rtti() == ListBoxIOR::RTTI_IOR) {
-      ListBoxIOR* anItem = (ListBoxIOR*)(ListAlgoAssignation->item(i));
-      if (anItem) {
-       string ior = anItem->GetIOR();
-       if (myMapOldAlgos.find(ior) == myMapOldAlgos.end()) {
-         SMESH::SMESH_Hypothesis_var aHyp =
-            SMESH::IORToInterface<SMESH::SMESH_Hypothesis>(ior.c_str());
-         if (!aHyp->_is_nil()) {
-           if (!SMESH::AddHypothesisOnMesh(myMesh, aHyp))
-             nbFail++;
-         }
-       }
-      }
-    }
-  }
-
-  // 5. Add new hypotheses
-  for (int i = 0; i < ListHypAssignation->count(); i++) {
-    if (ListHypAssignation->item(i)->rtti() == ListBoxIOR::RTTI_IOR) {
-      ListBoxIOR* anItem = (ListBoxIOR*)(ListHypAssignation->item(i));
-      if (anItem) {
-       string ior = anItem->GetIOR();
-       if (myMapOldHypos.find(ior) == myMapOldHypos.end()) {
-         SMESH::SMESH_Hypothesis_var aHyp =
-            SMESH::IORToInterface<SMESH::SMESH_Hypothesis>(ior.c_str());
-         if (!aHyp->_is_nil()) {
-           if (!SMESH::AddHypothesisOnMesh(myMesh, aHyp))
-             nbFail++;
-         }
-       }
-      }
-    }
-  }
-  return (nbFail == 0);
-}
-
-//=================================================================================
-// function : StoreSubMesh()
-// purpose  :
-//=================================================================================
-bool SMESHGUI_EditHypothesesDlg::StoreSubMesh()
-{
-  MapIOR anOldHypos, aNewHypos;
-  if (myGeomShape->_is_nil())
-    return false;
-
-  // 1. Check whether the geometric shape has changed
-  _PTR(SObject) aSubMeshSO = SMESH::FindSObject(mySubMesh);
-  GEOM::GEOM_Object_var aIniGeomShape = SMESH::GetShapeOnMeshOrSubMesh(aSubMeshSO);
-  bool bShapeChanged = aIniGeomShape->_is_nil() || !aIniGeomShape->_is_equivalent(myGeomShape);
-  if (bShapeChanged) {
-    // VSR : TODO : Set new shape - not supported yet by engine
-    // 1. remove all old hypotheses and algorithms
-    // 2. set new shape
-  }
-  int nbFail = 0;
-  MapIOR::iterator it;
-
-  // 2. remove not used hypotheses from the submesh
-  for (it = myMapOldHypos.begin(); it != myMapOldHypos.end(); ++it) {
-    string ior = it->first;
-    int index = findItem(ListHypAssignation, ior);
-    if (index < 0) {
-      SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface<SMESH::SMESH_Hypothesis>(ior.c_str());
-      if (!aHyp->_is_nil()) {
-       if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh(aSubMeshSO, aHyp))
-         nbFail++;
-      }
-    }
-  }
-
-  // 3. remove not used algorithms from the submesh
-  for (it = myMapOldAlgos.begin(); it != myMapOldAlgos.end(); ++it) {
-    string ior = it->first;
-    int index = findItem(ListAlgoAssignation, ior);
-    if (index < 0) {
-      SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface<SMESH::SMESH_Hypothesis>(ior.c_str());
-      if (!aHyp->_is_nil()){
-       if (!SMESH::RemoveHypothesisOrAlgorithmOnMesh(aSubMeshSO, aHyp))
-         nbFail++;
-      }
-    }
-  }
-
-  // 4. Add new algorithms
-  for (int i = 0; i < ListAlgoAssignation->count(); i++) {
-    if (ListAlgoAssignation->item(i)->rtti() == ListBoxIOR::RTTI_IOR) {
-      ListBoxIOR* anItem = (ListBoxIOR*)(ListAlgoAssignation->item(i));
-      if (anItem) {
-       string ior = anItem->GetIOR();
-       if (myMapOldAlgos.find(ior) == myMapOldAlgos.end()) {
-         SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface<SMESH::SMESH_Hypothesis>(ior.c_str());
-         if (!aHyp->_is_nil()){
-           if (!SMESH::AddHypothesisOnSubMesh(mySubMesh, aHyp))
-             nbFail++;
-         }
-       }
-      }
-    }
-  }
-
-  // 5. Add new hypotheses
-  for (int i = 0; i < ListHypAssignation->count(); i++) {
-    if (ListHypAssignation->item(i)->rtti() == ListBoxIOR::RTTI_IOR) {
-      ListBoxIOR* anItem = (ListBoxIOR*)(ListHypAssignation->item(i));
-      if (anItem) {
-       string ior = anItem->GetIOR();
-       if (myMapOldHypos.find(ior) == myMapOldHypos.end()) {
-         SMESH::SMESH_Hypothesis_var aHyp = SMESH::IORToInterface<SMESH::SMESH_Hypothesis>(ior.c_str());
-         if (!aHyp->_is_nil()){
-           if (!SMESH::AddHypothesisOnSubMesh(mySubMesh, aHyp))
-             nbFail++;
-         }
-       }
-      }
-    }
-  }
-  return (nbFail == 0);
-}
diff --git a/src/SMESHGUI/SMESHGUI_Filter.cxx b/src/SMESHGUI/SMESHGUI_Filter.cxx
deleted file mode 100755 (executable)
index 19b3fcb..0000000
+++ /dev/null
@@ -1,497 +0,0 @@
-//  SMESHGUI_PredicateFilter : Filters for VTK viewer
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_Filter.cxx
-//  Author : Sergey LITONIN
-//  Module : SMESH
-
-#include "SMESHGUI_Filter.h"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
-
-#include "SMESH_Actor.h"
-#include "SMDS_Mesh.hxx"
-#include "SMDS_MeshElement.hxx"
-#include "SMDSAbs_ElementType.hxx"
-
-// OCCT Includes
-#include <gp_Vec.hxx>
-#include <Precision.hxx>
-
-// VTK Includes
-#include <vtkCell.h>
-
-IMPLEMENT_STANDARD_HANDLE(SMESHGUI_Filter, VTKViewer_Filter)
-IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_Filter, VTKViewer_Filter)
-
-IMPLEMENT_STANDARD_HANDLE(SMESHGUI_PredicateFilter, SMESHGUI_Filter)
-IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_PredicateFilter, SMESHGUI_Filter)
-
-IMPLEMENT_STANDARD_HANDLE(SMESHGUI_QuadrangleFilter, SMESHGUI_Filter)
-IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_QuadrangleFilter, SMESHGUI_Filter)
-
-IMPLEMENT_STANDARD_HANDLE(SMESHGUI_TriangleFilter, SMESHGUI_Filter)
-IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_TriangleFilter, SMESHGUI_Filter)
-
-IMPLEMENT_STANDARD_HANDLE(SMESHGUI_FacesFilter, SMESHGUI_Filter)
-IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_FacesFilter, SMESHGUI_Filter)
-
-IMPLEMENT_STANDARD_HANDLE(SMESHGUI_VolumesFilter, SMESHGUI_Filter)
-IMPLEMENT_STANDARD_RTTIEXT(SMESHGUI_VolumesFilter, SMESHGUI_Filter)
-
-/*
-  Class       : SMESHGUI_PredicateFilter
-  Description : Selection filter for VTK viewer. This class aggregate object
-                of SMESH_Predicate class and uses it for verification of criterion
-*/
-
-//=======================================================================
-// name    : SMESHGUI_PredicateFilter::SMESHGUI_PredicateFilter
-// Purpose : Constructor
-//=======================================================================
-SMESHGUI_PredicateFilter::SMESHGUI_PredicateFilter()
-{
-}
-
-SMESHGUI_PredicateFilter::~SMESHGUI_PredicateFilter()
-{
-}
-
-//=======================================================================
-// name    : SMESHGUI_PredicateFilter::IsValid
-// Purpose : Verify whether entry id satisfies to criterion of the filter
-//=======================================================================
-bool SMESHGUI_PredicateFilter::IsValid( const int theCellId ) const
-{
-  if ( myActor == 0 || myPred->_is_nil() )
-    return false;
-
-  SMESH_Actor* anActor = dynamic_cast<SMESH_Actor*>( myActor );
-  if ( !anActor || anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  SMESH::ElementType anElemType = myPred->GetElementType();
-  int aMeshId = anElemType == SMESH::NODE ? anActor->GetNodeObjId( theCellId )
-                                          : anActor->GetElemObjId( theCellId );
-
-  // if type of element != type of predicate return true because
-  // this predicate is not intended for filtering sush elements
-  const SMDS_MeshElement* anElem = anElemType == SMESH::NODE ? aMesh->FindNode( aMeshId )
-                                                             : aMesh->FindElement( aMeshId );
-  if ( anElem != 0 && anElem->GetType() != (SMDSAbs_ElementType)myPred->GetElementType() )
-    return true;
-
-  return myPred->IsSatisfy( aMeshId );
-}
-
-//=======================================================================
-// name    : SMESHGUI_PredicateFilter::IsValid
-// Purpose : Verify whether entry id satisfies to criterion of the filter
-//=======================================================================
-bool SMESHGUI_PredicateFilter::IsObjValid( const int theObjId ) const
-{
-  if ( myActor == 0 || myPred->_is_nil() )
-    return false;
-
-  SMESH_Actor* anActor = ( SMESH_Actor* )myActor;
-  if ( anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  SMESH::ElementType anElemType = myPred->GetElementType();
-
-  // if type of element != type of predicate return true because
-  // this predicate is not intended for filtering sush elements
-  const SMDS_MeshElement* anElem = anElemType == SMESH::NODE ? aMesh->FindNode( theObjId )
-                                                             : aMesh->FindElement( theObjId );
-  if ( anElem != 0 && anElem->GetType() != (SMDSAbs_ElementType)myPred->GetElementType() )
-    return true;
-
-  return myPred->IsSatisfy( theObjId );
-}
-
-//=======================================================================
-// name    : SMESHGUI_PredicateFilter::IsNodeFilter
-// Purpose : Returns true if filter is intended for nodes
-//=======================================================================
-bool SMESHGUI_PredicateFilter::IsNodeFilter() const
-{
-  return GetId() == SMESHGUI_NodeFilter;
-}
-
-//=======================================================================
-// name    : SMESHGUI_PredicateFilter::SetPredicate
-// Purpose : Set new pridicate to the filter
-//=======================================================================
-void SMESHGUI_PredicateFilter::SetPredicate( SMESH::Predicate_ptr thePred )
-{
-  myPred = SMESH::Predicate::_duplicate( thePred );
-}
-
-//=======================================================================
-// name    : SMESHGUI_PredicateFilter::SetActor
-// Purpose : Set new actor
-//=======================================================================
-void SMESHGUI_PredicateFilter::SetActor( SALOME_Actor* theActor )
-{
-  if ( myActor == theActor )
-    return;
-  SMESHGUI_Filter::SetActor( theActor );
-
-  if ( myActor != 0 && !myPred->_is_nil() )
-  {
-    SALOME_Actor* sActor = dynamic_cast<SALOME_Actor*>( myActor );
-    Handle(SALOME_InteractiveObject) anIO;
-    if( sActor )
-      anIO = sActor->getIO();
-    if ( !anIO.IsNull() )
-    {
-      SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(anIO);
-      if(!aMesh->_is_nil())
-        myPred->SetMesh(aMesh);
-    }
-  }
-}
-
-//=======================================================================
-// name    : SMESHGUI_PredicateFilter::SetActor
-// Purpose : Get ID of the filter. Must return value from SMESHGUI_FilterType
-//           enumeration. All filters must have different ids
-//=======================================================================
-int SMESHGUI_PredicateFilter::GetId() const
-{
-  if      ( myPred->GetElementType() == SMESH::NODE   ) return SMESHGUI_NodeFilter;
-  else if ( myPred->GetElementType() == SMESH::EDGE   ) return SMESHGUI_EdgeFilter;
-  else if ( myPred->GetElementType() == SMESH::FACE   ) return SMESHGUI_FaceFilter;
-  else if ( myPred->GetElementType() == SMESH::VOLUME ) return SMESHGUI_VolumeFilter;
-  else if ( myPred->GetElementType() == SMESH::ALL    ) return SMESHGUI_AllElementsFilter;
-  else                                                  return SMESHGUI_UnknownFilter;
-}
-
-
-/*
-  Class       : SMESHGUI_QuadrangleFilter
-  Description : Verify whether selected cell is quadranle
-*/
-
-//=======================================================================
-// name    : SMESHGUI_QuadrangleFilter::SMESHGUI_QuadrangleFilter
-// Purpose : Constructor
-//=======================================================================
-SMESHGUI_QuadrangleFilter::SMESHGUI_QuadrangleFilter()
-: SMESHGUI_Filter()
-{
-}
-
-SMESHGUI_QuadrangleFilter::~SMESHGUI_QuadrangleFilter()
-{
-}
-
-//=======================================================================
-// name    : SMESHGUI_QuadrangleFilter::IsValid
-// Purpose : Verify whether selected cell is quadranle
-//=======================================================================
-bool SMESHGUI_QuadrangleFilter::IsValid( const int theCellId ) const
-{
-  if ( myActor == 0 )
-    return false;
-
-  SMESH_Actor* anActor = ( SMESH_Actor* )myActor;
-  if ( anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  const SMDS_MeshElement* anElem = aMesh->FindElement( anActor->GetElemObjId( theCellId ) );
-
-  return anElem && anElem->GetType() == SMDSAbs_Face && anElem->NbNodes() == 4;
-}
-
-//=======================================================================
-// name    : SMESHGUI_QuadrangleFilter::IsValid
-// Purpose : Verify whether selected cell is quadranle
-//=======================================================================
-bool SMESHGUI_QuadrangleFilter::IsObjValid( const int theObjId ) const
-{
-  if ( myActor == 0 )
-    return false;
-
-  SMESH_Actor* anActor = ( SMESH_Actor* )myActor;
-  if ( anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  const SMDS_MeshElement* anElem = aMesh->FindElement( theObjId );
-
-  return anElem && anElem->GetType() == SMDSAbs_Face && anElem->NbNodes() == 4;
-}
-
-//=======================================================================
-// name    : SMESHGUI_QuadrangleFilter::SetActor
-// Purpose : Get ID of the filter. Must return value from SMESHGUI_FilterType
-//           enumeration. All filters must have different ids
-//=======================================================================
-int SMESHGUI_QuadrangleFilter::GetId() const
-{
-  return SMESHGUI_QuadFilter;
-}
-
-//=======================================================================
-// name    : SMESHGUI_QuadrangleFilter::IsNodeFilter
-// Purpose : Returns true if filter is intended for nodes
-//=======================================================================
-bool SMESHGUI_QuadrangleFilter::IsNodeFilter() const
-{
-  return false;
-}
-
-
-/*
-  Class       : SMESHGUI_TriangleFilter
-  Description : Verify whether selected cell is triangle
-*/
-
-
-//=======================================================================
-// name    : SMESHGUI_TriangleFilter::SMESHGUI_TriangleFilter
-// Purpose : Constructor
-//=======================================================================
-SMESHGUI_TriangleFilter::SMESHGUI_TriangleFilter()
-: SMESHGUI_Filter()
-{
-}
-
-SMESHGUI_TriangleFilter::~SMESHGUI_TriangleFilter()
-{
-}
-
-//=======================================================================
-// name    : SMESHGUI_TriangleFilter::IsValid
-// Purpose : Verify whether selected cell is triangle
-//=======================================================================
-bool SMESHGUI_TriangleFilter::IsValid( const int theCellId ) const
-{
-  if ( myActor == 0 )
-    return false;
-
-  SMESH_Actor* anActor = ( SMESH_Actor* )myActor;
-  if ( anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  const SMDS_MeshElement* anElem = aMesh->FindElement( anActor->GetElemObjId( theCellId ) );
-
-  return anElem && anElem->GetType() == SMDSAbs_Face && anElem->NbNodes() == 3;
-}
-
-//=======================================================================
-// name    : SMESHGUI_TriangleFilter::IsValid
-// Purpose : Verify whether selected cell is triangle
-//=======================================================================
-bool SMESHGUI_TriangleFilter::IsObjValid( const int theObjId ) const
-{
-  if ( myActor == 0 )
-    return false;
-
-  SMESH_Actor* anActor = ( SMESH_Actor* )myActor;
-  if ( anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  const SMDS_MeshElement* anElem = aMesh->FindElement( theObjId );
-
-  return anElem && anElem->GetType() == SMDSAbs_Face && anElem->NbNodes() == 3;
-}
-
-//=======================================================================
-// name    : SMESHGUI_TriangleFilter::SetActor
-// Purpose : Get ID of the filter. Must return value from SMESHGUI_FilterType
-//           enumeration. All filters must have different ids
-//=======================================================================
-int SMESHGUI_TriangleFilter::GetId() const
-{
-  return SMESHGUI_TriaFilter;
-}
-
-//=======================================================================
-// name    : SMESHGUI_TriangleFilter::IsNodeFilter
-// Purpose : Returns true if filter is intended for nodes
-//=======================================================================
-bool SMESHGUI_TriangleFilter::IsNodeFilter() const
-{
-  return false;
-}
-
-/*
-  Class       : SMESHGUI_FacesFilter
-  Description : Verify whether selected cell is any face
-*/
-
-
-//=======================================================================
-// name    : SMESHGUI_FacesFilter::SMESHGUI_FacesFilter
-// Purpose : Constructor
-//=======================================================================
-SMESHGUI_FacesFilter::SMESHGUI_FacesFilter()
-: SMESHGUI_Filter()
-{
-}
-
-SMESHGUI_FacesFilter::~SMESHGUI_FacesFilter()
-{
-}
-
-//=======================================================================
-// name    : SMESHGUI_FacesFilter::IsValid
-// Purpose : Verify whether selected cell is face
-//=======================================================================
-bool SMESHGUI_FacesFilter::IsValid( const int theCellId ) const
-{
-  if ( myActor == 0 )
-    return false;
-
-  SMESH_Actor* anActor = ( SMESH_Actor* )myActor;
-  if ( anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  const SMDS_MeshElement* anElem = aMesh->FindElement( anActor->GetElemObjId( theCellId ) );
-
-  return anElem && anElem->GetType() == SMDSAbs_Face;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FacesFilter::IsValid
-// Purpose : Verify whether selected cell is face
-//=======================================================================
-bool SMESHGUI_FacesFilter::IsObjValid( const int theObjId ) const
-{
-  if ( myActor == 0 )
-    return false;
-
-  SMESH_Actor* anActor = ( SMESH_Actor* )myActor;
-  if ( anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  const SMDS_MeshElement* anElem = aMesh->FindElement( theObjId );
-
-  return anElem && anElem->GetType() == SMDSAbs_Face;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FacesFilter::GetId
-// Purpose : Get ID of the filter. Must return value from SMESHGUI_FilterType
-//           enumeration. All filters must have different ids
-//=======================================================================
-int SMESHGUI_FacesFilter::GetId() const
-{
-  return SMESHGUI_FaceFilter;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FacesFilter::IsNodeFilter
-// Purpose : Returns true if filter is intended for nodes
-//=======================================================================
-bool SMESHGUI_FacesFilter::IsNodeFilter() const
-{
-  return false;
-}
-
-
-/*
-  Class       : SMESHGUI_VolumesFilter
-  Description : Verify whether selected cell is any volume
-*/
-
-
-//=======================================================================
-// name    : SMESHGUI_VolumesFilter::SMESHGUI_VolumesFilter
-// Purpose : Constructor
-//=======================================================================
-SMESHGUI_VolumesFilter::SMESHGUI_VolumesFilter()
-: SMESHGUI_Filter()
-{
-}
-
-SMESHGUI_VolumesFilter::~SMESHGUI_VolumesFilter()
-{
-}
-
-//=======================================================================
-// name    : SMESHGUI_VolumesFilter::IsValid
-// Purpose : Verify whether selected cell is volume
-//=======================================================================
-bool SMESHGUI_VolumesFilter::IsValid( const int theCellId ) const
-{
-  if ( myActor == 0 )
-    return false;
-
-  SMESH_Actor* anActor = ( SMESH_Actor* )myActor;
-  if ( anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  const SMDS_MeshElement* anElem = aMesh->FindElement( anActor->GetElemObjId( theCellId ) );
-
-  return anElem && anElem->GetType() == SMDSAbs_Volume;
-}
-
-//=======================================================================
-// name    : SMESHGUI_VolumesFilter::IsValid
-// Purpose : Verify whether selected cell is volume
-//=======================================================================
-bool SMESHGUI_VolumesFilter::IsObjValid( const int theObjId ) const
-{
-  if ( myActor == 0 )
-    return false;
-
-  SMESH_Actor* anActor = ( SMESH_Actor* )myActor;
-  if ( anActor->GetObject() == 0 )
-    return false;
-
-  SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
-  const SMDS_MeshElement* anElem = aMesh->FindElement( theObjId );
-
-  return anElem && anElem->GetType() == SMDSAbs_Volume;
-}
-
-//=======================================================================
-// name    : SMESHGUI_VolumesFilter::GetId
-// Purpose : Get ID of the filter. Must return value from SMESHGUI_FilterType
-//           enumeration. All filters must have different ids
-//=======================================================================
-int SMESHGUI_VolumesFilter::GetId() const
-{
-  return SMESHGUI_VolumeFilter;
-}
-
-//=======================================================================
-// name    : SMESHGUI_VolumesFilter::IsNodeFilter
-// Purpose : Returns true if filter is intended for nodes
-//=======================================================================
-bool SMESHGUI_VolumesFilter::IsNodeFilter() const
-{
-  return false;
-}
diff --git a/src/SMESHGUI/SMESHGUI_Filter.h b/src/SMESHGUI/SMESHGUI_Filter.h
deleted file mode 100755 (executable)
index 0114f38..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-//  SMESHGUI_Filter : Filters for VTK viewer
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_Filter.h
-//  Author : Sergey LITONIN
-//  Module : SMESH
-
-#ifndef SMESHGUI_Filter_HeaderFile
-#define SMESHGUI_Filter_HeaderFile
-
-#include "VTKViewer_Filter.h"
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Filter)
-
-class SALOME_Actor;
-
-enum SMESHGUI_FilterType
-{
-  SMESHGUI_UnknownFilter      = -1,
-  SMESHGUI_NodeFilter         =  0,
-  SMESHGUI_EdgeFilter         =  1,
-  SMESHGUI_FaceFilter         =  2,
-  SMESHGUI_VolumeFilter       =  3,
-  SMESHGUI_AllElementsFilter  =  4,
-  SMESHGUI_QuadFilter         =  5,
-  SMESHGUI_TriaFilter         =  6,
-  SMESHGUI_LastFilter
-};
-
-/*
-  Class       : SMESHGUI_Filter
-  Description : Base class for SMESH selection filters for VTK viewer.
-*/
-
-DEFINE_STANDARD_HANDLE(SMESHGUI_Filter, VTKViewer_Filter)
-
-class SMESHGUI_Filter : public VTKViewer_Filter
-{
-
-public:
-
-  virtual bool                IsObjValid( const int theObjId ) const = 0;
-public:
-  DEFINE_STANDARD_RTTI(SMESHGUI_Filter)
-};
-
-/*
-  Class       : SMESHGUI_PredicateFilter
-  Description : Selection filter for VTK viewer. This class aggregate object
-                of SMESH_Predicate class and uses it for verification of criterion
-*/
-
-DEFINE_STANDARD_HANDLE(SMESHGUI_PredicateFilter, SMESHGUI_Filter)
-
-class SMESHGUI_PredicateFilter : public SMESHGUI_Filter
-{
-
-public:
-                              SMESHGUI_PredicateFilter();
-  virtual                     ~SMESHGUI_PredicateFilter();
-
-  virtual bool                IsValid( const int theCellId ) const;
-  virtual bool                IsObjValid( const int theObjId ) const;
-  virtual int                 GetId() const;
-  virtual bool                IsNodeFilter() const;
-  void                        SetPredicate( SMESH::Predicate_ptr );
-
-  void                        SetActor( SALOME_Actor* );
-
-private:
-
-  SMESH::Predicate_var        myPred;
-
-public:
-  DEFINE_STANDARD_RTTI(SMESHGUI_PredicateFilter)
-};
-
-/*
-  Class       : SMESHGUI_QuadrangleFilter
-  Description : Verify whether selected cell is quadranle
-*/
-
-DEFINE_STANDARD_HANDLE(SMESHGUI_QuadrangleFilter, SMESHGUI_Filter)
-
-class SMESHGUI_QuadrangleFilter : public SMESHGUI_Filter
-{
-
-public:
-                              SMESHGUI_QuadrangleFilter();
-  virtual                     ~SMESHGUI_QuadrangleFilter();
-
-  virtual bool                IsValid( const int theCellId ) const;
-  virtual bool                IsObjValid( const int theObjId ) const;
-  virtual int                 GetId() const;
-  virtual bool                IsNodeFilter() const;
-
-public:
-  DEFINE_STANDARD_RTTI(SMESHGUI_QuadrangleFilter)
-};
-
-/*
-  Class       : SMESHGUI_TriangleFilter
-  Description : Verify whether selected cell is triangle
-*/
-
-DEFINE_STANDARD_HANDLE(SMESHGUI_TriangleFilter, SMESHGUI_Filter)
-
-class SMESHGUI_TriangleFilter : public SMESHGUI_Filter
-{
-
-public:
-                              SMESHGUI_TriangleFilter();
-  virtual                     ~SMESHGUI_TriangleFilter();
-
-  virtual bool                IsValid( const int theCellId ) const;
-  virtual bool                IsObjValid( const int theObjId ) const;
-  virtual int                 GetId() const;
-  virtual bool                IsNodeFilter() const;  
-
-public:
-  DEFINE_STANDARD_RTTI(SMESHGUI_TriangleFilter)
-};
-
-/*
-  Class       : SMESHGUI_FacesFilter
-  Description : Verify whether selected cell is any face
-*/
-
-DEFINE_STANDARD_HANDLE(SMESHGUI_FacesFilter, SMESHGUI_Filter)
-
-class SMESHGUI_FacesFilter : public SMESHGUI_Filter
-{
-
-public:
-                              SMESHGUI_FacesFilter();
-  virtual                     ~SMESHGUI_FacesFilter();
-
-  virtual bool                IsValid( const int theCellId ) const;
-  virtual bool                IsObjValid( const int theObjId ) const;
-  virtual int                 GetId() const;
-  virtual bool                IsNodeFilter() const;  
-
-public:
-  DEFINE_STANDARD_RTTI(SMESHGUI_FacesFilter)
-};
-
-/*
-  Class       : SMESHGUI_VolumesFilter
-  Description : Verify whether selected cell is any volume
-*/
-
-DEFINE_STANDARD_HANDLE(SMESHGUI_VolumesFilter, SMESHGUI_Filter)
-
-class SMESHGUI_VolumesFilter : public SMESHGUI_Filter
-{
-
-public:
-                              SMESHGUI_VolumesFilter();
-  virtual                     ~SMESHGUI_VolumesFilter();
-
-  virtual bool                IsValid( const int theCellId ) const;
-  virtual bool                IsObjValid( const int theObjId ) const;
-  virtual int                 GetId() const;
-  virtual bool                IsNodeFilter() const;  
-
-public:
-  DEFINE_STANDARD_RTTI(SMESHGUI_VolumesFilter)
-};
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx b/src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx
deleted file mode 100644 (file)
index a6e560f..0000000
+++ /dev/null
@@ -1,1133 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_FilterLibraryDlg.cxx
-//  Author : Sergey LITONIN
-//  Module : SMESH
-
-#include "SMESHGUI_FilterLibraryDlg.h"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
-#include "SMESHGUI_FilterUtils.h"
-
-#include "SUIT_Session.h"
-#include "SUIT_Desktop.h"
-#include "SUIT_FileDlg.h"
-
-// QT Includes
-#include <qapplication.h>
-#include <qmessagebox.h>
-#include <qframe.h>
-#include <qlayout.h>
-#include <qlineedit.h>
-#include <qpushbutton.h>
-#include <qgroupbox.h>
-#include <qlabel.h>
-#include <qlistbox.h>
-#include <qfile.h>
-#include <qfileinfo.h>
-#include <qdir.h>
-
-#define SPACING 5
-#define MARGIN  10
-
-/*!
- *  Class       : SMESHGUI_FilterLibraryDlg::Dialog
- *  Description : Dialog for opening filter library
- */
-
-class SMESHGUI_FilterLibraryDlg::Dialog : public SUIT_FileDlg
-{
- public:
-  Dialog(QWidget* theParent, const bool theToOpen);
-  virtual ~Dialog();
-
- protected:
-  virtual bool acceptData();
-};
-
-SMESHGUI_FilterLibraryDlg::Dialog::Dialog (QWidget*   theParent,
-                                           const bool theToOpen)
-     : SUIT_FileDlg(theParent, theToOpen)
-{
-}
-
-SMESHGUI_FilterLibraryDlg::Dialog::~Dialog()
-{
-}
-
-bool SMESHGUI_FilterLibraryDlg::Dialog::acceptData()
-{
-//  if (mode() != QFileDialogP::AnyFile)
-//    return SUIT_FileDlg::acceptData();
-
-  return true;
-}
-
-/*!
- *  Class       : SMESHGUI_FilterLibraryDlg
- *  Description : Dialog to specify filters for VTK viewer
- */
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg
-// Purpose : Constructor
-//=======================================================================
-SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg (SMESHGUI* theModule,
-                                                      QWidget* parent,
-                                                      const QValueList<int>& theTypes,
-                                                      const int              theMode,
-                                                      const char*            theName)
-     : QDialog( parent, theName, true, WStyle_Customize |
-                WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
-     mySMESHGUI( theModule )
-{
-  construct(theTypes, theMode);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg
-// Purpose : Constructor
-//=======================================================================
-SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg (SMESHGUI* theModule,
-                                                      QWidget* parent,
-                                                      const int   theType,
-                                                      const int   theMode,
-                                                      const char* theName)
-     : QDialog( parent, theName, true, WStyle_Customize |
-                WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
-     mySMESHGUI( theModule )
-{
-  QValueList<int> aTypes;
-  aTypes.append(theType);
-  construct(aTypes, theMode);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::construct
-// Purpose : Construct dialog (called by constructor)
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::construct (const QValueList<int>& theTypes,
-                                           const int theMode)
-{
-  myTypes = theTypes;
-  myMode  = theMode;
-
-  QVBoxLayout* aDlgLay = new QVBoxLayout(this, MARGIN, SPACING);
-
-  myMainFrame        = createMainFrame  (this);
-  QFrame* aBtnFrame  = createButtonFrame(this);
-
-  aDlgLay->addWidget(myMainFrame);
-  aDlgLay->addWidget(aBtnFrame);
-
-  aDlgLay->setStretchFactor(myMainFrame, 1);
-
-  Init(myTypes, myMode);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::createMainFrame
-// Purpose : Create frame containing dialog's input fields
-//=======================================================================
-QFrame* SMESHGUI_FilterLibraryDlg::createMainFrame (QWidget* theParent)
-{
-  QGroupBox* aMainFrame = new QGroupBox(1, Qt::Horizontal, theParent);
-  aMainFrame->setFrameStyle(QFrame::NoFrame);
-  aMainFrame->setInsideMargin(0);
-
-  // library name
-
-  QGroupBox* aGrp = new QGroupBox(1, Qt::Vertical, aMainFrame);
-  aGrp->setFrameStyle(QFrame::NoFrame);
-  aGrp->setInsideMargin(0);
-
-  new QLabel(tr("LIBRARY_FILE"), aGrp);
-  myFileName = new QLineEdit(aGrp);
-  myOpenBtn = new QPushButton(aGrp);
-  myOpenBtn->setPixmap(SUIT_Session::session()->resourceMgr()->loadPixmap(
-    "SUIT", tr("ICON_FILE_OPEN")));
-
-  // filters list box
-
-  aGrp = new QGroupBox(1, Qt::Vertical, tr("FILTER_NAMES"), aMainFrame);
-  QFrame* aFrame = new QFrame(aGrp);
-  myListBox = new QListBox(aFrame);
-  myAddBtn = new QPushButton(tr("ADD"), aFrame);
-  myDeleteBtn = new QPushButton(tr("DELETE"), aFrame);
-
-  QGridLayout* aLay = new QGridLayout(aFrame, 3, 2, 0, 5);
-  aLay->addMultiCellWidget(myListBox, 0, 2, 0, 0);
-  aLay->addWidget(myAddBtn, 0, 1);
-  aLay->addWidget(myDeleteBtn, 1, 1);
-  QSpacerItem* aVSpacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
-  aLay->addItem(aVSpacer, 2, 1);
-
-  // filter name
-
-  myNameGrp = new QGroupBox(1, Qt::Vertical, aMainFrame);
-  myNameGrp->setFrameStyle(QFrame::NoFrame);
-  myNameGrp->setInsideMargin(0);
-  new QLabel(tr("FILTER_NAME"), myNameGrp);
-  myName = new QLineEdit(myNameGrp);
-
-  // table
-
-  myTable = new SMESHGUI_FilterTable( mySMESHGUI, aMainFrame, myTypes);
-  myTable->SetEditable(myMode == EDIT);
-  myTable->SetLibsEnabled(false);
-
-  myListBox->setMinimumHeight((int)(myTable->sizeHint().height() * 0.5));
-  myListBox->setRowMode(QListBox::FitToWidth);
-  myListBox->setSelectionMode(QListBox::Single);
-
-  myOpenBtn->setAutoDefault(false);
-  myAddBtn->setAutoDefault(false);
-  myDeleteBtn->setAutoDefault(false);
-
-  // connect signals and slots
-
-  connect(myFileName, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
-  connect(myOpenBtn , SIGNAL(clicked()), this, SLOT(onBrowse()));
-
-  connect(myListBox, SIGNAL(highlighted(const QString&)),
-           this, SLOT(onFilterChanged(const QString&)));
-
-  connect(myAddBtn, SIGNAL(clicked()), this, SLOT(onAddBtnPressed()));
-  connect(myDeleteBtn, SIGNAL(clicked()), this, SLOT(onDeleteBtnPressed()));
-
-  connect(myName, SIGNAL(textChanged(const QString&)),
-           this, SLOT(onFilterNameChanged(const QString&)));
-
-  connect(myTable, SIGNAL(EntityTypeChanged(const int)),
-           this, SLOT(onEntityTypeChanged(const int)));
-
-  connect(myTable, SIGNAL(NeedValidation()), this, SLOT(onNeedValidation()));
-
-  return aMainFrame;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::createButtonFrame
-// Purpose : Create frame containing buttons
-//=======================================================================
-QFrame* SMESHGUI_FilterLibraryDlg::createButtonFrame (QWidget* theParent)
-{
-  QGroupBox* aGrp = new QGroupBox(1, Qt::Vertical, theParent);
-
-  myButtons[ BTN_OK    ] = new QPushButton(tr("SMESH_BUT_OK"   ), aGrp);
-  myButtons[ BTN_Apply ] = new QPushButton(tr("SMESH_BUT_APPLY"), aGrp);
-
-  QLabel* aLbl = new QLabel(aGrp);
-  aLbl->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
-
-  myButtons[ BTN_Cancel ] = new QPushButton(tr("SMESH_BUT_CANCEL"), aGrp);
-  myButtons[ BTN_Close  ] = new QPushButton(tr("SMESH_BUT_CLOSE"), aGrp);
-
-  connect(myButtons[ BTN_OK     ], SIGNAL(clicked()), SLOT(onOk()));
-  connect(myButtons[ BTN_Cancel ], SIGNAL(clicked()), SLOT(onClose()));
-  connect(myButtons[ BTN_Close  ], SIGNAL(clicked()), SLOT(onClose()));
-  connect(myButtons[ BTN_Apply  ], SIGNAL(clicked()), SLOT(onApply()));
-
-  QMap<int, QPushButton*>::iterator anIter;
-  for (anIter = myButtons.begin(); anIter != myButtons.end(); ++anIter)
-    anIter.data()->setAutoDefault(false);
-
-  updateMainButtons();
-
-  return aGrp;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::updateMainButtons
-// Purpose : Update visibility of main buttons (OK, Cancel, Close ...)
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::updateMainButtons()
-{
-  if (myTypes.count() == 1) {
-    myButtons[ BTN_Cancel ]->show();
-    myButtons[ BTN_Apply  ]->hide();
-    myButtons[ BTN_Close  ]->hide();
-  } else {
-    myButtons[ BTN_Cancel ]->hide();
-    myButtons[ BTN_Apply  ]->show();
-    myButtons[ BTN_Close  ]->show();
-  }
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::~SMESHGUI_FilterLibraryDlg
-// Purpose : Destructor
-//=======================================================================
-SMESHGUI_FilterLibraryDlg::~SMESHGUI_FilterLibraryDlg()
-{
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::Init
-// Purpose : Init dialog fields, connect signals and slots, show dialog
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::Init (const int type, const int theMode)
-{
-  QValueList<int> aTypes;
-  aTypes.append(type);
-  Init(aTypes, theMode);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::Init
-// Purpose : Init dialog fields, connect signals and slots, show dialog
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::Init (const QValueList<int>& theTypes,
-                                      const int theMode)
-{
-  myMode = theMode;
-  myTypes = theTypes;
-  myTable->Init(theTypes);
-  myCurrFilterName = "";
-  myCurrFilter = -1;
-  myListBox->clear();
-  myName->clear();
-  myTable->Clear();
-
-  updateControlsVisibility();
-  setEnabled(true);
-
-  connect( mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), SLOT(onDeactivate()));
-  connect( mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), SLOT(onClose()));
-
-  if (myMode == ADD_TO)
-  {
-    setCaption(tr("ADD_TO_TLT"));
-    if (myFileName->text().isEmpty())
-      myFileName->setText(getDefaultLibraryName());
-    processNewLibrary();
-  }
-  else if (myMode == COPY_FROM)
-  {
-    setCaption(tr("COPY_FROM_TLT"));
-    if (myFileName->text().isEmpty())
-      myFileName->setText(getDefaultLibraryName());
-    processNewLibrary();
-    if (myListBox->count() > 0)
-      myListBox->setCurrentItem(0);
-  }
-  else
-  {
-    setCaption(tr("EDIT_LIB_TLT"));
-    if (myFileName->text().isEmpty())
-      myFileName->setText(getDefaultLibraryName());
-    processNewLibrary();
-    if (myListBox->count() > 0)
-      myListBox->setCurrentItem(0);
-  }
-
-  int x, y;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-
-  this->show();
-
-  updateMainButtons();
-  isPermissionValid(false);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::updateControlsVisibility
-// Purpose : Update visibility of controls in accordance with myMode
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::updateControlsVisibility()
-{
-  if (myMode == ADD_TO)
-  {
-    myNameGrp->show();
-    myNameGrp->setEnabled(true);
-    myAddBtn->hide();
-    myDeleteBtn->hide();
-    myTable->SetEditable(false);
-  }
-  else if (myMode == COPY_FROM)
-  {
-    myNameGrp->hide();
-    myNameGrp->setEnabled(false);
-    myAddBtn->hide();
-    myDeleteBtn->hide();
-    myTable->SetEditable(false);
-  }
-  else if (myMode == EDIT)
-  {
-    myNameGrp->show();
-    myNameGrp->setEnabled(true);
-    myAddBtn->show();
-    myDeleteBtn->show();
-    myTable->SetEditable(true);
-  }
-
-  qApp->processEvents();
-  updateGeometry();
-  adjustSize();
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onApply
-// Purpose : SLOT called when "Apply" button pressed.
-//=======================================================================
-bool SMESHGUI_FilterLibraryDlg::onApply()
-{
-  if (!isValid(true) || !isPermissionValid(false))
-    return false;
-
-  if (myLibrary->_is_nil()) {
-    QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_WRN_WARNING"),
-                             tr("LIBRARY_IS_NOT_LOADED"), QMessageBox::Ok);
-    return false;
-  }
-
-  const char* aName = myFileName->text().latin1();
-  if (strcmp(myLibrary->GetFileName(), aName) != 0)
-    myLibrary->SetFileName(aName);
-
-  bool aResult = false;
-
-  if (myMode == COPY_FROM || myListBox->count() == 0) {
-    aResult = true;
-  } else if (myMode == EDIT || myMode == ADD_TO) {
-    SMESH::Filter_var aFilter = createFilter();
-    if (!myLibrary->Replace(myCurrFilterName, myName->text(), aFilter.in())) {
-      QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"),
-                               tr("ERROR_OF_EDITING"), QMessageBox::Ok);
-      aResult = false;
-    }
-    else
-      aResult = true;
-  }
-
-  if (aResult && myMode != COPY_FROM)
-    aResult = myLibrary->Save();
-
-  if (aResult) {
-    char* aFileName = myLibrary->GetFileName();
-    getDefaultLibraryName() = QString(aFileName);
-    delete aFileName;
-  } else if (myMode != COPY_FROM) {
-    QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"),
-                             tr("ERROR_OF_SAVING"), QMessageBox::Ok);
-  } else {
-  }
-
-  return aResult;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onOk
-// Purpose : SLOT called when "Ok" button pressed.
-//           Assign filters VTK viewer and close dialog
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onOk()
-{
-  if (onApply())
-  {
-    disconnect( mySMESHGUI, 0, this, 0);
-    mySMESHGUI->ResetState();
-    accept();
-  }
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onClose
-// Purpose : SLOT called when "Close" button pressed. Close dialog
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onClose()
-{
-  disconnect( mySMESHGUI, 0, this, 0);
-  mySMESHGUI->ResetState();
-  reject();
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onDeactivate
-// Purpose : SLOT called when dialog must be deativated
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onDeactivate()
-{
-  setEnabled(false);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::enterEvent
-// Purpose : Event filter
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::enterEvent(QEvent*)
-{
-  setEnabled(true);
-}
-
-//=================================================================================
-// function : closeEvent()
-// purpose  : Close dialog
-//=================================================================================
-void SMESHGUI_FilterLibraryDlg::closeEvent(QCloseEvent* e)
-{
-  onClose();
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::getFileName
-// Purpose : Get file name
-//=======================================================================
-QString SMESHGUI_FilterLibraryDlg::getFileName() const
-{
-  return myFileName != 0 ? myFileName->text() : QString("");
-}
-
-//================================================================
-// Function : setFileName
-// Purpose  : Set file name to line edit
-//================================================================
-void SMESHGUI_FilterLibraryDlg::setFileName(const QString& txt, const bool autoExt)
-{
-  if (myFileName == 0)
-    return;
-  myFileName->setText(autoExt ? autoExtension(txt) : txt);
-}
-
-//================================================================
-// Function : autoExtension
-// Purpose  : Append extension to the file name
-//================================================================
-QString SMESHGUI_FilterLibraryDlg::autoExtension(const QString& theFileName) const
-{
-  QString anExt = theFileName.section('.', -1);
-  return anExt != "xml" && anExt != "XML" ? theFileName + ".xml" : theFileName;
-}
-
-//================================================================
-// Function : filterWildCards
-// Purpose  :
-//================================================================
-QStringList SMESHGUI_FilterLibraryDlg::filterWildCards(const QString& theFilter) const
-{
-  QStringList res;
-
-  int b = theFilter.findRev("(");
-  int e = theFilter.findRev(")");
-  if (b != -1 && e != -1)
-  {
-    QString content = theFilter.mid(b + 1, e - b - 1).stripWhiteSpace();
-    QStringList lst = QStringList::split(" ", content);
-    for (QStringList::const_iterator it = lst.begin(); it != lst.end(); ++it)
-      if ((*it).find(".") != -1)
-        res.append((*it).stripWhiteSpace());
-  }
-  return res;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::prepareFilters
-// Purpose : Prepare filters for dialog
-//=======================================================================
-QStringList SMESHGUI_FilterLibraryDlg::prepareFilters() const
-{
-  static QStringList aList;
-  if (aList.isEmpty())
-  {
-    aList.append(tr("XML_FILT"));
-    //aList.append(tr("ALL_FILES_FILTER"));
-  }
-
-  return aList;
-}
-
-//================================================================
-// Function : onBrowse
-// Purpose  : SLOT. Display "Open file" dialog for chosing library name
-//================================================================
-void SMESHGUI_FilterLibraryDlg::onBrowse()
-{
-  Dialog* aDlg = new Dialog(this, true);
-  aDlg->setCaption(tr("OPEN_LIBRARY"));
-
-  //aDlg->setMode(myMode == COPY_FROM ? QFileDialogP::ExistingFile : QFileDialogP::AnyFile);
-  aDlg->setMode(myMode == COPY_FROM ? QFileDialog::ExistingFile : QFileDialog::AnyFile);
-  aDlg->setFilters(prepareFilters());
-  aDlg->setSelection(getFileName());
-
-  QPushButton* anOkBtn = (QPushButton*)aDlg->child("OK", "QPushButton");
-  if (anOkBtn != 0)
-    anOkBtn->setText(tr("SMESH_BUT_OK"));
-
-  if (aDlg->exec() != Accepted)
-    return;
-
-  QString fName = aDlg->selectedFile();
-
-  if (fName.isEmpty())
-    return;
-
-  if (QFileInfo(fName).extension().isEmpty())
-    fName = autoExtension(fName);
-
-  fName = QDir::convertSeparators(fName);
-  QString prev = QDir::convertSeparators(getFileName());
-
-  if (prev == fName)
-    return;
-
-  setFileName(fName);
-
-  QString aName = myListBox->text(myListBox->count() - 1);
-  processNewLibrary();
-
-  if (myMode == ADD_TO)
-  {
-    myTable->Copy((SMESHGUI_FilterTable*)parentWidget());
-    myCurrFilterName = "";
-    myCurrFilter = -1;
-    addFilterToLib(aName);
-  }
-
-  isPermissionValid(false);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::processNewLibrary
-// Purpose : SLOT. Calleds when file name changed
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::processNewLibrary()
-{
-  SMESH::FilterManager_var aFilterMgr = SMESH::GetFilterManager();
-  if (aFilterMgr->_is_nil())
-    return;
-
-  myLibrary = aFilterMgr->LoadLibrary(autoExtension(getFileName()));
-  if (myLibrary->_is_nil()) {
-    if (myMode == COPY_FROM) {
-      QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"),
-                               tr("ERROR_LOAD"), QMessageBox::Ok);
-      return;
-    } else {
-      myLibrary = aFilterMgr->CreateLibrary();
-      myLibrary->SetFileName(getFileName().latin1());
-    }
-  }
-
-  updateList();
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::updateList
-// Purpose : Fill list box with filter names
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::updateList()
-{
-  QStringList aList;
-  SMESH::string_array_var aNames = myLibrary->GetNames((SMESH::ElementType)myTable->GetType());
-  for (int i = 0, n = aNames->length(); i < n; i++)
-    aList.append(QString(aNames[ i ]));
-  myListBox->clear();
-  myListBox->insertStringList(aList);
-  if (myListBox->count() == 0)
-  {
-    myTable->Clear(myTable->GetType());
-    myName->clear();
-    myName->setEnabled(false);
-    myTable->SetEnabled(false);
-  }
-  else
-  {
-    myName->setEnabled(true);
-    myTable->SetEnabled(true);
-    if (myListBox->count())
-    {
-      myCurrFilterName = "";
-      myListBox->setCurrentItem(0);
-    }
-  }
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::isNameValid
-// Purpose : Verify validity if entered data
-//=======================================================================
-bool SMESHGUI_FilterLibraryDlg::isNameValid(const bool theMess) const
-{
-  // verify validity of filter name
-  if (myName->isEnabled() && !myCurrFilterName.isEmpty()) {
-    QString aCurrName = myName->text();
-    if (aCurrName.isEmpty()) {
-      if (theMess)
-        QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
-                                 tr("EMPTY_FILTER_NAME"), QMessageBox::Ok);
-      return false;
-    }
-
-    SMESH::string_array_var aNames = myLibrary->GetAllNames();
-    for (int f = 0, n = aNames->length(); f < n; f++) {
-      if (aNames[ f ] == aCurrName && aNames[ f ] != myCurrFilterName) {
-        if (theMess)
-          QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
-                                   tr("ERROR_FILTER_NAME"), QMessageBox::Ok);
-        return false;
-      }
-    }
-  }
-
-  return true;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::isPermissionValid
-// Purpose : Verify write permission on file
-//=======================================================================
-bool SMESHGUI_FilterLibraryDlg::isPermissionValid(const bool theIsExistingOnly)
-{
-  if (myMode == COPY_FROM)
-    return true;
-
-  // Verify write permission
-  bool isWritable = false;
-
-  QString fName(myFileName->text());
-  if (QFileInfo(fName).extension().isEmpty())
-    fName = autoExtension(fName);
-
-  fName = QDir::convertSeparators(fName);
-
-  if (QFileInfo(fName).exists()) {
-    isWritable = QFileInfo(fName).isWritable();
-  } else if (!theIsExistingOnly) {
-    QFileInfo aDirInfo(QFileInfo(fName).dirPath(true));
-    isWritable = aDirInfo.isWritable();
-    /*if (QDir(QFileInfo(fName).dirPath(true)).exists() ||
-         QDir().mkdir(QFileInfo(fName).dirPath(true)))
-    {
-      QFile aFile(fName);
-      if (aFile.open(IO_WriteOnly))
-        isWritable = true;
-      else
-        aFile.close();
-    }
-    */
-  } else {
-    isWritable = true;
-  }
-
-  if (!isWritable) {
-    QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_WRN_WARNING"),
-                             tr("NO_PERMISSION"), QMessageBox::Ok);
-    return false;
-  }
-
-  return true;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::isValid
-// Purpose : Verify validity if entered data
-//=======================================================================
-bool SMESHGUI_FilterLibraryDlg::isValid(const bool theMess) const
-{
-  // verify validity of table
-  if (!myTable->IsValid(theMess) || !isNameValid(theMess))
-    return false;
-  else
-    return true;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onFilterChanged
-// Purpose : SLOT. Called when selected filter of library  changed
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onFilterChanged(const QString& theName)
-{
-  if (myLibrary->_is_nil())
-    return;
-
-  // Save parameters of filter if it was changed
-
-  if (!myCurrFilterName.isEmpty() && myTable->IsEditable())
-  {
-    if (!isValid(true))
-    {
-      myListBox->blockSignals(true);
-      myListBox->setCurrentItem(myCurrFilter);
-      myListBox->blockSignals(false);
-      return;
-    }
-
-    SMESH::Filter_var aFilter = createFilter();
-    myLibrary->Replace(myCurrFilterName.latin1(), myName->text().latin1(), aFilter);
-  }
-
-  // Fill table with filter parameters
-
-  SMESH::Filter_var aFilter = myLibrary->Copy(theName);
-  myCurrFilterName = theName;
-  myCurrFilter = myListBox->currentItem();
-  myName->setText(theName);
-
-
-  SMESH::Filter::Criteria_var aCriteria;
-
-  myTable->Clear(myTable->GetType());
-
-  if (!aFilter->GetCriteria(aCriteria))
-    return;
-
-  for (int i = 0, n = aCriteria->length(); i < n; i++)
-    myTable->AddCriterion(aCriteria[ i ], myTable->GetType());
-
-  myTable->Update();
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onReturnPressed
-// Purpose : SLOT. Called when enter button is pressed in library name field
-//           Reload library
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onReturnPressed()
-{
-  QString aName = myListBox->text(myListBox->count() - 1);
-
-  processNewLibrary();
-
-  if (myMode == ADD_TO)
-  {
-    myTable->Copy((SMESHGUI_FilterTable*)parentWidget());
-    myCurrFilterName = "";
-    myCurrFilter = -1;
-    addFilterToLib(aName);
-  }
-
-  isPermissionValid(false);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::enableMainButtons
-// Purpose : Update state of "OK", "Cancel" buttons
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::enableMainButtons()
-{
-  /*bool isEnabled = isValid(false);
-  if (myButtons.contains(BTN_OK))
-    myButtons[ BTN_OK ]->setEnabled(isEnabled);
-  else if (myButtons.contains(BTN_Apply))
-    myButtons[ BTN_OK ]->setEnabled(isEnabled);
-  if (myButtons.contains(BTN_Cancel))
-    myButtons[ BTN_Cancel ]->setEnabled(isEnabled);
-  else if (myButtons.contains(BTN_Close))
-    myButtons[ BTN_Cancel ]->setEnabled(isEnabled);
-    */
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::createFilter
-// Purpose : Cerate filter in accordance with library
-//=======================================================================
-SMESH::Filter_ptr SMESHGUI_FilterLibraryDlg::createFilter(const int theType)
-{
-  int n = myTable->NumRows(theType);
-
-  SMESH::Filter::Criteria_var aCriteria = new SMESH::Filter::Criteria;
-  aCriteria->length(n);
-
-  for (int i = 0; i < n; i++)
-  {
-    SMESH::Filter::Criterion aCriterion = SMESHGUI_FilterDlg::createCriterion();
-    myTable->GetCriterion(i, aCriterion);
-    aCriteria[ i ] = aCriterion;
-  }
-
-  SMESH::FilterManager_var aFilterMgr = SMESH::GetFilterManager();
-  SMESH::Filter_var aFilter = aFilterMgr->CreateFilter();
-  aFilter->SetCriteria(aCriteria.in());
-
-  return aFilter._retn();
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onAddBtnPressed
-// Purpose : SLOT. Called when "Add" button pressed
-//           Add new filter to the end of library
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onAddBtnPressed()
-{
-  // Save parameters of filter if it was changed
-  if (!myCurrFilterName.isEmpty() && myTable->IsEditable())
-  {
-    if (!isValid(true))
-      return;
-
-    SMESH::Filter_var aFilter = createFilter();
-    myLibrary->Replace(myCurrFilterName.latin1(), myName->text().latin1(), aFilter);
-  }
-
-  addFilterToLib(getDefaultFilterName());
-}
-
-//=======================================================================
-// name    : onAddBtnPressed()
-// Purpose : SLOT. Called when "Add" button pressed
-//           Add new filter to the end of library
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::addFilterToLib (const QString& theName)
-{
-  if (myLibrary->_is_nil()) {
-    QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_WRN_WARNING"),
-                             tr("LIBRARY_IS_NOT_LOADED"), QMessageBox::Ok);
-    return;
-  }
-
-  // create filter
-  SMESH::Filter_var aFilter = createFilter();
-
-  // if name of filter already exist in the library assign default name for the filter
-  QString aName(theName);
-  SMESH::string_array_var aNames = myLibrary->GetAllNames();
-  for (int i = 0, n = aNames->length(); i < n; i++)
-    if (aName == QString(aNames[ i ]))
-    {
-      aName = getDefaultFilterName();
-      break;
-    }
-
-  // add new filter in library
-  bool aResult = !aFilter->GetPredicate()->_is_nil()
-    ? myLibrary->Add(aName.latin1(), aFilter)
-    : myLibrary->AddEmpty(aName.latin1(), (SMESH::ElementType)myTable->GetType());
-
-  if (!aResult) {
-    QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"),
-                             tr("ERROR_OF_ADDING"), QMessageBox::Ok);
-  }
-
-  updateList();
-  myCurrFilterName = "";
-  myCurrFilter = -1;
-  setSelected(aName);
-
-  if (theName != aName)
-    QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_WARNING"),
-                             tr("ASSIGN_NEW_NAME").arg(theName).arg(aName), QMessageBox::Ok);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::getDefaultLibraryName
-// Purpose : Get default library name
-//=======================================================================
-QString& SMESHGUI_FilterLibraryDlg::getDefaultLibraryName() const
-{
-  static QString aName;
-  if (aName.isEmpty())
-  {
-    QString aHomeDir = QDir(QDir::home()).absPath();
-    aName = aHomeDir + "/" + tr ("LIB_NAME");
-  }
-  return aName;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::getDefaultFilterName
-// Purpose : Create default filter name
-//=======================================================================
-QString SMESHGUI_FilterLibraryDlg::getDefaultFilterName() const
-{
-  QString aName;
-
-  if (myTable->GetType() == SMESH::NODE)
-    aName = tr("NODE");
-  else if (myTable->GetType() == SMESH::EDGE)
-    aName = tr("EDGE");
-  else if (myTable->GetType() == SMESH::FACE)
-    aName = tr("FACE");
-  else if (myTable->GetType() == SMESH::VOLUME)
-    aName = tr("VOLUME");
-  else if (myTable->GetType() == SMESH::ALL)
-    aName = tr("ELEMENT");
-  else
-    aName = tr("SELECTION");
-
-  aName += tr("FILTER");
-
-
-  QMap< QString, int > anAllNames;
-  SMESH::string_array_var aNames = myLibrary->GetAllNames();
-  for(int i = 0, n = aNames->length(); i < n; i++)
-    anAllNames[ QString(aNames[ i ]) ] = -1;
-
-  bool isNotValid = true;
-  int k = 1;
-  QString aNewName;
-  while (isNotValid)
-  {
-    isNotValid = false;
-    aNewName = aName + "_" + QString("%1").arg(k);
-    if (anAllNames.contains(aNewName))
-    {
-      isNotValid = true;
-      k++;
-    }
-  }
-
-  return aNewName;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::setSelected
-// Purpose : set selected item in list box containing filters
-//=======================================================================
-bool SMESHGUI_FilterLibraryDlg::setSelected(const QString& theName)
-{
-  int anIndex = getIndex(theName);
-  if (anIndex != -1)
-  {
-    myListBox->setCurrentItem(anIndex);
-    myCurrFilterName = theName;
-    myCurrFilter = anIndex;
-  }
-  return anIndex != -1;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::getIndex
-// Purpose : Get index of the filter in list box
-//=======================================================================
-int SMESHGUI_FilterLibraryDlg::getIndex(const QString& theName) const
-{
-  for (int i = 0, n = myListBox->count(); i < n; i++)
-    if (myListBox->text(i) == theName)
-      return i;
-  return -1;
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onDeleteBtnPressed
-// Purpose : SLOT. Called when "Delete" button pressed
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onDeleteBtnPressed()
-{
-  if (myLibrary->_is_nil()) {
-    QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_WRN_WARNING"),
-                             tr("LIBRARY_IS_NOT_LOADED"), QMessageBox::Ok);
-    return;
-  }
-
-  int anIndex = getIndex(myCurrFilterName);
-
-  if (anIndex == -1 || !myLibrary->Delete(myCurrFilterName.latin1())) {
-    QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"),
-                             tr("ERROR_OF_DELETING"), QMessageBox::Ok);
-  } else {
-    myCurrFilterName = "";
-    myCurrFilter = -1;
-    myListBox->removeItem(anIndex);
-
-    if (anIndex >= 1)
-      myListBox->setSelected(anIndex - 1, true);
-    else if (anIndex == 0 && myListBox->count() > 0)
-      myListBox->setSelected(0, true);
-    else
-      myTable->Clear();
-  }
-
-  myTable->SetEnabled(myListBox->count() > 0);
-  if (myListBox->count() == 0) {
-    myName->setText("");
-    myName->setEnabled(false);
-  }
-}
-
-//=======================================================================
-// name    : onFilterNameChanged()
-// Purpose : SLOT. Called when name of filter changed
-//           Change filter name in list box
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onFilterNameChanged (const QString& theName)
-{
-  int aCurrItem = myListBox->currentItem();
-  if (aCurrItem == -1)
-    return;
-
-  myListBox->blockSignals(true);
-  myListBox->changeItem(theName, aCurrItem);
-  myListBox->blockSignals(false);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::SetTable
-// Purpose : Set table
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::SetTable(const SMESHGUI_FilterTable* theTable)
-{
-  myTable->Copy(theTable);
-  myName->setText(getDefaultFilterName());
-  addFilterToLib(myName->text());
-  myTable->Update();
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::GetTable
-// Purpose : Get table
-//=======================================================================
-const SMESHGUI_FilterTable* SMESHGUI_FilterLibraryDlg::GetTable() const
-{
-  return myTable;
-}
-
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onEntityTypeChanged
-// Purpose : SLOT. Called when entiyt type changed
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onEntityTypeChanged(const int theType)
-{
-  if (myLibrary->_is_nil())
-    return;
-
-  myName->clear();
-  myCurrFilterName = "";
-  myCurrFilter = -1;
-  updateList();
-  if (myListBox->count())
-    myListBox->setCurrentItem(0);
-}
-
-//=======================================================================
-// name    : SMESHGUI_FilterLibraryDlg::onNeedValidation
-// Purpose :
-//=======================================================================
-void SMESHGUI_FilterLibraryDlg::onNeedValidation()
-{
-  if (!myCurrFilterName.isEmpty())
-  {
-    bool valid = isValid(true);
-    myTable->SetValidity(valid);
-
-    if (valid)
-    {
-      SMESH::Filter_var aFilter = createFilter(myTable->GetType());
-      myLibrary->Replace(myCurrFilterName.latin1(), myName->text().latin1(), aFilter);
-    }
-  }
-}
diff --git a/src/SMESHGUI/SMESHGUI_FilterLibraryDlg.h b/src/SMESHGUI/SMESHGUI_FilterLibraryDlg.h
deleted file mode 100644 (file)
index 8fbc6f9..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_FilterLibraryDlg.h
-//  Author : Sergey LITONIN
-//  Module : SMESH
-
-
-#ifndef SMESHGUI_FilterLibraryDlg_H
-#define SMESHGUI_FilterLibraryDlg_H
-
-#include <qdialog.h>
-#include <SMESHGUI_FilterDlg.h>
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Filter)
-
-class QCloseEvent;
-class QListBox;
-class QFrame;
-class QEvent;
-class QLineEdit;
-class QPushButton;
-class QGroupBox;
-
-/*
-  Class       : SMESHGUI_FilterLibraryDlg
-  Description : Dialog to specify filters for VTK viewer
-*/
-
-class SMESHGUI_FilterLibraryDlg : public QDialog
-{ 
-  Q_OBJECT
-  
-  // Buttons
-  enum { BTN_OK, BTN_Cancel, BTN_Apply, BTN_Close };
-
-  class Dialog;
-  
-public:
-  
-  // Mode
-  enum { ADD_TO, COPY_FROM, EDIT };
-    
-public:
-  
-                              SMESHGUI_FilterLibraryDlg( SMESHGUI*,
-                                                        QWidget*,
-                                                         const QValueList<int>& types,
-                                                         const int              mode,
-                                                         const char*            name = 0 );
-                                                
-                              SMESHGUI_FilterLibraryDlg( SMESHGUI*,
-                                                        QWidget*,
-                                                         const int              type,
-                                                         const int              mode,
-                                                         const char*            name = 0 );
-                                                         
-  virtual                     ~SMESHGUI_FilterLibraryDlg();
-                            
-  void                        Init( const QValueList<int>& types, const int theMode );
-  void                        Init( const int type, const int theMode );
-  
-  const SMESHGUI_FilterTable* GetTable() const;
-  void                        SetTable( const SMESHGUI_FilterTable* );
-
-private:
-
-  void                        closeEvent( QCloseEvent* e ) ;
-  void                        enterEvent ( QEvent * ) ;            
-  
-private slots:
-
-  void                        onOk();
-  bool                        onApply();
-  void                        onClose();
-
-  void                        onDeactivate();
-  
-  void                        onBrowse();
-  void                        onReturnPressed();
-  void                        onFilterChanged( const QString& );
-  void                        onAddBtnPressed();
-  void                        onDeleteBtnPressed();
-  void                        onFilterNameChanged( const QString& );
-  void                        onEntityTypeChanged( const int );
-  void                        onNeedValidation();
-
-private:
-
-  void                        construct( const QValueList<int>& types, const int mode ); 
-  QFrame*                     createButtonFrame( QWidget* );
-  QFrame*                     createMainFrame  ( QWidget* );
-  bool                        isValid( const bool theMess = true ) const;
-  bool                        isNameValid( const bool theMess = true ) const;
-  SMESH::Filter_ptr           createFilter( const int theType = -1 );
-  QStringList                 prepareFilters() const;
-  QString                     autoExtension( const QString& ) const;
-  bool                        setSelected( const QString& );
-  int                         getIndex( const QString& ) const;
-  void                        updateControlsVisibility();
-  void                        updateMainButtons();
-  void                        enableMainButtons();
-  void                        processNewLibrary();
-  QString                     getFileName() const;
-  void                        setFileName( const QString& txt, const bool autoExtension = true );
-  QStringList                 filterWildCards( const QString& theFilter ) const;
-  QString&                    getDefaultLibraryName() const;
-  QString                     getDefaultFilterName() const;
-  void                        addFilterToLib( const QString& name );
-  void                        updateList();
-  bool                        isPermissionValid( const bool theIsExistingOnly );
-
-private:
-
-  QFrame*                     myMainFrame;
-  QMap<int, QPushButton*>     myButtons;
-  SMESHGUI_FilterTable*       myTable;
-  QLineEdit*                  myFileName;
-  QPushButton*                myOpenBtn;
-  QListBox*                   myListBox;
-  QPushButton*                myAddBtn;
-  QPushButton*                myDeleteBtn;
-  QGroupBox*                  myNameGrp;
-  QLineEdit*                  myName;
-  SMESHGUI*                   mySMESHGUI;
-
-  QValueList<int>             myTypes;
-  int                         myMode;
-      
-  SMESH::FilterLibrary_var    myLibrary;
-  QString                     myCurrFilterName;
-  int                         myCurrFilter;
-
-};
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_FilterUtils.cxx b/src/SMESHGUI/SMESHGUI_FilterUtils.cxx
deleted file mode 100644 (file)
index e5c529f..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-
-#include "SMESHGUI_FilterUtils.h"
-
-#include "SMESHGUI.h"
-
-#include "utilities.h"
-
-namespace SMESH
-{
-  SMESH::FilterManager_var& GetFilterManager()
-  {
-    static SMESH::FilterManager_var aFilterManager;
-    if (CORBA::is_nil(aFilterManager)) {
-        aFilterManager = SMESHGUI::GetSMESHGen()->CreateFilterManager();
-    }
-    return aFilterManager;
-  }
-}
diff --git a/src/SMESHGUI/SMESHGUI_FilterUtils.h b/src/SMESHGUI/SMESHGUI_FilterUtils.h
deleted file mode 100644 (file)
index 6b8c758..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef SMESHGUI_FilterUtils_HeaderFile
-#define SMESHGUI_FilterUtils_HeaderFile
-
-#include "SALOMEconfig.h"
-#include CORBA_SERVER_HEADER(SMESH_Filter)
-
-
-namespace SMESH{
-
-  SMESH::FilterManager_var& GetFilterManager();
-
-}
-
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx b/src/SMESHGUI/SMESHGUI_GEOMGenUtils.cxx
deleted file mode 100644 (file)
index c9ffc82..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-#include <boost/shared_ptr.hpp>
-
-#include "SMESHGUI_GEOMGenUtils.h"
-#include "SMESHGUI_Utils.h"
-
-#include <GeometryGUI.h>
-
-#include <SALOMEDSClient_SObject.hxx>
-#include <SALOMEDSClient_ChildIterator.hxx>
-#include <SALOMEDS_SObject.hxx>
-
-#include CORBA_CLIENT_HEADER(SMESH_Mesh)
-
-
-namespace SMESH {
-
-  GEOM::GEOM_Gen_var GetGEOMGen()
-  {
-    static GEOM::GEOM_Gen_var aGEOMGen;
-
-    if(CORBA::is_nil(aGEOMGen))
-        aGEOMGen = GeometryGUI::GetGeomGen();
-    return aGEOMGen;
-  }
-
-  GEOM::GEOM_Object_var GetShapeOnMeshOrSubMesh(_PTR(SObject) theMeshOrSubmesh)
-  {
-    SALOMEDS_SObject* aMeshOrSubmesh = _CAST(SObject,theMeshOrSubmesh);
-    if(aMeshOrSubmesh) {
-      CORBA::Object_var Obj = aMeshOrSubmesh->GetObject();
-      if ( !CORBA::is_nil( Obj ) ) {
-        SMESH::SMESH_Mesh_var aMesh =
-          SObjectToInterface<SMESH::SMESH_Mesh>( theMeshOrSubmesh );
-        if ( !aMesh->_is_nil() )
-          return aMesh->GetShapeToMesh();
-        SMESH::SMESH_subMesh_var aSubmesh =
-          SObjectToInterface<SMESH::SMESH_subMesh>( theMeshOrSubmesh );
-        if ( !aSubmesh->_is_nil() )
-         return aSubmesh->GetSubShape();
-      }
-    }
-    return GEOM::GEOM_Object::_nil();
-  }
-
-  GEOM::GEOM_Object_ptr GetGeom (_PTR(SObject) theSO)
-  {
-    if (!theSO)
-      return GEOM::GEOM_Object::_nil();
-
-    _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
-    if (!aStudy)
-      return GEOM::GEOM_Object::_nil();
-
-    _PTR(ChildIterator) anIter (aStudy->NewChildIterator(theSO));
-    for (; anIter->More(); anIter->Next()) {
-      _PTR(SObject) aSObject = anIter->Value();
-      _PTR(SObject) aRefSOClient;
-      GEOM::GEOM_Object_var aMeshShape;
-
-      if (aSObject->ReferencedObject(aRefSOClient)) {
-        SALOMEDS_SObject* aRefSO = _CAST(SObject,aRefSOClient);
-        aMeshShape = GEOM::GEOM_Object::_narrow(aRefSO->GetObject());
-      } else {
-       SALOMEDS_SObject* aSO = _CAST(SObject,aSObject);
-        aMeshShape = GEOM::GEOM_Object::_narrow(aSO->GetObject());
-      }
-
-      if (!aMeshShape->_is_nil())
-        return aMeshShape._retn();
-    }
-    return GEOM::GEOM_Object::_nil();
-  }
-}
diff --git a/src/SMESHGUI/SMESHGUI_GEOMGenUtils.h b/src/SMESHGUI/SMESHGUI_GEOMGenUtils.h
deleted file mode 100644 (file)
index 6f2ccb9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-//
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef SMESHGUI_GEOMGenUtils_HeaderFile
-#define SMESHGUI_GEOMGenUtils_HeaderFile
-
-#include "SALOMEconfig.h"
-#include CORBA_SERVER_HEADER(GEOM_Gen)
-
-#include "SALOMEDSClient_definitions.hxx"
-
-class SALOMEDSClient_SObject;
-
-namespace SMESH
-{
-  GEOM::GEOM_Gen_var GetGEOMGen();
-
-  GEOM::GEOM_Object_var GetShapeOnMeshOrSubMesh (_PTR(SObject) theSObject);
-
-  GEOM::GEOM_Object_ptr GetGeom (_PTR(SObject) theSO);
-}
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx
deleted file mode 100644 (file)
index 9bf9e43..0000000
+++ /dev/null
@@ -1,1448 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_GroupDlg.cxx
-//  Author : Natalia KOPNOVA
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHGUI_GroupDlg.h"
-#include "SMESHGUI_FilterDlg.h"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
-#include "SMESHGUI_VTKUtils.h"
-#include "SMESHGUI_MeshUtils.h"
-#include "SMESHGUI_GroupUtils.h"
-#include "SMESHGUI_FilterUtils.h"
-#include "SMESHGUI_GEOMGenUtils.h"
-
-#include "SMESH_TypeFilter.hxx"
-#include "SMESH_Actor.h"
-#include "GEOMBase.h"
-
-#include "SUIT_Desktop.h"
-#include "SUIT_ResourceMgr.h"
-
-#include "SalomeApp_Tools.h"
-#include "SALOMEDSClient_Study.hxx"
-#include "SALOME_ListIO.hxx"
-#include "SALOME_ListIteratorOfListIO.hxx"
-
-#include "SVTK_ViewWindow.h"
-#include "SVTK_Selector.h"
-
-#include "utilities.h"
-
-// OCCT Includes
-#include <TColStd_MapOfInteger.hxx>
-
-// QT Includes
-#include <qbuttongroup.h>
-#include <qgroupbox.h>
-#include <qhbox.h>
-#include <qlabel.h>
-#include <qlineedit.h>
-#include <qpushbutton.h>
-#include <qradiobutton.h>
-#include <qcheckbox.h>
-#include <qlayout.h>
-#include <qlistbox.h>
-#include <qimage.h>
-#include <qpixmap.h>
-#include <qmemarray.h>
-#include <qwidgetstack.h>
-
-// STL includes
-#include <vector>
-#include <algorithm>
-
-using namespace std;
-
-//=================================================================================
-// function : SMESHGUI_GroupDlg()
-// purpose  :
-//=================================================================================
-SMESHGUI_GroupDlg::SMESHGUI_GroupDlg( SMESHGUI* theModule, const char* name,
-                                     SMESH::SMESH_Mesh_ptr theMesh, bool modal, WFlags fl)
-     : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
-                WStyle_Title | WStyle_SysMenu | WDestructiveClose),
-     mySMESHGUI( theModule ),
-     mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
-     myIsBusy( false ),
-     myActor( 0 )
-{
-  if (!name) setName("SMESHGUI_GroupDlg");
-  initDialog(true);
-  if (!theMesh->_is_nil())
-    init(theMesh);
-  else {
-    mySelectSubMesh->setEnabled(false);
-    mySelectGroup->setEnabled(false);
-    myGeomGroupBtn->setEnabled(false);
-    myGeomGroupLine->setEnabled(false);
-  }
-
-  mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
-
-  /* Move widget on the botton right corner of main widget */
-  int x, y ;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-}
-
-//=================================================================================
-// function : SMESHGUI_GroupDlg()
-// purpose  :
-//=================================================================================
-SMESHGUI_GroupDlg::SMESHGUI_GroupDlg( SMESHGUI* theModule, const char* name,
-                                     SMESH::SMESH_Group_ptr theGroup, bool modal, WFlags fl)
-     : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
-                WStyle_Title | WStyle_SysMenu | WDestructiveClose),
-     mySMESHGUI( theModule ),
-     mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
-     myIsBusy( false )
-{
-  if (!name) setName("SMESHGUI_GroupDlg");
-
-  mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
-
-  initDialog(false);
-  if (!theGroup->_is_nil())
-    init(theGroup);
-  else {
-    mySelectSubMesh->setEnabled(false);
-    mySelectGroup->setEnabled(false);
-
-    myCurrentLineEdit = myMeshGroupLine;
-    setSelectionMode(5);
-  }
-  
-  /* Move widget on the botton right corner of main widget */
-  int x, y ;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-}
-
-//=================================================================================
-// function : SMESHGUI_GroupDlg()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::initDialog(bool create)
-{
-  myFilterDlg = 0;
-  myCreate = create;
-  myCurrentLineEdit = 0;
-
-  QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
-
-  if (create)
-    setCaption(tr("SMESH_CREATE_GROUP_TITLE"));
-  else
-    setCaption(tr("SMESH_EDIT_GROUP_TITLE"));
-
-  setSizeGripEnabled(TRUE);
-
-  QGridLayout* aMainLayout = new QGridLayout(this, 7, 3, 11, 6);
-
-  /***************************************************************/
-  QLabel* meshGroupLab = new QLabel(this, "mesh/group label");
-  if (create)
-    meshGroupLab->setText(tr("SMESH_MESH"));
-  else
-    meshGroupLab->setText(tr("SMESH_GROUP"));
-  myMeshGroupBtn = new QPushButton(this, "mesh/group button");
-  myMeshGroupBtn->setPixmap(image0);
-  myMeshGroupLine = new QLineEdit(this, "mesh/group line");
-  myMeshGroupLine->setReadOnly(true);
-
-  /***************************************************************/
-  myTypeGroup = new QButtonGroup(1, Qt::Vertical, this, "Group types");
-  myTypeGroup->setTitle(tr("SMESH_ELEMENTS_TYPE"));
-  myTypeGroup->setExclusive(true);
-
-  QStringList types;
-  types.append(tr("MESH_NODE"));
-  types.append(tr("SMESH_EDGE"));
-  types.append(tr("SMESH_FACE"));
-  types.append(tr("SMESH_VOLUME"));
-  QRadioButton* rb;
-  for (int i = 0; i < types.count(); i++) {
-    rb = new QRadioButton(types[i], myTypeGroup);
-  }
-  myTypeGroup->setEnabled(create);
-  myTypeId = -1;
-
-  /***************************************************************/
-  QLabel* aName = new QLabel(this, "name label");
-  aName->setText(tr("SMESH_NAME"));
-  aName->setMinimumSize(50,0);
-  myName = new QLineEdit(this, "name");
-
-  /***************************************************************/
-  myGrpTypeGroup = new QButtonGroup(1, Qt::Vertical, this, "Type of group");
-  myGrpTypeGroup->setTitle(tr("SMESH_GROUP_TYPE"));
-  myGrpTypeGroup->setExclusive(true);
-  QRadioButton* rb1 = new QRadioButton( tr("SMESH_GROUP_STANDALONE"), myGrpTypeGroup);
-  QRadioButton* rb2 = new QRadioButton( tr("SMESH_GROUP_GEOMETRY"),   myGrpTypeGroup);
-  myGrpTypeGroup->setEnabled(create);
-  myGrpTypeId = -1;
-
-  /***************************************************************/
-  myWGStack = new QWidgetStack( this, "widget stack");
-  QWidget* wg1 = new QFrame( myWGStack, "first widget" );
-  QWidget* wg2 = new QFrame( myWGStack, "second widget" );
-
-  /***************************************************************/
-  QGroupBox* aContentBox = new QGroupBox(1, Qt::Horizontal, wg1, "content box");
-  aContentBox->setTitle(tr("SMESH_CONTENT"));
-  QFrame* aContent = new QFrame(aContentBox, "content");
-  QGridLayout* aLayout = new QGridLayout(aContent, 7, 4);
-  aLayout->setSpacing(6);
-  aLayout->setAutoAdd(false);
-
-  QLabel* aLabel = new QLabel(aContent, "elements label");
-  aLabel->setText(tr("SMESH_ID_ELEMENTS"));
-  myElements = new QListBox(aContent, "elements list");
-  myElements->setSelectionMode(QListBox::Extended);
-
-  myFilter = new QPushButton(aContent, "filter");
-  myFilter->setText(tr("SMESH_BUT_FILTER"));
-  QPushButton* aAddBtn = new QPushButton(aContent, "add");
-  aAddBtn->setText(tr("SMESH_BUT_ADD"));
-  QPushButton* aRemoveBtn = new QPushButton(aContent, "remove");
-  aRemoveBtn->setText(tr("SMESH_BUT_REMOVE"));
-  QPushButton* aSortBtn = new QPushButton(aContent, "sort");
-  aSortBtn->setText(tr("SMESH_BUT_SORT"));
-
-  aLayout->addWidget(aLabel, 0, 0);
-  aLayout->addMultiCellWidget(myElements, 1, 6, 0, 0);
-  aLayout->addWidget(myFilter, 1, 2);
-  aLayout->addWidget(aAddBtn, 3, 2);
-  aLayout->addWidget(aRemoveBtn, 4, 2);
-  aLayout->addWidget(aSortBtn, 6, 2);
-
-  aLayout->setColStretch(0, 1);
-  aLayout->addColSpacing(1, 20);
-  aLayout->addColSpacing(3, 20);
-  aLayout->setRowStretch(2, 1);
-  aLayout->setRowStretch(5, 1);
-
-  /***************************************************************/
-  QGroupBox* aSelectBox = new QGroupBox(3, Qt::Horizontal, wg1, "select box");
-  aSelectBox->setTitle(tr("SMESH_SELECT_FROM"));
-
-  mySelectSubMesh = new QCheckBox(aSelectBox, "submesh checkbox");
-  mySelectSubMesh->setText(tr("SMESH_SUBMESH"));
-  mySelectSubMesh->setMinimumSize(50, 0);
-  mySubMeshBtn = new QPushButton(aSelectBox, "submesh button");
-  mySubMeshBtn->setText("");
-  mySubMeshBtn->setPixmap(image0);
-  mySubMeshLine = new QLineEdit(aSelectBox, "submesh line");
-  mySubMeshLine->setReadOnly(true);
-  onSelectSubMesh(false);
-
-  mySelectGroup = new QCheckBox(aSelectBox, "group checkbox");
-  mySelectGroup->setText(tr("SMESH_GROUP"));
-  mySelectGroup->setMinimumSize(50, 0);
-  myGroupBtn = new QPushButton(aSelectBox, "group button");
-  myGroupBtn->setText("");
-  myGroupBtn->setPixmap(image0);
-  myGroupLine = new QLineEdit(aSelectBox, "group line");
-  myGroupLine->setReadOnly(true);
-  onSelectGroup(false);
-
-  /***************************************************************/
-  QGridLayout* wg1Layout = new QGridLayout( wg1, 3, 1, 0, 6 );
-  wg1Layout->addWidget(aContentBox, 0, 0);
-  wg1Layout->addWidget(aSelectBox, 1, 0);
-  wg1Layout->setRowStretch(2, 5);
-
-  /***************************************************************/
-  QLabel* geomObject = new QLabel(wg2, "geometry object label");
-  geomObject->setText(tr("SMESH_OBJECT_GEOM"));
-  myGeomGroupBtn = new QPushButton(wg2, "geometry group button");
-  myGeomGroupBtn->setText("");
-  myGeomGroupBtn->setPixmap(image0);
-  myGeomGroupLine = new QLineEdit(wg2, "geometry group line");
-  myGeomGroupLine->setReadOnly(true); //VSR ???
-  onSelectGeomGroup(false);
-
-  /***************************************************************/
-  QGridLayout* wg2Layout = new QGridLayout( wg2, 2, 3, 0, 6 );
-  wg2Layout->addWidget(geomObject,     0, 0);
-  wg2Layout->addWidget(myGeomGroupBtn, 0, 1);
-  wg2Layout->addWidget(myGeomGroupLine,0, 2);
-  wg2Layout->setRowStretch(1, 5);
-
-  /***************************************************************/
-  QVBoxLayout* dumb = new QVBoxLayout(myWGStack);
-  dumb->addWidget(wg1);
-  dumb->addWidget(wg2);
-  myWGStack->addWidget( wg1, myGrpTypeGroup->id(rb1) );
-  myWGStack->addWidget( wg2, myGrpTypeGroup->id(rb2) );
-
-  /***************************************************************/
-  QFrame* aButtons = new QFrame(this, "button box");
-  aButtons->setFrameStyle(QFrame::Box | QFrame::Sunken);
-  QHBoxLayout* aBtnLayout = new QHBoxLayout(aButtons, 11, 6);
-  aBtnLayout->setAutoAdd(false);
-
-  QPushButton* aOKBtn = new QPushButton(aButtons, "ok");
-  aOKBtn->setText(tr("SMESH_BUT_OK"));
-  aOKBtn->setAutoDefault(true);
-  aOKBtn->setDefault(true);
-  QPushButton* aApplyBtn = new QPushButton(aButtons, "apply");
-  aApplyBtn->setText(tr("SMESH_BUT_APPLY"));
-  aApplyBtn->setAutoDefault(true);
-  QPushButton* aCloseBtn = new QPushButton(aButtons, "close");
-  aCloseBtn->setText(tr("SMESH_BUT_CLOSE"));
-  aCloseBtn->setAutoDefault(true);
-
-  aBtnLayout->addWidget(aOKBtn);
-  aBtnLayout->addWidget(aApplyBtn);
-  aBtnLayout->addStretch();
-  aBtnLayout->addWidget(aCloseBtn);
-
-  /***************************************************************/
-  aMainLayout->addWidget(meshGroupLab,    0, 0);
-  aMainLayout->addWidget(myMeshGroupBtn,  0, 1);
-  aMainLayout->addWidget(myMeshGroupLine, 0, 2);
-  aMainLayout->addMultiCellWidget(myTypeGroup,    1, 1, 0, 2);
-  aMainLayout->addWidget(aName,      2, 0);
-  aMainLayout->addWidget(myName,     2, 2);
-  aMainLayout->addMultiCellWidget(myGrpTypeGroup, 3, 3, 0, 2);
-  aMainLayout->addMultiCellWidget(myWGStack,      4, 4, 0, 2);
-  aMainLayout->setRowStretch( 5, 5 );
-  aMainLayout->addMultiCellWidget(aButtons,       6, 6, 0, 2);
-
-  /* signals and slots connections */
-  connect(myMeshGroupBtn, SIGNAL(clicked()), this, SLOT(setCurrentSelection()));
-
-  connect(myGrpTypeGroup, SIGNAL(clicked(int)), this, SLOT(onGrpTypeChanged(int)));
-
-  connect(myTypeGroup, SIGNAL(clicked(int)), this, SLOT(onTypeChanged(int)));
-
-  connect(myName, SIGNAL(textChanged(const QString&)), this, SLOT(onNameChanged(const QString&)));
-  connect(myElements, SIGNAL(selectionChanged()), this, SLOT(onListSelectionChanged()));
-
-  connect(myFilter, SIGNAL(clicked()), this, SLOT(setFilters()));
-  connect(aAddBtn, SIGNAL(clicked()), this, SLOT(onAdd()));
-  connect(aRemoveBtn, SIGNAL(clicked()), this, SLOT(onRemove()));
-  connect(aSortBtn, SIGNAL(clicked()), this, SLOT(onSort()));
-
-  connect(mySelectSubMesh, SIGNAL(toggled(bool)), this, SLOT(onSelectSubMesh(bool)));
-  connect(mySelectGroup, SIGNAL(toggled(bool)), this, SLOT(onSelectGroup(bool)));
-  connect(mySubMeshBtn, SIGNAL(clicked()), this, SLOT(setCurrentSelection()));
-  connect(myGroupBtn, SIGNAL(clicked()), this, SLOT(setCurrentSelection()));
-  connect(myGeomGroupBtn, SIGNAL(clicked()), this, SLOT(setCurrentSelection()));
-
-  connect(aOKBtn, SIGNAL(clicked()), this, SLOT(onOK()));
-  connect(aApplyBtn, SIGNAL(clicked()), this, SLOT(onApply()));
-  connect(aCloseBtn, SIGNAL(clicked()), this, SLOT(onClose()));
-
-  /* Init selection */
-  mySMESHGUI->SetActiveDialogBox(this);
-  mySMESHGUI->SetState(800);
-
-  mySelectionMode = -1;
-  myMeshFilter = new SMESH_TypeFilter(MESH);
-  mySubMeshFilter = new SMESH_TypeFilter(SUBMESH);
-  myGroupFilter = new SMESH_TypeFilter(GROUP);
-
-  connect(mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(onDeactivate()));
-  connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(onClose()));
-  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onObjectSelectionChanged()));
-
-  myGrpTypeGroup->setButton(myGrpTypeGroup->id(rb1)); // VSR !!!
-  onGrpTypeChanged(myGrpTypeGroup->id(rb1)); // VSR!!!
-
-  if (myMesh->_is_nil() )
-    myTypeGroup->setButton(0);
-
-  updateButtons();
-}
-
-//=================================================================================
-// function : ~SMESHGUI_GroupDlg()
-// purpose  : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_GroupDlg::~SMESHGUI_GroupDlg()
-{
-  // no need to delete child widgets, Qt does it all for us
-  if ( myFilterDlg != 0 )
-  {
-    myFilterDlg->reparent( 0, QPoint() );
-    delete myFilterDlg;
-  }
-}
-
-//=================================================================================
-// function : Init()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::init (SMESH::SMESH_Mesh_ptr theMesh)
-{
-  mySelectionMgr->installFilter(myMeshFilter);
-
-  /* init data from current selection */
-  myMesh = SMESH::SMESH_Mesh::_duplicate(theMesh);
-  myGroup = SMESH::SMESH_Group::_nil();
-
-  myActor = SMESH::FindActorByObject(myMesh);
-  SMESH::SetPickable(myActor);
-
-  SALOME_ListIO aList;
-  mySelectionMgr->selectedObjects( aList );
-  if( !aList.IsEmpty() )
-  {
-    QString aName = aList.First()->getName();
-    myMeshGroupLine->setText(aName) ;
-    myMeshGroupLine->home( false );
-  }
-
-  myCurrentLineEdit = 0;
-
-  myTypeGroup->setButton(0);
-  onTypeChanged(0);
-}
-
-//=================================================================================
-// function : Init()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::init (SMESH::SMESH_Group_ptr theGroup)
-{
-  myMesh = theGroup->GetMesh();
-  myGroup = SMESH::SMESH_Group::_duplicate(theGroup);
-
-  myActor = SMESH::FindActorByObject(myMesh);
-  if ( !myActor )
-    myActor = SMESH::FindActorByObject(myGroup);
-  SMESH::SetPickable(myActor);
-
-  int aType = 0;
-  switch(theGroup->GetType()) {
-  case SMESH::NODE: aType= 0; break;
-  case SMESH::EDGE: aType = 1; break;
-  case SMESH::FACE: aType = 2; break;
-  case SMESH::VOLUME: aType = 3; break;
-  }
-
-  myName->setText(myGroup->GetName());
-  myName->home(false);
-  myMeshGroupLine->setText(myGroup->GetName());
-
-  myCurrentLineEdit = 0;
-  myTypeGroup->setButton(aType);
-  myElements->clear();
-  setSelectionMode(aType);
-  myTypeId = aType;
-
-  myIdList.clear();
-  if (!theGroup->IsEmpty()) {
-    SMESH::long_array_var anElements = myGroup->GetListOfID();
-    int k = anElements->length();
-    for (int i = 0; i < k; i++) {
-      myIdList.append(anElements[i]);
-      myElements->insertItem(QString::number(anElements[i]));
-    }
-    myElements->selectAll(true);
-  }
-}
-
-//=================================================================================
-// function : updateButtons()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::updateButtons()
-{
-  bool enable;
-
-  if (myGrpTypeId == 0)
-    enable = !myName->text().stripWhiteSpace().isEmpty() && myElements->count() > 0;
-  else if (myGrpTypeId == 1)
-    enable = !myName->text().stripWhiteSpace().isEmpty() && !CORBA::is_nil( myGeomGroup );
-  QPushButton* aBtn;
-  aBtn = (QPushButton*) child("ok", "QPushButton");
-  if (aBtn) aBtn->setEnabled(enable);
-  aBtn = (QPushButton*) child("apply", "QPushButton");
-  if (aBtn) aBtn->setEnabled(enable);
-}
-
-//=================================================================================
-// function : onNameChanged()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::onNameChanged (const QString& text)
-{
-  updateButtons();
-}
-
-//=================================================================================
-// function : onTypeChanged()
-// purpose  : Group elements type radio button management
-//=================================================================================
-void SMESHGUI_GroupDlg::onTypeChanged (int id)
-{
-  if (myTypeId != id) {
-    myElements->clear();
-    if (myCurrentLineEdit == 0)
-      setSelectionMode(id);
-  }
-  myTypeId = id;
-}
-
-//=================================================================================
-// function : onGrpTypeChanged()
-// purpose  : Group type radio button management
-//=================================================================================
-void SMESHGUI_GroupDlg::onGrpTypeChanged (int id)
-{
-  if (myGrpTypeId != id) {
-    myWGStack->raiseWidget( id );
-    onSelectGeomGroup(id == 1);
-  }
-  myGrpTypeId = id;
-}
-
-//=================================================================================
-// function : setSelectionMode()
-// purpose  : Radio button management
-//=================================================================================
-void SMESHGUI_GroupDlg::setSelectionMode (int theMode)
-{
-  // PAL7314
-  if (myMesh->_is_nil())
-    return;
-
-  if (mySelectionMode != theMode) {
-    mySelectionMgr->clearSelected();
-    mySelectionMgr->clearFilters();
-    SMESH::SetPointRepresentation(false);
-    if (theMode < 4) {
-      switch (theMode) {
-      case 0:
-        if (myActor)
-          myActor->SetPointRepresentation(true);
-        else
-          SMESH::SetPointRepresentation(true);
-       if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-         aViewWindow->SetSelectionMode(NodeSelection);
-       break;
-      case 1:
-       if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-         aViewWindow->SetSelectionMode(EdgeSelection);
-       break;
-      case 2:
-       if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-         aViewWindow->SetSelectionMode(FaceSelection);
-       break;
-      default:
-       if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-         aViewWindow->SetSelectionMode(VolumeSelection);
-      }
-    } else {
-      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-       aViewWindow->SetSelectionMode(ActorSelection);
-      if (theMode == 4)
-       mySelectionMgr->installFilter(mySubMeshFilter);
-      else if (theMode == 5)
-       mySelectionMgr->installFilter(myGroupFilter);
-      else if (theMode == 6)
-       mySelectionMgr->installFilter(myMeshFilter);
-    }
-    mySelectionMode = theMode;
-  }
-}
-
-//=================================================================================
-// function : onApply()
-// purpose  :
-//=================================================================================
-bool SMESHGUI_GroupDlg::onApply()
-{
-  if (mySMESHGUI->isActiveStudyLocked())
-    return false;
-
-  if (myGrpTypeId == 0 &&
-      !myName->text().stripWhiteSpace().isEmpty() &&
-      myElements->count() > 0) {
-    mySelectionMgr->clearSelected();
-    if (myGroup->_is_nil()) {
-      SMESH::ElementType aType = SMESH::ALL;
-      switch(myTypeId) {
-      case 0: aType = SMESH::NODE; break;
-      case 1: aType = SMESH::EDGE; break;
-      case 2: aType = SMESH::FACE; break;
-      case 3: aType = SMESH::VOLUME; break;
-      }
-      SMESH::long_array_var anIdList = new SMESH::long_array;
-      int i, k = myElements->count();
-      anIdList->length(k);
-      QListBoxItem* anItem;
-      for (i = 0, anItem = myElements->firstItem(); anItem != 0; i++, anItem = anItem->next()) {
-       anIdList[i] = anItem->text().toInt();
-      }
-
-      myGroup = SMESH::AddGroup(myMesh, aType, myName->text());
-      myGroup->Add(anIdList.inout());
-
-      /* init for next operation */
-      myName->setText("");
-      myElements->clear();
-      myGroup = SMESH::SMESH_Group::_nil();
-
-    } else {
-      myGroup->SetName(myName->text());
-
-      QValueList<int> aAddList;
-      QValueList<int>::iterator anIt;
-      QListBoxItem* anItem;
-
-      for (anItem = myElements->firstItem(); anItem != 0; anItem = anItem->next()) {
-       int anId = anItem->text().toInt();
-       if ((anIt = myIdList.find(anId)) == myIdList.end())
-         aAddList.append(anId);
-       else
-         myIdList.remove(anIt);
-      }
-      if (!aAddList.empty()) {
-       SMESH::long_array_var anIdList = new SMESH::long_array;
-       anIdList->length(aAddList.count());
-        int i;
-       for (i = 0, anIt = aAddList.begin(); anIt != aAddList.end(); anIt++, i++)
-         anIdList[i] = *anIt;
-       myGroup->Add(anIdList.inout());
-      }
-      if (!myIdList.empty()) {
-       SMESH::long_array_var anIdList = new SMESH::long_array;
-       anIdList->length(myIdList.count());
-        int i;
-       for (i = 0, anIt = myIdList.begin(); anIt != myIdList.end(); anIt++, i++)
-         anIdList[i] = *anIt;
-       myGroup->Remove(anIdList.inout());
-      }
-      /* init for next operation */
-      myIdList.clear();
-      for (anItem = myElements->firstItem(); anItem != 0; anItem = anItem->next())
-       myIdList.append(anItem->text().toInt());
-    }
-
-    mySMESHGUI->updateObjBrowser(true);
-    SMESH::UpdateView(); // asv: fix of BUG PAL5515
-    mySelectionMgr->clearSelected();
-    return true;
-  } else if (myGrpTypeId == 1 &&
-             !myName->text().stripWhiteSpace().isEmpty() &&
-             !CORBA::is_nil(myGeomGroup))
-  {
-    SMESH::ElementType aType = SMESH::ALL;
-    switch (myTypeId) {
-    case 0: aType = SMESH::NODE; break;
-    case 1: aType = SMESH::EDGE; break;
-    case 2: aType = SMESH::FACE; break;
-    case 3: aType = SMESH::VOLUME; break;
-    }
-
-    _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
-    GEOM::GEOM_IGroupOperations_var aGroupOp =
-      SMESH::GetGEOMGen()->GetIGroupOperations(aStudy->StudyId());
-
-    SMESH::SMESH_GroupOnGeom_var aGroupOnGeom =
-      myMesh->CreateGroupFromGEOM(aType, myName->text(),myGeomGroup);
-
-    mySMESHGUI->updateObjBrowser(true);
-    mySelectionMgr->clearSelected();
-    /* init for next operation */
-    myName->setText("");
-    return true;
-  }
-
-  return false;
-}
-
-//=================================================================================
-// function : onOK()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::onOK()
-{
-  if ( onApply() )
-    onClose();
-}
-
-//=================================================================================
-// function : onListSelectionChanged()
-// purpose  : Called when selection in element list is changed
-//=================================================================================
-void SMESHGUI_GroupDlg::onListSelectionChanged()
-{
-  //  MESSAGE("SMESHGUI_GroupDlg::onListSelectionChanged(); myActor = " << myActor);
-  if( myIsBusy || !myActor) return;
-    myIsBusy = true;
-
-  if (myCurrentLineEdit == 0) {
-    mySelectionMgr->clearSelected();
-    TColStd_MapOfInteger aIndexes;
-    QListBoxItem* anItem;
-    for (anItem = myElements->firstItem(); anItem != 0; anItem = anItem->next()) {
-      if (anItem->isSelected()) {
-       int anId = anItem->text().toInt();
-       aIndexes.Add(anId);
-      }
-    }
-    mySelector->AddOrRemoveIndex(myActor->getIO(), aIndexes, false);
-    SALOME_ListIO aList;
-    aList.Append(myActor->getIO());
-    mySelectionMgr->setSelectedObjects(aList,false);
-    if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-      aViewWindow->highlight( myActor->getIO(), true, true );
-  }
-  myIsBusy = false;
-}
-
-//=================================================================================
-// function : onObjectSelectionChanged()
-// purpose  : Called when selection in 3D view or ObjectBrowser is changed
-//=================================================================================
-void SMESHGUI_GroupDlg::onObjectSelectionChanged()
-{
-  if ( myIsBusy || !isEnabled()) return;
-    myIsBusy = true;
-
-  SALOME_ListIO aList;
-  mySelectionMgr->selectedObjects( aList );
-  
-  int aNbSel = aList.Extent();
-  myElements->clearSelection();
-
-  if (myCurrentLineEdit) {
-    myCurrentLineEdit->setText("");
-    QString aString = "";
-
-    if (myCurrentLineEdit == myMeshGroupLine) {
-      mySelectSubMesh->setEnabled(false);
-      mySelectGroup->setEnabled(false);
-      myGroupLine->setText("");
-      mySubMeshLine->setText("");
-
-      myGeomGroupBtn->setEnabled(false);
-      myGeomGroupLine->setEnabled(false);
-      myGeomGroupLine->setText("");
-      if (!myCreate)
-        myName->setText("");
-
-      myElements->clear();
-
-      if (aNbSel != 1 ) {
-        myGroup = SMESH::SMESH_Group::_nil();
-        myMesh = SMESH::SMESH_Mesh::_nil();
-        myIsBusy = false;
-        return;
-      }
-      Handle(SALOME_InteractiveObject) IO = aList.First();
-
-      if (myCreate) {
-        myMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(IO);
-        if (myMesh->_is_nil())
-       {
-         myIsBusy = false;
-          return;
-       }
-        myGroup = SMESH::SMESH_Group::_nil();
-
-        myActor = SMESH::FindActorByObject(myMesh);
-        SMESH::SetPickable(myActor);
-
-        aString = aList.First()->getName();
-        myMeshGroupLine->setText(aString) ;
-        myMeshGroupLine->home( false );
-
-        mySelectSubMesh->setEnabled(true);
-        mySelectGroup->setEnabled(true);
-        myGeomGroupBtn->setEnabled(true);
-        myGeomGroupLine->setEnabled(true);
-        updateButtons();
-      } else {
-        SMESH::SMESH_Group_var aGroup = SMESH::IObjectToInterface<SMESH::SMESH_Group>(IO);
-        if (aGroup->_is_nil())
-       {
-         myIsBusy = false;
-          return;
-       }
-        myIsBusy = false;
-        myCurrentLineEdit = 0;
-        init(aGroup);
-        myIsBusy = true;
-        mySelectSubMesh->setEnabled(true);
-        mySelectGroup->setEnabled(true);
-        myGeomGroupBtn->setEnabled(true);
-        myGeomGroupLine->setEnabled(true);
-      }
-      myCurrentLineEdit = 0;
-      myIsBusy = false;
-      if (!myCreate)
-        return;
-
-      if (myTypeId == -1)
-        onTypeChanged(0);
-      else {
-        myElements->clear();
-        setSelectionMode(myTypeId);
-      }
-
-      myIsBusy = false;
-      return;
-
-    } else if (myCurrentLineEdit == myGeomGroupLine) {
-      if (aNbSel != 1) {
-        myGeomGroup = GEOM::GEOM_Object::_nil();
-        myIsBusy = false;
-        return;
-      }
-
-      Standard_Boolean testResult = Standard_False;
-      myGeomGroup = GEOMBase::ConvertIOinGEOMObject(aList.First(), testResult);
-
-      // Check if the object is a geometry group
-      if (!testResult || CORBA::is_nil(myGeomGroup)) {
-        myGeomGroup = GEOM::GEOM_Object::_nil();
-        myIsBusy = false;
-        return;
-      }
-      // Check if group constructed on the same shape as a mesh or on its child
-      _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
-      GEOM::GEOM_IGroupOperations_var anOp =
-        SMESH::GetGEOMGen()->GetIGroupOperations(aStudy->StudyId());
-
-      // The main shape of the group
-      GEOM::GEOM_Object_var aGroupMainShape;
-      if (myGeomGroup->GetType() == 37)
-        aGroupMainShape = anOp->GetMainShape(myGeomGroup);
-      else
-        aGroupMainShape = GEOM::GEOM_Object::_duplicate(myGeomGroup);
-      _PTR(SObject) aGroupMainShapeSO =
-        //aStudy->FindObjectIOR(aStudy->ConvertObjectToIOR(aGroupMainShape));
-        aStudy->FindObjectIOR(aGroupMainShape->GetStudyEntry());
-
-      // The mesh SObject
-      _PTR(SObject) aMeshSO = SMESH::FindSObject(myMesh);
-      if (!aMeshSO) {
-        myGeomGroup = GEOM::GEOM_Object::_nil();
-        myIsBusy = false;
-        return;
-      }
-      _PTR(SObject) anObj, aRef;
-      bool isRefOrSubShape = false;
-      if (aMeshSO->FindSubObject(1, anObj) &&  anObj->ReferencedObject(aRef)) {
-        //if (strcmp(aRef->GetID(), aGroupMainShapeSO->GetID()) == 0) {
-        if (aRef->GetID() == aGroupMainShapeSO->GetID()) {
-          isRefOrSubShape = true;
-        } else {
-          _PTR(SObject) aFather = aGroupMainShapeSO->GetFather();
-          _PTR(SComponent) aComponent = aGroupMainShapeSO->GetFatherComponent();
-         //while (!isRefOrSubShape && strcmp(aFather->GetID(), aComponent->GetID()) != 0) {
-         while (!isRefOrSubShape && aFather->GetID() != aComponent->GetID()) {
-            //if (strcmp(aRef->GetID(), aFather->GetID()) == 0)
-            if (aRef->GetID() == aFather->GetID())
-              isRefOrSubShape = true;
-            else
-              aFather = aFather->GetFather();
-          }
-       }
-      }
-      if (!isRefOrSubShape) {
-        myGeomGroup = GEOM::GEOM_Object::_nil();
-        myIsBusy = false;
-        return;
-      }
-    }
-
-    if(aNbSel >= 1) {
-      if(aNbSel > 1) {
-       if(myCurrentLineEdit == mySubMeshLine)
-         aString = tr("SMESH_SUBMESH_SELECTED").arg(aNbSel);
-       else if(myCurrentLineEdit == myGroupLine || myCurrentLineEdit == myGeomGroupLine)
-         aString = tr("SMESH_GROUP_SELECTED").arg(aNbSel);
-      } else {
-       aString = aList.First()->getName();
-      }
-    }
-
-    myCurrentLineEdit->setText(aString);
-    myCurrentLineEdit->home(false);
-
-    updateButtons();
-
-  } else {
-    if (aNbSel == 1 && myActor ) {
-      QString aListStr = "";
-      int aNbItems = 0;
-      if (myTypeId == 0) {
-       aNbItems = SMESH::GetNameOfSelectedNodes(mySelector, myActor->getIO(), aListStr);
-      } else {
-       aNbItems = SMESH::GetNameOfSelectedElements(mySelector, myActor->getIO(), aListStr);
-      }
-      if (aNbItems > 0) {
-       QStringList anElements = QStringList::split(" ", aListStr);
-       QListBoxItem* anItem = 0;
-       for (QStringList::iterator it = anElements.begin(); it != anElements.end(); ++it) {
-         anItem = myElements->findItem(*it, Qt::ExactMatch);
-         if (anItem) myElements->setSelected(anItem, true);
-       }
-      }
-    }
-  }
-
-  if (!myActor) {
-    if (!myGroup->_is_nil())
-      myActor = SMESH::FindActorByObject(myGroup);
-    else
-      myActor = SMESH::FindActorByObject(myMesh);
-  }
-
-  myIsBusy = false;
-}
-
-//=================================================================================
-// function : onSelectSubMesh()
-// purpose  : Called when selection in 3D view or ObjectBrowser is changed
-//=================================================================================
-void SMESHGUI_GroupDlg::onSelectSubMesh(bool on)
-{
-  if (on) {
-    if (mySelectGroup->isChecked()) {
-      mySelectGroup->setChecked(false);
-    }
-    //VSR: else if (mySelectGeomGroup->isChecked()) {
-    //VSR:   mySelectGeomGroup->setChecked(false);
-    //VSR: }
-    myCurrentLineEdit = mySubMeshLine;
-    setSelectionMode(4);
-  }
-  else {
-    mySubMeshLine->setText("");
-    myCurrentLineEdit = 0;
-    if (myTypeId != -1)
-      setSelectionMode(myTypeId);
-  }
-  mySubMeshBtn->setEnabled(on);
-  mySubMeshLine->setEnabled(on);
-}
-
-
-//=================================================================================
-// function : (onSelectGroup)
-// purpose  : Called when selection in 3D view or ObjectBrowser is changed
-//=================================================================================
-void SMESHGUI_GroupDlg::onSelectGroup(bool on)
-{
-  if (on) {
-    if (mySelectSubMesh->isChecked()) {
-      mySelectSubMesh->setChecked(false);
-    }
-    myCurrentLineEdit = myGroupLine;
-    setSelectionMode(5);
-  }
-  else {
-    myGroupLine->setText("");
-    myCurrentLineEdit = 0;
-    if (myTypeId != -1)
-      setSelectionMode(myTypeId);
-  }
-  myGroupBtn->setEnabled(on);
-  myGroupLine->setEnabled(on);
-}
-
-
-//=================================================================================
-// function : (onSelectGeomGroup)
-// purpose  : Called when selection in 3D view or ObjectBrowser is changed
-//=================================================================================
-void SMESHGUI_GroupDlg::onSelectGeomGroup(bool on)
-{
-  if (on) {
-    if (mySelectSubMesh->isChecked()) {
-      mySelectSubMesh->setChecked(false);
-    }
-    else if (mySelectGroup->isChecked()) {
-      mySelectGroup->setChecked(false);
-    }
-    myCurrentLineEdit = myGeomGroupLine;
-    setSelectionMode(7);
-  }
-  else {
-    myGeomGroupLine->setText("");
-    myCurrentLineEdit = 0;
-    if (myTypeId != -1)
-      setSelectionMode(myTypeId);
-  }
-}
-
-
-//=================================================================================
-// function : setCurrentSelection()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::setCurrentSelection()
-{
-  QPushButton* send = (QPushButton*)sender();
-  myCurrentLineEdit = 0;
-  if (send == myMeshGroupBtn) {
-    myCurrentLineEdit = myMeshGroupLine;
-    if (myCreate)
-      setSelectionMode(6);
-    else
-      setSelectionMode(5);
-    onObjectSelectionChanged();
-  }
-  else if (send == mySubMeshBtn) {
-    myCurrentLineEdit = mySubMeshLine;
-    onObjectSelectionChanged();
-  }
-  else if (send == myGroupBtn) {
-    myCurrentLineEdit = myGroupLine;
-    onObjectSelectionChanged();
-  }
-  else if (send == myGeomGroupBtn) {
-    myCurrentLineEdit = myGeomGroupLine;
-    setSelectionMode(7);
-    onObjectSelectionChanged();
-  }
-}
-
-
-//=================================================================================
-// function : setFilters()
-// purpose  : SLOT. Called when "Filter" button pressed.
-//=================================================================================
-void SMESHGUI_GroupDlg::setFilters()
-{
-  SMESH::ElementType aType = SMESH::ALL;
-  switch ( myTypeId )
-  {
-    case 0 : aType = SMESH::NODE; break;
-    case 1 : aType = SMESH::EDGE; break;
-    case 2 : aType = SMESH::FACE; break;
-    case 3 : aType = SMESH::VOLUME; break;
-    default: return;
-  }
-
-  if ( myFilterDlg == 0 )
-  {
-    myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, aType );
-    connect( myFilterDlg, SIGNAL( Accepted() ), SLOT( onFilterAccepted() ) );
-  }
-  else
-    myFilterDlg->Init( aType );
-
-  myFilterDlg->SetSelection();
-  myFilterDlg->SetMesh( myMesh );
-  myFilterDlg->SetSourceWg( myElements );
-
-  myFilterDlg->show();
-}
-
-//=================================================================================
-// function : onFilterAccepted()
-// purpose  : SLOT. Called when Filter dlg closed with OK button.
-//            Uncheck "Select submesh" and "Select group" checkboxes
-//=================================================================================
-void SMESHGUI_GroupDlg::onFilterAccepted()
-{
-  if ( mySelectSubMesh->isChecked() || mySelectGroup->isChecked() )
-  {
-    mySelectionMode = myTypeId;
-    mySelectSubMesh->setChecked( false );
-    mySelectGroup->setChecked( false );
-  }
-}
-
-//=================================================================================
-// function : onAdd()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::onAdd()
-{
-  SALOME_ListIO aList;
-  mySelectionMgr->selectedObjects( aList );
-
-  int aNbSel = aList.Extent();
-
-  if (aNbSel == 0 || !myActor || myMesh->_is_nil()) return;
-
-  myIsBusy = true;
-
-  SMESH::ElementType aType = SMESH::ALL;
-  switch(myTypeId) {
-  case 0: aType = SMESH::NODE; break;
-  case 1: aType = SMESH::EDGE; break;
-  case 2: aType = SMESH::FACE; break;
-  case 3: aType = SMESH::VOLUME; break;
-  }
-
-  if (myCurrentLineEdit == 0) {
-    //if (aNbSel != 1) { myIsBusy = false; return; }
-    QString aListStr = "";
-    int aNbItems = 0;
-    if (myTypeId == 0) {
-      aNbItems = SMESH::GetNameOfSelectedNodes(mySelector, myActor->getIO(), aListStr);
-    }
-    else {
-      aNbItems = SMESH::GetNameOfSelectedElements(mySelector, myActor->getIO(), aListStr);
-    }
-    if (aNbItems > 0) {
-      QStringList anElements = QStringList::split(" ", aListStr);
-      QListBoxItem* anItem = 0;
-      for (QStringList::iterator it = anElements.begin(); it != anElements.end(); ++it) {
-       anItem = myElements->findItem(*it, Qt::ExactMatch);
-       if (!anItem) {
-         anItem = new QListBoxText(*it);
-         myElements->insertItem(anItem);
-       }
-       myElements->setSelected(anItem, true);
-      }
-    }
-  } else if (myCurrentLineEdit == mySubMeshLine) {
-    //SALOME_ListIteratorOfListIO anIt (mySelectionMgr->StoredIObjects());
-    
-    SALOME_ListIO aList;
-    mySelectionMgr->selectedObjects( aList );
-
-    SALOME_ListIteratorOfListIO anIt (aList);
-    for (; anIt.More(); anIt.Next()) {
-      SMESH::SMESH_subMesh_var aSubMesh =
-        SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(anIt.Value());
-      if (!aSubMesh->_is_nil()) {
-       // check if mesh is the same
-       if (aSubMesh->GetFather()->GetId() == myMesh->GetId()) {
-          try {
-            SMESH::long_array_var anElements = aSubMesh->GetElementsByType(aType);
-            int k = anElements->length();
-            QListBoxItem* anItem = 0;
-            for (int i = 0; i < k; i++) {
-              QString aText = QString::number(anElements[i]);
-              anItem = myElements->findItem(aText, Qt::ExactMatch);
-              if (!anItem) {
-                anItem = new QListBoxText(aText);
-                myElements->insertItem(anItem);
-              }
-              myElements->setSelected(anItem, true);
-            }
-          }
-          catch (const SALOME::SALOME_Exception& ex) {
-            SalomeApp_Tools::QtCatchCorbaException(ex);
-          }
-        }
-      }
-    }
-    mySelectSubMesh->setChecked(false);
-    myIsBusy = false;
-    onListSelectionChanged();
-
-  } else if (myCurrentLineEdit == myGroupLine) {
-    //SALOME_ListIteratorOfListIO anIt (mySelectionMgr->StoredIObjects());
-    SALOME_ListIO aList;
-    mySelectionMgr->selectedObjects( aList );
-    
-    SALOME_ListIteratorOfListIO anIt (aList);
-    for (; anIt.More(); anIt.Next()) {
-      SMESH::SMESH_Group_var aGroup =
-        SMESH::IObjectToInterface<SMESH::SMESH_Group>(anIt.Value());
-      if (!aGroup->_is_nil()) {
-       // check if mesh is the same
-       if (aGroup->GetType() == aType && aGroup->GetMesh()->GetId() == myMesh->GetId()) {
-         SMESH::long_array_var anElements = aGroup->GetListOfID();
-         int k = anElements->length();
-         QListBoxItem* anItem = 0;
-         for (int i = 0; i < k; i++) {
-           QString aText = QString::number(anElements[i]);
-           anItem = myElements->findItem(aText, Qt::ExactMatch);
-           if (!anItem) {
-             anItem = new QListBoxText(aText);
-             myElements->insertItem(anItem);
-           }
-           myElements->setSelected(anItem, true);
-         }
-       }
-      }
-    }
-    mySelectGroup->setChecked(false);
-    myIsBusy = false;
-    onListSelectionChanged();
-
-  } else if (myCurrentLineEdit == myGeomGroupLine && !CORBA::is_nil(myGeomGroup)) {
-    _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
-    GEOM::GEOM_IGroupOperations_var aGroupOp =
-      SMESH::GetGEOMGen()->GetIGroupOperations(aStudy->StudyId());
-
-    SMESH::ElementType aGroupType = SMESH::ALL;
-    switch(aGroupOp->GetType(myGeomGroup)) {
-    case 7: aGroupType = SMESH::NODE; break;
-    case 6: aGroupType = SMESH::EDGE; break;
-    case 4: aGroupType = SMESH::FACE; break;
-    case 2: aGroupType = SMESH::VOLUME; break;
-    default: myIsBusy = false; return;
-    }
-
-    if (aGroupType == aType) {
-      _PTR(SObject) aGroupSO =
-        //aStudy->FindObjectIOR(aStudy->ConvertObjectToIOR(myGeomGroup));
-        aStudy->FindObjectIOR(myGeomGroup->GetStudyEntry());
-      // Construct filter
-      SMESH::FilterManager_var aFilterMgr = SMESH::GetFilterManager();
-      SMESH::Filter_var aFilter = aFilterMgr->CreateFilter();
-      SMESH::BelongToGeom_var aBelongToGeom = aFilterMgr->CreateBelongToGeom();;
-      aBelongToGeom->SetGeom(myGeomGroup);
-      aBelongToGeom->SetShapeName(aGroupSO->GetName().c_str());
-      aBelongToGeom->SetElementType(aType);
-      aFilter->SetPredicate(aBelongToGeom);
-
-      SMESH::long_array_var anElements = aFilter->GetElementsId(myMesh);
-
-      int k = anElements->length();
-      QListBoxItem* anItem = 0;
-      for (int i = 0; i < k; i++) {
-       QString aText = QString::number(anElements[i]);
-       anItem = myElements->findItem(aText, Qt::ExactMatch);
-       if (!anItem) {
-         anItem = new QListBoxText(aText);
-         myElements->insertItem(anItem);
-       }
-       myElements->setSelected(anItem, true);
-      }
-    }
-
-    //VSR: mySelectGeomGroup->setChecked(false);
-    myIsBusy = false;
-    onListSelectionChanged();
-  }
-  myIsBusy = false;
-  //  mySelectionMgr->clearSelected();
-  updateButtons();
-}
-
-//=================================================================================
-// function : onRemove()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::onRemove()
-{
-  myIsBusy = true;
-  if (myCurrentLineEdit == 0) {
-    for (int i = myElements->count(); i > 0; i--) {
-      if (myElements->isSelected(i-1)) {
-       myElements->removeItem(i-1);
-      }
-    }
-  } else {
-    SALOME_ListIO aList;
-    mySelectionMgr->selectedObjects( aList );
-
-    int aNbSel = aList.Extent();
-
-    if (aNbSel == 0) { myIsBusy = false; return; }
-
-    SMESH::ElementType aType = SMESH::ALL;
-    switch(myTypeId) {
-    case 0: aType = SMESH::NODE; break;
-    case 1: aType = SMESH::EDGE; break;
-    case 2: aType = SMESH::FACE; break;
-    case 3: aType = SMESH::VOLUME; break;
-    }
-
-    if (myCurrentLineEdit == mySubMeshLine) {
-      //SALOME_ListIteratorOfListIO anIt (mySelectionMgr->StoredIObjects());
-      SALOME_ListIO aList;
-      mySelectionMgr->selectedObjects( aList );
-
-      SALOME_ListIteratorOfListIO anIt (aList);
-      for (; anIt.More(); anIt.Next()) {
-       SMESH::SMESH_subMesh_var aSubMesh = SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(anIt.Value());
-       if (!aSubMesh->_is_nil()) {
-         // check if mesh is the same
-         if (aSubMesh->GetFather()->GetId() == myMesh->GetId()) {
-           if (aType == SMESH::NODE) {
-             try {
-               SMESH::long_array_var anElements = aSubMesh->GetNodesId();
-               int k = anElements->length();
-               QListBoxItem* anItem = 0;
-               for (int i = 0; i < k; i++) {
-                 anItem = myElements->findItem(QString::number(anElements[i]), Qt::ExactMatch);
-                 if (anItem) delete anItem;
-               }
-             }
-             catch (const SALOME::SALOME_Exception& ex) {
-               SalomeApp_Tools::QtCatchCorbaException(ex);
-             }
-           }
-           else {
-             try {
-               SMESH::long_array_var anElements = aSubMesh->GetElementsId();
-               int k = anElements->length();
-               QListBoxItem* anItem = 0;
-               for (int i = 0; i < k; i++) {
-                 anItem = myElements->findItem(QString::number(anElements[i]), Qt::ExactMatch);
-                 if (anItem) delete anItem;
-               }
-             }
-             catch (const SALOME::SALOME_Exception& ex) {
-               SalomeApp_Tools::QtCatchCorbaException(ex);
-             }
-           }
-         }
-       }
-      }
-    }
-    else if (myCurrentLineEdit == myGroupLine) {
-      Standard_Boolean aRes;
-      //SALOME_ListIteratorOfListIO anIt (mySelectionMgr->StoredIObjects());
-      SALOME_ListIO aList;
-      mySelectionMgr->selectedObjects( aList );
-
-      SALOME_ListIteratorOfListIO anIt (aList);
-      for (; anIt.More(); anIt.Next()) {
-       SMESH::SMESH_Group_var aGroup = SMESH::IObjectToInterface<SMESH::SMESH_Group>(anIt.Value());
-       if (aRes && !aGroup->_is_nil()) {
-         // check if mesh is the same
-         if (aGroup->GetType() == aType && aGroup->GetMesh()->GetId() == myMesh->GetId()) {
-           SMESH::long_array_var anElements = aGroup->GetListOfID();
-           int k = anElements->length();
-           QListBoxItem* anItem = 0;
-           for (int i = 0; i < k; i++) {
-             anItem = myElements->findItem(QString::number(anElements[i]), Qt::ExactMatch);
-             if (anItem) delete anItem;
-           }
-         }
-       }
-      }
-    }
-  }
-  myIsBusy = false;
-  updateButtons();
-}
-
-//=================================================================================
-// function : onSort()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::onSort()
-{
-  // PAL5412: sorts items in ascending by "string" value
-  // myElements->sort(true);
-  // myElements->update();
-  int i, k = myElements->count();
-  if (k > 0) {
-    myIsBusy = true;
-    QStringList aSelected;
-    std::vector<int> anArray(k);
-    //    QMemArray<int> anArray(k);
-    QListBoxItem* anItem;
-    // fill the array
-    for (anItem = myElements->firstItem(), i = 0; anItem != 0; anItem = anItem->next(), i++) {
-      anArray[i] = anItem->text().toInt();
-      if (anItem->isSelected())
-       aSelected.append(anItem->text());
-    }
-    // sort & update list
-    std::sort(anArray.begin(), anArray.end());
-    //    anArray.sort();
-    myElements->clear();
-    for (i = 0; i < k; i++) {
-      myElements->insertItem(QString::number(anArray[i]));
-    }
-    for (QStringList::iterator it = aSelected.begin(); it != aSelected.end(); ++it) {
-      anItem = myElements->findItem(*it, Qt::ExactMatch);
-      if (anItem) myElements->setSelected(anItem, true);
-    }
-    myIsBusy = false;
-  }
-}
-
-//=================================================================================
-// function : closeEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_GroupDlg::closeEvent (QCloseEvent*)
-{
-  onClose();
-}
-
-//=================================================================================
-// function : SMESHGUI_GroupDlg::onClose
-// purpose  : SLOT called when "Close" button pressed. Close dialog
-//=================================================================================
-void SMESHGUI_GroupDlg::onClose()
-{
-  if (SMESH::GetCurrentVtkView()) {
-    SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
-    SMESH::SetPointRepresentation(false);
-    SMESH::SetPickable();
-  }
-
-  mySelectionMgr->clearSelected();
-  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-    aViewWindow->SetSelectionMode(ActorSelection);
-  mySelectionMgr->clearFilters();
-  mySMESHGUI->ResetState();
-
-  reject();
-}
-
-//=================================================================================
-// function : SMESHGUI_GroupDlg::onDeactivate
-// purpose  : SLOT called when dialog must be deativated
-//=================================================================================
-void SMESHGUI_GroupDlg::onDeactivate()
-{
-  mySMESHGUI->ResetState();
-  setEnabled(false);
-}
-
-//=================================================================================
-// function : SMESHGUI_GroupDlg::enterEvent
-// purpose  : Event filter
-//=================================================================================
-void SMESHGUI_GroupDlg::enterEvent (QEvent*)
-{
-  if (!isEnabled()) {
-    mySMESHGUI->EmitSignalDeactivateDialog();
-    setEnabled(true);
-    mySelectionMode = -1;
-    setSelectionMode(myTypeId);
-    //mySMESHGUI->SetActiveDialogBox((QDialog*)this);
-    mySMESHGUI->SetActiveDialogBox(this);
-    mySMESHGUI->SetState(800);
-  }
-}
-
-//=================================================================================
-// function : hideEvent
-// purpose  : caused by ESC key
-//=================================================================================
-void SMESHGUI_GroupDlg::hideEvent (QHideEvent*)
-{
-  if (!isMinimized())
-    onClose();
-}
diff --git a/src/SMESHGUI/SMESHGUI_GroupUtils.cxx b/src/SMESHGUI/SMESHGUI_GroupUtils.cxx
deleted file mode 100644 (file)
index d2aa17f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-
-#include "SMESHGUI_GroupUtils.h"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
-
-#include "SUIT_Session.h"
-#include "SalomeApp_Application.h"
-#include "SalomeApp_Tools.h"
-
-#include "OB_Browser.h"
-
-namespace SMESH
-{
-
-  SMESH::SMESH_Group_var AddGroup( SMESH::SMESH_Mesh_ptr theMesh,
-                                  SMESH::ElementType theType,
-                                  const char* theGroupName )
-  {
-    SMESH::SMESH_Group_var aGroup;
-    try {
-      if ( !theMesh->_is_nil() )
-       aGroup = theMesh->CreateGroup( theType, theGroupName );
-    }
-    catch( const SALOME::SALOME_Exception& S_ex ) {
-      SalomeApp_Tools::QtCatchCorbaException( S_ex );
-    }
-    //SalomeApp_Application* app =
-    //  dynamic_cast<SalomeApp_Application*>(SUIT_Session::session()->activeApplication());
-    //if (app) app->objectBrowser()->updateTree();
-    SMESHGUI::GetSMESHGUI()->updateObjBrowser();
-    return aGroup._retn();
-  }
-}
diff --git a/src/SMESHGUI/SMESHGUI_GroupUtils.h b/src/SMESHGUI/SMESHGUI_GroupUtils.h
deleted file mode 100644 (file)
index 9cd9783..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef SMESHGUI_GroupUtils_HeaderFile
-#define SMESHGUI_GroupUtils_HeaderFile
-
-#include "SALOMEconfig.h"
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_SERVER_HEADER(SMESH_Group)
-
-
-namespace SMESH{
-
-  SMESH::SMESH_Group_var AddGroup(SMESH::SMESH_Mesh_ptr theMesh,
-                                 SMESH::ElementType theType,
-                                 const char* theGroupName);
-}
-
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_IdValidator.h b/src/SMESHGUI/SMESHGUI_IdValidator.h
deleted file mode 100644 (file)
index 680dacb..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_IdValidator.h
-//  Author : Edward AGAPOV
-//  Module : SMESH
-//  $Header: /dn05/salome/PAL/SMESH/SMESH_SRC/src/SMESHGUI/SMESHGUI_IdValidator.h
-
-#ifndef SMESHGUI_IdValidator_HeaderFile
-#define SMESHGUI_IdValidator_HeaderFile
-
-#include <qvalidator.h>
-
-// validator for manual input of Ids
-
-class SMESHGUI_IdValidator: public QValidator
-{
- public:
-
-  SMESHGUI_IdValidator(QWidget * parent, const char * name = 0, const int maxNbId = 0):
-    QValidator(parent,name), myMaxNbId(maxNbId) {}
-
-  State validate ( QString & text, int & pos) const
-  { 
-    text.replace( QRegExp(" *[^0-9]+ *"), " " ); 
-    if ( myMaxNbId && text.length() > myMaxNbId) { // truncate extra ids
-      int ind = 0, nbId = 0;
-      while ( ind < text.length() ) {
-       if ( text.at( ind ) != ' ' ) {
-         if ( ++nbId > myMaxNbId ) {
-           text.truncate( ind );
-           break;
-         }
-         ind = text.find( ' ', ind );
-         if ( ind < 0 ) break;
-       }
-       ind++;
-      }
-    }
-    if ( pos > text.length() )
-      pos = text.length();
-    return Acceptable;
-  }
-
- private:
-  int myMaxNbId;
-};
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_MeshUtils.cxx b/src/SMESHGUI/SMESHGUI_MeshUtils.cxx
deleted file mode 100644 (file)
index 9c8d313..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-
-#include "SMESHGUI_MeshUtils.h"
-#include "SMESHGUI_Utils.h"
-
-#include "SALOMEconfig.h"
-#include CORBA_SERVER_HEADER(SMESH_Group)
-
-namespace SMESH
-{
-  
-  SMESH_Mesh_var GetMeshByIO(const Handle(SALOME_InteractiveObject)& theIO)
-  {
-    CORBA::Object_var anObj = IObjectToObject(theIO);
-    if(!CORBA::is_nil(anObj)){
-      SMESH_Mesh_var aMesh = SMESH_Mesh::_narrow(anObj);
-      if(!CORBA::is_nil(aMesh))
-       return aMesh;
-      SMESH_GroupBase_var aGroup = SMESH_GroupBase::_narrow(anObj);
-      if(!CORBA::is_nil(aGroup))
-       return aGroup->GetMesh();
-      SMESH_subMesh_var aSubMesh = SMESH_subMesh::_narrow(anObj);
-      if(!CORBA::is_nil(aSubMesh))
-       return aSubMesh->GetFather();
-    }
-    return SMESH_Mesh::_nil();
-  }
-
-}
diff --git a/src/SMESHGUI/SMESHGUI_MeshUtils.h b/src/SMESHGUI/SMESHGUI_MeshUtils.h
deleted file mode 100644 (file)
index 011de34..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef SMESHGUI_MeshUtils_HeaderFile
-#define SMESHGUI_MeshUtils_HeaderFile
-
-#include "SALOME_InteractiveObject.hxx"
-
-#include "SALOMEconfig.h"
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-
-
-namespace SMESH{
-
-  SMESH_Mesh_var GetMeshByIO(const Handle(SALOME_InteractiveObject)& theIO);
-
-}
-
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_PatternUtils.cxx b/src/SMESHGUI/SMESHGUI_PatternUtils.cxx
deleted file mode 100644 (file)
index 718162f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-
-#include "SMESHGUI_PatternUtils.h"
-
-#include "SMESHGUI.h"
-
-namespace SMESH {
-
-  SMESH::SMESH_Pattern_var GetPattern()
-  {
-    return SMESHGUI::GetSMESHGen()->GetPattern();
-  }
-}
diff --git a/src/SMESHGUI/SMESHGUI_PatternUtils.h b/src/SMESHGUI/SMESHGUI_PatternUtils.h
deleted file mode 100644 (file)
index fb09d01..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef SMESHGUI_PatternUtils_HeaderFile
-#define SMESHGUI_PatternUtils_HeaderFile
-
-#include "SALOMEconfig.h"
-#include CORBA_SERVER_HEADER(SMESH_Pattern)
-
-
-namespace SMESH{
-
-  SMESH::SMESH_Pattern_var GetPattern();
-
-}
-
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_PatternWidget.cxx b/src/SMESHGUI/SMESHGUI_PatternWidget.cxx
deleted file mode 100644 (file)
index 178800a..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_PatternWidget.cxx
-//  Author : Michael ZORIN
-//  Module : SMESH
-//  $Header:
-
-#include "SMESHGUI_PatternWidget.h"
-
-//Qt includes
-#include <qpainter.h>
-#include <qpoint.h>
-
-
-//=================================================================================
-// class    : SMESHGUI_PatternWidget()
-// purpose  :
-//=================================================================================
-SMESHGUI_PatternWidget::SMESHGUI_PatternWidget (QWidget* parent, const char* name, WFlags fl)
-     : QFrame(parent, name, WStyle_Customize)
-{
-  myMinU =  myMinV =  myMaxU =  myMaxV = 0;
-  setMinimumHeight(150);
-  repaint();
-}
-
-//=================================================================================
-// function : ~SMESHGUI_PatternWidget()
-// purpose  :
-//=================================================================================
-SMESHGUI_PatternWidget::~SMESHGUI_PatternWidget()
-{
-}
-
-//=================================================================================
-// function : SetPoints()
-// purpose  :
-//=================================================================================
-void SMESHGUI_PatternWidget::SetPoints (PointVector thePoints,
-                                        QValueVector<int> theKeys,
-                                        ConnectivityVector theConnections)
-{
-  myPoints = thePoints;
-  myKeys = theKeys;
-  myConnections  = theConnections;
-
-  if (!thePoints.size())
-    return;
-
-  myMinU = myMaxU = (thePoints[0]).x;
-  myMinV = myMaxV = (thePoints[0]).y;
-  double x, y;
-
-  for (int i = 1; i < thePoints.size(); i++) {
-    x = (thePoints[i]).x;
-    y = (thePoints[i]).y;
-
-    if (myMinU > x)
-      myMinU = x;
-    if (myMaxU < x)
-      myMaxU = x;
-    if (myMinV > y)
-      myMinV = y;
-    if (myMaxV < y)
-      myMaxV = y;
-  }
-
-  repaint();
-}
-
-static const int Shift  = 4; // shift of the point number from point
-static const int Border = 20;
-
-//=================================================================================
-// function : paintEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_PatternWidget::paintEvent (QPaintEvent*)
-{
-  QPainter paint (this);
-  paint.setBrush(Qt::SolidPattern);
-
-  //Draw points
-  const int aRadius = 3; // radius of a point
-
-  for (int i = 0; i < myKeys.size() && i < myPoints.size(); i++) {
-    SMESH::PointStruct aPoint = myPoints[ myKeys[i] ];
-    QPoint aQPnt = MapCoords(aPoint.x, aPoint.y);
-
-    paint.drawPie(aQPnt.x() - aRadius, aQPnt.y() - aRadius, aRadius*2, aRadius*2, 5760, 5760);
-    paint.drawText(aQPnt.x() +  Shift, aQPnt.y() -   Shift, QString::number(i+1));
-  }
-
-  //Draw lines
-  for (int i = 0; i < myConnections.size(); i++) {
-    QValueVector<int> aCVector = myConnections[i];
-
-    if (aCVector.size() == 0)
-      continue;
-
-    SMESH::PointStruct aPoint = myPoints[ aCVector[0] ];
-    const QPoint aBeginPnt = MapCoords(aPoint.x, aPoint.y);
-    QPoint aFirstPnt = aBeginPnt, aSecondPnt;
-
-    for (int j = 1; j < aCVector.size(); j++) {
-      aPoint = myPoints[ aCVector[j] ];
-      aSecondPnt = MapCoords(aPoint.x, aPoint.y);
-      paint.drawLine(aFirstPnt, aSecondPnt);
-      aFirstPnt = aSecondPnt;
-    }
-
-    paint.drawLine(aBeginPnt, aSecondPnt);
-  }
-}
-
-//=================================================================================
-// function : MapCoords()
-// purpose  :
-//=================================================================================
-QPoint SMESHGUI_PatternWidget::MapCoords (const double u, const double v)
-{
-  int aWidth  = width()  - 2*Border;
-  int aHeight = height() - 2*Border;
-
-  double aUBound = myMaxU - myMinU;
-  double aVBound = myMaxV - myMinV;
-
-  double aUScale = aWidth/aUBound;
-  double aVScale = aHeight/aVBound;
-
-  double aScale;
-  aUScale <= aVScale ? aScale = aUScale : aScale = aVScale;
-
-  double aUMiddle = (myMaxU + myMinU)/2;
-  double aVMiddle = (myMaxV + myMinV)/2;
-
-  int x = int(aWidth/2  + (u - aUMiddle)*aScale + Border - Shift);
-
-  int y = int(aHeight/2 + (aVMiddle - v)*aScale + Border + Shift);
-
-  QPoint aPoint = QPoint(x, y);
-
-  return aPoint;
-}
diff --git a/src/SMESHGUI/SMESHGUI_PatternWidget.h b/src/SMESHGUI/SMESHGUI_PatternWidget.h
deleted file mode 100644 (file)
index ddab743..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_PatternWidget.h
-//  Author : Michael ZORIN
-//  Module : SMESH
-//  $Header: 
-
-#ifndef WIDGET_PATTERN_H
-#define WIDGET_PATTERN_H
-
-#include <qframe.h>
-#include <qvaluevector.h>
-
-// IDL Headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-
-typedef QValueVector<SMESH::PointStruct> PointVector;
-typedef QValueVector< QValueVector<int> >  ConnectivityVector;
-
-class QPoint;
-
-//=================================================================================
-// class    : SMESHGUI_PatternWidget
-// purpose  :
-//=================================================================================
-class SMESHGUI_PatternWidget : public QFrame
-{ 
-    Q_OBJECT
-
-public:
-    SMESHGUI_PatternWidget( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
-
-    ~SMESHGUI_PatternWidget();
-
-    void SetPoints( PointVector thePoints,  QValueVector<int> theKeys, ConnectivityVector theConnections );
-
-private :
-    PointVector myPoints;
-    QValueVector<int> myKeys;
-    ConnectivityVector myConnections;
-
-    double myMinU, myMaxU, myMinV, myMaxV;
-      
-private slots:
-
-protected:
-    void paintEvent( QPaintEvent * );
-    QPoint MapCoords( const double u, const double v );
-};
-
-#endif // WIDGET_PATTERN_H
-
diff --git a/src/SMESHGUI/SMESHGUI_PrecisionDlg.cxx b/src/SMESHGUI/SMESHGUI_PrecisionDlg.cxx
deleted file mode 100755 (executable)
index b589e15..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_PrecisionDlg.cxx
-//  Author : Sergey LITONIN
-//  Module : SMESH
-
-#include "SMESHGUI_PrecisionDlg.h"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_VTKUtils.h"
-#include "SMESHGUI_Utils.h"
-
-#include "SUIT_Desktop.h"
-#include "SUIT_ResourceMgr.h"
-
-#include <qgroupbox.h>
-#include <qpushbutton.h>
-#include <qcheckbox.h>
-#include <qspinbox.h>
-#include <qlayout.h>
-#include <qlabel.h>
-
-#define SPACING 5
-#define MARGIN  10
-#define DEFAULT_VAL 10
-#define RANGE 128
-
-/*!
- *  Class       : SMESHGUI_PrecisionDlg
- *  Description : Dialog to specify precision of mesh quality controls
- */
-
-//=======================================================================
-// name    : SMESHGUI_PrecisionDlg::SMESHGUI_PrecisionDlg
-// Purpose : Constructor
-//=======================================================================
-SMESHGUI_PrecisionDlg::SMESHGUI_PrecisionDlg ( SMESHGUI* theModule )
-     : QDialog( SMESH::GetDesktop( theModule ), "SMESHGUI_PrecisionDlg", true,
-                WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
-     mySMESHGUI( theModule )
-{
-  setCaption(tr("CAPTION"));
-
-  QVBoxLayout* aDlgLay = new QVBoxLayout (this, MARGIN, SPACING);
-
-  QFrame* aMainFrame = createMainFrame  (this);
-  QFrame* aBtnFrame  = createButtonFrame(this);
-
-  aDlgLay->addWidget(aMainFrame);
-  aDlgLay->addWidget(aBtnFrame);
-
-  aDlgLay->setStretchFactor(aMainFrame, 1);
-
-  setMinimumWidth((int)(QFontMetrics(font()).width(tr("CAPTION")) * 1.5));
-
-  Init();
-}
-
-//=======================================================================
-// name    : SMESHGUI_PrecisionDlg::~SMESHGUI_PrecisionDlg
-// Purpose : Destructor
-//=======================================================================
-SMESHGUI_PrecisionDlg::~SMESHGUI_PrecisionDlg()
-{
-}
-
-//=======================================================================
-// name    : SMESHGUI_PrecisionDlg::createButtonFrame
-// Purpose : Create frame containing buttons
-//=======================================================================
-QFrame* SMESHGUI_PrecisionDlg::createButtonFrame (QWidget* theParent)
-{
-  QGroupBox* aGrp = new QGroupBox (1, Qt::Vertical, theParent);
-  aGrp->setFrameStyle(QFrame::NoFrame);
-  aGrp->setInsideMargin(0);
-
-  myOKBtn = new QPushButton (tr("SMESH_BUT_OK"), aGrp);
-
-  QLabel* aLbl = new QLabel (aGrp);
-  aLbl->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
-
-  myCancelBtn = new QPushButton (tr("SMESH_BUT_CANCEL"), aGrp);
-
-  connect(myOKBtn, SIGNAL(clicked()), SLOT(onOk()));
-  connect(myCancelBtn, SIGNAL(clicked()), SLOT(onClose()));
-
-  return aGrp;
-}
-
-//=======================================================================
-// name    : SMESHGUI_PrecisionDlg:: createMainFrame
-// Purpose : Create frame containing dialog's input fields
-//=======================================================================
-QFrame* SMESHGUI_PrecisionDlg::createMainFrame (QWidget* theParent)
-{
-  QGroupBox* aGrp = new QGroupBox(2, Qt::Horizontal, theParent);
-  new QLabel (tr("PRECISION"), aGrp);
-  mySpinBox = new QSpinBox (0, RANGE, 1, aGrp);
-  myNotUseChk = new QCheckBox (tr("NOT_USE"), aGrp);
-
-  connect(myNotUseChk, SIGNAL(toggled(bool)), SLOT(onNotUse()));
-
-  return aGrp;
-}
-
-//=======================================================================
-// name    : SMESHGUI_PrecisionDlg::Init
-// Purpose : Initialize dialog fields
-//=======================================================================
-void SMESHGUI_PrecisionDlg::Init()
-{
-  bool isOk = false;
-  int aVal = DEFAULT_VAL;
-  SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( mySMESHGUI );
-  if (mgr && mgr->hasValue("SMESH", "controls_precision")) {
-    QString aStr = mgr->stringValue("SMESH", "controls_precision");
-    aVal = aStr.toInt(&isOk);
-  }
-
-  mySpinBox->setValue(isOk ? aVal : DEFAULT_VAL);
-  myNotUseChk->setChecked(!isOk);
-
-  onNotUse();
-
-  mySMESHGUI->SetActiveDialogBox((QDialog*)this);
-  connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), SLOT(onClose()));
-}
-
-//=======================================================================
-// name    : SMESHGUI_PrecisionDlg::onOk
-// Purpose : SLOT. Called when OK button pressed
-//=======================================================================
-void SMESHGUI_PrecisionDlg::onOk()
-{
-  SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( mySMESHGUI );
-  if (myNotUseChk->isChecked()) {
-    if (mgr) {
-      mgr->remove("SMESH", "controls_precision");
-    }
-    SMESH::SetControlsPrecision(-1);
-  } else {
-    mySpinBox->clearFocus();
-    int aVal = mySpinBox->value();
-    if (mgr) {
-      mgr->setValue("SMESH", "controls_precision", QString("%1").arg(aVal));
-    }
-    SMESH::SetControlsPrecision(aVal);
-  }
-
-  disconnect(mySMESHGUI, 0, this, 0);
-  mySMESHGUI->ResetState() ;
-  accept();
-}
-
-//=======================================================================
-// name    : SMESHGUI_PrecisionDlg::onClose
-// Purpose : SLOT. Called when "Cancel" button pressed
-//=======================================================================
-void SMESHGUI_PrecisionDlg::onClose()
-{
-  disconnect( mySMESHGUI, 0, this, 0);
-  reject();
-}
-
-//=======================================================================
-// name    : SMESHGUI_PrecisionDlg::closeEvent
-// Purpose :
-//=======================================================================
-void SMESHGUI_PrecisionDlg::closeEvent (QCloseEvent*)
-{
-  onClose();
-}
-
-//=======================================================================
-// name    : SMESHGUI_PrecisionDlg::onNotUse
-// Purpose : SLOT. Called when state of "Do not use" check box changed
-//=======================================================================
-void SMESHGUI_PrecisionDlg::onNotUse()
-{
-  mySpinBox->setEnabled(!myNotUseChk->isChecked());
-}
diff --git a/src/SMESHGUI/SMESHGUI_PrecisionDlg.h b/src/SMESHGUI/SMESHGUI_PrecisionDlg.h
deleted file mode 100755 (executable)
index 976db30..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_PrecisionDlg.h
-//  Author : Sergey LITONIN      
-//  Module : SMESH
-
-
-#ifndef SMESHGUI_PrecisionDlg_H
-#define SMESHGUI_PrecisionDlg_H
-
-#include <qdialog.h>
-
-class QSpinBox;
-class QPushButton;
-class QCheckBox;
-class QFrame;
-class SMESHGUI;
-
-/*
-  Class       : SMESHGUI_PrecisionDlg
-  Description : Dialog to specify precision of mesh quality controls
-*/
-
-class SMESHGUI_PrecisionDlg : public QDialog
-{
-  Q_OBJECT
-
-public:
-                            SMESHGUI_PrecisionDlg( SMESHGUI* );
-
-  virtual                   ~SMESHGUI_PrecisionDlg();
-
-  void                      Init();
-
-private slots:
-
-  void                      onOk();
-  void                      onClose();
-  void                      onNotUse();
-
-private:
-
-  QFrame*                   createButtonFrame( QWidget* );
-  QFrame*                   createMainFrame( QWidget* );
-  void                      closeEvent( QCloseEvent* );
-private:
-  SMESHGUI*                 mySMESHGUI;
-  QSpinBox*                 mySpinBox;
-  QPushButton*              myOKBtn;
-  QPushButton*              myCancelBtn;
-  QCheckBox*                myNotUseChk;
-
-};
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.cxx b/src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.cxx
deleted file mode 100644 (file)
index d511378..0000000
+++ /dev/null
@@ -1,396 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_Preferences_ColorDlg.cxx
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHGUI_Preferences_ColorDlg.h"
-#include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
-
-#include "utilities.h"
-
-// QT Includes
-#include <qbuttongroup.h>
-#include <qcheckbox.h>
-#include <qcombobox.h>
-#include <qframe.h>
-#include <qlabel.h>
-#include <qpixmap.h>
-#include <qpushbutton.h>
-#include <qlayout.h>
-#include <qcolordialog.h>
-#include <qspinbox.h>
-#include <qcolor.h>
-
-#include "SUIT_Desktop.h"
-
-using namespace std;
-
-//=================================================================================
-// function : SMESHGUI_Preferences_ColorDlg()
-// purpose  : Constructs a SMESHGUI_Preferences_ColorDlg which is a child
-//            of 'parent', with the name 'name' and widget flags set to 'f'
-//            The dialog will by default be modeless, unless you
-//            set'modal' to TRUE to construct a modal dialog.
-//=================================================================================
-SMESHGUI_Preferences_ColorDlg::SMESHGUI_Preferences_ColorDlg( SMESHGUI* theModule, const char* name)
-     : QDialog( SMESH::GetDesktop( theModule ), name, true, WStyle_Customize |
-                WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
-    mySMESHGUI( theModule )
-{
-    if (!name)
-       setName("SMESHGUI_Preferences_ColorDlg");
-    setCaption(tr("Preferences - Set Color"));
-    setSizeGripEnabled(TRUE);
-    QGridLayout* SMESHGUI_Preferences_ColorDlgLayout = new QGridLayout(this);
-    SMESHGUI_Preferences_ColorDlgLayout->setSpacing(6);
-    SMESHGUI_Preferences_ColorDlgLayout->setMargin(11);
-
-    ButtonGroup1 = new QButtonGroup(tr("Elements"), this, "ButtonGroup1");
-    ButtonGroup1->setColumnLayout(0, Qt::Vertical);
-    ButtonGroup1->layout()->setSpacing(0);
-    ButtonGroup1->layout()->setMargin(0);
-    QGridLayout* ButtonGroup1Layout = new QGridLayout(ButtonGroup1->layout());
-    ButtonGroup1Layout->setAlignment(Qt::AlignTop);
-    ButtonGroup1Layout->setSpacing(6);
-    ButtonGroup1Layout->setMargin(11);
-
-    TextLabel_Fill = new QLabel(tr("Fill"), ButtonGroup1, "TextLabel_2D_Fill");
-    ButtonGroup1Layout->addWidget(TextLabel_Fill, 0, 0);
-
-    btnFillColor = new QPushButton(ButtonGroup1, "btnFillColor");
-    btnFillColor->setFixedSize(QSize(25, 25));
-    ButtonGroup1Layout->addWidget(btnFillColor, 0, 1);
-
-    TextLabel_Outine = new QLabel(tr("Outline"), ButtonGroup1, "TextLabel_2D_Outine");
-    ButtonGroup1Layout->addWidget(TextLabel_Outine, 0, 2);
-
-    btnOutlineColor = new QPushButton(ButtonGroup1, "btnOutlineColor");
-    btnOutlineColor->setFixedSize(QSize(25, 25));
-    ButtonGroup1Layout->addWidget(btnOutlineColor, 0, 3);
-
-    TextLabel_Width = new QLabel(tr("Width"), ButtonGroup1, "TextLabel_2D_Width");
-    ButtonGroup1Layout->addWidget(TextLabel_Width, 0, 4);
-
-    SpinBox_Width = new QSpinBox(0, 5, 1, ButtonGroup1, "SpinBox_Width");
-    SpinBox_Width->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
-    SpinBox_Width->setWrapping(FALSE);
-    SpinBox_Width->setButtonSymbols(QSpinBox::PlusMinus);
-    ButtonGroup1Layout->addWidget(SpinBox_Width, 0, 5);
-
-    TextLabel_BackFace = new QLabel(tr("Back Face"), ButtonGroup1, "TextLabel_BackFace");
-    ButtonGroup1Layout->addWidget(TextLabel_BackFace, 1, 0);
-
-    btnBackFaceColor = new QPushButton(ButtonGroup1, "btnBackFaceColor");
-    btnBackFaceColor->setFixedSize(QSize(25, 25));
-    ButtonGroup1Layout->addWidget(btnBackFaceColor, 1, 1);
-
-    TextLabel_ShrinkCoeff = new QLabel(tr("Shrink coef."), ButtonGroup1, "TextLabel_ShrinkCoeff");
-    ButtonGroup1Layout->addWidget(TextLabel_ShrinkCoeff, 2, 0);
-
-    SpinBox_Shrink = new QSpinBox(20, 100, 1, ButtonGroup1, "SpinBox_Shrink");
-    SpinBox_Shrink->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
-    SpinBox_Shrink->setButtonSymbols(QSpinBox::PlusMinus);
-    ButtonGroup1Layout->addMultiCellWidget(SpinBox_Shrink, 2, 2, 1, 5);
-
-    SMESHGUI_Preferences_ColorDlgLayout->addWidget(ButtonGroup1, 0, 0);
-
-    ButtonGroup2 = new QButtonGroup(tr("Nodes"), this, "ButtonGroup2");
-    ButtonGroup2->setColumnLayout(0, Qt::Vertical);
-    ButtonGroup2->layout()->setSpacing(0);
-    ButtonGroup2->layout()->setMargin(0);
-    QGridLayout* ButtonGroup2Layout = new QGridLayout(ButtonGroup2->layout());
-    ButtonGroup2Layout->setAlignment(Qt::AlignTop);
-    ButtonGroup2Layout->setSpacing(6);
-    ButtonGroup2Layout->setMargin(11);
-
-    TextLabel_Nodes_Color = new QLabel(tr("Color"), ButtonGroup2, "TextLabel_Nodes_Color");
-    ButtonGroup2Layout->addWidget(TextLabel_Nodes_Color, 0, 0);
-
-    btnNodeColor = new QPushButton(ButtonGroup2, "btnNodeColor");
-    btnNodeColor->setFixedSize(QSize(25, 25));
-    ButtonGroup2Layout->addWidget(btnNodeColor, 0, 1);
-
-    TextLabel_Nodes_Size = new QLabel(tr("Size"), ButtonGroup2, "TextLabel_Nodes_Size");
-    ButtonGroup2Layout->addWidget(TextLabel_Nodes_Size, 0, 2);
-
-    SpinBox_Nodes_Size = new QSpinBox(0, 5, 1, ButtonGroup2, "SpinBox_Nodes_Size");
-    SpinBox_Nodes_Size->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
-    SpinBox_Nodes_Size->setWrapping(FALSE);
-    SpinBox_Nodes_Size->setButtonSymbols(QSpinBox::PlusMinus);
-    ButtonGroup2Layout->addWidget(SpinBox_Nodes_Size, 0, 3);
-
-    SMESHGUI_Preferences_ColorDlgLayout->addWidget(ButtonGroup2, 1, 0);
-
-    GroupButtons = new QButtonGroup(this, "GroupButtons");
-    GroupButtons->setColumnLayout(0, Qt::Vertical);
-    GroupButtons->layout()->setSpacing(0);
-    GroupButtons->layout()->setMargin(0);
-    QGridLayout* GroupButtonsLayout = new QGridLayout(GroupButtons->layout());
-    GroupButtonsLayout->setAlignment(Qt::AlignTop);
-    GroupButtonsLayout->setSpacing(6);
-    GroupButtonsLayout->setMargin(11);
-
-    buttonOk = new QPushButton(tr("&OK"), GroupButtons, "buttonOk");
-    buttonOk->setAutoDefault(TRUE);
-    buttonOk->setDefault(TRUE);
-    GroupButtonsLayout->addWidget(buttonOk, 0, 0);
-
-    GroupButtonsLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 1);
-
-    buttonCancel = new QPushButton(tr("&Cancel"), GroupButtons, "buttonCancel");
-    buttonCancel->setAutoDefault(TRUE);
-    GroupButtonsLayout->addWidget(buttonCancel, 0, 2);
-
-    SMESHGUI_Preferences_ColorDlgLayout->addWidget(GroupButtons, 2, 0);
-
-    Init();
-}
-
-//=================================================================================
-// function : ~SMESHGUI_Preferences_ColorDlg()
-// purpose  : Destructor
-//=================================================================================
-SMESHGUI_Preferences_ColorDlg::~SMESHGUI_Preferences_ColorDlg()
-{
-  // no need to delete child widgets, Qt does it all for us
-}
-
-//=================================================================================
-// function : Init()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::Init()
-{
-  mySMESHGUI->SetActiveDialogBox((QDialog*)this);
-
-  /* signals and slots connections */
-  connect(buttonOk, SIGNAL(clicked()),     this, SLOT(ClickOnOk()));
-  connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
-
-  connect(btnFillColor, SIGNAL(clicked()), this, SLOT(SelectFillColor()));
-  connect(btnOutlineColor, SIGNAL(clicked()), this, SLOT(SelectOutlineColor()));
-  connect(btnNodeColor, SIGNAL(clicked()), this, SLOT(SelectNodeColor()));
-  connect(btnBackFaceColor, SIGNAL(clicked()), this, SLOT(SelectBackFaceColor()));
-
-  connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
-  /* to close dialog if study change */
-  connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
-
-  /* Move widget on the botton right corner of main widget */
-  int x, y;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-}
-
-//=================================================================================
-// function : SelectFillColor()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SelectFillColor()
-{
-  QColor color = btnFillColor->palette().active().button();
-  color = QColorDialog::getColor(color);
-  if (color.isValid()) {
-    QPalette pal = btnFillColor->palette();
-    pal.setColor(QColorGroup::Button, color);
-    btnFillColor->setPalette(pal);
-  }
-}
-
-//=================================================================================
-// function : SelectBackFaceColor()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SelectBackFaceColor()
-{
-  QColor color = btnBackFaceColor->palette().active().button();
-  color = QColorDialog::getColor(color);
-  if (color.isValid()) {
-    QPalette pal = btnBackFaceColor->palette();
-    pal.setColor(QColorGroup::Button, color);
-    btnBackFaceColor->setPalette(pal);
-  }
-}
-
-//=================================================================================
-// function : SelectOutlineColor()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SelectOutlineColor()
-{
-  QColor color = btnOutlineColor->palette().active().button();
-  color = QColorDialog::getColor(color);
-  if (color.isValid()) {
-    QPalette pal = btnOutlineColor->palette();
-    pal.setColor(QColorGroup::Button, color);
-    btnOutlineColor->setPalette(pal);
-  }
-}
-
-//=================================================================================
-// function : SelectNodeColor()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SelectNodeColor()
-{
-  QColor color = btnNodeColor->palette().active().button();
-  color = QColorDialog::getColor(color);
-  if (color.isValid()) {
-    QPalette pal = btnNodeColor->palette();
-    pal.setColor(QColorGroup::Button, color);
-    btnNodeColor->setPalette(pal);
-  }
-}
-
-//=================================================================================
-// function : ClickOnOk()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::ClickOnOk()
-{
-  mySMESHGUI->ResetState();
-  accept();
-}
-
-//=================================================================================
-// function : ClickOnCancel()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::ClickOnCancel()
-{
-  mySMESHGUI->ResetState();
-  reject();
-}
-
-//=================================================================================
-// function : DeactivateActiveDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::DeactivateActiveDialog()
-{
-}
-
-//=================================================================================
-// function : closeEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::closeEvent (QCloseEvent*)
-{
-  this->ClickOnCancel(); /* same than click on cancel button */
-}
-
-//=================================================================================
-// function : ActivateThisDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::ActivateThisDialog()
-{
-  /* Emit a signal to deactivate any active dialog */
-  mySMESHGUI->EmitSignalDeactivateDialog();
-}
-
-//=================================================================================
-// function : SetColor()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SetColor (int type, QColor color)
-{
-  switch (type) {
-  case 1 : // fill
-    {
-      QPalette pal = btnFillColor->palette();
-      pal.setColor(QColorGroup::Button, color);
-      btnFillColor->setPalette(pal);
-      break;
-    }
-  case 2 : // outline
-    {
-      QPalette pal = btnOutlineColor->palette();
-      pal.setColor(QColorGroup::Button, color);
-      btnOutlineColor->setPalette(pal);
-      break;
-    }
-  case 3 :  // node
-    {
-      QPalette pal = btnNodeColor->palette();
-      pal.setColor(QColorGroup::Button, color);
-      btnNodeColor->setPalette(pal);
-      break;
-    }
-  case 4 : // back face
-    {
-      QPalette pal = btnBackFaceColor->palette();
-      pal.setColor(QColorGroup::Button, color);
-      btnBackFaceColor->setPalette(pal);
-      break;
-    }
-  }
-}
-
-//=================================================================================
-// function : GetColor()
-// purpose  :
-//=================================================================================
-QColor SMESHGUI_Preferences_ColorDlg::GetColor (int type)
-{
-  QColor color;
-  switch (type) {
-  case 1 : color = btnFillColor->palette().active().button();     break; // fill
-  case 2 : color = btnOutlineColor->palette().active().button();  break; // outline
-  case 3 : color = btnNodeColor->palette().active().button();     break; // node
-  case 4 : color = btnBackFaceColor->palette().active().button(); break; // back face
-  }
-  return color;
-}
-
-//=================================================================================
-// function : SetIntValue()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SetIntValue (int type, int value)
-{
-  switch (type) {
-  case 1 : SpinBox_Width->setValue(value);      break; // width
-  case 2 : SpinBox_Nodes_Size->setValue(value); break; // nodes size = value; break;
-  case 3 : SpinBox_Shrink->setValue(value);     break; // shrink coeff
-  }
-}
-
-//=================================================================================
-// function : GetIntValue()
-// purpose  :
-//=================================================================================
-int SMESHGUI_Preferences_ColorDlg::GetIntValue (int type)
-{
-  int res = 0;
-  switch (type) {
-  case 1 : res = SpinBox_Width->value();      break; // width
-  case 2 : res = SpinBox_Nodes_Size->value(); break; // nodes size
-  case 3 : res = SpinBox_Shrink->value();     break; // shrink coeff
-  }
-  return res;
-}
diff --git a/src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h b/src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h
deleted file mode 100644 (file)
index 43702b2..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_Preferences_ColorDlg.h
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#ifndef SMESHGUI_PREFERENCES_COLORDLG_H
-#define SMESHGUI_PREFERENCES_COLORDLG_H
-
-// SALOME Includes
-//#include "SUIT_Config.h"
-//#include "SUIT_Settings.h"
-
-// IDL Headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Gen)
-
-// QT Includes
-#include <qdialog.h>
-
-class QButtonGroup;
-class QFrame;
-class QLabel;
-class QPushButton;
-class QSpinBox;
-class QColor;
-class SMESHGUI;
-
-class SMESHGUI_Preferences_ColorDlg : public QDialog
-{ 
-    Q_OBJECT
-
-public:
-    SMESHGUI_Preferences_ColorDlg( SMESHGUI*, const char* name = 0 );
-    ~SMESHGUI_Preferences_ColorDlg();
-
-    void   SetColor(int type, QColor color);
-    QColor GetColor(int type);
-    void   SetIntValue(int type, int value);
-    int    GetIntValue(int type);
-
-private:
-    void closeEvent( QCloseEvent* e ) ;
-    void Init();
-
-private slots:
-//  void RadioButtonClicked(int radioButtonId);
-    void ClickOnOk();
-    void ClickOnCancel();
-    void DeactivateActiveDialog() ;
-    void ActivateThisDialog() ;
-
-    void SelectFillColor();
-    void SelectBackFaceColor();
-    void SelectOutlineColor();
-    void SelectNodeColor();
-
-private:
-    SMESH::SMESH_Gen_var  myCompMesh ;                
-    SMESHGUI*             mySMESHGUI ;            
-
-    QButtonGroup*         ButtonGroup1;
-    QLabel*               TextLabel_Fill;
-    QPushButton*          btnFillColor;
-    QLabel*               TextLabel_Outine;
-    QPushButton*          btnOutlineColor;
-    QLabel*               TextLabel_Width;
-    QSpinBox*             SpinBox_Width;
-    QLabel*               TextLabel_BackFace;
-    QPushButton*          btnBackFaceColor;
-    QLabel*               TextLabel_ShrinkCoeff;
-    QSpinBox*             SpinBox_Shrink;
-    QButtonGroup*         ButtonGroup2;
-    QLabel*               TextLabel_Nodes_Color;
-    QPushButton*          btnNodeColor;
-    QLabel*               TextLabel_Nodes_Size;
-    QSpinBox*             SpinBox_Nodes_Size;
-    QButtonGroup*         GroupButtons;
-    QPushButton*          buttonOk;
-    QPushButton*          buttonCancel;
-};
-
-#endif // SMESHGUI_PREFERENCES_COLORDLG_H
diff --git a/src/SMESHGUI/SMESHGUI_Preferences_SelectionDlg.cxx b/src/SMESHGUI/SMESHGUI_Preferences_SelectionDlg.cxx
deleted file mode 100644 (file)
index 7606ccf..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_Preferences_SelectionDlg.cxx
-//  Author : Natalia KOPNOVA
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHGUI_Preferences_SelectionDlg.h"
-#include "SMESHGUI.h"
-
-#include "SMESHGUI_Utils.h"
-
-#include "SUIT_Desktop.h"
-
-#include <qgroupbox.h>
-#include <qlayout.h>
-#include <qlabel.h>
-#include <qlineedit.h>
-#include <qvalidator.h>
-#include <qspinbox.h>
-#include <qpushbutton.h>
-#include <qpalette.h>
-#include <qcolordialog.h>
-
-using namespace std;
-
-//=================================================================================
-// class    : SMESHGUI_LineEdit
-// purpose  : 
-//=================================================================================
-SMESHGUI_LineEdit::SMESHGUI_LineEdit(QWidget* parent, const char *name)
-  : QLineEdit(parent, name)
-{
-}
-
-SMESHGUI_LineEdit::SMESHGUI_LineEdit(const QString& text, QWidget* parent, const char *name)
-  : QLineEdit(text, parent, name)
-{
-}
-
-void SMESHGUI_LineEdit::focusOutEvent(QFocusEvent* e)
-{
-  const QValidator* aVal = validator();
-  QString aText = text();
-  int aCurPos = cursorPosition();
-  if (aVal && aVal->validate(aText, aCurPos) != QValidator::Acceptable) {
-    QString aValid = aText;
-    aVal->fixup(aValid);
-    if (aText != aValid) {
-      setText(aValid);
-      update();
-      return;
-    }
-  }
-  QLineEdit::focusOutEvent(e);
-}
-
-
-//=================================================================================
-// class    : SMESHGUI_DoubleValidator
-// purpose  : 
-//=================================================================================
-SMESHGUI_DoubleValidator::SMESHGUI_DoubleValidator(QObject * parent, const char *name)
-  : QDoubleValidator(parent, name)
-{
-}
-
-SMESHGUI_DoubleValidator::SMESHGUI_DoubleValidator(double bottom, double top, int decimals,
-                                                QObject * parent, const char *name)
-  : QDoubleValidator(bottom, top, decimals, parent, name)
-{
-}
-
-void SMESHGUI_DoubleValidator::fixup(QString& theText) const
-{
-  bool ok;
-  double aValue = theText.toDouble(&ok);
-  if (ok) {
-    if (aValue < bottom())
-      theText = QString::number(bottom(), 'g', decimals());
-    if (aValue > top())
-      theText = QString::number(top(), 'g', decimals());
-  }
-}
-
-
-//=================================================================================
-// class    : SMESHGUI_Preferences_SelectionDlg()
-// purpose  : 
-//=================================================================================
-SMESHGUI_Preferences_SelectionDlg::SMESHGUI_Preferences_SelectionDlg( SMESHGUI* theModule, const char* name )
-  : QDialog( SMESH::GetDesktop( theModule ), name, true, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
-    mySMESHGUI( theModule )
-{
-  if ( !name ) setName( "SMESHGUI_Preferences_SelectionDlg" );
-  setCaption( tr( "SMESH_PREF_SELECTION"  ) );
-
-  QVBoxLayout* aMainLayout = new QVBoxLayout(this, 11, 6);
-  QLabel* aLabel;
-  
-  /***************************************************************/
-  QGroupBox* aSelectBox = new QGroupBox(4, Qt::Horizontal, this, "selection");
-  aSelectBox->setTitle(tr("SMESH_SELECTION"));
-
-  aLabel = new QLabel(aSelectBox, "selection color label");
-  aLabel->setText(tr("SMESH_OUTLINE_COLOR"));
-  myColor[2] = new QPushButton(aSelectBox, "outline color");
-  myColor[2]->setFixedSize(QSize(25, 25));
-
-  aSelectBox->addSpace(0);
-  aSelectBox->addSpace(0);
-
-  aLabel = new QLabel(aSelectBox, "selection color label");
-  aLabel->setText(tr("SMESH_ELEMENTS_COLOR"));
-  myColor[1] = new QPushButton(aSelectBox, "elements color");
-  myColor[1]->setFixedSize(QSize(25, 25));
-
-  aLabel = new QLabel(aSelectBox, "selection width label");
-  aLabel->setText(tr("SMESH_WIDTH"));
-  myWidth[1] = new QSpinBox(0, 5, 1, aSelectBox, "selection width");
-  myWidth[1]->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
-  myWidth[1]->setButtonSymbols(QSpinBox::PlusMinus);
-  myWidth[1]->setMinimumWidth(50);
-  
-  /***************************************************************/
-  QGroupBox* aPreSelectBox = new QGroupBox(1, Qt::Vertical, this, "preselection");
-  aPreSelectBox->setTitle(tr("SMESH_PRESELECTION"));
-
-  aLabel = new QLabel(aPreSelectBox, "preselection color label");
-  aLabel->setText(tr("SMESH_HILIGHT_COLOR"));
-  myColor[0] = new QPushButton(aPreSelectBox, "preselection color");
-  myColor[0]->setFixedSize(QSize(25, 25));
-
-  aLabel = new QLabel(aPreSelectBox, "preselection width label");
-  aLabel->setText(tr("SMESH_WIDTH"));
-  myWidth[0] = new QSpinBox(0, 5, 1, aPreSelectBox, "preselection width");
-  myWidth[0]->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
-  myWidth[0]->setButtonSymbols(QSpinBox::PlusMinus);
-  myWidth[0]->setMinimumWidth(50);
-  
-  /***************************************************************/
-  QGroupBox* aPrecisionBox = new QGroupBox(1, Qt::Vertical, this, "preselection");
-  aPrecisionBox->setTitle(tr("SMESH_PRECISION"));
-  QDoubleValidator* aValidator = new SMESHGUI_DoubleValidator(aPrecisionBox);
-  aValidator->setBottom(0.001);
-  aValidator->setDecimals(6);
-
-  aLabel = new QLabel(aPrecisionBox, "node tol label");
-  aLabel->setText(tr("SMESH_NODES"));
-  myPrecision[0] = new SMESHGUI_LineEdit(aPrecisionBox, "node precision");
-  myPrecision[0]->setValidator(aValidator);
-
-  aLabel = new QLabel(aPrecisionBox, "item tol label");
-  aLabel->setText(tr("SMESH_ELEMENTS"));
-  myPrecision[1] = new SMESHGUI_LineEdit(aPrecisionBox, "item precision");
-  myPrecision[1]->setValidator(aValidator);
-
-  /***************************************************************/
-  QFrame* aButtons = new QFrame(this, "button box");
-  aButtons->setFrameStyle(QFrame::Box | QFrame::Sunken);
-  QHBoxLayout* aBtnLayout = new QHBoxLayout(aButtons, 11, 6);
-  aBtnLayout->setAutoAdd(false);
-
-  QPushButton* aOKBtn = new QPushButton(aButtons, "ok");
-  aOKBtn->setText(tr("SMESH_BUT_OK"));
-  aOKBtn->setAutoDefault(true);
-  aOKBtn->setDefault(true);
-  QPushButton* aCloseBtn = new QPushButton(aButtons, "close");
-  aCloseBtn->setText(tr("SMESH_BUT_CLOSE"));
-  aCloseBtn->setAutoDefault(true);
-
-  aBtnLayout->addWidget(aOKBtn);
-  aBtnLayout->addStretch();
-  aBtnLayout->addWidget(aCloseBtn);
-
-  /***************************************************************/
-  aMainLayout->addWidget(aSelectBox);
-  aMainLayout->addWidget(aPreSelectBox);
-  aMainLayout->addWidget(aPrecisionBox);
-  aMainLayout->addWidget(aButtons);
-
-  for (int i = 0; i < 3; i++)
-    connect(myColor[i], SIGNAL(clicked()), this, SLOT(onSelectColor()));
-
-  connect(aOKBtn, SIGNAL(clicked()), this, SLOT(accept()));
-  connect(aCloseBtn, SIGNAL(clicked()), this, SLOT(reject()));
-
-  /* Move widget on the botton right corner of main widget */
-  int x, y ;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-}
-
-//=================================================================================
-// function : ~SMESHGUI_Preferences_SelectionDlg()
-// purpose  : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_Preferences_SelectionDlg::~SMESHGUI_Preferences_SelectionDlg()
-{
-    // no need to delete child widgets, Qt does it all for us
-}
-
-//=================================================================================
-// function : closeEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_SelectionDlg::closeEvent( QCloseEvent* e )
-{
-  reject();
-}
-
-//=================================================================================
-// function : onSelectColor()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_SelectionDlg::onSelectColor()
-{
-  QPushButton* aSender = (QPushButton*)sender();
-  QColor aColor = aSender->palette().active().button();
-  aColor = QColorDialog::getColor(aColor, this);
-  if (aColor.isValid()) {
-    QPalette aPal = aSender->palette();
-    aPal.setColor(QColorGroup::Button, aColor);
-    aSender->setPalette(aPal);
-  }
-}
-
-//=================================================================================
-// function : SetColor()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_SelectionDlg::SetColor(int type, QColor color)
-{
-  if (type > 0 && type <= 3) {
-    QPalette aPal = myColor[type-1]->palette();
-    aPal.setColor(QColorGroup::Button, color);
-    myColor[type-1]->setPalette(aPal);
- }
-}
-
-//=================================================================================
-// function : GetColor()
-// purpose  :
-//=================================================================================
-QColor SMESHGUI_Preferences_SelectionDlg::GetColor(int type)
-{
-  QColor aColor;
-  if (type > 0 && type <= 3)
-    aColor = myColor[type-1]->palette().active().button();
-  return aColor;
-}
-
-//=================================================================================
-// function : SetWidth()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_SelectionDlg::SetWidth(int type, int value)
-{
-  if (type > 0 && type <= 2)
-    myWidth[type-1]->setValue(value);
-}
-
-//=================================================================================
-// function : GetWidth()
-// purpose  :
-//=================================================================================
-int SMESHGUI_Preferences_SelectionDlg::GetWidth(int type)
-{
-  if (type > 0 && type <= 2)
-    return myWidth[type-1]->value();
-  return 0;
-}
-
-//=================================================================================
-// function : SetPrecision()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_SelectionDlg::SetPrecision(int type, double value)
-{
-  if (type > 0 && type <= 2)
-    myPrecision[type-1]->setText(QString::number(value));
-}
-
-//=================================================================================
-// function : GetPrecision()
-// purpose  :
-//=================================================================================
-double SMESHGUI_Preferences_SelectionDlg::GetPrecision(int type)
-{
-  if (type > 0 && type <= 2)
-    return myPrecision[type-1]->text().toDouble();
-  return 0;
-}
diff --git a/src/SMESHGUI/SMESHGUI_Preferences_SelectionDlg.h b/src/SMESHGUI/SMESHGUI_Preferences_SelectionDlg.h
deleted file mode 100644 (file)
index 07b7a64..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platorm.org or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_Preferences_SelectionDlg.h
-//  Author : Natalia KOPNOVA
-//  Module : SMESH
-//  $Header$
-
-#ifndef SMESHGUI_PREFERENCES_SELECTIONDLG_H
-#define SMESHGUI_PREFERENCES_SELECTIONDLG_H
-
-
-// QT Includes
-#include <qdialog.h>
-#include <qlineedit.h>
-#include <qvalidator.h>
-
-class QPushButton;
-class QSpinBox;
-class QColor;
-class SMESHGUI;
-
-class SMESHGUI_LineEdit : public QLineEdit
-{
-  Q_OBJECT
-
-  public:
-    SMESHGUI_LineEdit(QWidget* parent, const char* name = 0);
-    SMESHGUI_LineEdit(const QString& text, QWidget* parent, const char* name = 0);
-
-    ~SMESHGUI_LineEdit() {};
-
-  protected:
-    void focusOutEvent(QFocusEvent* e);
-};
-
-class SMESHGUI_DoubleValidator : public QDoubleValidator
-{
-  Q_OBJECT
-
-  public:
-    SMESHGUI_DoubleValidator(QObject* parent, const char* name = 0);
-    SMESHGUI_DoubleValidator(double bottom, double top, int decimals,
-                           QObject* parent, const char* name = 0);
-
-    ~SMESHGUI_DoubleValidator() {};
-
-    void fixup(QString& text) const;
-};
-
-class SMESHGUI_Preferences_SelectionDlg : public QDialog
-{ 
-    Q_OBJECT
-
-public:
-    SMESHGUI_Preferences_SelectionDlg( SMESHGUI*, const char* name = 0 );
-    ~SMESHGUI_Preferences_SelectionDlg();
-
-    void   SetColor(int type, QColor color);
-    QColor GetColor(int type);
-    void   SetWidth(int type, int value);
-    int    GetWidth(int type);
-    void   SetPrecision(int type, double value);
-    double GetPrecision(int type);
-
-private:
-    void closeEvent( QCloseEvent* e ) ;
-
-private slots:
-    void onSelectColor();
-
-private:
-    SMESHGUI*             mySMESHGUI;
-    QPushButton*          myColor[3];
-    QSpinBox*             myWidth[2];
-    QLineEdit*            myPrecision[2];
-};
-
-#endif // SMESHGUI_PREFERENCES_SELECTIONDLG_H
diff --git a/src/SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx b/src/SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx
deleted file mode 100644 (file)
index 1652972..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_RemoveElementsDlg.cxx
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHGUI_RemoveElementsDlg.h"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
-#include "SMESHGUI_VTKUtils.h"
-#include "SMESHGUI_MeshUtils.h"
-#include "SMESHGUI_IdValidator.h"
-
-#include "SMESH_Actor.h"
-#include "SMDS_Mesh.hxx"
-
-#include "SUIT_ResourceMgr.h"
-#include "SUIT_Desktop.h"
-
-#include "SVTK_Selector.h"
-#include "SVTK_ViewModel.h"
-#include "SVTK_ViewWindow.h"
-#include "SALOME_ListIO.hxx"
-
-#include "utilities.h"
-
-// OCCT Includes
-#include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
-
-// QT Includes
-#include <qbuttongroup.h>
-#include <qgroupbox.h>
-#include <qlabel.h>
-#include <qlineedit.h>
-#include <qpushbutton.h>
-#include <qradiobutton.h>
-#include <qlayout.h>
-#include <qvariant.h>
-#include <qtooltip.h>
-#include <qwhatsthis.h>
-#include <qimage.h>
-#include <qpixmap.h>
-
-using namespace std;
-
-//=================================================================================
-// class    : SMESHGUI_RemoveElementsDlg()
-// purpose  :
-//=================================================================================
-SMESHGUI_RemoveElementsDlg
-::SMESHGUI_RemoveElementsDlg (SMESHGUI* theModule, 
-                             const char* name,
-                             bool modal, 
-                             WFlags fl)
-  : QDialog(SMESH::GetDesktop(theModule), 
-           name, 
-           modal, 
-           WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | Qt::WDestructiveClose),
-    mySelector(SMESH::GetViewWindow(theModule)->GetSelector()),
-    mySelectionMgr(SMESH::GetSelectionMgr(theModule)),
-    mySMESHGUI(theModule),
-    myBusy(false)
-{
-    QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_REM_ELEMENT")));
-    QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
-
-    if (!name)
-      setName("SMESHGUI_RemoveElementsDlg");
-    resize(303, 185);
-    setCaption(tr("SMESH_REMOVE_ELEMENTS_TITLE"));
-    setSizeGripEnabled(TRUE);
-    SMESHGUI_RemoveElementsDlgLayout = new QGridLayout(this);
-    SMESHGUI_RemoveElementsDlgLayout->setSpacing(6);
-    SMESHGUI_RemoveElementsDlgLayout->setMargin(11);
-
-    /***************************************************************/
-    GroupConstructors = new QButtonGroup(this, "GroupConstructors");
-    GroupConstructors->setTitle(tr("SMESH_ELEMENTS" ));
-    GroupConstructors->setExclusive(TRUE);
-    GroupConstructors->setColumnLayout(0, Qt::Vertical);
-    GroupConstructors->layout()->setSpacing(0);
-    GroupConstructors->layout()->setMargin(0);
-    GroupConstructorsLayout = new QGridLayout(GroupConstructors->layout());
-    GroupConstructorsLayout->setAlignment(Qt::AlignTop);
-    GroupConstructorsLayout->setSpacing(6);
-    GroupConstructorsLayout->setMargin(11);
-    Constructor1 = new QRadioButton(GroupConstructors, "Constructor1");
-    Constructor1->setText(tr("" ));
-    Constructor1->setPixmap(image0);
-    Constructor1->setChecked(TRUE);
-    Constructor1->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, Constructor1->sizePolicy().hasHeightForWidth()));
-    Constructor1->setMinimumSize(QSize(50, 0));
-    GroupConstructorsLayout->addWidget(Constructor1, 0, 0);
-    QSpacerItem* spacer = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-    GroupConstructorsLayout->addItem(spacer, 0, 1);
-    SMESHGUI_RemoveElementsDlgLayout->addWidget(GroupConstructors, 0, 0);
-
-    /***************************************************************/
-    GroupButtons = new QGroupBox(this, "GroupButtons");
-    GroupButtons->setGeometry(QRect(10, 10, 281, 48));
-    GroupButtons->setTitle(tr("" ));
-    GroupButtons->setColumnLayout(0, Qt::Vertical);
-    GroupButtons->layout()->setSpacing(0);
-    GroupButtons->layout()->setMargin(0);
-    GroupButtonsLayout = new QGridLayout(GroupButtons->layout());
-    GroupButtonsLayout->setAlignment(Qt::AlignTop);
-    GroupButtonsLayout->setSpacing(6);
-    GroupButtonsLayout->setMargin(11);
-    buttonCancel = new QPushButton(GroupButtons, "buttonCancel");
-    buttonCancel->setText(tr("SMESH_BUT_CLOSE" ));
-    buttonCancel->setAutoDefault(TRUE);
-    GroupButtonsLayout->addWidget(buttonCancel, 0, 3);
-    buttonApply = new QPushButton(GroupButtons, "buttonApply");
-    buttonApply->setText(tr("SMESH_BUT_APPLY" ));
-    buttonApply->setAutoDefault(TRUE);
-    GroupButtonsLayout->addWidget(buttonApply, 0, 1);
-    QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-    GroupButtonsLayout->addItem(spacer_9, 0, 2);
-    buttonOk = new QPushButton(GroupButtons, "buttonOk");
-    buttonOk->setText(tr("SMESH_BUT_OK" ));
-    buttonOk->setAutoDefault(TRUE);
-    buttonOk->setDefault(TRUE);
-    GroupButtonsLayout->addWidget(buttonOk, 0, 0);
-    SMESHGUI_RemoveElementsDlgLayout->addWidget(GroupButtons, 2, 0);
-
-    /***************************************************************/
-    GroupC1 = new QGroupBox(this, "GroupC1");
-    GroupC1->setTitle(tr("SMESH_REMOVE" ));
-    GroupC1->setMinimumSize(QSize(0, 0));
-    GroupC1->setFrameShape(QGroupBox::Box);
-    GroupC1->setFrameShadow(QGroupBox::Sunken);
-    GroupC1->setColumnLayout(0, Qt::Vertical);
-    GroupC1->layout()->setSpacing(0);
-    GroupC1->layout()->setMargin(0);
-    GroupC1Layout = new QGridLayout(GroupC1->layout());
-    GroupC1Layout->setAlignment(Qt::AlignTop);
-    GroupC1Layout->setSpacing(6);
-    GroupC1Layout->setMargin(11);
-    TextLabelC1A1 = new QLabel(GroupC1, "TextLabelC1A1");
-    TextLabelC1A1->setText(tr("SMESH_ID_ELEMENTS" ));
-    TextLabelC1A1->setMinimumSize(QSize(50, 0));
-    TextLabelC1A1->setFrameShape(QLabel::NoFrame);
-    TextLabelC1A1->setFrameShadow(QLabel::Plain);
-    GroupC1Layout->addWidget(TextLabelC1A1, 0, 0);
-    SelectButtonC1A1 = new QPushButton(GroupC1, "SelectButtonC1A1");
-    SelectButtonC1A1->setText(tr("" ));
-    SelectButtonC1A1->setPixmap(image1);
-    SelectButtonC1A1->setToggleButton(FALSE);
-    GroupC1Layout->addWidget(SelectButtonC1A1, 0, 1);
-    LineEditC1A1 = new QLineEdit(GroupC1, "LineEditC1A1");
-    LineEditC1A1->setValidator(new SMESHGUI_IdValidator(this, "validator"));
-    GroupC1Layout->addWidget(LineEditC1A1, 0, 2);
-    SMESHGUI_RemoveElementsDlgLayout->addWidget(GroupC1, 1, 0);
-
-    Init(); /* Initialisations */
-}
-
-//=================================================================================
-// function : ~SMESHGUI_RemoveElementsDlg()
-// purpose  : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_RemoveElementsDlg::~SMESHGUI_RemoveElementsDlg()
-{
-  // no need to delete child widgets, Qt does it all for us
-}
-
-//=================================================================================
-// function : Init()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::Init()
-{
-  GroupC1->show();
-  myConstructorId = 0;
-  Constructor1->setChecked(TRUE);
-  myEditCurrentArgument = LineEditC1A1;
-
-  myNbOkElements = false;
-  mySMESHGUI->SetActiveDialogBox((QDialog*)this);
-  myActor = 0;
-  myBusy = false;
-
-  /* signals and slots connections */
-  connect(buttonOk, SIGNAL(clicked()),     this, SLOT(ClickOnOk()));
-  connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
-  connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
-  connect(GroupConstructors, SIGNAL(clicked(int)), SLOT(ConstructorsClicked(int)));
-
-  connect(SelectButtonC1A1, SIGNAL (clicked()),   this, SLOT(SetEditCurrentArgument()));
-  connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
-  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
-  /* to close dialog if study change */
-  connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
-  connect(myEditCurrentArgument, SIGNAL(textChanged(const QString&)),
-           SLOT(onTextChange(const QString&)));
-
-  /* Move widget on the botton right corner of main widget */
-  int x, y;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-  this->show(); /* displays Dialog */
-
-  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-    aViewWindow->SetSelectionMode(CellSelection);
-
-  SelectionIntoArgument();
-}
-
-//=================================================================================
-// function : ConstructorsClicked()
-// purpose  : Radio button management
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::ConstructorsClicked (int)
-{
-}
-
-//=================================================================================
-// function : ClickOnApply()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::ClickOnApply()
-{
-  if (mySMESHGUI->isActiveStudyLocked())
-    return;
-  if (myNbOkElements) {
-    QStringList aListId = QStringList::split(" ", myEditCurrentArgument->text(), false);
-    SMESH::long_array_var anArrayOfIdeces = new SMESH::long_array;
-    anArrayOfIdeces->length(aListId.count());
-    for (int i = 0; i < aListId.count(); i++)
-      anArrayOfIdeces[i] = aListId[ i ].toInt();
-
-    bool aResult = false;
-    try {
-      SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
-      aResult = aMeshEditor->RemoveElements(anArrayOfIdeces.inout());
-    } catch (...) {
-    }
-
-    if (aResult) {
-      myEditCurrentArgument->clear();
-      SMESH::UpdateView();
-    }
-  }
-}
-
-//=================================================================================
-// function : ClickOnOk()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::ClickOnOk()
-{
-  this->ClickOnApply();
-  this->ClickOnCancel();
-
-  return;
-}
-
-//=================================================================================
-// function : ClickOnCancel()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::ClickOnCancel()
-{
-  mySelectionMgr->clearSelected();
-  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-    aViewWindow->SetSelectionMode(ActorSelection);
-  disconnect(mySelectionMgr, 0, this, 0);
-  mySMESHGUI->ResetState();
-  reject();
-  return;
-}
-
-//=======================================================================
-//function : onTextChange
-//purpose  :
-//=======================================================================
-void SMESHGUI_RemoveElementsDlg::onTextChange (const QString& theNewText)
-{
-  if (myBusy) 
-    return;
-  myBusy = true;
-
-  myNbOkElements = 0;
-
-  buttonOk->setEnabled(false);
-  buttonApply->setEnabled(false);
-
-  // hilight entered elements
-  if(myActor){
-    if(SMDS_Mesh* aMesh = myActor->GetObject()->GetMesh()){
-      Handle(SALOME_InteractiveObject) anIO = myActor->getIO();
-      
-      TColStd_MapOfInteger newIndices;
-      
-      QStringList aListId = QStringList::split(" ", theNewText, false);
-      for (int i = 0; i < aListId.count(); i++) {
-       if(const SMDS_MeshElement *anElem = aMesh->FindElement(aListId[i].toInt())) {
-         newIndices.Add(anElem->GetID());
-         myNbOkElements++;
-       }
-      }
-      
-      mySelector->AddOrRemoveIndex(anIO,newIndices,false);
-      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-       aViewWindow->highlight(anIO,true,true);
-    }
-  }
-  
-  if (myNbOkElements) {
-    buttonOk->setEnabled(true);
-    buttonApply->setEnabled(true);
-  }
-  
-  myBusy = false;
-}
-
-//=================================================================================
-// function : SelectionIntoArgument()
-// purpose  : Called when selection as changed or other case
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::SelectionIntoArgument()
-{
-  if (myBusy) return;
-
-  // clear
-
-  myNbOkElements = false;
-  myActor = 0;
-
-  myBusy = true;
-  myEditCurrentArgument->setText("");
-  myBusy = false;
-
-  if (!GroupButtons->isEnabled()) // inactive
-    return;
-
-  buttonOk->setEnabled(false);
-  buttonApply->setEnabled(false);
-
-  // get selected mesh
-
-  SALOME_ListIO aList;
-  mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type());
-
-  int nbSel = aList.Extent();
-  if (nbSel != 1)
-    return;
-
-  Handle(SALOME_InteractiveObject) anIO = aList.First();
-  myMesh = SMESH::GetMeshByIO(anIO);
-  if (myMesh->_is_nil())
-    return;
-
-  myActor = SMESH::FindActorByEntry(anIO->getEntry());
-  if (!myActor)
-    return;
-
-  // get selected nodes
-  QString aString = "";
-  int nbElems = SMESH::GetNameOfSelectedElements(mySelector,anIO,aString);
-  if(nbElems < 1)
-    return;
-  myBusy = true;
-  myEditCurrentArgument->setText(aString);
-  myBusy = false;
-
-  // OK
-
-  myNbOkElements = nbElems;
-
-  buttonOk->setEnabled(true);
-  buttonApply->setEnabled(true);
-}
-
-//=================================================================================
-// function : SetEditCurrentArgument()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::SetEditCurrentArgument()
-{
-  QPushButton* send = (QPushButton*)sender();
-  switch (myConstructorId)
-    {
-    case 0: /* default constructor */
-      {
-       if(send == SelectButtonC1A1) {
-         LineEditC1A1->setFocus();
-         myEditCurrentArgument = LineEditC1A1;
-       }
-       SelectionIntoArgument();
-       break;
-      }
-    }
-  return;
-}
-
-//=================================================================================
-// function : DeactivateActiveDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::DeactivateActiveDialog()
-{
-  if (GroupConstructors->isEnabled()) {
-    GroupConstructors->setEnabled(false);
-    GroupC1->setEnabled(false);
-    GroupButtons->setEnabled(false);
-    mySMESHGUI->ResetState(); // ??
-    mySMESHGUI->SetActiveDialogBox(0); // ??
-  }
-}
-
-//=================================================================================
-// function : ActivateThisDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::ActivateThisDialog()
-{
-  /* Emit a signal to deactivate the active dialog */
-  mySMESHGUI->EmitSignalDeactivateDialog();
-
-  GroupConstructors->setEnabled(true);
-  GroupC1->setEnabled(true);
-  GroupButtons->setEnabled(true);
-
-  mySMESHGUI->SetActiveDialogBox((QDialog*)this); // ??
-
-  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-    aViewWindow->SetSelectionMode(NodeSelection);
-
-  SelectionIntoArgument(); // ??
-}
-
-//=================================================================================
-// function : enterEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::enterEvent (QEvent*)
-{
-  if (!GroupConstructors->isEnabled())
-    ActivateThisDialog();
-}
-
-//=================================================================================
-// function : closeEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveElementsDlg::closeEvent (QCloseEvent*)
-{
-  /* same than click on cancel button */
-  this->ClickOnCancel();
-  return;
-}
-
-//=======================================================================
-//function : hideEvent
-//purpose  : caused by ESC key
-//=======================================================================
-void SMESHGUI_RemoveElementsDlg::hideEvent (QHideEvent * e)
-{
-  if (!isMinimized())
-    ClickOnCancel();
-}
diff --git a/src/SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx b/src/SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx
deleted file mode 100644 (file)
index 5e9261e..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : SMESHGUI_RemoveNodesDlg.cxx
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHGUI_RemoveNodesDlg.h"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
-#include "SMESHGUI_VTKUtils.h"
-#include "SMESHGUI_MeshUtils.h"
-#include "SMESHGUI_IdValidator.h"
-
-#include "SMESH_Actor.h"
-#include "SMDS_Mesh.hxx"
-
-#include "SUIT_ResourceMgr.h"
-#include "SUIT_Desktop.h"
-
-#include "SVTK_Selector.h"
-#include "SVTK_ViewModel.h"
-#include "SVTK_ViewWindow.h"
-#include "SALOME_ListIO.hxx"
-
-#include "utilities.h"
-
-// OCCT Includes
-#include <TColStd_MapOfInteger.hxx>
-#include <TColStd_IndexedMapOfInteger.hxx>
-
-// QT Includes
-#include <qbuttongroup.h>
-#include <qgroupbox.h>
-#include <qlabel.h>
-#include <qlineedit.h>
-#include <qpushbutton.h>
-#include <qradiobutton.h>
-#include <qlayout.h>
-#include <qvariant.h>
-#include <qtooltip.h>
-#include <qwhatsthis.h>
-#include <qimage.h>
-#include <qpixmap.h>
-
-using namespace std;
-
-//=================================================================================
-// class    : SMESHGUI_RemoveNodesDlg()
-// purpose  :
-//=================================================================================
-SMESHGUI_RemoveNodesDlg
-::SMESHGUI_RemoveNodesDlg(SMESHGUI* theModule, 
-                         const char* name,
-                         bool modal, 
-                         WFlags fl)
-  : QDialog(SMESH::GetDesktop(theModule), 
-           name, 
-           modal, 
-           WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | Qt::WDestructiveClose),
-    mySelector(SMESH::GetViewWindow(theModule)->GetSelector()),
-    mySelectionMgr(SMESH::GetSelectionMgr(theModule)),
-    mySMESHGUI(theModule),
-    myBusy(false)
-{
-    QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_REM_NODE")));
-    QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
-
-    if (!name)
-       setName("SMESHGUI_RemoveNodesDlg");
-    resize(303, 185);
-    setCaption(tr("SMESH_REMOVE_NODES_TITLE" ));
-    setSizeGripEnabled(TRUE);
-    SMESHGUI_RemoveNodesDlgLayout = new QGridLayout(this);
-    SMESHGUI_RemoveNodesDlgLayout->setSpacing(6);
-    SMESHGUI_RemoveNodesDlgLayout->setMargin(11);
-
-    /***************************************************************/
-    GroupConstructors = new QButtonGroup(this, "GroupConstructors");
-    GroupConstructors->setTitle(tr("SMESH_NODES" ));
-    GroupConstructors->setExclusive(TRUE);
-    GroupConstructors->setColumnLayout(0, Qt::Vertical);
-    GroupConstructors->layout()->setSpacing(0);
-    GroupConstructors->layout()->setMargin(0);
-    GroupConstructorsLayout = new QGridLayout(GroupConstructors->layout());
-    GroupConstructorsLayout->setAlignment(Qt::AlignTop);
-    GroupConstructorsLayout->setSpacing(6);
-    GroupConstructorsLayout->setMargin(11);
-    Constructor1 = new QRadioButton(GroupConstructors, "Constructor1");
-    Constructor1->setText(tr("" ));
-    Constructor1->setPixmap(image0);
-    Constructor1->setChecked(TRUE);
-    Constructor1->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, Constructor1->sizePolicy().hasHeightForWidth()));
-    Constructor1->setMinimumSize(QSize(50, 0));
-    GroupConstructorsLayout->addWidget(Constructor1, 0, 0);
-    QSpacerItem* spacer = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-    GroupConstructorsLayout->addItem(spacer, 0, 1);
-    SMESHGUI_RemoveNodesDlgLayout->addWidget(GroupConstructors, 0, 0);
-
-    /***************************************************************/
-    GroupButtons = new QGroupBox(this, "GroupButtons");
-    GroupButtons->setGeometry(QRect(10, 10, 281, 48));
-    GroupButtons->setTitle(tr("" ));
-    GroupButtons->setColumnLayout(0, Qt::Vertical);
-    GroupButtons->layout()->setSpacing(0);
-    GroupButtons->layout()->setMargin(0);
-    GroupButtonsLayout = new QGridLayout(GroupButtons->layout());
-    GroupButtonsLayout->setAlignment(Qt::AlignTop);
-    GroupButtonsLayout->setSpacing(6);
-    GroupButtonsLayout->setMargin(11);
-    buttonCancel = new QPushButton(GroupButtons, "buttonCancel");
-    buttonCancel->setText(tr("SMESH_BUT_CLOSE" ));
-    buttonCancel->setAutoDefault(TRUE);
-    GroupButtonsLayout->addWidget(buttonCancel, 0, 3);
-    buttonApply = new QPushButton(GroupButtons, "buttonApply");
-    buttonApply->setText(tr("SMESH_BUT_APPLY" ));
-    buttonApply->setAutoDefault(TRUE);
-    GroupButtonsLayout->addWidget(buttonApply, 0, 1);
-    QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-    GroupButtonsLayout->addItem(spacer_9, 0, 2);
-    buttonOk = new QPushButton(GroupButtons, "buttonOk");
-    buttonOk->setText(tr("SMESH_BUT_OK" ));
-    buttonOk->setAutoDefault(TRUE);
-    buttonOk->setDefault(TRUE);
-    GroupButtonsLayout->addWidget(buttonOk, 0, 0);
-    SMESHGUI_RemoveNodesDlgLayout->addWidget(GroupButtons, 2, 0);
-
-    /***************************************************************/
-    GroupC1 = new QGroupBox(this, "GroupC1");
-    GroupC1->setTitle(tr("SMESH_REMOVE" ));
-    GroupC1->setMinimumSize(QSize(0, 0));
-    GroupC1->setFrameShape(QGroupBox::Box);
-    GroupC1->setFrameShadow(QGroupBox::Sunken);
-    GroupC1->setColumnLayout(0, Qt::Vertical);
-    GroupC1->layout()->setSpacing(0);
-    GroupC1->layout()->setMargin(0);
-    GroupC1Layout = new QGridLayout(GroupC1->layout());
-    GroupC1Layout->setAlignment(Qt::AlignTop);
-    GroupC1Layout->setSpacing(6);
-    GroupC1Layout->setMargin(11);
-    TextLabelC1A1 = new QLabel(GroupC1, "TextLabelC1A1");
-    TextLabelC1A1->setText(tr("SMESH_ID_NODES" ));
-    TextLabelC1A1->setMinimumSize(QSize(50, 0));
-    TextLabelC1A1->setFrameShape(QLabel::NoFrame);
-    TextLabelC1A1->setFrameShadow(QLabel::Plain);
-    GroupC1Layout->addWidget(TextLabelC1A1, 0, 0);
-    SelectButtonC1A1 = new QPushButton(GroupC1, "SelectButtonC1A1");
-    SelectButtonC1A1->setText(tr("" ));
-    SelectButtonC1A1->setPixmap(image1);
-    SelectButtonC1A1->setToggleButton(FALSE);
-    GroupC1Layout->addWidget(SelectButtonC1A1, 0, 1);
-    LineEditC1A1 = new QLineEdit(GroupC1, "LineEditC1A1");
-    LineEditC1A1->setValidator(new SMESHGUI_IdValidator(this, "validator"));
-    GroupC1Layout->addWidget(LineEditC1A1, 0, 2);
-    SMESHGUI_RemoveNodesDlgLayout->addWidget(GroupC1, 1, 0);
-
-    Init(); /* Initialisations */
-}
-
-//=================================================================================
-// function : ~SMESHGUI_RemoveNodesDlg()
-// purpose  : Destroys the object and frees any allocated resources
-//=================================================================================
-SMESHGUI_RemoveNodesDlg::~SMESHGUI_RemoveNodesDlg()
-{
-  // no need to delete child widgets, Qt does it all for us
-}
-
-//=================================================================================
-// function : Init()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::Init()
-{
-  GroupC1->show();
-  myConstructorId = 0;
-  Constructor1->setChecked(TRUE);
-  myEditCurrentArgument = LineEditC1A1;
-
-  myNbOkNodes = 0;
-  mySMESHGUI->SetActiveDialogBox((QDialog*)this);
-  myActor = 0;
-  myBusy = false;
-
-  /* signals and slots connections */
-  connect(buttonOk, SIGNAL(clicked()),     this, SLOT(ClickOnOk()));
-  connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
-  connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
-  connect(GroupConstructors, SIGNAL(clicked(int)), SLOT(ConstructorsClicked(int)));
-
-  connect(SelectButtonC1A1, SIGNAL (clicked()),   this, SLOT(SetEditCurrentArgument()));
-  connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
-  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
-  /* to close dialog if study change */
-  connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
-  connect(myEditCurrentArgument, SIGNAL(textChanged(const QString&)),
-         SLOT(onTextChange(const QString&)));
-  
-  /* Move widget on the botton right corner of main widget */
-  int x, y;
-  mySMESHGUI->DefineDlgPosition(this, x, y);
-  this->move(x, y);
-  this->show(); /* displays Dialog */
-
-  SMESH::SetPointRepresentation(true);
-  
-  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-    aViewWindow->SetSelectionMode(NodeSelection);
-
-  SelectionIntoArgument();
-}
-
-//=================================================================================
-// function : ConstructorsClicked()
-// purpose  : Radio button management
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::ConstructorsClicked (int)
-{
-}
-
-//=================================================================================
-// function : ClickOnApply()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::ClickOnApply()
-{
-  if (mySMESHGUI->isActiveStudyLocked())
-    return;
-
-  if (myNbOkNodes) {
-    QStringList aListId = QStringList::split(" ", myEditCurrentArgument->text(), false);
-    SMESH::long_array_var anArrayOfIdeces = new SMESH::long_array;
-    anArrayOfIdeces->length(aListId.count());
-    for (int i = 0; i < aListId.count(); i++)
-      anArrayOfIdeces[i] = aListId[ i ].toInt();
-
-    bool aResult = false;
-    try {
-      SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
-      aResult = aMeshEditor->RemoveNodes(anArrayOfIdeces.inout());
-    } catch(...) {
-    }
-
-    if (aResult) {
-      myEditCurrentArgument->clear();
-      SMESH::UpdateView();
-    }
-
-    SMESH::SetPointRepresentation(true);
-  }
-}
-
-//=================================================================================
-// function : ClickOnOk()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::ClickOnOk()
-{
-  ClickOnApply();
-  ClickOnCancel();
-}
-
-//=================================================================================
-// function : ClickOnCancel()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::ClickOnCancel()
-{
-  mySelectionMgr->clearSelected();
-  SMESH::SetPointRepresentation(false);
-  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-    aViewWindow->SetSelectionMode(ActorSelection);
-  disconnect(mySelectionMgr, 0, this, 0);
-  mySMESHGUI->ResetState();
-  reject();
-}
-
-//=======================================================================
-//function : onTextChange
-//purpose  :
-//=======================================================================
-void SMESHGUI_RemoveNodesDlg::onTextChange (const QString& theNewText)
-{
-  if (myBusy) return;
-  myBusy = true;
-
-  myNbOkNodes = 0;
-
-  buttonOk->setEnabled(false);
-  buttonApply->setEnabled(false);
-
-  // hilight entered nodes
-  if(myActor){
-    if(SMDS_Mesh* aMesh = myActor->GetObject()->GetMesh()){
-      Handle(SALOME_InteractiveObject) anIO = myActor->getIO();
-           
-      TColStd_MapOfInteger newIndices;
-      
-      QStringList aListId = QStringList::split(" ", theNewText, false);
-      for (int i = 0; i < aListId.count(); i++) {
-       if (const SMDS_MeshNode *aNode = aMesh->FindNode(aListId[i].toInt())) {
-         newIndices.Add(aNode->GetID());
-         myNbOkNodes++;
-       }
-      }
-
-      mySelector->AddOrRemoveIndex(anIO,newIndices,false);
-      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-       aViewWindow->highlight(anIO,true,true);
-    }
-  }
-
-  if (myNbOkNodes) {
-    buttonOk->setEnabled(true);
-    buttonApply->setEnabled(true);
-  }
-
-  myBusy = false;
-}
-
-//=================================================================================
-// function : SelectionIntoArgument()
-// purpose  : Called when selection as changed or other case
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::SelectionIntoArgument()
-{
-  if (myBusy) return;
-
-  // clear
-
-  myNbOkNodes = false;
-  myActor = 0;
-
-  myBusy = true;
-  myEditCurrentArgument->setText("");
-  myBusy = false;
-
-  if (!GroupButtons->isEnabled()) // inactive
-    return;
-
-  buttonOk->setEnabled(false);
-  buttonApply->setEnabled(false);
-
-  // get selected mesh
-  SALOME_ListIO aList;
-  mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type());
-
-  int nbSel = aList.Extent();
-  if (nbSel != 1)
-    return;
-
-  Handle(SALOME_InteractiveObject) anIO = aList.First();
-  myMesh = SMESH::GetMeshByIO(anIO);
-  if (myMesh->_is_nil())
-    return;
-
-  myActor = SMESH::FindActorByEntry(anIO->getEntry());
-  if (!myActor)
-    return;
-
-  // get selected nodes
-
-  QString aString = "";
-  int nbNodes = SMESH::GetNameOfSelectedNodes(mySelector,anIO,aString);
-  if(nbNodes < 1)
-    return;
-  myBusy = true;
-  myEditCurrentArgument->setText(aString);
-  myBusy = false;
-
-  // OK
-
-  myNbOkNodes = true;
-
-  buttonOk->setEnabled(true);
-  buttonApply->setEnabled(true);
-}
-
-//=================================================================================
-// function : SetEditCurrentArgument()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::SetEditCurrentArgument()
-{
-  QPushButton* send = (QPushButton*)sender();
-  switch (myConstructorId)
-    {
-    case 0: /* default constructor */
-      {
-       if(send == SelectButtonC1A1) {
-         LineEditC1A1->setFocus();
-         myEditCurrentArgument = LineEditC1A1;
-       }
-       SelectionIntoArgument();
-       break;
-      }
-    }
-  return;
-}
-
-//=================================================================================
-// function : DeactivateActiveDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::DeactivateActiveDialog()
-{
-  if (GroupConstructors->isEnabled()) {
-    GroupConstructors->setEnabled(false);
-    GroupC1->setEnabled(false);
-    GroupButtons->setEnabled(false);
-    mySMESHGUI->ResetState(); // ??
-    mySMESHGUI->SetActiveDialogBox(0); // ??
-  }
-}
-
-//=================================================================================
-// function : ActivateThisDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::ActivateThisDialog()
-{
-  /* Emit a signal to deactivate the active dialog */
-  mySMESHGUI->EmitSignalDeactivateDialog();
-
-  GroupConstructors->setEnabled(true);
-  GroupC1->setEnabled(true);
-  GroupButtons->setEnabled(true);
-
-  mySMESHGUI->SetActiveDialogBox((QDialog*)this); // ??
-
-  SMESH::SetPointRepresentation(true);
-  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
-    aViewWindow->SetSelectionMode(NodeSelection);
-
-  SelectionIntoArgument(); // ??
-}
-
-//=================================================================================
-// function : enterEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::enterEvent (QEvent*)
-{
-  if (!GroupConstructors->isEnabled())
-    ActivateThisDialog();
-}
-
-//=================================================================================
-// function : closeEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_RemoveNodesDlg::closeEvent (QCloseEvent*)
-{
-  /* same than click on cancel button */
-  this->ClickOnCancel();
-  return;
-}
-
-//=======================================================================
-//function : hideEvent
-//purpose  : caused by ESC key
-//=======================================================================
-void SMESHGUI_RemoveNodesDlg::hideEvent (QHideEvent * e)
-{
-  if (!isMinimized())
-    ClickOnCancel();
-}
diff --git a/src/SMESHGUI/SMESHGUI_SMESHGenUtils.cxx b/src/SMESHGUI/SMESHGUI_SMESHGenUtils.cxx
deleted file mode 100644 (file)
index ddfe9fb..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-
-#include "QAD_Desktop.h"
-
-#include "SMESHGUI_SMESHGenUtils.h"
-
-#include "SALOMEconfig.h"
-#include CORBA_CLIENT_HEADER(SALOMEDS)
-
-namespace SMESH
-{
-
-  SMESH::SMESH_Gen_var GetSMESHGen()
-  {
-    static SMESH::SMESH_Gen_var aSMESHGen;
-    if(CORBA::is_nil(aSMESHGen)){
-      if(QAD_Desktop* aDesktop = QAD_Application::getDesktop()){
-       Engines::Component_var aComponent = aDesktop->getEngine("FactoryServer","SMESH");
-       aSMESHGen = SMESH::SMESH_Gen::_narrow(aComponent);
-      }
-    }
-    return aSMESHGen;
-  }
-
-}
diff --git a/src/SMESHGUI/SMESHGUI_SMESHGenUtils.h b/src/SMESHGUI/SMESHGUI_SMESHGenUtils.h
deleted file mode 100644 (file)
index 54a8d43..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-#ifndef SMESHGUI_SMESHGenUtils_HeaderFile
-#define SMESHGUI_SMESHGenUtils_HeaderFile
-
-#include "SALOMEconfig.h"
-#include CORBA_SERVER_HEADER(SMESH_Gen)
-
-
-namespace SMESH
-{
-
-  SMESH::SMESH_Gen_var GetSMESHGen();
-
-}
-
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_SpinBox.cxx b/src/SMESHGUI/SMESHGUI_SpinBox.cxx
deleted file mode 100644 (file)
index 54c247a..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_SpinBox.cxx
-//  Author : Lucien PIGNOLONI
-//  Module : SMESH
-//  $Header$
-
-#include "SMESHGUI_SpinBox.h"
-#include "SMESHGUI.h"
-
-#include <qvalidator.h>
-#include <qlineedit.h>
-
-using namespace std;
-
-//=================================================================================
-// class    : SMESHGUI_SpinBox()
-// purpose  : constructor of specific widget accepting floats in double precision.
-//=================================================================================
-SMESHGUI_SpinBox::SMESHGUI_SpinBox (QWidget* parent, const char* name)
-     : QtxDblSpinBox(parent, name)
-{
-}
-
-//=================================================================================
-// function : SetStep()  [SLOT]
-// purpose  :
-//=================================================================================
-void SMESHGUI_SpinBox::SetStep (double newStep)
-{
-  setLineStep(newStep);
-}
-
-//=================================================================================
-// function : ~SMESHGUI_SpinBox()
-// purpose  : destructor
-//=================================================================================
-SMESHGUI_SpinBox::~SMESHGUI_SpinBox()
-{
-}
-
-//=================================================================================
-// function : SetValue()
-// purpose  :
-//=================================================================================
-void SMESHGUI_SpinBox::SetValue (double v)
-{
-  setValue(v);
-  editor()->setCursorPosition( 0 );
-}
-
-//=================================================================================
-// function : GetValue()
-// purpose  : returns a double
-//=================================================================================
-double SMESHGUI_SpinBox::GetValue()
-{
-  return value();
-}
-
-//=================================================================================
-// function : GetString()
-// purpose  : returns a QString
-//=================================================================================
-QString SMESHGUI_SpinBox::GetString()
-{
-  return cleanText();
-}
-
-//=================================================================================
-// function : RangeStepAndValidator()
-// purpose  :
-//=================================================================================
-void SMESHGUI_SpinBox::RangeStepAndValidator
-  (double min, double max, double step, unsigned short decimals)
-{
-  setRange(min, max);
-  setLineStep(step);
-  ((QDoubleValidator*)validator())->setRange(min, max, decimals);
-}
diff --git a/src/SMESHGUI/SMESHGUI_SpinBox.h b/src/SMESHGUI/SMESHGUI_SpinBox.h
deleted file mode 100644 (file)
index 8655e4d..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_SpinBox.h
-//  Author : Lucien PIGNOLONI
-//  Module : SMESH
-//  $Header$
-
-#ifndef  SMESH_SPINBOX_H
-#define  SMESH_SPINBOX_H
-
-#include <QtxDblSpinBox.h>
-
-//=================================================================================
-// class    : SMESHGUI_SpinBox
-// purpose  : Derivated from QtxDblSpinBox class 
-//=================================================================================
-class SMESHGUI_SpinBox : public QtxDblSpinBox
-{
-  Q_OBJECT
-
-public:
-  SMESHGUI_SpinBox (QWidget* parent, const char* name = 0);
-  ~SMESHGUI_SpinBox();
-
-  void       RangeStepAndValidator (double         min = -1000000.0,
-                                   double         max = +1000000.0,
-                                   double         step = 100.0,
-                                   unsigned short decimals = 3);
-  void       SetValue (double v);
-  double     GetValue();
-  QString    GetString();
-  QLineEdit* editor() { return QtxDblSpinBox::editor(); } 
-
-public slots:
-  void       SetStep (double newStep);
-};
-#endif //  SMESH_SPINBOX_H
diff --git a/src/SMESHGUI/SMESHGUI_Swig.cxx b/src/SMESHGUI/SMESHGUI_Swig.cxx
deleted file mode 100644 (file)
index d8a0805..0000000
+++ /dev/null
@@ -1,485 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Swig.cxx
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESHGUI_Swig.hxx"
-
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
-#include "SMESHGUI_GEOMGenUtils.h"
-
-// SALOME Includes
-#include "SUIT_ResourceMgr.h"
-#include "SUIT_Session.h"
-
-#include "SALOMEDS_SObject.hxx"
-
-#include "SalomeApp_Application.h"
-
-#include "utilities.h"
-
-// Open CASCADE Includes
-#include <TopoDS.hxx>
-
-// IDL Headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Gen)
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-
-static CORBA::ORB_var _orb;
-
-static CORBA::Object_ptr StringToObject (const char* ior)
-{
-  return _orb->string_to_object(ior);
-}
-
-SMESH_Swig::SMESH_Swig()
-{
-  MESSAGE("Constructeur");
-  setOrb();
-}
-
-void SMESH_Swig::Init(int studyID)
-{
-  MESSAGE("Init");
-  SMESH::SMESH_Gen_var CompMesh = SMESHGUI::GetSMESHGen();
-  GEOM::GEOM_Gen_var CompGeom = SMESH::GetGEOMGen();
-
-  SUIT_ResourceMgr* resMgr = SMESHGUI::resourceMgr();
-  if ( resMgr ) {
-    resMgr->loadLanguage( QString::null, "en" );
-    /*QString msg;
-    if (!resMgr->loadResources( "SMESH", msg ))
-      MESSAGE ( msg )*/
-  }
-
-  SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
-  if( !app )
-    return;
-
-  CORBA::Object_var obj = app->namingService()->Resolve("/myStudyManager");
-  SALOMEDS::StudyManager_var myStudyMgr = SALOMEDS::StudyManager::_narrow(obj);
-  myStudy = myStudyMgr->GetStudyByID(studyID);
-
-  CompMesh->SetCurrentStudy( myStudy.in() ); 
-
-  myStudyBuilder = myStudy->NewBuilder();
-  SALOMEDS::GenericAttribute_var anAttr;
-  SALOMEDS::AttributeName_var    aName;
-  SALOMEDS::AttributePixMap_var  aPixmap;
-
-  // See return value of SMESH::SMESH_Gen::ComponentDataType()
-  SALOMEDS::SComponent_var father = myStudy->FindComponent("SMESH");
-
-  if (father->_is_nil()) {
-    bool aLocked = myStudy->GetProperties()->IsLocked();
-    if (aLocked) myStudy->GetProperties()->SetLocked(false);
-    father = myStudyBuilder->NewComponent("SMESH");
-    anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
-    aName = SALOMEDS::AttributeName::_narrow(anAttr);
-    //NRI    aName->SetValue(QObject::tr("SMESH_MEN_COMPONENT"));
-    SMESHGUI* gui = SMESHGUI::GetSMESHGUI(); //SRN: BugID IPAL9186, load a SMESH gui if it hasn't been loaded
-    if(!gui) {
-      SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>(SUIT_Session::session()->activeApplication()); 
-      if(app) {
-        CAM_Module* module = app->module( "Mesh" );
-       if(!module) module = app->loadModule("Mesh");
-       gui = dynamic_cast<SMESHGUI*>( module ); 
-      }
-      else {
-        MESSAGE("Can't find the application");
-      }
-    }  //SRN: BugID IPAL9186: end of a fix
-    aName->SetValue( gui->moduleName() );
-    anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
-    aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-    aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
-    myStudyBuilder->DefineComponentInstance(father, CompMesh );
-    if (aLocked) myStudy->GetProperties()->SetLocked(true);
-  }
-  mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
-
-  // Tags definition 
-  Tag_HypothesisRoot  = 1;
-  Tag_AlgorithmsRoot  = 2;
-  
-  Tag_RefOnShape      = 1;
-  Tag_RefOnAppliedHypothesis = 2;
-  Tag_RefOnAppliedAlgorithms = 3;
-  
-  Tag_SubMeshOnVertex = 4;
-  Tag_SubMeshOnEdge = 5;
-  Tag_SubMeshOnFace = 6;
-  Tag_SubMeshOnSolid = 7;
-  Tag_SubMeshOnCompound = 8;
-}
-
-SMESH_Swig::~SMESH_Swig()
-{
-  MESSAGE("Destructeur");
-}
-
-const char* SMESH_Swig::AddNewMesh(const char* IOR)
-{
-  MESSAGE("AddNewMesh");
-
-  // VSR: added temporarily - to be removed - objects are published automatically by engine
-  SALOMEDS::SObject_var SO = myStudy->FindObjectIOR( IOR );
-  if ( !SO->_is_nil() )
-    return SO->GetID();
-
-  //Find or Create Hypothesis root
-  SALOMEDS::GenericAttribute_var    anAttr;
-  SALOMEDS::AttributeName_var       aName;
-  SALOMEDS::AttributeIOR_var        anIOR;
-  SALOMEDS::AttributeSelectable_var aSelAttr;
-  SALOMEDS::AttributePixMap_var     aPixmap;
-
-  SALOMEDS::SObject_var HypothesisRoot;
-  if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
-    HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
-    anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
-    aName = SALOMEDS::AttributeName::_narrow(anAttr);
-    aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
-    anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
-    aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-    aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
-    anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
-    aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
-    aSelAttr->SetSelectable(false);
-  }
-
-  SALOMEDS::SObject_var AlgorithmsRoot;
-  if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
-    AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
-    anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
-    aName = SALOMEDS::AttributeName::_narrow(anAttr);
-    aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
-    anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
-    aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-    aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
-    anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
-    aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
-    aSelAttr->SetSelectable(false);
-  }
-
-  // Add New Mesh
-  SALOMEDS::SObject_var newMesh = myStudyBuilder->NewObject(mySComponentMesh);
-  anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributePixMap");
-  aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-  aPixmap->SetPixMap( "ICON_SMESH_TREE_MESH" );
-  anAttr = myStudyBuilder->FindOrCreateAttribute(newMesh, "AttributeIOR");
-  anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
-  anIOR->SetValue(IOR);
-  return SALOMEDS::SObject::_narrow( newMesh )->GetID();
-}
-
-const char* SMESH_Swig::AddNewHypothesis(const char* IOR)
-{
-  MESSAGE("AddNewHypothesis");
-
-  // VSR: added temporarily - to be removed - objects are published automatically by engine
-  SALOMEDS::SObject_var SO = myStudy->FindObjectIOR( IOR );
-  if ( !SO->_is_nil() )
-    return SO->GetID();
-
-  //Find or Create Hypothesis root
-  SALOMEDS::SObject_var             HypothesisRoot;
-  SALOMEDS::GenericAttribute_var    anAttr;
-  SALOMEDS::AttributeName_var       aName;
-  SALOMEDS::AttributeIOR_var        anIOR;
-  SALOMEDS::AttributeSelectable_var aSelAttr;
-  SALOMEDS::AttributePixMap_var     aPixmap;
-
-  if (!mySComponentMesh->FindSubObject (Tag_HypothesisRoot, HypothesisRoot)) {
-    HypothesisRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot);
-    anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeName");
-    aName = SALOMEDS::AttributeName::_narrow(anAttr);
-    aName->SetValue(QObject::tr("SMESH_MEN_HYPOTHESIS"));
-    anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
-    aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
-    aSelAttr->SetSelectable(false);
-    anAttr = myStudyBuilder->FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
-    aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-    aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
-  }
-  // Add New Hypothesis
-  SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(HypothesisRoot);
-  anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
-  aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-  SMESH::SMESH_Hypothesis_var H = SMESH::SMESH_Hypothesis::_narrow( StringToObject(IOR) );
-  QString aType = H->GetName();
-  aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_" + aType );
-//    if ( aType.compare("LocalLength") == 0 )
-//      aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_LENGTH" );
-//    else if ( aType.compare("NumberOfSegments") == 0 )
-//      aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_SEGMENT" );
-//    else if ( aType.compare("MaxElementArea") == 0 )
-//      aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_AREA" );
-//    else if ( aType.compare("MaxElementVolume") == 0 )
-//      aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO_VOLUME" );
-  anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
-  anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
-  anIOR->SetValue(IOR);
-  return SALOMEDS::SObject::_narrow(newHypo)->GetID();
-}
-
-const char* SMESH_Swig::AddNewAlgorithms(const char* IOR)
-{
-  MESSAGE("AddNewAlgorithms");
-
-  // VSR: added temporarily - to be removed - objects are published automatically by engine
-  SALOMEDS::SObject_var SO = myStudy->FindObjectIOR( IOR );
-  if ( !SO->_is_nil() )
-    return SO->GetID();
-
-  //Find or Create Algorithms root
-  SALOMEDS::SObject_var             AlgorithmsRoot;
-  SALOMEDS::GenericAttribute_var    anAttr;
-  SALOMEDS::AttributeName_var       aName;
-  SALOMEDS::AttributeIOR_var        anIOR;
-  SALOMEDS::AttributeSelectable_var aSelAttr;
-  SALOMEDS::AttributePixMap_var     aPixmap;
-
-  if (!mySComponentMesh->FindSubObject (Tag_AlgorithmsRoot, AlgorithmsRoot)) {
-    AlgorithmsRoot = myStudyBuilder->NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot);
-    anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeName");
-    aName = SALOMEDS::AttributeName::_narrow(anAttr);
-    aName->SetValue(QObject::tr("SMESH_MEN_ALGORITHMS"));
-    anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
-    aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
-    aSelAttr->SetSelectable(false);
-    anAttr = myStudyBuilder->FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
-    aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-    aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
-  }
-  // Add New Algorithms
-  SALOMEDS::SObject_var newHypo = myStudyBuilder->NewObject(AlgorithmsRoot);
-  anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributePixMap");
-  aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-  SMESH::SMESH_Hypothesis_var H = SMESH::SMESH_Hypothesis::_narrow( StringToObject(IOR) );
-  QString aType = H->GetName();
-  aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_" + aType );
-//    if ( aType.compare("Regular_1D") == 0 )
-//      aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_REGULAR" );
-//    else if ( aType.compare("MEFISTO_2D") == 0 )
-//      aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_MEFISTO" );
-//    else if ( aType.compare("Quadrangle_2D") == 0 )
-//      aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_QUAD" );
-//    else if ( aType.compare("Hexa_3D") == 0 )
-//      aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO_HEXA" );
-  anAttr = myStudyBuilder->FindOrCreateAttribute(newHypo, "AttributeIOR");
-  anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
-  anIOR->SetValue(IOR);
-  return SALOMEDS::SObject::_narrow(newHypo)->GetID();
-}
-
-void SMESH_Swig::SetShape(const char* ShapeEntry, const char* MeshEntry)
-{
-  SALOMEDS::SObject_var SO_MorSM = myStudy->FindObjectID( MeshEntry );
-  SALOMEDS::SObject_var SO_GeomShape = myStudy->FindObjectID( ShapeEntry );
-
-  if ( !SO_MorSM->_is_nil() && !SO_GeomShape->_is_nil() ) {
-    SALOMEDS::SObject_var SO = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnShape);
-    myStudyBuilder->Addreference (SO,SO_GeomShape);
-  }
-}
-
-void SMESH_Swig::SetHypothesis(const char* Mesh_Or_SubMesh_Entry, const char* Hypothesis_Entry)
-{
-  SALOMEDS::SObject_var SO_MorSM = myStudy->FindObjectID( Mesh_Or_SubMesh_Entry );
-  SALOMEDS::SObject_var SO_Hypothesis = myStudy->FindObjectID( Hypothesis_Entry );
-  SALOMEDS::GenericAttribute_var    anAttr;
-  SALOMEDS::AttributeName_var       aName;
-  SALOMEDS::AttributeSelectable_var aSelAttr;
-  SALOMEDS::AttributePixMap_var     aPixmap;
-
-  if ( !SO_MorSM->_is_nil() && !SO_Hypothesis->_is_nil() ) {
-    
-    //Find or Create Applied Hypothesis root
-    SALOMEDS::SObject_var AHR;
-    if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedHypothesis, AHR)) {
-      AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis);
-      anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
-      aName = SALOMEDS::AttributeName::_narrow(anAttr);
-      aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_HYPOTHESIS"));
-      anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
-      aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
-      aSelAttr->SetSelectable(false);
-      anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
-      aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-      aPixmap->SetPixMap( "ICON_SMESH_TREE_HYPO" );
-    }
-    SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
-    myStudyBuilder->Addreference (SO,SO_Hypothesis);
-  }
-}
-
-void SMESH_Swig::SetAlgorithms(const char* Mesh_Or_SubMesh_Entry, const char* Algorithms_Entry)
-{
-  SALOMEDS::SObject_var SO_MorSM = myStudy->FindObjectID( Mesh_Or_SubMesh_Entry );
-  SALOMEDS::SObject_var SO_Algorithms = myStudy->FindObjectID( Algorithms_Entry );
-  SALOMEDS::GenericAttribute_var    anAttr;
-  SALOMEDS::AttributeName_var       aName;
-  SALOMEDS::AttributeSelectable_var aSelAttr;
-  SALOMEDS::AttributePixMap_var     aPixmap;
-
-  if ( !SO_MorSM->_is_nil() && !SO_Algorithms->_is_nil() ) {
-    //Find or Create Applied Algorithms root
-    SALOMEDS::SObject_var AHR;
-    if (!SO_MorSM->FindSubObject (Tag_RefOnAppliedAlgorithms, AHR)) {
-      AHR = myStudyBuilder->NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms);
-      anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeName");
-      aName = SALOMEDS::AttributeName::_narrow(anAttr);
-      aName->SetValue(QObject::tr("SMESH_MEN_APPLIED_ALGORIHTMS"));
-      anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributeSelectable");
-      aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
-      aSelAttr->SetSelectable(false);
-      anAttr = myStudyBuilder->FindOrCreateAttribute(AHR, "AttributePixMap");
-      aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
-      aPixmap->SetPixMap( "ICON_SMESH_TREE_ALGO" );
-    }
-    SALOMEDS::SObject_var SO = myStudyBuilder->NewObject(AHR);
-    myStudyBuilder->Addreference (SO,SO_Algorithms);
-  }
-}
-
-void SMESH_Swig::UnSetHypothesis(const char* Applied_Hypothesis_Entry )
-{
-  SALOMEDS::SObject_var SO_Applied_Hypothesis = myStudy->FindObjectID( Applied_Hypothesis_Entry );
-  if ( !SO_Applied_Hypothesis->_is_nil() )
-    myStudyBuilder->RemoveObject(SO_Applied_Hypothesis);
-}
-
-const char* SMESH_Swig::AddSubMesh(const char* SO_Mesh_Entry, const char* SM_IOR, int ST)
-{
-  SALOMEDS::SObject_var SO_Mesh = myStudy->FindObjectID( SO_Mesh_Entry );
-  if ( !SO_Mesh->_is_nil() ) {
-
-    long Tag_Shape ;
-    Standard_CString Name;
-    
-    if      (ST == TopAbs_SOLID) {Tag_Shape = Tag_SubMeshOnSolid;    Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnSolid"));}
-    else if (ST == TopAbs_FACE)  {Tag_Shape = Tag_SubMeshOnFace;     Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnFace"));}
-    else if (ST == TopAbs_EDGE)  {Tag_Shape = Tag_SubMeshOnEdge;     Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnEdge"));}
-    else if (ST == TopAbs_VERTEX){Tag_Shape = Tag_SubMeshOnVertex;   Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnVertex"));}
-    else {
-      Tag_Shape = Tag_SubMeshOnCompound; Name = strdup(QObject::tr("SMESH_MEN_SubMeshesOnCompound"));
-    }
-    SALOMEDS::SObject_var SubmeshesRoot;
-    SALOMEDS::GenericAttribute_var        anAttr;
-    SALOMEDS::AttributeName_var           aName;
-    SALOMEDS::AttributeIOR_var            anIOR;
-    SALOMEDS::AttributeSelectable_var     aSelAttr;
-    if (!SO_Mesh->FindSubObject (Tag_Shape,SubmeshesRoot )) {
-      SubmeshesRoot = myStudyBuilder->NewObjectToTag (SO_Mesh, Tag_Shape);
-      anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeName");
-      aName = SALOMEDS::AttributeName::_narrow(anAttr);
-      aName->SetValue(Name);
-      anAttr = myStudyBuilder->FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable");
-      aSelAttr = SALOMEDS::AttributeSelectable::_narrow(anAttr);
-      aSelAttr->SetSelectable(false);
-    }
-
-    free(Name);
-
-    SALOMEDS::SObject_var SO = myStudyBuilder->NewObject (SubmeshesRoot);
-    anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeIOR");
-    anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
-    anIOR->SetValue(SM_IOR);
-    return SALOMEDS::SObject::_narrow( SO )->GetID();
-  }
-  return "";
-}
-
-const char* SMESH_Swig::AddSubMeshOnShape(const char* Mesh_Entry, const char* GeomShape_Entry, 
-                                            const char* SM_IOR, int ST)
-{
-  SALOMEDS::SObject_var SO_GeomShape = myStudy->FindObjectID( GeomShape_Entry );
-  if ( !SO_GeomShape->_is_nil() ) {
-    const char * SM_Entry = AddSubMesh (Mesh_Entry,SM_IOR,ST);
-    SALOMEDS::SObject_var SO_SM = myStudy->FindObjectID( SM_Entry );
-    if ( !SO_SM->_is_nil() ) {
-      SetShape (GeomShape_Entry, SM_Entry);
-      return SALOMEDS::SObject::_narrow( SO_SM )->GetID();
-    }
-  }
-  return "";
-}
-
-void SMESH_Swig::CreateAndDisplayActor( const char* Mesh_Entry )
-{
-  //  SMESH_Actor* Mesh = smeshGUI->ReadScript(aM);
-}
-
-void SMESH_Swig::SetName(const char* Entry, const char* Name)
-{
-  SALOMEDS::SObject_var SO = myStudy->FindObjectID( Entry );
-  SALOMEDS::GenericAttribute_var anAttr;
-  SALOMEDS::AttributeName_var    aName;
-  if ( !SO->_is_nil() )  {
-    anAttr = myStudyBuilder->FindOrCreateAttribute(SO, "AttributeName");
-    aName = SALOMEDS::AttributeName::_narrow(anAttr);
-    aName->SetValue(Name);
-  }
-}
-
-void SMESH_Swig::setOrb()
-{
-  try {
-    ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
-    ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
-    _orb = init( 0 , 0 );
-  } catch (...) {
-    INFOS("internal error : orb not found");
-    _orb = 0;
-  }
-  ASSERT(! CORBA::is_nil(_orb));
-}
-
-//================================================================================
-/*!
- * \brief Set mesh icon according to compute status
-  * \param Mesh_Entry - entry of a mesh
-  * \param isComputed - is mesh computed or not
- */
-//================================================================================
-
-void SMESH_Swig::SetMeshIcon(const char* Mesh_Entry, const bool isComputed)
-{
-  SALOMEDS::SObject_var mesh_var = myStudy->FindObjectID( Mesh_Entry );
-  if ( !mesh_var->_is_nil() ) {
-    _PTR(SObject) mesh = _PTR(SObject)(new SALOMEDS_SObject( mesh_var ));
-    if ( mesh )
-      SMESH::ModifiedMesh( mesh, isComputed );
-  }
-}
diff --git a/src/SMESHGUI/SMESHGUI_Swig.hxx b/src/SMESHGUI/SMESHGUI_Swig.hxx
deleted file mode 100644 (file)
index e1b2ebc..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-//  SMESH SMESH : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_Swig.hxx
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESHGUI_SWIG_HXX_
-#define _SMESHGUI_SWIG_HXX_
-
-// IDL Headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS)
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-class SMESH_Swig
-{
-public:
-  SMESH_Swig();
-  ~SMESH_Swig();
-    
-  static void setOrb();
-
-  void Init(int studyID);
-
-  const char* AddNewMesh(const char* IOR);
-
-  const char* AddNewHypothesis(const char* IOR);
-  const char* AddNewAlgorithms(const char* IOR);
-
-  void SetShape(const char* ShapeEntry, const char* MeshEntry);
-
-  void SetHypothesis(const char* Mesh_Or_SubMesh_Entry, const char* Hypothesis_Entry);
-  void SetAlgorithms(const char* Mesh_Or_SubMesh_Entry, const char* Algorithms_Entry);
-
-  void UnSetHypothesis(const char* Applied_Hypothesis_Entry );
-
-  const char* AddSubMesh (const char* Mesh_Entry, const char* SM_IOR, int ST);
-  const char* AddSubMeshOnShape (const char* Mesh_Entry, const char* GeomShape_Entry, const char* SM_IOR, int ST);
-
-  void CreateAndDisplayActor( const char* Mesh_Entry );
-
-  void SetName(const char* Entry, const char* Name);
-
-  /*!
-   * \brief Set mesh icon according to compute status
-    * \param Mesh_Entry - entry of a mesh
-    * \param isComputed - is mesh computed or not
-   */
-  void SetMeshIcon(const char* Mesh_Entry, const bool isComputed);
-
-private:
-  SALOMEDS::Study_var        myStudy;
-  SALOMEDS::StudyBuilder_var myStudyBuilder;
-  SALOMEDS::SComponent_var   mySComponentMesh;
-
-  // Tags definition 
-  long Tag_HypothesisRoot;
-  long Tag_AlgorithmsRoot;
-  
-  long Tag_RefOnShape;
-  long Tag_RefOnAppliedHypothesis;
-  long Tag_RefOnAppliedAlgorithms;
-  
-  long Tag_SubMeshOnVertex;
-  long Tag_SubMeshOnEdge;
-  long Tag_SubMeshOnFace;
-  long Tag_SubMeshOnSolid;
-  long Tag_SubMeshOnCompound;
-};
-
-
-#endif
diff --git a/src/SMESHGUI/SMESHGUI_Swig.i b/src/SMESHGUI/SMESHGUI_Swig.i
deleted file mode 100644 (file)
index 2a99fe1..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//  SMESH SMESHGUI : GUI for SMESH component
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESHGUI_Swig.i
-//  Author : Nicolas REJNERI
-//  Module : SMESH
-//  $Header$
-
-%{
-#include "SMESHGUI_Swig.hxx"
-%}
-
-%include "typemaps.i"
-
-class SMESH_Swig
-{
- public:
-  SMESH_Swig();
-  ~SMESH_Swig();
-
-  void Init(int studyID);
-
-  const char* AddNewMesh(const char* IOR);
-  const char* AddNewHypothesis(const char* IOR);
-  const char* AddNewAlgorithms(const char* IOR);
-
-  void SetShape(const char* ShapeEntry, const char* MeshEntry);
-
-  void SetHypothesis(const char* Mesh_Or_SubMesh_Entry, const char* Hypothesis_Entry);
-  void SetAlgorithms(const char* Mesh_Or_SubMesh_Entry, const char* Algorithms_Entry);
-
-  void UnSetHypothesis(const char* Applied_Hypothesis_Entry );
-
-  const char* AddSubMesh (const char* Mesh_Entry, const char* SM_IOR, int ST);
-  const char* AddSubMeshOnShape (const char* Mesh_Entry, const char* GeomShape_Entry, const char* SM_IOR, int ST);
-
-  void SetName(const char* Entry, const char* Name);
-
-  void SetMeshIcon(const char* Mesh_Entry, const bool isComputed);
-};
diff --git a/src/SMESHGUI/SMESH_icons.po b/src/SMESHGUI/SMESH_icons.po
deleted file mode 100644 (file)
index 60dff5a..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-# This is a Qt message file in .po format.  Each msgid starts with
-# a scope.  This scope should *NOT* be translated - eg. "Foo::Bar"
-# would be translated to "Pub", not "Foo::Pub".
-msgid ""
-msgstr ""
-"Project-Id-Version: PROJECT VERSION\n"
-"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
-"PO-Revision-Date: YYYY-MM-DD\n"
-"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-
-
-#-----------------------------------------------------------
-# Divers Mesh
-#-----------------------------------------------------------
-
-#ObjectBrowser Icon
-msgid "ICON_OBJBROWSER_SMESH"
-msgstr "mesh.png"
-
-#Select Icon
-msgid "ICON_SELECT"
-msgstr "select1.png"
-
-#Mesh Init
-msgid "ICON_DLG_INIT_MESH"
-msgstr "mesh_init.png"
-
-#
-msgid "ICON_DLG_ADD_SUBMESH"
-msgstr "mesh_add_sub.png"
-
-#Move Node
-msgid "ICON_DLG_MOVE_NODE"
-msgstr "mesh_move_node.png"
-
-#Remove Node
-msgid "ICON_DLG_REM_NODE"
-msgstr "mesh_rem_node.png"
-
-#Remove Element
-msgid "ICON_DLG_REM_ELEMENT"
-msgstr "mesh_rem_element.png"
-
-#Orientation
-msgid "ICON_DLG_MESH_ORIENTATION"
-msgstr "mesh_orientation.png"
-
-#
-msgid "ICON_DLG_MESH_DIAGONAL"
-msgstr "mesh_diagonal.png"
-
-#Connectivity
-msgid "ICON_DLG_CONNECTIVITY"
-msgstr "mesh_connectivity.png"
-
-#Smoothing
-msgid "ICON_DLG_SMOOTHING"
-msgstr "mesh_smoothing.png"
-
-#Renumbering nodes
-msgid "ICON_DLG_RENUMBERING_NODES"
-msgstr "mesh_renumbering_nodes.png"
-
-#Renumbering elements
-msgid "ICON_DLG_RENUMBERING_ELEMENTS"
-msgstr "mesh_renumbering_elements.png"
-
-#Rotation
-msgid "ICON_DLG_ROTATION"
-msgstr "mesh_rotation.png"
-
-#Translation by vector
-msgid "ICON_SMESH_TRANSLATION_VECTOR"
-msgstr "mesh_translation_vector.png"
-
-#Translation by two points
-msgid "ICON_SMESH_TRANSLATION_POINTS"
-msgstr "mesh_translation_points.png"
-
-#Symmetry by point
-msgid "ICON_SMESH_SYMMETRY_POINT"
-msgstr "mesh_symmetry_point.png"
-
-#Symmetry by axis
-msgid "ICON_SMESH_SYMMETRY_AXIS"
-msgstr "mesh_symmetry_axis.png"
-
-#Symmetry by plane
-msgid "ICON_SMESH_SYMMETRY_PLANE"
-msgstr "mesh_symmetry_plane.png"
-
-#Sew free borders
-msgid "ICON_SMESH_SEWING_FREEBORDERS"
-msgstr "mesh_sew_freeborders.png"
-
-#Sew conform free borders
-msgid "ICON_SMESH_SEWING_CONFORM_FREEBORDERS"
-msgstr "mesh_sew_conform_freeborders.png"
-
-#Sew border to side
-msgid "ICON_SMESH_SEWING_BORDERTOSIDE"
-msgstr "mesh_sew_bordertoside.png"
-
-#Sew side elements
-msgid "ICON_SMESH_SEWING_SIDEELEMENTS"
-msgstr "mesh_sew_sideelements.png"
-
-#Merge nodes
-msgid "ICON_SMESH_MERGE_NODES"
-msgstr "mesh_merge_nodes.png"
-
-#-----------------------------------------------------------
-# Hypothesis
-#-----------------------------------------------------------
-
-#Set Algo
-msgid "ICON_DLG_ADD_ALGORITHM"
-msgstr "mesh_set_algo.png"
-
-#Set Hypo
-msgid "ICON_DLG_ADD_HYPOTHESIS"
-msgstr "mesh_set_hypo.png"
-
-#Edit Hypo.
-msgid "ICON_DLG_EDIT_MESH"
-msgstr "mesh_edit.png"
-
-
-#-----------------------------------------------------------
-# Elements
-#-----------------------------------------------------------
-
-#Vertex
-msgid "ICON_DLG_NODE"
-msgstr "mesh_vertex.png"
-
-#Line
-msgid "ICON_DLG_EDGE"
-msgstr "mesh_line.png"
-
-#triangle
-msgid "ICON_DLG_TRIANGLE"
-msgstr "mesh_triangle.png"
-
-#Quadrangle
-msgid "ICON_DLG_QUADRANGLE"
-msgstr "mesh_quad.png"
-
-#triangle
-msgid "ICON_DLG_TETRAS"
-msgstr "mesh_tetra.png"
-
-#Quadrangle
-msgid "ICON_DLG_HEXAS"
-msgstr "mesh_hexa.png"
-
-
-#-----------------------------------------------------------
-# ObjectBrowser
-#-----------------------------------------------------------
-
-#mesh_tree_mesh
-msgid "ICON_SMESH_TREE_MESH"
-msgstr "mesh_tree_mesh.png"    
-
-#mesh_tree_group
-msgid "ICON_SMESH_TREE_GROUP"
-msgstr "mesh_tree_group.png"   
-
-#mesh_tree_algo
-msgid "ICON_SMESH_TREE_ALGO"
-msgstr "mesh_tree_algo.png"
-
-#mesh_tree_hypo
-msgid "ICON_SMESH_TREE_HYPO"
-msgstr "mesh_tree_hypo.png"
-
-#mesh_tree_mesh_warn
-msgid "ICON_SMESH_TREE_MESH_WARN"
-msgstr "mesh_tree_mesh_warn.png"
-
-#mesh_tree_mesh
-msgid "ICON_SMESH_TREE_MESH_IMPORTED"
-msgstr "mesh_tree_importedmesh.png"
-
-
-#-----------------------------------------------------------
-# Group
-#-----------------------------------------------------------
-
-msgid "ICON_EDIT_GROUP"
-msgstr "mesh_edit_group.png"
-
-msgid "ICON_CONSTRUCT_GROUP"
-msgstr "mesh_make_group.png"
-
-#-----------------------------------------------------------
-# Mesh pattern
-#-----------------------------------------------------------
-
-msgid "ICON_PATTERN_2d"
-msgstr "mesh_algo_mefisto.png"
-
-msgid "ICON_PATTERN_3d"
-msgstr "mesh_algo_hexa.png"
-
-msgid "ICON_PATTERN_SAMPLE_2D"
-msgstr "pattern_sample_2d.png"
-
-msgid "ICON_PATTERN_SAMPLE_3D"
-msgstr "pattern_sample_3D.png"
-
-#-----------------------------------------------------------
-# Add/Remove buttons
-#-----------------------------------------------------------
-
-msgid "ICON_APPEND"
-msgstr "mesh_add.png"
-
-msgid "ICON_REMOVE"
-msgstr "mesh_remove.png"
\ No newline at end of file
diff --git a/src/SMESH_I/SMESH.hxx b/src/SMESH_I/SMESH.hxx
deleted file mode 100644 (file)
index ea68b04..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//  SMESH SMESH_I :
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH.hxx
-//  Author : Michael ZORIN
-//  Module : SMESH
-//  $Header: 
-
-#ifndef _SMESH_SMESH_HXX_
-#define _SMESH_SMESH_HXX_
-
-// Tags definition
-enum {
-  // Top level
-  Tag_HypothesisRoot         = 1, // hypotheses root
-  Tag_AlgorithmsRoot         = 2, // algorithms root
-  // Mesh/Submesh
-  Tag_RefOnShape             = 1, // references to shape
-  Tag_RefOnAppliedHypothesis = 2, // applied hypotheses root
-  Tag_RefOnAppliedAlgorithms = 3, // applied algorithms root
-  // Mesh only
-  Tag_SubMeshOnVertex        = 4, // sub-meshes roots by type
-  Tag_SubMeshOnEdge          = 5, // ...
-  Tag_SubMeshOnWire          = 6, // ...
-  Tag_SubMeshOnFace          = 7, // ...
-  Tag_SubMeshOnShell         = 8, // ...
-  Tag_SubMeshOnSolid         = 9, // ...
-  Tag_SubMeshOnCompound      = 10, // ...
-  Tag_NodeGroups             = 11, // Group roots by type
-  Tag_EdgeGroups             = 12, // ...
-  Tag_FaceGroups             = 13, // ...
-  Tag_VolumeGroups           = 14 // ... 
-};
-
-#endif
-
diff --git a/src/SMESH_I/SMESHEngine.cxx b/src/SMESH_I/SMESHEngine.cxx
deleted file mode 100644 (file)
index fc1bd44..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-
-int main(int argc, char** argv)
-{
-  return 1;
-}
diff --git a/src/SMESH_I/SMESH_1D_Algo_i.cxx b/src/SMESH_I/SMESH_1D_Algo_i.cxx
deleted file mode 100644 (file)
index 06f621d..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_1D_Algo_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESH_1D_Algo_i.hxx"
-
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  SMESH_1D_Algo_i::SMESH_1D_Algo_i
- * 
- *  Constructor
- */
-//=============================================================================
-
-SMESH_1D_Algo_i::SMESH_1D_Algo_i( PortableServer::POA_ptr thePOA )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA ), 
-       SMESH_Algo_i( thePOA )
-{
-  MESSAGE( "SMESH_1D_Algo_i::SMESH_1D_Algo_i" );
-}
-
-//=============================================================================
-/*!
- *  SMESH_1D_Algo_i::~SMESH_1D_Algo_i
- * 
- *  Destructor
- */
-//=============================================================================
-
-SMESH_1D_Algo_i::~SMESH_1D_Algo_i()
-{
-  MESSAGE( "SMESH_1D_Algo_i::~SMESH_1D_Algo_i" );
-}
-
-//================================================================================
-/*!
- * \brief Verify whether algorithm supports given entity type 
-  * \param type - dimension (see SMESH::Dimension enumeration)
-  * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
- * 
- * Verify whether algorithm supports given entity type (see SMESH::Dimension enumeration)
- */
-//================================================================================
-CORBA::Boolean SMESH_1D_Algo_i::IsDimSupported( SMESH::Dimension type )
-{
-  return type == SMESH::DIM_1D;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/SMESH_I/SMESH_1D_Algo_i.hxx b/src/SMESH_I/SMESH_1D_Algo_i.hxx
deleted file mode 100644 (file)
index 1112a40..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_1D_Algo_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_1D_ALGO_I_HXX_
-#define _SMESH_1D_ALGO_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-
-#include "SMESH_Algo_i.hxx"
-
-// ======================================================
-// Generic 1D algorithm
-// ======================================================
-class SMESH_1D_Algo_i:
-  public virtual POA_SMESH::SMESH_1D_Algo,
-  public virtual SMESH_Algo_i
-{
-protected:
-  // Constructor : placed in protected section to prohibit creation of generic class instance
-  SMESH_1D_Algo_i( PortableServer::POA_ptr thePOA );
-
-public:
-  // Destructor
-  virtual ~SMESH_1D_Algo_i();
-  
-  // Verify whether algorithm supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
diff --git a/src/SMESH_I/SMESH_2D_Algo_i.cxx b/src/SMESH_I/SMESH_2D_Algo_i.cxx
deleted file mode 100644 (file)
index 00744ee..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_2D_Algo_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESH_2D_Algo_i.hxx"
-
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  SMESH_2D_Algo_i::SMESH_2D_Algo_i
- * 
- *  Constructor
- */
-//=============================================================================
-
-SMESH_2D_Algo_i::SMESH_2D_Algo_i( PortableServer::POA_ptr thePOA )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA ), 
-       SMESH_Algo_i( thePOA ) 
-{
-  MESSAGE( "SMESH_2D_Algo_i::SMESH_2D_Algo_i" );
-}
-
-//=============================================================================
-/*!
- *  SMESH_2D_Algo_i::~SMESH_2D_Algo_i
- * 
- *  Destructor
- */
-//=============================================================================
-
-SMESH_2D_Algo_i::~SMESH_2D_Algo_i()
-{
-  MESSAGE( "SMESH_2D_Algo_i::~SMESH_2D_Algo_i" );
-}
-
-//================================================================================
-/*!
- * \brief Verify whether algorithm supports given entity type 
-  * \param type - dimension (see SMESH::Dimension enumeration)
-  * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
- * 
- * Verify whether algorithm supports given entity type (see SMESH::Dimension enumeration)
- */
-//================================================================================  
-CORBA::Boolean SMESH_2D_Algo_i::IsDimSupported( SMESH::Dimension type )
-{
-  return type == SMESH::DIM_2D;
-}
diff --git a/src/SMESH_I/SMESH_2D_Algo_i.hxx b/src/SMESH_I/SMESH_2D_Algo_i.hxx
deleted file mode 100644 (file)
index 58664c9..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_2D_Algo_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_2D_ALGO_I_HXX_
-#define _SMESH_2D_ALGO_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-
-#include "SMESH_Algo_i.hxx"
-
-// ======================================================
-// Generic 2D algorithm
-// ======================================================
-class SMESH_2D_Algo_i:
-  public virtual POA_SMESH::SMESH_2D_Algo,
-  public virtual SMESH_Algo_i
-{
-protected:
-  // Constructor : placed in protected section to prohibit creation of generic class instance
-  SMESH_2D_Algo_i( PortableServer::POA_ptr thePOA );
-
-public:
-  // Destructor
-  virtual ~SMESH_2D_Algo_i();
-  
-  // Verify whether algorithm supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
diff --git a/src/SMESH_I/SMESH_3D_Algo_i.cxx b/src/SMESH_I/SMESH_3D_Algo_i.cxx
deleted file mode 100644 (file)
index 14276fe..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_3D_Algo_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESH_3D_Algo_i.hxx"
-
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  SMESH_3D_Algo_i::SMESH_3D_Algo_i
- * 
- *  Constructor
- */
-//=============================================================================
-
-SMESH_3D_Algo_i::SMESH_3D_Algo_i( PortableServer::POA_ptr thePOA )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA ), 
-       SMESH_Algo_i( thePOA )
-{
-  MESSAGE( "SMESH_3D_Algo_i::SMESH_3D_Algo_i" );
-}
-
-//=============================================================================
-/*!
- *  SMESH_3D_Algo_i::~SMESH_3D_Algo_i
- * 
- *  Destructor
- */
-//=============================================================================
-
-SMESH_3D_Algo_i::~SMESH_3D_Algo_i()
-{
-  MESSAGE( "SMESH_3D_Algo_i::~SMESH_3D_Algo_i" );
-}
-
-//================================================================================
-/*!
- * \brief Verify whether algorithm supports given entity type 
-  * \param type - dimension (see SMESH::Dimension enumeration)
-  * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
- * 
- * Verify whether algorithm supports given entity type (see SMESH::Dimension enumeration)
- */
-//================================================================================  
-CORBA::Boolean SMESH_3D_Algo_i::IsDimSupported( SMESH::Dimension type )
-{
-  return type == SMESH::DIM_3D;
-}
-
diff --git a/src/SMESH_I/SMESH_3D_Algo_i.hxx b/src/SMESH_I/SMESH_3D_Algo_i.hxx
deleted file mode 100644 (file)
index 8589e16..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_3D_Algo_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_3D_ALGO_I_HXX_
-#define _SMESH_3D_ALGO_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-
-#include "SMESH_Algo_i.hxx"
-
-// ======================================================
-// Generic 3D algorithm
-// ======================================================
-class SMESH_3D_Algo_i:
-  public virtual POA_SMESH::SMESH_3D_Algo,
-  public virtual SMESH_Algo_i
-{
-protected:
-  // Constructor : placed in protected section to prohibit creation of generic class instance
-  SMESH_3D_Algo_i( PortableServer::POA_ptr thePOA );
-
-public:
-  // Destructor
-  virtual ~SMESH_3D_Algo_i();
-  
-  // Verify whether algorithm supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
diff --git a/src/SMESH_I/SMESH_Algo_i.cxx b/src/SMESH_I/SMESH_Algo_i.cxx
deleted file mode 100644 (file)
index a57df7b..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Algo_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESH_Algo_i.hxx"
-#include "SMESH_Algo.hxx"
-
-#include "utilities.h"
-
-#include <string>
-#include <vector>
-
-//=============================================================================
-/*!
- *  SMESH_Algo_i::SMESH_Algo_i
- * 
- *  Constructor
- */
-//=============================================================================
-
-SMESH_Algo_i::SMESH_Algo_i( PortableServer::POA_ptr thePOA )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA )
-{
-  MESSAGE( "SMESH_Algo_i::SMESH_Algo_i" );
-}
-
-//=============================================================================
-/*!
- *  SMESH_Algo_i::~SMESH_Algo_i
- * 
- *  Destructor
- */
-//=============================================================================
-
-SMESH_Algo_i::~SMESH_Algo_i()
-{
-  MESSAGE( "SMESH_Algo_i::~SMESH_Algo_i" );
-}
-
-//=============================================================================
-/*!
- *  SMESH_Algo_i::GetCompatibleHypothesis
- * 
- *  Gets list of compatible hypotheses
- */
-//=============================================================================
-
-SMESH::ListOfHypothesisName* SMESH_Algo_i::GetCompatibleHypothesis()
-{
-  MESSAGE( "SMESH_Algo_i::GetCompatibleHypothesis" );
-  SMESH::ListOfHypothesisName_var listOfHypothesis = new SMESH::ListOfHypothesisName;
-  const vector<string>& hypList = ( ( ::SMESH_Algo* )myBaseImpl )->GetCompatibleHypothesis();
-  int nbHyp = hypList.size();
-  listOfHypothesis->length( nbHyp );
-  for ( int i = 0; i < nbHyp; i++ ) {
-    listOfHypothesis[ i ] = CORBA::string_dup( hypList[ i ].c_str() );
-  }
-  return listOfHypothesis._retn();
-}
diff --git a/src/SMESH_I/SMESH_Algo_i.hxx b/src/SMESH_I/SMESH_Algo_i.hxx
deleted file mode 100644 (file)
index 21630ec..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Algo_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_ALGO_I_HXX_
-#define _SMESH_ALGO_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-
-// ======================================================
-// Generic algorithm
-// ======================================================
-class SMESH_Algo_i:
-  public virtual POA_SMESH::SMESH_Algo,
-  public virtual SMESH_Hypothesis_i
-{
-public:
-  // Constructor : placed in protected section to prohibit creation of generic class instance
-  SMESH_Algo_i( PortableServer::POA_ptr thePOA );
-
-public:
-  // Destructor
-  virtual ~SMESH_Algo_i();
-  
-  // Gets list of compatible hypotheses
-  SMESH::ListOfHypothesisName* GetCompatibleHypothesis();
-};
-
-#endif
diff --git a/src/SMESH_I/SMESH_Gen_i_1.cxx b/src/SMESH_I/SMESH_Gen_i_1.cxx
deleted file mode 100644 (file)
index d3c6459..0000000
+++ /dev/null
@@ -1,845 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-// File      : SMESH_Gen_i_1.cxx
-// Created   : Thu Oct 21 17:24:06 2004
-// Author    : Edward AGAPOV (eap)
-// Module    : SMESH
-// $Header: 
-
-#include "SMESH_Gen_i.hxx"
-
-#include "SMESH_Mesh_i.hxx"
-#include "SMESH_Hypothesis_i.hxx"
-#include "SMESH_Algo_i.hxx"
-#include "SMESH_Group_i.hxx"
-
-#include "SMESH.hxx"
-
-#include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
-
-#include "utilities.h"
-#include "Utils_ExceptHandlers.hxx"
-
-#include <TCollection_AsciiString.hxx>
-
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
-
-//=============================================================================
-/*!
- *  Get...Tag [ static ]
- *
- *  Methods which determine SMESH data model structure
- */
-//=============================================================================
-
-long SMESH_Gen_i::GetHypothesisRootTag()
-{
-  return Tag_HypothesisRoot;
-}
-
-long SMESH_Gen_i::GetAlgorithmsRootTag()
-{
-  return Tag_AlgorithmsRoot;
-}
-
-long SMESH_Gen_i::GetRefOnShapeTag()
-{
-  return Tag_RefOnShape;
-}
-
-long SMESH_Gen_i::GetRefOnAppliedHypothesisTag()
-{
-  return Tag_RefOnAppliedHypothesis;
-}
-
-long SMESH_Gen_i::GetRefOnAppliedAlgorithmsTag()
-{
-  return Tag_RefOnAppliedAlgorithms;
-}
-
-long SMESH_Gen_i::GetSubMeshOnVertexTag()
-{
-  return Tag_SubMeshOnVertex;
-}
-
-long SMESH_Gen_i::GetSubMeshOnEdgeTag()
-{
-  return Tag_SubMeshOnEdge;
-}
-
-long SMESH_Gen_i::GetSubMeshOnFaceTag()
-{
-  return Tag_SubMeshOnFace;
-}
-
-long SMESH_Gen_i::GetSubMeshOnSolidTag()
-{
-  return Tag_SubMeshOnSolid;
-}
-
-long SMESH_Gen_i::GetSubMeshOnCompoundTag()
-{
-  return Tag_SubMeshOnCompound;
-}
-
-long SMESH_Gen_i::GetSubMeshOnWireTag()
-{
-  return Tag_SubMeshOnWire;
-}
-
-long SMESH_Gen_i::GetSubMeshOnShellTag()
-{
-  return Tag_SubMeshOnShell;
-}
-
-long SMESH_Gen_i::GetNodeGroupsTag()
-{
-  return Tag_NodeGroups;
-}
-
-long SMESH_Gen_i::GetEdgeGroupsTag()
-{
-  return Tag_EdgeGroups;
-}
-
-long SMESH_Gen_i::GetFaceGroupsTag()
-{
-  return Tag_FaceGroups;
-}
-
-long SMESH_Gen_i::GetVolumeGroupsTag()
-{
-  return Tag_VolumeGroups;
-}
-
-//=============================================================================
-/*!
- *  SMESH_Gen_i::CanPublishInStudy
- *
- *  Returns true if object can be published in the study
- */
-//=============================================================================
-
-bool SMESH_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR)
-{
-  if(MYDEBUG) MESSAGE("CanPublishInStudy - "<<!CORBA::is_nil(myCurrentStudy));
-  if(CORBA::is_nil(myCurrentStudy))
-    return false;
-  
-  SMESH::SMESH_Mesh_var aMesh       = SMESH::SMESH_Mesh::_narrow(theIOR);
-  if( !aMesh->_is_nil() )
-    return true;
-
-  SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow(theIOR);
-  if( !aSubMesh->_is_nil() )
-    return true;
-
-  SMESH::SMESH_Hypothesis_var aHyp  = SMESH::SMESH_Hypothesis::_narrow(theIOR);
-  if( !aHyp->_is_nil() )
-    return true;
-
-  SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(theIOR);
-  if( !aGroup->_is_nil() )
-    return true;
-
-  if(MYDEBUG) MESSAGE("CanPublishInStudy--CANT");
-  return false;
-}
-
-//=======================================================================
-//function : ObjectToSObject
-//purpose  : 
-//=======================================================================
-
-SALOMEDS::SObject_ptr SMESH_Gen_i::ObjectToSObject(SALOMEDS::Study_ptr theStudy,
-                                                   CORBA::Object_ptr   theObject)
-{
-  SALOMEDS::SObject_var aSO;
-  if ( !CORBA::is_nil( theStudy ) && !CORBA::is_nil( theObject ))
-    aSO = theStudy->FindObjectIOR( SMESH_Gen_i::GetORB()->object_to_string( theObject ) );
-  return aSO._retn();
-}
-
-//=======================================================================
-//function : objectToServant
-//purpose  : 
-//=======================================================================
-
-template<typename T> static inline T* objectToServant( CORBA::Object_ptr theIOR )
-{
-  return dynamic_cast<T*>( SMESH_Gen_i::GetServant( theIOR ).in() );
-}
-
-//=======================================================================
-//function : ShapeToGeomObject
-//purpose  : 
-//=======================================================================
-
-GEOM::GEOM_Object_ptr SMESH_Gen_i::ShapeToGeomObject (const TopoDS_Shape& theShape )
-{
-  GEOM::GEOM_Object_var aShapeObj;
-  if ( !theShape.IsNull() ) {
-    GEOM_Client* aClient = GetShapeReader();
-    TCollection_AsciiString IOR;
-    if ( aClient && aClient->Find( theShape, IOR ))
-      aShapeObj = GEOM::GEOM_Object::_narrow
-        ( GetORB()->string_to_object( IOR.ToCString() ) );
-  }
-  return aShapeObj._retn();
-}
-
-//=======================================================================
-//function : GeomObjectToShape
-//purpose  : 
-//=======================================================================
-
-TopoDS_Shape SMESH_Gen_i::GeomObjectToShape(GEOM::GEOM_Object_ptr theGeomObject)
-{
-  TopoDS_Shape S;
-  if ( !theGeomObject->_is_nil() ) {
-    GEOM_Client* aClient = GetShapeReader();
-    GEOM::GEOM_Gen_var aGeomEngine = GetGeomEngine();
-    if ( aClient && !aGeomEngine->_is_nil () )
-      S = aClient->GetShape( aGeomEngine, theGeomObject );
-  }
-  return S;
-}
-
-//=======================================================================
-//function : publish
-//purpose  : 
-//=======================================================================
-
-static SALOMEDS::SObject_ptr publish(SALOMEDS::Study_ptr   theStudy,
-                                     CORBA::Object_ptr     theIOR,
-                                     SALOMEDS::SObject_ptr theFatherObject,
-                                     const int             theTag = 0,
-                                     const char*           thePixMap = 0,
-                                     const bool            theSelectable = true)
-{
-  SALOMEDS::SObject_var SO = SMESH_Gen_i::ObjectToSObject( theStudy, theIOR );
-  SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
-  if ( SO->_is_nil() ) {
-    if ( theTag == 0 )
-      SO = aStudyBuilder->NewObject( theFatherObject );
-    else if ( !theFatherObject->FindSubObject( theTag, SO ))
-      SO = aStudyBuilder->NewObjectToTag( theFatherObject, theTag );
-  }
-
-  SALOMEDS::GenericAttribute_var anAttr;
-  if ( !CORBA::is_nil( theIOR )) {
-    anAttr = aStudyBuilder->FindOrCreateAttribute( SO, "AttributeIOR" );
-    SALOMEDS::AttributeIOR::_narrow(anAttr)->SetValue
-      ( SMESH_Gen_i::GetORB()->object_to_string( theIOR ) );
-  }
-  if ( thePixMap ) {
-    anAttr  = aStudyBuilder->FindOrCreateAttribute( SO, "AttributePixMap" );
-    SALOMEDS::AttributePixMap::_narrow( anAttr )->SetPixMap( thePixMap );
-  }
-  if ( !theSelectable ) {
-    anAttr   = aStudyBuilder->FindOrCreateAttribute( SO, "AttributeSelectable" );
-    SALOMEDS::AttributeSelectable::_narrow( anAttr )->SetSelectable( false );
-  }
-  return SO._retn();
-}
-
-//=======================================================================
-//function : setName
-//purpose  : 
-//=======================================================================
-
-void SMESH_Gen_i::SetName(SALOMEDS::SObject_ptr theSObject,
-                          const char*           theName,
-                          const char*           theDefaultName)
-{
-  if ( !theSObject->_is_nil() ) {
-    SALOMEDS::StudyBuilder_var aStudyBuilder = theSObject->GetStudy()->NewBuilder();
-    SALOMEDS::GenericAttribute_var anAttr =
-      aStudyBuilder->FindOrCreateAttribute( theSObject, "AttributeName" );
-    SALOMEDS::AttributeName_var aNameAttr = SALOMEDS::AttributeName::_narrow( anAttr );
-    if ( theName && strlen( theName ) != 0 )
-      aNameAttr->SetValue( theName );
-    else {
-      CORBA::String_var curName = CORBA::string_dup( aNameAttr->Value() );
-      if ( strlen( curName ) == 0 ) {
-        TCollection_AsciiString aName( (char*) theDefaultName );
-        aName += TCollection_AsciiString("_") + TCollection_AsciiString( theSObject->Tag() );
-        aNameAttr->SetValue( aName.ToCString() );
-      }
-    }
-  }
-}
-
-//=======================================================================
-//function : addReference
-//purpose  : 
-//=======================================================================
-
-static void addReference (SALOMEDS::Study_ptr   theStudy,
-                          SALOMEDS::SObject_ptr theSObject,
-                          CORBA::Object_ptr     theToObject,
-                          int                   theTag = 0)
-{
-  SALOMEDS::SObject_var aToObjSO = SMESH_Gen_i::ObjectToSObject( theStudy, theToObject );
-  if ( !aToObjSO->_is_nil() && !theSObject->_is_nil() ) {
-    SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder();
-    SALOMEDS::SObject_var aReferenceSO;
-    if ( !theTag ) {
-      bool isReferred = false;
-      SALOMEDS::ChildIterator_var anIter = theStudy->NewChildIterator( theSObject );
-      for ( ; !isReferred && anIter->More(); anIter->Next() ) {
-        if ( anIter->Value()->ReferencedObject( aReferenceSO ) &&
-            strcmp( aReferenceSO->GetID(), aToObjSO->GetID() ) == 0 )
-          isReferred = true;
-      }
-      if ( !isReferred ) {
-        aReferenceSO = aStudyBuilder->NewObject( theSObject );
-        aStudyBuilder->Addreference( aReferenceSO, aToObjSO );
-      }
-    }
-    else {
-      if ( !theSObject->FindSubObject( theTag, aReferenceSO ))
-        aReferenceSO = aStudyBuilder->NewObjectToTag( theSObject, theTag );
-      aStudyBuilder->Addreference( aReferenceSO, aToObjSO );
-    }
-  }
-}
-
-//=============================================================================
-/*!
- *  SMESH_Gen_i::PublishInStudy
- *
- *  Publish object in the study
- */
-//=============================================================================
-
-SALOMEDS::SObject_ptr SMESH_Gen_i::PublishInStudy(SALOMEDS::Study_ptr   theStudy,
-                                                 SALOMEDS::SObject_ptr theSObject,
-                                                 CORBA::Object_ptr     theIOR,
-                                                 const char*           theName)
-     throw (SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-  SALOMEDS::SObject_var aSO;
-  if ( CORBA::is_nil( theStudy ) || CORBA::is_nil( theIOR ))
-    return aSO._retn();
-  if(MYDEBUG) MESSAGE("PublishInStudy");
-
-  // Publishing a mesh
-  SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( theIOR );
-  if( !aMesh->_is_nil() )
-    aSO = PublishMesh( theStudy, aMesh, theName );
-
-  // Publishing a sub-mesh
-  SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow( theIOR );
-  if( aSO->_is_nil() && !aSubMesh->_is_nil() ) {
-    GEOM::GEOM_Object_var aShapeObject = aSubMesh->GetSubShape();
-    aMesh = aSubMesh->GetFather();
-    aSO = PublishSubMesh( theStudy, aMesh, aSubMesh, aShapeObject, theName );
-  }
-
-  // Publishing a hypothesis or algorithm
-  SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( theIOR );
-  if ( aSO->_is_nil() && !aHyp->_is_nil() )
-    aSO = PublishHypothesis( theStudy, aHyp );
-
-  // Publishing a group
-  SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(theIOR);
-  if ( aSO->_is_nil() && !aGroup->_is_nil() ) {
-    GEOM::GEOM_Object_var aShapeObject;
-    aMesh = aGroup->GetMesh();
-    aSO = PublishGroup( theStudy, aMesh, aGroup, aShapeObject, theName );
-  }
-  if(MYDEBUG) MESSAGE("PublishInStudy_END");
-
-  return aSO._retn();
-}
-
-//=======================================================================
-//function : PublishComponent
-//purpose  : 
-//=======================================================================
-
-SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent(SALOMEDS::Study_ptr theStudy)
-{
-  if ( CORBA::is_nil( theStudy ))
-    return SALOMEDS::SComponent::_nil();
-  if(MYDEBUG) MESSAGE("PublishComponent");
-
-  SALOMEDS::SComponent_var father =
-    SALOMEDS::SComponent::_narrow( theStudy->FindComponent( ComponentDataType() ) );
-  if ( !CORBA::is_nil( father ) )
-    return father._retn();
-
-  SALOME_ModuleCatalog::ModuleCatalog_var aCat =
-    SALOME_ModuleCatalog::ModuleCatalog::_narrow( GetNS()->Resolve("/Kernel/ModulCatalog") );
-  if ( CORBA::is_nil( aCat ) )
-    return father._retn();
-
-  SALOME_ModuleCatalog::Acomponent_var aComp = aCat->GetComponent( ComponentDataType() );
-  if ( CORBA::is_nil( aComp ) )
-    return father._retn();
-
-  SALOMEDS::StudyBuilder_var     aStudyBuilder = theStudy->NewBuilder(); 
-  SALOMEDS::GenericAttribute_var anAttr;
-  SALOMEDS::AttributePixMap_var  aPixmap;
-
-  father  = aStudyBuilder->NewComponent( ComponentDataType() );
-  aStudyBuilder->DefineComponentInstance( father, SMESH_Gen::_this() );
-  anAttr  = aStudyBuilder->FindOrCreateAttribute( father, "AttributePixMap" );
-  aPixmap = SALOMEDS::AttributePixMap::_narrow( anAttr );
-  aPixmap ->SetPixMap( "ICON_OBJBROWSER_SMESH" );
-  SetName( father, aComp->componentusername(), "MESH" );
-  if(MYDEBUG) MESSAGE("PublishComponent--END");
-
-  return father._retn();
-}
-
-//=============================================================================
-/*!
- *  findMaxChildTag [ static internal ]
- *
- *  Finds maximum child tag for the given object
- */
-//=============================================================================
-
-static long findMaxChildTag( SALOMEDS::SObject_ptr theSObject )
-{
-  long aTag = 0;
-  if ( !theSObject->_is_nil() ) {
-    SALOMEDS::Study_var aStudy = theSObject->GetStudy();
-    if ( !aStudy->_is_nil() ) {
-      SALOMEDS::ChildIterator_var anIter = aStudy->NewChildIterator( theSObject );
-      for ( ; anIter->More(); anIter->Next() ) {
-       long nTag = anIter->Value()->Tag();
-       if ( nTag > aTag )
-         aTag = nTag;
-      }
-    }
-  }
-  return aTag;
-}
-
-//=======================================================================
-//function : PublishMesh
-//purpose  : 
-//=======================================================================
-
-SALOMEDS::SObject_ptr SMESH_Gen_i::PublishMesh (SALOMEDS::Study_ptr   theStudy,
-                                                SMESH::SMESH_Mesh_ptr theMesh,
-                                                const char*           theName)
-{
-  if ( CORBA::is_nil( theStudy ) ||
-       CORBA::is_nil( theMesh ))
-    return SALOMEDS::SComponent::_nil();
-  if(MYDEBUG) MESSAGE("PublishMesh--IN");
-
-  // find or publish a mesh
-
-  SALOMEDS::SObject_var aMeshSO = ObjectToSObject( theStudy, theMesh );
-  if ( aMeshSO->_is_nil() )
-  {
-    SALOMEDS::SComponent_var father = PublishComponent( theStudy );
-    if ( father->_is_nil() )
-      return aMeshSO._retn();
-
-    // Find correct free tag
-    long aTag = findMaxChildTag( father.in() );
-    if ( aTag <= GetAlgorithmsRootTag() )
-      aTag = GetAlgorithmsRootTag() + 1;
-    else
-      aTag++;
-
-    aMeshSO = publish (theStudy, theMesh, father, aTag, "ICON_SMESH_TREE_MESH_WARN" );
-    if ( aMeshSO->_is_nil() )
-      return aMeshSO._retn();
-  }
-  SetName( aMeshSO, theName, "Mesh" );
-
-  // Add shape reference
-
-  GEOM::GEOM_Object_var aShapeObject = theMesh->GetShapeToMesh();
-  if ( !CORBA::is_nil( aShapeObject )) {
-    addReference( theStudy, aMeshSO, aShapeObject, GetRefOnShapeTag() );
-
-    // Publish global hypotheses
-
-    SMESH::ListOfHypothesis * hypList = theMesh->GetHypothesisList( aShapeObject );
-    if ( hypList )
-      for ( int i = 0; i < hypList->length(); i++ ) {
-        SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( (*hypList)[ i ]);
-        PublishHypothesis( theStudy, aHyp );
-        AddHypothesisToShape( theStudy, theMesh, aShapeObject, aHyp );
-      }
-  }
-
-  // Publish submeshes
-
-  SMESH_Mesh_i* mesh_i = objectToServant<SMESH_Mesh_i>( theMesh );
-  if ( !mesh_i )
-    return aMeshSO._retn();
-  map<int, SMESH_subMesh_i*>& subMap = mesh_i->_mapSubMesh_i;
-  map<int, SMESH_subMesh_i*>::iterator subIt = subMap.begin();
-  for ( ; subIt != subMap.end(); subIt++ ) {
-    SMESH::SMESH_subMesh_ptr aSubMesh = (*subIt).second->_this();
-    if ( !CORBA::is_nil( aSubMesh )) {
-      aShapeObject = aSubMesh->GetSubShape();
-      PublishSubMesh( theStudy, theMesh, aSubMesh, aShapeObject );
-    }
-  }
-
-  // Publish groups
-  const map<int, SMESH::SMESH_GroupBase_ptr>& grMap = mesh_i->getGroups();
-  map<int, SMESH::SMESH_GroupBase_ptr>::const_iterator it = grMap.begin();
-  for ( ; it != grMap.end(); it++ )
-  {
-    SMESH::SMESH_GroupBase_ptr aGroup = (*it).second;
-    if ( !aGroup->_is_nil() ) {
-      GEOM::GEOM_Object_var  aShapeObj;
-      SMESH::SMESH_GroupOnGeom_var aGeomGroup =
-        SMESH::SMESH_GroupOnGeom::_narrow( aGroup );
-      if ( !aGeomGroup->_is_nil() )
-        aShapeObj = aGeomGroup->GetShape();
-      PublishGroup( theStudy, theMesh, aGroup, aShapeObj );
-    }
-  }
-
-  if(MYDEBUG) MESSAGE("PublishMesh_END");
-  return aMeshSO._retn();
-}
-
-//=======================================================================
-//function : PublishSubMesh
-//purpose  : 
-//=======================================================================
-
-SALOMEDS::SObject_ptr SMESH_Gen_i::PublishSubMesh (SALOMEDS::Study_ptr      theStudy,
-                                                   SMESH::SMESH_Mesh_ptr    theMesh,
-                                                   SMESH::SMESH_subMesh_ptr theSubMesh,
-                                                   GEOM::GEOM_Object_ptr    theShapeObject,
-                                                   const char*              theName)
-{
-  if (theStudy->_is_nil() || theMesh->_is_nil() ||
-      theSubMesh->_is_nil() || theShapeObject->_is_nil() )
-    return SALOMEDS::SObject::_nil();
-
-  SALOMEDS::SObject_var aSubMeshSO = ObjectToSObject( theStudy, theSubMesh );
-  if ( aSubMeshSO->_is_nil() )
-  {
-    SALOMEDS::SObject_var aMeshSO = ObjectToSObject( theStudy, theMesh );
-    if ( aMeshSO->_is_nil() ) {
-      aMeshSO = PublishMesh( theStudy, theMesh );
-      if ( aMeshSO->_is_nil())
-        return SALOMEDS::SObject::_nil();
-    }
-    // Find submesh sub-tree tag
-    long aRootTag;
-    char* aRootName = "";
-    switch ( theShapeObject->GetShapeType() ) {
-    case GEOM::VERTEX:
-      aRootTag  = GetSubMeshOnVertexTag();
-      aRootName = "SubMeshes on Vertex";
-      break;
-    case GEOM::EDGE:
-      aRootTag  = GetSubMeshOnEdgeTag();
-      aRootName = "SubMeshes on Edge";
-      break;
-    case GEOM::WIRE:
-      aRootTag  = GetSubMeshOnWireTag();
-      aRootName = "SubMeshes on Wire";
-      break;
-    case GEOM::FACE:
-      aRootTag  = GetSubMeshOnFaceTag();
-      aRootName = "SubMeshes on Face";    
-      break;
-    case GEOM::SHELL:
-      aRootTag  = GetSubMeshOnShellTag();
-      aRootName = "SubMeshes on Shell";   
-      break;
-    case GEOM::SOLID:
-      aRootTag  = GetSubMeshOnSolidTag();
-      aRootName = "SubMeshes on Solid";
-      break;
-    default:
-      aRootTag  = GetSubMeshOnCompoundTag();
-      aRootName = "SubMeshes on Compound";
-      break;
-    }
-
-    // Find or create submesh root
-    SALOMEDS::SObject_var aRootSO = publish (theStudy, CORBA::Object::_nil(),
-                                             aMeshSO, aRootTag, 0, false );
-    SetName( aRootSO, aRootName );
-
-    // Add new submesh to corresponding sub-tree
-    aSubMeshSO = publish (theStudy, theSubMesh, aRootSO, 0, "ICON_SMESH_TREE_MESH_WARN");
-    if ( aSubMeshSO->_is_nil() )
-      return aSubMeshSO._retn();
-  }
-  SetName( aSubMeshSO, theName, "SubMesh" );
-
-  // Add reference to theShapeObject
-
-  addReference( theStudy, aSubMeshSO, theShapeObject, 1 );
-
-  // Publish hypothesis
-
-  SMESH::ListOfHypothesis * hypList = theMesh->GetHypothesisList( theShapeObject );
-  if ( hypList )
-    for ( int i = 0; i < hypList->length(); i++ ) {
-      SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( (*hypList)[ i ]);
-      PublishHypothesis( theStudy, aHyp );
-      AddHypothesisToShape( theStudy, theMesh, theShapeObject, aHyp );
-    }
-
-  return aSubMeshSO._retn();
-}
-
-//=======================================================================
-//function : PublishGroup
-//purpose  : 
-//=======================================================================
-
-SALOMEDS::SObject_ptr SMESH_Gen_i::PublishGroup (SALOMEDS::Study_ptr    theStudy,
-                                                 SMESH::SMESH_Mesh_ptr  theMesh,
-                                                 SMESH::SMESH_GroupBase_ptr theGroup,
-                                                 GEOM::GEOM_Object_ptr  theShapeObject,
-                                                 const char*            theName)
-{
-  if (theStudy->_is_nil() || theMesh->_is_nil() || theGroup->_is_nil() )
-    return SALOMEDS::SObject::_nil();
-
-  SALOMEDS::SObject_var aGroupSO = ObjectToSObject( theStudy, theGroup );
-  if ( aGroupSO->_is_nil() )
-  {
-    SALOMEDS::SObject_var aMeshSO = ObjectToSObject( theStudy, theMesh );
-    if ( aMeshSO->_is_nil() ) {
-      aMeshSO = PublishInStudy( theStudy, SALOMEDS::SObject::_nil(), theMesh, "");
-      if ( aMeshSO->_is_nil())
-        return SALOMEDS::SObject::_nil();
-    }
-    int aType = (int)theGroup->GetType();
-    const char* aRootNames[] = {
-      "Compound Groups", "Groups of Nodes",
-      "Groups of Edges", "Groups of Faces", "Groups of Volumes" };
-
-    // Currently, groups with heterogenous content are not supported
-    if ( aType != SMESH::ALL ) {
-      long aRootTag = GetNodeGroupsTag() + aType - 1;
-
-      // Find or create groups root
-      SALOMEDS::SObject_var aRootSO = publish (theStudy, CORBA::Object::_nil(),
-                                               aMeshSO, aRootTag, 0, false );
-      if ( aType < 5 )
-        SetName( aRootSO, aRootNames[aType] );
-
-      // Add new group to corresponding sub-tree
-      aGroupSO = publish (theStudy, theGroup, aRootSO, 0, "ICON_SMESH_TREE_GROUP" );
-    }
-    if ( aGroupSO->_is_nil() )
-      return aGroupSO._retn();
-  }
-
-  SetName( aGroupSO, theName, "Group" );
-
-  //Add reference to geometry
-  if ( !theShapeObject->_is_nil() )
-    addReference( theStudy, aGroupSO, theShapeObject, 1 );
-
-  return aGroupSO._retn();
-}
-
-//=======================================================================
-//function : PublishHypothesis
-//purpose  : 
-//=======================================================================
-
-SALOMEDS::SObject_ptr
-  SMESH_Gen_i::PublishHypothesis (SALOMEDS::Study_ptr         theStudy,
-                                  SMESH::SMESH_Hypothesis_ptr theHyp,
-                                  const char*                 theName)
-{
-  if(MYDEBUG) MESSAGE("PublishHypothesis")
-  if (theStudy->_is_nil() || theHyp->_is_nil())
-    return SALOMEDS::SObject::_nil();
-
-  SALOMEDS::SObject_var aHypSO = ObjectToSObject( theStudy, theHyp );
-  if ( aHypSO->_is_nil() )
-  {
-    SALOMEDS::SComponent_var father = PublishComponent( theStudy );
-    if ( father->_is_nil() )
-      return aHypSO._retn();
-
-    //Find or Create Hypothesis root
-    bool isAlgo = ( !SMESH::SMESH_Algo::_narrow( theHyp )->_is_nil() );
-    int aRootTag = isAlgo ? GetAlgorithmsRootTag() : GetHypothesisRootTag();
-    SALOMEDS::SObject_var aRootSO =
-      publish (theStudy, CORBA::Object::_nil(),father, aRootTag,
-               isAlgo ? "ICON_SMESH_TREE_ALGO" : "ICON_SMESH_TREE_HYPO", false);
-    SetName( aRootSO, isAlgo ?  "Algorithms" : "Hypotheses" );
-
-    // Add New Hypothesis
-    string aPmName = isAlgo ? "ICON_SMESH_TREE_ALGO_" : "ICON_SMESH_TREE_HYPO_";
-    aPmName += theHyp->GetName();
-    aHypSO = publish( theStudy, theHyp, aRootSO, 0, aPmName.c_str() );
-  }
-
-  if ( !aHypSO->_is_nil() ) {
-    CORBA::String_var aHypName = CORBA::string_dup( theHyp->GetName() );
-    SetName( aHypSO, theName, aHypName );
-  }
-
-  if(MYDEBUG) MESSAGE("PublishHypothesis--END")
-  return aHypSO._retn();
-}
-
-//=======================================================================
-//function : GetMeshOrSubmeshByShape
-//purpose  : 
-//=======================================================================
-
-SALOMEDS::SObject_ptr
-  SMESH_Gen_i::GetMeshOrSubmeshByShape (SALOMEDS::Study_ptr   theStudy,
-                                        SMESH::SMESH_Mesh_ptr theMesh,
-                                        GEOM::GEOM_Object_ptr theShape)
-{
-  if(MYDEBUG) MESSAGE("GetMeshOrSubmeshByShape")
-  SALOMEDS::SObject_var aMeshOrSubMesh;
-  if ( theShape->_is_nil() || theMesh->_is_nil() )
-    return aMeshOrSubMesh._retn();
-
-  TopoDS_Shape aShape = GeomObjectToShape( theShape );
-  SMESH_Mesh_i* mesh_i = objectToServant<SMESH_Mesh_i>( theMesh );
-
-  if ( !aShape.IsNull() && mesh_i && mesh_i->GetImpl().GetMeshDS() ) {
-    SMESHDS_Mesh* meshDS = mesh_i->GetImpl().GetMeshDS();
-    if ( aShape.IsSame( meshDS->ShapeToMesh() ))
-      aMeshOrSubMesh = ObjectToSObject( theStudy, theMesh );
-    else {
-      int shapeID = meshDS->ShapeToIndex( aShape );
-      SMESH::SMESH_subMesh_var aSubMesh = mesh_i->getSubMesh(shapeID);
-      if ( !aSubMesh->_is_nil() )
-        aMeshOrSubMesh = ObjectToSObject( theStudy, aSubMesh );
-    }
-  }
-  if(MYDEBUG) MESSAGE("GetMeshOrSubmeshByShape--END")
-  return aMeshOrSubMesh._retn();
-}
-
-//=======================================================================
-//function : AddHypothesisToShape
-//purpose  : 
-//=======================================================================
-
-bool SMESH_Gen_i::AddHypothesisToShape(SALOMEDS::Study_ptr         theStudy,
-                                       SMESH::SMESH_Mesh_ptr       theMesh,
-                                       GEOM::GEOM_Object_ptr       theShape,
-                                       SMESH::SMESH_Hypothesis_ptr theHyp)
-{
-  if(MYDEBUG) MESSAGE("AddHypothesisToShape")
-  if (theStudy->_is_nil() || theMesh->_is_nil() ||
-      theHyp->_is_nil() || theShape->_is_nil() )
-    return false;
-
-  SALOMEDS::SObject_var aMeshSO = ObjectToSObject( theStudy, theMesh );
-  if ( aMeshSO->_is_nil() )
-    aMeshSO = PublishMesh( theStudy, theMesh );
-  SALOMEDS::SObject_var aHypSO = PublishHypothesis( theStudy, theHyp );
-  if ( aMeshSO->_is_nil() || aHypSO->_is_nil())
-    return false;
-
-  // Find a mesh or submesh refering to theShape
-  SALOMEDS::SObject_var aMeshOrSubMesh =
-    GetMeshOrSubmeshByShape( theStudy, theMesh, theShape );
-  if ( aMeshOrSubMesh->_is_nil() )
-  {
-    // publish submesh
-    TopoDS_Shape aShape = GeomObjectToShape( theShape );
-    SMESH_Mesh_i* mesh_i = objectToServant<SMESH_Mesh_i>( theMesh );
-    if ( !aShape.IsNull() && mesh_i && mesh_i->GetImpl().GetMeshDS() ) {
-      SMESHDS_Mesh* meshDS = mesh_i->GetImpl().GetMeshDS();
-      int shapeID = meshDS->ShapeToIndex( aShape );
-      SMESH::SMESH_subMesh_var aSubMesh = mesh_i->getSubMesh(shapeID);
-      aMeshOrSubMesh = PublishSubMesh( theStudy, theMesh, aSubMesh, theShape );
-    }
-    if ( aMeshOrSubMesh->_is_nil() )
-      return false;
-  }
-
-  //Find or Create Applied Hypothesis root
-  bool aIsAlgo = !SMESH::SMESH_Algo::_narrow( theHyp )->_is_nil();
-  SALOMEDS::SObject_var AHR =
-    publish (theStudy, CORBA::Object::_nil(), aMeshOrSubMesh,
-             aIsAlgo ? GetRefOnAppliedAlgorithmsTag() : GetRefOnAppliedHypothesisTag(),
-             aIsAlgo ? "ICON_SMESH_TREE_ALGO" : "ICON_SMESH_TREE_HYPO", false);
-  SetName( AHR, aIsAlgo ? "Applied algorithms" : "Applied hypotheses" );
-  if ( AHR->_is_nil() )
-    return false;
-
-  addReference( theStudy, AHR, theHyp );
-  if(MYDEBUG) MESSAGE("AddHypothesisToShape--END")
-  return true;
-}
-
-//=======================================================================
-//function : RemoveHypothesisFromShape
-//purpose  : 
-//=======================================================================
-
-bool SMESH_Gen_i::RemoveHypothesisFromShape(SALOMEDS::Study_ptr         theStudy,
-                                            SMESH::SMESH_Mesh_ptr       theMesh,
-                                            GEOM::GEOM_Object_ptr       theShape,
-                                            SMESH::SMESH_Hypothesis_ptr theHyp)
-{
-  if (theStudy->_is_nil() || theMesh->_is_nil() ||
-      theHyp->_is_nil() || theShape->_is_nil() )
-    return false;
-
-  SALOMEDS::SObject_var aHypSO = ObjectToSObject( theStudy, theHyp );
-  if ( aHypSO->_is_nil() )
-    return false;
-
-  // Find a mesh or submesh refering to theShape
-  SALOMEDS::SObject_var aMeshOrSubMesh =
-    GetMeshOrSubmeshByShape( theStudy, theMesh, theShape );
-  if ( aMeshOrSubMesh->_is_nil() )
-    return false;
-
-  // Find and remove a reference to aHypSO
-  SALOMEDS::SObject_var aRef, anObj;
-  CORBA::String_var     anID = CORBA::string_dup( aHypSO->GetID() );
-  SALOMEDS::ChildIterator_var it = theStudy->NewChildIterator( aMeshOrSubMesh );
-  for ( it->InitEx( true ); it->More(); it->Next() ) {
-    anObj = it->Value();
-    if (anObj->ReferencedObject( aRef ) && strcmp( aRef->GetID(), anID ) == 0 ) {
-      theStudy->NewBuilder()->RemoveObject( anObj );
-      break;
-    }
-  }
-  return true;
-}
-
diff --git a/src/SMESH_I/SMESH_Group_i.hxx b/src/SMESH_I/SMESH_Group_i.hxx
deleted file mode 100644 (file)
index e9801b2..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes
-//
-//  Copyright (C) 2004  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Group_i.hxx
-//  Author : Sergey ANIKIN, OCC
-//  Module : SMESH
-//  $Header$
-
-
-#ifndef SMESH_Group_i_HeaderFile
-#define SMESH_Group_i_HeaderFile
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Group)
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_CLIENT_HEADER(GEOM_Gen)
-
-#include "SALOME_GenericObj_i.hh"
-
-class SMESH_Mesh_i;
-class SMESH_Group;
-class SMESHDS_GroupBase;
-
-// ===========
-// Group Base
-// ===========
-class SMESH_GroupBase_i:
-  public virtual POA_SMESH::SMESH_GroupBase,
-  public virtual SALOME::GenericObj_i
-{
- public:
-  SMESH_GroupBase_i(PortableServer::POA_ptr thePOA,
-                    SMESH_Mesh_i* theMeshServant,
-                    const int theLocalID );
-  virtual ~SMESH_GroupBase_i();
-
-  // CORBA interface implementation
-  void SetName(const char* name);
-  char* GetName();
-  SMESH::ElementType GetType();
-  CORBA::Long Size();
-  CORBA::Boolean IsEmpty();
-  CORBA::Boolean Contains(CORBA::Long elem_id);
-  CORBA::Long GetID(CORBA::Long elem_index);
-  SMESH::long_array* GetListOfID();
-  SMESH::SMESH_Mesh_ptr GetMesh();
-
-  // Inherited from SMESH_IDSource interface
-  virtual SMESH::long_array* GetIDs();
-
-  // Internal C++ interface
-  int GetLocalID() const { return myLocalID; }
-  SMESH_Mesh_i* GetMeshServant() const { return myMeshServant; }
-  SMESH_Group* GetSmeshGroup() const;
-  SMESHDS_GroupBase* GetGroupDS() const;
-
-private:
-  SMESH_Mesh_i* myMeshServant;
-  int myLocalID;
-};
-
-// ======
-// Group
-// ======
-
-class SMESH_Group_i:
-  public virtual POA_SMESH::SMESH_Group,
-  public SMESH_GroupBase_i
-{
- public:
-  SMESH_Group_i( PortableServer::POA_ptr thePOA, SMESH_Mesh_i* theMeshServant, const int theLocalID );
-
-  // CORBA interface implementation
-  void Clear();
-  CORBA::Long Add( const SMESH::long_array& theIDs );
-  CORBA::Long Remove( const SMESH::long_array& theIDs );
-
-  CORBA::Long AddByPredicate( SMESH::Predicate_ptr thePredicate );
-  CORBA::Long RemoveByPredicate( SMESH::Predicate_ptr thePredicate );
-};
-
-// =========================
-// Group linked to geometry
-// =========================
-
-class SMESH_GroupOnGeom_i:
-  public virtual POA_SMESH::SMESH_GroupOnGeom,
-  public SMESH_GroupBase_i
-{
- public:
-  SMESH_GroupOnGeom_i( PortableServer::POA_ptr thePOA, SMESH_Mesh_i* theMeshServant, const int theLocalID );
-
-  // CORBA interface implementation
-  GEOM::GEOM_Object_ptr GetShape();
-};
-#endif
diff --git a/src/SMESH_I/SMESH_Hypothesis_i.cxx b/src/SMESH_I/SMESH_Hypothesis_i.cxx
deleted file mode 100644 (file)
index d5cdce9..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Hypothesis_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include <iostream>
-#include <sstream>
-#include "SMESH_Hypothesis_i.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  SMESH_Hypothesis_i::SMESH_Hypothesis_i
- * 
- *  Constructor
- */
-//=============================================================================
-
-SMESH_Hypothesis_i::SMESH_Hypothesis_i( PortableServer::POA_ptr thePOA )
-     : SALOME::GenericObj_i( thePOA )
-{
-  MESSAGE( "SMESH_Hypothesis_i::SMESH_Hypothesis_i / Début" );
-  myBaseImpl = 0;
-  // _CS_gbo This instruction fails
-  // thePOA->activate_object( this );
-  // _CS_gbo I keep the POA reference to activate the object in the future.
-  myPOA = thePOA;
-  
-  MESSAGE( "SMESH_Hypothesis_i::SMESH_Hypothesis_i / Fin" );
-};
-
-//=============================================================================
-/*!
- *  SMESH_Hypothesis_i::Activate()
- *
- *  Activation of the object
- */
-//=============================================================================
-void SMESH_Hypothesis_i::Activate() {
-  myPOA->activate_object( this );
-}
-
-//=============================================================================
-/*!
- *  SMESH_Hypothesis_i::~SMESH_Hypothesis_i
- *
- *  Destructor
- */
-//=============================================================================
-
-SMESH_Hypothesis_i::~SMESH_Hypothesis_i()
-{
-  MESSAGE( "SMESH_Hypothesis_i::~SMESH_Hypothesis_i" );
-  if ( myBaseImpl )
-    delete myBaseImpl;
-};
-
-//=============================================================================
-/*!
- *  SMESH_Hypothesis_i::GetName
- *
- *  Get type name of hypothesis
- */
-//=============================================================================
-
-char* SMESH_Hypothesis_i::GetName()
-{
-  MESSAGE( "SMESH_Hypothesis_i::GetName" );
-  return CORBA::string_dup( myBaseImpl->GetName() );
-};
-
-//=============================================================================
-/*!
- *  SMESH_Hypothesis_i::GetLibName
- *
- *  Get plugin library name of hypothesis (required by persistency mechanism)
- */
-//=============================================================================
-
-char* SMESH_Hypothesis_i::GetLibName()
-{
-  MESSAGE( "SMESH_Hypothesis_i::GetLibName" );
-  return CORBA::string_dup( myBaseImpl->GetLibName() );
-};
-
-//=============================================================================
-/*!
- *  SMESH_Hypothesis_i::SetLibName
- *
- *  Set plugin library name of hypothesis (required by persistency mechanism)
- */
-//=============================================================================
-
-void SMESH_Hypothesis_i::SetLibName(const char* theLibName)
-{
-  MESSAGE( "SMESH_Hypothesis_i::SetLibName" );
-  myBaseImpl->SetLibName( theLibName );
-};
-
-//=============================================================================
-/*!
- *  SMESH_Hypothesis_i::GetId
- *
- *  Get unique id of hypothesis
- */
-//=============================================================================
-
-CORBA::Long SMESH_Hypothesis_i::GetId()
-{
-  MESSAGE( "SMESH_Hypothesis_i::GetId" );
-  return myBaseImpl->GetID();
-}
-
-//=============================================================================
-/*!
- *  SMESH_Hypothesis_i::GetImpl
- *
- *  Get implementation
- */
-//=============================================================================
-
-::SMESH_Hypothesis* SMESH_Hypothesis_i::GetImpl()
-{
-  MESSAGE( "SMESH_Hypothesis_i::GetImpl" );
-  return myBaseImpl;
-}
-
-//=============================================================================
-/*!
- *  SMESH_Hypothesis_i::SaveTo
- *
- *  Persistence: Dumps parameters to the string stream
- */
-//=============================================================================
-
-char* SMESH_Hypothesis_i::SaveTo()
-{
-  MESSAGE( "SMESH_Hypothesis_i::SaveTo" );
-  std::ostringstream os;
-  myBaseImpl->SaveTo( os );
-  return CORBA::string_dup( os.str().c_str() );
-}
-
-//=============================================================================
-/*!
-*  SMESH_Hypothesis_i::LoadFrom
-*
-*  Persistence: Restores parameters from string
-*/
-//=============================================================================
-
-void SMESH_Hypothesis_i::LoadFrom( const char* theStream )
-{
-  MESSAGE( "SMESH_Hypothesis_i::LoadFrom" );
-  std::istringstream is( theStream );
-  myBaseImpl->LoadFrom( is );
-}
diff --git a/src/SMESH_I/SMESH_Hypothesis_i.hxx b/src/SMESH_I/SMESH_Hypothesis_i.hxx
deleted file mode 100644 (file)
index df89d82..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Hypothesis_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_HYPOTHESIS_I_HXX_
-#define _SMESH_HYPOTHESIS_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-
-#include "SMESH_Hypothesis.hxx"
-#include "SALOME_GenericObj_i.hh"
-
-#include "SMESH_Gen.hxx"
-
-// ======================================================
-// Generic hypothesis
-// ======================================================
-class SMESH_Hypothesis_i:
-  public virtual POA_SMESH::SMESH_Hypothesis,
-  public virtual SALOME::GenericObj_i
-{
-public:
-  // Constructor : placed in protected section to prohibit creation of generic class instance
-  SMESH_Hypothesis_i( PortableServer::POA_ptr thePOA );
-
-public:
-  // Destructor
-  virtual ~SMESH_Hypothesis_i();
-
-  // Get type name of hypothesis
-  char* GetName();
-
-  // Get plugin library name of hypothesis
-  char* GetLibName();
-
-  // Set plugin library name of hypothesis
-  void SetLibName( const char* theLibName );
-
-  // Get unique id of hypothesis
-  CORBA::Long GetId();
-
-  // Get implementation
-  ::SMESH_Hypothesis* GetImpl();
-  
-  // _CS_gbo_ Activate the object using the POA
-  void Activate();
-
-  // Persistence
-  virtual char* SaveTo();
-  virtual void  LoadFrom( const char* theStream );
-  
-protected:
-  ::SMESH_Hypothesis* myBaseImpl;    // base hypothesis implementation
-
-  // _CS_gbo_070505 To keep the reference and delayed the activation
-  // in the methode Activate().
-  PortableServer::POA_ptr myPOA;
-};
-
-// ======================================================
-// Generic hypothesis creator
-// ======================================================
-class GenericHypothesisCreator_i
-{
-public:
-  // Create a hypothesis
-  virtual SMESH_Hypothesis_i* Create(PortableServer::POA_ptr thePOA,
-                                     int                     theStudyId,
-                                     ::SMESH_Gen*            theGenImpl) = 0;
-};
-
-//=============================================================================
-//
-// Specific Hypothesis Creators are generated with a template which inherits a
-// generic hypothesis creator. Each creator returns an hypothesis of the type
-// given in the template. 
-//
-//=============================================================================
-template <class T> class HypothesisCreator_i: public GenericHypothesisCreator_i
-{
-public:
-  virtual SMESH_Hypothesis_i* Create (PortableServer::POA_ptr thePOA,
-                                      int                     theStudyId,
-                                      ::SMESH_Gen*            theGenImpl) 
-  {
-    return new T (thePOA, theStudyId, theGenImpl);
-  };
-};
-
-#endif
diff --git a/src/SMESH_I/SMESH_MEDFamily_i.cxx b/src/SMESH_I/SMESH_MEDFamily_i.cxx
deleted file mode 100644 (file)
index 6e25089..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_MEDFamily_i.cxx
-//  Module : SMESH
-
-using namespace std;
-#include "SMESH_MEDFamily_i.hxx"
-#include "utilities.h"
-#include "Utils_CorbaException.hxx"
-
-//=============================================================================
-/*!
- * Default constructor
- */
-//=============================================================================
-SMESH_MEDFamily_i::SMESH_MEDFamily_i()
-{
-  BEGIN_OF("Default Constructor SMESH_MEDFamily_i");
-  END_OF("Default Constructor SMESH_MEDFamily_i");
-}
-//=============================================================================
-/*!
- * constructor par recopie
- */
-//=============================================================================
-SMESH_MEDFamily_i::SMESH_MEDFamily_i(const SMESH_MEDFamily_i & f): 
-  SMESH_MEDSupport_i(f._subMesh_i,f._name,f._description,f._entity),
-  _subMesh_i(f._subMesh_i),
-  _identifier(f._identifier),
-  _numberOfAttribute(f._numberOfAttribute),
-  _numberOfGroup(f._numberOfGroup), 
-  _attributeValue(f._attributeValue)
-{
-  BEGIN_OF("Copy Constructor SMESH_MEDFamily_i");
-  _attributeDescription=new string[_numberOfAttribute];
-  for (int i=0;i<_numberOfAttribute;i++) {
-    _attributeDescription[i]=f._attributeDescription[i];
-  };
-  _groupName=new string[_numberOfGroup];
-  for (int i=0;i<_numberOfAttribute;i++) {
-    _groupName[i]=f._groupName[i];
-  };
-  END_OF("Copy Constructor SMESH_MEDFamily_i");
-}
-//=============================================================================
-/*!
- * Destructor
- */
-//=============================================================================
-SMESH_MEDFamily_i::~SMESH_MEDFamily_i()
-{
-}
-//=============================================================================
-/*!
- * Constructor
- */
-//=============================================================================
-SMESH_MEDFamily_i::SMESH_MEDFamily_i(int identifier, SMESH_subMesh_i* sm,
-                                    string name, string description, SALOME_MED::medEntityMesh entity): 
-  SMESH_MEDSupport_i( sm, name, description, entity ),
-  
-  _subMesh_i(sm),
-  _identifier(identifier),
-  _numberOfAttribute(0),
-  _attributeIdentifier((int*)NULL),
-  _attributeValue((int*)NULL), 
-  _attributeDescription((string*)NULL),
-  _numberOfGroup(0), 
-  _groupName((string*)NULL)
-{
-  BEGIN_OF("Constructor SMESH_MEDFamily_i");
-  END_OF("Constructor SMESH_MEDFamily_i");
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for Family's Identifier
- */
-//=============================================================================
-
-CORBA::Long SMESH_MEDFamily_i::getIdentifier()      
-throw (SALOME::SALOME_Exception)
-{
-  if (_subMeshDS==NULL)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Family",\
-                                SALOME::INTERNAL_ERROR); 
-  return _identifier;
-  
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for number of attributes
- */
-//=============================================================================
-CORBA::Long SMESH_MEDFamily_i::getNumberOfAttributes() 
-throw (SALOME::SALOME_Exception)
-{
-  if (_subMeshDS==NULL)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Family",\
-                                SALOME::INTERNAL_ERROR);
-  return _numberOfAttribute;
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for attributes identifiers
- */
-//=============================================================================
-SALOME_MED::long_array*  SMESH_MEDFamily_i::getAttributesIdentifiers() 
-throw (SALOME::SALOME_Exception)
-{
-  if (_subMeshDS==NULL)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Family",\
-                                SALOME::INTERNAL_ERROR);
-  if (_numberOfAttribute == 0)
-    {
-      MESSAGE("Les familles SMESH n ont pas d attribut");
-      THROW_SALOME_CORBA_EXCEPTION("No attributes"\
-                                  ,SALOME::BAD_PARAM);
-    };
-  
-  SALOME_MED::long_array_var myseq= new SALOME_MED::long_array;
-  myseq->length(_numberOfAttribute);
-  for (int i=0;i<_numberOfAttribute;i++)
-    {
-      myseq[i]=_attributeIdentifier[i];
-    };
-  return myseq._retn();
-
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for attribute identifier I
- */
-//=============================================================================
-CORBA::Long SMESH_MEDFamily_i::getAttributeIdentifier(CORBA::Long i) 
-  throw (SALOME::SALOME_Exception)
-{    
-  if (_subMeshDS==NULL)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Family",\
-                                SALOME::INTERNAL_ERROR);
-  MESSAGE("Les familles SMESH n ont pas d attribut");
-  THROW_SALOME_CORBA_EXCEPTION("No attributes"\
-                              ,SALOME::BAD_PARAM);
-  if (_numberOfAttribute == 0)
-    {
-      MESSAGE("Les familles SMESH n ont pas d attribut");
-      THROW_SALOME_CORBA_EXCEPTION("No attributes"\
-                                  ,SALOME::BAD_PARAM);
-    };
-  ASSERT (i <= _numberOfAttribute);
-  return _attributeIdentifier[i];
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for attributes values
- */
-//=============================================================================
-SALOME_MED::long_array*  SMESH_MEDFamily_i::getAttributesValues() 
-  throw (SALOME::SALOME_Exception)
-{
-  if (_subMeshDS==NULL)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Family",\
-                                SALOME::INTERNAL_ERROR);
-
-  if (_numberOfAttribute == 0)
-    {
-      MESSAGE("Les familles SMESH n ont pas d attribut");
-      THROW_SALOME_CORBA_EXCEPTION("No attributes"\
-                                  ,SALOME::BAD_PARAM);
-    };
-
-  SALOME_MED::long_array_var myseq= new SALOME_MED::long_array;
-  myseq->length(_numberOfAttribute);
-  for (int i=0;i<_numberOfAttribute;i++)
-    {
-      myseq[i]=_attributeValue[i];
-    };
-  return myseq._retn();
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for attribute value I
- */
-//=============================================================================
-CORBA::Long  SMESH_MEDFamily_i::getAttributeValue(CORBA::Long i) 
-  throw (SALOME::SALOME_Exception)
-{   
-  if (_subMeshDS==NULL)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Family",\
-                                SALOME::INTERNAL_ERROR);
-  if (_numberOfAttribute == 0)
-    {
-      MESSAGE("Les familles SMESH n ont pas d attribut");
-      THROW_SALOME_CORBA_EXCEPTION("No attributes"\
-                                  ,SALOME::BAD_PARAM);
-    }
-
-  ASSERT (i <= _numberOfAttribute);
-  return _attributeValue[i];
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for attributes desriptions
- */
-//=============================================================================
-SALOME_MED::string_array * SMESH_MEDFamily_i::getAttributesDescriptions() 
-  throw (SALOME::SALOME_Exception)
-{
-  if (_subMeshDS==NULL)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Family",\
-                                SALOME::INTERNAL_ERROR);
-  if (_numberOfAttribute == 0)
-    {
-      MESSAGE("Les familles SMESH n ont pas d attribut");
-      THROW_SALOME_CORBA_EXCEPTION("No attributes"\
-                                  ,SALOME::BAD_PARAM);
-    }
-  SALOME_MED::string_array_var myseq = new SALOME_MED::string_array;
-  for (int i=0;i<_numberOfAttribute;i++)
-    {
-      myseq[i]=CORBA::string_dup(_attributeDescription[i].c_str());
-    }
-  return myseq._retn();
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for attribute description i
- */
-//=============================================================================
-char *  SMESH_MEDFamily_i::getAttributeDescription( CORBA::Long i) 
-  throw (SALOME::SALOME_Exception)
-{   
-  if (_subMeshDS==NULL)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Family",\
-                                SALOME::INTERNAL_ERROR);
-  if (_numberOfAttribute == 0)
-    {
-      MESSAGE("Les familles SMESH n ont pas d attribut");
-      THROW_SALOME_CORBA_EXCEPTION("No attributes"\
-                                  ,SALOME::BAD_PARAM);
-    }
-  ASSERT (i <= _numberOfAttribute);
-  return CORBA::string_dup(_attributeDescription[i].c_str());
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for the number of groups
- */
-//=============================================================================
-CORBA::Long SMESH_MEDFamily_i::getNumberOfGroups()
-    throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!! NOT YET IMPLEMENTED !!!!");
-  THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
-  return 0;
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for the name of the group i
- */
-//=============================================================================
-char * SMESH_MEDFamily_i::getGroupName( CORBA::Long i)
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!! NOT YET IMPLEMENTED !!!!");
-  THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
-  return NULL;
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for all the groups name
- */
-//=============================================================================
-SALOME_MED::string_array* SMESH_MEDFamily_i::getGroupsNames()
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!! NOT YET IMPLEMENTED !!!!");
-  THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
-  return NULL;
-}
diff --git a/src/SMESH_I/SMESH_MEDFamily_i.hxx b/src/SMESH_I/SMESH_MEDFamily_i.hxx
deleted file mode 100644 (file)
index eeeef51..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_MEDFamily_i.hxx
-//  Module : SMESH
-
-#ifndef SMESH_MED_FAMILY_I_HXX_
-#define SMESH_MED_FAMILY_I_HXX_
-
-#include "SMESH_MEDSupport_i.hxx"
-
-#include<string>
-
-class SMESH_MEDFamily_i:
-  public virtual POA_SALOME_MED::FAMILY,
-  public virtual SMESH_MEDSupport_i
-{
-protected :
-  SMESH_MEDFamily_i();
-  ~SMESH_MEDFamily_i();
-  
-  ::SMESH_subMesh_i*      _subMesh_i;
-  
-  // Values
-  int       _identifier;
-  int       _numberOfAttribute;
-  int    *  _attributeIdentifier;
-  int    *  _attributeValue;
-  string *  _attributeDescription;
-  int       _numberOfGroup ;
-  string *  _groupName ;
-  
-
-public :
-  
-  // Constructors and associated internal methods
-  SMESH_MEDFamily_i(int identifier, SMESH_subMesh_i* sm,
-                   string name, string description, SALOME_MED::medEntityMesh entity );
-  SMESH_MEDFamily_i(const SMESH_MEDFamily_i & f);
-  
-  // IDL Methods
-  void setProtocol(SALOME::TypeOfCommunication typ) {}
-  void release() {}
-  SALOME::SenderInt_ptr getSenderForNumber(long int) {return SALOME::SenderInt::_nil();}
-  SALOME::SenderInt_ptr getSenderForNumberIndex() {return SALOME::SenderInt::_nil();}
-  
-  CORBA::Long            getIdentifier()      
-    throw (SALOME::SALOME_Exception);
-  CORBA::Long            getNumberOfAttributes() 
-    throw (SALOME::SALOME_Exception);
-  SALOME_MED::long_array*   getAttributesIdentifiers() 
-    throw (SALOME::SALOME_Exception);
-  CORBA::Long            getAttributeIdentifier(CORBA::Long i) 
-    throw (SALOME::SALOME_Exception);
-  SALOME_MED::long_array*   getAttributesValues() 
-    throw (SALOME::SALOME_Exception);
-  CORBA::Long            getAttributeValue(CORBA::Long i) 
-    throw (SALOME::SALOME_Exception);
-  SALOME_MED::string_array* getAttributesDescriptions() 
-    throw (SALOME::SALOME_Exception);
-  char*                  getAttributeDescription( CORBA::Long i) 
-    throw (SALOME::SALOME_Exception);
-  CORBA::Long               getNumberOfGroups()
-    throw (SALOME::SALOME_Exception);
-  char *                    getGroupName( CORBA::Long i)
-    throw (SALOME::SALOME_Exception);
-  SALOME_MED::string_array* getGroupsNames()
-    throw (SALOME::SALOME_Exception);  
-};
-#endif /* MED_FAMILY_I_HXX_ */
diff --git a/src/SMESH_I/SMESH_MEDMesh_i.cxx b/src/SMESH_I/SMESH_MEDMesh_i.cxx
deleted file mode 100644 (file)
index 3f1c017..0000000
+++ /dev/null
@@ -1,1206 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_MEDMesh_i.cxx
-//  Module : SMESH
-
-#include "SMESH_MEDMesh_i.hxx"
-#include "SMESH_Mesh_i.hxx"
-
-#include "SMESHDS_Mesh.hxx"
-#include "SMESHDS_SubMesh.hxx"
-
-#include <TopExp.hxx>
-#include <TopExp_Explorer.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Iterator.hxx>
-#include <TopoDS_Compound.hxx>
-#include <TopoDS_CompSolid.hxx>
-#include <TopoDS_Solid.hxx>
-#include <TopoDS_Shell.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Wire.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <TopoDS_Shape.hxx>
-#include <TopTools_MapOfShape.hxx>
-
-#include "utilities.h"
-#include "Utils_CorbaException.hxx"
-
-#include "SMESH_MEDSupport_i.hxx"
-#include "SMESH_MEDFamily_i.hxx"
-
-# include "Utils_ORB_INIT.hxx"
-# include "Utils_SINGLETON.hxx"
-# include "Utils_ExceptHandlers.hxx"
-
-extern "C"
-{
-#include <stdio.h>
-}
-
-using namespace std;
-
-//=============================================================================
-/*!
- * Default constructor
- */
-//=============================================================================
-// PN Est-ce un const ?
-SMESH_MEDMesh_i::SMESH_MEDMesh_i()
-{
-       BEGIN_OF("Default Constructor SMESH_MEDMesh_i");
-       END_OF("Default Constructor SMESH_MEDMesh_i");
-}
-
-//=============================================================================
-/*!
- * Destructor
- */
-//=============================================================================
-SMESH_MEDMesh_i::~SMESH_MEDMesh_i()
-{
-}
-
-//=============================================================================
-/*!
- * Constructor
- */
-//=============================================================================
-SMESH_MEDMesh_i::SMESH_MEDMesh_i(::SMESH_Mesh_i * m_i):_meshId(""),
-                                                      _compte(false),
-                                                      _creeFamily(false),
-                                                      _famIdent(0),
-                                                      _indexElts(0),
-                                                      _indexEnts(0)
-{
-       BEGIN_OF("Constructor SMESH_MEDMesh_i");
-
-       _mesh_i = m_i;
-       _meshDS = _mesh_i->GetImpl().GetMeshDS();
-
-       END_OF("Constructor SMESH_MEDMesh_i");
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Name
- */
-//=============================================================================
-char *SMESH_MEDMesh_i::getName() throw(SALOME::SALOME_Exception)
-{
-       if (_meshDS == NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-
-       try
-       {
-               // A COMPLETER PAR LE NOM DU MAILLAGE
-               //return CORBA::string_dup(_mesh_i->getName().c_str());
-               return CORBA::string_dup("toto");
-       }
-       catch(...)
-       {
-               MESSAGE("Exception en accedant au nom");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
-                       SALOME::INTERNAL_ERROR);
-       }
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for corbaindex cuisine interne 
- */
-//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getCorbaIndex()throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Non Implemente");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Space Dimension
- */
-//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getSpaceDimension()throw(SALOME::SALOME_Exception)
-{
-       // PN : Il semblerait que la dimension soit fixee a 3
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       return 3;
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Mesh Dimension
- */
-//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getMeshDimension()throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       // PN : Il semblerait que la dimension soit fixee a 3
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       return 3;
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for the boolean _isAGrid
- */
-//=============================================================================
-CORBA::Boolean SMESH_MEDMesh_i::getIsAGrid() throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!!!! NOT YET IMPLEMENTED !!!!!!");
-
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-
-  return false;
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for the connectivities, to see if they exist
- */
-//=============================================================================
-CORBA::Boolean
-SMESH_MEDMesh_i::existConnectivity(SALOME_MED::medConnectivity connectivityType,
-                                  SALOME_MED::medEntityMesh entity)
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!!!! IMPLEMENTED BUT ONLY PARTIALLY !!!!!!");
-
-
-  return false;
-
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for Coordinate
- */
-//=============================================================================
-CORBA::Double SMESH_MEDMesh_i::getCoordinate(CORBA::Long Number, CORBA::Long Axis)
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!!!! NOT YET IMPLEMENTED !!!!");
-
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-
-  return 0.0;
-}
-//=============================================================================
-/*!
- * CORBA: Accessor for Coordinates System
- */
-//=============================================================================
-char *SMESH_MEDMesh_i::getCoordinatesSystem() throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       // PN : En dur. Non encore prevu
-       try
-       {
-               string systcoo = "CARTESIEN";
-               return CORBA::string_dup(systcoo.c_str());
-       }
-       catch(...)
-       {
-               MESSAGE("Exception en accedant au maillage");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
-                       SALOME::INTERNAL_ERROR);
-       }
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Coordinates
- */
-//=============================================================================
-SALOME_MED::double_array * SMESH_MEDMesh_i::getCoordinates(
-       SALOME_MED::medModeSwitch typeSwitch) throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       SALOME_MED::double_array_var myseq = new SALOME_MED::double_array;
-       try
-       {
-               // PN  : En dur
-               int spaceDimension = 3;
-               int nbNodes = _meshDS->NbNodes();
-               SCRUTE(nbNodes);
-               myseq->length(nbNodes * spaceDimension);
-               int i = 0;
-
-               SMDS_NodeIteratorPtr itNodes=_meshDS->nodesIterator();
-               while(itNodes->more())
-               {
-                       const SMDS_MeshNode* node = itNodes->next();
-
-                       if (typeSwitch == SALOME_MED::MED_FULL_INTERLACE)
-                       {
-                               myseq[i * 3] = node->X();
-                               myseq[i * 3 + 1] = node->Y();
-                               myseq[i * 3 + 2] = node->Z();
-                               SCRUTE(myseq[i * 3]);
-                               SCRUTE(myseq[i * 3 + 1]);
-                               SCRUTE(myseq[i * 3 + 2]);
-                       }
-                       else
-                       {
-                               ASSERT(typeSwitch == SALOME_MED::MED_NO_INTERLACE);
-                               myseq[i] = node->X();
-                               myseq[i + nbNodes] = node->Y();
-                               myseq[i + (nbNodes * 2)] = node->Z();
-                               SCRUTE(myseq[i]);
-                               SCRUTE(myseq[i + nbNodes]);
-                               SCRUTE(myseq[i + (nbNodes * 2)]);
-                       }
-                       i++;
-               }
-       }
-       catch(...)
-       {
-               MESSAGE("Exception en accedant aux coordonnees");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
-                       SALOME::INTERNAL_ERROR);
-       }
-       return myseq._retn();
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Coordinates Names
- */
-//=============================================================================
-SALOME_MED::string_array *
-       SMESH_MEDMesh_i::getCoordinatesNames()throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       SALOME_MED::string_array_var myseq = new SALOME_MED::string_array;
-       try
-       {
-               // PN : en dur
-               int spaceDimension = 3;
-               myseq->length(spaceDimension);
-               myseq[0] = CORBA::string_dup("x");
-               myseq[1] = CORBA::string_dup("y");
-               myseq[2] = CORBA::string_dup("z");
-       }
-       catch(...)
-       {
-               MESSAGE("Exception en accedant aux noms des coordonnees");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
-                       SALOME::INTERNAL_ERROR);
-       }
-       return myseq._retn();
-
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Coordinates Units
- */
-//=============================================================================
-SALOME_MED::string_array *
-       SMESH_MEDMesh_i::getCoordinatesUnits()throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       SALOME_MED::string_array_var myseq = new SALOME_MED::string_array;
-       try
-       {
-               // PN : en dur
-               int spaceDimension = 3;
-               myseq->length(spaceDimension);
-               myseq[0] = CORBA::string_dup("m");
-               myseq[1] = CORBA::string_dup("m");
-               myseq[2] = CORBA::string_dup("m");
-       }
-       catch(...)
-       {
-               MESSAGE("Exception en accedant aux unites des coordonnees");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
-                       SALOME::INTERNAL_ERROR);
-       }
-       return myseq._retn();
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Number of Nodes
- */
-//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfNodes()throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       try
-       {
-               return _meshDS->NbNodes();
-       }
-       catch(...)
-       {
-               MESSAGE("Exception en accedant au nombre de noeuds");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
-                       SALOME::INTERNAL_ERROR);
-       }
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for number of Types
- */
-//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfTypes(SALOME_MED::medEntityMesh entity)
-throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       try
-       {
-               if (!_compte)
-                       calculeNbElts();
-               int retour = 0;
-               if (_mapNbTypes.find(entity) != _mapNbTypes.end())
-                       retour = _mapNbTypes[entity];
-               return retour;
-       }
-       catch(...)
-       {
-               MESSAGE("Exception en accedant au nombre de Types");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
-                       SALOME::INTERNAL_ERROR);
-       }
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for existing geometry element types 
- *       Not implemented for MED_ALL_ENTITIES
- */
-//=============================================================================
-SALOME_MED::medGeometryElement_array *
-       SMESH_MEDMesh_i::getTypes(SALOME_MED::medEntityMesh entity) throw(SALOME::
-       SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       if (entity == SALOME_MED::MED_ALL_ENTITIES)
-               THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ENTITIES",
-                       SALOME::BAD_PARAM);
-       if (!_compte)
-               calculeNbElts();
-       SALOME_MED::medGeometryElement_array_var myseq =
-               new SALOME_MED::medGeometryElement_array;
-       try
-       {
-               if (_mapNbTypes.find(entity) == _mapNbTypes.end())
-                       THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh",
-                               SALOME::BAD_PARAM);
-               int nbTypes = _mapNbTypes[entity];
-
-               myseq->length(nbTypes);
-
-               if (_mapIndToVectTypes.find(entity) == _mapIndToVectTypes.end())
-                       THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh",
-                               SALOME::INTERNAL_ERROR);
-
-               int index = _mapIndToVectTypes[entity];
-               ASSERT(_TypesId[index].size() != 0);
-               int i = 0;
-               vector < SALOME_MED::medGeometryElement >::iterator it;
-               for (it = _TypesId[index].begin(); it != _TypesId[index].end(); it++)
-               {
-                       myseq[i++] = *it;
-               };
-       }
-       catch(...)
-       {
-               MESSAGE("Exception en accedant aux differents types");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
-                       SALOME::INTERNAL_ERROR);
-       }
-       return myseq._retn();
-}
-
-//=============================================================================
-/*!
- * CORBA: Returns number of elements of type medGeometryElement
- *       Not implemented for MED_ALL_ELEMENTS 
- *       implemented for MED_ALL_ENTITIES
- *
- * Dans cette implementation, il n est pas prevu de tenir compte du entity
- * qui ne doit pas pouvoir avoir deux valeurs differentes pour un geomElement 
- */
-//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfElements(SALOME_MED::
-       medEntityMesh entity,
-       SALOME_MED::medGeometryElement geomElement) throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       if (geomElement == SALOME_MED::MED_ALL_ELEMENTS)
-               THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ELEMENTS",
-                       SALOME::BAD_PARAM);
-       if (!_compte)
-               calculeNbElts();
-
-       try
-       {
-               int retour = 0;
-               if (_mapIndToSeqElts.find(geomElement) != _mapIndToSeqElts.end())
-               {
-                       int index = _mapIndToSeqElts[geomElement];
-
-                       retour = _seq_elemId[index]->length();
-               }
-               return retour;
-       }
-       catch(...)
-       {
-               MESSAGE("Exception en accedant au nombre d élements");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
-                       SALOME::INTERNAL_ERROR);
-       }
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for connectivities
- */
-//=============================================================================
-SALOME_MED::long_array *
-SMESH_MEDMesh_i::getConnectivity(SALOME_MED::medModeSwitch typeSwitch,
-                                SALOME_MED::medConnectivity mode,
-                                SALOME_MED::medEntityMesh entity,
-                                SALOME_MED::medGeometryElement geomElement)
-  throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       if (mode != SALOME_MED::MED_NODAL)
-               THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
-       if (typeSwitch == SALOME_MED::MED_NO_INTERLACE)
-               THROW_SALOME_CORBA_EXCEPTION("Not Yet Implemented", SALOME::BAD_PARAM);
-       if (!_compte)
-               calculeNbElts();
-
-       // Faut-il renvoyer un pointeur vide ???
-       if (_mapIndToSeqElts.find(geomElement) != _mapIndToSeqElts.end())
-               THROW_SALOME_CORBA_EXCEPTION("No Such Element in the mesh",
-                       SALOME::BAD_PARAM);
-
-       int index = _mapIndToSeqElts[geomElement];
-
-       return _seq_elemId[index]._retn();
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for connectivities
- */
-//=============================================================================
-SALOME_MED::long_array *
-SMESH_MEDMesh_i::getConnectivityIndex(SALOME_MED::medConnectivity mode,
-                                     SALOME_MED::medEntityMesh entity)
-  throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Pas Implemente dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: Find an element corresponding to the given connectivity
- */
-//=============================================================================
-CORBA::Long
-SMESH_MEDMesh_i::getElementNumber(SALOME_MED::medConnectivity mode,
-                                 SALOME_MED::medEntityMesh entity,
-                                 SALOME_MED::medGeometryElement type,
-                                 const SALOME_MED::long_array & connectivity)
-  throw(SALOME::SALOME_Exception)
-{
-       const char *LOC = "getElementNumber ";
-       MESSAGE(LOC << "Pas Implemente dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return -1;
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Ascendant connectivities
- * not implemented for MED_ALL_ENTITIES and MED_MAILLE
- */
-//=============================================================================
-SALOME_MED::long_array *
-       SMESH_MEDMesh_i::getReverseConnectivity(SALOME_MED::
-       medConnectivity mode) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Pas Implemente dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for connectivities
- */
-//=============================================================================
-SALOME_MED::long_array *
-       SMESH_MEDMesh_i::getReverseConnectivityIndex(SALOME_MED::
-       medConnectivity mode) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Pas Implemente dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: Returns number of families within the mesh
- */
-//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfFamilies(SALOME_MED::
-       medEntityMesh entity) throw(SALOME::SALOME_Exception)
-{
-       if (_creeFamily == false)
-               createFamilies();
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       return _families.size();
-}
-
-//=============================================================================
-/*!
- * CORBA: Returns number of groups within the mesh
- */
-//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfGroups(SALOME_MED::medEntityMesh entity)
-throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       MESSAGE(" Pas d implementation des groupes dans SMESH");
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: Returns references for families within the mesh
- */
-//=============================================================================
-SALOME_MED::Family_array *
-       SMESH_MEDMesh_i::getFamilies(SALOME_MED::
-       medEntityMesh entity) throw(SALOME::SALOME_Exception)
-{
-       if (_creeFamily == false)
-               createFamilies();
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       SALOME_MED::Family_array_var myseq = new SALOME_MED::Family_array;
-       int nbfam = _families.size();
-       myseq->length(nbfam);
-       int i = 0;
-       vector < SALOME_MED::FAMILY_ptr >::iterator it;
-       for (it = _families.begin(); it != _families.end(); it++)
-       {
-               myseq[i++] = *it;
-       };
-       return myseq._retn();
-}
-
-//=============================================================================
-/*!
- * CORBA: Returns references for family i within the mesh
- */
-//=============================================================================
-SALOME_MED::FAMILY_ptr SMESH_MEDMesh_i::getFamily(SALOME_MED::
-       medEntityMesh entity, CORBA::Long i) throw(SALOME::SALOME_Exception)
-{
-       if (_creeFamily == false)
-               createFamilies();
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-
-       SCRUTE(_families[i]->getName());
-       MESSAGE(" SMESH_MEDMesh_i::getFamily " << i) return _families[i];
-}
-
-//=============================================================================
-/*!
- * CORBA: Returns references for groups within the mesh
- */
-//=============================================================================
-SALOME_MED::Group_array *
-       SMESH_MEDMesh_i::getGroups(SALOME_MED::medEntityMesh entity) throw(SALOME::
-       SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       MESSAGE(" Pas d implementation des groupes dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("No group implementation", SALOME::BAD_PARAM);
-}
-
-//=============================================================================
-/*!
- * CORBA: Returns references for group i within the mesh
- */
-//=============================================================================
-SALOME_MED::GROUP_ptr SMESH_MEDMesh_i::getGroup(SALOME_MED::
-       medEntityMesh entity, CORBA::Long i) throw(SALOME::SALOME_Exception)
-{
-       if (_mesh_i == 0)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       MESSAGE(" Pas d implementation des groupes dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("No group implementation", SALOME::BAD_PARAM);
-}
-//=============================================================================
-/*!
- * CORBA: Returns references for the global numbering index
- */
-//=============================================================================
-SALOME_MED::long_array*
-SMESH_MEDMesh_i::getGlobalNumberingIndex(SALOME_MED::medEntityMesh entity)
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
-
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-
-  return NULL;
-}
-//=============================================================================
-/*!
- * CORBA: Returns references for the support of boundary elements of type
- * entity
- */
-//=============================================================================
-SALOME_MED::SUPPORT_ptr
-SMESH_MEDMesh_i::getBoundaryElements(SALOME_MED::medEntityMesh entity)
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
-
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-
-  return NULL;
-}
-//=============================================================================
-/*!
- * CORBA: Returns references for the support of the skin of the support
- * mySupport3D
- */
-//=============================================================================
-SALOME_MED::SUPPORT_ptr
-SMESH_MEDMesh_i::getSkin(SALOME_MED::SUPPORT_ptr mySupport3D)
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
-
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-
-  return NULL;
-}
-//=============================================================================
-/*!
- * CORBA: 
- */
-//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getVolume(SALOME_MED::
-       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Pas Implemente dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: 
- */
-//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getArea(SALOME_MED::
-       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Pas Implemente dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: 
- */
-//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getLength(SALOME_MED::
-       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Pas Implemente dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: 
- */
-//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNormal(SALOME_MED::
-       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Pas Implemente dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: 
- */
-//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getBarycenter(SALOME_MED::
-       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Pas Implemente dans SMESH");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: 
- */
-//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNeighbourhood(SALOME_MED::
-       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Non Implemente");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * CORBA: add the Mesh in the StudyManager 
- * PN Pas Implemente
- */
-//=============================================================================
-void SMESH_MEDMesh_i::addInStudy(SALOMEDS::Study_ptr myStudy,
-       SALOME_MED::MESH_ptr myIor) throw(SALOME::SALOME_Exception)
-{
-       BEGIN_OF("MED_Mesh_i::addInStudy");
-       if (_meshId != "")
-       {
-               MESSAGE("Mesh already in Study");
-               THROW_SALOME_CORBA_EXCEPTION("Mesh already in Study",
-                       SALOME::BAD_PARAM);
-       };
-
-       /*
-        * SALOMEDS::StudyBuilder_var myBuilder = myStudy->NewBuilder();
-        * 
-        * // Create SComponent labelled 'MED' if it doesn't already exit
-        * SALOMEDS::SComponent_var medfather = myStudy->FindComponent("MED");
-        * if ( CORBA::is_nil(medfather) ) 
-        * {
-        * MESSAGE("Add Component MED");
-        * medfather = myBuilder->NewComponent("MED");
-        * //myBuilder->AddAttribute (medfather,SALOMEDS::Name,"MED");
-        * SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
-        * myBuilder->FindOrCreateAttribute(medfather, "AttributeName"));
-        * aName->SetValue("MED");
-        * 
-        * myBuilder->DefineComponentInstance(medfather,myIor);
-        * 
-        * } ;
-        * 
-        * MESSAGE("Add a mesh Object under MED");
-        * myBuilder->NewCommand();
-        * SALOMEDS::SObject_var newObj = myBuilder->NewObject(medfather);
-        * 
-        * ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
-        * ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
-        * CORBA::ORB_var &orb = init(0,0);
-        * string iorStr = orb->object_to_string(myIor);
-        * //myBuilder->AddAttribute(newObj,SALOMEDS::IOR,iorStr.c_str());
-        * SALOMEDS::AttributeIOR_var aIOR = SALOMEDS::AttributeIOR::_narrow(
-        * myBuilder->FindOrCreateAttribute(newObj, "AttributeIOR"));
-        * aIOR->SetValue(iorStr.c_str());
-        * 
-        * //myBuilder->AddAttribute(newObj,SALOMEDS::Name,_mesh_i->getName().c_str());
-        * SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
-        * myBuilder->FindOrCreateAttribute(newObj, "AttributeName"));
-        * aName->SetValue(_mesh_i->getName().c_str());
-        * 
-        * _meshId = newObj->GetID();
-        * myBuilder->CommitCommand();
-        * 
-        */
-       END_OF("Mesh_i::addInStudy(SALOMEDS::Study_ptr myStudy)");
-}
-
-//=============================================================================
-/*!
- * CORBA: write mesh in a med file
- */
-//=============================================================================
-void SMESH_MEDMesh_i::write(CORBA::Long i, const char *driverMeshName)
-throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Non Implemente");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-}
-
-//=============================================================================
-/*!
- * CORBA: read mesh in a med file
- */
-//=============================================================================
-void SMESH_MEDMesh_i::read(CORBA::Long i) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Non Implemente");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-}
-
-//=============================================================================
-/*!
- * CORBA : release driver
- */
-//=============================================================================
-void SMESH_MEDMesh_i::rmDriver(CORBA::Long i) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Non Implemente");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-}
-
-//=============================================================================
-/*!
- * CORBA : attach driver
- */
-//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::addDriver(SALOME_MED::medDriverTypes driverType,
-       const char *fileName, const char *meshName) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Non Implemente");
-       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-       return 0;
-}
-
-//=============================================================================
-/*!
- * Calcule le Nb d'elements par entite geometrique
- */
-//=============================================================================
-void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception)
-{
-       if (!_compte)
-       {
-               _compte = true;
-
-               _mapNbTypes[SALOME_MED::MED_NODE] = 1;
-               // On compte les aretes MED_SEG2 ou MED_SEG3
-               // On range les elements dans  les vecteurs correspondants 
-
-               _mapIndToSeqElts[SALOME_MED::MED_SEG2] = _indexElts++;
-               _mapIndToSeqElts[SALOME_MED::MED_SEG3] = _indexElts++;
-               _mapIndToVectTypes[SALOME_MED::MED_EDGE] = _indexEnts++;
-
-               int trouveSeg2 = 0;
-               int trouveSeg3 = 0;
-               SALOME_MED::medGeometryElement medElement;
-
-               SMDS_EdgeIteratorPtr itEdges=_meshDS->edgesIterator();
-               while(itEdges->more())
-               {
-                       const SMDS_MeshEdge* elem = itEdges->next();
-                       int nb_of_nodes = elem->NbNodes();
-
-                       switch (nb_of_nodes)
-                       {
-                       case 2:
-                       {
-                               medElement = SALOME_MED::MED_SEG2;
-                               if (trouveSeg2 == 0)
-                               {
-                                       trouveSeg2 = 1;
-                                       _TypesId[SALOME_MED::MED_EDGE].
-                                               push_back(SALOME_MED::MED_SEG2);
-                               }
-                               break;
-                       }
-                       case 3:
-                       {
-                               medElement = SALOME_MED::MED_SEG3;
-                               if (trouveSeg3 == 0)
-                               {
-                                       trouveSeg3 = 1;
-                                       _TypesId[SALOME_MED::MED_EDGE].
-                                               push_back(SALOME_MED::MED_SEG3);
-                               }
-                               break;
-                       }
-                       }
-                       int index = _mapIndToSeqElts[medElement];
-                       SCRUTE(index);
-                       // Traitement de l arete
-
-                       int longueur = _seq_elemId[index]->length();
-                       _seq_elemId[index]->length(longueur + nb_of_nodes);
-
-                       SMDS_NodeIteratorPtr itn=_meshDS->nodesIterator();
-
-                       for(int k=0; itn->more(); k++)
-                               _seq_elemId[index][longueur + k] = itn->next()->GetID()+1;
-               }
-
-               _mapNbTypes[SALOME_MED::MED_EDGE] = trouveSeg2 + trouveSeg3;
-
-               // On compte les faces MED_TRIA3, MED_HEXA8, MED_TRIA6
-               // On range les elements dans  les vecteurs correspondants 
-               int trouveTria3 = 0;
-               int trouveTria6 = 0;
-               int trouveQuad4 = 0;
-
-               _mapIndToSeqElts[SALOME_MED::MED_TRIA3] = _indexElts++;
-               _mapIndToSeqElts[SALOME_MED::MED_TRIA6] = _indexElts++;
-               _mapIndToSeqElts[SALOME_MED::MED_QUAD4] = _indexElts++;
-               _mapIndToVectTypes[SALOME_MED::MED_FACE] = _indexEnts++;
-
-               SMDS_FaceIteratorPtr itFaces=_meshDS->facesIterator();
-               while(itFaces->more())
-               {
-                       const SMDS_MeshFace * elem = itFaces->next();
-                       int nb_of_nodes = elem->NbNodes();
-
-                       switch (nb_of_nodes)
-                       {
-                       case 3:
-                       {
-                               medElement = SALOME_MED::MED_TRIA3;
-                               if (trouveTria3 == 0)
-                               {
-                                       trouveTria3 = 1;
-                                       _TypesId[SALOME_MED::MED_FACE].
-                                               push_back(SALOME_MED::MED_TRIA3);
-                               }
-                               break;
-                       }
-                       case 4:
-                       {
-                               medElement = SALOME_MED::MED_QUAD4;
-                               if (trouveQuad4 == 0)
-                               {
-                                       trouveQuad4 = 1;
-                                       _TypesId[SALOME_MED::MED_FACE].
-                                               push_back(SALOME_MED::MED_QUAD4);
-                               }
-                               break;
-                       }
-                       case 6:
-                       {
-                               medElement = SALOME_MED::MED_TRIA6;
-                               if (trouveTria6 == 0)
-                               {
-                                       trouveTria6 = 1;
-                                       _TypesId[SALOME_MED::MED_FACE].
-                                               push_back(SALOME_MED::MED_TRIA6);
-                               }
-                               break;
-                       }
-                       }
-                       int index = _mapIndToSeqElts[medElement];
-                       SCRUTE(index);
-
-                       // Traitement de la face
-                       // Attention La numérotation des noeuds Med commence a 1
-
-                       int longueur = _seq_elemId[index]->length();
-                       _seq_elemId[index]->length(longueur + nb_of_nodes);
-
-                       SMDS_NodeIteratorPtr itn=_meshDS->nodesIterator();
-
-                       for(int k=0; itn->more(); k++)
-                               _seq_elemId[index][longueur + k] = itn->next()->GetID()+1;
-               } //itFaces
-
-               _mapNbTypes[SALOME_MED::MED_FACE] =
-                       trouveTria3 + trouveTria6 + trouveQuad4;
-
-               _mapIndToSeqElts[SALOME_MED::MED_HEXA8] = _indexElts++;
-               _mapIndToVectTypes[SALOME_MED::MED_CELL] = _indexEnts++;
-               int index = _mapIndToSeqElts[medElement];
-
-               int trouveHexa8 = 0;
-
-               SMDS_VolumeIteratorPtr itVolumes=_meshDS->volumesIterator();
-               while(itVolumes->more())
-               {
-                       const SMDS_MeshVolume * elem = itVolumes->next();
-
-                       int nb_of_nodes = elem->NbNodes();
-                       medElement = SALOME_MED::MED_HEXA8;
-                       ASSERT(nb_of_nodes = 8);
-
-                       if (trouveHexa8 == 0)
-                       {
-                               trouveHexa8 = 1;
-                               _TypesId[SALOME_MED::MED_CELL].push_back(SALOME_MED::MED_HEXA8);
-                       };
-                       // Traitement de la maille
-                       int longueur = _seq_elemId[index]->length();
-                       _seq_elemId[index]->length(longueur + nb_of_nodes);
-
-                       SMDS_NodeIteratorPtr itn=_meshDS->nodesIterator();
-                       for(int k=0; itn->more(); k++)
-                               _seq_elemId[index][longueur + k] = itn->next()->GetID()+1;
-               }
-
-               _mapNbTypes[SALOME_MED::MED_CELL] = trouveHexa8;
-               _mapNbTypes[SALOME_MED::MED_ALL_ENTITIES]
-                       =
-                       trouveHexa8 + trouveTria3 + trouveTria6 + trouveQuad4 + trouveSeg2 +
-                       trouveSeg3;
-       }// fin du _compte
-};
-
-//=============================================================================
-/*!
- * Creation des familles
- */
-//=============================================================================
-void SMESH_MEDMesh_i::createFamilies() throw(SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-       string famDes = ("Je ne sais pas");
-       string famName0 = "Famille_";
-       string famName;
-       char numero[10];
-
-       if (_creeFamily == false)
-       {
-               _creeFamily = true;
-               SMESH_subMesh_i *subMeshServant;
-
-               map < int, SMESH_subMesh_i * >::iterator it;
-               for (it = _mesh_i->_mapSubMesh_i.begin();
-                       it != _mesh_i->_mapSubMesh_i.end(); it++)
-               {
-                       SMESH_subMesh_i *submesh_i = (*it).second;
-                       int famIdent = (*it).first;
-
-                       ASSERT(famIdent < 999999999);
-                       sprintf(numero, "%d\n", famIdent);
-                       famName = famName0 + numero;
-
-                       SMESH_MEDFamily_i *famservant =
-                               new SMESH_MEDFamily_i(famIdent, submesh_i,
-                               famName, famDes, SALOME_MED::MED_NODE);
-                       SALOME_MED::FAMILY_ptr famille =
-                               SALOME_MED::FAMILY::_narrow(famservant->
-                               POA_SALOME_MED::FAMILY::_this());
-                       _families.push_back(famille);
-               }
-       }
-};
-//=============================================================================
-/*!
- * Gives informations of the considered mesh.
- */
-//=============================================================================
-SALOME_MED::MESH::meshInfos * SMESH_MEDMesh_i::getMeshGlobal()
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
-
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-
-  return NULL;
-}
-//=============================================================================
-/*!
- * Gives informations on coordinates of the considered mesh.
- */
-//=============================================================================
-SALOME_MED::MESH::coordinateInfos * SMESH_MEDMesh_i::getCoordGlobal()
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
-
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-
-  return NULL;
-}
-//=============================================================================
-/*!
- * Gives informations on connectivities of the considered mesh for the entity
- * entity.
- */
-//=============================================================================
-SALOME_MED::MESH::connectivityInfos *
-SMESH_MEDMesh_i::getConnectGlobal(SALOME_MED::medEntityMesh entity)
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
-
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-
-  return NULL;
-}
-//=============================================================================
-/*!
- * Gives the type of the element number of entity entity
- */
-//=============================================================================
-SALOME_MED::medGeometryElement
-SMESH_MEDMesh_i::getElementType(SALOME_MED::medEntityMesh entity,
-                               CORBA::Long number)
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
-
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
-
-  return (SALOME_MED::medGeometryElement) 0;
-}
diff --git a/src/SMESH_I/SMESH_MEDSupport_i.cxx b/src/SMESH_I/SMESH_MEDSupport_i.cxx
deleted file mode 100644 (file)
index 7b5289e..0000000
+++ /dev/null
@@ -1,401 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_MEDSupport_i.cxx
-//  Module : SMESH
-
-using namespace std;
-#include "SMESH_MEDSupport_i.hxx"
-#include "utilities.h"
-#include "Utils_CorbaException.hxx"
-#include "Utils_ExceptHandlers.hxx"
-
-#include <TopoDS_Iterator.hxx>
-#include "SMESHDS_Mesh.hxx"
-
-#include "SMESH_subMesh.hxx"
-#include "SMESH_Mesh_i.hxx"
-#include "SMESH_subMesh_i.hxx"
-
-
-//=============================================================================
-/*!
- * Default constructor
- */
-//=============================================================================
-SMESH_MEDSupport_i::SMESH_MEDSupport_i()
-{
-       BEGIN_OF("Default Constructor SMESH_MEDSupport_i");
-       END_OF("Default Constructor SMESH_MEDSupport_i");
-}
-
-//=============================================================================
-/*!
- * Constructor
- */
-//=============================================================================
-SMESH_MEDSupport_i::SMESH_MEDSupport_i(SMESH_subMesh_i * sm, string name,
-       string description, SALOME_MED::medEntityMesh entity)
-       :_subMesh_i(sm), _name(name), _description(description), _entity(entity),
-       _seqNumber(false), _seqLength(0)
-{
-       BEGIN_OF("Constructor SMESH_MEDSupport_i");
-
-       _meshDS = _subMesh_i->_mesh_i->GetImpl().GetMeshDS();
-
-       int subMeshId = _subMesh_i->GetId();
-
-       MESSAGE(" subMeshId " << subMeshId)
-
-       if (_subMesh_i->_mesh_i->_mapSubMesh.find(subMeshId) !=
-               _subMesh_i->_mesh_i->_mapSubMesh.end())
-       {
-               ::SMESH_subMesh * subMesh = _subMesh_i->_mesh_i->_mapSubMesh[subMeshId];
-               _subMeshDS = subMesh->GetSubMeshDS();
-       }
-
-       if (_entity == SALOME_MED::MED_NODE)
-       {
-               _numberOfGeometricType = 1;
-               _geometricType = new SALOME_MED::medGeometryElement[1];
-               _geometricType[0] = SALOME_MED::MED_NONE;
-       }
-       else
-       {
-               MESSAGE("Pas implemente dans cette version");
-               THROW_SALOME_CORBA_EXCEPTION
-                       ("Seules les familles de noeuds sont implementees ",
-                       SALOME::BAD_PARAM);
-       }
-
-       END_OF("Constructor SMESH_MEDSupport_i");
-}
-
-//=============================================================================
-/*!
- * Constructor
- */
-//=============================================================================
-SMESH_MEDSupport_i::
-SMESH_MEDSupport_i(const SMESH_MEDSupport_i & s):_subMesh_i(s._subMesh_i),
-_name(s._name), _description(s._description), _entity(s._entity),
-_seqNumber(false), _seqLength(0)
-{
-       BEGIN_OF("Constructor SMESH_MEDSupport_i");
-
-       _meshDS = _subMesh_i->_mesh_i->GetImpl().GetMeshDS();
-
-       int subMeshId = _subMesh_i->GetId();
-       if (_subMesh_i->_mesh_i->_mapSubMesh.find(subMeshId) !=
-               _subMesh_i->_mesh_i->_mapSubMesh.end())
-       {
-               ::SMESH_subMesh * subMesh = _subMesh_i->_mesh_i->_mapSubMesh[subMeshId];
-               _subMeshDS = subMesh->GetSubMeshDS();
-       }
-
-       END_OF("Constructor SMESH_MEDSupport_i");
-}
-
-//=============================================================================
-/*!
- * Destructor
- */
-//=============================================================================
-
-SMESH_MEDSupport_i::~SMESH_MEDSupport_i()
-{
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Corba Index 
- */
-//=============================================================================
-
-CORBA::Long SMESH_MEDSupport_i::getCorbaIndex()throw(SALOME::SALOME_Exception)
-{
-       if (_subMeshDS == NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Support",
-                       SALOME::INTERNAL_ERROR);
-       MESSAGE("Not implemented for SMESH_i");
-       THROW_SALOME_CORBA_EXCEPTION("Not Implemented ", SALOME::BAD_PARAM);
-
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Name 
- */
-//=============================================================================
-
-char *SMESH_MEDSupport_i::getName() throw(SALOME::SALOME_Exception)
-{
-       if (_subMeshDS==NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Support",
-                       SALOME::INTERNAL_ERROR);
-       return CORBA::string_dup(_name.c_str());
-
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Description 
- */
-//=============================================================================
-
-char *SMESH_MEDSupport_i::getDescription() throw(SALOME::SALOME_Exception)
-{
-       if (_subMeshDS==NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Support",
-                       SALOME::INTERNAL_ERROR);
-       return CORBA::string_dup(_description.c_str());
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for Mesh 
- */
-//=============================================================================
-
-SALOME_MED::MESH_ptr SMESH_MEDSupport_i::getMesh()throw(SALOME::
-       SALOME_Exception)
-{
-       if (_subMeshDS==NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Support",
-                       SALOME::INTERNAL_ERROR);
-
-       return _subMesh_i->_mesh_i->GetMEDMesh();
-}
-
-//=============================================================================
-/*!
- * CORBA: boolean indicating if support concerns all elements 
- */
-//=============================================================================
-
-CORBA::Boolean SMESH_MEDSupport_i::isOnAllElements()throw(SALOME::
-       SALOME_Exception)
-{
-       if (_subMeshDS==NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Support",
-                       SALOME::INTERNAL_ERROR);
-       if (_seqNumber == false)
-       {
-               if (_entity != SALOME_MED::MED_NONE)
-               {
-                       _seqLength = _subMeshDS->NbNodes();
-                       _seqNumber = true;
-               }
-               else
-               {
-                       MESSAGE("Only Node Families are implemented ");
-                       THROW_SALOME_CORBA_EXCEPTION("Not implemented Yet ",
-                               SALOME::BAD_PARAM);
-               }
-       }
-       try
-       {
-               _isOnAllElements = (_seqLength == _meshDS->NbNodes());
-       }
-       catch(...)
-       {
-               MESSAGE("unable to acces related Mesh");
-               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
-                       SALOME::INTERNAL_ERROR);
-       };
-       return _isOnAllElements;
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for type of support's entity 
- */
-//=============================================================================
-
-SALOME_MED::medEntityMesh SMESH_MEDSupport_i::getEntity()throw(SALOME::
-       SALOME_Exception)
-{
-       if (_subMeshDS==NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Support",
-                       SALOME::INTERNAL_ERROR);
-       return _entity;
-}
-
-//=============================================================================
-/*!
- * CORBA: Accessor for types of geometry elements 
- */
-//=============================================================================
-
-SALOME_MED::medGeometryElement_array *
-       SMESH_MEDSupport_i::getTypes()throw(SALOME::SALOME_Exception)
-{
-       if (_subMeshDS==NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Support",
-                       SALOME::INTERNAL_ERROR);
-       SALOME_MED::medGeometryElement_array_var myseq =
-               new SALOME_MED::medGeometryElement_array;
-       try
-       {
-               int mySeqLength = _numberOfGeometricType;
-               myseq->length(mySeqLength);
-               for (int i = 0; i < mySeqLength; i++)
-               {
-                       myseq[i] = _geometricType[i];
-               }
-       }
-       catch(...)
-       {
-               MESSAGE("Exception lors de la recherche des differents types");
-               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Support Types",
-                       SALOME::INTERNAL_ERROR);
-       }
-       return myseq._retn();
-}
-
-//=============================================================================
-/*!
- * CORBA: Number of different types of geometry elements
- *        existing in the support
- */
-//=============================================================================
-CORBA::Long SMESH_MEDSupport_i::getNumberOfElements(SALOME_MED::
-       medGeometryElement geomElement) throw(SALOME::SALOME_Exception)
-{
-       if (_subMeshDS==NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Support",
-                       SALOME::INTERNAL_ERROR);
-       return _numberOfGeometricType;
-
-}
-
-//=============================================================================
-/*!
- * CORBA: get Nodes 
- */
-//=============================================================================
-
-SALOME_MED::long_array * SMESH_MEDSupport_i::getNumber(
-       SALOME_MED::medGeometryElement geomElement) throw(SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-       if (_subMeshDS==NULL)
-               THROW_SALOME_CORBA_EXCEPTION("No associated Support",
-                       SALOME::INTERNAL_ERROR);
-
-       // A changer s'il ne s agit plus seulement de famille de noeuds
-       if (geomElement != SALOME_MED::MED_NONE)
-               THROW_SALOME_CORBA_EXCEPTION("Not implemented", SALOME::BAD_PARAM);
-
-       SALOME_MED::long_array_var myseq = new SALOME_MED::long_array;
-
-       int i = 0;
-       myseq->length(_subMeshDS->NbNodes());
-
-       SMDS_NodeIteratorPtr it = _subMeshDS->GetNodes();
-       while(it->more())
-       {
-               myseq[i] = it->next()->GetID();
-               i++;
-       };
-
-       SCRUTE(myseq->length());
-       MESSAGE("End of SMESH_MEDSupport_i::getNumber");
-       return myseq._retn();
-
-}
-
-//=============================================================================
-/*!
- * CORBA: Global Nodes Index (optionnaly designed by the user)
- * CORBA:  ??????????????????????????????
- */
-//=============================================================================
-
-SALOME_MED::long_array *
-       SMESH_MEDSupport_i::getNumberIndex()throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Not implemented for SMESH_i");
-       THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
-       return NULL;
-}
-//=============================================================================
-/*!
- * CORBA: Array containing indexes for elements included in the support  
- */
-//=============================================================================
-
-CORBA::Long SMESH_MEDSupport_i::getNumberOfGaussPoint(SALOME_MED::
-       medGeometryElement geomElement) throw(SALOME::SALOME_Exception)
-{
-       MESSAGE("Not implemented for SMESH_i");
-       return 0;
-}
-//=============================================================================
-/*!
- * Gives the number of types of elements included in the support 
- */
-//=============================================================================
-CORBA::Long SMESH_MEDSupport_i::getNumberOfTypes()
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!! NOT YET IMPLEMENTED !!!!");
-  THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
-  return 0;
-}
-//=============================================================================
-/*!
- * Gives CORBA: Array containing the numbers of Gauss point of elements
- * included in the support 
- */
-//=============================================================================
-SALOME_MED::long_array* SMESH_MEDSupport_i::getNumbersOfGaussPoint()
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!! NOT YET IMPLEMENTED !!!!");
-  THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
-  return NULL;
-}
-//=============================================================================
-/*!
- * build the object which will contain all the boundary elements of the mesh.
- */
-//=============================================================================
-void SMESH_MEDSupport_i::getBoundaryElements()
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!! NOT YET IMPLEMENTED !!!!");
-  THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
-}
-//=============================================================================
-/*!
- * Gives information on the support
- */
-//=============================================================================
-SALOME_MED::SUPPORT::supportInfos * SMESH_MEDSupport_i::getSupportGlobal()
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE("!!! NOT YET IMPLEMENTED !!!!");
-  THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
-  return NULL;
-}
diff --git a/src/SMESH_I/SMESH_MEDSupport_i.hxx b/src/SMESH_I/SMESH_MEDSupport_i.hxx
deleted file mode 100644 (file)
index c888661..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-//
-//
-// File : SMESH_MEDSupport_i.hxx
-// Module : SMESH
-
-#ifndef _MED_SMESH_MEDSUPPORT_I_HXX_
-#define _MED_SMESH_MEDSUPPORT_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(MED)
-#include <string>
-
-#include "SMESHDS_Mesh.hxx"
-#include "SMESHDS_SubMesh.hxx"
-#include "SMDS_MeshElement.hxx"
-#include "SMDS_MeshNode.hxx"
-
-#include "SMESH_MEDSupport_i.hxx"
-#include "SALOME_GenericObj_i.hh"
-class SMESH_subMesh_i;
-
-class SMESH_MEDSupport_i:
-       public virtual POA_SALOME_MED::SUPPORT, public virtual SALOME::GenericObj_i
-{
-  public:
-
-// Constructors and associated internal methods
-       SMESH_MEDSupport_i(SMESH_subMesh_i * sm,
-               string name, string description, SALOME_MED::medEntityMesh entity);
-       SMESH_MEDSupport_i(const SMESH_MEDSupport_i & s);
-
-// IDL Methods
-       char *getName() throw(SALOME::SALOME_Exception);
-       char *getDescription() throw(SALOME::SALOME_Exception);
-       SALOME_MED::MESH_ptr getMesh() throw(SALOME::SALOME_Exception);
-       CORBA::Boolean isOnAllElements() throw(SALOME::SALOME_Exception);
-       SALOME_MED::medEntityMesh getEntity() throw(SALOME::SALOME_Exception);
-        CORBA::Long
-       getNumberOfElements(SALOME_MED::medGeometryElement geomElement)
-         throw(SALOME::SALOME_Exception);
-
-        CORBA::Long getNumberOfTypes() throw (SALOME::SALOME_Exception);
-
-       SALOME_MED::long_array *
-       getNumber(SALOME_MED::medGeometryElement geomElement)
-         throw(SALOME::SALOME_Exception);
-
-       SALOME_MED::long_array * getNumberIndex()
-         throw(SALOME::SALOME_Exception);
-
-        CORBA::Long
-       getNumberOfGaussPoint(SALOME_MED::medGeometryElement geomElement)
-         throw(SALOME::SALOME_Exception);
-
-        SALOME_MED::long_array* getNumbersOfGaussPoint()
-         throw (SALOME::SALOME_Exception);
-
-       SALOME_MED::medGeometryElement_array *getTypes()
-         throw(SALOME::SALOME_Exception);
-
-        void getBoundaryElements() throw (SALOME::SALOME_Exception);
-
-       CORBA::Long getCorbaIndex() throw(SALOME::SALOME_Exception);
-
-        SALOME_MED::SUPPORT::supportInfos * getSupportGlobal()
-         throw (SALOME::SALOME_Exception);
-
-       void createSeq() throw(SALOME::SALOME_Exception);
-
-  public: //public field
-       const SMESHDS_SubMesh * _subMeshDS;
-       ::SMESH_subMesh_i * _subMesh_i;
-
-       SMESHDS_Mesh * _meshDS;
-       string _name;
-       string _description;
-       bool _isOnAllElements;
-       bool _seqNumber;
-       int _seqLength;
-
-       SALOME_MED::medEntityMesh _entity;
-       SALOME_MED::medGeometryElement * _geometricType;
-       int _numberOfGeometricType;
-
-  protected:
-       SMESH_MEDSupport_i();
-       ~SMESH_MEDSupport_i();
-};
-
-#endif /* _MED_MEDSUPPORT_I_HXX_ */
diff --git a/src/SMESH_I/SMESH_Mesh_i.hxx b/src/SMESH_I/SMESH_Mesh_i.hxx
deleted file mode 100644 (file)
index 42fac7d..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_Mesh_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_MESH_I_HXX_
-#define _SMESH_MESH_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_SERVER_HEADER(SMESH_Group)
-#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-#include CORBA_CLIENT_HEADER(GEOM_Gen)
-#include CORBA_CLIENT_HEADER(MED)
-
-#include "SMESH_Hypothesis.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_subMesh_i.hxx"
-#include "SMESH_subMesh.hxx"
-
-#include "SALOME_GenericObj_i.hh"
-
-class SMESH_Gen_i;
-class SMESH_GroupBase_i;
-
-#include <map>
-
-class SMESH_Mesh_i:
-  public virtual POA_SMESH::SMESH_Mesh,
-  public virtual SALOME::GenericObj_i
-{
-  SMESH_Mesh_i();
-  SMESH_Mesh_i(const SMESH_Mesh_i&);
-public:
-  SMESH_Mesh_i( PortableServer::POA_ptr thePOA,
-                SMESH_Gen_i*            myGen_i,
-               CORBA::Long             studyId );
-
-  virtual ~SMESH_Mesh_i();
-
-  // --- CORBA
-  void SetShape( GEOM::GEOM_Object_ptr theShapeObject )
-    throw (SALOME::SALOME_Exception);
-
-  GEOM::GEOM_Object_ptr GetShapeToMesh()
-    throw (SALOME::SALOME_Exception);
-
-  SMESH::Hypothesis_Status AddHypothesis(GEOM::GEOM_Object_ptr aSubShapeObject,
-                                         SMESH::SMESH_Hypothesis_ptr anHyp)
-    throw (SALOME::SALOME_Exception);
-
-  SMESH::Hypothesis_Status RemoveHypothesis(GEOM::GEOM_Object_ptr aSubShapeObject,
-                                            SMESH::SMESH_Hypothesis_ptr anHyp)
-    throw (SALOME::SALOME_Exception);
-
-  SMESH::ListOfHypothesis* GetHypothesisList(GEOM::GEOM_Object_ptr aSubShapeObject)
-    throw (SALOME::SALOME_Exception);
-
-  SMESH::SMESH_subMesh_ptr GetSubMesh(GEOM::GEOM_Object_ptr aSubShapeObject, const char* theName)
-    throw (SALOME::SALOME_Exception);
-
-  void RemoveSubMesh( SMESH::SMESH_subMesh_ptr theSubMesh )
-    throw (SALOME::SALOME_Exception);
-
-  SMESH::SMESH_Group_ptr CreateGroup( SMESH::ElementType theElemType, const char* theName )
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::SMESH_GroupOnGeom_ptr CreateGroupFromGEOM(SMESH::ElementType    theElemType,
-                                                   const char*           theName,
-                                                   GEOM::GEOM_Object_ptr theGeomObj )
-    throw (SALOME::SALOME_Exception);
-
-  void RemoveGroup( SMESH::SMESH_GroupBase_ptr theGroup )
-    throw (SALOME::SALOME_Exception);
-  
-  void RemoveGroupWithContents( SMESH::SMESH_GroupBase_ptr theGroup )
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::SMESH_Group_ptr UnionGroups( SMESH::SMESH_GroupBase_ptr theGroup1, 
-                                      SMESH::SMESH_GroupBase_ptr theGroup2, 
-                                      const char* theName )
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::SMESH_Group_ptr IntersectGroups( SMESH::SMESH_GroupBase_ptr theGroup1, 
-                                          SMESH::SMESH_GroupBase_ptr theGroup2, 
-                                          const char* theName )
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::SMESH_Group_ptr CutGroups( SMESH::SMESH_GroupBase_ptr theGroup1, 
-                                    SMESH::SMESH_GroupBase_ptr theGroup2, 
-                                   const char* theName )
-    throw (SALOME::SALOME_Exception);
-
-//    SMESH::string_array* GetLog(CORBA::Boolean clearAfterGet)
-//      throw (SALOME::SALOME_Exception);
-
-  SMESH::log_array* GetLog(CORBA::Boolean clearAfterGet)
-    throw (SALOME::SALOME_Exception);
-
-  SMESH::SMESH_MeshEditor_ptr GetMeshEditor();
-
-  void ClearLog()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long GetId()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long GetStudyId()
-    throw (SALOME::SALOME_Exception);
-
-  // --- C++ interface
-
-  void SetImpl(::SMESH_Mesh* impl);
-  ::SMESH_Mesh& GetImpl();         // :: force no namespace here
-
-  SMESH_Gen_i* GetGen() { return _gen_i; }
-  
-  int ImportUNVFile( const char* theFileName )
-    throw (SALOME::SALOME_Exception);
-
-  int ImportSTLFile( const char* theFileName )
-    throw (SALOME::SALOME_Exception);
-
-  /*!
-   * consult DriverMED_R_SMESHDS_Mesh::ReadStatus for returned value
-   */
-  SMESH::DriverMED_ReadStatus ImportMEDFile( const char* theFileName, const char* theMeshName )
-    throw (SALOME::SALOME_Exception);
-
-  void ExportToMED( const char* file, CORBA::Boolean auto_groups, SMESH::MED_VERSION theVersion )
-    throw (SALOME::SALOME_Exception);
-  void ExportMED( const char* file, CORBA::Boolean auto_groups )
-    throw (SALOME::SALOME_Exception);
-
-  void ExportDAT( const char* file )
-    throw (SALOME::SALOME_Exception);
-  void ExportUNV( const char* file )
-    throw (SALOME::SALOME_Exception);
-  void ExportSTL( const char* file, const bool isascii )
-    throw (SALOME::SALOME_Exception);
-
-  SALOME_MED::MESH_ptr GetMEDMesh()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbNodes()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbElements()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbEdges()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbFaces()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbTriangles()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbQuadrangles()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbPolygons()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbVolumes()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbTetras()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbHexas()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbPyramids()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbPrisms()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbPolyhedrons()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long NbSubMesh()
-    throw (SALOME::SALOME_Exception);
-
-  SMESH::long_array* GetElementsId()
-    throw (SALOME::SALOME_Exception);
-
-  SMESH::long_array* GetElementsByType( SMESH::ElementType theElemType )
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::long_array* GetNodesId()
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::ElementType GetElementType( const CORBA::Long id, const bool iselem )
-    throw (SALOME::SALOME_Exception);
-  
-  char* Dump();
-  
-  // Internal methods not available through CORBA
-  // They are called by corresponding interface methods
-  SMESH_Hypothesis::Hypothesis_Status addHypothesis(GEOM::GEOM_Object_ptr aSubShapeObject,
-                                                    SMESH::SMESH_Hypothesis_ptr anHyp);
-
-  SMESH_Hypothesis::Hypothesis_Status removeHypothesis(GEOM::GEOM_Object_ptr aSubShapeObject,
-                                                       SMESH::SMESH_Hypothesis_ptr anHyp);
-  
-  int importMEDFile( const char* theFileName, const char* theMeshName );
-
-  SMESH::SMESH_subMesh_ptr createSubMesh( GEOM::GEOM_Object_ptr theSubShapeObject );
-
-  void removeSubMesh(SMESH::SMESH_subMesh_ptr theSubMesh,
-                     GEOM::GEOM_Object_ptr theSubShapeObject );
-
-  SMESH::SMESH_GroupBase_ptr createGroup(SMESH::ElementType  theElemType,
-                                         const char*         theName,
-                                         const TopoDS_Shape& theShape = TopoDS_Shape());
-
-  void removeGroup( const int theId );
-
-  SMESH::SMESH_subMesh_ptr getSubMesh(int shapeID);
-  // return an existing subMesh object for the shapeID. shapeID == submeshID.
-
-  const map<int, SMESH::SMESH_GroupBase_ptr>& getGroups() { return _mapGroups; }
-  // return an existing group object.
-
-  virtual SMESH::long_array* GetIDs();
-
-  map<int, SMESH_subMesh_i*> _mapSubMesh_i; //NRI
-  map<int, ::SMESH_subMesh*> _mapSubMesh;   //NRI
-
-private:
-  static int myIdGenerator;
-  ::SMESH_Mesh* _impl;  // :: force no namespace here
-  SMESH_Gen_i* _gen_i;
-  int _id;          // id given by creator (unique within the creator instance)
-  int _studyId;
-  map<int, SMESH::SMESH_subMesh_ptr>    _mapSubMeshIor;
-  map<int, SMESH::SMESH_GroupBase_ptr>  _mapGroups;
-  map<int, SMESH::SMESH_Hypothesis_ptr> _mapHypo;
-};
-
-#endif
-
diff --git a/src/SMESH_I/SMESH_Pattern_i.hxx b/src/SMESH_I/SMESH_Pattern_i.hxx
deleted file mode 100644 (file)
index 29b5084..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-// File      : SMESH_Pattern_i.hxx
-// Created   : Fri Aug 20 16:03:15 2004
-// Author    : Edward AGAPOV (eap)
-
-//  $Header: 
-
-#ifndef SMESH_Pattern_I_HeaderFile
-#define SMESH_Pattern_I_HeaderFile
-
-#include "SALOMEconfig.h"
-#include CORBA_SERVER_HEADER(SMESH_Pattern)
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_CLIENT_HEADER(GEOM_Gen)
-
-#include <TopoDS_Shape.hxx>
-#include "SMESH_Pattern.hxx"
-
-class SMESH_Gen_i;
-class SMESH_Mesh;
-
-class SMESH_Pattern_i:
-  public virtual POA_SMESH::SMESH_Pattern
-{
- public:
-
-  SMESH_Pattern_i (SMESH_Gen_i* theGen_i);
-
-  CORBA::Boolean LoadFromFile(const char* theFileContents);
-
-  CORBA::Boolean LoadFromFace(SMESH::SMESH_Mesh_ptr theMesh,
-                              GEOM::GEOM_Object_ptr theFace,
-                              CORBA::Boolean        theProject);
-
-  CORBA::Boolean LoadFrom3DBlock(SMESH::SMESH_Mesh_ptr theMesh,
-                                 GEOM::GEOM_Object_ptr theBlock);
-
-  SMESH::point_array* ApplyToFace(GEOM::GEOM_Object_ptr theFace,
-                                  GEOM::GEOM_Object_ptr theVertexOnKeyPoint1,
-                                  CORBA::Boolean        theReverse);
-
-  SMESH::point_array* ApplyTo3DBlock(GEOM::GEOM_Object_ptr theBlock,
-                                     GEOM::GEOM_Object_ptr theVertex000,
-                                     GEOM::GEOM_Object_ptr theVertex001);
-
-  SMESH::point_array* ApplyToMeshFaces(SMESH::SMESH_Mesh_ptr    theMesh,
-                                       const SMESH::long_array& theFacesIDs,
-                                       CORBA::Long              theNodeIndexOnKeyPoint1,
-                                       CORBA::Boolean           theReverse);
-
-  SMESH::point_array* ApplyToHexahedrons(SMESH::SMESH_Mesh_ptr    theMesh,
-                                         const SMESH::long_array& theVolumesIDs,
-                                         CORBA::Long              theNode000Index,
-                                         CORBA::Long              theNode001Index);
-
-  CORBA::Boolean MakeMesh (SMESH::SMESH_Mesh_ptr theMesh,
-                           const CORBA::Boolean  CreatePolygons,
-                           const CORBA::Boolean  CreatePolyedrs);
-
-  SMESH::SMESH_Pattern::ErrorCode GetErrorCode();
-
-  char* GetString();
-
-  CORBA::Boolean Is2D();
-
-  SMESH::point_array* GetPoints();
-
-  SMESH::long_array* GetKeyPoints();
-
-  SMESH::array_of_long_array* GetElementPoints(CORBA::Boolean applied);
-
-
- private:
-
-  ::SMESH_Mesh* getMesh( SMESH::SMESH_Mesh_ptr & theMesh );
-
-  ::SMESH_Pattern myPattern;
-
-  SMESH_Gen_i*    myGen;
-};
-#endif
diff --git a/src/SMESH_I/SMESH_subMesh_i.cxx b/src/SMESH_I/SMESH_subMesh_i.cxx
deleted file mode 100644 (file)
index f8ade30..0000000
+++ /dev/null
@@ -1,487 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_subMesh_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "SMESH_subMesh_i.hxx"
-#include "SMESH_Gen_i.hxx"
-#include "SMESH_Mesh_i.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "utilities.h"
-#include "OpUtil.hxx"
-#include "Utils_ExceptHandlers.hxx"
-
-#include <BRepTools.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Iterator.hxx>
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_subMesh_i::SMESH_subMesh_i()
-     : SALOME::GenericObj_i( PortableServer::POA::_nil() )
-{
-  MESSAGE("SMESH_subMesh_i::SMESH_subMesh_i default, not for use");
-    ASSERT(0);
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_subMesh_i::SMESH_subMesh_i( PortableServer::POA_ptr thePOA,
-                                 SMESH_Gen_i*            gen_i,
-                                 SMESH_Mesh_i*           mesh_i,
-                                 int                     localId )
-     : SALOME::GenericObj_i( thePOA )
-{
-  MESSAGE("SMESH_subMesh_i::SMESH_subMesh_i");
-  _gen_i = gen_i;
-  _mesh_i = mesh_i;
-  _localId = localId;
-  thePOA->activate_object( this );
-  // ****
-}
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH_subMesh_i::~SMESH_subMesh_i()
-{
-  MESSAGE("SMESH_subMesh_i::~SMESH_subMesh_i");
-  // ****
-}
-
-//=======================================================================
-//function : getSubMeshes
-//purpose  : for a submesh on shape to which elements are not bound directly,
-//           return submeshes containing elements
-//=======================================================================
-
-typedef list<SMESHDS_SubMesh*> TListOfSubMeshes;
-
-bool getSubMeshes(::SMESH_subMesh*  theSubMesh,
-                  TListOfSubMeshes& theSubMeshList)
-{
-  int size = theSubMeshList.size();
-
-  SMESH_Mesh*      aMesh      = theSubMesh->GetFather();
-  SMESHDS_Mesh*    aMeshDS    = aMesh->GetMeshDS();
-  SMESHDS_SubMesh* aSubMeshDS = theSubMesh->GetSubMeshDS();
-
-  // nodes can be bound to either vertex, edge, face or solid_or_shell
-  TopoDS_Shape aShape = theSubMesh->GetSubShape();
-  switch ( aShape.ShapeType() )
-  {
-  case TopAbs_SOLID: {
-    // add submesh of solid itself
-    aSubMeshDS = aMeshDS->MeshElements( aShape );
-    if ( aSubMeshDS )
-      theSubMeshList.push_back( aSubMeshDS );
-    // and of the first shell
-    TopExp_Explorer exp( aShape, TopAbs_SHELL );
-    if ( exp.More() ) {
-      aSubMeshDS = aMeshDS->MeshElements( exp.Current() );
-      if ( aSubMeshDS )
-        theSubMeshList.push_back( aSubMeshDS );
-    }
-    break;
-  }
-  case TopAbs_WIRE:
-  case TopAbs_COMPOUND:
-  case TopAbs_COMPSOLID: {
-    // call getSubMeshes() for sub-shapes
-    list<TopoDS_Shape> shapeList;
-    shapeList.push_back( aShape );
-    list<TopoDS_Shape>::iterator sh = shapeList.begin();
-    for ( ; sh != shapeList.end(); ++sh ) {
-      for ( TopoDS_Iterator it( *sh ); it.More(); it.Next() ) {
-        ::SMESH_subMesh* aSubMesh = aMesh->GetSubMeshContaining( it.Value() );
-        if ( aSubMesh )
-          getSubMeshes( aSubMesh, theSubMeshList );
-        else
-          // no submesh for a compound inside compound
-          shapeList.push_back( it.Value() );
-      }
-    }
-    // return only unique submeshes
-    set<SMESHDS_SubMesh*> smSet;
-    TListOfSubMeshes::iterator sm = theSubMeshList.begin();
-    while ( sm != theSubMeshList.end() ) {
-      if ( !smSet.insert( *sm ).second )
-        sm = theSubMeshList.erase( sm );
-      else
-        ++sm;
-    }
-    break;
-  }
-  }
-  return size < theSubMeshList.size();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-CORBA::Long SMESH_subMesh_i::GetNumberOfElements()
-  throw (SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-  MESSAGE("SMESH_subMesh_i::GetNumberOfElements");
-  if ( _mesh_i->_mapSubMesh.find( _localId ) == _mesh_i->_mapSubMesh.end() )
-    return 0;
-
-  ::SMESH_subMesh* aSubMesh = _mesh_i->_mapSubMesh[_localId];
-  SMESHDS_SubMesh* aSubMeshDS = aSubMesh->GetSubMeshDS();
-
-  int nbElems = aSubMeshDS ? aSubMeshDS->NbElements() : 0;
-
-  // volumes are bound to shell
-  TListOfSubMeshes smList;
-  if ( nbElems == 0 && getSubMeshes( aSubMesh, smList ))
-  {
-    TListOfSubMeshes::iterator sm = smList.begin();
-    for ( ; sm != smList.end(); ++sm )
-      nbElems += (*sm)->NbElements();
-  }
-  return nbElems;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-CORBA::Long SMESH_subMesh_i::GetNumberOfNodes(CORBA::Boolean all)
-  throw (SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-  MESSAGE("SMESH_subMesh_i::GetNumberOfNodes");
-  if ( _mesh_i->_mapSubMesh.find( _localId ) == _mesh_i->_mapSubMesh.end() )
-    return 0;
-
-  ::SMESH_subMesh* aSubMesh = _mesh_i->_mapSubMesh[_localId];
-  SMESHDS_SubMesh* aSubMeshDS = aSubMesh->GetSubMeshDS();
-
-  set<int> nodeIds;
-
-  // nodes are bound to shell instead of solid
-  TListOfSubMeshes smList;
-  if ( all && getSubMeshes( aSubMesh, smList ))
-  {
-    TListOfSubMeshes::iterator sm = smList.begin();
-    for ( ; sm != smList.end(); ++sm )
-    {
-      SMDS_ElemIteratorPtr eIt = (*sm)->GetElements();
-      while ( eIt->more() ) {
-        const SMDS_MeshElement* anElem = eIt->next();
-        SMDS_ElemIteratorPtr nIt = anElem->nodesIterator();
-        while ( nIt->more() )
-          nodeIds.insert( nIt->next()->GetID() );
-      }
-    }
-    return nodeIds.size();
-  }
-
-  if ( aSubMeshDS == NULL )
-    return 0;
-
-  if ( all ) { // all nodes of submesh elements
-    SMDS_ElemIteratorPtr eIt = aSubMeshDS->GetElements();
-    while ( eIt->more() ) {
-      const SMDS_MeshElement* anElem = eIt->next();
-      SMDS_ElemIteratorPtr nIt = anElem->nodesIterator();
-      while ( nIt->more() )
-        nodeIds.insert( nIt->next()->GetID() );
-    }
-    return nodeIds.size();
-  }
-    
-  return aSubMeshDS->NbNodes();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-  
-SMESH::long_array* SMESH_subMesh_i::GetElementsId()
-  throw (SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-  MESSAGE("SMESH_subMesh_i::GetElementsId");
-  SMESH::long_array_var aResult = new SMESH::long_array();
-
-  if ( _mesh_i->_mapSubMesh.find( _localId ) == _mesh_i->_mapSubMesh.end() )
-    return aResult._retn();
-
-  ::SMESH_subMesh* aSubMesh = _mesh_i->_mapSubMesh[_localId];
-  SMESHDS_SubMesh* aSubMeshDS = aSubMesh->GetSubMeshDS();
-
-  int nbElems = aSubMeshDS ? aSubMeshDS->NbElements() : 0;
-  TListOfSubMeshes smList;
-  if ( nbElems )
-    smList.push_back( aSubMeshDS );
-
-  // volumes are bound to shell
-  if ( nbElems == 0 && getSubMeshes( aSubMesh, smList ))
-  {
-    TListOfSubMeshes::iterator sm = smList.begin();
-    for ( ; sm != smList.end(); ++sm )
-      nbElems += (*sm)->NbElements();
-  }
-
-  aResult->length( nbElems );
-  if ( nbElems )
-  {
-    TListOfSubMeshes::iterator sm = smList.begin();
-    for ( int i = 0; sm != smList.end(); sm++ )
-    {
-      SMDS_ElemIteratorPtr anIt = (*sm)->GetElements();
-      for ( int n = aSubMeshDS->NbElements(); i < n && anIt->more(); i++ )
-        aResult[i] = anIt->next()->GetID();
-    }
-  }
-  return aResult._retn();
-}
-
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-SMESH::long_array* SMESH_subMesh_i::GetElementsByType( SMESH::ElementType theElemType )
-    throw (SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-  MESSAGE("SMESH_subMesh_i::GetElementsByType");
-  SMESH::long_array_var aResult = new SMESH::long_array();
-
-  if ( _mesh_i->_mapSubMesh.find( _localId ) == _mesh_i->_mapSubMesh.end() )
-    return aResult._retn();
-
-  ::SMESH_subMesh* aSubMesh = _mesh_i->_mapSubMesh[_localId];
-  SMESHDS_SubMesh* aSubMeshDS = aSubMesh->GetSubMeshDS();
-
-  // PAL5440, return all nodes belonging to elements of submesh
-  set<int> nodeIds;
-  int nbElems = aSubMeshDS ? aSubMeshDS->NbElements() : 0;
-
-  // volumes may be bound to shell instead of solid
-  TListOfSubMeshes smList;
-  if ( nbElems == 0 && getSubMeshes( aSubMesh, smList ))
-  {
-    TListOfSubMeshes::iterator sm = smList.begin();
-    for ( ; sm != smList.end(); ++sm )
-    {
-      if ( theElemType == SMESH::NODE )
-      {
-        SMDS_ElemIteratorPtr eIt = (*sm)->GetElements();
-        while ( eIt->more() ) {
-          const SMDS_MeshElement* anElem = eIt->next();
-          SMDS_ElemIteratorPtr nIt = anElem->nodesIterator();
-          while ( nIt->more() )
-            nodeIds.insert( nIt->next()->GetID() );
-        }
-      }
-      else
-      {
-        nbElems += (*sm)->NbElements();
-      }
-    }
-    aSubMeshDS = 0;
-  }
-  else
-  {
-    if ( nbElems )
-      smList.push_back( aSubMeshDS );
-  }
-
-  if ( theElemType == SMESH::NODE && aSubMeshDS )
-  {
-    SMDS_ElemIteratorPtr eIt = aSubMeshDS->GetElements();
-    while ( eIt->more() ) {
-      const SMDS_MeshElement* anElem = eIt->next();
-      SMDS_ElemIteratorPtr nIt = anElem->nodesIterator();
-      while ( nIt->more() )
-        nodeIds.insert( nIt->next()->GetID() );
-    }
-  }
-
-  if ( theElemType == SMESH::NODE )
-    aResult->length( nodeIds.size() );
-  else
-    aResult->length( nbElems );
-
-  int i = 0, n = aResult->length();
-
-  if ( theElemType == SMESH::NODE && !nodeIds.empty() ) {
-    set<int>::iterator idIt = nodeIds.begin();
-    for ( ; i < n && idIt != nodeIds.end() ; i++, idIt++ )
-      aResult[i] = *idIt;
-  }
-
-  if ( theElemType != SMESH::NODE ) {
-    TListOfSubMeshes::iterator sm = smList.begin();
-    for ( i = 0; sm != smList.end(); sm++ )
-    {
-      aSubMeshDS = *sm;
-      SMDS_ElemIteratorPtr anIt = aSubMeshDS->GetElements();
-      while ( i < n && anIt->more() ) {
-        const SMDS_MeshElement* anElem = anIt->next();
-        if ( theElemType == SMESH::ALL || anElem->GetType() == (SMDSAbs_ElementType)theElemType )
-          aResult[i++] = anElem->GetID();
-      }
-    }
-  }
-
-  aResult->length( i );
-
-  return aResult._retn();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-  
-SMESH::long_array* SMESH_subMesh_i::GetNodesId()
-  throw (SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-  MESSAGE("SMESH_subMesh_i::GetNodesId");
-  SMESH::long_array_var aResult = GetElementsByType( SMESH::NODE );
-  return aResult._retn();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-  
-SMESH::SMESH_Mesh_ptr SMESH_subMesh_i::GetFather()
-  throw (SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-  MESSAGE("SMESH_subMesh_i::GetFather");
-  return _mesh_i->_this();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-  
-CORBA::Long SMESH_subMesh_i::GetId()
-{
-  MESSAGE("SMESH_subMesh_i::GetId");
-  return _localId;
-}
-
-//=======================================================================
-//function : GetSubShape
-//purpose  : 
-//=======================================================================
-
-GEOM::GEOM_Object_ptr SMESH_subMesh_i::GetSubShape()
-     throw (SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-  GEOM::GEOM_Object_var aShapeObj;
-  try {
-    if ( _mesh_i->_mapSubMesh.find( _localId ) != _mesh_i->_mapSubMesh.end()) {
-      TopoDS_Shape S = _mesh_i->_mapSubMesh[ _localId ]->GetSubShape();
-      if ( !S.IsNull() )
-        aShapeObj = _gen_i->ShapeToGeomObject( S );
-    }
-  }
-  catch(SALOME_Exception & S_ex) {
-    THROW_SALOME_CORBA_EXCEPTION(S_ex.what(), SALOME::BAD_PARAM);
-  }
-  return aShapeObj._retn();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-SALOME_MED::FAMILY_ptr SMESH_subMesh_i::GetFamily()
-  throw (SALOME::SALOME_Exception)
-{
-  Unexpect aCatch(SALOME_SalomeException);
-  SALOME_MED::MESH_var MEDMesh = GetFather()->GetMEDMesh();
-
-  SALOME_MED::Family_array_var families = 
-    MEDMesh->getFamilies(SALOME_MED::MED_NODE);
-    
-  for ( int i = 0; i < families->length(); i++ ) {
-    if ( families[i]->getIdentifier() == ( _localId ) )
-      return families[i];
-  }
-  
-  return SALOME_MED::FAMILY::_nil();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-SMESH::long_array* SMESH_subMesh_i::GetIDs()
-{
-  SMESH::long_array_var aResult = GetElementsId();
-  return aResult._retn();
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-SMESH::ElementType SMESH_subMesh_i::GetElementType( const CORBA::Long id, const bool iselem )
-  throw (SALOME::SALOME_Exception)
-{
-  return GetFather()->GetElementType( id, iselem );
-}
diff --git a/src/SMESH_I/SMESH_subMesh_i.hxx b/src/SMESH_I/SMESH_subMesh_i.hxx
deleted file mode 100644 (file)
index e8d84b3..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : SMESH_subMesh_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_SUBMESH_I_HXX_
-#define _SMESH_SUBMESH_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-#include CORBA_CLIENT_HEADER(GEOM_Gen)
-#include CORBA_CLIENT_HEADER(MED)
-
-#include "SALOME_GenericObj_i.hh"
-
-class SMESH_Gen_i;
-class SMESH_Mesh_i;
-
-class SMESH_subMesh_i:
-  public virtual POA_SMESH::SMESH_subMesh,
-  public virtual SALOME::GenericObj_i
-{
-public:
-  SMESH_subMesh_i();
-  SMESH_subMesh_i( PortableServer::POA_ptr thePOA,
-                   SMESH_Gen_i*            gen_i,
-                  SMESH_Mesh_i*           mesh_i,
-                  int                     localId );
-  ~SMESH_subMesh_i();
-
-  CORBA::Long GetNumberOfElements()
-    throw (SALOME::SALOME_Exception);
-  
-  CORBA::Long  GetNumberOfNodes( CORBA::Boolean all )
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::long_array* GetElementsId()
-    throw (SALOME::SALOME_Exception);
-
-  SMESH::long_array* GetElementsByType( SMESH::ElementType theElemType )
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::ElementType GetElementType( const CORBA::Long id, const bool iselem )
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::long_array* GetNodesId()
-    throw (SALOME::SALOME_Exception);
-  
-  SMESH::SMESH_Mesh_ptr GetFather()
-    throw (SALOME::SALOME_Exception);
-  
-  GEOM::GEOM_Object_ptr GetSubShape()
-    throw (SALOME::SALOME_Exception);
-
-  CORBA::Long GetId();   
-
-  SALOME_MED::FAMILY_ptr GetFamily()
-    throw (SALOME::SALOME_Exception);
-
-  virtual SMESH::long_array* GetIDs();
-
-  SMESH_Mesh_i* _mesh_i; //NRI
-
-protected:
-  SMESH_Gen_i* _gen_i;
-  int _localId;
-};
-
-#endif
diff --git a/src/SMESH_I/smeshpy.py b/src/SMESH_I/smeshpy.py
deleted file mode 100644 (file)
index 9fb4709..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-#  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : smeshpy.py
-#  Module : SMESH
-
-import salome
-import SMESH
-
-from SALOME_utilities import *
-
-#=============================================================================
-
-class smeshpy:
-    _geom = None
-    _smesh = None
-    _studyId = None
-
-    #--------------------------------------------------------------------------
-
-    def __init__(self):
-        try:
-            self._geom = salome.lcc.FindOrLoadComponent("FactoryServer","GEOM")
-            self._smesh = salome.lcc.FindOrLoadComponent("FactoryServer","SMESH")
-        except:
-            MESSAGE( "exception in smeshpy:__init__" )
-        self._study = salome.myStudy
-        self._smesh.SetCurrentStudy(self._study)
-
-    #--------------------------------------------------------------------------
-
-    def CreateMesh(self, shapeId):
-        try:
-            shape = salome.IDToObject(shapeId)
-            aMesh = self._smesh.CreateMesh(shape)
-            return aMesh
-        except:
-            MESSAGE( "exception in smeshpy:Init" )
-            return None
-
-    #--------------------------------------------------------------------------
-
-    def CreateHypothesis(self, name, libname):
-        try:
-            hyp = self._smesh.CreateHypothesis(name, libname)
-            return hyp
-        except:
-            MESSAGE( "exception in smeshpy:CreateHypothesis" )
-            return None    
-
-    #--------------------------------------------------------------------------
-
-    def Compute(self, mesh, shapeId):
-        try:
-            shape = salome.IDToObject(shapeId)
-            ret=self._smesh.Compute(mesh, shape)
-            return ret
-        except:
-            MESSAGE( "exception in smeshpy:Compute" )
-            return 0    
-
-#=============================================================================
-##    #--------------------------------------------------------------------------
-
-##def SmeshInit(shapeId):
-##    import salome
-##    import SMESH
-##    geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
-##    smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-##    shape = salome.IDToObject(shapeId)
-##    studyId = salome.myStudyId
-##    MESSAGE( str(studyId) )
-##    aMesh = smesh.Init(geom, studyId, shape)
-##    return aMesh
-
-##    #--------------------------------------------------------------------------
diff --git a/src/SMESH_SWIG/Makefile.in b/src/SMESH_SWIG/Makefile.in
deleted file mode 100644 (file)
index df7e19a..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Author : Nicolas REJNERI, Paul RASCLE
-#  Module : SMESH
-#  $Header$
-
-top_srcdir=@top_srcdir@
-top_builddir=../..
-srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
-
-
-@COMMENCE@
-
-# Libraries targets
-
-LIB = libSMESH_Swigcmodule.la
-LIB_SRC = 
-
-SWIG_DEF = libSMESH_Swig.i
-EXPORT_PYSCRIPTS = libSMESH_Swig.py \
-                  smesh.py \
-                  batchmode_smesh.py \
-                  batchmode_mefisto.py \
-                  ex00_all.py \
-                  ex01_cube2build.py \
-                  ex02_cube2primitive.py \
-                  ex03_cube2partition.py \
-                  ex04_cube5tetraHexa.py \
-                  ex05_hole1build.py \
-                  ex06_hole1boolean.py \
-                  ex07_hole1partition.py \
-                  ex08_hole2build.py \
-                  ex09_grid4build.py \
-                  ex10_grid4geometry.py \
-                  ex11_grid3partition.py \
-                  ex12_grid17partition.py \
-                  ex13_hole1partial.py \
-                  ex14_cyl1holed.py \
-                  ex15_cyl2geometry.py \
-                  ex16_cyl2complementary.py \
-                  ex17_dome1.py \
-                  ex18_dome2.py \
-                  ex19_sphereINcube.py \
-                   SMESH_test.py\
-                   SMESH_test0.py\
-                  SMESH_test1.py \
-                  SMESH_test2.py \
-                  SMESH_test3.py \
-                  SMESH_test4.py \
-                  SMESH_test5.py \
-                  SMESH_mechanic.py \
-                  SMESH_mechanic_tetra.py \
-                  SMESH_mechanic_editor.py \
-                  SMESH_fixation.py \
-                  SMESH_fixation_hexa.py \
-                  SMESH_fixation_tetra.py \
-                  SMESH_box_tetra.py \
-                  SMESH_box2_tetra.py \
-                  SMESH_box3_tetra.py \
-                  SMESH_flight_skin.py \
-                  SMESH_Partition1_tetra.py\
-                  SMESH_controls.py \
-                  SMESH_freebord.py \
-                  SMESH_blocks.py \
-                  SMESH_BelongToGeom.py \
-                  SMESH_GroupFromGeom2.py \
-                  SMESH_box.py \
-                  SMESH_demo_hexa2_upd.py \
-                  SMESH_hexaedre.py \
-                  SMESH_Sphere.py \
-                  SMESH_GroupFromGeom.py \
-                  SMESH_Nut.py \
-                  SMESH_GroupLyingOnGeom.py \
-                  PAL_MESH_041_mesh.py \
-                  PAL_MESH_043_2D.py \
-                  PAL_MESH_043_3D.py \
-                  SMESH_reg.py
-
-LIB_CLIENT_IDL = SALOMEDS.idl \
-                SALOME_Exception.idl \
-                GEOM_Gen.idl \
-                SMESH_Gen.idl \
-                SMESH_Mesh.idl \
-                SMESH_Hypothesis.idl \
-                SMESH_BasicHypothesis.idl \
-                SMESH_Group.idl \
-                SALOME_ModuleCatalog.idl \
-                SALOME_Component.idl \
-                SALOME_GenericObj.idl \
-                MED.idl \
-                SALOME_Comm.idl
-
-EXPORT_SHAREDPYSCRIPTS=SMESH_shared_modules.py
-
-CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(OGL_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome -DHAVE_CONFIG_H
-LIBS+= $(PYTHON_LIBS)
-LDFLAGS+= -lSMESH -L${KERNEL_ROOT_DIR}/lib/salome -lSalomeGenericObj
-
-@CONCLUDE@
diff --git a/src/SMESH_SWIG/PAL_MESH_041_mesh.py b/src/SMESH_SWIG/PAL_MESH_041_mesh.py
deleted file mode 100755 (executable)
index 8585c9f..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-import geompy
-import salome
-
-import StdMeshers
-
-#-----------------------------GEOM----------------------------------------
-
-#----------Vertexes------------
-p1 = geompy.MakeVertex(20.0,30.0,40.0)
-p2 = geompy.MakeVertex(90.0,80.0,0.0)
-p3 = geompy.MakeVertex(30.0,80.0,200.0)
-
-#----------Edges---------------
-e1 = geompy.MakeEdge(p1,p2)
-e2 = geompy.MakeEdge(p2,p3)
-e3 = geompy.MakeEdge(p3,p1)
-
-#----------Wire----------------
-ListOfEdges = []
-ListOfEdges.append(e3)
-ListOfEdges.append(e2)
-ListOfEdges.append(e1)
-wire1 = geompy.MakeWire(ListOfEdges)
-
-
-#----------Face----------------
-WantPlanarFace = 1
-face1 = geompy.MakeFace(wire1,WantPlanarFace)
-
-Id_face1 = geompy.addToStudy(face1,"Face1")
-
-
-
-#-----------------------------SMESH-------------------------------------------
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-# -- Init --
-plane_mesh = salome.IDToObject( Id_face1)
-smesh.SetCurrentStudy(salome.myStudy)
-
-mesh = smesh.CreateMesh(plane_mesh)
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-id_mesh = salome.ObjectToID(mesh)
-smeshgui.SetName( id_mesh, "Mesh_1")
-
-
-print"---------------------Hypothesis"
-
-
-#---------------- NumberOfSegments
-numberOfSegment = 9
-
-hypNbSeg = smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" )
-hypNbSeg.SetNumberOfSegments( numberOfSegment )
-
-print hypNbSeg.GetName()
-print hypNbSeg.GetNumberOfSegments()
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "Nb. Segments")
-
-
-#--------------------------Max. Element Area
-maxElementArea = 200
-
-hypArea200 = smesh.CreateHypothesis("MaxElementArea","libStdMeshersEngine.so")
-hypArea200.SetMaxElementArea( maxElementArea )
-print hypArea200.GetName()
-print hypArea200.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea200), "Max. Element Area")
-
-print"---------------------Algorithms"
-
-#----------------------------Wire discretisation
-algoWireDes = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" )
-listHyp = algoWireDes.GetCompatibleHypothesis()
-
-print algoWireDes.GetName()
-smeshgui.SetName(salome.ObjectToID(algoWireDes), "Ware descritisation")
-
-#----------------------------Triangle (Mefisto)
-algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" )
-listHyp = algoMef.GetCompatibleHypothesis()
-
-print algoMef.GetName()
-
-#----------------------------Add hipothesis to the plane
-mesh.AddHypothesis( plane_mesh, hypNbSeg )     # nb segments
-mesh.AddHypothesis( plane_mesh, hypArea200 )   # max area
-
-mesh.AddHypothesis( plane_mesh, algoWireDes )  # Regular 1D/wire discretisation
-mesh.AddHypothesis( plane_mesh, algoMef )      # MEFISTO 2D
-
-smeshgui.SetName(salome.ObjectToID(algoMef), "Triangle (Mefisto)")
-
-print "---------------------Compute the mesh"
-
-smesh.Compute(mesh, plane_mesh)
-
-salome.sg.updateObjBrowser(1)
-
diff --git a/src/SMESH_SWIG/PAL_MESH_043_2D.py b/src/SMESH_SWIG/PAL_MESH_043_2D.py
deleted file mode 100755 (executable)
index 76ab259..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File        : SMESH_testExtrusion2D.py
-#  Module      : SMESH
-#  Description : Create meshes to test extrusion of mesh elements along path
-
-import salome
-import geompy
-import SMESH
-import StdMeshers
-
-#----------------------------------GEOM
-
-# create points
-p1 = geompy.MakeVertex(100, 0, 0)
-p2 = geompy.MakeVertex(100, 0, 100)
-p3 = geompy.MakeVertex(0, 0, 0)
-p4 = geompy.MakeVertex(0, 100, 0)
-
-
-# create two vectors
-vector1 = geompy.MakeVector(p1,p2)
-vector2 = geompy.MakeVector(p3,p4)
-
-# make two ellipses
-ellipse1 = geompy.MakeEllipse(p1,vector1,50,25)
-ellipse2 = geompy.MakeEllipse(p3,vector2,300,50)
-
-# publish circular face and second circle
-id_ellipse1 = geompy.addToStudy(ellipse1, "Ellips 1")
-id_ellipse2 = geompy.addToStudy(ellipse2, "Ellips 2")
-
-
-#---------------------------------SMESH
-# get smesh engine
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smesh.SetCurrentStudy(salome.myStudy)
-
-# get SMESH GUI
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-# create hypoteses
-hypNbSeg1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg1.SetNumberOfSegments(18)
-id_hypNbSeg1 = salome.ObjectToID(hypNbSeg1) 
-smeshgui.SetName(id_hypNbSeg1, "NumberOfSegments 1");
-
-hypNbSeg2 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg2.SetNumberOfSegments(34)
-id_hypNbSeg2 = salome.ObjectToID(hypNbSeg2) 
-smeshgui.SetName(id_hypNbSeg2, "NumberOfSegments 2");
-
-# create algorithmes
-algoReg = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-id_algoReg = salome.ObjectToID(algoReg)
-smeshgui.SetName(id_algoReg, "Regular_1D");
-
-# create the path mesh
-mesh1 = smesh.CreateMesh(ellipse1)
-id_mesh1 = salome.ObjectToID(mesh1)
-smeshgui.SetName(id_mesh1, "Path Mesh");
-
-# set hypotheses and algos
-mesh1.AddHypothesis(ellipse1,algoReg)
-mesh1.AddHypothesis(ellipse1,hypNbSeg1)
-
-# create the tool mesh
-mesh2 = smesh.CreateMesh(ellipse2)
-id_mesh2 = salome.ObjectToID(mesh2)
-smeshgui.SetName(id_mesh2, "Tool Mesh");
-
-# set hypotheses and algos
-mesh2.AddHypothesis(ellipse2,algoReg)
-mesh2.AddHypothesis(ellipse2,hypNbSeg2)
-
-# compute meshes
-smesh.Compute(mesh1,ellipse1)
-smesh.Compute(mesh2,ellipse2)
-
-
-# ---- udate object browser
-salome.sg.updateObjBrowser(1);
diff --git a/src/SMESH_SWIG/PAL_MESH_043_3D.py b/src/SMESH_SWIG/PAL_MESH_043_3D.py
deleted file mode 100755 (executable)
index cfd0f45..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File        : SMESH_testExtrusion3D.py
-#  Module      : SMESH
-#  Description : Create meshes to test extrusion of mesh elements along path
-
-import salome
-import geompy
-import SMESH
-import StdMeshers
-
-# get smesh engine
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smesh.SetCurrentStudy(salome.myStudy)
-
-# create points to build two circles
-p1 = geompy.MakeVertex(0,  100,  0)
-p2 = geompy.MakeVertex(100,  0,  0)
-p3 = geompy.MakeVertex(0, -100,  0)
-p4 = geompy.MakeVertex(0,   70,  0)
-p5 = geompy.MakeVertex(0,  100, 30)
-p6 = geompy.MakeVertex(0,  130,  0)
-
-# create two circles
-circle = geompy.MakeCircleThreePnt(p1, p2, p3)
-cf     = geompy.MakeCircleThreePnt(p4, p5, p6)
-
-# make circular face
-wire = geompy.MakeWire([cf])
-face = geompy.MakeFace(wire, 1)
-
-# publish circular face and second circle
-idcircle = geompy.addToStudy(circle, "Circle")
-idface   = geompy.addToStudy(face,   "Circular face")
-
-# get SMESH GUI
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-# create hypoteses
-hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg.SetNumberOfSegments(12)
-idseg = salome.ObjectToID(hypNbSeg) 
-smeshgui.SetName(idseg, "NumberOfSegments_10");
-
-hypArea = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hypArea.SetMaxElementArea(30)
-idarea = salome.ObjectToID(hypArea)
-smeshgui.SetName(idarea, "MaxElementArea_20");
-
-# create algorithmes
-algoReg = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-idreg = salome.ObjectToID(algoReg)
-smeshgui.SetName(idreg, "Regular_1D");
-
-algoMef = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-idmef = salome.ObjectToID(algoMef)
-smeshgui.SetName(idmef, "MEFISTO_2D");
-
-# init a Mesh with the circular face
-mesh1 = smesh.CreateMesh(face)
-idmesh1 = salome.ObjectToID(mesh1)
-smeshgui.SetName(idmesh1, "Mesh on circular face");
-
-# set hypotheses and algos
-mesh1.AddHypothesis(face,algoReg)
-mesh1.AddHypothesis(face,hypNbSeg)
-mesh1.AddHypothesis(face,algoMef)
-mesh1.AddHypothesis(face,hypArea)
-
-# init a Mesh with the second circle
-mesh2 = smesh.CreateMesh(circle)
-idmesh2 = salome.ObjectToID(mesh2)
-smeshgui.SetName(idmesh2, "Mesh on circular edge");
-
-# set hypotheses and algos
-mesh2.AddHypothesis(circle,algoReg)
-mesh2.AddHypothesis(circle,hypNbSeg)
-
-# compute meshes
-smesh.Compute(mesh1,face)
-smesh.Compute(mesh2,circle)
-
-# ---- udate object browser
-salome.sg.updateObjBrowser(1);
diff --git a/src/SMESH_SWIG/SMESH_BelongToGeom.py b/src/SMESH_SWIG/SMESH_BelongToGeom.py
deleted file mode 100644 (file)
index c4ee39d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-import SMESH
-from SMESH_test1 import *
-
-def CheckBelongToGeomFilter(theMeshGen, theMesh, theShape, theSubShape, theElemType):
-    import geompy
-    if theShape != theSubShape:
-        aName = str(theSubShape)
-        geompy.addToStudyInFather(theShape,theSubShape,aName)
-
-    theMeshGen.Compute(theMesh,theShape)
-
-    aFilterMgr = theMeshGen.CreateFilterManager()
-    aFilter = aFilterMgr.CreateFilter()
-   
-    aBelongToGeom = aFilterMgr.CreateBelongToGeom()
-    aBelongToGeom.SetGeom(theSubShape)
-    aBelongToGeom.SetElementType(theElemType)
-    
-    aFilter.SetPredicate(aBelongToGeom)
-    return aFilter.GetElementsId(theMesh)
-
-anElemType = SMESH.ALL;
-print "anElemType =", anElemType
-#anIds = CheckBelongToGeomFilter(smesh,mesh,box,subShapeList[1],SMESH.FACE)
-anIds = CheckBelongToGeomFilter(smesh,mesh,box,box,SMESH.FACE)
-print "anIds = ", anIds
-
-salome.sg.updateObjBrowser(1);
diff --git a/src/SMESH_SWIG/SMESH_GroupFromGeom.py b/src/SMESH_SWIG/SMESH_GroupFromGeom.py
deleted file mode 100644 (file)
index 3647c77..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : SMESH_GroupFromGeom.py
-#  Module : SMESH
-
-from SMESH_test1 import *
-import SMESH
-
-# Compute the mesh created in SMESH_test1
-
-smesh.Compute(mesh, box)
-
-# Create geometry groups on plane:
-aGeomGroup1 = geompy.CreateGroup(face , geompy.ShapeType["FACE"])
-geompy.AddObject(aGeomGroup1, 1)
-
-aGeomGroup2 = geompy.CreateGroup(face , geompy.ShapeType["EDGE"])
-
-geompy.AddObject(aGeomGroup2, 3)
-geompy.AddObject(aGeomGroup2, 6)
-geompy.AddObject(aGeomGroup2, 8)
-geompy.AddObject(aGeomGroup2, 10)
-
-geompy.addToStudy(aGeomGroup1, "Group on Faces")
-geompy.addToStudy(aGeomGroup2, "Group on Edges")
-
-aSmeshGroup1 = mesh.CreateGroupFromGEOM(SMESH.FACE, "SMESHGroup1", aGeomGroup1)
-aSmeshGroup2 = mesh.CreateGroupFromGEOM(SMESH.EDGE, "SMESHGroup2", aGeomGroup2)
-
-salome.sg.updateObjBrowser(1);
diff --git a/src/SMESH_SWIG/SMESH_GroupFromGeom2.py b/src/SMESH_SWIG/SMESH_GroupFromGeom2.py
deleted file mode 100755 (executable)
index 37f333d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#==============================================================================
-#  Info.
-#  Bug (from script, bug)   : SMESH_GroupFromGeom.py, PAL6945
-#  Modified                 : 25/11/2004
-#  Author                   : Kovaltchuk Alexey
-#  Project                  : PAL/SALOME
-#============================================================================== 
-from SMESH_test1 import *
-import SMESH
-
-# Compute the mesh created in SMESH_test1
-
-smesh.Compute(mesh, box)
-
-# Create geometry groups on plane:
-aGeomGroup1 = geompy.CreateGroup(face , geompy.ShapeType["FACE"])
-geompy.AddObject(aGeomGroup1, 1)
-
-aGeomGroup2 = geompy.CreateGroup(face , geompy.ShapeType["EDGE"])
-
-geompy.AddObject(aGeomGroup2, 3)
-geompy.AddObject(aGeomGroup2, 6)
-geompy.AddObject(aGeomGroup2, 8)
-geompy.AddObject(aGeomGroup2, 10)
-
-geompy.addToStudy(aGeomGroup1, "Group on Faces")
-geompy.addToStudy(aGeomGroup2, "Group on Edges")
-
-aSmeshGroup1 = mesh.CreateGroupFromGEOM(SMESH.FACE, "SMESHGroup1", aGeomGroup1)
-aSmeshGroup2 = mesh.CreateGroupFromGEOM(SMESH.EDGE, "SMESHGroup2", aGeomGroup2)
-
-print "Create aGroupOnShell - a group linked to a shell"
-aGroupOnShell = mesh.CreateGroupFromGEOM(SMESH.EDGE, "GroupOnShell", shell)
-print "aGroupOnShell type =", aGroupOnShell.GetType()
-print "aGroupOnShell size =", aGroupOnShell.Size()
-print "aGroupOnShell ids :", aGroupOnShell.GetListOfID()
-
-print " "
-
-print "Modify <LocalLength> hypothesis: 100 -> 50"
-hypLen1.SetLength(50)
-print "Contents of aGroupOnShell changes:"
-print "aGroupOnShell size =", aGroupOnShell.Size()
-print "aGroupOnShell ids :", aGroupOnShell.GetListOfID()
-
-print " "
-
-print "Re-compute mesh, contents of aGroupOnShell changes again:"
-smesh.Compute(mesh, box)
-print "aGroupOnShell size =", aGroupOnShell.Size()
-print "aGroupOnShell ids :", aGroupOnShell.GetListOfID()
-
-salome.sg.updateObjBrowser(1);
diff --git a/src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py b/src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py
deleted file mode 100644 (file)
index 6a4533e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-from smesh import *
-
-def BuildGroupLyingOn(theMesh, theElemType, theName, theShape):
-    aFilterMgr = smesh.CreateFilterManager()
-    aFilter = aFilterMgr.CreateFilter()
-   
-    aLyingOnGeom = aFilterMgr.CreateLyingOnGeom()
-    aLyingOnGeom.SetGeom(theShape)
-    aLyingOnGeom.SetElementType(theElemType)
-    
-    aFilter.SetPredicate(aLyingOnGeom)
-    anIds = aFilter.GetElementsId(theMesh)
-
-    aGroup = theMesh.CreateGroup(theElemType, theName)
-    aGroup.Add(anIds)
-
-#Example
-## from SMESH_test1 import *
-
-## smesh.Compute(mesh, box)
-## BuildGroupLyingOn(mesh, SMESH.FACE, "Group of faces lying on edge", edge )
-
-## salome.sg.updateObjBrowser(1);
diff --git a/src/SMESH_SWIG/SMESH_Partition1_tetra.py b/src/SMESH_SWIG/SMESH_Partition1_tetra.py
deleted file mode 100644 (file)
index e9bb55f..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-#
-# Tetrahedrization of the geometry generated by the Python script GEOM_Partition1.py
-# Hypothesis and algorithms for the mesh generation are global
-#
-#%Make geometry (like CEA script (A1)) using Partition algorithm% from OCC
-# -- Rayon de la bariere
-
-import salome
-import geompy
-from math import sqrt
-
-import StdMeshers
-import NETGENPlugin
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smesh.SetCurrentStudy(salome.myStudy)
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-#---------------------------------------------------------------
-
-barier_height = 7.0
-barier_radius = 5.6 / 2 # Rayon de la bariere
-colis_radius = 1.0 / 2  # Rayon du colis
-colis_step = 2.0        # Distance s\89parant deux colis
-cc_width = 0.11         # Epaisseur du complement de colisage
-
-# --
-
-cc_radius = colis_radius + cc_width
-colis_center = sqrt(2.0)*colis_step/2
-
-# --
-
-boolean_common  = 1
-boolean_cut     = 2
-boolean_fuse    = 3
-boolean_section = 4
-
-# --
-
-p0 = geompy.MakeVertex(0.,0.,0.)
-vz = geompy.MakeVectorDXDYDZ(0.,0.,1.)
-
-# --
-
-barier = geompy.MakeCylinder(p0, vz, barier_radius, barier_height)
-
-# --
-
-colis = geompy.MakeCylinder(p0, vz, colis_radius, barier_height)
-cc    = geompy.MakeCylinder(p0, vz,    cc_radius, barier_height)
-
-colis_cc = geompy.MakeCompound([colis, cc])
-colis_cc = geompy.MakeTranslation(colis_cc, colis_center, 0.0, 0.0)
-
-colis_cc_multi = geompy.MultiRotate1D(colis_cc, vz, 4)
-
-# --
-
-alveole = geompy.MakePartition([colis_cc_multi, barier])
-
-print "Analysis of the geometry to mesh (right after the Partition) :"
-
-subShellList = geompy.SubShapeAll(alveole, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(alveole, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(alveole, geompy.ShapeType["EDGE"])
-
-print "number of Shells in alveole : ", len(subShellList)
-print "number of Faces  in alveole : ", len(subFaceList)
-print "number of Edges  in alveole : ", len(subEdgeList)
-
-subshapes = geompy.SubShapeAll(alveole, geompy.ShapeType["SHAPE"])
-
-## there are 9 subshapes
-
-comp1 = geompy.MakeCompound( [ subshapes[0], subshapes[1] ] )
-comp2 = geompy.MakeCompound( [ subshapes[2], subshapes[3] ] )
-comp3 = geompy.MakeCompound( [ subshapes[4], subshapes[5] ] )
-comp4 = geompy.MakeCompound( [ subshapes[6], subshapes[7] ] )
-
-compGOs = []
-compGOs.append( comp1 )
-compGOs.append( comp2 )
-compGOs.append( comp3 )
-compGOs.append( comp4 )
-comp = geompy.MakeCompound( compGOs )
-
-alveole = geompy.MakeCompound( [ comp, subshapes[8] ])
-
-idalveole = geompy.addToStudy(alveole, "alveole")
-
-print "Analysis of the geometry to mesh (right after the MakeCompound) :"
-
-subShellList = geompy.SubShapeAll(alveole, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(alveole, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(alveole, geompy.ShapeType["EDGE"])
-
-print "number of Shells in alveole : ", len(subShellList)
-print "number of Faces  in alveole : ", len(subFaceList)
-print "number of Edges  in alveole : ", len(subEdgeList)
-
-status = geompy.CheckShape(alveole)
-print " check status ", status
-
-# ---- launch SMESH
-
-print "-------------------------- create Hypothesis (In this case global hypothesis are used)"
-
-print "-------------------------- NumberOfSegments"
-
-numberOfSegments = 10
-
-hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg.SetNumberOfSegments(numberOfSegments)
-print hypNbSeg.GetName()
-print hypNbSeg.GetId()
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_10")
-
-print "-------------------------- MaxElementArea"
-
-maxElementArea = 0.1
-
-hypArea = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hypArea.SetMaxElementArea(maxElementArea)
-print hypArea.GetName()
-print hypArea.GetId()
-print hypArea.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea), "MaxElementArea_0.1")
-
-print "-------------------------- MaxElementVolume"
-
-maxElementVolume = 0.5
-
-hypVolume = smesh.CreateHypothesis("MaxElementVolume", "libStdMeshersEngine.so")
-hypVolume.SetMaxElementVolume(maxElementVolume)
-print hypVolume.GetName()
-print hypVolume.GetId()
-print hypVolume.GetMaxElementVolume()
-
-smeshgui.SetName(salome.ObjectToID(hypVolume), "MaxElementVolume_0.5")
-
-print "-------------------------- create Algorithms"
-
-print "-------------------------- Regular_1D"
-
-regular1D = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(regular1D), "Wire Discretisation")
-
-print "-------------------------- MEFISTO_2D"
-
-mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(mefisto2D), "MEFISTO_2D")
-
-print "-------------------------- NETGEN_3D"
-
-netgen3D = smesh.CreateHypothesis("NETGEN_3D", "libNETGENEngine.so")
-smeshgui.SetName(salome.ObjectToID(netgen3D), "NETGEN_3D")
-
-# ---- init a Mesh with the alveole
-shape_mesh = salome.IDToObject( idalveole )
-
-mesh = smesh.CreateMesh(shape_mesh)
-smeshgui.SetName(salome.ObjectToID(mesh), "MeshAlveole")
-
-# ---- add hypothesis to alveole
-
-print "-------------------------- add hypothesis to alveole"
-
-mesh.AddHypothesis(shape_mesh,regular1D)
-mesh.AddHypothesis(shape_mesh,hypNbSeg)
-
-mesh.AddHypothesis(shape_mesh,mefisto2D)
-mesh.AddHypothesis(shape_mesh,hypArea)
-
-mesh.AddHypothesis(shape_mesh,netgen3D)
-mesh.AddHypothesis(shape_mesh,hypVolume)
-
-print "-------------------------- compute the mesh of alveole "
-ret = smesh.Compute(mesh,shape_mesh)
-
-if ret != 0:
-    log=mesh.GetLog(0) # no erase trace
-    for linelog in log:
-        print linelog
-    print "Information about the Mesh_mechanic:"
-    print "Number of nodes       : ", mesh.NbNodes()
-    print "Number of edges       : ", mesh.NbEdges()
-    print "Number of faces       : ", mesh.NbFaces()
-    print "Number of triangles   : ", mesh.NbTriangles()
-    print "Number of volumes     : ", mesh.NbVolumes()
-    print "Number of tetrahedrons: ", mesh.NbTetras()
-else:
-    print "problem when computing the mesh"
-
-salome.sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/SMESH_Sphere.py b/src/SMESH_SWIG/SMESH_Sphere.py
deleted file mode 100644 (file)
index 893e544..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-#  GEOM GEOM_SWIG : binding of C++ omplementaion with Python
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : GEOM_Sphere.py
-#  Author : Damien COQUERET, Open CASCADE
-#  Module : GEOM
-#  $Header: 
-
-from geompy import *
-from math import *
-
-import smesh
-
-# It is an example of creating a hexahedrical mesh on a sphere.
-#
-# Used approach allows to avoid problems with degenerated and
-# seam edges without special processing of geometrical shapes
-
-#-----------------------------------------------------------------------
-#Variables
-Radius  = 100.
-Dist    = Radius / 2.
-Factor  = 2.5
-Angle90 = pi / 2.
-NbSeg   = 10
-
-PointsList = []
-ShapesList = []
-
-#Basic Elements
-P0 = MakeVertex(0., 0., 0.)
-P1 = MakeVertex(-Dist, -Dist, -Dist)
-P2 = MakeVertex(-Dist, -Dist, Dist)
-P3 = MakeVertex(-Dist, Dist, Dist)
-P4 = MakeVertex(-Dist, Dist, -Dist)
-
-VZ = MakeVectorDXDYDZ(0., 0., 1.)
-
-#Construction Elements
-PointsList.append(P1)
-PointsList.append(P2)
-PointsList.append(P3)
-PointsList.append(P4)
-PointsList.append(P1)
-
-PolyLine = MakePolyline(PointsList)
-
-Face1 = MakeFace(PolyLine, 1)
-Face2 = MakeScaleTransform(Face1, P0, Factor)
-Face3 = MakeScaleTransform(Face1, P0, -1.)
-
-#Models
-Sphere = MakeSphereR(Radius)
-
-Block = MakeHexa2Faces(Face1, Face2)
-Cube  = MakeHexa2Faces(Face1, Face3)
-
-Common1 = MakeBoolean(Sphere, Block, 1)
-Common2 = MakeRotation(Common1, VZ, Angle90)
-
-MultiBlock1 = MakeMultiTransformation1D(Common1, 21, -1, 3)
-MultiBlock2 = MakeMultiTransformation1D(Common2, 31, -1, 3)
-
-#Reconstruct sphere from several blocks
-ShapesList.append(Cube)
-ShapesList.append(MultiBlock1)
-ShapesList.append(MultiBlock2)
-Compound = MakeCompound(ShapesList)
-
-Result = MakeGlueFaces(Compound, 0.1)
-
-#addToStudy
-Id_Sphere      = addToStudy(Sphere, "Sphere")
-Id_Cube        = addToStudy(Cube, "Cube")
-
-Id_Common1     = addToStudy(Common1, "Common1")
-Id_Common2     = addToStudy(Common2, "Common2")
-
-Id_MultiBlock1 = addToStudy(MultiBlock1, "MultiBlock1")
-Id_MultiBlock2 = addToStudy(MultiBlock2, "MultiBlock2")
-
-Id_Result      = addToStudy(Result, "Result")
-
-#-----------------------------------------------------------------------
-#Meshing
-my_hexa = smesh.Mesh(Result, "Sphere_Mesh")
-algo = my_hexa.Segment()
-algo.NumberOfSegments(NbSeg)
-my_hexa.Quadrangle()
-my_hexa.Hexahedron()
-my_hexa.Compute()
diff --git a/src/SMESH_SWIG/SMESH_blocks.py b/src/SMESH_SWIG/SMESH_blocks.py
deleted file mode 100644 (file)
index 0430867..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#  SMESH SMESH_SWIG : binding of C++ implementaion with Python
-#
-#  Copyright (C) 2003  CEA
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-#
-#
-#
-#  File   : SMESH_blocks.py
-#  Author : Julia DOROVSKIKH
-#  Module : SMESH
-#  $Header$
-
-import salome
-import geompy
-import math
-
-import GEOM_Spanner
-
-isBlocksTest = 0 # False
-isMeshTest   = 1 # True
-hasGUI       = 1 # True
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smesh.SetCurrentStudy(salome.myStudy)
-
-GEOM_Spanner.MakeSpanner(salome, geompy, math, isBlocksTest, isMeshTest, smesh, hasGUI)
-
-salome.sg.updateObjBrowser(1);
diff --git a/src/SMESH_SWIG/SMESH_box.py b/src/SMESH_SWIG/SMESH_box.py
deleted file mode 100755 (executable)
index 2902c73..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#==============================================================================
-#  Info.
-#  Bug (from script, bug)   : box.py, PAL5223
-#  Modified                 : 25/11/2004
-#  Author                   : Kovaltchuk Alexey
-#  Project                  : PAL/SALOME
-#==============================================================================
-#
-# Salome geometry and meshing for a box
-#
-import salome
-from salome import sg
-import geompy
-
-import StdMeshers
-
-# ---- launch GEOM
-
-geom          = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
-meshgenerator = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-###geom.GetCurrentStudy(salome.myStudy._get_StudyId())
-meshgenerator.SetCurrentStudy(salome.myStudy)
-
-# Plate
-
-box    = geompy.MakeBox(0.,0.,0.,1.,1.,1.)
-boxId  = geompy.addToStudy(box,"box")
-
-# ---- launch SMESH
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-# meshgenerator=smeshpy.smeshpy()
-
-
-# Hypothesis
-
-hypL1=meshgenerator.CreateHypothesis("LocalLength","libStdMeshersEngine.so")
-hypL1.SetLength(0.25)
-hypL1Id = salome.ObjectToID(hypL1) 
-smeshgui.SetName(hypL1Id, "LocalLength")
-
-# Algorithm
-
-alg1D=meshgenerator.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-alg1DId = salome.ObjectToID(alg1D) 
-smeshgui.SetName(alg1DId, "algo1D")
-
-alg2D=meshgenerator.CreateHypothesis("Quadrangle_2D", "libStdMeshersEngine.so")
-alg2DId = salome.ObjectToID(alg2D) 
-smeshgui.SetName(alg2DId, "algo2D")
-
-alg3D=meshgenerator.CreateHypothesis("Hexa_3D", "libStdMeshersEngine.so")
-alg3DId = salome.ObjectToID(alg3D) 
-smeshgui.SetName(alg3DId, "algo3D")
-# ---- init a Mesh
-
-box_mesh=meshgenerator.CreateMesh(box)
-box_meshId = salome.ObjectToID(box_mesh)
-smeshgui.SetName(box_meshId, "box_mesh")
-
-# ---- set Hypothesis & Algorithm
-
-box_mesh.AddHypothesis(box,alg1D)
-box_mesh.AddHypothesis(box,alg2D)
-box_mesh.AddHypothesis(box,alg3D)
-box_mesh.AddHypothesis(box,hypL1)
-
-meshgenerator.Compute(box_mesh,box)
-
-sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/SMESH_box2_tetra.py b/src/SMESH_SWIG/SMESH_box2_tetra.py
deleted file mode 100644 (file)
index e8a4afd..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-#
-# Tetrahedrization of the geometry union of 2 boxes having a face in common
-# Hypothesis and algorithms for the mesh generation are global
-#
-
-import salome
-import geompy
-
-import StdMeshers
-import NETGENPlugin
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId);
-
-# ---- define 2 boxes box1 and box2
-
-box1 = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-
-idbox1 = geompy.addToStudy(box1, "box1")
-
-print "Analysis of the geometry box1 :"
-subShellList = geompy.SubShapeAll(box1, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box1, geompy.ShapeType["EDGE"])
-
-print "number of Shells in box1 : ", len(subShellList)
-print "number of Faces  in box1 : ", len(subFaceList)
-print "number of Edges  in box1 : ", len(subEdgeList)
-
-box2 = geompy.MakeBox(100., 0., 0., 200., 200., 300.)
-
-idbox2 = geompy.addToStudy(box2, "box2")
-
-print "Analysis of the geometry box2 :"
-subShellList = geompy.SubShapeAll(box2, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box2, geompy.ShapeType["EDGE"])
-
-print "number of Shells in box2 : ", len(subShellList)
-print "number of Faces  in box2 : ", len(subFaceList)
-print "number of Edges  in box2 : ", len(subEdgeList)
-
-# append the tow boxes to make ine shel, referrencing only once
-# the internal interface
-
-shell = geompy.MakePartition([box1, box2])
-idshell = geompy.addToStudy(shell, "shell")
-
-print "Analysis of the geometry shell (union of box1 and box2) :"
-subShellList = geompy.SubShapeAll(shell, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(shell, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(shell, geompy.ShapeType["EDGE"])
-
-print "number of Shells in shell : ", len(subShellList)
-print "number of Faces  in shell : ", len(subFaceList)
-print "number of Edges  in shell : ", len(subEdgeList)
-
-
-### ---------------------------- SMESH --------------------------------------
-
-# ---- create Hypothesis
-
-print "-------------------------- create Hypothesis"
-
-print "-------------------------- NumberOfSegments"
-
-numberOfSegments = 10
-
-hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg.SetNumberOfSegments(numberOfSegments)
-
-print hypNbSeg.GetName()
-print hypNbSeg.GetId()
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_10")
-
-print "-------------------------- MaxElementArea"
-
-maxElementArea = 500
-
-hypArea = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hypArea.SetMaxElementArea(maxElementArea)
-
-print hypArea.GetName()
-print hypArea.GetId()
-print hypArea.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea), "MaxElementArea_500")
-
-print "-------------------------- MaxElementVolume"
-
-maxElementVolume = 500
-
-hypVolume = smesh.CreateHypothesis("MaxElementVolume", "libStdMeshersEngine.so")
-hypVolume.SetMaxElementVolume(maxElementVolume)
-
-print hypVolume.GetName()
-print hypVolume.GetId()
-print hypVolume.GetMaxElementVolume()
-
-smeshgui.SetName(salome.ObjectToID(hypVolume), "MaxElementVolume_500")
-
-# ---- create Algorithms
-
-print "-------------------------- create Algorithms"
-
-print "-------------------------- Regular_1D"
-
-regular1D = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(regular1D), "Wire Discretisation")
-
-print "-------------------------- MEFISTO_2D"
-
-mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(mefisto2D), "MEFISTO_2D")
-
-print "-------------------------- NETGEN_3D"
-
-netgen3D = smesh.CreateHypothesis("NETGEN_3D", "libNETGENEngine.so")
-smeshgui.SetName(salome.ObjectToID(netgen3D), "NETGEN_3D")
-
-# ---- init a Mesh with the shell
-
-mesh = smesh.CreateMesh(shell)
-smeshgui.SetName(salome.ObjectToID(mesh), "MeshBox2")
-
-# ---- add hypothesis to shell
-
-print "-------------------------- add hypothesis to shell"
-
-mesh.AddHypothesis(shell,regular1D)
-mesh.AddHypothesis(shell,hypNbSeg)
-
-mesh.AddHypothesis(shell,mefisto2D)
-mesh.AddHypothesis(shell,hypArea)
-
-mesh.AddHypothesis(shell,netgen3D)
-mesh.AddHypothesis(shell,hypVolume)
-
-salome.sg.updateObjBrowser(1)
-
-print "-------------------------- compute shell"
-ret = smesh.Compute(mesh,shell)
-print ret
-if ret != 0:
-    log = mesh.GetLog(0) # no erase trace
-    for linelog in log:
-        print linelog
-    print "Information about the MeshBox2:"
-    print "Number of nodes       : ", mesh.NbNodes()
-    print "Number of edges       : ", mesh.NbEdges()
-    print "Number of faces       : ", mesh.NbFaces()
-    print "Number of triangles   : ", mesh.NbTriangles()
-    print "Number of volumes     : ", mesh.NbVolumes()
-    print "Number of tetrahedrons: ", mesh.NbTetras()
-else:
-    print "probleme when computing the mesh"
diff --git a/src/SMESH_SWIG/SMESH_box3_tetra.py b/src/SMESH_SWIG/SMESH_box3_tetra.py
deleted file mode 100644 (file)
index af40827..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-#
-# Tetrahedrization of the geometry union of 3 boxes aligned where the middle
-# one has a race in common with the two others.
-# Hypothesis and algorithms for the mesh generation are global
-#
-
-import salome
-import geompy
-
-import StdMeshers
-import NETGENPlugin
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId);
-
-# ---- define 3 boxes box1, box2 and box3
-
-box1 = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-
-idbox1 = geompy.addToStudy(box1, "box1")
-
-print "Analysis of the geometry box1 :"
-subShellList = geompy.SubShapeAll(box1, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box1, geompy.ShapeType["EDGE"])
-
-print "number of Shells in box1 : ", len(subShellList)
-print "number of Faces  in box1 : ", len(subFaceList)
-print "number of Edges  in box1 : ", len(subEdgeList)
-
-box2 = geompy.MakeBox(100., 0., 0., 200., 200., 300.)
-
-idbox2 = geompy.addToStudy(box2, "box2")
-
-print "Analysis of the geometry box2 :"
-subShellList = geompy.SubShapeAll(box2, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box2, geompy.ShapeType["EDGE"])
-
-print "number of Shells in box2 : ", len(subShellList)
-print "number of Faces  in box2 : ", len(subFaceList)
-print "number of Edges  in box2 : ", len(subEdgeList)
-
-box3 = geompy.MakeBox(0., 0., 300., 200., 200., 500.)
-
-idbox3 = geompy.addToStudy(box3, "box3")
-
-print "Analysis of the geometry box3 :"
-subShellList = geompy.SubShapeAll(box3, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box3, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box3, geompy.ShapeType["EDGE"])
-
-print "number of Shells in box3 : ", len(subShellList)
-print "number of Faces  in box3 : ", len(subFaceList)
-print "number of Edges  in box3 : ", len(subEdgeList)
-
-shell = geompy.MakePartition([box1, box2, box3])
-idshell = geompy.addToStudy(shell,"shell")
-
-print "Analysis of the geometry shell (union of box1, box2 and box3) :"
-subShellList = geompy.SubShapeAll(shell, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(shell, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(shell, geompy.ShapeType["EDGE"])
-
-print "number of Shells in shell : ", len(subShellList)
-print "number of Faces  in shell : ", len(subFaceList)
-print "number of Edges  in shell : ", len(subEdgeList)
-
-
-### ---------------------------- SMESH --------------------------------------
-
-# ---- create Hypothesis
-
-print "-------------------------- create Hypothesis"
-
-print "-------------------------- NumberOfSegments"
-
-numberOfSegments = 10
-
-hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg.SetNumberOfSegments(numberOfSegments)
-
-print hypNbSeg.GetName()
-print hypNbSeg.GetId()
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_10")
-
-print "-------------------------- MaxElementArea"
-
-maxElementArea = 500
-
-hypArea = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hypArea.SetMaxElementArea(maxElementArea)
-
-print hypArea.GetName()
-print hypArea.GetId()
-print hypArea.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea), "MaxElementArea_500")
-
-print "-------------------------- MaxElementVolume"
-
-maxElementVolume = 500
-
-hypVolume = smesh.CreateHypothesis("MaxElementVolume", "libStdMeshersEngine.so")
-hypVolume.SetMaxElementVolume(maxElementVolume)
-
-print hypVolume.GetName()
-print hypVolume.GetId()
-print hypVolume.GetMaxElementVolume()
-
-smeshgui.SetName(salome.ObjectToID(hypVolume), "MaxElementVolume_500")
-
-# ---- create Algorithms
-
-print "-------------------------- create Algorithms"
-
-print "-------------------------- Regular_1D"
-
-regular1D = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(regular1D), "Wire Discretisation")
-
-print "-------------------------- MEFISTO_2D"
-
-mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(mefisto2D), "MEFISTO_2D")
-
-print "-------------------------- NETGEN_3D"
-
-netgen3D = smesh.CreateHypothesis("NETGEN_3D", "libNETGENEngine.so")
-smeshgui.SetName(salome.ObjectToID(netgen3D), "NETGEN_3D")
-
-# ---- init a Mesh with the shell
-
-mesh = smesh.CreateMesh(shell)
-smeshgui.SetName(salome.ObjectToID(mesh), "MeshBox3")
-
-# ---- add hypothesis to shell
-
-print "-------------------------- add hypothesis to shell"
-
-mesh.AddHypothesis(shell,regular1D)
-mesh.AddHypothesis(shell,hypNbSeg)
-
-mesh.AddHypothesis(shell,mefisto2D)
-mesh.AddHypothesis(shell,hypArea)
-
-mesh.AddHypothesis(shell,netgen3D)
-mesh.AddHypothesis(shell,hypVolume)
-
-salome.sg.updateObjBrowser(1)
-
-print "-------------------------- compute shell"
-ret = smesh.Compute(mesh,shell)
-print ret
-if ret != 0:
-    log = mesh.GetLog(0) # no erase trace
-    for linelog in log:
-        print linelog
-    print "Information about the MeshBox3:"
-    print "Number of nodes       : ", mesh.NbNodes()
-    print "Number of edges       : ", mesh.NbEdges()
-    print "Number of faces       : ", mesh.NbFaces()
-    print "Number of triangles   : ", mesh.NbTriangles()
-    print "Number of volumes     : ", mesh.NbVolumes()
-    print "Number of tetrahedrons: ", mesh.NbTetras()
-else:
-    print "probleme when computing the mesh"
diff --git a/src/SMESH_SWIG/SMESH_box_tetra.py b/src/SMESH_SWIG/SMESH_box_tetra.py
deleted file mode 100644 (file)
index 72b45e1..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-#
-# Tetrahedrization of a simple box. Hypothesis and algorithms for
-# the mesh generation are global
-#
-
-import salome
-import geompy
-
-import StdMeshers
-import NETGENPlugin
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId);
-
-# ---- define a boxe
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-
-idbox = geompy.addToStudy(box, "box")
-
-print "Analysis of the geometry box :"
-subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(box, geompy.ShapeType["EDGE"])
-
-print "number of Shells in box : ", len(subShellList)
-print "number of Faces  in box : ", len(subFaceList)
-print "number of Edges  in box : ", len(subEdgeList)
-
-
-### ---------------------------- SMESH --------------------------------------
-
-# ---- create Hypothesis
-
-print "-------------------------- create Hypothesis"
-
-print "-------------------------- NumberOfSegments"
-
-numberOfSegments = 10
-
-hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg.SetNumberOfSegments(numberOfSegments)
-
-print hypNbSeg.GetName()
-print hypNbSeg.GetId()
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_10")
-
-print "-------------------------- MaxElementArea"
-
-maxElementArea = 500
-
-hypArea = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hypArea.SetMaxElementArea(maxElementArea)
-
-print hypArea.GetName()
-print hypArea.GetId()
-print hypArea.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea), "MaxElementArea_500")
-
-print "-------------------------- MaxElementVolume"
-
-maxElementVolume = 500
-
-hypVolume = smesh.CreateHypothesis("MaxElementVolume", "libStdMeshersEngine.so")
-hypVolume.SetMaxElementVolume(maxElementVolume)
-
-print hypVolume.GetName()
-print hypVolume.GetId()
-print hypVolume.GetMaxElementVolume()
-
-smeshgui.SetName(salome.ObjectToID(hypVolume), "MaxElementVolume_500")
-
-# ---- create Algorithms
-
-print "-------------------------- create Algorithms"
-
-print "-------------------------- Regular_1D"
-
-regular1D = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(regular1D), "Wire Discretisation")
-
-print "-------------------------- MEFISTO_2D"
-
-mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(mefisto2D), "MEFISTO_2D")
-
-print "-------------------------- NETGEN_3D"
-
-netgen3D = smesh.CreateHypothesis("NETGEN_3D", "libNETGENEngine.so")
-smeshgui.SetName(salome.ObjectToID(netgen3D), "NETGEN_3D")
-
-# ---- init a Mesh with the boxe
-
-mesh = smesh.CreateMesh(box)
-smeshgui.SetName(salome.ObjectToID(mesh), "MeshBox")
-
-# ---- add hypothesis to the boxe
-
-print "-------------------------- add hypothesis to the box"
-
-mesh.AddHypothesis(box,regular1D)
-mesh.AddHypothesis(box,hypNbSeg)
-
-mesh.AddHypothesis(box,mefisto2D)
-mesh.AddHypothesis(box,hypArea)
-
-mesh.AddHypothesis(box,netgen3D)
-mesh.AddHypothesis(box,hypVolume)
-
-salome.sg.updateObjBrowser(1)
-
-print "-------------------------- compute the mesh of the boxe"
-ret = smesh.Compute(mesh,box)
-print ret
-if ret != 0:
-    log = mesh.GetLog(0) # no erase trace
-    for linelog in log:
-        print linelog
-    print "Information about the MeshBox:"
-    print "Number of nodes       : ", mesh.NbNodes()
-    print "Number of edges       : ", mesh.NbEdges()
-    print "Number of faces       : ", mesh.NbFaces()
-    print "Number of triangles   : ", mesh.NbTriangles()
-    print "Number of volumes     : ", mesh.NbVolumes()
-    print "Number of tetrahedrons: ", mesh.NbTetras()
-else:
-    print "probleme when computing the mesh"
diff --git a/src/SMESH_SWIG/SMESH_controls.py b/src/SMESH_SWIG/SMESH_controls.py
deleted file mode 100644 (file)
index 1d5080d..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-#  Copyright (C) 2004  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-#  This library is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Lesser General Public
-#  License as published by the Free Software Foundation; either
-#  version 2.1 of the License.
-#
-#  This library is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Lesser General Public License for more details.
-#
-#  You should have received a copy of the GNU Lesser General Public
-#  License along with this library; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-#  File   : SMESH_control.py
-#  Author : Sergey LITONIN
-#  Module : SMESH
-
-
-import SMESH
-import SMESH_mechanic
-
-smesh  = SMESH_mechanic.smesh
-mesh   = SMESH_mechanic.mesh
-salome = SMESH_mechanic.salome
-
-
-aFilterMgr = smesh.CreateFilterManager()
-
-# Criterion : AREA > 100
-
-aFunctor = aFilterMgr.CreateArea()
-aPredicate = aFilterMgr.CreateMoreThan()
-aPredicate.SetNumFunctor( aFunctor )
-aPredicate.SetMargin( 100 )
-
-aFilter = aFilterMgr.CreateFilter()
-aFilter.SetPredicate( aPredicate )
-
-anIds = aFilter.GetElementsId( mesh )
-
-# print result
-print "Criterion: Area > 100 Nb = ", len( anIds )
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-# create group
-aGroup = mesh.CreateGroup( SMESH.FACE, "Area > 100" )
-aGroup.Add( anIds )
-
-
-# Criterion : Taper > 3e-15
-
-aFunctor = aFilterMgr.CreateTaper()
-aPredicate = aFilterMgr.CreateMoreThan()
-aPredicate.SetNumFunctor( aFunctor )
-aPredicate.SetMargin( 3e-15 )
-
-aFilter = aFilterMgr.CreateFilter()
-aFilter.SetPredicate( aPredicate )
-
-anIds = aFilter.GetElementsId( mesh )
-
-# print result
-print "Criterion: Taper > 3e-15 Nb = ", len( anIds )
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-# create group
-aGroup = mesh.CreateGroup( SMESH.FACE, "Taper > 3e-15" )
-aGroup.Add( anIds )
-
-
-# Criterion : ASPECT RATIO > 1.3
-
-aFunctor = aFilterMgr.CreateAspectRatio()
-aPredicate = aFilterMgr.CreateMoreThan()
-aPredicate.SetNumFunctor( aFunctor )
-aPredicate.SetMargin( 1.3 )
-
-aFilter = aFilterMgr.CreateFilter()
-aFilter.SetPredicate( aPredicate )
-
-anIds = aFilter.GetElementsId( mesh )
-
-# print result
-print "Criterion: Aspect Ratio > 1.3 Nb = ", len( anIds )
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-# create group
-aGroup = mesh.CreateGroup( SMESH.FACE, "Aspect Ratio > 1.3" )
-aGroup.Add( anIds )
-
-
-# Criterion : MINIMUM ANGLE < 30
-
-aFunctor = aFilterMgr.CreateMinimumAngle()
-aPredicate = aFilterMgr.CreateLessThan()
-aPredicate.SetNumFunctor( aFunctor )
-aPredicate.SetMargin( 30 )
-
-aFilter = aFilterMgr.CreateFilter()
-aFilter.SetPredicate( aPredicate )
-
-anIds = aFilter.GetElementsId( mesh )
-
-# print result
-print "Criterion: Minimum Angle < 30 Nb = ", len( anIds )
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-# create group
-aGroup = mesh.CreateGroup( SMESH.FACE, "Minimum Angle < 30" )
-aGroup.Add( anIds )
-
-# Criterion : Warp > 2e-13
-
-aFunctor = aFilterMgr.CreateWarping()
-aPredicate = aFilterMgr.CreateMoreThan()
-aPredicate.SetNumFunctor( aFunctor )
-aPredicate.SetMargin( 2e-13 )
-
-aFilter = aFilterMgr.CreateFilter()
-aFilter.SetPredicate( aPredicate )
-
-anIds = aFilter.GetElementsId( mesh )
-
-# print result
-print "Criterion: Warp > 2e-13 Nb = ", len( anIds )
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-# create group
-aGroup = mesh.CreateGroup( SMESH.FACE, "Warp > 2e-13" )
-aGroup.Add( anIds )
-
-# Criterion : Skew > 18
-
-aFunctor = aFilterMgr.CreateSkew()
-aPredicate = aFilterMgr.CreateMoreThan()
-aPredicate.SetNumFunctor( aFunctor )
-aPredicate.SetMargin( 18 )
-
-aFilter = aFilterMgr.CreateFilter()
-aFilter.SetPredicate( aPredicate )
-
-anIds = aFilter.GetElementsId( mesh )
-
-# print result
-print "Criterion: Skew > 18 Nb = ", len( anIds )
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-# create group
-aGroup = mesh.CreateGroup( SMESH.FACE, "Skew > 18" )
-aGroup.Add( anIds )
-
-# Criterion : Length > 10
-
-aFunctor = aFilterMgr.CreateLength()
-aPredicate = aFilterMgr.CreateMoreThan()
-aPredicate.SetNumFunctor( aFunctor )
-aPredicate.SetMargin( 10 )
-
-aFilter = aFilterMgr.CreateFilter()
-aFilter.SetPredicate( aPredicate )
-
-anIds = aFilter.GetElementsId( mesh )
-
-# print result
-print "Criterion: Length > 10 Nb = ", len( anIds )
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-# create group
-aGroup = mesh.CreateGroup( SMESH.EDGE, "Length > 10" )
-aGroup.Add( anIds )
-
-# Criterion : Borders at multi-connections = 2
-
-aFunctor = aFilterMgr.CreateMultiConnection()
-aPredicate = aFilterMgr.CreateEqualTo()
-aPredicate.SetNumFunctor( aFunctor )
-aPredicate.SetMargin( 2 )
-
-aFilter = aFilterMgr.CreateFilter()
-aFilter.SetPredicate( aPredicate )
-
-anIds = aFilter.GetElementsId( mesh )
-
-# print result
-print "Criterion: Borders at multi-connections = 2 Nb = ", len( anIds )
-#for i in range( len( anIds ) ):
-  #print anIds[ i ]
-
-# create group
-aGroup = mesh.CreateGroup( SMESH.EDGE, "Borders at multi-connections = 2" )
-aGroup.Add( anIds )
-
-
-salome.sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/SMESH_demo_hexa2_upd.py b/src/SMESH_SWIG/SMESH_demo_hexa2_upd.py
deleted file mode 100755 (executable)
index 755214a..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-#==============================================================================
-#  Info.
-#  Bug (from script, bug)   : SMESH_demo_hexa2_upd.py, PAL6781
-#  Modified                 : 25/11/2004
-#  Author                   : Kovaltchuk Alexey
-#  Project                  : PAL/SALOME
-#==============================================================================
-# Tetrahedrization of a geometry (box minus a inner cylinder).
-# Hypothesis and algorithms for the mesh generation are not global:
-# the mesh of some edges is thinner
-#
-
-import salome
-import geompy
-
-import StdMeshers
-import NETGENPlugin
-
-geom  = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId);
-
-import math
-
-# -----------------------------------------------------------------------------
-
-ShapeTypeShell     = 3
-ShapeTypeFace      = 4
-ShapeTypeEdge      = 6
-
-a = math.sqrt(2.)/4.
-ma = - a
-zero = 0.
-un = 1.
-mun= - un
-demi = 1./2.
-
-Orig = geompy.MakeVertex(zero,zero,zero)
-P0 = geompy.MakeVertex(a,a,zero)
-P1 = geompy.MakeVertex(zero,demi,zero)
-P2 = geompy.MakeVertex(ma,a,zero)
-P3 = geompy.MakeVertex(mun,un,zero)
-P4 = geompy.MakeVertex(un,un,zero)
-P5 = geompy.MakeVertex(zero,zero,un)
-
-arc = geompy.MakeArc(P0,P1,P2)
-e1 = geompy.MakeEdge(P2,P3)
-e2 = geompy.MakeEdge(P3,P4)
-e3 = geompy.MakeEdge(P4,P0)
-
-list = []
-list.append(arc)
-list.append(e1)
-list.append(e2)
-list.append(e3)
-
-wire = geompy.MakeWire(list)
-face = geompy.MakeFace(wire,1)
-
-dir = geompy.MakeVector(Orig,P5)
-vol1 = geompy.MakePipe(face,dir)
-
-angle = math.pi/2.
-#dir = geom.MakeVector(Orig,P5)
-vol2 = geompy.MakeRotation(vol1,dir,angle)
-
-vol3 = geompy.MakeRotation(vol2,dir,angle)
-
-vol4 = geompy.MakeRotation(vol3,dir,angle)
-
-list = []
-list.append(vol1)
-list.append(vol2)
-list.append(vol3)
-list.append(vol4)
-
-volComp = geompy.MakeCompound(list)
-
-tol3d = 1.e-3
-vol = geompy.MakeGlueFaces(volComp,tol3d)
-idVol = geompy.addToStudy(vol,"volume")
-
-print "Analysis of the final volume:"
-subShellList = geompy.SubShapeAllSorted(vol,ShapeTypeShell)
-subFaceList = geompy.SubShapeAllSorted(vol,ShapeTypeFace)
-subEdgeList = geompy.SubShapeAllSorted(vol,ShapeTypeEdge)
-
-print "number of Shells in the volume : ",len(subShellList)
-print "number of Faces in the volume : ",len(subFaceList)
-print "number of Edges in the volume : ",len(subEdgeList)
-
-idSubEdge = []
-for k in range(len(subEdgeList)):
-    idSubEdge.append(geompy.addToStudyInFather(vol,subEdgeList[k],"SubEdge"+str(k)))
-
-edgeZ = []
-edgeZ.append(subEdgeList[0])
-edgeZ.append(subEdgeList[3])
-edgeZ.append(subEdgeList[10])
-edgeZ.append(subEdgeList[11])
-edgeZ.append(subEdgeList[20])
-edgeZ.append(subEdgeList[21])
-edgeZ.append(subEdgeList[28])
-edgeZ.append(subEdgeList[31])
-
-idEdgeZ = []
-for i in range(8):
-    idEdgeZ.append(geompy.addToStudyInFather(vol,edgeZ[i],"EdgeZ"+str(i+1)))
-
-### ---------------------------- SMESH --------------------------------------
-
-# ---- create Hypothesis
-
-print "-------------------------- create Hypothesis"
-
-print "-------------------------- NumberOfSegments the global one"
-
-numberOfSegments = 10
-
-hypNbSeg=smesh.CreateHypothesis("NumberOfSegments","libStdMeshersEngine.so")
-hypNbSeg.SetNumberOfSegments(numberOfSegments)
-hypNbSegID = hypNbSeg.GetId()
-print hypNbSeg.GetName()
-print hypNbSegID
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments")
-
-print "-------------------------- NumberOfSegments in the Z direction"
-
-numberOfSegmentsZ = 40
-
-hypNbSegZ=smesh.CreateHypothesis("NumberOfSegments","libStdMeshersEngine.so")
-hypNbSegZ.SetNumberOfSegments(numberOfSegmentsZ)
-hypNbSegZID = hypNbSegZ.GetId()
-print hypNbSegZ.GetName()
-print hypNbSegZID
-print hypNbSegZ.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSegZ), "NumberOfSegmentsZ")
-
-# ---- create Algorithms
-
-print "-------------------------- create Algorithms"
-
-print "-------------------------- Regular_1D"
-
-regular1D=smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(regular1D), "Wire Discretisation")
-
-print "-------------------------- Quadrangle_2D"
-
-quad2D=smesh.CreateHypothesis("Quadrangle_2D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(quad2D), "Quadrangle_2D")
-
-print "-------------------------- Hexa_3D"
-
-hexa3D=smesh.CreateHypothesis("Hexa_3D", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(hexa3D), "Hexa_3D")
-
-# ---- init a Mesh with the volume
-
-mesh = smesh.CreateMesh(vol)
-smeshgui.SetName(salome.ObjectToID(mesh), "meshVolume")
-
-# ---- add hypothesis to the volume
-
-print "-------------------------- add hypothesis to the volume"
-
-ret=mesh.AddHypothesis(vol,regular1D)
-print ret
-ret=mesh.AddHypothesis(vol,hypNbSeg)
-print ret
-ret=mesh.AddHypothesis(vol,quad2D)
-print ret
-ret=mesh.AddHypothesis(vol,hexa3D)
-print ret
-
-for i in range(8):
-    print "-------------------------- add hypothesis to edge in the Z directions", (i+1)
-
-    subMeshEdgeZ = mesh.GetSubMesh(edgeZ[i],"SubMeshEdgeZ_"+str(i+1))
-
-    retZ = mesh.AddHypothesis(edgeZ[i],hypNbSegZ)
-    print " add hyp Z ", retZ
-
-salome.sg.updateObjBrowser(1)
-
-print "-------------------------- compute the mesh of the volume"
-
-ret=smesh.Compute(mesh,vol)
-
-print ret
-if ret != 0:
-##    log=mesh.GetLog(0) # no erase trace
-##    for linelog in log:
-##        print linelog
-    print "Information about the MeshBox :"
-    print "Number of nodes       : ", mesh.NbNodes()
-    print "Number of edges       : ", mesh.NbEdges()
-    print "Number of faces       : ", mesh.NbFaces()
-    print "Number of triangles   : ", mesh.NbTriangles()
-    print "Number of volumes     : ", mesh.NbVolumes()
-    print "Number of tetrahedrons: ", mesh.NbTetras()
-else:
-    print "problem when Computing the mesh"
-
-salome.sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/SMESH_fixation.py b/src/SMESH_SWIG/SMESH_fixation.py
deleted file mode 100644 (file)
index b10fcc8..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-#  This library is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Lesser General Public
-#  License as published by the Free Software Foundation; either
-#  version 2.1 of the License.
-#
-#  This library is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Lesser General Public License for more details.
-#
-#  You should have received a copy of the GNU Lesser General Public
-#  License along with this library; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-#  File   : SMESH_fix_volute.py
-#  Author : Paul RASCLE, EDF
-#  Module : SMESH
-#  $Header$
-
-import salome
-import geompy
-import math
-
-# -----------------------------------------------------------------------------
-
-def MakeFace(lstEdges) :
-    """
-    Creates a planar face from 4 edges
-    """
-    wire = geompy.MakeWire(lstEdges)
-    face = geompy.MakeFace(wire, 1)
-    return face
-
-# -----------------------------------------------------------------------------
-
-# ---- dimensions
-
-##longueurPlq  = 0.686
-##largeurPlq   = 0.573
-##epaisseurPlq = 0.150
-
-##hauteurFlanc   = 0.380
-##epaisseurFlanc = 0.112
-##rayonConge   = 0.150 - epaisseurFlanc
-
-##epaisseurFond = 0.162
-##rayonTrou = 0.075
-##posAxeTrou = hauteurFlanc -(0.180 + rayonTrou)
-##marge = 0.01
-##tol3d = 1.e-5
-
-longueurPlq  = 686
-largeurPlq   = 573
-epaisseurPlq = 150
-
-hauteurFlanc   = 380
-epaisseurFlanc = 112
-rayonConge   = 150 - epaisseurFlanc
-
-epaisseurFond = 162
-rayonTrou = 75
-posAxeTrou = hauteurFlanc - (180 + rayonTrou)
-marge = 10
-tol3d = 1.e-3
-
-# ---- points, directions de base
-
-p0 = geompy.MakeVertex(0., 0., 0.)
-
-vx = geompy.MakeVectorDXDYDZ(100., 0., 0.)
-vy = geompy.MakeVectorDXDYDZ(0., 100., 0.)
-vz = geompy.MakeVectorDXDYDZ(0., 0., 100.)
-
-# ---- ellipse du flanc
-
-he = hauteurFlanc - 2*rayonConge
-re = 0.5*(largeurPlq - epaisseurFond) - rayonConge
-sine = re/he
-cose = math.sqrt(1. - sine*sine)
-
-ve = geompy.MakeVectorDXDYDZ(sine, 0., cose)
-cyl0 = geompy.MakeCylinder(p0, ve, re, 2*he)
-cyl1 = geompy.MakeRotation(cyl0, ve, 0.5)
-cyle = geompy.MakeTranslation(cyl1, -marge*sine, 0., -marge*cose)
-
-pbe = geompy.MakeVertex(3*he, -2*re, 3*he)
-boxe = geompy.MakeBoxTwoPnt(p0, pbe)
-
-cylcoup = geompy.MakeBoolean(cyle, boxe, 2)
-
-aretes = []
-aretes = geompy.SubShapeAllSorted(cylcoup, geompy.ShapeType["EDGE"])
-
-shape = geompy.MakeCopy(aretes[0])
-aShape = geompy.MakeTranslation(shape, 0., rayonConge + re, epaisseurPlq + 2*rayonConge)
-
-
-# -----------------------------------------------------------------------------
-# ---- decoupage de la piece en volumes a 6 faces de 4 cotes
-# -----------------------------------------------------------------------------
-
-# ---- cotes x
-
-x0  = 0.
-x0h = rayonConge
-x1  = rayonConge + epaisseurFlanc
-xc  = longueurPlq/2
-x2  = longueurPlq - rayonConge - epaisseurFlanc
-x3h = longueurPlq - rayonConge
-x3  = longueurPlq
-
-# ---- cotes y
-
-y0  = 0.
-y0h = rayonConge
-y1  = largeurPlq - epaisseurFond
-y1m = y1 - marge
-y2  = largeurPlq
-y2p = largeurPlq + marge
-
-# ---- cotes z
-
-z0  = 0.
-z1m = epaisseurPlq - marge
-z1  = epaisseurPlq
-z2  = epaisseurPlq + rayonConge
-z3  = epaisseurPlq + 2*rayonConge
-z4  = epaisseurPlq + hauteurFlanc
-z4p = epaisseurPlq + hauteurFlanc + marge
-
-zc  = epaisseurPlq + posAxeTrou
-zc2 = epaisseurPlq + (posAxeTrou - rayonTrou)/3
-zc3 = epaisseurPlq + 2*(posAxeTrou - rayonTrou)/3
-
-# ---- decoupe du fond
-
-p11 = geompy.MakeVertex(x1, y1m, z1)
-p12 = geompy.MakeVertex(x1, y1m, z2)
-p13 = geompy.MakeVertex(x1, y1m, z3)
-p14 = geompy.MakeVertex(x1, y1m, z4)
-pc1 = geompy.MakeVertex(xc, y1m, z1)
-pc2 = geompy.MakeVertex(xc, y1m, zc2)
-pc3 = geompy.MakeVertex(xc, y1m, zc3)
-pcc = geompy.MakeVertex(xc, y1m, zc)
-pc4 = geompy.MakeVertex(xc, y1m, z4)
-p21 = geompy.MakeVertex(x2, y1m, z1)
-p22 = geompy.MakeVertex(x2, y1m, z2)
-p23 = geompy.MakeVertex(x2, y1m, z3)
-p24 = geompy.MakeVertex(x2, y1m, z4)
-pcf = geompy.MakeVertex(xc, y2p, zc)
-
-arc2 = geompy.MakeArc(p12,pc2,p22)
-arc3 = geompy.MakeArc(p13,pc3,p23)
-
-segz1  = geompy.MakeVector(p11,p21)
-segz41 = geompy.MakeVector(p14,pc4)
-segz42 = geompy.MakeVector(pc4,p24)
-segx11 = geompy.MakeVector(p11,p12)
-segx12 = geompy.MakeVector(p12,p13)
-segx13 = geompy.MakeVector(p13,p14)
-segxc2 = geompy.MakeVector(pc1,pc2)
-segxc3 = geompy.MakeVector(pc2,pc3)
-segxc4 = geompy.MakeVector(pcc,pc4)
-segx21 = geompy.MakeVector(p21,p22)
-segx22 = geompy.MakeVector(p22,p23)
-segx23 = geompy.MakeVector(p23,p24)
-segx1c1 = geompy.MakeVector(p13,pcc)
-segx1c2 = geompy.MakeVector(p14,pcc)
-segx2c1 = geompy.MakeVector(p23,pcc)
-segx2c2 = geompy.MakeVector(p24,pcc)
-
-facef = []
-facef.append(MakeFace([segx13,segx1c2,segx1c1]))
-facef.append(MakeFace([segx23,segx2c2,segx2c1]))
-facef.append(MakeFace([segx2c2,segxc4,segz42]))
-facef.append(MakeFace([segx1c2,segz41,segxc4]))
-facef.append(MakeFace([segx1c1,arc3,segx2c1]))
-facef.append(MakeFace([segx12,arc2,segx22,arc3]))
-facef.append(MakeFace([segx11,segz1,segx21,arc2]))
-
-vcccf = geompy.MakeVector(pcc, pcf)
-hcccf = y2p - y1m
-decf = []
-for face in facef:
-    decf.append(geompy.MakePrismVecH(face,vcccf,hcccf))
-
-pc  = geompy.MakeVertex(xc, 0., zc)
-py2 = geompy.MakeVertex(xc, y2, zc)
-axeCyl = geompy.MakeVector(pc, py2)
-
-cylFond = geompy.MakeCylinder(pc, vy, rayonTrou, 1.1*largeurPlq)
-cylFond2 = geompy.MakeRotation(cylFond, axeCyl, math.pi)
-
-fondec = []
-for id in (0,1,2,3):
-    fondec.append(geompy.MakeBoolean(decf[id], cylFond2, 2))
-fondec.append(geompy.MakeBoolean(decf[4], cylFond, 2))
-for id in (5,6):
-    fondec.append(decf[id])
-
-p_xcy2pz4p = geompy.MakeVertex(xc,y2p,z4p)
-p_x3y2pz4p = geompy.MakeVertex(x3,y2p,z4p)
-pxc = geompy.MakeVertex(xc,y0,z0)
-bcut1 = geompy.MakeBoxTwoPnt(p0, p_xcy2pz4p)
-bcut2 = geompy.MakeBoxTwoPnt(pxc, p_x3y2pz4p)
-
-fondec2 = []
-for id in (0,1,2,3):
-    fondec2.append(fondec[id])
-for id in (4,5,6):
-    fondec2.append(geompy.MakeBoolean(fondec[id], bcut1, 1))
-    fondec2.append(geompy.MakeBoolean(fondec[id], bcut2, 1))
-
-# ----- autres blocs de decoupe
-
-bcong1 = geompy.MakeBox(x0,y0,z1, x1,y1,z2)
-bcong2 = geompy.MakeBox(x0,y1,z1, x1,y2,z2)
-bcong3 = geompy.MakeBox(x2,y0,z1, x3,y1,z2)
-bcong4 = geompy.MakeBox(x2,y1,z1, x3,y2,z2)
-
-pcylx0 = geompy.MakeVertex(0., -marge, z2)
-pcylx3 = geompy.MakeVertex(longueurPlq, -marge, z2)
-pcyly0 = geompy.MakeVertex(-marge, 0., z2)
-
-cylcongx0 = geompy.MakeCylinder(pcylx0, vy, rayonConge, largeurPlq + 2*marge)
-cylcongx3 = geompy.MakeCylinder(pcylx3, vy, rayonConge, largeurPlq + 2*marge)
-cylcongy0 = geompy.MakeCylinder(pcyly0, vx, rayonConge, longueurPlq + 2*marge)
-
-bcong1 = geompy.MakeBoolean(bcong1,cylcongx0,2)
-bcong2 = geompy.MakeBoolean(bcong2,cylcongx0,2)
-bcong1 = geompy.MakeBoolean(bcong1,cylcongy0,2)
-#NRI : inverse order of BOP
-bcong3 = geompy.MakeBoolean(bcong3,cylcongy0,2)
-bcong3 = geompy.MakeBoolean(bcong3,cylcongx3,2)
-bcong4 = geompy.MakeBoolean(bcong4,cylcongx3,2)
-
-pf1 = geompy.MakeVertex(0., y0h, z3)
-pf2 = geompy.MakeVertex(0., y1, z3)
-pf3 = geompy.MakeVertex(0., y1, z4)
-pf4 = geompy.MakeVertex(0., 0.5*(largeurPlq - epaisseurFond) , z4)
-
-vf1 = geompy.MakeEdge(pf1, pf2)
-vf2 = geompy.MakeEdge(pf2, pf3)
-vf3 = geompy.MakeEdge(pf3, pf4)
-
-faceFlanc = MakeFace([vf1,vf2,vf3,aShape])
-
-flanc1 = geompy.MakePrismVecH(faceFlanc, vx, epaisseurFlanc)
-flanc2 = geompy.MakeCopy(flanc1)
-flanc1 = geompy.MakeTranslation(flanc1, rayonConge, 0., 0.)
-flanc2 = geompy.MakeTranslation(flanc2, longueurPlq - rayonConge - epaisseurFlanc, 0., 0.)
-
-# ---- constitution et decoupe des blocs
-boxfond2 = geompy.MakeBox(x0, y1, z0, x3, y2, z4p)
-
-blocs = []
-for dec in fondec2:
-    blocs.append(geompy.MakeBoolean(boxfond2, dec, 1))
-
-blocs.append(geompy.MakeBox(x0,y1,z0, x1,y2,z1))
-blocs.append(geompy.MakeBox(x1,y1,z0, xc,y2,z1))
-blocs.append(geompy.MakeBox(xc,y1,z0, x2,y2,z1))
-blocs.append(geompy.MakeBox(x2,y1,z0, x3,y2,z1))
-blocs.append(geompy.MakeBox(x0,y0,z0, x1,y1,z1))
-blocs.append(geompy.MakeBox(x1,y0,z0, xc,y1,z1))
-blocs.append(geompy.MakeBox(xc,y0,z0, x2,y1,z1))
-blocs.append(geompy.MakeBox(x2,y0,z0, x3,y1,z1))
-blocs.append(bcong2)
-blocs.append(bcong4)
-blocs.append(bcong1)
-blocs.append(bcong3)
-blocs.append(geompy.MakeBox(x0h,y1, z2, x1, y2, z3))
-blocs.append(geompy.MakeBox(x2, y1, z2, x3h,y2, z3))
-blocs.append(geompy.MakeBox(x0h,y0h,z2, x1, y1, z3))
-blocs.append(geompy.MakeBox(x2, y0h,z2, x3h,y1, z3))
-blocs.append(geompy.MakeBox(x0h,y1, z3, x1, y2, z4))
-blocs.append(geompy.MakeBox(x2, y1, z3, x3h,y2, z4))
-blocs.append(flanc1)
-blocs.append(flanc2)
-
-compbloc = geompy.MakeCompound(blocs)
-idcomp = geompy.addToStudy(compbloc, "compbloc")
-
-# ---- eliminer les faces en double, solid-->shell
-
-compshell = geompy.MakeGlueFaces(compbloc,tol3d)
-idcomp = geompy.addToStudy(compshell, "compshell")
diff --git a/src/SMESH_SWIG/SMESH_fixation_hexa.py b/src/SMESH_SWIG/SMESH_fixation_hexa.py
deleted file mode 100644 (file)
index 1845b22..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# Hexahedrization of the geometry generated by the Python script
-# SMESH_fixation.py
-# Hypothesis and algorithms for the mesh generation are global
-#
-
-import SMESH_fixation
-
-import StdMeshers
-
-compshell = SMESH_fixation.compshell
-idcomp = SMESH_fixation.idcomp
-geompy = SMESH_fixation.geompy
-salome = SMESH_fixation.salome
-
-print "Analysis of the geometry to be meshed :"
-subShellList = geompy.SubShapeAll(compshell, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(compshell, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(compshell, geompy.ShapeType["EDGE"])
-
-print "number of Shells in compshell : ", len(subShellList)
-print "number of Faces  in compshell : ", len(subFaceList)
-print "number of Edges  in compshell : ", len(subEdgeList)
-
-status = geompy.CheckShape(compshell)
-print " check status ", status
-
-### ---------------------------- SMESH --------------------------------------
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-print "-------------------------- create Hypothesis"
-
-print "-------------------------- NumberOfSegments"
-
-numberOfSegments = 5
-
-hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg.SetNumberOfSegments(numberOfSegments)
-
-print hypNbSeg.GetName()
-print hypNbSeg.GetId()
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_5")
-
-print "-------------------------- create Algorithms"
-
-print "-------------------------- Regular_1D"
-
-regular1D = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-
-smeshgui.SetName(salome.ObjectToID(regular1D), "Wire Discretisation")
-
-print "-------------------------- Quadrangle_2D"
-
-quad2D = smesh.CreateHypothesis("Quadrangle_2D", "libStdMeshersEngine.so")
-
-smeshgui.SetName(salome.ObjectToID(quad2D), "Quadrangle_2D")
-
-print "-------------------------- Hexa_3D"
-
-hexa3D = smesh.CreateHypothesis("Hexa_3D", "libStdMeshersEngine.so")
-
-smeshgui.SetName(salome.ObjectToID(hexa3D), "Hexa_3D")
-
-# ---- init a Mesh with the compshell
-shape_mesh = salome.IDToObject( idcomp  )
-
-mesh = smesh.CreateMesh(shape_mesh)
-smeshgui.SetName(salome.ObjectToID(mesh), "MeshCompShell")
-
-
-print "-------------------------- add hypothesis to compshell"
-
-mesh.AddHypothesis(shape_mesh,regular1D)
-mesh.AddHypothesis(shape_mesh,hypNbSeg)
-
-mesh.AddHypothesis(shape_mesh,quad2D)
-mesh.AddHypothesis(shape_mesh,hexa3D)
-
-salome.sg.updateObjBrowser(1)
-
-print "-------------------------- compute compshell"
-ret = smesh.Compute(mesh, shape_mesh)
-print ret
-if ret != 0:
-    log = mesh.GetLog(0) # no erase trace
-    for linelog in log:
-        print linelog
-    print "Information about the MeshcompShel:"
-    print "Number of nodes       : ", mesh.NbNodes()
-    print "Number of edges       : ", mesh.NbEdges()
-    print "Number of faces       : ", mesh.NbFaces()
-    print "Number of quadrangles : ", mesh.NbQuadrangles()
-    print "Number of volumes     : ", mesh.NbVolumes()
-    print "Number of hexahedrons : ", mesh.NbHexas()
-else:
-    print "problem when Computing the mesh"
diff --git a/src/SMESH_SWIG/SMESH_fixation_tetra.py b/src/SMESH_SWIG/SMESH_fixation_tetra.py
deleted file mode 100644 (file)
index 2d588bb..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-#
-# Tetrahedrization of the geometry generated by the Python script
-# SMESH_fixation.py
-# Hypothesis and algorithms for the mesh generation are global
-#
-
-import StdMeshers
-import NETGENPlugin
-import SMESH_fixation
-
-compshell = SMESH_fixation.compshell
-idcomp = SMESH_fixation.idcomp
-geompy = SMESH_fixation.geompy
-salome = SMESH_fixation.salome
-
-print "Analysis of the geometry to be meshed :"
-subShellList = geompy.SubShapeAll(compshell, geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(compshell, geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(compshell, geompy.ShapeType["EDGE"])
-
-print "number of Shells in compshell : ", len(subShellList)
-print "number of Faces  in compshell : ", len(subFaceList)
-print "number of Edges  in compshell : ", len(subEdgeList)
-
-status = geompy.CheckShape(compshell)
-print " check status ", status
-
-### ---------------------------- SMESH --------------------------------------
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-print "-------------------------- create Hypothesis"
-
-print "-------------------------- NumberOfSegments"
-
-numberOfSegments = 5
-
-hypNbSeg = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg.SetNumberOfSegments(numberOfSegments)
-
-print hypNbSeg.GetName()
-print hypNbSeg.GetId()
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_5")
-
-print "-------------------------- MaxElementArea"
-
-## maxElementArea = 80
-
-## hypArea=smesh.CreateHypothesis("MaxElementArea")
-## hypArea.SetMaxElementArea(maxElementArea)
-## print hypArea.GetName()
-## print hypArea.GetId()
-## print hypArea.GetMaxElementArea()
-## smeshgui.SetName(salome.ObjectToID(hypArea), "MaxElementArea_160")
-
-hypLengthFromEdges = smesh.CreateHypothesis("LengthFromEdges", "libStdMeshersEngine.so")
-smeshgui.SetName(salome.ObjectToID(hypLengthFromEdges), "LengthFromEdges")
-
-
-print "-------------------------- MaxElementVolume"
-
-maxElementVolume = 1000
-
-hypVolume = smesh.CreateHypothesis("MaxElementVolume", "libStdMeshersEngine.so")
-hypVolume.SetMaxElementVolume(maxElementVolume)
-
-print hypVolume.GetName()
-print hypVolume.GetId()
-print hypVolume.GetMaxElementVolume()
-
-smeshgui.SetName(salome.ObjectToID(hypVolume), "MaxElementVolume_1000")
-
-print "-------------------------- create Algorithms"
-
-print "-------------------------- Regular_1D"
-
-regular1D = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-
-smeshgui.SetName(salome.ObjectToID(regular1D), "Wire Discretisation")
-
-print "-------------------------- MEFISTO_2D"
-
-mefisto2D = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-
-smeshgui.SetName(salome.ObjectToID(mefisto2D), "MEFISTO_2D")
-
-print "-------------------------- NETGEN_3D"
-
-netgen3D = smesh.CreateHypothesis("NETGEN_3D", "libNETGENEngine.so")
-
-smeshgui.SetName(salome.ObjectToID(netgen3D), "NETGEN_3D")
-
-# ---- init a Mesh with the compshell
-
-mesh = smesh.CreateMesh(compshell)
-smeshgui.SetName(salome.ObjectToID(mesh), "MeshcompShel")
-
-print "-------------------------- add hypothesis to compshell"
-
-mesh.AddHypothesis(compshell,regular1D)
-mesh.AddHypothesis(compshell,hypNbSeg)
-
-mesh.AddHypothesis(compshell,mefisto2D)
-mesh.AddHypothesis(compshell,hypLengthFromEdges)
-
-mesh.AddHypothesis(compshell,netgen3D)
-mesh.AddHypothesis(compshell,hypVolume)
-
-salome.sg.updateObjBrowser(1)
-
-print "-------------------------- compute compshell"
-ret = smesh.Compute(mesh,compshell)
-print ret
-if ret != 0:
-    log = mesh.GetLog(0) # no erase trace
-    for linelog in log:
-        print linelog
-    print "Information about the MeshcompShel:"
-    print "Number of nodes        : ", mesh.NbNodes()
-    print "Number of edges        : ", mesh.NbEdges()
-    print "Number of faces        : ", mesh.NbFaces()
-    print "Number of triangles    : ", mesh.NbTriangles()
-    print "Number of volumes      : ", mesh.NbVolumes()
-    print "Number of tetrahedrons : ", mesh.NbTetras()
-    
-else:
-    print "problem when computing the mesh"
diff --git a/src/SMESH_SWIG/SMESH_freebord.py b/src/SMESH_SWIG/SMESH_freebord.py
deleted file mode 100644 (file)
index d240a35..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-import salome\r
-import geompy\r
-import SMESH\r
-import StdMeshers\r
-\r
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")\r
-smesh.SetCurrentStudy(salome.myStudy)\r
-\r
-# Create box without one plane\r
-\r
-box = geompy.MakeBox(0., 0., 0., 10., 20., 30.)\r
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])\r
-\r
-FaceList  = []\r
-for i in range( 5 ):\r
-  FaceList.append( subShapeList[ i ] )\r
-\r
-aComp = geompy.MakeCompound( FaceList )\r
-aBox = geompy.Sew( aComp, 1. )\r
-idbox = geompy.addToStudy( aBox, "box" )\r
-  \r
-aBox  = salome.IDToObject( idbox )\r
-\r
-# Create mesh\r
-\r
-hyp1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")\r
-hyp1.SetNumberOfSegments(5)\r
-hyp2 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")\r
-hyp2.SetMaxElementArea(20)\r
-hyp3 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")\r
-hyp3.SetMaxElementArea(50)\r
-\r
-algo1 = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")\r
-algo2 = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")\r
-\r
-mesh = smesh.CreateMesh(aBox)\r
-mesh.AddHypothesis(aBox,hyp1)\r
-mesh.AddHypothesis(aBox,hyp2)\r
-mesh.AddHypothesis(aBox,algo1)\r
-mesh.AddHypothesis(aBox,algo2)\r
-\r
-smesh.Compute(mesh,aBox)\r
-\r
-smeshgui = salome.ImportComponentGUI("SMESH")\r
-smeshgui.Init(salome.myStudyId);\r
-smeshgui.SetName( salome.ObjectToID( mesh ), "Mesh_freebord" );\r
-\r
-# Criterion : Free edges\r
-aFilterMgr = smesh.CreateFilterManager()\r
-aPredicate = aFilterMgr.CreateFreeBorders()\r
-aFilter = aFilterMgr.CreateFilter()\r
-aFilter.SetPredicate( aPredicate )\r
-\r
-anIds = aFilter.GetElementsId( mesh )\r
-\r
-# print result\r
-print "Criterion: Free edges Nb = ", len( anIds )\r
-for i in range( len( anIds ) ):\r
-  print anIds[ i ]\r
-\r
-# create group\r
-aGroup = mesh.CreateGroup( SMESH.EDGE, "Free edges" )\r
-aGroup.Add( anIds )\r
-\r
-\r
-salome.sg.updateObjBrowser(1)\r
diff --git a/src/SMESH_SWIG/SMESH_hexaedre.py b/src/SMESH_SWIG/SMESH_hexaedre.py
deleted file mode 100755 (executable)
index 1b93e1c..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-#==============================================================================
-#  Info.
-#  Bug (from script, bug)   : hexaedre_modified.py, PAL6194, PAL7153
-#  Modified                 : 25/11/2004
-#  Author                   : Kovaltchuk Alexey
-#  Project                  : PAL/SALOME
-#==============================================================================
-
-import salome
-from salome import sg
-
-import geompy
-
-import math
-
-# -----------------------------------------------------------------------------
-
-geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
-myBuilder = salome.myStudy.NewBuilder()
-gg = salome.ImportComponentGUI("GEOM")
-from salome import sg
-
-ShapeTypeCompSolid = 1
-ShapeTypeSolid     = 2
-ShapeTypeShell     = 3
-ShapeTypeFace      = 4
-ShapeTypeWire      = 5
-ShapeTypeEdge      = 6
-ShapeTypeVertex    = 7
-
-Boolop_common = 1
-Boolop_cut = 2
-Boolop_fuse = 3
-Boolop_section = 4
-
-p0 = geompy.MakeVertex(0., 0., 0.)
-px = geompy.MakeVertex(100., 0., 0.)
-py = geompy.MakeVertex(0., 100., 0.)
-pz = geompy.MakeVertex(0., 0., 100.)
-vx = geompy.MakeVector(p0, px)
-vy = geompy.MakeVector(p0, py)
-vz = geompy.MakeVector(p0, pz)
-
-sphereExt = geompy.MakeSphere(    0.,  0.,  0., 400.)
-sphereInt = geompy.MakeSphere(    0.,-50.,  0., 350.)
-sphereA   = geompy.MakeSphere( -400., 50., 50., 400.)
-sphereB   = geompy.MakeSphere(  350.,-50.,-50., 350.)
-ptcyle    = geompy.MakeVertex(0., -300., -450.)
-cylindre  = geompy.MakeCylinder(ptcyle,vz,500.,900.)
-
-vol1=geompy.MakeCut(sphereExt,sphereA)
-vol2=geompy.MakeCut(vol1,sphereB)
-vol3=geompy.MakeCut(vol2,cylindre)
-blob=geompy.MakeCut(vol3,sphereInt)
-
-idblob = geompy.addToStudy(blob,"blob")
-
-aretes = []
-aretes = geompy.SubShapeAllSorted(blob, ShapeTypeEdge)
-eid=0
-
-# -------------------------------
-# --- numerotation des aretes
-##for edge in aretes:
-##    edname="arete%d"%eid
-##    idedge=geompy.addToStudy(edge,edname)
-##    eid=eid+1
-
-salome.sg.updateObjBrowser(1)
-
-# --- epaisseur 0 2 8 10
-# --- hauteur   1 3 9 11
-# --- largeur   4 5 6 7
-
-# -----------------------------------------------------------------------------
-
-print "-------------------------- mesh"
-
-import SMESH
-import StdMeshers
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smesh.SetCurrentStudy(salome.myStudy)
-
-# ---- create Hypothesis
-print "-------------------------- create Hypothesis"
-numberOfSegments = 4
-hypNbSegA=smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSegA.SetNumberOfSegments(numberOfSegments)
-numberOfSegments = 10
-hypNbSegB=smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSegB.SetNumberOfSegments(numberOfSegments)
-numberOfSegments = 15
-hypNbSegC=smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSegC.SetNumberOfSegments(numberOfSegments)
-
-# ---- create Algorithms
-print "-------------------------- create Algorithms"
-regular1D=smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-quad2D=smesh.CreateHypothesis("Quadrangle_2D", "libStdMeshersEngine.so")
-hexa3D=smesh.CreateHypothesis("Hexa_3D", "libStdMeshersEngine.so")
-
-# ---- init a Mesh with the geom shape
-shape_mesh = blob
-myMesh=smesh.CreateMesh(shape_mesh)
-
-# ---- add hypothesis and algorithms to mesh
-print "-------------------------- add hypothesis to mesh"
-myMesh.AddHypothesis(shape_mesh,regular1D)
-myMesh.AddHypothesis(shape_mesh,quad2D)
-myMesh.AddHypothesis(shape_mesh,hexa3D)
-
-#myMesh.AddHypothesis(shape_mesh,hypNbSeg)
-
-myMesh.AddHypothesis(aretes[0],hypNbSegA)
-myMesh.AddHypothesis(aretes[2],hypNbSegA)
-myMesh.AddHypothesis(aretes[8],hypNbSegA)
-myMesh.AddHypothesis(aretes[10],hypNbSegA)
-
-myMesh.AddHypothesis(aretes[1],hypNbSegC)
-myMesh.AddHypothesis(aretes[3],hypNbSegC)
-myMesh.AddHypothesis(aretes[9],hypNbSegC)
-myMesh.AddHypothesis(aretes[11],hypNbSegC)
-
-myMesh.AddHypothesis(aretes[4],hypNbSegB)
-myMesh.AddHypothesis(aretes[5],hypNbSegB)
-myMesh.AddHypothesis(aretes[6],hypNbSegB)
-myMesh.AddHypothesis(aretes[7],hypNbSegB)
-
-# ---- compute mesh
-
-print "-------------------------- compute mesh"
-ret=smesh.Compute(myMesh, shape_mesh)
-print ret
-if ret != 0:
-    #log=myMesh.GetLog(0) # no erase trace
-    #for linelog in log:
-    #    print linelog
-    print "Information about the Mesh:"
-    print "Number of nodes       : ", myMesh.NbNodes()
-    print "Number of edges       : ", myMesh.NbEdges()
-    print "Number of faces       : ", myMesh.NbFaces()
-    print "Number of quadrangles : ", myMesh.NbQuadrangles()
-    print "Number of volumes     : ", myMesh.NbVolumes()
-    print "Number of hexahedrons : ", myMesh.NbHexas()
-else:
-    print "problem when Computing the mesh"
-
-salome.sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/SMESH_mechanic.py b/src/SMESH_SWIG/SMESH_mechanic.py
deleted file mode 100644 (file)
index 7c1fdbd..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-#  This library is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Lesser General Public
-#  License as published by the Free Software Foundation; either
-#  version 2.1 of the License.
-#
-#  This library is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Lesser General Public License for more details.
-#
-#  You should have received a copy of the GNU Lesser General Public
-#  License along with this library; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-#  File   : SMESH_withHole.py
-#  Author : Lucien PIGNOLONI
-#  Module : SMESH
-#  $Header$
-
-#-------------------------------------------------------------------------
-
-import salome
-import geompy
-
-import StdMeshers
-
-# ---------------------------- GEOM --------------------------------------
-
-# ---- define contigous arcs and segment to define a closed wire
-p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
-p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
-p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
-arc1 = geompy.MakeArc( p1, p2, p3 )
-
-p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
-seg1 = geompy.MakeVector( p3, p4 )
-
-p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
-p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
-arc2 = geompy.MakeArc( p4, p5, p6 )
-
-p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
-arc3 = geompy.MakeArc( p6, p7, p1 )
-
-# ---- define a closed wire with arcs and segment
-List1 = []
-List1.append( arc1 )
-List1.append( seg1 )
-List1.append( arc2 )
-List1.append( arc3 )
-
-wire1 = geompy.MakeWire( List1 )
-Id_wire1 = geompy.addToStudy( wire1, "wire1" )
-
-# ---- define a planar face with wire
-WantPlanarFace = 1 #True
-face1 = geompy.MakeFace( wire1, WantPlanarFace )
-Id_face1 = geompy.addToStudy( face1, "face1" )
-
-# ---- create a shape by extrusion
-pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
-pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
-vz = geompy.MakeVector( pO, pz )
-
-prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
-Id_prism1 = geompy.addToStudy( prism1, "prism1" )
-
-# ---- create two cylinders
-pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
-pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
-
-radius = 20.0
-height = 180.0
-cyl1 = geompy.MakeCylinder( pc1, vz, radius, height )
-cyl2 = geompy.MakeCylinder( pc2, vz, radius, height )
-
-Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
-Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
-
-# ---- cut with cyl1
-shape = geompy.MakeBoolean( prism1, cyl1, 2 )
-
-# ---- fuse with cyl2 to obtain the final mechanic piece :)
-mechanic = geompy.MakeBoolean( shape, cyl2, 3 )
-Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
-
-# ---- explode on faces
-SubFaceL = geompy.SubShapeAllSorted(mechanic, geompy.ShapeType["FACE"])
-
-# ---- add a face sub shape in study to be meshed different
-sub_face1 = SubFaceL[0]
-name      = geompy.SubShapeName( sub_face1, mechanic )
-
-Id_SubFace1 = geompy.addToStudyInFather( mechanic, sub_face1, name )
-
-# ---- add a face sub shape in study to be meshed different
-sub_face2 = SubFaceL[4]
-name      = geompy.SubShapeName( sub_face2, mechanic )
-
-Id_SubFace2 = geompy.addToStudyInFather( mechanic, sub_face2, name )
-
-# ---- add a face sub shape in study to be meshed different
-sub_face3 = SubFaceL[5]
-name      = geompy.SubShapeName( sub_face3, mechanic )
-
-Id_SubFace3 = geompy.addToStudyInFather( mechanic, sub_face3, name )
-
-# ---- add a face sub shape in study to be meshed different
-sub_face4 = SubFaceL[10]
-name      = geompy.SubShapeName( sub_face4, mechanic )
-
-Id_SubFace4 = geompy.addToStudyInFather( mechanic, sub_face4, name )
-
-# ---------------------------- SMESH --------------------------------------
-
-# ---- launch SMESH, init a Mesh with shape 'mechanic'
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-# -- Init --
-shape_mesh = salome.IDToObject( Id_mechanic )
-smesh.SetCurrentStudy(salome.myStudy)
-
-mesh = smesh.CreateMesh(shape_mesh)
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-idmesh = salome.ObjectToID(mesh)
-smeshgui.SetName( idmesh, "Mesh_mechanic" )
-
-print "-------------------------- NumberOfSegments"
-
-numberOfSegment = 10
-
-hypNbSeg = smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" )
-hypNbSeg.SetNumberOfSegments( numberOfSegment )
-print hypNbSeg.GetName()
-print hypNbSeg.GetId()
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_10")
-
-print "-------------------------- MaxElementArea"
-
-maxElementArea = 25
-
-hypArea25 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
-hypArea25.SetMaxElementArea( maxElementArea )
-print hypArea25.GetName()
-print hypArea25.GetId()
-print hypArea25.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea25), "MaxElementArea_25")
-
-print "-------------------------- MaxElementArea"
-
-maxElementArea = 35
-
-hypArea35 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
-hypArea35.SetMaxElementArea( maxElementArea )
-print hypArea35.GetName()
-print hypArea35.GetId()
-print hypArea35.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea35), "MaxElementArea_35")
-
-print "-------------------------- Regular_1D"
-
-algoReg1D = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" )
-listHyp = algoReg1D.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoReg1D.GetName()
-print algoReg1D.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoReg1D), "Regular_1D")
-
-print "-------------------------- MEFISTO_2D"
-
-algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" )
-listHyp = algoMef.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoMef.GetName()
-print algoMef.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D")
-
-print "-------------------------- SMESH_Quadrangle_2D"
-
-algoQuad = smesh.CreateHypothesis( "Quadrangle_2D", "libStdMeshersEngine.so" )
-listHyp = algoQuad.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoQuad.GetName()
-print algoQuad.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoQuad), "SMESH_Quadrangle_2D")
-
-print "-------------------------- add hypothesis to main shape"
-
-mesh.AddHypothesis( shape_mesh, hypNbSeg )   # nb segments
-mesh.AddHypothesis( shape_mesh, hypArea25 )  # max area
-
-mesh.AddHypothesis( shape_mesh, algoReg1D )  # Regular 1D/wire discretisation
-mesh.AddHypothesis( shape_mesh, algoMef )    # MEFISTO 2D
-
-print "-------------------------- add hypothesis and algorithm to sub face 1"
-
-submesh = mesh.GetSubMesh(sub_face1, "SubMeshFace1")
-
-mesh.AddHypothesis( sub_face1, algoQuad )   # Quadrangle 2D
-mesh.AddHypothesis( sub_face1, hypArea35 )  # max area
-
-print "-------------------------- add hypothesis and algorithm to sub face 2"
-
-submesh = mesh.GetSubMesh(sub_face2, "SubMeshFace2")
-
-mesh.AddHypothesis( sub_face2, algoQuad )   # Quadrangle 2D
-mesh.AddHypothesis( sub_face2, hypArea35 )  # max area
-
-print "-------------------------- add hypothesis and algorith to sub face 3"
-
-submesh = mesh.GetSubMesh(sub_face3, "SubMeshFace3")
-
-mesh.AddHypothesis( sub_face3, algoQuad )   # Quadrangle 2D
-mesh.AddHypothesis( sub_face3, hypArea35 )  # max area
-
-print "-------------------------- add hypothesis and algorith to sub face 4"
-
-submesh = mesh.GetSubMesh(sub_face4, "SubMeshFace4")
-
-mesh.AddHypothesis( sub_face4, algoQuad )   # Quadrangle 2D
-mesh.AddHypothesis( sub_face4, hypArea35 )  # max area
-
-print "-------------------------- compute the mesh of the mechanic piece"
-
-smesh.Compute(mesh, shape_mesh)
-
-print "Information about the Mesh_mechanic:"
-print "Number of nodes       : ", mesh.NbNodes()
-print "Number of edges       : ", mesh.NbEdges()
-print "Number of faces       : ", mesh.NbFaces()
-print "Number of triangles   : ", mesh.NbTriangles()
-print "Number of quadrangles : ", mesh.NbQuadrangles()
-print "Number of volumes     : ", mesh.NbVolumes()
-print "Number of tetrahedrons: ", mesh.NbTetras()
-
-salome.sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/SMESH_mechanic_editor.py b/src/SMESH_SWIG/SMESH_mechanic_editor.py
deleted file mode 100644 (file)
index 596786e..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-#  This library is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Lesser General Public
-#  License as published by the Free Software Foundation; either
-#  version 2.1 of the License.
-#
-#  This library is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Lesser General Public License for more details.
-#
-#  You should have received a copy of the GNU Lesser General Public
-#  License along with this library; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-#  File   : SMESH_withHole.py
-#  Author : Lucien PIGNOLONI
-#  Module : SMESH
-#  $Header$
-
-#-------------------------------------------------------------------------
-
-import salome
-import geompy
-
-import StdMeshers
-
-import SMESH
-
-# ---------------------------- GEOM --------------------------------------
-
-# ---- define contigous arcs and segment to define a closed wire
-p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
-p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
-p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
-arc1 = geompy.MakeArc( p1, p2, p3 )
-
-p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
-seg1 = geompy.MakeVector( p3, p4 )
-
-p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
-p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
-arc2 = geompy.MakeArc( p4, p5, p6 )
-
-p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
-arc3 = geompy.MakeArc( p6, p7, p1 )
-
-# ---- define a closed wire with arcs and segment
-List1 = []
-List1.append( arc1 )
-List1.append( seg1 )
-List1.append( arc2 )
-List1.append( arc3 )
-
-wire1 = geompy.MakeWire( List1 )
-Id_wire1 = geompy.addToStudy( wire1, "wire1" )
-
-# ---- define a planar face with wire
-WantPlanarFace = 1 #True
-face1 = geompy.MakeFace( wire1, WantPlanarFace )
-Id_face1 = geompy.addToStudy( face1, "face1" )
-
-# ---- create a shape by extrusion
-pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
-pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
-vz = geompy.MakeVector( pO, pz )
-
-prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
-Id_prism1 = geompy.addToStudy( prism1, "prism1" )
-
-# ---- create two cylinders
-pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
-pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
-
-radius = 20.0
-height = 180.0
-cyl1 = geompy.MakeCylinder( pc1, vz, radius, height )
-cyl2 = geompy.MakeCylinder( pc2, vz, radius, height )
-
-Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
-Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
-
-# ---- cut with cyl1
-shape = geompy.MakeBoolean( prism1, cyl1, 2 )
-
-# ---- fuse with cyl2 to obtain the final mechanic piece :)
-mechanic = geompy.MakeBoolean( shape, cyl2, 3 )
-Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
-
-# ---- explode on faces
-SubFaceL = geompy.SubShapeAllSorted(mechanic, geompy.ShapeType["FACE"])
-
-# ---- add a face sub shape in study to be meshed different
-sub_face1 = SubFaceL[0]
-name      = geompy.SubShapeName( sub_face1, mechanic )
-
-Id_SubFace1 = geompy.addToStudyInFather( mechanic, sub_face1, name )
-
-# ---- add a face sub shape in study to be meshed different
-sub_face2 = SubFaceL[4]
-name      = geompy.SubShapeName( sub_face2, mechanic )
-
-Id_SubFace2 = geompy.addToStudyInFather( mechanic, sub_face2, name )
-
-# ---- add a face sub shape in study to be meshed different
-sub_face3 = SubFaceL[5]
-name      = geompy.SubShapeName( sub_face3, mechanic )
-
-Id_SubFace3 = geompy.addToStudyInFather( mechanic, sub_face3, name )
-
-# ---- add a face sub shape in study to be meshed different
-sub_face4 = SubFaceL[10]
-name      = geompy.SubShapeName( sub_face4, mechanic )
-
-Id_SubFace4 = geompy.addToStudyInFather( mechanic, sub_face4, name )
-
-# ---------------------------- SMESH --------------------------------------
-
-# ---- launch SMESH, init a Mesh with shape 'mechanic'
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-
-# -- Init --
-shape_mesh = salome.IDToObject( Id_mechanic )
-smesh.SetCurrentStudy(salome.myStudy)
-
-mesh = smesh.CreateMesh(shape_mesh)
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-idmesh = salome.ObjectToID(mesh)
-smeshgui.SetName( idmesh, "Mesh_mechanic" )
-
-print "-------------------------- NumberOfSegments"
-
-numberOfSegment = 10
-
-hypNbSeg = smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" )
-hypNbSeg.SetNumberOfSegments( numberOfSegment )
-print hypNbSeg.GetName()
-print hypNbSeg.GetId()
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_10")
-
-print "-------------------------- MaxElementArea"
-
-maxElementArea = 25
-
-hypArea25 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
-hypArea25.SetMaxElementArea( maxElementArea )
-print hypArea25.GetName()
-print hypArea25.GetId()
-print hypArea25.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea25), "MaxElementArea_25")
-
-print "-------------------------- MaxElementArea"
-
-maxElementArea = 35
-
-hypArea35 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
-hypArea35.SetMaxElementArea( maxElementArea )
-print hypArea35.GetName()
-print hypArea35.GetId()
-print hypArea35.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea35), "MaxElementArea_35")
-
-print "-------------------------- Regular_1D"
-
-algoReg1D = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" )
-listHyp = algoReg1D.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoReg1D.GetName()
-print algoReg1D.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoReg1D), "Regular_1D")
-
-print "-------------------------- MEFISTO_2D"
-
-algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" )
-listHyp = algoMef.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoMef.GetName()
-print algoMef.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D")
-
-print "-------------------------- SMESH_Quadrangle_2D"
-
-algoQuad = smesh.CreateHypothesis( "Quadrangle_2D", "libStdMeshersEngine.so" )
-listHyp = algoQuad.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoQuad.GetName()
-print algoQuad.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoQuad), "SMESH_Quadrangle_2D")
-
-print "-------------------------- add hypothesis to main shape"
-
-mesh.AddHypothesis( shape_mesh, hypNbSeg )   # nb segments
-mesh.AddHypothesis( shape_mesh, hypArea25 )  # max area
-
-mesh.AddHypothesis( shape_mesh, algoReg1D )  # Regular 1D/wire discretisation
-mesh.AddHypothesis( shape_mesh, algoMef )    # MEFISTO 2D
-
-print "-------------------------- add hypothesis and algorithm to sub face 1"
-
-submesh = mesh.GetSubMesh(sub_face1, "SubMeshFace1")
-
-mesh.AddHypothesis( sub_face1, algoQuad )   # Quadrangle 2D
-mesh.AddHypothesis( sub_face1, hypArea35 )  # max area
-
-print "-------------------------- add hypothesis and algorithm to sub face 2"
-
-submesh = mesh.GetSubMesh(sub_face2, "SubMeshFace2")
-
-mesh.AddHypothesis( sub_face2, algoQuad )   # Quadrangle 2D
-mesh.AddHypothesis( sub_face2, hypArea35 )  # max area
-
-print "-------------------------- add hypothesis and algorith to sub face 3"
-
-submesh = mesh.GetSubMesh(sub_face3, "SubMeshFace3")
-
-mesh.AddHypothesis( sub_face3, algoQuad )   # Quadrangle 2D
-mesh.AddHypothesis( sub_face3, hypArea35 )  # max area
-
-print "-------------------------- add hypothesis and algorith to sub face 4"
-
-submesh = mesh.GetSubMesh(sub_face4, "SubMeshFace4")
-
-mesh.AddHypothesis( sub_face4, algoQuad )   # Quadrangle 2D
-mesh.AddHypothesis( sub_face4, hypArea35 )  # max area
-
-print "-------------------------- compute the mesh of the mechanic piece"
-
-smesh.Compute(mesh, shape_mesh)
-
-print "Information about the Mesh_mechanic:"
-print "Number of nodes       : ", mesh.NbNodes()
-print "Number of edges       : ", mesh.NbEdges()
-print "Number of faces       : ", mesh.NbFaces()
-print "Number of triangles   : ", mesh.NbTriangles()
-print "Number of quadrangles : ", mesh.NbQuadrangles()
-print "Number of volumes     : ", mesh.NbVolumes()
-print "Number of tetrahedrons: ", mesh.NbTetras()
-
-
-MeshEditor = mesh.GetMeshEditor()
-
-#1 cutting of quadrangles of the 'SubMeshFace2' submesh
-submesh = mesh.GetSubMesh(sub_face2, "SubMeshFace2")
-MeshEditor.SplitQuadObject(submesh, 1)
-
-#2 cutting of triangles of the group
-FacesTriToQuad = [2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422]
-GroupTriToQuad = mesh.CreateGroup(SMESH.FACE,"Group of faces (quad)")
-GroupTriToQuad.Add(FacesTriToQuad)
-MeshEditor.TriToQuadObject(GroupTriToQuad, None , 1.57)
-
-#3 extrusion of the group
-point = SMESH.PointStruct(0, 0, 5)
-vector = SMESH.DirStruct(point) 
-MeshEditor.ExtrusionSweepObject(GroupTriToQuad, vector, 5)
-
-#4 mirror object
-MeshEditor.MirrorObject(mesh, SMESH.AxisStruct(0, 0, 0, 0, 0, 0), SMESH.SMESH_MeshEditor.POINT, 0) 
-
-#5 mesh translation
-point = SMESH.PointStruct(10, 10, 10)
-vector = SMESH.DirStruct(point) 
-MeshEditor.TranslateObject(mesh, vector, 0)
-
-#6 mesh rotation
-axisXYZ = SMESH.AxisStruct(0, 0, 0, 10, 10, 10)
-angle180 =  180*3.141/180
-MeshEditor.RotateObject(mesh, axisXYZ, angle180, 0)
-
-#7 group smoothing
-FacesSmooth = [864, 933, 941, 950, 1005, 1013]
-GroupSmooth = mesh.CreateGroup(SMESH.FACE,"Group of faces (smooth)")
-GroupSmooth.Add(FacesSmooth)
-MeshEditor.SmoothObject(GroupSmooth, [], 20, 2, SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)
-
-#8 rotation sweep object
-FacesRotate = [492, 493, 502, 503]
-GroupRotate = mesh.CreateGroup(SMESH.FACE,"Group of faces (rotate)")
-GroupRotate.Add(FacesRotate)
-angle45 =  45*3.141/180
-axisXYZ = SMESH.AxisStruct(-38.3128, -73.3658, -133.321, -13.3402, -13.3265, 6.66632)
-MeshEditor.RotationSweepObject(GroupRotate, axisXYZ, angle45, 4, 1e-5)
-
-#9 reorientation of the whole mesh
-submesh = mesh.GetSubMesh(sub_face1, "SubMeshFace1")
-MeshEditor.ReorientObject(submesh)
-
-salome.sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/SMESH_mechanic_tetra.py b/src/SMESH_SWIG/SMESH_mechanic_tetra.py
deleted file mode 100644 (file)
index eee3f87..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-#  This library is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Lesser General Public
-#  License as published by the Free Software Foundation; either
-#  version 2.1 of the License.
-#
-#  This library is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Lesser General Public License for more details.
-#
-#  You should have received a copy of the GNU Lesser General Public
-#  License along with this library; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-#  File   : SMESH_withHole.py
-#  Author : Lucien PIGNOLONI
-#  Module : SMESH
-#  $Header$
-
-import salome
-import geompy
-
-geom  = geompy.geom
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smesh.SetCurrentStudy(salome.myStudy)
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-import StdMeshers
-import NETGENPlugin
-
-# ---------------------------- GEOM --------------------------------------
-
-# ---- define contigous arcs and segment to define a closed wire
-p1   = geompy.MakeVertex( 100.0,   0.0,  0.0 )
-p2   = geompy.MakeVertex(  50.0,  50.0,  0.0 )
-p3   = geompy.MakeVertex( 100.0, 100.0,  0.0 )
-arc1 = geompy.MakeArc( p1, p2, p3 )
-
-p4   = geompy.MakeVertex( 170.0, 100.0, 0.0 )
-seg1 = geompy.MakeVector( p3, p4 )
-
-p5   = geompy.MakeVertex( 200.0, 70.0, 0.0 )
-p6   = geompy.MakeVertex( 170.0, 40.0, 0.0 )
-arc2 = geompy.MakeArc( p4, p5, p6 )
-
-p7   = geompy.MakeVertex( 120.0, 30.0, 0.0 )
-arc3 = geompy.MakeArc( p6, p7, p1 )
-
-# ---- define a closed wire with arcs and segment
-List1 = []
-List1.append( arc1 )
-List1.append( seg1 )
-List1.append( arc2 )
-List1.append( arc3 )
-
-wire1 = geompy.MakeWire( List1 )
-Id_wire1 = geompy.addToStudy( wire1, "wire1" )
-
-# ---- define a planar face with wire
-WantPlanarFace = 1 #True
-face1 = geompy.MakeFace( wire1, WantPlanarFace )
-Id_face1 = geompy.addToStudy( face1, "face1" )
-
-# ---- create a shape by extrusion
-pO = geompy.MakeVertex( 0.0, 0.0,   0.0 )
-pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
-vz = geompy.MakeVector( pO, pz )
-
-prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
-Id_prism1 = geompy.addToStudy( prism1, "prism1")
-
-# ---- create two cylinders
-
-pc1 = geompy.MakeVertex(  90.0, 50.0, -40.0 )
-pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
-radius = 20.0
-height = 180.0
-cyl1  = geompy.MakeCylinder( pc1, vz, radius, height )
-cyl2  = geompy.MakeCylinder( pc2, vz, radius, height )
-
-Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
-Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
-
-# ---- cut with cyl1
-shape  = geompy.MakeBoolean( prism1, cyl1, 2 )
-
-# ---- fuse with cyl2 to obtain the final mechanic piece :)
-mechanic =  geompy.MakeBoolean( shape, cyl2, 3 )
-Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
-
-# ---- Analysis of the geometry
-
-print "Analysis of the geometry mechanic :"
-
-subShellList = geompy.SubShapeAll(mechanic,geompy.ShapeType["SHELL"])
-subFaceList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["FACE"])
-subEdgeList  = geompy.SubShapeAll(mechanic,geompy.ShapeType["EDGE"])
-
-print "number of Shells in mechanic : ",len(subShellList)
-print "number of Faces in mechanic : ",len(subFaceList)
-print "number of Edges in mechanic : ",len(subEdgeList)
-
-### ---------------------------- SMESH --------------------------------------
-
-print "-------------------------- NumberOfSegments"
-
-numberOfSegment = 10
-
-hypNbSeg = smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" )
-hypNbSeg.SetNumberOfSegments( numberOfSegment )
-print hypNbSeg.GetName()
-print hypNbSeg.GetId()
-print hypNbSeg.GetNumberOfSegments()
-
-smeshgui.SetName(salome.ObjectToID(hypNbSeg), "NumberOfSegments_10")
-
-print "-------------------------- MaxElementArea"
-
-maxElementArea = 20
-
-hypArea = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
-hypArea.SetMaxElementArea( maxElementArea )
-print hypArea.GetName()
-print hypArea.GetId()
-print hypArea.GetMaxElementArea()
-
-smeshgui.SetName(salome.ObjectToID(hypArea), "MaxElementArea_20")
-
-print "-------------------------- MaxElementVolume"
-
-maxElementVolume = 20
-
-hypVolume = smesh.CreateHypothesis( "MaxElementVolume", "libStdMeshersEngine.so" )
-hypVolume.SetMaxElementVolume( maxElementVolume )
-print hypVolume.GetName()
-print hypVolume.GetId()
-print hypVolume.GetMaxElementVolume()
-
-smeshgui.SetName(salome.ObjectToID(hypVolume), "MaxElementVolume_20")
-
-print "-------------------------- Regular_1D"
-
-algoReg1D = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" )
-listHyp =algoReg1D.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoReg1D.GetName()
-print algoReg1D.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoReg1D), "Regular_1D")
-
-print "-------------------------- MEFISTO_2D"
-
-algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" )
-listHyp = algoMef.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoMef.GetName()
-print algoMef.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D")
-
-print "-------------------------- NETGEN_3D"
-
-algoNg = smesh.CreateHypothesis( "NETGEN_3D", "libNETGENEngine.so" )
-listHyp = algoNg.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoNg.GetName()
-print algoNg.GetId()
-
-smeshgui.SetName(salome.ObjectToID(algoNg), "NETGEN_3D")
-
-print "-------------------------- add hypothesis to main mechanic"
-
-shape_mesh = salome.IDToObject( Id_mechanic  )
-
-mesh = smesh.CreateMesh(shape_mesh)
-
-idmesh = salome.ObjectToID(mesh)
-smeshgui.SetName( idmesh, "Mesh_mechanic_tetra" )
-
-mesh.AddHypothesis( shape_mesh, hypNbSeg )   # nb segments
-mesh.AddHypothesis( shape_mesh, hypArea )    # max area
-mesh.AddHypothesis( shape_mesh, hypVolume )  # max volume
-
-mesh.AddHypothesis( shape_mesh, algoReg1D )  # Regular 1D/wire discretisation
-mesh.AddHypothesis( shape_mesh, algoMef )    # MEFISTO 2D
-mesh.AddHypothesis( shape_mesh, algoNg )     # NETGEN 3D
-
-print "-------------------------- compute the mesh of the mechanic piece"
-smesh.Compute(mesh,shape_mesh)
-
-print "Information about the Mesh_mechanic_tetra:"
-print "Number of nodes       : ", mesh.NbNodes()
-print "Number of edges       : ", mesh.NbEdges()
-print "Number of faces       : ", mesh.NbFaces()
-print "Number of triangles   : ", mesh.NbTriangles()
-print "Number of quadrangles: ", mesh.NbQuadrangles()
-print "Number of volumes     : ", mesh.NbVolumes()
-print "Number of tetrahedrons: ", mesh.NbTetras()
-
-salome.sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/SMESH_shared_modules.py b/src/SMESH_SWIG/SMESH_shared_modules.py
deleted file mode 100644 (file)
index e40362f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-"""
-
-"""
-
-# force SMESH importation at interpretor initialization
-# see salome_shared_modules.py
-# (avoids incomplete import at run time)
-
-print "============== import SMESH ======================="
-
-import SMESH
-
-# this function is required
-
-def init_shared_modules():
-   """
-      This function initializes shared modules that need to be
-   """
-   pass
diff --git a/src/SMESH_SWIG/SMESH_test.py b/src/SMESH_SWIG/SMESH_test.py
deleted file mode 100644 (file)
index d2385f3..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-#  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-#
-#  This library is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Lesser General Public
-#  License as published by the Free Software Foundation; either
-#  version 2.1 of the License.
-#
-#  This library is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Lesser General Public License for more details.
-#
-#  You should have received a copy of the GNU Lesser General Public
-#  License along with this library; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-#
-#
-#
-#  File   : SMESH_test.py
-#  Module : SMESH
-
-import salome
-import geompy
-import smeshpy
-
-import SMESH
-import StdMeshers
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idb = geompy.addToStudy(box, "box")
-
-# ---- add first face of box in study
-
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-face = subShapeList[0]
-name = geompy.SubShapeName(face, box)
-idf = geompy.addToStudyInFather(box, face, name)
-
-# ---- add shell from box  in study
-
-subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
-shell = subShellList[0]
-name = geompy.SubShapeName(shell, box)
-ids = geompy.addToStudyInFather(box, shell, name)
-
-# ---- add first edge of face in study
-
-edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
-edge = edgeList[0];
-name = geompy.SubShapeName(edge, face)
-ide = geompy.addToStudyInFather(face, edge, name)
-
-# ---- launch SMESH, init a Mesh with the box
-
-gen = smeshpy.smeshpy()
-mesh = gen.CreateMesh(idb)
-
-print "-------------------------- create Hypothesis"
-
-print "-------------------------- LocalLength"
-
-hypo1 = gen.CreateHypothesis("LocalLength", "libStdMeshersEngine.so")
-print hypo1.GetName()
-print hypo1.GetId()
-print hypo1.GetLength()
-hypo1.SetLength(100)
-print hypo1.GetLength()
-
-print "-------------------------- bidon"
-
-hyp3 = gen.CreateHypothesis("bidon", "")
-
-print "-------------------------- NumberOfSegments"
-
-hypo3 = gen.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypo3.SetNumberOfSegments(7)
-print hypo3.GetName()
-print hypo3.GetNumberOfSegments()
-print hypo3.GetId()
-
-print "-------------------------- MaxElementArea"
-
-hypo4 = gen.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hypo4.SetMaxElementArea(5000)
-print hypo4.GetName()
-print hypo4.GetMaxElementArea()
-print hypo4.GetId()
-
-print "-------------------------- Regular_1D"
-
-algo_1 = gen.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-print algo_1.GetName()
-print algo_1.GetId()
-listHyp = algo_1.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algo_1.GetId()
-
-print "-------------------------- MEFISTO_2D"
-
-algo_2 = gen.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-print algo_2.GetName()
-print algo_2.GetId()
-listHyp = algo_2.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algo_2.GetId()
-
-print "-------------------------- add hypothesis to edge"
-
-edge = salome.IDToObject(ide)
-submesh = mesh.GetSubMesh(edge, "SubMeshEdge")
-ret = mesh.AddHypothesis(edge,algo_1)
-print ret
-ret = mesh.AddHypothesis(edge,hypo1)
-print ret
-
-##print "-------------------------- compute edge"
-##ret=gen.Compute(mesh,ide)
-##print ret
-##log=mesh.GetLog(1);
-##for a in log:
-##    print a
-
-print "-------------------------- add hypothesis to box"
-
-box = salome.IDToObject(idb)
-submesh = mesh.GetSubMesh(box, "SubMeshBox")
-ret = mesh.AddHypothesis(box,algo_1)
-print ret
-ret = mesh.AddHypothesis(box,hypo1)
-print ret
-ret = mesh.AddHypothesis(box,algo_2)
-print ret
-ret = mesh.AddHypothesis(box,hypo4)
-print ret
-
-print "-------------------------- compute face"
-
-ret = gen.Compute(mesh,idf)
-print ret
-log = mesh.GetLog(0) # 0 - GetLog without ClearLog after, else if 1 - ClearLog after
-for a in log:
-    print "-------"
-    ii = 0
-    ir = 0
-    comType = a.commandType
-    if comType == 0:
-        for i in range(a.number):
-            ind = a.indexes[ii]
-            ii = ii+1
-            r1 = a.coords[ir]
-            ir = ir+1
-            r2 = a.coords[ir]
-            ir = ir+1
-            r3 = a.coords[ir]
-            ir = ir+1
-            print "AddNode %i - %g %g %g" % (ind, r1, r2, r3)
-    elif comType == 1:
-        for i in range(a.number):
-            ind = a.indexes[ii]
-            ii = ii+1
-            i1 = a.indexes[ii]
-            ii = ii+1
-            i2 = a.indexes[ii]
-            ii = ii+1
-            print "AddEdge %i - %i %i" % (ind, i1, i2)
-    elif comType == 2:
-        for i in range(a.number):
-            ind = a.indexes[ii]
-            ii = ii+1
-            i1 = a.indexes[ii]
-            ii = ii+1
-            i2 = a.indexes[ii]
-            ii = ii+1
-            i3 = a.indexes[ii]
-            ii = ii+1
-            print "AddTriangle %i - %i %i %i" % (ind, i1, i2, i3)
-
-##print "-------------------------- compute box"
-##ret=gen.Compute(mesh,idb)
-##print ret
-##log=mesh.GetLog(1);
-##print log
-
-##shell=salome.IDToObject(ids)
-##submesh=mesh.GetElementsOnShape(shell)
-##ret=mesh.AddHypothesis(shell,algo_1)
-##print ret
-##ret=mesh.AddHypothesis(shell,hypo1)
-##print ret
-##ret=gen.Compute(mesh,ids)
-##print ret
diff --git a/src/SMESH_SWIG/SMESH_test0.py b/src/SMESH_SWIG/SMESH_test0.py
deleted file mode 100644 (file)
index a7a5282..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : SMESH_test0.py
-#  Module : SMESH
-
-import salome
-import geompy
-from geompy import geom
-from geompy import gg
-
-import SMESH
-
-myBuilder = salome.myStudy.NewBuilder()
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box, "box")
-
-# ---- add first face of box in study
-
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-face = subShapeList[0]
-name = geompy.SubShapeName(face, box)
-print name
-idface = geompy.addToStudyInFather(box, face, name)
-
-# ---- add shell from box  in study
-
-subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
-shell = subShellList[0]
-name = geompy.SubShapeName(shell, box)
-print name
-idshell = geompy.addToStudyInFather(box, shell, name)
-
-# ---- add first edge of face in study
-
-edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
-edge = edgeList[0]
-name = geompy.SubShapeName(edge, face)
-print name
-idedge = geompy.addToStudyInFather(face, edge, name)
-
-salome.sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/SMESH_test1.py b/src/SMESH_SWIG/SMESH_test1.py
deleted file mode 100644 (file)
index c0b0429..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : SMESH_test1.py
-#  Module : SMESH
-
-import salome
-import geompy
-
-import StdMeshers
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smesh.SetCurrentStudy(salome.myStudy)
-
-# ---- define a box
-
-box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box, "box")
-
-# ---- add first face of box in study
-
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-face = subShapeList[0]
-name = geompy.SubShapeName(face, box)
-print name
-idface = geompy.addToStudyInFather(box, face, name)
-
-# ---- add shell from box  in study
-
-subShellList = geompy.SubShapeAll(box, geompy.ShapeType["SHELL"])
-shell = subShellList[0]
-name = geompy.SubShapeName(shell, box)
-print name
-idshell = geompy.addToStudyInFather(box, shell, name)
-
-# ---- add first edge of face in study
-
-edgeList = geompy.SubShapeAll(face, geompy.ShapeType["EDGE"])
-edge = edgeList[0]
-name = geompy.SubShapeName(edge, face)
-print name
-idedge = geompy.addToStudyInFather(face, edge, name)
-
-# ---- launch SMESH
-
-smeshgui = salome.ImportComponentGUI("SMESH")
-smeshgui.Init(salome.myStudyId)
-
-print "-------------------------- create Hypothesis"
-
-print "-------------------------- LocalLength"
-hypLen1 = smesh.CreateHypothesis("LocalLength", "libStdMeshersEngine.so")
-hypLen1.SetLength(100)
-print hypLen1.GetName()
-print hypLen1.GetId()
-print hypLen1.GetLength()
-
-idlength = salome.ObjectToID(hypLen1) 
-smeshgui.SetName(idlength, "Local_Length_100");
-
-print "-------------------------- NumberOfSegments"
-hypNbSeg1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hypNbSeg1.SetNumberOfSegments(7)
-print hypNbSeg1.GetName()
-print hypNbSeg1.GetId()
-print hypNbSeg1.GetNumberOfSegments()
-
-idseg = salome.ObjectToID(hypNbSeg1) 
-smeshgui.SetName(idseg, "NumberOfSegments_7");
-
-print "-------------------------- MaxElementArea"
-hypArea1 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hypArea1.SetMaxElementArea(2500)
-print hypArea1.GetName()
-print hypArea1.GetId()
-print hypArea1.GetMaxElementArea()
-
-idarea1 = salome.ObjectToID(hypArea1)
-smeshgui.SetName(idarea1, "MaxElementArea_2500");
-
-print "-------------------------- MaxElementArea"
-hypArea2 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hypArea2.SetMaxElementArea(500)
-print hypArea2.GetName()
-print hypArea2.GetId()
-print hypArea2.GetMaxElementArea()
-
-idarea2 = salome.ObjectToID(hypArea2)
-smeshgui.SetName(idarea2, "MaxElementArea_500");
-
-print "-------------------------- Regular_1D"
-algoReg = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-listHyp = algoReg.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoReg.GetName()
-print algoReg.GetId()
-
-idreg = salome.ObjectToID(algoReg)
-smeshgui.SetName(idreg, "Regular_1D");
-
-print "-------------------------- MEFISTO_2D"
-algoMef = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-listHyp = algoMef.GetCompatibleHypothesis()
-for hyp in listHyp:
-    print hyp
-print algoMef.GetName()
-print algoMef.GetId()
-
-idmef = salome.ObjectToID(algoMef)
-smeshgui.SetName(idmef, "MEFISTO_2D");
-
-# ---- Init a Mesh with the box
-
-box = salome.IDToObject(idbox)
-mesh = smesh.CreateMesh(box)
-idmesh = salome.ObjectToID(mesh)
-smeshgui.SetName(idmesh, "Meshbox");
-
-print "-------------------------- add hypothesis to box"
-mesh.AddHypothesis(box,algoReg)
-mesh.AddHypothesis(box,hypNbSeg1)
-mesh.AddHypothesis(box,algoMef)
-mesh.AddHypothesis(box,hypArea1)
-
-# ---- add hypothesis to edge
-
-print "-------------------------- add hypothesis to edge"
-edge = salome.IDToObject(idedge)
-submesh = mesh.GetSubMesh(edge, "SubMeshEdge")
-mesh.AddHypothesis(edge, algoReg)
-mesh.AddHypothesis(edge, hypLen1)
-
-print "-------------------------- add hypothesis to face"
-face = salome.IDToObject(idface)
-submesh = mesh.GetSubMesh(face, "SubMeshFace")
-mesh.AddHypothesis(face, hypArea2)
-
-salome.sg.updateObjBrowser(1);
diff --git a/src/SMESH_SWIG/SMESH_test2.py b/src/SMESH_SWIG/SMESH_test2.py
deleted file mode 100644 (file)
index b552a14..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : SMESH_test2.py
-#  Module : SMESH
-
-from SMESH_test1 import *
-
-# ---- compute box
-
-print "-------------------------- compute box"
-ret = smesh.Compute(mesh,box)
-print ret
-log = mesh.GetLog(0); # no erase trace
-for linelog in log:
-    print linelog
-
-salome.sg.updateObjBrowser(1);
-
-# ---- compute edge
-
-##print "-------------------------- compute edge"
-##ret=gen.Compute(mesh,idedge)
-##print ret
-##log=mesh.GetLog(1);
-##for a in log:
-##    print a
-
-# ---- add hypothesis to face
-
-# ---- compute face
-
-#print "-------------------------- compute face"
-#ret=gen.Compute(mesh,idface)
-#print ret
-#log=mesh.GetLog(1);
-#for a in log:
-#    print a
-
-##shell=salome.IDToObject(ids)
-##submesh=mesh.GetElementsOnShape(shell)
-##ret=mesh.AddHypothesis(shell,algoReg)
-##print ret
-##ret=mesh.AddHypothesis(shell,hypLen1)
-##print ret
-##ret=gen.Compute(mesh,ids)
-##print ret
diff --git a/src/SMESH_SWIG/SMESH_test3.py b/src/SMESH_SWIG/SMESH_test3.py
deleted file mode 100644 (file)
index e105018..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : SMESH_test3.py
-#  Module : SMESH
-
-#import salome
-import math
-import geompy
-
-pi = math.pi
-
-# ---------------------------------------------
-xa = math.sin(pi/12)
-ya = 0
-za = math.cos(pi/12)
-
-xb = 0
-yb = math.sin(pi/18)
-zb = math.cos(pi/18)
-
-xc = math.cos(-pi/18)
-yc = 0
-zc = math.sin(-pi/18)
-
-rc1 = 150
-rc2 = 150
-rc3 = 150
-rc4 = 300
-
-hc1 = 300
-hc2 = 2*hc1
-hc3 = 2*hc1
-hc4 = 2*hc1
-
-# ---------------------------------------------
-point_0 = geompy.MakeVertex(0, 0, 0)
-point_z = geompy.MakeVertex(0, 0, 1)
-
-point_a = geompy.MakeVertex(xa, ya, za)
-point_b = geompy.MakeVertex(xb, yb, zb)
-point_c = geompy.MakeVertex(xc, yc, zc)
-
-dir_z = geompy.MakeVector(point_0, point_z)
-dir_a = geompy.MakeVector(point_0, point_a)
-dir_b = geompy.MakeVector(point_0, point_b)
-dir_c = geompy.MakeVector(point_0, point_c)
-
-axe_z = dir_z
-axe_a = dir_a
-axe_b = dir_b
-axe_c = dir_c
-
-cyl_1 = geompy.MakeCylinder(point_0, dir_z, rc1, hc1)
-
-cyl_t = geompy.MakeCylinder(point_0, dir_a, rc2, hc2)
-cyl_a = geompy.MakeTranslation(cyl_t, 1.2*rc1, 0.1*rc1, -0.5*hc1)
-
-cyl_t = geompy.MakeCylinder(point_0, dir_b, rc3, hc3)
-cyl_b = geompy.MakeTranslation(cyl_t, -1.2*rc1, -0.1*rc1, -0.5*hc1)
-
-cyl_t = geompy.MakeCylinder(point_0, dir_c, rc4, hc4)
-cyl_t = geompy.MakeRotation(cyl_t, axe_c, pi/2)
-cyl_c = geompy.MakeTranslation(cyl_t, -hc1, 0, 0)
-cyl_d = geompy.MakeTranslation(cyl_t, -hc1, 0, 1.3*rc4)
-
-inter_t = geompy.MakeBoolean(cyl_c,cyl_d, 1) # common
-
-blob_t = geompy.MakeBoolean(cyl_1, cyl_a, 2) # cut
-blob_t = geompy.MakeBoolean(blob_t, cyl_b, 2)
-
-blob = geompy.MakeBoolean(blob_t, inter_t, 1) # common
-
-idblob = geompy.addToStudy(blob,"blob")
-#idc = geompy.addToStudy(cyl_c,"cyl_c")
-#idd = geompy.addToStudy(cyl_d,"cyl_d")
diff --git a/src/SMESH_SWIG/SMESH_test4.py b/src/SMESH_SWIG/SMESH_test4.py
deleted file mode 100755 (executable)
index 09271b6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-import salome
-import geompy
-import SMESH
-import StdMeshers
-
-smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-smesh.SetCurrentStudy(salome.myStudy)
-
-box   = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
-idbox = geompy.addToStudy(box, "box")
-
-subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
-face   = subShapeList[0]
-name   = geompy.SubShapeName(face, box)
-idface = geompy.addToStudyInFather(box, face, name)
-
-box  = salome.IDToObject(idbox)
-face = salome.IDToObject(idface)
-
-hyp1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-hyp1.SetNumberOfSegments(10)
-hyp2 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hyp2.SetMaxElementArea(10)
-hyp3 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-hyp3.SetMaxElementArea(100)
-
-algo1 = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-algo2 = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-
-mesh = smesh.CreateMesh(box)
-mesh.AddHypothesis(box,hyp1)
-mesh.AddHypothesis(box,hyp2)
-mesh.AddHypothesis(box,algo1)
-mesh.AddHypothesis(box,algo2)
-
-submesh = mesh.GetSubMesh(face, "SubMeshFace")
-mesh.AddHypothesis(face,hyp1)
-mesh.AddHypothesis(face,hyp3)
-mesh.AddHypothesis(face,algo1)
-mesh.AddHypothesis(face,algo2)
-
-smesh.Compute(mesh,box)
-
-faces = submesh.GetElementsByType(SMESH.FACE)
-if len(faces) > 1:
-    print len(faces), len(faces)/2
-    group1 = mesh.CreateGroup(SMESH.FACE,"Group of faces")
-    group2 = mesh.CreateGroup(SMESH.FACE,"Another group of faces")
-    group1.Add(faces[:int(len(faces)/2)])
-    group2.Add(faces[int(len(faces)/2):])
-
-salome.sg.updateObjBrowser(1)
diff --git a/src/SMESH_SWIG/batchmode_mefisto.py b/src/SMESH_SWIG/batchmode_mefisto.py
deleted file mode 100644 (file)
index 203b160..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-import os
-import re
-
-import batchmode_salome
-import batchmode_geompy
-import batchmode_smesh
-import StdMeshers
-
-smesh = batchmode_smesh.smesh
-smesh.SetCurrentStudy(batchmode_salome.myStudy)
-
-def CreateMesh (theFileName, area, len = None, nbseg = None):
-    
-    if not(os.path.isfile(theFileName)) or re.search("\.brep$", theFileName) is None :
-        print "Incorrect file name !"
-        return
-
-    if (len is None) and (nbseg is None):
-        print "Define length or number of segments !"
-        return
-
-    if (len is not None) and (nbseg is not None):
-        print "Only one Hypothesis (from length and number of segments) can be defined !"
-        return
-
-    
-    # ----  Import shape from BREP file and add it to the study  
-    shape_mesh = batchmode_geompy.Import(theFileName, "BREP")
-    Id_shape = batchmode_geompy.addToStudy(shape_mesh, "shape_mesh")
-
-
-    # ---- SMESH
-      
-    print "-------------------------- create Hypothesis"
-    if (len is not None):
-        print "-------------------------- LocalLength"
-        hypLength1 = smesh.CreateHypothesis("LocalLength", "libStdMeshersEngine.so")
-        hypLength1.SetLength(len)
-        print "Hypothesis type : ", hypLength1.GetName()
-        print "Hypothesis ID   : ", hypLength1.GetId()
-        print "Hypothesis Value: ", hypLength1.GetLength()
-    
-    if (nbseg is not None):   
-        print "-------------------------- NumberOfSegments"
-        hypNbSeg1 = smesh.CreateHypothesis("NumberOfSegments", "libStdMeshersEngine.so")
-        hypNbSeg1.SetNumberOfSegments(nbseg)
-        print "Hypothesis type : ", hypNbSeg1.GetName()
-        print "Hypothesis ID   : ", hypNbSeg1.GetId()
-        print "Hypothesis Value: ", hypNbSeg1.GetNumberOfSegments()
-
-    if (area == "LengthFromEdges"):
-        print "-------------------------- LengthFromEdges"
-        hypLengthFromEdges = smesh.CreateHypothesis("LengthFromEdges", "libStdMeshersEngine.so")
-        hypLengthFromEdges.SetMode(1)
-        print "Hypothesis type     : ", hypLengthFromEdges.GetName()
-        print "Hypothesis ID       : ", hypLengthFromEdges.GetId()
-        print "LengthFromEdges Mode: ", hypLengthFromEdges.GetMode()
-       
-    else:
-        print "-------------------------- MaxElementArea"
-        hypArea1 = smesh.CreateHypothesis("MaxElementArea", "libStdMeshersEngine.so")
-        hypArea1.SetMaxElementArea(area)
-        print "Hypothesis type : ", hypArea1.GetName()
-        print "Hypothesis ID   : ", hypArea1.GetId()
-        print "Hypothesis Value: ", hypArea1.GetMaxElementArea()
-              
-    
-    print "-------------------------- Regular_1D"
-    algoReg = smesh.CreateHypothesis("Regular_1D", "libStdMeshersEngine.so")
-   
-    listHyp = algoReg.GetCompatibleHypothesis()
-    for hyp in listHyp:
-        print hyp
-    
-    print "Algo name: ", algoReg.GetName()
-    print "Algo ID  : ", algoReg.GetId()
-   
-    print "-------------------------- MEFISTO_2D"
-    algoMef = smesh.CreateHypothesis("MEFISTO_2D", "libStdMeshersEngine.so")
-    
-    listHyp = algoMef.GetCompatibleHypothesis()
-    for hyp in listHyp:
-        print hyp
-        
-    print "Algo name: ", algoMef.GetName()
-    print "Algo ID  : ", algoMef.GetId()
-
-
-    # ---- add hypothesis to shape
-
-    print "-------------------------- add hypothesis to shape"
-    mesh = smesh.CreateMesh(shape_mesh) 
-
-    ret = mesh.AddHypothesis(shape_mesh, algoReg)
-    print "Add Regular_1D algo .... ", 
-    print ret
-    
-    if (nbseg is not None):
-        ret = mesh.AddHypothesis(shape_mesh, hypNbSeg1)
-        print "Add Number Of Segements algo .... ", 
-        print ret
-
-    if (len is not None):
-        ret = mesh.AddHypothesis(shape_mesh,hypLength1)
-        print "Add  Local Length algo .... ", 
-        print ret
-
-    ret = mesh.AddHypothesis(shape_mesh, algoMef)
-    print "Add MEFISTO_2D algo....", 
-    print ret
-    
-    if (area == "LengthFromEdges"):
-        ret = mesh.AddHypothesis( shape_mesh, hypLengthFromEdges)    # length from edge 
-        print "Add Length From Edges algo .... ",
-        print ret
-    else:
-        ret = mesh.AddHypothesis(shape_mesh, hypArea1)
-        print "Add Max Triangle Area algo .... ", 
-        print ret
-    
-    print "-------------------------- compute mesh"
-    ret = smesh.Compute(mesh,shape_mesh)
-    print  "Compute Mesh .... ", 
-    print ret
-    log = mesh.GetLog(0); # no erase trace
-    #for linelog in log:
-    #    print linelog
-
-    print "------------ INFORMATION ABOUT MESH ------------"
-    
-    print "Number of nodes    : ", mesh.NbNodes()
-    print "Number of edges    : ", mesh.NbEdges()
-    print "Number of faces    : ", mesh.NbFaces()
-    print "Number of triangles: ", mesh.NbTriangles()
-
-    return mesh
diff --git a/src/SMESH_SWIG/batchmode_smesh.py b/src/SMESH_SWIG/batchmode_smesh.py
deleted file mode 100644 (file)
index 4964c8b..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
-#
-#
-#
-#  File   : batchmode_smesh.py
-#  Author : Oksana TCHEBANOVA
-#  Module : SMESH
-#  $Header$
-
-from batchmode_salome import *
-from batchmode_geompy import ShapeType
-import SMESH
-
-#--------------------------------------------------------------------------
-modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
-
-smesh = lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-myStudyBuilder = myStudy.NewBuilder()
-
-if myStudyBuilder is None:
-       raise RuntimeError, " Null myStudyBuilder"
-
-father = myStudy.FindComponent("SMESH")
-if father is None:
-        father = myStudyBuilder.NewComponent("SMESH")
-        FName = myStudyBuilder.FindOrCreateAttribute(father, "AttributeName")
-       Comp = modulecatalog.GetComponent("SMESH")
-       FName.SetValue(Comp._get_componentusername())
-       aPixmap = myStudyBuilder.FindOrCreateAttribute(father, "AttributePixMap")
-       aPixmap.SetPixMap("ICON_OBJBROWSER_Mesh")
-
-myStudyBuilder.DefineComponentInstance(father,smesh)
-
-mySComponentMesh = father._narrow(SALOMEDS.SComponent)
-
-Tag_HypothesisRoot  = 1
-Tag_AlgorithmsRoot  = 2
-  
-Tag_RefOnShape      = 1
-Tag_RefOnAppliedHypothesis = 2
-Tag_RefOnAppliedAlgorithms = 3
-  
-Tag_SubMeshOnVertex = 4
-Tag_SubMeshOnEdge = 5
-Tag_SubMeshOnFace = 6
-Tag_SubMeshOnSolid = 7
-Tag_SubMeshOnCompound = 8
-
-Tag = {"HypothesisRoot":1,"AlgorithmsRoot":2,"RefOnShape":1,"RefOnAppliedHypothesis":2,"RefOnAppliedAlgorithms":3,"SubMeshOnVertex":4,"SubMeshOnEdge":5,"SubMeshOnFace":6,"SubMeshOnSolid":7,"SubMeshOnCompound":8}
-
-#------------------------------------------------------------
-def Init():
-        pass
-#------------------------------------------------------------
-def AddNewMesh(IOR):
-       # VSR: added temporarily - objects are published automatically by the engine
-       aSO = myStudy.FindObjectIOR( IOR )
-       if aSO is not None:
-               return aSO.GetID()
-       # VSR ######################################################################
-       
-       res,HypothesisRoot = mySComponentMesh.FindSubObject ( Tag_HypothesisRoot )
-       if HypothesisRoot is None or res == 0:
-               HypothesisRoot = myStudyBuilder.NewObjectToTag(mySComponentMesh, Tag_HypothesisRoot)
-               aName = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeName")
-               aName.SetValue("Hypotheses")
-               aPixmap = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributePixMap")
-               aPixmap.SetPixMap( "mesh_tree_hypo.png" )
-               aSelAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable")
-               aSelAttr.SetSelectable(0)
-
-       res, AlgorithmsRoot = mySComponentMesh.FindSubObject (Tag_AlgorithmsRoot)
-       if AlgorithmsRoot is None  or res == 0:
-               AlgorithmsRoot = myStudyBuilder.NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot)
-               aName = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeName")
-               aName.SetValue("Algorithms")
-               aPixmap = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap")
-               aPixmap.SetPixMap( "mesh_tree_algo.png" )
-               aSelAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable")
-               aSelAttr.SetSelectable(0)
-
-       HypothesisRoot = HypothesisRoot._narrow(SALOMEDS.SObject)
-       newMesh = myStudyBuilder.NewObject(mySComponentMesh)
-       aPixmap = myStudyBuilder.FindOrCreateAttribute(newMesh, "AttributePixMap")
-       aPixmap.SetPixMap( "mesh_tree_mesh.png" )
-       anIOR = myStudyBuilder.FindOrCreateAttribute(newMesh, "AttributeIOR")
-       anIOR.SetValue(IOR)
-       return newMesh.GetID()
-
-#------------------------------------------------------------  
-def AddNewHypothesis(IOR):
-       # VSR: added temporarily - objects are published automatically by the engine
-       aSO = myStudy.FindObjectIOR( IOR )
-       if aSO is not None:
-               return aSO.GetID()
-       # VSR ######################################################################
-
-       res, HypothesisRoot = mySComponentMesh.FindSubObject (Tag_HypothesisRoot)
-       if HypothesisRoot is None or res == 0:
-               HypothesisRoot = myStudyBuilder.NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot)
-               aName = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeName")
-               aName.SetValue("Hypotheses")
-               aSelAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable")
-               aSelAttr.SetSelectable(0)
-               aPixmap = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributePixMap")
-               aPixmap.SetPixMap( "mesh_tree_hypo.png" )
-       # Add New Hypothesis
-       newHypo = myStudyBuilder.NewObject(HypothesisRoot)
-       aPixmap = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributePixMap")
-       H = orb.string_to_object(IOR)
-       aType = H.GetName()
-       aPixmap.SetPixMap( "mesh_tree_hypo.png_" + aType )
-       anIOR = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR")
-       anIOR.SetValue(IOR)
-       return newHypo.GetID()
-
-#------------------------------------------------------------
-def AddNewAlgorithms(IOR):
-       # VSR: added temporarily - objects are published automatically by the engine
-       aSO = myStudy.FindObjectIOR( IOR )
-       if aSO is not None:
-               return aSO.GetID()
-       # VSR ######################################################################
-
-       res, AlgorithmsRoot = mySComponentMesh.FindSubObject (Tag_AlgorithmsRoot)
-       if  AlgorithmsRoot is None or res == 0:
-               AlgorithmsRoot = myStudyBuilde.NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot)
-               aName = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeName")
-               aName.SetValue("Algorithms")
-               aSelAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable")
-               aSelAttr.SetSelectable(0)
-               aPixmap = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap")
-               aPixmap.SetPixMap( "mesh_tree_algo.png" )
-
-  # Add New Algorithms
-       newHypo = myStudyBuilder.NewObject(AlgorithmsRoot)
-       aPixmap = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributePixMap")
-       aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap)
-       H = orb.string_to_object(IOR)
-       aType = H.GetName();    #QString in fact
-       aPixmap.SetPixMap( "mesh_tree_algo.png_" + aType )
-       anIOR = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR")
-       anIOR.SetValue(IOR)
-       return newHypo.GetID()
-
-
-#------------------------------------------------------------
-def SetShape(ShapeEntry, MeshEntry):
-       SO_MorSM = myStudy.FindObjectID( MeshEntry )
-       SO_GeomShape = myStudy.FindObjectID( ShapeEntry )
-
-       if SO_MorSM is not None and SO_GeomShape is not None :
-               # VSR: added temporarily - shape reference is published automatically by the engine
-               res, Ref = SO_MorSM.FindSubObject( Tag_RefOnShape )
-               if res == 1 :
-                       return
-               # VSR ######################################################################
-       
-               SO = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnShape)
-               myStudyBuilder.Addreference (SO,SO_GeomShape)
-
-
-#------------------------------------------------------------
-def SetHypothesis(Mesh_Or_SubMesh_Entry, Hypothesis_Entry):
-  SO_MorSM = myStudy.FindObjectID( Mesh_Or_SubMesh_Entry )
-  SO_Hypothesis =  myStudy.FindObjectID( Hypothesis_Entry )
-
-  if  SO_MorSM is not None and SO_Hypothesis is not None : 
-    
-        #Find or Create Applied Hypothesis root
-       res, AHR = SO_MorSM.FindSubObject (Tag_RefOnAppliedHypothesis)
-       if  AHR is None or res == 0: 
-               AHR = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis)
-               aName = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeName")
-               
-               # The same name as in SMESH_Mesh_i::AddHypothesis() ##################
-               aName.SetValue("Applied hypotheses")
-               
-               aSelAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeSelectable")
-               aSelAttr.SetSelectable(0)
-               aPixmap = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributePixMap")
-               aPixmap.SetPixMap( "mesh_tree_hypo.png" )
-               
-       # VSR: added temporarily - reference to applied hypothesis is published automatically by the engine
-       else :
-               it = myStudy.NewChildIterator(AHR)
-               while it.More() :
-                       res, Ref = it.Value().ReferencedObject()
-                       if res and Ref is not None and Ref.GetID() == Hypothesis_Entry :
-                               return
-                       it.Next()
-       # VSR ######################################################################
-       
-       SO = myStudyBuilder.NewObject(AHR)
-       myStudyBuilder.Addreference (SO,SO_Hypothesis)
-
-#------------------------------------------------------------
-def SetAlgorithms(Mesh_Or_SubMesh_Entry, Algorithms_Entry):
-    SO_MorSM = myStudy.FindObjectID( Mesh_Or_SubMesh_Entry )
-    SO_Algorithms = myStudy.FindObjectID( Algorithms_Entry )
-    if  SO_MorSM != None and SO_Algorithms != None : 
-       #Find or Create Applied Algorithms root
-       res, AHR = SO_MorSM.FindSubObject (Tag_RefOnAppliedAlgorithms)
-       if AHR is None or res == 0: 
-               AHR = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms)
-               aName = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeName")
-
-               # The same name as in SMESH_Mesh_i::AddHypothesis() ##################
-               aName.SetValue("Applied algorithms")
-               
-               aSelAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeSelectable")
-               aSelAttr.SetSelectable(0)
-               aPixmap = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributePixMap")
-               aPixmap.SetPixMap( "mesh_tree_algo.png" )
-                       
-       # VSR: added temporarily - reference to applied hypothesis is published automatically by the engine
-       else :
-               it = myStudy.NewChildIterator(AHR)
-               while it.More() :
-                       res, Ref = it.Value().ReferencedObject()
-                       if res and Ref is not None and Ref.GetID() == Algorithms_Entry :
-                               return
-                       it.Next()
-       # VSR ######################################################################
-       
-       SO = myStudyBuilder.NewObject(AHR)
-       myStudyBuilder.Addreference (SO,SO_Algorithms)
-  
-
-#------------------------------------------------------------
-def UnSetHypothesis( Applied_Hypothesis_Entry ):
-       SO_Applied_Hypothesis = myStudy.FindObjectID( Applied_Hypothesis_Entry )
-       if SO_Applied_Hypothesis : 
-               myStudyBuilder.RemoveObject(SO_Applied_Hypothesis)
-       
-
-#------------------------------------------------------------
-def AddSubMesh ( SO_Mesh_Entry, SM_IOR, ST):
-       # VSR: added temporarily - objects are published automatically by the engine
-       aSO = myStudy.FindObjectIOR( SM_IOR )
-       if aSO is not None:
-               return aSO.GetID()
-       # VSR ######################################################################
-       
-       SO_Mesh = myStudy.FindObjectID( SO_Mesh_Entry )
-       if ( SO_Mesh ) : 
-    
-               if  ST == ShapeType["COMPSOLID"] : 
-                       Tag_Shape = Tag_SubMeshOnSolid
-                       Name = "SubMeshes on Solid"
-               elif ST == ShapeType["FACE"] :
-                       Tag_Shape = Tag_SubMeshOnFace
-                       Name = "SubMeshes on Face"
-               elif ST == ShapeType["EDGE"] :
-                       Tag_Shape = Tag_SubMeshOnEdge
-                       Name = "SubMeshes on Edge"
-               elif ST == ShapeType["VERTEX"] :
-                       Tag_Shape = Tag_SubMeshOnVertex
-                       Name = "SubMeshes on Vertex"
-               else :
-                       Tag_Shape = Tag_SubMeshOnCompound
-                       Name = "SubMeshes on Compound"
-               
-               res, SubmeshesRoot = SO_Mesh.FindSubObject (Tag_Shape)
-               if SubmeshesRoot is None or res == 0:
-                       SubmeshesRoot = myStudyBuilder.NewObjectToTag (SO_Mesh, Tag_Shape)
-                       aName = myStudyBuilder.FindOrCreateAttribute(SubmeshesRoot, "AttributeName")
-                       aName.SetValue(Name)
-                       aSelAttr = myStudyBuilder.FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable")
-                       aSelAttr.SetSelectable(0)
-               
-               SO = myStudyBuilder.NewObject (SubmeshesRoot)
-               anIOR = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeIOR")
-               anIOR.SetValue(SM_IOR)
-               return  SO.GetID()
-
-       return None
-
-#------------------------------------------------------------
-def AddSubMeshOnShape (Mesh_Entry, GeomShape_Entry, SM_IOR, ST) :
-       # VSR: added temporarily - objects are published automatically by the engine
-       aSO = myStudy.FindObjectIOR( SM_IOR )
-       if aSO is not None:
-               return aSO.GetID()
-       # VSR ######################################################################
-       SO_GeomShape = myStudy.FindObjectID( GeomShape_Entry )
-       if  SO_GeomShape != None : 
-               SM_Entry = AddSubMesh (Mesh_Entry,SM_IOR,ST)
-               SO_SM = myStudy.FindObjectID( SM_Entry )
-
-               if  SO_SM != None :
-                       SetShape (GeomShape_Entry, SM_Entry)
-                       return SM_Entry
-
-       return None
-
-
-#------------------------------------------------------------
-def SetName(Entry, Name):
-       SO = myStudy.FindObjectID( Entry )
-       if SO != None : 
-               aName = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeName")
-               aName.SetValue(Name)
diff --git a/src/SMESH_SWIG/ex00_all.py b/src/SMESH_SWIG/ex00_all.py
deleted file mode 100644 (file)
index b1aa726..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# CEA/LGLS 2005, Francis KLOSS (OCC)
-# ==================================
-
-# Load all examples
-# -----------------
-
-import ex01_cube2build
-import ex02_cube2primitive
-import ex03_cube2partition
-import ex04_cube5tetraHexa
-import ex05_hole1build
-import ex06_hole1boolean
-import ex07_hole1partition
-import ex08_hole2build
-import ex09_grid4build
-import ex10_grid4geometry
-import ex11_grid3partition
-import ex12_grid17partition
-import ex13_hole1partial
-import ex14_cyl1holed
-import ex15_cyl2geometry
-import ex16_cyl2complementary
-import ex17_dome1
-import ex18_dome2
-import ex19_sphereINcube
diff --git a/src/SMESH_SWIG/ex01_cube2build.py b/src/SMESH_SWIG/ex01_cube2build.py
deleted file mode 100644 (file)
index 02b5b15..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# A small cube centered and put on a great cube build by points, edges, faces and solids
-
-# Points
-# ------
-
-greatPoint111 = MakeVertex( 0,  0,  0)
-greatPoint211 = MakeVertex(10,  0,  0)
-greatPoint311 = MakeVertex(20,  0,  0)
-greatPoint411 = MakeVertex(30,  0,  0)
-
-greatPoint121 = MakeVertex( 0, 10,  0)
-greatPoint221 = MakeVertex(10, 10,  0)
-greatPoint321 = MakeVertex(20, 10,  0)
-greatPoint421 = MakeVertex(30, 10,  0)
-
-greatPoint112 = MakeVertex( 0,  0, 10)
-greatPoint212 = MakeVertex(10,  0, 10)
-greatPoint312 = MakeVertex(20,  0, 10)
-greatPoint412 = MakeVertex(30,  0, 10)
-
-greatPoint122 = MakeVertex( 0, 10, 10)
-greatPoint222 = MakeVertex(10, 10, 10)
-greatPoint322 = MakeVertex(20, 10, 10)
-greatPoint422 = MakeVertex(30, 10, 10)
-
-greatPoint113 = MakeVertex( 0,  0, 20)
-greatPoint213 = MakeVertex(10,  0, 20)
-greatPoint313 = MakeVertex(20,  0, 20)
-greatPoint413 = MakeVertex(30,  0, 20)
-
-greatPoint123 = MakeVertex( 0, 10, 20)
-greatPoint223 = MakeVertex(10, 10, 20)
-greatPoint323 = MakeVertex(20, 10, 20)
-greatPoint423 = MakeVertex(30, 10, 20)
-
-greatPoint114 = MakeVertex( 0,  0, 30)
-greatPoint214 = MakeVertex(10,  0, 30)
-greatPoint314 = MakeVertex(20,  0, 30)
-greatPoint414 = MakeVertex(30,  0, 30)
-
-greatPoint124 = MakeVertex( 0, 10, 30)
-greatPoint224 = MakeVertex(10, 10, 30)
-greatPoint324 = MakeVertex(20, 10, 30)
-greatPoint424 = MakeVertex(30, 10, 30)
-
-
-smallPoint111 = greatPoint222
-smallPoint211 = greatPoint322
-smallPoint121 = MakeVertex(10, 20, 10)
-smallPoint221 = MakeVertex(20, 20, 10)
-
-smallPoint112 = greatPoint223
-smallPoint212 = greatPoint323
-smallPoint122 = MakeVertex(10, 20, 20)
-smallPoint222 = MakeVertex(20, 20, 20)
-
-# Edges
-# -----
-
-smallEdgeX11 = MakeEdge(smallPoint111, smallPoint211)
-smallEdgeX21 = MakeEdge(smallPoint121, smallPoint221)
-smallEdgeX12 = MakeEdge(smallPoint112, smallPoint212)
-smallEdgeX22 = MakeEdge(smallPoint122, smallPoint222)
-
-smallEdgeY11 = MakeEdge(smallPoint111, smallPoint121)
-smallEdgeY21 = MakeEdge(smallPoint211, smallPoint221)
-smallEdgeY12 = MakeEdge(smallPoint112, smallPoint122)
-smallEdgeY22 = MakeEdge(smallPoint212, smallPoint222)
-
-smallEdgeZ11 = MakeEdge(smallPoint111, smallPoint112)
-smallEdgeZ21 = MakeEdge(smallPoint211, smallPoint212)
-smallEdgeZ12 = MakeEdge(smallPoint121, smallPoint122)
-smallEdgeZ22 = MakeEdge(smallPoint221, smallPoint222)
-
-
-greatEdgeX111 = MakeEdge(greatPoint111, greatPoint211)
-greatEdgeX211 = MakeEdge(greatPoint211, greatPoint311)
-greatEdgeX311 = MakeEdge(greatPoint311, greatPoint411)
-greatEdgeX121 = MakeEdge(greatPoint121, greatPoint221)
-greatEdgeX221 = MakeEdge(greatPoint221, greatPoint321)
-greatEdgeX321 = MakeEdge(greatPoint321, greatPoint421)
-
-greatEdgeX112 = MakeEdge(greatPoint112, greatPoint212)
-greatEdgeX212 = MakeEdge(greatPoint212, greatPoint312)
-greatEdgeX312 = MakeEdge(greatPoint312, greatPoint412)
-greatEdgeX122 = MakeEdge(greatPoint122, greatPoint222)
-greatEdgeX222 = smallEdgeX11
-greatEdgeX322 = MakeEdge(greatPoint322, greatPoint422)
-
-greatEdgeX113 = MakeEdge(greatPoint113, greatPoint213)
-greatEdgeX213 = MakeEdge(greatPoint213, greatPoint313)
-greatEdgeX313 = MakeEdge(greatPoint313, greatPoint413)
-greatEdgeX123 = MakeEdge(greatPoint123, greatPoint223)
-greatEdgeX223 = smallEdgeX12
-greatEdgeX323 = MakeEdge(greatPoint323, greatPoint423)
-
-greatEdgeX114 = MakeEdge(greatPoint114, greatPoint214)
-greatEdgeX214 = MakeEdge(greatPoint214, greatPoint314)
-greatEdgeX314 = MakeEdge(greatPoint314, greatPoint414)
-greatEdgeX124 = MakeEdge(greatPoint124, greatPoint224)
-greatEdgeX224 = MakeEdge(greatPoint224, greatPoint324)
-greatEdgeX324 = MakeEdge(greatPoint324, greatPoint424)
-
-greatEdgeY11 = MakeEdge(greatPoint111, greatPoint121)
-greatEdgeY21 = MakeEdge(greatPoint211, greatPoint221)
-greatEdgeY31 = MakeEdge(greatPoint311, greatPoint321)
-greatEdgeY41 = MakeEdge(greatPoint411, greatPoint421)
-
-greatEdgeY12 = MakeEdge(greatPoint112, greatPoint122)
-greatEdgeY22 = MakeEdge(greatPoint212, greatPoint222)
-greatEdgeY32 = MakeEdge(greatPoint312, greatPoint322)
-greatEdgeY42 = MakeEdge(greatPoint412, greatPoint422)
-
-greatEdgeY13 = MakeEdge(greatPoint113, greatPoint123)
-greatEdgeY23 = MakeEdge(greatPoint213, greatPoint223)
-greatEdgeY33 = MakeEdge(greatPoint313, greatPoint323)
-greatEdgeY43 = MakeEdge(greatPoint413, greatPoint423)
-
-greatEdgeY14 = MakeEdge(greatPoint114, greatPoint124)
-greatEdgeY24 = MakeEdge(greatPoint214, greatPoint224)
-greatEdgeY34 = MakeEdge(greatPoint314, greatPoint324)
-greatEdgeY44 = MakeEdge(greatPoint414, greatPoint424)
-
-greatEdgeZ111 = MakeEdge(greatPoint111, greatPoint112)
-greatEdgeZ211 = MakeEdge(greatPoint211, greatPoint212)
-greatEdgeZ311 = MakeEdge(greatPoint311, greatPoint312)
-greatEdgeZ411 = MakeEdge(greatPoint411, greatPoint412)
-
-greatEdgeZ121 = MakeEdge(greatPoint121, greatPoint122)
-greatEdgeZ221 = MakeEdge(greatPoint221, greatPoint222)
-greatEdgeZ321 = MakeEdge(greatPoint321, greatPoint322)
-greatEdgeZ421 = MakeEdge(greatPoint421, greatPoint422)
-
-greatEdgeZ112 = MakeEdge(greatPoint112, greatPoint113)
-greatEdgeZ212 = MakeEdge(greatPoint212, greatPoint213)
-greatEdgeZ312 = MakeEdge(greatPoint312, greatPoint313)
-greatEdgeZ412 = MakeEdge(greatPoint412, greatPoint413)
-
-greatEdgeZ122 = MakeEdge(greatPoint122, greatPoint123)
-greatEdgeZ222 = smallEdgeZ11
-greatEdgeZ322 = smallEdgeZ21
-greatEdgeZ422 = MakeEdge(greatPoint422, greatPoint423)
-
-greatEdgeZ113 = MakeEdge(greatPoint113, greatPoint114)
-greatEdgeZ213 = MakeEdge(greatPoint213, greatPoint214)
-greatEdgeZ313 = MakeEdge(greatPoint313, greatPoint314)
-greatEdgeZ413 = MakeEdge(greatPoint413, greatPoint414)
-
-greatEdgeZ123 = MakeEdge(greatPoint123, greatPoint124)
-greatEdgeZ223 = MakeEdge(greatPoint223, greatPoint224)
-greatEdgeZ323 = MakeEdge(greatPoint323, greatPoint324)
-greatEdgeZ423 = MakeEdge(greatPoint423, greatPoint424)
-
-# Faces
-# -----
-
-smallFaceX1 = MakeQuad(smallEdgeY11, smallEdgeZ11, smallEdgeY12, smallEdgeZ12)
-smallFaceX2 = MakeQuad(smallEdgeY21, smallEdgeZ21, smallEdgeY22, smallEdgeZ22)
-smallFaceY1 = MakeQuad(smallEdgeX11, smallEdgeZ11, smallEdgeX12, smallEdgeZ21)
-smallFaceY2 = MakeQuad(smallEdgeX21, smallEdgeZ12, smallEdgeX22, smallEdgeZ22)
-smallFaceZ1 = MakeQuad(smallEdgeX11, smallEdgeY11, smallEdgeX21, smallEdgeY21)
-smallFaceZ2 = MakeQuad(smallEdgeX12, smallEdgeY12, smallEdgeX22, smallEdgeY22)
-
-
-greatFaceX11 = MakeQuad(greatEdgeY11, greatEdgeZ111, greatEdgeY12, greatEdgeZ121)
-greatFaceX21 = MakeQuad(greatEdgeY21, greatEdgeZ211, greatEdgeY22, greatEdgeZ221)
-greatFaceX31 = MakeQuad(greatEdgeY31, greatEdgeZ311, greatEdgeY32, greatEdgeZ321)
-greatFaceX41 = MakeQuad(greatEdgeY41, greatEdgeZ411, greatEdgeY42, greatEdgeZ421)
-
-greatFaceX12 = MakeQuad(greatEdgeY12, greatEdgeZ112, greatEdgeY13, greatEdgeZ122)
-greatFaceX22 = MakeQuad(greatEdgeY22, greatEdgeZ212, greatEdgeY23, greatEdgeZ222)
-greatFaceX32 = MakeQuad(greatEdgeY32, greatEdgeZ312, greatEdgeY33, greatEdgeZ322)
-greatFaceX42 = MakeQuad(greatEdgeY42, greatEdgeZ412, greatEdgeY43, greatEdgeZ422)
-
-greatFaceX13 = MakeQuad(greatEdgeY13, greatEdgeZ113, greatEdgeY14, greatEdgeZ123)
-greatFaceX23 = MakeQuad(greatEdgeY23, greatEdgeZ213, greatEdgeY24, greatEdgeZ223)
-greatFaceX33 = MakeQuad(greatEdgeY33, greatEdgeZ313, greatEdgeY34, greatEdgeZ323)
-greatFaceX43 = MakeQuad(greatEdgeY43, greatEdgeZ413, greatEdgeY44, greatEdgeZ423)
-
-greatFaceY111 = MakeQuad(greatEdgeX111, greatEdgeZ111, greatEdgeX112, greatEdgeZ211)
-greatFaceY211 = MakeQuad(greatEdgeX211, greatEdgeZ211, greatEdgeX212, greatEdgeZ311)
-greatFaceY311 = MakeQuad(greatEdgeX311, greatEdgeZ311, greatEdgeX312, greatEdgeZ411)
-greatFaceY121 = MakeQuad(greatEdgeX121, greatEdgeZ121, greatEdgeX122, greatEdgeZ221)
-greatFaceY221 = MakeQuad(greatEdgeX221, greatEdgeZ221, greatEdgeX222, greatEdgeZ321)
-greatFaceY321 = MakeQuad(greatEdgeX321, greatEdgeZ321, greatEdgeX322, greatEdgeZ421)
-
-greatFaceY112 = MakeQuad(greatEdgeX112, greatEdgeZ112, greatEdgeX113, greatEdgeZ212)
-greatFaceY212 = MakeQuad(greatEdgeX212, greatEdgeZ212, greatEdgeX213, greatEdgeZ312)
-greatFaceY312 = MakeQuad(greatEdgeX312, greatEdgeZ312, greatEdgeX313, greatEdgeZ412)
-greatFaceY122 = MakeQuad(greatEdgeX122, greatEdgeZ122, greatEdgeX123, greatEdgeZ222)
-greatFaceY222 = smallFaceY1
-greatFaceY322 = MakeQuad(greatEdgeX322, greatEdgeZ322, greatEdgeX323, greatEdgeZ422)
-
-greatFaceY113 = MakeQuad(greatEdgeX113, greatEdgeZ113, greatEdgeX114, greatEdgeZ213)
-greatFaceY213 = MakeQuad(greatEdgeX213, greatEdgeZ213, greatEdgeX214, greatEdgeZ313)
-greatFaceY313 = MakeQuad(greatEdgeX313, greatEdgeZ313, greatEdgeX314, greatEdgeZ413)
-greatFaceY123 = MakeQuad(greatEdgeX123, greatEdgeZ123, greatEdgeX124, greatEdgeZ223)
-greatFaceY223 = MakeQuad(greatEdgeX223, greatEdgeZ223, greatEdgeX224, greatEdgeZ323)
-greatFaceY323 = MakeQuad(greatEdgeX323, greatEdgeZ323, greatEdgeX324, greatEdgeZ423)
-
-greatFaceZ11 = MakeQuad(greatEdgeX111, greatEdgeY11, greatEdgeX121, greatEdgeY21)
-greatFaceZ21 = MakeQuad(greatEdgeX211, greatEdgeY21, greatEdgeX221, greatEdgeY31)
-greatFaceZ31 = MakeQuad(greatEdgeX311, greatEdgeY31, greatEdgeX321, greatEdgeY41)
-
-greatFaceZ12 = MakeQuad(greatEdgeX112, greatEdgeY12, greatEdgeX122, greatEdgeY22)
-greatFaceZ22 = MakeQuad(greatEdgeX212, greatEdgeY22, greatEdgeX222, greatEdgeY32)
-greatFaceZ32 = MakeQuad(greatEdgeX312, greatEdgeY32, greatEdgeX322, greatEdgeY42)
-
-greatFaceZ13 = MakeQuad(greatEdgeX113, greatEdgeY13, greatEdgeX123, greatEdgeY23)
-greatFaceZ23 = MakeQuad(greatEdgeX213, greatEdgeY23, greatEdgeX223, greatEdgeY33)
-greatFaceZ33 = MakeQuad(greatEdgeX313, greatEdgeY33, greatEdgeX323, greatEdgeY43)
-
-greatFaceZ14 = MakeQuad(greatEdgeX114, greatEdgeY14, greatEdgeX124, greatEdgeY24)
-greatFaceZ24 = MakeQuad(greatEdgeX214, greatEdgeY24, greatEdgeX224, greatEdgeY34)
-greatFaceZ34 = MakeQuad(greatEdgeX314, greatEdgeY34, greatEdgeX324, greatEdgeY44)
-
-# Solids
-# ------
-
-smallBlock   = MakeHexa(smallFaceX1, smallFaceX2, smallFaceY1, smallFaceY2, smallFaceZ1, smallFaceZ2)
-
-greatBlock11 = MakeHexa(greatFaceX11, greatFaceX21, greatFaceY111, greatFaceY121, greatFaceZ11, greatFaceZ12)
-greatBlock21 = MakeHexa(greatFaceX21, greatFaceX31, greatFaceY211, greatFaceY221, greatFaceZ21, greatFaceZ22)
-greatBlock31 = MakeHexa(greatFaceX31, greatFaceX41, greatFaceY311, greatFaceY321, greatFaceZ31, greatFaceZ32)
-
-greatBlock12 = MakeHexa(greatFaceX12, greatFaceX22, greatFaceY112, greatFaceY122, greatFaceZ12, greatFaceZ13)
-greatBlock22 = MakeHexa(greatFaceX22, greatFaceX32, greatFaceY212, greatFaceY222, greatFaceZ22, greatFaceZ23)
-greatBlock32 = MakeHexa(greatFaceX32, greatFaceX42, greatFaceY312, greatFaceY322, greatFaceZ32, greatFaceZ33)
-
-greatBlock13 = MakeHexa(greatFaceX13, greatFaceX23, greatFaceY113, greatFaceY123, greatFaceZ13, greatFaceZ14)
-greatBlock23 = MakeHexa(greatFaceX23, greatFaceX33, greatFaceY213, greatFaceY223, greatFaceZ23, greatFaceZ24)
-greatBlock33 = MakeHexa(greatFaceX33, greatFaceX43, greatFaceY313, greatFaceY323, greatFaceZ33, greatFaceZ34)
-
-# Compound
-# --------
-
-c_l = []
-c_l.append(smallBlock)
-c_l.append(greatBlock11)
-c_l.append(greatBlock21)
-c_l.append(greatBlock31)
-c_l.append(greatBlock12)
-c_l.append(greatBlock22)
-c_l.append(greatBlock32)
-c_l.append(greatBlock13)
-c_l.append(greatBlock23)
-c_l.append(greatBlock33)
-
-piece = MakeCompound(c_l)
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex01_cube2build")
-
-# Meshing
-# =======
-
-# Create hexahedrical mesh on piece
-# ---------------------------------
-
-hexa = smesh.Mesh(piece, "ex01_cube2build:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(4)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Create local hypothesis
-# -----------------------
-
-algo = hexa.Segment(greatEdgeX111)
-
-algo.Arithmetic1D(1, 4)
-
-algo.Propagation()
-
-# Compute the mesh
-# ----------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex02_cube2primitive.py b/src/SMESH_SWIG/ex02_cube2primitive.py
deleted file mode 100644 (file)
index 7475072..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# A small cube centered and put on a great cube build by primitive geometric functionalities
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-arete = 10
-
-# Points
-# ------
-
-blockPoint111 = MakeVertex(ox      , oy, oz)
-blockPoint211 = MakeVertex(ox+arete, oy, oz)
-blockPoint112 = MakeVertex(ox      , oy, oz+arete)
-blockPoint212 = MakeVertex(ox+arete, oy, oz+arete)
-
-# Face and solid
-# --------------
-
-blockFace1 = MakeQuad4Vertices(blockPoint111, blockPoint211, blockPoint212, blockPoint112)
-
-blockSolid11  = MakePrismVecH(blockFace1, MakeVectorDXDYDZ(0, 1, 0), arete)
-
-# Translations
-# ------------
-
-blockSolid21  = MakeTranslation(blockSolid11, arete, 0, 0)
-blockSolid31  = MakeTranslation(blockSolid21, arete, 0, 0)
-
-blockSolid12  = MakeTranslation(blockSolid11, 0, 0, arete)
-blockSolid22  = MakeTranslation(blockSolid12, arete, 0, 0)
-blockSolid32  = MakeTranslation(blockSolid22, arete, 0, 0)
-
-blockSolid13  = MakeTranslation(blockSolid12, 0, 0, arete)
-blockSolid23  = MakeTranslation(blockSolid13, arete, 0, 0)
-blockSolid33  = MakeTranslation(blockSolid23, arete, 0, 0)
-
-blockSolid111 = MakeTranslation(blockSolid22, 0, arete, 0)
-
-# Compound and glue
-# -----------------
-
-c_l = []
-c_l.append(blockSolid11)
-c_l.append(blockSolid21)
-c_l.append(blockSolid31)
-c_l.append(blockSolid12)
-c_l.append(blockSolid22)
-c_l.append(blockSolid32)
-c_l.append(blockSolid13)
-c_l.append(blockSolid23)
-c_l.append(blockSolid33)
-c_l.append(blockSolid111)
-
-c_cpd = MakeCompound(c_l)
-
-piece = MakeGlueFaces(c_cpd, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex02_cube2primitive")
-
-# Meshing
-# =======
-
-# Create hexahedrical mesh on piece
-# ---------------------------------
-
-hexa = smesh.Mesh(piece, "ex02_cube2primitive:hexa")
-
-algo = hexa.Segment()
-algo.LocalLength(1)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Compute the mesh
-# ----------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex03_cube2partition.py b/src/SMESH_SWIG/ex03_cube2partition.py
deleted file mode 100644 (file)
index cc56689..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# A small cube centered and put on a great cube build with partition
-
-# Values
-# ------
-
-g_ox = 0
-g_oy = 0
-g_oz = 0
-
-g_arete = 10
-
-g_trim = 1000
-
-# Points
-# ------
-
-v_arete2 = g_arete*2
-v_arete3 = g_arete*3
-
-v_1 = MakeVertex(g_ox         , g_oy         , g_oz         )
-v_2 = MakeVertex(g_ox+v_arete3, g_oy+g_arete , g_oz+v_arete3)
-
-v_3 = MakeVertex(g_ox+g_arete , g_oy+g_arete , g_oz+g_arete )
-v_4 = MakeVertex(g_ox+v_arete2, g_oy+v_arete2, g_oz+v_arete2)
-
-# Solids
-# ------
-
-s_base = MakeBoxTwoPnt(v_1, v_2)
-s_haut = MakeBoxTwoPnt(v_3, v_4)
-
-# Partition
-# ---------
-
-p_dir1 = MakeVectorDXDYDZ(1, 0, 0)
-p_dir2 = MakeVectorDXDYDZ(0, 0, 1)
-p_dir3 = MakeVectorDXDYDZ(0, 1, 0)
-
-p_tools = []
-
-p_tools.append(MakePlane(v_3, p_dir1, g_trim))
-p_tools.append(MakePlane(v_4, p_dir1, g_trim))
-p_tools.append(MakePlane(v_3, p_dir2, g_trim))
-p_tools.append(MakePlane(v_4, p_dir2, g_trim))
-p_tools.append(MakePlane(v_3, p_dir3, g_trim))
-
-piece = MakePartition([s_base, s_haut], p_tools, [], [], ShapeType["SOLID"])
-
-# Study
-# -----
-
-piece_id = addToStudy(piece, "ex03_cube2partition")
-
-# Meshing
-# =======
-
-# Create hexahedrical mesh on piece
-# ---------------------------------
-
-hexa = smesh.Mesh(piece, "ex03_cube2partition:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(5)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Compute the mesh
-# ----------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex04_cube5tetraHexa.py b/src/SMESH_SWIG/ex04_cube5tetraHexa.py
deleted file mode 100644 (file)
index 5bb4a1c..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# 5 box with a hexahedral mesh and with 2 box in tetrahedral mesh
-
-# Values
-# ------
-
-arete = 100
-
-arete0 = 0
-arete1 = arete
-arete2 = arete*2
-arete3 = arete*3
-
-# Solids
-# ------
-
-box_tetra1 = MakeBox(arete0, arete0, 0,  arete1, arete1, arete)
-
-box_ijk1   = MakeBox(arete1, arete0, 0,  arete2, arete1, arete)
-
-box_hexa   = MakeBox(arete1, arete1, 0,  arete2, arete2, arete)
-
-box_ijk2   = MakeBox(arete2, arete1, 0,  arete3, arete2, arete)
-
-box_tetra2 = MakeBox(arete2, arete2, 0,  arete3 ,arete3, arete)
-
-# Piece
-# -----
-
-piece_cpd = MakeCompound([box_tetra1, box_ijk1, box_hexa, box_ijk2, box_tetra2])
-
-piece = MakeGlueFaces(piece_cpd, 1e-4)
-
-piece_id = addToStudy(piece, "ex04_cube5tetraHexa")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-mixed = smesh.Mesh(piece, "ex04_cube5tetraHexa:mixed")
-
-algo = mixed.Segment()
-
-algo.StartEndLength(3, 25)
-
-mixed.Quadrangle()
-
-mixed.Hexahedron()
-
-# Tetrahedral local mesh
-# ----------------------
-
-def localMesh(b, hyp):
-    box   = GetInPlace(piece, b)
-    faces = SubShapeAll(box, ShapeType["FACE"])
-
-    i = 0
-    n = len(faces)
-    while i<n:
-        algo = mixed.Triangle(faces[i])
-        if hyp:
-            algo.MaxElementArea(80)
-        else:
-            algo.LengthFromEdges()
-        i = i + 1
-
-    algo = mixed.Tetrahedron(smesh.NETGEN, box)
-    algo.MaxElementVolume(400)
-
-localMesh(box_tetra1, 1)
-localMesh(box_tetra2, 0)
-
-# Mesh calculus
-# -------------
-
-mixed.Compute()
diff --git a/src/SMESH_SWIG/ex05_hole1build.py b/src/SMESH_SWIG/ex05_hole1build.py
deleted file mode 100644 (file)
index ecaa211..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-import math
-
-# Geometry
-# ========
-
-# A centered holed cube build by  build by points, edges, faces and solids
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-longueur = 100
-largeur  =  80
-hauteur  =  50
-
-rayon = 10
-
-# Points
-# ------
-
-basePoint111 = MakeVertex(ox         ,  oy, oz)
-basePoint211 = MakeVertex(ox+longueur,  oy, oz)
-basePoint112 = MakeVertex(ox         ,  oy, oz+largeur)
-basePoint212 = MakeVertex(ox+longueur,  oy, oz+largeur)
-
-cx = ox+longueur/2
-cy = oy
-cz = oz+largeur/2
-
-ll = longueur/largeur
-ll = ll*ll
-dx = rayon/math.sqrt(1+ll)
-dz = rayon/math.sqrt(1+1/ll)
-
-circlePoint1 = MakeVertex(cx-dx, cy, cz-dz)
-circlePoint2 = MakeVertex(cx+dx, cy, cz-dz)
-circlePoint3 = MakeVertex(cx+dx, cy, cz+dz)
-circlePoint4 = MakeVertex(cx-dx, cy, cz+dz)
-
-# Edges
-# -----
-
-squareEdge1 = MakeEdge(basePoint111, basePoint211)
-squareEdge2 = MakeEdge(basePoint211, basePoint212)
-squareEdge3 = MakeEdge(basePoint212, basePoint112)
-squareEdge4 = MakeEdge(basePoint112, basePoint111)
-
-diagEdge1   = MakeEdge(basePoint111, circlePoint1)
-diagEdge2   = MakeEdge(basePoint211, circlePoint2)
-diagEdge3   = MakeEdge(basePoint212, circlePoint3)
-diagEdge4   = MakeEdge(basePoint112, circlePoint4)
-
-arcEdge1    = MakeArc(circlePoint1, MakeVertex(cx      , cy, cz-rayon), circlePoint2)
-arcEdge2    = MakeArc(circlePoint2, MakeVertex(cx+rayon, cy, cz      ), circlePoint3)
-arcEdge3    = MakeArc(circlePoint3, MakeVertex(cx      , cy, cz+rayon), circlePoint4)
-arcEdge4    = MakeArc(circlePoint4, MakeVertex(cx-rayon, cy, cz      ), circlePoint1)
-
-# Faces
-# -----
-
-baseFace1 = MakeQuad(squareEdge1, diagEdge2, arcEdge1, diagEdge1)
-baseFace2 = MakeQuad(squareEdge2, diagEdge3, arcEdge2, diagEdge2)
-baseFace3 = MakeQuad(squareEdge3, diagEdge4, arcEdge3, diagEdge3)
-baseFace4 = MakeQuad(squareEdge4, diagEdge1, arcEdge4, diagEdge4)
-
-# Solids
-# ------
-
-baseVector = MakeVectorDXDYDZ(0, 1, 0)
-
-baseSolid1 = MakePrismVecH(baseFace1, baseVector, hauteur)
-baseSolid2 = MakePrismVecH(baseFace2, baseVector, hauteur)
-baseSolid3 = MakePrismVecH(baseFace3, baseVector, hauteur)
-baseSolid4 = MakePrismVecH(baseFace4, baseVector, hauteur)
-
-# Compound
-# --------
-
-c_l = []
-c_l.append(baseSolid1)
-c_l.append(baseSolid2)
-c_l.append(baseSolid3)
-c_l.append(baseSolid4)
-
-c_cpd = MakeCompound(c_l)
-piece = MakeGlueFaces(c_cpd, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex05_hole1build")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex05_hole1build:hexa")
-
-algo = hexa.Segment()
-
-algo.NumberOfSegments(6, 3)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex06_hole1boolean.py b/src/SMESH_SWIG/ex06_hole1boolean.py
deleted file mode 100644 (file)
index 5e461e4..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# A not centered holed cube build by boolean geometric operations
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-longueur1 = 30
-longueur2 = 70
-
-largeur1  = 30
-largeur2  = 50
-
-hauteur   = 50
-
-rayon = 10
-
-# Triangular face
-# ---------------
-
-def triangle(p1, p2, p3):
-    l = []
-    l.append(MakeEdge(p1, p2))
-    l.append(MakeEdge(p2, p3))
-    l.append(MakeEdge(p3, p1))
-    w = MakeWire(l)
-    return MakeFace(w, 1)
-
-# Points
-# ------
-
-basePoint111 = MakeVertex(ox-longueur1,  oy, oz-largeur1)
-basePoint211 = MakeVertex(ox+longueur2,  oy, oz-largeur1)
-basePoint112 = MakeVertex(ox-longueur1,  oy, oz+largeur2)
-basePoint212 = MakeVertex(ox+longueur2,  oy, oz+largeur2)
-
-holePoint    = MakeVertex(ox, oy, oz)
-
-# Faces
-# -----
-
-baseFace1 = triangle(basePoint111, basePoint211, holePoint)
-baseFace2 = triangle(basePoint211, basePoint212, holePoint)
-baseFace3 = triangle(basePoint212, basePoint112, holePoint)
-baseFace4 = triangle(basePoint112, basePoint111, holePoint)
-
-# Solids
-# ------
-
-baseVector = MakeVectorDXDYDZ(0, 1, 0)
-
-baseSolid1 = MakePrismVecH(baseFace1, baseVector, hauteur)
-baseSolid2 = MakePrismVecH(baseFace2, baseVector, hauteur)
-baseSolid3 = MakePrismVecH(baseFace3, baseVector, hauteur)
-baseSolid4 = MakePrismVecH(baseFace4, baseVector, hauteur)
-
-holeSolid = MakeCylinder(holePoint, baseVector, rayon, hauteur)
-
-# Boolean operations
-# ------------------
-
-baseHexa1 = MakeCut(baseSolid1, holeSolid)
-baseHexa2 = MakeCut(baseSolid2, holeSolid)
-baseHexa3 = MakeCut(baseSolid3, holeSolid)
-baseHexa4 = MakeCut(baseSolid4, holeSolid)
-
-# Compound, glue and repair
-# -------------------------
-
-c_l = []
-c_l.append(baseHexa1)
-c_l.append(baseHexa2)
-c_l.append(baseHexa3)
-c_l.append(baseHexa4)
-
-c_cpd = MakeCompound(c_l)
-c_glu = MakeGlueFaces(c_cpd, 1.e-5)
-piece = RemoveExtraEdges(c_glu)
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex06_hole1boolean")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex06_hole1boolean:hexa")
-
-algo = hexa.Segment()
-
-algo.NumberOfSegments(11)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Create local hypothesis
-# -----------------------
-
-edge1 = GetEdgeNearPoint(piece, MakeVertex(ox, oy, oz-largeur1))
-algo1 = hexa.Segment(edge1)
-algo1.NumberOfSegments(3)
-algo1.Propagation()
-
-edge2 = GetEdgeNearPoint(piece, MakeVertex(ox-longueur1, oy, oz))
-algo2 = hexa.Segment(edge2)
-algo2.NumberOfSegments(5)
-algo2.Propagation()
-
-edge3 = GetEdgeNearPoint(piece, MakeVertex(ox, oy, oz+largeur2))
-algo3 = hexa.Segment(edge3)
-algo3.NumberOfSegments(7)
-algo3.Propagation()
-
-edge4 = GetEdgeNearPoint(piece, MakeVertex(ox+longueur2, oy, oz))
-algo4 = hexa.Segment(edge4)
-algo4.NumberOfSegments(9)
-algo4.Propagation()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex07_hole1partition.py b/src/SMESH_SWIG/ex07_hole1partition.py
deleted file mode 100644 (file)
index 592e5f8..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# A holed cube build by partitioning geometric operations
-
-# Values
-# ------
-
-g_x = 0
-g_y = 0
-g_z = 0
-
-g_longueur = 50.0
-g_largeur  = 40.0
-g_hauteur  = 25.0
-
-g_rayon = 10
-
-g_trim = 1000
-
-# Box
-# ---
-
-b_boite = MakeBox(g_x-g_longueur, g_y-g_hauteur, g_z-g_largeur,  g_x+g_longueur, g_y+g_hauteur, g_z+g_largeur)
-
-# Cylinder
-# --------
-
-c_axe = MakeVectorDXDYDZ(0, 1, 0)
-
-c_cyl = MakeCylinder(MakeVertex(g_x, g_y-g_hauteur, g_z), c_axe, g_rayon, g_hauteur*2)
-
-c_piece = MakeCut(b_boite, c_cyl)
-
-# Partition and reperation
-# ------------------------
-
-p_centre = MakeVertex(g_x, g_y, g_z)
-
-p_tools = []
-p_tools.append(MakePlane(p_centre, MakeVectorDXDYDZ( g_largeur, 0, g_longueur), g_trim))
-p_tools.append(MakePlane(p_centre, MakeVectorDXDYDZ(-g_largeur, 0, g_longueur), g_trim))
-
-p_part = MakePartition([c_piece], p_tools, [], [], ShapeType["SOLID"])
-
-p_blocs = RemoveExtraEdges(p_part)
-piece   = MakeGlueFaces(p_blocs, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex07_hole1partition")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex07_hole1partition:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(20)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex08_hole2build.py b/src/SMESH_SWIG/ex08_hole2build.py
deleted file mode 100644 (file)
index ab23cb7..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# A twice holed cube build by points, edges, faces and solids
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-longueur = 200
-largeur  = 100
-hauteur  =  80
-
-cylindre = 50
-
-rayon = 20
-
-# Points
-# ------
-
-piecePoint1 = MakeVertex(ox         , oy, oz)
-piecePoint2 = MakeVertex(ox+longueur, oy, oz)
-piecePoint3 = MakeVertex(ox+longueur, oy, oz+largeur)
-piecePoint4 = MakeVertex(ox         , oy, oz+largeur)
-
-cz = oz+largeur/2
-
-cylPoint1    = MakeVertex(ox+cylindre         , oy, cz-rayon)
-cylPoint2    = MakeVertex(ox+longueur-cylindre, oy, cz-rayon)
-cylPoint3    = MakeVertex(ox+longueur-cylindre, oy, cz+rayon)
-cylPoint4    = MakeVertex(ox+cylindre         , oy, cz+rayon)
-
-# Edges
-# -----
-
-pieceEdge1 = MakeEdge(piecePoint1, piecePoint4)
-pieceEdge2 = MakeEdge(piecePoint1, cylPoint1)
-pieceEdge3 = MakeEdge(piecePoint4, cylPoint4)
-
-pieceEdge4 = MakeEdge(piecePoint2, piecePoint3)
-pieceEdge5 = MakeEdge(piecePoint2, cylPoint2)
-pieceEdge6 = MakeEdge(piecePoint3, cylPoint3)
-
-pieceEdge7 = MakeEdge(cylPoint1, cylPoint2)
-pieceEdge8 = MakeEdge(cylPoint3, cylPoint4)
-
-cylEdge1 = MakeArc(cylPoint1, MakeVertex(ox+cylindre-rayon         , oy, cz), cylPoint4)
-cylEdge2 = MakeArc(cylPoint1, MakeVertex(ox+cylindre+rayon         , oy, cz), cylPoint4)
-cylEdge3 = MakeArc(cylPoint2, MakeVertex(ox+longueur-cylindre-rayon, oy, cz), cylPoint3)
-cylEdge4 = MakeArc(cylPoint2, MakeVertex(ox+longueur-cylindre+rayon, oy, cz), cylPoint3)
-
-# Faces
-# -----
-
-pieceFace1 = MakeQuad4Vertices(piecePoint1, piecePoint2, cylPoint2 , cylPoint1 )
-pieceFace2 = MakeQuad         (pieceEdge1 , pieceEdge2 , cylEdge1  , pieceEdge3)
-pieceFace3 = MakeQuad4Vertices(piecePoint3, piecePoint4, cylPoint4 , cylPoint3 )
-pieceFace4 = MakeQuad         (pieceEdge4 , pieceEdge5 , cylEdge4  , pieceEdge6)
-pieceFace5 = MakeQuad         (pieceEdge7 , cylEdge3   , pieceEdge8, cylEdge2  )
-
-# Solids
-# ------
-
-pieceVector = MakeVectorDXDYDZ(0, 1, 0)
-
-pieceSolid1 = MakePrismVecH(pieceFace1, pieceVector, hauteur)
-pieceSolid2 = MakePrismVecH(pieceFace2, pieceVector, hauteur)
-pieceSolid3 = MakePrismVecH(pieceFace3, pieceVector, hauteur)
-pieceSolid4 = MakePrismVecH(pieceFace4, pieceVector, hauteur)
-pieceSolid5 = MakePrismVecH(pieceFace5, pieceVector, hauteur)
-
-# Compound and glue
-# -----------------
-
-c_cpd = MakeCompound([pieceSolid1, pieceSolid2, pieceSolid3, pieceSolid4, pieceSolid5])
-
-piece = MakeGlueFaces(c_cpd, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex08_hole2build")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex08_hole2build:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(7)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex09_grid4build.py b/src/SMESH_SWIG/ex09_grid4build.py
deleted file mode 100644 (file)
index 681a31f..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-import math
-
-# Geometry
-# ========
-
-# Element of a grid compound by a square with a cylinder on each vertex build by points, edges, faces and solids
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-arete   =  50
-hauteur = 100
-
-rayon = 10
-
-demi = rayon/2
-r3   = demi*math.sqrt(3)
-
-# Points
-# ------
-
-piecePoint111 = MakeVertex(ox+rayon      , oy, oz)
-piecePoint211 = MakeVertex(ox+arete-rayon, oy, oz)
-piecePoint112 = MakeVertex(ox            , oy, oz+rayon)
-piecePoint212 = MakeVertex(ox+arete      , oy, oz+rayon)
-piecePoint113 = MakeVertex(ox            , oy, oz+arete-rayon)
-piecePoint213 = MakeVertex(ox+arete      , oy, oz+arete-rayon)
-piecePoint114 = MakeVertex(ox+rayon      , oy, oz+arete)
-piecePoint214 = MakeVertex(ox+arete-rayon, oy, oz+arete)
-
-pieceCenter1  = MakeVertex(ox            , oy, oz)
-pieceCenter2  = MakeVertex(ox+arete      , oy, oz)
-pieceCenter3  = MakeVertex(ox            , oy, oz+arete)
-pieceCenter4  = MakeVertex(ox+arete      , oy, oz+arete)
-
-piecePass1    = MakeVertex(ox+demi       , oy, oz+r3)
-piecePass2    = MakeVertex(ox+arete-demi , oy, oz+r3)
-piecePass3    = MakeVertex(ox+arete-demi , oy, oz+arete-r3)
-piecePass4    = MakeVertex(ox+demi       , oy, oz+arete-r3)
-
-# Edges
-# -----
-
-pieceEdgeSquare1   = MakeEdge(piecePoint111, piecePoint211)
-pieceEdgeSquare2   = MakeEdge(piecePoint114, piecePoint214)
-pieceEdgeSquare3   = MakeEdge(piecePoint112, piecePoint113)
-pieceEdgeSquare4   = MakeEdge(piecePoint212, piecePoint213)
-
-pieceEdgeDiagonal1 = MakeEdge(piecePoint111, piecePoint213)
-pieceEdgeDiagonal2 = MakeEdge(piecePoint112, piecePoint214)
-
-pieceEdgeArc1 = MakeArc(piecePoint111, piecePass1, piecePoint112)
-pieceEdgeArc2 = MakeArc(piecePoint211, piecePass2, piecePoint212)
-pieceEdgeArc3 = MakeArc(piecePoint213, piecePass3, piecePoint214)
-pieceEdgeArc4 = MakeArc(piecePoint113, piecePass4, piecePoint114)
-
-# Faces
-# -----
-
-pieceFace1 = MakeQuad(pieceEdgeSquare1, pieceEdgeArc2, pieceEdgeSquare4, pieceEdgeDiagonal1)
-pieceFace2 = MakeQuad(pieceEdgeSquare2, pieceEdgeArc4, pieceEdgeSquare3, pieceEdgeDiagonal2)
-
-pieceFace3 = MakeQuad(pieceEdgeArc1, pieceEdgeDiagonal1, pieceEdgeArc3, pieceEdgeDiagonal2)
-
-# Solids
-# ------
-
-pieceVector = MakeVectorDXDYDZ(0, 1, 0)
-
-pieceSolid1 = MakePrismVecH(pieceFace1, pieceVector, hauteur)
-pieceSolid2 = MakePrismVecH(pieceFace2, pieceVector, hauteur)
-pieceSolid3 = MakePrismVecH(pieceFace3, pieceVector, hauteur)
-
-# Compound and glue
-# -----------------
-
-c_cpd = MakeCompound([pieceSolid1, pieceSolid2, pieceSolid3])
-
-piece = MakeGlueFaces(c_cpd, 1.e-5)
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex09_grid4build")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex09_grid4build:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(6)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex10_grid4geometry.py b/src/SMESH_SWIG/ex10_grid4geometry.py
deleted file mode 100644 (file)
index bcd5637..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# Element of a grid compound by a square with a cylinder on each vertex build by using partition
-
-# Values
-# ------
-
-ox = 0
-oy = 0
-oz = 0
-
-arete   =  50
-hauteur = 100
-rayon   =  10
-
-g_trim = 1000
-
-# Box
-# ---
-
-piecePoint = MakeVertex(ox, oy, oz)
-
-pieceBox = MakeBoxTwoPnt(piecePoint, MakeVertex(ox+arete, oy+hauteur, oz+arete))
-
-# Cut by cylinders
-# ----------------
-
-dirUp = MakeVectorDXDYDZ(0, 1, 0)
-
-pieceCut1 = MakeCut(pieceBox , MakeCylinder(piecePoint                        , dirUp, rayon, hauteur))
-pieceCut2 = MakeCut(pieceCut1, MakeCylinder(MakeVertex(ox+arete, oy, oz      ), dirUp, rayon, hauteur))
-pieceCut3 = MakeCut(pieceCut2, MakeCylinder(MakeVertex(ox      , oy, oz+arete), dirUp, rayon, hauteur))
-pieceCut4 = MakeCut(pieceCut3, MakeCylinder(MakeVertex(ox+arete, oy, oz+arete), dirUp, rayon, hauteur))
-
-# Compound by make a partition of a solid
-# ---------------------------------------
-
-dir = MakeVectorDXDYDZ(-1, 0, 1)
-
-tools = []
-tools.append(MakePlane(MakeVertex(ox+rayon, oy, oz      ), dir, g_trim))
-tools.append(MakePlane(MakeVertex(ox      , oy, oz+rayon), dir, g_trim))
-
-piece = MakePartition([pieceCut4], tools, [], [], ShapeType["SOLID"])
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex10_grid4geometry")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex10_grid4geometry:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(10)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex11_grid3partition.py b/src/SMESH_SWIG/ex11_grid3partition.py
deleted file mode 100644 (file)
index 4327775..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# grid compound of 3 x 3 elements
-# an element is compound of 3 cylinders concentriques
-# an element is centered in a square of the grid
-# the smaller cylinder is a hole
-
-# prism the grid, and mesh it in hexahedral way
-
-# Values
-# ------
-
-g_x = 0
-g_y = 0
-g_z = 0
-
-g_arete   = 50
-g_hauteur = 30
-
-g_rayon1 = 20
-g_rayon2 = 30
-g_rayon3 = 40
-
-g_grid = 3
-
-g_trim = 1000
-
-# Element
-# -------
-
-e_boite = MakeBox(g_x-g_arete, g_y-g_hauteur, g_z-g_arete,  g_x+g_arete, g_y+g_hauteur, g_z+g_arete)
-
-e_hauteur = 2*g_hauteur
-e_centre  = MakeVertex(g_x, g_y-g_hauteur, g_z)
-e_dir     = MakeVectorDXDYDZ(0, 1, 0)
-
-e_cyl1 = MakeCylinder(e_centre, e_dir, g_rayon3, e_hauteur)
-
-e_blo1 = MakeCut(e_boite, e_cyl1)
-
-e_cyl2 = MakeCylinder(e_centre, e_dir, g_rayon2, e_hauteur)
-
-e_blo2 = MakeCut(e_cyl1, e_cyl2)
-
-e_cyl3 = MakeCylinder(e_centre, e_dir, g_rayon1, e_hauteur)
-
-e_blo3 = MakeCut(e_cyl2, e_cyl3)
-
-# Partition and repair
-# --------------------
-
-p_tools = []
-p_tools.append(MakePlane(e_centre, MakeVectorDXDYDZ( 1, 0, 1), g_trim))
-p_tools.append(MakePlane(e_centre, MakeVectorDXDYDZ(-1, 0, 1), g_trim))
-
-p_part = MakePartition([e_blo1, e_blo2, e_blo3], p_tools, [], [], ShapeType["SOLID"])
-
-p_element = RemoveExtraEdges(p_part)
-
-# Grid and glue
-# -------------
-
-grid = MakeMultiTranslation2D(p_element, MakeVectorDXDYDZ(1, 0, 0), 2*g_arete, g_grid, MakeVectorDXDYDZ(0, 0, 1), 2*g_arete, g_grid)
-
-piece = MakeGlueFaces(grid, 1e-5)
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex11_grid3partition")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex11_grid3partition:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(3)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex12_grid17partition.py b/src/SMESH_SWIG/ex12_grid17partition.py
deleted file mode 100644 (file)
index f83de14..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# grid compound of 17 x 17 elements
-# an element is compound of 3 concentric cylinders
-# an element is centered in a square of the grid
-
-# prism the grid, and mesh it in hexahedral way
-
-# Values
-# ------
-
-g_x = 0
-g_y = 0
-g_z = 0
-
-g_arete   = 50
-g_hauteur = 30
-
-g_rayon1 = 20
-g_rayon2 = 30
-g_rayon3 = 40
-
-g_grid = 17
-
-g_trim = 1000
-
-# Solids and rotation to prevent repair
-# -------------------------------------
-
-s_boite = MakeBox(g_x-g_arete, g_y-g_hauteur, g_z-g_arete,  g_x+g_arete, g_y+g_hauteur, g_z+g_arete)
-
-s_pi4     = 3.141592653/4
-s_hauteur = 2*g_hauteur
-s_centre  = MakeVertex(g_x, g_y-g_hauteur, g_z)
-s_dir     = MakeVectorDXDYDZ(0, 1, 0)
-
-s_cyl0 = MakeCylinder(s_centre, s_dir, g_rayon3, s_hauteur)
-s_cyl1 = MakeRotation(s_cyl0, s_dir, s_pi4)
-
-s_blo1 = MakeCut(s_boite, s_cyl1)
-
-s_cyl0 = MakeCylinder(s_centre, s_dir, g_rayon2, s_hauteur)
-s_cyl2 = MakeRotation(s_cyl0, s_dir, s_pi4)
-
-s_blo2 = MakeCut(s_cyl1, s_cyl2)
-
-s_cyl0 = MakeCylinder(s_centre, s_dir, g_rayon1, s_hauteur)
-s_cyl3 = MakeRotation(s_cyl0, s_dir, s_pi4)
-
-s_blo3 = MakeCut(s_cyl2, s_cyl3)
-
-s_arete = g_rayon1/2
-
-s_blo4 = MakeBox(g_x-s_arete, g_y-g_hauteur, g_z-s_arete,  g_x+s_arete, g_y+g_hauteur, g_z+s_arete)
-
-s_blo5 = MakeCut(s_cyl3, s_blo4)
-
-# Partition
-# ---------
-
-p_tools = []
-p_tools.append(MakePlane(s_centre, MakeVectorDXDYDZ( 1, 0, 1), g_trim))
-p_tools.append(MakePlane(s_centre, MakeVectorDXDYDZ(-1, 0, 1), g_trim))
-
-p_partie = MakePartition([s_blo1, s_blo2, s_blo3, s_blo5], p_tools, [], [], ShapeType["SOLID"])
-
-# Compound and glue
-# -----------------
-
-c_blocs = SubShapeAll(p_partie, ShapeType["SOLID"])
-c_blocs.append(s_blo4)
-
-c_cpd = MakeCompound(c_blocs)
-
-c_element = MakeGlueFaces(c_cpd, 1e-4)
-
-# Grid
-# ----
-
-piece = MakeMultiTranslation2D(c_element, MakeVectorDXDYDZ(1, 0, 0), 2*g_arete, g_grid, MakeVectorDXDYDZ(0, 0, 1), 2*g_arete, g_grid)
-
-# Add in study
-# ------------
-
-piece_id = addToStudy(piece, "ex12_grid17partition")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex12_grid17partition:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(2)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex13_hole1partial.py b/src/SMESH_SWIG/ex13_hole1partial.py
deleted file mode 100644 (file)
index c97ccb8..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-# CEA/LGLS 2005, Francis KLOSS (OCC)
-# ==================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# With hexahedral, build a box partially holed by a not centered cylinder with a thickness
-
-# Values
-# ------
-
-box_dx = 1000
-box_dy =  900
-box_dz =  800
-
-cyl_x      = 500
-cyl_y      = 300
-cyl_dz     = 600
-cyl_radius = 150
-cyl_thick  =  30
-
-# Triangular face
-# ---------------
-
-def triangle(p1, p2, p3):
-    l = []
-    l.append(MakeEdge(p1, p2))
-    l.append(MakeEdge(p2, p3))
-    l.append(MakeEdge(p3, p1))
-    w = MakeWire(l)
-    return MakeFace(w, 1)
-
-# The holed part
-# ==============
-
-# Vertex of the holed part
-# ------------------------
-
-hole_point_11 = MakeVertex(0     , 0     , 0)
-hole_point_21 = MakeVertex(box_dx, 0     , 0)
-hole_point_12 = MakeVertex(0     , box_dy, 0)
-hole_point_22 = MakeVertex(box_dx, box_dy, 0)
-
-hole_center   = MakeVertex(cyl_x, cyl_y, 0)
-
-# Faces of the holed part
-# -----------------------
-
-hole_face_1 = triangle(hole_point_11, hole_point_21, hole_center)
-hole_face_2 = triangle(hole_point_21, hole_point_22, hole_center)
-hole_face_3 = triangle(hole_point_12, hole_point_22, hole_center)
-hole_face_4 = triangle(hole_point_11, hole_point_12, hole_center)
-
-# Solids of the holed part
-# ------------------------
-
-cyl_dir = MakeVectorDXDYDZ(0, 0, 1)
-
-hole_solid_1 = MakePrismVecH(hole_face_1, cyl_dir, cyl_dz)
-hole_solid_2 = MakePrismVecH(hole_face_2, cyl_dir, cyl_dz)
-hole_solid_3 = MakePrismVecH(hole_face_3, cyl_dir, cyl_dz)
-hole_solid_4 = MakePrismVecH(hole_face_4, cyl_dir, cyl_dz)
-
-hole_internal = MakeCylinder(hole_center, cyl_dir, cyl_radius          , cyl_dz)
-hole_external = MakeCylinder(hole_center, cyl_dir, cyl_radius+cyl_thick, cyl_dz)
-hole_median   = MakeCut(hole_external, hole_internal)
-
-# Boolean operations
-# ------------------
-
-blocks = []
-
-blocks.append(   MakeCut(hole_solid_1, hole_external))
-blocks.append(MakeCommon(hole_solid_1, hole_median  ))
-
-blocks.append(   MakeCut(hole_solid_2, hole_external))
-blocks.append(MakeCommon(hole_solid_2, hole_median  ))
-
-blocks.append(   MakeCut(hole_solid_3, hole_external))
-blocks.append(MakeCommon(hole_solid_3, hole_median  ))
-
-blocks.append(   MakeCut(hole_solid_4, hole_external))
-blocks.append(MakeCommon(hole_solid_4, hole_median  ))
-
-# The full part
-# =============
-
-# Vertex of the full part
-# -----------------------
-
-full_point_11 = MakeVertex(0     , 0     , cyl_dz)
-full_point_21 = MakeVertex(box_dx, 0     , cyl_dz)
-full_point_12 = MakeVertex(0     , box_dy, cyl_dz)
-full_point_22 = MakeVertex(box_dx, box_dy, cyl_dz)
-
-full_center = MakeVertex(cyl_x, cyl_y, cyl_dz)
-
-# Faces of the full part
-# ----------------------
-
-full_face_1 = triangle(full_point_11, full_point_21, full_center)
-full_face_2 = triangle(full_point_21, full_point_22, full_center)
-full_face_3 = triangle(full_point_12, full_point_22, full_center)
-full_face_4 = triangle(full_point_11, full_point_12, full_center)
-
-# Solids of the full part
-# ------------------------
-
-full_dz = box_dz - cyl_dz
-
-full_solid_1 = MakePrismVecH(full_face_1, cyl_dir, full_dz)
-full_solid_2 = MakePrismVecH(full_face_2, cyl_dir, full_dz)
-full_solid_3 = MakePrismVecH(full_face_3, cyl_dir, full_dz)
-full_solid_4 = MakePrismVecH(full_face_4, cyl_dir, full_dz)
-
-full_internal = MakeCylinder(full_center, cyl_dir, cyl_radius          , full_dz)
-full_external = MakeCylinder(full_center, cyl_dir, cyl_radius+cyl_thick, full_dz)
-full_median   = MakeCut(full_external, full_internal)
-
-# Boolean operations
-# ------------------
-
-full = []
-
-full.append(   MakeCut(full_solid_1, full_external))
-full.append(MakeCommon(full_solid_1, full_median))
-
-full.append(   MakeCut(full_solid_2, full_external))
-full.append(MakeCommon(full_solid_2, full_median ))
-
-full.append(   MakeCut(full_solid_3, full_external))
-full.append(MakeCommon(full_solid_3, full_median))
-
-full.append(   MakeCut(full_solid_4, full_external))
-full.append(MakeCommon(full_solid_4, full_median))
-
-# Filling the hole
-# ----------------
-
-box_d = cyl_radius/3
-
-x = cyl_x-box_d
-y = x * cyl_y / cyl_x
-box_point_11 = MakeVertex(x, y, cyl_dz)
-
-x = cyl_x+box_d
-y = (box_dx - x) * cyl_y / (box_dx - cyl_x)
-box_point_12 = MakeVertex(x, y, cyl_dz)
-
-x = cyl_x-box_d
-y = box_dy - x * (box_dy - cyl_y) / cyl_x
-box_point_21 = MakeVertex(x, y, cyl_dz)
-
-x = cyl_x+box_d
-y = box_dy - (box_dx - x) * (box_dy - cyl_y) / (box_dx - cyl_x)
-box_point_22 = MakeVertex(x, y, cyl_dz)
-
-box_face = MakeQuad4Vertices(box_point_11, box_point_12, box_point_21, box_point_22)
-
-box = MakePrismVecH(box_face, cyl_dir, full_dz)
-
-full.append(box)
-
-full.append(MakeCut(MakeCommon(full_solid_1, full_internal), box))
-full.append(MakeCut(MakeCommon(full_solid_2, full_internal), box))
-full.append(MakeCut(MakeCommon(full_solid_3, full_internal), box))
-full.append(MakeCut(MakeCommon(full_solid_4, full_internal), box))
-
-# Cut the cylinder thikness
-# -------------------------
-
-full_plan = MakePlane(MakeVertex(0, 0, cyl_dz+cyl_thick), cyl_dir, 5000)
-
-full_parts = MakePartition(full, [full_plan], [], [], ShapeType["SOLID"])
-
-# Geometry result
-# ---------------
-
-blocks.append(full_parts)
-
-piece_cpd = MakeCompound(blocks)
-
-piece_ok = RemoveExtraEdges(piece_cpd)
-
-piece = MakeGlueFaces(piece_ok, 1.e-3)
-
-piece_id = addToStudy(piece, "ex13_hole1partial")
-
-# Meshing
-# =======
-
-# Create a mesh
-# -------------
-
-hexa = smesh.Mesh(piece, "ex13_hole1partial:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(2)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Local hypothesis
-# ----------------
-
-def local(x, y, z, d):
-    edge = GetEdgeNearPoint(piece, MakeVertex(x, y, z))
-    algo = hexa.Segment(edge)
-    algo.NumberOfSegments(d)
-    algo.Propagation()
-
-local(0, 0, 100, 40)
-local(0, 0, 700, 15)
-
-local(100, 0, 0, 20)
-local(0, 100, 0, 20)
-
-local(100, 100, 0, 25)
-
-d = cyl_radius-3*cyl_thick
-local(cyl_x+d, cyl_y+d, box_dz, 10)
-
-# Compute the mesh
-# ----------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex14_cyl1holed.py b/src/SMESH_SWIG/ex14_cyl1holed.py
deleted file mode 100644 (file)
index 6a2127a..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometrie
-# =========
-
-# Creer un cylindre avec un trou cylindrique excentre, decoupage en hexahedre et mailler.
-
-# Donnees
-# -------
-
-# unite: millimetre
-
-g_ox = 0
-g_oy = 0
-g_oz = 0
-
-g_cyl_rayon       = 1000
-g_cyl_demiHauteur = 3000
-
-g_trou_rayon       =   5
-g_trou_centre      = 300
-
-g_trim = 15000
-
-# Construire le cylindre
-# ----------------------
-
-c_point    = MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur)
-c_dir      = MakeVectorDXDYDZ(0, 0, 1)
-c_hauteur  = 2*g_cyl_demiHauteur
-c_cylindre = MakeCylinder(c_point, c_dir, g_cyl_rayon, c_hauteur)
-
-# Trouer le cylindre par un minuscule cylindre excentre
-# -----------------------------------------------------
-
-t_hauteur = g_cyl_demiHauteur
-t_point   = MakeVertex(g_ox-g_trou_centre, g_oy, g_oz-t_hauteur)
-t_trou    = MakeCylinder(t_point, c_dir, g_trou_rayon, 2*t_hauteur)
-
-t_piece   = MakeCut(c_cylindre, t_trou)
-
-# Geometrie hexahedrique
-# ======================
-
-# Decouper
-# --------
-
-h_outils = []
-h_outils.append(MakePlane(t_point, MakeVectorDXDYDZ(1, 0, 0), g_trim))
-h_outils.append(MakePlane(t_point, MakeVectorDXDYDZ(0, 1, 0), g_trim))
-
-h_piece = MakePartition([t_piece], h_outils, [], [], ShapeType["SOLID"])
-
-# Decouper pour les conditions locales
-# ------------------------------------
-
-l_outils = []
-l_i = 1
-l_n = 12
-l_hauteur = c_hauteur/l_n
-
-while l_i<l_n:
-    l_outils.append(MakePlane(MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur+l_i*l_hauteur), c_dir, g_trim))
-    l_i = l_i+1
-
-piece = MakePartition([h_piece], l_outils, [], [], ShapeType["SOLID"])
-
-# Ajouter la piece dans l'etude
-# -----------------------------
-
-piece_id = addToStudy(piece, "ex14_cyl1holed")
-
-# Maillage
-# ========
-
-# Creer un maillage hexahedrique
-# ------------------------------
-
-hexa = smesh.Mesh(piece, "ex14_cyl1holed:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(4)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Poser les hypotheses locales
-# ----------------------------
-
-m_i = 0
-m_n = 12
-m_h = c_hauteur/m_n
-m_d = [4, 6, 8, 10, 10, 9, 8, 7, 6, 5, 4, 3]
-
-m_x = g_ox+g_cyl_rayon
-m_y = g_oy
-m_z = g_oz-g_cyl_demiHauteur+m_h/2
-
-while m_i<m_n:
-    m_p = MakeVertex(m_x, m_y, m_z + m_i*m_h)
-    m_e = GetEdgeNearPoint(piece, m_p)
-    m_a = hexa.Segment(m_e)
-    m_a.NumberOfSegments(m_d[m_i])
-    m_a.Propagation()
-    m_i = m_i + 1
-
-# Calculer le maillage
-# --------------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex15_cyl2geometry.py b/src/SMESH_SWIG/ex15_cyl2geometry.py
deleted file mode 100644 (file)
index c7de688..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometrie
-# =========
-
-# Construire avec des hexahedres une piece faite de 2 cylindres de diametre different
-# et dont les axes se coupent orthogonalement, puis mailler.
-
-# Valeurs
-# -------
-
-cx = 0
-cy = 0
-cz = 0
-
-g_rayon   = 100.0
-g_hauteur = 500
-
-p_rayon   =  50.0
-p_hauteur = 500
-
-g_trim = 1000
-
-# Gros cylindre
-# -------------
-
-cpd = []
-
-g_base = MakeVertex(cx, cy, cz)
-g_dir  = MakeVectorDXDYDZ(0, 0, 1)
-t_hauteur = p_rayon+10.0
-
-g_cyl = MakeCylinder(g_base, g_dir, g_rayon, g_hauteur)
-
-g_coupe   = MakeVectorDXDYDZ(1, 0, 0)
-
-g_tools = []
-g_tools.append(MakePlane(MakeVertex(cx+t_hauteur, cy, cz), g_coupe, g_trim))
-g_tools.append(MakePlane(MakeVertex(cx-t_hauteur, cy, cz), g_coupe, g_trim))
-
-g_partie = MakePartition([g_cyl], g_tools, [], [], ShapeType["SOLID"])
-g_bas, g_centre, g_haut = SubShapeAllSorted(g_partie, ShapeType["SOLID"])
-
-# Partie basse du gros cylindre
-# -----------------------------
-
-b_hauteur = 10
-b_base    = 20
-
-b_boite = MakeBox(cx-t_hauteur, cy-b_base, cz,  cx-t_hauteur-b_hauteur, cy+b_base, cz+g_hauteur)
-cpd.append(b_boite)
-
-b_cyl = MakeCut(g_bas, b_boite)
-
-b_tools = []
-b_tools.append(MakePlane(MakeVertex(cx-t_hauteur-b_hauteur, cy+b_base, cz), MakeVectorDXDYDZ( 1, 1, 0), g_trim))
-b_tools.append(MakePlane(MakeVertex(cx-t_hauteur-b_hauteur, cy-b_base, cz), MakeVectorDXDYDZ(-1, 1, 0), g_trim))
-
-b_partie = MakePartition([b_cyl], b_tools, [], [], ShapeType["SOLID"])
-b_element = SubShapeAll(b_partie, ShapeType["SOLID"])
-cpd = cpd + b_element
-
-# Partie haute du gros cylindre
-# -----------------------------
-
-h_plan = MakePlane(g_base, g_coupe, g_trim)
-
-cpd.append(MakeMirrorByPlane(b_boite, h_plan))
-
-for h in b_element:
-    h_symetrie = MakeMirrorByPlane(h, h_plan)
-    cpd.append(h_symetrie)
-
-# Petit cylindre
-# --------------
-
-z_arete = p_rayon/2
-x_arete = z_arete*t_hauteur*2/g_hauteur
-
-px = cx-x_arete
-py = cy-1.5*g_rayon
-pz = cz+g_hauteur/2
-
-p_base = MakeVertex(cx, py, pz)
-p_dir  = MakeVectorDXDYDZ(0, 1, 0)
-p_cyl  = MakeCylinder(p_base, p_dir, p_rayon, p_hauteur)
-
-p_boite = MakeBox(px, py, pz-z_arete,  cx+x_arete, py+p_hauteur, pz+z_arete)
-
-# Partie interieure du petit cylindre
-# -----------------------------------
-
-i_cyl   = MakeCommon(p_cyl, g_cyl)
-i_tuyau = MakeCut(i_cyl, p_boite)
-i_boite = MakeCommon(p_boite, g_cyl)
-
-# Partie exterieure du petit cylindre
-# -----------------------------------
-
-e_cyl0 = MakeCut(p_cyl, g_cyl)
-e_cyl  = SubShapeAllSorted(e_cyl0, ShapeType["SOLID"])
-
-e_tuyau = MakeCut(e_cyl[1], p_boite)
-
-e_boite0 = MakeCut(p_boite, g_cyl)
-e_boite  = SubShapeAllSorted(e_boite0, ShapeType["SOLID"])
-
-cpd.append(e_boite[1])
-
-# Partie centrale du gros cylindre
-# --------------------------------
-
-c_cyl = MakeCut(g_centre, p_cyl)
-
-# Partitionner
-# ------------
-
-p_tools = []
-p_tools.append(MakePlane(MakeVertex(px, py, pz-z_arete), MakeVectorDXDYDZ(-z_arete, 0, x_arete), g_trim))
-p_tools.append(MakePlane(MakeVertex(px, py, pz+z_arete), MakeVectorDXDYDZ( z_arete, 0, x_arete), g_trim))
-
-p_partie = MakePartition([e_tuyau], p_tools, [], [], ShapeType["SOLID"])
-p_element = SubShapeAll(p_partie, ShapeType["SOLID"])
-cpd = cpd + p_element
-
-q_partie = MakePartition([i_tuyau, c_cyl], p_tools, [], [], ShapeType["SOLID"])
-q_element = SubShapeAll(q_partie, ShapeType["SOLID"])
-
-q_element = q_element + [i_boite]
-
-q_tools = []
-q_tools.append(MakePlane(MakeVertex(cx, cy-b_base, cz), MakeVectorDXDYDZ(0, 1, 0), g_trim))
-q_tools.append(MakePlane(MakeVertex(cx, cy+b_base, cz), MakeVectorDXDYDZ(0, 1, 0), g_trim))
-
-r_element = []
-for e in q_element:
-    r_partie = MakePartition([e], q_tools, [], [], ShapeType["SOLID"])
-    r_element = r_element + SubShapeAll(r_partie, ShapeType["SOLID"])
-
-cpd = cpd + r_element
-
-# Compound
-# --------
-
-piece = RemoveExtraEdges(MakeCompound(cpd))
-
-# Ajouter la piece dans l'etude
-# -----------------------------
-
-piece_id = addToStudy(piece, "ex15_cyl2geometry")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex15_cyl2geometry:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(12)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex16_cyl2complementary.py b/src/SMESH_SWIG/ex16_cyl2complementary.py
deleted file mode 100644 (file)
index e38aba2..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometry
-# ========
-
-# Create the hexahedrical block geometry of a holed parallelepipede.
-# The hole has a T form composed by 2 cylinders with different radius, and their axis are normal.
-# This piece is meshed in hexahedrical.
-
-# Values
-# ------
-
-gx = 0
-gy = 0
-gz = 0
-
-g_dx = 250
-g_dy = 200
-g_dz = 150
-
-g_rayonGrand = 70
-g_rayonPetit = 50
-
-g_trim = 1000
-
-# The parallelepipede
-# -------------------
-
-p_boite = MakeBox(gx-g_dx, gy-g_dy, gz-g_dz,  gx+g_dx, gy+g_dy, gz+g_dz)
-
-# The great cylinder
-# ------------------
-
-g_base = MakeVertex(gx-g_dx, gy, gz)
-g_dir  = MakeVectorDXDYDZ(1, 0, 0)
-g_cyl  = MakeCylinder(g_base, g_dir, g_rayonGrand, g_dx*2)
-
-# The first hole
-# --------------
-
-b_boite = MakeCut(p_boite , g_cyl)
-
-# Partitioning
-# ------------
-
-p_base = MakeVertex(gx, gy, gz)
-
-p_tools = []
-
-p_tools.append(MakePlane(p_base, MakeVectorDXDYDZ(0,  1   , 0   ), g_trim))
-p_tools.append(MakePlane(p_base, MakeVectorDXDYDZ(0,  g_dz, g_dy), g_trim))
-p_tools.append(MakePlane(p_base, MakeVectorDXDYDZ(0, -g_dz, g_dy), g_trim))
-
-p_tools.append(MakePlane(MakeVertex(gx-g_rayonPetit, gy, gz), g_dir, g_trim))
-p_tools.append(MakePlane(MakeVertex(gx+g_rayonPetit, gy, gz), g_dir, g_trim))
-
-p_piece = MakePartition([b_boite], p_tools, [], [], ShapeType["SOLID"])
-
-# The small cylinder
-# ------------------
-
-c_cyl = MakeCylinder(p_base, MakeVectorDXDYDZ(0, 0, 1), g_rayonPetit, g_dz)
-
-# The second hole
-# ---------------
-
-d_element = SubShapeAllSorted(p_piece, ShapeType["SOLID"])
-
-d_element[ 8] = MakeCut(d_element[ 8], c_cyl)
-d_element[10] = MakeCut(d_element[10], c_cyl)
-
-# Compound
-# --------
-
-piece = RemoveExtraEdges(MakeCompound(d_element))
-
-# Add piece in study
-# ------------------
-
-piece_id = addToStudy(piece, "ex16_cyl2complementary")
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex16_cyl2complementary:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(12)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Define local hypothesis
-# -----------------------
-
-def local(x, y, z, d):
-    edge = GetEdgeNearPoint(piece, MakeVertex(x, y, z))
-    algo = hexa.Segment(edge)
-    algo.NumberOfSegments(d)
-    algo.Propagation()
-
-local(gx     , gy+g_dy, gz+g_dz, 7)
-local(gx+g_dx, gy+g_dy, gz     , 21)
-local(gx+g_dx, gy-g_dy, gz     , 21)
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex17_dome1.py b/src/SMESH_SWIG/ex17_dome1.py
deleted file mode 100644 (file)
index 5064a93..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-# Geometrie
-# =========
-
-# Creer un cylindre surplombe d'une demi-sphere le tout troue par un petit cylindre.
-# Decouper en hexahedre et mailler.
-
-# Donnees
-# -------
-
-cylindre_rayon   = 100
-cylindre_hauteur = 400
-
-trou_rayon = 20
-trou_z     = cylindre_rayon/2
-
-plan_trim = 2000
-
-# Cylindre
-# --------
-
-cylindre_base = MakeVertex(0, 0, 0)
-cylindre_dir  = MakeVectorDXDYDZ(1, 0, 0)
-cylindre      = MakeCylinder(cylindre_base, cylindre_dir, cylindre_rayon, cylindre_hauteur)
-
-# Dome
-# ----
-
-dome_sphere = MakeSpherePntR(cylindre_base, cylindre_rayon)
-dome        = MakeFuse(dome_sphere, cylindre)
-
-# Cheminee
-# --------
-
-cheminee_base = MakeVertex(-cylindre_hauteur/2, 0, trou_z)
-cheminee_trou = MakeCylinder(cheminee_base, cylindre_dir, trou_rayon, 2*cylindre_hauteur)
-cheminee      = MakeCut(dome, cheminee_trou)
-
-# Decoupage et reparation
-# -----------------------
-
-blocs_plan1 = MakePlane(cheminee_base, MakeVectorDXDYDZ(0, 1, 0), plan_trim)
-blocs_plan2 = MakePlane(cheminee_base, MakeVectorDXDYDZ(0, 0, 1), plan_trim)
-
-blocs_part = MakePartition([cheminee], [blocs_plan1, blocs_plan2], [], [], ShapeType["SOLID"])
-
-piece = RemoveExtraEdges(blocs_part)
-
-# Etude
-# -----
-
-piece_id = addToStudy(piece, "ex17_dome1")
-
-# Maillage
-# ========
-
-# Maillage hexahedrique
-# ---------------------
-
-hexa = smesh.Mesh(piece, "ex17_dome1:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(20)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Calcul du maillage
-# ------------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex18_dome2.py b/src/SMESH_SWIG/ex18_dome2.py
deleted file mode 100644 (file)
index 96d8738..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-# CEA/LGLS 2004-2005, Francis KLOSS (OCC)
-# =======================================
-
-from geompy import *
-
-import smesh
-
-import math
-
-# Geometrie
-# =========
-
-# Creer un cylindre ayant a chaque bout un morceau de sphere et le tout troue par un petit cylindrique excentre.
-# Decouper en hexahedre et mailler.
-
-# Donnees
-# -------
-
-# unite: millimetre
-
-g_ox = 0
-g_oy = 0
-g_oz = 0
-
-g_cyl_rayon       = 1000
-g_cyl_demiHauteur = 3000
-
-g_trou_rayon       =   5
-g_trou_centre      = 300
-
-g_sphere_rayon = 3500
-
-g_trim = 15000
-
-# Cylindre
-# --------
-
-c_point    = MakeVertex(g_ox, g_oy, g_oz-g_cyl_demiHauteur)
-c_dir      = MakeVectorDXDYDZ(0, 0, 1)
-c_hauteur  = 2*g_cyl_demiHauteur
-
-c_cylindre = MakeCylinder(c_point, c_dir, g_cyl_rayon, c_hauteur)
-
-# Sphere
-# ------
-
-s_hauteur = math.sqrt(g_sphere_rayon*g_sphere_rayon - g_cyl_rayon*g_cyl_rayon) - g_cyl_demiHauteur
-
-s_sphere  = MakeSphere(g_ox, g_oy, g_oz-s_hauteur, g_sphere_rayon)
-
-# Calottes
-# --------
-
-c_outils = []
-c_outils.append(MakePlane(MakeVertex(g_ox, g_oy, g_oz+g_cyl_demiHauteur), MakeVectorDXDYDZ(0, 0, 1), g_trim))
-
-c_cpd = MakePartition([s_sphere], c_outils, [], [], ShapeType["SOLID"])
-c_calotte_haut, c_reste = SubShapeAllSorted(c_cpd, ShapeType["SOLID"])
-
-c_plan = MakePlane(MakeVertex(g_ox, g_oy, g_oz), MakeVectorDXDYDZ(0, 0, 1), g_trim)
-c_calotte_bas = MakeMirrorByPlane(c_calotte_haut, c_plan)
-
-# Fusionner
-# ---------
-
-f_piece1 = MakeFuse(c_cylindre, c_calotte_haut)
-f_piece  = MakeFuse(f_piece1, c_calotte_bas)
-
-# Trouer
-# ------
-
-t_hauteur = g_sphere_rayon
-t_point   = MakeVertex(g_ox-g_trou_centre, g_oy, g_oz-t_hauteur)
-t_trou    = MakeCylinder(t_point, c_dir, g_trou_rayon, 2*t_hauteur)
-
-t_piece   = MakeCut(f_piece, t_trou)
-
-# Decouper
-# --------
-
-h_outils = []
-h_outils.append(MakePlane(t_point, MakeVectorDXDYDZ(1, 0, 0), g_trim))
-h_outils.append(MakePlane(t_point, MakeVectorDXDYDZ(0, 1, 0), g_trim))
-
-h_piece = MakePartition([t_piece], h_outils, [], [], ShapeType["SOLID"])
-
-# Reparer
-# -------
-
-piece = RemoveExtraEdges(h_piece)
-
-# Ajouter la piece dans l'etude
-# -----------------------------
-
-piece_id = addToStudy(piece, "ex18_dome2")
-
-# Maillage
-# ========
-
-# Maillage hexahedrique
-# ---------------------
-
-hexa = smesh.Mesh(piece, "ex18_dome2:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(2)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Calcul du maillage
-# ------------------
-
-hexa.Compute()
diff --git a/src/SMESH_SWIG/ex19_sphereINcube.py b/src/SMESH_SWIG/ex19_sphereINcube.py
deleted file mode 100644 (file)
index 295a95f..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-# CEA/LGLS 2005, Francis KLOSS (OCC)
-# ==================================
-
-from geompy import *
-
-import smesh
-
-# Geometrie
-# =========
-
-# Mailler en hexahedre une sphere dans un cube.
-
-# Donnees
-# -------
-
-sphere_rayon = 100
-
-cube_cote = 200
-
-plan_trim = 1000
-
-# Sphere
-# ------
-
-sphere_centre = MakeVertex(0, 0, 0)
-
-sphere_pleine = MakeSpherePntR(sphere_centre, sphere_rayon)
-
-# Cube interieur
-# --------------
-
-boite_cote = sphere_rayon / 2
-
-boite = MakeBox(-boite_cote, -boite_cote, -boite_cote,  +boite_cote, +boite_cote, +boite_cote)
-
-blocs = [boite]
-
-# Decoupage sphere
-# ----------------
-
-sphere_troue = MakeCut(sphere_pleine, boite)
-
-sphere_outils = []
-sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ( 1, 0,  1), plan_trim))
-sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ( 1, 0, -1), plan_trim))
-sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ( 1, 1,  0), plan_trim))
-sphere_outils.append(MakePlane(sphere_centre, MakeVectorDXDYDZ(-1, 1,  0), plan_trim))
-
-sphere_decoupee = MakePartition([sphere_troue], sphere_outils, [], [], ShapeType["SOLID"])
-
-sphere_partie   = GetBlockNearPoint(sphere_decoupee, MakeVertex(-sphere_rayon, 0, 0))
-sphere_bloc     = RemoveExtraEdges(sphere_partie)
-
-blocs.append(sphere_bloc)
-
-pi2 = 3.141592653/2
-
-sphere_dir1 = MakeVectorDXDYDZ(0, 1,  0)
-sphere_dir2 = MakeVectorDXDYDZ(0, 0,  1)
-
-blocs.append(MakeRotation(sphere_bloc, sphere_dir1, +pi2))
-blocs.append(MakeRotation(sphere_bloc, sphere_dir1, -pi2))
-
-blocs.append(MakeRotation(sphere_bloc, sphere_dir2, +pi2))
-blocs.append(MakeRotation(sphere_bloc, sphere_dir2, -pi2))
-
-blocs.append(MakeMirrorByPoint(sphere_bloc, sphere_centre))
-
-# Cube exterieur
-# --------------
-
-cube_plein   = MakeBox(-cube_cote, -cube_cote, -cube_cote,  +cube_cote, +cube_cote, +cube_cote)
-cube_trou    = MakeCut(cube_plein, sphere_pleine)
-cube_decoupe = MakePartition([cube_trou], sphere_outils, [], [], ShapeType["SOLID"])
-cube_partie  = GetBlockNearPoint(cube_decoupe, MakeVertex(-cube_cote, 0, 0))
-cube_bloc    = RemoveExtraEdges(cube_partie)
-
-blocs.append(cube_bloc)
-
-blocs.append(MakeRotation(cube_bloc, sphere_dir1, +pi2))
-blocs.append(MakeRotation(cube_bloc, sphere_dir1, -pi2))
-
-blocs.append(MakeRotation(cube_bloc, sphere_dir2, +pi2))
-blocs.append(MakeRotation(cube_bloc, sphere_dir2, -pi2))
-
-blocs.append(MakeMirrorByPoint(cube_bloc, sphere_centre))
-
-# Piece
-# -----
-
-piece_cpd = MakeCompound(blocs)
-piece = MakeGlueFaces(piece_cpd, 1.e-3)
-
-piece_id = addToStudy(piece, "ex19_sphereINcube")
-
-# Groupe geometrique
-# ==================
-
-# Definition du groupe
-# --------------------
-
-groupe = CreateGroup(piece, ShapeType["SOLID"])
-
-groupe_nom = "ex19_sphereINcube_interieur"
-addToStudy(groupe, groupe_nom)
-groupe.SetName(groupe_nom)
-
-# Contenu du groupe
-# -----------------
-
-groupe_sphere = GetShapesOnSphere(piece, ShapeType["SOLID"], sphere_centre, sphere_rayon, GEOM.ST_ONIN)
-
-UnionList(groupe, groupe_sphere)
-
-# Meshing
-# =======
-
-# Create a hexahedral mesh
-# ------------------------
-
-hexa = smesh.Mesh(piece, "ex19_sphereINcube:hexa")
-
-algo = hexa.Segment()
-algo.NumberOfSegments(10)
-
-hexa.Quadrangle()
-
-hexa.Hexahedron()
-
-# Mesh calculus
-# -------------
-
-hexa.Compute()
-
-# Le groupe de mailles
-# --------------------
-
-hexa_groupe = hexa.Group(groupe)
diff --git a/src/SMESH_SWIG/libSMESH_Swig.i b/src/SMESH_SWIG/libSMESH_Swig.i
deleted file mode 100644 (file)
index 7caf233..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : libGeometry_Swig.i
-//  Author : Nicolas REJNERI, Paul RASCLE
-//  Module : SMESH
-//  $Header$
-
-%module libSMESH_Swig
-
-%include "SMESHGUI_Swig.i"
-
diff --git a/src/StdMeshers/StdMeshers_Arithmetic1D.cxx b/src/StdMeshers/StdMeshers_Arithmetic1D.cxx
deleted file mode 100644 (file)
index c2241c0..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Arithmetic1D.cxx
-//  Author : Damien COQUERET, OCC
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_Arithmetic1D.hxx"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_Arithmetic1D::StdMeshers_Arithmetic1D(int hypId, int studyId,
-       SMESH_Gen * gen):SMESH_Hypothesis(hypId, studyId, gen)
-{
-  _begLength = 1.;
-  _endLength = 1.;
-  _name = "Arithmetic1D";
-  _param_algo_dim = 1; 
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_Arithmetic1D::~StdMeshers_Arithmetic1D()
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_Arithmetic1D::SetLength(double length, bool isStartLength)
-     throw(SALOME_Exception)
-{
-  if ( (isStartLength ? _begLength : _endLength) != length ) {
-    if (length <= 0)
-      throw SALOME_Exception(LOCALIZED("length must be positive"));
-    if ( isStartLength )
-      _begLength = length;
-    else
-      _endLength = length;
-
-    NotifySubMeshesHypothesisModification();
-  }
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-double StdMeshers_Arithmetic1D::GetLength(bool isStartLength) const
-{
-  return isStartLength ? _begLength : _endLength;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_Arithmetic1D::SaveTo(ostream & save)
-{
-  save << _begLength << " " << _endLength;
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_Arithmetic1D::LoadFrom(istream & load)
-{
-  bool isOK = true;
-  isOK = (load >> _begLength);
-  if (!isOK)
-    load.clear(ios::badbit | load.rdstate());
-  isOK = (load >> _endLength);
-  if (!isOK)
-    load.clear(ios::badbit | load.rdstate());
-  return load;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator <<(ostream & save, StdMeshers_Arithmetic1D & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >>(istream & load, StdMeshers_Arithmetic1D & hyp)
-{
-  return hyp.LoadFrom( load );
-}
diff --git a/src/StdMeshers/StdMeshers_Arithmetic1D.hxx b/src/StdMeshers/StdMeshers_Arithmetic1D.hxx
deleted file mode 100644 (file)
index ca49df1..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Arithmetic1D.hxx
-//  Author : Damien COQUERET, OCC
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_ARITHMETIC1D_HXX_
-#define _SMESH_ARITHMETIC1D_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-class StdMeshers_Arithmetic1D:
-  public SMESH_Hypothesis
-{
-public:
-  StdMeshers_Arithmetic1D(int hypId, int studyId, SMESH_Gen* gen);
-  virtual ~StdMeshers_Arithmetic1D();
-
-  void SetLength(double length, bool isStartLength) throw(SALOME_Exception);
-
-  double GetLength(bool isStartLength) const;
-
-  virtual ostream & SaveTo(ostream & save);
-  virtual istream & LoadFrom(istream & load);
-  friend ostream& operator << (ostream & save, StdMeshers_Arithmetic1D & hyp);
-  friend istream& operator >> (istream & load, StdMeshers_Arithmetic1D & hyp);
-
-protected:
-  double _begLength, _endLength;
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_Deflection1D.cxx b/src/StdMeshers/StdMeshers_Deflection1D.cxx
deleted file mode 100644 (file)
index f6e5469..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-//  SMESH StdMeshers_Deflection1D : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Deflection1D.cxx
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-
-#include "StdMeshers_Deflection1D.hxx"
-#include "utilities.h"
-
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_Deflection1D::StdMeshers_Deflection1D(int         hypId,
-                                                 int         studyId,
-                                                 SMESH_Gen * gen)
-     :SMESH_Hypothesis(hypId, studyId, gen)
-{
-  _value = 1.;
-  _name = "Deflection1D";
-  _param_algo_dim = 1; // is used by SMESH_Regular_1D
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_Deflection1D::~StdMeshers_Deflection1D()
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_Deflection1D::SetDeflection(double value)
-     throw(SALOME_Exception)
-{
-  if (_value != value) {
-    if (value <= 0.)
-      throw SALOME_Exception(LOCALIZED("Value must be positive"));
-
-    NotifySubMeshesHypothesisModification();
-
-    _value = value;
-  }
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-double StdMeshers_Deflection1D::GetDeflection() const
-{
-  return _value;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_Deflection1D::SaveTo(ostream & save)
-{
-  save << _value;
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_Deflection1D::LoadFrom(istream & load)
-{
-  bool isOK = (load >> _value);
-  if (!isOK)
-    load.clear(ios::badbit | load.rdstate());
-  return load;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator <<(ostream & save, StdMeshers_Deflection1D & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >>(istream & load, StdMeshers_Deflection1D & hyp)
-{
-  return hyp.LoadFrom( load );
-}
diff --git a/src/StdMeshers/StdMeshers_Deflection1D.hxx b/src/StdMeshers/StdMeshers_Deflection1D.hxx
deleted file mode 100644 (file)
index 1ed43cb..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//  SMESH StdMeshers : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Deflection1D.hxx
-//  Module : SMESH
-//  $Header$
-
-#ifndef _StdMeshers_Deflection1D_HXX_
-#define _StdMeshers_Deflection1D_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-class StdMeshers_Deflection1D:public SMESH_Hypothesis
-{
- public:
-  StdMeshers_Deflection1D(int hypId, int studyId, SMESH_Gen * gen);
-  virtual ~ StdMeshers_Deflection1D();
-
-  void SetDeflection(double value) throw(SALOME_Exception);
-
-  double GetDeflection() const;
-  
-  virtual ostream & SaveTo(ostream & save);
-  virtual istream & LoadFrom(istream & load);
-  friend ostream & operator <<(ostream & save, StdMeshers_Deflection1D & hyp);
-  friend istream & operator >>(istream & load, StdMeshers_Deflection1D & hyp);
-
- protected:
-  double _value;
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_Hexa_3D.cxx b/src/StdMeshers/StdMeshers_Hexa_3D.cxx
deleted file mode 100644 (file)
index a3ed4f1..0000000
+++ /dev/null
@@ -1,1068 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Hexa_3D.cxx
-//           Moved here from SMESH_Hexa_3D.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_Hexa_3D.hxx"
-#include "StdMeshers_Quadrangle_2D.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_subMesh.hxx"
-
-#include "SMDS_MeshElement.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "SMDS_FacePosition.hxx"
-#include "SMDS_VolumeTool.hxx"
-#include "SMDS_VolumeOfNodes.hxx"
-
-#include <TopExp.hxx>
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TColStd_ListIteratorOfListOfInteger.hxx>
-
-#include <BRep_Tool.hxx>
-#include <Geom_Surface.hxx>
-#include <Geom_Curve.hxx>
-#include <Geom2d_Curve.hxx>
-#include <Handle_Geom2d_Curve.hxx>
-#include <Handle_Geom_Curve.hxx>
-#include <gp_Pnt2d.hxx>
-
-#include "utilities.h"
-#include "Utils_ExceptHandlers.hxx"
-
-//modified by NIZNHY-PKV Wed Nov 17 15:31:58 2004 f
-#include "StdMeshers_Penta_3D.hxx"
-
-static bool ComputePentahedralMesh(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape);
-//modified by NIZNHY-PKV Wed Nov 17 15:32:00 2004 t
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_Hexa_3D::StdMeshers_Hexa_3D(int hypId, int studyId,
-       SMESH_Gen * gen):SMESH_3D_Algo(hypId, studyId, gen)
-{
-       MESSAGE("StdMeshers_Hexa_3D::StdMeshers_Hexa_3D");
-       _name = "Hexa_3D";
-//   _shapeType = TopAbs_SOLID;
-       _shapeType = (1 << TopAbs_SHELL) | (1 << TopAbs_SOLID); // 1 bit /shape type
-//   MESSAGE("_shapeType octal " << oct << _shapeType);
-       for (int i = 0; i < 6; i++)
-               _quads[i] = 0;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_Hexa_3D::~StdMeshers_Hexa_3D()
-{
-       MESSAGE("StdMeshers_Hexa_3D::~StdMeshers_Hexa_3D");
-       for (int i = 0; i < 6; i++)
-               StdMeshers_Quadrangle_2D::QuadDelete(_quads[i]);
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool StdMeshers_Hexa_3D::CheckHypothesis
-                         (SMESH_Mesh& aMesh,
-                          const TopoDS_Shape& aShape,
-                          SMESH_Hypothesis::Hypothesis_Status& aStatus)
-{
-       //MESSAGE("StdMeshers_Hexa_3D::CheckHypothesis");
-
-       bool isOk = true;
-        aStatus = SMESH_Hypothesis::HYP_OK;
-
-       // nothing to check
-
-       return isOk;
-}
-
-//=======================================================================
-//function : findIJ
-//purpose  : return i,j of the node
-//=======================================================================
-
-static bool findIJ (const SMDS_MeshNode* node, const FaceQuadStruct * quad, int& I, int& J)
-{
-  I = J = 0;
-  const SMDS_FacePosition* fpos =
-    static_cast<const SMDS_FacePosition*>(node->GetPosition().get());
-  if ( ! fpos ) return false;
-  gp_Pnt2d uv( fpos->GetUParameter(), fpos->GetVParameter() );
-
-  double minDist = DBL_MAX;
-  int nbhoriz  = Min(quad->nbPts[0], quad->nbPts[2]);
-  int nbvertic = Min(quad->nbPts[1], quad->nbPts[3]);
-  for (int i = 1; i < nbhoriz - 1; i++) {
-    for (int j = 1; j < nbvertic - 1; j++) {
-      int ij = j * nbhoriz + i;
-      gp_Pnt2d uv2( quad->uv_grid[ij].u, quad->uv_grid[ij].v );
-      double dist = uv.SquareDistance( uv2 );
-      if ( dist < minDist ) {
-        minDist = dist;
-        I = i;
-        J = j;
-      }
-    }
-  }
-  return true;
-}
-
-//=============================================================================
-/*!
- * Hexahedron mesh on hexaedron like form
- * -0.  - shape and face mesh verification
- * -1.  - identify faces and vertices of the "cube"
- * -2.  - Algorithm from:
- * "Application de l'interpolation transfinie à la création de maillages
- *  C0 ou G1 continus sur des triangles, quadrangles, tetraedres, pentaedres
- *  et hexaedres déformés."
- * Alain PERONNET - 8 janvier 1999
- */
-//=============================================================================
-
-bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh,
-       const TopoDS_Shape & aShape)throw(SALOME_Exception)
-{
-  Unexpect aCatch(SalomeException);
-       MESSAGE("StdMeshers_Hexa_3D::Compute");
-       //bool isOk = false;
-       SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
-       //SMESH_subMesh *theSubMesh = aMesh.GetSubMesh(aShape);
-       //const SMESHDS_SubMesh *& subMeshDS = theSubMesh->GetSubMeshDS();
-
-       // 0.  - shape and face mesh verification
-       // 0.1 - shape must be a solid (or a shell) with 6 faces
-       //MESSAGE("---");
-
-       vector < SMESH_subMesh * >meshFaces;
-       for (TopExp_Explorer exp(aShape, TopAbs_FACE); exp.More(); exp.Next())
-       {
-               SMESH_subMesh *aSubMesh = aMesh.GetSubMeshContaining(exp.Current());
-               ASSERT(aSubMesh);
-               meshFaces.push_back(aSubMesh);
-       }
-       if (meshFaces.size() != 6)
-       {
-               SCRUTE(meshFaces.size());
-//             ASSERT(0);
-               return false;
-       }
-
-       // 0.2 - is each face meshed with Quadrangle_2D? (so, with a wire of 4 edges)
-       //MESSAGE("---");
-
-       for (int i = 0; i < 6; i++)
-       {
-         TopoDS_Shape aFace = meshFaces[i]->GetSubShape();
-         SMESH_Algo *algo = _gen->GetAlgo(aMesh, aFace);
-         string algoName = algo->GetName();
-          bool isAllQuad = false;
-         if (algoName == "Quadrangle_2D") {
-            SMESHDS_SubMesh * sm = meshDS->MeshElements( aFace );
-            if ( sm ) {
-              isAllQuad = true;
-              SMDS_ElemIteratorPtr eIt = sm->GetElements();
-              while ( isAllQuad && eIt->more() )
-                isAllQuad = ( eIt->next()->NbNodes() == 4 );
-            }
-          }
-          if ( ! isAllQuad ) {
-           //modified by NIZNHY-PKV Wed Nov 17 15:31:37 2004 f
-            bool bIsOk;
-            //
-            bIsOk=ComputePentahedralMesh(aMesh, aShape);
-            if (bIsOk) {
-              return true;
-            }
-           //modified by NIZNHY-PKV Wed Nov 17 15:31:42 2004 t
-           SCRUTE(algoName);
-           //                  ASSERT(0);
-           return false;
-         }
-         StdMeshers_Quadrangle_2D *quadAlgo =
-           dynamic_cast < StdMeshers_Quadrangle_2D * >(algo);
-         ASSERT(quadAlgo);
-         try
-           {
-             _quads[i] = quadAlgo->CheckAnd2Dcompute(aMesh, aFace);
-             // *** to delete after usage
-           }
-         catch(SALOME_Exception & S_ex)
-           {
-             // *** delete _quads
-             // *** throw exception
-             //                        ASSERT(0);
-             return false;
-           }
-
-         // 0.2.1 - number of points on the opposite edges must be the same
-         if (_quads[i]->nbPts[0] != _quads[i]->nbPts[2] ||
-             _quads[i]->nbPts[1] != _quads[i]->nbPts[3])
-           {
-             MESSAGE("different number of points on the opposite edges of face " << i);
-             //                  ASSERT(0);
-             return false;
-           }
-       }
-
-       // 1.  - identify faces and vertices of the "cube"
-       // 1.1 - ancestor maps vertex->edges in the cube
-       //MESSAGE("---");
-
-       TopTools_IndexedDataMapOfShapeListOfShape MS;
-       TopExp::MapShapesAndAncestors(aShape, TopAbs_VERTEX, TopAbs_EDGE, MS);
-
-       // 1.2 - first face is choosen as face Y=0 of the unit cube
-       //MESSAGE("---");
-
-       const TopoDS_Shape & aFace = meshFaces[0]->GetSubShape();
-       const TopoDS_Face & F = TopoDS::Face(aFace);
-
-       // 1.3 - identify the 4 vertices of the face Y=0: V000, V100, V101, V001
-       //MESSAGE("---");
-
-       int i = 0;
-       TopoDS_Edge E = _quads[0]->edge[i];     //edge will be Y=0,Z=0 on unit cube
-       double f, l;
-       Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, F, f, l);
-       TopoDS_Vertex VFirst, VLast;
-       TopExp::Vertices(E, VFirst, VLast);     // corresponds to f and l
-       bool isForward =
-               (((l - f) * (_quads[0]->last[i] - _quads[0]->first[i])) > 0);
-
-       if (isForward)
-       {
-               _cube.V000 = VFirst;    // will be (0,0,0) on the unit cube
-               _cube.V100 = VLast;             // will be (1,0,0) on the unit cube
-       }
-       else
-       {
-               _cube.V000 = VLast;
-               _cube.V100 = VFirst;
-       }
-
-       i = 1;
-       E = _quads[0]->edge[i];
-       C2d = BRep_Tool::CurveOnSurface(E, F, f, l);
-       TopExp::Vertices(E, VFirst, VLast);
-       isForward = (((l - f) * (_quads[0]->last[i] - _quads[0]->first[i])) > 0);
-       if (isForward)
-               _cube.V101 = VLast;             // will be (1,0,1) on the unit cube
-       else
-               _cube.V101 = VFirst;
-
-       i = 2;
-       E = _quads[0]->edge[i];
-       C2d = BRep_Tool::CurveOnSurface(E, F, f, l);
-       TopExp::Vertices(E, VFirst, VLast);
-       isForward = (((l - f) * (_quads[0]->last[i] - _quads[0]->first[i])) > 0);
-       if (isForward)
-               _cube.V001 = VLast;             // will be (0,0,1) on the unit cube
-       else
-               _cube.V001 = VFirst;
-
-       // 1.4 - find edge X=0, Z=0 (ancestor of V000 not in face Y=0)
-       //     - find edge X=1, Z=0 (ancestor of V100 not in face Y=0)
-       //     - find edge X=1, Z=1 (ancestor of V101 not in face Y=0) 
-       //     - find edge X=0, Z=1 (ancestor of V001 not in face Y=0)
-       //MESSAGE("---");
-
-       TopoDS_Edge E_0Y0 = EdgeNotInFace(aMesh, aShape, F, _cube.V000, MS);
-       ASSERT(!E_0Y0.IsNull());
-
-       TopoDS_Edge E_1Y0 = EdgeNotInFace(aMesh, aShape, F, _cube.V100, MS);
-       ASSERT(!E_1Y0.IsNull());
-
-       TopoDS_Edge E_1Y1 = EdgeNotInFace(aMesh, aShape, F, _cube.V101, MS);
-       ASSERT(!E_1Y1.IsNull());
-
-       TopoDS_Edge E_0Y1 = EdgeNotInFace(aMesh, aShape, F, _cube.V001, MS);
-       ASSERT(!E_0Y1.IsNull());
-
-       // 1.5 - identify the 4 vertices in face Y=1: V010, V110, V111, V011
-       //MESSAGE("---");
-
-       TopExp::Vertices(E_0Y0, VFirst, VLast);
-       if (VFirst.IsSame(_cube.V000))
-               _cube.V010 = VLast;
-       else
-               _cube.V010 = VFirst;
-
-       TopExp::Vertices(E_1Y0, VFirst, VLast);
-       if (VFirst.IsSame(_cube.V100))
-               _cube.V110 = VLast;
-       else
-               _cube.V110 = VFirst;
-
-       TopExp::Vertices(E_1Y1, VFirst, VLast);
-       if (VFirst.IsSame(_cube.V101))
-               _cube.V111 = VLast;
-       else
-               _cube.V111 = VFirst;
-
-       TopExp::Vertices(E_0Y1, VFirst, VLast);
-       if (VFirst.IsSame(_cube.V001))
-               _cube.V011 = VLast;
-       else
-               _cube.V011 = VFirst;
-
-       // 1.6 - find remaining faces given 4 vertices
-       //MESSAGE("---");
-
-       _indY0 = 0;
-       _cube.quad_Y0 = _quads[_indY0];
-
-       _indY1 = GetFaceIndex(aMesh, aShape, meshFaces,
-               _cube.V010, _cube.V011, _cube.V110, _cube.V111);
-       _cube.quad_Y1 = _quads[_indY1];
-
-       _indZ0 = GetFaceIndex(aMesh, aShape, meshFaces,
-               _cube.V000, _cube.V010, _cube.V100, _cube.V110);
-       _cube.quad_Z0 = _quads[_indZ0];
-
-       _indZ1 = GetFaceIndex(aMesh, aShape, meshFaces,
-               _cube.V001, _cube.V011, _cube.V101, _cube.V111);
-       _cube.quad_Z1 = _quads[_indZ1];
-
-       _indX0 = GetFaceIndex(aMesh, aShape, meshFaces,
-               _cube.V000, _cube.V001, _cube.V010, _cube.V011);
-       _cube.quad_X0 = _quads[_indX0];
-
-       _indX1 = GetFaceIndex(aMesh, aShape, meshFaces,
-               _cube.V100, _cube.V101, _cube.V110, _cube.V111);
-       _cube.quad_X1 = _quads[_indX1];
-
-       //MESSAGE("---");
-
-       // 1.7 - get convertion coefs from face 2D normalized to 3D normalized
-
-       Conv2DStruct cx0;                       // for face X=0
-       Conv2DStruct cx1;                       // for face X=1
-       Conv2DStruct cy0;
-       Conv2DStruct cy1;
-       Conv2DStruct cz0;
-       Conv2DStruct cz1;
-
-       GetConv2DCoefs(*_cube.quad_X0, meshFaces[_indX0]->GetSubShape(),
-               _cube.V000, _cube.V010, _cube.V011, _cube.V001, cx0);
-       GetConv2DCoefs(*_cube.quad_X1, meshFaces[_indX1]->GetSubShape(),
-               _cube.V100, _cube.V110, _cube.V111, _cube.V101, cx1);
-       GetConv2DCoefs(*_cube.quad_Y0, meshFaces[_indY0]->GetSubShape(),
-               _cube.V000, _cube.V100, _cube.V101, _cube.V001, cy0);
-       GetConv2DCoefs(*_cube.quad_Y1, meshFaces[_indY1]->GetSubShape(),
-               _cube.V010, _cube.V110, _cube.V111, _cube.V011, cy1);
-       GetConv2DCoefs(*_cube.quad_Z0, meshFaces[_indZ0]->GetSubShape(),
-               _cube.V000, _cube.V100, _cube.V110, _cube.V010, cz0);
-       GetConv2DCoefs(*_cube.quad_Z1, meshFaces[_indZ1]->GetSubShape(),
-               _cube.V001, _cube.V101, _cube.V111, _cube.V011, cz1);
-
-       // 1.8 - create a 3D structure for normalized values
-
-       //MESSAGE("---");
-        int nbx = _cube.quad_Z0->nbPts[0];
-        if (cz0.a1 == 0.) nbx = _cube.quad_Z0->nbPts[1];
-        int nby = _cube.quad_X0->nbPts[0];
-        if (cx0.a1 == 0.) nby = _cube.quad_X0->nbPts[1];
-        int nbz = _cube.quad_Y0->nbPts[0];
-        if (cy0.a1 != 0.) nbz = _cube.quad_Y0->nbPts[1];
-
-       int i1, j1, nbxyz = nbx * nby * nbz;
-       Point3DStruct *np = new Point3DStruct[nbxyz];
-
-       // 1.9 - store node indexes of faces
-
-       {
-               const TopoDS_Face & F = TopoDS::Face(meshFaces[_indX0]->GetSubShape());
-
-               faceQuadStruct *quad = _cube.quad_X0;
-               int i = 0;                              // j = x/face , k = y/face
-               int nbdown = quad->nbPts[0];
-               int nbright = quad->nbPts[1];
-
-
-               SMDS_NodeIteratorPtr itf= aMesh.GetSubMesh(F)->GetSubMeshDS()->GetNodes();
-                       
-               while(itf->more())
-               {
-                       const SMDS_MeshNode * node = itf->next();
-                        findIJ( node, quad, i1, j1 );
-                       int ij1 = j1 * nbdown + i1;
-                       quad->uv_grid[ij1].node = node;
-               }
-
-               for (int i1 = 0; i1 < nbdown; i1++)
-                       for (int j1 = 0; j1 < nbright; j1++)
-                       {
-                               int ij1 = j1 * nbdown + i1;
-                               int j = cx0.ia * i1 + cx0.ib * j1 + cx0.ic;     // j = x/face
-                               int k = cx0.ja * i1 + cx0.jb * j1 + cx0.jc;     // k = y/face
-                               int ijk = k * nbx * nby + j * nbx + i;
-                               //MESSAGE(" "<<ij1<<" "<<i<<" "<<j<<" "<<ijk);
-                               np[ijk].node = quad->uv_grid[ij1].node;
-                               //SCRUTE(np[ijk].nodeId);
-                       }
-       }
-
-       {
-               const TopoDS_Face & F = TopoDS::Face(meshFaces[_indX1]->GetSubShape());
-
-               SMDS_NodeIteratorPtr itf= aMesh.GetSubMesh(F)->GetSubMeshDS()->GetNodes();
-
-               faceQuadStruct *quad = _cube.quad_X1;
-               int i = nbx - 1;                // j = x/face , k = y/face
-               int nbdown = quad->nbPts[0];
-               int nbright = quad->nbPts[1];
-
-               while(itf->more())
-               {
-                       const SMDS_MeshNode * node = itf->next();
-                        findIJ( node, quad, i1, j1 );
-                       int ij1 = j1 * nbdown + i1;
-                       quad->uv_grid[ij1].node = node;
-               }
-
-               for (int i1 = 0; i1 < nbdown; i1++)
-                       for (int j1 = 0; j1 < nbright; j1++)
-                       {
-                               int ij1 = j1 * nbdown + i1;
-                               int j = cx1.ia * i1 + cx1.ib * j1 + cx1.ic;     // j = x/face
-                               int k = cx1.ja * i1 + cx1.jb * j1 + cx1.jc;     // k = y/face
-                               int ijk = k * nbx * nby + j * nbx + i;
-                               //MESSAGE(" "<<ij1<<" "<<i<<" "<<j<<" "<<ijk);
-                               np[ijk].node = quad->uv_grid[ij1].node;
-                               //SCRUTE(np[ijk].nodeId);
-                       }
-       }
-
-       {
-               const TopoDS_Face & F = TopoDS::Face(meshFaces[_indY0]->GetSubShape());
-
-               SMDS_NodeIteratorPtr itf= aMesh.GetSubMesh(F)->GetSubMeshDS()->GetNodes();
-
-               faceQuadStruct *quad = _cube.quad_Y0;
-               int j = 0;                              // i = x/face , k = y/face
-               int nbdown = quad->nbPts[0];
-               int nbright = quad->nbPts[1];
-
-               while(itf->more())
-               {
-                       const SMDS_MeshNode * node = itf->next();
-                        findIJ( node, quad, i1, j1 );
-                       int ij1 = j1 * nbdown + i1;
-                       quad->uv_grid[ij1].node = node;
-               }
-
-               for (int i1 = 0; i1 < nbdown; i1++)
-                       for (int j1 = 0; j1 < nbright; j1++)
-                       {
-                               int ij1 = j1 * nbdown + i1;
-                               int i = cy0.ia * i1 + cy0.ib * j1 + cy0.ic;     // i = x/face
-                               int k = cy0.ja * i1 + cy0.jb * j1 + cy0.jc;     // k = y/face
-                               int ijk = k * nbx * nby + j * nbx + i;
-                               //MESSAGE(" "<<ij1<<" "<<i<<" "<<j<<" "<<ijk);
-                               np[ijk].node = quad->uv_grid[ij1].node;
-                               //SCRUTE(np[ijk].nodeId);
-                       }
-       }
-
-       {
-               const TopoDS_Face & F = TopoDS::Face(meshFaces[_indY1]->GetSubShape());
-
-               SMDS_NodeIteratorPtr itf= aMesh.GetSubMesh(F)->GetSubMeshDS()->GetNodes();
-
-               faceQuadStruct *quad = _cube.quad_Y1;
-               int j = nby - 1;                // i = x/face , k = y/face
-               int nbdown = quad->nbPts[0];
-               int nbright = quad->nbPts[1];
-
-               while(itf->more())
-               {
-                       const SMDS_MeshNode * node = itf->next();
-                        findIJ( node, quad, i1, j1 );
-                       int ij1 = j1 * nbdown + i1;
-                       quad->uv_grid[ij1].node = node;
-               }
-
-               for (int i1 = 0; i1 < nbdown; i1++)
-                       for (int j1 = 0; j1 < nbright; j1++)
-                       {
-                               int ij1 = j1 * nbdown + i1;
-                               int i = cy1.ia * i1 + cy1.ib * j1 + cy1.ic;     // i = x/face
-                               int k = cy1.ja * i1 + cy1.jb * j1 + cy1.jc;     // k = y/face
-                               int ijk = k * nbx * nby + j * nbx + i;
-                               //MESSAGE(" "<<ij1<<" "<<i<<" "<<j<<" "<<ijk);
-                               np[ijk].node = quad->uv_grid[ij1].node;
-                               //SCRUTE(np[ijk].nodeId);
-                       }
-       }
-
-       {
-               const TopoDS_Face & F = TopoDS::Face(meshFaces[_indZ0]->GetSubShape());
-
-               SMDS_NodeIteratorPtr itf= aMesh.GetSubMesh(F)->GetSubMeshDS()->GetNodes();
-
-               faceQuadStruct *quad = _cube.quad_Z0;
-               int k = 0;                              // i = x/face , j = y/face
-               int nbdown = quad->nbPts[0];
-               int nbright = quad->nbPts[1];
-
-               while(itf->more())
-               {
-                       const SMDS_MeshNode * node = itf->next();
-                        findIJ( node, quad, i1, j1 );
-                       int ij1 = j1 * nbdown + i1;
-                       quad->uv_grid[ij1].node = node;
-               }
-
-               for (int i1 = 0; i1 < nbdown; i1++)
-                       for (int j1 = 0; j1 < nbright; j1++)
-                       {
-                               int ij1 = j1 * nbdown + i1;
-                               int i = cz0.ia * i1 + cz0.ib * j1 + cz0.ic;     // i = x/face
-                               int j = cz0.ja * i1 + cz0.jb * j1 + cz0.jc;     // j = y/face
-                               int ijk = k * nbx * nby + j * nbx + i;
-                               //MESSAGE(" "<<ij1<<" "<<i<<" "<<j<<" "<<ijk);
-                               np[ijk].node = quad->uv_grid[ij1].node;
-                               //SCRUTE(np[ijk].nodeId);
-                       }
-       }
-
-       {
-               const TopoDS_Face & F = TopoDS::Face(meshFaces[_indZ1]->GetSubShape());
-
-               SMDS_NodeIteratorPtr itf= aMesh.GetSubMesh(F)->GetSubMeshDS()->GetNodes();
-
-               faceQuadStruct *quad = _cube.quad_Z1;
-               int k = nbz - 1;                // i = x/face , j = y/face
-               int nbdown = quad->nbPts[0];
-               int nbright = quad->nbPts[1];
-
-               while(itf->more())
-               {
-                       const SMDS_MeshNode * node = itf->next();
-                        findIJ( node, quad, i1, j1 );
-                       int ij1 = j1 * nbdown + i1;
-                       quad->uv_grid[ij1].node = node;
-               }
-
-               for (int i1 = 0; i1 < nbdown; i1++)
-                       for (int j1 = 0; j1 < nbright; j1++)
-                       {
-                               int ij1 = j1 * nbdown + i1;
-                               int i = cz1.ia * i1 + cz1.ib * j1 + cz1.ic;     // i = x/face
-                               int j = cz1.ja * i1 + cz1.jb * j1 + cz1.jc;     // j = y/face
-                               int ijk = k * nbx * nby + j * nbx + i;
-                               //MESSAGE(" "<<ij1<<" "<<i<<" "<<j<<" "<<ijk);
-                               np[ijk].node = quad->uv_grid[ij1].node;
-                               //SCRUTE(np[ijk].nodeId);
-                       }
-       }
-
-       // 2.0 - for each node of the cube:
-       //       - get the 8 points 3D = 8 vertices of the cube
-       //       - get the 12 points 3D on the 12 edges of the cube
-       //       - get the 6 points 3D on the 6 faces with their ID
-       //       - compute the point 3D
-       //       - store the point 3D in SMESHDS, store its ID in 3D structure
-
-        int shapeID = meshDS->ShapeToIndex( aShape );
-
-       Pt3 p000, p001, p010, p011, p100, p101, p110, p111;
-       Pt3 px00, px01, px10, px11;
-       Pt3 p0y0, p0y1, p1y0, p1y1;
-       Pt3 p00z, p01z, p10z, p11z;
-       Pt3 pxy0, pxy1, px0z, px1z, p0yz, p1yz;
-
-       GetPoint(p000, 0, 0, 0, nbx, nby, nbz, np, meshDS);
-       GetPoint(p001, 0, 0, nbz - 1, nbx, nby, nbz, np, meshDS);
-       GetPoint(p010, 0, nby - 1, 0, nbx, nby, nbz, np, meshDS);
-       GetPoint(p011, 0, nby - 1, nbz - 1, nbx, nby, nbz, np, meshDS);
-       GetPoint(p100, nbx - 1, 0, 0, nbx, nby, nbz, np, meshDS);
-       GetPoint(p101, nbx - 1, 0, nbz - 1, nbx, nby, nbz, np, meshDS);
-       GetPoint(p110, nbx - 1, nby - 1, 0, nbx, nby, nbz, np, meshDS);
-       GetPoint(p111, nbx - 1, nby - 1, nbz - 1, nbx, nby, nbz, np, meshDS);
-
-       for (int i = 1; i < nbx - 1; i++)
-       {
-               for (int j = 1; j < nby - 1; j++)
-               {
-                       for (int k = 1; k < nbz - 1; k++)
-                       {
-                               // *** seulement maillage regulier
-                               // 12 points on edges
-                               GetPoint(px00, i, 0, 0, nbx, nby, nbz, np, meshDS);
-                               GetPoint(px01, i, 0, nbz - 1, nbx, nby, nbz, np, meshDS);
-                               GetPoint(px10, i, nby - 1, 0, nbx, nby, nbz, np, meshDS);
-                               GetPoint(px11, i, nby - 1, nbz - 1, nbx, nby, nbz, np, meshDS);
-
-                               GetPoint(p0y0, 0, j, 0, nbx, nby, nbz, np, meshDS);
-                               GetPoint(p0y1, 0, j, nbz - 1, nbx, nby, nbz, np, meshDS);
-                               GetPoint(p1y0, nbx - 1, j, 0, nbx, nby, nbz, np, meshDS);
-                               GetPoint(p1y1, nbx - 1, j, nbz - 1, nbx, nby, nbz, np, meshDS);
-
-                               GetPoint(p00z, 0, 0, k, nbx, nby, nbz, np, meshDS);
-                               GetPoint(p01z, 0, nby - 1, k, nbx, nby, nbz, np, meshDS);
-                               GetPoint(p10z, nbx - 1, 0, k, nbx, nby, nbz, np, meshDS);
-                               GetPoint(p11z, nbx - 1, nby - 1, k, nbx, nby, nbz, np, meshDS);
-
-                               // 12 points on faces
-                               GetPoint(pxy0, i, j, 0, nbx, nby, nbz, np, meshDS);
-                               GetPoint(pxy1, i, j, nbz - 1, nbx, nby, nbz, np, meshDS);
-                               GetPoint(px0z, i, 0, k, nbx, nby, nbz, np, meshDS);
-                               GetPoint(px1z, i, nby - 1, k, nbx, nby, nbz, np, meshDS);
-                               GetPoint(p0yz, 0, j, k, nbx, nby, nbz, np, meshDS);
-                               GetPoint(p1yz, nbx - 1, j, k, nbx, nby, nbz, np, meshDS);
-
-                               int ijk = k * nbx * nby + j * nbx + i;
-                               double x = double (i) / double (nbx - 1);       // *** seulement
-                               double y = double (j) / double (nby - 1);       // *** maillage
-                               double z = double (k) / double (nbz - 1);       // *** regulier
-
-                               Pt3 X;
-                               for (int i = 0; i < 3; i++)
-                               {
-                                       X[i] =
-                                               (1 - x) * p0yz[i] + x * p1yz[i]
-                                               + (1 - y) * px0z[i] + y * px1z[i]
-                                               + (1 - z) * pxy0[i] + z * pxy1[i]
-                                               - (1 - x) * ((1 - y) * p00z[i] + y * p01z[i])
-                                               - x * ((1 - y) * p10z[i] + y * p11z[i])
-                                               - (1 - y) * ((1 - z) * px00[i] + z * px01[i])
-                                               - y * ((1 - z) * px10[i] + z * px11[i])
-                                               - (1 - z) * ((1 - x) * p0y0[i] + x * p1y0[i])
-                                               - z * ((1 - x) * p0y1[i] + x * p1y1[i])
-                                               + (1 - x) * ((1 - y) * ((1 - z) * p000[i] + z * p001[i])
-                                               + y * ((1 - z) * p010[i] + z * p011[i]))
-                                               + x * ((1 - y) * ((1 - z) * p100[i] + z * p101[i])
-                                               + y * ((1 - z) * p110[i] + z * p111[i]));
-                               }
-
-                               SMDS_MeshNode * node = meshDS->AddNode(X[0], X[1], X[2]);
-                               np[ijk].node = node;
-                                meshDS->SetNodeInVolume(node, shapeID);
-                       }
-               }
-       }
-
-  // find orientation of furute volumes according to MED convention
-  vector< bool > forward( nbx * nby );
-  SMDS_VolumeTool vTool;
-  for (int i = 0; i < nbx - 1; i++)
-    for (int j = 0; j < nby - 1; j++)
-    {
-      int n1 = j * nbx + i;
-      int n2 = j * nbx + i + 1;
-      int n3 = (j + 1) * nbx + i + 1;
-      int n4 = (j + 1) * nbx + i;
-      int n5 = nbx * nby + j * nbx + i;
-      int n6 = nbx * nby + j * nbx + i + 1;
-      int n7 = nbx * nby + (j + 1) * nbx + i + 1;
-      int n8 = nbx * nby + (j + 1) * nbx + i;
-
-      SMDS_VolumeOfNodes tmpVol (np[n1].node,np[n2].node,np[n3].node,np[n4].node,
-                                 np[n5].node,np[n6].node,np[n7].node,np[n8].node);
-      vTool.Set( &tmpVol );
-      forward[ n1 ] = vTool.IsForward();
-    }
-
-       //2.1 - for each node of the cube (less 3 *1 Faces):
-       //      - store hexahedron in SMESHDS
-       MESSAGE("Storing hexahedron into the DS");
-       for (int i = 0; i < nbx - 1; i++)
-               for (int j = 0; j < nby - 1; j++)
-                {
-                        bool isForw = forward.at( j * nbx + i );
-                       for (int k = 0; k < nbz - 1; k++)
-                       {
-                               int n1 = k * nbx * nby + j * nbx + i;
-                               int n2 = k * nbx * nby + j * nbx + i + 1;
-                               int n3 = k * nbx * nby + (j + 1) * nbx + i + 1;
-                               int n4 = k * nbx * nby + (j + 1) * nbx + i;
-                               int n5 = (k + 1) * nbx * nby + j * nbx + i;
-                               int n6 = (k + 1) * nbx * nby + j * nbx + i + 1;
-                               int n7 = (k + 1) * nbx * nby + (j + 1) * nbx + i + 1;
-                               int n8 = (k + 1) * nbx * nby + (j + 1) * nbx + i;
-
-                               SMDS_MeshVolume * elt;
-                                if ( isForw )
-                                  elt = meshDS->AddVolume(np[n1].node,
-                                                          np[n2].node,
-                                                          np[n3].node,
-                                                          np[n4].node,
-                                                          np[n5].node,
-                                                          np[n6].node,
-                                                          np[n7].node,
-                                                          np[n8].node);
-                                else
-                                  elt = meshDS->AddVolume(np[n1].node,
-                                                          np[n4].node,
-                                                          np[n3].node,
-                                                          np[n2].node,
-                                                          np[n5].node,
-                                                          np[n8].node,
-                                                          np[n7].node,
-                                                          np[n6].node);
-
-                                meshDS->SetMeshElementOnShape(elt, shapeID);
-                              }
-                      }
-  if ( np ) delete [] np;
-       //MESSAGE("End of StdMeshers_Hexa_3D::Compute()");
-       return true;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_Hexa_3D::GetPoint(Pt3 p, int i, int j, int k, int nbx, int nby,
-       int nbz, Point3DStruct * np, const SMESHDS_Mesh * meshDS)
-{
-       int ijk = k * nbx * nby + j * nbx + i;
-       const SMDS_MeshNode * node = np[ijk].node;
-       p[0] = node->X();
-       p[1] = node->Y();
-       p[2] = node->Z();
-       //MESSAGE(" "<<i<<" "<<j<<" "<<k<<" "<<p[0]<<" "<<p[1]<<" "<<p[2]);
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-int StdMeshers_Hexa_3D::GetFaceIndex(SMESH_Mesh & aMesh,
-       const TopoDS_Shape & aShape,
-       const vector < SMESH_subMesh * >&meshFaces,
-       const TopoDS_Vertex & V0,
-       const TopoDS_Vertex & V1,
-       const TopoDS_Vertex & V2, const TopoDS_Vertex & V3)
-{
-       //MESSAGE("StdMeshers_Hexa_3D::GetFaceIndex");
-       int faceIndex = -1;
-       for (int i = 1; i < 6; i++)
-       {
-               const TopoDS_Shape & aFace = meshFaces[i]->GetSubShape();
-               //const TopoDS_Face& F = TopoDS::Face(aFace);
-               TopTools_IndexedMapOfShape M;
-               TopExp::MapShapes(aFace, TopAbs_VERTEX, M);
-               bool verticesInShape = false;
-               if (M.Contains(V0))
-                       if (M.Contains(V1))
-                               if (M.Contains(V2))
-                                       if (M.Contains(V3))
-                                               verticesInShape = true;
-               if (verticesInShape)
-               {
-                       faceIndex = i;
-                       break;
-               }
-       }
-       ASSERT(faceIndex > 0);
-       //SCRUTE(faceIndex);
-       return faceIndex;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-TopoDS_Edge
-       StdMeshers_Hexa_3D::EdgeNotInFace(SMESH_Mesh & aMesh,
-       const TopoDS_Shape & aShape,
-       const TopoDS_Face & aFace,
-       const TopoDS_Vertex & aVertex,
-       const TopTools_IndexedDataMapOfShapeListOfShape & MS)
-{
-       //MESSAGE("StdMeshers_Hexa_3D::EdgeNotInFace");
-       TopTools_IndexedDataMapOfShapeListOfShape MF;
-       TopExp::MapShapesAndAncestors(aFace, TopAbs_VERTEX, TopAbs_EDGE, MF);
-       const TopTools_ListOfShape & ancestorsInSolid = MS.FindFromKey(aVertex);
-       const TopTools_ListOfShape & ancestorsInFace = MF.FindFromKey(aVertex);
-//     SCRUTE(ancestorsInSolid.Extent());
-//     SCRUTE(ancestorsInFace.Extent());
-       ASSERT(ancestorsInSolid.Extent() == 6); // 6 (edges doublees)
-       ASSERT(ancestorsInFace.Extent() == 2);
-
-       TopoDS_Edge E;
-       E.Nullify();
-       TopTools_ListIteratorOfListOfShape its(ancestorsInSolid);
-       for (; its.More(); its.Next())
-       {
-               TopoDS_Shape ancestor = its.Value();
-               TopTools_ListIteratorOfListOfShape itf(ancestorsInFace);
-               bool isInFace = false;
-               for (; itf.More(); itf.Next())
-               {
-                       TopoDS_Shape ancestorInFace = itf.Value();
-                       if (ancestorInFace.IsSame(ancestor))
-                       {
-                               isInFace = true;
-                               break;
-                       }
-               }
-               if (!isInFace)
-               {
-                       E = TopoDS::Edge(ancestor);
-                       break;
-               }
-       }
-       return E;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_Hexa_3D::GetConv2DCoefs(const faceQuadStruct & quad,
-       const TopoDS_Shape & aShape,
-       const TopoDS_Vertex & V0,
-       const TopoDS_Vertex & V1,
-       const TopoDS_Vertex & V2, const TopoDS_Vertex & V3, Conv2DStruct & conv)
-{
-//     MESSAGE("StdMeshers_Hexa_3D::GetConv2DCoefs");
-       const TopoDS_Face & F = TopoDS::Face(aShape);
-       TopoDS_Edge E = quad.edge[0];
-       double f, l;
-       Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, F, f, l);
-       TopoDS_Vertex VFirst, VLast;
-       TopExp::Vertices(E, VFirst, VLast);     // corresponds to f and l
-       bool isForward = (((l - f) * (quad.last[0] - quad.first[0])) > 0);
-       TopoDS_Vertex VA, VB;
-       if (isForward)
-       {
-               VA = VFirst;
-               VB = VLast;
-       }
-       else
-       {
-               VA = VLast;
-               VB = VFirst;
-       }
-       int a1, b1, c1, a2, b2, c2;
-       if (VA.IsSame(V0))
-               if (VB.IsSame(V1))
-               {
-                       a1 = 1;
-                       b1 = 0;
-                       c1 = 0;                         // x
-                       a2 = 0;
-                       b2 = 1;
-                       c2 = 0;                         // y
-               }
-               else
-               {
-                       ASSERT(VB.IsSame(V3));
-                       a1 = 0;
-                       b1 = 1;
-                       c1 = 0;                         // y
-                       a2 = 1;
-                       b2 = 0;
-                       c2 = 0;                         // x
-               }
-       if (VA.IsSame(V1))
-               if (VB.IsSame(V2))
-               {
-                       a1 = 0;
-                       b1 = -1;
-                       c1 = 1;                         // 1-y
-                       a2 = 1;
-                       b2 = 0;
-                       c2 = 0;                         // x
-               }
-               else
-               {
-                       ASSERT(VB.IsSame(V0));
-                       a1 = -1;
-                       b1 = 0;
-                       c1 = 1;                         // 1-x
-                       a2 = 0;
-                       b2 = 1;
-                       c2 = 0;                         // y
-               }
-       if (VA.IsSame(V2))
-               if (VB.IsSame(V3))
-               {
-                       a1 = -1;
-                       b1 = 0;
-                       c1 = 1;                         // 1-x
-                       a2 = 0;
-                       b2 = -1;
-                       c2 = 1;                         // 1-y
-               }
-               else
-               {
-                       ASSERT(VB.IsSame(V1));
-                       a1 = 0;
-                       b1 = -1;
-                       c1 = 1;                         // 1-y
-                       a2 = -1;
-                       b2 = 0;
-                       c2 = 1;                         // 1-x
-               }
-       if (VA.IsSame(V3))
-               if (VB.IsSame(V0))
-               {
-                       a1 = 0;
-                       b1 = 1;
-                       c1 = 0;                         // y
-                       a2 = -1;
-                       b2 = 0;
-                       c2 = 1;                         // 1-x
-               }
-               else
-               {
-                       ASSERT(VB.IsSame(V2));
-                       a1 = 1;
-                       b1 = 0;
-                       c1 = 0;                         // x
-                       a2 = 0;
-                       b2 = -1;
-                       c2 = 1;                         // 1-y
-               }
-//     MESSAGE("X = " << c1 << "+ " << a1 << "*x + " << b1 << "*y");
-//     MESSAGE("Y = " << c2 << "+ " << a2 << "*x + " << b2 << "*y");
-       conv.a1 = a1;
-       conv.b1 = b1;
-       conv.c1 = c1;
-       conv.a2 = a2;
-       conv.b2 = b2;
-       conv.c2 = c2;
-
-       int nbdown = quad.nbPts[0];
-       int nbright = quad.nbPts[1];
-       conv.ia = int (a1);
-       conv.ib = int (b1);
-       conv.ic =
-               int (c1 * a1 * a1) * (nbdown - 1) + int (c1 * b1 * b1) * (nbright - 1);
-       conv.ja = int (a2);
-       conv.jb = int (b2);
-       conv.jc =
-               int (c2 * a2 * a2) * (nbdown - 1) + int (c2 * b2 * b2) * (nbright - 1);
-//     MESSAGE("I " << conv.ia << " " << conv.ib << " " << conv.ic);
-//     MESSAGE("J " << conv.ja << " " << conv.jb << " " << conv.jc);
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_Hexa_3D::SaveTo(ostream & save)
-{
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_Hexa_3D::LoadFrom(istream & load)
-{
-  return load;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator <<(ostream & save, StdMeshers_Hexa_3D & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >>(istream & load, StdMeshers_Hexa_3D & hyp)
-{
-  return hyp.LoadFrom( load );
-}
-
-//modified by NIZNHY-PKV Wed Nov 17 15:34:13 2004 f
-///////////////////////////////////////////////////////////////////////////////
-//ZZ
-//#include <stdio.h>
-
-//=======================================================================
-//function : ComputePentahedralMesh
-//purpose  : 
-//=======================================================================
-bool ComputePentahedralMesh(SMESH_Mesh & aMesh,        const TopoDS_Shape & aShape)
-{
-  //printf(" ComputePentahedralMesh HERE\n");
-  //
-  bool bOK;
-  //int iErr;
-  StdMeshers_Penta_3D anAlgo;
-  //
-  bOK=anAlgo.Compute(aMesh, aShape);
-  /*
-  iErr=anAlgo.ErrorStatus();
-  
-  if (iErr) {
-    printf("  *** Error# %d\n", iErr);
-  }
-  else {
-    printf("  *** No errors# %d\n", iErr);
-  }
-  */
-  return bOK;
-}
-
diff --git a/src/StdMeshers/StdMeshers_Hexa_3D.hxx b/src/StdMeshers/StdMeshers_Hexa_3D.hxx
deleted file mode 100644 (file)
index a9e2045..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Hexa_3D.hxx
-//           Moved here from SMESH_Hexa_3D.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_HEXA_3D_HXX_
-#define _SMESH_HEXA_3D_HXX_
-
-#include "SMESH_3D_Algo.hxx"
-#include "SMESH_Mesh.hxx"
-#include "StdMeshers_Quadrangle_2D.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-typedef struct point3Dstruct
-{
-       const SMDS_MeshNode * node;
-} Point3DStruct;
-
-typedef double Pt3[3];
-
-typedef struct conv2dstruct
-{
-  double a1; // X = a1*x + b1*y + c1 
-  double b1; // Y = a2*x + b2*y + c2
-  double c1; // a1, b1 a2, b2 in {-1,0,1}
-  double a2; // c1, c2 in {0,1}
-  double b2;
-  double c2;
-  int ia;    // I = ia*i + ib*j + ic
-  int ib;
-  int ic;
-  int ja;    // J = ja*i + jb*j + jc
-  int jb;
-  int jc;
-} Conv2DStruct;
-
-typedef struct cubeStruct
-{
-  TopoDS_Vertex V000;
-  TopoDS_Vertex V001;
-  TopoDS_Vertex V010;
-  TopoDS_Vertex V011;
-  TopoDS_Vertex V100;
-  TopoDS_Vertex V101;
-  TopoDS_Vertex V110;
-  TopoDS_Vertex V111;
-  faceQuadStruct* quad_X0;
-  faceQuadStruct* quad_X1;
-  faceQuadStruct* quad_Y0;
-  faceQuadStruct* quad_Y1;
-  faceQuadStruct* quad_Z0;
-  faceQuadStruct* quad_Z1;
-  Point3DStruct* np; // normalised 3D coordinates
-} CubeStruct;
-
-class StdMeshers_Hexa_3D:
-  public SMESH_3D_Algo
-{
-public:
-  StdMeshers_Hexa_3D(int hypId, int studyId, SMESH_Gen* gen);
-  virtual ~StdMeshers_Hexa_3D();
-
-  virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
-                               const TopoDS_Shape& aShape,
-                               SMESH_Hypothesis::Hypothesis_Status& aStatus);
-
-  virtual bool Compute(SMESH_Mesh& aMesh,
-                      const TopoDS_Shape& aShape)
-    throw (SALOME_Exception);
-
-  ostream & SaveTo(ostream & save);
-  istream & LoadFrom(istream & load);
-  friend ostream & operator << (ostream & save, StdMeshers_Hexa_3D & hyp);
-  friend istream & operator >> (istream & load, StdMeshers_Hexa_3D & hyp);
-
-protected:
-  TopoDS_Edge
-  EdgeNotInFace(SMESH_Mesh& aMesh,
-               const TopoDS_Shape& aShape,
-               const TopoDS_Face& aFace,
-               const TopoDS_Vertex& aVertex,
-               const TopTools_IndexedDataMapOfShapeListOfShape& MS);
-
-  int GetFaceIndex(SMESH_Mesh& aMesh,
-                  const TopoDS_Shape& aShape,
-                  const vector<SMESH_subMesh*>& meshFaces,
-                  const TopoDS_Vertex& V0,
-                  const TopoDS_Vertex& V1,
-                  const TopoDS_Vertex& V2,
-                  const TopoDS_Vertex& V3);
-
-  void GetConv2DCoefs(const faceQuadStruct& quad,
-                     const TopoDS_Shape& aShape,
-                     const TopoDS_Vertex& V0,
-                     const TopoDS_Vertex& V1,
-                     const TopoDS_Vertex& V2,
-                     const TopoDS_Vertex& V3,
-                     Conv2DStruct& conv);
-
-  void GetPoint(Pt3 p,
-               int i, int j, int k,
-               int nbx, int nby, int nbz,
-               Point3DStruct *np,
-               const SMESHDS_Mesh* meshDS);
-
-  CubeStruct _cube;
-  FaceQuadStruct* _quads[6];
-  int _indX0;
-  int _indX1;
-  int _indY0;
-  int _indY1;
-  int _indZ0;
-  int _indZ1;
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_LengthFromEdges.cxx b/src/StdMeshers/StdMeshers_LengthFromEdges.cxx
deleted file mode 100644 (file)
index f21f199..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_LengthFromEdges.cxx
-//           Moved here from SMESH_LengthFromEdges.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_LengthFromEdges.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_LengthFromEdges::StdMeshers_LengthFromEdges(int hypId, int studyId, SMESH_Gen* gen)
-  : SMESH_Hypothesis(hypId, studyId, gen)
-{
-  _mode =1;
-  _name = "LengthFromEdges";
-//   SCRUTE(_name);
-//   SCRUTE(&_name);
-  _param_algo_dim = 2; // is used by SMESH_MEFISTO_2D
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_LengthFromEdges::~StdMeshers_LengthFromEdges()
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_LengthFromEdges::SetMode(int mode)
-  throw (SALOME_Exception)
-{
-  int oldMode = _mode;
-  if (mode <= 0) 
-    throw SALOME_Exception(LOCALIZED("mode must be positive"));
-  _mode = mode;
-  if (oldMode != _mode)
-    NotifySubMeshesHypothesisModification();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-int StdMeshers_LengthFromEdges::GetMode()
-{
-  return _mode;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_LengthFromEdges::SaveTo(ostream & save)
-{
-  save << this->_mode;
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_LengthFromEdges::LoadFrom(istream & load)
-{
-  bool isOK = true;
-  int a;
-  isOK = (load >> a);
-  if (isOK) 
-    this->_mode = a;
-  else 
-    load.clear(ios::badbit | load.rdstate());
-  return load;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator << (ostream & save, StdMeshers_LengthFromEdges & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >> (istream & load, StdMeshers_LengthFromEdges & hyp)
-{
-  return hyp.LoadFrom( load );
-}
-
diff --git a/src/StdMeshers/StdMeshers_LengthFromEdges.hxx b/src/StdMeshers/StdMeshers_LengthFromEdges.hxx
deleted file mode 100644 (file)
index d514e7c..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_LengthFromEdges.hxx
-//           Moved here from SMESH_LengthFromEdges.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_LENGTHFROMEDGES_HXX_
-#define _SMESH_LENGTHFROMEDGES_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-class StdMeshers_LengthFromEdges:
-  public SMESH_Hypothesis
-{
-public:
-  StdMeshers_LengthFromEdges(int hypId, int studyId, SMESH_Gen* gen);
-  virtual ~StdMeshers_LengthFromEdges();
-
-  void SetMode(int mode)
-    throw (SALOME_Exception);
-
-  int GetMode();
-
-  virtual ostream & SaveTo(ostream & save);
-  virtual istream & LoadFrom(istream & load);
-  friend ostream & operator << (ostream & save, StdMeshers_LengthFromEdges & hyp);
-  friend istream & operator >> (istream & load, StdMeshers_LengthFromEdges & hyp);
-
-protected:
-  int _mode;
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_LocalLength.cxx b/src/StdMeshers/StdMeshers_LocalLength.cxx
deleted file mode 100644 (file)
index 457d8d8..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_LocalLength.cxx
-//           Moved here from SMESH_LocalLength.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_LocalLength.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_LocalLength::StdMeshers_LocalLength(int hypId, int studyId,
-       SMESH_Gen * gen):SMESH_Hypothesis(hypId, studyId, gen)
-{
-       _length = 1.;
-       _name = "LocalLength";
-//   SCRUTE(_name);
-//   SCRUTE(&_name);
-        _param_algo_dim = 1; // is used by SMESH_Regular_1D
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_LocalLength::~StdMeshers_LocalLength()
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_LocalLength::SetLength(double length) throw(SALOME_Exception)
-{
-       double oldLength = _length;
-       if (length <= 0)
-               throw SALOME_Exception(LOCALIZED("length must be positive"));
-       _length = length;
-       if (oldLength != _length)
-               NotifySubMeshesHypothesisModification();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-double StdMeshers_LocalLength::GetLength() const
-{
-       return _length;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_LocalLength::SaveTo(ostream & save)
-{
-  save << this->_length;
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_LocalLength::LoadFrom(istream & load)
-{
-  bool isOK = true;
-  double a;
-  isOK = (load >> a);
-  if (isOK)
-    this->_length = a;
-  else
-    load.clear(ios::badbit | load.rdstate());
-  return load;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator <<(ostream & save, StdMeshers_LocalLength & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >>(istream & load, StdMeshers_LocalLength & hyp)
-{
-  return hyp.LoadFrom( load );
-}
diff --git a/src/StdMeshers/StdMeshers_LocalLength.hxx b/src/StdMeshers/StdMeshers_LocalLength.hxx
deleted file mode 100644 (file)
index aba58e5..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_LocalLength.hxx
-//           Moved here from SMESH_LocalLength.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_LOCALLENGTH_HXX_
-#define _SMESH_LOCALLENGTH_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-class StdMeshers_LocalLength:public SMESH_Hypothesis
-{
-  public:
-       StdMeshers_LocalLength(int hypId, int studyId, SMESH_Gen * gen);
-         virtual ~ StdMeshers_LocalLength();
-
-       void SetLength(double length) throw(SALOME_Exception);
-
-       double GetLength() const;
-
-       virtual ostream & SaveTo(ostream & save);
-       virtual istream & LoadFrom(istream & load);
-       friend ostream & operator <<(ostream & save, StdMeshers_LocalLength & hyp);
-       friend istream & operator >>(istream & load, StdMeshers_LocalLength & hyp);
-
-  protected:
-       double _length;
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx b/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx
deleted file mode 100644 (file)
index ed166fc..0000000
+++ /dev/null
@@ -1,872 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MEFISTO_2D.cxx
-//           Moved here from SMESH_MEFISTO_2D.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_MEFISTO_2D.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_subMesh.hxx"
-
-#include "StdMeshers_MaxElementArea.hxx"
-#include "StdMeshers_LengthFromEdges.hxx"
-
-#include "Rn.h"
-#include "aptrte.h"
-
-#include "SMDS_MeshElement.hxx"
-#include "SMDS_MeshNode.hxx"
-#include "SMDS_EdgePosition.hxx"
-#include "SMDS_FacePosition.hxx"
-
-#include "utilities.h"
-
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Shape.hxx>
-#include <Geom_Surface.hxx>
-#include <GeomAdaptor_Curve.hxx>
-#include <Geom2d_Curve.hxx>
-#include <gp_Pnt2d.hxx>
-#include <BRep_Tool.hxx>
-#include <BRepTools.hxx>
-#include <BRepTools_WireExplorer.hxx>
-#include <GCPnts_AbscissaPoint.hxx>
-#include <GCPnts_UniformAbscissa.hxx>
-#include <TColStd_ListIteratorOfListOfInteger.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-
-#include <string>
-//#include <algorithm>
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_MEFISTO_2D::StdMeshers_MEFISTO_2D(int hypId, int studyId,
-       SMESH_Gen * gen):SMESH_2D_Algo(hypId, studyId, gen)
-{
-       MESSAGE("StdMeshers_MEFISTO_2D::StdMeshers_MEFISTO_2D");
-       _name = "MEFISTO_2D";
-//   _shapeType = TopAbs_FACE;
-       _shapeType = (1 << TopAbs_FACE);
-       _compatibleHypothesis.push_back("MaxElementArea");
-       _compatibleHypothesis.push_back("LengthFromEdges");
-
-       _edgeLength = 0;
-       _maxElementArea = 0;
-       _hypMaxElementArea = NULL;
-       _hypLengthFromEdges = NULL;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_MEFISTO_2D::~StdMeshers_MEFISTO_2D()
-{
-       MESSAGE("StdMeshers_MEFISTO_2D::~StdMeshers_MEFISTO_2D");
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool StdMeshers_MEFISTO_2D::CheckHypothesis
-                         (SMESH_Mesh& aMesh,
-                          const TopoDS_Shape& aShape,
-                          SMESH_Hypothesis::Hypothesis_Status& aStatus)
-{
-       //MESSAGE("StdMeshers_MEFISTO_2D::CheckHypothesis");
-
-       _hypMaxElementArea = NULL;
-       _hypLengthFromEdges = NULL;
-
-       list <const SMESHDS_Hypothesis * >::const_iterator itl;
-       const SMESHDS_Hypothesis *theHyp;
-
-       const list <const SMESHDS_Hypothesis * >&hyps = GetUsedHypothesis(aMesh, aShape);
-       int nbHyp = hyps.size();
-        if (!nbHyp)
-        {
-          aStatus = SMESH_Hypothesis::HYP_MISSING;
-          return false;  // can't work with no hypothesis
-        }
-
-       itl = hyps.begin();
-       theHyp = (*itl); // use only the first hypothesis
-
-       string hypName = theHyp->GetName();
-       //int hypId = theHyp->GetID();
-       //SCRUTE(hypName);
-
-       bool isOk = false;
-
-       if (hypName == "MaxElementArea")
-       {
-               _hypMaxElementArea = static_cast<const StdMeshers_MaxElementArea *>(theHyp);
-               ASSERT(_hypMaxElementArea);
-               _maxElementArea = _hypMaxElementArea->GetMaxArea();
-               _edgeLength = 0;
-               isOk = true;
-                aStatus = SMESH_Hypothesis::HYP_OK;
-       }
-
-       else if (hypName == "LengthFromEdges")
-       {
-               _hypLengthFromEdges = static_cast<const StdMeshers_LengthFromEdges *>(theHyp);
-               ASSERT(_hypLengthFromEdges);
-               _edgeLength = 0;
-               _maxElementArea = 0;
-               isOk = true;
-                aStatus = SMESH_Hypothesis::HYP_OK;
-       }
-        else
-          aStatus = SMESH_Hypothesis::HYP_INCOMPATIBLE;
-
-       if (isOk)
-       {
-               isOk = false;
-               if (_maxElementArea > 0)
-               {
-//                     _edgeLength = 2 * sqrt(_maxElementArea);        // triangles : minorant
-                       _edgeLength = 2 * sqrt(_maxElementArea/sqrt(3.0));
-                       isOk = true;
-               }
-               else
-                       isOk = (_hypLengthFromEdges != NULL);   // **** check mode
-                if (!isOk)
-                  aStatus = SMESH_Hypothesis::HYP_BAD_PARAMETER;
-       }
-
-       //SCRUTE(_edgeLength);
-       //SCRUTE(_maxElementArea);
-       return isOk;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool StdMeshers_MEFISTO_2D::Compute(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape)
-{
-       MESSAGE("StdMeshers_MEFISTO_2D::Compute");
-
-       if (_hypLengthFromEdges)
-               _edgeLength = ComputeEdgeElementLength(aMesh, aShape);
-
-       bool isOk = false;
-       //const SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
-       //SMESH_subMesh *theSubMesh = aMesh.GetSubMesh(aShape);
-
-       const TopoDS_Face & FF = TopoDS::Face(aShape);
-       bool faceIsForward = (FF.Orientation() == TopAbs_FORWARD);
-       TopoDS_Face F = TopoDS::Face(FF.Oriented(TopAbs_FORWARD));
-
-       Z nblf;                                         //nombre de lignes fermees (enveloppe en tete)
-       Z *nudslf = NULL;                       //numero du dernier sommet de chaque ligne fermee
-       R2 *uvslf = NULL;
-       Z nbpti = 0;                            //nombre points internes futurs sommets de la triangulation
-       R2 *uvpti = NULL;
-
-       Z nbst;
-       R2 *uvst = NULL;
-       Z nbt;
-       Z *nust = NULL;
-       Z ierr = 0;
-
-       Z nutysu = 1;                           // 1: il existe un fonction areteideale_()
-       // Z  nutysu=0;              // 0: on utilise aretmx
-       R aretmx = _edgeLength;         // longueur max aretes future triangulation
-
-       nblf = NumberOfWires(F);
-
-       nudslf = new Z[1 + nblf];
-       nudslf[0] = 0;
-       int iw = 1;
-       int nbpnt = 0;
-
-       myOuterWire = BRepTools::OuterWire(F);
-       nbpnt += NumberOfPoints(aMesh, myOuterWire);
-        if ( nbpnt < 3 ) // ex: a circle with 2 segments
-          return false;
-       nudslf[iw++] = nbpnt;
-
-       for (TopExp_Explorer exp(F, TopAbs_WIRE); exp.More(); exp.Next())
-       {
-               const TopoDS_Wire & W = TopoDS::Wire(exp.Current());
-               if (!myOuterWire.IsSame(W))
-               {
-                       nbpnt += NumberOfPoints(aMesh, W);
-                       nudslf[iw++] = nbpnt;
-               }
-       }
-
-        // avoid passing same uv points for a vertex common to 2 wires
-        TopTools_IndexedDataMapOfShapeListOfShape VWMap;
-        if ( iw - 1 > 1 ) // nbofWires > 1
-          TopExp::MapShapesAndAncestors( F , TopAbs_VERTEX, TopAbs_WIRE, VWMap );
-
-       uvslf = new R2[nudslf[nblf]];
-       int m = 0;
-
-        double scalex, scaley;
-        ComputeScaleOnFace(aMesh, F, scalex, scaley);
-
-        map<int, const SMDS_MeshNode*> mefistoToDS;    // correspondence mefisto index--> points IDNodes
-       if ( !LoadPoints(aMesh, F, myOuterWire, uvslf, m,
-                         mefistoToDS, scalex, scaley, VWMap))
-          return false;
-
-       for (TopExp_Explorer exp(F, TopAbs_WIRE); exp.More(); exp.Next())
-       {
-               const TopoDS_Wire & W = TopoDS::Wire(exp.Current());
-               if (!myOuterWire.IsSame(W))
-               {
-                       if (! LoadPoints(aMesh, F, W, uvslf, m,
-                                         mefistoToDS, scalex, scaley, VWMap ))
-                          return false;
-               }
-       }
-
-       uvst = NULL;
-       nust = NULL;
-       aptrte(nutysu, aretmx,
-               nblf, nudslf, uvslf, nbpti, uvpti, nbst, uvst, nbt, nust, ierr);
-
-       if (ierr == 0)
-         {
-           MESSAGE("... End Triangulation Generated Triangle Number " << nbt);
-           MESSAGE("                                    Node Number " << nbst);
-           StoreResult(aMesh, nbst, uvst, nbt, nust, F,
-                       faceIsForward, mefistoToDS, scalex, scaley);
-           isOk = true;
-         }
-       else
-       {
-               MESSAGE("Error in Triangulation");
-               isOk = false;
-       }
-       if (nudslf != NULL)
-               delete[]nudslf;
-       if (uvslf != NULL)
-               delete[]uvslf;
-       if (uvst != NULL)
-               delete[]uvst;
-       if (nust != NULL)
-               delete[]nust;
-       return isOk;
-}
-
-//=======================================================================
-//function : fixOverlappedLinkUV
-//purpose  : prevent failure due to overlapped adjacent links
-//=======================================================================
-
-static bool fixOverlappedLinkUV( R2& uv0, const R2& uv1, const R2& uv2 )
-{
-  gp_XY v1( uv0.x - uv1.x, uv0.y - uv1.y );
-  gp_XY v2( uv2.x - uv1.x, uv2.y - uv1.y );
-
-  double tol2 = DBL_MIN * DBL_MIN;
-  double sqMod1 = v1.SquareModulus();
-  if ( sqMod1 <= tol2 ) return false;
-  double sqMod2 = v2.SquareModulus();
-  if ( sqMod2 <= tol2 ) return false;
-
-  double dot = v1*v2;
-
-  // check sinus >= 1.e-3
-  const double minSin = 1.e-3;
-  if ( dot > 0 && 1 - dot * dot / ( sqMod1 * sqMod2 ) < minSin * minSin ) {
-    MESSAGE(" ___ FIX UV ____" << uv0.x << " " << uv0.y);
-    v1.SetCoord( -v1.Y(), v1.X() );
-    double delta = sqrt( sqMod1 ) * minSin;
-    if ( v1.X() < 0 )
-      uv0.x -= delta;
-    else
-      uv0.x += delta;
-    if ( v1.Y() < 0 )
-      uv0.y -= delta;
-    else
-      uv0.y += delta;
-//    MESSAGE(" -> " << uv0.x << " " << uv0.y << " ");
-//     MESSAGE("v1( " << v1.X() << " " << v1.Y() << " ) " <<
-//       "v2( " << v2.X() << " " << v2.Y() << " ) ");
-//    MESSAGE("SIN: " << sqrt(1 - dot * dot / (sqMod1 * sqMod2)));
-//     v1.SetCoord( uv0.x - uv1.x, uv0.y - uv1.y );
-//     v2.SetCoord( uv2.x - uv1.x, uv2.y - uv1.y );
-//     gp_XY v3( uv2.x - uv0.x, uv2.y - uv0.y );
-//     sqMod1 = v1.SquareModulus();
-//     sqMod2 = v2.SquareModulus();
-//     dot = v1*v2;
-//     double sin = sqrt(1 - dot * dot / (sqMod1 * sqMod2));
-//     MESSAGE("NEW SIN: " << sin);
-    return true;
-  }
-  return false;
-}
-
-//=======================================================================
-//function : fixCommonVertexUV
-//purpose  : 
-//=======================================================================
-
-static bool fixCommonVertexUV (gp_Pnt2d &           theUV,
-                               const TopoDS_Vertex& theV,
-                               const TopoDS_Wire&   theW,
-                               const TopoDS_Wire&   theOW,
-                               const TopoDS_Face&   theF,
-                               const TopTools_IndexedDataMapOfShapeListOfShape & theVWMap,
-                               SMESH_Mesh &         theMesh)
-{
-  if( theW.IsSame( theOW ) ||
-      !theVWMap.Contains( theV )) return false;
-
-  // check if there is another wire sharing theV
-  const TopTools_ListOfShape& WList = theVWMap.FindFromKey( theV );
-  TopTools_ListIteratorOfListOfShape aWIt;
-  for ( aWIt.Initialize( WList ); aWIt.More(); aWIt.Next() )
-    if ( !theW.IsSame( aWIt.Value() ))
-      break;
-  if ( !aWIt.More() ) return false;
-
-  TopTools_ListOfShape EList;
-  list< double >       UList;
-
-  // find edges of theW sharing theV
-  // and find 2d normal to them at theV
-  gp_Vec2d N(0.,0.);
-  TopoDS_Iterator itE( theW );
-  for (  ; itE.More(); itE.Next() )
-  {
-    const TopoDS_Edge& E = TopoDS::Edge( itE.Value() );
-    TopoDS_Iterator itV( E );
-    for ( ; itV.More(); itV.Next() )
-    {
-      const TopoDS_Vertex & V = TopoDS::Vertex( itV.Value() );
-      if ( !V.IsSame( theV ))
-        continue;
-      EList.Append( E );
-      Standard_Real u = BRep_Tool::Parameter( V, E );
-      UList.push_back( u );
-      double f, l;
-      Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, theF, f, l);
-      gp_Vec2d d1;
-      gp_Pnt2d p;
-      C2d->D1( u, p, d1 );
-      gp_Vec2d n( d1.Y(), -d1.X() );
-      if ( E.Orientation() == TopAbs_REVERSED )
-        n.Reverse();
-      N += n.Normalized();
-    }
-  }
-
-  // define step size by which to move theUV
-
-  gp_Pnt2d nextUV; // uv of next node on edge, most distant of the four
-  double maxDist = -DBL_MAX;
-  TopTools_ListIteratorOfListOfShape aEIt (EList);
-  list< double >::iterator aUIt = UList.begin();
-  for ( ; aEIt.More(); aEIt.Next(), aUIt++ )
-  {
-    const TopoDS_Edge& E = TopoDS::Edge( aEIt.Value() );
-    double f, l;
-    Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, theF, f, l);
-
-    double umin = DBL_MAX, umax = -DBL_MAX;
-    SMDS_NodeIteratorPtr nIt = theMesh.GetSubMesh(E)->GetSubMeshDS()->GetNodes();
-    if ( !nIt->more() ) // no nodes on edge, only on vertices
-    {
-      umin = l;
-      umax = f;
-    }
-    else
-    {
-      while ( nIt->more() ) {
-        const SMDS_MeshNode* node = nIt->next();
-        const SMDS_EdgePosition* epos =
-          static_cast<const SMDS_EdgePosition*>(node->GetPosition().get());
-        double u = epos->GetUParameter();
-        if ( u < umin )
-          umin = u;
-        if ( u > umax )
-          umax = u;
-      }
-    }
-    bool isFirstCommon = ( *aUIt == f );
-    gp_Pnt2d uv = C2d->Value( isFirstCommon ? umin : umax );
-    double dist = theUV.SquareDistance( uv );
-    if ( dist > maxDist ) {
-      maxDist = dist;
-      nextUV  = uv;
-    }
-  }
-  R2 uv0, uv1, uv2;
-  uv0.x = theUV.X();    uv0.y = theUV.Y(); 
-  uv1.x = nextUV.X();   uv1.y = nextUV.Y(); 
-  uv2.x = uv0.x;        uv2.y = uv0.y;
-  if ( fixOverlappedLinkUV( uv0, uv1, uv2 ))
-  {
-    double step = theUV.Distance( gp_Pnt2d( uv0.x, uv0.y ));
-
-    // move theUV along the normal by the step
-
-    N *= step;
-
-    MESSAGE("--fixCommonVertexUV move(" << theUV.X() << " " << theUV.Y()
-            << ") by (" << N.X() << " " << N.Y() << ")" 
-            << endl << "--- MAX DIST " << maxDist);
-
-    theUV.SetXY( theUV.XY() + N.XY() );
-
-    return true;
-  }
-  return false;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-bool StdMeshers_MEFISTO_2D::LoadPoints(SMESH_Mesh &        aMesh,
-                                       const TopoDS_Face & FF,
-                                       const TopoDS_Wire & WW,
-                                       R2 *                uvslf,
-                                       int &               m,
-                                       map<int, const SMDS_MeshNode*>&mefistoToDS,
-                                       double              scalex,
-                                       double              scaley,
-                                       const TopTools_IndexedDataMapOfShapeListOfShape& VWMap)
-{
-//  MESSAGE("StdMeshers_MEFISTO_2D::LoadPoints");
-
-  //SMDS_Mesh * meshDS = aMesh.GetMeshDS();
-
-  TopoDS_Face F = TopoDS::Face(FF.Oriented(TopAbs_FORWARD));
-
-  int mInit = m, mFirst, iEdge;
-  gp_XY scale( scalex, scaley );
-
-  TopoDS_Wire W = TopoDS::Wire(WW.Oriented(TopAbs_FORWARD));
-  BRepTools_WireExplorer wexp(W, F);
-  for (wexp.Init(W, F), iEdge = 0; wexp.More(); wexp.Next(), iEdge++)
-  {
-    const TopoDS_Edge & E = wexp.Current();
-
-    // --- IDNodes of first and last Vertex
-
-    TopoDS_Vertex VFirst, VLast;
-    TopExp::Vertices(E, VFirst, VLast); // corresponds to f and l
-
-    ASSERT(!VFirst.IsNull());
-    SMDS_NodeIteratorPtr lid=
-      aMesh.GetSubMesh(VFirst)->GetSubMeshDS()->GetNodes();
-    if ( !lid->more() ) {
-      MESSAGE (" NO NODE BUILT ON VERTEX ");
-      return false;
-    }
-    const SMDS_MeshNode* idFirst = lid->next();
-
-    ASSERT(!VLast.IsNull());
-    lid=aMesh.GetSubMesh(VLast)->GetSubMeshDS()->GetNodes();
-    if ( !lid->more() ) {
-      MESSAGE (" NO NODE BUILT ON VERTEX ");
-      return false;
-    }
-    const SMDS_MeshNode* idLast = lid->next();
-
-    // --- edge internal IDNodes (relies on good order storage, not checked)
-
-    int nbPoints = aMesh.GetSubMesh(E)->GetSubMeshDS()->NbNodes();
-
-    double f, l;
-    Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, F, f, l);
-
-    SMDS_NodeIteratorPtr ite= aMesh.GetSubMesh(E)->GetSubMeshDS()->GetNodes();
-
-    //bool isForward = (E.Orientation() == TopAbs_FORWARD);
-    map<double, const SMDS_MeshNode*> params;
-
-    while(ite->more())
-    {
-      const SMDS_MeshNode * node = ite->next();
-      const SMDS_EdgePosition* epos =
-        static_cast<const SMDS_EdgePosition*>(node->GetPosition().get());
-      double param = epos->GetUParameter();
-      params[param] = node;
-    }
-    if ( nbPoints != params.size())
-    {
-      MESSAGE( "BAD NODE ON EDGE POSITIONS" );
-      return false;
-    }
-
-    mFirst = m;
-
-    // --- load 2D values into MEFISTO structure,
-    //     add IDNodes in mefistoToDS map
-    if (E.Orientation() == TopAbs_FORWARD)
-    {
-      gp_Pnt2d p = C2d->Value(f).XY().Multiplied( scale );       // first point = Vertex Forward
-      if ( fixCommonVertexUV( p, VFirst, W, myOuterWire, F, VWMap, aMesh ))
-        myNodesOnCommonV.push_back( idFirst );
-      uvslf[m].x = p.X();
-      uvslf[m].y = p.Y();
-      mefistoToDS[m + 1] = idFirst;
-      //MESSAGE(" "<<m<<" "<<mefistoToDS[m+1]);
-      //MESSAGE("__ f "<<f<<" "<<uvslf[m].x <<" "<<uvslf[m].y);
-      m++;
-      map<double, const SMDS_MeshNode*>::iterator itp = params.begin();
-      for (int i = 1; i <= nbPoints; i++)       // nbPoints internal
-      {
-        double param = (*itp).first;
-        gp_Pnt2d p = C2d->Value(param).XY().Multiplied( scale );
-        uvslf[m].x = p.X();
-        uvslf[m].y = p.Y();
-        mefistoToDS[m + 1] = (*itp).second;
-        //MESSAGE(" "<<m<<" "<<mefistoToDS[m+1]);
-        //MESSAGE("__ "<<i<<" "<<param<<" "<<uvslf[m].x <<" "<<uvslf[m].y);
-        m++;
-        itp++;
-      }
-    }
-    else
-    {
-      gp_Pnt2d p = C2d->Value(l).XY().Multiplied( scale );       // last point = Vertex Reversed
-      if ( fixCommonVertexUV( p, VLast, W, myOuterWire, F, VWMap, aMesh ))
-        myNodesOnCommonV.push_back( idLast );
-      uvslf[m].x = p.X();
-      uvslf[m].y = p.Y();
-      mefistoToDS[m + 1] = idLast;
-      //MESSAGE(" "<<m<<" "<<mefistoToDS[m+1]);
-      //MESSAGE("__ l "<<l<<" "<<uvslf[m].x <<" "<<uvslf[m].y);
-      m++;
-      map<double, const SMDS_MeshNode*>::reverse_iterator itp = params.rbegin();
-      for (int i = nbPoints; i >= 1; i--)
-      {
-        double param = (*itp).first;
-        gp_Pnt2d p = C2d->Value(param).XY().Multiplied( scale );
-        uvslf[m].x = p.X();
-        uvslf[m].y = p.Y();
-        mefistoToDS[m + 1] = (*itp).second;
-        //MESSAGE(" "<<m<<" "<<mefistoToDS[m+1]);
-        //MESSAGE("__ "<<i<<" "<<param<<" "<<uvslf[m].x <<" "<<uvslf[m].y);
-        m++;
-        itp++;
-      }
-    }
-    // prevent failure on overlapped adjacent links
-    if ( iEdge > 0 )
-      fixOverlappedLinkUV (uvslf[ mFirst - 1],
-                           uvslf[ mFirst ],
-                           uvslf[ mFirst + 1 ]);
-    
-  } // for  wexp
-
-  fixOverlappedLinkUV (uvslf[ m - 1],
-                       uvslf[ mInit ],
-                       uvslf[ mInit + 1 ]);
-
-  return true;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_MEFISTO_2D::ComputeScaleOnFace(SMESH_Mesh & aMesh,
-       const TopoDS_Face & aFace, double &scalex, double &scaley)
-{
-  //MESSAGE("StdMeshers_MEFISTO_2D::ComputeScaleOnFace");
-  TopoDS_Face F = TopoDS::Face(aFace.Oriented(TopAbs_FORWARD));
-  TopoDS_Wire W = BRepTools::OuterWire(F);
-
-  double xmin = 1.e300;         // min & max of face 2D parametric coord.
-  double xmax = -1.e300;
-  double ymin = 1.e300;
-  double ymax = -1.e300;
-  int nbp = 23;
-  scalex = 1;
-  scaley = 1;
-
-  TopExp_Explorer wexp(W, TopAbs_EDGE);
-  for ( ; wexp.More(); wexp.Next())
-  {
-    const TopoDS_Edge & E = TopoDS::Edge( wexp.Current() );
-    double f, l;
-    Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, F, f, l);
-    if ( C2d.IsNull() ) continue;
-    double du = (l - f) / double (nbp);
-    for (int i = 0; i <= nbp; i++)
-    {
-      double param = f + double (i) * du;
-      gp_Pnt2d p = C2d->Value(param);
-      if (p.X() < xmin)
-        xmin = p.X();
-      if (p.X() > xmax)
-        xmax = p.X();
-      if (p.Y() < ymin)
-        ymin = p.Y();
-      if (p.Y() > ymax)
-        ymax = p.Y();
-      //    MESSAGE(" "<< f<<" "<<l<<" "<<param<<" "<<xmin<<" "<<xmax<<" "<<ymin<<" "<<ymax);
-    }
-  }
-  //   SCRUTE(xmin);
-  //   SCRUTE(xmax);
-  //   SCRUTE(ymin);
-  //   SCRUTE(ymax);
-  double xmoy = (xmax + xmin) / 2.;
-  double ymoy = (ymax + ymin) / 2.;
-  double xsize = xmax - xmin;
-  double ysize = ymax - ymin;
-
-  Handle(Geom_Surface) S = BRep_Tool::Surface(F);       // 3D surface
-
-  double length_x = 0;
-  double length_y = 0;
-  gp_Pnt PX0 = S->Value(xmin, ymoy);
-  gp_Pnt PY0 = S->Value(xmoy, ymin);
-  double dx = xsize / double (nbp);
-  double dy = ysize / double (nbp);
-  for (int i = 1; i <= nbp; i++)
-  {
-    double x = xmin + double (i) * dx;
-    gp_Pnt PX = S->Value(x, ymoy);
-    double y = ymin + double (i) * dy;
-    gp_Pnt PY = S->Value(xmoy, y);
-    length_x += PX.Distance(PX0);
-    length_y += PY.Distance(PY0);
-    PX0 = PX;
-    PY0 = PY;
-  }
-  scalex = length_x / xsize;
-  scaley = length_y / ysize;
-//   SCRUTE(xsize);
-//   SCRUTE(ysize);
-  double xyratio = xsize*scalex/(ysize*scaley);
-  const double maxratio = 1.e2;
-  //SCRUTE(xyratio);
-  if (xyratio > maxratio) {
-    SCRUTE( scaley );
-    scaley *= xyratio / maxratio;
-    SCRUTE( scaley );
-  }
-  else if (xyratio < 1./maxratio) {
-    SCRUTE( scalex );
-    scalex *= 1 / xyratio / maxratio;
-    SCRUTE( scalex );
-  }
-  ASSERT(scalex);
-  ASSERT(scaley);
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_MEFISTO_2D::StoreResult(SMESH_Mesh & aMesh,
-                                        Z nbst, R2 * uvst, Z nbt, Z * nust,
-                                        const TopoDS_Face & F, bool faceIsForward,
-                                        map<int, const SMDS_MeshNode*>&mefistoToDS,
-                                        double scalex, double scaley)
-{
-  SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
-  int faceID = meshDS->ShapeToIndex( F );
-
-  Z n, m;
-  Handle(Geom_Surface) S = BRep_Tool::Surface(F);
-
-  for (n = 0; n < nbst; n++)
-  {
-    if (mefistoToDS.find(n + 1) == mefistoToDS.end())
-    {
-      double u = uvst[n][0] / scalex;
-      double v = uvst[n][1] / scaley;
-      gp_Pnt P = S->Value(u, v);
-
-      SMDS_MeshNode * node = meshDS->AddNode(P.X(), P.Y(), P.Z());
-      meshDS->SetNodeOnFace(node, faceID, u, v);
-
-      //MESSAGE(P.X()<<" "<<P.Y()<<" "<<P.Z());
-      mefistoToDS[n + 1] = node;
-      //MESSAGE("NEW: "<<n<<" "<<mefistoToDS[n+1]);
-    }
-  }
-
-  m = 0;
-  //int mt = 0;
-
-  //SCRUTE(faceIsForward);
-  for (n = 1; n <= nbt; n++)
-  {
-    int inode1 = nust[m++];
-    int inode2 = nust[m++];
-    int inode3 = nust[m++];
-
-    const SMDS_MeshNode *n1, *n2, *n3;
-    n1 = mefistoToDS[inode1];
-    n2 = mefistoToDS[inode2];
-    n3 = mefistoToDS[inode3];
-    //MESSAGE("-- "<<inode1<<" "<<inode2<<" "<<inode3);
-
-    // triangle points must be in trigonometric order if face is Forward
-    // else they must be put clockwise
-
-    bool triangleIsWellOriented = faceIsForward;
-
-    SMDS_MeshElement * elt;
-    if (triangleIsWellOriented)
-      elt = meshDS->AddFace(n1, n2, n3);
-    else
-      elt = meshDS->AddFace(n1, n3, n2);
-
-    meshDS->SetMeshElementOnShape(elt, faceID);
-    m++;
-  }
-
-  // remove bad elements build on vertices shared by wires
-
-  list<const SMDS_MeshNode*>::iterator itN = myNodesOnCommonV.begin();
-  for ( ; itN != myNodesOnCommonV.end(); itN++ )
-  {
-    const SMDS_MeshNode* node = *itN;
-    SMDS_ElemIteratorPtr invElemIt = node->GetInverseElementIterator();
-    while ( invElemIt->more() )
-    {
-      const SMDS_MeshElement* elem = invElemIt->next();
-      SMDS_ElemIteratorPtr itN = elem->nodesIterator();
-      int nbSame = 0;
-      while ( itN->more() )
-        if ( itN->next() == node)
-          nbSame++;
-      if (nbSame > 1) {
-        MESSAGE( "RM bad element " << elem->GetID());
-        meshDS->RemoveElement( elem );
-      }
-    }
-  }
-
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-double StdMeshers_MEFISTO_2D::ComputeEdgeElementLength(SMESH_Mesh & aMesh,
-       const TopoDS_Shape & aShape)
-{
-       //MESSAGE("StdMeshers_MEFISTO_2D::ComputeEdgeElementLength");
-       // **** a mettre dans SMESH_2D_Algo ?
-
-       const TopoDS_Face & FF = TopoDS::Face(aShape);
-       //bool faceIsForward = (FF.Orientation() == TopAbs_FORWARD);
-       TopoDS_Face F = TopoDS::Face(FF.Oriented(TopAbs_FORWARD));
-
-       double meanElementLength = 100;
-       double wireLength = 0;
-       int wireElementsNumber = 0;
-       for (TopExp_Explorer exp(F, TopAbs_WIRE); exp.More(); exp.Next())
-       {
-               const TopoDS_Wire & W = TopoDS::Wire(exp.Current());
-               for (TopExp_Explorer expe(W, TopAbs_EDGE); expe.More(); expe.Next())
-               {
-                       const TopoDS_Edge & E = TopoDS::Edge(expe.Current());
-                       int nb = aMesh.GetSubMesh(E)->GetSubMeshDS()->NbNodes();
-                       double length = EdgeLength(E);
-                       wireLength += length;
-                       wireElementsNumber += nb;
-               }
-       }
-       if (wireElementsNumber)
-               meanElementLength = wireLength / wireElementsNumber;
-       //SCRUTE(meanElementLength);
-       return meanElementLength;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_MEFISTO_2D::SaveTo(ostream & save)
-{
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_MEFISTO_2D::LoadFrom(istream & load)
-{
-  return load;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator <<(ostream & save, StdMeshers_MEFISTO_2D & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >>(istream & load, StdMeshers_MEFISTO_2D & hyp)
-{
-  return hyp.LoadFrom( load );
-}
diff --git a/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx b/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx
deleted file mode 100644 (file)
index fac85f0..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MEFISTO_2D.hxx
-//           Moved here from SMESH_MEFISTO_2D.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _StdMeshers_MEFISTO_2D_HXX_
-#define _StdMeshers_MEFISTO_2D_HXX_
-
-#include "SMESH_2D_Algo.hxx"
-#include <TopoDS_Wire.hxx>
-
-class SMDS_MeshNode;
-class TopTools_IndexedDataMapOfShapeListOfShape;
-class TopoDS_Face;
-class TopoDS_WIre;
-class StdMeshers_MaxElementArea;
-class StdMeshers_LengthFromEdges;
-class SMDS_MeshNode;
-
-#include <list>
-#include <map>
-#include "Rn.h"
-
-class StdMeshers_MEFISTO_2D:
-  public SMESH_2D_Algo
-{
-public:
-  StdMeshers_MEFISTO_2D(int hypId, int studyId, SMESH_Gen* gen);
-  virtual ~StdMeshers_MEFISTO_2D();
-
-  virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
-                               const TopoDS_Shape& aShape,
-                               SMESH_Hypothesis::Hypothesis_Status& aStatus);
-
-  virtual bool Compute(SMESH_Mesh& aMesh,
-                      const TopoDS_Shape& aShape);
-
-  double ComputeEdgeElementLength(SMESH_Mesh& aMesh,
-                                 const TopoDS_Shape& aShape);
-
-  bool LoadPoints(SMESH_Mesh& aMesh,
-                 const TopoDS_Face& F, 
-                 const TopoDS_Wire& W,
-                 R2* uvslf, 
-                 int& m,
-                 map<int,const SMDS_MeshNode*>& mefistoToDS,
-                  double scalex, double scaley,
-                  const TopTools_IndexedDataMapOfShapeListOfShape& VWMap);
-
-  void ComputeScaleOnFace(SMESH_Mesh& aMesh,
-                         const TopoDS_Face& aFace,
-                         double& scalex,
-                         double& scaley);
-
-  void StoreResult (SMESH_Mesh& aMesh,
-                   Z nbst, R2* uvst, Z nbt, Z* nust, 
-                   const TopoDS_Face& F, bool faceIsForward,
-                   map<int,const SMDS_MeshNode*>& mefistoToDS,
-                    double scalex, double scaley);
-                                         
-  ostream & SaveTo(ostream & save);
-  istream & LoadFrom(istream & load);
-  friend ostream & operator << (ostream & save, StdMeshers_MEFISTO_2D & hyp);
-  friend istream & operator >> (istream & load, StdMeshers_MEFISTO_2D & hyp);
-
-protected:
-  double                            _edgeLength;
-  double                            _maxElementArea;
-  const StdMeshers_MaxElementArea*  _hypMaxElementArea;
-  const StdMeshers_LengthFromEdges* _hypLengthFromEdges;
-
-  TopoDS_Wire myOuterWire;
-  std::list<const SMDS_MeshNode*> myNodesOnCommonV;
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_MaxElementArea.cxx b/src/StdMeshers/StdMeshers_MaxElementArea.cxx
deleted file mode 100644 (file)
index c4a2d5e..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MaxElementArea.cxx
-//           Moved here from SMESH_MaxElementArea.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_MaxElementArea.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_MaxElementArea::StdMeshers_MaxElementArea(int hypId, int studyId, SMESH_Gen* gen)
-  : SMESH_Hypothesis(hypId, studyId, gen)
-{
-  _maxArea =1.;
-  _name = "MaxElementArea";
-//   SCRUTE(_name);
-//   SCRUTE(&_name);
-  _param_algo_dim = 2; 
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_MaxElementArea::~StdMeshers_MaxElementArea()
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_MaxElementArea::SetMaxArea(double maxArea)
-  throw (SALOME_Exception)
-{
-  double oldArea = _maxArea;
-  if (maxArea <= 0) 
-    throw SALOME_Exception(LOCALIZED("maxArea must be positive"));
-  _maxArea = maxArea;
-  if (_maxArea != oldArea)
-    NotifySubMeshesHypothesisModification();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-double StdMeshers_MaxElementArea::GetMaxArea() const
-{
-  return _maxArea;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_MaxElementArea::SaveTo(ostream & save)
-{
-  save << this->_maxArea;
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_MaxElementArea::LoadFrom(istream & load)
-{
-  bool isOK = true;
-  double a;
-  isOK = (load >> a);
-  if (isOK) 
-    this->_maxArea = a;
-  else 
-    load.clear(ios::badbit | load.rdstate());
-  return load;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator << (ostream & save, StdMeshers_MaxElementArea & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >> (istream & load, StdMeshers_MaxElementArea & hyp)
-{
-  return hyp.LoadFrom( load );
-}
-
diff --git a/src/StdMeshers/StdMeshers_MaxElementArea.hxx b/src/StdMeshers/StdMeshers_MaxElementArea.hxx
deleted file mode 100644 (file)
index 52af887..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MaxElementArea.hxx
-//           Moved here from SMESH_MaxElementArea.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_MAXELEMENTAREA_HXX_
-#define _SMESH_MAXELEMENTAREA_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-class StdMeshers_MaxElementArea:public SMESH_Hypothesis
-{
-  public:
-       StdMeshers_MaxElementArea(int hypId, int studyId, SMESH_Gen * gen);
-         virtual ~ StdMeshers_MaxElementArea();
-
-       void SetMaxArea(double maxArea) throw(SALOME_Exception);
-
-       double GetMaxArea() const;
-
-       virtual ostream & SaveTo(ostream & save);
-       virtual istream & LoadFrom(istream & load);
-       friend ostream & operator <<(ostream & save, StdMeshers_MaxElementArea & hyp);
-       friend istream & operator >>(istream & load, StdMeshers_MaxElementArea & hyp);
-
-  protected:
-       double _maxArea;
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_MaxElementVolume.cxx b/src/StdMeshers/StdMeshers_MaxElementVolume.cxx
deleted file mode 100644 (file)
index f9f6b63..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MaxElementVolume.cxx
-//           Moved here from SMESH_MaxElementVolume.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-
-#include "StdMeshers_MaxElementVolume.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_MaxElementVolume::StdMeshers_MaxElementVolume(int hypId, int studyId, SMESH_Gen* gen)
-  : SMESH_Hypothesis(hypId, studyId, gen)
-{
-  _maxVolume =1.;
-  _name = "MaxElementVolume";
-//   SCRUTE(_name);
-  SCRUTE(&_name);
-  _param_algo_dim = 3;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_MaxElementVolume::~StdMeshers_MaxElementVolume()
-{
-  MESSAGE("StdMeshers_MaxElementVolume::~StdMeshers_MaxElementVolume");
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_MaxElementVolume::SetMaxVolume(double maxVolume)
-  throw (SALOME_Exception)
-{
-  double oldVolume = _maxVolume;
-  if (maxVolume <= 0) 
-    throw SALOME_Exception(LOCALIZED("maxVolume must be positive"));
-  _maxVolume = maxVolume;
-  if (_maxVolume != oldVolume)
-    NotifySubMeshesHypothesisModification();
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-double StdMeshers_MaxElementVolume::GetMaxVolume() const
-{
-  return _maxVolume;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_MaxElementVolume::SaveTo(ostream & save)
-{
-  save << this->_maxVolume;
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_MaxElementVolume::LoadFrom(istream & load)
-{
-  bool isOK = true;
-  double a;
-  isOK = (load >> a);
-  if (isOK)
-    this->_maxVolume = a;
-  else 
-    load.clear(ios::badbit | load.rdstate());
-  return load;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator << (ostream & save, StdMeshers_MaxElementVolume & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >> (istream & load, StdMeshers_MaxElementVolume & hyp)
-{
-  return hyp.LoadFrom( load );
-}
-
diff --git a/src/StdMeshers/StdMeshers_MaxElementVolume.hxx b/src/StdMeshers/StdMeshers_MaxElementVolume.hxx
deleted file mode 100644 (file)
index ee9986f..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MaxElementVolume.hxx
-//           Moved here from SMESH_MaxElementVolume.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_MAXELEMENTVOLUME_HXX_
-#define _SMESH_MAXELEMENTVOLUME_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-class StdMeshers_MaxElementVolume:
-  public SMESH_Hypothesis
-{
-public:
-  StdMeshers_MaxElementVolume(int hypId, int studyId, SMESH_Gen* gen);
-  virtual ~StdMeshers_MaxElementVolume();
-
-  void SetMaxVolume(double maxVolume)
-    throw (SALOME_Exception);
-
-  double GetMaxVolume() const;
-
-  virtual ostream & SaveTo(ostream & save);
-  virtual istream & LoadFrom(istream & load);
-  friend ostream & operator << (ostream & save, StdMeshers_MaxElementVolume & hyp);
-  friend istream & operator >> (istream & load, StdMeshers_MaxElementVolume & hyp);
-
-protected:
-  double _maxVolume;
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_NotConformAllowed.cxx b/src/StdMeshers/StdMeshers_NotConformAllowed.cxx
deleted file mode 100644 (file)
index 5c471b2..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//  SMESH StdMeshers : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_NotConformAllowed.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_NotConformAllowed.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_NotConformAllowed::StdMeshers_NotConformAllowed(int hypId, int studyId, SMESH_Gen* gen)
-  : SMESH_Hypothesis(hypId, studyId, gen)
-{
-  _name = "NotConformAllowed";
-  _param_algo_dim = -1; 
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_NotConformAllowed::~StdMeshers_NotConformAllowed()
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_NotConformAllowed::SaveTo(ostream & save)
-{
-  return save << this;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_NotConformAllowed::LoadFrom(istream & load)
-{
-  return load >> (*this);
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator << (ostream & save, StdMeshers_NotConformAllowed & hyp)
-{
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >> (istream & load, StdMeshers_NotConformAllowed & hyp)
-{
-  return load;
-}
diff --git a/src/StdMeshers/StdMeshers_NotConformAllowed.hxx b/src/StdMeshers/StdMeshers_NotConformAllowed.hxx
deleted file mode 100644 (file)
index 0797424..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//  SMESH StdMeshers : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_NotConformAllowed.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _StdMeshers_NotConformAllowed_HXX_
-#define _StdMeshers_NotConformAllowed_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-class StdMeshers_NotConformAllowed:
-  public SMESH_Hypothesis
-{
-public:
-  StdMeshers_NotConformAllowed(int hypId, int studyId, SMESH_Gen* gen);
-  virtual ~StdMeshers_NotConformAllowed();
-
-  virtual ostream & SaveTo(ostream & save);
-  virtual istream & LoadFrom(istream & load);
-  friend ostream & operator << (ostream & save, StdMeshers_NotConformAllowed & hyp);
-  friend istream & operator >> (istream & load, StdMeshers_NotConformAllowed & hyp);
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_Penta_3D.cxx b/src/StdMeshers/StdMeshers_Penta_3D.cxx
deleted file mode 100644 (file)
index ad6ebc8..0000000
+++ /dev/null
@@ -1,1582 +0,0 @@
-//  SMESH StdMeshers_Penta_3D implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Penta_3D.cxx
-//  Module : SMESH
-
-#include "StdMeshers_Penta_3D.hxx"
-
-#include "utilities.h"
-#include "Utils_ExceptHandlers.hxx"
-
-#include "SMDS_EdgePosition.hxx"
-#include "SMDS_MeshElement.hxx"
-#include "SMDS_VolumeOfNodes.hxx"
-#include "SMDS_VolumeTool.hxx"
-#include "SMESHDS_SubMesh.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_subMesh.hxx"
-#include "SMESH_MeshEditor.hxx"
-
-#include <BRep_Tool.hxx>
-#include <TopAbs_ShapeEnum.hxx>
-#include <TopExp.hxx>
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
-#include <TopTools_IndexedMapOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Shell.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <gp_Pnt.hxx>
-
-#include <stdio.h>
-#include <algorithm>
-
-using namespace std;
-
-typedef map < int, int, less<int> >::iterator   \
-  StdMeshers_IteratorOfDataMapOfIntegerInteger;
-
-//=======================================================================
-//function : StdMeshers_Penta_3D
-//purpose  : 
-//=======================================================================
-StdMeshers_Penta_3D::StdMeshers_Penta_3D()
-: myErrorStatus(1)
-{
-  myTol3D=0.1;
-  myWallNodesMaps.resize( SMESH_Block::NbFaces() );
-  myShapeXYZ.resize( SMESH_Block::NbSubShapes() );
-}
-//=======================================================================
-//function : Compute
-//purpose  : 
-//=======================================================================
-bool StdMeshers_Penta_3D::Compute(SMESH_Mesh& aMesh, 
-                                 const TopoDS_Shape& aShape)
-{
-  MESSAGE("StdMeshers_Penta_3D::Compute()");
-  //
-  myErrorStatus=0;
-  //
-  bool bOK=false;
-  //
-  myShape=aShape;
-  SetMesh(aMesh);
-  //
-  CheckData();
-  if (myErrorStatus){
-    return bOK;
-  }
-  //
-  MakeBlock();
-    if (myErrorStatus){
-    return bOK;
-  }
-  //
-  MakeNodes();
-  if (myErrorStatus){
-    return bOK;
-  }
-  //
-  MakeConnectingMap();
-  //
-  ClearMeshOnFxy1();
-  if (myErrorStatus) {
-    return bOK;
-  }
-  //
-  MakeMeshOnFxy1();
-  if (myErrorStatus) {
-    return bOK;
-  }
-  //
-  MakeVolumeMesh();
-  //
-  return !bOK;
-}
-//=======================================================================
-//function : MakeNodes
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::MakeNodes()
-{
-  myErrorStatus=0;
-  //
-  const int aNbSIDs=9;
-  int i, j, k, ij, iNbN, aNodeID, aSize, iErr;
-  double aX, aY, aZ;
-  SMESH_Block::TShapeID aSID, aSIDs[aNbSIDs]={
-    SMESH_Block::ID_V000, SMESH_Block::ID_V100, 
-    SMESH_Block::ID_V110, SMESH_Block::ID_V010,
-    SMESH_Block::ID_Ex00, SMESH_Block::ID_E1y0, 
-    SMESH_Block::ID_Ex10, SMESH_Block::ID_E0y0,
-    SMESH_Block::ID_Fxy0
-  }; 
-  //
-  SMESH_Mesh* pMesh=GetMesh();
-  //
-  // 1. Define the sizes of mesh
-  //
-  // 1.1 Horizontal size
-  myJSize=0;
-  for (i=0; i<aNbSIDs; ++i) {
-    const TopoDS_Shape& aS=myBlock.Shape(aSIDs[i]);
-    SMESH_subMesh *aSubMesh = pMesh->GetSubMeshContaining(aS);
-    ASSERT(aSubMesh);
-    SMESHDS_SubMesh *aSM=aSubMesh->GetSubMeshDS();
-    iNbN=aSM->NbNodes();
-    myJSize+=iNbN;
-  }
-  //printf("***  Horizontal: number of nodes summary=%d\n", myJSize);
-  //
-  // 1.2 Vertical size
-  myISize=2;
-  {
-    const TopoDS_Shape& aS=myBlock.Shape(SMESH_Block::ID_E00z);
-    SMESH_subMesh *aSubMesh = pMesh->GetSubMeshContaining(aS);
-    ASSERT(aSubMesh);
-    SMESHDS_SubMesh *aSM=aSubMesh->GetSubMeshDS();
-    iNbN=aSM->NbNodes();
-    myISize+=iNbN;
-  }
-  //printf("***  Vertical: number of nodes on edges and vertices=%d\n", myISize);
-  //
-  aSize=myISize*myJSize;
-  myTNodes.resize(aSize);
-  //
-  StdMeshers_TNode aTNode;
-  gp_XYZ aCoords;
-  gp_Pnt aP3D;
-  //
-  // 2. Fill the repers on base face (Z=0)
-  i=0; j=0;
-  // vertices
-  for (k=0; k<aNbSIDs; ++k) {
-    aSID=aSIDs[k];
-    const TopoDS_Shape& aS=myBlock.Shape(aSID);
-    SMDS_NodeIteratorPtr ite =pMesh->GetSubMeshContaining(aS)->GetSubMeshDS()->GetNodes();
-    while(ite->more()) {
-      const SMDS_MeshNode* aNode = ite->next();
-      aNodeID=aNode->GetID();
-      //
-      aTNode.SetNode(aNode);
-      aTNode.SetShapeSupportID(aSID);
-      aTNode.SetBaseNodeID(aNodeID);
-      //
-      if ( SMESH_Block::IsEdgeID (aSID))
-      {
-        const SMDS_EdgePosition* epos =
-          static_cast<const SMDS_EdgePosition*>(aNode->GetPosition().get());
-        myBlock.ComputeParameters( epos->GetUParameter(), aS, aCoords );
-      }
-      else {
-        aX=aNode->X();
-        aY=aNode->Y();
-        aZ=aNode->Z();
-        aP3D.SetCoord(aX, aY, aZ);
-        myBlock.ComputeParameters(aP3D, aS, aCoords);
-      }
-      iErr=myBlock.ErrorStatus();
-      if (iErr) {
-        MESSAGE("StdMeshers_Penta_3D::MakeNodes()," <<
-                "SMESHBlock: ComputeParameters operation failed");
-        myErrorStatus=101; // SMESHBlock: ComputeParameters operation failed
-        return;
-      }
-      aTNode.SetNormCoord(aCoords);
-      ij=i*myJSize+j;
-      myTNodes[ij]=aTNode;
-      ++j;
-    }
-  }
-  /*
-  //DEB
-  {
-    int iShapeSupportID, iBaseNodeID;
-    //
-    //printf("\n\n*** Base Face\n");
-    i=0;
-    for (j=0; j<myJSize; ++j) {
-      ij=i*myJSize+j;
-      const StdMeshers_TNode& aTNode=myTNodes[ij];
-      iShapeSupportID=aTNode.ShapeSupportID();
-      iBaseNodeID=aTNode.BaseNodeID();
-      const gp_XYZ& aXYZ=aTNode.NormCoord();
-      printf("*** j:%d bID#%d iSS:%d { %lf %lf %lf }\n",
-            j,  iBaseNodeID, iShapeSupportID, aXYZ.X(),  aXYZ.Y(), aXYZ.Z());
-    }
-  }
-  */
-  //DEB
-  //return; //zz
-  //
-  // 3. Finding of Z-layers
-//   vector<double> aZL(myISize);
-//   vector<double>::iterator aItZL1, aItZL2 ;
-//   //
-//   const TopoDS_Shape& aE00z=myBlock.Shape(SMESH_Block::ID_E00z);
-//   SMDS_NodeIteratorPtr aItaE00z =
-//     pMesh->GetSubMeshContaining(aE00z)->GetSubMeshDS()->GetNodes();
-//   //
-//   aZL[0]=0.;
-//   i=1;
-//   while (aItaE00z->more()) {
-//     const SMDS_MeshNode* aNode=aItaE00z->next();
-//     const SMDS_EdgePosition* epos =
-//       static_cast<const SMDS_EdgePosition*>(aNode->GetPosition().get());
-//     myBlock.ComputeParameters( epos->GetUParameter(), aE00z, aCoords );
-//     iErr=myBlock.ErrorStatus();
-//     if (iErr) {
-//       MESSAGE("StdMeshers_Penta_3D::MakeNodes()," <<
-//               "SMESHBlock: ComputeParameters operation failed");
-//       myErrorStatus=101; // SMESHBlock: ComputeParameters operation failed
-//       return;
-//     }
-//     aZL[i]=aCoords.Z();
-//     ++i;
-//   }
-//   aZL[i]=1.;
-//   //
-//   aItZL1=aZL.begin();
-//   aItZL2=aZL.end();
-//   //
-//   // Sorting the layers
-//   sort(aItZL1, aItZL2);
-  //DEB
-  /*
-  printf("** \n\n Layers begin\n");
-  for(i=0, aItZL=aItZL1; aItZL!=aItZL2; ++aItZL, ++i) {
-    printf(" #%d : %lf\n", i, *aItZL);
-  } 
-  printf("** Layers end\n");
-  */
-  //DEB
-  //
-  //
-
-  // 3.1 Fill maps of wall nodes
-  SMESH_Block::TShapeID wallFaceID[4] = {
-    SMESH_Block::ID_Fx0z, SMESH_Block::ID_Fx1z,
-    SMESH_Block::ID_F0yz, SMESH_Block::ID_F1yz
-    };
-  SMESH_Block::TShapeID baseEdgeID[4] = {
-    SMESH_Block::ID_Ex00, SMESH_Block::ID_Ex10,
-    SMESH_Block::ID_E0y0, SMESH_Block::ID_E1y0
-    };
-  for ( i = 0; i < 4; ++i ) {
-    int fIndex = SMESH_Block::ShapeIndex( wallFaceID[ i ]);
-    bool ok = LoadIJNodes (myWallNodesMaps[ fIndex ],
-                           TopoDS::Face( myBlock.Shape( wallFaceID[ i ] )),
-                           TopoDS::Edge( myBlock.Shape( baseEdgeID[ i ] )),
-                           pMesh->GetMeshDS());
-    if ( !ok ) {
-      myErrorStatus = i + 1;
-      MESSAGE(" Cant LoadIJNodes() from a wall face " << myErrorStatus );
-      return;
-    }
-  }
-
-  // 3.2 find node columns for vertical edges and edge IDs
-  vector<const SMDS_MeshNode*> * verticEdgeNodes[ 4 ];
-  SMESH_Block::TShapeID          verticEdgeID   [ 4 ];
-  for ( i = 0; i < 4; ++i ) { // 4 first base nodes are nodes on vertices
-    // edge ID
-    SMESH_Block::TShapeID eID, vID = aSIDs[ i ];
-    ShapeSupportID(false, vID, eID);
-    verticEdgeID[ i ] = eID;
-    // column nodes
-    StdMeshers_TNode& aTNode = myTNodes[ i ];
-    verticEdgeNodes[ i ] = 0;
-    for ( j = 0; j < 4; ++j ) { // loop on 4 wall faces
-      int fIndex = SMESH_Block::ShapeIndex( wallFaceID[ j ]);
-      StdMeshers_IJNodeMap & ijNodes= myWallNodesMaps[ fIndex ];
-      if ( ijNodes.begin()->second[0] == aTNode.Node() )
-        verticEdgeNodes[ i ] = & ijNodes.begin()->second;
-      else if ( ijNodes.rbegin()->second[0] == aTNode.Node() )
-        verticEdgeNodes[ i ] = & ijNodes.rbegin()->second;
-      if ( verticEdgeNodes[ i ] )
-        break;
-    }
-  }
-
-  // 3.3 set XYZ of vertices, and initialize of the rest
-  SMESHDS_Mesh* aMesh = GetMesh()->GetMeshDS();
-  for ( int id = SMESH_Block::ID_V000; id < SMESH_Block::ID_Shell; ++id )
-  {
-    if ( SMESH_Block::IsVertexID( id )) {
-      TopoDS_Shape V = myBlock.Shape( id );
-      SMESHDS_SubMesh* sm = aMesh->MeshElements( V );
-      const SMDS_MeshNode* n = sm->GetNodes()->next();
-      myShapeXYZ[ id ].SetCoord( n->X(), n->Y(), n->Z() );
-    }
-    else
-      myShapeXYZ[ id ].SetCoord( 0., 0., 0. );
-  }
-
-
-  // 4. Fill the rest repers
-  bool bIsUpperLayer;
-  int iBNID;
-  SMESH_Block::TShapeID aSSID, aBNSSID;
-  StdMeshers_TNode aTN;
-  //
-  for (j=0; j<myJSize; ++j)
-  {
-    // base node info
-    const StdMeshers_TNode& aBN=myTNodes[j];
-    aBNSSID=(SMESH_Block::TShapeID)aBN.ShapeSupportID();
-    iBNID=aBN.BaseNodeID();
-    const gp_XYZ& aBNXYZ=aBN.NormCoord();
-    bool createNode = ( aBNSSID == SMESH_Block::ID_Fxy0 );
-    //
-    // set XYZ on horizontal edges and get node columns of faces:
-    // 2 columns for each face, between which a base node is located
-    vector<const SMDS_MeshNode*>* nColumns[8];
-    double ratio[4]; // base node position between columns [0.-1.]
-    if ( createNode )
-      for ( k = 0; k < 4; ++k )
-        ratio[ k ] = SetHorizEdgeXYZ (aBNXYZ, wallFaceID[ k ],
-                                      nColumns[k*2], nColumns[k*2+1]);
-    //
-    // XYZ on the bottom and top faces
-    const SMDS_MeshNode* n = aBN.Node();
-    myShapeXYZ[ SMESH_Block::ID_Fxy0 ].SetCoord( n->X(), n->Y(), n->Z() );
-    myShapeXYZ[ SMESH_Block::ID_Fxy1 ].SetCoord( 0., 0., 0. );
-    //
-    // first create or find a top node, then the rest ones in a column
-    for (i=myISize-1; i>0; --i)
-    {
-      if ( createNode ) {
-        // set XYZ on vertical edges and faces
-        for ( k = 0; k < 4; ++k ) {
-          const SMDS_MeshNode* n = (*verticEdgeNodes[ k ]) [ i ];
-          myShapeXYZ[ verticEdgeID[ k ] ].SetCoord( n->X(), n->Y(), n->Z() );
-          //
-          n = (*nColumns[k*2]) [ i ];
-          gp_XYZ xyz( n->X(), n->Y(), n->Z() );
-          myShapeXYZ[ wallFaceID[ k ]] = ( 1. - ratio[ k ]) * xyz;
-          n = (*nColumns[k*2+1]) [ i ];
-          xyz.SetCoord( n->X(), n->Y(), n->Z() );
-          myShapeXYZ[ wallFaceID[ k ]] += ratio[ k ] * xyz;
-        }
-      }
-      // fill current node info
-      //   -index in aTNodes
-      ij=i*myJSize+j; 
-      //   -normalized coordinates  
-      aX=aBNXYZ.X();  
-      aY=aBNXYZ.Y();
-      //aZ=aZL[i];
-      aZ=(double)i/(double)(myISize-1);
-      aCoords.SetCoord(aX, aY, aZ);
-      //
-      //   suporting shape ID
-      bIsUpperLayer=(i==(myISize-1));
-      ShapeSupportID(bIsUpperLayer, aBNSSID, aSSID);
-      if (myErrorStatus) {
-        MESSAGE("StdMeshers_Penta_3D::MakeNodes() ");
-       return;
-      }
-      //
-      aTN.SetShapeSupportID(aSSID);
-      aTN.SetNormCoord(aCoords);
-      aTN.SetBaseNodeID(iBNID);
-      //
-      if (aSSID!=SMESH_Block::ID_NONE){
-       // try to find the node
-       const TopoDS_Shape& aS=myBlock.Shape((int)aSSID);
-       FindNodeOnShape(aS, aCoords, i, aTN);
-      }
-      else{
-       // create node and get it id
-       CreateNode (bIsUpperLayer, aCoords, aTN);
-        //
-        if ( bIsUpperLayer ) {
-          const SMDS_MeshNode* n = aTN.Node();
-          myShapeXYZ[ SMESH_Block::ID_Fxy1 ].SetCoord( n->X(), n->Y(), n->Z() );
-        }
-      }
-      if (myErrorStatus) {
-        MESSAGE("StdMeshers_Penta_3D::MakeNodes() ");
-       return;
-      }
-      //
-      myTNodes[ij]=aTN;
-    }
-  }
-  //DEB
-  /*
-  {
-    int iSSID, iBNID, aID;
-    //
-    for (i=0; i<myISize; ++i) {
-      printf(" Layer# %d\n", i);
-      for (j=0; j<myJSize; ++j) {
-       ij=i*myJSize+j; 
-       const StdMeshers_TNode& aTN=myTNodes[ij];
-       //const StdMeshers_TNode& aTN=aTNodes[ij];
-       const gp_XYZ& aXYZ=aTN.NormCoord();
-       iSSID=aTN.ShapeSupportID();
-       iBNID=aTN.BaseNodeID();
-       //
-       const SMDS_MeshNode* aNode=aTN.Node();
-       aID=aNode->GetID(); 
-       aX=aNode->X();
-       aY=aNode->Y();
-       aZ=aNode->Z();
-       printf("*** j:%d BNID#%d iSSID:%d ID:%d { %lf %lf %lf },  { %lf %lf %lf }\n",
-              j,  iBNID, iSSID, aID, aXYZ.X(),  aXYZ.Y(), aXYZ.Z(), aX, aY, aZ);
-      }
-    }
-  }
-  */
-  //DEB t
-}
-//=======================================================================
-//function : FindNodeOnShape
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::FindNodeOnShape(const TopoDS_Shape& aS,
-                                         const gp_XYZ&       aParams,
-                                          const int           z,
-                                         StdMeshers_TNode&   aTN)
-{
-  myErrorStatus=0;
-  //
-  double aX, aY, aZ, aD, aTol2, minD;
-  gp_Pnt aP1, aP2;
-  //
-  SMESH_Mesh* pMesh=GetMesh();
-  aTol2=myTol3D*myTol3D;
-  minD = 1.e100;
-  SMDS_MeshNode* pNode=NULL;
-  //
-  if ( aS.ShapeType() == TopAbs_FACE ||
-       aS.ShapeType() == TopAbs_EDGE )
-  {
-    // find a face ID to which aTN belongs to
-    int faceID;
-    if ( aS.ShapeType() == TopAbs_FACE )
-      faceID = myBlock.ShapeID( aS );
-    else { // edge maybe vertical or top horizontal
-      gp_XYZ aCoord = aParams;
-      if ( aCoord.Z() == 1. )
-        aCoord.SetZ( 0.5 ); // move from top down
-      else
-        aCoord.SetX( 0.5 ); // move along X
-      faceID = SMESH_Block::GetShapeIDByParams( aCoord );
-    }
-    ASSERT( SMESH_Block::IsFaceID( faceID ));
-    int fIndex = SMESH_Block::ShapeIndex( faceID );
-    StdMeshers_IJNodeMap & ijNodes= myWallNodesMaps[ fIndex ];
-    // look for a base node in ijNodes
-    const SMDS_MeshNode* baseNode = pMesh->GetMeshDS()->FindNode( aTN.BaseNodeID() );
-    StdMeshers_IJNodeMap::const_iterator par_nVec = ijNodes.begin();
-    for ( ; par_nVec != ijNodes.end(); par_nVec++ )
-      if ( par_nVec->second[ 0 ] == baseNode ) {
-        pNode=(SMDS_MeshNode*)par_nVec->second.at( z );
-        aTN.SetNode(pNode);
-        return;
-      }
-  }
-  //
-  myBlock.Point(aParams, aS, aP1);
-  //
-  SMDS_NodeIteratorPtr ite=
-    pMesh->GetSubMeshContaining(aS)->GetSubMeshDS()->GetNodes();
-  while(ite->more()) {
-    const SMDS_MeshNode* aNode = ite->next();
-    aX=aNode->X();
-    aY=aNode->Y();
-    aZ=aNode->Z();
-    aP2.SetCoord(aX, aY, aZ);
-    aD=(double)aP1.SquareDistance(aP2);
-    //printf("** D=%lf ", aD, aTol2);
-    if (aD < minD) {
-      pNode=(SMDS_MeshNode*)aNode;
-      aTN.SetNode(pNode);
-      minD = aD;
-      //printf(" Ok\n");
-      if (aD<aTol2)
-        return; 
-    }
-  }
-  //
-  //printf(" KO\n");
-  //aTN.SetNode(pNode);
-  //MESSAGE("StdMeshers_Penta_3D::FindNodeOnShape(), can not find the node");
-  //myErrorStatus=11; // can not find the node;
-}
-
-//=======================================================================
-//function : SetHorizEdgeXYZ
-//purpose  : 
-//=======================================================================
-
-double StdMeshers_Penta_3D::SetHorizEdgeXYZ(const gp_XYZ&                  aBaseNodeParams,
-                                            const int                      aFaceID,
-                                            vector<const SMDS_MeshNode*>*& aCol1,
-                                            vector<const SMDS_MeshNode*>*& aCol2)
-{
-  // find base and top edges of the face
-  vector< int > edgeVec; // 0-base, 1-top
-  SMESH_Block::GetFaceEdgesIDs( aFaceID, edgeVec );
-  //
-  int coord = SMESH_Block::GetCoordIndOnEdge( edgeVec[ 0 ] );
-  double param = aBaseNodeParams.Coord( coord );
-  if ( !myBlock.IsForwadEdge( edgeVec[ 0 ] ))
-    param = 1. - param;
-  //
-  // look for columns around param
-  StdMeshers_IJNodeMap & ijNodes =
-    myWallNodesMaps[ SMESH_Block::ShapeIndex( aFaceID )];
-  StdMeshers_IJNodeMap::iterator par_nVec_1 = ijNodes.begin();
-  while ( par_nVec_1->first < param )
-    par_nVec_1++;
-  StdMeshers_IJNodeMap::iterator par_nVec_2 = par_nVec_1;
-  //
-  double r = 0;
-  if ( par_nVec_1 != ijNodes.begin() ) {
-    par_nVec_1--;
-    r = ( param - par_nVec_1->first ) / ( par_nVec_2->first - par_nVec_1->first );
-  }
-  aCol1 = & par_nVec_1->second;
-  aCol2 = & par_nVec_2->second;
-
-  // base edge
-  const SMDS_MeshNode* n1 = aCol1->front();
-  const SMDS_MeshNode* n2 = aCol2->front();
-  gp_XYZ xyz1( n1->X(), n1->Y(), n1->Z() ), xyz2( n2->X(), n2->Y(), n2->Z() );
-  myShapeXYZ[ edgeVec[ 0 ] ] = ( 1. - r ) * xyz1 + r * xyz2;
-
-  // top edge
-  n1 = aCol1->back();
-  n2 = aCol2->back();
-  xyz1.SetCoord( n1->X(), n1->Y(), n1->Z() );
-  xyz2.SetCoord( n2->X(), n2->Y(), n2->Z() );
-  myShapeXYZ[ edgeVec[ 1 ] ] = ( 1. - r ) * xyz1 + r * xyz2;
-
-  return r;
-}
-
-//=======================================================================
-//function : MakeVolumeMesh
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::MakeVolumeMesh()
-{
-  myErrorStatus=0;
-  //
-  int i, j, ij, ik, i1, i2, aSSID; 
-  //
-  SMESH_Mesh*   pMesh =GetMesh();
-  SMESHDS_Mesh* meshDS=pMesh->GetMeshDS();
-  //
-  int shapeID = meshDS->ShapeToIndex( myShape );
-  //
-  // 1. Set Node In Volume
-  ik=myISize-1;
-  for (i=1; i<ik; ++i){
-    for (j=0; j<myJSize; ++j){
-      ij=i*myJSize+j;
-      const StdMeshers_TNode& aTN=myTNodes[ij];
-      aSSID=aTN.ShapeSupportID();
-      if (aSSID==SMESH_Block::ID_NONE) {
-       SMDS_MeshNode* aNode=(SMDS_MeshNode*)aTN.Node();
-       meshDS->SetNodeInVolume(aNode, shapeID);
-      }
-    }
-  }
-  //
-  // 2. Make pentahedrons
-  int aID0, k , aJ[3];
-  vector<const SMDS_MeshNode*> aN;
-  //
-  SMDS_ElemIteratorPtr itf, aItNodes;
-  //
-  const TopoDS_Face& aFxy0=
-    TopoDS::Face(myBlock.Shape(SMESH_Block::ID_Fxy0));
-  SMESH_subMesh *aSubMesh0 = pMesh->GetSubMeshContaining(aFxy0);
-  SMESHDS_SubMesh *aSM0=aSubMesh0->GetSubMeshDS();
-  //
-  itf=aSM0->GetElements();
-  while(itf->more()) {
-    const SMDS_MeshElement* pE0=itf->next();
-    //
-    int nbFaceNodes = pE0->NbNodes();
-    if ( aN.size() < nbFaceNodes * 2 )
-      aN.resize( nbFaceNodes * 2 );
-    //
-    k=0;
-    aItNodes=pE0->nodesIterator();
-    while (aItNodes->more()) {
-      const SMDS_MeshElement* pNode=aItNodes->next();
-      aID0=pNode->GetID();
-      aJ[k]=GetIndexOnLayer(aID0);
-      if (myErrorStatus) {
-        MESSAGE("StdMeshers_Penta_3D::MakeVolumeMesh");
-       return;
-      }
-      //
-      ++k;
-    }
-    //
-    bool forward = true;
-    for (i=0; i<ik; ++i){
-      i1=i;
-      i2=i+1;
-      for(j=0; j<nbFaceNodes; ++j) {
-       ij=i1*myJSize+aJ[j];
-       const StdMeshers_TNode& aTN1=myTNodes[ij];
-       const SMDS_MeshNode* aN1=aTN1.Node();
-       aN[j]=aN1;
-       //
-       ij=i2*myJSize+aJ[j];
-       const StdMeshers_TNode& aTN2=myTNodes[ij];
-       const SMDS_MeshNode* aN2=aTN2.Node();
-       aN[j+nbFaceNodes]=aN2;
-      }
-      // check if volume orientation will be ok
-      if ( i == 0 ) {
-        SMDS_VolumeTool vTool;
-        switch ( nbFaceNodes ) {
-        case 3: {
-          SMDS_VolumeOfNodes tmpVol (aN[0], aN[1], aN[2],
-                                     aN[3], aN[4], aN[5]);
-          vTool.Set( &tmpVol );
-          break;
-        }
-        case 4: {
-          SMDS_VolumeOfNodes tmpVol(aN[0], aN[1], aN[2], aN[3],
-                                    aN[4], aN[5], aN[6], aN[7]);
-          vTool.Set( &tmpVol );
-          break;
-        }
-        default:
-          continue;
-        }
-        forward = vTool.IsForward();
-      }
-      // add volume
-      SMDS_MeshVolume* aV = 0;
-      switch ( nbFaceNodes ) {
-      case 3:
-        if ( forward )
-          aV = meshDS->AddVolume(aN[0], aN[1], aN[2],
-                                 aN[3], aN[4], aN[5]);
-        else
-          aV = meshDS->AddVolume(aN[0], aN[2], aN[1],
-                                 aN[3], aN[5], aN[4]);
-        break;
-      case 4:
-        if ( forward )
-          aV = meshDS->AddVolume(aN[0], aN[1], aN[2], aN[3],
-                                 aN[4], aN[5], aN[6], aN[7]);
-        else
-          aV = meshDS->AddVolume(aN[0], aN[3], aN[2], aN[1],
-                                 aN[4], aN[7], aN[6], aN[5]);
-        break;
-      default:
-        continue;
-      }
-      meshDS->SetMeshElementOnShape(aV, shapeID);
-    }
-  }
-}
-
-//=======================================================================
-//function : MakeMeshOnFxy1
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::MakeMeshOnFxy1()
-{
-  myErrorStatus=0;
-  //
-  int aID0, aJ, aLevel, ij, aNbNodes, k;
-  //
-  SMDS_NodeIteratorPtr itn;
-  SMDS_ElemIteratorPtr itf, aItNodes;
-  SMDSAbs_ElementType aElementType;
-  //
-  const TopoDS_Face& aFxy0=
-    TopoDS::Face(myBlock.Shape(SMESH_Block::ID_Fxy0));
-  const TopoDS_Face& aFxy1=
-    TopoDS::Face(myBlock.Shape(SMESH_Block::ID_Fxy1));
-  //
-  SMESH_Mesh* pMesh=GetMesh();
-  SMESHDS_Mesh * meshDS = pMesh->GetMeshDS();
-  //
-  SMESH_subMesh *aSubMesh0 = pMesh->GetSubMeshContaining(aFxy0);
-  SMESHDS_SubMesh *aSM0=aSubMesh0->GetSubMeshDS();
-  //
-  // set nodes on aFxy1
-  aLevel=myISize-1;
-  itn=aSM0->GetNodes();
-  aNbNodes=aSM0->NbNodes();
-  //printf("** aNbNodes=%d\n", aNbNodes);
-  while(itn->more()) {
-    const SMDS_MeshNode* aN0=itn->next();
-    aID0=aN0->GetID();
-    aJ=GetIndexOnLayer(aID0);
-    if (myErrorStatus) {
-      MESSAGE("StdMeshers_Penta_3D::MakeMeshOnFxy1() ");
-      return;
-    }
-    //
-    ij=aLevel*myJSize+aJ;
-    const StdMeshers_TNode& aTN1=myTNodes[ij];
-    SMDS_MeshNode* aN1=(SMDS_MeshNode*)aTN1.Node();
-    //
-    meshDS->SetNodeOnFace(aN1, aFxy1);
-  }
-  //
-  // set elements on aFxy1
-  vector<const SMDS_MeshNode*> aNodes1;
-  //
-  itf=aSM0->GetElements();
-  while(itf->more()) {
-    const SMDS_MeshElement * pE0=itf->next();
-    aElementType=pE0->GetType();
-    if (!aElementType==SMDSAbs_Face) {
-      continue;
-    }
-    aNbNodes=pE0->NbNodes();
-//     if (aNbNodes!=3) {
-//       continue;
-//     }
-    if ( aNodes1.size() < aNbNodes )
-      aNodes1.resize( aNbNodes );
-    //
-    k=aNbNodes-1; // reverse a face
-    aItNodes=pE0->nodesIterator();
-    while (aItNodes->more()) {
-      const SMDS_MeshElement* pNode=aItNodes->next();
-      aID0=pNode->GetID();
-      aJ=GetIndexOnLayer(aID0);
-      if (myErrorStatus) {
-        MESSAGE("StdMeshers_Penta_3D::MakeMeshOnFxy1() ");
-       return;
-      }
-      //
-      ij=aLevel*myJSize+aJ;
-      const StdMeshers_TNode& aTN1=myTNodes[ij];
-      const SMDS_MeshNode* aN1=aTN1.Node();
-      aNodes1[k]=aN1;
-      --k;
-    }
-    SMDS_MeshFace * face = 0;
-    switch ( aNbNodes ) {
-    case 3:
-      face = meshDS->AddFace(aNodes1[0], aNodes1[1], aNodes1[2]);
-      break;
-    case 4:
-      face = meshDS->AddFace(aNodes1[0], aNodes1[1], aNodes1[2], aNodes1[3]);
-      break;
-    default:
-      continue;
-    }
-    meshDS->SetMeshElementOnShape(face, aFxy1);
-  }
-}
-//=======================================================================
-//function : ClearMeshOnFxy1
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::ClearMeshOnFxy1()
-{
-  myErrorStatus=0;
-  //
-  SMESH_subMesh* aSubMesh;
-  SMESH_Mesh* pMesh=GetMesh();
-  //
-  const TopoDS_Shape& aFxy1=myBlock.Shape(SMESH_Block::ID_Fxy1);
-  aSubMesh = pMesh->GetSubMeshContaining(aFxy1);
-  if (aSubMesh)
-    aSubMesh->ComputeStateEngine( SMESH_subMesh::CLEAN );
-}
-
-//=======================================================================
-//function : GetIndexOnLayer
-//purpose  : 
-//=======================================================================
-int StdMeshers_Penta_3D::GetIndexOnLayer(const int aID)
-{
-  myErrorStatus=0;
-  //
-  int j=-1;
-  StdMeshers_IteratorOfDataMapOfIntegerInteger aMapIt;
-  //
-  aMapIt=myConnectingMap.find(aID);
-  if (aMapIt==myConnectingMap.end()) {
-    myErrorStatus=200;
-    return j;
-  }
-  j=(*aMapIt).second;
-  return j;
-}
-//=======================================================================
-//function : MakeConnectingMap
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::MakeConnectingMap()
-{
-  int j, aBNID;
-  //
-  for (j=0; j<myJSize; ++j) {
-    const StdMeshers_TNode& aBN=myTNodes[j];
-    aBNID=aBN.BaseNodeID();
-    myConnectingMap[aBNID]=j;
-  }
-}
-//=======================================================================
-//function : CreateNode
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::CreateNode(const bool bIsUpperLayer,
-                                    const gp_XYZ& aParams,
-                                    StdMeshers_TNode& aTN)
-{
-  myErrorStatus=0;
-  //
-  // int iErr;
-  double aX, aY, aZ;
-  //
-  gp_Pnt aP;
-  //
-  SMDS_MeshNode* pNode=NULL; 
-  aTN.SetNode(pNode);  
-  //
-//   if (bIsUpperLayer) {
-//     // point on face Fxy1
-//     const TopoDS_Shape& aS=myBlock.Shape(SMESH_Block::ID_Fxy1);
-//     myBlock.Point(aParams, aS, aP);
-//   }
-//   else {
-//     // point inside solid
-//     myBlock.Point(aParams, aP);
-//   }
-  if (bIsUpperLayer)
-  {
-    double u = aParams.X(), v = aParams.Y();
-    double u1 = ( 1. - u ), v1 = ( 1. - v );
-    aP.ChangeCoord()  = myShapeXYZ[ SMESH_Block::ID_Ex01 ] * v1;
-    aP.ChangeCoord() += myShapeXYZ[ SMESH_Block::ID_Ex11 ] * v;
-    aP.ChangeCoord() += myShapeXYZ[ SMESH_Block::ID_E0y1 ] * u1;
-    aP.ChangeCoord() += myShapeXYZ[ SMESH_Block::ID_E1y1 ] * u;
-
-    aP.ChangeCoord() -= myShapeXYZ[ SMESH_Block::ID_V001 ] * u1 * v1;
-    aP.ChangeCoord() -= myShapeXYZ[ SMESH_Block::ID_V101 ] * u  * v1;
-    aP.ChangeCoord() -= myShapeXYZ[ SMESH_Block::ID_V011 ] * u1 * v;
-    aP.ChangeCoord() -= myShapeXYZ[ SMESH_Block::ID_V111 ] * u  * v;
-  }
-  else
-  {
-    SMESH_Block::ShellPoint( aParams, myShapeXYZ, aP.ChangeCoord() );
-  }
-  //
-//   iErr=myBlock.ErrorStatus();
-//   if (iErr) {
-//     myErrorStatus=12; // can not find the node point;
-//     return;
-//   }
-  //
-  aX=aP.X(); aY=aP.Y(); aZ=aP.Z(); 
-  //
-  SMESH_Mesh* pMesh=GetMesh();
-  SMESHDS_Mesh* pMeshDS=pMesh->GetMeshDS();
-  //
-  pNode = pMeshDS->AddNode(aX, aY, aZ);
-  aTN.SetNode(pNode);
-}
-//=======================================================================
-//function : ShapeSupportID
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::ShapeSupportID(const bool bIsUpperLayer,
-                                        const SMESH_Block::TShapeID aBNSSID,
-                                        SMESH_Block::TShapeID& aSSID)
-{
-  myErrorStatus=0;
-  //
-  switch (aBNSSID) {
-    case SMESH_Block::ID_V000:
-      aSSID=(bIsUpperLayer) ?  SMESH_Block::ID_V001 : SMESH_Block::ID_E00z;
-      break;
-    case SMESH_Block::ID_V100:
-      aSSID=(bIsUpperLayer) ?  SMESH_Block::ID_V101 : SMESH_Block::ID_E10z;
-      break; 
-    case SMESH_Block::ID_V110:
-      aSSID=(bIsUpperLayer) ?  SMESH_Block::ID_V111 : SMESH_Block::ID_E11z;
-      break;
-    case SMESH_Block::ID_V010:
-      aSSID=(bIsUpperLayer) ?  SMESH_Block::ID_V011 : SMESH_Block::ID_E01z;
-      break;
-    case SMESH_Block::ID_Ex00:
-      aSSID=(bIsUpperLayer) ?  SMESH_Block::ID_Ex01 : SMESH_Block::ID_Fx0z;
-      break;
-    case SMESH_Block::ID_Ex10:
-      aSSID=(bIsUpperLayer) ?  SMESH_Block::ID_Ex11 : SMESH_Block::ID_Fx1z;
-      break; 
-    case SMESH_Block::ID_E0y0:
-      aSSID=(bIsUpperLayer) ?  SMESH_Block::ID_E0y1 : SMESH_Block::ID_F0yz;
-      break; 
-    case SMESH_Block::ID_E1y0:
-      aSSID=(bIsUpperLayer) ?  SMESH_Block::ID_E1y1 : SMESH_Block::ID_F1yz;
-      break; 
-    case SMESH_Block::ID_Fxy0:
-      aSSID=SMESH_Block::ID_NONE;//(bIsUpperLayer) ?  Shape_ID_Fxy1 : Shape_ID_NONE;
-      break;   
-    default:
-      aSSID=SMESH_Block::ID_NONE;
-      myErrorStatus=10; // Can not find supporting shape ID
-      break;
-  }
-  return;
-}
-//=======================================================================
-//function : MakeBlock
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::MakeBlock()
-{
-  myErrorStatus=0;
-  //
-  bool bFound;
-  int i, j, iNbEV, iNbE, iErr, iCnt, iNbNodes, iNbF;
-  //
-  TopoDS_Vertex aV000, aV001;
-  TopoDS_Shape aFTr;
-  TopTools_IndexedDataMapOfShapeListOfShape aMVES;
-  TopTools_IndexedMapOfShape aME ,aMEV, aM;
-  TopTools_ListIteratorOfListOfShape aIt;
-  //
-  TopExp::MapShapes(myShape, TopAbs_FACE, aM);
-  //
-  // 0. Find triangulated face aFTr
-  SMDSAbs_ElementType aElementType;
-  SMESH_Mesh* pMesh=GetMesh();
-  //
-  iCnt=0;
-  iNbF=aM.Extent();
-  for (i=1; i<=iNbF; ++i) {
-    const TopoDS_Shape& aF=aM(i);
-    SMESH_subMesh *aSubMesh = pMesh->GetSubMeshContaining(aF);
-    ASSERT(aSubMesh);
-    SMESHDS_SubMesh *aSM=aSubMesh->GetSubMeshDS();
-    SMDS_ElemIteratorPtr itf=aSM->GetElements();
-    while(itf->more()) {
-      const SMDS_MeshElement * pElement=itf->next();
-      aElementType=pElement->GetType();
-      if (aElementType==SMDSAbs_Face) {
-       iNbNodes=pElement->NbNodes();
-       if (iNbNodes==3) {
-         aFTr=aF;
-         ++iCnt;
-         if (iCnt>1) {
-            MESSAGE("StdMeshers_Penta_3D::MakeBlock() ");
-           myErrorStatus=5; // more than one face has triangulation
-           return;
-         }
-         break; // next face
-       }
-      }
-    }
-  }
-  // 
-  // 1. Vetrices V00, V001;
-  //
-  TopExp::MapShapes(aFTr, TopAbs_EDGE, aME);
-  TopExp::MapShapesAndAncestors(myShape, TopAbs_VERTEX, TopAbs_EDGE, aMVES);
-  //
-  // 1.1 Base vertex V000
-  iNbE=aME.Extent();
-  if (iNbE!=4){
-    MESSAGE("StdMeshers_Penta_3D::MakeBlock() ");
-    myErrorStatus=7; // too few edges are in base face aFTr 
-    return;
-  }
-  const TopoDS_Edge& aE1=TopoDS::Edge(aME(1));
-  aV000=TopExp::FirstVertex(aE1);
-  //
-  const TopTools_ListOfShape& aLE=aMVES.FindFromKey(aV000);
-  aIt.Initialize(aLE);
-  for (; aIt.More(); aIt.Next()) {
-    const TopoDS_Shape& aEx=aIt.Value();
-    aMEV.Add(aEx);
-  }
-  iNbEV=aMEV.Extent();
-  if (iNbEV!=3){
-    MESSAGE("StdMeshers_Penta_3D::MakeBlock() ");
-    myErrorStatus=7; // too few edges meet in base vertex 
-    return;
-  }
-  //
-  // 1.2 Vertex V001
-  bFound=false;
-  for (j=1; j<=iNbEV; ++j) {
-    const TopoDS_Shape& aEx=aMEV(j);
-    if (!aME.Contains(aEx)) {
-      TopoDS_Vertex aV[2];
-      //
-      const TopoDS_Edge& aE=TopoDS::Edge(aEx);
-      TopExp::Vertices(aE, aV[0], aV[1]);
-      for (i=0; i<2; ++i) {
-       if (!aV[i].IsSame(aV000)) {
-         aV001=aV[i];
-         bFound=!bFound;
-         break;
-       }
-      }
-    }
-  }
-  //
-  if (!bFound) {
-    MESSAGE("StdMeshers_Penta_3D::MakeBlock() ");
-    myErrorStatus=8; // can not find reper V001 
-    return;
-  }
-  //DEB
-  //gp_Pnt aP000, aP001;
-  //
-  //aP000=BRep_Tool::Pnt(TopoDS::Vertex(aV000));
-  //printf("*** aP000 { %lf, %lf, %lf }\n", aP000.X(), aP000.Y(), aP000.Z());
-  //aP001=BRep_Tool::Pnt(TopoDS::Vertex(aV001));
-  //printf("*** aP001 { %lf, %lf, %lf }\n", aP001.X(), aP001.Y(), aP001.Z());
-  //DEB
-  //
-  aME.Clear();
-  TopExp::MapShapes(myShape, TopAbs_SHELL, aME);
-  iNbE=aME.Extent();
-  if (iNbE!=1) {
-    MESSAGE("StdMeshers_Penta_3D::MakeBlock() ");
-    myErrorStatus=9; // number of shells in source shape !=1 
-    return;
-  }
-  //
-  // 2. Load Block
-  const TopoDS_Shell& aShell=TopoDS::Shell(aME(1));
-  myBlock.Load(aShell, aV000, aV001);
-  iErr=myBlock.ErrorStatus();
-  if (iErr) {
-    MESSAGE("StdMeshers_Penta_3D::MakeBlock() ");
-    myErrorStatus=100; // SMESHBlock: Load operation failed
-    return;
-  }
-}
-//=======================================================================
-//function : CheckData
-//purpose  : 
-//=======================================================================
-void StdMeshers_Penta_3D::CheckData()
-{
-  myErrorStatus=0;
-  //
-  int i, iNb;
-  int iNbEx[]={8, 12, 6};
-  //
-  TopAbs_ShapeEnum aST;
-  TopAbs_ShapeEnum aSTEx[]={
-    TopAbs_VERTEX, TopAbs_EDGE, TopAbs_FACE
-  }; 
-  TopTools_IndexedMapOfShape aM;
-  //
-  if (myShape.IsNull()){
-    MESSAGE("StdMeshers_Penta_3D::CheckData() ");
-    myErrorStatus=2; // null shape
-    return;
-  }
-  //
-  aST=myShape.ShapeType();
-  if (!(aST==TopAbs_SOLID || aST==TopAbs_SHELL)) {
-    MESSAGE("StdMeshers_Penta_3D::CheckData() ");
-    myErrorStatus=3; // not compatible type of shape
-    return;
-  }
-  //
-  for (i=0; i<3; ++i) {
-    aM.Clear();
-    TopExp::MapShapes(myShape, aSTEx[i], aM);
-    iNb=aM.Extent();
-    if (iNb!=iNbEx[i]){
-      MESSAGE("StdMeshers_Penta_3D::CheckData() ");
-      myErrorStatus=4; // number of subshape is not compatible
-      return;
-    }
-  }
-}
-
-//=======================================================================
-//function : LoadIJNodes
-//purpose  : Load nodes bound to theFace into column (vectors) and rows
-//           of theIJNodes.
-//           The value of theIJNodes map is a vector of ordered nodes so
-//           that the 0-the one lies on theBaseEdge.
-//           The key of theIJNodes map is a normalized parameter of each
-//           0-the node on theBaseEdge.
-//=======================================================================
-
-bool StdMeshers_Penta_3D::LoadIJNodes(StdMeshers_IJNodeMap & theIJNodes,
-                                      const TopoDS_Face&     theFace,
-                                      const TopoDS_Edge&     theBaseEdge,
-                                      SMESHDS_Mesh*          theMesh)
-{
-  // get vertices of theBaseEdge
-  TopoDS_Vertex vfb, vlb, vft; // first and last, bottom and top vertices
-  TopoDS_Edge eFrw = TopoDS::Edge( theBaseEdge.Oriented( TopAbs_FORWARD ));
-  TopExp::Vertices( eFrw, vfb, vlb );
-
-  // find the other edges of theFace and orientation of e1
-  TopoDS_Edge e1, e2, eTop;
-  bool rev1, CumOri = false;
-  TopExp_Explorer exp( theFace, TopAbs_EDGE );
-  int nbEdges = 0;
-  for ( ; exp.More(); exp.Next() )
-  {
-    if ( ++nbEdges > 4 )
-      return false; // more than 4 edges in theFace
-    TopoDS_Edge e = TopoDS::Edge( exp.Current() );
-    if ( theBaseEdge.IsSame( e ))
-      continue;
-    TopoDS_Vertex vCommon;
-    if ( !TopExp::CommonVertex( theBaseEdge, e, vCommon ))
-      eTop = e;
-    else if ( vCommon.IsSame( vfb )) {
-      e1 = e;
-      vft = TopExp::LastVertex( e1, CumOri );
-      rev1 = vfb.IsSame( vft );
-      if ( rev1 )
-        vft = TopExp::FirstVertex( e1, CumOri );
-    }
-    else
-      e2 = e;
-  }
-  if ( nbEdges < 4 )
-    return false; // lass than 4 edges in theFace
-
-  // submeshes corresponding to shapes
-  SMESHDS_SubMesh* smFace = theMesh->MeshElements( theFace );
-  SMESHDS_SubMesh* smb = theMesh->MeshElements( theBaseEdge );
-  SMESHDS_SubMesh* smt = theMesh->MeshElements( eTop );
-  SMESHDS_SubMesh* sm1 = theMesh->MeshElements( e1 );
-  SMESHDS_SubMesh* sm2 = theMesh->MeshElements( e2 );
-  SMESHDS_SubMesh* smVfb = theMesh->MeshElements( vfb );
-  SMESHDS_SubMesh* smVlb = theMesh->MeshElements( vlb );
-  SMESHDS_SubMesh* smVft = theMesh->MeshElements( vft );
-  if (!smFace || !smb || !smt || !sm1 || !sm2 || !smVfb || !smVlb || !smVft ) {
-    MESSAGE( "NULL submesh " <<smFace<<" "<<smb<<" "<<smt<<" "<<
-            sm1<<" "<<sm2<<" "<<smVfb<<" "<<smVlb<<" "<<smVft);
-    return false;
-  }
-  if ( smb->NbNodes() != smt->NbNodes() || sm1->NbNodes() != sm2->NbNodes() ) {
-    MESSAGE(" Diff nb of nodes on opposite edges" );
-    return false;
-  }
-  if (smVfb->NbNodes() != 1 || smVlb->NbNodes() != 1 || smVft->NbNodes() != 1) {
-    MESSAGE("Empty submesh of vertex");
-    return false;
-  }
-  if ( sm1->NbNodes() * smb->NbNodes() != smFace->NbNodes() ) {
-    MESSAGE( "Wrong nb face nodes: " <<
-            sm1->NbNodes()<<" "<<smb->NbNodes()<<" "<<smFace->NbNodes());
-    return false;
-  }
-  // IJ size
-  int vsize = sm1->NbNodes() + 2;
-  int hsize = smb->NbNodes() + 2;
-
-  // load nodes from theBaseEdge
-
-  set<const SMDS_MeshNode*> loadedNodes;
-  const SMDS_MeshNode* nullNode = 0;
-
-  vector<const SMDS_MeshNode*> & nVecf = theIJNodes[ 0.];
-  nVecf.resize( vsize, nullNode );
-  loadedNodes.insert( nVecf[ 0 ] = smVfb->GetNodes()->next() );
-
-  vector<const SMDS_MeshNode*> & nVecl = theIJNodes[ 1.];
-  nVecl.resize( vsize, nullNode );
-  loadedNodes.insert( nVecl[ 0 ] = smVlb->GetNodes()->next() );
-
-  double f, l;
-  BRep_Tool::Range( eFrw, f, l );
-  double range = l - f;
-  SMDS_NodeIteratorPtr nIt = smb->GetNodes();
-  const SMDS_MeshNode* node;
-  while ( nIt->more() )
-  {
-    node = nIt->next();
-    const SMDS_EdgePosition* pos =
-      dynamic_cast<const SMDS_EdgePosition*>( node->GetPosition().get() );
-    if ( !pos ) return false;
-    double u = ( pos->GetUParameter() - f ) / range;
-    vector<const SMDS_MeshNode*> & nVec = theIJNodes[ u ];
-    nVec.resize( vsize, nullNode );
-    loadedNodes.insert( nVec[ 0 ] = node );
-  }
-  if ( theIJNodes.size() != hsize ) {
-    MESSAGE( "Wrong node positions on theBaseEdge" );
-    return false;
-  }
-
-  // load nodes from e1
-
-  map< double, const SMDS_MeshNode*> sortedNodes; // sort by param on edge
-  nIt = sm1->GetNodes();
-  while ( nIt->more() )
-  {
-    node = nIt->next();
-    const SMDS_EdgePosition* pos =
-      dynamic_cast<const SMDS_EdgePosition*>( node->GetPosition().get() );
-    if ( !pos ) return false;
-    sortedNodes.insert( make_pair( pos->GetUParameter(), node ));
-  }
-  loadedNodes.insert( nVecf[ vsize - 1 ] = smVft->GetNodes()->next() );
-  map< double, const SMDS_MeshNode*>::iterator u_n = sortedNodes.begin();
-  int row = rev1 ? vsize - 1 : 0;
-  for ( ; u_n != sortedNodes.end(); u_n++ )
-  {
-    if ( rev1 ) row--;
-    else        row++;
-    loadedNodes.insert( nVecf[ row ] = u_n->second );
-  }
-
-  // try to load the rest nodes
-
-  // get all faces from theFace
-  set<const SMDS_MeshElement*> allFaces, foundFaces;
-  SMDS_ElemIteratorPtr eIt = smFace->GetElements();
-  while ( eIt->more() ) {
-    const SMDS_MeshElement* e = eIt->next();
-    if ( e->GetType() == SMDSAbs_Face )
-      allFaces.insert( e );
-  }
-  // Starting from 2 neighbour nodes on theBaseEdge, look for a face
-  // the nodes belong to, and between the nodes of the found face,
-  // look for a not loaded node considering this node to be the next
-  // in a column of the starting second node. Repeat, starting
-  // from nodes next to the previous starting nodes in their columns,
-  // and so on while a face can be found. Then go the the next pair
-  // of nodes on theBaseEdge.
-  StdMeshers_IJNodeMap::iterator par_nVec_1 = theIJNodes.begin();
-  StdMeshers_IJNodeMap::iterator par_nVec_2 = par_nVec_1;
-  // loop on columns
-  int col = 0;
-  for ( par_nVec_2++; par_nVec_2 != theIJNodes.end(); par_nVec_1++, par_nVec_2++ )
-  {
-    col++;
-    row = 0;
-    const SMDS_MeshNode* n1 = par_nVec_1->second[ row ];
-    const SMDS_MeshNode* n2 = par_nVec_2->second[ row ];
-    const SMDS_MeshElement* face = 0;
-    do {
-      // look for a face by 2 nodes
-      face = SMESH_MeshEditor::FindFaceInSet( n1, n2, allFaces, foundFaces );
-      if ( face )
-      {
-        int nbFaceNodes = face->NbNodes();
-        if ( nbFaceNodes > 4 ) {
-          MESSAGE(" Too many nodes in a face: " << nbFaceNodes );
-          return false;
-        }
-        // look for a not loaded node of the <face>
-        bool found = false;
-        const SMDS_MeshNode* n3 = 0; // a node defferent from n1 and n2
-        eIt = face->nodesIterator() ;
-        while ( !found && eIt->more() ) {
-          node = static_cast<const SMDS_MeshNode*>( eIt->next() );
-          found = loadedNodes.insert( node ).second;
-          if ( !found && node != n1 && node != n2 )
-            n3 = node;
-        }
-        if ( found ) {
-          if ( ++row > vsize - 1 ) {
-            MESSAGE( "Too many nodes in column "<< col <<": "<< row+1);
-            return false;
-          }
-          par_nVec_2->second[ row ] = node;
-          foundFaces.insert( face );
-          n2 = node;
-          if ( nbFaceNodes == 4 )
-            n1 = par_nVec_1->second[ row ];
-        }
-        else if (nbFaceNodes == 3 &&
-                 n3 == par_nVec_1->second[ row ] )
-          n1 = n3;
-        else {
-          MESSAGE( "Not quad mesh, column "<< col );
-          return false;
-        }
-      }
-    } while ( face && n1 && n2 );
-
-    if ( row < vsize - 1 ) {
-      MESSAGE( "Too few nodes in column "<< col <<": "<< row+1);
-      MESSAGE( "Base node 1: "<< par_nVec_1->second[0]);
-      MESSAGE( "Base node 2: "<< par_nVec_2->second[0]);
-      MESSAGE( "Current node 1: "<< n1);
-      MESSAGE( "Current node 2: "<< n2);
-      MESSAGE( "first base node: "<< theIJNodes.begin()->second[0]);
-      MESSAGE( "last base node: "<< theIJNodes.rbegin()->second[0]);
-      return false;
-    }
-  } // loop on columns
-
-  return true;
-}
-
-//////////////////////////////////////////////////////////////////////////
-//
-//   StdMeshers_SMESHBlock
-//
-//////////////////////////////////////////////////////////////////////////
-
-//=======================================================================
-//function : StdMeshers_SMESHBlock
-//purpose  : 
-//=======================================================================
-StdMeshers_SMESHBlock::StdMeshers_SMESHBlock()
-{
-  myErrorStatus=1;
-  myIsEdgeForward.resize( SMESH_Block::NbEdges(), -1 );
-}
-
-//=======================================================================
-//function : IsForwadEdge
-//purpose  : 
-//=======================================================================
-
-bool StdMeshers_SMESHBlock::IsForwadEdge(const int theEdgeID)
-{
-  int index = myTBlock.ShapeIndex( theEdgeID );
-  if ( !myTBlock.IsEdgeID( theEdgeID ))
-    return false;
-
-  if ( myIsEdgeForward[ index ] < 0 )
-    myIsEdgeForward[ index ] =
-      myTBlock.IsForwardEdge( TopoDS::Edge( Shape( theEdgeID )), myShapeIDMap );
-
-  return myIsEdgeForward[ index ];
-}
-
-//=======================================================================
-//function : ErrorStatus
-//purpose  : 
-//=======================================================================
-int StdMeshers_SMESHBlock::ErrorStatus() const
-{
-  return myErrorStatus;
-}
-//=======================================================================
-//function : Load
-//purpose  : 
-//=======================================================================
-void StdMeshers_SMESHBlock::Load(const TopoDS_Shell& theShell)
-{
-  
-  TopoDS_Vertex aV000, aV001;
-  //
-  Load(theShell, aV000, aV001);
-}
-//=======================================================================
-//function : Load
-//purpose  : 
-//=======================================================================
-void StdMeshers_SMESHBlock::Load(const TopoDS_Shell& theShell,
-                                const TopoDS_Vertex& theV000,
-                                const TopoDS_Vertex& theV001)
-{
-  myErrorStatus=0;
-  //
-  myShell=theShell;
-  //
-  bool bOk;
-  //
-  myShapeIDMap.Clear();  
-  bOk=myTBlock.LoadBlockShapes(myShell, theV000, theV001, myShapeIDMap);
-  if (!bOk) {
-    myErrorStatus=2;
-    return;
-  }
-}
-//=======================================================================
-//function : ComputeParameters
-//purpose  : 
-//=======================================================================
-void StdMeshers_SMESHBlock::ComputeParameters(const gp_Pnt& thePnt, 
-                                             gp_XYZ& theXYZ)
-{
-  ComputeParameters(thePnt, myShell, theXYZ);
-}
-//=======================================================================
-//function : ComputeParameters
-//purpose  : 
-//=======================================================================
-void StdMeshers_SMESHBlock::ComputeParameters(const gp_Pnt& thePnt,
-                                             const TopoDS_Shape& theShape,
-                                             gp_XYZ& theXYZ)
-{
-  myErrorStatus=0;
-  //
-  int aID;
-  bool bOk;
-  //
-  aID=ShapeID(theShape);
-  if (myErrorStatus) {
-    return;
-  }
-  bOk=myTBlock.ComputeParameters(thePnt, theXYZ, aID);
-  if (!bOk) {
-    myErrorStatus=4; // problems with computation Parameters 
-    return;
-  }
-}
-
-//=======================================================================
-//function : ComputeParameters
-//purpose  : 
-//=======================================================================
-
-void StdMeshers_SMESHBlock::ComputeParameters(const double& theU,
-                                              const TopoDS_Shape& theShape,
-                                              gp_XYZ& theXYZ)
-{
-  myErrorStatus=0;
-  //
-  int aID;
-  bool bOk=false;
-  //
-  aID=ShapeID(theShape);
-  if (myErrorStatus) {
-    return;
-  }
-  if ( SMESH_Block::IsEdgeID( aID ))
-      bOk=myTBlock.EdgeParameters( aID, theU, theXYZ );
-  if (!bOk) {
-    myErrorStatus=4; // problems with computation Parameters 
-    return;
-  }
-}
-
-//=======================================================================
-//function : Point
-//purpose  : 
-//=======================================================================
- void StdMeshers_SMESHBlock::Point(const gp_XYZ& theParams,
-                                  gp_Pnt& aP3D)
-{
-  TopoDS_Shape aS;
-  //
-  Point(theParams, aS, aP3D);
-}
-//=======================================================================
-//function : Point
-//purpose  : 
-//=======================================================================
- void StdMeshers_SMESHBlock::Point(const gp_XYZ& theParams,
-                                  const TopoDS_Shape& theShape,
-                                  gp_Pnt& aP3D)
-{
-  myErrorStatus=0;
-  //
-  int aID;
-  bool bOk=false;
-  gp_XYZ aXYZ(99.,99.,99.);
-  aP3D.SetXYZ(aXYZ);
-  //
-  if (theShape.IsNull()) {
-    bOk=myTBlock.ShellPoint(theParams, aXYZ);
-  }
-  //
-  else {
-    aID=ShapeID(theShape);
-    if (myErrorStatus) {
-      return;
-    }
-    //
-    if (SMESH_Block::IsVertexID(aID)) {
-      bOk=myTBlock.VertexPoint(aID, aXYZ);
-    }
-    else if (SMESH_Block::IsEdgeID(aID)) {
-      bOk=myTBlock.EdgePoint(aID, theParams, aXYZ);
-    }
-    //
-    else if (SMESH_Block::IsFaceID(aID)) {
-      bOk=myTBlock.FacePoint(aID, theParams, aXYZ);
-    }
-  }
-  if (!bOk) {
-    myErrorStatus=4; // problems with point computation 
-    return;
-  }
-  aP3D.SetXYZ(aXYZ);
-}
-//=======================================================================
-//function : ShapeID
-//purpose  : 
-//=======================================================================
-int StdMeshers_SMESHBlock::ShapeID(const TopoDS_Shape& theShape)
-{
-  myErrorStatus=0;
-  //
-  int aID=-1;
-  TopoDS_Shape aSF, aSR;
-  //
-  aSF=theShape;
-  aSF.Orientation(TopAbs_FORWARD);
-  aSR=theShape;
-  aSR.Orientation(TopAbs_REVERSED);
-  //
-  if (myShapeIDMap.Contains(aSF)) {
-    aID=myShapeIDMap.FindIndex(aSF);
-    return aID;
-  }
-  if (myShapeIDMap.Contains(aSR)) {
-    aID=myShapeIDMap.FindIndex(aSR);
-    return aID;
-  }
-  myErrorStatus=2; // unknown shape;
-  return aID;
-}
-//=======================================================================
-//function : Shape
-//purpose  : 
-//=======================================================================
-const TopoDS_Shape& StdMeshers_SMESHBlock::Shape(const int theID)
-{
-  myErrorStatus=0;
-  //
-  int aNb;
-  //
-  aNb=myShapeIDMap.Extent();
-  if (theID<1 || theID>aNb) {
-    myErrorStatus=3; // ID is out of range
-    return myEmptyShape;
-  }
-  //
-  const TopoDS_Shape& aS=myShapeIDMap.FindKey(theID);
-  return aS;
-}
diff --git a/src/StdMeshers/StdMeshers_Penta_3D.hxx b/src/StdMeshers/StdMeshers_Penta_3D.hxx
deleted file mode 100644 (file)
index dc8ba72..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-//  SMESH StdMeshers : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Penta_3D.hxx
-//  Module : SMESH
-
-#ifndef StdMeshers_Penta_3D_HeaderFile
-#define StdMeshers_Penta_3D_HeaderFile
-
-#include <map>
-
-////////////////////////////////////////////////////////////////////////
-//
-//  class StdMeshers_SMESHBlock
-//
-////////////////////////////////////////////////////////////////////////
-#include <gp_Pnt.hxx>
-#include <gp_XYZ.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <TopoDS_Shell.hxx>
-#include <TopTools_IndexedMapOfOrientedShape.hxx>
-
-#include "SMESH_Block.hxx"
-
-typedef std::map< double, std::vector<const SMDS_MeshNode*> > StdMeshers_IJNodeMap;
-
-class StdMeshers_SMESHBlock {
-public:
-  //
-  StdMeshers_SMESHBlock();
-  
-  void Load (const TopoDS_Shell& theShell);
-  
-  void Load (const TopoDS_Shell& theShell,
-            const TopoDS_Vertex& theV000,
-            const TopoDS_Vertex& theV001);
-  
-  void ComputeParameters(const gp_Pnt& thePnt, 
-                        gp_XYZ& theXYZ);
-  
-  void ComputeParameters(const gp_Pnt& thePnt,
-                        const TopoDS_Shape& theShape,
-                        gp_XYZ& theXYZ);
-  
-  void ComputeParameters(const double& theU,
-                        const TopoDS_Shape& theShape,
-                        gp_XYZ& theXYZ);
-  
-  void Point(const gp_XYZ& theParams, 
-            gp_Pnt& thePnt);
-  
-  void Point(const gp_XYZ& theParams,
-            const TopoDS_Shape& theShape, 
-            gp_Pnt& thePnt);
-  
-  int ShapeID(const TopoDS_Shape& theShape); 
-  
-  const TopoDS_Shape& Shape(const int theID);
-
-  SMESH_Block & Block() { return myTBlock; }
-
-  bool IsForwadEdge(const int theEdgeID);
-
-  int  ErrorStatus() const;
-
-
-protected:
-  TopoDS_Shell                       myShell;
-  TopTools_IndexedMapOfOrientedShape myShapeIDMap;
-  SMESH_Block                        myTBlock;
-  TopoDS_Shape                       myEmptyShape;
-  vector<int>                        myIsEdgeForward;
-  //
-  int myErrorStatus;
-};
-
-////////////////////////////////////////////////////////////////////////
-//
-//  class StdMeshers_TNode
-//
-////////////////////////////////////////////////////////////////////////
-#include "SMDS_MeshNode.hxx"
-
-class StdMeshers_TNode {
-
-public:
-  
-  StdMeshers_TNode(){
-    myNode=NULL;
-    myXYZ.SetCoord(99., 99., 99.);
-    myShapeSupportID=-1;
-    myBaseNodeID=-1;
-  }
-  
-  void SetNode(const SMDS_MeshNode* theNode) {
-    myNode=(SMDS_MeshNode*) theNode;
-  }
-  
-  const SMDS_MeshNode* Node()const {
-    return myNode;
-  }
-
-  void SetShapeSupportID (const int theID) {
-    myShapeSupportID=theID;
-  }
-  
-  int ShapeSupportID()const {
-    return myShapeSupportID;
-  }
-  
-  void SetNormCoord (const gp_XYZ& theXYZ) {
-    myXYZ=theXYZ;
-  }
-
-  const gp_XYZ& NormCoord ()const{
-    return myXYZ;
-  }
-  
-  void SetBaseNodeID (const int theID) {
-    myBaseNodeID=theID;
-  }
-  
-  int BaseNodeID ()const{
-    return myBaseNodeID;
-  }
-
-private:
-  SMDS_MeshNode* myNode;
-  int  myShapeSupportID;
-  gp_XYZ         myXYZ;
-  int            myBaseNodeID;
-};
-
-////////////////////////////////////////////////////////////////////////
-//
-//  class StdMeshers_Penta_3D
-//
-////////////////////////////////////////////////////////////////////////
-#include "SMESH_Mesh.hxx"
-#include <TopoDS_Shape.hxx>
-//
-class StdMeshers_Penta_3D {
-//
-  public: // methods
-    StdMeshers_Penta_3D();
-    
-    //~StdMeshers_Penta_3D();
-    
-    bool Compute(SMESH_Mesh& , const TopoDS_Shape& );
-    
-    int ErrorStatus() const {
-      return myErrorStatus;
-    }
-   
-    void SetTolerance(const double theTol3D) {
-      myTol3D=theTol3D;
-    }
-    
-    double Tolerance() const {
-      return myTol3D;
-    }
-
-    static bool LoadIJNodes(StdMeshers_IJNodeMap & theIJNodes,
-                            const TopoDS_Face&     theFace,
-                            const TopoDS_Edge&     theBaseEdge,
-                            SMESHDS_Mesh*          theMesh);
-    // Load nodes bound to theFace into column (vectors) and rows
-    // of theIJNodes.
-    // The value of theIJNodes map is a vector of ordered nodes so
-    // that the 0-the one lies on theBaseEdge.
-    // The key of theIJNodes map is a normalized parameter of each
-    // 0-the node on theBaseEdge.
-
-
-  protected: // methods
-    
-    void CheckData();
-    
-    void MakeBlock();
-
-    void MakeNodes();
-
-    double SetHorizEdgeXYZ(const gp_XYZ&                  aBNXYZ,
-                           const int                      aFaceID,
-                           vector<const SMDS_MeshNode*>*& aCol1,
-                           vector<const SMDS_MeshNode*>*& aCol2);
-
-    void ShapeSupportID(const bool theIsUpperLayer,
-                       const SMESH_Block::TShapeID theBNSSID,
-                       SMESH_Block::TShapeID& theSSID);
-
-    void FindNodeOnShape(const TopoDS_Shape& aS,
-                        const gp_XYZ& aParams,
-                         const int z,
-                        StdMeshers_TNode& aTN);
-
-    void CreateNode(const bool theIsUpperLayer,
-                   const gp_XYZ& aParams,
-                   StdMeshers_TNode& aTN);
-
-    void ClearMeshOnFxy1();
-
-    void MakeMeshOnFxy1();
-
-    void MakeConnectingMap();
-
-    int GetIndexOnLayer(const int aID);
-
-    void MakeVolumeMesh();
-  
-    void SetMesh(SMESH_Mesh& theMesh) {
-      myMesh=(void *)&theMesh;
-    }
-    
-    SMESH_Mesh* GetMesh()const {
-      return (SMESH_Mesh*)myMesh;
-    }
-    
-  protected: // fields
-    TopoDS_Shape              myShape;
-    StdMeshers_SMESHBlock     myBlock;
-    void *                    myMesh;
-    int                       myErrorStatus;
-    //
-    vector <StdMeshers_TNode> myTNodes;
-    int                       myISize;
-    int                       myJSize;
-    double                    myTol3D;        // Tolerance value     
-    std::map < int, int >     myConnectingMap;
-    //
-    vector<StdMeshers_IJNodeMap> myWallNodesMaps; // nodes on a face
-    vector<gp_XYZ>            myShapeXYZ; // point on each sub-shape
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_Propagation.cxx b/src/StdMeshers/StdMeshers_Propagation.cxx
deleted file mode 100644 (file)
index f314b4c..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  CEA
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : StdMeshers_Propagation.cxx
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_Propagation.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-StdMeshers_Propagation::StdMeshers_Propagation (int hypId, int studyId,
-                                                SMESH_Gen * gen)
-     : SMESH_Hypothesis(hypId, studyId, gen)
-{
-  _name = GetName();
-  _param_algo_dim = -2;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-StdMeshers_Propagation::~StdMeshers_Propagation()
-{
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-ostream & StdMeshers_Propagation::SaveTo (ostream & save)
-{
-  return save;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-istream & StdMeshers_Propagation::LoadFrom (istream & load)
-{
-  return load;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-ostream & operator << (ostream & save, StdMeshers_Propagation & hyp)
-{
-  return hyp.SaveTo(save);
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-istream & operator >> (istream & load, StdMeshers_Propagation & hyp)
-{
-  return hyp.LoadFrom(load);
-}
-
-//=============================================================================
-/*!
- *  GetName
- */
-//=============================================================================
-std::string StdMeshers_Propagation::GetName ()
-{
-  return "Propagation";
-}
diff --git a/src/StdMeshers/StdMeshers_Propagation.hxx b/src/StdMeshers/StdMeshers_Propagation.hxx
deleted file mode 100644 (file)
index 4ee7c56..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  CEA
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : StdMeshers_Propagation.hxx
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_PROPAGATION_HXX_
-#define _SMESH_PROPAGATION_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-class StdMeshers_Propagation:public SMESH_Hypothesis
-{
- public:
-  StdMeshers_Propagation(int hypId, int studyId, SMESH_Gen * gen);
-  virtual ~ StdMeshers_Propagation();
-
-  virtual ostream & SaveTo(ostream & save);
-  virtual istream & LoadFrom(istream & load);
-  friend ostream & operator <<(ostream & save, StdMeshers_Propagation & hyp);
-  friend istream & operator >>(istream & load, StdMeshers_Propagation & hyp);
-
-  static std::string GetName ();
-};
-
-#endif
diff --git a/src/StdMeshers/StdMeshers_StartEndLength.cxx b/src/StdMeshers/StdMeshers_StartEndLength.cxx
deleted file mode 100644 (file)
index 1d70162..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-//  SMESH StdMeshers_StartEndLength : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_StartEndLength.cxx
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-
-#include "StdMeshers_StartEndLength.hxx"
-#include "utilities.h"
-
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_StartEndLength::StdMeshers_StartEndLength(int         hypId,
-                                                     int         studyId,
-                                                     SMESH_Gen * gen)
-     :SMESH_Hypothesis(hypId, studyId, gen)
-{
-  _begLength = 1.;
-  _endLength = 1.;
-  _name = "StartEndLength";
-  _param_algo_dim = 1; // is used by SMESH_Regular_1D
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_StartEndLength::~StdMeshers_StartEndLength()
-{
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-void StdMeshers_StartEndLength::SetLength(double length, bool isStartLength)
-     throw(SALOME_Exception)
-{
-  if ( (isStartLength ? _begLength : _endLength) != length ) {
-    if (length <= 0)
-      throw SALOME_Exception(LOCALIZED("length must be positive"));
-    if ( isStartLength )
-      _begLength = length;
-    else
-      _endLength = length;
-
-    NotifySubMeshesHypothesisModification();
-  }
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-double StdMeshers_StartEndLength::GetLength(bool isStartLength) const
-{
-  return isStartLength ? _begLength : _endLength;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & StdMeshers_StartEndLength::SaveTo(ostream & save)
-{
-  save << _begLength << " " <<_endLength;
-  return save;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & StdMeshers_StartEndLength::LoadFrom(istream & load)
-{
-  bool isOK = true;
-  isOK = (load >> _begLength);
-  if (!isOK)
-    load.clear(ios::badbit | load.rdstate());
-  isOK = (load >> _endLength);
-  if (!isOK)
-    load.clear(ios::badbit | load.rdstate());
-  return load;
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator <<(ostream & save, StdMeshers_StartEndLength & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >>(istream & load, StdMeshers_StartEndLength & hyp)
-{
-  return hyp.LoadFrom( load );
-}
diff --git a/src/StdMeshers/StdMeshers_StartEndLength.hxx b/src/StdMeshers/StdMeshers_StartEndLength.hxx
deleted file mode 100644 (file)
index 05bd2e0..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//  SMESH StdMeshers : implementaion of SMESH idl descriptions
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_StartEndLength.hxx
-//  Module : SMESH
-//  $Header$
-
-#ifndef _STDMESHERS_STARTENDLENGTH_HXX_
-#define _STDMESHERS_STARTENDLENGTH_HXX_
-
-#include "SMESH_Hypothesis.hxx"
-#include "Utils_SALOME_Exception.hxx"
-
-class StdMeshers_StartEndLength:public SMESH_Hypothesis
-{
- public:
-  StdMeshers_StartEndLength(int hypId, int studyId, SMESH_Gen * gen);
-  virtual ~ StdMeshers_StartEndLength();
-
-  void SetLength(double length, bool isStartLength) throw(SALOME_Exception);
-
-  double GetLength(bool isStartLength) const;
-  
-  virtual ostream & SaveTo(ostream & save);
-  virtual istream & LoadFrom(istream & load);
-  friend ostream & operator <<(ostream & save, StdMeshers_StartEndLength & hyp);
-  friend istream & operator >>(istream & load, StdMeshers_StartEndLength & hyp);
-
- protected:
-  double _begLength, _endLength;
-};
-
-#endif
diff --git a/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.hxx b/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.hxx
deleted file mode 100644 (file)
index 090f0a7..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Arithmetic1D_i.hxx
-//  Author : Damien COQUERET, OCC
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_ARITHMETIC1D_I_HXX_
-#define _SMESH_ARITHMETIC1D_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-#include "StdMeshers_Arithmetic1D.hxx"
-
-// ======================================================
-// Arithmetic 1D hypothesis
-// ======================================================
-class StdMeshers_Arithmetic1D_i:
-  public virtual POA_StdMeshers::StdMeshers_Arithmetic1D,
-  public virtual SMESH_Hypothesis_i
-{
-public:
-  // Constructor
-  StdMeshers_Arithmetic1D_i( PortableServer::POA_ptr thePOA,
-                            int                     theStudyId,
-                           ::SMESH_Gen*            theGenImpl );
-  // Destructor
-  virtual ~StdMeshers_Arithmetic1D_i();
-
-  // Set length
-  void SetLength( CORBA::Double theLength, CORBA::Boolean theIsStart )
-    throw ( SALOME::SALOME_Exception );
-  // Get length
-  CORBA::Double GetLength(CORBA::Boolean theIsStart);
-
-  // Get implementation
-  ::StdMeshers_Arithmetic1D* GetImpl();
-  
-  // Verify whether hypothesis supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
diff --git a/src/StdMeshers_I/StdMeshers_Deflection1D_i.hxx b/src/StdMeshers_I/StdMeshers_Deflection1D_i.hxx
deleted file mode 100644 (file)
index 138b1d9..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Deflection1D_i.hxx
-//           Moved here from SMESH_LocalLength_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_Deflection1D_I_HXX_
-#define _SMESH_Deflection1D_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-#include "StdMeshers_Deflection1D.hxx"
-
-class SMESH_Gen;
-
-// ======================================================
-// Local Length hypothesis
-// ======================================================
-class StdMeshers_Deflection1D_i:
-  public virtual POA_StdMeshers::StdMeshers_Deflection1D,
-  public virtual SMESH_Hypothesis_i
-{
-public:
-  // Constructor
-  StdMeshers_Deflection1D_i( PortableServer::POA_ptr thePOA,
-                       int                     theStudyId,
-                       ::SMESH_Gen*            theGenImpl );
-  // Destructor
-  virtual ~StdMeshers_Deflection1D_i();
-
-  // Set deflection
-  void SetDeflection( CORBA::Double theLength )
-    throw ( SALOME::SALOME_Exception );
-  // Get deflection
-  CORBA::Double GetDeflection();
-
-  // Get implementation
-  ::StdMeshers_Deflection1D* GetImpl();
-  
-  // Verify whether hypothesis supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
-
diff --git a/src/StdMeshers_I/StdMeshers_Hexa_3D_i.cxx b/src/StdMeshers_I/StdMeshers_Hexa_3D_i.cxx
deleted file mode 100644 (file)
index 0ca4839..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Hexa_3D_i.cxx
-//           Moved here from SMESH_Hexa_3D_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_Hexa_3D_i.hxx"
-#include "SMESH_Gen.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  StdMeshers_Hexa_3D_i::StdMeshers_Hexa_3D_i
- *
- *  Constructor
- */
-//=============================================================================
-
-StdMeshers_Hexa_3D_i::StdMeshers_Hexa_3D_i( PortableServer::POA_ptr thePOA,
-                                 int                     theStudyId,
-                                 ::SMESH_Gen*            theGenImpl )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA ), 
-       SMESH_Algo_i( thePOA ),
-       SMESH_3D_Algo_i( thePOA )
-{
-  MESSAGE( "StdMeshers_Hexa_3D_i::StdMeshers_Hexa_3D_i" );
-  myBaseImpl = new ::StdMeshers_Hexa_3D( theGenImpl->GetANewId(),
-                                   theStudyId,
-                                   theGenImpl );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_Hexa_3D_i::~StdMeshers_Hexa_3D_i
- *
- *  Destructor
- */
-//=============================================================================
-
-StdMeshers_Hexa_3D_i::~StdMeshers_Hexa_3D_i()
-{
-  MESSAGE( "StdMeshers_Hexa_3D_i::~StdMeshers_Hexa_3D_i" );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_Hexa_3D_i::GetImpl
- *
- *  Get implementation
- */
-//=============================================================================
-
-::StdMeshers_Hexa_3D* StdMeshers_Hexa_3D_i::GetImpl()
-{
-  MESSAGE( "StdMeshers_Hexa_3D_i::GetImpl" );
-  return ( ::StdMeshers_Hexa_3D* )myBaseImpl;
-}
diff --git a/src/StdMeshers_I/StdMeshers_Hexa_3D_i.hxx b/src/StdMeshers_I/StdMeshers_Hexa_3D_i.hxx
deleted file mode 100644 (file)
index 91bcabd..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Hexa_3D_i.hxx
-//           Moved here from SMESH_Hexa_3D_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_HEXA_3D_I_HXX_
-#define _SMESH_HEXA_3D_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_3D_Algo_i.hxx"
-#include "StdMeshers_Hexa_3D.hxx"
-
-class SMESH_Gen;
-
-// ======================================================
-// Hexaedron 3d algorithm
-// ======================================================
-class StdMeshers_Hexa_3D_i:
-  public virtual POA_StdMeshers::StdMeshers_Hexa_3D,
-  public virtual SMESH_3D_Algo_i
-{
-public:
-  // Constructor
-  StdMeshers_Hexa_3D_i( PortableServer::POA_ptr thePOA,
-                   int                     theStudyId,
-                  ::SMESH_Gen*            theGenImpl );
-
-  // Destructor
-  virtual ~StdMeshers_Hexa_3D_i();
-
-  // Get implementation
-  ::StdMeshers_Hexa_3D* GetImpl();
-};
-
-#endif
diff --git a/src/StdMeshers_I/StdMeshers_LengthFromEdges_i.cxx b/src/StdMeshers_I/StdMeshers_LengthFromEdges_i.cxx
deleted file mode 100644 (file)
index 35d871c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_LengthFromEdges_i.cxx
-//           Moved here from SMESH_LengthFromEdges_i.cxx
-//  Author : Nadir BOUHAMOU CEA/DEN, Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_LengthFromEdges_i.hxx"
-#include "SMESH_Gen.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  StdMeshers_LengthFromEdges_i::StdMeshers_LengthFromEdges_i
- *
- *  Constructor
- */
-//=============================================================================
-
-StdMeshers_LengthFromEdges_i::StdMeshers_LengthFromEdges_i( PortableServer::POA_ptr thePOA,
-                                                 int                     theStudyId,
-                                                 ::SMESH_Gen*            theGenImpl )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA )
-{
-  MESSAGE( "StdMeshers_LengthFromEdges_i::StdMeshers_LengthFromEdges_i" );
-  myBaseImpl = new ::StdMeshers_LengthFromEdges( theGenImpl->GetANewId(),
-                                           theStudyId,
-                                           theGenImpl );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_LengthFromEdges_i::~StdMeshers_LengthFromEdges_i
- *
- *  Destructor
- */
-//=============================================================================
-
-StdMeshers_LengthFromEdges_i::~StdMeshers_LengthFromEdges_i()
-{
-  MESSAGE( "StdMeshers_LengthFromEdges_i::~StdMeshers_LengthFromEdges_i" );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_LengthFromEdges_i::SetMode
- *
- *  Set mode
- */
-//=============================================================================
-
-void StdMeshers_LengthFromEdges_i::SetMode( CORBA::Long theMode )
-  throw (SALOME::SALOME_Exception)
-{
-  MESSAGE( "StdMeshers_LengthFromEdges_i::SetMode" );
-  ASSERT( myBaseImpl );
-  try {
-    this->GetImpl()->SetMode( theMode );
-  }
-  catch ( SALOME_Exception& S_ex ) {
-    THROW_SALOME_CORBA_EXCEPTION( S_ex.what(),
-                                 SALOME::BAD_PARAM );
-  }
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_LengthFromEdges_i::GetMode
- *
- *  Get mode
- */
-//=============================================================================
-
-CORBA::Long StdMeshers_LengthFromEdges_i::GetMode()
-{
-  MESSAGE( "StdMeshers_LengthFromEdges_i::GetMode" );
-  ASSERT( myBaseImpl );
-  return this->GetImpl()->GetMode();
-}
-
-
-//=============================================================================
-/*!
- *  StdMeshers_LengthFromEdges_i::GetImpl
- *
- *  Get implementation
- */
-//=============================================================================
-
-::StdMeshers_LengthFromEdges* StdMeshers_LengthFromEdges_i::GetImpl()
-{
-  MESSAGE( "StdMeshers_LengthFromEdges_i::GetImpl" );
-  return ( ::StdMeshers_LengthFromEdges* )myBaseImpl;
-}
-
-//================================================================================
-/*!
- * \brief Verify whether hypothesis supports given entity type 
-  * \param type - dimension (see SMESH::Dimension enumeration)
-  * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
- * 
- * Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration)
- */
-//================================================================================  
-CORBA::Boolean StdMeshers_LengthFromEdges_i::IsDimSupported( SMESH::Dimension type )
-{
-  return type == SMESH::DIM_2D;
-}
-
diff --git a/src/StdMeshers_I/StdMeshers_LengthFromEdges_i.hxx b/src/StdMeshers_I/StdMeshers_LengthFromEdges_i.hxx
deleted file mode 100644 (file)
index 1075278..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_LengthFromEdges_i.hxx
-//           Moved here from SMESH_LengthFromEdges_i.hxx
-//  Author : Nadir BOUHAMOU CEA/DEN, Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_LENGTHFROMEDGES_I_HXX_
-#define _SMESH_LENGTHFROMEDGES_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-#include "StdMeshers_LengthFromEdges.hxx"
-
-// ======================================================
-// Length from edges hypothesis
-// ======================================================
-class StdMeshers_LengthFromEdges_i:
-  public virtual POA_StdMeshers::StdMeshers_LengthFromEdges,
-  public virtual SMESH_Hypothesis_i
-{
-public:
-  // Constructor
-  StdMeshers_LengthFromEdges_i( PortableServer::POA_ptr thePOA,
-                           int                     theStudyId,
-                           ::SMESH_Gen*            theGenImpl );
-  // Destructor
-  virtual ~StdMeshers_LengthFromEdges_i();
-
-  // Set mode
-  void SetMode( CORBA::Long theMode )
-    throw ( SALOME::SALOME_Exception );
-  // Get mode
-  CORBA::Long GetMode();
-
-  // Get implementation
-  ::StdMeshers_LengthFromEdges* GetImpl();
-  
-  // Verify whether hypothesis supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
-
diff --git a/src/StdMeshers_I/StdMeshers_LocalLength_i.hxx b/src/StdMeshers_I/StdMeshers_LocalLength_i.hxx
deleted file mode 100644 (file)
index f0b6b21..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_LocalLength_i.hxx
-//           Moved here from SMESH_LocalLength_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_LOCALLENGTH_I_HXX_
-#define _SMESH_LOCALLENGTH_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-#include "StdMeshers_LocalLength.hxx"
-
-class SMESH_Gen;
-
-// ======================================================
-// Local Length hypothesis
-// ======================================================
-class StdMeshers_LocalLength_i:
-  public virtual POA_StdMeshers::StdMeshers_LocalLength,
-  public virtual SMESH_Hypothesis_i
-{
-public:
-  // Constructor
-  StdMeshers_LocalLength_i( PortableServer::POA_ptr thePOA,
-                       int                     theStudyId,
-                       ::SMESH_Gen*            theGenImpl );
-  // Destructor
-  virtual ~StdMeshers_LocalLength_i();
-
-  // Set length
-  void SetLength( CORBA::Double theLength )
-    throw ( SALOME::SALOME_Exception );
-  // Get length
-  CORBA::Double GetLength();
-
-  // Get implementation
-  ::StdMeshers_LocalLength* GetImpl();
-  
-  // Verify whether hypothesis supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
-
diff --git a/src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx b/src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.cxx
deleted file mode 100644 (file)
index efcc37c..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MEFISTO_2D_i.cxx
-//           Moved here from SMESH_MEFISTO_2D_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_MEFISTO_2D_i.hxx"
-#include "SMESH_Gen.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  StdMeshers_MEFISTO_2D_i::StdMeshers_MEFISTO_2D_i
- *
- *  Constructor
- */
-//=============================================================================
-
-StdMeshers_MEFISTO_2D_i::StdMeshers_MEFISTO_2D_i( PortableServer::POA_ptr thePOA,
-                                       int                     theStudyId,
-                                       ::SMESH_Gen*            theGenImpl )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA ), 
-       SMESH_Algo_i( thePOA ),
-       SMESH_2D_Algo_i( thePOA )
-{
-  MESSAGE( "StdMeshers_MEFISTO_2D_i::StdMeshers_MEFISTO_2D_i" );
-  myBaseImpl = new ::StdMeshers_MEFISTO_2D( theGenImpl->GetANewId(),
-                                      theStudyId,
-                                      theGenImpl );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_MEFISTO_2D_i::~StdMeshers_MEFISTO_2D_i
- *
- *  Destructor
- */
-//=============================================================================
-
-StdMeshers_MEFISTO_2D_i::~StdMeshers_MEFISTO_2D_i()
-{
-  MESSAGE( "StdMeshers_MEFISTO_2D_i::~StdMeshers_MEFISTO_2D_i" );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_MEFISTO_2D_i::GetImpl
- *
- *  Get implementation
- */
-//=============================================================================
-
-::StdMeshers_MEFISTO_2D* StdMeshers_MEFISTO_2D_i::GetImpl()
-{
-  MESSAGE( "StdMeshers_MEFISTO_2D_i::GetImpl" );
-  return ( ::StdMeshers_MEFISTO_2D* )myBaseImpl;
-}
-
diff --git a/src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx b/src/StdMeshers_I/StdMeshers_MEFISTO_2D_i.hxx
deleted file mode 100644 (file)
index d7021df..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MEFISTO_2D_i.hxx
-//           Moved here from SMESH_MEFISTO_2D_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _StdMeshers_MEFISTO_2D_I_HXX_
-#define _StdMeshers_MEFISTO_2D_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_2D_Algo_i.hxx"
-#include "StdMeshers_MEFISTO_2D.hxx"
-
-class SMESH_Gen;
-
-// ======================================================
-// Triangle (MEFISTO) 2d algorithm
-// ======================================================
-class StdMeshers_MEFISTO_2D_i:
-  public virtual POA_StdMeshers::StdMeshers_MEFISTO_2D,
-  public virtual SMESH_2D_Algo_i
-{
-public:
-  // Constructor
-  StdMeshers_MEFISTO_2D_i( PortableServer::POA_ptr thePOA,
-                      int                     theStudyId,
-                     ::SMESH_Gen*            theGenImpl );
-
-  // Destructor
-  virtual ~StdMeshers_MEFISTO_2D_i();
-
-  // Get implementation
-  ::StdMeshers_MEFISTO_2D* GetImpl();
-};
-
-#endif
diff --git a/src/StdMeshers_I/StdMeshers_MaxElementArea_i.hxx b/src/StdMeshers_I/StdMeshers_MaxElementArea_i.hxx
deleted file mode 100644 (file)
index 39dde76..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MaxElementArea_i.hxx
-//           Moved here from SMESH_MaxElementArea_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_MAXELEMENTAREA_I_HXX_
-#define _SMESH_MAXELEMENTAREA_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-#include "StdMeshers_MaxElementArea.hxx"
-
-// ======================================================
-// Maximum Element Area hypothesis
-// ======================================================
-class StdMeshers_MaxElementArea_i:
-  public virtual POA_StdMeshers::StdMeshers_MaxElementArea,
-  public virtual SMESH_Hypothesis_i
-{
-public:
-  // Constructor
-  StdMeshers_MaxElementArea_i( PortableServer::POA_ptr thePOA,
-                          int                     theStudyId,
-                         ::SMESH_Gen*            theGenImpl );
-  // Destructor
-  virtual ~StdMeshers_MaxElementArea_i();
-
-  // Set maximum element area 
-  void SetMaxElementArea( CORBA::Double theArea )
-    throw ( SALOME::SALOME_Exception );
-  // Get maximum element area 
-  CORBA::Double GetMaxElementArea();
-
-  // Get implementation
-  ::StdMeshers_MaxElementArea* GetImpl();
-  
-  // Verify whether hypothesis supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
diff --git a/src/StdMeshers_I/StdMeshers_MaxElementVolume_i.hxx b/src/StdMeshers_I/StdMeshers_MaxElementVolume_i.hxx
deleted file mode 100644 (file)
index 928fab5..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_MaxElementVolume_i.hxx
-//           Moved here from SMESH_MaxElementVolume_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_MAXELEMENTVOLUME_I_HXX_
-#define _SMESH_MAXELEMENTVOLUME_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-#include "StdMeshers_MaxElementVolume.hxx"
-
-// ======================================================
-// Maximum Element Volume hypothesis
-// ======================================================
-class StdMeshers_MaxElementVolume_i:
-  public virtual POA_StdMeshers::StdMeshers_MaxElementVolume,
-  public virtual SMESH_Hypothesis_i
-{
-public:
-  // Constructor
-  StdMeshers_MaxElementVolume_i( PortableServer::POA_ptr thePOA,
-                            int                     theStudyId,
-                            ::SMESH_Gen*            theGenImpl );
-  // Destructor
-  virtual ~StdMeshers_MaxElementVolume_i();
-
-  // Set maximum element volume
-  void SetMaxElementVolume( CORBA::Double theVolume )
-    throw (SALOME::SALOME_Exception);
-  // Get maximum element volume
-  CORBA::Double GetMaxElementVolume();
-
-  // Get implementation
-  ::StdMeshers_MaxElementVolume* GetImpl();
-  
-  // Verify whether hypothesis supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
diff --git a/src/StdMeshers_I/StdMeshers_NotConformAllowed_i.cxx b/src/StdMeshers_I/StdMeshers_NotConformAllowed_i.cxx
deleted file mode 100644 (file)
index 8940cf7..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//  SMESH StdMeshers_I : idl implementation based on 'SMESH' unit's classes
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_NotConformAllowed_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-using namespace std;
-#include "StdMeshers_NotConformAllowed_i.hxx"
-#include "SMESH_Gen.hxx"
-
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  Constructor: 
- *  _name is related to the class name: prefix = SMESH_ ; suffix = _i .
- */
-//=============================================================================
-
-StdMeshers_NotConformAllowed_i::StdMeshers_NotConformAllowed_i
-                                (PortableServer::POA_ptr thePOA,
-                                 int                     studyId,
-                                 ::SMESH_Gen*            genImpl)
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA )
-{
-  MESSAGE("StdMeshers_NotConformAllowed_i::StdMeshers_NotConformAllowed_i");
-  myBaseImpl = new ::StdMeshers_NotConformAllowed(genImpl->GetANewId(),
-                                                  studyId,
-                                                  genImpl);
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-StdMeshers_NotConformAllowed_i::~StdMeshers_NotConformAllowed_i()
-{
-}
-
-//================================================================================
-/*!
- * \brief Verify whether hypothesis supports given entity type 
-  * \param type - dimension (see SMESH::Dimension enumeration)
-  * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
- * 
- * Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration)
- */
-//================================================================================  
-CORBA::Boolean StdMeshers_NotConformAllowed_i::IsDimSupported( SMESH::Dimension /*type*/ )
-{
-  return true;
-}
-
-
-
diff --git a/src/StdMeshers_I/StdMeshers_NotConformAllowed_i.hxx b/src/StdMeshers_I/StdMeshers_NotConformAllowed_i.hxx
deleted file mode 100644 (file)
index ceddb32..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//  SMESH StdMeshers_I : idl implementation based on 'SMESH' unit's classes
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_NotConformAllowed_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _StdMeshers_NotConformAllowed_I_HXX_
-#define _StdMeshers_NotConformAllowed_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-
-#include "StdMeshers_NotConformAllowed.hxx"
-
-class StdMeshers_NotConformAllowed_i:
-  public POA_StdMeshers::StdMeshers_NotConformAllowed,
-  public SMESH_Hypothesis_i
-{
-public:
-  StdMeshers_NotConformAllowed_i(PortableServer::POA_ptr thePOA,
-                                 int studyId,
-                                 ::SMESH_Gen* genImpl);
-  virtual ~StdMeshers_NotConformAllowed_i();
-  
-  // Verify whether hypothesis supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-
-protected:
-  ::StdMeshers_NotConformAllowed* _impl;
-};
-
-#endif
-
diff --git a/src/StdMeshers_I/StdMeshers_Propagation_i.cxx b/src/StdMeshers_I/StdMeshers_Propagation_i.cxx
deleted file mode 100644 (file)
index 4e03874..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  CEA
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : StdMeshers_Propagation_i.cxx
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_Propagation_i.hxx"
-#include "SMESH_Gen.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  StdMeshers_Propagation_i::StdMeshers_Propagation_i
- *
- *  Constructor
- */
-//=============================================================================
-StdMeshers_Propagation_i::StdMeshers_Propagation_i (PortableServer::POA_ptr thePOA,
-                                                    int                     theStudyId,
-                                                    ::SMESH_Gen*            theGenImpl )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA )
-{
-  MESSAGE( "StdMeshers_Propagation_i::StdMeshers_Propagation_i" );
-  myBaseImpl = new ::StdMeshers_Propagation(theGenImpl->GetANewId(),
-                                            theStudyId,
-                                            theGenImpl);
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_Propagation_i::~StdMeshers_Propagation_i
- *
- *  Destructor
- */
-//=============================================================================
-StdMeshers_Propagation_i::~StdMeshers_Propagation_i()
-{
-  MESSAGE( "StdMeshers_Propagation_i::~StdMeshers_Propagation_i" );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_Propagation_i::GetImpl
- *
- *  Get implementation
- */
-//=============================================================================
-::StdMeshers_Propagation* StdMeshers_Propagation_i::GetImpl()
-{
-  MESSAGE( "StdMeshers_Propagation_i::GetImpl" );
-  return ( ::StdMeshers_Propagation* )myBaseImpl;
-}
-
-//================================================================================
-/*!
- * \brief Verify whether hypothesis supports given entity type 
-  * \param type - dimension (see SMESH::Dimension enumeration)
-  * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
- * 
- * Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration)
- */
-//================================================================================  
-CORBA::Boolean StdMeshers_Propagation_i::IsDimSupported( SMESH::Dimension type )
-{
-  return type == SMESH::DIM_1D;
-}
-
diff --git a/src/StdMeshers_I/StdMeshers_Propagation_i.hxx b/src/StdMeshers_I/StdMeshers_Propagation_i.hxx
deleted file mode 100644 (file)
index ca130bc..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  CEA
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-//
-//
-//
-//  File   : StdMeshers_Propagation_i.hxx
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_PROPAGATION_I_HXX_
-#define _SMESH_PROPAGATION_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-#include "StdMeshers_Propagation.hxx"
-
-class SMESH_Gen;
-
-// ======================================================
-// Propagation hypothesis
-// ======================================================
-class StdMeshers_Propagation_i:
-  public virtual POA_StdMeshers::StdMeshers_Propagation,
-  public virtual SMESH_Hypothesis_i
-{
-public:
-  // Constructor
-  StdMeshers_Propagation_i (PortableServer::POA_ptr thePOA,
-                            int                     theStudyId,
-                            ::SMESH_Gen*            theGenImpl);
-  // Destructor
-  virtual ~StdMeshers_Propagation_i();
-
-  // Get implementation
-  ::StdMeshers_Propagation* GetImpl();
-  
-  // Verify whether hypothesis supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
diff --git a/src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.cxx b/src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.cxx
deleted file mode 100644 (file)
index 059eac9..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Quadrangle_2D_i.cxx
-//           Moved here from SMESH_Quadrangle_2D_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_Quadrangle_2D_i.hxx"
-#include "SMESH_Gen.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  StdMeshers_Quadrangle_2D_i::StdMeshers_Quadrangle_2D_i
- *
- *  Constructor
- */
-//=============================================================================
-
-StdMeshers_Quadrangle_2D_i::StdMeshers_Quadrangle_2D_i( PortableServer::POA_ptr thePOA,
-                                             int                     theStudyId,
-                                             ::SMESH_Gen*            theGenImpl )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA ), 
-       SMESH_Algo_i( thePOA ),
-       SMESH_2D_Algo_i( thePOA )
-{
-  MESSAGE( "StdMeshers_Quadrangle_2D_i::StdMeshers_Quadrangle_2D_i" );
-  myBaseImpl = new ::StdMeshers_Quadrangle_2D( theGenImpl->GetANewId(),
-                                         theStudyId,
-                                         theGenImpl );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_Quadrangle_2D_i::~StdMeshers_Quadrangle_2D_i
- *
- *  Destructor
- *  
- */
-//=============================================================================
-
-StdMeshers_Quadrangle_2D_i::~StdMeshers_Quadrangle_2D_i()
-{
-  MESSAGE( "StdMeshers_Quadrangle_2D_i::~StdMeshers_Quadrangle_2D_i" );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_Quadrangle_2D_i::GetImpl
- *
- *  Get implementation
- */
-//=============================================================================
-
-::StdMeshers_Quadrangle_2D* StdMeshers_Quadrangle_2D_i::GetImpl()
-{
-  MESSAGE( "StdMeshers_Quadrangle_2D_i::GetImpl" );
-  return ( ::StdMeshers_Quadrangle_2D* )myBaseImpl;
-}
-
diff --git a/src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.hxx b/src/StdMeshers_I/StdMeshers_Quadrangle_2D_i.hxx
deleted file mode 100644 (file)
index a8c1e28..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Quadrangle_2D_i.hxx
-//           Moved here from SMESH_Quadrangle_2D_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_QUADRANGLE_2D_I_HXX_
-#define _SMESH_QUADRANGLE_2D_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_2D_Algo_i.hxx"
-#include "StdMeshers_Quadrangle_2D.hxx"
-
-class SMESH_Gen;
-
-// ======================================================
-// Quadrangle (Mapping) 2d algorithm
-// ======================================================
-class StdMeshers_Quadrangle_2D_i:
-  public virtual POA_StdMeshers::StdMeshers_Quadrangle_2D,
-  public virtual SMESH_2D_Algo_i
-{
-public:
-  // Constructor
-  StdMeshers_Quadrangle_2D_i( PortableServer::POA_ptr thePOA,
-                         int                     theStudyId,
-                        ::SMESH_Gen*            theGenImpl );
-
-  // Destructor
-  virtual ~StdMeshers_Quadrangle_2D_i();
-
-  // Get implementation
-  ::StdMeshers_Quadrangle_2D* GetImpl();
-};
-
-#endif
diff --git a/src/StdMeshers_I/StdMeshers_Regular_1D_i.cxx b/src/StdMeshers_I/StdMeshers_Regular_1D_i.cxx
deleted file mode 100644 (file)
index 24f322c..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Regular_1D_i.cxx
-//           Moved here from SMESH_Regular_1D_i.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-using namespace std;
-#include "StdMeshers_Regular_1D_i.hxx"
-#include "SMESH_Gen.hxx"
-
-#include "Utils_CorbaException.hxx"
-#include "utilities.h"
-
-//=============================================================================
-/*!
- *  StdMeshers_Regular_1D_i::StdMeshers_Regular_1D_i
- *
- *  Constructor
- */
-//=============================================================================
-
-StdMeshers_Regular_1D_i::StdMeshers_Regular_1D_i( PortableServer::POA_ptr thePOA,
-                                       int                     theStudyId,
-                                       ::SMESH_Gen*            theGenImpl )
-     : SALOME::GenericObj_i( thePOA ), 
-       SMESH_Hypothesis_i( thePOA ), 
-       SMESH_Algo_i( thePOA ),
-       SMESH_1D_Algo_i( thePOA )
-{
-  MESSAGE( "StdMeshers_Regular_1D_i::StdMeshers_Regular_1D_i" );
-  myBaseImpl = new ::StdMeshers_Regular_1D( theGenImpl->GetANewId(),
-                                      theStudyId,
-                                      theGenImpl );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_Regular_1D_i::~StdMeshers_Regular_1D_i
- *
- *  Destructor
- */
-//=============================================================================
-
-StdMeshers_Regular_1D_i::~StdMeshers_Regular_1D_i()
-{
-  MESSAGE( "StdMeshers_Regular_1D_i::~StdMeshers_Regular_1D_i" );
-}
-
-//=============================================================================
-/*!
- *  StdMeshers_Regular_1D_i::GetImpl
- *
- *  Get implementation
- */
-//=============================================================================
-
-::StdMeshers_Regular_1D* StdMeshers_Regular_1D_i::GetImpl()
-{
-  MESSAGE( "StdMeshers_Regular_1D_i::GetImpl" );
-  return ( ::StdMeshers_Regular_1D* )myBaseImpl;
-}
-
diff --git a/src/StdMeshers_I/StdMeshers_Regular_1D_i.hxx b/src/StdMeshers_I/StdMeshers_Regular_1D_i.hxx
deleted file mode 100644 (file)
index 3231532..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_Regular_1D_i.hxx
-//           Moved here from SMESH_Regular_1D_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_REGULAR_1D_I_HXX_
-#define _SMESH_REGULAR_1D_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_1D_Algo_i.hxx"
-#include "StdMeshers_Regular_1D.hxx"
-
-// ======================================================
-// Wire Discretization 1d algorithm
-// ======================================================
-class StdMeshers_Regular_1D_i:
-  public virtual POA_StdMeshers::StdMeshers_Regular_1D,
-  public virtual SMESH_1D_Algo_i
-{
-public:
-  // Constructor
-  StdMeshers_Regular_1D_i( PortableServer::POA_ptr thePOA,
-                      int                     theStudyId,
-                     ::SMESH_Gen*            theGenImpl );
-  // Destructor
-  virtual ~StdMeshers_Regular_1D_i();
-  // Get implementation
-  ::StdMeshers_Regular_1D* GetImpl();
-};
-
-#endif
diff --git a/src/StdMeshers_I/StdMeshers_StartEndLength_i.hxx b/src/StdMeshers_I/StdMeshers_StartEndLength_i.hxx
deleted file mode 100644 (file)
index d937f93..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
-//  File   : StdMeshers_StartEndLength_i.hxx
-//           Moved here from SMESH_LocalLength_i.hxx
-//  Author : Paul RASCLE, EDF
-//  Module : SMESH
-//  $Header$
-
-#ifndef _SMESH_StartEndLength_I_HXX_
-#define _SMESH_StartEndLength_I_HXX_
-
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
-
-#include "SMESH_Hypothesis_i.hxx"
-#include "StdMeshers_StartEndLength.hxx"
-
-class SMESH_Gen;
-
-// ======================================================
-// Local Length hypothesis
-// ======================================================
-class StdMeshers_StartEndLength_i:
-  public virtual POA_StdMeshers::StdMeshers_StartEndLength,
-  public virtual SMESH_Hypothesis_i
-{
-public:
-  // Constructor
-  StdMeshers_StartEndLength_i(PortableServer::POA_ptr thePOA,
-                              int                     theStudyId,
-                              ::SMESH_Gen*            theGenImpl );
-  // Destructor
-  virtual ~StdMeshers_StartEndLength_i();
-
-  // Set length
-  void SetLength( CORBA::Double theLength, CORBA::Boolean theIsStart )
-    throw ( SALOME::SALOME_Exception );
-  // Get length
-  CORBA::Double GetLength(CORBA::Boolean theIsStart);
-
-  // Get implementation
-  ::StdMeshers_StartEndLength* GetImpl();
-  
-  // Verify whether hypothesis supports given entity type 
-  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
-};
-
-#endif
-