From 0ef958966ddc357ef7fc0995ae139e0c64fad8e7 Mon Sep 17 00:00:00 2001 From: jfiat Date: Fri, 22 May 2020 15:25:48 +0000 Subject: [PATCH] create 20.05 branch git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@2240 abb3cda0-5349-4a8f-a601-0c33ac3a8c38 --- .../20.05/_images/Definition_icon_2.png | Bin 0 -> 1098 bytes .../20.05/_images/Definition_icon_2.png.data | 3 + documentation/20.05/_images/LogoBeta.png | Bin 0 -> 1127 bytes documentation/20.05/_images/LogoBeta.png.data | 3 + .../20.05/_images/LogoUpdateNeeded.png | Bin 0 -> 1465 bytes .../20.05/_images/LogoUpdateNeeded.png.data | 3 + documentation/20.05/_images/Review_icon_1.png | Bin 0 -> 1127 bytes .../20.05/_images/Review_icon_1.png.data | 3 + documentation/20.05/_images/Rule_icon_4_2.png | Bin 0 -> 1240 bytes .../20.05/_images/Rule_icon_4_2.png.data | 3 + .../20.05/_images/tpl_Construction.png | Bin 0 -> 1419 bytes .../20.05/_images/tpl_Construction.png.data | 3 + .../20.05/_images/tpl_Information.png | Bin 0 -> 1518 bytes .../20.05/_images/tpl_Information.png.data | 3 + .../20.05/_images/tpl_Recommended.png | Bin 0 -> 951 bytes .../20.05/_images/tpl_Recommended.png.data | 3 + documentation/20.05/_images/tpl_Warning.png | Bin 0 -> 1363 bytes .../20.05/_images/tpl_Warning.png.data | 3 + .../20.05/_others/community/index.wiki | 116 ++ documentation/20.05/_others/draft/index.wiki | 5 + .../_others/draft/multiple-inheritance.wiki | 49 + .../20.05/_others/draft/test-page.wiki | 5 + .../_images/static_documentation_page_0.png | Bin 0 -> 60050 bytes .../static_documentation_page_0.png.data | 3 + documentation/20.05/_others/guide/index.wiki | 186 +++ .../offline-use-eiffel-documentation.wiki | 30 + .../20.05/_others/why-eiffel/index.wiki | 11 + documentation/20.05/_templates/Beta.tpl | 1 + documentation/20.05/_templates/Beta.tpl.data | 3 + documentation/20.05/_templates/Caution.tpl | 2 + .../20.05/_templates/Caution.tpl.data | 3 + documentation/20.05/_templates/Info.tpl | 1 + documentation/20.05/_templates/Info.tpl.data | 3 + .../20.05/_templates/Inline-Error.tpl | 1 + .../20.05/_templates/Inline-Info.tpl | 1 + .../20.05/_templates/Inline-Success.tpl | 1 + .../20.05/_templates/Inline-Warning.tpl | 1 + documentation/20.05/_templates/Key.tpl | 1 + documentation/20.05/_templates/Key.tpl.data | 3 + documentation/20.05/_templates/Note.tpl | 1 + documentation/20.05/_templates/Note.tpl.data | 3 + .../20.05/_templates/Recommended.tpl | 1 + .../20.05/_templates/Recommended.tpl.data | 3 + .../20.05/_templates/ReviewRequested.tpl | 1 + .../20.05/_templates/ReviewRequested.tpl.data | 3 + documentation/20.05/_templates/Rule.tpl | 1 + documentation/20.05/_templates/Rule.tpl.data | 3 + documentation/20.05/_templates/Sample.tpl | 1 + .../20.05/_templates/Sample.tpl.data | 3 + documentation/20.05/_templates/SeeAlso.tpl | 1 + .../20.05/_templates/SeeAlso.tpl.data | 3 + documentation/20.05/_templates/Tip.tpl | 1 + documentation/20.05/_templates/Tip.tpl.data | 3 + .../20.05/_templates/UnderConstruction.tpl | 1 + .../_templates/UnderConstruction.tpl.data | 3 + .../20.05/_templates/UpdateNeeded.tpl | 1 + .../20.05/_templates/UpdateNeeded.tpl.data | 3 + documentation/20.05/_templates/Warning.tpl | 1 + .../20.05/_templates/Warning.tpl.data | 3 + documentation/20.05/_templates/definition.tpl | 1 + .../20.05/_templates/definition.tpl.data | 3 + .../20.05/contribute/documentation.wiki | 44 + .../20.05/contribute/editing_help.wiki | 123 ++ documentation/20.05/contribute/index.wiki | 10 + .../Eiffel-Code-Comments.wiki | 155 +++ .../Eiffel-Coding-Standard.wiki | 93 ++ .../Local-Declaration-Guidelines.wiki | 236 ++++ .../Coding_Standards/Style-Guidelines.wiki | 766 ++++++++++++ .../20.05/eiffel/Coding_Standards/index.wiki | 4 + .../example-command-line-arguments.wiki | 68 ++ .../example-environment-variables.wiki | 41 + .../eiffel/Examples/example-file-io.wiki | 52 + .../eiffel/Examples/example-polymorphism.wiki | 218 ++++ .../Examples/example-reverse-string.wiki | 41 + ...zing-attributes-and-assigner-commands.wiki | 84 ++ .../Examples/example-sieve-eratosthenes.wiki | 64 + .../20.05/eiffel/Examples/example-sleep.wiki | 54 + .../20.05/eiffel/Examples/index.wiki | 10 + .../Examples/introduction-examples-book.wiki | 26 + .../eiffel/Language_reference/index.wiki | 6 + .../Expressions/Conditional-expression.wiki | 32 + .../Expressions/Manifest-array.wiki | 85 ++ .../Expressions/index.wiki | 5 + .../Types.wiki | 44 + ...l-programming-language-reserved-words.wiki | 527 ++++++++ .../eiffel-programming-language-syntax.wiki | 785 ++++++++++++ .../index.wiki | 16 + ...-eiffel-libraries-support-void-safety.wiki | 88 ++ .../index.wiki | 335 ++++++ ...ng-void-safe-and-void-unsafe-software.wiki | 28 + .../creating-new-void-safe-project.wiki | 390 ++++++ .../void-safe-programming-eiffel/index.wiki | 23 + ...afety-background-definition-and-tools.wiki | 287 +++++ ...at-makes-certified-attachment-pattern.wiki | 182 +++ ...myths-and-misconceptions-about-eiffel.wiki | 82 ++ .../eiffel-two-minute-fact-sheet.wiki | 97 ++ .../20.05/eiffel/Overview/index.wiki | 5 + .../eiffel/Overview/learning-eiffel.wiki | 59 + ...y-your-next-project-should-use-eiffel.wiki | 185 +++ ...ur_-_Eiffel_Software_Technical_Report.wiki | 38 + .../Reusable-Software.wiki | 33 + .../ecma-standard-367.wiki | 16 + .../eiffel-language.wiki | 26 + .../index.wiki | 6 + ...ted-software-construction-2nd-edition.wiki | 39 + ...ng-program-well-objects-and-contracts.wiki | 38 + .../eiffel-expression-language.wiki | 20 + .../20.05/eiffel/Technical_papers/index.wiki | 9 + ...el-removes-null-pointer-dereferencing.wiki | 25 + ...etting-a-STRING-from-a-NUMERIC-object.wiki | 17 + ...Iterate-on-a-LIST-and-removing-object.wiki | 28 + .../Mini-HowTo/Iterating-on-a-LIST.wiki | 64 + .../Managing-CTRL-C-on-console.wiki | 54 + .../eiffel/Tutorials/Mini-HowTo/index.wiki | 10 + .../eiffel-tutorial-et/et-agents.wiki | 250 ++++ ...contract-tm-assertions-and-exceptions.wiki | 337 ++++++ .../et-dynamic-structure-execution-model.wiki | 697 +++++++++++ .../et-eiffel-tutorial-copyright.wiki | 34 + .../et-general-properties.wiki | 49 + .../et-genericity-and-arrays.wiki | 67 ++ .../eiffel-tutorial-et/et-hello-world.wiki | 80 ++ .../eiffel-tutorial-et/et-inheritance.wiki | 1057 +++++++++++++++++ .../eiffel-tutorial-et/et-instructions.wiki | 410 +++++++ .../eiffel-tutorial-et/et-learn-more.wiki | 15 + ...t-lexical-conventions-and-style-rules.wiki | 107 ++ .../et-once-routines-and-shared-objects.wiki | 91 ++ .../et-other-mechanisms.wiki | 345 ++++++ .../eiffel-tutorial-et/et-overview.wiki | 24 + .../et-software-process-eiffel.wiki | 66 + ...et-static-picture-system-organization.wiki | 76 ++ .../Tutorials/eiffel-tutorial-et/index.wiki | 6 + .../20.05/eiffel/Tutorials/index.wiki | 13 + .../invitation-eiffel-i2e/i2e-classes.wiki | 110 ++ ...-combining-genericity-and-inheritance.wiki | 34 + ...rred-classes-and-seamless-development.wiki | 64 + .../i2e-design-contract-and-assertions.wiki | 150 +++ .../i2e-design-principles.wiki | 22 + ...e-event-driven-programming-and-agents.wiki | 42 + .../invitation-eiffel-i2e/i2e-exceptions.wiki | 47 + .../invitation-eiffel-i2e/i2e-genericity.wiki | 28 + .../i2e-inheritance.wiki | 72 ++ .../i2e-invitation-eiffel-copyright.wiki | 37 + .../i2e-object-oriented-design.wiki | 25 + .../i2e-polymorphism-and-dynamic-binding.wiki | 71 ++ .../i2e-putting-system-together.wiki | 33 + .../invitation-eiffel-i2e/i2e-types.wiki | 24 + .../i2e-what-must-i-know-first.wiki | 10 + .../invitation-eiffel-i2e/index.wiki | 6 + .../eiffel/_files/expression_language.pdf | Bin 0 -> 403882 bytes .../20.05/eiffel/_files/void-safe-eiffel.pdf | Bin 0 -> 149618 bytes .../_images/Catcall_demo_class_diagram.png | Bin 0 -> 4013 bytes .../Catcall_demo_class_diagram.png.data | 3 + .../20.05/eiffel/_images/Catcall_warning.png | Bin 0 -> 53476 bytes .../eiffel/_images/Catcall_warning.png.data | 3 + .../20.05/eiffel/_images/ECMA-367_cover.png | Bin 0 -> 18263 bytes .../eiffel/_images/ECMA-367_cover.png.data | 3 + documentation/20.05/eiffel/_images/ETL.png | Bin 0 -> 17198 bytes .../20.05/eiffel/_images/ETL.png.data | 3 + .../20.05/eiffel/_images/OOSC2_small.png | Bin 0 -> 31077 bytes .../20.05/eiffel/_images/OOSC2_small.png.data | 3 + .../_images/Touch_of_Class_cover_small.png | Bin 0 -> 71734 bytes .../Touch_of_Class_cover_small.png.data | 3 + .../_images/Tour_sec_5_class_diagram.png | Bin 0 -> 17366 bytes .../_images/Tour_sec_5_class_diagram.png.data | 3 + .../20.05/eiffel/_images/VGCC_error.png | Bin 0 -> 22575 bytes .../20.05/eiffel/_images/VGCC_error.png.data | 3 + .../VoidSafeAddLibraryDialog_noGobo.png | Bin 0 -> 17525 bytes .../VoidSafeAddLibraryDialog_noGobo.png.data | 3 + .../eiffel/_images/VoidSafeErrorList.png | Bin 0 -> 40122 bytes .../eiffel/_images/VoidSafeErrorList.png.data | 3 + .../_images/VoidSafePrecompileOffer.png | Bin 0 -> 6908 bytes .../_images/VoidSafePrecompileOffer.png.data | 3 + .../20.05/eiffel/_images/VoidSafeVEVI1.png | Bin 0 -> 6494 bytes .../eiffel/_images/VoidSafeVEVI1.png.data | 3 + .../20.05/eiffel/_images/VoidSafeVJAR1.png | Bin 0 -> 12896 bytes .../eiffel/_images/VoidSafeVJAR1.png.data | 3 + .../20.05/eiffel/_images/invitation-2.png | Bin 0 -> 2456 bytes .../eiffel/_images/invitation-2.png.data | 3 + .../20.05/eiffel/_images/invitation-3.png | Bin 0 -> 2242 bytes .../eiffel/_images/invitation-3.png.data | 3 + .../20.05/eiffel/_images/invitation-4.png | Bin 0 -> 2818 bytes .../eiffel/_images/invitation-4.png.data | 3 + .../20.05/eiffel/_images/invitation-5.png | Bin 0 -> 3231 bytes .../eiffel/_images/invitation-5.png.data | 3 + .../20.05/eiffel/_images/tutorial-10.png | Bin 0 -> 2338 bytes .../20.05/eiffel/_images/tutorial-10.png.data | 3 + .../20.05/eiffel/_images/tutorial-11.png | Bin 0 -> 1200 bytes .../20.05/eiffel/_images/tutorial-11.png.data | 3 + .../20.05/eiffel/_images/tutorial-12.png | Bin 0 -> 3203 bytes .../20.05/eiffel/_images/tutorial-12.png.data | 3 + .../20.05/eiffel/_images/tutorial-13.png | Bin 0 -> 4177 bytes .../20.05/eiffel/_images/tutorial-13.png.data | 3 + .../20.05/eiffel/_images/tutorial-14.png | Bin 0 -> 3709 bytes .../20.05/eiffel/_images/tutorial-14.png.data | 3 + .../20.05/eiffel/_images/tutorial-2.png | Bin 0 -> 4303 bytes .../20.05/eiffel/_images/tutorial-2.png.data | 3 + .../20.05/eiffel/_images/tutorial-3.png | Bin 0 -> 3388 bytes .../20.05/eiffel/_images/tutorial-3.png.data | 3 + .../20.05/eiffel/_images/tutorial-5.png | Bin 0 -> 2293 bytes .../20.05/eiffel/_images/tutorial-5.png.data | 3 + .../20.05/eiffel/_images/tutorial-6.png | Bin 0 -> 5479 bytes .../20.05/eiffel/_images/tutorial-6.png.data | 3 + .../20.05/eiffel/_images/tutorial-7.png | Bin 0 -> 2180 bytes .../20.05/eiffel/_images/tutorial-7.png.data | 3 + .../20.05/eiffel/_images/tutorial-8.png | Bin 0 -> 2531 bytes .../20.05/eiffel/_images/tutorial-8.png.data | 3 + .../20.05/eiffel/_images/tutorial-9.png | Bin 0 -> 2611 bytes .../20.05/eiffel/_images/tutorial-9.png.data | 3 + documentation/20.05/eiffel/index.wiki | 16 + .../Tutorials/Technical_papers/index.wiki | 9 + ...tion-filters-eff-eiffel-filter-format.wiki | 119 ++ .../Tutorials/browsing-features.wiki | 95 ++ .../Tutorials/command-line-compiler.wiki | 10 + .../compiling-and-executing-system.wiki | 56 + .../Tutorials/computing-project-metrics.wiki | 51 + .../Tutorials/copying-example-files.wiki | 19 + ...customizing-tools-layout-and-toolbars.wiki | 267 +++++ .../debugging-and-run-time-monitoring.wiki | 127 ++ ...ystem-within-and-without-eiffelstudio.wiki | 37 + .../Tutorials/graphics-based-design.wiki | 298 +++++ .../handling-syntax-and-validity-errors.wiki | 81 ++ .../Tutorials/how-eiffelstudio-compiles.wiki | 214 ++++ .../20.05/eiffelstudio/Tutorials/index.wiki | 6 + .../Tutorials/look-project-directory.wiki | 31 + .../manual-identification-and-copyright.wiki | 41 + ...producing-and-exporting-documentation.wiki | 161 +++ .../Tutorials/recompiling-and-editing.wiki | 173 +++ .../retargeting-through-pick-and-drop.wiki | 164 +++ .../Tutorials/starting-browse.wiki | 181 +++ ...ting-eiffelstudio-and-opening-project.wiki | 29 + .../using-automatic-class-licensing.wiki | 137 +++ .../using-autotest/create-manual-test.wiki | 323 +++++ .../using-autotest/execute-tests.wiki | 110 ++ .../Tutorials/using-autotest/index.wiki | 30 + .../using-autotest/managing-tests.wiki | 104 ++ .../testing-background-and-basics.wiki | 149 +++ .../using-autotest/using-extracted-tests.wiki | 146 +++ .../using-autotest/using-generated-tests.wiki | 142 +++ .../Tutorials/viewing-classes.wiki | 120 ++ .../16x16--breakpoints-disable-icon.png | Bin 0 -> 716 bytes .../16x16--breakpoints-disable-icon.png.data | 3 + .../16x16--breakpoints-enable-icon.png | Bin 0 -> 710 bytes .../16x16--breakpoints-enable-icon.png.data | 3 + .../_images/16x16--general-add-icon.png | Bin 0 -> 540 bytes .../_images/16x16--general-add-icon.png.data | 3 + .../_images/16x16--general-copy-icon.png | Bin 0 -> 617 bytes .../_images/16x16--general-copy-icon.png.data | 3 + .../_images/16x16--general-delete-icon.png | Bin 0 -> 438 bytes .../16x16--general-delete-icon.png.data | 3 + .../_images/16x16--general-edit-icon.png | Bin 0 -> 535 bytes .../_images/16x16--general-edit-icon.png.data | 3 + .../_images/16x16--general-save-icon.png | Bin 0 -> 518 bytes .../_images/16x16--general-save-icon.png.data | 3 + .../_images/16x16--new-class-icon.png | Bin 0 -> 298 bytes .../_images/16x16--new-class-icon.png.data | 3 + .../_images/16x16--new-cluster-icon.png | Bin 0 -> 529 bytes .../_images/16x16--new-cluster-icon.png.data | 3 + .../_images/16x16--new-feature-icon.png | Bin 0 -> 365 bytes .../_images/16x16--new-feature-icon.png.data | 3 + .../_images/56--unix-registration-error.png | Bin 0 -> 11343 bytes .../56--unix-registration-error.png.data | 3 + .../_images/56--unix-registration.png | Bin 0 -> 73292 bytes .../_images/56--unix-registration.png.data | 3 + .../eiffelstudio/_images/56--unix-setup.png | Bin 0 -> 53992 bytes .../_images/56--unix-setup.png.data | 3 + .../56--windows-registration-error.png | Bin 0 -> 7799 bytes .../56--windows-registration-error.png.data | 3 + .../_images/56--windows-registration.png | Bin 0 -> 52271 bytes .../_images/56--windows-registration.png.data | 3 + .../_images/Advanced_Options_main.png | Bin 0 -> 47486 bytes .../_images/Advanced_Options_main.png.data | 3 + .../_images/AutoTest_General_pane.png | Bin 0 -> 17021 bytes .../_images/AutoTest_General_pane.png.data | 3 + .../_images/AutoTest_General_pane_empty.png | Bin 0 -> 16915 bytes .../AutoTest_General_pane_empty.png.data | 3 + .../AutoTest_Interface_after_run_06_0.png | Bin 0 -> 31918 bytes ...AutoTest_Interface_after_run_06_0.png.data | 3 + .../AutoTest_Interface_annotated_01.png | Bin 0 -> 39781 bytes .../AutoTest_Interface_annotated_01.png.data | 3 + .../AutoTest_Outputs_tool_after_run_01.png | Bin 0 -> 19531 bytes ...utoTest_Outputs_tool_after_run_01.png.data | 3 + .../_images/AutoTest_Tags_pane.png | Bin 0 -> 14615 bytes .../_images/AutoTest_Tags_pane.png.data | 3 + .../_images/AutoTest_Tags_pane_empty.png | Bin 0 -> 13117 bytes .../_images/AutoTest_Tags_pane_empty.png.data | 3 + .../_images/AutoTest_Test_Extraction_pane.png | Bin 0 -> 17241 bytes .../AutoTest_Test_Extraction_pane.png.data | 3 + .../_images/AutoTest_Test_Generation_pane.png | Bin 0 -> 20322 bytes .../AutoTest_Test_Generation_pane.png.data | 3 + .../_images/AutoTest_add_cluster_dialog.png | Bin 0 -> 17492 bytes .../AutoTest_add_cluster_dialog.png.data | 3 + .../AutoTest_add_testing_libraries_dialog.png | Bin 0 -> 14930 bytes ...Test_add_testing_libraries_dialog.png.data | 3 + .../AutoTest_create_manual_test_pane.png | Bin 0 -> 13886 bytes .../AutoTest_create_manual_test_pane.png.data | 3 + .../_images/AutoTest_create_new_test_02.png | Bin 0 -> 12155 bytes .../AutoTest_create_new_test_02.png.data | 3 + .../_images/AutoTest_create_new_tests.png | Bin 0 -> 11522 bytes .../AutoTest_create_new_tests.png.data | 3 + .../_images/AutoTest_debug_all_drop_down.png | Bin 0 -> 8694 bytes .../AutoTest_debug_all_drop_down.png.data | 3 + .../_images/AutoTest_debug_all_icon.png | Bin 0 -> 773 bytes .../_images/AutoTest_debug_all_icon.png.data | 3 + .../_images/AutoTest_empty_tool_01.png | Bin 0 -> 17212 bytes .../_images/AutoTest_empty_tool_01.png.data | 3 + .../_images/AutoTest_extracted_01.png | Bin 0 -> 14178 bytes .../_images/AutoTest_extracted_01.png.data | 3 + .../_images/AutoTest_extracted_02.png | Bin 0 -> 21895 bytes .../_images/AutoTest_extracted_02.png.data | 3 + .../_images/AutoTest_filter_drop_down.png | Bin 0 -> 11287 bytes .../AutoTest_filter_drop_down.png.data | 3 + .../_images/AutoTest_filter_result.png | Bin 0 -> 13456 bytes .../_images/AutoTest_filter_result.png.data | 3 + .../_images/AutoTest_filter_result_fail.png | Bin 0 -> 12148 bytes .../AutoTest_filter_result_fail.png.data | 3 + .../_images/AutoTest_filter_withdraw.png | Bin 0 -> 13472 bytes .../_images/AutoTest_filter_withdraw.png.data | 3 + .../AutoTest_generated_results_fail.png | Bin 0 -> 8364 bytes .../AutoTest_generated_results_fail.png.data | 3 + .../AutoTest_generated_results_pass.png | Bin 0 -> 8154 bytes .../AutoTest_generated_results_pass.png.data | 3 + .../_images/AutoTest_information_icon.png | Bin 0 -> 1563 bytes .../AutoTest_information_icon.png.data | 3 + ...AutoTest_interface_results_-_Execution.png | Bin 0 -> 10779 bytes ...est_interface_results_-_Execution.png.data | 3 + .../AutoTest_interface_test_view_class.png | Bin 0 -> 10182 bytes ...utoTest_interface_test_view_class.png.data | 3 + .../AutoTest_interface_test_view_covers.png | Bin 0 -> 10475 bytes ...toTest_interface_test_view_covers.png.data | 3 + .../_images/AutoTest_run_all_drop_down.png | Bin 0 -> 8247 bytes .../AutoTest_run_all_drop_down.png.data | 3 + .../AutoTest_test_coverage_tag_dialog.png | Bin 0 -> 16212 bytes ...AutoTest_test_coverage_tag_dialog.png.data | 3 + .../AutoTest_test_results_details_0.png | Bin 0 -> 10322 bytes .../AutoTest_test_results_details_0.png.data | 3 + ...oTest_testing_pane_after_generation_01.png | Bin 0 -> 24660 bytes ..._testing_pane_after_generation_01.png.data | 3 + ...utoTest_testing_pane_execution_results.png | Bin 0 -> 14994 bytes ...st_testing_pane_execution_results.png.data | 3 + .../AutoTest_tests_pane_null_filter.png | Bin 0 -> 14762 bytes .../AutoTest_tests_pane_null_filter.png.data | 3 + .../_images/AutoTest_tool_after_run.png | Bin 0 -> 27976 bytes .../_images/AutoTest_tool_after_run.png.data | 3 + .../AutoTest_tool_with_failed_test.png | Bin 0 -> 24202 bytes .../AutoTest_tool_with_failed_test.png.data | 3 + .../AutoTest_tool_with_passed_test.png | Bin 0 -> 22970 bytes .../AutoTest_tool_with_passed_test.png.data | 3 + .../_images/AutoTest_tool_with_test.png | Bin 0 -> 20544 bytes .../_images/AutoTest_tool_with_test.png.data | 3 + .../AutoTest_user_defined_tag_root.png | Bin 0 -> 12368 bytes .../AutoTest_user_defined_tag_root.png.data | 3 + ...lass_license_Eiffel_Software_directory.png | Bin 0 -> 23728 bytes ...license_Eiffel_Software_directory.png.data | 3 + ...omatic_class_license_project_directory.png | Bin 0 -> 22310 bytes ...c_class_license_project_directory.png.data | 3 + ...tic_class_license_user_files_directory.png | Bin 0 -> 20426 bytes ...lass_license_user_files_directory.png.data | 3 + .../_images/CA_Analysis_Buttons.png | Bin 0 -> 3352 bytes .../_images/CA_Analysis_Buttons.png.data | 2 + .../_images/CA_Class_Context_Menu.png | Bin 0 -> 14650 bytes .../_images/CA_Class_Context_Menu.png.data | 2 + .../_images/CA_Cluster_Context_Menu.png | Bin 0 -> 5994 bytes .../_images/CA_Cluster_Context_Menu.png.data | 2 + .../20.05/eiffelstudio/_images/CA_Fixing.png | Bin 0 -> 4211 bytes .../eiffelstudio/_images/CA_Fixing.png.data | 2 + .../_images/CA_Preferences_Dialog.png | Bin 0 -> 16789 bytes .../_images/CA_Preferences_Dialog.png.data | 2 + .../_images/CA_Rule_Preferences.png | Bin 0 -> 16163 bytes .../_images/CA_Rule_Preferences.png.data | 2 + .../_images/CA_Sample_Results.png | Bin 0 -> 42749 bytes .../_images/CA_Sample_Results.png.data | 2 + .../_images/Ca_empty-tool-panel.png | Bin 0 -> 17630 bytes .../_images/Ca_empty-tool-panel.png.data | 2 + .../_images/Create_new_tests_2.png | Bin 0 -> 603 bytes .../_images/Create_new_tests_2.png.data | 3 + .../_images/Customize_toolbar_dialog.png | Bin 0 -> 19846 bytes .../_images/Customize_toolbar_dialog.png.data | 3 + .../eiffelstudio/_images/EIS_add_button.png | Bin 0 -> 993 bytes .../_images/EIS_add_button.png.data | 3 + .../_images/EIS_affected_source.png | Bin 0 -> 103095 bytes .../_images/EIS_affected_source.png.data | 3 + .../eiffelstudio/_images/EIS_info_tabl.png | Bin 0 -> 1177 bytes .../_images/EIS_info_tabl.png.data | 3 + .../_images/EIS_information_icon.png | Bin 0 -> 673 bytes .../_images/EIS_information_icon.png.data | 3 + .../EIS_locate_class_or_cluster_icon.png | Bin 0 -> 590 bytes .../EIS_locate_class_or_cluster_icon.png.data | 3 + .../Eiffel_Inspector-command_line_0.png | Bin 0 -> 87385 bytes .../Eiffel_Inspector-command_line_0.png.data | 2 + .../External_commands_tools_menu_0.png | Bin 0 -> 16729 bytes .../External_commands_tools_menu_0.png.data | 3 + ...External_compilation_pane_edit_feature.png | Bin 0 -> 21952 bytes ...nal_compilation_pane_edit_feature.png.data | 3 + ...ternal_compilation_pane_file_selection.png | Bin 0 -> 12632 bytes ...l_compilation_pane_file_selection.png.data | 3 + .../_images/External_compilation_tool_01.png | Bin 0 -> 18677 bytes .../External_compilation_tool_01.png.data | 3 + ...getOptions_Edit_Exclude_Rule_Condition.png | Bin 0 -> 23220 bytes ...tions_Edit_Exclude_Rule_Condition.png.data | 3 + .../GenTargetOptions_Edit_Exclude_Rules.png | Bin 0 -> 15508 bytes ...nTargetOptions_Edit_Exclude_Rules.png.data | 3 + .../_images/GenTargetOptions_Edit_Root.png | Bin 0 -> 9118 bytes .../GenTargetOptions_Edit_Root.png.data | 3 + .../_images/GenTargetOptions_Edit_Version.png | Bin 0 -> 9496 bytes .../GenTargetOptions_Edit_Version.png.data | 3 + .../GenTargetOptions_Proj_Settings.png | Bin 0 -> 44691 bytes .../GenTargetOptions_Proj_Settings.png.data | 3 + .../Group_Options_Edit_Visible_Classes.png | Bin 0 -> 12871 bytes ...roup_Options_Edit_Visible_Classes.png.data | 3 + .../_images/Group_Options_main.png | Bin 0 -> 53018 bytes .../_images/Group_Options_main.png.data | 3 + .../_images/Implementation venn diagram.png | Bin 0 -> 27713 bytes .../Implementation venn diagram.png.data | 3 + .../Metrics_tool_Metrics_evaluation_pane.png | Bin 0 -> 83583 bytes ...rics_tool_Metrics_evaluation_pane.png.data | 3 + .../eiffelstudio/_images/Output_tool_02.png | Bin 0 -> 11433 bytes .../_images/Output_tool_02.png.data | 3 + .../eiffelstudio/_images/Outputs_tool_01.png | Bin 0 -> 12946 bytes .../_images/Outputs_tool_01.png.data | 3 + .../_images/Outputs_tool_General_pane.png | Bin 0 -> 11677 bytes .../Outputs_tool_General_pane.png.data | 3 + .../_images/Outputs_tool_Open_folder.png | Bin 0 -> 8960 bytes .../_images/Outputs_tool_Open_folder.png.data | 3 + .../Outputs_tool_Transient_functionality.png | Bin 0 -> 13887 bytes ...puts_tool_Transient_functionality.png.data | 3 + .../_images/Search_capture_boxes_0.png | Bin 0 -> 11609 bytes .../_images/Search_capture_boxes_0.png.data | 3 + .../_images/Select_Help_Document_dialog.png | Bin 0 -> 5387 bytes .../Select_Help_Document_dialog.png.data | 3 + .../_images/Subversion_update_command_01.png | Bin 0 -> 10036 bytes .../Subversion_update_command_01.png.data | 3 + .../eiffelstudio/_images/address-toolbar.png | Bin 0 -> 29246 bytes .../_images/address-toolbar.png.data | 3 + .../eiffelstudio/_images/argument-dialog.png | Bin 0 -> 15767 bytes .../_images/argument-dialog.png.data | 3 + .../_images/assertion-options-2.png | Bin 0 -> 28596 bytes .../_images/assertion-options-2.png.data | 3 + .../eiffelstudio/_images/auto-hide-icon.png | Bin 0 -> 1404 bytes .../_images/auto-hide-icon.png.data | 3 + .../_images/automatic-sweeping.png | Bin 0 -> 985 bytes .../_images/automatic-sweeping.png.data | 3 + .../_images/automatic_annotation_icon.png | Bin 0 -> 911 bytes .../automatic_annotation_icon.png.data | 3 + .../eiffelstudio/_images/bon-agg-client.png | Bin 0 -> 1077 bytes .../_images/bon-agg-client.png.data | 3 + .../_images/bon-class-deferred.png | Bin 0 -> 825 bytes .../_images/bon-class-deferred.png.data | 3 + .../_images/bon-class-effective.png | Bin 0 -> 855 bytes .../_images/bon-class-effective.png.data | 3 + .../_images/bon-class-interfaced.png | Bin 0 -> 862 bytes .../_images/bon-class-interfaced.png.data | 3 + .../_images/bon-class-persistent.png | Bin 0 -> 867 bytes .../_images/bon-class-persistent.png.data | 3 + .../eiffelstudio/_images/bon-class-reused.png | Bin 0 -> 832 bytes .../_images/bon-class-reused.png.data | 3 + .../eiffelstudio/_images/bon-class-root.png | Bin 0 -> 973 bytes .../_images/bon-class-root.png.data | 3 + .../20.05/eiffelstudio/_images/bon-class.png | Bin 0 -> 834 bytes .../eiffelstudio/_images/bon-class.png.data | 3 + .../20.05/eiffelstudio/_images/bon-client.png | Bin 0 -> 1051 bytes .../eiffelstudio/_images/bon-client.png.data | 3 + .../_images/bon-cluster-iconified.png | Bin 0 -> 743 bytes .../_images/bon-cluster-iconified.png.data | 3 + .../eiffelstudio/_images/bon-cluster.png | Bin 0 -> 1348 bytes .../eiffelstudio/_images/bon-cluster.png.data | 3 + .../eiffelstudio/_images/bon-inheritance.png | Bin 0 -> 981 bytes .../_images/bon-inheritance.png.data | 3 + .../_images/bon-list-relations.png | Bin 0 -> 7635 bytes .../_images/bon-list-relations.png.data | 3 + .../_images/bp-current-line-icon.png | Bin 0 -> 291 bytes .../_images/bp-current-line-icon.png.data | 3 + .../_images/bp-disabled-conditional-icon.png | Bin 0 -> 479 bytes .../bp-disabled-conditional-icon.png.data | 3 + .../eiffelstudio/_images/bp-disabled-icon.png | Bin 0 -> 413 bytes .../_images/bp-disabled-icon.png.data | 3 + .../_images/bp-enabled-conditional-icon.png | Bin 0 -> 490 bytes .../bp-enabled-conditional-icon.png.data | 3 + .../eiffelstudio/_images/bp-enabled-icon.png | Bin 0 -> 464 bytes .../_images/bp-enabled-icon.png.data | 3 + .../eiffelstudio/_images/bp-slot-icon.png | Bin 0 -> 237 bytes .../_images/bp-slot-icon.png.data | 3 + .../_images/bp-slot-other-frame-icon.png | Bin 0 -> 394 bytes .../_images/bp-slot-other-frame-icon.png.data | 3 + .../_images/breakpoint-context-menu.png | Bin 0 -> 1948 bytes .../_images/breakpoint-context-menu.png.data | 3 + .../_images/breakpoint-dialog-condition.png | Bin 0 -> 10001 bytes .../breakpoint-dialog-condition.png.data | 3 + .../_images/breakpoint-dialog-context.png | Bin 0 -> 16328 bytes .../breakpoint-dialog-context.png.data | 3 + .../_images/breakpoint-dialog-hit-count.png | Bin 0 -> 7434 bytes .../breakpoint-dialog-hit-count.png.data | 3 + .../breakpoint-dialog-when-hits-action.png | Bin 0 -> 13195 bytes ...reakpoint-dialog-when-hits-action.png.data | 3 + .../_images/breakpoint-dialog-when-hits.png | Bin 0 -> 15441 bytes .../breakpoint-dialog-when-hits.png.data | 3 + .../_images/breakpoints-delete-icon.png | Bin 0 -> 735 bytes .../_images/breakpoints-delete-icon.png.data | 3 + .../breakpoints-list-filter-button.png | Bin 0 -> 507 bytes .../breakpoints-list-filter-button.png.data | 3 + .../_images/breakpoints-list-filter.png | Bin 0 -> 10154 bytes .../_images/breakpoints-list-filter.png.data | 3 + .../_images/breakpoints-list-flat.png | Bin 0 -> 10971 bytes .../_images/breakpoints-list-flat.png.data | 3 + .../eiffelstudio/_images/breakpoints-list.png | Bin 0 -> 12287 bytes .../_images/breakpoints-list.png.data | 3 + .../_images/call-stack-tool-with-threads.png | Bin 0 -> 11381 bytes .../call-stack-tool-with-threads.png.data | 3 + .../eiffelstudio/_images/call-stack-tool.png | Bin 0 -> 6767 bytes .../_images/call-stack-tool.png.data | 3 + .../20.05/eiffelstudio/_images/callee-is.jpg | Bin 0 -> 21936 bytes .../eiffelstudio/_images/callee-is.jpg.data | 3 + .../_images/callstack-active-arrow-icon.png | Bin 0 -> 286 bytes .../callstack-active-arrow-icon.png.data | 3 + .../_images/callstack-empty-arrow-icon.png | Bin 0 -> 283 bytes .../callstack-empty-arrow-icon.png.data | 3 + .../_images/class-ancestors-icon.png | Bin 0 -> 411 bytes .../_images/class-ancestors-icon.png.data | 3 + .../_images/class-clients-icon.png | Bin 0 -> 370 bytes .../_images/class-clients-icon.png.data | 3 + .../_images/class-deferred-icon.png | Bin 0 -> 302 bytes .../_images/class-deferred-icon.png.data | 3 + .../_images/class-descendents-icon.png | Bin 0 -> 396 bytes .../_images/class-descendents-icon.png.data | 3 + .../_images/class-features-attribute-icon.png | Bin 0 -> 416 bytes .../class-features-attribute-icon.png.data | 3 + .../_images/class-features-creator-icon.png | Bin 0 -> 381 bytes .../class-features-creator-icon.png.data | 3 + .../_images/class-features-deferred-icon.png | Bin 0 -> 373 bytes .../class-features-deferred-icon.png.data | 3 + .../_images/class-features-exported-icon.png | Bin 0 -> 420 bytes .../class-features-exported-icon.png.data | 3 + .../_images/class-features-external-icon.png | Bin 0 -> 434 bytes .../class-features-external-icon.png.data | 3 + .../_images/class-features-invariant-icon.png | Bin 0 -> 312 bytes .../class-features-invariant-icon.png.data | 3 + .../_images/class-features-once-icon.png | Bin 0 -> 378 bytes .../_images/class-features-once-icon.png.data | 3 + .../_images/class-features-routine-icon.png | Bin 0 -> 345 bytes .../class-features-routine-icon.png.data | 3 + .../eiffelstudio/_images/class-format-bar.png | Bin 0 -> 4436 bytes .../_images/class-format-bar.png.data | 3 + .../_images/class-frozen-icon.png | Bin 0 -> 243 bytes .../_images/class-frozen-icon.png.data | 3 + .../20.05/eiffelstudio/_images/class-hie.jpg | Bin 0 -> 23163 bytes .../eiffelstudio/_images/class-hie.jpg.data | 3 + .../_images/class-mini-format-bar.png | Bin 0 -> 2230 bytes .../_images/class-mini-format-bar.png.data | 3 + .../_images/class-normal-icon.png | Bin 0 -> 201 bytes .../_images/class-normal-icon.png.data | 3 + .../_images/class-override-normal-icon.png | Bin 0 -> 325 bytes .../class-override-normal-icon.png.data | 3 + .../_images/class-overriden-normal-icon.png | Bin 0 -> 331 bytes .../class-overriden-normal-icon.png.data | 3 + .../_images/class-supliers-icon.png | Bin 0 -> 386 bytes .../_images/class-supliers-icon.png.data | 3 + .../_images/clean_compile_dialog.png | Bin 0 -> 31978 bytes .../_images/clean_compile_dialog.png.data | 3 + .../20.05/eiffelstudio/_images/close-icon.png | Bin 0 -> 1428 bytes .../eiffelstudio/_images/close-icon.png.data | 3 + .../eiffelstudio/_images/cluster-legend.png | Bin 0 -> 10081 bytes .../_images/cluster-legend.png.data | 3 + .../eiffelstudio/_images/cluster-tree.png | Bin 0 -> 9197 bytes .../_images/cluster-tree.png.data | 3 + .../_images/color-dialog-windows.png | Bin 0 -> 13459 bytes .../_images/color-dialog-windows.png.data | 3 + .../_images/command-error-info-icon.png | Bin 0 -> 677 bytes .../_images/command-error-info-icon.png.data | 3 + .../command-send-to-external-editor-icon.png | Bin 0 -> 680 bytes ...mand-send-to-external-editor-icon.png.data | 3 + .../_images/compile-animation-6-icon.png | Bin 0 -> 707 bytes .../_images/compile-animation-6-icon.png.data | 3 + .../_images/compile-button-dropdown.png | Bin 0 -> 14220 bytes .../_images/compile-button-dropdown.png.data | 3 + .../eiffelstudio/_images/compile-button.png | Bin 0 -> 1548 bytes .../_images/compile-button.png.data | 3 + .../_images/compile-error-icon.png | Bin 0 -> 709 bytes .../_images/compile-error-icon.png.data | 3 + .../_images/compile-success-icon.png | Bin 0 -> 696 bytes .../_images/compile-success-icon.png.data | 3 + .../eiffelstudio/_images/console-auto1.jpg | Bin 0 -> 23853 bytes .../_images/console-auto1.jpg.data | 3 + .../eiffelstudio/_images/console-auto2.jpg | Bin 0 -> 21989 bytes .../_images/console-auto2.jpg.data | 3 + .../eiffelstudio/_images/console-auto3.jpg | Bin 0 -> 44966 bytes .../_images/console-auto3.jpg.data | 3 + .../20.05/eiffelstudio/_images/console1.png | Bin 0 -> 8086 bytes .../eiffelstudio/_images/console1.png.data | 3 + .../_images/context-address-bar.png | Bin 0 -> 1124 bytes .../_images/context-address-bar.png.data | 3 + .../_images/context-address-window.png | Bin 0 -> 1575 bytes .../_images/context-address-window.png.data | 3 + .../_images/context-class-cursor_0.png | Bin 0 -> 1428 bytes .../_images/context-class-cursor_0.png.data | 3 + .../_images/context-dialog-class.png | Bin 0 -> 10683 bytes .../_images/context-dialog-class.png.data | 3 + .../_images/context-dialog-cluster.png | Bin 0 -> 11005 bytes .../_images/context-dialog-cluster.png.data | 3 + .../context-disabled-class-cursor_2.png | Bin 0 -> 1509 bytes .../context-disabled-class-cursor_2.png.data | 3 + .../_images/context-link-icon.png | Bin 0 -> 659 bytes .../_images/context-link-icon.png.data | 3 + .../_images/context-sync-icon.png | Bin 0 -> 697 bytes .../_images/context-sync-icon.png.data | 3 + .../eiffelstudio/_images/continued-icon.png | Bin 0 -> 1391 bytes .../_images/continued-icon.png.data | 3 + .../_images/contract-editor-edit-icon.png | Bin 0 -> 1548 bytes .../contract-editor-edit-icon.png.data | 3 + .../eiffelstudio/_images/contract-icon.png | Bin 0 -> 1619 bytes .../_images/contract-icon.png.data | 3 + .../eiffelstudio/_images/create-a-project.png | Bin 0 -> 9681 bytes .../_images/create-a-project.png.data | 3 + .../_images/debug-exception-dialog-icon.png | Bin 0 -> 684 bytes .../debug-exception-dialog-icon.png.data | 3 + .../eiffelstudio/_images/debug-options.png | Bin 0 -> 26165 bytes .../_images/debug-options.png.data | 3 + .../eiffelstudio/_images/debug-pause-icon.png | Bin 0 -> 279 bytes .../_images/debug-pause-icon.png.data | 3 + .../_images/debug-run-finalized-icon.png | Bin 0 -> 465 bytes .../_images/debug-run-finalized-icon.png.data | 3 + .../eiffelstudio/_images/debug-run-icon.png | Bin 0 -> 218 bytes .../_images/debug-run-icon.png.data | 3 + .../debug-run-without-breakpoint-icon.png | Bin 0 -> 331 bytes ...debug-run-without-breakpoint-icon.png.data | 3 + .../_images/debug-show-breakpoints-tool.png | Bin 0 -> 1597 bytes .../debug-show-breakpoints-tool.png.data | 3 + .../_images/debug-step-into-icon.png | Bin 0 -> 337 bytes .../_images/debug-step-into-icon.png.data | 3 + .../_images/debug-step-out-icon.png | Bin 0 -> 378 bytes .../_images/debug-step-out-icon.png.data | 3 + .../_images/debug-step-over-icon.png | Bin 0 -> 362 bytes .../_images/debug-step-over-icon.png.data | 3 + .../eiffelstudio/_images/debug-stop-icon.png | Bin 0 -> 276 bytes .../_images/debug-stop-icon.png.data | 3 + .../debug-stopped-on-breakpoint-icon.png | Bin 0 -> 1512 bytes .../debug-stopped-on-breakpoint-icon.png.data | 3 + .../_images/debuggee-object-storage-load.png | Bin 0 -> 5506 bytes .../debuggee-object-storage-load.png.data | 3 + .../_images/debuggee-object-storage-save.png | Bin 0 -> 5301 bytes .../debuggee-object-storage-save.png.data | 3 + .../_images/debugger-auto-values.png | Bin 0 -> 1325 bytes .../_images/debugger-auto-values.png.data | 3 + .../_images/debugger-callstack-depth-icon.png | Bin 0 -> 345 bytes .../debugger-callstack-depth-icon.png.data | 3 + .../_images/debugger-expand-info-icon.png | Bin 0 -> 264 bytes .../debugger-expand-info-icon.png.data | 3 + .../_images/debugger-object-dotnet-icon.png | Bin 0 -> 706 bytes .../debugger-object-dotnet-icon.png.data | 3 + .../debugger-object-dotnet-static-icon.png | Bin 0 -> 654 bytes ...ebugger-object-dotnet-static-icon.png.data | 3 + .../_images/debugger-object-eiffel-icon.png | Bin 0 -> 509 bytes .../debugger-object-eiffel-icon.png.data | 3 + .../_images/debugger-object-expand-icon.png | Bin 0 -> 641 bytes .../debugger-object-expand-icon.png.data | 3 + .../_images/debugger-object-expanded-icon.png | Bin 0 -> 635 bytes .../debugger-object-expanded-icon.png.data | 3 + .../debugger-object-immediate-icon.png | Bin 0 -> 218 bytes .../debugger-object-immediate-icon.png.data | 3 + .../_images/debugger-object-static-icon.png | Bin 0 -> 650 bytes .../debugger-object-static-icon.png.data | 3 + .../_images/debugger-object-void-icon.png | Bin 0 -> 284 bytes .../debugger-object-void-icon.png.data | 3 + .../_images/debugger-set-sizes-icon.png | Bin 0 -> 271 bytes .../_images/debugger-set-sizes-icon.png.data | 3 + .../_images/debugger-show-hex-value-icon.png | Bin 0 -> 194 bytes .../debugger-show-hex-value-icon.png.data | 3 + .../_images/debugging-tools-preferences.png | Bin 0 -> 28700 bytes .../debugging-tools-preferences.png.data | 3 + .../eiffelstudio/_images/deselect-all.png | Bin 0 -> 528 bytes .../_images/deselect-all.png.data | 3 + .../_images/deselect-recalculatable.png | Bin 0 -> 663 bytes .../_images/deselect-recalculatable.png.data | 3 + .../eiffelstudio/_images/devel-diagram.png | Bin 0 -> 64522 bytes .../_images/devel-diagram.png.data | 3 + .../_images/diagram-anchor-icon.png | Bin 0 -> 356 bytes .../_images/diagram-anchor-icon.png.data | 3 + .../_images/diagram-choose-color-icon.png | Bin 0 -> 357 bytes .../diagram-choose-color-icon.png.data | 3 + .../_images/diagram-defaultview.png | Bin 0 -> 1049 bytes .../_images/diagram-defaultview.png.data | 3 + .../diagram-depth-of-relations-icon.png | Bin 0 -> 486 bytes .../diagram-depth-of-relations-icon.png.data | 3 + .../_images/diagram-export-to-png-icon.png | Bin 0 -> 627 bytes .../diagram-export-to-png-icon.png.data | 3 + .../_images/diagram-fill-cluster-icon.png | Bin 0 -> 565 bytes .../diagram-fill-cluster-icon.png.data | 3 + .../_images/diagram-fit-to-screen-icon.png | Bin 0 -> 374 bytes .../diagram-fit-to-screen-icon.png.data | 3 + .../diagram-force-right-angles-icon.png | Bin 0 -> 410 bytes .../diagram-force-right-angles-icon.png.data | 3 + .../_images/diagram-inheritance-link-icon.png | Bin 0 -> 406 bytes .../diagram-inheritance-link-icon.png.data | 3 + .../eiffelstudio/_images/diagram-myview.png | Bin 0 -> 1009 bytes .../_images/diagram-myview.png.data | 3 + ...m-new-conforming-inheritance-link-icon.png | Bin 0 -> 1504 bytes ...-conforming-inheritance-link-icon.png.data | 3 + .../diagram-new-supplier-link-icon.png | Bin 0 -> 1495 bytes .../diagram-new-supplier-link-icon.png.data | 3 + .../_images/diagram-physics-settings-icon.png | Bin 0 -> 583 bytes .../diagram-physics-settings-icon.png.data | 3 + .../_images/diagram-show-labels-icon.png | Bin 0 -> 150 bytes .../_images/diagram-show-labels-icon.png.data | 3 + .../_images/diagram-show-legend-icon.png | Bin 0 -> 489 bytes .../_images/diagram-show-legend-icon.png.data | 3 + .../_images/diagram-supplier-link-icon.png | Bin 0 -> 345 bytes .../diagram-supplier-link-icon.png.data | 3 + .../diagram-target-cluster-or-class-icon.png | Bin 0 -> 724 bytes ...gram-target-cluster-or-class-icon.png.data | 3 + .../_images/diagram-toggle-quality-icon.png | Bin 0 -> 423 bytes .../diagram-toggle-quality-icon.png.data | 3 + .../_images/diagram-toogle-physics-icon.png | Bin 0 -> 391 bytes .../diagram-toogle-physics-icon.png.data | 3 + .../eiffelstudio/_images/diagram-tool-tab.png | Bin 0 -> 1529 bytes .../_images/diagram-tool-tab.png.data | 3 + .../_images/diagram-view-combo.png | Bin 0 -> 3792 bytes .../_images/diagram-view-combo.png.data | 3 + .../_images/diagram-view-uml-icon.png | Bin 0 -> 517 bytes .../_images/diagram-view-uml-icon.png.data | 3 + .../_images/diagram-zoom-in-icon.png | Bin 0 -> 404 bytes .../_images/diagram-zoom-in-icon.png.data | 3 + .../_images/diagram-zoom-out-icon.png | Bin 0 -> 375 bytes .../_images/diagram-zoom-out-icon.png.data | 3 + ...ialogs-and-wizards--preferences-dialog.png | Bin 0 -> 19294 bytes ...s-and-wizards--preferences-dialog.png.data | 3 + .../_images/disambiguated-name-icon.png | Bin 0 -> 450 bytes .../_images/disambiguated-name-icon.png.data | 3 + .../_images/docking-target-bottom.png | Bin 0 -> 784 bytes .../_images/docking-target-bottom.png.data | 3 + .../_images/docking-target-left.png | Bin 0 -> 819 bytes .../_images/docking-target-left.png.data | 3 + .../_images/docking-target-right.png | Bin 0 -> 827 bytes .../_images/docking-target-right.png.data | 3 + .../_images/docking-target-top.png | Bin 0 -> 838 bytes .../_images/docking-target-top.png.data | 3 + .../eiffelstudio/_images/docking-target.png | Bin 0 -> 2448 bytes .../_images/docking-target.png.data | 3 + .../eiffelstudio/_images/domain-example1.png | Bin 0 -> 15543 bytes .../_images/domain-example1.png.data | 3 + .../eiffelstudio/_images/domain-example2.png | Bin 0 -> 11981 bytes .../_images/domain-example2.png.data | 3 + .../eiffelstudio/_images/domain-example3.png | Bin 0 -> 14609 bytes .../_images/domain-example3.png.data | 3 + .../eiffelstudio/_images/domain-example4.png | Bin 0 -> 15725 bytes .../_images/domain-example4.png.data | 3 + .../eiffelstudio/_images/domain-example5.png | Bin 0 -> 15856 bytes .../_images/domain-example5.png.data | 3 + .../eiffelstudio/_images/domain-example6.png | Bin 0 -> 15959 bytes .../_images/domain-example6.png.data | 3 + .../edit_automatic_eis_entry_dialog.png | Bin 0 -> 5095 bytes .../edit_automatic_eis_entry_dialog.png.data | 3 + .../editor-class-auto-completion-window.png | Bin 0 -> 5981 bytes ...itor-class-auto-completion-window.png.data | 3 + .../editor-feature-auto-completion-window.png | Bin 0 -> 9175 bytes ...or-feature-auto-completion-window.png.data | 3 + .../_images/editor-pick-and-drop.png | Bin 0 -> 1897 bytes .../_images/editor-pick-and-drop.png.data | 3 + .../_images/error-cursor-disabled_0.png | Bin 0 -> 956 bytes .../_images/error-cursor-disabled_0.png.data | 3 + .../eiffelstudio/_images/error-cursor_0.png | Bin 0 -> 1552 bytes .../_images/error-cursor_0.png.data | 3 + .../_images/error-description-dialog.png | Bin 0 -> 13352 bytes .../_images/error-description-dialog.png.data | 3 + .../20.05/eiffelstudio/_images/error-info.png | Bin 0 -> 677 bytes .../eiffelstudio/_images/error-info.png.data | 3 + .../eiffelstudio/_images/error-message.png | Bin 0 -> 3285 bytes .../_images/error-message.png.data | 3 + .../20.05/eiffelstudio/_images/error.png | Bin 0 -> 399 bytes .../20.05/eiffelstudio/_images/error.png.data | 3 + .../es_gt_a_development_window_01a_0.png | Bin 0 -> 42790 bytes .../es_gt_a_development_window_01a_0.png.data | 3 + .../_images/es_gt_a_development_window_02.png | Bin 0 -> 62004 bytes .../es_gt_a_development_window_02.png.data | 3 + .../_images/es_gt_active_windows_tool_01.png | Bin 0 -> 3938 bytes .../es_gt_active_windows_tool_01.png.data | 3 + .../_images/es_gt_add_cluster_dialog.png | Bin 0 -> 9515 bytes .../_images/es_gt_add_cluster_dialog.png.data | 3 + .../_images/es_gt_add_tab_to_pane.png | Bin 0 -> 15792 bytes .../_images/es_gt_add_tab_to_pane.png.data | 3 + .../_images/es_gt_add_to_favorites_01.png | Bin 0 -> 15021 bytes .../es_gt_add_to_favorites_01.png.data | 3 + .../es_gt_auto_complete_argument_01.png | Bin 0 -> 7182 bytes .../es_gt_auto_complete_argument_01.png.data | 3 + .../es_gt_auto_complete_feature_01.png | Bin 0 -> 22347 bytes .../es_gt_auto_complete_feature_01.png.data | 3 + .../_images/es_gt_auto_hide_01.png | Bin 0 -> 7480 bytes .../_images/es_gt_auto_hide_01.png.data | 3 + .../_images/es_gt_autocomplete_from_01.png | Bin 0 -> 8892 bytes .../es_gt_autocomplete_from_01.png.data | 3 + .../_images/es_gt_breakpoint_context_menu.png | Bin 0 -> 14207 bytes .../es_gt_breakpoint_context_menu.png.data | 3 + .../_images/es_gt_breakpoints_tool_01.png | Bin 0 -> 5139 bytes .../es_gt_breakpoints_tool_01.png.data | 3 + ...es_gt_class_HEIR2_moved_to_new_cluster.png | Bin 0 -> 7619 bytes ..._class_HEIR2_moved_to_new_cluster.png.data | 3 + .../_images/es_gt_class_field_01.png | Bin 0 -> 12997 bytes .../_images/es_gt_class_field_01.png.data | 3 + .../_images/es_gt_class_heir2_created.png | Bin 0 -> 4772 bytes .../es_gt_class_heir2_created.png.data | 3 + .../_images/es_gt_class_heir2_relocated.png | Bin 0 -> 4640 bytes .../es_gt_class_heir2_relocated.png.data | 3 + .../_images/es_gt_class_heir2_text.png | Bin 0 -> 20560 bytes .../_images/es_gt_class_heir2_text.png.data | 3 + .../_images/es_gt_class_invalid_is_hidden.png | Bin 0 -> 20418 bytes .../es_gt_class_invalid_is_hidden.png.data | 3 + .../_images/es_gt_class_tool_01.png | Bin 0 -> 49221 bytes .../_images/es_gt_class_tool_01.png.data | 3 + .../es_gt_class_tool_descendants_01.png | Bin 0 -> 49427 bytes .../es_gt_class_tool_descendants_01.png.data | 3 + .../_images/es_gt_class_tool_flat_01.png | Bin 0 -> 46160 bytes .../_images/es_gt_class_tool_flat_01.png.data | 3 + .../_images/es_gt_class_tool_routines_01.png | Bin 0 -> 58663 bytes .../es_gt_class_tool_routines_01.png.data | 3 + .../_images/es_gt_close_favorites_01.png | Bin 0 -> 6331 bytes .../_images/es_gt_close_favorites_01.png.data | 3 + .../_images/es_gt_compilation_wizard_01.png | Bin 0 -> 9945 bytes .../es_gt_compilation_wizard_01.png.data | 3 + .../_images/es_gt_create_new_class_button.png | Bin 0 -> 16439 bytes .../es_gt_create_new_class_button.png.data | 3 + .../_images/es_gt_debug_buttons_0.png | Bin 0 -> 7763 bytes .../_images/es_gt_debug_buttons_0.png.data | 3 + .../_images/es_gt_debug_step_by_step_01.png | Bin 0 -> 22755 bytes .../es_gt_debug_step_by_step_01.png.data | 3 + .../_images/es_gt_debug_step_into_01.png | Bin 0 -> 55708 bytes .../_images/es_gt_debug_step_into_01.png.data | 3 + .../_images/es_gt_default_pane_tabs.png | Bin 0 -> 3670 bytes .../_images/es_gt_default_pane_tabs.png.data | 3 + ...velopment_window_breakpoint_reached_01.png | Bin 0 -> 55384 bytes ...ment_window_breakpoint_reached_01.png.data | 3 + ...s_gt_development_window_breakpoints_01.png | Bin 0 -> 51359 bytes ...development_window_breakpoints_01.png.data | 3 + ...s_gt_development_window_breakpoints_02.png | Bin 0 -> 52121 bytes ...development_window_breakpoints_02.png.data | 3 + ...development_window_foth_descendants_01.png | Bin 0 -> 52007 bytes ...opment_window_foth_descendants_01.png.data | 3 + ...pment_window_multi_array_list_forth_01.png | Bin 0 -> 49901 bytes ..._window_multi_array_list_forth_01.png.data | 3 + ...gt_development_window_multiple_tabs_01.png | Bin 0 -> 59293 bytes ...velopment_window_multiple_tabs_01.png.data | 3 + ...t_development_window_syntax_error_01_0.png | Bin 0 -> 52988 bytes ...elopment_window_syntax_error_01_0.png.data | 3 + ...development_window_targeted_to_list_01.png | Bin 0 -> 59763 bytes ...opment_window_targeted_to_list_01.png.data | 3 + ...velopment_window_targeted_to_parent_01.png | Bin 0 -> 57269 bytes ...ment_window_targeted_to_parent_01.png.data | 3 + ...velopment_window_targeted_to_parent_02.png | Bin 0 -> 58003 bytes ...ment_window_targeted_to_parent_02.png.data | 3 + ...t_development_window_validity_error_01.png | Bin 0 -> 50104 bytes ...elopment_window_validity_error_01.png.data | 3 + ...t_development_window_validity_error_02.png | Bin 0 -> 52665 bytes ...elopment_window_validity_error_02.png.data | 3 + ...t_development_window_validity_error_03.png | Bin 0 -> 53444 bytes ...elopment_window_validity_error_03.png.data | 3 + .../es_gt_diagram_delete_confirmation.png | Bin 0 -> 24347 bytes ...es_gt_diagram_delete_confirmation.png.data | 3 + .../es_gt_diagram_tool_pane_floating_01.png | Bin 0 -> 82669 bytes ..._gt_diagram_tool_pane_floating_01.png.data | 3 + .../es_gt_diagram_tool_pane_pinned_01.png | Bin 0 -> 39978 bytes ...es_gt_diagram_tool_pane_pinned_01.png.data | 3 + .../_images/es_gt_diagram_tool_unhidden.png | Bin 0 -> 56140 bytes .../es_gt_diagram_tool_unhidden.png.data | 3 + .../_images/es_gt_docking_in_progress_01.png | Bin 0 -> 68892 bytes .../es_gt_docking_in_progress_01.png.data | 3 + ..._gt_error_list_tool_pnd_validity_error.png | Bin 0 -> 12012 bytes ...rror_list_tool_pnd_validity_error.png.data | 3 + .../eiffelstudio/_images/es_gt_execute_01.png | Bin 0 -> 9213 bytes .../_images/es_gt_execute_01.png.data | 3 + .../_images/es_gt_execution_menu_01.png | Bin 0 -> 26096 bytes .../_images/es_gt_execution_menu_01.png.data | 3 + .../_images/es_gt_favorites_01.png | Bin 0 -> 6306 bytes .../_images/es_gt_favorites_01.png.data | 3 + .../_images/es_gt_feature_tool_01.png | Bin 0 -> 11894 bytes .../_images/es_gt_feature_tool_01.png.data | 3 + .../_images/es_gt_feature_tool_callers_01.png | Bin 0 -> 21102 bytes .../es_gt_feature_tool_callers_01.png.data | 3 + .../es_gt_feature_tool_toolbar_buttons_01.png | Bin 0 -> 3551 bytes ...t_feature_tool_toolbar_buttons_01.png.data | 3 + .../_images/es_gt_features_tool_01.png | Bin 0 -> 45356 bytes .../_images/es_gt_features_tool_01.png.data | 3 + .../_images/es_gt_features_tool_02.png | Bin 0 -> 47880 bytes .../_images/es_gt_features_tool_02.png.data | 3 + .../_images/es_gt_freeze_warning.png | Bin 0 -> 8217 bytes .../_images/es_gt_freeze_warning.png.data | 3 + .../eiffelstudio/_images/es_gt_go_back_01.png | Bin 0 -> 14818 bytes .../_images/es_gt_go_back_01.png.data | 3 + ...t_graphics_based_design_starting_point.png | Bin 0 -> 58438 bytes ...phics_based_design_starting_point.png.data | 3 + .../_images/es_gt_groups_tool_01.png | Bin 0 -> 21521 bytes .../_images/es_gt_groups_tool_01.png.data | 3 + .../_images/es_gt_groups_tool_02.png | Bin 0 -> 11351 bytes .../_images/es_gt_groups_tool_02.png.data | 3 + .../_images/es_gt_groups_tool_03.png | Bin 0 -> 13319 bytes .../_images/es_gt_groups_tool_03.png.data | 3 + .../_images/es_gt_heir2_inheriting_parent.png | Bin 0 -> 4923 bytes .../es_gt_heir2_inheriting_parent.png.data | 3 + .../es_gt_list_added_to_favorites_01.png | Bin 0 -> 14619 bytes .../es_gt_list_added_to_favorites_01.png.data | 3 + .../_images/es_gt_new_class_dialog.png | Bin 0 -> 10002 bytes .../_images/es_gt_new_class_dialog.png.data | 3 + .../_images/es_gt_new_cluster_added.png | Bin 0 -> 6657 bytes .../_images/es_gt_new_cluster_added.png.data | 3 + .../_images/es_gt_new_feature_dialog.png | Bin 0 -> 7275 bytes .../_images/es_gt_new_feature_dialog.png.data | 3 + .../eiffelstudio/_images/es_gt_open_01.png | Bin 0 -> 12340 bytes .../_images/es_gt_open_01.png.data | 3 + .../eiffelstudio/_images/es_gt_open_02.png | Bin 0 -> 14090 bytes .../_images/es_gt_open_02.png.data | 3 + .../_images/es_gt_picked_forth_01.png | Bin 0 -> 10760 bytes .../_images/es_gt_picked_forth_01.png.data | 3 + .../_images/es_gt_pnd_context_menu_01.png | Bin 0 -> 29386 bytes .../es_gt_pnd_context_menu_01.png.data | 3 + .../_images/es_gt_project_directory_01_0.png | Bin 0 -> 22451 bytes .../es_gt_project_directory_01_0.png.data | 3 + .../es_gt_redocking_project_toolbar.png | Bin 0 -> 35446 bytes .../es_gt_redocking_project_toolbar.png.data | 3 + ...s_gt_redocking_project_toolbar_new_row.png | Bin 0 -> 33175 bytes ...redocking_project_toolbar_new_row.png.data | 3 + .../_images/es_gt_relation_depth_dialog.png | Bin 0 -> 8260 bytes .../es_gt_relation_depth_dialog.png.data | 3 + .../_images/es_gt_reordered_pane_tabs.png | Bin 0 -> 4388 bytes .../es_gt_reordered_pane_tabs.png.data | 3 + .../_images/es_gt_reset_tools_layout_01.png | Bin 0 -> 28375 bytes .../es_gt_reset_tools_layout_01.png.data | 3 + ...forming_inheritance_link_creation_mode.png | Bin 0 -> 23175 bytes ...ng_inheritance_link_creation_mode.png.data | 3 + .../_images/es_gt_side_by_side_editing.png | Bin 0 -> 50618 bytes .../es_gt_side_by_side_editing.png.data | 3 + .../eiffelstudio/_images/es_gt_split_pane.png | Bin 0 -> 17094 bytes .../_images/es_gt_split_pane.png.data | 3 + .../eiffelstudio/_images/es_gt_string_01.png | Bin 0 -> 45669 bytes .../_images/es_gt_string_01.png.data | 3 + .../_images/es_gt_target_history_01.png | Bin 0 -> 11823 bytes .../_images/es_gt_target_history_01.png.data | 3 + .../_images/es_gt_testroot_class_diagram.png | Bin 0 -> 1492 bytes .../es_gt_testroot_class_diagram.png.data | 3 + .../_images/es_gt_testroot_cluster.png | Bin 0 -> 51051 bytes .../_images/es_gt_testroot_cluster.png.data | 3 + .../es_gt_testroot_is_client_of_heir.png | Bin 0 -> 56935 bytes .../es_gt_testroot_is_client_of_heir.png.data | 3 + .../es_gt_testroot_is_client_of_heir2.png | Bin 0 -> 4987 bytes ...es_gt_testroot_is_client_of_heir2.png.data | 3 + ..._ref_add_attached_contract_template_01.png | Bin 0 -> 6948 bytes ...add_attached_contract_template_01.png.data | 3 + ..._ref_add_attached_contract_template_02.png | Bin 0 -> 7094 bytes ...add_attached_contract_template_02.png.data | 3 + .../_images/es_ref_contract_editor_01.png | Bin 0 -> 11340 bytes .../es_ref_contract_editor_01.png.data | 3 + .../_images/es_ref_contract_editor_02.png | Bin 0 -> 12614 bytes .../es_ref_contract_editor_02.png.data | 3 + .../_images/es_ref_contract_editor_03.png | Bin 0 -> 9742 bytes .../es_ref_contract_editor_03.png.data | 3 + .../_images/es_ref_contract_editor_add_01.png | Bin 0 -> 9283 bytes .../es_ref_contract_editor_add_01.png.data | 3 + .../_images/es_ref_contract_editor_add_02.png | Bin 0 -> 4823 bytes .../es_ref_contract_editor_add_02.png.data | 3 + .../es_ref_edit_contract_dialog_01.png | Bin 0 -> 4949 bytes .../es_ref_edit_contract_dialog_01.png.data | 3 + .../eiffelstudio/_images/exception-dialog.png | Bin 0 -> 10231 bytes .../_images/exception-dialog.png.data | 3 + .../_images/exceptions-handling-tool.png | Bin 0 -> 23583 bytes .../_images/exceptions-handling-tool.png.data | 3 + .../eiffelstudio/_images/exec-replay-00-1.png | Bin 0 -> 11334 bytes .../_images/exec-replay-00-1.png.data | 3 + .../eiffelstudio/_images/exec-replay-00.png | Bin 0 -> 7802 bytes .../_images/exec-replay-00.png.data | 3 + .../eiffelstudio/_images/exec-replay-01.png | Bin 0 -> 11924 bytes .../_images/exec-replay-01.png.data | 3 + .../eiffelstudio/_images/exec-replay-02-1.png | Bin 0 -> 23397 bytes .../_images/exec-replay-02-1.png.data | 3 + .../eiffelstudio/_images/exec-replay-02.png | Bin 0 -> 13950 bytes .../_images/exec-replay-02.png.data | 3 + .../eiffelstudio/_images/exec-replay-03.png | Bin 0 -> 15006 bytes .../_images/exec-replay-03.png.data | 3 + .../eiffelstudio/_images/exec-replay-04.png | Bin 0 -> 15251 bytes .../_images/exec-replay-04.png.data | 3 + .../_images/execution-object-storage-icon.png | Bin 0 -> 176 bytes .../execution-object-storage-icon.png.data | 3 + .../eiffelstudio/_images/expand-errors.png | Bin 0 -> 671 bytes .../_images/expand-errors.png.data | 3 + .../_images/expanded-display-default.png | Bin 0 -> 5985 bytes .../_images/expanded-display-default.png.data | 3 + .../_images/expanded-normal-icon.png | Bin 0 -> 345 bytes .../_images/expanded-normal-icon.png.data | 3 + .../_images/expression-evaluation-tool.png | Bin 0 -> 26388 bytes .../expression-evaluation-tool.png.data | 3 + .../external-commands-dialog-editor.png | Bin 0 -> 8924 bytes .../external-commands-dialog-editor.png.data | 3 + .../_images/external-commands-dialog.png | Bin 0 -> 6830 bytes .../_images/external-commands-dialog.png.data | 3 + .../eiffelstudio/_images/external-options.png | Bin 0 -> 27866 bytes .../_images/external-options.png.data | 3 + .../eiffelstudio/_images/fake-callee-is.jpg | Bin 0 -> 33394 bytes .../_images/fake-callee-is.jpg.data | 3 + .../favorites-choose-folder-dialog.png | Bin 0 -> 9486 bytes .../favorites-choose-folder-dialog.png.data | 3 + .../_images/favorites-dialog-move-to.png | Bin 0 -> 1001 bytes .../_images/favorites-dialog-move-to.png.data | 3 + .../_images/favorites-dialog-new-class.png | Bin 0 -> 1052 bytes .../favorites-dialog-new-class.png.data | 3 + .../_images/favorites-dialog-new-folder.png | Bin 0 -> 956 bytes .../favorites-dialog-new-folder.png.data | 3 + .../_images/favorites-dialog-remove.png | Bin 0 -> 867 bytes .../_images/favorites-dialog-remove.png.data | 3 + .../eiffelstudio/_images/favorites-dialog.png | Bin 0 -> 14628 bytes .../_images/favorites-dialog.png.data | 3 + .../_images/favorites-new-class-dialog.png | Bin 0 -> 10513 bytes .../favorites-new-class-dialog.png.data | 3 + .../_images/favorites-new-folder-dialog.png | Bin 0 -> 7085 bytes .../favorites-new-folder-dialog.png.data | 3 + .../eiffelstudio/_images/favorites-tool.png | Bin 0 -> 5309 bytes .../_images/favorites-tool.png.data | 3 + .../eiffelstudio/_images/favorites-tree.png | Bin 0 -> 4255 bytes .../_images/favorites-tree.png.data | 3 + .../_images/feature-ancestors-icon.png | Bin 0 -> 414 bytes .../_images/feature-ancestors-icon.png.data | 3 + .../_images/feature-assignees-icon.png | Bin 0 -> 268 bytes .../_images/feature-assignees-icon.png.data | 3 + .../_images/feature-assigners-icon.png | Bin 0 -> 252 bytes .../_images/feature-assigners-icon.png.data | 3 + .../_images/feature-attribute-icon.png | Bin 0 -> 416 bytes .../_images/feature-attribute-icon.png.data | 3 + .../_images/feature-callees-icon.png | Bin 0 -> 364 bytes .../_images/feature-callees-icon.png.data | 3 + .../_images/feature-callers-icon.png | Bin 0 -> 352 bytes .../_images/feature-callers-icon.png.data | 3 + .../_images/feature-creaters-icon.png | Bin 0 -> 354 bytes .../_images/feature-creaters-icon.png.data | 3 + .../_images/feature-creators-icon.png | Bin 0 -> 368 bytes .../_images/feature-creators-icon.png.data | 3 + .../_images/feature-deferred-icon.png | Bin 0 -> 373 bytes .../_images/feature-deferred-icon.png.data | 3 + .../_images/feature-descendents-icon.png | Bin 0 -> 407 bytes .../_images/feature-descendents-icon.png.data | 3 + .../_images/feature-external-icon.png | Bin 0 -> 434 bytes .../_images/feature-external-icon.png.data | 3 + .../_images/feature-format-bar.png | Bin 0 -> 3001 bytes .../_images/feature-format-bar.png.data | 3 + .../_images/feature-frozen-routine-icon.png | Bin 0 -> 319 bytes .../feature-frozen-routine-icon.png.data | 3 + .../_images/feature-homonyms-icon.png | Bin 0 -> 455 bytes .../_images/feature-homonyms-icon.png.data | 3 + .../_images/feature-implementers-icon.png | Bin 0 -> 414 bytes .../feature-implementers-icon.png.data | 3 + .../_images/feature-once-icon.png | Bin 0 -> 378 bytes .../_images/feature-once-icon.png.data | 3 + .../_images/feature-routine-icon.png | Bin 0 -> 339 bytes .../_images/feature-routine-icon.png.data | 3 + .../_images/feature-signatures-icon.png | Bin 0 -> 538 bytes .../_images/feature-signatures-icon.png.data | 3 + .../eiffelstudio/_images/feature-tab_0.png | Bin 0 -> 1527 bytes .../_images/feature-tab_0.png.data | 3 + .../_images/feature-tool-signature-button.png | Bin 0 -> 176 bytes .../feature-tool-signature-button.png.data | 3 + .../_images/feature-tool-signature.png | Bin 0 -> 5945 bytes .../_images/feature-tool-signature.png.data | 3 + .../eiffelstudio/_images/feature-tool.png | Bin 0 -> 5251 bytes .../_images/feature-tool.png.data | 3 + .../eiffelstudio/_images/feature-tree.png | Bin 0 -> 2181 bytes .../_images/feature-tree.png.data | 3 + .../_images/feature-wizard-1-argument.png | Bin 0 -> 18752 bytes .../feature-wizard-1-argument.png.data | 3 + .../_images/feature-wizard-3-arguments.png | Bin 0 -> 20509 bytes .../feature-wizard-3-arguments.png.data | 3 + .../feature-wizard-attribute-example.png | Bin 0 -> 13932 bytes .../feature-wizard-attribute-example.png.data | 3 + .../_images/feature-wizard-attribute.png | Bin 0 -> 13643 bytes .../_images/feature-wizard-attribute.png.data | 3 + .../_images/feature-wizard-clausenames.png | Bin 0 -> 19251 bytes .../feature-wizard-clausenames.png.data | 3 + .../_images/feature-wizard-comment.png | Bin 0 -> 13734 bytes .../_images/feature-wizard-comment.png.data | 3 + .../_images/feature-wizard-complextype.png | Bin 0 -> 2588 bytes .../feature-wizard-complextype.png.data | 3 + .../_images/feature-wizard-export.png | Bin 0 -> 17481 bytes .../_images/feature-wizard-export.png.data | 3 + .../feature-wizard-function-example.png | Bin 0 -> 20097 bytes .../feature-wizard-function-example.png.data | 3 + .../_images/feature-wizard-function.png | Bin 0 -> 18007 bytes .../_images/feature-wizard-function.png.data | 3 + .../_images/feature-wizard-generictype.png | Bin 0 -> 1635 bytes .../feature-wizard-generictype.png.data | 3 + .../_images/feature-wizard-generictyperec.png | Bin 0 -> 1748 bytes .../feature-wizard-generictyperec.png.data | 3 + .../feature-wizard-invariant-selected.png | Bin 0 -> 14072 bytes ...feature-wizard-invariant-selected.png.data | 3 + .../_images/feature-wizard-invariant.png | Bin 0 -> 14056 bytes .../_images/feature-wizard-invariant.png.data | 3 + .../feature-wizard-procedure-example.png | Bin 0 -> 20693 bytes .../feature-wizard-procedure-example.png.data | 3 + .../_images/feature-wizard-procedure.png | Bin 0 -> 17171 bytes .../_images/feature-wizard-procedure.png.data | 3 + .../feature-wizard-setprocedure-example.png | Bin 0 -> 14278 bytes ...ature-wizard-setprocedure-example.png.data | 3 + .../_images/feature-wizard-setprocedure.png | Bin 0 -> 14189 bytes .../feature-wizard-setprocedure.png.data | 3 + .../_images/feature-wizard-tupletype2.png | Bin 0 -> 2367 bytes .../feature-wizard-tupletype2.png.data | 3 + .../_images/feature-wizard-typeselection.png | Bin 0 -> 15076 bytes .../feature-wizard-typeselection.png.data | 3 + .../eiffelstudio/_images/feature-wizard.png | Bin 0 -> 18837 bytes .../_images/feature-wizard.png.data | 3 + .../feature_call_auto-complete_example_1.png | Bin 0 -> 1398 bytes ...ture_call_auto-complete_example_1.png.data | 3 + .../_images/features-tab-icon.png | Bin 0 -> 1575 bytes .../_images/features-tab-icon.png.data | 3 + .../eiffelstudio/_images/filter-active.png | Bin 0 -> 516 bytes .../_images/filter-active.png.data | 3 + .../20.05/eiffelstudio/_images/filter.png | Bin 0 -> 424 bytes .../eiffelstudio/_images/filter.png.data | 3 + .../_images/folder-assembly-icon.png | Bin 0 -> 250 bytes .../_images/folder-assembly-icon.png.data | 3 + .../_images/folder-blank-icon.png | Bin 0 -> 396 bytes .../_images/folder-blank-icon.png.data | 3 + .../_images/folder-cluster-icon.png | Bin 0 -> 467 bytes .../_images/folder-cluster-icon.png.data | 3 + .../_images/folder-cluster-readonly-icon.png | Bin 0 -> 598 bytes .../folder-cluster-readonly-icon.png.data | 3 + .../_images/folder-features-all-icon.png | Bin 0 -> 476 bytes .../_images/folder-features-all-icon.png.data | 3 + .../_images/folder-features-none-icon.png | Bin 0 -> 601 bytes .../folder-features-none-icon.png.data | 3 + .../_images/folder-features-some-icon.png | Bin 0 -> 561 bytes .../folder-features-some-icon.png.data | 3 + .../_images/folder-hidden-cluster-icon.png | Bin 0 -> 552 bytes .../folder-hidden-cluster-icon.png.data | 3 + .../_images/folder-library-icon.png | Bin 0 -> 271 bytes .../_images/folder-library-icon.png.data | 3 + .../_images/folder-namespace-icon.png | Bin 0 -> 177 bytes .../_images/folder-namespace-icon.png.data | 3 + .../_images/folder-override-cluster-icon.png | Bin 0 -> 562 bytes .../folder-override-cluster-icon.png.data | 3 + .../_images/folder-target-icon.png | Bin 0 -> 621 bytes .../_images/folder-target-icon.png.data | 3 + .../_images/general-copy-icon.png | Bin 0 -> 278 bytes .../_images/general-copy-icon.png.data | 3 + .../eiffelstudio/_images/general-cut-icon.png | Bin 0 -> 485 bytes .../_images/general-cut-icon.png.data | 3 + .../_images/general-debug-mode.png | Bin 0 -> 58018 bytes .../_images/general-debug-mode.png.data | 3 + .../_images/general-delete-icon.png | Bin 0 -> 359 bytes .../_images/general-delete-icon.png.data | 3 + .../_images/general-edit-icon.png | Bin 0 -> 335 bytes .../_images/general-edit-icon.png.data | 3 + .../_images/general-edition-mode.png | Bin 0 -> 64223 bytes .../_images/general-edition-mode.png.data | 3 + .../_images/general-error-icon.png | Bin 0 -> 399 bytes .../_images/general-error-icon.png.data | 3 + .../_images/general-open-icon.png | Bin 0 -> 616 bytes .../_images/general-open-icon.png.data | 3 + .../_images/general-paste-icon.png | Bin 0 -> 625 bytes .../_images/general-paste-icon.png.data | 3 + .../_images/general-redo-icon.png | Bin 0 -> 521 bytes .../_images/general-redo-icon.png.data | 3 + .../_images/general-reset-icon.png | Bin 0 -> 493 bytes .../_images/general-reset-icon.png.data | 3 + .../_images/general-save-icon.png | Bin 0 -> 376 bytes .../_images/general-save-icon.png.data | 3 + .../_images/general-search-icon.png | Bin 0 -> 240 bytes .../_images/general-search-icon.png.data | 3 + .../_images/general-tick-icon.png | Bin 0 -> 376 bytes .../_images/general-tick-icon.png.data | 3 + .../_images/general-toogle-icon.png | Bin 0 -> 249 bytes .../_images/general-toogle-icon.png.data | 3 + .../_images/general-undo-history-icon.png | Bin 0 -> 593 bytes .../general-undo-history-icon.png.data | 3 + .../_images/general-undo-icon.png | Bin 0 -> 498 bytes .../_images/general-undo-icon.png.data | 3 + .../_images/general-word-wrap-icon.png | Bin 0 -> 513 bytes .../_images/general-word-wrap-icon.png.data | 3 + .../eiffelstudio/_images/groups-tool_1.png | Bin 0 -> 14349 bytes .../_images/groups-tool_1.png.data | 3 + .../hide-non-matching-entries-icon.png | Bin 0 -> 561 bytes .../hide-non-matching-entries-icon.png.data | 3 + .../eiffelstudio/_images/history-tool.png | Bin 0 -> 7250 bytes .../_images/history-tool.png.data | 3 + .../20.05/eiffelstudio/_images/hood1.png | Bin 0 -> 16161 bytes .../20.05/eiffelstudio/_images/hood1.png.data | 3 + .../20.05/eiffelstudio/_images/hood2.png | Bin 0 -> 15283 bytes .../20.05/eiffelstudio/_images/hood2.png.data | 3 + .../20.05/eiffelstudio/_images/hood3.jpg | Bin 0 -> 43137 bytes .../20.05/eiffelstudio/_images/hood3.jpg.data | 3 + .../_images/ildasm-dotnet-naming.png | Bin 0 -> 6431 bytes .../_images/ildasm-dotnet-naming.png.data | 3 + .../_images/ildasm-no-dotnet-naming.png | Bin 0 -> 6880 bytes .../_images/ildasm-no-dotnet-naming.png.data | 3 + .../20.05/eiffelstudio/_images/index-140.png | Bin 0 -> 1265 bytes .../eiffelstudio/_images/index-140.png.data | 3 + .../20.05/eiffelstudio/_images/index-141.png | Bin 0 -> 3296 bytes .../eiffelstudio/_images/index-141.png.data | 3 + .../20.05/eiffelstudio/_images/index-37.png | Bin 0 -> 12919 bytes .../eiffelstudio/_images/index-37.png.data | 3 + .../20.05/eiffelstudio/_images/index-38.png | Bin 0 -> 14881 bytes .../eiffelstudio/_images/index-38.png.data | 3 + .../20.05/eiffelstudio/_images/index-39.png | Bin 0 -> 14851 bytes .../eiffelstudio/_images/index-39.png.data | 3 + .../20.05/eiffelstudio/_images/index-40.png | Bin 0 -> 13458 bytes .../eiffelstudio/_images/index-40.png.data | 3 + .../20.05/eiffelstudio/_images/index-41.png | Bin 0 -> 13337 bytes .../eiffelstudio/_images/index-41.png.data | 3 + .../20.05/eiffelstudio/_images/index-42.png | Bin 0 -> 11493 bytes .../eiffelstudio/_images/index-42.png.data | 3 + .../20.05/eiffelstudio/_images/index-43.png | Bin 0 -> 44387 bytes .../eiffelstudio/_images/index-43.png.data | 3 + .../20.05/eiffelstudio/_images/index-44.png | Bin 0 -> 50921 bytes .../eiffelstudio/_images/index-44.png.data | 3 + .../20.05/eiffelstudio/_images/index-45.png | Bin 0 -> 39046 bytes .../eiffelstudio/_images/index-45.png.data | 3 + .../20.05/eiffelstudio/_images/index-46.png | Bin 0 -> 54530 bytes .../eiffelstudio/_images/index-46.png.data | 3 + .../20.05/eiffelstudio/_images/index-47.png | Bin 0 -> 37490 bytes .../eiffelstudio/_images/index-47.png.data | 3 + .../20.05/eiffelstudio/_images/index-48.png | Bin 0 -> 62458 bytes .../eiffelstudio/_images/index-48.png.data | 3 + .../20.05/eiffelstudio/_images/index-49.png | Bin 0 -> 53402 bytes .../eiffelstudio/_images/index-49.png.data | 3 + .../_images/information-tool-v71.png | Bin 0 -> 37692 bytes .../_images/information-tool-v71.png.data | 3 + .../20.05/eiffelstudio/_images/interface1.png | Bin 0 -> 15534 bytes .../eiffelstudio/_images/interface1.png.data | 3 + .../eiffelstudio/_images/interface10.png | Bin 0 -> 24657 bytes .../eiffelstudio/_images/interface10.png.data | 3 + .../eiffelstudio/_images/interface11.png | Bin 0 -> 23581 bytes .../eiffelstudio/_images/interface11.png.data | 3 + .../eiffelstudio/_images/interface12.png | Bin 0 -> 11127 bytes .../eiffelstudio/_images/interface12.png.data | 3 + .../eiffelstudio/_images/interface13.png | Bin 0 -> 6610 bytes .../eiffelstudio/_images/interface13.png.data | 3 + .../eiffelstudio/_images/interface14.png | Bin 0 -> 18251 bytes .../eiffelstudio/_images/interface14.png.data | 3 + .../eiffelstudio/_images/interface16.png | Bin 0 -> 1038 bytes .../eiffelstudio/_images/interface16.png.data | 3 + .../eiffelstudio/_images/interface17.png | Bin 0 -> 16459 bytes .../eiffelstudio/_images/interface17.png.data | 3 + .../eiffelstudio/_images/interface18.png | Bin 0 -> 17058 bytes .../eiffelstudio/_images/interface18.png.data | 3 + .../eiffelstudio/_images/interface19.png | Bin 0 -> 9159 bytes .../eiffelstudio/_images/interface19.png.data | 3 + .../20.05/eiffelstudio/_images/interface2.png | Bin 0 -> 18814 bytes .../eiffelstudio/_images/interface2.png.data | 3 + .../eiffelstudio/_images/interface20.png | Bin 0 -> 17624 bytes .../eiffelstudio/_images/interface20.png.data | 3 + .../eiffelstudio/_images/interface21.png | Bin 0 -> 17833 bytes .../eiffelstudio/_images/interface21.png.data | 3 + .../eiffelstudio/_images/interface22.png | Bin 0 -> 1060 bytes .../eiffelstudio/_images/interface22.png.data | 3 + .../eiffelstudio/_images/interface23.png | Bin 0 -> 563 bytes .../eiffelstudio/_images/interface23.png.data | 3 + .../eiffelstudio/_images/interface24.png | Bin 0 -> 20563 bytes .../eiffelstudio/_images/interface24.png.data | 3 + .../eiffelstudio/_images/interface25.png | Bin 0 -> 4453 bytes .../eiffelstudio/_images/interface25.png.data | 3 + .../20.05/eiffelstudio/_images/interface3.png | Bin 0 -> 15618 bytes .../eiffelstudio/_images/interface3.png.data | 3 + .../20.05/eiffelstudio/_images/interface4.png | Bin 0 -> 12332 bytes .../eiffelstudio/_images/interface4.png.data | 3 + .../20.05/eiffelstudio/_images/interface5.png | Bin 0 -> 4433 bytes .../eiffelstudio/_images/interface5.png.data | 3 + .../20.05/eiffelstudio/_images/interface6.png | Bin 0 -> 20775 bytes .../eiffelstudio/_images/interface6.png.data | 3 + .../20.05/eiffelstudio/_images/interface7.png | Bin 0 -> 23359 bytes .../eiffelstudio/_images/interface7.png.data | 3 + .../20.05/eiffelstudio/_images/interface8.png | Bin 0 -> 26122 bytes .../eiffelstudio/_images/interface8.png.data | 3 + .../20.05/eiffelstudio/_images/interface9.png | Bin 0 -> 35579 bytes .../eiffelstudio/_images/interface9.png.data | 3 + .../eiffelstudio/_images/is-satisfied-by.png | Bin 0 -> 13370 bytes .../_images/is-satisfied-by.png.data | 3 + .../eiffelstudio/_images/link-tool-left.png | Bin 0 -> 1059 bytes .../_images/link-tool-left.png.data | 3 + .../_images/link-tool-no-handles.png | Bin 0 -> 1145 bytes .../_images/link-tool-no-handles.png.data | 3 + .../eiffelstudio/_images/link-tool-right.png | Bin 0 -> 1071 bytes .../_images/link-tool-right.png.data | 3 + .../_images/link-tool-two-left.png | Bin 0 -> 1107 bytes .../_images/link-tool-two-left.png.data | 3 + .../_images/link-tool-two-right.png | Bin 0 -> 1037 bytes .../_images/link-tool-two-right.png.data | 3 + .../20.05/eiffelstudio/_images/link-tool.png | Bin 0 -> 7060 bytes .../eiffelstudio/_images/link-tool.png.data | 3 + .../eiffelstudio/_images/main-address-bar.png | Bin 0 -> 4871 bytes .../_images/main-address-bar.png.data | 3 + .../eiffelstudio/_images/main-toolbars_0.png | Bin 0 -> 25477 bytes .../_images/main-toolbars_0.png.data | 3 + .../eiffelstudio/_images/manual-sweep.png | Bin 0 -> 973 bytes .../_images/manual-sweep.png.data | 3 + .../eiffelstudio/_images/mapping-options.png | Bin 0 -> 27684 bytes .../_images/mapping-options.png.data | 3 + .../eiffelstudio/_images/maximize-icon.png | Bin 0 -> 1482 bytes .../_images/maximize-icon.png.data | 3 + ...--command-send-to-external-editor-icon.png | Bin 0 -> 680 bytes ...mand-send-to-external-editor-icon.png.data | 3 + .../metrics-tool--context-sync-icon.png | Bin 0 -> 697 bytes .../metrics-tool--context-sync-icon.png.data | 3 + .../_images/metrics-tool--debug-run-icon.png | Bin 0 -> 218 bytes .../metrics-tool--debug-run-icon.png.data | 3 + .../_images/metrics-tool--debug-stop-icon.png | Bin 0 -> 276 bytes .../metrics-tool--debug-stop-icon.png.data | 3 + .../metrics-tool--general-open-icon.png | Bin 0 -> 616 bytes .../metrics-tool--general-open-icon.png.data | 3 + .../metrics-tool--general-remove-icon.png | Bin 0 -> 663 bytes ...metrics-tool--general-remove-icon.png.data | 3 + .../metrics-tool--general-reset-icon.png | Bin 0 -> 493 bytes .../metrics-tool--general-reset-icon.png.data | 3 + .../metrics-tool--general-save-icon.png | Bin 0 -> 518 bytes .../metrics-tool--general-save-icon.png.data | 3 + ...trics-tool--metric-export-to-file-icon.png | Bin 0 -> 734 bytes ...-tool--metric-export-to-file-icon.png.data | 3 + .../metrics-tool--metric-filter-icon.png | Bin 0 -> 424 bytes .../metrics-tool--metric-filter-icon.png.data | 3 + .../metrics-tool--metric-group-icon.png | Bin 0 -> 641 bytes .../metrics-tool--metric-group-icon.png.data | 3 + .../metrics-tool--metric-quick-icon.png | Bin 0 -> 664 bytes .../metrics-tool--metric-quick-icon.png.data | 3 + ...tool--metric-run-and-show-details-icon.png | Bin 0 -> 617 bytes ...-metric-run-and-show-details-icon.png.data | 3 + ...rics-tool--metric-send-to-archive-icon.png | Bin 0 -> 632 bytes ...tool--metric-send-to-archive-icon.png.data | 3 + ...trics-tool--metric-unit-assertion-icon.png | Bin 0 -> 820 bytes ...-tool--metric-unit-assertion-icon.png.data | 3 + .../metrics-tool--new-document-icon.png | Bin 0 -> 597 bytes .../metrics-tool--new-document-icon.png.data | 3 + .../_images/metrics-tool--new-metric-icon.png | Bin 0 -> 624 bytes .../metrics-tool--new-metric-icon.png.data | 3 + .../eiffelstudio/_images/minimize-icon.png | Bin 0 -> 1412 bytes .../_images/minimize-icon.png.data | 3 + .../eiffelstudio/_images/move-down-icon.png | Bin 0 -> 1477 bytes .../_images/move-down-icon.png.data | 3 + .../eiffelstudio/_images/move-up-icon.png | Bin 0 -> 1479 bytes .../_images/move-up-icon.png.data | 3 + .../new-aggregate-supplier-link-icon.png | Bin 0 -> 468 bytes .../new-aggregate-supplier-link-icon.png.data | 3 + .../eiffelstudio/_images/new-class-dialog.png | Bin 0 -> 15217 bytes .../_images/new-class-dialog.png.data | 3 + .../eiffelstudio/_images/new-class-icon.png | Bin 0 -> 292 bytes .../_images/new-class-icon.png.data | 3 + .../_images/new-cluster-dialog.png | Bin 0 -> 13992 bytes .../_images/new-cluster-dialog.png.data | 3 + .../eiffelstudio/_images/new-cluster-icon.png | Bin 0 -> 346 bytes .../_images/new-cluster-icon.png.data | 3 + .../_images/new-document-icon.png | Bin 0 -> 597 bytes .../_images/new-document-icon.png.data | 3 + .../eiffelstudio/_images/new-editor-icon.png | Bin 0 -> 549 bytes .../_images/new-editor-icon.png.data | 3 + .../_images/new-exported-feature.png | Bin 0 -> 11081 bytes .../_images/new-exported-feature.png.data | 3 + ...ew-expression-as-object-definition-dlg.png | Bin 0 -> 8465 bytes ...pression-as-object-definition-dlg.png.data | 3 + .../_images/new-expression-definition-dlg.png | Bin 0 -> 8127 bytes .../new-expression-definition-dlg.png.data | 3 + .../_images/new-expression-icon.png | Bin 0 -> 334 bytes .../_images/new-expression-icon.png.data | 3 + .../eiffelstudio/_images/new-feature-icon.png | Bin 0 -> 296 bytes .../_images/new-feature-icon.png.data | 3 + .../_images/new-inheritance-link-icon.png | Bin 0 -> 465 bytes .../new-inheritance-link-icon.png.data | 3 + .../_images/new-library-dialog.png | Bin 0 -> 20207 bytes .../_images/new-library-dialog.png.data | 3 + .../eiffelstudio/_images/new-library-icon.png | Bin 0 -> 316 bytes .../_images/new-library-icon.png.data | 3 + .../_images/new-supplier-link-icon.png | Bin 0 -> 424 bytes .../_images/new-supplier-link-icon.png.data | 3 + .../eiffelstudio/_images/new-window-icon.png | Bin 0 -> 499 bytes .../_images/new-window-icon.png.data | 3 + .../20.05/eiffelstudio/_images/next-error.png | Bin 0 -> 717 bytes .../eiffelstudio/_images/next-error.png.data | 3 + .../eiffelstudio/_images/next-warning.png | Bin 0 -> 646 bytes .../_images/next-warning.png.data | 3 + .../_images/object-tool-layout-editor.png | Bin 0 -> 7951 bytes .../object-tool-layout-editor.png.data | 3 + .../eiffelstudio/_images/object-tool.png | Bin 0 -> 18489 bytes .../eiffelstudio/_images/object-tool.png.data | 3 + .../_images/object-viewer-browse.png | Bin 0 -> 6067 bytes .../_images/object-viewer-browse.png.data | 3 + .../_images/object-viewer-dump.png | Bin 0 -> 5333 bytes .../_images/object-viewer-dump.png.data | 3 + .../_images/object-viewer-internal.png | Bin 0 -> 3170 bytes .../_images/object-viewer-internal.png.data | 3 + .../_images/object-viewer-xml.png | Bin 0 -> 3229 bytes .../_images/object-viewer-xml.png.data | 3 + .../_images/objects-tool-exception.png | Bin 0 -> 17970 bytes .../_images/objects-tool-exception.png.data | 3 + .../_images/obsolete-items-icon.png | Bin 0 -> 535 bytes .../_images/obsolete-items-icon.png.data | 3 + .../eiffelstudio/_images/previous-error.png | Bin 0 -> 700 bytes .../_images/previous-error.png.data | 3 + .../eiffelstudio/_images/previous-warning.png | Bin 0 -> 624 bytes .../_images/previous-warning.png.data | 3 + .../eiffelstudio/_images/profiler-process.png | Bin 0 -> 4590 bytes .../_images/profiler-process.png.data | 3 + .../_images/profiler-query-window.png | Bin 0 -> 18917 bytes .../_images/profiler-query-window.png.data | 3 + .../_images/profiler-wizard-first-state.png | Bin 0 -> 11894 bytes .../profiler-wizard-first-state.png.data | 3 + .../_images/profiler-wizard-fourth-state.png | Bin 0 -> 14081 bytes .../profiler-wizard-fourth-state.png.data | 3 + .../profiler-wizard-rtir-error-state.png | Bin 0 -> 15388 bytes .../profiler-wizard-rtir-error-state.png.data | 3 + .../_images/profiler-wizard-second-state.png | Bin 0 -> 14468 bytes .../profiler-wizard-second-state.png.data | 3 + .../_images/profiler-wizard-third-state.png | Bin 0 -> 16437 bytes .../profiler-wizard-third-state.png.data | 3 + .../_images/project-finalize-icon.png | Bin 0 -> 502 bytes .../_images/project-finalize-icon.png.data | 3 + .../_images/project-freeze-icon.png | Bin 0 -> 318 bytes .../_images/project-freeze-icon.png.data | 3 + .../_images/project-melt-icon.png | Bin 0 -> 391 bytes .../_images/project-melt-icon.png.data | 3 + .../eiffelstudio/_images/project-toolbar.png | Bin 0 -> 30437 bytes .../_images/project-toolbar.png.data | 3 + .../_images/query-return-type-icon.png | Bin 0 -> 525 bytes .../_images/query-return-type-icon.png.data | 3 + .../_images/refactor-feature-up-icon.png | Bin 0 -> 312 bytes .../_images/refactor-feature-up-icon.png.data | 3 + .../_images/refactor-rename-icon.png | Bin 0 -> 335 bytes .../_images/refactor-rename-icon.png.data | 3 + .../_images/refactoring-toolbar.png | Bin 0 -> 29105 bytes .../_images/refactoring-toolbar.png.data | 3 + .../eiffelstudio/_images/refresh-icon.png | Bin 0 -> 878 bytes .../_images/refresh-icon.png.data | 3 + .../_images/remember-list-size.png | Bin 0 -> 600 bytes .../_images/remember-list-size.png.data | 3 + .../eiffelstudio/_images/restore-icon.png | Bin 0 -> 1467 bytes .../_images/restore-icon.png.data | 3 + .../_images/run-animation-4-icon.png | Bin 0 -> 330 bytes .../_images/run-animation-4-icon.png.data | 3 + .../eiffelstudio/_images/save-button.png | Bin 0 -> 1585 bytes .../eiffelstudio/_images/save-button.png.data | 3 + .../eiffelstudio/_images/search-icon.png | Bin 0 -> 1517 bytes .../eiffelstudio/_images/search-icon.png.data | 3 + .../eiffelstudio/_images/search-report-01.png | Bin 0 -> 7714 bytes .../_images/search-report-01.png.data | 3 + .../_images/search-tool-scope-tab.png | Bin 0 -> 4842 bytes .../_images/search-tool-scope-tab.png.data | 3 + .../eiffelstudio/_images/search-tool_0.png | Bin 0 -> 4720 bytes .../_images/search-tool_0.png.data | 3 + .../20.05/eiffelstudio/_images/select-all.png | Bin 0 -> 545 bytes .../eiffelstudio/_images/select-all.png.data | 3 + .../_images/select-recalculatable.png | Bin 0 -> 644 bytes .../_images/select-recalculatable.png.data | 3 + .../eiffelstudio/_images/selection-cri1.png | Bin 0 -> 15721 bytes .../_images/selection-cri1.png.data | 3 + .../eiffelstudio/_images/selection-cri2.png | Bin 0 -> 7860 bytes .../_images/selection-cri2.png.data | 3 + .../eiffelstudio/_images/selection-cri3.png | Bin 0 -> 15221 bytes .../_images/selection-cri3.png.data | 3 + .../eiffelstudio/_images/selection-cri4.png | Bin 0 -> 15919 bytes .../_images/selection-cri4.png.data | 3 + .../eiffelstudio/_images/selection-cri5.png | Bin 0 -> 11793 bytes .../_images/selection-cri5.png.data | 3 + .../eiffelstudio/_images/selection-cri6.png | Bin 0 -> 16619 bytes .../_images/selection-cri6.png.data | 3 + .../eiffelstudio/_images/selection-cri7.png | Bin 0 -> 12415 bytes .../_images/selection-cri7.png.data | 3 + .../eiffelstudio/_images/selection-cri8.png | Bin 0 -> 19609 bytes .../_images/selection-cri8.png.data | 3 + .../_images/set-default-slice-size-dlg.png | Bin 0 -> 7178 bytes .../set-default-slice-size-dlg.png.data | 3 + .../_images/set-slice-size-dlg.png | Bin 0 -> 7675 bytes .../_images/set-slice-size-dlg.png.data | 3 + .../_images/shared-library-window.png | Bin 0 -> 5291 bytes .../_images/shared-library-window.png.data | 3 + .../_images/show-descriptions-icon.png | Bin 0 -> 577 bytes .../_images/show-descriptions-icon.png.data | 3 + .../show-hide-contract-placeholders.png | Bin 0 -> 1612 bytes .../show-hide-contract-placeholders.png.data | 3 + .../_images/stack-overflow-dlg.png | Bin 0 -> 7626 bytes .../_images/stack-overflow-dlg.png.data | 3 + .../_images/standard-buttons-toolbar.png | Bin 0 -> 29760 bytes .../_images/standard-buttons-toolbar.png.data | 3 + .../eiffelstudio/_images/startup-dialog.png | Bin 0 -> 19524 bytes .../_images/startup-dialog.png.data | 3 + .../subversion-update-command-02_0.png | Bin 0 -> 11385 bytes .../subversion-update-command-02_0.png.data | 3 + .../subversion-update-console-window.png | Bin 0 -> 13532 bytes .../subversion-update-console-window.png.data | 3 + .../subversion_update_in_tools_menu.png | Bin 0 -> 15784 bytes .../subversion_update_in_tools_menu.png.data | 3 + .../eiffelstudio/_images/system-hierarchy.jpg | Bin 0 -> 18843 bytes .../_images/system-hierarchy.jpg.data | 3 + .../eiffelstudio/_images/system-options.png | Bin 0 -> 24681 bytes .../_images/system-options.png.data | 3 + .../_images/target_template_1_0.png | Bin 0 -> 8593 bytes .../_images/target_template_1_1.png | Bin 0 -> 3793 bytes .../_images/target_template_1_2.png | Bin 0 -> 65692 bytes .../_images/target_template_1_3.png | Bin 0 -> 32086 bytes .../_images/target_template_1_4.png | Bin 0 -> 43353 bytes ..._template_with_defaults_overridden_1_1.png | Bin 0 -> 3083 bytes ..._template_with_defaults_overridden_1_2.png | Bin 0 -> 2796 bytes ...get_template_with_input_parameters_1_0.png | Bin 0 -> 11421 bytes ...get_template_with_input_parameters_1_1.png | Bin 0 -> 3841 bytes ...get_template_with_input_parameters_1_2.png | Bin 0 -> 1950 bytes .../_images/targetless_template_1_3.png | Bin 0 -> 7365 bytes .../_images/targetless_template_1_4.png | Bin 0 -> 3440 bytes .../eiffelstudio/_images/task-options.png | Bin 0 -> 29207 bytes .../_images/task-options.png.data | 3 + .../eiffelstudio/_images/terminal-icon.png | Bin 0 -> 737 bytes .../_images/terminal-icon.png.data | 3 + .../eiffelstudio/_images/threads-tool.png | Bin 0 -> 2652 bytes .../_images/threads-tool.png.data | 3 + .../_images/tool-breakpoints-icon.png | Bin 0 -> 597 bytes .../_images/tool-breakpoints-icon.png.data | 3 + .../_images/tool-clusters-icon.png | Bin 0 -> 467 bytes .../_images/tool-clusters-icon.png.data | 3 + .../eiffelstudio/_images/tool-config-icon.png | Bin 0 -> 596 bytes .../_images/tool-config-icon.png.data | 3 + .../_images/tool-favorites-icon.png | Bin 0 -> 657 bytes .../_images/tool-favorites-icon.png.data | 3 + .../eiffelstudio/_images/tool-search-icon.png | Bin 0 -> 355 bytes .../_images/tool-search-icon.png.data | 3 + .../_images/toolbar-close-icon.png | Bin 0 -> 231 bytes .../_images/toolbar-close-icon.png.data | 3 + .../_images/toolbar-context-menu.png | Bin 0 -> 9891 bytes .../_images/toolbar-context-menu.png.data | 3 + .../_images/toolbar-dropdown-icon.png | Bin 0 -> 140 bytes .../_images/toolbar-dropdown-icon.png.data | 3 + .../_images/toolbar-head-icon_0.png | Bin 0 -> 1119 bytes .../_images/toolbar-head-icon_0.png.data | 3 + .../_images/toolbar-maximize-icon.png | Bin 0 -> 269 bytes .../_images/toolbar-maximize-icon.png.data | 3 + .../_images/toolbar-minimize-icon.png | Bin 0 -> 203 bytes .../_images/toolbar-minimize-icon.png.data | 3 + .../_images/toolbar-options-dropdown.png | Bin 0 -> 4318 bytes .../_images/toolbar-options-dropdown.png.data | 3 + .../_images/toolbar-restore-icon.png | Bin 0 -> 283 bytes .../_images/toolbar-restore-icon.png.data | 3 + .../eiffelstudio/_images/trace_01_off.png | Bin 0 -> 11117 bytes .../_images/trace_01_off.png.data | 3 + .../eiffelstudio/_images/trace_01_on.png | Bin 0 -> 12363 bytes .../eiffelstudio/_images/trace_01_on.png.data | 3 + .../_images/trace_01_with_eiffelbase.png | Bin 0 -> 35061 bytes .../_images/trace_01_with_eiffelbase.png.data | 3 + .../_images/un-auto-hide-icon.png | Bin 0 -> 1422 bytes .../_images/un-auto-hide-icon.png.data | 3 + .../_images/unused-feature-criterion.jpg | Bin 0 -> 33281 bytes .../_images/unused-feature-criterion.jpg.data | 3 + .../eiffelstudio/_images/unused-feature.jpg | Bin 0 -> 49715 bytes .../_images/unused-feature.jpg.data | 3 + .../_images/use-cluster-names.png | Bin 0 -> 6408 bytes .../_images/use-cluster-names.png.data | 3 + .../_images/use-full-cluster-names.png | Bin 0 -> 6906 bytes .../_images/use-full-cluster-names.png.data | 3 + .../_images/use-namespace-name.png | Bin 0 -> 7982 bytes .../_images/use-namespace-name.png.data | 3 + .../_images/value-of-metric-is.jpg | Bin 0 -> 39927 bytes .../_images/value-of-metric-is.jpg.data | 3 + .../eiffelstudio/_images/value-tester.jpg | Bin 0 -> 33078 bytes .../_images/value-tester.jpg.data | 3 + .../eiffelstudio/_images/variable-options.png | Bin 0 -> 27606 bytes .../_images/variable-options.png.data | 3 + .../eiffelstudio/_images/view-buttons.png | Bin 0 -> 3478 bytes .../_images/view-buttons.png.data | 3 + .../_images/view-clickable-feature-icon.png | Bin 0 -> 526 bytes .../view-clickable-feature-icon.png.data | 3 + .../_images/view-clickable-icon.png | Bin 0 -> 616 bytes .../_images/view-clickable-icon.png.data | 3 + .../_images/view-contracts-icon.png | Bin 0 -> 784 bytes .../_images/view-contracts-icon.png.data | 3 + .../_images/view-editor-feature-icon.png | Bin 0 -> 497 bytes .../_images/view-editor-feature-icon.png.data | 3 + .../eiffelstudio/_images/view-editor-icon.png | Bin 0 -> 560 bytes .../_images/view-editor-icon.png.data | 3 + .../_images/view-flat-contracts-icon.png | Bin 0 -> 820 bytes .../_images/view-flat-contracts-icon.png.data | 3 + .../eiffelstudio/_images/view-flat-icon.png | Bin 0 -> 637 bytes .../_images/view-flat-icon.png.data | 3 + .../eiffelstudio/_images/view-next-icon.png | Bin 0 -> 498 bytes .../_images/view-next-icon.png.data | 3 + .../_images/view-previous-icon.png | Bin 0 -> 508 bytes .../_images/view-previous-icon.png.data | 3 + .../_images/view-unmodified-icon.png | Bin 0 -> 664 bytes .../_images/view-unmodified-icon.png.data | 3 + .../eiffelstudio/_images/visible-metric.jpg | Bin 0 -> 40926 bytes .../_images/visible-metric.jpg.data | 3 + .../eiffelstudio/_images/visible-metric2.jpg | Bin 0 -> 42857 bytes .../_images/visible-metric2.jpg.data | 3 + .../eiffelstudio/_images/warning-options.png | Bin 0 -> 28613 bytes .../_images/warning-options.png.data | 3 + .../20.05/eiffelstudio/_images/warning.png | Bin 0 -> 338 bytes .../eiffelstudio/_images/warning.png.data | 3 + .../_images/windows-minimize-all-icon.png | Bin 0 -> 650 bytes .../windows-minimize-all-icon.png.data | 3 + .../_images/windows-raise-all-icon.png | Bin 0 -> 610 bytes .../_images/windows-raise-all-icon.png.data | 3 + .../eiffelstudio/_images/windows-tool.png | Bin 0 -> 1887 bytes .../_images/windows-tool.png.data | 3 + .../_images/windows-windows-icon.png | Bin 0 -> 403 bytes .../_images/windows-windows-icon.png.data | 3 + .../_images/xmi-wizard-cluster-selection.png | Bin 0 -> 13848 bytes .../xmi-wizard-cluster-selection.png.data | 3 + .../_images/xmi-wizard-path-selection.png | Bin 0 -> 10303 bytes .../xmi-wizard-path-selection.png.data | 3 + .../eiffelstudio-how-tos/browsing/index.wiki | 5 + .../browsing/opening-new-windows.wiki | 13 + .../browsing/searching/index.wiki | 5 + .../browsing/searching/looking-class.wiki | 7 + .../browsing/searching/looking-cluster.wiki | 7 + .../searching/looking-expression-text.wiki | 14 + .../browsing/searching/looking-feature.wiki | 8 + .../centering-tools-component.wiki | 10 + .../index.wiki | 5 + .../viewing-information-about-class.wiki | 12 + .../viewing-information-about-cluster.wiki | 12 + .../viewing-information-about-feature.wiki | 12 + .../compiling/clean-compile.wiki | 14 + .../compiling/enabling-profiler.wiki | 15 + .../compiling/generating-executables.wiki | 27 + .../compiling/generating-libraries.wiki | 33 + .../eiffelstudio-how-tos/compiling/index.wiki | 5 + .../compiling/setting-assertion-level.wiki | 15 + .../compiling/setting-syntax-variant.wiki | 37 + .../compiling/tuning-program.wiki | 25 + .../compiling/using-libraries.wiki | 27 + .../compiling/using-threads.wiki | 19 + .../changing-default-history-size.wiki | 15 + .../changing-texts-display.wiki | 9 + ...osing-classes-be-ignored-bon-diagrams.wiki | 15 + .../configuring-external-editor.wiki | 15 + .../customizing-class-text-views.wiki | 18 + ...zing-eiffelstudio-subversion-commands.wiki | 103 ++ .../customizing-toolbars.wiki | 13 + .../customizing-eiffelstudio/index.wiki | 5 + ...aking-context-tool-independent-editor.wiki | 19 + .../setting-editor-behavior.wiki | 10 + .../altering-system/creating-new-class.wiki | 11 + .../altering-system/creating-new-feature.wiki | 10 + .../altering-system/deleting-items.wiki | 17 + .../altering-system/index.wiki | 5 + .../altering-system/refactoring/index.wiki | 10 + .../refactoring/pull-feature.wiki | 9 + .../refactoring/rename-class.wiki | 16 + .../refactoring/rename-feature.wiki | 13 + .../exporting-diagram-png-image-file.wiki | 9 + .../designing-project/index.wiki | 5 + ...eating-aggregate-clientsupplier-links.wiki | 16 + .../creating-clientsupplier-links.wiki | 15 + .../managing-links/creating-handles.wiki | 5 + .../creating-inheritance-links.wiki | 16 + .../managing-links/index.wiki | 5 + .../managing-links/using-link-tool.wiki | 26 + .../managing-views/adding-view.wiki | 9 + .../managing-views/deleting-view.wiki | 15 + .../managing-views/index.wiki | 5 + .../adjusting-physics-settings.wiki | 10 + .../modifying-display/anchoring.wiki | 10 + .../change-display-quality.wiki | 10 + .../changing-colors-classes.wiki | 8 + .../changing-system-exploration-depth.wiki | 13 + .../iconifying-and-restoring-cluster.wiki | 10 + .../modifying-display/index.wiki | 5 + .../removing-items-view.wiki | 9 + .../retrieving-all-classes-cluster.wiki | 5 + .../showing-or-hiding-links-and-labels.wiki | 7 + .../switching-between-bon-and-uml-view.wiki | 8 + .../modifying-display/turn-physics-mode.wiki | 10 + .../using-cluster-legend.wiki | 12 + .../modifying-display/zooming-diagram.wiki | 9 + .../switching-diagram-tool.wiki | 10 + .../undoing-and-redoing.wiki | 19 + .../editing-project/adding-class.wiki | 30 + .../editing-project/adding-cluster.wiki | 27 + .../adding-feature/adding-attribute.wiki | 11 + .../adding-feature/adding-function.wiki | 11 + .../adding-feature/adding-procedure.wiki | 10 + .../editing-project/adding-feature/index.wiki | 5 + .../opening-new-feature-dialog.wiki | 10 + .../editing-project/adding-library.wiki | 21 + .../changing-project-parameters.wiki | 12 + .../editing-project/index.wiki | 5 + .../editing-project/moving-class.wiki | 11 + .../editing-project/removing-class.wiki | 17 + .../editing-project/removing-cluster.wiki | 14 + .../editing-project/removing-feature.wiki | 10 + .../eiffelstudio-creating-new-project.wiki | 32 + .../eiffelstudio-starting-project/index.wiki | 5 + ...retrieving-project-configuration-file.wiki | 16 + ...generating-multi-format-documentation.wiki | 49 + .../generating-xmi-documentation.wiki | 22 + .../generating-documentation/index.wiki | 5 + .../computing-measure/evaluating-measure.wiki | 22 + .../computing-measure/index.wiki | 9 + .../computing-measure/saving-measure.wiki | 17 + .../viewing-measure-details.wiki | 17 + .../handling-archives/comparing-archive.wiki | 15 + .../handling-archives/creating-archive.wiki | 11 + .../handling-archives/index.wiki | 7 + .../defining-derived-metrics.wiki | 21 + .../defining-linear-metrics.wiki | 20 + .../defining-ratio-metrics.wiki | 21 + .../defining-new-metrics/index.wiki | 13 + .../handling-new-metrics/index.wiki | 9 + .../managing-new-metrics.wiki | 7 + .../how-analyze-project/index.wiki | 8 + .../eiffelstudio-how-tos/index.wiki | 5 + .../exploring-application-dynamic-state.wiki | 20 + .../handling-exceptions.wiki | 12 + .../running-and-debugging/index.wiki | 5 + .../interrupting-application.wiki | 18 + .../running-and-debugging/profiling.wiki | 72 ++ .../running-application.wiki | 28 + .../setting-command-line-arguments.wiki | 22 + .../running-and-debugging/tracing.wiki | 220 ++++ .../using-breakpoints.wiki | 15 + .../using-debug-clauses.wiki | 29 + .../autotest/autotest-interface.wiki | 114 ++ .../autotest/eiffel-test-wizard.wiki | 99 ++ .../autotest/index.wiki | 31 + .../address-bars/change-data-share-mode.wiki | 12 + .../context-tool-address-bar.wiki | 22 + .../browsing-tools/address-bars/index.wiki | 17 + .../address-bars/main-address-bar.wiki | 35 + .../favorites-tool/favorites-menu.wiki | 15 + .../favorites-tool/favorites-tree.wiki | 14 + .../browsing-tools/favorites-tool/index.wiki | 9 + .../create-favorite-folder-command.wiki | 12 + .../organize-favorites-dialog/index.wiki | 16 + .../move-folder-command.wiki | 23 + .../new-favorite-class-command.wiki | 23 + .../remove-favorite-command.wiki | 7 + .../features-tool/feature-tree.wiki | 25 + .../browsing-tools/features-tool/index.wiki | 15 + .../features-tool/new-feature-command.wiki | 7 + .../browsing-tools/groups-tool/index.wiki | 9 + .../groups-tool/locate-command.wiki | 12 + .../groups-tool/new-class-command.wiki | 12 + .../groups-tool/new-cluster-command.wiki | 17 + .../system-tree-representation.wiki | 21 + .../browsing-tools/index.wiki | 11 + .../browsing-tools/search-tool.wiki | 99 ++ .../browsing-tools/windows-tool/index.wiki | 16 + .../windows-tool/window-list.wiki | 14 + .../windows-tool/window-menu.wiki | 8 + .../windows-tool/window-related-commands.wiki | 12 + .../Errors-and-warnings/Legacy-code/VD81.wiki | 6 + .../Legacy-code/VWMA--1-.wiki | 27 + .../Legacy-code/index.wiki | 5 + .../compiler/Errors-and-warnings/index.wiki | 9 + .../Eiffel-compatibility-options.wiki | 168 +++ .../command-line/batch-compilation.wiki | 47 + .../class-menu.wiki | 72 ++ .../compile-and-run-menu.wiki | 29 + .../documentation-menu.wiki | 21 + .../feature-menu.wiki | 45 + .../command-line-interactive-mode/index.wiki | 25 + .../profile-menu.wiki | 167 +++ .../system-menu.wiki | 24 + .../testing-menu.wiki | 21 + ...ffelstudio-using-command-line-options.wiki | 405 +++++++ .../command-line/finish-freezing-utility.wiki | 64 + .../compiler/command-line/index.wiki | 11 + ...ISE-Eiffel-15.01-and-ISE-Eiffel-15.08.wiki | 40 + ...ISE-Eiffel-15.08-and-ISE-Eiffel-15.12.wiki | 27 + ...ISE-Eiffel-15.12-and-ISE-Eiffel-16.05.wiki | 116 ++ .../Major-changes-with-ISE-Eiffel-18.07.wiki | 6 + .../index.wiki | 6 + ...rtions-checking-configuration-changes.wiki | 24 + .../compiler-differences-45-50.wiki | 32 + .../eiffelthread-differences-45-50.wiki | 17 + .../index.wiki | 11 + ...tween-ise-eiffel-50-and-ise-eiffel-51.wiki | 62 + ...tween-ise-eiffel-51-and-ise-eiffel-52.wiki | 37 + ...tween-ise-eiffel-52-and-ise-eiffel-53.wiki | 165 +++ ...tween-ise-eiffel-53-and-ise-eiffel-54.wiki | 80 ++ ...tween-ise-eiffel-54-and-ise-eiffel-55.wiki | 149 +++ ...tween-ise-eiffel-55-and-ise-eiffel-56.wiki | 161 +++ ...tween-ise-eiffel-56-and-ise-eiffel-57.wiki | 68 ++ .../index.wiki | 6 + ...tween-ise-eiffel-57-and-ise-eiffel-60.wiki | 72 ++ ...tween-ise-eiffel-60-and-ise-eiffel-61.wiki | 51 + ...tween-ise-eiffel-61-and-ise-eiffel-62.wiki | 53 + ...tween-ise-eiffel-62-and-ise-eiffel-63.wiki | 62 + ...tween-ise-eiffel-63-and-ise-eiffel-64.wiki | 78 ++ ...tween-ise-eiffel-64-and-ise-eiffel-65.wiki | 49 + ...tween-ise-eiffel-65-and-ise-eiffel-66.wiki | 52 + ...tween-ise-eiffel-66-and-ise-eiffel-67.wiki | 39 + ...tween-ise-eiffel-67-and-ise-eiffel-68.wiki | 29 + .../compiler/compiler-history/index.wiki | 11 + ...n-ise-eiffel-1311-and-ise-eiffel-1405.wiki | 63 + ...tween-ise-eiffel-68-and-ise-eiffel-70.wiki | 60 + ...tween-ise-eiffel-70-and-ise-eiffel-71.wiki | 63 + ...tween-ise-eiffel-71-and-ise-eiffel-72.wiki | 36 + ...tween-ise-eiffel-72-and-ise-eiffel-73.wiki | 36 + ...een-ise-eiffel-73-and-ise-eiffel-1311.wiki | 43 + ...ng-and-eiffel-software-implementation.wiki | 73 ++ ...67-and-eiffel-software-implementation.wiki | 383 ++++++ .../definition-file.wiki | 64 + .../dynamic-library-builder.wiki | 30 + .../dynamic-library-generated-files.wiki | 47 + .../dynamic-library-generation/index.wiki | 13 + .../compiler/index.wiki | 10 + .../compiler/melting-ice-technology.wiki | 34 + .../compiler/supported-c-compilers.wiki | 75 ++ ...syntax-level-variant-settings-version.wiki | 140 +++ .../eiffelstudio-reference/console-tool.wiki | 92 ++ .../contract-editor-tool.wiki | 137 +++ .../breakpoints/breakpoint-commands.wiki | 12 + .../breakpoints/breakpoint-editing.wiki | 60 + .../breakpoint-information-command.wiki | 31 + .../debugger/breakpoints/breakpoint-menu.wiki | 26 + .../debugger/breakpoints/index.wiki | 32 + .../call-stack-tool-interface.wiki | 34 + .../debugger/call-stack-tool/index.wiki | 14 + .../information-relative-stack-element.wiki | 12 + .../call-stack-tool/save-call-stack.wiki | 8 + .../call-stack-tool/supported-exceptions.wiki | 48 + .../debugger/command-line-debugger.wiki | 63 + .../debugger/debuggees-object-storage.wiki | 25 + .../debugger/debugging-limitations.wiki | 22 + .../debugger/debugging-preferences.wiki | 19 + .../debugging-tips-objects-grid-view.wiki | 15 + .../debugger/exceptions-handling-tool.wiki | 44 + .../attach-application.wiki | 32 + .../detach-application.wiki | 11 + .../execute-one-line-time.wiki | 14 + .../execution-profiles.wiki | 33 + .../debugger/execution-commands/index.wiki | 28 + .../execution-commands/pause-application.wiki | 12 + .../run-and-stop-breakpoints.wiki | 11 + .../execution-commands/run-arguments.wiki | 12 + .../run-finalized-executable.wiki | 14 + .../run-without-breakpoints.wiki | 13 + .../execution-commands/step-feature.wiki | 14 + .../execution-commands/step-out-feature.wiki | 13 + .../stop-debugged-application.wiki | 13 + .../execution-record-and-replay/index.wiki | 26 + .../record-execution.wiki | 54 + .../replay-recorded-execution.wiki | 61 + .../evaluation-tool-or-watch-tool.wiki | 44 + .../debugger/expression-evaluation/index.wiki | 27 + .../new-expression-dialog.wiki | 28 + .../debugger/index.wiki | 18 + .../object-tool/attribute-symbols.wiki | 19 + .../debugger/object-tool/debug-output.wiki | 16 + .../debugger/object-tool/index.wiki | 47 + ...ct-viewer-also-known-expanded-display.wiki | 68 ++ .../object-tool/remove-object-command.wiki | 10 + .../object-tool/set-slice-size-command.wiki | 22 + .../debugger/stack-overflow-prevention.wiki | 24 + .../debugger/threads-tool.wiki | 20 + .../diagram-tool/contexts.wiki | 19 + .../diagram-tool-code-generation.wiki | 98 ++ .../diagram-tool/diagram-toolbar.wiki | 77 ++ .../diagram-tool/index.wiki | 12 + .../diagram-tool/notation.wiki | 99 ++ .../diagram-tool/views.wiki | 23 + .../eis-incoming/eiffel-scheme-syntax.wiki | 27 + .../eis-incoming/eis-incoming-examples.wiki | 14 + .../eis-incoming/index.wiki | 5 + .../eis-outgoing/index.wiki | 59 + .../annotation-management.wiki | 48 + .../browsing-information.wiki | 73 ++ .../information-tool/change-analysis.wiki | 32 + .../eis-outgoing/information-tool/index.wiki | 10 + .../information-tool/protocols.wiki | 21 + .../information-tool/variable-definition.wiki | 38 + .../eiffel-information-system/index.wiki | 32 + .../eiffel-inspector-analyzing-results.wiki | 23 + .../eiffel-inspector-customization.wiki | 53 + .../eiffel-inspector-getting-started.wiki | 17 + .../ca001-self-assignment.wiki | 37 + .../ca002-unused-argument.wiki | 37 + .../ca003-feature-never-called.wiki | 33 + .../ca004-command-query-separation.wiki | 55 + .../ca005-useless-object-test-local.wiki | 49 + .../ca006-object-test-typing-not-needed.wiki | 44 + ...-complexity-nested-branches-and-loops.wiki | 59 + .../ca011-too-many-arguments.wiki | 45 + .../ca013-exported-creation-procedure.wiki | 61 + .../ca017-empty-conditional.wiki | 40 + ...20-variable-not-read-after-assignment.wiki | 54 + .../ca023-unneeded-parentheses.wiki | 43 + .../ca024-use-across-loop.wiki | 45 + .../ca025-use-semicolons.wiki | 40 + .../ca028-combine-two-if-instructions.wiki | 39 + .../ca032-long-routine-implementation.wiki | 35 + .../ca033-large-class.wiki | 39 + .../ca034-high-npath-complexity.wiki | 35 + .../ca071-self-comparison.wiki | 38 + .../eiffel-inspector-rules/index.wiki | 15 + .../eiffel-inspector-running-analyzer.wiki | 71 ++ .../eiffel-inspector/index.wiki | 8 + .../eiffelstudio-editor/Code-Templates.wiki | 265 +++++ .../class-name-auto-complete.wiki | 68 ++ .../feature-call-auto-complete.wiki | 82 ++ .../automatic-completion/index.wiki | 13 + .../syntax-auto-complete.wiki | 66 + .../clipboard-functionality.wiki | 15 + .../eiffelstudio-editor/cursor-moves.wiki | 15 + .../edit-menu-commands.wiki | 33 + .../editor-customization.wiki | 9 + .../history-functionality.wiki | 13 + .../eiffelstudio-editor/index.wiki | 13 + .../comment-and-uncomment-lines.wiki | 16 + .../embed-lines-if-thenend-or-debugend.wiki | 14 + .../indent-and-unindent-selection.wiki | 16 + .../operations-text-blocks/index.wiki | 9 + .../search-functionality.wiki | 20 + .../eiffelstudio-editor/selection.wiki | 19 + .../index.wiki | 5 + .../pick-and-drop-mechanism.wiki | 22 + .../pick-and-drop-shortcut.wiki | 14 + .../toolbar-customization.wiki | 42 + .../eiffelstudio-key-shortcuts.wiki | 230 ++++ .../eiffelstudio-window-overview.wiki | 74 ++ .../index.wiki | 6 + .../main-toolbars.wiki | 49 + .../eiffelstudio-preferences/index.wiki | 6 + .../preference-window-overview.wiki | 31 + .../debugger-preferences.wiki | 46 + .../eiffel-editor-preferences/index.wiki | 178 +++ ...values-keyword-completion-preferences.wiki | 505 ++++++++ .../index.wiki | 6 + .../keyword-completion-customization.wiki | 91 ++ ...ords-automatic-completion-preferences.wiki | 74 ++ .../general-editor-preferences.wiki | 120 ++ .../editor-preferences/index.wiki | 5 + .../keyboard-shortcuts-preferences.wiki | 24 + .../context-tools.wiki | 111 ++ ...eiffelstudio-diagram-tool-preferences.wiki | 178 +++ .../eiffelstudio-tools-preferences/index.wiki | 7 + .../general-preferences.wiki | 24 + .../preferences-reference/index.wiki | 5 + .../development-window-preferences.wiki | 67 ++ .../interface/discardable-dialogs.wiki | 8 + .../interface/index.wiki | 5 + .../recent-project-preferences.wiki | 19 + .../Language-and-Capabilities.wiki | 16 + .../advanced-options/debug-options.wiki | 11 + .../advanced-options/externals-options.wiki | 25 + .../advanced-options/index.wiki | 192 +++ .../advanced-options/tasks-options.wiki | 26 + .../advanced-options/type-mapping.wiki | 10 + .../advanced-options/variables.wiki | 10 + .../advanced-options/warning-options.wiki | 21 + .../assertion-options.wiki | 16 + .../general-target-options/group-options.wiki | 79 ++ .../general-target-options/index.wiki | 58 + .../index.wiki | 39 + .../system-options.wiki | 22 + .../Release-notes-for-EiffelStudio-15.12.wiki | 39 + .../Release-notes-for-EiffelStudio-16.05.wiki | 40 + .../Release-notes-for-EiffelStudio-17.01.wiki | 37 + .../Release-notes-for-EiffelStudio-17.05.wiki | 55 + .../Release-notes-for-EiffelStudio-18.01.wiki | 62 + .../Release-notes-for-EiffelStudio-18.07.wiki | 40 + .../Release-notes-for-EiffelStudio-18.11.wiki | 46 + .../Release-notes-for-EiffelStudio-19.05.wiki | 23 + .../Release-notes-for-EiffelStudio-19.12.wiki | 24 + .../eiffelstudio-5-release-notes/index.wiki | 6 + .../release-notes-eiffelstudio-50.wiki | 63 + .../release-notes-eiffelstudio-51.wiki | 36 + .../release-notes-eiffelstudio-52.wiki | 110 ++ .../release-notes-eiffelstudio-53.wiki | 98 ++ .../release-notes-eiffelstudio-54.wiki | 96 ++ .../release-notes-eiffelstudio-55.wiki | 83 ++ .../release-notes-eiffelstudio-56.wiki | 186 +++ .../release-notes-eiffelstudio-57.wiki | 158 +++ .../eiffelstudio-6-release-notes/index.wiki | 6 + .../release-notes-eiffelstudio-60.wiki | 98 ++ .../release-notes-eiffelstudio-61.wiki | 63 + .../release-notes-eiffelstudio-62.wiki | 74 ++ .../release-notes-eiffelstudio-63.wiki | 77 ++ .../release-notes-eiffelstudio-64.wiki | 94 ++ .../release-notes-eiffelstudio-65.wiki | 90 ++ .../release-notes-eiffelstudio-66.wiki | 86 ++ .../release-notes-eiffelstudio-67.wiki | 59 + .../release-notes-eiffelstudio-68.wiki | 56 + .../eiffelstudio-7-release-notes/index.wiki | 3 + .../release-notes-eiffelstudio-70.wiki | 84 ++ .../release-notes-eiffelstudio-71.wiki | 113 ++ .../release-notes-eiffelstudio-72.wiki | 62 + .../release-notes-eiffelstudio-73.wiki | 56 + .../eiffelstudio-release-notes/index.wiki | 8 + .../release-notes-eiffelstudio-1311.wiki | 77 ++ .../release-notes-eiffelstudio-1405.wiki | 98 ++ .../release-notes-eiffelstudio-1501.wiki | 8 + .../release-notes-eiffelstudio-1508.wiki | 9 + .../error-list-tool.wiki | 74 ++ .../class-views/ancestors.wiki | 13 + .../class-views/attributes.wiki | 13 + .../class-formatters-basic-text-view.wiki | 21 + .../class-formatters-external-features.wiki | 9 + .../class-formatters-flat-view.wiki | 18 + .../class-views/clickable-view.wiki | 10 + .../class-views/clients.wiki | 14 + .../class-views/contract-view.wiki | 11 + .../class-views/creators.wiki | 9 + .../class-views/deferred-features.wiki | 9 + .../class-views/descendants.wiki | 13 + .../class-views/exported-features.wiki | 9 + .../class-views/flat-contract-view.wiki | 16 + .../class-views/index.wiki | 28 + .../class-views/invariants.wiki | 9 + .../once-routines-and-constants.wiki | 9 + .../class-views/routines.wiki | 13 + .../class-views/suppliers.wiki | 13 + .../feature-formatters-ancestor-versions.wiki | 12 + .../feature-formatters-assignees.wiki | 9 + .../feature-formatters-assigners.wiki | 9 + .../feature-formatters-basic-text-view.wiki | 16 + .../feature-formatters-callees.wiki | 8 + .../feature-formatters-callers.wiki | 20 + .../feature-formatters-creations.wiki | 8 + .../feature-formatters-creators.wiki | 8 + ...eature-formatters-descendant-versions.wiki | 12 + .../feature-formatters-flat-view.wiki | 14 + .../feature-formatters-homonyms.wiki | 15 + .../feature-formatters-implementers.wiki | 13 + .../feature-views/index.wiki | 22 + .../index.wiki | 11 + .../eiffelstudio-reference/index.wiki | 9 + .../attributes-metrics-and-measures.wiki | 35 + .../definitions/criterion-references.wiki | 763 ++++++++++++ .../metrics-tool/definitions/domains.wiki | 64 + .../elementary-and-composite-metrics.wiki | 36 + .../metrics-tool/definitions/index.wiki | 7 + .../definitions/measurement-archive.wiki | 24 + .../metric-framework-and-theory.wiki | 25 + .../definitions/predefined-raw-metrics.wiki | 197 +++ .../raw-metrics-and-selection-criteria.wiki | 48 + .../metrics-tool/definitions/scopes.wiki | 28 + .../definitions/selection-criteria.wiki | 116 ++ .../under-hood-how-metrics-work.wiki | 52 + .../metrics-tool/definitions/units.wiki | 137 +++ .../metrics-tool/index.wiki | 13 + .../metrics-tool/requirements.wiki | 20 + .../detailed-result-panel.wiki | 16 + .../user-interface-basics/index.wiki | 5 + .../metric-archive-panel.wiki | 34 + .../metric-definition-panel.wiki | 87 ++ .../metric-evaluation-panel.wiki | 39 + .../metric-history-panel.wiki | 80 ++ .../external-compilation-pane.wiki | 54 + .../outputs-tool/general-output-pane.wiki | 7 + .../outputs-tool/index.wiki | 61 + .../dialogs/error-wizard.wiki | 24 + .../external-commands-editor-dialog.wiki | 60 + .../wizards-and-dialogs/dialogs/index.wiki | 5 + .../dialogs/new-feature-dialog/index.wiki | 14 + .../new-attribute-layout.wiki | 45 + .../argument-list.wiki | 23 + .../feature-body.wiki | 35 + .../feature-clauses.wiki | 39 + .../header-comment.wiki | 15 + .../index.wiki | 5 + .../invariant-field.wiki | 24 + .../local-variable.wiki | 13 + .../name-field.wiki | 11 + .../postcondition.wiki | 12 + .../precondition.wiki | 13 + .../set-procedure.wiki | 32 + .../type-selection.wiki | 45 + .../new-feature-dialog-overview.wiki | 17 + .../new-function-layout.wiki | 40 + .../new-procedure-layout.wiki | 41 + .../wizards-and-dialogs/index.wiki | 5 + .../profiler-wizard/index.wiki | 22 + .../how-set-profiler-configuration-file.wiki | 50 + .../profiler-how-tos/index.wiki | 5 + .../profiler-wizard-guided-tour/index.wiki | 16 + .../profile-query-window.wiki | 25 + .../reuse-or-generate-execution-profile.wiki | 26 + .../select-compilation-mode.wiki | 20 + ...ion-you-need-and-formulate-your-query.wiki | 58 + ...ion-record-generate-execution-profile.wiki | 28 + .../eiffelstudio/getting_started/index.wiki | 5 + .../introducing_eiffelstudio.wiki | 88 ++ .../setup-and-installation/index.wiki | 5 + .../OpenBSD.wiki | 117 ++ .../eiffelstudio-freebsd.wiki | 116 ++ .../eiffelstudio-hp-openvms.wiki | 88 ++ .../eiffelstudio-hp-tru64-unix.wiki | 115 ++ .../eiffelstudio-hp-ux.wiki | 118 ++ .../eiffelstudio-linux.wiki | 141 +++ .../eiffelstudio-mac-os-x.wiki | 82 ++ .../eiffelstudio-sgi-irix.wiki | 113 ++ .../eiffelstudio-solaris.wiki | 116 ++ .../index.wiki | 5 + .../windows.wiki | 88 ++ .../third-party-tools-installation-help.wiki | 11 + documentation/20.05/eiffelstudio/index.wiki | 34 + documentation/20.05/faq/index.wiki | 28 + documentation/20.05/glossary/index.wiki | 423 +++++++ documentation/20.05/index.wiki | 27 + .../20.05/solutions/_files/eth-46802-01.pdf | Bin 0 -> 2816717 bytes ...iffelRibbon_Choosing_a_size_definition.png | Bin 0 -> 58729 bytes ...Ribbon_Choosing_a_size_definition.png.data | 3 + .../_images/EiffelRibbon_application_01.png | Bin 0 -> 88066 bytes .../EiffelRibbon_application_01.png.data | 3 + .../_images/EiffelRibbon_design_tool_01.png | Bin 0 -> 47285 bytes .../EiffelRibbon_design_tool_01.png.data | 3 + .../_images/EiffelRibbon_design_tool_02_0.png | Bin 0 -> 46455 bytes .../EiffelRibbon_design_tool_02_0.png.data | 3 + .../EiffelRibbon_scaling_policy_01.png | Bin 0 -> 11168 bytes .../EiffelRibbon_scaling_policy_01.png.data | 3 + .../EiffelRibbon_scaling_policy_01a.png | Bin 0 -> 9603 bytes .../EiffelRibbon_scaling_policy_01a.png.data | 3 + .../EiffelRibbon_scaling_policy_02.png | Bin 0 -> 43751 bytes .../EiffelRibbon_scaling_policy_02.png.data | 3 + .../EiffelRibbon_scaling_policy_03.png | Bin 0 -> 12829 bytes .../EiffelRibbon_scaling_policy_03.png.data | 3 + .../EiffelRibbon_scaling_policy_04.png | Bin 0 -> 11657 bytes .../EiffelRibbon_scaling_policy_04.png.data | 3 + .../EiffelRibbon_scaling_policy_05.png | Bin 0 -> 18524 bytes .../EiffelRibbon_scaling_policy_05.png.data | 3 + ...EiffelRibbon_size_definition_editor_01.png | Bin 0 -> 55054 bytes ...lRibbon_size_definition_editor_01.png.data | 3 + ...EiffelRibbon_size_definition_editor_02.png | Bin 0 -> 33080 bytes ...lRibbon_size_definition_editor_02.png.data | 3 + ...EiffelRibbon_size_definition_editor_03.png | Bin 0 -> 13760 bytes ...lRibbon_size_definition_editor_03.png.data | 3 + .../_images/EiffelRibbon_window_01.png | Bin 0 -> 38596 bytes .../_images/EiffelRibbon_window_01.png.data | 3 + ...iffelStudio_after_class_pick_and_drop2.png | Bin 0 -> 128626 bytes ...Studio_after_class_pick_and_drop2.png.data | 3 + ...ffelStudio_during_class_pick_and_drop2.png | Bin 0 -> 119071 bytes ...tudio_during_class_pick_and_drop2.png.data | 3 + .../_images/SCOOP_project_setting.png | Bin 0 -> 19067 bytes .../_images/SCOOP_project_setting.png.data | 3 + .../_images/WEL_cursors_example_01.png | Bin 0 -> 8120 bytes .../_images/WEL_cursors_example_01.png.data | 3 + .../20.05/solutions/_images/accelerator.png | Bin 0 -> 7388 bytes .../solutions/_images/accelerator.png.data | 3 + .../20.05/solutions/_images/analyz.png | Bin 0 -> 833 bytes .../20.05/solutions/_images/analyz.png.data | 3 + .../20.05/solutions/_images/bilinear.png | Bin 0 -> 1780 bytes .../20.05/solutions/_images/bilinear.png.data | 3 + .../20.05/solutions/_images/binary-tree.png | Bin 0 -> 3156 bytes .../solutions/_images/binary-tree.png.data | 3 + .../20.05/solutions/_images/bmpview.png | Bin 0 -> 57080 bytes .../20.05/solutions/_images/bmpview.png.data | 3 + .../20.05/solutions/_images/browse.png | Bin 0 -> 2022 bytes .../20.05/solutions/_images/browse.png.data | 3 + .../20.05/solutions/_images/brushes.png | Bin 0 -> 35862 bytes .../20.05/solutions/_images/brushes.png.data | 3 + .../solutions/_images/builder-window.png | Bin 0 -> 8413 bytes .../solutions/_images/builder-window.png.data | 3 + .../20.05/solutions/_images/calculator.png | Bin 0 -> 3546 bytes .../solutions/_images/calculator.png.data | 3 + .../solutions/_images/change-font-dialog.png | Bin 0 -> 6607 bytes .../_images/change-font-dialog.png.data | 3 + .../_images/class-project-diagram-client.png | Bin 0 -> 7117 bytes .../class-project-diagram-client.png.data | 3 + .../_images/class-project-diagram.png | Bin 0 -> 7404 bytes .../_images/class-project-diagram.png.data | 3 + .../solutions/_images/client-inheritance.png | Bin 0 -> 4339 bytes .../_images/client-inheritance.png.data | 3 + .../20.05/solutions/_images/collaps.png | Bin 0 -> 4710 bytes .../20.05/solutions/_images/collaps.png.data | 3 + .../20.05/solutions/_images/com-1.gif | Bin 0 -> 3023 bytes .../20.05/solutions/_images/com-1.gif.data | 3 + .../20.05/solutions/_images/com-2.gif | Bin 0 -> 5049 bytes .../20.05/solutions/_images/com-2.gif.data | 3 + .../20.05/solutions/_images/com-3.gif | Bin 0 -> 3902 bytes .../20.05/solutions/_images/com-3.gif.data | 3 + .../20.05/solutions/_images/comctrls.png | Bin 0 -> 11384 bytes .../20.05/solutions/_images/comctrls.png.data | 3 + .../20.05/solutions/_images/commands.png | Bin 0 -> 12990 bytes .../20.05/solutions/_images/commands.png.data | 3 + .../_images/complete-project-diagram.png | Bin 0 -> 9184 bytes .../_images/complete-project-diagram.png.data | 3 + .../_images/component-create-relation.png | Bin 0 -> 793 bytes .../component-create-relation.png.data | 3 + .../_images/component-fields-relation.png | Bin 0 -> 1078 bytes .../component-fields-relation.png.data | 3 + .../solutions/_images/component-namer.png | Bin 0 -> 6449 bytes .../_images/component-namer.png.data | 3 + .../_images/component-navigate-relation.png | Bin 0 -> 961 bytes .../component-navigate-relation.png.data | 3 + .../_images/component-search-relation.png | Bin 0 -> 937 bytes .../component-search-relation.png.data | 3 + .../solutions/_images/component-selector.png | Bin 0 -> 4741 bytes .../_images/component-selector.png.data | 3 + .../solutions/_images/component-viewer.png | Bin 0 -> 17001 bytes .../_images/component-viewer.png.data | 3 + .../solutions/_images/constant-in-use.png | Bin 0 -> 12101 bytes .../_images/constant-in-use.png.data | 3 + .../solutions/_images/constants-dialog.png | Bin 0 -> 24072 bytes .../_images/constants-dialog.png.data | 3 + .../20.05/solutions/_images/controls.png | Bin 0 -> 13581 bytes .../20.05/solutions/_images/controls.png.data | 3 + .../_images/creator-provider-relation.png | Bin 0 -> 1048 bytes .../creator-provider-relation.png.data | 3 + .../20.05/solutions/_images/ctlcolor.png | Bin 0 -> 7882 bytes .../20.05/solutions/_images/ctlcolor.png.data | 3 + .../20.05/solutions/_images/cursor-test.png | Bin 0 -> 16491 bytes .../solutions/_images/cursor-test.png.data | 3 + .../solutions/_images/date-time-picker.png | Bin 0 -> 7183 bytes .../_images/date-time-picker.png.data | 3 + .../_images/db-specific-tables-access-use.png | Bin 0 -> 8981 bytes .../db-specific-tables-access-use.png.data | 3 + .../_images/directory-search-small.png | Bin 0 -> 203 bytes .../_images/directory-search-small.png.data | 3 + .../20.05/solutions/_images/diskspace.png | Bin 0 -> 9746 bytes .../solutions/_images/diskspace.png.data | 3 + .../solutions/_images/display-window.png | Bin 0 -> 7844 bytes .../solutions/_images/display-window.png.data | 3 + .../solutions/_images/docked-external.png | Bin 0 -> 16578 bytes .../_images/docked-external.png.data | 3 + .../solutions/_images/docking-insert.png | Bin 0 -> 2136 bytes .../solutions/_images/docking-insert.png.data | 3 + ...les--date-time-picker-change-color-dlg.png | Bin 0 -> 3400 bytes ...date-time-picker-change-color-dlg.png.data | 3 + .../dv-choice-creator-fkeys-selection.png | Bin 0 -> 3463 bytes ...dv-choice-creator-fkeys-selection.png.data | 3 + .../_images/dv-table-component-strategy.png | Bin 0 -> 5837 bytes .../dv-table-component-strategy.png.data | 3 + .../_images/dv-tablerow-fields-design.png | Bin 0 -> 1786 bytes .../dv-tablerow-fields-design.png.data | 3 + .../dv-tablerows-navigator-clients.png | Bin 0 -> 5883 bytes .../dv-tablerows-navigator-clients.png.data | 3 + .../solutions/_images/eb_type_selector.png | Bin 0 -> 11434 bytes .../_images/eb_type_selector.png.data | 3 + .../solutions/_images/empty-radio-merge.png | Bin 0 -> 951 bytes .../_images/empty-radio-merge.png.data | 3 + .../_images/estore-generation.generator.png | Bin 0 -> 3601 bytes .../estore-generation.generator.png.data | 1 + .../_images/event-selection-dialog.png | Bin 0 -> 21288 bytes .../_images/event-selection-dialog.png.data | 3 + .../solutions/_images/ex_cust_pref_dialog.png | Bin 0 -> 7755 bytes .../_images/ex_cust_pref_dialog.png.data | 3 + .../solutions/_images/ex_pref_dialog.png | Bin 0 -> 17727 bytes .../solutions/_images/ex_pref_dialog.png.data | 3 + .../solutions/_images/exception-raising.png | Bin 0 -> 4696 bytes .../_images/exception-raising.png.data | 3 + .../20.05/solutions/_images/expand.png | Bin 0 -> 11477 bytes .../20.05/solutions/_images/expand.png.data | 3 + .../20.05/solutions/_images/fig-1.gif | Bin 0 -> 2106 bytes .../20.05/solutions/_images/fig-1.gif.data | 3 + .../20.05/solutions/_images/fig-2.gif | Bin 0 -> 1553 bytes .../20.05/solutions/_images/fig-2.gif.data | 3 + .../20.05/solutions/_images/fig-3.gif | Bin 0 -> 7614 bytes .../20.05/solutions/_images/fig-3.gif.data | 3 + .../20.05/solutions/_images/figure1.png | Bin 0 -> 5286 bytes .../20.05/solutions/_images/figure1.png.data | 3 + .../_images/fixed-child-positioner.png | Bin 0 -> 12204 bytes .../_images/fixed-child-positioner.png.data | 3 + .../20.05/solutions/_images/folders.png | Bin 0 -> 5804 bytes .../20.05/solutions/_images/folders.png.data | 3 + .../20.05/solutions/_images/fontenum.png | Bin 0 -> 11163 bytes .../20.05/solutions/_images/fontenum.png.data | 3 + documentation/20.05/solutions/_images/fun.png | Bin 0 -> 20180 bytes .../20.05/solutions/_images/fun.png.data | 3 + .../20.05/solutions/_images/gauges.png | Bin 0 -> 5175 bytes .../20.05/solutions/_images/gauges.png.data | 3 + .../20.05/solutions/_images/header-ctrl.png | Bin 0 -> 7682 bytes .../solutions/_images/header-ctrl.png.data | 3 + .../20.05/solutions/_images/hello-world.png | Bin 0 -> 2825 bytes .../solutions/_images/hello-world.png.data | 3 + .../20.05/solutions/_images/hello.png | Bin 0 -> 6294 bytes .../20.05/solutions/_images/hello.png.data | 3 + .../solutions/_images/history-window.png | Bin 0 -> 9607 bytes .../solutions/_images/history-window.png.data | 3 + .../_images/icon-builder-window-color.png | Bin 0 -> 249 bytes .../icon-builder-window-color.png.data | 3 + .../_images/icon-clipboard-color.png | Bin 0 -> 256 bytes .../_images/icon-clipboard-color.png.data | 3 + .../_images/icon-cmd-history-color.png | Bin 0 -> 139 bytes .../_images/icon-cmd-history-color.png.data | 3 + .../_images/icon-code-generation-color.png | Bin 0 -> 183 bytes .../icon-code-generation-color.png.data | 3 + .../icon-component-build-view-color.png | Bin 0 -> 181 bytes .../icon-component-build-view-color.png.data | 3 + .../icon-component-display-view-color.png | Bin 0 -> 168 bytes ...icon-component-display-view-color.png.data | 3 + .../_images/icon-component-viewer-color.png | Bin 0 -> 226 bytes .../icon-component-viewer-color.png.data | 3 + .../solutions/_images/icon-copy-color.png | Bin 0 -> 183 bytes .../_images/icon-copy-color.png.data | 3 + .../solutions/_images/icon-cut-color.png | Bin 0 -> 141 bytes .../solutions/_images/icon-cut-color.png.data | 3 + .../_images/icon-delete-small-color.png | Bin 0 -> 175 bytes .../_images/icon-delete-small-color.png.data | 3 + .../_images/icon-display-window-color.png | Bin 0 -> 269 bytes .../icon-display-window-color.png.data | 3 + .../_images/icon-expand-all-small-color.png | Bin 0 -> 1191 bytes .../icon-expand-all-small-color.png.data | 3 + .../_images/icon-format-onces-color.png | Bin 0 -> 156 bytes .../_images/icon-format-onces-color.png.data | 3 + .../_images/icon-new-cluster-small-color.png | Bin 0 -> 1210 bytes .../icon-new-cluster-small-color.png.data | 3 + .../_images/icon-object-editor-color.png | Bin 0 -> 193 bytes .../_images/icon-object-editor-color.png.data | 3 + .../solutions/_images/icon-past-color.png | Bin 0 -> 250 bytes .../_images/icon-past-color.png.data | 3 + .../solutions/_images/icon-redo-color.png | Bin 0 -> 120 bytes .../_images/icon-redo-color.png.data | 3 + .../solutions/_images/icon-save-color.png | Bin 0 -> 182 bytes .../_images/icon-save-color.png.data | 3 + .../icon-show-hide-directory-color.png | Bin 0 -> 157 bytes .../icon-show-hide-directory-color.png.data | 3 + .../solutions/_images/icon-system-color.png | Bin 0 -> 203 bytes .../_images/icon-system-color.png.data | 3 + .../icon-titled-window-main-small-color.png | Bin 0 -> 1220 bytes ...on-titled-window-main-small-color.png.data | 3 + .../solutions/_images/icon-undo-color.png | Bin 0 -> 121 bytes .../_images/icon-undo-color.png.data | 3 + .../_images/implemented-interface-server.png | Bin 0 -> 3450 bytes .../implemented-interface-server.png.data | 3 + .../_images/implemented-interface.png | Bin 0 -> 4250 bytes .../_images/implemented-interface.png.data | 3 + .../_images/import-project-clashes.png | Bin 0 -> 11839 bytes .../_images/import-project-clashes.png.data | 3 + .../solutions/_images/import-project.png | Bin 0 -> 13029 bytes .../solutions/_images/import-project.png.data | 3 + .../_images/interface-inheritance-server.png | Bin 0 -> 4636 bytes .../interface-inheritance-server.png.data | 3 + .../_images/interface-inheritance.png | Bin 0 -> 4383 bytes .../_images/interface-inheritance.png.data | 3 + .../20.05/solutions/_images/introduction.png | Bin 0 -> 9910 bytes .../solutions/_images/introduction.png.data | 3 + .../_images/layout-constructor-locked.png | Bin 0 -> 3681 bytes .../layout-constructor-locked.png.data | 3 + .../solutions/_images/layout-constructor.png | Bin 0 -> 4048 bytes .../_images/layout-constructor.png.data | 3 + .../20.05/solutions/_images/linear.png | Bin 0 -> 1541 bytes .../20.05/solutions/_images/linear.png.data | 3 + .../20.05/solutions/_images/linked-list.png | Bin 0 -> 1932 bytes .../solutions/_images/linked-list.png.data | 3 + .../20.05/solutions/_images/list-view.png | Bin 0 -> 9652 bytes .../solutions/_images/list-view.png.data | 3 + .../20.05/solutions/_images/magnify.png | Bin 0 -> 21482 bytes .../20.05/solutions/_images/magnify.png.data | 3 + .../_images/main-window-with-docked-tools.png | Bin 0 -> 65647 bytes .../main-window-with-docked-tools.png.data | 3 + .../20.05/solutions/_images/main-window.png | Bin 0 -> 45268 bytes .../solutions/_images/main-window.png.data | 3 + .../20.05/solutions/_images/mdi--mdi.png | Bin 0 -> 22464 bytes .../20.05/solutions/_images/mdi--mdi.png.data | 3 + documentation/20.05/solutions/_images/mdi.png | Bin 0 -> 5577 bytes .../20.05/solutions/_images/mdi.png.data | 3 + .../solutions/_images/menu-contextuel.png | Bin 0 -> 3457 bytes .../_images/menu-contextuel.png.data | 3 + .../solutions/_images/menu-principal.png | Bin 0 -> 3100 bytes .../solutions/_images/menu-principal.png.data | 3 + .../20.05/solutions/_images/menus.png | Bin 0 -> 8339 bytes .../20.05/solutions/_images/menus.png.data | 3 + .../20.05/solutions/_images/message-box.png | Bin 0 -> 1207 bytes .../solutions/_images/message-box.png.data | 3 + .../20.05/solutions/_images/minimal.png | Bin 0 -> 5845 bytes .../20.05/solutions/_images/minimal.png.data | 3 + .../_images/model-view-relationship.png | Bin 0 -> 7082 bytes .../_images/model-view-relationship.png.data | 3 + .../_images/new-directory-dialog.png | Bin 0 -> 6477 bytes .../_images/new-directory-dialog.png.data | 3 + .../20.05/solutions/_images/new-project.png | Bin 0 -> 6567 bytes .../solutions/_images/new-project.png.data | 3 + .../20.05/solutions/_images/object-editor.png | Bin 0 -> 12783 bytes .../solutions/_images/object-editor.png.data | 3 + .../20.05/solutions/_images/object_graph.png | Bin 0 -> 25273 bytes .../solutions/_images/object_graph.png.data | 3 + .../20.05/solutions/_images/open-project.png | Bin 0 -> 6560 bytes .../solutions/_images/open-project.png.data | 3 + .../solutions/_images/overwrite-project.png | Bin 0 -> 10235 bytes .../_images/overwrite-project.png.data | 3 + .../_images/pixmap-selection-dialog.png | Bin 0 -> 19286 bytes .../_images/pixmap-selection-dialog.png.data | 3 + .../20.05/solutions/_images/pizza.png | Bin 0 -> 16911 bytes .../20.05/solutions/_images/pizza.png.data | 3 + .../20.05/solutions/_images/pref_dialog.png | Bin 0 -> 35992 bytes .../solutions/_images/pref_dialog.png.data | 3 + .../solutions/_images/preferences-dialog.png | Bin 0 -> 19433 bytes .../_images/preferences-dialog.png.data | 3 + .../20.05/solutions/_images/prepro.png | Bin 0 -> 842 bytes .../20.05/solutions/_images/prepro.png.data | 3 + .../20.05/solutions/_images/printer.png | Bin 0 -> 10307 bytes .../20.05/solutions/_images/printer.png.data | 3 + .../20.05/solutions/_images/progress-bar.png | Bin 0 -> 3513 bytes .../solutions/_images/progress-bar.png.data | 3 + .../solutions/_images/project-build-class.png | Bin 0 -> 17757 bytes .../_images/project-build-class.png.data | 3 + .../20.05/solutions/_images/project-build.png | Bin 0 -> 17456 bytes .../solutions/_images/project-build.png.data | 3 + .../solutions/_images/project-generation.png | Bin 0 -> 18034 bytes .../_images/project-generation.png.data | 3 + documentation/20.05/solutions/_images/rb.png | Bin 0 -> 2080 bytes .../20.05/solutions/_images/rb.png.data | 3 + .../solutions/_images/recent-projects.png | Bin 0 -> 8915 bytes .../_images/recent-projects.png.data | 3 + .../20.05/solutions/_images/retriev.png | Bin 0 -> 790 bytes .../20.05/solutions/_images/retriev.png.data | 3 + .../20.05/solutions/_images/richedit.png | Bin 0 -> 9325 bytes .../20.05/solutions/_images/richedit.png.data | 3 + .../20.05/solutions/_images/scoop-regions.png | Bin 0 -> 25223 bytes .../solutions/_images/scoop-regions.png.data | 3 + .../solutions/_images/simple-data-binding.png | Bin 0 -> 5965 bytes .../_images/simple-data-binding.png.data | 3 + .../solutions/_images/simple-hello-world.png | Bin 0 -> 2072 bytes .../_images/simple-hello-world.png.data | 3 + .../20.05/solutions/_images/splitarea.png | Bin 0 -> 9870 bytes .../solutions/_images/splitarea.png.data | 3 + .../solutions/_images/standard-dialogs.png | Bin 0 -> 6841 bytes .../_images/standard-dialogs.png.data | 3 + .../20.05/solutions/_images/stddlgs.png | Bin 0 -> 8915 bytes .../20.05/solutions/_images/stddlgs.png.data | 3 + .../20.05/solutions/_images/step1.png | Bin 0 -> 6790 bytes .../20.05/solutions/_images/step1.png.data | 3 + .../20.05/solutions/_images/step2.png | Bin 0 -> 11013 bytes .../20.05/solutions/_images/step2.png.data | 3 + .../20.05/solutions/_images/step3.png | Bin 0 -> 7682 bytes .../20.05/solutions/_images/step3.png.data | 3 + .../20.05/solutions/_images/step4.png | Bin 0 -> 8291 bytes .../20.05/solutions/_images/step4.png.data | 3 + .../20.05/solutions/_images/step5.png | Bin 0 -> 9924 bytes .../20.05/solutions/_images/step5.png.data | 3 + .../20.05/solutions/_images/step6.png | Bin 0 -> 8007 bytes .../20.05/solutions/_images/step6.png.data | 3 + .../20.05/solutions/_images/step7.png | Bin 0 -> 7892 bytes .../20.05/solutions/_images/step7.png.data | 3 + .../20.05/solutions/_images/step8.png | Bin 0 -> 30238 bytes .../20.05/solutions/_images/step8.png.data | 3 + .../20.05/solutions/_images/strings.png | Bin 0 -> 4108 bytes .../20.05/solutions/_images/strings.png.data | 3 + .../_images/sub-component-objects.png | Bin 0 -> 1942 bytes .../_images/sub-component-objects.png.data | 3 + .../_images/table-child-positioner.png | Bin 0 -> 12783 bytes .../_images/table-child-positioner.png.data | 3 + .../_images/table-descr-access-objects.png | Bin 0 -> 2704 bytes .../table-descr-access-objects.png.data | 3 + .../solutions/_images/table-descr-objects.png | Bin 0 -> 1220 bytes .../_images/table-descr-objects.png.data | 3 + .../_images/table-objects-associations.png | Bin 0 -> 3442 bytes .../table-objects-associations.png.data | 3 + .../_images/tables-access-inherit.png | Bin 0 -> 9686 bytes .../_images/tables-access-inherit.png.data | 3 + .../20.05/solutions/_images/text.png | Bin 0 -> 115471 bytes .../20.05/solutions/_images/text.png.data | 3 + .../20.05/solutions/_images/timer.png | Bin 0 -> 9361 bytes .../20.05/solutions/_images/timer.png.data | 3 + .../20.05/solutions/_images/toolbar.png | Bin 0 -> 2169 bytes .../20.05/solutions/_images/toolbar.png.data | 3 + .../_images/tree-view--tree-view.png | Bin 0 -> 4760 bytes .../_images/tree-view--tree-view.png.data | 3 + .../20.05/solutions/_images/tree-view.png | Bin 0 -> 6535 bytes .../solutions/_images/tree-view.png.data | 3 + .../20.05/solutions/_images/tree.png | Bin 0 -> 3012 bytes .../20.05/solutions/_images/tree.png.data | 3 + .../20.05/solutions/_images/two-way-list.png | Bin 0 -> 2207 bytes .../solutions/_images/two-way-list.png.data | 3 + .../20.05/solutions/_images/unicode.png | Bin 0 -> 11591 bytes .../20.05/solutions/_images/unicode.png.data | 3 + .../20.05/solutions/_images/value-chart.PNG | Bin 0 -> 12174 bytes .../solutions/_images/value-chart.PNG.data | 3 + .../20.05/solutions/_images/viewport.png | Bin 0 -> 13045 bytes .../20.05/solutions/_images/viewport.png.data | 3 + .../solutions/_images/vision2--figure1.png | Bin 0 -> 6312 bytes .../_images/vision2--figure1.png.data | 3 + .../_images/wel-check-box-3-state-checked.png | Bin 0 -> 551 bytes .../wel-check-box-3-state-checked.png.data | 3 + .../wel-check-box-3-state-indeterminate.png | Bin 0 -> 575 bytes ...l-check-box-3-state-indeterminate.png.data | 3 + .../wel-check-box-3-state-unchecked.png | Bin 0 -> 517 bytes .../wel-check-box-3-state-unchecked.png.data | 3 + .../_images/wel-check-box-checked.png | Bin 0 -> 496 bytes .../_images/wel-check-box-checked.png.data | 3 + .../_images/wel-check-box-unchecked.png | Bin 0 -> 436 bytes .../_images/wel-check-box-unchecked.png.data | 3 + .../_images/wel-choose-color-dialog.png | Bin 0 -> 11526 bytes .../_images/wel-choose-color-dialog.png.data | 3 + .../_images/wel-choose-folder-dialog.png | Bin 0 -> 13122 bytes .../_images/wel-choose-folder-dialog.png.data | 3 + .../_images/wel-choose-font-dialog.png | Bin 0 -> 12353 bytes .../_images/wel-choose-font-dialog.png.data | 3 + .../20.05/solutions/_images/wel-group-box.png | Bin 0 -> 950 bytes .../solutions/_images/wel-group-box.png.data | 3 + .../_images/wel-list-view-style-lvs-icon.png | Bin 0 -> 1389 bytes .../wel-list-view-style-lvs-icon.png.data | 3 + .../_images/wel-list-view-style-lvs-list.png | Bin 0 -> 1118 bytes .../wel-list-view-style-lvs-list.png.data | 3 + .../wel-list-view-style-lvs-report.png | Bin 0 -> 1899 bytes .../wel-list-view-style-lvs-report.png.data | 3 + .../wel-list-view-style-lvs-small-icon.png | Bin 0 -> 1322 bytes ...el-list-view-style-lvs-small-icon.png.data | 3 + .../_images/wel-multiple-line-edit.png | Bin 0 -> 1681 bytes .../_images/wel-multiple-line-edit.png.data | 3 + .../wel-multiple-selection-list-box.png | Bin 0 -> 1975 bytes .../wel-multiple-selection-list-box.png.data | 3 + .../_images/wel-open-file-dialog.png | Bin 0 -> 16777 bytes .../_images/wel-open-file-dialog.png.data | 3 + .../solutions/_images/wel-print-dialog.png | Bin 0 -> 12418 bytes .../_images/wel-print-dialog.png.data | 3 + .../_images/wel-progress-bar-half.png | Bin 0 -> 250 bytes .../_images/wel-progress-bar-half.png.data | 3 + .../solutions/_images/wel-push-button.png | Bin 0 -> 941 bytes .../_images/wel-push-button.png.data | 3 + .../_images/wel-radio-button-checked.png | Bin 0 -> 476 bytes .../_images/wel-radio-button-checked.png.data | 3 + .../_images/wel-radio-button-unchecked.png | Bin 0 -> 452 bytes .../wel-radio-button-unchecked.png.data | 3 + .../_images/wel-save-file-dialog.png | Bin 0 -> 16779 bytes .../_images/wel-save-file-dialog.png.data | 3 + .../_images/wel-scroll-bar-horizontal.png | Bin 0 -> 408 bytes .../wel-scroll-bar-horizontal.png.data | 3 + .../_images/wel-scroll-bar-vertical.png | Bin 0 -> 334 bytes .../_images/wel-scroll-bar-vertical.png.data | 3 + .../_images/wel-single-line-edit.png | Bin 0 -> 490 bytes .../_images/wel-single-line-edit.png.data | 3 + .../_images/wel-single-selection-list-box.png | Bin 0 -> 1958 bytes .../wel-single-selection-list-box.png.data | 3 + .../20.05/solutions/_images/wel-tooltip.png | Bin 0 -> 282 bytes .../solutions/_images/wel-tooltip.png.data | 3 + .../_images/wel-track-bar-horizontal.png | Bin 0 -> 305 bytes .../_images/wel-track-bar-horizontal.png.data | 3 + .../_images/wel-track-bar-vertical.png | Bin 0 -> 315 bytes .../_images/wel-track-bar-vertical.png.data | 3 + .../solutions/_images/wel-up-down-control.png | Bin 0 -> 202 bytes .../_images/wel-up-down-control.png.data | 3 + .../_images/widget-selector-clients.PNG | Bin 0 -> 8591 bytes .../_images/widget-selector-clients.PNG.data | 3 + .../20.05/solutions/_images/widget_sample.png | Bin 0 -> 27333 bytes .../solutions/_images/widget_sample.png.data | 3 + .../solutions/_images/window-selector.png | Bin 0 -> 5865 bytes .../_images/window-selector.png.data | 3 + .../20.05/solutions/_images/windows.png | Bin 0 -> 5607 bytes .../20.05/solutions/_images/windows.png.data | 3 + .../20.05/solutions/_images/xcell.png | Bin 0 -> 43570 bytes .../20.05/solutions/_images/xcell.png.data | 3 + documentation/20.05/solutions/_images/xy.png | Bin 0 -> 7173 bytes .../20.05/solutions/_images/xy.png.data | 3 + .../EiffelProcess-and-EiffelBaseProcess.wiki | 93 ++ .../eiffelbase-class-reference-0.wiki | 7 + .../eiffelbase-sample-calculator.wiki | 103 ++ .../eiffelbase/eiffelbase-samples/index.wiki | 5 + ...bstract-container-structures-taxonomy.wiki | 15 + .../eiffelbase-data-structures-lists.wiki | 385 ++++++ .../eiffelbase-dispensers.wiki | 38 + .../eiffelbase-iteration.wiki | 535 +++++++++ .../eiffelbase-sets.wiki | 33 + .../eiffelbase-tables.wiki | 60 + .../eiffelbase-trees.wiki | 128 ++ .../index.wiki | 12 + .../Access-to-internal-properties.wiki | 62 + .../Files--input--output.wiki | 35 + .../Language-related-facilities.wiki | 186 +++ .../Persistence--storage--and-retrieval.wiki | 173 +++ .../Universal-Class-and-its-Features.wiki | 93 ++ .../eiffelbase-kernel/index.wiki | 20 + .../eiffelbase-support-cluster.wiki | 31 + .../eiffelbase/eiffelbase-tutorial/index.wiki | 6 + .../basic-computing/eiffelbase/ifell.wiki | 111 ++ .../basic-computing/eiffelbase/index.wiki | 11 + .../solutions/basic-computing/index.wiki | 7 + .../concurrent-computing/SCOOP_tutorial.wiki | 16 + .../concurrent-eiffel-scoop/SCOOP-papers.wiki | 9 + .../concurrent-eiffel-scoop/index.wiki | 32 + .../scoop-asynchronous-calls.wiki | 135 +++ .../scoop-design-by-contract.wiki | 57 + .../scoop-examples/baboon-crossing.wiki | 46 + .../scoop-examples/barbershop.wiki | 27 + .../scoop-examples/counter.wiki | 36 + .../scoop-examples/dining-philosophers.wiki | 53 + .../scoop-examples/dining-savages.wiki | 24 + .../scoop-examples/faneuil-hall.wiki | 43 + .../scoop-examples/index.wiki | 5 + .../scoop-examples/observer-pattern.wiki | 31 + .../scoop-examples/producer-consumer.wiki | 69 ++ .../scoop-examples/quicksort.wiki | 22 + .../scoop-examples/search-insert-delete.wiki | 44 + .../scoop-examples/senate-bus.wiki | 25 + .../single-element-producer-consumer.wiki | 21 + .../scoop-exceptions.wiki | 107 ++ .../scoop-exclusive-access.wiki | 145 +++ .../scoop-getting-started.wiki | 74 ++ .../scoop-implementation.wiki | 109 ++ .../scoop-regions-processors.wiki | 115 ++ .../scoop-separate-calls.wiki | 126 ++ .../eiffelthread-class-reference.wiki | 7 + .../compilation-multithreaded-systems.wiki | 49 + .../eiffelthread-tutorial/index.wiki | 17 + .../multithread-faq.wiki | 24 + .../once-features-multithreaded-mode.wiki | 87 ++ .../thread-library-overview.wiki | 199 ++++ .../eiffelthread/index.wiki | 11 + .../solutions/concurrent-computing/index.wiki | 26 + .../solutions/database-access/abel/index.wiki | 40 + .../tutorial/accessing-existing-database.wiki | 352 ++++++ .../abel/tutorial/advanced-queries.wiki | 151 +++ .../abel/tutorial/basic-operations.wiki | 202 ++++ .../abel/tutorial/dealing-references.wiki | 150 +++ .../abel/tutorial/error-handling.wiki | 58 + .../abel/tutorial/getting-started.wiki | 106 ++ .../database-access/abel/tutorial/index.wiki | 5 + .../abel/tutorial/tuple-queries.wiki | 77 ++ .../EiffelStore-ODBC-with-PostgreSQL.wiki | 179 +++ .../EiffelStore-SQL-injection.wiki | 86 ++ .../eiffelstore-class-reference.wiki | 5 + .../eiffelstore-samples/esql-sample.wiki | 66 + .../eiffelstore-samples/index.wiki | 13 + .../eiffelstore-samples/inserter-sample.wiki | 81 ++ .../eiffelstore-samples/selector-sample.wiki | 89 ++ .../eiffelstore-dataview-cluster.wiki | 432 +++++++ .../data-structures-creation.wiki | 653 ++++++++++ .../data-structures-use.wiki | 223 ++++ .../eiffelstore-generation-cluster/index.wiki | 12 + .../eiffelstore-implementation-layer.wiki | 90 ++ .../data-modification.wiki | 40 + .../data-object-coupling.wiki | 102 ++ .../database-connection.wiki | 44 + .../database-control.wiki | 73 ++ .../database-selection.wiki | 40 + .../eiffelstore-interface-layer/index.wiki | 9 + .../query-variables.wiki | 54 + .../selection-access.wiki | 116 ++ .../stored-procedures.wiki | 81 ++ .../eiffelstore-tutorial/index.wiki | 11 + .../database-access/eiffelstore/index.wiki | 10 + .../solutions/database-access/index.wiki | 6 + .../eiffeltime-class-reference.wiki | 5 + .../eiffeltime-tutorial/absolute-time.wiki | 123 ++ .../date-time-string-conversion.wiki | 110 ++ .../eiffeltime-tutorial/duration.wiki | 152 +++ .../eiffeltime/eiffeltime-tutorial/index.wiki | 23 + .../eiffeltime-tutorial/interval.wiki | 41 + .../eiffeltime-tutorial/more-precision.wiki | 42 + .../dates-and-times/eiffeltime/index.wiki | 8 + .../solutions/dates-and-times/index.wiki | 7 + .../eiffelbuild-how-tos/create-object.wiki | 27 + .../eiffelbuild-how-tos/delete-object.wiki | 16 + .../eiffelbuild-creating-new-project.wiki | 24 + .../eiffelbuild-starting-project/index.wiki | 5 + ...retrieving-project-build-project-file.wiki | 21 + .../eiffelbuild-how-tos/import-project.wiki | 22 + .../eiffelbuild-how-tos/index.wiki | 5 + .../eiffelbuild-how-tos/reparent-object.wiki | 22 + .../eiffelbuild-how-tos/save-project.wiki | 15 + .../eiffelbuild-reference/builder-window.wiki | 35 + .../component-selector.wiki | 40 + .../component-viewer.wiki | 30 + .../eiffelbuild-reference/constants.wiki | 177 +++ .../eiffelbuild-reference/display-window.wiki | 20 + .../eiffelbuild-code-generation.wiki | 52 + .../docking.wiki | 43 + .../eiffelbuild-key-shortcuts.wiki | 46 + .../eiffelbuild-window-overview.wiki | 30 + .../index.wiki | 5 + .../main-toolbar.wiki | 68 ++ .../eiffelbuild-notation.wiki | 43 + .../eiffelbuild-preferences.wiki | 24 + .../build-tab.wiki | 42 + .../generation-tab.wiki | 19 + .../index.wiki | 23 + .../eiffelbuild-reference/history.wiki | 36 + .../eiffelbuild-reference/index.wiki | 5 + .../layout-constructor.wiki | 57 + .../object-editor/index.wiki | 73 ++ .../merging-radio-button-groups.wiki | 26 + .../positioning-fixed-children.wiki | 23 + .../positioning-table-children.wiki | 18 + .../eiffelbuild-reference/type-selector.wiki | 41 + .../widget-selector.wiki | 59 + .../eiffelbuild-version-history.wiki | 71 ++ .../gui-building/eiffelbuild/index.wiki | 5 + ...-application--EiffelVision-with-SCOOP.wiki | 35 + ...ng-eiffelvision-2-systems-void-safety.wiki | 86 ++ .../eiffelvision-2-class-reference.wiki | 5 + .../accelerator-sample.wiki | 32 + .../eiffelvision-2-samples/cursor-sample.wiki | 33 + .../eiffelvision-2-samples/gauges-sample.wiki | 38 + .../eiffelvision-2-samples/index.wiki | 14 + .../standard-dialogs-sample.wiki | 29 + .../viewport-sample.wiki | 39 + .../widgets-sample.wiki | 45 + .../eiffelvision-introduction.wiki | 86 ++ .../events.wiki | 21 + .../figures.wiki | 166 +++ .../index.wiki | 24 + .../items.wiki | 41 + .../kernel.wiki | 93 ++ .../eiffelvision-pick-and-drop.wiki | 88 ++ .../properties/index.wiki | 47 + .../support.wiki | 22 + .../widgets/containers.wiki | 64 + .../widgets/eiffelvision-dialogs.wiki | 32 + .../widgets/index.wiki | 60 + .../widgets/primitives.wiki | 18 + .../gui-building/eiffelvision-2/index.wiki | 15 + .../revisions-and-bug-fixes.wiki | 944 +++++++++++++++ .../20.05/solutions/gui-building/index.wiki | 12 + documentation/20.05/solutions/index.wiki | 18 + .../iron-eiffel-package-repository.wiki | 464 ++++++++ .../eiffelnet/eiffelnet-class-reference.wiki | 5 + .../eiffelnet/eiffelnet-samples/advanced.wiki | 29 + .../eiffelnet/eiffelnet-samples/index.wiki | 7 + .../eiffelnet/eiffelnet-samples/polling.wiki | 26 + .../eiffelnet/eiffelnet-samples/predef.wiki | 26 + .../eiffelnet-samples/same-machine.wiki | 26 + .../eiffelnet-samples/two-machines.wiki | 27 + .../eiffelnet-tutorial/bibliography.wiki | 16 + .../clients-and-servers.wiki | 19 + .../event-driven-command-execution.wiki | 207 ++++ .../eiffelnet/eiffelnet-tutorial/index.wiki | 5 + .../introduction-examples.wiki | 40 + .../more-complex-example.wiki | 17 + .../obtaining-finer-degree-control.wiki | 253 ++++ .../overview-eiffelnet-mechanisms.wiki | 130 ++ .../using-datagram-sockets.wiki | 14 + .../eiffelnet-tutorial/what-eiffelnet.wiki | 33 + .../solutions/networking/eiffelnet/index.wiki | 10 + .../20.05/solutions/networking/index.wiki | 33 + .../cecil/cecil-interface-overview.wiki | 581 +++++++++ .../cecil-reference/attribute-exists.wiki | 24 + .../cecil/cecil-reference/eif-access.wiki | 28 + .../cecil/cecil-reference/eif-adopt.wiki | 28 + .../cecil-reference/eif-attribute-type.wiki | 39 + .../cecil/cecil-reference/eif-attribute.wiki | 62 + .../cecil/cecil-reference/eif-create.wiki | 30 + .../eif-disable-visible-exception.wiki | 32 + .../eif-enable-visible-exception.wiki | 33 + .../cecil/cecil-reference/eif-function.wiki | 125 ++ .../cecil/cecil-reference/eif-name-tid.wiki | 35 + .../cecil/cecil-reference/eif-name.wiki | 35 + .../cecil/cecil-reference/eif-procedure.wiki | 47 + .../cecil/cecil-reference/eif-protect.wiki | 36 + .../cecil/cecil-reference/eif-string.wiki | 37 + .../cecil/cecil-reference/eif-type-id.wiki | 45 + .../cecil/cecil-reference/eif-type-name.wiki | 43 + .../cecil-reference/eif-type-reference.wiki | 33 + .../cecil/cecil-reference/eif-type.wiki | 35 + .../cecil/cecil-reference/eif-wean.wiki | 32 + .../cecil/cecil-reference/index.wiki | 5 + .../cecil-samples/cecil-basic-sample.wiki | 76 ++ .../cecil/cecil-samples/cecil-c-eiffel.wiki | 46 + .../cecil/cecil-samples/cecil-eiffel-c.wiki | 96 ++ .../cecil-how-compile-samples.wiki | 41 + .../cecil/cecil-samples/cecil-threads.wiki | 70 ++ .../cecil/cecil-samples/index.wiki | 14 + .../cecil/compiling-eiffel-system-cecil.wiki | 35 + .../other-languages/cecil/index.wiki | 19 + .../cecil/using-cecil-archive.wiki | 97 ++ .../eiffel-external-mechanism/index.wiki | 17 + .../interfacing-c-and-c.wiki | 132 ++ .../interfacing-dlls.wiki | 29 + .../c-externals-0.wiki | 302 +++++ .../c-externals.wiki | 224 ++++ .../obsolete-external-interfaces/index.wiki | 11 + .../eiffel2java-class-reference.wiki | 5 + .../eiffel2java/eiffel2java-sample.wiki | 104 ++ .../eiffel2java/eiffel2java-tutorial.wiki | 159 +++ .../other-languages/eiffel2java/index.wiki | 8 + .../solutions/other-languages/index.wiki | 14 + .../solutions/platform-specifics/index.wiki | 6 + .../eiffelcom-class-reference.wiki | 5 + .../eiffelcom-interface-content/index.wiki | 17 + .../interfaces.wiki | 23 + .../structures.wiki | 116 ++ .../com/eiffelcom-library/index.wiki | 15 + .../com-and-eiffel/access-type.wiki | 241 ++++ .../com-and-eiffel/coclass.wiki | 28 + .../com-and-eiffel/com-concepts.wiki | 29 + .../com-and-eiffel/com-interfaces.wiki | 22 + .../com-and-eiffel/component-location.wiki | 28 + .../com-and-eiffel/deeper-com.wiki | 48 + .../eiffelcom-introduction.wiki | 22 + .../com-and-eiffel/index.wiki | 9 + .../accessing-com-component.wiki | 58 + .../creating-new-com-component.wiki | 52 + ...creating-new-component-eiffel-project.wiki | 46 + .../eiffelcom-wizard-guided-tour/index.wiki | 21 + .../eiffelcom-wizard-introduction.wiki | 31 + .../building-com-component.wiki | 73 ++ .../class-hierarchy.wiki | 34 + .../eiffel-project-processing.wiki | 25 + .../generated-files.wiki | 17 + .../how-eiffelcom-wizard-works.wiki | 21 + .../eiffelcom-wizard-reference/index.wiki | 20 + .../reusing-com-component.wiki | 96 ++ .../wizards-command-line-options.wiki | 34 + .../com/eiffelcom-wizard/index.wiki | 12 + .../microsoft-windows/com/index.wiki | 16 + .../eiffelribbon-design-tool.wiki | 134 +++ .../microsoft-windows/eiffelribbon/index.wiki | 78 ++ .../microsoft-windows/index.wiki | 7 + .../net/building-net-application.wiki | 14 + .../eiffel-codedom-provider-manager.wiki | 45 + .../esplitter.wiki | 45 + .../index.wiki | 11 + .../name-mapper.wiki | 15 + ...ut-code-document-object-model-codedom.wiki | 10 + .../common-scenarios.wiki | 19 + .../configuration.wiki | 13 + .../eiffel-implementation.wiki | 32 + .../eiffel-codedom-provider/index.wiki | 5 + .../eiffel-codedom-provider/installation.wiki | 19 + .../eiffel-codedom-provider/limitations.wiki | 10 + .../eiffel-codedom-provider/logging.wiki | 21 + .../required-permissions.wiki | 26 + .../supported-constructs.wiki | 37 + .../eiffel-aspnet-documentation/index.wiki | 12 + .../codedom-getting-started.wiki | 15 + .../eiffel-aspnet-installation.wiki | 17 + .../writing-aspnet-pages-eiffel/index.wiki | 5 + .../names-mappings.wiki | 34 + .../using-eiffel-write-aspnet-pages.wiki | 21 + .../constructors-and-creation-procedures.wiki | 48 + .../eiffel-class-and-feature-names.wiki | 218 ++++ .../conventions/eiffel-net-terminology.wiki | 172 +++ .../conventions/eiffel-reserved-words.wiki | 9 + .../conventions/index.wiki | 15 + ...imilar-types-occurring-both-libraries.wiki | 77 ++ .../conventions/type-organization.wiki | 56 + .../eiffel-net-integration.wiki | 76 ++ .../eiffel-net/adding-class-features.wiki | 535 +++++++++ .../design-contract-and-assertions.wiki | 322 +++++ .../eiffel-net/eiffel-classes.wiki | 223 ++++ .../eiffel-net/eiffel-net-compliance.wiki | 26 + .../eiffel-net/event-programming-agents.wiki | 203 ++++ .../eiffel-net/exception-mechanism.wiki | 66 + .../eiffel-net/genericity.wiki | 144 +++ .../eiffel-net-language/eiffel-net/index.wiki | 19 + .../eiffel-net/inheritance.wiki | 343 ++++++ ...mbly-type-and-feature-name-conversion.wiki | 49 + .../using-referenced-assemblies.wiki | 16 + .../net/eiffel-net-language/index.wiki | 15 + .../net/eiffel-net-language/known-issues.wiki | 10 + .../microsoft-windows/net/index.wiki | 8 + .../net/net-installation-instructions.wiki | 5 + .../ado-net-samples/adonet-sample.wiki | 88 ++ .../net/samples/ado-net-samples/index.wiki | 5 + .../console-samples/calculator-console.wiki | 102 ++ .../net/samples/console-samples/index.wiki | 5 + .../microsoft-windows/net/samples/index.wiki | 7 + .../net/samples/threads-samples/index.wiki | 5 + .../net/samples/threads-samples/pools.wiki | 53 + .../net/samples/threads-samples/timers.wiki | 51 + .../winform-samples/calculator-winform.wiki | 51 + .../winform-samples/date-time-picker.wiki | 55 + .../winform-samples/gdi-plus-text.wiki | 38 + .../net/samples/winform-samples/index.wiki | 5 + .../samples/winform-samples/mdi/index.wiki | 51 + .../winform-samples/mdi/mdi-details.wiki | 62 + .../samples/winform-samples/menus/index.wiki | 45 + .../winform-samples/menus/menu-details.wiki | 144 +++ .../samples/winform-samples/message-box.wiki | 68 ++ .../winform-samples/progress-bar-sample.wiki | 41 + .../winform-samples/simple-data-binding.wiki | 48 + .../simple-hello-world-form-sample.wiki | 50 + .../samples/winform-samples/tree-view.wiki | 42 + .../resourcebench/features.wiki | 14 + .../resourcebench/index.wiki | 10 + .../microsoft-windows/resourcebench/tour.wiki | 47 + .../resourcebench/troubleshooting.wiki | 7 + .../microsoft-windows/wel/index.wiki | 15 + .../wel/wel-class-reference.wiki | 5 + .../common-message-hooks.wiki | 23 + .../wel/wel-common-concepts/index.wiki | 6 + .../inheriting-wel-application.wiki | 9 + .../redefining-init-application.wiki | 5 + .../redefining-main-window.wiki | 9 + .../controls-cluster/index.wiki | 54 + .../wel-check-box-3-state.wiki | 22 + .../controls-cluster/wel-checkbox.wiki | 17 + .../controls-cluster/wel-down-control.wiki | 9 + .../controls-cluster/wel-group-box.wiki | 10 + .../controls-cluster/wel-list-view.wiki | 19 + .../wel-multiple-line-edit.wiki | 10 + .../wel-multiple-selection-list-box.wiki | 15 + .../wel-owner-draw-button.wiki | 15 + .../controls-cluster/wel-progress-bar.wiki | 13 + .../controls-cluster/wel-push-button.wiki | 9 + .../controls-cluster/wel-radio-button.wiki | 14 + .../controls-cluster/wel-scroll-bar.wiki | 14 + .../wel-single-line-edit.wiki | 9 + .../wel-single-selection-list-box.wiki | 15 + .../controls-cluster/wel-tooltip.wiki | 9 + .../controls-cluster/wel-track-bar.wiki | 14 + .../wel/wel-interface-content/index.wiki | 19 + .../stddlgs-cluster/index.wiki | 6 + .../wel-choose-color-dialog.wiki | 15 + .../wel-choose-folder-dialog.wiki | 15 + .../wel-choose-font-dialog.wiki | 15 + .../stddlgs-cluster/wel-open-file-dialog.wiki | 16 + .../stddlgs-cluster/wel-print-dialog.wiki | 15 + .../stddlgs-cluster/wel-save-file-dialog.wiki | 16 + .../windows-cluster.wiki | 20 + .../wel/wel-samples/bmpview.wiki | 34 + .../wel/wel-samples/brushes.wiki | 35 + .../wel/wel-samples/commands.wiki | 34 + .../wel/wel-samples/common-controls.wiki | 33 + .../wel/wel-samples/controls-sample.wiki | 44 + .../wel/wel-samples/ctlcolor.wiki | 34 + .../wel/wel-samples/cursors.wiki | 34 + .../wel/wel-samples/disk-space.wiki | 31 + .../wel/wel-samples/fontenum.wiki | 33 + .../wel/wel-samples/fun.wiki | 32 + .../wel/wel-samples/header-control.wiki | 34 + .../wel/wel-samples/hello-world.wiki | 45 + .../wel/wel-samples/index.wiki | 8 + .../wel/wel-samples/list-view.wiki | 39 + .../wel/wel-samples/magnify.wiki | 31 + .../mdi-multiple-document-interface.wiki | 32 + .../wel/wel-samples/minimal.wiki | 31 + .../wel/wel-samples/pizza.wiki | 33 + .../wel/wel-samples/printer.wiki | 34 + .../wel/wel-samples/rich-edit.wiki | 43 + .../wel/wel-samples/split-area.wiki | 34 + .../wel-samples/standard-dialogs-sample.wiki | 35 + .../wel/wel-samples/timer.wiki | 29 + .../wel/wel-samples/tree-view-sample.wiki | 37 + .../wel/wel-samples/unicode-sample.wiki | 43 + .../wel/wel-samples/wel-sample-menus.wiki | 28 + .../wel/wel-samples/windows-sample.wiki | 36 + .../wel/wel-samples/xcell.wiki | 36 + .../wel/wel-samples/xy-co-ordinates.wiki | 35 + .../wel/wel-tutorial/index.wiki | 16 + .../wel/wel-tutorial/tutorial-step-1.wiki | 37 + .../wel/wel-tutorial/tutorial-step-2.wiki | 40 + .../wel/wel-tutorial/tutorial-step-3.wiki | 38 + .../wel/wel-tutorial/tutorial-step-4.wiki | 32 + .../wel/wel-tutorial/tutorial-step-5.wiki | 36 + .../wel/wel-tutorial/tutorial-step-6.wiki | 38 + .../wel/wel-tutorial/tutorial-step-7.wiki | 38 + .../wel/wel-tutorial/tutorial-step-8.wiki | 41 + .../solutions/porting-instructions/index.wiki | 8 + ...pplication-unix-windows-or-vice-versa.wiki | 45 + .../eiffelpreferences-class-reference.wiki | 5 + .../eiffelpreferences-sample.wiki | 44 + .../eiffelpreferences-tutorial/index.wiki | 7 + .../initialization.wiki | 154 +++ .../interface-preferences.wiki | 53 + .../eiffelpreferences-tutorial/overview.wiki | 32 + .../preferences/eiffelpreferences/index.wiki | 11 + .../20.05/solutions/preferences/index.wiki | 6 + .../eiffellex/eiffellex-class-reference.wiki | 5 + .../eiffel-scan-console-input.wiki | 55 + .../eiffel-scan-console-output.wiki | 118 ++ .../eiffel-scanner/eiffel-scan-text.wiki | 54 + .../eiffel-scanner/eiffellex-samples.wiki | 100 ++ .../eiffel-scanner/index.wiki | 13 + .../eiffellex/eiffellex-sample/index.wiki | 8 + .../eiffellex/eiffellex-tutorial.wiki | 567 +++++++++ .../text-processing/eiffellex/index.wiki | 11 + .../eiffelparse-class-reference.wiki | 5 + .../eiffelparse/eiffelparse-tutorial.wiki | 784 ++++++++++++ .../text-processing/eiffelparse/index.wiki | 11 + .../eiffel-polynomial-parser.wiki | 23 + .../eiffelparse/parse-sample/index.wiki | 8 + .../solutions/text-processing/index.wiki | 6 + .../web-technology/EiffelWeb-framework.wiki | 14 + .../eiffelweb/eiffelweb-class-reference.wiki | 5 + .../eiffelweb-basic-sample.wiki | 40 + .../eiffelweb/eiffelweb-sample/index.wiki | 9 + .../eiffelweb-content-introduction.wiki | 35 + .../eiffelweb/eiffelweb-tutorial/index.wiki | 9 + .../processing-requests.wiki | 54 + .../web-technology/eiffelweb/index.wiki | 12 + .../20.05/solutions/web-technology/index.wiki | 6 + 2943 files changed, 62390 insertions(+) create mode 100644 documentation/20.05/_images/Definition_icon_2.png create mode 100644 documentation/20.05/_images/Definition_icon_2.png.data create mode 100644 documentation/20.05/_images/LogoBeta.png create mode 100644 documentation/20.05/_images/LogoBeta.png.data create mode 100644 documentation/20.05/_images/LogoUpdateNeeded.png create mode 100644 documentation/20.05/_images/LogoUpdateNeeded.png.data create mode 100644 documentation/20.05/_images/Review_icon_1.png create mode 100644 documentation/20.05/_images/Review_icon_1.png.data create mode 100644 documentation/20.05/_images/Rule_icon_4_2.png create mode 100644 documentation/20.05/_images/Rule_icon_4_2.png.data create mode 100644 documentation/20.05/_images/tpl_Construction.png create mode 100644 documentation/20.05/_images/tpl_Construction.png.data create mode 100644 documentation/20.05/_images/tpl_Information.png create mode 100644 documentation/20.05/_images/tpl_Information.png.data create mode 100644 documentation/20.05/_images/tpl_Recommended.png create mode 100644 documentation/20.05/_images/tpl_Recommended.png.data create mode 100644 documentation/20.05/_images/tpl_Warning.png create mode 100644 documentation/20.05/_images/tpl_Warning.png.data create mode 100644 documentation/20.05/_others/community/index.wiki create mode 100644 documentation/20.05/_others/draft/index.wiki create mode 100644 documentation/20.05/_others/draft/multiple-inheritance.wiki create mode 100644 documentation/20.05/_others/draft/test-page.wiki create mode 100644 documentation/20.05/_others/guide/_images/static_documentation_page_0.png create mode 100644 documentation/20.05/_others/guide/_images/static_documentation_page_0.png.data create mode 100644 documentation/20.05/_others/guide/index.wiki create mode 100644 documentation/20.05/_others/guide/offline-use-eiffel-documentation.wiki create mode 100644 documentation/20.05/_others/why-eiffel/index.wiki create mode 100644 documentation/20.05/_templates/Beta.tpl create mode 100644 documentation/20.05/_templates/Beta.tpl.data create mode 100644 documentation/20.05/_templates/Caution.tpl create mode 100644 documentation/20.05/_templates/Caution.tpl.data create mode 100644 documentation/20.05/_templates/Info.tpl create mode 100644 documentation/20.05/_templates/Info.tpl.data create mode 100644 documentation/20.05/_templates/Inline-Error.tpl create mode 100644 documentation/20.05/_templates/Inline-Info.tpl create mode 100644 documentation/20.05/_templates/Inline-Success.tpl create mode 100644 documentation/20.05/_templates/Inline-Warning.tpl create mode 100644 documentation/20.05/_templates/Key.tpl create mode 100644 documentation/20.05/_templates/Key.tpl.data create mode 100644 documentation/20.05/_templates/Note.tpl create mode 100644 documentation/20.05/_templates/Note.tpl.data create mode 100644 documentation/20.05/_templates/Recommended.tpl create mode 100644 documentation/20.05/_templates/Recommended.tpl.data create mode 100644 documentation/20.05/_templates/ReviewRequested.tpl create mode 100644 documentation/20.05/_templates/ReviewRequested.tpl.data create mode 100644 documentation/20.05/_templates/Rule.tpl create mode 100644 documentation/20.05/_templates/Rule.tpl.data create mode 100644 documentation/20.05/_templates/Sample.tpl create mode 100644 documentation/20.05/_templates/Sample.tpl.data create mode 100644 documentation/20.05/_templates/SeeAlso.tpl create mode 100644 documentation/20.05/_templates/SeeAlso.tpl.data create mode 100644 documentation/20.05/_templates/Tip.tpl create mode 100644 documentation/20.05/_templates/Tip.tpl.data create mode 100644 documentation/20.05/_templates/UnderConstruction.tpl create mode 100644 documentation/20.05/_templates/UnderConstruction.tpl.data create mode 100644 documentation/20.05/_templates/UpdateNeeded.tpl create mode 100644 documentation/20.05/_templates/UpdateNeeded.tpl.data create mode 100644 documentation/20.05/_templates/Warning.tpl create mode 100644 documentation/20.05/_templates/Warning.tpl.data create mode 100644 documentation/20.05/_templates/definition.tpl create mode 100644 documentation/20.05/_templates/definition.tpl.data create mode 100644 documentation/20.05/contribute/documentation.wiki create mode 100644 documentation/20.05/contribute/editing_help.wiki create mode 100644 documentation/20.05/contribute/index.wiki create mode 100644 documentation/20.05/eiffel/Coding_Standards/Eiffel-Code-Comments.wiki create mode 100644 documentation/20.05/eiffel/Coding_Standards/Eiffel-Coding-Standard.wiki create mode 100644 documentation/20.05/eiffel/Coding_Standards/Local-Declaration-Guidelines.wiki create mode 100644 documentation/20.05/eiffel/Coding_Standards/Style-Guidelines.wiki create mode 100644 documentation/20.05/eiffel/Coding_Standards/index.wiki create mode 100644 documentation/20.05/eiffel/Examples/example-command-line-arguments.wiki create mode 100644 documentation/20.05/eiffel/Examples/example-environment-variables.wiki create mode 100644 documentation/20.05/eiffel/Examples/example-file-io.wiki create mode 100644 documentation/20.05/eiffel/Examples/example-polymorphism.wiki create mode 100644 documentation/20.05/eiffel/Examples/example-reverse-string.wiki create mode 100644 documentation/20.05/eiffel/Examples/example-self-initializing-attributes-and-assigner-commands.wiki create mode 100644 documentation/20.05/eiffel/Examples/example-sieve-eratosthenes.wiki create mode 100644 documentation/20.05/eiffel/Examples/example-sleep.wiki create mode 100644 documentation/20.05/eiffel/Examples/index.wiki create mode 100644 documentation/20.05/eiffel/Examples/introduction-examples-book.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/index.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/Conditional-expression.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/Manifest-array.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/index.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Types.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/eiffel-programming-language-reserved-words.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/eiffel-programming-language-syntax.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/index.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/changes-eiffel-libraries-support-void-safety.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/index.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/mixing-void-safe-and-void-unsafe-software.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/creating-new-void-safe-project.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/index.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/void-safety-background-definition-and-tools.wiki create mode 100644 documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/what-makes-certified-attachment-pattern.wiki create mode 100644 documentation/20.05/eiffel/Overview/common-myths-and-misconceptions-about-eiffel.wiki create mode 100644 documentation/20.05/eiffel/Overview/eiffel-two-minute-fact-sheet.wiki create mode 100644 documentation/20.05/eiffel/Overview/index.wiki create mode 100644 documentation/20.05/eiffel/Overview/learning-eiffel.wiki create mode 100644 documentation/20.05/eiffel/Overview/why-your-next-project-should-use-eiffel.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/EiffelStudio-_A_Guided_Tour_-_Eiffel_Software_Technical_Report.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/Reusable-Software.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/ecma-standard-367.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/eiffel-language.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/index.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/object-oriented-software-construction-2nd-edition.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/touch-class-learning-program-well-objects-and-contracts.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/eiffel-expression-language.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/index.wiki create mode 100644 documentation/20.05/eiffel/Technical_papers/void-safety-how-eiffel-removes-null-pointer-dereferencing.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/Mini-HowTo/Getting-a-STRING-from-a-NUMERIC-object.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/Mini-HowTo/Iterate-on-a-LIST-and-removing-object.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/Mini-HowTo/Iterating-on-a-LIST.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/Mini-HowTo/Managing-CTRL-C-on-console.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/Mini-HowTo/index.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-agents.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-design-contract-tm-assertions-and-exceptions.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-dynamic-structure-execution-model.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-eiffel-tutorial-copyright.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-general-properties.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-genericity-and-arrays.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-hello-world.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-inheritance.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-instructions.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-learn-more.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-lexical-conventions-and-style-rules.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-once-routines-and-shared-objects.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-other-mechanisms.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-overview.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-software-process-eiffel.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-static-picture-system-organization.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/index.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/index.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-classes.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-combining-genericity-and-inheritance.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-deferred-classes-and-seamless-development.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-design-contract-and-assertions.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-design-principles.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-event-driven-programming-and-agents.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-exceptions.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-genericity.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-inheritance.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-invitation-eiffel-copyright.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-object-oriented-design.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-polymorphism-and-dynamic-binding.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-putting-system-together.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-types.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-what-must-i-know-first.wiki create mode 100644 documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/index.wiki create mode 100644 documentation/20.05/eiffel/_files/expression_language.pdf create mode 100644 documentation/20.05/eiffel/_files/void-safe-eiffel.pdf create mode 100644 documentation/20.05/eiffel/_images/Catcall_demo_class_diagram.png create mode 100644 documentation/20.05/eiffel/_images/Catcall_demo_class_diagram.png.data create mode 100644 documentation/20.05/eiffel/_images/Catcall_warning.png create mode 100644 documentation/20.05/eiffel/_images/Catcall_warning.png.data create mode 100644 documentation/20.05/eiffel/_images/ECMA-367_cover.png create mode 100644 documentation/20.05/eiffel/_images/ECMA-367_cover.png.data create mode 100644 documentation/20.05/eiffel/_images/ETL.png create mode 100644 documentation/20.05/eiffel/_images/ETL.png.data create mode 100644 documentation/20.05/eiffel/_images/OOSC2_small.png create mode 100644 documentation/20.05/eiffel/_images/OOSC2_small.png.data create mode 100644 documentation/20.05/eiffel/_images/Touch_of_Class_cover_small.png create mode 100644 documentation/20.05/eiffel/_images/Touch_of_Class_cover_small.png.data create mode 100644 documentation/20.05/eiffel/_images/Tour_sec_5_class_diagram.png create mode 100644 documentation/20.05/eiffel/_images/Tour_sec_5_class_diagram.png.data create mode 100644 documentation/20.05/eiffel/_images/VGCC_error.png create mode 100644 documentation/20.05/eiffel/_images/VGCC_error.png.data create mode 100644 documentation/20.05/eiffel/_images/VoidSafeAddLibraryDialog_noGobo.png create mode 100644 documentation/20.05/eiffel/_images/VoidSafeAddLibraryDialog_noGobo.png.data create mode 100644 documentation/20.05/eiffel/_images/VoidSafeErrorList.png create mode 100644 documentation/20.05/eiffel/_images/VoidSafeErrorList.png.data create mode 100644 documentation/20.05/eiffel/_images/VoidSafePrecompileOffer.png create mode 100644 documentation/20.05/eiffel/_images/VoidSafePrecompileOffer.png.data create mode 100644 documentation/20.05/eiffel/_images/VoidSafeVEVI1.png create mode 100644 documentation/20.05/eiffel/_images/VoidSafeVEVI1.png.data create mode 100644 documentation/20.05/eiffel/_images/VoidSafeVJAR1.png create mode 100644 documentation/20.05/eiffel/_images/VoidSafeVJAR1.png.data create mode 100644 documentation/20.05/eiffel/_images/invitation-2.png create mode 100644 documentation/20.05/eiffel/_images/invitation-2.png.data create mode 100644 documentation/20.05/eiffel/_images/invitation-3.png create mode 100644 documentation/20.05/eiffel/_images/invitation-3.png.data create mode 100644 documentation/20.05/eiffel/_images/invitation-4.png create mode 100644 documentation/20.05/eiffel/_images/invitation-4.png.data create mode 100644 documentation/20.05/eiffel/_images/invitation-5.png create mode 100644 documentation/20.05/eiffel/_images/invitation-5.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-10.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-10.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-11.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-11.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-12.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-12.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-13.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-13.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-14.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-14.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-2.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-2.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-3.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-3.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-5.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-5.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-6.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-6.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-7.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-7.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-8.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-8.png.data create mode 100644 documentation/20.05/eiffel/_images/tutorial-9.png create mode 100644 documentation/20.05/eiffel/_images/tutorial-9.png.data create mode 100644 documentation/20.05/eiffel/index.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/Technical_papers/index.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/appendix-writing-documentation-filters-eff-eiffel-filter-format.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/browsing-features.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/command-line-compiler.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/compiling-and-executing-system.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/computing-project-metrics.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/copying-example-files.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/customizing-tools-layout-and-toolbars.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/debugging-and-run-time-monitoring.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/executing-system-within-and-without-eiffelstudio.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/graphics-based-design.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/handling-syntax-and-validity-errors.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/how-eiffelstudio-compiles.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/index.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/look-project-directory.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/manual-identification-and-copyright.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/producing-and-exporting-documentation.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/recompiling-and-editing.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/retargeting-through-pick-and-drop.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/starting-browse.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/starting-eiffelstudio-and-opening-project.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/using-automatic-class-licensing.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/using-autotest/create-manual-test.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/using-autotest/execute-tests.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/using-autotest/index.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/using-autotest/managing-tests.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/using-autotest/testing-background-and-basics.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/using-autotest/using-extracted-tests.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/using-autotest/using-generated-tests.wiki create mode 100644 documentation/20.05/eiffelstudio/Tutorials/viewing-classes.wiki create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--breakpoints-disable-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--breakpoints-disable-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--breakpoints-enable-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--breakpoints-enable-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-add-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-add-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-copy-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-copy-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-delete-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-delete-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-edit-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-edit-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-save-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--general-save-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--new-class-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--new-class-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--new-cluster-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--new-cluster-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--new-feature-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/16x16--new-feature-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/56--unix-registration-error.png create mode 100644 documentation/20.05/eiffelstudio/_images/56--unix-registration-error.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/56--unix-registration.png create mode 100644 documentation/20.05/eiffelstudio/_images/56--unix-registration.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/56--unix-setup.png create mode 100644 documentation/20.05/eiffelstudio/_images/56--unix-setup.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/56--windows-registration-error.png create mode 100644 documentation/20.05/eiffelstudio/_images/56--windows-registration-error.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/56--windows-registration.png create mode 100644 documentation/20.05/eiffelstudio/_images/56--windows-registration.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Advanced_Options_main.png create mode 100644 documentation/20.05/eiffelstudio/_images/Advanced_Options_main.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_General_pane.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_General_pane.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_General_pane_empty.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_General_pane_empty.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Interface_after_run_06_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Interface_after_run_06_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Interface_annotated_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Interface_annotated_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Outputs_tool_after_run_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Outputs_tool_after_run_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Tags_pane.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Tags_pane.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Tags_pane_empty.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Tags_pane_empty.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Test_Extraction_pane.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Test_Extraction_pane.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Test_Generation_pane.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_Test_Generation_pane.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_add_cluster_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_add_cluster_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_add_testing_libraries_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_add_testing_libraries_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_create_manual_test_pane.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_create_manual_test_pane.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_create_new_test_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_create_new_test_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_create_new_tests.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_create_new_tests.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_drop_down.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_drop_down.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_empty_tool_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_empty_tool_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_extracted_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_extracted_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_extracted_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_extracted_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_filter_drop_down.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_filter_drop_down.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_filter_result.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_filter_result.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_filter_result_fail.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_filter_result_fail.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_filter_withdraw.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_filter_withdraw.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_generated_results_fail.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_generated_results_fail.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_generated_results_pass.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_generated_results_pass.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_information_icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_information_icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_interface_results_-_Execution.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_interface_results_-_Execution.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_class.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_class.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_covers.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_covers.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_run_all_drop_down.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_run_all_drop_down.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_test_coverage_tag_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_test_coverage_tag_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_test_results_details_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_test_results_details_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_after_generation_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_after_generation_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_execution_results.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_execution_results.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tests_pane_null_filter.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tests_pane_null_filter.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tool_after_run.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tool_after_run.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_failed_test.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_failed_test.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_passed_test.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_passed_test.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_test.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_test.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_user_defined_tag_root.png create mode 100644 documentation/20.05/eiffelstudio/_images/AutoTest_user_defined_tag_root.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Automatic_class_license_Eiffel_Software_directory.png create mode 100644 documentation/20.05/eiffelstudio/_images/Automatic_class_license_Eiffel_Software_directory.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Automatic_class_license_project_directory.png create mode 100644 documentation/20.05/eiffelstudio/_images/Automatic_class_license_project_directory.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Automatic_class_license_user_files_directory.png create mode 100644 documentation/20.05/eiffelstudio/_images/Automatic_class_license_user_files_directory.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Analysis_Buttons.png create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Analysis_Buttons.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Class_Context_Menu.png create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Class_Context_Menu.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Cluster_Context_Menu.png create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Cluster_Context_Menu.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Fixing.png create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Fixing.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Preferences_Dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Preferences_Dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Rule_Preferences.png create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Rule_Preferences.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Sample_Results.png create mode 100644 documentation/20.05/eiffelstudio/_images/CA_Sample_Results.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Ca_empty-tool-panel.png create mode 100644 documentation/20.05/eiffelstudio/_images/Ca_empty-tool-panel.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Create_new_tests_2.png create mode 100644 documentation/20.05/eiffelstudio/_images/Create_new_tests_2.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Customize_toolbar_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/Customize_toolbar_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_add_button.png create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_add_button.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_affected_source.png create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_affected_source.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_info_tabl.png create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_info_tabl.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_information_icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_information_icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_locate_class_or_cluster_icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/EIS_locate_class_or_cluster_icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Eiffel_Inspector-command_line_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/Eiffel_Inspector-command_line_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/External_commands_tools_menu_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/External_commands_tools_menu_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/External_compilation_pane_edit_feature.png create mode 100644 documentation/20.05/eiffelstudio/_images/External_compilation_pane_edit_feature.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/External_compilation_pane_file_selection.png create mode 100644 documentation/20.05/eiffelstudio/_images/External_compilation_pane_file_selection.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/External_compilation_tool_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/External_compilation_tool_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rule_Condition.png create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rule_Condition.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rules.png create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rules.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Root.png create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Root.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Version.png create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Version.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Proj_Settings.png create mode 100644 documentation/20.05/eiffelstudio/_images/GenTargetOptions_Proj_Settings.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Group_Options_Edit_Visible_Classes.png create mode 100644 documentation/20.05/eiffelstudio/_images/Group_Options_Edit_Visible_Classes.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Group_Options_main.png create mode 100644 documentation/20.05/eiffelstudio/_images/Group_Options_main.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Implementation venn diagram.png create mode 100644 documentation/20.05/eiffelstudio/_images/Implementation venn diagram.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Metrics_tool_Metrics_evaluation_pane.png create mode 100644 documentation/20.05/eiffelstudio/_images/Metrics_tool_Metrics_evaluation_pane.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Output_tool_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/Output_tool_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Outputs_tool_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/Outputs_tool_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Outputs_tool_General_pane.png create mode 100644 documentation/20.05/eiffelstudio/_images/Outputs_tool_General_pane.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Outputs_tool_Open_folder.png create mode 100644 documentation/20.05/eiffelstudio/_images/Outputs_tool_Open_folder.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Outputs_tool_Transient_functionality.png create mode 100644 documentation/20.05/eiffelstudio/_images/Outputs_tool_Transient_functionality.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Search_capture_boxes_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/Search_capture_boxes_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Select_Help_Document_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/Select_Help_Document_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/Subversion_update_command_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/Subversion_update_command_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/address-toolbar.png create mode 100644 documentation/20.05/eiffelstudio/_images/address-toolbar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/argument-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/argument-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/assertion-options-2.png create mode 100644 documentation/20.05/eiffelstudio/_images/assertion-options-2.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/auto-hide-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/auto-hide-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/automatic-sweeping.png create mode 100644 documentation/20.05/eiffelstudio/_images/automatic-sweeping.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/automatic_annotation_icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/automatic_annotation_icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-agg-client.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-agg-client.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-deferred.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-deferred.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-effective.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-effective.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-interfaced.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-interfaced.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-persistent.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-persistent.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-reused.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-reused.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-root.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class-root.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-class.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-client.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-client.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-cluster-iconified.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-cluster-iconified.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-cluster.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-cluster.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-inheritance.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-inheritance.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bon-list-relations.png create mode 100644 documentation/20.05/eiffelstudio/_images/bon-list-relations.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bp-current-line-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/bp-current-line-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bp-disabled-conditional-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/bp-disabled-conditional-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bp-disabled-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/bp-disabled-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bp-enabled-conditional-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/bp-enabled-conditional-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bp-enabled-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/bp-enabled-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bp-slot-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/bp-slot-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/bp-slot-other-frame-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/bp-slot-other-frame-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-context-menu.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-context-menu.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-condition.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-condition.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-context.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-context.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-hit-count.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-hit-count.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-when-hits-action.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-when-hits-action.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-when-hits.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoint-dialog-when-hits.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-delete-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-delete-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-list-filter-button.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-list-filter-button.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-list-filter.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-list-filter.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-list-flat.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-list-flat.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-list.png create mode 100644 documentation/20.05/eiffelstudio/_images/breakpoints-list.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/call-stack-tool-with-threads.png create mode 100644 documentation/20.05/eiffelstudio/_images/call-stack-tool-with-threads.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/call-stack-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/call-stack-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/callee-is.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/callee-is.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/callstack-active-arrow-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/callstack-active-arrow-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/callstack-empty-arrow-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/callstack-empty-arrow-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-ancestors-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-ancestors-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-clients-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-clients-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-deferred-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-deferred-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-descendents-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-descendents-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-attribute-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-attribute-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-creator-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-creator-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-deferred-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-deferred-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-exported-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-exported-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-external-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-external-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-invariant-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-invariant-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-once-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-once-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-routine-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-features-routine-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-format-bar.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-format-bar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-frozen-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-frozen-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-hie.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/class-hie.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-mini-format-bar.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-mini-format-bar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-normal-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-normal-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-override-normal-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-override-normal-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-overriden-normal-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-overriden-normal-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/class-supliers-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/class-supliers-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/clean_compile_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/clean_compile_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/close-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/close-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/cluster-legend.png create mode 100644 documentation/20.05/eiffelstudio/_images/cluster-legend.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/cluster-tree.png create mode 100644 documentation/20.05/eiffelstudio/_images/cluster-tree.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/color-dialog-windows.png create mode 100644 documentation/20.05/eiffelstudio/_images/color-dialog-windows.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/command-error-info-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/command-error-info-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/command-send-to-external-editor-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/command-send-to-external-editor-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/compile-animation-6-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/compile-animation-6-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/compile-button-dropdown.png create mode 100644 documentation/20.05/eiffelstudio/_images/compile-button-dropdown.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/compile-button.png create mode 100644 documentation/20.05/eiffelstudio/_images/compile-button.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/compile-error-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/compile-error-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/compile-success-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/compile-success-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/console-auto1.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/console-auto1.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/console-auto2.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/console-auto2.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/console-auto3.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/console-auto3.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/console1.png create mode 100644 documentation/20.05/eiffelstudio/_images/console1.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/context-address-bar.png create mode 100644 documentation/20.05/eiffelstudio/_images/context-address-bar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/context-address-window.png create mode 100644 documentation/20.05/eiffelstudio/_images/context-address-window.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/context-class-cursor_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/context-class-cursor_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/context-dialog-class.png create mode 100644 documentation/20.05/eiffelstudio/_images/context-dialog-class.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/context-dialog-cluster.png create mode 100644 documentation/20.05/eiffelstudio/_images/context-dialog-cluster.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/context-disabled-class-cursor_2.png create mode 100644 documentation/20.05/eiffelstudio/_images/context-disabled-class-cursor_2.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/context-link-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/context-link-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/context-sync-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/context-sync-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/continued-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/continued-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/contract-editor-edit-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/contract-editor-edit-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/contract-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/contract-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/create-a-project.png create mode 100644 documentation/20.05/eiffelstudio/_images/create-a-project.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-exception-dialog-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-exception-dialog-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-options.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-options.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-pause-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-pause-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-run-finalized-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-run-finalized-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-run-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-run-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-run-without-breakpoint-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-run-without-breakpoint-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-show-breakpoints-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-show-breakpoints-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-step-into-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-step-into-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-step-out-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-step-out-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-step-over-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-step-over-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-stop-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-stop-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debug-stopped-on-breakpoint-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debug-stopped-on-breakpoint-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debuggee-object-storage-load.png create mode 100644 documentation/20.05/eiffelstudio/_images/debuggee-object-storage-load.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debuggee-object-storage-save.png create mode 100644 documentation/20.05/eiffelstudio/_images/debuggee-object-storage-save.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-auto-values.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-auto-values.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-callstack-depth-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-callstack-depth-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-expand-info-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-expand-info-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-dotnet-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-dotnet-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-dotnet-static-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-dotnet-static-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-eiffel-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-eiffel-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-expand-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-expand-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-expanded-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-expanded-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-immediate-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-immediate-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-static-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-static-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-void-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-object-void-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-set-sizes-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-set-sizes-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-show-hex-value-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugger-show-hex-value-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/debugging-tools-preferences.png create mode 100644 documentation/20.05/eiffelstudio/_images/debugging-tools-preferences.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/deselect-all.png create mode 100644 documentation/20.05/eiffelstudio/_images/deselect-all.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/deselect-recalculatable.png create mode 100644 documentation/20.05/eiffelstudio/_images/deselect-recalculatable.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/devel-diagram.png create mode 100644 documentation/20.05/eiffelstudio/_images/devel-diagram.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-anchor-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-anchor-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-choose-color-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-choose-color-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-defaultview.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-defaultview.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-depth-of-relations-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-depth-of-relations-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-export-to-png-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-export-to-png-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-fill-cluster-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-fill-cluster-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-fit-to-screen-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-fit-to-screen-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-force-right-angles-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-force-right-angles-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-inheritance-link-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-inheritance-link-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-myview.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-myview.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-new-conforming-inheritance-link-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-new-conforming-inheritance-link-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-new-supplier-link-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-new-supplier-link-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-physics-settings-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-physics-settings-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-show-labels-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-show-labels-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-show-legend-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-show-legend-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-supplier-link-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-supplier-link-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-target-cluster-or-class-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-target-cluster-or-class-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-toggle-quality-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-toggle-quality-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-toogle-physics-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-toogle-physics-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-tool-tab.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-tool-tab.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-view-combo.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-view-combo.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-view-uml-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-view-uml-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-zoom-in-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-zoom-in-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-zoom-out-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/diagram-zoom-out-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/dialogs-and-wizards--preferences-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/dialogs-and-wizards--preferences-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/disambiguated-name-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/disambiguated-name-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target-bottom.png create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target-bottom.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target-left.png create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target-left.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target-right.png create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target-right.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target-top.png create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target-top.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target.png create mode 100644 documentation/20.05/eiffelstudio/_images/docking-target.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example1.png create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example1.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example2.png create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example2.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example3.png create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example3.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example4.png create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example4.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example5.png create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example5.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example6.png create mode 100644 documentation/20.05/eiffelstudio/_images/domain-example6.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/edit_automatic_eis_entry_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/edit_automatic_eis_entry_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/editor-class-auto-completion-window.png create mode 100644 documentation/20.05/eiffelstudio/_images/editor-class-auto-completion-window.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/editor-feature-auto-completion-window.png create mode 100644 documentation/20.05/eiffelstudio/_images/editor-feature-auto-completion-window.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/editor-pick-and-drop.png create mode 100644 documentation/20.05/eiffelstudio/_images/editor-pick-and-drop.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/error-cursor-disabled_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/error-cursor-disabled_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/error-cursor_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/error-cursor_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/error-description-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/error-description-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/error-info.png create mode 100644 documentation/20.05/eiffelstudio/_images/error-info.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/error-message.png create mode 100644 documentation/20.05/eiffelstudio/_images/error-message.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/error.png create mode 100644 documentation/20.05/eiffelstudio/_images/error.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_a_development_window_01a_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_a_development_window_01a_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_a_development_window_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_a_development_window_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_active_windows_tool_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_active_windows_tool_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_add_cluster_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_add_cluster_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_add_tab_to_pane.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_add_tab_to_pane.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_add_to_favorites_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_add_to_favorites_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_auto_complete_argument_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_auto_complete_argument_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_auto_complete_feature_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_auto_complete_feature_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_auto_hide_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_auto_hide_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_autocomplete_from_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_autocomplete_from_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_breakpoint_context_menu.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_breakpoint_context_menu.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_breakpoints_tool_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_breakpoints_tool_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_HEIR2_moved_to_new_cluster.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_HEIR2_moved_to_new_cluster.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_field_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_field_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_heir2_created.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_heir2_created.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_heir2_relocated.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_heir2_relocated.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_heir2_text.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_heir2_text.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_invalid_is_hidden.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_invalid_is_hidden.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_tool_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_tool_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_tool_descendants_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_tool_descendants_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_tool_flat_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_tool_flat_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_tool_routines_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_class_tool_routines_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_close_favorites_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_close_favorites_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_compilation_wizard_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_compilation_wizard_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_create_new_class_button.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_create_new_class_button.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_debug_buttons_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_debug_buttons_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_debug_step_by_step_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_debug_step_by_step_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_debug_step_into_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_debug_step_into_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_default_pane_tabs.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_default_pane_tabs.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_breakpoint_reached_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_breakpoint_reached_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_breakpoints_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_breakpoints_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_breakpoints_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_breakpoints_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_foth_descendants_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_foth_descendants_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_multi_array_list_forth_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_multi_array_list_forth_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_multiple_tabs_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_multiple_tabs_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_syntax_error_01_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_syntax_error_01_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_targeted_to_list_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_targeted_to_list_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_targeted_to_parent_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_targeted_to_parent_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_targeted_to_parent_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_targeted_to_parent_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_validity_error_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_validity_error_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_validity_error_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_validity_error_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_validity_error_03.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_development_window_validity_error_03.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_diagram_delete_confirmation.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_diagram_delete_confirmation.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_diagram_tool_pane_floating_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_diagram_tool_pane_floating_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_diagram_tool_pane_pinned_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_diagram_tool_pane_pinned_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_diagram_tool_unhidden.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_diagram_tool_unhidden.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_docking_in_progress_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_docking_in_progress_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_error_list_tool_pnd_validity_error.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_error_list_tool_pnd_validity_error.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_execute_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_execute_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_execution_menu_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_execution_menu_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_favorites_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_favorites_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_feature_tool_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_feature_tool_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_feature_tool_callers_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_feature_tool_callers_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_feature_tool_toolbar_buttons_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_feature_tool_toolbar_buttons_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_features_tool_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_features_tool_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_features_tool_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_features_tool_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_freeze_warning.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_freeze_warning.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_go_back_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_go_back_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_graphics_based_design_starting_point.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_graphics_based_design_starting_point.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_groups_tool_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_groups_tool_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_groups_tool_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_groups_tool_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_groups_tool_03.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_groups_tool_03.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_heir2_inheriting_parent.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_heir2_inheriting_parent.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_list_added_to_favorites_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_list_added_to_favorites_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_new_class_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_new_class_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_new_cluster_added.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_new_cluster_added.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_new_feature_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_new_feature_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_open_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_open_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_open_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_open_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_picked_forth_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_picked_forth_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_pnd_context_menu_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_pnd_context_menu_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_project_directory_01_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_project_directory_01_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_redocking_project_toolbar.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_redocking_project_toolbar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_redocking_project_toolbar_new_row.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_redocking_project_toolbar_new_row.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_relation_depth_dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_relation_depth_dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_reordered_pane_tabs.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_reordered_pane_tabs.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_reset_tools_layout_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_reset_tools_layout_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_select_conforming_inheritance_link_creation_mode.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_select_conforming_inheritance_link_creation_mode.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_side_by_side_editing.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_side_by_side_editing.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_split_pane.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_split_pane.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_string_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_string_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_target_history_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_target_history_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_testroot_class_diagram.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_testroot_class_diagram.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_testroot_cluster.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_testroot_cluster.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_testroot_is_client_of_heir.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_testroot_is_client_of_heir.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_testroot_is_client_of_heir2.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_gt_testroot_is_client_of_heir2.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_add_attached_contract_template_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_add_attached_contract_template_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_add_attached_contract_template_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_add_attached_contract_template_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_03.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_03.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_add_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_add_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_add_02.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_contract_editor_add_02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_edit_contract_dialog_01.png create mode 100644 documentation/20.05/eiffelstudio/_images/es_ref_edit_contract_dialog_01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/exception-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/exception-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/exceptions-handling-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/exceptions-handling-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-00-1.png create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-00-1.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-00.png create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-00.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-01.png create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-02-1.png create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-02-1.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-02.png create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-02.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-03.png create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-03.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-04.png create mode 100644 documentation/20.05/eiffelstudio/_images/exec-replay-04.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/execution-object-storage-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/execution-object-storage-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/expand-errors.png create mode 100644 documentation/20.05/eiffelstudio/_images/expand-errors.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/expanded-display-default.png create mode 100644 documentation/20.05/eiffelstudio/_images/expanded-display-default.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/expanded-normal-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/expanded-normal-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/expression-evaluation-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/expression-evaluation-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/external-commands-dialog-editor.png create mode 100644 documentation/20.05/eiffelstudio/_images/external-commands-dialog-editor.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/external-commands-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/external-commands-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/external-options.png create mode 100644 documentation/20.05/eiffelstudio/_images/external-options.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/fake-callee-is.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/fake-callee-is.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-choose-folder-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-choose-folder-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog-move-to.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog-move-to.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog-new-class.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog-new-class.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog-new-folder.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog-new-folder.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog-remove.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog-remove.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-new-class-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-new-class-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-new-folder-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-new-folder-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-tree.png create mode 100644 documentation/20.05/eiffelstudio/_images/favorites-tree.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-ancestors-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-ancestors-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-assignees-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-assignees-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-assigners-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-assigners-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-attribute-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-attribute-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-callees-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-callees-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-callers-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-callers-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-creaters-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-creaters-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-creators-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-creators-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-deferred-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-deferred-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-descendents-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-descendents-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-external-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-external-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-format-bar.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-format-bar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-frozen-routine-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-frozen-routine-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-homonyms-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-homonyms-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-implementers-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-implementers-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-once-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-once-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-routine-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-routine-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-signatures-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-signatures-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tab_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tab_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tool-signature-button.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tool-signature-button.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tool-signature.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tool-signature.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tree.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-tree.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-1-argument.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-1-argument.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-3-arguments.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-3-arguments.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-attribute-example.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-attribute-example.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-attribute.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-attribute.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-clausenames.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-clausenames.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-comment.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-comment.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-complextype.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-complextype.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-export.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-export.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-function-example.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-function-example.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-function.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-function.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-generictype.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-generictype.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-generictyperec.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-generictyperec.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-invariant-selected.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-invariant-selected.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-invariant.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-invariant.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-procedure-example.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-procedure-example.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-procedure.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-procedure.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-setprocedure-example.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-setprocedure-example.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-setprocedure.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-setprocedure.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-tupletype2.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-tupletype2.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-typeselection.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard-typeselection.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature-wizard.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/feature_call_auto-complete_example_1.png create mode 100644 documentation/20.05/eiffelstudio/_images/feature_call_auto-complete_example_1.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/features-tab-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/features-tab-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/filter-active.png create mode 100644 documentation/20.05/eiffelstudio/_images/filter-active.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/filter.png create mode 100644 documentation/20.05/eiffelstudio/_images/filter.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-assembly-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-assembly-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-blank-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-blank-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-cluster-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-cluster-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-cluster-readonly-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-cluster-readonly-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-features-all-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-features-all-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-features-none-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-features-none-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-features-some-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-features-some-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-hidden-cluster-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-hidden-cluster-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-library-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-library-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-namespace-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-namespace-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-override-cluster-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-override-cluster-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/folder-target-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/folder-target-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-copy-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-copy-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-cut-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-cut-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-debug-mode.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-debug-mode.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-delete-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-delete-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-edit-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-edit-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-edition-mode.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-edition-mode.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-error-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-error-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-open-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-open-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-paste-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-paste-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-redo-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-redo-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-reset-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-reset-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-save-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-save-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-search-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-search-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-tick-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-tick-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-toogle-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-toogle-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-undo-history-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-undo-history-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-undo-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-undo-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/general-word-wrap-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/general-word-wrap-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/groups-tool_1.png create mode 100644 documentation/20.05/eiffelstudio/_images/groups-tool_1.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/hide-non-matching-entries-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/hide-non-matching-entries-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/history-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/history-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/hood1.png create mode 100644 documentation/20.05/eiffelstudio/_images/hood1.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/hood2.png create mode 100644 documentation/20.05/eiffelstudio/_images/hood2.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/hood3.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/hood3.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/ildasm-dotnet-naming.png create mode 100644 documentation/20.05/eiffelstudio/_images/ildasm-dotnet-naming.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/ildasm-no-dotnet-naming.png create mode 100644 documentation/20.05/eiffelstudio/_images/ildasm-no-dotnet-naming.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-140.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-140.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-141.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-141.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-37.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-37.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-38.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-38.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-39.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-39.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-40.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-40.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-41.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-41.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-42.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-42.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-43.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-43.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-44.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-44.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-45.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-45.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-46.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-46.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-47.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-47.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-48.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-48.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/index-49.png create mode 100644 documentation/20.05/eiffelstudio/_images/index-49.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/information-tool-v71.png create mode 100644 documentation/20.05/eiffelstudio/_images/information-tool-v71.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface1.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface1.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface10.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface10.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface11.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface11.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface12.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface12.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface13.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface13.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface14.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface14.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface16.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface16.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface17.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface17.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface18.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface18.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface19.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface19.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface2.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface2.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface20.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface20.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface21.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface21.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface22.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface22.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface23.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface23.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface24.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface24.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface25.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface25.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface3.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface3.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface4.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface4.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface5.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface5.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface6.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface6.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface7.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface7.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface8.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface8.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/interface9.png create mode 100644 documentation/20.05/eiffelstudio/_images/interface9.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/is-satisfied-by.png create mode 100644 documentation/20.05/eiffelstudio/_images/is-satisfied-by.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-left.png create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-left.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-no-handles.png create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-no-handles.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-right.png create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-right.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-two-left.png create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-two-left.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-two-right.png create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool-two-right.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/link-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/main-address-bar.png create mode 100644 documentation/20.05/eiffelstudio/_images/main-address-bar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/main-toolbars_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/main-toolbars_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/manual-sweep.png create mode 100644 documentation/20.05/eiffelstudio/_images/manual-sweep.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/mapping-options.png create mode 100644 documentation/20.05/eiffelstudio/_images/mapping-options.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/maximize-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/maximize-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--command-send-to-external-editor-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--command-send-to-external-editor-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--context-sync-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--context-sync-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--debug-run-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--debug-run-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--debug-stop-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--debug-stop-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--general-open-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--general-open-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--general-remove-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--general-remove-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--general-reset-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--general-reset-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--general-save-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--general-save-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-export-to-file-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-export-to-file-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-filter-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-filter-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-group-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-group-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-quick-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-quick-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-run-and-show-details-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-run-and-show-details-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-send-to-archive-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-send-to-archive-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-unit-assertion-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--metric-unit-assertion-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--new-document-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--new-document-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--new-metric-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/metrics-tool--new-metric-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/minimize-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/minimize-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/move-down-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/move-down-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/move-up-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/move-up-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-aggregate-supplier-link-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-aggregate-supplier-link-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-class-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-class-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-class-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-class-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-cluster-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-cluster-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-cluster-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-cluster-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-document-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-document-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-editor-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-editor-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-exported-feature.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-exported-feature.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-expression-as-object-definition-dlg.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-expression-as-object-definition-dlg.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-expression-definition-dlg.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-expression-definition-dlg.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-expression-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-expression-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-feature-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-feature-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-inheritance-link-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-inheritance-link-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-library-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-library-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-library-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-library-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-supplier-link-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-supplier-link-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/new-window-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/new-window-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/next-error.png create mode 100644 documentation/20.05/eiffelstudio/_images/next-error.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/next-warning.png create mode 100644 documentation/20.05/eiffelstudio/_images/next-warning.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/object-tool-layout-editor.png create mode 100644 documentation/20.05/eiffelstudio/_images/object-tool-layout-editor.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/object-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/object-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/object-viewer-browse.png create mode 100644 documentation/20.05/eiffelstudio/_images/object-viewer-browse.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/object-viewer-dump.png create mode 100644 documentation/20.05/eiffelstudio/_images/object-viewer-dump.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/object-viewer-internal.png create mode 100644 documentation/20.05/eiffelstudio/_images/object-viewer-internal.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/object-viewer-xml.png create mode 100644 documentation/20.05/eiffelstudio/_images/object-viewer-xml.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/objects-tool-exception.png create mode 100644 documentation/20.05/eiffelstudio/_images/objects-tool-exception.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/obsolete-items-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/obsolete-items-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/previous-error.png create mode 100644 documentation/20.05/eiffelstudio/_images/previous-error.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/previous-warning.png create mode 100644 documentation/20.05/eiffelstudio/_images/previous-warning.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-process.png create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-process.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-query-window.png create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-query-window.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-first-state.png create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-first-state.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-fourth-state.png create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-fourth-state.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-rtir-error-state.png create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-rtir-error-state.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-second-state.png create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-second-state.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-third-state.png create mode 100644 documentation/20.05/eiffelstudio/_images/profiler-wizard-third-state.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/project-finalize-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/project-finalize-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/project-freeze-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/project-freeze-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/project-melt-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/project-melt-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/project-toolbar.png create mode 100644 documentation/20.05/eiffelstudio/_images/project-toolbar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/query-return-type-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/query-return-type-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/refactor-feature-up-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/refactor-feature-up-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/refactor-rename-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/refactor-rename-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/refactoring-toolbar.png create mode 100644 documentation/20.05/eiffelstudio/_images/refactoring-toolbar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/refresh-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/refresh-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/remember-list-size.png create mode 100644 documentation/20.05/eiffelstudio/_images/remember-list-size.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/restore-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/restore-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/run-animation-4-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/run-animation-4-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/save-button.png create mode 100644 documentation/20.05/eiffelstudio/_images/save-button.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/search-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/search-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/search-report-01.png create mode 100644 documentation/20.05/eiffelstudio/_images/search-report-01.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/search-tool-scope-tab.png create mode 100644 documentation/20.05/eiffelstudio/_images/search-tool-scope-tab.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/search-tool_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/search-tool_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/select-all.png create mode 100644 documentation/20.05/eiffelstudio/_images/select-all.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/select-recalculatable.png create mode 100644 documentation/20.05/eiffelstudio/_images/select-recalculatable.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri1.png create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri1.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri2.png create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri2.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri3.png create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri3.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri4.png create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri4.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri5.png create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri5.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri6.png create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri6.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri7.png create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri7.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri8.png create mode 100644 documentation/20.05/eiffelstudio/_images/selection-cri8.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/set-default-slice-size-dlg.png create mode 100644 documentation/20.05/eiffelstudio/_images/set-default-slice-size-dlg.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/set-slice-size-dlg.png create mode 100644 documentation/20.05/eiffelstudio/_images/set-slice-size-dlg.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/shared-library-window.png create mode 100644 documentation/20.05/eiffelstudio/_images/shared-library-window.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/show-descriptions-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/show-descriptions-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/show-hide-contract-placeholders.png create mode 100644 documentation/20.05/eiffelstudio/_images/show-hide-contract-placeholders.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/stack-overflow-dlg.png create mode 100644 documentation/20.05/eiffelstudio/_images/stack-overflow-dlg.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/standard-buttons-toolbar.png create mode 100644 documentation/20.05/eiffelstudio/_images/standard-buttons-toolbar.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/startup-dialog.png create mode 100644 documentation/20.05/eiffelstudio/_images/startup-dialog.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/subversion-update-command-02_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/subversion-update-command-02_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/subversion-update-console-window.png create mode 100644 documentation/20.05/eiffelstudio/_images/subversion-update-console-window.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/subversion_update_in_tools_menu.png create mode 100644 documentation/20.05/eiffelstudio/_images/subversion_update_in_tools_menu.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/system-hierarchy.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/system-hierarchy.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/system-options.png create mode 100644 documentation/20.05/eiffelstudio/_images/system-options.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_1_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_1_1.png create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_1_2.png create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_1_3.png create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_1_4.png create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_with_defaults_overridden_1_1.png create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_with_defaults_overridden_1_2.png create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_with_input_parameters_1_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_with_input_parameters_1_1.png create mode 100644 documentation/20.05/eiffelstudio/_images/target_template_with_input_parameters_1_2.png create mode 100644 documentation/20.05/eiffelstudio/_images/targetless_template_1_3.png create mode 100644 documentation/20.05/eiffelstudio/_images/targetless_template_1_4.png create mode 100644 documentation/20.05/eiffelstudio/_images/task-options.png create mode 100644 documentation/20.05/eiffelstudio/_images/task-options.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/terminal-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/terminal-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/threads-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/threads-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/tool-breakpoints-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/tool-breakpoints-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/tool-clusters-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/tool-clusters-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/tool-config-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/tool-config-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/tool-favorites-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/tool-favorites-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/tool-search-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/tool-search-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-close-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-close-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-context-menu.png create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-context-menu.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-dropdown-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-dropdown-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-head-icon_0.png create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-head-icon_0.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-maximize-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-maximize-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-minimize-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-minimize-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-options-dropdown.png create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-options-dropdown.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-restore-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/toolbar-restore-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/trace_01_off.png create mode 100644 documentation/20.05/eiffelstudio/_images/trace_01_off.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/trace_01_on.png create mode 100644 documentation/20.05/eiffelstudio/_images/trace_01_on.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/trace_01_with_eiffelbase.png create mode 100644 documentation/20.05/eiffelstudio/_images/trace_01_with_eiffelbase.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/un-auto-hide-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/un-auto-hide-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/unused-feature-criterion.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/unused-feature-criterion.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/unused-feature.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/unused-feature.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/use-cluster-names.png create mode 100644 documentation/20.05/eiffelstudio/_images/use-cluster-names.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/use-full-cluster-names.png create mode 100644 documentation/20.05/eiffelstudio/_images/use-full-cluster-names.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/use-namespace-name.png create mode 100644 documentation/20.05/eiffelstudio/_images/use-namespace-name.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/value-of-metric-is.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/value-of-metric-is.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/value-tester.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/value-tester.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/variable-options.png create mode 100644 documentation/20.05/eiffelstudio/_images/variable-options.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-buttons.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-buttons.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-clickable-feature-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-clickable-feature-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-clickable-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-clickable-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-contracts-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-contracts-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-editor-feature-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-editor-feature-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-editor-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-editor-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-flat-contracts-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-flat-contracts-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-flat-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-flat-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-next-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-next-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-previous-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-previous-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/view-unmodified-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/view-unmodified-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/visible-metric.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/visible-metric.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/visible-metric2.jpg create mode 100644 documentation/20.05/eiffelstudio/_images/visible-metric2.jpg.data create mode 100644 documentation/20.05/eiffelstudio/_images/warning-options.png create mode 100644 documentation/20.05/eiffelstudio/_images/warning-options.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/warning.png create mode 100644 documentation/20.05/eiffelstudio/_images/warning.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/windows-minimize-all-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/windows-minimize-all-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/windows-raise-all-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/windows-raise-all-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/windows-tool.png create mode 100644 documentation/20.05/eiffelstudio/_images/windows-tool.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/windows-windows-icon.png create mode 100644 documentation/20.05/eiffelstudio/_images/windows-windows-icon.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/xmi-wizard-cluster-selection.png create mode 100644 documentation/20.05/eiffelstudio/_images/xmi-wizard-cluster-selection.png.data create mode 100644 documentation/20.05/eiffelstudio/_images/xmi-wizard-path-selection.png create mode 100644 documentation/20.05/eiffelstudio/_images/xmi-wizard-path-selection.png.data create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/opening-new-windows.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/searching/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/searching/looking-class.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/searching/looking-cluster.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/searching/looking-expression-text.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/searching/looking-feature.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/viewing-information-about-component/centering-tools-component.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/viewing-information-about-component/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/viewing-information-about-component/viewing-information-about-class.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/viewing-information-about-component/viewing-information-about-cluster.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/browsing/viewing-information-about-component/viewing-information-about-feature.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/clean-compile.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/enabling-profiler.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/generating-executables.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/generating-libraries.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/setting-assertion-level.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/setting-syntax-variant.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/tuning-program.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/using-libraries.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/compiling/using-threads.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/changing-default-history-size.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/changing-texts-display.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/choosing-classes-be-ignored-bon-diagrams.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/configuring-external-editor.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/customizing-class-text-views.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/customizing-eiffelstudio-subversion-commands.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/customizing-toolbars.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/making-context-tool-independent-editor.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/customizing-eiffelstudio/setting-editor-behavior.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/altering-system/creating-new-class.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/altering-system/creating-new-feature.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/altering-system/deleting-items.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/altering-system/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/altering-system/refactoring/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/altering-system/refactoring/pull-feature.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/altering-system/refactoring/rename-class.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/altering-system/refactoring/rename-feature.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/exporting-diagram-png-image-file.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/managing-links/creating-aggregate-clientsupplier-links.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/managing-links/creating-clientsupplier-links.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/managing-links/creating-handles.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/managing-links/creating-inheritance-links.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/managing-links/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/managing-links/using-link-tool.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/managing-views/adding-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/managing-views/deleting-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/managing-views/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/adjusting-physics-settings.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/anchoring.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/change-display-quality.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/changing-colors-classes.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/changing-system-exploration-depth.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/iconifying-and-restoring-cluster.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/removing-items-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/retrieving-all-classes-cluster.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/showing-or-hiding-links-and-labels.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/switching-between-bon-and-uml-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/turn-physics-mode.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/using-cluster-legend.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/modifying-display/zooming-diagram.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/switching-diagram-tool.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/designing-project/undoing-and-redoing.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/adding-class.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/adding-cluster.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/adding-feature/adding-attribute.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/adding-feature/adding-function.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/adding-feature/adding-procedure.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/adding-feature/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/adding-feature/opening-new-feature-dialog.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/adding-library.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/changing-project-parameters.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/moving-class.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/removing-class.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/removing-cluster.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/editing-project/removing-feature.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/eiffelstudio-starting-project/eiffelstudio-creating-new-project.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/eiffelstudio-starting-project/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/eiffelstudio-starting-project/retrieving-project-configuration-file.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/generating-documentation/generating-multi-format-documentation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/generating-documentation/generating-xmi-documentation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/generating-documentation/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/computing-measure/evaluating-measure.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/computing-measure/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/computing-measure/saving-measure.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/computing-measure/viewing-measure-details.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/handling-archives/comparing-archive.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/handling-archives/creating-archive.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/handling-archives/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/handling-new-metrics/defining-new-metrics/defining-derived-metrics.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/handling-new-metrics/defining-new-metrics/defining-linear-metrics.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/handling-new-metrics/defining-new-metrics/defining-ratio-metrics.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/handling-new-metrics/defining-new-metrics/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/handling-new-metrics/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/handling-new-metrics/managing-new-metrics.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/how-analyze-project/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/exploring-application-dynamic-state.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/handling-exceptions.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/interrupting-application.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/profiling.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/running-application.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/setting-command-line-arguments.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/tracing.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/using-breakpoints.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-how-tos/running-and-debugging/using-debug-clauses.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/autotest/autotest-interface.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/autotest/eiffel-test-wizard.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/autotest/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/address-bars/change-data-share-mode.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/address-bars/context-tool-address-bar.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/address-bars/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/address-bars/main-address-bar.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/favorites-tool/favorites-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/favorites-tool/favorites-tree.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/favorites-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/favorites-tool/organize-favorites-dialog/create-favorite-folder-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/favorites-tool/organize-favorites-dialog/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/favorites-tool/organize-favorites-dialog/move-folder-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/favorites-tool/organize-favorites-dialog/new-favorite-class-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/favorites-tool/organize-favorites-dialog/remove-favorite-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/features-tool/feature-tree.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/features-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/features-tool/new-feature-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/groups-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/groups-tool/locate-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/groups-tool/new-class-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/groups-tool/new-cluster-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/groups-tool/system-tree-representation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/search-tool.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/windows-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/windows-tool/window-list.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/windows-tool/window-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/browsing-tools/windows-tool/window-related-commands.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/Errors-and-warnings/Legacy-code/VD81.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/Errors-and-warnings/Legacy-code/VWMA--1-.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/Errors-and-warnings/Legacy-code/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/Errors-and-warnings/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/Eiffel-compatibility-options.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/batch-compilation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/command-line-interactive-mode/class-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/command-line-interactive-mode/compile-and-run-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/command-line-interactive-mode/documentation-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/command-line-interactive-mode/feature-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/command-line-interactive-mode/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/command-line-interactive-mode/profile-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/command-line-interactive-mode/system-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/command-line-interactive-mode/testing-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/eiffelstudio-using-command-line-options.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/finish-freezing-utility.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/command-line/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/Major-changes-between-ISE-Eiffel-15.01-and-ISE-Eiffel-15.08.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/Major-changes-between-ISE-Eiffel-15.08-and-ISE-Eiffel-15.12.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/Major-changes-between-ISE-Eiffel-15.12-and-ISE-Eiffel-16.05.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/Major-changes-with-ISE-Eiffel-18.07.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-45-and-ise-eiffel-50/assertions-checking-configuration-changes.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-45-and-ise-eiffel-50/compiler-differences-45-50.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-45-and-ise-eiffel-50/eiffelthread-differences-45-50.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-45-and-ise-eiffel-50/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-50-and-ise-eiffel-51.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-51-and-ise-eiffel-52.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-52-and-ise-eiffel-53.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-53-and-ise-eiffel-54.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-54-and-ise-eiffel-55.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-55-and-ise-eiffel-56.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-5-compiler-history/major-changes-between-ise-eiffel-56-and-ise-eiffel-57.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-57-and-ise-eiffel-60.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-60-and-ise-eiffel-61.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-61-and-ise-eiffel-62.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-62-and-ise-eiffel-63.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-63-and-ise-eiffel-64.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-64-and-ise-eiffel-65.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-65-and-ise-eiffel-66.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-66-and-ise-eiffel-67.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-67-and-ise-eiffel-68.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-1311-and-ise-eiffel-1405.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-68-and-ise-eiffel-70.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-70-and-ise-eiffel-71.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-71-and-ise-eiffel-72.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-72-and-ise-eiffel-73.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-73-and-ise-eiffel-1311.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/differences-between-etl-2nd-printing-and-eiffel-software-implementation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/differences-between-standard-ecma-367-and-eiffel-software-implementation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/dynamic-library-generation/definition-file.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/dynamic-library-generation/dynamic-library-builder.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/dynamic-library-generation/dynamic-library-generated-files.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/dynamic-library-generation/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/melting-ice-technology.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/supported-c-compilers.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/compiler/syntax-level-variant-settings-version.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/console-tool.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/contract-editor-tool.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/breakpoints/breakpoint-commands.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/breakpoints/breakpoint-editing.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/breakpoints/breakpoint-information-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/breakpoints/breakpoint-menu.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/breakpoints/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/call-stack-tool/call-stack-tool-interface.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/call-stack-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/call-stack-tool/information-relative-stack-element.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/call-stack-tool/save-call-stack.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/call-stack-tool/supported-exceptions.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/command-line-debugger.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/debuggees-object-storage.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/debugging-limitations.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/debugging-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/debugging-tips-objects-grid-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/exceptions-handling-tool.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/attach-application.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/detach-application.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/execute-one-line-time.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/execution-profiles.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/pause-application.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/run-and-stop-breakpoints.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/run-arguments.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/run-finalized-executable.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/run-without-breakpoints.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/step-feature.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/step-out-feature.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-commands/stop-debugged-application.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-record-and-replay/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-record-and-replay/record-execution.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/execution-record-and-replay/replay-recorded-execution.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/expression-evaluation/evaluation-tool-or-watch-tool.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/expression-evaluation/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/expression-evaluation/new-expression-dialog.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/object-tool/attribute-symbols.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/object-tool/debug-output.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/object-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/object-tool/object-viewer-also-known-expanded-display.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/object-tool/remove-object-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/object-tool/set-slice-size-command.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/stack-overflow-prevention.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/debugger/threads-tool.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/diagram-tool/contexts.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/diagram-tool/diagram-tool-code-generation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/diagram-tool/diagram-toolbar.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/diagram-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/diagram-tool/notation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/diagram-tool/views.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-incoming/eiffel-scheme-syntax.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-incoming/eis-incoming-examples.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-incoming/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-outgoing/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-outgoing/information-tool/annotation-management.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-outgoing/information-tool/browsing-information.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-outgoing/information-tool/change-analysis.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-outgoing/information-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-outgoing/information-tool/protocols.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/eis-outgoing/information-tool/variable-definition.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-information-system/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-analyzing-results.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-customization.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-getting-started.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca001-self-assignment.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca002-unused-argument.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca003-feature-never-called.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca004-command-query-separation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca005-useless-object-test-local.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca006-object-test-typing-not-needed.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca010-high-complexity-nested-branches-and-loops.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca011-too-many-arguments.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca013-exported-creation-procedure.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca017-empty-conditional.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca020-variable-not-read-after-assignment.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca023-unneeded-parentheses.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca024-use-across-loop.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca025-use-semicolons.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca028-combine-two-if-instructions.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca032-long-routine-implementation.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca033-large-class.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca034-high-npath-complexity.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/ca071-self-comparison.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-rules/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/eiffel-inspector-running-analyzer.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffel-inspector/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/Code-Templates.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/automatic-completion/class-name-auto-complete.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/automatic-completion/feature-call-auto-complete.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/automatic-completion/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/automatic-completion/syntax-auto-complete.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/clipboard-functionality.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/cursor-moves.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/edit-menu-commands.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/editor-customization.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/history-functionality.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/operations-text-blocks/comment-and-uncomment-lines.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/operations-text-blocks/embed-lines-if-thenend-or-debugend.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/operations-text-blocks/indent-and-unindent-selection.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/operations-text-blocks/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/search-functionality.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-editor/selection.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-general-interface-description/eiffelstudio-interface-mechanisms/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-general-interface-description/eiffelstudio-interface-mechanisms/pick-and-drop-mechanism.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-general-interface-description/eiffelstudio-interface-mechanisms/pick-and-drop-shortcut.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-general-interface-description/eiffelstudio-interface-mechanisms/toolbar-customization.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-general-interface-description/eiffelstudio-key-shortcuts.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-general-interface-description/eiffelstudio-window-overview.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-general-interface-description/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-general-interface-description/main-toolbars.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preference-window-overview.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/debugger-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/editor-preferences/eiffel-editor-preferences/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/editor-preferences/eiffel-editor-preferences/syntax-automatic-completion-preferences/default-values-keyword-completion-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/editor-preferences/eiffel-editor-preferences/syntax-automatic-completion-preferences/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/editor-preferences/eiffel-editor-preferences/syntax-automatic-completion-preferences/keyword-completion-customization.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/editor-preferences/eiffel-editor-preferences/syntax-automatic-completion-preferences/keywords-automatic-completion-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/editor-preferences/general-editor-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/editor-preferences/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/editor-preferences/keyboard-shortcuts-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/eiffelstudio-tools-preferences/context-tools.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/eiffelstudio-tools-preferences/eiffelstudio-diagram-tool-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/eiffelstudio-tools-preferences/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/general-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/interface/development-window-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/interface/discardable-dialogs.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/interface/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-preferences/preferences-reference/recent-project-preferences.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/Language-and-Capabilities.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/advanced-options/debug-options.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/advanced-options/externals-options.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/advanced-options/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/advanced-options/tasks-options.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/advanced-options/type-mapping.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/advanced-options/variables.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/advanced-options/warning-options.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/assertion-options.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/group-options.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/system-options.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-15.12.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-16.05.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-17.01.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-17.05.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-18.01.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-18.07.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-18.11.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-19.05.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-19.12.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-5-release-notes/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-5-release-notes/release-notes-eiffelstudio-50.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-5-release-notes/release-notes-eiffelstudio-51.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-5-release-notes/release-notes-eiffelstudio-52.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-5-release-notes/release-notes-eiffelstudio-53.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-5-release-notes/release-notes-eiffelstudio-54.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-5-release-notes/release-notes-eiffelstudio-55.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-5-release-notes/release-notes-eiffelstudio-56.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-5-release-notes/release-notes-eiffelstudio-57.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-60.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-61.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-62.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-63.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-64.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-65.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-66.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-67.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-68.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-7-release-notes/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-7-release-notes/release-notes-eiffelstudio-70.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-7-release-notes/release-notes-eiffelstudio-71.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-7-release-notes/release-notes-eiffelstudio-72.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-7-release-notes/release-notes-eiffelstudio-73.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/release-notes-eiffelstudio-1311.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/release-notes-eiffelstudio-1405.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/release-notes-eiffelstudio-1501.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/release-notes-eiffelstudio-1508.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/error-list-tool.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/ancestors.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/attributes.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/class-formatters-basic-text-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/class-formatters-external-features.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/class-formatters-flat-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/clickable-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/clients.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/contract-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/creators.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/deferred-features.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/descendants.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/exported-features.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/flat-contract-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/invariants.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/once-routines-and-constants.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/routines.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/class-views/suppliers.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-ancestor-versions.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-assignees.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-assigners.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-basic-text-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-callees.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-callers.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-creations.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-creators.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-descendant-versions.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-flat-view.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-homonyms.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/feature-formatters-implementers.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/feature-views/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/attributes-metrics-and-measures.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/criterion-references.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/domains.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/elementary-and-composite-metrics.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/measurement-archive.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/metric-framework-and-theory.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/predefined-raw-metrics.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/raw-metrics-and-selection-criteria.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/scopes.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/selection-criteria.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/under-hood-how-metrics-work.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/definitions/units.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/requirements.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/user-interface-basics/detailed-result-panel.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/user-interface-basics/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/user-interface-basics/metric-archive-panel.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/user-interface-basics/metric-definition-panel.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/user-interface-basics/metric-evaluation-panel.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/metrics-tool/user-interface-basics/metric-history-panel.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/outputs-tool/external-compilation-pane.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/outputs-tool/general-output-pane.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/outputs-tool/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/error-wizard.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/external-commands-editor-dialog.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-attribute-layout.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/argument-list.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/feature-body.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/feature-clauses.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/header-comment.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/invariant-field.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/local-variable.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/name-field.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/postcondition.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/precondition.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/set-procedure.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-feature-properties-modification/type-selection.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-feature-dialog-overview.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-function-layout.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/dialogs/new-feature-dialog/new-procedure-layout.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/profiler-wizard/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/profiler-wizard/profiler-how-tos/how-set-profiler-configuration-file.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/profiler-wizard/profiler-how-tos/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/profiler-wizard/profiler-wizard-guided-tour/index.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/profiler-wizard/profiler-wizard-guided-tour/profile-query-window.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/profiler-wizard/profiler-wizard-guided-tour/reuse-or-generate-execution-profile.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/profiler-wizard/profiler-wizard-guided-tour/select-compilation-mode.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/profiler-wizard/profiler-wizard-guided-tour/select-information-you-need-and-formulate-your-query.wiki create mode 100644 documentation/20.05/eiffelstudio/eiffelstudio-reference/wizards-and-dialogs/profiler-wizard/profiler-wizard-guided-tour/select-run-time-information-record-generate-execution-profile.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/index.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/introducing_eiffelstudio.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/index.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/OpenBSD.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/eiffelstudio-freebsd.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/eiffelstudio-hp-openvms.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/eiffelstudio-hp-tru64-unix.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/eiffelstudio-hp-ux.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/eiffelstudio-linux.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/eiffelstudio-mac-os-x.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/eiffelstudio-sgi-irix.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/eiffelstudio-solaris.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/index.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/software-installation-eiffelstudio/windows.wiki create mode 100644 documentation/20.05/eiffelstudio/getting_started/setup-and-installation/third-party-tools-installation-help.wiki create mode 100644 documentation/20.05/eiffelstudio/index.wiki create mode 100644 documentation/20.05/faq/index.wiki create mode 100644 documentation/20.05/glossary/index.wiki create mode 100644 documentation/20.05/index.wiki create mode 100644 documentation/20.05/solutions/_files/eth-46802-01.pdf create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_Choosing_a_size_definition.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_Choosing_a_size_definition.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_application_01.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_application_01.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_design_tool_01.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_design_tool_01.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_design_tool_02_0.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_design_tool_02_0.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_01.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_01.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_01a.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_01a.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_02.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_02.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_03.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_03.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_04.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_04.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_05.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_scaling_policy_05.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_size_definition_editor_01.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_size_definition_editor_01.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_size_definition_editor_02.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_size_definition_editor_02.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_size_definition_editor_03.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_size_definition_editor_03.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_window_01.png create mode 100644 documentation/20.05/solutions/_images/EiffelRibbon_window_01.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelStudio_after_class_pick_and_drop2.png create mode 100644 documentation/20.05/solutions/_images/EiffelStudio_after_class_pick_and_drop2.png.data create mode 100644 documentation/20.05/solutions/_images/EiffelStudio_during_class_pick_and_drop2.png create mode 100644 documentation/20.05/solutions/_images/EiffelStudio_during_class_pick_and_drop2.png.data create mode 100644 documentation/20.05/solutions/_images/SCOOP_project_setting.png create mode 100644 documentation/20.05/solutions/_images/SCOOP_project_setting.png.data create mode 100644 documentation/20.05/solutions/_images/WEL_cursors_example_01.png create mode 100644 documentation/20.05/solutions/_images/WEL_cursors_example_01.png.data create mode 100644 documentation/20.05/solutions/_images/accelerator.png create mode 100644 documentation/20.05/solutions/_images/accelerator.png.data create mode 100644 documentation/20.05/solutions/_images/analyz.png create mode 100644 documentation/20.05/solutions/_images/analyz.png.data create mode 100644 documentation/20.05/solutions/_images/bilinear.png create mode 100644 documentation/20.05/solutions/_images/bilinear.png.data create mode 100644 documentation/20.05/solutions/_images/binary-tree.png create mode 100644 documentation/20.05/solutions/_images/binary-tree.png.data create mode 100644 documentation/20.05/solutions/_images/bmpview.png create mode 100644 documentation/20.05/solutions/_images/bmpview.png.data create mode 100644 documentation/20.05/solutions/_images/browse.png create mode 100644 documentation/20.05/solutions/_images/browse.png.data create mode 100644 documentation/20.05/solutions/_images/brushes.png create mode 100644 documentation/20.05/solutions/_images/brushes.png.data create mode 100644 documentation/20.05/solutions/_images/builder-window.png create mode 100644 documentation/20.05/solutions/_images/builder-window.png.data create mode 100644 documentation/20.05/solutions/_images/calculator.png create mode 100644 documentation/20.05/solutions/_images/calculator.png.data create mode 100644 documentation/20.05/solutions/_images/change-font-dialog.png create mode 100644 documentation/20.05/solutions/_images/change-font-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/class-project-diagram-client.png create mode 100644 documentation/20.05/solutions/_images/class-project-diagram-client.png.data create mode 100644 documentation/20.05/solutions/_images/class-project-diagram.png create mode 100644 documentation/20.05/solutions/_images/class-project-diagram.png.data create mode 100644 documentation/20.05/solutions/_images/client-inheritance.png create mode 100644 documentation/20.05/solutions/_images/client-inheritance.png.data create mode 100644 documentation/20.05/solutions/_images/collaps.png create mode 100644 documentation/20.05/solutions/_images/collaps.png.data create mode 100644 documentation/20.05/solutions/_images/com-1.gif create mode 100644 documentation/20.05/solutions/_images/com-1.gif.data create mode 100644 documentation/20.05/solutions/_images/com-2.gif create mode 100644 documentation/20.05/solutions/_images/com-2.gif.data create mode 100644 documentation/20.05/solutions/_images/com-3.gif create mode 100644 documentation/20.05/solutions/_images/com-3.gif.data create mode 100644 documentation/20.05/solutions/_images/comctrls.png create mode 100644 documentation/20.05/solutions/_images/comctrls.png.data create mode 100644 documentation/20.05/solutions/_images/commands.png create mode 100644 documentation/20.05/solutions/_images/commands.png.data create mode 100644 documentation/20.05/solutions/_images/complete-project-diagram.png create mode 100644 documentation/20.05/solutions/_images/complete-project-diagram.png.data create mode 100644 documentation/20.05/solutions/_images/component-create-relation.png create mode 100644 documentation/20.05/solutions/_images/component-create-relation.png.data create mode 100644 documentation/20.05/solutions/_images/component-fields-relation.png create mode 100644 documentation/20.05/solutions/_images/component-fields-relation.png.data create mode 100644 documentation/20.05/solutions/_images/component-namer.png create mode 100644 documentation/20.05/solutions/_images/component-namer.png.data create mode 100644 documentation/20.05/solutions/_images/component-navigate-relation.png create mode 100644 documentation/20.05/solutions/_images/component-navigate-relation.png.data create mode 100644 documentation/20.05/solutions/_images/component-search-relation.png create mode 100644 documentation/20.05/solutions/_images/component-search-relation.png.data create mode 100644 documentation/20.05/solutions/_images/component-selector.png create mode 100644 documentation/20.05/solutions/_images/component-selector.png.data create mode 100644 documentation/20.05/solutions/_images/component-viewer.png create mode 100644 documentation/20.05/solutions/_images/component-viewer.png.data create mode 100644 documentation/20.05/solutions/_images/constant-in-use.png create mode 100644 documentation/20.05/solutions/_images/constant-in-use.png.data create mode 100644 documentation/20.05/solutions/_images/constants-dialog.png create mode 100644 documentation/20.05/solutions/_images/constants-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/controls.png create mode 100644 documentation/20.05/solutions/_images/controls.png.data create mode 100644 documentation/20.05/solutions/_images/creator-provider-relation.png create mode 100644 documentation/20.05/solutions/_images/creator-provider-relation.png.data create mode 100644 documentation/20.05/solutions/_images/ctlcolor.png create mode 100644 documentation/20.05/solutions/_images/ctlcolor.png.data create mode 100644 documentation/20.05/solutions/_images/cursor-test.png create mode 100644 documentation/20.05/solutions/_images/cursor-test.png.data create mode 100644 documentation/20.05/solutions/_images/date-time-picker.png create mode 100644 documentation/20.05/solutions/_images/date-time-picker.png.data create mode 100644 documentation/20.05/solutions/_images/db-specific-tables-access-use.png create mode 100644 documentation/20.05/solutions/_images/db-specific-tables-access-use.png.data create mode 100644 documentation/20.05/solutions/_images/directory-search-small.png create mode 100644 documentation/20.05/solutions/_images/directory-search-small.png.data create mode 100644 documentation/20.05/solutions/_images/diskspace.png create mode 100644 documentation/20.05/solutions/_images/diskspace.png.data create mode 100644 documentation/20.05/solutions/_images/display-window.png create mode 100644 documentation/20.05/solutions/_images/display-window.png.data create mode 100644 documentation/20.05/solutions/_images/docked-external.png create mode 100644 documentation/20.05/solutions/_images/docked-external.png.data create mode 100644 documentation/20.05/solutions/_images/docking-insert.png create mode 100644 documentation/20.05/solutions/_images/docking-insert.png.data create mode 100644 documentation/20.05/solutions/_images/dotnet-samples--date-time-picker-change-color-dlg.png create mode 100644 documentation/20.05/solutions/_images/dotnet-samples--date-time-picker-change-color-dlg.png.data create mode 100644 documentation/20.05/solutions/_images/dv-choice-creator-fkeys-selection.png create mode 100644 documentation/20.05/solutions/_images/dv-choice-creator-fkeys-selection.png.data create mode 100644 documentation/20.05/solutions/_images/dv-table-component-strategy.png create mode 100644 documentation/20.05/solutions/_images/dv-table-component-strategy.png.data create mode 100644 documentation/20.05/solutions/_images/dv-tablerow-fields-design.png create mode 100644 documentation/20.05/solutions/_images/dv-tablerow-fields-design.png.data create mode 100644 documentation/20.05/solutions/_images/dv-tablerows-navigator-clients.png create mode 100644 documentation/20.05/solutions/_images/dv-tablerows-navigator-clients.png.data create mode 100644 documentation/20.05/solutions/_images/eb_type_selector.png create mode 100644 documentation/20.05/solutions/_images/eb_type_selector.png.data create mode 100644 documentation/20.05/solutions/_images/empty-radio-merge.png create mode 100644 documentation/20.05/solutions/_images/empty-radio-merge.png.data create mode 100644 documentation/20.05/solutions/_images/estore-generation.generator.png create mode 100644 documentation/20.05/solutions/_images/estore-generation.generator.png.data create mode 100644 documentation/20.05/solutions/_images/event-selection-dialog.png create mode 100644 documentation/20.05/solutions/_images/event-selection-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/ex_cust_pref_dialog.png create mode 100644 documentation/20.05/solutions/_images/ex_cust_pref_dialog.png.data create mode 100644 documentation/20.05/solutions/_images/ex_pref_dialog.png create mode 100644 documentation/20.05/solutions/_images/ex_pref_dialog.png.data create mode 100644 documentation/20.05/solutions/_images/exception-raising.png create mode 100644 documentation/20.05/solutions/_images/exception-raising.png.data create mode 100644 documentation/20.05/solutions/_images/expand.png create mode 100644 documentation/20.05/solutions/_images/expand.png.data create mode 100644 documentation/20.05/solutions/_images/fig-1.gif create mode 100644 documentation/20.05/solutions/_images/fig-1.gif.data create mode 100644 documentation/20.05/solutions/_images/fig-2.gif create mode 100644 documentation/20.05/solutions/_images/fig-2.gif.data create mode 100644 documentation/20.05/solutions/_images/fig-3.gif create mode 100644 documentation/20.05/solutions/_images/fig-3.gif.data create mode 100644 documentation/20.05/solutions/_images/figure1.png create mode 100644 documentation/20.05/solutions/_images/figure1.png.data create mode 100644 documentation/20.05/solutions/_images/fixed-child-positioner.png create mode 100644 documentation/20.05/solutions/_images/fixed-child-positioner.png.data create mode 100644 documentation/20.05/solutions/_images/folders.png create mode 100644 documentation/20.05/solutions/_images/folders.png.data create mode 100644 documentation/20.05/solutions/_images/fontenum.png create mode 100644 documentation/20.05/solutions/_images/fontenum.png.data create mode 100644 documentation/20.05/solutions/_images/fun.png create mode 100644 documentation/20.05/solutions/_images/fun.png.data create mode 100644 documentation/20.05/solutions/_images/gauges.png create mode 100644 documentation/20.05/solutions/_images/gauges.png.data create mode 100644 documentation/20.05/solutions/_images/header-ctrl.png create mode 100644 documentation/20.05/solutions/_images/header-ctrl.png.data create mode 100644 documentation/20.05/solutions/_images/hello-world.png create mode 100644 documentation/20.05/solutions/_images/hello-world.png.data create mode 100644 documentation/20.05/solutions/_images/hello.png create mode 100644 documentation/20.05/solutions/_images/hello.png.data create mode 100644 documentation/20.05/solutions/_images/history-window.png create mode 100644 documentation/20.05/solutions/_images/history-window.png.data create mode 100644 documentation/20.05/solutions/_images/icon-builder-window-color.png create mode 100644 documentation/20.05/solutions/_images/icon-builder-window-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-clipboard-color.png create mode 100644 documentation/20.05/solutions/_images/icon-clipboard-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-cmd-history-color.png create mode 100644 documentation/20.05/solutions/_images/icon-cmd-history-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-code-generation-color.png create mode 100644 documentation/20.05/solutions/_images/icon-code-generation-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-component-build-view-color.png create mode 100644 documentation/20.05/solutions/_images/icon-component-build-view-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-component-display-view-color.png create mode 100644 documentation/20.05/solutions/_images/icon-component-display-view-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-component-viewer-color.png create mode 100644 documentation/20.05/solutions/_images/icon-component-viewer-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-copy-color.png create mode 100644 documentation/20.05/solutions/_images/icon-copy-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-cut-color.png create mode 100644 documentation/20.05/solutions/_images/icon-cut-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-delete-small-color.png create mode 100644 documentation/20.05/solutions/_images/icon-delete-small-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-display-window-color.png create mode 100644 documentation/20.05/solutions/_images/icon-display-window-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-expand-all-small-color.png create mode 100644 documentation/20.05/solutions/_images/icon-expand-all-small-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-format-onces-color.png create mode 100644 documentation/20.05/solutions/_images/icon-format-onces-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-new-cluster-small-color.png create mode 100644 documentation/20.05/solutions/_images/icon-new-cluster-small-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-object-editor-color.png create mode 100644 documentation/20.05/solutions/_images/icon-object-editor-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-past-color.png create mode 100644 documentation/20.05/solutions/_images/icon-past-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-redo-color.png create mode 100644 documentation/20.05/solutions/_images/icon-redo-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-save-color.png create mode 100644 documentation/20.05/solutions/_images/icon-save-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-show-hide-directory-color.png create mode 100644 documentation/20.05/solutions/_images/icon-show-hide-directory-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-system-color.png create mode 100644 documentation/20.05/solutions/_images/icon-system-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-titled-window-main-small-color.png create mode 100644 documentation/20.05/solutions/_images/icon-titled-window-main-small-color.png.data create mode 100644 documentation/20.05/solutions/_images/icon-undo-color.png create mode 100644 documentation/20.05/solutions/_images/icon-undo-color.png.data create mode 100644 documentation/20.05/solutions/_images/implemented-interface-server.png create mode 100644 documentation/20.05/solutions/_images/implemented-interface-server.png.data create mode 100644 documentation/20.05/solutions/_images/implemented-interface.png create mode 100644 documentation/20.05/solutions/_images/implemented-interface.png.data create mode 100644 documentation/20.05/solutions/_images/import-project-clashes.png create mode 100644 documentation/20.05/solutions/_images/import-project-clashes.png.data create mode 100644 documentation/20.05/solutions/_images/import-project.png create mode 100644 documentation/20.05/solutions/_images/import-project.png.data create mode 100644 documentation/20.05/solutions/_images/interface-inheritance-server.png create mode 100644 documentation/20.05/solutions/_images/interface-inheritance-server.png.data create mode 100644 documentation/20.05/solutions/_images/interface-inheritance.png create mode 100644 documentation/20.05/solutions/_images/interface-inheritance.png.data create mode 100644 documentation/20.05/solutions/_images/introduction.png create mode 100644 documentation/20.05/solutions/_images/introduction.png.data create mode 100644 documentation/20.05/solutions/_images/layout-constructor-locked.png create mode 100644 documentation/20.05/solutions/_images/layout-constructor-locked.png.data create mode 100644 documentation/20.05/solutions/_images/layout-constructor.png create mode 100644 documentation/20.05/solutions/_images/layout-constructor.png.data create mode 100644 documentation/20.05/solutions/_images/linear.png create mode 100644 documentation/20.05/solutions/_images/linear.png.data create mode 100644 documentation/20.05/solutions/_images/linked-list.png create mode 100644 documentation/20.05/solutions/_images/linked-list.png.data create mode 100644 documentation/20.05/solutions/_images/list-view.png create mode 100644 documentation/20.05/solutions/_images/list-view.png.data create mode 100644 documentation/20.05/solutions/_images/magnify.png create mode 100644 documentation/20.05/solutions/_images/magnify.png.data create mode 100644 documentation/20.05/solutions/_images/main-window-with-docked-tools.png create mode 100644 documentation/20.05/solutions/_images/main-window-with-docked-tools.png.data create mode 100644 documentation/20.05/solutions/_images/main-window.png create mode 100644 documentation/20.05/solutions/_images/main-window.png.data create mode 100644 documentation/20.05/solutions/_images/mdi--mdi.png create mode 100644 documentation/20.05/solutions/_images/mdi--mdi.png.data create mode 100644 documentation/20.05/solutions/_images/mdi.png create mode 100644 documentation/20.05/solutions/_images/mdi.png.data create mode 100644 documentation/20.05/solutions/_images/menu-contextuel.png create mode 100644 documentation/20.05/solutions/_images/menu-contextuel.png.data create mode 100644 documentation/20.05/solutions/_images/menu-principal.png create mode 100644 documentation/20.05/solutions/_images/menu-principal.png.data create mode 100644 documentation/20.05/solutions/_images/menus.png create mode 100644 documentation/20.05/solutions/_images/menus.png.data create mode 100644 documentation/20.05/solutions/_images/message-box.png create mode 100644 documentation/20.05/solutions/_images/message-box.png.data create mode 100644 documentation/20.05/solutions/_images/minimal.png create mode 100644 documentation/20.05/solutions/_images/minimal.png.data create mode 100644 documentation/20.05/solutions/_images/model-view-relationship.png create mode 100644 documentation/20.05/solutions/_images/model-view-relationship.png.data create mode 100644 documentation/20.05/solutions/_images/new-directory-dialog.png create mode 100644 documentation/20.05/solutions/_images/new-directory-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/new-project.png create mode 100644 documentation/20.05/solutions/_images/new-project.png.data create mode 100644 documentation/20.05/solutions/_images/object-editor.png create mode 100644 documentation/20.05/solutions/_images/object-editor.png.data create mode 100644 documentation/20.05/solutions/_images/object_graph.png create mode 100644 documentation/20.05/solutions/_images/object_graph.png.data create mode 100644 documentation/20.05/solutions/_images/open-project.png create mode 100644 documentation/20.05/solutions/_images/open-project.png.data create mode 100644 documentation/20.05/solutions/_images/overwrite-project.png create mode 100644 documentation/20.05/solutions/_images/overwrite-project.png.data create mode 100644 documentation/20.05/solutions/_images/pixmap-selection-dialog.png create mode 100644 documentation/20.05/solutions/_images/pixmap-selection-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/pizza.png create mode 100644 documentation/20.05/solutions/_images/pizza.png.data create mode 100644 documentation/20.05/solutions/_images/pref_dialog.png create mode 100644 documentation/20.05/solutions/_images/pref_dialog.png.data create mode 100644 documentation/20.05/solutions/_images/preferences-dialog.png create mode 100644 documentation/20.05/solutions/_images/preferences-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/prepro.png create mode 100644 documentation/20.05/solutions/_images/prepro.png.data create mode 100644 documentation/20.05/solutions/_images/printer.png create mode 100644 documentation/20.05/solutions/_images/printer.png.data create mode 100644 documentation/20.05/solutions/_images/progress-bar.png create mode 100644 documentation/20.05/solutions/_images/progress-bar.png.data create mode 100644 documentation/20.05/solutions/_images/project-build-class.png create mode 100644 documentation/20.05/solutions/_images/project-build-class.png.data create mode 100644 documentation/20.05/solutions/_images/project-build.png create mode 100644 documentation/20.05/solutions/_images/project-build.png.data create mode 100644 documentation/20.05/solutions/_images/project-generation.png create mode 100644 documentation/20.05/solutions/_images/project-generation.png.data create mode 100644 documentation/20.05/solutions/_images/rb.png create mode 100644 documentation/20.05/solutions/_images/rb.png.data create mode 100644 documentation/20.05/solutions/_images/recent-projects.png create mode 100644 documentation/20.05/solutions/_images/recent-projects.png.data create mode 100644 documentation/20.05/solutions/_images/retriev.png create mode 100644 documentation/20.05/solutions/_images/retriev.png.data create mode 100644 documentation/20.05/solutions/_images/richedit.png create mode 100644 documentation/20.05/solutions/_images/richedit.png.data create mode 100644 documentation/20.05/solutions/_images/scoop-regions.png create mode 100644 documentation/20.05/solutions/_images/scoop-regions.png.data create mode 100644 documentation/20.05/solutions/_images/simple-data-binding.png create mode 100644 documentation/20.05/solutions/_images/simple-data-binding.png.data create mode 100644 documentation/20.05/solutions/_images/simple-hello-world.png create mode 100644 documentation/20.05/solutions/_images/simple-hello-world.png.data create mode 100644 documentation/20.05/solutions/_images/splitarea.png create mode 100644 documentation/20.05/solutions/_images/splitarea.png.data create mode 100644 documentation/20.05/solutions/_images/standard-dialogs.png create mode 100644 documentation/20.05/solutions/_images/standard-dialogs.png.data create mode 100644 documentation/20.05/solutions/_images/stddlgs.png create mode 100644 documentation/20.05/solutions/_images/stddlgs.png.data create mode 100644 documentation/20.05/solutions/_images/step1.png create mode 100644 documentation/20.05/solutions/_images/step1.png.data create mode 100644 documentation/20.05/solutions/_images/step2.png create mode 100644 documentation/20.05/solutions/_images/step2.png.data create mode 100644 documentation/20.05/solutions/_images/step3.png create mode 100644 documentation/20.05/solutions/_images/step3.png.data create mode 100644 documentation/20.05/solutions/_images/step4.png create mode 100644 documentation/20.05/solutions/_images/step4.png.data create mode 100644 documentation/20.05/solutions/_images/step5.png create mode 100644 documentation/20.05/solutions/_images/step5.png.data create mode 100644 documentation/20.05/solutions/_images/step6.png create mode 100644 documentation/20.05/solutions/_images/step6.png.data create mode 100644 documentation/20.05/solutions/_images/step7.png create mode 100644 documentation/20.05/solutions/_images/step7.png.data create mode 100644 documentation/20.05/solutions/_images/step8.png create mode 100644 documentation/20.05/solutions/_images/step8.png.data create mode 100644 documentation/20.05/solutions/_images/strings.png create mode 100644 documentation/20.05/solutions/_images/strings.png.data create mode 100644 documentation/20.05/solutions/_images/sub-component-objects.png create mode 100644 documentation/20.05/solutions/_images/sub-component-objects.png.data create mode 100644 documentation/20.05/solutions/_images/table-child-positioner.png create mode 100644 documentation/20.05/solutions/_images/table-child-positioner.png.data create mode 100644 documentation/20.05/solutions/_images/table-descr-access-objects.png create mode 100644 documentation/20.05/solutions/_images/table-descr-access-objects.png.data create mode 100644 documentation/20.05/solutions/_images/table-descr-objects.png create mode 100644 documentation/20.05/solutions/_images/table-descr-objects.png.data create mode 100644 documentation/20.05/solutions/_images/table-objects-associations.png create mode 100644 documentation/20.05/solutions/_images/table-objects-associations.png.data create mode 100644 documentation/20.05/solutions/_images/tables-access-inherit.png create mode 100644 documentation/20.05/solutions/_images/tables-access-inherit.png.data create mode 100644 documentation/20.05/solutions/_images/text.png create mode 100644 documentation/20.05/solutions/_images/text.png.data create mode 100644 documentation/20.05/solutions/_images/timer.png create mode 100644 documentation/20.05/solutions/_images/timer.png.data create mode 100644 documentation/20.05/solutions/_images/toolbar.png create mode 100644 documentation/20.05/solutions/_images/toolbar.png.data create mode 100644 documentation/20.05/solutions/_images/tree-view--tree-view.png create mode 100644 documentation/20.05/solutions/_images/tree-view--tree-view.png.data create mode 100644 documentation/20.05/solutions/_images/tree-view.png create mode 100644 documentation/20.05/solutions/_images/tree-view.png.data create mode 100644 documentation/20.05/solutions/_images/tree.png create mode 100644 documentation/20.05/solutions/_images/tree.png.data create mode 100644 documentation/20.05/solutions/_images/two-way-list.png create mode 100644 documentation/20.05/solutions/_images/two-way-list.png.data create mode 100644 documentation/20.05/solutions/_images/unicode.png create mode 100644 documentation/20.05/solutions/_images/unicode.png.data create mode 100644 documentation/20.05/solutions/_images/value-chart.PNG create mode 100644 documentation/20.05/solutions/_images/value-chart.PNG.data create mode 100644 documentation/20.05/solutions/_images/viewport.png create mode 100644 documentation/20.05/solutions/_images/viewport.png.data create mode 100644 documentation/20.05/solutions/_images/vision2--figure1.png create mode 100644 documentation/20.05/solutions/_images/vision2--figure1.png.data create mode 100644 documentation/20.05/solutions/_images/wel-check-box-3-state-checked.png create mode 100644 documentation/20.05/solutions/_images/wel-check-box-3-state-checked.png.data create mode 100644 documentation/20.05/solutions/_images/wel-check-box-3-state-indeterminate.png create mode 100644 documentation/20.05/solutions/_images/wel-check-box-3-state-indeterminate.png.data create mode 100644 documentation/20.05/solutions/_images/wel-check-box-3-state-unchecked.png create mode 100644 documentation/20.05/solutions/_images/wel-check-box-3-state-unchecked.png.data create mode 100644 documentation/20.05/solutions/_images/wel-check-box-checked.png create mode 100644 documentation/20.05/solutions/_images/wel-check-box-checked.png.data create mode 100644 documentation/20.05/solutions/_images/wel-check-box-unchecked.png create mode 100644 documentation/20.05/solutions/_images/wel-check-box-unchecked.png.data create mode 100644 documentation/20.05/solutions/_images/wel-choose-color-dialog.png create mode 100644 documentation/20.05/solutions/_images/wel-choose-color-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/wel-choose-folder-dialog.png create mode 100644 documentation/20.05/solutions/_images/wel-choose-folder-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/wel-choose-font-dialog.png create mode 100644 documentation/20.05/solutions/_images/wel-choose-font-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/wel-group-box.png create mode 100644 documentation/20.05/solutions/_images/wel-group-box.png.data create mode 100644 documentation/20.05/solutions/_images/wel-list-view-style-lvs-icon.png create mode 100644 documentation/20.05/solutions/_images/wel-list-view-style-lvs-icon.png.data create mode 100644 documentation/20.05/solutions/_images/wel-list-view-style-lvs-list.png create mode 100644 documentation/20.05/solutions/_images/wel-list-view-style-lvs-list.png.data create mode 100644 documentation/20.05/solutions/_images/wel-list-view-style-lvs-report.png create mode 100644 documentation/20.05/solutions/_images/wel-list-view-style-lvs-report.png.data create mode 100644 documentation/20.05/solutions/_images/wel-list-view-style-lvs-small-icon.png create mode 100644 documentation/20.05/solutions/_images/wel-list-view-style-lvs-small-icon.png.data create mode 100644 documentation/20.05/solutions/_images/wel-multiple-line-edit.png create mode 100644 documentation/20.05/solutions/_images/wel-multiple-line-edit.png.data create mode 100644 documentation/20.05/solutions/_images/wel-multiple-selection-list-box.png create mode 100644 documentation/20.05/solutions/_images/wel-multiple-selection-list-box.png.data create mode 100644 documentation/20.05/solutions/_images/wel-open-file-dialog.png create mode 100644 documentation/20.05/solutions/_images/wel-open-file-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/wel-print-dialog.png create mode 100644 documentation/20.05/solutions/_images/wel-print-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/wel-progress-bar-half.png create mode 100644 documentation/20.05/solutions/_images/wel-progress-bar-half.png.data create mode 100644 documentation/20.05/solutions/_images/wel-push-button.png create mode 100644 documentation/20.05/solutions/_images/wel-push-button.png.data create mode 100644 documentation/20.05/solutions/_images/wel-radio-button-checked.png create mode 100644 documentation/20.05/solutions/_images/wel-radio-button-checked.png.data create mode 100644 documentation/20.05/solutions/_images/wel-radio-button-unchecked.png create mode 100644 documentation/20.05/solutions/_images/wel-radio-button-unchecked.png.data create mode 100644 documentation/20.05/solutions/_images/wel-save-file-dialog.png create mode 100644 documentation/20.05/solutions/_images/wel-save-file-dialog.png.data create mode 100644 documentation/20.05/solutions/_images/wel-scroll-bar-horizontal.png create mode 100644 documentation/20.05/solutions/_images/wel-scroll-bar-horizontal.png.data create mode 100644 documentation/20.05/solutions/_images/wel-scroll-bar-vertical.png create mode 100644 documentation/20.05/solutions/_images/wel-scroll-bar-vertical.png.data create mode 100644 documentation/20.05/solutions/_images/wel-single-line-edit.png create mode 100644 documentation/20.05/solutions/_images/wel-single-line-edit.png.data create mode 100644 documentation/20.05/solutions/_images/wel-single-selection-list-box.png create mode 100644 documentation/20.05/solutions/_images/wel-single-selection-list-box.png.data create mode 100644 documentation/20.05/solutions/_images/wel-tooltip.png create mode 100644 documentation/20.05/solutions/_images/wel-tooltip.png.data create mode 100644 documentation/20.05/solutions/_images/wel-track-bar-horizontal.png create mode 100644 documentation/20.05/solutions/_images/wel-track-bar-horizontal.png.data create mode 100644 documentation/20.05/solutions/_images/wel-track-bar-vertical.png create mode 100644 documentation/20.05/solutions/_images/wel-track-bar-vertical.png.data create mode 100644 documentation/20.05/solutions/_images/wel-up-down-control.png create mode 100644 documentation/20.05/solutions/_images/wel-up-down-control.png.data create mode 100644 documentation/20.05/solutions/_images/widget-selector-clients.PNG create mode 100644 documentation/20.05/solutions/_images/widget-selector-clients.PNG.data create mode 100644 documentation/20.05/solutions/_images/widget_sample.png create mode 100644 documentation/20.05/solutions/_images/widget_sample.png.data create mode 100644 documentation/20.05/solutions/_images/window-selector.png create mode 100644 documentation/20.05/solutions/_images/window-selector.png.data create mode 100644 documentation/20.05/solutions/_images/windows.png create mode 100644 documentation/20.05/solutions/_images/windows.png.data create mode 100644 documentation/20.05/solutions/_images/xcell.png create mode 100644 documentation/20.05/solutions/_images/xcell.png.data create mode 100644 documentation/20.05/solutions/_images/xy.png create mode 100644 documentation/20.05/solutions/_images/xy.png.data create mode 100644 documentation/20.05/solutions/basic-computing/EiffelProcess-and-EiffelBaseProcess.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-class-reference-0.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-samples/eiffelbase-sample-calculator.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-samples/index.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-data-structures-overview/eiffelbase-abstract-container-structures-taxonomy.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-data-structures-overview/eiffelbase-data-structures-lists.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-data-structures-overview/eiffelbase-dispensers.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-data-structures-overview/eiffelbase-iteration.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-data-structures-overview/eiffelbase-sets.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-data-structures-overview/eiffelbase-tables.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-data-structures-overview/eiffelbase-trees.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-data-structures-overview/index.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-kernel/Access-to-internal-properties.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-kernel/Files--input--output.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-kernel/Language-related-facilities.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-kernel/Persistence--storage--and-retrieval.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-kernel/Universal-Class-and-its-Features.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-kernel/index.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/eiffelbase-support-cluster.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/eiffelbase-tutorial/index.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/ifell.wiki create mode 100644 documentation/20.05/solutions/basic-computing/eiffelbase/index.wiki create mode 100644 documentation/20.05/solutions/basic-computing/index.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/SCOOP_tutorial.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/SCOOP-papers.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/index.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-asynchronous-calls.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-design-by-contract.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/baboon-crossing.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/barbershop.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/counter.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/dining-philosophers.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/dining-savages.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/faneuil-hall.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/index.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/observer-pattern.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/producer-consumer.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/quicksort.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/search-insert-delete.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/senate-bus.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-examples/single-element-producer-consumer.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-exceptions.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-exclusive-access.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-getting-started.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-implementation.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-regions-processors.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-separate-calls.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/eiffelthread/eiffelthread-class-reference.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/eiffelthread/eiffelthread-tutorial/compilation-multithreaded-systems.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/eiffelthread/eiffelthread-tutorial/index.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/eiffelthread/eiffelthread-tutorial/multithread-faq.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/eiffelthread/eiffelthread-tutorial/once-features-multithreaded-mode.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/eiffelthread/eiffelthread-tutorial/thread-library-overview.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/eiffelthread/index.wiki create mode 100644 documentation/20.05/solutions/concurrent-computing/index.wiki create mode 100644 documentation/20.05/solutions/database-access/abel/index.wiki create mode 100644 documentation/20.05/solutions/database-access/abel/tutorial/accessing-existing-database.wiki create mode 100644 documentation/20.05/solutions/database-access/abel/tutorial/advanced-queries.wiki create mode 100644 documentation/20.05/solutions/database-access/abel/tutorial/basic-operations.wiki create mode 100644 documentation/20.05/solutions/database-access/abel/tutorial/dealing-references.wiki create mode 100644 documentation/20.05/solutions/database-access/abel/tutorial/error-handling.wiki create mode 100644 documentation/20.05/solutions/database-access/abel/tutorial/getting-started.wiki create mode 100644 documentation/20.05/solutions/database-access/abel/tutorial/index.wiki create mode 100644 documentation/20.05/solutions/database-access/abel/tutorial/tuple-queries.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/EiffelStore-ODBC-with-PostgreSQL.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/EiffelStore-SQL-injection.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-class-reference.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-samples/esql-sample.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-samples/index.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-samples/inserter-sample.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-samples/selector-sample.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-dataview-cluster.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-generation-cluster/data-structures-creation.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-generation-cluster/data-structures-use.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-generation-cluster/index.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-implementation-layer.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/data-modification.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/data-object-coupling.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/database-connection.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/database-control.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/database-selection.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/index.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/query-variables.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/selection-access.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/eiffelstore-interface-layer/stored-procedures.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/eiffelstore-tutorial/index.wiki create mode 100644 documentation/20.05/solutions/database-access/eiffelstore/index.wiki create mode 100644 documentation/20.05/solutions/database-access/index.wiki create mode 100644 documentation/20.05/solutions/dates-and-times/eiffeltime/eiffeltime-class-reference.wiki create mode 100644 documentation/20.05/solutions/dates-and-times/eiffeltime/eiffeltime-tutorial/absolute-time.wiki create mode 100644 documentation/20.05/solutions/dates-and-times/eiffeltime/eiffeltime-tutorial/date-time-string-conversion.wiki create mode 100644 documentation/20.05/solutions/dates-and-times/eiffeltime/eiffeltime-tutorial/duration.wiki create mode 100644 documentation/20.05/solutions/dates-and-times/eiffeltime/eiffeltime-tutorial/index.wiki create mode 100644 documentation/20.05/solutions/dates-and-times/eiffeltime/eiffeltime-tutorial/interval.wiki create mode 100644 documentation/20.05/solutions/dates-and-times/eiffeltime/eiffeltime-tutorial/more-precision.wiki create mode 100644 documentation/20.05/solutions/dates-and-times/eiffeltime/index.wiki create mode 100644 documentation/20.05/solutions/dates-and-times/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-how-tos/create-object.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-how-tos/delete-object.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-how-tos/eiffelbuild-starting-project/eiffelbuild-creating-new-project.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-how-tos/eiffelbuild-starting-project/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-how-tos/eiffelbuild-starting-project/retrieving-project-build-project-file.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-how-tos/import-project.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-how-tos/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-how-tos/reparent-object.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-how-tos/save-project.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/builder-window.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/component-selector.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/component-viewer.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/constants.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/display-window.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-code-generation.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-general-interface-description/docking.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-general-interface-description/eiffelbuild-key-shortcuts.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-general-interface-description/eiffelbuild-window-overview.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-general-interface-description/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-general-interface-description/main-toolbar.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-notation.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-preferences.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-project-settings-window/build-tab.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-project-settings-window/generation-tab.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/eiffelbuild-project-settings-window/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/history.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/layout-constructor.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/object-editor/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/object-editor/merging-radio-button-groups.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/object-editor/positioning-fixed-children.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/object-editor/positioning-table-children.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/type-selector.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-reference/widget-selector.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/eiffelbuild-version-history.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelbuild/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/How-to-build-a-concurrent-graphical-application--EiffelVision-with-SCOOP.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/converting-eiffelvision-2-systems-void-safety.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-2-class-reference.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-2-samples/accelerator-sample.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-2-samples/cursor-sample.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-2-samples/gauges-sample.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-2-samples/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-2-samples/standard-dialogs-sample.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-2-samples/viewport-sample.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-2-samples/widgets-sample.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-introduction.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/events.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/figures.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/items.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/kernel.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/properties/eiffelvision-pick-and-drop.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/properties/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/support.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/widgets/containers.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/widgets/eiffelvision-dialogs.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/widgets/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/eiffelvision-library-reference-manual/widgets/primitives.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/index.wiki create mode 100644 documentation/20.05/solutions/gui-building/eiffelvision-2/revisions-and-bug-fixes.wiki create mode 100644 documentation/20.05/solutions/gui-building/index.wiki create mode 100644 documentation/20.05/solutions/index.wiki create mode 100644 documentation/20.05/solutions/iron-eiffel-package-repository.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-class-reference.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-samples/advanced.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-samples/index.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-samples/polling.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-samples/predef.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-samples/same-machine.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-samples/two-machines.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/bibliography.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/clients-and-servers.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/event-driven-command-execution.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/index.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/introduction-examples.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/more-complex-example.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/obtaining-finer-degree-control.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/overview-eiffelnet-mechanisms.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/using-datagram-sockets.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/eiffelnet-tutorial/what-eiffelnet.wiki create mode 100644 documentation/20.05/solutions/networking/eiffelnet/index.wiki create mode 100644 documentation/20.05/solutions/networking/index.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-interface-overview.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/attribute-exists.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-access.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-adopt.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-attribute-type.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-attribute.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-create.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-disable-visible-exception.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-enable-visible-exception.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-function.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-name-tid.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-name.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-procedure.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-protect.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-string.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-type-id.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-type-name.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-type-reference.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-type.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/eif-wean.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-reference/index.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-samples/cecil-basic-sample.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-samples/cecil-c-eiffel.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-samples/cecil-eiffel-c.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-samples/cecil-how-compile-samples.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-samples/cecil-threads.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/cecil-samples/index.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/compiling-eiffel-system-cecil.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/index.wiki create mode 100644 documentation/20.05/solutions/other-languages/cecil/using-cecil-archive.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel-external-mechanism/index.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel-external-mechanism/interfacing-c-and-c.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel-external-mechanism/interfacing-dlls.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel-external-mechanism/obsolete-external-interfaces/c-externals-0.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel-external-mechanism/obsolete-external-interfaces/c-externals.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel-external-mechanism/obsolete-external-interfaces/index.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel2java/eiffel2java-class-reference.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel2java/eiffel2java-sample.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel2java/eiffel2java-tutorial.wiki create mode 100644 documentation/20.05/solutions/other-languages/eiffel2java/index.wiki create mode 100644 documentation/20.05/solutions/other-languages/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-library/eiffelcom-class-reference.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-library/eiffelcom-interface-content/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-library/eiffelcom-interface-content/interfaces.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-library/eiffelcom-interface-content/structures.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-library/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/com-and-eiffel/access-type.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/com-and-eiffel/coclass.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/com-and-eiffel/com-concepts.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/com-and-eiffel/com-interfaces.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/com-and-eiffel/component-location.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/com-and-eiffel/deeper-com.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/com-and-eiffel/eiffelcom-introduction.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/com-and-eiffel/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-guided-tour/accessing-com-component.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-guided-tour/creating-new-com-component.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-guided-tour/creating-new-component-eiffel-project.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-guided-tour/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-introduction.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-reference/building-com-component.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-reference/class-hierarchy.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-reference/eiffel-project-processing.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-reference/generated-files.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-reference/how-eiffelcom-wizard-works.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-reference/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-reference/reusing-com-component.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/eiffelcom-wizard-reference/wizards-command-line-options.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/eiffelcom-wizard/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/com/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/eiffelribbon/eiffelribbon-design-tool.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/eiffelribbon/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/building-net-application.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-aspnet-tools-and-administration/eiffel-codedom-provider-manager.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-aspnet-tools-and-administration/esplitter.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-aspnet-tools-and-administration/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-aspnet-tools-and-administration/name-mapper.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/about-code-document-object-model-codedom.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/common-scenarios.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/configuration.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/eiffel-implementation.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/installation.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/limitations.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/logging.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/required-permissions.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/eiffel-codedom-provider/supported-constructs.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/writing-aspnet-pages-eiffel/codedom-getting-started.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/writing-aspnet-pages-eiffel/eiffel-aspnet-installation.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/writing-aspnet-pages-eiffel/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/writing-aspnet-pages-eiffel/names-mappings.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-aspnet-documentation/writing-aspnet-pages-eiffel/using-eiffel-write-aspnet-pages.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/conventions/constructors-and-creation-procedures.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/conventions/eiffel-class-and-feature-names.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/conventions/eiffel-net-terminology.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/conventions/eiffel-reserved-words.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/conventions/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/conventions/similar-types-occurring-both-libraries.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/conventions/type-organization.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net-integration.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/adding-class-features.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/design-contract-and-assertions.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/eiffel-classes.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/eiffel-net-compliance.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/event-programming-agents.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/exception-mechanism.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/genericity.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/inheritance.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/referenced-assembly-type-and-feature-name-conversion.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/eiffel-net/using-referenced-assemblies.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/eiffel-net-language/known-issues.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/net-installation-instructions.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/ado-net-samples/adonet-sample.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/ado-net-samples/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/console-samples/calculator-console.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/console-samples/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/threads-samples/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/threads-samples/pools.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/threads-samples/timers.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/calculator-winform.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/date-time-picker.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/gdi-plus-text.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/mdi/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/mdi/mdi-details.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/menus/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/menus/menu-details.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/message-box.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/progress-bar-sample.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/simple-data-binding.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/simple-hello-world-form-sample.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/net/samples/winform-samples/tree-view.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/resourcebench/features.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/resourcebench/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/resourcebench/tour.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/resourcebench/troubleshooting.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-class-reference.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-common-concepts/common-message-hooks.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-common-concepts/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-common-concepts/inheriting-wel-application.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-common-concepts/redefining-init-application.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-common-concepts/redefining-main-window.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-check-box-3-state.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-checkbox.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-down-control.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-group-box.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-list-view.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-multiple-line-edit.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-multiple-selection-list-box.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-owner-draw-button.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-progress-bar.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-push-button.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-radio-button.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-scroll-bar.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-single-line-edit.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-single-selection-list-box.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-tooltip.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/controls-cluster/wel-track-bar.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/stddlgs-cluster/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/stddlgs-cluster/wel-choose-color-dialog.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/stddlgs-cluster/wel-choose-folder-dialog.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/stddlgs-cluster/wel-choose-font-dialog.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/stddlgs-cluster/wel-open-file-dialog.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/stddlgs-cluster/wel-print-dialog.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/stddlgs-cluster/wel-save-file-dialog.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-interface-content/windows-cluster.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/bmpview.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/brushes.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/commands.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/common-controls.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/controls-sample.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/ctlcolor.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/cursors.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/disk-space.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/fontenum.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/fun.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/header-control.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/hello-world.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/list-view.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/magnify.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/mdi-multiple-document-interface.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/minimal.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/pizza.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/printer.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/rich-edit.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/split-area.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/standard-dialogs-sample.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/timer.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/tree-view-sample.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/unicode-sample.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/wel-sample-menus.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/windows-sample.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/xcell.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-samples/xy-co-ordinates.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-tutorial/index.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-tutorial/tutorial-step-1.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-tutorial/tutorial-step-2.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-tutorial/tutorial-step-3.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-tutorial/tutorial-step-4.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-tutorial/tutorial-step-5.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-tutorial/tutorial-step-6.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-tutorial/tutorial-step-7.wiki create mode 100644 documentation/20.05/solutions/platform-specifics/microsoft-windows/wel/wel-tutorial/tutorial-step-8.wiki create mode 100644 documentation/20.05/solutions/porting-instructions/index.wiki create mode 100644 documentation/20.05/solutions/porting-instructions/porting-eiffel-application-unix-windows-or-vice-versa.wiki create mode 100644 documentation/20.05/solutions/preferences/eiffelpreferences/eiffelpreferences-class-reference.wiki create mode 100644 documentation/20.05/solutions/preferences/eiffelpreferences/eiffelpreferences-sample.wiki create mode 100644 documentation/20.05/solutions/preferences/eiffelpreferences/eiffelpreferences-tutorial/index.wiki create mode 100644 documentation/20.05/solutions/preferences/eiffelpreferences/eiffelpreferences-tutorial/initialization.wiki create mode 100644 documentation/20.05/solutions/preferences/eiffelpreferences/eiffelpreferences-tutorial/interface-preferences.wiki create mode 100644 documentation/20.05/solutions/preferences/eiffelpreferences/eiffelpreferences-tutorial/overview.wiki create mode 100644 documentation/20.05/solutions/preferences/eiffelpreferences/index.wiki create mode 100644 documentation/20.05/solutions/preferences/index.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffellex/eiffellex-class-reference.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffellex/eiffellex-sample/eiffel-scanner/eiffel-scan-console-input.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffellex/eiffellex-sample/eiffel-scanner/eiffel-scan-console-output.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffellex/eiffellex-sample/eiffel-scanner/eiffel-scan-text.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffellex/eiffellex-sample/eiffel-scanner/eiffellex-samples.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffellex/eiffellex-sample/eiffel-scanner/index.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffellex/eiffellex-sample/index.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffellex/eiffellex-tutorial.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffellex/index.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffelparse/eiffelparse-class-reference.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffelparse/eiffelparse-tutorial.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffelparse/index.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffelparse/parse-sample/eiffel-polynomial-parser.wiki create mode 100644 documentation/20.05/solutions/text-processing/eiffelparse/parse-sample/index.wiki create mode 100644 documentation/20.05/solutions/text-processing/index.wiki create mode 100644 documentation/20.05/solutions/web-technology/EiffelWeb-framework.wiki create mode 100644 documentation/20.05/solutions/web-technology/eiffelweb/eiffelweb-class-reference.wiki create mode 100644 documentation/20.05/solutions/web-technology/eiffelweb/eiffelweb-sample/eiffelweb-basic-sample.wiki create mode 100644 documentation/20.05/solutions/web-technology/eiffelweb/eiffelweb-sample/index.wiki create mode 100644 documentation/20.05/solutions/web-technology/eiffelweb/eiffelweb-tutorial/eiffelweb-content-introduction.wiki create mode 100644 documentation/20.05/solutions/web-technology/eiffelweb/eiffelweb-tutorial/index.wiki create mode 100644 documentation/20.05/solutions/web-technology/eiffelweb/eiffelweb-tutorial/processing-requests.wiki create mode 100644 documentation/20.05/solutions/web-technology/eiffelweb/index.wiki create mode 100644 documentation/20.05/solutions/web-technology/index.wiki diff --git a/documentation/20.05/_images/Definition_icon_2.png b/documentation/20.05/_images/Definition_icon_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7fadf8484bb48703a343273ccb5711c84ba7b4 GIT binary patch literal 1098 zcmV-Q1hxB#P)ibB9fi=bEqZLO^YOG~S^X3ZwuWV1i+o#Qum zH|fqb(TCEz%+B01_x$+2bLI?-2;Iv^-Am)nwn;mfnwo;s=P-saderc6prXjAIMx_S z1p%|QN?FUw=2_)26J07FI<%vew)HOur$4)KW@PiR31+cMlZ{$ziOFUR29X7umYD=U z3u2Q!n9oZz_6&?&_+JNMSlvAr-3p%Az2#F8d*I1!_uX7isatmH{T3p>aG7XFw|H$0 zc-;?20|QNi2w%K<@yogHosHH&6tNzAYs3BSDw_W4QnkJ~KQjFA===-6zBaKU_4mL> z9}9g51CcO~fuY&R&P~d`pPSAo5L7YcC_dk_ULMj2V%ryLesA%S26P zezR06>Ey%CU&;s~p~whIGhbay?RBfs6&4oZSWaKQy zy5$`7_vbu4?*&{&XavTcu7}pXG|8aaAiQEg8!^}s|zXJ#WoY znpy*Bux1eB>YiJWqw-vW`TnpFK31>A+n?PzbY<0+hhSCc=9l)2PJRDN8Pw8IM1}?^ z1_m>T$Th<{)^!&h$`lt49Er?=y4gH0{f+B(&D4en*1ovQg~!)j+FDorAN9??K>mAy QS^xk507*qoM6N<$f+>3oY5)KL literal 0 HcmV?d00001 diff --git a/documentation/20.05/_images/Definition_icon_2.png.data b/documentation/20.05/_images/Definition_icon_2.png.data new file mode 100644 index 00000000..d9e07682 --- /dev/null +++ b/documentation/20.05/_images/Definition_icon_2.png.data @@ -0,0 +1,3 @@ +title=LogoDefinition +author=halw +path=content/logodefinition diff --git a/documentation/20.05/_images/LogoBeta.png b/documentation/20.05/_images/LogoBeta.png new file mode 100644 index 0000000000000000000000000000000000000000..057d5bd175d1af10b176dd01b822f7b4f9e94b42 GIT binary patch literal 1127 zcmV-t1ep7YP)LTqu5j zfS?5x@uC+NysF+8!OuTX!8@-+L|Q0lC{aNRg2gHYTiP_(q#8HaVr@YL~HwH`)s%+G`*Ky&5kp~B)6ce6-$SaIDwO1 z$=YplOGsbB6@%{2I6dm@O#E@9O|8DGyqlD{mTnj8_17*{akUf zp$+y|OCs359rO2b4JZPefPf?$H6yZV@3kq%>-`K{oYT5GQ@J#G9s&8Ne6E@VI^MSY zz|lRN2LgblW69h#o17_)J1ERcBX&bbqnD^GmcCZ{hmZvy5d-6N1W^N!=> z55mzj-MV?PYsV*#`hBl_D5cY(Re3R7nK@NmID7`hW4$eT2s=5Zadw6x`7zlu06aK~ zaZ{_m&sMJ;KEHBd*K1+rr<2m{9?JE-{8rCHSKa|1?*d5^V%Vk<8wtqH`;Qg1a7SZ$ z>|A+f4t7p7|BP1uc>6R@H`knwp?$#vAC1!lNNSt8%~=7X3J=HI{OSbi9|vev4X+pb{xrAmfQ^XM$}A29eN74c!c?DKW3OtnC3H6XAC zP6V>&U%L4T2D3%YrOW7&`udw+++`N=3oB~{wxcLdHyZzm&8v+rvB3Lig)WD{(ZK5VdP`C=jlN=80%M+vo}=j=YK)Q ztSu33-d?^#>?vf{(_etO_yh?VBm$~2&kYvp_BYD_A2gCO*pkpDNM3LE6ye;O$4-iY zH}b;qO^x9I;vXnr%fPxakOb*WDMkScE1=R}V9s&(mZSS%#Pd3;)vq6)MqHm zM%xNmQ9EAu3xulwRnpQqqN8$0)Lev9omo-b)|;g1QgECGi3#Ix{*&9A%yZ7n`7-if tsT1HI2yK3W6=8<96j@@D+C*5+=s(sdo-i>leW(Bc002ovPDHLkV1jNM7c2k( literal 0 HcmV?d00001 diff --git a/documentation/20.05/_images/LogoBeta.png.data b/documentation/20.05/_images/LogoBeta.png.data new file mode 100644 index 00000000..98777939 --- /dev/null +++ b/documentation/20.05/_images/LogoBeta.png.data @@ -0,0 +1,3 @@ +title=LogoBeta +author=halw +path=content/logobeta diff --git a/documentation/20.05/_images/LogoUpdateNeeded.png b/documentation/20.05/_images/LogoUpdateNeeded.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c8a89debca04c78f5a6417b1f6ca19c5b7906d GIT binary patch literal 1465 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 V(8dw3EQA06002ovPDHLkV1l_we1HG| literal 0 HcmV?d00001 diff --git a/documentation/20.05/_images/tpl_Warning.png.data b/documentation/20.05/_images/tpl_Warning.png.data new file mode 100644 index 00000000..2c804c09 --- /dev/null +++ b/documentation/20.05/_images/tpl_Warning.png.data @@ -0,0 +1,3 @@ +title=LogoWarning +author=admin +path=content/logowarning diff --git a/documentation/20.05/_others/community/index.wiki b/documentation/20.05/_others/community/index.wiki new file mode 100644 index 00000000..777cb81f --- /dev/null +++ b/documentation/20.05/_others/community/index.wiki @@ -0,0 +1,116 @@ +[[Property:title|Community]] +[[Property:description|Members of the Eiffel community can contribute to this documentation through this book]] +[[Property:weight|15]] +[[Property:uuid|75c75712-7c3e-2757-51b7-77b404471e2e]] +=You can become a contributor!= + +Eiffel is a community. Members of the Eiffel community can contribute to this documentation through this book. + +EiffelStudio documentation is available in a convenient Wiki format. This makes it possible to improve the documentation continuously and make sure it is always up to date. + +Community input is welcome. + +==Using the Comments pages== + +Each documentation page has an associated '''Comments''' page. Any viewer can add comments to a Comments page. These comments are periodically reviewed and appropriate content is "published," that is, made visible to the community. + +===Guidelines for Comments pages=== + +#The '''Comments''' pages are intended to be used to record and communicate issues concerning the documentation. Use Comments pages to post comments which report problems with the documentation or which suggest improvements to the documentation. +# '''Any material you add to this site becomes the property of Eiffel Software, and may be shared with the community.''' +# Comments pages should ''not'' be used for product support questions, product feature requests, or bug reports. ''Comments of this sort will be deleted.'' For help with products join the [http://groups.eiffel.com Eiffel Software User Group] and use the resources at the [http://community.eiffel.com Eiffel Community site]. + +===Comment lifecycle=== + +Although the procedure for how editors deal with comments is flexible, some general guidelines can be given: + +# For comments requesting action (e. g., fix a problem, add more information): +## For those actions which can be accomplished immediately: +### The comment will not be published. +### The requested action will be fixed. +### The original comment's subject line will be prepended with "FIXED". +## For those actions which cannot be accomplished quickly or require special handling: +### The comment will be published +### A response to the comment will be made via "reply", and +#### The original comment's subject line will be prepended with: +##### FIXED, if and when the request can be satisfied. +##### ANALYZED, otherwise, plus explanation of delaying or not acting on request. +## For actions affecting docs.eiffel.com plus the Eiffel distribution: +### Submit a problem report requesting feedback when problem is fixed so that docs.eiffel.com can be updated in kind. +# For comments not requesting action, but adding relevant information related to the page: +## The comment will be published. +## If appropriate: +### The content of the comment will be integrated into the page. +### The original comment's subject line prepended with FIXED. +# Periodically, an audit will remove older comments marked as FIXED and ANALYZED. + +==Contributors and Editors== + +If you are interested in a more active role in improving and developing EiffelStudio documentation, you can become: + +* A contributor: authorized to edit existing pages to any book, and to add pages to the "Community" book. +**"Community" book pages can be added to other books by an editor. + +* An editor: authorized to modify and add pages in any book. + +To become a contributor, you should be proficient in Eiffel technology and have good written English skills. To become an editor, you should already be a contributor and have contributed significant improvements or additions to the documentation. + +If you are interested in becoming a contributor, you can [[path:user/register|register]] for an account, and then please [[path:contact|contact us]] with a short description of your Eiffel experience and any other relevant background. + +===Guidelines for contributors=== + +# '''Entering log messages:''' When you change pages in the documentation, it can help sometimes if you can provide an explanation of your intent in the '''Log message''' box on the '''Edit''' page. This can eliminate confusion about why things have been changed. Of course, it is not necessary to provide a log message for every change. For fixing typographical errors or other simple changes, it generally would not be necessary, but putting a single lowercase '''"m"''' in the '''Log message''' field will convey the message that this was a minor update. If you are evolving new pages or a complex set of related changes to one or more pages, it should suffice to enter a single log message at the beginning of the series of edits. Use common sense here. +#* In cases in which a change is directly related to an external document or policy, it may be helpful to mention the impetus in the log message. For example, documentation changes made to satisfy Eiffel Software problem reports should reference the report in the log message. +# '''Renaming pages or moving pages to Trash:''' Before you rename a page or move it to the Trash, you should use the '''References''' tab to make certain that there are no current references to the page. If there are, make sure you resolve those references before renaming or moving the page. +# '''Replacing pages:''' If you need to replace a page completely, do so by replacing the '''content''' of the existing page, rather than moving the page to the Trash and creating a new page in its place. Replacing the content will leave the original page (and its UUID) in place, but with the new content. UUID's are used by the [[Eiffel Information System]] (EIS) to link EiffelStudio to documentation pages, and will be broken if the original page were to be deleted. +# '''Using templates:''' +## There are several "templates" available for use within the text of documentation pages. For example, "Note", "SeeAlso", "Rule", "Definition", "Caution". You can click on "List templates" in the left margin to see the list of available templates. +## While developing new pages or make significant changes to existing pages you may want to mark the tops of these pages temporarily with certain templates during the development process. The "top-of-the-page" templates most useful during page maintenance are Beta, ReviewRequested, UnderConstruction, and UpdateNeeded. The meanings of these are described below. + +==="Top-of-the-page" Documentation template meanings=== + +====Beta==== + +Looks like this: + +{{Beta}} + +Means this: + +:''Use this page with caution. This page is currently under development as a new page or a replacement for a previously existing page. It may contain information which describes capabilities not yet implemented. Avoid linking to this page. When this page comes out of beta, it is likely that the name and/or UUID of this page will change.'' + + +====ReviewRequested==== + +Looks like this: + +{{ReviewRequested}} + +Means this: + +:''The material on this page needs to be reviewed for completeness and accuracy. If you have knowledge of this material, please review this page. If you are a [[Community|contributor]], feel free to make any appropriate additions and/or corrections, then remove this template. If not, you can note improvements on the [[Community#Using the Comments pages|comments]] page.'' + + +====UnderConstruction==== + +Looks like this: + +{{UnderConstruction}} + +Means this: + +:''Use this page with caution. This page is currently under development. It is likely that the information on this page is still incomplete. '' + + +====UpdateNeeded==== + +Looks like this: + +{{UpdateNeeded}} + +Means this: + +:''Use this page with caution. This page has been identified as needing update. If you are a [[Community|contributor]], you can help by updating this page so that the information on it is current.'' + + + diff --git a/documentation/20.05/_others/draft/index.wiki b/documentation/20.05/_others/draft/index.wiki new file mode 100644 index 00000000..761f5714 --- /dev/null +++ b/documentation/20.05/_others/draft/index.wiki @@ -0,0 +1,5 @@ +[[Property:title|Draft]] +[[Property:weight|99]] +[[Property:uuid|c277e707-67a0-14a2-099e-5b861f2480ad]] + + diff --git a/documentation/20.05/_others/draft/multiple-inheritance.wiki b/documentation/20.05/_others/draft/multiple-inheritance.wiki new file mode 100644 index 00000000..bd7ff4a8 --- /dev/null +++ b/documentation/20.05/_others/draft/multiple-inheritance.wiki @@ -0,0 +1,49 @@ +[[Property:title|Multiple inheritance]] +[[Property:weight|0]] +[[Property:uuid|7f54afce-fd1d-fba7-7a55-f74604ea9846]] +

Multiple inheritance: definition

+ +Multiple inheritance is a mechanism for combining abstractions. It lets you define a class by extending or specializing two or more classes, not just one as in single inheritance. For example you might define a multi_function printer as the combination of a printer and a scanner. + +Multiple inheritance sometimes has the reputation of being complicated or even messy, but there is no such problem in Eiffel. "Name clashes", for example, are not a big deal: if classes A and B both have a feature with the same name f and class C inherits from both, you can either specify that they should be merged, or keep them separate through the rename mechanism. Details below. + +

Multiple inheritance basics

+ +Multiple inheritance happens as soon as you list more than one class in the inherit clause at the beginning of a class. For example: + + + class PRINTER feature + ... Here the features specific to printers ... + end + + class SCANNER feature + ... Here the features specific to scanners ... + end + + class MULTI_FUNCTION_PRINTER inherit + PRINTER + SCANNER + feature + ... Here the features specific to printer-scanners ... + end + + +As with single inheritance, the new class has access to the parent features, except that here they are features of two different parents. For example if PRINTER has feature and SCANNER has features scan and scanned, then the feature clause of SCANNER can include + + + scan_and_print + -- Scan a page and print it. + do + scan -- Leaves result of scan in `scanned' + print (scanned) + end + + + + + + + + + + diff --git a/documentation/20.05/_others/draft/test-page.wiki b/documentation/20.05/_others/draft/test-page.wiki new file mode 100644 index 00000000..a3f103ff --- /dev/null +++ b/documentation/20.05/_others/draft/test-page.wiki @@ -0,0 +1,5 @@ +[[Property:title|Test page]] +[[Property:weight|0]] +[[Property:uuid|6dc09e0f-b713-8c5b-799f-36a60264e8f8]] +Test page for Book "Draft" + diff --git a/documentation/20.05/_others/guide/_images/static_documentation_page_0.png b/documentation/20.05/_others/guide/_images/static_documentation_page_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f9218e4b20cd6fe1e43fafb99203bc5983daf4 GIT binary patch literal 60050 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

m`(oDC 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�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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/_others/guide/_images/static_documentation_page_0.png.data b/documentation/20.05/_others/guide/_images/static_documentation_page_0.png.data new file mode 100644 index 00000000..1a8c9a7b --- /dev/null +++ b/documentation/20.05/_others/guide/_images/static_documentation_page_0.png.data @@ -0,0 +1,3 @@ +title=static documentation page +author=halw +path=content/static-documentation-page diff --git a/documentation/20.05/_others/guide/index.wiki b/documentation/20.05/_others/guide/index.wiki new file mode 100644 index 00000000..30c5a797 --- /dev/null +++ b/documentation/20.05/_others/guide/index.wiki @@ -0,0 +1,186 @@ +[[Property:title|Guide]] +[[Property:description|Central repository of information about Eiffel and the products and technologies of Eiffel Software]] +[[Property:link_title|Information Guide]] +[[Property:weight|10]] +[[Property:uuid|68b37685-64e9-f564-9258-29e709a55f44]] +'''Guide to Eiffel Information''' + +These pages are the central repository of information about Eiffel and the products and technologies of Eiffel Software. They cover the online documentation, but also link to many valuable resources outside the documentation set. + +If you are interested in [[Learning Eiffel|learning Eiffel, there is a list of resources]] dedicated to that purpose. + +The online documentation is organized into virtual books. Each book covers an important aspect of the world of Eiffel. For cases in which it is not always possible to use the online version of the documentation, all or selected parts of the documentation set can be [[Offline use of the Eiffel documentation|downloaded for offline use]]. + +* [[Guide]] -- Guide to Eiffel Information +* [[EiffelStudio]] -- The EiffelStudio Interactive Development Environment +* [[Solutions]] -- Eiffel Solutions, Technologies, and Class Libraries +* [[Platform specifics]] -- Specific support for particular platforms, e.g., Microsoft Windows +* [[Method|Method and Language]] -- The Eiffel Method and Language +* [[Why Eiffel?]] -- Why Eiffel? +* [[Papers]] -- Technical and position papers relating to Eiffel and the engineering of high quality software +* [[Examples]] -- Contributor supported examples of Eiffel solutions to common programming problems +* [[Community]] -- Community Contributions + +Sources of information on Eiffel include: + +==Books in the Eiffel Documentation== +---- + +===[[Guide]] -- Guide to Eiffel Information=== + +:You are reading this book now. + +===[[EiffelStudio]] -- The EiffelStudio Interactive Development Environment=== + +:Information about installing and using EiffelStudio + +===[[Solutions]] -- Eiffel Solutions, Technologies, and Class Libraries=== + +:Technologies available with Eiffel provide solutions to many ordinary development needs ... and some extraordinary needs too. This book addresses these requirements and the Eiffel technologies that satisfy them. + +===[[Platform specifics]] -- Support for particular operating systems=== + +:Although most Eiffel technology is completely platform-independent, Eiffel also provides important platform-specific solutions, described in this book. + +===[[Method|Method and Language]] -- The Eiffel Method and Language=== + +:Materials promoting the understanding of the Eiffel software development method and the Eiffel programming language. + +===[[Why Eiffel?]] -- Why Eiffel? === + +:A summary of the arguments for using Eiffel. + +===[[Papers]] -- Technical and position papers relating to Eiffel=== + +:This book is a place for white papers which provide background, foundation, or supplemental information about the the Eiffel method and language as well as the goal of engineering high quality software. + +===[[Examples]] -- Contributor supported examples of Eiffel solutions to common programming problems=== + +:Let's build a set of examples that can be shared on popular WWW program chrestomathies. + +===[[Community]] -- You can contribute to the documentation!=== + +:EiffelStudio documentation is available in a convenient Wiki format. This makes it possible to improve the documentation continuously and make sure it is always up to date. + + + +'''Community input''' is welcome. If you are interested in improving and developing EiffelStudio documentation, you can become a ''contributor'' or ''editor'': + +* Contributors can edit existing pages in any book and add pages to Community Contributions books. + +* Editors can modify and add pages in any book (including adding Community Contribution pages to an existing book). + +To become a contributor, you should be proficient in Eiffel technology and have good written English skills. To become an editor, you should already have made significant improvements or additions as a contributor. + +If you are interested in becoming a contributor, please send an email to info@eiffel.com with a short description of your Eiffel experience and any other relevant background. We look forward to your contributions! + + + +---- + +==Other sources of information on Eiffel== + +---- + + +===The [http://eiffel.com Eiffel.com] website=== + +Eiffel Software's website [http://eiffel.com Eiffel.com] contains an enormous amount of information about Eiffel. There are product descriptions, special pages for developers and their managers, case studies and testimonials, the latest Eiffel news, and much more. + + +---- + +===[http://eiffel.com/developers/presentations/ Web Presentations] on Eiffel.com=== + +Learn quickly about Eiffel and the things that help make it special, like Design by Contract and EiffelStudio. Learn how Eiffel fits in with and compares to other popular technologies. All this and more is available on the [http://eiffel.com/developers/presentations/ presentations page] on Eiffel.com. + + +---- + +===[http://eiffel.com/developers/learning_maps/ Learning Maps] on Eiffel.com=== + +Get an in-depth view of topics by navigating the [http://eiffel.com/developers/learning_maps/ Eiffel Learning Maps]. Learning maps represent knowledge as a network of interrelated concepts. Attached to the concepts you may find links to additional resources. These resources can be just about anything. You'll find plain text files, web pages, screen shots, and even Eiffel Learnlets. Learnlets are small units of learning in web presentation form that are designed to take no more than 30 minutes to view ... just right for your lunch break. + + +---- + +===The [http://www.eiffelroom.com/ EiffelRoom] Website=== + +[http://www.eiffelroom.com/ EiffelRoom] is an Eiffel community website on which Eiffel developers from across the globe come together and share their experiences ... and their products. You'll find how-to articles, tips and tricks, example code, whole libraries of EIffel classes, and specialized products. It is easy to contribute to EiffelRoom and start giving back to the community. + + +---- + +===The Eiffel Software User Group=== + +The Eiffel Software Users' Group is a focus group for those who use the products of Eiffel Software. Its primary communication vehicle is a [http://groups.eiffel.com/ collaborative discussion group]. The group mailing list is monitored by Eiffel Software developers and many highly experienced Eiffel programmers. So if you have questions or comments about Eiffel Software products, this is a good place to be. + + +---- + +===The EiffelWorld Newsletter=== + +A few times a year, we send out an email newsletter containing announcements of new versions of products, upcoming events, newly added technologies, website changes, editorials, and contributions from the community. To subscribe send a request to [mailto:info@eiffel.com info@eiffel.com]. + + +---- + +===[[Object-Oriented Software Construction, 2nd Edition]]=== + +There is no better place to gain an in-depth understanding of the Eiffel software development method than [[Object-Oriented Software Construction, 2nd Edition]], by Bertrand Meyer, published by Prentice Hall. It is the world's most complete guide to building great object-oriented software. + + +---- + +===Other [[Books about the Eiffel Method and Language|books about the Eiffel Method and Language]]=== + + +---- + +===The Standard: ''Eiffel: Analysis, Design, and Programming Language''=== + +Eiffel has been standardized under ISO and ECMA. The comprehensive description of the standard Eiffel programming language is presented in [http://www.ecma-international.org/publications/standards/Ecma-367.htm Standard ECMA-367]. + + + +---- + +===Contribute to Eiffel=== + +You can help Eiffel by contributing your time, expertise, and products. Here are some websites that you can visit to see what's up with the development of Eiffel Software products. + +====[http://dev.eiffel.com dev.eiffel.com]==== + +:This [http://dev.eiffel.com wiki site] is the hub of development activity for the EiffelStudio interactive development environment. Even if you do not plan to contribute, dev.eiffel.com is a valuable source of information concerning where EiffelStudio is going ... and, if you're curious, where it has been. + +====[http://eiffelstudio.origo.ethz.ch/ EiffelStudio on Origo]==== + +:[http://eiffelstudio.origo.ethz.ch/ EiffelStudio on Origo] contains blogs and forums focusing on Eiffel and EiffelStudio topics. + + + + + +---- + +==[[uuid:b8c10baa-4f50-adfe-a6f8-9cb56a8f1917|Glossary of Object Technology]]== + +---- + + +This is a relatively comprehensive glossary of terms used in Object-Oriented Analysis, Design, and programming, but are not specific to the Eiffel Language, since object-oriented principles can be applied to any programming language. It contains all the terms from the glossary in [[Object-Oriented Software Construction, 2nd Edition]], plus others used in this website, added for clarity and ease of reference. + +This glossary is useful all by itself, since a review of it can serve as a refresher (in case you have been away from Object Technology for a while). It is used in this website to assist the reader by providing easy links to technical terms that are used throughout the website. + +Additionally, it is possible to link to terms in this glossary from other websites by using links that look like this: + +:http://docs.eiffel.com/book/guide/glossary-object-technology#Attribute + +or a version that will survive the page being moved: + +:http://docs.eiffel.com/isedoc/uuid/b8c10baa-4f50-adfe-a6f8-9cb56a8f1917#Attribute + +Note that the anchor (the part after the "#") has to be spelled and capitalized exactly like the term on the page. (Use underscore characters to replace spaces.) + +---- + diff --git a/documentation/20.05/_others/guide/offline-use-eiffel-documentation.wiki b/documentation/20.05/_others/guide/offline-use-eiffel-documentation.wiki new file mode 100644 index 00000000..8dd50e01 --- /dev/null +++ b/documentation/20.05/_others/guide/offline-use-eiffel-documentation.wiki @@ -0,0 +1,30 @@ +[[Property:title|Offline use of the Eiffel Documentation]] +[[Property:link_title|Download Documentation]] +[[Property:weight|0]] +[[Property:uuid|e5f003f6-c732-c648-fd67-91f6642130f0]] +It is possible to download the books of the Eiffel online documentation for viewing offline with a web browser. + +To do this you use a [http://docs.eiffel.com/static/ web page] which has links to downloadable files that contain copies of the documentation in different forms and quantities. + + +[[Image:static documentation page|Downloadable documentation]] + + +The files are ".7z" files, meaning that they are compressed archives in [http://www.7-zip.org 7-zip] format. So, you can use any 7-zip compatible expander to unpack the files. + +You'll notice that the options for downloading come in three groups: + +# HTML: Multiple pages per book. +# HTML: One big page per book. +# WikiText+meta: raw files containing wikitext (backup) + +You should choose your files from one of the HTML options (the WikiText option is used for backup). + +It is possible also to download one documentation "book" at a time, or to download all books in one archive. + +The files are static copies of the content of the online documentation, as reflected by the dates shown on the web page. + + + + + diff --git a/documentation/20.05/_others/why-eiffel/index.wiki b/documentation/20.05/_others/why-eiffel/index.wiki new file mode 100644 index 00000000..e7653e7b --- /dev/null +++ b/documentation/20.05/_others/why-eiffel/index.wiki @@ -0,0 +1,11 @@ +[[Property:title|Why Eiffel?]] +[[Property:description|arguments for using Eiffel]] +[[Property:weight|11]] +[[Property:uuid|df007537-c0dd-2ea6-233b-764ad483eb65]] +This book collects arguments for using Eiffel. + +Even though we in the Eiffel community know that Eiffel is the most advanced object-oriented software development framework on this planet, that fact may not be so obvious to everyone else. Consequently, we felt that it would be helpful to provide some brief documents that spell out the reasons why the people who have chosen Eiffel have been so successful. + +You may find the information helpful if you are simply curious about Eiffel, if you are actively looking for a better development framework, or if you are busy trying to convince others to try Eiffel. + + diff --git a/documentation/20.05/_templates/Beta.tpl b/documentation/20.05/_templates/Beta.tpl new file mode 100644 index 00000000..e32b4e94 --- /dev/null +++ b/documentation/20.05/_templates/Beta.tpl @@ -0,0 +1 @@ +

[[Image:LogoBeta|24px]] '''Beta documentation:''' [[How to contribute to documentation#Beta|see definition]].

diff --git a/documentation/20.05/_templates/Beta.tpl.data b/documentation/20.05/_templates/Beta.tpl.data new file mode 100644 index 00000000..fd45de21 --- /dev/null +++ b/documentation/20.05/_templates/Beta.tpl.data @@ -0,0 +1,3 @@ +title=Beta +author=vwheeler +path=content/beta diff --git a/documentation/20.05/_templates/Caution.tpl b/documentation/20.05/_templates/Caution.tpl new file mode 100644 index 00000000..d716bdad --- /dev/null +++ b/documentation/20.05/_templates/Caution.tpl @@ -0,0 +1,2 @@ +

[[Image:LogoWarning|24px]] '''Caution:''' {{{1}}}

+ diff --git a/documentation/20.05/_templates/Caution.tpl.data b/documentation/20.05/_templates/Caution.tpl.data new file mode 100644 index 00000000..f41bf645 --- /dev/null +++ b/documentation/20.05/_templates/Caution.tpl.data @@ -0,0 +1,3 @@ +title=Caution +author=admin +path=content/caution-0 diff --git a/documentation/20.05/_templates/Info.tpl b/documentation/20.05/_templates/Info.tpl new file mode 100644 index 00000000..3c38d64f --- /dev/null +++ b/documentation/20.05/_templates/Info.tpl @@ -0,0 +1 @@ +

[[Image:LogoInformation|24px]] '''Info: '''{{{1}}}

diff --git a/documentation/20.05/_templates/Info.tpl.data b/documentation/20.05/_templates/Info.tpl.data new file mode 100644 index 00000000..dc6791fd --- /dev/null +++ b/documentation/20.05/_templates/Info.tpl.data @@ -0,0 +1,3 @@ +title=Info +author=admin +path=content/info diff --git a/documentation/20.05/_templates/Inline-Error.tpl b/documentation/20.05/_templates/Inline-Error.tpl new file mode 100644 index 00000000..64076adc --- /dev/null +++ b/documentation/20.05/_templates/Inline-Error.tpl @@ -0,0 +1 @@ +{{{1}}} diff --git a/documentation/20.05/_templates/Inline-Info.tpl b/documentation/20.05/_templates/Inline-Info.tpl new file mode 100644 index 00000000..a32c6bbd --- /dev/null +++ b/documentation/20.05/_templates/Inline-Info.tpl @@ -0,0 +1 @@ +{{{1}}} diff --git a/documentation/20.05/_templates/Inline-Success.tpl b/documentation/20.05/_templates/Inline-Success.tpl new file mode 100644 index 00000000..0351750e --- /dev/null +++ b/documentation/20.05/_templates/Inline-Success.tpl @@ -0,0 +1 @@ +{{{1}}} diff --git a/documentation/20.05/_templates/Inline-Warning.tpl b/documentation/20.05/_templates/Inline-Warning.tpl new file mode 100644 index 00000000..1a097523 --- /dev/null +++ b/documentation/20.05/_templates/Inline-Warning.tpl @@ -0,0 +1 @@ +{{{1}}} diff --git a/documentation/20.05/_templates/Key.tpl b/documentation/20.05/_templates/Key.tpl new file mode 100644 index 00000000..b0eece42 --- /dev/null +++ b/documentation/20.05/_templates/Key.tpl @@ -0,0 +1 @@ +{{{1}}} diff --git a/documentation/20.05/_templates/Key.tpl.data b/documentation/20.05/_templates/Key.tpl.data new file mode 100644 index 00000000..d26a2509 --- /dev/null +++ b/documentation/20.05/_templates/Key.tpl.data @@ -0,0 +1,3 @@ +title=Key +author=admin +path=content/key diff --git a/documentation/20.05/_templates/Note.tpl b/documentation/20.05/_templates/Note.tpl new file mode 100644 index 00000000..1b00b242 --- /dev/null +++ b/documentation/20.05/_templates/Note.tpl @@ -0,0 +1 @@ +

[[Image:LogoInformation|24px]] '''Note: '''{{{1}}}

diff --git a/documentation/20.05/_templates/Note.tpl.data b/documentation/20.05/_templates/Note.tpl.data new file mode 100644 index 00000000..855e9265 --- /dev/null +++ b/documentation/20.05/_templates/Note.tpl.data @@ -0,0 +1,3 @@ +title=Note +author=admin +path=content/note diff --git a/documentation/20.05/_templates/Recommended.tpl b/documentation/20.05/_templates/Recommended.tpl new file mode 100644 index 00000000..43521ac7 --- /dev/null +++ b/documentation/20.05/_templates/Recommended.tpl @@ -0,0 +1 @@ + diff --git a/documentation/20.05/_templates/Recommended.tpl.data b/documentation/20.05/_templates/Recommended.tpl.data new file mode 100644 index 00000000..9b7bf199 --- /dev/null +++ b/documentation/20.05/_templates/Recommended.tpl.data @@ -0,0 +1,3 @@ +title=Recommended +author=admin +path=content/recommended diff --git a/documentation/20.05/_templates/ReviewRequested.tpl b/documentation/20.05/_templates/ReviewRequested.tpl new file mode 100644 index 00000000..c927b85c --- /dev/null +++ b/documentation/20.05/_templates/ReviewRequested.tpl @@ -0,0 +1 @@ +

[[Image:LogoReviewRequested|24px]] '''Review requested: ''' [[How to contribute to documentation#ReviewRequested|see definition]].

diff --git a/documentation/20.05/_templates/ReviewRequested.tpl.data b/documentation/20.05/_templates/ReviewRequested.tpl.data new file mode 100644 index 00000000..89fcc23e --- /dev/null +++ b/documentation/20.05/_templates/ReviewRequested.tpl.data @@ -0,0 +1,3 @@ +title=ReviewRequested +author=vwheeler +path=content/reviewrequested diff --git a/documentation/20.05/_templates/Rule.tpl b/documentation/20.05/_templates/Rule.tpl new file mode 100644 index 00000000..5a2ab11a --- /dev/null +++ b/documentation/20.05/_templates/Rule.tpl @@ -0,0 +1 @@ +

[[Image:LogoRule|24px]] '''Rule -- {{{name}}}:''' {{{text}}}

diff --git a/documentation/20.05/_templates/Rule.tpl.data b/documentation/20.05/_templates/Rule.tpl.data new file mode 100644 index 00000000..1eb02663 --- /dev/null +++ b/documentation/20.05/_templates/Rule.tpl.data @@ -0,0 +1,3 @@ +title=Rule +author=halw +path=content/rule diff --git a/documentation/20.05/_templates/Sample.tpl b/documentation/20.05/_templates/Sample.tpl new file mode 100644 index 00000000..cfb7647c --- /dev/null +++ b/documentation/20.05/_templates/Sample.tpl @@ -0,0 +1 @@ +

[[Image:LogoInformation|24px]] '''Sample:''' {{{1}}}

diff --git a/documentation/20.05/_templates/Sample.tpl.data b/documentation/20.05/_templates/Sample.tpl.data new file mode 100644 index 00000000..424705cd --- /dev/null +++ b/documentation/20.05/_templates/Sample.tpl.data @@ -0,0 +1,3 @@ +title=Sample +author=admin +path=content/sample diff --git a/documentation/20.05/_templates/SeeAlso.tpl b/documentation/20.05/_templates/SeeAlso.tpl new file mode 100644 index 00000000..5cae363f --- /dev/null +++ b/documentation/20.05/_templates/SeeAlso.tpl @@ -0,0 +1 @@ +

[[Image:LogoInformation|24px]] '''See Also:''' {{{1}}}

diff --git a/documentation/20.05/_templates/SeeAlso.tpl.data b/documentation/20.05/_templates/SeeAlso.tpl.data new file mode 100644 index 00000000..b6d7a6d1 --- /dev/null +++ b/documentation/20.05/_templates/SeeAlso.tpl.data @@ -0,0 +1,3 @@ +title=SeeAlso +author=admin +path=content/seealso diff --git a/documentation/20.05/_templates/Tip.tpl b/documentation/20.05/_templates/Tip.tpl new file mode 100644 index 00000000..fb97fb41 --- /dev/null +++ b/documentation/20.05/_templates/Tip.tpl @@ -0,0 +1 @@ +

[[Image:LogoInformation|24px]] '''Tip: '''{{{1}}}

diff --git a/documentation/20.05/_templates/Tip.tpl.data b/documentation/20.05/_templates/Tip.tpl.data new file mode 100644 index 00000000..b08eb551 --- /dev/null +++ b/documentation/20.05/_templates/Tip.tpl.data @@ -0,0 +1,3 @@ +title=Tip +author=admin +path=content/tip diff --git a/documentation/20.05/_templates/UnderConstruction.tpl b/documentation/20.05/_templates/UnderConstruction.tpl new file mode 100644 index 00000000..8690bef8 --- /dev/null +++ b/documentation/20.05/_templates/UnderConstruction.tpl @@ -0,0 +1 @@ +

[[Image:LogoConstruction|24px]] '''Under construction:''' [[How to contribute to documentation#UnderConstruction|see definition]].

diff --git a/documentation/20.05/_templates/UnderConstruction.tpl.data b/documentation/20.05/_templates/UnderConstruction.tpl.data new file mode 100644 index 00000000..03ee0be2 --- /dev/null +++ b/documentation/20.05/_templates/UnderConstruction.tpl.data @@ -0,0 +1,3 @@ +title=UnderConstruction +author=vwheeler +path=content/underconstruction diff --git a/documentation/20.05/_templates/UpdateNeeded.tpl b/documentation/20.05/_templates/UpdateNeeded.tpl new file mode 100644 index 00000000..67c6d834 --- /dev/null +++ b/documentation/20.05/_templates/UpdateNeeded.tpl @@ -0,0 +1 @@ +

[[Image:LogoUpdateNeeded|24px]] '''Update Needed:''' [[How to contribute to documentation#UpdateNeeded|see definition]].

diff --git a/documentation/20.05/_templates/UpdateNeeded.tpl.data b/documentation/20.05/_templates/UpdateNeeded.tpl.data new file mode 100644 index 00000000..ba14a901 --- /dev/null +++ b/documentation/20.05/_templates/UpdateNeeded.tpl.data @@ -0,0 +1,3 @@ +title=UpdateNeeded +author=vwheeler +path=content/updateneeded diff --git a/documentation/20.05/_templates/Warning.tpl b/documentation/20.05/_templates/Warning.tpl new file mode 100644 index 00000000..78c79dcd --- /dev/null +++ b/documentation/20.05/_templates/Warning.tpl @@ -0,0 +1 @@ +

[[Image:LogoWarning|24px]] '''Warning:''' {{{1}}}

diff --git a/documentation/20.05/_templates/Warning.tpl.data b/documentation/20.05/_templates/Warning.tpl.data new file mode 100644 index 00000000..fb2d9462 --- /dev/null +++ b/documentation/20.05/_templates/Warning.tpl.data @@ -0,0 +1,3 @@ +title=Warning +author=admin +path=content/warning diff --git a/documentation/20.05/_templates/definition.tpl b/documentation/20.05/_templates/definition.tpl new file mode 100644 index 00000000..b6ee693f --- /dev/null +++ b/documentation/20.05/_templates/definition.tpl @@ -0,0 +1 @@ +

[[Image:LogoDefinition|24px]] '''Definition -- {{{1}}}''': {{{2}}}

diff --git a/documentation/20.05/_templates/definition.tpl.data b/documentation/20.05/_templates/definition.tpl.data new file mode 100644 index 00000000..9990e7a0 --- /dev/null +++ b/documentation/20.05/_templates/definition.tpl.data @@ -0,0 +1,3 @@ +title=definition +author=halw +path=content/definition diff --git a/documentation/20.05/contribute/documentation.wiki b/documentation/20.05/contribute/documentation.wiki new file mode 100644 index 00000000..8ebcc5a1 --- /dev/null +++ b/documentation/20.05/contribute/documentation.wiki @@ -0,0 +1,44 @@ +[[Property:title|How to contribute to documentation]] +[[Property:link_title|To documentation]] +[[Property:weight|2]] +[[Property:uuid|A2DED192-B50A-4E59-B214-FDC3FEDC7A44]] + += Current documentation system = +* The documentation is written using wikitext syntax (similar to wikipedia). +* Each documentation page is stored in a wiki file on disk. +* Those files come from the subversion repository: [https://svn.eiffel.com/eiffel-org/trunk/documentation/trunk] . +* The outline of book are following the underlying directory structure, and each wiki file can have properties that hold metadata such as: + +[[Property:title|The page title]] +[[Property:link_title|short title]] +[[Property:weight|5]] + +** '''link_title''' is used to have a short title in menu, or various links. +** '''weight''' is used to order sibling pages (lower weight goes before, upper weight goes after). + += To contribute = +* First, you can post comment on any page (see comment form at the bottom of each page). +* As one would contribute to any source maintained on a subversion repository, one can contribute via the repository [https://svn.eiffel.com/eiffel-org/trunk/documentation/trunk/] and provide patch. +* Note there is also a git mirror at [https://github.com/eiffelsoftware/eiffel-org] so you can also contribute via github by sending pull request. + += Step by step with git = +* Go to [https://github.com/eiffelsoftware/eiffel-org] for the project, then git clone on your machine. +* create a git branch. +* add or edit the files locally. +* once you want to share your changes. +** git commit your changes. +** git push them to your github repository. +** then create a pull request so that the Eiffel.org documentation team can review and integrate the changes. +* See current pull requests at [https://github.com/EiffelSoftware/eiffel-org/pulls]. + += Step by step with subversion = +* svn checkout https://svn.eiffel.com/eiffel-org/trunk/documentation/trunk/. +* add or edit the files locally. +* once you want to share your changes. +** svn update. +** Send the patch via [https://codereview.appspot.com/]. (note: follow the instructions from codereview site, you will need to use a python script "upload.py" distributed by the codereview site). +* See current patches at [https://codereview.appspot.com/search?base=https://svn.eiffel.com/eiffel-org/trunk/documentation/trunk/]. + += Live editing on this site = +* If you are a trusted editor, you can edit the documentation directly. +* To be a trusted editor, please request it via the [https://www.eiffel.org/contact contact] page (do not forget to mention who you are and why you think you should be a trusted editor). diff --git a/documentation/20.05/contribute/editing_help.wiki b/documentation/20.05/contribute/editing_help.wiki new file mode 100644 index 00000000..dcf54b89 --- /dev/null +++ b/documentation/20.05/contribute/editing_help.wiki @@ -0,0 +1,123 @@ +[[Property:title|Help to edit documentation]] +[[Property:link_title|Editing help]] +[[Property:weight|3]] + += Wikitext syntax = +* Have a look at [https://en.wikipedia.org/wiki/Help:Wiki_markup Wikipedia markup] documentation. +* The current website does not support the full Wikipedia syntax, but still most of the needed cases. + +* To embed inline code: +** `` `foo.bar` `` +** `foo.bar` +** `foo.bar` + +* To embed block code: + +```xml + + class FOOBAR + +``` + +```xml + + class FOOBAR + +``` + + +```eiffel + class FOOBAR +``` + + +Note: if you do not specify the lang, it is defaulted to "eiffel" + + + += Templates = +== Top page templates == +Used to qualify the current page. + +=== ReviewRequested === +:{{ReviewRequested|This is a ReviewRequested message}} +{{ReviewRequested|This is a ReviewRequested message}} + +=== UnderConstruction === +:{{UnderConstruction|This is a UnderConstruction message}} +{{UnderConstruction|This is a UnderConstruction message}} + +=== UpdateNeeded === +:{{UpdateNeeded|This is a UpdateNeeded message}} +{{UpdateNeeded|This is a UpdateNeeded message}} + +=== Beta === +:{{Beta|This is a beta message}} +{{Beta|This is a beta message}} + + +== Block templates == +=== Caution === +:{{Caution|This is a caution message}} +{{Caution|This is a caution message}} + +=== Definition === +:{{Definition|abc|This is a Definition message}} +{{Definition|abc|This is a Definition message}} + +=== Info === +:{{Info|This is a Info message}} +{{Info|This is a Info message}} + + +=== Note === +:{{Note|This is a Note message}} +{{Note|This is a Note message}} + +=== Recommended === +:{{Recommended|This is a Recommended message}} +{{Recommended|This is a Recommended message}} + +=== Rule === +:{{Rule|name=abc|text=This is a Rule message}} +{{Rule|name=abc|text=This is a Rule message}} + +=== Sample === +:{{Sample|This is a Sample message}} +{{Sample|This is a Sample message}} + +=== SeeAlso === +:{{SeeAlso|This is a SeeAlso message}} +{{SeeAlso|This is a SeeAlso message}} + +=== Tip === +:{{Tip|This is a Tip message}} +{{Tip|This is a Tip message}} + +=== Warning === +:{{Warning|This is a Warning message}} +{{Warning|This is a Warning message}} + + +== Inline templates == + +=== Key === +:This is a {{Key|key message}} in the text. +This is a {{Key|key message}} in the text. + +=== Error === +:This is a {{Inline-Error|error message}} in the text. +This is a {{Inline-Error|error message}} in the text. + +=== Info === +:This is a {{Inline-Info|info message}} in the text. +This is a {{Inline-Info|info message}} in the text. + +=== Success === +:This is a {{Inline-Success|success message}} in the text. +This is a {{Inline-Success|success message}} in the text. + +=== Warning === +:This is a {{Inline-Warning|warning message}} in the text. +This is a {{Inline-Warning|warning message}} in the text. + diff --git a/documentation/20.05/contribute/index.wiki b/documentation/20.05/contribute/index.wiki new file mode 100644 index 00000000..afa682dc --- /dev/null +++ b/documentation/20.05/contribute/index.wiki @@ -0,0 +1,10 @@ +[[Property:title|How to contribute]] +[[Property:description|How to contribute]] +[[Property:link_title|Contribute]] +[[Property:weight|6]] +[[Property:uuid|56480505-4CD5-4C8A-AA3D-120FD573DFA9]] + += How to contribute to Eiffel ? = + +Check page [https://www.eiffel.org/contribute] . + diff --git a/documentation/20.05/eiffel/Coding_Standards/Eiffel-Code-Comments.wiki b/documentation/20.05/eiffel/Coding_Standards/Eiffel-Code-Comments.wiki new file mode 100644 index 00000000..7d8d85b0 --- /dev/null +++ b/documentation/20.05/eiffel/Coding_Standards/Eiffel-Code-Comments.wiki @@ -0,0 +1,155 @@ +[[Property:modification_date|Fri, 04 Jan 2019 15:06:26 GMT]] +[[Property:publication_date|Thu, 03 Jan 2019 18:00:43 GMT]] +[[Property:uuid|146E241E-C367-4F16-9CCE-6F11E5F7860A]] +[[Property:weight|1]] +[[Property:title|Eiffel Code Comments]] + +==Comment Mark Up == +The Eiffel compiler and EiffelStudio's code browsing tools support a special, light-weight mark up in comments and strings for referencing classes and features. EiffelStudio's code browsing tools use this mark up to better facilitate code navigation and browsing. In addition, marked up comments and strings will be examined and altered when performing a class or feature ''rename'' refactoring. + +===Syntax=== +The syntax for marking up classes and features is very compact, to ensure retained legibility. You'll see no need for XML or other types of verbose mark up found in other languages, which can impede the comment's very nature as a quick reference. + +To mark up a class reference, surround the class name in an open (` { `) and matching closing (` } `) brace: + + + -- See {DEBUG_OUTPUT} for more information. + + +To mark up a feature reference, implemented in the same class or parent, surround the name with two single back quotes (`` `...` ``): + + + -- See `debug_output` for more information. + + +The earlier convention, which you will still find in much existing code, used a single back quote for opening and a matching normal quote for closing, as in + + + -- See `debug_output' for more information. + + +The new convention, with back quotes both for opening and for closing, is the recommended one. + + +In the case where a reference to a feature is not accessible to the containing class directly, use a combination of the class reference mark up and a feature name, ''sans'' quotation marks: + + + -- See {DEBUG_OUTPUT}.debug_output for more information. + + +The rules that apply for comments, as described above, can also be utilized in any manifest or verbatim string: + + +note + description: "Augments searching facilities of {STRING_8}" + + +==Precursor Comments== + +{{Version|6.2}} + +Precursor comments declarations are a new mechanism added to EiffelStudio 6.2 to replicate a parent feature declaration's comments in the redefined/effective feature. The purpose of the mechanism is to reduce comment duplication, ease comment maintenance and facilitate augmentation. + +For the purpose of demonstration, take the following deferred interface: + +deferred class + BASE + +feature -- Query + + test (a_arg: INTEGER): BOOLEAN + -- Comments for a feature. + -- + -- `a_arg`: An integer value. + -- `Result`: Could be True or False. + deferred + end + +end + + +And effective implementation of it: + + +class + TEST + +inherit + BASE + +feature -- Query + + test (a_arg: INTEGER): BOOLEAN + -- + do + end + +end + + +TEST instead of replicating the comment makes use of the precursor comment declaration (-- ), which supporting code browsing tool will expand to show the precursor feature's contracts. The declaration is optional but is only supported for existing code out there that do not have comments due to lax implementation. Even though optional, it is strongly recommended that you use -- comment declaration, as it indicates to any reader the feature is a redefinition or effective implementation of a parent feature declaration. + +=== Comment Augmentation === +The precursor comments declaration also supports augmentation. All a comment author has to do is to write additional comments before and/or after the precursor comment declaration. As a requirement, the precursor comment declaration must appear on a separate line for no other purpose except for clarity. Failure to do so will results in the rendering of the comments as they are declared in the feature, i.e. with -- as is. + + +test (a_arg: INTEGER): BOOLEAN + -- Comments before the original comments from {BASE}. + -- + -- + -- + -- Some additional comments. + do + end + + +Using the code browsing facilities of [[EiffelStudio]] the reader will be presented with an expanded comment, for the effective version of feature test, that now read + + +-- Comments before the original comments from {BASE}. +-- +-- Comments for a feature. +-- +-- `a_arg`: An integer value. +-- `Result`: Could be True or False. +-- +-- Some additional comments. + + +For clarity it is a good idea to separate the agumented comments from the precursor comment declaration. Using the same example above but removing the one line spacing above and below the precursor comment declaration would results in the following, less readable comment: + + +-- Comments before the original comments from {BASE}. +-- Comments for a feature. +-- +-- `a_arg`: An integer value. +-- `Result`: Could be True or False. +-- Some additional comments. + + +However, that said, it is pure discretion to use additional spacing or not. Some situation do not call for, other do and some might (when the original comment changes.) + +=== Multiple Redefinitions and Selection === +With Eiffel supporting multiple inheritance, a scenario will arise where two inherited redefine features are joined in a descendant. + +By default the precursor comment declaration is replaced by the first located inherited feature comment, which may cause documentation irregularities. Because precursor comments are not signification to compilation they are not checked during compilation, such as is the way with the use of Precursor, resulting a compile time error when not selecting the parent class to call into. This can cause documentation irregularities because there is no guarantee that they feature comments viewed one project will be the same in another. + +To facilitate correct documentation the precursor comment declaration can use an optional select clause, just like using Precursor in the Eiffel code. + + +f (a_arg: INTEGER): BOOLEAN + -- + do + end + + +This will have exactly the same effect as using -- when f is made effective/redefined from a single parent. However, when making effective/redefining from multiple parents then comments will come from the parent class declaration in BASE. + +Again, because precursor comments do not affect compilation they are not checked at compile time. Specifying an incorrect class will yield a warning message in [[EiffelStudio]]'s code browsing tools, to the effect: + + +-- Unable to retrieve the comments from redefinition of {CLASS_NAME}. + + +=== Library Documentation Generation === +Precursor comments are supported in all code browsing/documentation facilities, whether is be the integrated [[Contract Viewer]], the [[Feature Relation Tool]] or the Eiffel documentation generation facilities. Using -- will ensure the comments are brought up from a parent declaration. diff --git a/documentation/20.05/eiffel/Coding_Standards/Eiffel-Coding-Standard.wiki b/documentation/20.05/eiffel/Coding_Standards/Eiffel-Coding-Standard.wiki new file mode 100644 index 00000000..57287ca6 --- /dev/null +++ b/documentation/20.05/eiffel/Coding_Standards/Eiffel-Coding-Standard.wiki @@ -0,0 +1,93 @@ +[[Property:modification_date|Mon, 03 Dec 2018 10:00:43 GMT]] +[[Property:publication_date|Tue, 30 Oct 2018 14:56:21 GMT]] +[[Property:uuid|0CD0A1B2-42F8-48E0-B419-61B4DC076C1B]] +[[Property:weight|2]] +[[Property:title|Eiffel Coding Standard]] + +==Language consideration== +* Do not put a blank line between +:* '''create''' and creation instructions +:* '''inherit''' and parent clauses +* Do not use assertion clauses without tag names. + +A sample of proper formatting of code: +note + description: "Descr...." + date: "$date: $" + +class A + +inherit + B + rename + f as g + end + +create + make + +feature {NONE} -- Initialization + + make (a: INTEGER) + -- Initialize Current with `a`. + do + end + +invariant + a_positive: a > 0 + +end + +==Style== +* If instructions: +if expr1 then + ... +elseif expr2 then + ... +else + ... +end + +If expressions are very long, break them on conjunctions as in: +if + expr1 and then + expr2 +then + ... +end + +* Loop instructions: +from + ... +until + ... +loop + ... +end + +* Inspect instructions: +inspect expr +when val1 then .... +else + ... +end + +or + +inspect + expr +when val1 then + ... +else + ... +end + +* For punctuation, we always have +** a space before, and no after `(` +** no space before, and space after `)` `,` `:` or `;` + +require + a_tag: query (a, b, c) or other_query (c, d) +local + i: INTEGER; j: INTEGER + diff --git a/documentation/20.05/eiffel/Coding_Standards/Local-Declaration-Guidelines.wiki b/documentation/20.05/eiffel/Coding_Standards/Local-Declaration-Guidelines.wiki new file mode 100644 index 00000000..3449e534 --- /dev/null +++ b/documentation/20.05/eiffel/Coding_Standards/Local-Declaration-Guidelines.wiki @@ -0,0 +1,236 @@ +[[Property:uuid|FF8DA311-55E5-4314-8B0C-AADB4645E686]] +[[Property:weight|3]] +[[Property:title|Local Declaration Guidelines]] + +Local declaration style guidelines for contributing to the Eiffel Software code repository. + +== Feature Arguments == +Feature arguments should begin with the prefix ''a_'' and nothing more. The prefix ''a_'' represent a contraction of the word ''argument'' and does not represent the singular inflection - a ''noun'' - Therefore it is '''not''' valid to utilize ''an'' when the suffixed argument word begins with a vowel. The following is a correct usage: + + +perform (a_string: STRING; a_integer: STRING): CHARACTER + -- An example using routine argument variable names. + do + end + + +Here, the second argument ''a_integer'', is not considered ''A Integer'' but ''The Argument Integer'', hence the use if a_ instead of ''_an_''. + +=== Indexing Routine Argument Variable Names === +In rare cases there is a need to use the same name on a routine's arguments, which of course no useful language would allow. Instead a slight form of indexing needs to be applied. In this case the use of ''other'' embedded in the variable name would suffice for most cases. + + +compare_strings (a_string: READABLE_STRING_GENERAL; a_other_string: like a_string): INTEGER_8 + -- An example using 'other' to index the second routine argument name + do + ... + end + + +=== In-line Agent Routine Arguments === +When working with an in-line agent, to prevent conflicts with the enclosing routine's arguments, the prefix ''ia_'' should be used. The same rules regarding English language rules apply here as they do to routine arguments. The ''ia_'' prefix represents an ''In-line Argument''. + + +perform (a_string: STRING; a_integer: STRING) + -- An example using in-line agent argument variable names. + do + process (agent (ia_string: STRING; ia_integer: INTEGER) + do + ... + end (a_string, a_integer)) + end + + +==== Nested In-line Agent Routine Arguments ==== +Although rare, a nested in-line agents need exists. When dealing with nested in-line agent routine argument names the prefix should contain the nested index, with the container in-line agent using either a ''1'' or no index in the prefix names. First/Top-level in-line agents (those that are not nested) can use the aforementioned ''ia_'' prefix or use ''i1a_'', the former being preferred. A second-level (first nested level) in-line agent should use the prefix ''i2a_'', third-level ''i3a_'' and so forth. + + +perform (a_string: STRING; a_integer: STRING) + -- An example using in-line agent argument variable names. + do + process (agent (ia_string: STRING; ia_integer: INTEGER) + do + -- An example of an nested, in-line agent + process (agent (i2a_string: STRING; i2a_integer: INTEGER) + do + .... + end (ia_string.as_lower, ia_integer) + end (a_string, a_integer)) + end + + +== Local Declarations == +Routine local declaration should also be prefixed to prevent potential conflicts between routine arguments or class attributes. The prefix ''l_'' is typically used for variable moniker names longer than two character. There are other exceptions, these are discussed below. + +=== Well Known Variable Names === +Indexing/counter variables, as used in iteration loops, should not use a local prefix and should be terse. The variable ''i'' should be use to indicate it is an index variable. Additional index variables should follow alphabetically from ''i'' onwards. + +Generally, paired with an indexing/counter variable, a stopping condition count or number-of-items variable is also used. There are two conventions used for this, generally used interchangeably; A count will use the same rules for local declarations and be called ''l_count'', a number-of-items variable will use a well-known contracted variable name 'nb''. + + +perform (a_array: ARRAY [INTEGER]) + -- An example using index and number-of-items local variable names. + local + i, nb: INTEGER + do + from + i := a_array.lower + nb := a_array.upper + until + i > nb + loop + ... + i := i + 1 + end + end + + +The case will commonly arise when multiple counters/number-of-items variables need to be used. In such cases the counter/number-of-items variable should be suffixed with the associated indexing/counter variable name. This is akin to [http://en.wikipedia.org/wiki/BASIC BASIC]'s NEXT x instruction: + + +perform (a_array: ARRAY [ARRAY [INTEGER]]) + -- An example using multiple index and number-of-items local variable names. + local + l_sub_array: ARRAY [INTEGER] + i, nb_i: INTEGER + j, nb_j: INTEGER + do + from + i := a_array.lower + nb_i := a_array.upper + until + i > nb_i + loop + l_item := a_array[i] + if l_item /= Void then + from + j := l_item.lower + nb_j := l_item.upper + until + j > nb_j + loop + ... + j := j + 1 + end + end + i := i + 1 + end + end + + +==== Other Well-Known Names ==== + +There are a number of other well know and simpler to use local variable names: + +* ''c'' for any type of character. +* ''e'' for any type of exception (descendant of EXCEPTION). +* ''s'' for any type of string (descendant of READABLE_STRING_GENERAL). +* ''uc'' for a Unicode character. +* ''us'' for a Unicode string (descendant of READABLE_STRING_32). +* ''nb'' for a number or count of elements. + +==== Rescue Clauses ==== + +When adding a rescue clause with a retry a state variable, typically used to determine if a retry has been performed, there is no need to use a local declaration prefix. In fact, it's recommended there is no prefix. Instead just use a variable named ''retried'': + + +perform + -- An example using a rescue/retry local variable name. + local + retried: BOOLEAN + do + if not retried then + ... + end + rescue + retried := True + retry + end + + +=== Object Tests === +Object test locals obey the same rules and other standard local declarations, that it, prefixing a variable moniker with ''l_''. However, due to the current scoping rules of object-tests, where no object test local may be reused, extraneous guidelines need to be defined. + + +close + -- An example using object-test scoped local variable names. + do + if attached {DISPOSABLE_I} Current as l_disposable then + l_disposable.dispose + end + end + + +==== In Contracts ==== +Object tests may need to be defined in contracts, especially when projects/libraries are configured to use Void-Safe compilation checks. To prevent variable name conflicts from arising a secondary prefix should be used to define an object-test local. Again using ''l_'' but this time prefixed with the first character of the enclosing assertion clause. Such rules would dictated the following prefixes to be used in object-tests, for assertion clauses: +* ''rl_'' for require +* ''el_'' for ensure +* ''cl_'' for check +* ''ll_'' for loop +* ''il_'' for loop invariant +* ''vl_'' for loop variant + + +close + -- An example using object-test scoped local variable names in contracts. + require + is_interface_usable: attached {USABLE_I} Current as rl_usable implies rl_usable.is_interface_usable + do + ... + ensure + not_is_interface_usable: attached {USABLE_I} Current as el_usable implies not el_usable.is_interface_usable + end + + +No prefix, other than ''l_'' is needed for class invariants because no conflicts in variable name reuse exist in an invariant scope. + +=== In-line Agents === +There is no real preferred convention for local declaration inside in-line agents and the ''l_'' prefix should be used if possible. However, for clarity this cannot always be such the case. When such as scenario arises the use of ''il_'' (in-line local) is preferred. It is recommended that all locals utilize the same prefix and '''not''' mix ''l_'' and il_''! + + +l_action := agent (ia_string: READABLE_STRING_GENERAL) + local + il_i, il_count: INTEGER + do + .... + end + + +Notice that even well-known local declaration names are prefixed, this is to avoid conflicts with the containing routine or in-line agent as well as providing consistency in the naming of local variables. + +With nested in-line agents use the same name index injection guideline, placing the nested index after the initial ''i'' prefix. For a second level in-line agent, this would be ''i2l_''. + +== Indexing Variable Names == +There will be times when variable names clash with one another and there is no choice but to apply the last-stop effort to naturally indexed variable names to suit. This last-stop effort is really a last-stop. Other attempts should be made to create unique variable names before applying natural indexing. + +Natural indexing concerns itself with suffixing variables with a sequential natural index. The only exception is the first local declaration which may or may not have the primary index suffix ''_1''. To better illustrate, the following code examples are both valid uses of natural indexing: + + +perform + -- An example of using natural sequential indexes to avoid variable name clashes. + local + l_item_1: ITEM + l_item_2: ITEM + l_item_3: ITEM + do + ... + end + + +or + + +perform + -- An example with the first index elided, which is also valid. + local + l_item: ITEM + l_item_2: ITEM + l_item_3: ITEM + do + ... + end + + +If local declaration have to be indexed when first writing the code then it is far better to be explicit and use a natural sequential index for all similar local declaration (the former example). The latter example is valid and would exist when modifying existing code. There is no hard or fast rule here, each is valid as long as the indexes are sequential. + +The examples apply to all variable declaration, not just local declarations. diff --git a/documentation/20.05/eiffel/Coding_Standards/Style-Guidelines.wiki b/documentation/20.05/eiffel/Coding_Standards/Style-Guidelines.wiki new file mode 100644 index 00000000..a123ebc1 --- /dev/null +++ b/documentation/20.05/eiffel/Coding_Standards/Style-Guidelines.wiki @@ -0,0 +1,766 @@ +[[Property:uuid|46FFB0ED-CE10-4CA5-8F10-5E1D0AB6EE46]] +[[Property:weight|4]] +[[Property:title|Style Guidelines]] + +Style Guidelines that EiffelStudio developers should use and are not intended or suggestions for developing code with the Eiffel language. The guidelines are to promote consistency in API design, making EiffelStudio's code base more readable to all. + +==Status of this page== +[I am starting this page by copy-pasting from existing references. It will be edited and cleaned up later on.[[User:Bertrand Meyer|Bertrand Meyer]] 12:35, 22 May 2008 (PDT) + +=From ''Object-Oriented Software Construction''= + +Implementing the object-oriented method requires paying attention to many details of style, which a less ambitious approach might consider trifles. + +==COSMETICS MATTERS!== +Although the rules appearing hereafter are not as fundamental as the principles of object-oriented software construction covered in earlier chapters, it would be foolish to dismiss them as just “cosmetics”. Good software is good in the large and in the small, in its high-level architecture and in its low-level details. True, quality in the details does not guarantee quality of the whole; but sloppiness in the details usually indicates that something more serious is wrong too. (If you cannot get the cosmetics right, why should your customers believe that you can master the truly difficult aspects?) A serious engineering process requires doing everything right: the grandiose and the mundane. + +So you should not neglect the relevance of such seemingly humble details as text layout and choice of names. True, it may seem surprising to move on, without lowering our level of attention, from the mathematical notion of sufficient completeness in formal specifications (in the chapter on abstract data types) to whether a semicolon should be preceded by a space (in the present chapter). The explanation is simply that both issues deserve our care, in the same way that when you write quality O-O software both the design and the realization will require your attention. + +We can take a cue from the notion of style in its literary sense. Although the first determinant of good writing is the author’s basic ability to tell a story and devise a coherent structure, no text is successful until everything works: every paragraph, every sentence and every word. + +===Applying the rules in practice=== +Some of the rules of this chapter can be checked or, better yet, enforced from the start by software tools. Tools will not do everything, however, and there is no substitute for care in writing every piece of the software. + +There is often a temptation to postpone the application of the rules, writing things casually at first and thinking “I will clean up everything later on; I do not even know how much of this will eventually be discarded”. This is not the recommended way. Once you get used to the rules, they do not add any significant delay to the initial writing of the software; even without special tools, it is always more costly to fix the text later than to write it properly from the start. And given the pressure on software developers, there is ever a risk that you will forget or not find the time to clean things up. Then someone who is asked later to take up your work will waste more time than it would have cost you to write the proper header comments, devise the right feature names, apply the proper layout. That someone may be you. + +===Terseness and explicitness=== +Software styles have oscillated between the terse and the verbose. In programming languages, the two extremes are perhaps APL and Cobol. The contrast between the Fortran-C-C++ line and the Algol-Pascal-Ada tradition — not just the languages themselves, but the styles they have bred — is almost as stark. + +What matters for us is clarity and, more generally, quality. Extreme forms of terseness and verbosity can both work against these goals. Cryptic C programs are unfortunately not limited to the famous “obfuscated C” and “Obfuscated C++” contests; but the almost equally famous DIVIDE DAYS BY 7 GIVING WEEKS of Cobol is a waste of everyone’s attention. + +The style that follows from this chapter’s rules is a particular mix of Algol-like explicitness (although not, it is hoped, verbosity) and telegram-style terseness. It never begrudges keystrokes, even lines, when they truly help make the software readable; for example, you will find rules that enjoin using clear identifiers based on full words, not abbreviations, as it is foolish to save a few letters by calling a feature disp (ambiguous) rather than display (clear and precise), or a class ACCNT (unpronounceable) rather than ACCOUNT. There is no tax on keystrokes. But at the same time when it comes to eliminating waste and unneeded redundancies the rules below are as pitiless as the recommendations of a General Accounting Office Special Commission on Improving Government. They limit header comments to indispensable words, getting rid of all the non-essential “the” and other such amenities; they proscribe over-qualification of feature names (as in account_balance in a class ACCOUNT, where balance is perfectly sufficient); against dominant mores, they permit the grouping of related components of a complex construct on a single line, as in from i := 1 invariant i <= n until i = n loop; and so on. + +This combination of terseness and explicitness is what you should seek in your own texts. Do not waste space, as exaggerated size will in the end mean exaggerated complexity; but do not hesitate to use space when it is necessary to enhance clarity. + +Also remember, if like many people you are concerned about how much smaller the text of an object-oriented implementation will be than the text of a comparable C, Pascal, Ada or Fortran program, that the only interesting answer will appear at the level of a significant system or subsystem. If you express a basic algorithm — at the level of Quicksort, say, or Euclid’s algorithm — in C and in the notation of this book, expect the O-O version to be at least as large. In many cases, if you apply the principles thoroughly, it will be larger, since it will include assertions and more type information. Yet in ISE’s experience of looking at medium-scale systems we have sometimes found (without being able to give a general law, as the circumstances vary considerably) the object-oriented solution to be several times smaller. Why? This is not due to terseness at the “micro” level but to systemwide application of the architectural techniques of the O-O method: + +Genericity is one of the key factors. We have found C programs that repeated essentially the same C code many times to handle different types. With a generic class — or for that matter a generic Ada package — you immediately get rid of that redundancy. It is disturbing in this respect to see that Java, a recent O-O language based on C, does not support genericity. + +Inheritance is also fundamental in gathering commonalities and removing duplications. + +Dynamic binding replaces many complex decision structures by much shorter calls. + +Assertions and the associated idea of Design by Contract avoid redundant error checking, a principal source of bloat. + +The exception mechanism gets rid of some error code. + +If you are concerned with source size, make sure to concentrate on these architectural aspects. You should also be terse in expressing algorithms, but never skimp on keystrokes at the expense of clarity. + +===The role of convention=== +Most rules define a single permissible form, with no variants. The few exceptions include font use, which is governed by external considerations (what looks good in a book may not be visible on overhead transparencies), and semicolons, for which there exist two opposite schools with equally forceful arguments (although we will have a few universal rules anyway). In all other cases, in line with the introductory methodology chapter’s exhortations against wishy-washiness, the rules leave about as much room to doubt as a past due reminder from the Internal Revenue Service. + +The rules are rooted in a careful analysis of what works and what works less well, resulting from many years of observation; some of the rationale will appear in the discussion. Even so, some rules may appear arbitrary at first, and indeed in a few cases the decision is a matter of taste, so that reasonable persons working from the same assumptions may disagree. If you object to one of the recommended conventions, you should define your own, provided you explain it in detail and document it explicitly; but do think carefully before making such a decision, so obvious are the advantages of abiding by a universal set of rules that have been systematically applied to thousands of classes over more than ten years, and that many people know and understand. + +As noted in an earlier chapter (in the more general context of design principles), many of the style rules were originally developed for libraries, and then found their way into ordinary software development. In object technology, of course, all software is developed under the assumption that even if it is not reusable yet it might eventually be made reusable, so it is natural to apply the same style rules right from the start. + +===Self-practice=== +Like the design rules of the preceding chapters, the style rules which follow have been carefully applied to the many examples of this book. The reasons are obvious: one should practice what one preaches; and, more fundamentally, the rules do support clarity of thought and expression, which can only be good for a detailed presentation of the object-oriented method. + +The only exceptions are a few occasional departures from the rules on software text layout. These rules do not hesitate to spread texts over many lines, for example by requiring that every assertion clause have its own label. Lines are not a scarce resource on computer screens; it has been observed that with the computer age we are reversing the direction of the next-to-last revolution in written communication, the switch from papyrus rolls to page-structured books. But this text is definitely a book, structured into pages, and a constant application of the layout-related rules would have made it even bigger than it is. + +The cases of self-dispensation affect only two or three layout-related rules, and will be noted in their presentation below. Any exception only occurs after the first few examples of a construct in the book have applied the rules scrupulously. + +Such exceptions are only justified for a paper presentation. Actual software texts should apply the rules literally. + +===Discipline and creativity=== +It would be a mistake to protest against the rules of this chapter (and others) on the grounds that they limit developer creativity. A consistent style favors rather than hampers creativity by channeling it to where it matters. A large part of the effort of producing software is spent reading existing software and making others read what is being written. Individual vagaries benefit no one; common conventions help everyone. + +Some of the software engineering literature of the nineteen-seventies propounded the idea of “egoless programming”: developing software so that it does not reflect anything of its authors’ personality, thereby making developers interchangeable. Applied to system design, this goal is clearly undesirable, even if some managers may sometimes long for it (as in this extract of a programming management book quoted by Barry Boehm: “ºthe programmer[‘s] creative instincts should be totally dulled to insure uniform and understandable programming”, to which Boehm comments: “Given what we know about programmers and their growth motivation, such advice is a clear recipe for disaster”). + +What quality software requires is egoful design with egoless expression. + +More than style standards, what would seem to require justification is the current situation of software development, with its almost total lack of style standards. In no other discipline that demands to be called “engineering” is there such room for such broad personal variations of whim and fancy. To become more professional, software development needs to regulate itself. + +==CHOOSING THE RIGHT NAMES== +The first aspect that we need to regulate is the choice of names. Feature names, in particular, will be strictly controlled for everyone’s benefit. + +===General rules=== +What matters most is the names of classes and features which will be used extensively by the authors of classes that rely on yours. + +For feature and class names, use full words, not abbreviations, unless the abbreviations are widely accepted in the application domain. In a class PART describing parts in an inventory control system, call number, not num, the feature (query) giving the part number. Typing is cheap; software maintenance is expensive. An abbreviation such as usa in a Geographical Information System or copter in a flight control system, having gained an independent status as a word of its own, is of course acceptable. In addition, a few standard abbreviations have gained recognition over the years, such as PART for PARTIAL in class names such as PART_COMPARABLE describing objects equipped with a partial order relation. + +In choosing names, aim for clarity. Do not hesitate to use several words connected by underscores, as in ANNUAL_RATE, a class name, or yearly_premium, a feature name. + +Although modern languages do not place any limit on the length of identifiers, and treat all letters as significant, name length should remain reasonable. Here the rule is not the same for classes and for features. Class names are input only occasionally (in class headers, type declarations, inheritance clauses and a few other cases) and should describe an abstraction as completely as possible, so PRODUCT_QUANTITY_INDEX_EVALUATOR may be fine. For features, there is seldom a need for more than two or possibly three underscore-connected words. In particular, do not overqualify feature names. If a feature name appears too long, it is usually because it is overqualified: + +===Composite Feature Name rule=== +Do not include in a feature name the name of the underlying data abstraction (which should serve as the class name). + + +The feature giving the part number in class PART should be called just number, not part_number. Such over-qualification is a typical beginner’s mistake; the resulting names obscure rather than illuminate the text. Remember that every use of the feature will unambiguously indicate the class, as in part1 l number where part1 must have been declared with a certain type, PART or a descendant. + +For composite names, it is better to avoid the style, popularized by Smalltalk and also used in such libraries as the X Window System, of joining several words together and starting the internal ones with an upper-case letter, as in yearlyPremium. Instead, separate components with underscores, as in yearly_ premium. The use of internal upper-case letters is ugly; it conflicts with the conventions of ordinary language; and it leads to cryptic names, hence to possible errors (compare aLongAndRatherUnreadableIdentifier with an_even_longer_but_ perfectly_clear_choice_of_name). + +Sometimes, every instance of a certain class contains a field representing an instance of another class. This suggests using the class name also as attribute name. You may for example have defined a class RATE and, in class ACCOUNT, need one attribute of type RATE, for which it seems natural to use the name rate — in lower case, according to the rules on letter case stated below. Although you should try to find a more specific name, you may, if this fails, just declare the feature as rate: RATE. The rules on identifier choice explicitly permit assigning the same name to a feature and a class. Avoid the style of prefixing the name with the, as in the_rate, which only adds noise. + +===Local entities and routine arguments=== +The emphasis on clear, spelled-out names applies to features and classes. Local entities and arguments of a routine only have a local scope, so they do not need to be as evocative. Names that carry too much meaning might almost decrease the software’s readability by giving undue weight to ancillary elements. So it is appropriate to declare local entities (here in routines of TWO_WAY_LIST in the Base libraries) as + +move (i: INTEGER) + -- Move cursor i positions, or after if i is too large. + local + c: CURSOR; counter: INTEGER; p: like FIRST_ELEMENT + +remove + -- Remove current item; move cursor to right neighbor (of after if none). + local + succ, pred, removed: like first_element + + +If succ and pred had been features they would have been called successor and predecessor. It is also common to use the names new for a local entity representing a new object to be created by a routine, and other for an argument representing an object of the same type as the current one, as in the declaration for clone in GENERAL: + +frozen clone (other: GENERAL): like other + + +===Letter case=== +Letter case is not significant in our notation, as it is too dangerous to let two almost identical identifiers denote different things. But strongly recommended guidelines help make class texts consistent and readable: + +Class names appear in all upper case: POINT, LINKED_LIST, PRICING_MODEL. Formal generic parameters too, usually with just one letter: G. + +Names of non-constant attributes, routines other than once functions, local entities and routine arguments appear in all lower case: balance, deposit, succ, i. + +Constant attributes have their first letter in upper case and the rest in lower case: Pi: INTEGER is 3.1415926524; Welcome_message: STRING is "Welcome!". This applies to unique values, which are constant integers. + +The same convention applies to once functions, the equivalent of constants for non-basic types: Error_window, Io. Our first example, the complex number i, remained in lower case for compatibility with mathematical conventions. + +This takes care of developer-chosen names. For reserved words, we distinguish two categories. Keywords such as do and class play a strictly syntactic role; they are written in lower case, and will appear in boldface (see below) in printed texts. A few reserved words are not keywords because they carry an associated semantics; written with an initial upper case since they are similar to constants, they include Current, Result, Precursor, True and False. + +===Grammatical categories=== +Precise rules also govern the grammatical category of the words from which identifiers are derived. In some languages, these rules can be applied without any hesitation; in English, as noted in an earlier chapter, they will leave more flexibility. + +The rule for class names has already been given: you should always use a noun, as in ACCOUNT, possibly qualified as in LONG_TERM_SAVINGS_ACCOUNT, except for the case of deferred classes describing a structural property, which may use an adjective as in NUMERIC or REDEEMABLE. + +Routine names should faithfully reflect the Command-Query separation principle: + +Procedures (commands) should be verbs in the infinitive or imperative, possibly with complements: make, move, deposit, set_color. + +Attributes and functions (queries) should never be imperative or infinitive verbs; never call a query get_value, but just value. Non-boolean query names should be nouns, such as number, possibly qualified as in last_month_balance. Boolean queries should use adjectives, as in full. In English, because of possible confusions between adjectives and verbs (empty, for example, could mean “is this empty?” or “empty this!”), a frequent convention for boolean queries is the is_ form, as in is_empty. + +===Standard names=== +You will have noted, throughout this book, the recurrence of a few basic names, such as put and item. They are an important part of the method. + +Many classes will need features representing operations of a few basic kinds: insert an element into a structure, replace the value of an element, access a designated elementº Rather than devising specific names for the variants of these operations in every class, it is preferable to apply a standard terminology throughout. + +Here are the principal standard names. We can start with creation procedures, for which the recommended is make for the most common creation procedure of a class. Non-vanilla creation procedures may be called make_some_qualification, for example make_polar and make_cartesian for a POINT or COMPLEX class. + +====For commands the most common names are:==== + +*extend: Add an element. +*replace: Replace an element. +*force: Like put but may work in more cases; for example put for arrays has a precondition to require the index to be within bounds, but force has no precondition and will resize the array if necessary. +*remove: Remove an (unspecified) element. +*prune: Remove a specific element. +*wipe_out: Remove all elements. + +====For non-boolean queries (attributes or functions):==== +*item: The basic query for accessing an element: in ARRAY, the element at a given index; in STACK classes, the stack top; in QUEUE classes, the oldest element; and so on. +*infix "@": A synonym for item in a few cases, notably ARRAY. +: -- Note: no longer necessary; use bracket alias instead. Still present in existing libraries. +*count: Number of usable elements in a structure. +*capacity: Physical size allocated to a bounded structure, measured in number of potential elements. The invariant should include 0 <= count and count <= capacity. + +====For boolean queries:==== +*is_empty: Is the structure devoid of elements? +*is_full: Is there no more room in the representation to add elements? (Normally the same as count = capacity.) +*has: Is a certain element present? (The basic membership test.) +*is_extendible: Can an element be added? (May serve as a precondition to extend.) +*is_prunable: Can an element be removed? (May serve as a precondition to remove and prune.) +*is_readable: Is there an accessible element? (May serve as precondition to item and remove.) +*is_writable: Is it possible to change an element? (May variously serve as precondition to extend, replace, put etc.) + +::Note: the variants without `is_' are also widely used, e.g. `prunable', but the `is_' form is now recommended. + +A few name choices which may seem strange at first are justified by considerations of clarity and consistency. For example prune goes with prunable and extend with extendible; delete and add might seem more natural, but then s l deletable and s l addable would carry the wrong connotation, since the question is not whether s can be deleted or added but whether we can add elements to it or delete elements from it. The verbs prune and extend, with the associated queries, convey the intended meaning. + +===The benefits of consistent naming=== +The set of names sketched above is one of the elements that most visibly contribute to the distinctive style of software construction developed from the principles of this book. + +Is the concern for consistency going too far? One could fear that confusion could result from routines that bear the same name but internally do something different. For example item for a stack will return the top element, and for an array will return an element corresponding to the index specified by the client. + +With a systematic approach to O-O software construction, using static typing and Design by Contract, this fear is not justified. To learn about a feature, a client author can rely on four kinds of property, all present in the short form of the enclosing class: +*Its name. +*Its signature (number and type of arguments if a routine, type of result if a query). +*Its precondition and postcondition if any. +*Its header comment. + +A routine also has a body, but that is not part of what client authors are supposed to use. + +Three of these elements will differ for the variants of a basic operation. For example in the short form of class STACK you may find the feature + +put (x: G) + -- Push x on top. + require + writable: not full + ensure + not_empty: not empty + pushed: item = x + +whereas its namesake will appear in ARRAY as + +put (x: G; i: INTEGER) + -- Replace by x the entry of index i + require + not_too_small: i >= lower + not_too_large: i <= upper + ensure + replaced: item (i) = x + + +The signatures are different (one variant takes an index, the other does not); the preconditions are different; the postconditions are different; and the header comments are different. Using the same name put, far from creating confusion, draws the reader’s attention to the common role of these routines: both provide the basic element change mechanism. + +This consistency has turned out to be one of the most attractive aspects of the method and in particular of the libraries. New users take to it quickly; then, when exploring a new class which follows the standard style, they feel immediately at home and can zero in on the features that they need. + +==USING CONSTANTS== +Many algorithms will rely on constants. As was noted in an early chapter of this book, constants are widely known for the detestable practice of changing their values; we should prepare ourselves against the consequences of such fickleness. + +===Manifest and symbolic constants=== +The basic rule is that uses of constants should not explicitly rely on the value: + +====Symbolic Constant principle==== +Do not use a manifest constant, other than the zero elements of basic operations, in any construct other than a symbolic constant declaration. + + +In this principle, a manifest constant is a constant given explicitly by its value, as in 50 (integer constant) or "Cannot find file" (string constant). The principle bars using instructions of the form + +population_array l make (1, 50) + +or + +print ("Cannot find file") -- See mitigating comment below about this case + + +Instead, you should declare the corresponding constant attributes, and then, in the bodies of the routines that need the values, denote them through the attribute names: + +US_state_count: INTEGER = 50 +File_not_found: STRING = "Cannot find file" + + + +population_array l make (1, state_count) + + + +print (file_not_found) + + +The advantage is obvious: if a new state is added, or the message needs to be changed, you have only have to update one easy-to-locate declaration. + +The use of 1 together with state_count in the first instruction is not a violation of the principle, since its prohibition applies to manifest constants “other than zero elements of basic operations”. These zero elements, which you may use in manifest form, include the integers 0 and 1 (zero elements of addition and multiplication), the real number 0.0, the null character written '%0', the empty string " ". Using a symbolic constant One every time you need to refer to the lower bound of an array (1 using the default convention) would lead to an unsustainable style — pedantic, and in fact less readable because of its verbosity. Sometimes, Freud is supposed to have said, a cigar is just a cigar; sometimes One is just 1. + +Some other times 1 is just a system parameter that happens to have the value one today but could become 4,652 later — its role as addition’s zero element being irrelevant. Then it should be declared as a symbolic constant, as in Processor_count: INTEGER is 1 in a system that supports multiple processors and is initially applied to one processor. + +The Symbolic Constant principle may be judged too harsh in the case of simple manifest strings used just once, such as "Cannot find file" above. Some readers may want to add this case to the exception already stated in the principle (replacing the qualification by “other than manifest string constants used only once in the same class, and zero elements of basic operations”). This book has indeed employed a few manifest constants in simple examples. Such a relaxation of the rule is acceptable, but in the long run it is probably preferable to stick to the rule as originally given even if the result for string constants looks a little pedantic at times. One of the principal uses of string constants, after all, is for messages to be output to users; when a successful system initially written for the home market undergoes internationalization, it will be that much less translation work if all the user-visible message strings (at least any of them that actually appear in the software text) have been put in symbolic constant declarations. + +====Where to put constant declarations==== +If you need more than a handful of local constant attributes in a class, you have probably uncovered a data abstraction — a certain concept characterized by a number of numeric or character parameters. + +It is desirable, then, to group the constant declarations into a class, which can serve as ancestor to any class needing the constants (although some O-O designers prefer to use the client relation in this case). An example in the Base libraries is the class ASCII, which declares constant attributes for the different characters in the ASCII character set and associated properties. + +==HEADER COMMENTS AND NOTE CLAUSES== +Although the formal elements of a class text should give as much as possible of the information about a class, they must be accompanied by informal explanations. Header comments of routines and feature clause answer this need together with the note clause of each class. + + '''Terminology''': in earlier Eiffel versions the keyword indexing was used instead of note, + and "note clauses" were called "indexing clauses" + +===Routine header comments: an exercise in corporate downsizing=== + +Like those New York street signs that read “Don’t even think of parking here!”, the sign at the entrance of your software department should warn “Don’t even think of writing a routine without a header comment”. The header comment, coming just after the is for a routine, expresses its purpose concisely; it will be kept by the short and flat-short forms: + +distance_to_origin: REAL + -- Distance to point (0, 0) + local + origin: POINT + do + create origin + Result := distance (origin) + end + +Note the indentation: one step further than the start of the routine body, so that the comment stands out. + +Header comments should be informative, clear, and terse. They have a whole style of their own, which we can learn by looking at an initially imperfect example and improve it step by step. In a class CIRCLE we might start with + + +tangent_from (p: POINT): LINE + -- Return the tangent line to the current circle going through the point p, + -- if the point is outside of the current circle. + require + outside_circle: not has (p) + + +There are many things wrong here. First, the comment for a query, as here, should not start with “Return theº” or “Compute theº”, or in general use a verbal form; this would go against the Command-Query Separation principle. Simply name what the query returns, typically using a qualified noun for a non-boolean query (we will see below what to use for a boolean query and a command). Here we get: + + + -- The tangent line to the current circle going through the point p, + -- if the point p is outside of the current circle + + +Since the comment is not a sentence but simply a qualified noun, the final period disappears. Next we can get rid of the auxiliary words, especially the, where they are not required for understandability. Telegram-like style is desirable for comments. (Remember that readers in search of literary frills can always choose Proust novels instead.) + + --Tangent line to current circle from point p, + -- if point p is outside current circle + + +The next mistake is to have included, in the second line, the condition for the routine’s applicability; the precondition, not has (p), which will be retained in the short form where it appears just after the header comment, expresses this condition clearly and unambiguously. There is no need to paraphrase it: this could lead to confusion, if the informal phrasing seems to contradict the formal precondition, or even to errors (a common oversight is a precondition of the form x >= 0 with a comment stating “applicable only to positive x”, rather than “non-negative”); and there is always a risk that during the software’s evolution the precondition will be updated but not the comment. Our example becomes: + + -- Tangent line to current circle from point p. + + +Yet another mistake is to have used the words line to refer to the result and point to refer to the argument: this information is immediately obvious from the declared types, LINE and POINT. With a typed notation we can rely on the formal type declarations — which again will appear in the short form — to express such properties; repeating them in the informal text brings nothing. So: + + -- Tangent to current circle from p. + + +The mistakes of repeating type information and of duplicating the precondition’s requirements point to the same general rule: in writing header comments, assume the reader is competent in the fundamentals of the technology; do not include information that is obvious from the immediately adjacent short form text. This does not mean, of course, that you should never specify a type; the earlier example, -- Distance to point (0,0), could be ambiguous without the word point. + +When you need to refer to the current object represented by a class, use phrasing such as current circle, current number and so on as above, rather than referring explicitly to the entity Current. In many cases, however, you can avoid mentioning the current object altogether, since it is clear to everyone who can read a class text that features apply to the current object. Here, for example, we just need + + -- Tangent from p. + + +At this stage — three words, starting from twenty-two, an 87% reduction that would make the toughest Wall Street exponent of corporate downsizing jealous — it seems hard to get terser and we can leave our comment alone. + +A few more general guidelines. We have noted the uselessness of “Return the ” in queries; other noise words and phrases to be avoided in routines of all kinds include “This routine computes”, “This routine returns”; just say what the routine does, not that it does it. Instead of + + -- This routine records the last outgoing call. + +write + + -- Record outgoing call. + +As illustrated by this example, header comments for commands (procedures) should be in the imperative or infinitive (the same in English), in the style of marching orders. They should end with a period. For boolean-valued queries, the comment should always be in the form of a question, terminated by a question mark: + +has (v: G): BOOLEAN is + -- Does v appear in list? + + +A convention governs the use of software entities — attributes, arguments — appearing in comments. In typeset texts such as the above they will appear in italics (more on font conventions below); in the source text they should always appear between an opening quote (“backquote”) and a closing quote; the original text for the example is then: + + + -- Does ‘v’ appear in list? + +Tools such as the short class abstracter will recognize this convention when generating typeset output. Note that the two quotes should be different: ‘v’, not ’v’. + +Be consistent. If a function of a class has the comment Length of string, a routine of the same class should not say Update width of string if it affects the same property. + +All these guidelines apply to routines. Because an exported attribute should be externally indistinguishable from argumentless functions — remember the Uniform Access principle — it should also have a comment, which will appear on the line following the attribute’s declaration, with the same indentation as for functions: + + +count: INTEGER + -- Number of students in course + +For secret attributes a comment is desirable too but the rule is less strict. + +===Feature clause header comments=== +As you will remember, a class may have any number of feature clauses: + +note + + + +class LINKED_LIST [G] + inherit + + + +creation + + + +feature -- Initialization + make + + + +feature -- Access + item: G + + + +feature -- Status report + before: BOOLEAN + + + +feature -- Status setting + + + +feature -- Element change + put_left (v: G) + + + +feature -- Removal + remove + + + +feature {NONE} -- Implementation + first_element: LINKABLE [G]. + + + +end -- class LINKED_LIST + +One of the purposes of having several feature clauses is to allow different features to have different export privileges; in this example everything is generally available except the secret features in the last clause. But another consequence of this convention is that you could, and should, group features by categories. A comment on the same line as the keyword feature should characterize the category. Such comments are, like header comments of routines, recognized an preserved by documentation tools such as short. + +Eighteen categories and the corresponding comments have been standardized for the Base libraries, so that every feature (out of about 2000 in all) belongs to one of them. The example above illustrates some of the most important categories. Status report corresponds to options (set by features in the Status setting category, not included in the example). Secret and selectively exported features appear in the Implementation category. These standard categories always appear in the same order, which the tools know (through a user-editable list) and will preserve or reinstate in their output. Within each category, the tools list the features alphabetically for ease of retrieval. + +The categories cover a wide range of application domains, although for special areas you may need to add your own categories. + +===Note clauses=== +Similar to header comments but slightly more formal are note clauses, appearing at the beginning of a class: + +note + description: "Sequential lists, in chained representation" + names: "Sequence", "List" + contents: GENERIC + representation: chained + date: "$Date: 96/10/20 12:21:03 $" + revision: "$Revision: 2.4$" + +class LINKED_LIST [G] + inherit + + +Note clauses proceed from the same Self-Documentation principle that has led to built-in assertions and header comments: include as much as possible of the documentation in the software itself. For properties that do not directly appear in the formal text, you may include note entries, all of the form + + +note_term: note_value, note_value, + +where the note_term is an identifier and each note_value is some basic element such as a string, an integer and so on. Entries can indicate alternative names under which potential client authors might search for the class (names), contents type (contents), implementation choices (representation), revision control information, author information, and anything else that may facilitate understanding the class and retrieving it through keyword-based search tools — tools that support reuse and enable software developers to find their way through a potentially rich set of reusable components. + +Both the note terms and the note values are free-form, but the possible choices should be standardized for each project. A set of standard choices has been used throughout the Base libraries; the above example illustrates six of the most common entry kinds. Every class must have a description entry, introducing as index_value a string describing the role of the class, always expressed in terms of the instances (as Sequential listsº, not “this class describes sequential lists”, or “sequential list”, or “the notion of sequential list” etc.). Most significant class texts in this book — but not short examples illustrating a specific point — include the description entry. + +===Non-header comments=== +The preceding rules on comments applied to standardized comments, appearing at specific places — feature declarations and beginning of feature clauses — and playing a special role for class documentation. + +As in all forms of software development, there is also a need for comments within routine bodies, to provide further explanations + +Another use of comments, although frequent in the practice of software development, does not figure much in software engineering and programming methodology textbooks. I am referring here to the technique of transforming some part of the code into comments, either because it does not work, or because it is not ready yet. This practice is clearly a substitute for better tools and techniques of configuration management. It has enriched the language with a new verb form, comment out, whose potential, surprisingly enough, has not yet been picked up by hip journalists, even though the non-technical applications seem attractive and indeed endless: “The last elections have enabled Congress to comment out the President”, “Letterman was commented out of the Academy Awards”, and so on. + +Every comment should be of a level of abstraction higher than the code it documents. A famous counter-example is -- Increase i by 1 commenting the instruction i := i + 1. Although not always that extreme, the practice of writing comments that paraphrase the code instead of summarizing its effect is still common. + +Low-level languages cry for ample commenting. It is a good rule of thumb, for example, that for each line of C there should be a comment line; not a negative reflection on C, but a consequence that in modern software development the role of C is to encapsulate machine-oriented and operating-system-level operations, which are tricky by nature and require a heavy explanatory apparatus. In the O-O part, non-header comments will appear much more sparsely; they remain useful when you need to explain some delicate operation or foresee possible confusion. In its constant effort to favor prevention over cure, the method decreases the need for comments through a modular style that yields small, understandable routines, and through its assertion mechanisms: preconditions and postconditions of routines, to express their semantics formally; class invariants; check instructions to express properties expected to hold at certain stages; the systematic naming conventions introduced earlier in this chapter. More generally, the secret of clear, understandable software is not adding comments after the fact but devising coherent and stable system structures right from the start. + +==TEXT LAYOUT AND PRESENTATION== +The next set of rules affects how we should physically write our software texts on paper — real, or simulated on a screen. More than any others, they prompt cries of “Cosmetics!”; but such cosmetics should be as important to software developers as Christian Dior’s are to his customers. They play no little role in determining how quickly and accurately your software will be understood by its readers — maintainers, reusers, customers. + +===Layout === +The recommended layout of texts results from the general form of the syntax of our notation, which is roughly what is known as an “operator grammar”, meaning that a class text is a sequence of symbols alternating between “operators” and “operands”. An operator is a fixed language symbol, such as a keyword (do etc.) or a separator (semicolon, comma º); an operand is a programmer-chosen symbol (identifier or constant). + +Based on this property, the textual layout of the notation follows the comb-like structure introduced by Ada; the idea is that a syntactically meaningful part of a class, such as an instruction or an expression, should either: + +Fit on a line together with a preceding and succeeding operators. + +Be indented just by itself on one or more lines — organized so as to observe the same rules recursively. + +Each branch of the comb is a sequence of alternating operators and operands; it should normally begin and end with an operator. In the space between two branches you find either a single operand or, recursively, a similar comb-like structure. + +As an example, depending on the size of its constituents a, b and c, you may spread out a conditional instruction as + +if c then a else b end + +or + +if + c +then + a +else + b +end + +or + +if c then + a +else b end + +You would not, however, use a line containing just if c or c end, since they include an operand together with something else, and are missing an ending operator in the first case and a starting operator in the second. + +Similarly, you may start a class, after the note clause, with + +class C inherit -- [1] + +or + +class C feature -- [2] + +or + +class -- [3] + C +feature + +but not + +class C -- [4] +feature + +because the first line would violate the rule. Forms [1] and [2] are used in this book for small illustrative classes; since most practical classes have one or more labeled feature clauses, they should in the absence of an inherit clause use form [3] (rather than [2]): + +class + C +feature -- Initialization + + + +feature -- Access + + etc. + +===Height and width=== +Like most modern languages, our notation does not attach any particular significance to line separations except to terminate comments, so that you can include two or more instructions (or two or more declarations) on a single line, separated by semicolons: + + +count := count + 1; forth + + +This style is for some reason not very popular (and many tools for estimating software size still measure lines rather than syntactical units); most developers seem to prefer having one instruction per line. It is indeed not desirable to pack texts very tightly; but in some cases a group of two or three short, closely related instructions can be more readable if they all appear on one line. + +In this area it is best to defer to your judgment and good taste. If you do apply intra-line grouping, make sure that it remains moderate, and consistent with the logical relations between instructions. The Semicolon Style principle seen later in this chapter requires any same-line instructions to be separated by a semicolon. + +For obvious reasons of space, this book makes a fair use of intra-line grouping, consistent with these guidelines. It also avoids splitting multi-line instructions into more lines than necessary; on this point one can recommend the book’s style for general use: there is really no reason to split from i:= 1 invariant i <= n until i = n loop or if a = b then. Whatever your personal taste, do observe the Comb structure. + +===Indenting details=== +The comb structure uses indentation, achieved through tab characters (not spaces, which are messy, error-prone, and not reader-parameterizable). + +Here are the indentation levels for the basic kinds of construct, illustrated by the example on the facing page: + +*Level 0: the keywords introducing the primitive clauses of a class. This includes note (beginning of a note clause), class (beginning of the class body), feature (beginning of a feature clause, except if on the same line as class), invariant (beginning of an invariant clause, not yet seen) and the final end of a class. +*Level 1: beginning of a feature declaration; note entries; invariant clauses. +*Level 2: the keywords starting the successive clauses of a routine. This includes require, local, do, once, ensure, rescue, end. +*Level 3: the header comment for a routine or (for consistency) attribute; declarations of local entities in a routine; first-level instructions of a routine. + +Within a routine body there may be further indentation due to the nesting of control structures. For example the earlier if a then º instruction contains two branches, each of them indented. These branches could themselves contain loops or conditional instructions, leading to further nesting (although the style of object-oriented software construction developed in this book leads to simple routines, seldom reaching high levels of nesting). + +A check instruction is indented, together with the justifying comment that normally follows it, one level to the right of the instruction that it guards. + +note + description: "Example for formating" +class EXAMPLE inherit + MY_PARENT + redefine f1, f2 end + MY_OTHER_PARENT + rename + g1 as old_g1, g2 as old_g2 + redefine + g1 + select + g2 + end +creation + make +feature -- Initialization + make + -- Do something. + require + some_condition: correct (x) + local + my_entity: MY_TYPE + do + if a then + b; c + else + other_routine + check max2 > max1 + x ^ 2 end + -- Because of the postcondition of other_routine. + new_value := old_value / (max2 – max1) + end + end +feature -- Access + my_attribute: SOME_TYPE + -- Explanation of its role (aligned with comment for make) + + ... Other feature declarations and feature clauses ... + +invariant + upper_bound: x <= y +end -- class EXAMPLE + +Note the trailer comment after the end of the class, a systematic convention. + +===Spaces=== +White space contributes as much to the effect produced by a software text as silence to the effect of a musical piece. + +The general rule, for simplicity and ease of remembering, is to follow as closely as possible the practice of standard written language. By default we will assume this language to be English, although it may be appropriate to adapt the conventions to the slightly different rules of other languages. + +Here are some of the consequences. You will use a space: + +Before an opening parenthesis, but not after: +f (x) (not f (x), the C style, or f ( x)). + +After a closing parenthesis unless the next character is a punctuation sign such as a period or semicolon; but not before. Hence: +proc1 (x); x := f1 (x) + f2 (y) + +After a comma but not before: \ +g (x, y, z). + +After the two dash signs that start a comment: -- A comment. + +Similarly, the default rule for semicolons is to use a space after but not before: + +p1; p2 (x); p3 (y, z) + + +Here, however, some people prefer, even for English-based software texts, the French style of including a space both before and after, which makes the semicolon stand out and emphasizes the symmetry between the components before and after it: + +p1 ; p2 (x) ; p3 (y, z) + + +Choose either style, but then use it consistently. (This book uses the English style.) English and French styles have the same difference for colons as for semicolons; since, however, the software notation only uses colons for declarations, in which the two parts — the entity being declared and its type — do not play a symmetric role, it seems preferable to stick to the English style, as in your_entity: YOUR_TYPE. + +Spaces should appear before and after arithmetic operators, as in a + b. (For space reasons, this book has omitted the spaces in a few cases, all of the form n+1.) + +For periods the notation departs from the conventions of ordinary written language since it uses periods for a special construct, as originally introduced by Simula. As you know, a l r means: apply feature r to the object attached to a. In this case there is a space neither before nor after the period. To avoid any confusion, this book makes the period bigger, as illustrated: l rather than just . + +There is another use of the period: as decimal point in real numbers, such as 3.14. Here, to avoid any confusion, the period is not made any bigger. + +Some European languages use a comma rather than a period as the separator between integral and fractional parts of numbers. Here the conflict is irreconcilable, as in English the comma serves to separate parts of big numbers, as in “300,000 dollars”, where other languages would use a space. The committee discussions for Algol 60 almost collapsed when some continental members refused to bow to the majority’s choice of the period; the stalemate was resolved when someone suggested distinguishing between a reference language, fixed, and representation languages, parameterizable. (In retrospect, not such a great idea, at least not if you ever have to compile the same program in two different countries!) Today, few people would make this a point of contention, as the spread of digital watches and calculators built for world markets have accustomed almost everyone to alternate between competing conventions. + +===Precedence and parentheses=== +The precedence conventions of the notation conform to tradition and to the “Principle of Least Surprise” to avoid errors and ambiguities. + +Do not hesitate, however, to add parentheses for clarity; for example you may write (a = (b + c)) implies (u /= v) even though the meaning of that expression would be the same if all parentheses were removed. The examples in this book have systematically over-parenthesized expressions, in particular assertions, risking heaviness to avert uncertainty. + +===The War of the Semicolons=== +Two clans inhabit the computing world, and the hatred between them is as ferocious as it is ancient. The Separatists, following Algol 60 and Pascal, fight for the recognition of the semicolon as a separator between instructions; the Terminatists, rallied behind the contrasting flags of PL/I, C and Ada, want to put a semicolon behind every instruction. + +Each side’s arguments are endlessly relayed by its propaganda machine. The Terminatists worship uniformity: if every instruction is terminated by the same marker, no one ever has to ask the question “do I need a semicolon here?” (the answer in Terminatist languages is always yes, and anyone who forgets a semicolon is immediately beheaded for high treason). They do not want to have to add or remove a semicolon because an instruction has been moved from one syntactical location to another, for example if it has been brought into a conditional instruction or taken out of it. + +The Separatists praise the elegance of their convention and its compatibility with mathematical practices. They see do instruction1; instruction2; instruction3 end as the natural counterpart of f (argument1, argument2, argument3). Who in his right mind, they ask, would prefer f (argument1, argument2, argument3,) with a superfluous final comma? They contend, furthermore, that the Terminatists are just a front for the Compilists, a cruel people whose only goal is to make life easy for compiler writers, even if that means making it hard for application developers. + +The Separatists constantly have to fight against innuendo, for example the contention that Separatist languages will prevent you from including extra semicolons. Again and again they must repeat the truth: that every Separatist language worthy of the name, beginning with the venerated Patriarch of the tribe, Algol 60, has supported the notion of empty instruction, permitting all of + +a; b; c +a; b; c; +; a ;; b ;;; c; + +to be equally valid, and to mean exactly the same thing, as they only differ by the extra empty instructions of the last two variants, which any decent compiler will discard anyway. They like to point out how much more tolerant this convention makes them: whereas their fanatical neighbors will use any missing semicolon as an excuse for renewed attacks, the Separatists will gladly accept as many extra semicolons as a Terminatist transfuge may still, out of habit, drop into an outwardly Separatist text. + +Modern propaganda needs science and statistics, so the Terminatists have their own experimental study, cited everywhere (in particular as the justification for the Terminatist convention of the Ada language): a 1975 measurement of the errors made by two groups of 25 programmers each, using languages that, among other distinguishing traits, treated semicolons differently. The results show the Separatist style causing almost ten times as many errors! Starting to feel the heat of incessant enemy broadcasts, the Separatist leadership turned for help to the author of the present book, who remembered a long-forgotten principle: quoting is good, but reading is better. So he fearlessly went back to the original article and discovered that the Separatist language used in the comparison — a mini-language meant only for “teaching students the concepts of asynchronous processes” — treats an extra semicolon after the final instruction of a compound, as in begin a; b; end, as an error! No real Separatist language, as noted above, has ever had such a rule, which would be absurd in any circumstance (as an extra semicolon is obviously harmless), and is even more so in the context of the article’s experiment since some of the subjects apparently had Terminatist experience from PL/I and so would have been naturally prone to add a few semicolons here and there. It then seems likely, although the article gives no data on this point, that many of the semicolon errors were a result of such normally harmless additions — enough to disqualify the experiment, once and for all, as a meaningful basis for defending Terminatism over Separatism. + +On some of the other issues it studies, the article is not marred by such flaws in its test languages, so that it still makes good reading for people interested in language design. + +All this shows, however, that it is dangerous to take sides in such a sensitive debate, especially for someone who takes pride in having friends in both camps. The solution adopted by the notation of this book is radical: + +====Semicolon Syntax rule==== +Semicolons, as markers to delimit instructions, declarations or assertion clauses, are optional in almost all the positions where they may appear in the notation of this book. + + +“Almost” because of a few rare cases, not encountered in this book, in which omitting the semicolon would cause a syntactical ambiguity. + +The Semicolon Syntax rule means you can choose your style: + +*Terminatist: every instruction, declaration or assertion clause ends with a semicolon. +*Separatist: semicolons appear between successive elements but not, for example, after the last declaration of a feature or local clause. +*Moderately Separatist: like the Separatist style, but not worrying about extra semicolons that may appear as a result of habit or of elements being moved from one context to another. +*Discardist: no semicolons at all (except as per the Semicolon Style principle below). + +This is one of the areas where it is preferable to let each user of the notation follow his own inclination, as the choice cannot cause serious damage. But do stick, at least across a class and preferably across an entire library or application, to the style that you have chosen (although this will not mean much for the Moderately Separatist style, which is by definition lax), and observe the following principle: + +====Semicolon Style principle==== +If you elect to include semicolons as terminators (Terminatist style), do so for all applicable elements. + +If you elect to forego semicolons, use them only when syntactically unavoidable, or to separate elements that appear on the same line. + + +The second clause governs elements that appear two or more to a line, as in + +found := found + 1; forth + + +which should always include the semicolon; omitting it would make the line quite confusing. + +Just for once, this discussion has no advice here, letting you decide which of the four styles you prefer. Since the earliest version of the notation required semicolons — in other words, it had not yet been tuned to support the Semicolon Syntax rule — the first edition of this book used a Separatist style. For the present one I dabbled into a few experiments; after polling a sizable group of co-workers and experienced users of the notation, I found (apart from a handful of Terminatists) an almost equal number of Discardists and Separatists. Some of the Discardists were very forceful, in particular a university professor who said that the main reason his students loved the notation is that they do not need semicolons — a comment which any future language designer, with or without grandiose plans, should find instructive or at least sobering. + +You should defer to your own taste as long as it is consistent and respects the Semicolon Style principle. (As to this book: for a while I stuck to the original Separatist style, more out of habit than of real commitment; then, hearing the approach of the third millenium and its call to start a new life free of antique superstitions, I removed all the semicolons over a single night of utter debauchery.) + +===Assertions=== +You should label assertion clauses to make the text more readable: + +require + not_too_small: index >= lower + + +This convention also helps produce useful information during testing and debugging since, as you will remember, the assertion label will be included in the run-time message produced if you have enabled monitoring of assertions and one of them gets violated. + +This convention will spread an assertion across as many lines as it has clauses. As a consequence, it is one of the rules to which the present book has made a few exceptions, again in the interest of saving space. When collapsing several clauses on one line, you should actually remove the labels for readability: + +require + index >= lower; index <= upper + +In normal circumstances, that is to say for software texts rather than a printed textbook, better stick to the official rule and have one labeled clause per line. + +==FONTS== +In typeset software texts, the following conventions, used throughout this book and related publications, are recommended. + +===Basic font rules=== + +Print software elements (class names, feature names, entitiesº) in italics to distinguish them from non-software text elements. This facilitates their inclusion in sentences of the non-software text, such as “We can see that the feature number is a query, not an attribute”. (The word number denotes the name of the feature; you do not want to mislead your reader into believing that you are talking about the number of features!) + +Keywords, such as class, feature, invariant and the like, appear in boldface. + +This was also the convention of the first edition of this book. At some stage it seemed preferable to use boldface italics which blends more nicely with italics. What was esthetically pleasing, however, turned out to hamper quality; some readers complained that the keywords did not stand out clearly enough, hence the return to the original convention. This is a regrettable case of fickleness. [M 1994a] and a handful of books by other authors show the intermediate convention. + +Keywords play a purely syntactic role: they have no semantics of their own but delimit those elements, such as feature and class names, that do carry a semantic value. As noted earlier in this chapter, there are also a few non-keyword reserved words, such as Current and Result, which have a denotation of their own — expressions or entities. They are written in non-bold italics, with an initial upper-case letter. + +Following the tradition of mathematics, symbols — colons and semicolons : ;, brackets [ ], parentheses ( ), braces { }, question and exclamation marks ? ! and so on — should always appear in roman (straight), even when they separate text in italics. Like keywords, they are purely syntactic elements. + +Comments appear in roman. This avoids any ambiguity when a feature name — which, according to the principles seen earlier, will normally be a word from ordinary language — or an argument name appears in a comment; the feature name will be in italics and hence will stand out. For example: + +accelerate (s: SPEED; t: REAL) + -- Bring speed to s in at most t seconds. + + +set_number (n: INTEGER) + -- Make n the new value of number. + + +In the software text itself, where no font variations are possible, such occurrences of formal elements in comments should follow a specific convention already mentioned earlier: they will appear preceded by a back quote ‘ and followed by a normal quote ’ , as in + + -- Make ‘n’ the new value of ‘number’. + +(Remember that you must use two different quote characters for opening and closing.) Tools that process class texts and can produce typeset output, such as short and flat, know this convention and so can make sure the quoted elements are printed in italics. + +===Other font conventions=== +The preceding font conventions work well for a book, an article or a Web page. Some contexts, however, may call for different approaches. In particular, elements in plain italics, and sometimes even bold italics, are not always readable when projected on a projection screen, especially if what you are projecting is the output of a laptop computer with a relatively small display. + +In such cases I have come to using the following conventions: + +Use non-italics boldface for everything, as this projects best. + +Choose a wide enough font, such as Bookman (for which boldface may be called “demibold”). + +Instead of italics versus roman versus bold, use color to distinguish the various elements: keywords in black; comments in red; the rest (entities, feature names, expressionsº) in blue. More colors can be used to highlight special elements. + +These conventions seem to work well, although there is always room for improvement, and new media will undoubtedly prompt new conventions. + +===Color=== +The particularly attentive reader may by now have come to notice another convention used by this book: for added clarity, all formal elements — software texts or text extracts, but also mathematical elements — appear in color. This technique, which of course cannot be presented as a general requirement, enhances the effect of the rules seen so far on font usage. + +==BIBLIOGRAPHICAL NOTES== +*[Waldén 1995] is the source of the idea of showing by example that even a longer separated_by_underscores identifier is easier to read than an internalUpperCase identifier. +*[Gannon 1975] is an experimental study of the effect of various language design choices on error rates. +*The rules on standard feature names were first presented in [M 1990b] and are developed in detail in [M 1994a]. +*I received important comments from Richard Wiener on students’ appreciation of the optionality of semicolons, and from Kim Waldén on the respective merits of bold italics and plain bold. + +==EXERCISES== +===Header comment style=== +Rewrite the following header comments in the proper style: + +reorder (s: SUPPLIER; t: TIME) + -- Reorders the current part from supplier s, to be delivered + -- on time t; this routine will only work if t is a time in the future. + require + not_in_past: t >= Now + + +next_reorder_date: TIME + -- Yields the next time at which the current part is scheduled + -- to be reordered. + + +===Semicolon ambiguity=== +Can you think of a case in which omitting a semicolon between two instructions or assertions could cause syntactic ambiguity, or at least confuse a simple-minded parser? (Hint: a feature call can have as its target a parenthesized expression, as in (vector1 + vector2) l count.) diff --git a/documentation/20.05/eiffel/Coding_Standards/index.wiki b/documentation/20.05/eiffel/Coding_Standards/index.wiki new file mode 100644 index 00000000..e9efed5a --- /dev/null +++ b/documentation/20.05/eiffel/Coding_Standards/index.wiki @@ -0,0 +1,4 @@ +[[Property:uuid|9396770A-E53B-4629-84A9-CB2A6680AAAD]] +[[Property:weight|5]] +[[Property:title|Coding Standards]] +Below are the coding and style guidelines followed at Eiffel Software to write the Eiffel and C code of EiffelStudio. \ No newline at end of file diff --git a/documentation/20.05/eiffel/Examples/example-command-line-arguments.wiki b/documentation/20.05/eiffel/Examples/example-command-line-arguments.wiki new file mode 100644 index 00000000..fdf0637c --- /dev/null +++ b/documentation/20.05/eiffel/Examples/example-command-line-arguments.wiki @@ -0,0 +1,68 @@ +[[Property:modification_date|Thu, 22 Nov 2018 19:50:45 GMT]] +[[Property:publication_date|Thu, 22 Nov 2018 19:50:45 GMT]] +[[Property:title|Example: Command line arguments]] +[[Property:weight|0]] +[[Property:uuid|ba852d83-3c02-4d38-088a-60b76fe5c63f]] +==Description== + +Retrieve the list of command-line arguments given to the program. +Example command line: + +myprogram -c "alpha beta" -h "gamma" + + +==Notes== + +This class inherits functionality for dealing with command line arguments from class ARGUMENTS. It uses the feature separate_character_option_value to return the values by option name for each of the two arguments. ARGUMENTS provides a rich set of features for command line argument processing. + +The simple version in [[#Solution|Solution]] below is as submitted to Rosetta Code to illustrate class ARGUMENTS, but it should be noted that separate_character_option_value is of a detached type and will return a void reference if no value is found for a specified character option. Therefore, a safer version of the use of separate_character_option_value would include object test on the result: + + + if attached separate_character_option_value ('c') as l_val then + print ("Command line argument value for option 'c' is: ") + print (l_val + "%N") + end + if attached separate_character_option_value ('h') as l_val then + print ("Command line argument value for option 'h' is: ") + print (l_val + "%N") + end + + +==Source== + +Problem description from [http://rosettacode.org/wiki/Command-line_arguments Rosetta Code] + +==Solution== + + +class + APPLICATION +inherit + ARGUMENTS +create + make +feature {NONE} -- Initialization + make + -- Print values for arguments with options 'c' and 'h'. + do + print ("Command line argument value for option 'c' is: ") + print (separate_character_option_value ('c') + "%N") + print ("Command line argument value for option 'h' is: ") + print (separate_character_option_value ('h') + "%N") + io.read_line -- Keep console window open + end +end + + + +==Output (for command line arguments: -c "alpha beta" -h "gamma")== + + +Command line argument value for option 'c' is: alpha beta +Command line argument value for option 'h' is: gamma + + + +{{SeeAlso|[[Execution_profiles|How to run with arguments]]}} + + diff --git a/documentation/20.05/eiffel/Examples/example-environment-variables.wiki b/documentation/20.05/eiffel/Examples/example-environment-variables.wiki new file mode 100644 index 00000000..2f214bfb --- /dev/null +++ b/documentation/20.05/eiffel/Examples/example-environment-variables.wiki @@ -0,0 +1,41 @@ +[[Property:title|Example: Environment variables]] +[[Property:weight|0]] +[[Property:uuid|60c39a34-0794-4c1f-a150-7431afa3e693]] +==Description== + +Using features from the class EXECUTION_ENVIRONMENT to create and retrieve an environment variable. + +==Notes== + +The make procedure of the class APPLICATION below uses the features put and get, inherited from the class EXECUTION_ENVIRONMENT, to create the environment variable MY_VARIABLE with value "Hello World!", and then to retrieve the value by key and print it. + +==Solution== + + +class + APPLICATION + +inherit + EXECUTION_ENVIRONMENT + +create + make + +feature {NONE} -- Initialization + make + -- Create and retrieve an environment variable. + do + put ("Hello World!", "MY_VARIABLE") + print (get ("MY_VARIABLE")) + end +end + + + +==Output== + + +Hello World! + + + diff --git a/documentation/20.05/eiffel/Examples/example-file-io.wiki b/documentation/20.05/eiffel/Examples/example-file-io.wiki new file mode 100644 index 00000000..abaafd16 --- /dev/null +++ b/documentation/20.05/eiffel/Examples/example-file-io.wiki @@ -0,0 +1,52 @@ +[[Property:title|Example: File IO]] +[[Property:weight|0]] +[[Property:uuid|b26aa8e3-5963-94ae-b523-642c8b79637b]] +==Description== + +Create a file "output.txt" containing the contents of "input.txt". + + +==Source== + +Problem description from [http://rosettacode.org/wiki/File_IO Rosetta Code: File IO] + +==Solution== + + +class + APPLICATION + +create + make + +feature {NONE} -- Initialization + + make + -- Run application. + do + create input_file.make_open_read ("input.txt") + create output_file.make_open_write ("output.txt") + + from + input_file.read_character + until + input_file.exhausted + loop + output_file.put (input_file.last_character) + input_file.read_character + end + + input_file.close + output_file.close + end + +feature -- Access + + input_file: PLAIN_TEXT_FILE + output_file: PLAIN_TEXT_FILE + +end + + + + diff --git a/documentation/20.05/eiffel/Examples/example-polymorphism.wiki b/documentation/20.05/eiffel/Examples/example-polymorphism.wiki new file mode 100644 index 00000000..3896a8a2 --- /dev/null +++ b/documentation/20.05/eiffel/Examples/example-polymorphism.wiki @@ -0,0 +1,218 @@ +[[Property:title|Example: Polymorphism]] +[[Property:weight|0]] +[[Property:uuid|e4a9db32-c087-21b7-f0d6-4685f0ce249d]] +==Description== + +Create a class POINT and its heir CIRCLE to demonstrate polymorphic attachment and dynamic binding. + + +==Source== + +Problem description from [http://rosettacode.org/wiki/Polymorphism Rosetta Code: Polymorphism] + +Solution varies from Rosetta Code description (e. g., feature out is redefined in this solution, versus feature print.) + +==Solution== + + +class + POINT +inherit + ANY + redefine + out + end +create + make, make_origin + +feature -- Initialization + + make (a_x, a_y: INTEGER) + -- Create with values `a_x' and `a_y' + do + set_x (a_x) + set_y (a_y) + ensure + x_set: x = a_x + y_set: y = a_y + end + + make_origin + -- Create at origin + do + ensure + x_set: x = 0 + y_set: y = 0 + end + +feature -- Access + + x: INTEGER assign set_x + -- Horizontal axis coordinate + + y: INTEGER assign set_y + -- Vertical axis coordinate + +feature -- Element change + + set_x (a_x: INTEGER) + -- Set `x' coordinate to `a_x' + do + x := a_x + ensure + x_set: x = a_x + end + + set_y (a_y: INTEGER) + -- Set `y' coordinate to `a_y' + do + y := a_y + ensure + y_set: y = a_y + end + +feature -- Output + + out: STRING + -- Display as string + do + Result := "Point: x = " + x.out + " y = " + y.out + end +end + + + + +class + CIRCLE + +inherit + POINT + rename + make as point_make + redefine + make_origin, + out + end +create + make, make_origin, make_from_point + +feature -- Initialization + + make (a_x, a_y, a_r: INTEGER) + -- Create with values `a_x' and `a_y' and `a_r' + require + non_negative_radius_argument: a_r >= 0 + do + point_make (a_x, a_y) + set_r (a_r) + ensure + x_set: x = a_x + y_set: y = a_y + r_set: r = a_r + end + + make_origin + -- Create at origin with zero radius + do + Precursor + ensure then + r_set: r = 0 + end + + make_from_point (a_p: POINT; a_r: INTEGER) + -- Initialize from `a_r' with radius `a_r'. + require + non_negative_radius_argument: a_r >= 0 + do + set_x (a_p.x) + set_y (a_p.y) + set_r (a_r) + ensure + x_set: x = a_p.x + y_set: y = a_p.y + r_set: r = a_r + end + +feature -- Access + + r: INTEGER assign set_r + -- Radius + +feature -- Element change + + set_r (a_r: INTEGER) + -- Set radius (`r') to `a_r' + require + non_negative_radius_argument: a_r >= 0 + do + r := a_r + ensure + r_set: r = a_r + end + +feature -- Output + + out: STRING + -- Display as string + do + Result := "Circle: x = " + x.out + " y = " + y.out + " r = " + r.out + end + +invariant + + non_negative_radius: r >= 0 + +end + + + + +class + APPLICATION + +create + make + +feature {NONE} -- Initialization + + make + -- Run application. + local + my_point: POINT + my_circle: CIRCLE + do + create my_point.make_origin + print (my_point.out + "%N") + + create {CIRCLE} my_point.make_origin + print (my_point.out + "%N") + + create my_point.make (10, 15) + print (my_point.out + "%N") + + create {CIRCLE} my_point.make (20, 25, 5) + print (my_point.out + "%N") + + create my_circle.make (30, 35, 10) + print (my_circle.out + "%N") + + create my_circle.make_from_point (my_point, 35) + print (my_circle.out + "%N") + end + +end + + + +==Output== + + +Point: x = 0 y = 0 +Circle: x = 0 y = 0 r = 0 +Point: x = 10 y = 15 +Circle: x = 20 y = 25 r = 5 +Circle: x = 30 y = 35 r = 10 +Circle: x = 20 y = 25 r = 35 + + diff --git a/documentation/20.05/eiffel/Examples/example-reverse-string.wiki b/documentation/20.05/eiffel/Examples/example-reverse-string.wiki new file mode 100644 index 00000000..cd29c929 --- /dev/null +++ b/documentation/20.05/eiffel/Examples/example-reverse-string.wiki @@ -0,0 +1,41 @@ +[[Property:title|Example: Reverse a string]] +[[Property:weight|0]] +[[Property:uuid|d888d308-6bb7-edd5-ee25-92d04b5658d3]] +==Description== + +Reverse the order of the characters in a give string of characters. + + +==Source== + +Problem description from [http://rosettacode.org/wiki/Reverse_a_string Rosetta Code] + + +==Solution== + + +class + APPLICATION +create + make +feature + make + -- Demonstrate string reversal. + do + my_string := "Hello World!" + my_string.mirror + print (my_string) + end + my_string: STRING + -- Used for reversal +end + + + +==Output== + + +!dlroW olleH + + + diff --git a/documentation/20.05/eiffel/Examples/example-self-initializing-attributes-and-assigner-commands.wiki b/documentation/20.05/eiffel/Examples/example-self-initializing-attributes-and-assigner-commands.wiki new file mode 100644 index 00000000..38f0a2ab --- /dev/null +++ b/documentation/20.05/eiffel/Examples/example-self-initializing-attributes-and-assigner-commands.wiki @@ -0,0 +1,84 @@ +[[Property:title|Example: Self-initializing attributes and assigner commands]] +[[Property:weight|0]] +[[Property:uuid|dbc107a4-42cd-606a-71b2-e0b70ac5482e]] +==Description== + +Example of using a [[Void-safety: Background, definition, and tools#Self-initializing attributes|self-initializing attribute]] and an [[ET: The Dynamic Structure: Execution Model#Assigner commands|assigner command]]. + +==Notes== + +The concepts of [[Void-safety: Background, definition, and tools#Self-initializing attributes|self-initializing attributes]] and [[ET: The Dynamic Structure: Execution Model#Assigner commands|assigner commands]] are independent of one another. However, this example shows how each works in a small amount of code. + +The example consists of two classes: a root class, and class PERSON. The PERSON class has a self-initializing attribute of type STRING named mood. If mood is accessed before it is explicitly initialized, then the self-initializing code after the keyword attribute will be executed, setting the default mood to "Happy". + +The attribute mood also has an assigner command, the procedure set_mood, designated as such by the assign keyword. This allows clients of class PERSON to appear to assign directly to mood. However, the assigner command set_mood will always get executed, and its precondition will be in force during such an apparent assignment. + +The root class APPLICATION creates an instance of PERSON and prints the value of mood, getting the self-iniitalized value. Then it assigns to mood. When it prints again, it gets the updated value. + +==Source== + +Adapted from an example given on the Eiffel Software Users Group. + +==Solution== + +A root class: + + +class + APPLICATION + +create + make + +feature {NONE} -- Initialization + + make + -- Print and set mood of `my_person'. + do + create my_person + print ("Mood: " + my_person.mood + "%N") + my_person.mood := "Ecstatic" + print ("Mood: " + my_person.mood + "%N") + end + +feature -- Access + + my_person: PERSON + +end + + + +Class PERSON: + + +class + PERSON + +feature -- Access + + mood: STRING assign set_mood + attribute + Result := "Happy" + end + +feature -- Element change + + set_mood (a_string: STRING) + require + single_token: a_string.occurrences (' ') = 0 + do + mood := a_string + ensure + mood_set: mood = a_string + end +end + + +==Output== + + +Mood: Happy +Mood: Ecstatic + + diff --git a/documentation/20.05/eiffel/Examples/example-sieve-eratosthenes.wiki b/documentation/20.05/eiffel/Examples/example-sieve-eratosthenes.wiki new file mode 100644 index 00000000..f5b891f5 --- /dev/null +++ b/documentation/20.05/eiffel/Examples/example-sieve-eratosthenes.wiki @@ -0,0 +1,64 @@ +[[Property:title|Example: Sieve of Eratosthenes]] +[[Property:weight|0]] +[[Property:uuid|e825c874-4266-b5ee-501c-221e6940dacd]] +==Description== + +Deliver prime numbers up to a specified integer limit. Compute prime numbers using sieve of Eratosthenes. + +==Notes== + +This example uses the ''iteration'' (across) form of the Eiffel loop construct to traverse a list, an array, and an integer interval. + +==Source== + +Problem description from [http://rosettacode.org/wiki/Sieve_of_Eratosthenes Rosetta Code] + + +==Solution== + + +class + APPLICATION + +create + make + +feature + make + -- Run application. + do + across primes_through (100) as ic loop print (ic.item.out + " ") end + end + + primes_through (a_limit: INTEGER): LINKED_LIST [INTEGER] + -- Prime numbers through `a_limit' + require + valid_upper_limit: a_limit >= 2 + local + l_tab: ARRAY [BOOLEAN] + do + create Result.make + create l_tab.make_filled (True, 2, a_limit) + across + l_tab as ic + loop + if ic.item then + Result.extend (ic.target_index) + across ((ic.target_index * ic.target_index) |..| l_tab.upper).new_cursor.with_step (ic.target_index) as id + loop + l_tab [id.item] := False + end + end + end + end +end + + + +==Output== + + +2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 + + + diff --git a/documentation/20.05/eiffel/Examples/example-sleep.wiki b/documentation/20.05/eiffel/Examples/example-sleep.wiki new file mode 100644 index 00000000..c3003c3b --- /dev/null +++ b/documentation/20.05/eiffel/Examples/example-sleep.wiki @@ -0,0 +1,54 @@ +[[Property:title|Example: Sleep]] +[[Property:weight|0]] +[[Property:uuid|a846db1c-2096-43a9-bb8b-a233c9e21421]] +==Description== + +Write a program that does the following in this order: +# Input an amount of time to sleep in whatever units are most natural for your language (milliseconds, seconds, ticks, etc.). This unit should be noted in comments or in a description. +# Print "Sleeping..." +# Sleep the main thread for the given amount of time. +# Print "Awake!" +# End. + +==Notes== + +The feature sleep is defined in the library class EXECUTION_ENVIRONMENT. So the demonstration class APPLICATION inherits from EXECUTION_ENVIRONMENT in order to make sleep available. + +sleep takes an argument which declares the number of nanoseconds to suspend the thread's execution. + +==Source== + +Problem description from [http://rosettacode.org/wiki/Sleep Rosetta Code] + +==Solution== + + +class + APPLICATION +inherit + EXECUTION_ENVIRONMENT +create + make +feature -- Initialization + make + -- Sleep for a given number of nanoseconds. + do + print ("Enter a number of nanoseconds: ") + io.read_integer_64 + print ("Sleeping...%N") + sleep (io.last_integer_64) + print ("Awake!%N") + end +end + + + +==Output (sleeping 10 seconds)== + + +Enter a number of nanoseconds: 10000000000 +Sleeping... +Awake! + + + diff --git a/documentation/20.05/eiffel/Examples/index.wiki b/documentation/20.05/eiffel/Examples/index.wiki new file mode 100644 index 00000000..35c8fbb5 --- /dev/null +++ b/documentation/20.05/eiffel/Examples/index.wiki @@ -0,0 +1,10 @@ +[[Property:title|Examples]] +[[Property:description|how common programming problems can be solved using Eiffel]] +[[Property:weight|6]] +[[Property:uuid|1a59e03b-8bf0-8426-43b4-577761e40790]] +Here you will find examples of how common programming problems can be solved using Eiffel. + +A set of examples is also included with the EiffelStudio distribution kit. + + + diff --git a/documentation/20.05/eiffel/Examples/introduction-examples-book.wiki b/documentation/20.05/eiffel/Examples/introduction-examples-book.wiki new file mode 100644 index 00000000..755605a5 --- /dev/null +++ b/documentation/20.05/eiffel/Examples/introduction-examples-book.wiki @@ -0,0 +1,26 @@ +[[Property:modification_date|Mon, 10 Sep 2018 09:10:34 GMT]] +[[Property:publication_date|Mon, 10 Sep 2018 09:10:34 GMT]] +[[Property:title|Introduction to the Examples Book]] +[[Property:weight|-1]] +[[Property:uuid|044fa742-f3ca-9f5b-01cc-7194ee172b08]] + +EiffelStudio comes with a rich set of examples that you can use to learn how to use the many Eiffel facilities and libraries. You should look first to the examples distributed with EiffelStudio as your primary source of samples of Eiffel in use. + +The examples in this book are somewhat different in nature and serve a different purpose. + +Although some of the examples included here are provided by Eiffel Software, the intent is that the majority of the entries will be contributed by people like you who use Eiffel daily to solve real problems. + +The inspiration for this book is the many ''program chrestomathies'' on the World-Wide Web. In natural language, a chrestomathy is a set of literary passages explicitly selected for the purpose of helping learn a language. A program chrestomathy is a set of problems for which solutions are represented in various programming languages with the aim of allowing programmers to compare language capabilities and programming techniques. + +Program chrestomathies vary widely. At one end of the spectrum [http://99-bottles-of-beer.net/ 99 Bottles of Beer] has collected solutions in over one thousand programming languages, all targeted to a single problem: generate and print the complete lyrics of the song ''99 Bottles of Beer on the Wall''. There are several "Hello world!" chrestomathies. Other sites host multiple programming problems, all with solutions in many languages. One large multi-problem site is [http://rosettacode.org/wiki/Main_Page Rosetta Code]. In fact, Rosetta Code maintains a [http://rosettacode.org/wiki/Help:Similar_Sites list of links to many of the Web's other programming chrestomathy projects]. + +Eiffel has a presence on many of these sites. Still, the more examples, the better. + +The purpose of the examples in this book, then, is two-fold. First, we get a set of Eiffel examples in the Eiffel online documentation with solutions to a different set of problems than the examples distributed with EiffelStudio. Second, examples from this set can be migrated to Rosetta Code or one of the other chrestomathies to improve Eiffel's presence on those sites. (The caveat to contributors is clear: '''Contribute only work that you have the authority to release, and only if you are willing to have your work shared on one or more of the program chrestomathies.''' By submitting content to this Examples book, you agree to release that content under terms no more restrictive than the GNU Free Documentation License.) + +Sites like Rosetta Code and [http://en.literateprograms.org/LiteratePrograms:Welcome Literate Programs] offer a wide variety of programming problems or tasks for comparison of languages and techniques. Rosetta Code provides an index to the [http://rosettacode.org/wiki/Reports:Tasks_not_implemented_in_Eiffel tasks not yet implemented in Eiffel]. + +This book should include, but not necessarily be limited to, certain of the problems used as challenges by program chrestomathies. + + + diff --git a/documentation/20.05/eiffel/Language_reference/index.wiki b/documentation/20.05/eiffel/Language_reference/index.wiki new file mode 100644 index 00000000..a0aabc78 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/index.wiki @@ -0,0 +1,6 @@ +[[Property:title|Language reference]] +[[Property:link_title|Language]] +[[Property:weight|3]] +[[Property:uuid|17412f30-0451-4b2b-bdec-578ca2e619a6]] + + diff --git a/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/Conditional-expression.wiki b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/Conditional-expression.wiki new file mode 100644 index 00000000..e80bb55a --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/Conditional-expression.wiki @@ -0,0 +1,32 @@ +[[Property:modification_date|Wed, 11 Sep 2019 23:28:26 GMT]] +[[Property:publication_date|Wed, 11 Sep 2019 23:28:26 GMT]] +[[Property:uuid|C652AC71-8BAD-4387-A46C-21C9F5C3A68F]] +[[Property:weight|0]] +[[Property:title|Conditional expression]] +[[Property:link_title|Conditional]] + +[[Eiffel_programming_language_syntax#Conditionals|Conditional expressions]] compute a value using different expressions depending on one or more conditions. If all expressions have the same type, the conditional expression as a whole has this type as well: + + + if time < noon then + "Good morning" + elseif time < evening then + "Good afternoon" + else + "Good evening" + end + + +has type `STRING`. + +If the types of the expressions are different, the [[Types#Common_ancestor_types|common ancestor type]] is used as a type of the whole expression. + + + if time < noon then + "Good morning" + else + Void + end + + +has type `detachable STRING`. \ No newline at end of file diff --git a/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/Manifest-array.wiki b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/Manifest-array.wiki new file mode 100644 index 00000000..1d652ce3 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/Manifest-array.wiki @@ -0,0 +1,85 @@ +[[Property:uuid|3C1A6DEF-A6F1-4E64-A0BE-C07BDB382C93]] +[[Property:weight|0]] +[[Property:title|Manifest array]] + +A manifest array is an expression denoting an array by simply listing its elements, as in `<<1, 4, 9, 16, 25>>`. The lower index is always `1` and the upper index is the number of items, `5` in this example. + +The type of a manifest array is always `ARRAY [T]` where `T` is a type to which all the elements conform, `INTEGER` in the previous example. In case of a possible ambiguity you can make the type explicit, as in `{ARRAY [COMPARABLE]} <<7, "Eiffel">>`, where both `INTEGER`, the type of `7`, and `STRING`, the type of `"Eiffel"`, conform to `COMPARABLE`. + +== What are manifest arrays good for? == + +Use a manifest array to initialize an element by simply listing its initial elements. For example, with the declaration + +```eiffel +squares: ARRAY [INTEGER] +``` + +you can initialize `squares` through + +```eiffel +squares := <<1, 4, 9, 16, 25>> +``` + +This is simpler than the alternative, which would be to create the array explicitly and give a value to every element in turn: +```eiffel + -- Arguments to `make_filled` are: default value, lower bound, upper bound. +create squares.make_filled (0, 1, 5) +squares [1] := 1 +squares [2] := 4 +squares [3] := 9 +squares [4] := 16 +squares [5] := 25 +``` + +The first form, with the manifest array, is shorter, but the effect is the same. + +Manifest arrays are normal arrays, not restricted in any way. You can for example add elements to them, as in + +```eiffel + -- Arguments to `force` are: value, position. +squares.force (36, 6) +``` + +which will resize the array to bounds 1 and 6. + +== Type of a manifest array: the implicit case == + +If you do not explicitly specify an array type, the type of the manifest array is as follows: + +* For an empty manifest array `<<>>`: `ARRAY [NONE]`. (In the following cases we assume the array is not empty.) + +* If all elements are of the same exact type `T`: `ARRAY [T]`. + +* If the types of all elements all conform to a type `T`: `ARRAY [T]`. Note that in this case `T` is unique since two different types cannot conform to each other. (The preceding case, all types identical, is a special case of this one, since a type conforms to itself.) + +* Otherwise: `ARRAY [ANY]`. + +As an example of the third case (conformance of all elements to one of them), assume `POLYGON` and `CIRCLE` both conform to `FIGURE`. Then the manifest array `<>`, with `a_polygon` of type `POLYGON` and so on, is `ARRAY [FIGURE]`. + +== Type of a manifest array: the explicit case == + +With the preceding rule, the type of `<<7, "Eiffel">>` is the most general possible one, `ARRAY [ANY]`, since `INTEGER` and `STRING` do not conform to each other (either way). If you are not happy with this default type, you can make the array type explicit by writing it in braces: + +```eiffel +{ARRAY [COMPARABLE]} <<7, "Eiffel">> +``` + +The rule in such a case is that in `{ARRAY [T]} <>` the types of all elements must conform to `T`. + +As another example, with + +```eiffel +figures: ARRAY [FIGURE] +``` + +you cannot assign `<>` to `figures` since the type of the manifest array is `ARRAY [ANY]`. To make this assignment possible, use an explicit type: + +```eiffel +figures := {ARRAY [FIGURE]} <> +``` + +You can also use this form to give an explicit type to an empty array, which would otherwise be of type `ARRAY [NONE]`. For example, with `figures` declared as above: + +```eiffel +figures := {ARRAY [FIGURE]} <<>> +``` diff --git a/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/index.wiki b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/index.wiki new file mode 100644 index 00000000..be9b0720 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Expressions/index.wiki @@ -0,0 +1,5 @@ +[[Property:uuid|F904B70B-4C34-459B-A146-E10C7EC30136]] +[[Property:weight|0]] +[[Property:title|Expressions]] + +[[Eiffel%20programming%20language%20syntax#Expressions|Expressions]] are used to compute a value at run-time and have an associated type at compile-time. \ No newline at end of file diff --git a/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Types.wiki b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Types.wiki new file mode 100644 index 00000000..55b45e17 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/Types.wiki @@ -0,0 +1,44 @@ +[[Property:uuid|88764AFC-7DC5-4547-8B8C-4C0A489B0620]] +[[Property:weight|0]] +[[Property:title|Types]] + +== Common ancestor type == + +A '''common ancestor type''' is a type computed for a list of types using the following algorithm: + +# Add `NONE` to the list of types (to make sure the list is never empty). +# If there is a separate type in the list, add a mark `separate` in front of all non-separate types in the list. +# If there is a detachable type in the list, add a mark `detachable` in front of all attached types in the list. +# If there is a type in the list to which all other types conform, it is the common ancestor type. +# Otherwise, add `ANY` to the list and repeat steps starting from step #2. + + +Here are some examples: +{| +! Type list +! Common ancestor type +|- +| (empty) +| NONE +|- +| BOOLEAN +| BOOLEAN +|- +| BOOLEAN, BOOLEAN +| BOOLEAN +|- +| INTEGER_32, REAL_64, COMPARABLE +| COMPARABLE +|- +| INTEGER_32, REAL_64 +| ANY +|- +| INTEGER_32, detachable COMPARABLE +| detachable COMPARABLE +|- +| INTEGER_32, separate COMPARABLE +| separate COMPARABLE +|- +| detachable STRING, separate COMPARABLE +| detachable separate COMPARABLE +|} \ No newline at end of file diff --git a/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/eiffel-programming-language-reserved-words.wiki b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/eiffel-programming-language-reserved-words.wiki new file mode 100644 index 00000000..db3328cf --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/eiffel-programming-language-reserved-words.wiki @@ -0,0 +1,527 @@ +[[Property:modification_date|Wed, 11 Sep 2019 18:53:32 GMT]] +[[Property:publication_date|Wed, 11 Sep 2019 14:10:27 GMT]] +[[Property:title|Eiffel programming language reserved words]] +[[Property:link_title|Reserved words]] +[[Property:weight|1]] +[[Property:uuid|047ce062-45de-f25c-f356-ee8ec0fc2d1d]] +In the Eiffel programming language, there are certain words that are considered "reserved". These words have specific meanings recognized by the compiler. As such, it is invalid to attempt to use a reserved word as an ordinary language identifier. + +The reserved words listed in the ISO/ECMA standard are shown below with a brief explanation of their meanings. Links are given where appropriate to the syntax definitions and to descriptions in the online documentation. Occasionally, references to the June 2006 standard document are used and are recognizable as clause numbers in parentheses, i.e., three integers separated by dots, for example: (8.14.1) + + +{{info|The list below includes all the Eiffel reserved words. Some of these words are considered ''language keywords'' while others are not. The distinction is that language keywords are reserved words that are used only as syntactical markers, and have no inherent semantic value. Examples are the keywords do and end. Non-keyword reserved words are those that do carry semantic value, such as True and Current.}} + + +{{note|The set of reserved words supported by the Eiffel Software implementation may vary somewhat from those specified in the current standard. See the [[Differences between standard ECMA-367 and Eiffel Software implementation|"differences" chapter of the online documentation]] for information on these variances.}} + + +==Reserved words== + +===across=== + +Introduces an [[ET: Instructions#Loop|iteration]]. + +===agent=== + +Used to specify an [[ET: Agents|agent]]. + +:[[Eiffel programming language syntax#Agents|Syntax.]] + + +===alias=== + +Used to identify an alternative or alias feature name. + +:[[Eiffel programming language syntax#Feature names|Syntax.]] + +[[ET: The Dynamic Structure: Execution Model#Infix and prefix notations|Usage for infix/prefix notations.]] + +[[ET: The Static Picture: System Organization#External software|Usage in interfaces to external software.]] + +:[[Eiffel programming language syntax#External routines|Syntax.]] + + +===all=== + +Used in [[ET: Inheritance#Changing the export status|export adaptation]] to indicate that a chosen export status applies to all features inherited from a given parent. + +:[[Eiffel programming language syntax#Export adaptation|Syntax.]] + + +===and=== + +The logical conjunction [[Eiffel programming language syntax#Operators|operator]]. Strict when used alone, nonstrict when used with [[#then|then]]. + + +===as=== + +Used when [[ET: Inheritance#Multiple inheritance and renaming|renaming]] features in descendant classes. + +:[[Eiffel programming language syntax#Rename clauses|Syntax.]] + + +===assign=== + +Used to designate [[ET: The Dynamic Structure: Execution Model#Abstraction|assigner commands]]. + +:[[Eiffel programming language syntax#Assigner marks|Syntax.]] + + +===attribute=== + +Introduces an attribute body, as in [[Void-safety: Background, definition, and tools#Self-initializing attributes|self-initializing attributes]]. + +:[[Eiffel programming language syntax#Attribute bodies|Syntax.]] + + +===check=== + +Identifies a [[ET: Other Mechanisms#Check|check instruction]]. + +:[[Eiffel programming language syntax#Check instructions|Syntax.]] + + +===class=== + +Used in a class header in the declaration of a [[ET: The Dynamic Structure: Execution Model#A simple class|class]]. + +:[[Eiffel programming language syntax#Class headers|Class header syntax.]] + + +===convert=== + +Used in converter clauses. + +:[[Eiffel programming language syntax#Converter clauses|Syntax.]] + +Used in feature names for operator aliases, supporting mixed type expressions causing a conversion of the target (8.5.14). + +:[[Eiffel programming language syntax#Feature names|Syntax.]] + + +===create=== + +In the creators part of a class, introduces those procedures which can be used to [[ET: The Dynamic Structure: Execution Model#Creating and initializing objects|initialize instances]]. + +:[[Eiffel programming language syntax#Creators parts|Syntax.]] + +Introduces a [[ET: The Dynamic Structure: Execution Model#Creating and initializing objects|creation instruction]]. + +:[[Eiffel programming language syntax#Creation instructions|Syntax.]] + +Introduces a creation expression (8.20.18) + +:[[Eiffel programming language syntax#Creation expressions|Syntax.]] + +In [[ET: Inheritance#Constrained genericity|constrained genericity]], introduces a list of names of features which can be used as creation procedures with a generic class for a particular formal generic parameter. (8.12.10) + +:[[Eiffel programming language syntax#Generic constraints|Syntax.]] + + +===Current=== + +A predefined entity indicating the current object. + +:[[Eiffel programming language syntax#Entities and variables|Entity syntax.]] + +:[[Eiffel programming language syntax#Types|Anchored types syntax.]] + + +===debug=== + +Introduces a [[ET: Other Mechanisms#Debug|debug instruction]]. + +:[[Eiffel programming language syntax#Debug Instructions|Syntax.]] + + +===deferred=== + +Used in class header to indicate a [[ET: Inheritance#Deferred features and classes|deferred class]]. + +:[[Eiffel programming language syntax#Class headers|Syntax.]] + +Used in routine body to indicate a [[ET: Inheritance#Deferred features and classes|deferred feature]]. + +:[[Eiffel programming language syntax#Routine bodies|Syntax.]] + + +===do=== + +Introduces a sequence of instructions as a routine body, as shown in the [[ET: Hello World|Hello World]] example. + +:[[Eiffel programming language syntax#Routine bodies|Syntax.]] + + +===else=== + +Used in [[ET-_Instructions#Conditional|conditional]] and [[ET-_Instructions#Multi-branch|multi-branch]] instructions to introduce a sequence of instructions to be executed in the case that no specified conditions are met. + +:[[Eiffel programming language syntax#Conditionals|Conditional syntax.]] + +:[[Eiffel programming language syntax#Multi-branch instructions|Multi-branch syntax.]] + +Used in a [[Conditional_expression|conditional expression]] to compute a value in the case that no specified conditions are met. + +:[[Eiffel programming language syntax#Conditionals|Conditional expression syntax.]] + +Used as part of the double reserved word or else, the semi-strict disjunction operator. + +:[[Eiffel programming language syntax#Operators|Syntax.]] + +Used after the reserved word [[#require|require]] as a precondition extension, allowing the weakening of an inherited precondition (8.10.3). + +:[[Eiffel programming language syntax#Assertions|Syntax.]] + + +===elseif=== + +Used in [[ET-_Instructions#Conditional|conditional]] instructions to effect a "multi-branch" choice instruction. + +:[[Eiffel programming language syntax#Conditionals|Syntax.]] + +Used in a [[Conditional_expression|conditional expression]] to effect a "multi-branch" choice to compute of a value. + +:[[Eiffel programming language syntax#Conditionals|Conditional expression syntax.]] + + +===end=== + +Serves to terminate several Eiffel programming language constructs. + +:Syntax for: +::[[Eiffel programming language syntax#Class declarations|Class declarations]] +::[[Eiffel programming language syntax#Feature bodies|Feature bodies]] +::[[Eiffel programming language syntax#Inheritance parts|Inheritance parts]] +::[[Eiffel programming language syntax#Check instructions|Check instructions]] +::[[Eiffel programming language syntax#Generic constraints|Generic constraints: renaming and constraint creators]] +::[[Eiffel programming language syntax#Conditionals|Conditional instructions]] +::[[Eiffel programming language syntax#Multi-branch instructions|Multi-branch instructions]] +::[[Eiffel programming language syntax#Conditionals|Conditional expressions]] +::[[Eiffel programming language syntax#Loops|Loops]] +::[[Eiffel programming language syntax#Debug instructions|Debug instructions]] + + +===ensure=== + +Introduces a [[ET: Design by Contract (tm), Assertions and Exceptions#Expressing assertions|postcondition]]. + +When followed by the reserved word [[#then|then]] denotes a postcondition extension, allowing the strengthening of an inherited postcondition (8.10.3). + +:[[Eiffel programming language syntax#Assertions|Syntax.]] + + +===expanded=== + +Used in a class header to indicate that a class is [[ET: The Dynamic Structure: Execution Model#Type categories|expanded]]. + +:[[Eiffel programming language syntax#Class headers|Syntax.]] + + +===export=== + +Used to [[ET: Inheritance#Changing the export status|change the export status]] (availability to clients) of inherited features. + +:[[Eiffel programming language syntax#Export adaptation|Syntax.]] + + +===external=== + +Denotes an [[ET: The Static Picture: System Organization#External software|external routine]]. External routines are commonly defined to interface with [[C externals|C external routines]] and [[C++ Externals|C++ external routines]]. + +:[[Eiffel programming language syntax#External routines|Syntax]] + + +===False=== + +Boolean manifest constant. + +:[[Eiffel programming language syntax#Manifest constants|Syntax.]] + + +===feature=== + +Introduces a [[ET: Hello World|feature clause]]. + +:[[Eiffel programming language syntax#Feature parts|Syntax.]] + + +===from=== + +Used in [[ET: Other Mechanisms#Loop|loop]] initialization. + +:[[Eiffel programming language syntax#Loops|Syntax.]] + + +===frozen=== + +Used in a class header to mark a class explicitly as frozen. A frozen class prohibits it from serving as a "conforming parent" to other classes. (8.4.5). + +:[[Eiffel programming language syntax#Class headers|Syntax.]] + +Used in a feature declaration to mark a feature as frozen. A frozen feature cannot be redefined by heir classes. + +:[[Eiffel programming language syntax#New feature lists|Syntax.]] + +Used with a formal generic parameter to indicate that conformance of generic derivations of the class require identical actual generic parameters. (8.12.3) + +:[[Eiffel programming language syntax#Formal generic parameters|Syntax.]] + + +===if=== + +Used to introduce a [[ET-_Instructions#Conditional|conditional]]. + +:[[Eiffel programming language syntax#Conditionals|Conditional syntax.]] + +Used to introduce a [[Conditional_expression|Conditional expression]]. + +:[[Eiffel programming language syntax#Conditionals|Conditional expression syntax.]] + + +===implies=== + +The semi-strict logical implication [[Eiffel programming language syntax#Operators|operator]]. + + +===inherit=== + +Used in an [[ET: Inheritance|inherit]] clause. + +:[[Eiffel programming language syntax#Inheritance parts|Syntax.]] + + +===inspect=== + +Introduces a [[ET-_Instructions#Multi-branch|multi-branch]] instruction. + +:[[Eiffel programming language syntax#Multi-branch instructions|Syntax.]] + + +===invariant=== + +Used to introduce an invariant assertion as a [[ET: Design by Contract (tm), Assertions and Exceptions#Class invariants|class invariant]] or [[ET: Instructions#Loop|loop invariant]]. + +:[[Eiffel programming language syntax#Assertions|Assertions syntax.]] + +:[[Eiffel programming language syntax#Class declarations|Syntax of class declaration including class invariant.]] + +:[[Eiffel programming language syntax#Loops|Syntax of loop including loop invariant.]] + + +===like=== + +Used in the declaration of an [[ET: Inheritance#Covariance and anchored declarations|anchored]] entity. + +:[[Eiffel programming language syntax#Types|Syntax.]] + + +===local=== + +Introduces the [[ET: The Dynamic Structure: Execution Model#Entities|local variable]] declarations in a feature body. + +:[[Eiffel programming language syntax#Feature bodies|Feature bodies syntax.]] + +:[[Eiffel programming language syntax#Local variables|Local variable declarations syntax.]] + + +===loop=== + +Introduces a [[ET: Other Mechanisms#Loop|loop]] body. + +:[[Eiffel programming language syntax#Loops|Syntax.]] + + +===not=== + +The logical negation [[Eiffel programming language syntax#Operators|operator]]. + + +===note=== + +Used to begin a Notes part, in a [[Eiffel programming language syntax#Class declarations|class declaration]], a [[Eiffel programming language syntax#Feature declarations|feature declaration]], or a [[Eiffel programming language syntax#Check instructions|check instruction]]. + +:[[Eiffel programming language syntax#Notes|Syntax.]] + + +===obsolete=== + +Used to mark [[ET: Other Mechanisms#Obsolete features and classes|obsolete features and classes]]. + +:[[Eiffel programming language syntax#Feature declarations|Feature declarations syntax.]] + +:[[Eiffel programming language syntax#Class declarations|Class declarations declarations syntax.]] + +:[[Eiffel programming language syntax#Obsolete marks|Obsolete mark syntax.]] + + +===old=== + +Introduces an ''old expression''. Old expressions are valid only in the [[ET: Design by Contract (tm), Assertions and Exceptions#Postconditions|postconditions]] of routines. + +:[[Eiffel programming language syntax#Old postcondition expressions|Syntax.]] + + +===once=== + +Used to introduce [[ET: Other Mechanisms#Once routines and shared objects|once routines]] and once string expressions. + +:[[Eiffel programming language syntax#Routine bodies|Once routine syntax.]] + +:[[Eiffel programming language syntax#Expressions|Once string syntax.]] + + +===only=== + +Used in an ''only postcondition clause''. (8.9.11) + +:[[Eiffel programming language syntax#"Old" postcondition expressions|Syntax.]] + + +===or=== + +The logical disjunction [[Eiffel programming language syntax#Operators|operator]]. Strict when used alone, nonstrict when used with [[#else|else]]. + + +===Precursor=== + +Allows a redefined routine to access the routine it redefines, i.e, its [[ET: Inheritance#Redefinition|precursor]]. + +:[[Eiffel programming language syntax#Precursor|Syntax.]] + + +===redefine=== + +Used in an [[Eiffel programming language syntax#Inheritance parts|inheritance part]] of a [[Eiffel programming language syntax#Class declarations|class declaration]] to list those inherited features which, in the heir class, will receive new implementations, specifications, or both, i.e, those features being [[ET: Inheritance#Redefinition|redefined]]. + +:[[Eiffel programming language syntax#Redefinition|Redefine syntax.]] + + +===rename=== + +Used in an [[Eiffel programming language syntax#Inheritance parts|inheritance part]] of a [[Eiffel programming language syntax#Class declarations|class declaration]] to [[ET: Inheritance#Multiple inheritance and renaming|provide alternative names]] for inherited features in an heir class. + +Used to rename features in a [[Eiffel programming language syntax#Generic constraints|generic constraint]]. (8.12.8). + +:[[Eiffel programming language syntax#Rename clauses|Syntax.]] + + +===require=== + +Introduces a [[ET: Design by Contract (tm), Assertions and Exceptions#Expressing assertions|precondition]]. + +When followed by the reserved word [[#else|else]] denotes a precondition extension, allowing the weakening of an inherited precondition (8.10.3). + +:[[Eiffel programming language syntax#Assertions|Syntax.]] + + + +===rescue=== + +Introduces a [[ET: Design by Contract (tm), Assertions and Exceptions#Exception handling|rescue clause]] in a [[Eiffel programming language syntax#Feature bodies|feature body]]. + +:[[Eiffel programming language syntax#Rescue clauses|Syntax.]] + + +===Result=== + +A predefined [[ET: The Dynamic Structure: Execution Model#Entities|entity]] used to represent the final result of a function. + +:[[Eiffel programming language syntax#Entities and variables|Syntax.]] + + +===retry=== + +An [[Eiffel programming language syntax#Instructions|instruction]] valid only in [[Eiffel programming language syntax#Rescue clauses|rescue clauses]] and used to [[ET: Design by Contract (tm), Assertions and Exceptions#Exception handling|re-execute the routine]] in which it appears. + +:[[Eiffel programming language syntax#Rescue clauses|Syntax.]] + + +===select=== + +Used in an [[Eiffel programming language syntax#Inheritance parts|inheritance part]] of a [[Eiffel programming language syntax#Class declarations|class declaration]] to resolve possible ambiguities related to polymorphism and dynamic binding in the presence of [[ET: Inheritance#Repeated inheritance and selection|repeated inheritance]]. + +:[[Eiffel programming language syntax#Select clauses|Syntax.]] + + +===separate=== + +Reserved for future use. + +{{Note|Used in EiffelStudio implementations version 6.8 and later to support [[Concurrent programming with SCOOP]].}} + + +===then=== + +Used in [[ET-_Instructions#Conditional|conditional]] and [[ET-_Instructions#Multi-branch|multi-branch]] instructions to introduce a sequence of instructions to be executed in the case that a condition is met. + +:[[Eiffel programming language syntax#Conditionals|Conditional syntax.]] + +:[[Eiffel programming language syntax#Multi-branch instructions|Multi-branch syntax.]] + +Used in a [[Conditional_expression|conditional expression]] to compute of a value in the case that a condition is met. + +:[[Eiffel programming language syntax#Conditionals|Conditional expression syntax.]] + +Used as part of the double reserved word and then, the semi-strict conjunction operator. + +:[[Eiffel programming language syntax#Operators|Syntax.]] + +Used after the reserved word [[#ensure|ensure]] as a postcondition extension, allowing the strengthening of an inherited postcondition (8.10.3). + +:[[Eiffel programming language syntax#Assertions|Syntax.]] + + +===True=== + +Boolean manifest constant. + +:[[Eiffel programming language syntax#Manifest constants|Syntax.]] + + +===TUPLE=== + +Denotes a [[ET: Other Mechanisms#Tuple types|TUPLE type]]. + +:[[Eiffel programming language syntax#Tuple types|Syntax.]] + + +===undefine=== + +Used in an [[Eiffel programming language syntax#Inheritance parts|inheritance part]] of a [[Eiffel programming language syntax#Class declarations|class declaration]] to [[ET: Inheritance#Joining and uneffecting|uneffect]] an inherited feature. + +:[[Eiffel programming language syntax#Undefine clauses|Syntax.]] + + +===until=== + +Used in [[ET: Other Mechanisms#Loop|loop]] initialization. + +:[[Eiffel programming language syntax#Loops|Syntax.]] + + +===variant=== + +Introduces a [[ET: Instructions#Loop|loop variant]]. + +:[[Eiffel programming language syntax#Variants|Syntax.]] + + +===Void=== + +A predefined entity name representing a [[ET: The Dynamic Structure: Execution Model#Basic operations|void (a.k.a., null) reference]]. + + +===when=== + +Used in a [[ET-_Instructions#Multi-branch|multi-branch instruction]] to introduce cases. + +:[[Eiffel programming language syntax#Multi-branch instructions|Syntax.]] + + +===xor=== + +The exclusive disjunction [[Eiffel programming language syntax#Operators|operator]]. + + + + diff --git a/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/eiffel-programming-language-syntax.wiki b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/eiffel-programming-language-syntax.wiki new file mode 100644 index 00000000..010192e2 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/eiffel-programming-language-syntax.wiki @@ -0,0 +1,785 @@ +[[Property:modification_date|Mon, 29 Jul 2019 16:52:51 GMT]] +[[Property:publication_date|Mon, 29 Apr 2019 14:08:51 GMT]] +[[Property:title|Eiffel programming language syntax]] +[[Property:link_title|Syntax]] +[[Property:weight|0]] +[[Property:uuid|4CB56AD5-1586-41F6-9E81-085F47E992DC]] +The syntax specification shown here is a less complete and less formal version of that which is in the Eiffel ISO/ECMA standard document. The format is BNF-E. The Language Specification section of the standard document includes an overview of BNF-E. + +There are a few parts of the syntax that are either non-production or non-representable in BNF-E. Some of these have been omitted from the following specification. These omitted parts of the syntax definition add to the precision of the specification, but knowledge of them is not always vital for developers. + +In the BNF-E representation, generally non-terminals which are defined in the same group of productions in which they are used are not linked. However when a non-terminal is defined outside a group in which it is used, it is linked to the group in which it is defined. + +__TOC__ + +The following section contains those non-production elements of the specification that are used later in the BNF-E specification. + +==Eiffel non-production elements== + +===Identifiers=== + +An '''identifier''' is a sequence of one or more alphanumeric [[#Characters|characters]] of which the first is a letter. + +The definition is augmented by the rule that Identifiers are not valid if they are the same as one of the language's reserved words. + +===Characters=== + +Characters are either: + +* All 32-bit, corresponding to Unicode and to the Eiffel type CHARACTER_32. +* All 8-bit, corresponding to 8-bit extended ASCII and to the Eiffel type CHARACTER_8 + +===Reals=== + +A real -- specimen of Real -- is made of the following elements, in the order given: + +* An optional decimal [[#Integers|Integer]], giving the integral part. +* A required "." (dot). +* An optional decimal [[#Integers|Integer]], giving the fractional part. +* An optional exponent, which is the letter ''e'' or ''E'' followed by an optional [[#Manifest constants|Sign]] and a decimal [[#Integers|Integer]]. + +No intervening character (blank or otherwise) is permitted between these elements. The integral and fractional parts may not both be absent. + +===Strings=== + +A string -- specimen of construct String -- is a sequence of zero or more manifest characters. + +===Simple strings=== + +A simple string -- specimen of Simple_string -- is a [[#Strings|String]] consisting of at most one line (that is to say, containing no embedded new-line manifest character), possibly containing [[#Special characters|codes for special characters]]. + +===Special characters=== + +{| border="2" +|+ Special Characters and Their Codes +|- +! Character +! Code +! Mnemonic name +|- +| @ || %A || At-sign +|- +| BS || %B || Backspace +|- +| ^ || %C || Circumflex +|- +| $ || %D || Dollar +|- +| FF || %F || Form feed +|- +| \ || %H || Backslash +|- +| ~ || %L || Tilde +|- +| NL (LF) || %N || Newline +|- +| `` ` `` || %Q || Backquote +|- +| CR || %R || Carriage return +|- +| # || %S || Sharp +|- +| HT || %T || Horizontal tab +|- +| NUL || %U || Null +|- +| | || %V || Vertical bar +|- +| % || %% || Percent +|- +| ' || %' || Single quote +|- +| " || %" || Double quote +|- +| [ || %( || Opening bracket +|- +| ] || %) || Closing bracket +|- +| { || %< || Opening brace +|- +| } || %> || Closing brace +|} + +* `%/123/` represents the character with decimal code `123` . +* And only for manifest character (for now) +** `'%/0x2200/'` represents the character with hexadecimal code U+2200 = '∀' (note `'%/0x2200/' = '%/8704/'` ) +** `'%/0c21000/'` in octal +** `'%/0b10001000000000/'` in binary + + +===Line wrapping parts=== + +A sequence of characters consisting of the following, in order: +* % (percent character) +* Zero or more blanks or tabs +* New line (Line feed) +* Zero or more blanks or tabs +* % (percent character) + +Line wrapping parts are used as separators between one [[#Simple strings|Simple_string]] and the next in a [[#Manifest strings|Basic_manifest_string]] so that the string can be split across lines. + +===New line=== + +A specimen of New_line is a New Line. + + +==Eiffel BNF-E Syntax== + + +===Class names === +Class_name ::= [[#Identfiers|Identifier]] + +===Class declarations === +Class_declaration ::= [[[#Notes|Notes]]] +[[#Class headers|Class_header]] [[[#Formal generic parameters|Formal_generics]]] + +[[[#Obsolete marks|Obsolete]]] + +[[[#Inheritance parts|Inheritance]]] + +[[[#Creators parts|Creators]]] + +[[[#Converter clauses|Converters]]] + +[[[#Feature parts|Features]]] + +[[[#Notes|Notes]]] + +[[[#Assertions|Invariant]]] + +[[[#Notes|Notes]]] + +end + +===Notes === +Notes ::= note Note_list + +Note_list ::= {Note_entry ";" ...}* + +Note_entry ::= Note_name Note_values + +Note_name ::= [[#Identifiers|Identifier]] ":" + +Note_values ::= {Note_item ","...}+ + +Note_item ::= [[#Identifiers|Identifier]] | [[#Manifest constants|Manifest_constant]] + +===Class headers === +Class_header ::= [Header_mark] class [[#Class names|Class_name]] + +Header_mark ::= deferred | expanded | frozen + +===Obsolete marks === +Obsolete ::= obsolete Message + +Message ::= [[#Manifest strings|Manifest_string]] + +===Feature parts === +Features ::= Feature_clause+ + +Feature_clause ::= feature [[[#Clients|Clients]]] [[[#Feature parts|Header_comment]]] Feature_declaration_list + +Feature_declaration_list ::= {[[#Feature declarations|Feature_declaration]] ";" ...}* + +Header_comment ::= [[#Comments|Comment]] + +===Feature declarations === +Feature_declaration ::= [[#New feature lists|New_feature_list]] Declaration_body + +Declaration_body ::= [[[#Formal argument and entity declarations|Formal_arguments]]] [Query_mark] [Feature_value] + +Query_mark ::= Type_mark [[[#Assigner marks|Assigner_mark]]] + +Type_mark ::= ":" [[#Types|Type]] + +Feature_value ::= [Explicit_value] +[[[#Obsolete parts|Obsolete]]] +[[[#Feature parts|Header_comment]]] +[[[#Feature bodies|Attribute_or_routine]]] + +Explicit_value ::= "=" [[#Manifest constants|Manifest_constant]] + + +===New feature lists === +New_feature_list ::= {New_feature "," ...}+ + +New_feature ::= [frozen] [[#Feature names|Extended_feature_name]] + + +===Feature bodies === +Attribute_or_routine ::= [[[#Assertions|Precondition]]] +[[[#Local variable declarations|Local_declarations]]] +Feature_body +[[[#Assertions|Postcondition]]] +[[[#Rescue clauses|Rescue]]] +end + +Feature_body ::= [[#Routine bodies|Deferred]] | [[#Routine bodies|Effective_routine]] | [[#Attribute bodies|Attribute]] + + +===Feature names === +Extended_feature_name ::= Feature_name [Alias] + +Feature_name ::= [[#Identfiers|Identifier]] + +Alias ::= alias '"' Alias_name '"' [convert] + +Alias_name ::= [[#Operators|Operator]] | Bracket + +Bracket ::= "[ ]" + + +===Operators === +Operator ::= Unary | Binary + +Unary ::= not | "+" | "-" | Free_unary + +Binary ::= "+" | "-" | "*" | "/" | "//" | "\\" | "^" | ".." | "<" | ">" | "<=" | ">=" | and | or | xor | and then | or else | implies | Free_binary + +{{note| Free_unary and Free_binary are free operators that are distinct from (respectively) the ''standard'' unary and binary operators (one- or two-character symbols) explicitly listed in the Unary and Binary productions. See ''Definition: Free operator'' in the standard for more precision.}} + + +===Assigner marks === +Assigner_mark ::= assign [[#Feature names|Feature_name]] + + +===Inheritance parts === +Inheritance ::= Inherit_clause+ + +Inherit_clause ::= inherit [Non_conformance] Parent_list + +Non_conformance ::= "{" NONE "}" + +Parent_list ::= {Parent ";" ...}+ + +Parent ::= [[#Types|Class_type]] [Feature_adaptation] + +Feature_adaptation ::= [[[#Undefine clauses|Undefine]]] +[[[#Redefinition|Redefine]]] +[[[#Rename clauses|Rename]]] +[[[#Export adaptation|New_exports]]] +[[[#Select clauses|Select]]] +end + + + +===Rename clauses === +Rename ::= rename Rename_list + +Rename_list ::= {Rename_pair "," ...}+ + +Rename_pair ::= [[#Feature names|Feature_name]] as [[#Feature names|Extended_feature_name]] + + +===Clients === +Clients ::= "{" Class_list "}" + +Class_list ::= {[[#Class names|Class_name]] "," ...}+ + + + +===Export adaptation === +New_exports ::= export New_export_list + +New_export_list ::= {New_export_item ";" ...}+ + +New_export_item ::= [[#Clients|Clients]] [[[#Feature parts|Header_comment]]] Feature_set + +Feature_set ::= Feature_list | all + +Feature_list ::= {[[#Feature names|Feature_name]] "," ...}+ + + + +===Formal argument and entity declarations === +Formal_arguments ::= "(" [[#Formal argument and entity declarations|Entity_declaration_list]] ")" + +Entity_declaration_list ::= {Entity_declaration_group ";" ...}+ + +Entity_declaration_group ::= Identifier_list [[#Feature declarations|Type_mark]] + +Identifier_list ::= {[[#Identfiers|Identifier]] "," ...}+ + + +===Routine bodies === +Deferred ::= deferred + +Effective_routine ::= Internal | [[#External routines|External]] + +Internal ::= Routine_mark [[#Instructions|Compound]] + +Routine_mark ::= do | Once + +Once ::= once [ "("Key_list ")" ] + +Key_list ::= {[[#Manifest strings|Manifest_string]] "," ...}+ + + +===Local variable declarations === +Local_declarations ::= local [[[#Formal argument and entity declarations|Entity_declaration_list]]] + + +===Instructions === +Compound ::= {Instruction ";" ...}* + +Instruction ::= [[#Creation instructions|Creation_instruction]] | [[#Feature calls|Call]] | [[#Assignments|Assignment]] | [[#Assigner calls|Assigner_call]] | [[#Conditionals|Conditional]] | [[#Multi-branch instructions|Multi_branch]] +| [[#Loops|Loop]] | [[#Debug instructions|Debug]] | [[#Precursor|Precursor]] | [[#Check instructions|Check]] | [[#Rescue clauses|Retry]] + + +===Assertions === +Precondition ::= require [else] Assertion + +Postcondition ::= ensure [then] Assertion [[[#"Only" postcondition clauses|Only]]] + +Invariant ::= invariant Assertion + +Assertion ::= {Assertion_clause ";" ...}* + +Assertion_clause ::= [Tag_mark] Unlabeled_assertion_clause + +Unlabeled_assertion_clause ::= [[#Expressions|Boolean_expression]] | [[#Comments|Comment]] | `class` + +Tag_mark ::= Tag ":" + +Tag ::= [[#Identfiers|Identifier]] + +{{Note|Unlabeled_assertion_clause of the form `class` can be used only in a postcondition. It marks a feature that does not depend on object state and can be called without a target object using non-object call of the form `{CLASS_NAME}.feature_name (arguments)`.}} + + +==="Old" postcondition expressions === +Old ::= old [[#Expressions|Expression]] + + +==="Only" postcondition clauses === +Only ::= only [[[#Export adaptation|Feature_list]]] + + +===Check instructions === +Check ::= check [[#Assertions|Assertion]] [[[#Notes|Notes]]] end + + +===Variants === +Variant ::= variant [[[#Assertions|Tag_mark]]] [[#Expressions|Expression]] + + +===Precursor === +Precursor ::= Precursor [Parent_qualification] [[[#Actual arguments|Actuals]]] + +Parent_qualification ::= "{" [[#Class names|Class_name]] "}" + + +===Redefinition === +Redefine ::= redefine [[#Export adaptation|Feature_list]] + + +===Undefine clauses === +Undefine ::= undefine [[#Export adaptation|Feature_list]] + + +===Types === +Type ::= Class_or_tuple_type | [[#Formal generic parameters|Formal_generic_name]] | Anchored + +Class_or_tuple_type ::= Class_type | [[#Tuple types|Tuple_type]] + +Class_type ::= [Attachment_mark] [[#Class names|Class_name]] [[[#Actual generic parameters|Actual_generics]]] + +Attachment_mark ::= "?" | "!" + +Anchored ::= [Attachment_mark] like Anchor + +Anchor ::= [[#Feature names|Feature_name]] | Current + + +===Actual generic parameters === +Actual_generics ::= "[" Type_list "]" + +Type_list ::= {[[#Types|Type]] "," ...}+ + + +===Formal generic parameters === +Formal_generics ::= "[" Formal_generic_list "]" + +Formal_generic_list ::= {Formal_generic ","...}+ + +Formal_generic ::= [frozen] Formal_generic_name [[[#Generic constraints|Constraint]]] + +Formal_generic_name ::= [?] [[#Identfiers|Identifier]] + + +===Generic constraints === +Constraint ::= "->" Constraining_types [Constraint_creators] + +Constraining_types ::= Single_constraint | Multiple_constraint + +Single_constraint ::= [[#Types|Type]] [Renaming] + +Renaming ::= [[#Rename clauses|Rename]] end + +Multiple_constraint ::= "{" Constraint_list "}" + +Constraint_list ::= {Single_constraint "," ...}+ + +Constraint_creators ::= create [[#Export adaptation|Feature_list]] end + + +===Manifest arrays === +Manifest_array ::= [Manifest_array_type] << Expression_list >> + +Manifest_array_type ::= { [[#Types|Type]] } + +Expression_list ::= {[[#Expressions|Expression]] , ...}* + + +===Tuple types === +Tuple_type ::= TUPLE [Tuple_parameter_list] + +Tuple_parameter_list ::= "[" Tuple_parameters "]" + +Tuple_parameters ::= [[#Actual generic parameters|Type_list]] | [[#Formal argument and entity declarations|Entity_declaration_list]] + + +===Manifest tuples === +Manifest_tuple ::= "[" [[#Manifest arrays|Expression_list]] "]" + + +===Converter clauses === +Converters ::= convert Converter_list + +Converter_list ::= {Converter ","...}+ + +Converter ::= Conversion_procedure | Conversion_query + +Conversion_procedure ::= [[#Feature names|Feature_name]] "(" "{" [[#Actual generic parameters|Type_list]] "}" ")" + +Conversion_query ::= [[#Feature names|Feature_name]] ":" "{" [[#Actual generic parameters|Type_list]] "}" + + +===Select clauses === +Select ::= select [[#Export adaptation|Feature_list]] + + +===Conditionals === +Conditional ::= if Then_part_list [Else_part] end + +Then_part_list ::= {Then_part elseif ...}+ + +Then_part ::= [[#Expressions|Boolean_expression]] then [[#Instructions|Compound]] + +Else_part ::= else [[#Instructions|Compound]] + + +Conditional_expression ::= if Then_part_expression_list else [[#Expressions|Expression]] end + +Then_part_expression_list ::= {Then_part_expression elseif ...}+ + +Then_part_expression ::= [[#Expressions|Boolean_expression]] then [[#Expressions|Expression]] + + +===Multi-branch instructions === +Multi_branch ::= inspect [[#Expressions|Expression]] [When_part_list] [Else_part] end + +When_part_list ::= When_part+ + +When_part ::= when Choices then [[#Instructions|Compound]] + +Choices ::= {Choice "," ...}+ + +Choice ::= [[#Constants|Constant]] | [[#Manifest constants|Manifest_type]] | Constant_interval | Type_interval + +Constant_interval ::= [[#Constants|Constant]] ".." [[#Constants|Constant]] + +Type_interval ::= [[#Manifest constants|Manifest_type]] ".." [[#Manifest constants|Manifest_type]] + + +===Loops === +Loop ::=
+      [Iteration]
+      [Initialization]
+      [[[#Assertions|Invariant]]]
+      [Exit_condition]
+      Loop_body
+      [[[#Variants|Variant]]]
+      end + +Iteration ::= across [[#Expressions|Expression]] as [[#Identfiers|Identifier]] + +Initialization ::= from [[#Instructions|Compound]] + +Exit_condition ::= until [[#Expressions|Boolean_expression]] + +Loop_body ::=
+      loop [[#Instructions|Compound]] |
+      all [[#Expressions|Boolean_expression]] |
+      some [[#Expressions|Boolean_expression]] + + +===Debug instructions === +Debug ::= debug [ "("[[#Routine_bodies|Key_list]] ")" ] [[#Instructions|Compound]] end + + +===Attribute bodies === +Attribute ::= attribute [[#Instructions|Compound]] + + +===Entities and variables === +Entity ::= Variable | Read_only + +Variable ::= Variable_attribute | Local + +Variable_attribute ::= [[#Feature names|Feature_name]] + +Local ::= [[#Identfiers|Identifier]] | Result + +Read_only ::= Formal | Constant_attribute | Current + +Formal ::= [[#Identfiers|Identifier]] + +Constant_attribute ::= [[#Feature names|Feature_name]] + + +===Creators parts === +Creators ::= Creation_clause+ + +Creation_clause ::= create [[[#Clients|Clients]]] [[[#Feature parts|Header_comment]]] Creation_procedure_list + +Creation_procedure_list ::= {Creation_procedure ","...}+ + +Creation_procedure ::= [[#Feature names|Feature_name]] + + +===Creation instructions === +Creation_instruction ::= create [Explicit_creation_type] Creation_call + +Explicit_creation_type ::= "{" [[#Types|Type]] "}" + +Creation_call ::= [[#Entities and variables|Variable]] [Explicit_creation_call] + +Explicit_creation_call ::= "." [[#Feature calls|Unqualified_call]] + + +===Creation expressions === +Creation_expression ::= create [[#Creation instructions|Explicit_creation_type]] [[[#Creation instructions|Explicit_creation_call]]] + + +===Equality expressions === +Equality ::= [[#Expressions|Expression]] Comparison [[#Expressions|Expression]] + +Comparison ::= "=" | "/=" | "~" | "/~" + + +===Assignments === +Assignment ::= [[#Entities and variables|Variable]] ":=" [[#Expressions|Expression]] + + +===Assigner calls === +Assigner_call ::= [[#Expressions|Expression]] ":=" [[#Expressions|Expression]] + + +===Feature calls === +Call ::= Object_call | Non_object_call + +Object_call ::= [Target "."] Unqualified_call + +Unqualified_call ::= [[#Feature names|Feature_name]] [[[#Actual arguments|Actuals]]] + +Target ::= [[#Entities and variables|Local]] | [[#Entities and variables|Read_only]] | Call | Parenthesized_target + +Parenthesized_target ::= ( [[#Expressions|Expression]] ) + +Non_object_call ::= "{" [[#Types|Type]] "}" "." Unqualified_call + + +===Actual arguments === +Actuals ::= "(" Actual_list ")" + +Actual_list ::= {[[#Expressions|Expression]] "," ...}+ + + +===Object test === +Object_test ::= "{" [[#Identfiers|Identifier]] ":" [[#Types|Type]] "}" [[#Expressions|Expression]] + + +===Rescue clauses === +Rescue ::= rescue [[#Instructions|Compound]] + +Retry ::= retry + + +===Agents === +Agent ::= Call_agent | Inline_agent + +Call_agent ::= agent [[#Call agent bodies|Call_agent_body]] + +Inline_agent ::= agent [[[#Formal argument and entity declarations|Formal_arguments]]] [[[#Feature declarations|Type_mark]]] [[[#Feature bodies|Attribute_or_routine]]] [[[#Call agent bodies|Agent_actuals]]] + + +===Call agent bodies === +Call_agent_body ::= Agent_qualified | Agent_unqualified + +Agent_qualified ::= Agent_target ". " Agent_unqualified + +Agent_unqualified ::= [[#Feature names|Feature_name]] [Agent_actuals] + +Agent_target ::= Entity | Parenthesized | [[#Manifest constants|Manifest_type]] + +Agent_actuals ::= "(" Agent_actual_list ")" + +Agent_actual_list ::= {Agent_actual "," ...}+ + +Agent_actual ::= [[#Expressions|Expression]] | Placeholder + +Placeholder ::= [[[#Manifest constants|Manifest_type]]] "?" + + +===Expressions === +Expression ::= Basic_expression | Special_expression + +Basic_expression ::= [[#Entities and variables|Read_only]] | [[#Entities and variables|Local]] | [[#Feature calls|Call]] | [[#Precursor|Precursor]] | [[#Equality expressions|Equality]] | Parenthesized | [[#"Old" postcondition expressions|Old]] | +[[#Operator expressions|Operator_expression]] | [[#Bracket expressions|Bracket_expression]] | [[#Creation expression|Creation_expression]] | [[#Conditionals|Conditional_expression]] + +Special_expression ::= [[#Manifest constants|Manifest_constant]] | [[#Manifest arrays|Manifest_array]] | [[#Manifest tuples|Manifest_tuple]] | [[#Agents|Agent]] | [[#Object test|Object_test]] | Once_string | +Address + +Parenthesized ::= "(" Expression ")" + +Address ::= "$" [[#Entities and variables|Variable]] + +Once_string ::= once [[#Manifest strings|Manifest_string]] + +Boolean_expression ::= Basic_expression | [[#Manifest constants|Boolean_constant]] | [[#Object test|Object_test]] + + +===Operator expressions === +Operator_expression ::= Unary_expression | Binary_expression + +Unary_expression ::= Unary Expression + +Binary_expression ::= [[#Expressions|Expression]] [[#Operators|Binary]] [[#Expressions|Expression]] + + +===Bracket expressions === +Bracket_expression ::= Bracket_target "[" [[#Actual arguments|Actuals]] "]" + +Bracket_target ::= [[#Feature calls|Target]] | [[#Expressions|Once_string]] | [[#Manifest constants|Manifest_constant]] | [[#Manifest tuples|Manifest_tuple]] + + +===Constants === +Constant ::= [[#Manifest constants|Manifest_constant]] | Constant_attribute + +Constant_attribute ::= [[#Feature names|Feature_name]] + + +===Manifest constants === +Manifest_constant ::= [Manifest_type] Manifest_value + +Manifest_type ::= "{" [[#Types|Type]] "}" + +Manifest_value ::= Boolean_constant | +Character_constant | +Integer_constant | +Real_constant | +[[#Manifest strings|Manifest_string]] | +Manifest_type + +Sign ::= "+" | "-" + +Integer_constant ::= [Sign] [[#Integers|Integer]] + +Character_constant ::= " ' " [[#Characters|Character]] " ' " + +Boolean_constant ::= True | False + +Real_constant ::= [Sign] [[#Reals|Real]] + + +===Manifest strings === +Manifest_string ::= Basic_manifest_string | Verbatim_string + +Basic_manifest_string ::= ' " ' String_content ' " ' + +String_content ::= {[[#Simple strings|Simple_string]] [[#Line wrapping parts|Line_wrapping_part]] ...}+ + +Verbatim_string ::= Verbatim_string_opener Line_sequence Verbatim_string_closer + +Verbatim_string_opener ::= ' " ' [[[#Simple strings|Simple_string]]] Open_bracket + +Verbatim_string_closer ::= Close_bracket [[[#Simple strings|Simple_string]]] ' " ' + +Open_bracket ::= "[" | "{" + +Close_bracket ::= "]" | "}" + +Line_sequence ::= {[[#Simple strings|Simple_string]] [[#New line|New_line]] ...}+ + +{{Note|Exactly the same [[#Simple strings|Simple_string]] (including embedded white space, if any) should be used in ''Verbatim_string_opener'' and ''Verbatim_string_closer'' of the same verbatim string.}} + +===External routines === +External ::= external External_language [External_name] + +External_language ::= Unregistered_language | [[#Registered languages|Registered_language]] + +Unregistered_language ::= [[#Manifest strings|Manifest_string]] + +External_name ::= alias [[#Manifest strings|Manifest_string]] +{{note|If the `inline` keyword is used in the Registered_language part, then External_name part is the inline code on the specified language.}} + + +===Registered languages === +Registered_language ::= [[#C externals|C_external]] | [[#C++ externals|C++_external]] | [[#DLL externals|DLL_external]] + + +===External signatures === +External_signature ::= signature [External_argument_types] [: External_type] + +External_argument_types ::= "(" External_type_list ")" + +External_type_list ::= {External_type "," ...}* + +External_type ::= [[#Simple strings|Simple_string]] + + +===External file use === +External_file_use ::= use External_file_list + +External_file_list ::= {External_file "," ... }+ + +External_file ::= External_user_file | External_system_file + +External_user_file ::= ' " ' [[#Simple strings|Simple_string]] ' " ' + +External_system_file ::= "<" [[#Simple strings|Simple_string]] ">" + +===C externals === +C_external ::= ' " ' C [inline] [ [[#External signatures |External_signature]] ] [ [[#External file use |External_file_use]] ] ' " ' + + +===C++ externals === +C++_external ::= ' " ' C++ inline [ [[#External signatures |External_signature]] ] [ [[#External file use |External_file_use]] ] ' " ' + + +===DLL externals === +DLL_external ::= ' " ' dll [windows] DLL_identifier [DLL_index] [[ [[#External signatures |External_signature]] ] [ [[#External file use |External_file_use]] ] ' " ' + +DLL_identifier ::= [[#Simple strings|Simple_string]] + +DLL_index ::= [[#Integers|Integer]] + + +===Comments === +Comment ::= "- -" {[[#Simple strings|Simple_string]] Comment_break ...}* + +Comment_break ::= New_line [Blanks_or_tabs] "- -" + +===Integers === +Integer ::= [Integer_base] Digit_sequence + +Integer_base ::= "0" Integer_base_letter + +Integer_base_letter ::= "b" | "c" | "x" | "B" | "C" | "X" + +Digit_sequence ::= Digit+ + +Digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | +"a" | "b" | "c" | "d" | "e" | "f" | +"A" | "B" | "C" | "D" | "E" | "F" | "_" + diff --git a/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/index.wiki b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/index.wiki new file mode 100644 index 00000000..c8dc25c1 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/quick-reference-eiffel-programming-language/index.wiki @@ -0,0 +1,16 @@ +[[Property:title|Quick reference to the Eiffel programming language]] +[[Property:link_title|Quick Reference]] +[[Property:weight|4]] +[[Property:uuid|4f61365d-59f6-a394-678b-144bad8ec12f]] +The Quick Reference to the Eiffel programming language provides an informal guide to the syntax and reserved words of the language. The Eiffel programming language is described in detail in the '''ISO/ECMA''' standard document, available [http://www.ecma-international.org/publications/standards/Ecma-367.htm online]. + +Sometimes there are differences between the language as defined by the standard and that which is implemented by Eiffel Software. These differences are documented in the online documentation. + +So, the final authority on Eiffel as implemented by Eiffel Software is the content of the standard document, amended by those variances cited in the [[Differences between standard ECMA-367 and Eiffel Software implementation|"differences" chapter of the online documentation]]. + +This reference is based on the June 2006 ISO/ECMA standard document. + + + + + diff --git a/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/changes-eiffel-libraries-support-void-safety.wiki b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/changes-eiffel-libraries-support-void-safety.wiki new file mode 100644 index 00000000..7e1fe6c4 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/changes-eiffel-libraries-support-void-safety.wiki @@ -0,0 +1,88 @@ +[[Property:title|Void-safe changes to Eiffel libraries]] +[[Property:weight|0]] +[[Property:uuid|dc993c0e-fbec-dc5a-82c8-fbfd9fa9bc3a]] +==Overview== + +During the adoption of void-safety, the software libraries provided by Eiffel Software have been converted to be void-safe. The bulk of the changes made to these libraries will have little or no adverse effect on your existing software as you go through the process of void-safe conversion. However, there are a few changes to the library that we consider "breaking" changes, that is, important changes that might cause problems in existing systems that use certain library classes. + + +{{note|Many of these changes were in effect in the ''experimental'' mode of versions 6.4 and 6.5. With the release of version 6.6, the ''experimental'' mode of previous versions became the ''default'' mode and, consequently may have caused these changes to become more apparent to some users. A ''compatibility'' mode is available to ease transition. The ''compatibility'' mode is accessible using the -compat command line option or through the EiffelStudio choices provided through the Microsoft Windows ''Start'' button. }} + + +==Important changes to library classes== + + +===Class ARRAY=== + +====New preconditions==== + +Some additional preconditions are in force in ARRAY in void-safe mode. + +In void-unsafe mode, the behavior is equivalent to that of previous versions. + +====Feature make_from_special==== + +The signature of this routine has changed. + +Current signature: make_from_special (a: SPECIAL [G]) + +Previous signature: make_from_special (a: SPECIAL [G]; min_index, max_index: INTEGER) + +Using the current version will create an array with a range from 1 to the number of elements in the argument `a`. + +====Feature auto_resize==== + +This implementation (private) feature has been removed. + + +===Class ARRAYED_LIST=== + +====Relationship to ARRAY==== + +Previously ARRAYED_LIST conformed to ARRAY. This is no longer the case. The feature {ARRAYED_LIST}.to_array can be used to produce an instance of ARRAY from an instance of ARRAYED_LIST. + +====Features count and area==== + +Previously these two queries, count and area, were attributes. They are now functions. + + +===Class HASH_TABLE=== + +The internal implementation has changed in ways that cause the order of traversal to differ from previous versions. + + +===Classes SPECIAL and TO_SPECIAL=== + +====Feature {SPECIAL}.make==== + +This void-unsafe feature has been removed. + +In its place, the creation procedures {SPECIAL}.make_filled and {SPECIAL}.make_empty can be used. + +{SPECIAL}.make_filled is available in both ''default'' and ''compatible'' modes. Use this creation procedure if you want code that is compatible with both modes. + +{SPECIAL}.make_empty is available in ''default'' mode only. + +====Feature {TO_SPECIAL}.make_area==== + +In order to reflect the above change to class SPECIAL, the make_area feature of TO_SPECIAL has been removed in favor of {TO_SPECIAL}.make_filled_area and {TO_SPECIAL}.make_empty_area. + +The availability of {TO_SPECIAL}.make_filled_area and {TO_SPECIAL}.make_empty_area corresponds to that noted above for the creation features of SPECIAL: + +{TO_SPECIAL}.make_filled_area is available in both ''default'' and ''compatible'' modes. Use make_filled_area for code that needs to compile in both modes. + +{TO_SPECIAL}.make_empty_area is available only in ''default'' mode. + +====Relationship of feature {SPECIAL}.count to {SPECIAL}.capacity==== + +In previous versions, for a particular instance of SPECIAL the queries count and capacity yielded the same value. + +This is no longer always true. If an instance of SPECIAL is created with, for example, make_empty (10), although the capacity will be 10, the count will be zero. + +However creating a SPECIAL using make_filled will produce an instance in which count and capacity are equal upon creation. So the behavior is similar to that of previous versions. Also, make_filled is available in both ''default'' and ''compatible'' modes. + +If your code depends upon count and capacity having the same value, then you can use make_filled for creation. And then if you need resizing, use the "_with_default" versions of the "resized" features, specifically resized_area_with_default and aliased_resized_area_with_default. + + + + diff --git a/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/index.wiki b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/index.wiki new file mode 100644 index 00000000..f754eaf0 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/index.wiki @@ -0,0 +1,335 @@ +[[Property:title|Converting existing software to void-safety]] +[[Property:weight|6]] +[[Property:uuid|eb901272-d405-2277-005d-e37275b9baa4]] +If you have been using Eiffel for a while, you may be maintaining systems which were developed before Eiffel became void-safe. If that's the case, then you will probably want to make those systems void-safe. + +In this section we will use the experience of converting a set of simple (but not too simple) legacy Eiffel classes to show the types of issues that you may encounter, and how to deal with them. + +So in the discussion below, you will see references to these classes: + + +{| border="1" +|- +! Class name +! Description +|- +| APPLICATION +| Simple root class containing declarations of types NVP and NVP_LIST +|- +| NVP +| Class modeling name/value pairs of type STRING +|- +| NVP_LIST +| Class modeling a list of NVP's with specialized behavior; heir of TWO_WAY_LIST [NVP] +|} + + +It's not important that you know much about the details of these classes. We will, however, look at certain parts of the classes in enough detail to resolve the conversion issues. + + +=Conversion considerations= + +==To redesign or not to redesign== + +During the process of conversion of classes to void-safety, the compiler will point out problems which you will have to fix. Some of these will be straightforward, while others may be tricky. It is natural, or sometimes mandatory, at times to consider changing elements of the design of your software. + +Also, as you sift through your existing software during the void-safe conversion, you may not get very far before you see things that you wish had been done differently. This occurs often during reviews of existing systems, not just because of the introduction of void-safety. + +In the discussions that follow you will see these redesign opportunities arise, and the decisions that were made for these cases. + +==Be aware of changes to Eiffel libraries== + +The libraries distributed with EiffelStudio have been converted to support void-safety. Mostly the changes made will cause no problems for existing software. However a few changes have been identified as "breaking" changes. You may or may not encounter the effects of these changes, but you should be aware of how they could effect your software and what options you have for adapting to them. Breaking changes are described in the [[EiffelStudio release notes]] and in the page dedicated to [[Void-safe changes to Eiffel libraries]]. + +=Conversion process= + +==Enable full class checking== + +First make sure your project will compile correctly under the configuration of EiffelStudio that you intend to use to convert to void-safe. + +Then set the project setting '''Full Class Checking''' to '''True'''. Do a ''[[Clean compile|clean compile]]'' of your system. + +Full class checking will analyze your classes to make sure that in cases of inheritance, features of the parent classes are rechecked for validity in the heirs. + +Here's an example of the kind of error you might expect when compiling with full class checking: + + +[[Image:VGCC error]] + + +The situation here is that the feature split has been inherited (from class TWO_WAY_LIST [G]) by our class NVP_LIST. Feature split includes code to create and attach feature sublist which is typed attached like Current which in this case means attached NVP_LIST. To do this creation, split uses a creation procedure make_sublist. + +Now here's the rub: NVP_LIST has not named make_sublist as a creation procedure: + +create + make, make_from_string, make_from_file_named + +If we go to the create part of NVP_LIST and add make_sublist to its list of creation procedures, this will fix the problem: + +create + make, make_from_string, make_from_file_named, make_sublist + + +So, fix any problems that arise out of turning on full class checking. + +==Enable other project settings== + +The second step in conversion of existing software is to change the values of the other void-safe related project settings and use the void-safe configurations for any delivered libraries and precompilations. + +In the project settings for the target in which you are working, set '''Void safety''' to '''Complete''', '''Transitional''' , '''Initialization''' or '''Conformance'''. + +{{note|Remember that during a transitional period starting with v6.4, there will be multiple versions of the configuration files for Eiffel libraries and precompiles. For example, base.ecf (void-unsafe) and base-safe.ecf (void-safe). Starting with v16.11 there is only one configuration file for libraries (e.g., base.ecf) that works with both void-safe and void-unsafe client software, but if you are using a precompile, there could be different versions for void-safe and void-unsafe precompiles.}} + +If necessary, remove Eiffel libraries and any precompiled library that your project uses and re-add them with their void-safe configuration files. Because you've set your target to void-safety, when you click '''Add Library''', you should see only void-safe configurations by default. +You will see a check box on the dialog that you can uncheck if you want to see all available library configurations: + + +[[Image:VoidSafeAddLibraryDialog]] + + +Now do a [[Clean compile|clean compile]]. + +If you've replaced a precompiled library that you have not already built, EiffelStudio will offer to build it for you on the fly: + + +[[Image:VoidSafePrecompileOffer]] + + +Now you should see error messages representing any situation in your project in which the compiler determines that it cannot guarantee void-safety. + +This is what our legacy system produced: + + +[[Image:VoidSafeErrorList]] + + +==Fix the issues== + +Next you fix the problems that the compiler discovered. The compiler errors concerning void-safety typically will be of three varieties. + +# VEVI: violations of the '''Variable initialization rule'''. An attached variable is not '''properly set'''. +# VUTA: violations of the '''Target rule'''. The target of a feature call is not attached. +# VJAR (and other related codes): violations of attached status considered in conformance. The attachment status of the source of an assignment (or an argument to a feature call) is not compatible with that of the target of the assignment (or the formal argument). + +Let's look at some specific cases and how fixing them unfolds. + +===Variables not properly set=== + +[[Image:VoidSafeVEVI1]] + + +There are two VEVI errors like this in class APPLICATION of our legacy system. They are probably the most obvious and easiest cases to handle. + + +feature {NONE} -- Initialization + + make + -- Run application. + do + ... + end + +feature -- Access + + my_nvp: NVP + -- NVP for testing + + my_nvp_list: NVP_LIST + -- NVP_LIST for testing + + +Here attribute declarations for my_nvp and my_nvp_list are made. These are assumed to be attached because of the project setting. But the create routine make fails to create objects and attach them. So by adding those creations, as shown below, the compiler is satisfied. + + + make + -- Run application. + do + create my_nvp.make ("SomeName", "SomeValue") + create my_nvp_list.make + ... + end + + + +In a second case, there is also an Initialization rule violation (VEVI), this time on Result, in this routine: + + + at_first (nm: STRING): NVP + -- The first found NVP with name matching nm. + -- Or Void if not found + require + nm_valid: nm /= Void and then not nm.is_empty + local + tc: CURSOR + do + tc := cursor + start + name_search (nm) + if not exhausted then + Result := item + end + go_to (tc) + ensure + index_unchanged: index = old index + end + + +Here we cannot just ensure that Result is always attached, because, as indicated by the header comment, Result is allowed to be void by design. + +So the least impact to this routine will be to declare its type as detachable: + + + at_first (nm: STRING): detachable NVP + -- The first found NVP with name matching nm. + -- Or Void if not found + + + +The same change is made in other routines that can return void by design, particularly including a routine called value_at_first, which gets our attention next. + +The case of at_first offered us an opportunity to redesign (or not). We might have been able to leave at_first attached. After all, in void-safe software, the fewer detachables, the better. Maybe we could devise a way, possibly through preconditions and other queries, that would guarantee that at_first attempts to execute only when it can return a value. + +But at_first is an exported query, so a consequence of such a change in the class design is that it would affect the class interface in such a way that existing clients would have to be modified to comply. In other words, it would be a "breaking" change. + + +===Source of assignment does not conform to target=== + +The change to at_first satisfies the VEVI issue in at_first, but it introduces a previously unseen conformance issue (VJAR) in the routine value_at_first: + + +[[Image:VoidSafeVJAR1]] + + +value_at_first looks like this: + + + value_at_first (nm: STRING): detachable STRING + -- Value from first found NVP with name matching nm + -- Or Void of not found + require + nm_valid: nm /= Void and then not nm.is_empty + local + tn: NVP + do + tn := at_first (nm) + if tn /= Void then + Result := tn.value + end + end + + +The problem is that the local variable tn is declared as attached, but we know that now the result of at_first is detachable, making this assignment invalid: + + tn := at_first (nm) + + +Here the '''attached syntax''' can fix the problem and streamline the routine: + + + value_at_first (nm: STRING): detachable STRING + -- Value from first found NVP with name matching nm + -- Or Void of not found + require + nm_valid: nm /= Void and then not nm.is_empty + do + if attached at_first (nm) as tn then + Result := tn.value + end + end + + +In this version tn need not be declared as a local variable. Remember that the attached syntax provides a fresh local variable, if the expression is not void. + +===Both VEVI and VJAR errors=== + +A design issue in class NVP_LIST causes both conformance and initialization compiler errors. In the original design, an instance of the class NVP_LIST could traverse its contents NVP-by-NVP with inherited functionality. Additionally, NVP_LIST has immediate functionality allowing an instance to traverse its contents in two different ways returning "sublists" based on recurring patterns of the name attributes of a sequence of name/value pairs. + +These two traversal methods are referred to as "sequencing" and "segmenting". It's not important that you understand the details of what these traversals do. But it is important to know that a valid instance of NVP_LIST can either be in the process of sequencing or in the process of segmenting, or neither. It is invalid to be both sequencing ''and'' segmenting. + +Two class attributes are maintained to store the recurring patterns of values of {NVP}.name that guide traversal: + + +feature {NONE} -- Implementation + + sequence_array: ARRAY [STRING] + -- The current array of names being used for + -- sequence traversal + + segment_array: ARRAY [STRING] + -- The current array of names being used to determine + -- the termination of list segments + + +In the original class design, each of these attributes would be void unless their corresponding traversal was active. So the class contains the following clauses in its invariant: + + + not_sequencing_and_segmenting: not (segment_readable and sequence_readable) + sequence_traversal_convention: (sequence_array = Void) = (not sequence_readable) + segment_traversal_convention: (segment_array = Void) = (not segment_readable) + + +Of course by default these attributes are considered to be attached. So, because they are not initialized during creation, we see initialization errors. Because elements of the class intentionally set them to Void, we see conformance errors. + +Here we have another opportunity to redesign (or not). We could mark the two arrays as detachable, recompile and fix any problems this causes (in fact, it causes eight errors: six Target rule violations, and two conformance issues). + +However, because these attributes are not exported, we may be able to leave them attached and make changes to the implementation design without making breaking changes to the interface. + +Those exported features which take arguments of the type ARRAY [STRING] which will serve as sequencing or segmenting control also require that the array contain at least one element. For example, the contract for feature segment_start contains these preconditions: + + + segment_start (nms: ARRAY [STRING_8]) + -- Place segment cursor on the first occurrence of a seqment of list which + -- begins at the current cursor position and + -- terminates in a sequence with names equivalent to and ordered the same as `nms'. + -- If no such sequence exists, then ensure exhausted + require + nms_valid: nms /= Void and then (nms.count > 0) + not_sequencing: not sequence_readable + + +Because the restriction always exists that a valid sequence_array or segment_array must contain at least one element, it is possible to redesign the implementation of the class such that an empty sequence_array and segment_array could serve the same purpose as a Void one does in the original design. + +So the invariant clauses that we saw above would now become: + + + not_sequencing_and_segmenting: not (segment_readable and sequence_readable) + sequence_traversal_convention: (sequence_array.is_empty) = (not sequence_readable) + segment_traversal_convention: (segment_array.is_empty) = (not segment_readable) + + +We already have compiler errors (VJAR's) that point us to those places in which we have code that sets either sequence_array or segment_array to Void. Like this: + + + segment_array := Void + + +These instances need to be changed to attach an empty array, maybe like this: + + + create segment_array.make (1, 0) + + +Additionally, some postconditions which reference the implementation features sequence_array and/or segment_array would have to be changed. Looking at the postcondition clauses for segment_start we see that segment_array is expected (or not) to be Void: + + + ensure + started: (not exhausted) implies (segment_readable and (segment_array /= Void) and (last_segment_element_index > 0)) + not_started: exhausted implies ((not segment_readable) and (segment_array = Void) and (last_segment_element_index = 0)) + + +To support the "empty array" design, segment_start's postcondition clauses would be: + + + ensure + started: (not exhausted) implies (segment_readable and (not segment_array.is_empty) and (last_segment_element_index > 0)) + not_started: exhausted implies ((not segment_readable) and (segment_array.is_empty) and (last_segment_element_index = 0)) + + + + +{{SeeAlso|
[[Converting EiffelVision 2 Systems to Void-Safety]]
[[Void-safe changes to Eiffel libraries]]}} + + + + + diff --git a/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/mixing-void-safe-and-void-unsafe-software.wiki b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/mixing-void-safe-and-void-unsafe-software.wiki new file mode 100644 index 00000000..ca8c2a76 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/converting-existing-software-void-safety/mixing-void-safe-and-void-unsafe-software.wiki @@ -0,0 +1,28 @@ +[[Property:title|Mixing void-safe and void-unsafe software]] +[[Property:weight|3]] +[[Property:uuid|3446f214-3c77-ef41-98eb-92942298630c]] +{{underconstruction}} + + +=Introduction= + +Eiffel Software recommends that any new development efforts be implemented using Eiffel's void-safe approach, thus eliminating one more common type of runtime failure. It is also recommended that existing software be converted to void-safety at the earliest opportunity. + +Under some circumstances it is possible and even helpful to mix void-safe and void-unsafe libraries. During conversion to void-safety, for example, it can be helpful to compile and test a void-unsafe system with void-safe versions of the libraries it depends upon. + +=Rule for mixing void-safety modes= + +The rule for using void-safe and void-unsafe software together is fairly simple. + + +{{Rule|name=Mixing void-safe and void-unsafe software|text=
+1) A class that is void-unsafe may depend upon other classes (as suppliers or ancestors) which are either void-safe or void-unsafe.
+2) A class that is void-safe may depend only upon other classes that are void-safe.}} + + +This means that if the root class of a system is void-safe, then every other class in the system must also be void-safe. + +However, if you are converting a system to void-safety, it's likely that your root class and the classes in the closely related clusters will be void-unsafe. The rule allows you to mix the void-safe versions of the Eiffel Software library classes from the EiffelStudio distribution with your void-unsafe system during conversion. + + + diff --git a/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/creating-new-void-safe-project.wiki b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/creating-new-void-safe-project.wiki new file mode 100644 index 00000000..e0cf753b --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/creating-new-void-safe-project.wiki @@ -0,0 +1,390 @@ +[[Property:link_title|New void-safe project]] +[[Property:title|Creating a new void-safe project]] +[[Property:weight|2]] +[[Property:uuid|92cea2e9-b094-6380-2c5d-1cd1eb3038b4]] + +{{TOC|limit=2}} + +Now that we've been introduced to the Eiffel void-safe facilities, let's look at what it takes to set up a new void-safe software project. Here we'll look at the void-safety related project settings and how the can be used. Then we'll look deeper into the use of some of the void-safe tools. + +==Project settings for void-safe projects== + +There are two project settings that are related to void-safety. These settings can be set with great granularity throughout your project to allow you maximum flexibility, particularly when including classes or libraries that are void-unsafe or that have been converted to void-safety, but must do double duty in the void-safe and void-unsafe worlds. + +===The ''"Void-safe"'' setting=== + +The '''Void-safe''' setting determines whether and how the Eiffel compiler checks your project against the void-safe related validity rules. + +This is the essential void-safe project setting. It can assume one of the following values: +# '''No''': No checking against any of the void-safety validity rules. Attachment marks '''attached''' and '''detachable''' are simply ignored. +# '''Conformance''': The attachment marks are not ignored for type conformance checks (with respect to VJAR/VBAR and related validity rules). +# '''Initialization''': Validity rules are selectively checked. The initialization rule (VEVI) and the target rule (VUTA) are checked only for attached entities and attached call targets -- i.e., detachable cases are not checked. +# '''Transitional''': It is an obsolete level which is for users who have already migrated their code to void-safety using an old version of the compiler which did not implement all the void-safety validity rules (especially with agent initialization). +# '''Complete''': Complete checking against all void-safety validity rules. + +So, for a new void-safe project, you would want to set this option first to '''Conformance''', then '''Initialization''' and finally to '''Complete'''. This will let you migrate your code progressively without much changes at each steps. + + +===The ''"Full class checking"'' setting=== + +This setting instructs the compiler to recheck inherited features in descendant classes. This setting is True and cannot be changed for projects with some void-safety level enabled. + + +==Void-safe libraries== + +As of EiffelStudio version 13.11, all libraries distributed with EiffelStudio are void-safe except the EiffelCOM library. + +{{note|During a period of transition, there are different Eiffel configuration files (.ecf's) for void-unsafe and void-safe projects (for example, base.ecf and base-safe.ecf). If you have set the '''Void-safe''' setting to check for void-safety, then when you add a library to your project in EiffelStudio, you will see only the void-safe configurations by default. Starting with version 16.11 there is only one version of each of the configuration files for each library. The single configuration files serve both void-unsafe and void-safe projects.}} + +===Using generic classes=== + +Void-safety affects generic classes. Fortunately, from the viewpoint of those writing clients to the generic classes in the EiffelBase library, not much has changed. Still, you should understand the interplay between void-safety and [[ET: Genericity and Arrays|genericity]]. + +Consider a generic class like LIST [G]. The formal generic parameter G represents an arbitrary type. In a generic derivation of LIST [G], say LIST [STRING], the formal generic type is replaced by an actual generic type, in this case STRING. + +Remember that unconstrained genericity, LIST [G], for example, is really a case of [[ET: Inheritance#Constrained genericity|constrained genericity]] in which the generic parameter is constrained to ANY, that is, it could be written LIST [G -> ANY]. + +With the advent of void-safe Eiffel, the unconstrained generic class name LIST [G] now equates to LIST [G -> detachable ANY]. Because any type, say T, (synonymous with attached T in void-safe Eiffel) conforms to detachable T, this change facilitates the production of generic classes, but has little effect on writers of clients to those classes. + +This change works for all the generic classes in EiffelBase ... except for one: ARRAY. Arrays are a special case because we often create arrays with a pre-allocated number of elements. In the case of expanded types, there's not a problem. For example, in this code + + my_array: ARRAY [INTEGER] + ... + create my_array.make (1, 100) + +we create my_array with one hundred INTEGER elements. INTEGER is an expanded type, and each element is initialized by applying the default initialization rule for INTEGER, i.e, the integer representation of zero. + +However, if my_array had been declared of a type with reference semantics, say STRING (meaning, of course, attached STRING, the default rule would not work well, because the default initialization for references types is Void which would not be allowed in an array of elements of any attached type. + +The solution to this challenge is fairly simple. For arrays of elements of detachable or expanded types, there is no different behavior. When dealing with arrays of elements of attached types, we must be careful. + +Creating an array using ARRAY's creation procedure make may still be safe in some cases. Specifically, make can be used with arrays of elements of attached types if the arguments have values such that an empty array will be created, that is, when + + min_index = max_index + 1 + + +In all other situations involving arrays of elements of attached types, make may not be used to do the creation. Rather, you should use the creation procedure make_filled which takes three arguments. The first is an object of the type of the array, and the second and third are the minimum and maximum indexes, respectively. When the array is created, each of the elements will be initialized with a reference to the object of the first argument. + +So, a call using make_filled would look like this: + + my_array: ARRAY [STRING] + ... + create my_array.make_filled (" ", 1, 100) + +Upon creation, each element of the array will reference the same object; an object of type STRING composed of one space character. + + +==Using the ''attribute'' keyword carefully== + +The keyword attribute should be used with some care. You might be tempted to think that it would be convenient or add an extra element of safety to use [[Void-safety: Background, definition, and tools#Self-initializing attributes|self-initializing attributes]] widely. And in a way, you would be correct. But you should also understand that there is a price to pay for using self-initializing attributes and stable attributes. It is that upon every access, an evaluation of the state of the attribute must be made. So, as a general rule, you should avoid using self-initializing attributes only for the purpose of lazy initialization. + + +==More about the ''attached syntax''== + +The complete attached syntax is: + + attached {SOME_TYPE} exp as l_exp + +In this section, we will see more ways in which to use this versatile language facility. + +===As a CAP-like construct which yields a local variable=== + +In the introduction to the attached syntax, we used an example which showed how the attached syntax is directly relevant to void-safety. That is, the code: + + if x /= Void then +-- ... Any other instructions here that do not assign to x + x.f (a) + end + + +is a CAP for x ... but that's only true if x is a local variable or a formal argument to the routine that contains the code. + +So to access a detachable attribute safely, we could declare a local variable, make an assignment, and test for Void as above. Something like this: + + my_detachable_attribute: detachable MY_TYPE + + ... + some_routine + local + x: like my_detachable_attribute + do + x := my_detachable_attribute + if x /= Void then +-- ... Any other instructions here that do not assign to x + x.f (a) + end + ... + +The attached syntax can both check the attached status of a detachable attribute and also provide a new local variable. So the routine becomes: + + some_routine + do + if attached my_detachable_attribute as x then +-- ... Any other instructions here that do not assign to x + x.f (a) + end + ... + + +===As a test for attachment=== + +In its simplest form, the attached syntax can be used to test attached status only: + + if attached x then + do_something + else + do_something_different + end + + +So in this simple form, attached x can be used instead of x /= Void. The two are semantically equivalent, and which one you choose is a matter of personal preference. + + +===As a tool for "once per object"=== + +There is a code pattern for functions that exists in some Eiffel software to effect "once-per-object / lazy evaluation". + +{{note|As of EiffelStudio version 6.6, the use of this code pattern effecting "once per object" is no longer necessary. V6.6 includes explicit support for once routines which can be adjusted by a [[ET: Once routines and shared objects#Adjusting once semantics with "once keys"|once key]] to specify once per object.}} + +This "once-per-object" code pattern employs a cached value for some object which is not exported. When it is applied, the "once-per-object" function checks the attachment status of the cached value. If the cached value is void, then it is created and assigned to Result. If the cached value was found already to exist, then it is just assigned to Result. + +Here's an example of this pattern used to produce some descriptive text of an instance of its class: + + +feature -- Access + + descriptive_text: STRING + local + l_result: like descriptive_text_cache + do + l_result := descriptive_text_cache + if l_result = Void then + create Result.make_empty + -- ... Build Result with appropriate + -- descriptive text for Current. + descriptive_text_cache := Result + else + Result := l_result + end + ensure + result_attached: Result /= Void + result_not_empty: not Result.is_empty + result_consistent: Result = descriptive_text + end + +feature {NONE} -- Implementation + + descriptive_text_cache: like descriptive_text + + +This example will not compile in a void-safe project (class types are attached by default). The problem is that the attribute descriptive_text_cache is of an attached type, therefore will be flagged by the compiler as not properly set (VEVI). Of course, it will be ... that's the whole idea here: not to initialize descriptive_text_cache until it's actually used. So it sounds like descriptive_text_cache should be declared detachable. That is: + + descriptive_text_cache: detachable like descriptive_text + +This change will make this routine compile in a void-safe project. But you should notice that there is a ripple-down effect due to the change. Within the routine, l_result is typed like descriptive_text_cache, so it also will be detachable. Therefore we might expect trouble, because later in the routine we have: + + Result := l_result + +Because we know Result is attached and l_result is detachable, we might expect a compiler error in which the source of an assignment does not conform to its target (VJAR). + +But we don't get such an error. The reason is two-fold. First, l_result is a local variable whose use can be protected by a CAP. Second, the CAP in this case is the check to ensure that l_result is not void. We only make the assignment to Result if l_result is not void. So the compiler can prove that l_result cannot be void at the point at which the assignment occurs ... therefore, no error. + +Because the '''attached syntax''' can test attached status and provide a local variable, it can be used to remove some unnecessary code from this routine. The version of the routine that follows shows the attached syntax being used to test the attached status of descriptive_text_cache and yield the local variable l_result in the case that descriptive_text_cache is indeed attached. + + descriptive_text: STRING + do + if attached descriptive_text_cache as l_result then + Result := l_result + else + create Result.make_empty + -- ... Build Result with appropriate + -- descriptive text for Current. + descriptive_text_cache := Result + end + ensure + result_attached: Result /= Void + result_not_empty: not Result.is_empty + result_consistent: Result = descriptive_text + end + +feature {NONE} -- Implementation + + descriptive_text_cache: like descriptive_text + + + + +===As a replacement for assignment attempt=== + +The assignment attempt ( ?= ) has traditionally been used to deal with external objects (e.g., persistent objects from files and databases) and to narrow the type of an object in order to use more specific features. The latter is a process known by names such as "down casting" in some technological circles. A classic example is doing specific processing on some elements of a polymorphic data structure. Let's look at an example. Suppose we have a LIST of items of type POLYGON: + + my_polygons: LIST [POLYGON] + +POLYGONs could be of many specific types, and one of those could be RECTANGLE. Suppose too that we want to print the measurements of the diagonals of all the RECTANGLEs in the list. Class RECTANGLE might have a query diagonal returning such a measurement, but POLYGON would not, for the reason that the concept of diagonal is not meaningful for all POLYGONs, e.g., TRIANGLEs. + +As we traverse the list we would use assignment attempt to try to attach each POLYGON to a variable typed as RECTANGLE. If successful, we can print the result of the application of diagonal. + + l_my_rectangle: RECTANGLE + + ... + from + my_polygons.start + until + my_polygons.exhausted + loop + l_my_rectangle ?= my_polygons.item + if l_my_rectangle /= Void then + print (l_my_rectangle.diagonal) + print ("%N") + end + my_polygons.forth + end + +The '''attached syntax''' allows us to check both attached status and type, and provides us with a fresh local variable when appropriate: + + from + my_polygons.start + until + my_polygons.exhausted + loop + if attached {RECTANGLE} my_polygons.item as l_my_rectangle then + print (l_my_rectangle.diagonal) + print ("%N") + end + my_polygons.forth + end + +As with the other examples of the '''attached syntax''', it is no longer necessary to make a declaration for the local variable, in this case l_my_rectangle. + + +==More about CAPs== + +===Use of check instructions=== + +In void-safe mode, the compiler will accept code that it can prove will only apply features to attached references at runtime ... and you help this process along by using the tools of void-safety, like attached types and CAPs. On the other hand, the compiler will reject code that it cannot guarantee is void-safe. Sometimes this may cause you a problem. There may be subtle situations in which you feel quite certain that a section of code will be free of void calls at runtime, but the compiler doesn't see it the same way, and rejects your code. In cases like this, you can usually satisfy the compiler by using check instructions. + +Technically speaking, check instructions are not CAPs. But they are useful in cases in which an entity is always expected to be attached at a certain point in the code. In the following example, the attribute my_detachable_any is detachable. But at the particular point at which it is the source of the assignment to l_result, it is expected always to be attached. If it is not attached at the time of the assignment, and therefore l_result becomes void, then an exception should occur. The check instruction provides this behavior. + +The following sample shows the check instruction at work. There are reasons why this is not the best use use of check in this case, and we will discuss that next. + + + -- A not-so-good example of using check. + + my_detachable_any: detachable ANY + ... + my_attached_any: ANY + local + l_result: like my_detachable_any + do + l_result := my_detachable_any + check + attached l_result + end + Result := l_result + end + + +Here the assertion in the check guarantees that l_result is attached at the time of its assignment to Result. If my_detachable_any is ever not attached to an object, then an exception will be raised. + +So what's wrong with the sample above? It would be fine in ''workbench'' code, but what happens if the code is in ''finalized'' mode, in which assertions are typically discarded? + +The answer is that the check in the sample above would no longer be effective, and the resulting executable would no longer be void-safe. + +The solution to this problem is found in a different form of the check instruction. Consider the same example, but this time using check ... then ... end: + + + -- A better way of using check. + + my_detachable_any: detachable ANY + ... + my_attached_any: ANY + do + check attached my_detachable_any as l_result then + Result := l_result + end + end + + +Here, in the improved version of the example, the check ... then ... end is used along with the attached syntax. This streamlines the code a bit by eliminating the need to declare a separate local entity, while achieving the same effect as the previous example. If my_detachable_any is attached at runtime, then the temporary variable l_result is created and attached to the same object. Then the body of the check ... then ... end is executed. If my_detachable_any is not attached, an exception occurs. + +Another important benefit, one that solves the problem with the original example, comes from the way in which check ... then ... end is handled by the compiler. The check ... then ... end form '''is always monitored, even if assertion checking is turned off at all levels''', as is usually done in finalized code. + +===Choosing CAPs versus the Attached Syntax=== + +The attached syntax is convenient because it can check attached status and deliver a new local variable at the same time. But there are cases in which you might choose instead to define a local variable and use a CAP. Suppose you had code acting on several similar and detachable expressions, and you use the attached syntax in each case: + + foobar + do + if attached dictionary_entry ("abc") as l_abc then + l_abc.do_something + end + if attached dictionary_entry ("def") as l_def then + l_def.do_something + end + if attached dictionary_entry ("ghi") as l_ghi then + l_ghi.do_something + end + end + +This routine causes three local variables to be allocated for the duration of routine foobar, one each for l_abc, l_def, and l_ghi. And it is no better to do this: + + foobar + do + if attached dictionary_entry ("abc") as l_entry then + l_entry.do_something + end + if attached dictionary_entry ("def") as l_entry then + l_entry.do_something + end + if attached dictionary_entry ("ghi") as l_entry then + l_entry.do_something + end + end + +Even though the names are the same, still three separate local variables are allocated for foobar. + +In cases like this, you could effect a minor performance improvement by declaring one local variable and reusing it. In the following code, only one local variable is used and access to it is protected by the CAP if l_entry /= Void then. + + foobar + local + l_entry: like dictionary_entry + do + l_entry := dictionary_entry ("abc") + if l_entry /= Void then + l_entry.do_something + end + l_entry := dictionary_entry ("def") + if l_entry /= Void then + l_entry.do_something + end + l_entry := dictionary_entry ("ghi") + if l_entry /= Void then + l_entry.do_something + end + end + + +==Stable attributes== + +Remember that stable attributes are actually detachable attributes, with the difference that they can never be the target of an assignment in which the source is Void or anything that could have a value of Void. + +Stable attributes are useful in situations in which there are valid object life scenarios in which some particular attribute will never need an object attached, or will only need an object attached late in the scenario. So in this case, the attribute is used only under certain runtime conditions. Declaring these attributes as stable eliminates the need to make attachments during object creation. Yet once needed, that is, once the attribute is attached, it will always be attached. + +Also, you should remember that unlike other attributes, you can access stable attributes directly in a CAP: + + my_stable_attribute: detachable SOME_TYPE + note + option: stable + attribute + end + + ... + + if my_stable_attribute /= Void then + my_stable_attribute.do_something + end + + ... + + +{{SeeAlso| [[Void-safety: Background, definition, and tools#Types as "attached" or "detachable"|Types as "attached" or "detachable"]].}} \ No newline at end of file diff --git a/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/index.wiki b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/index.wiki new file mode 100644 index 00000000..d819899f --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/index.wiki @@ -0,0 +1,23 @@ +[[Property:link_title|Void-safe programming]] +[[Property:title|Void-safe programming in Eiffel]] +[[Property:weight|10]] +[[Property:uuid|a03568e8-eb79-70d7-04a3-6fd3ed7ac2b3]] +=Void-safe software development using Eiffel: introduction= + +When you develop software in Eiffel, you can be assured (at compile time) that your system will not attempt (at run time) to apply a feature to a void reference -- or, in the terminology of other languages such as C, "dereference a null pointer". + +Throughout the history of Eiffel, new capabilities -- agents, the SCOOP concurrency mechanism and many others -- have added considerable expressive power to the languag,e while causing minimum impact on existing software. Void-safe Eiffel is such an innovation, which instead of adding new mechanisms ''removes'' a major source of instability in programs, present in all other major languages: null-pointer dereferencing. To say that Eiffel is void-safe means that such catastrophic yet common errors simply will not occur. + +There is in fact no need to speak of "void-safe Eiffel". The language is just Eiffel... and it is void-safe, just as it is statically typed. We still occasionally refer to "Void-safe Eiffel" simply because until 2005 or so Eiffel was not void-safe (it had to start somewhere), and you may still encounter older documentation that talks about "calls on void targets" (null-pointer dereferences). But in today's Eiffel such an event is impossible. + +The rest of this chapter explains void safety: + +# How is void-safety defined? +# What are the specific elements of the mechanism? +# How do these relate to Eiffel before void-safety? +# What do I need to know to produce standard Eiffel software? +# What do I need to know to convert my existing systems to be standard? + + + + diff --git a/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/void-safety-background-definition-and-tools.wiki b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/void-safety-background-definition-and-tools.wiki new file mode 100644 index 00000000..4245f60c --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/void-safety-background-definition-and-tools.wiki @@ -0,0 +1,287 @@ +[[Property:link_title|Background and tools]] +[[Property:title|Void-safety: Background, definition, and tools]] +[[Property:weight|0]] +[[Property:uuid|689f62b2-5675-5ab6-cd47-d891cf3d484d]] +=Background= + +The primary focus of Eiffel is on software quality. Void-safety, like static typing, is another facility for improving software quality. Void-safe software is protected from run time errors caused by calls to void references, and therefore will be more reliable than software in which calls to void targets can occur. The analogy to static typing is a useful one. In fact, void-safe capability could be seen as an extension to the type system, or a step beyond static typing, because the mechanism for ensuring void-safety is integrated into the type system. + +==Static typing== + +You know that static typing eliminates a whole class of software failures. This is done by making an assurance at compile time about a feature call of the form: + + x.f (a) + +Such a feature call is judged acceptable at compile time only if the type of x has a feature f and that any arguments, represented here by a, number the same as the formal arguments of f, and are compatible with the types of those formal arguments. + + +In statically typed languages like Eiffel, the compiler guarantees that you cannot, at run time, have a situation in which feature f is not applicable to the object attached to x. If you've ever been a Smalltalk programmer, you are certainly familiar with this most common of errors that manifests itself as "Message not understood." It happens because Smalltalk is not statically typed. + +==Void-unsafe software== + +Static typing will ensure that there is some feature f that can be applied at run time to x in the example above. But it does not assure us that, in the case in which x is a reference, that there will always be an object attached to x at any time x.f (a) is executed. + +This problem is not unique to Eiffel. Other environments that allow or mandate reference semantics also allow the possibility of void-unsafe run time errors. If you've worked in Java or .NET you may have seen the NullReferenceException. Sometimes you might have experienced this rather poetic sounding message: "Object reference not set to an instance of an object". In Eiffel you would see "Feature call on void target". All these are the hallmarks of run time errors resulting from void-unsafe software. + +{{note|If you need a review of difference between reference types and expanded types in Eiffel, see [[ET: The Dynamic Structure: Execution Model|the chapter of the Eiffel Tutorial dedicated to the Eiffel execution model]]. }} + +Of course this is not an issue with instances of expanded types, because these instances are indeed "expanded" within their parent objects. But we could not imagine a world with expanded types only. References are important for performance reasons and for modeling purposes. For example, consider that a car has an engine and a manufacturer. When we model cars in software, it might be appropriate for engines to be expanded types, as each car has one engine. But certainly the same is not true for manufacturer. Many cars can share, through a reference, a single manufacturer. + +So, references are necessary, but we want them to be trouble free. + +==Void-safe software== + +Void-safe software, then, is software in which the compiler can give assurance, through a static analysis of the code, that at run time whenever a feature is applied to a reference, that the reference in question will have an object attached. This means that the feature call + + x.f (a) + +is valid only if we are assured that x will be attached to an object when the call executes. + + +{{info|This validity rule is called the '''Target rule''', validity code VUTA, and is the primary rule for void-safety. In the following discussion, you will see that other validity rules are involved, too. You can see the formal definition of all validity rules in the [http://www.ecma-international.org/publications/standards/Ecma-367.htm ISO/ECMA standard document] available online. }} + + +Once we have committed ourselves to this validity rule, we must have a strategy for complying with the rule. + +=Elements of the void-safe strategy= + +Here are the tools of void-safe trade. They will each be addressed in more detail throughout the documentation that follows. As you look at these elements it helps to try to think about things from the compiler's viewpoint ... after all, it is the compiler that we expect to give us the guarantee that our code is indeed void-safe. + +First let's look at a couple of approaches that won't work. + +It might occur to us that we could enforce compliance with the target rule by simply eliminating the concept of void references. But this would not be practical. Void is a valuable abstraction that is useful in many situations, such as providing void links in structures. So, we must keep void ... but we want to keep it under control. + +Another thought might be that we could just have the compiler do all the work for us. But would be impossibly time consuming for the compiler to investigate every conceivable execution path available to a system to make certain that every possible feature call was made on an attached reference. + +So, all of this boils down to the fact that we have to take some actions that help the compiler along. That's what the following are about. + +==Certified Attachment Patterns (CAPs)== + +We know that in the context of certain code patterns, it is clear that it would be impossible for a reference to be void. These patterns are identified and we call them CAPs, short for Certified Attachment Patterns. Here is a very straightforward example expressed in a syntax that should be familiar to all Eiffel developers: + + if x /= Void then +-- ... Any other instructions here that do not assign to x + x.f (a) + end + +Here a check is made to ensure x is not void. Then as long as no assignments to x are made in the interim, a feature f can be applied to x with the certainty that x will be attached at the time ... and importantly, this can be determined at compile time. So, we say that this code pattern is a CAP for x. + + +It is important to understand that in this example (and with other CAPs), x is allowed to be a local variable or formal argument only. That is, x may not be an attribute or general expression (with one exception which we will see [[#Stable attributes|below]]). Direct access to class attribute references cannot be allowed via a CAP due to the fact that they could be set to void by a routine call in some execution path invoked by the intervening instructions or possibly even different process thread. In a later [[Void-safety: Background, definition, and tools#Types as "attached" or "detachable"|section]], we well see that this is not quite such a limitations as it may appear at this point. + + +{{note|You will find more useful information about CAPs in [[Creating a new void-safe project#More about CAPs|More about CAPs]]. Learn how certain code patterns are determined to be CAPs in [[What makes a Certified Attachment Pattern]]. }} + + +==The ''attached syntax'' (object test)== + +For the purposes of void-safety, the '''attached syntax''' does double duty for us. It allows us to make certain that a reference is attached, and it provides us a safe way to access objects that are attached to class attributes. + +We noted earlier that this code + + if x /= Void then +-- ... Any other instructions here that do not assign to x + x.f (a) + end + +creates a CAP for feature calls on x, but only if x is a local variable or a formal argument. + +By using the '''attached syntax''', we can perform an '''object test''' on a variable. That is, the attached syntax is a BOOLEAN expression which provides an answer to the question "Is x attached to an object?" At the same time, if indeed x is attached to an object, the attached syntax will deliver to us a fresh local variable, also attached to x's object, on which we can make feature calls. + + if attached x as l_x then + l_x.f (a) + end + +In the example above, x is tested to make certain that it is attached. If so, the new local l_x becomes attached to the same object as x. And so the object can be used safely even if x is a class attribute. So, the attached syntax, is really another CAP, because it provides a clearly verifiable place for the application of features to targets that are guaranteed not to be void. + + +{{note|The attached syntax has other syntax variations as well as other uses. These will be discussed [[Creating a new void-safe project#More about the attached syntax|later]]. }} + + +One way to make sure we comply with the target rule would be always use a CAP or the attached syntax every time we want to apply a feature to a referenced object. That might work, but it falls among the impractical approaches to the problem ... it would break a very high percentage of existing Eiffel code, not to mention cluttering things up quite a bit. + +==Types as "attached" or "detachable"== + +Rather than trying to protect every feature call, Eiffel allows us to declare any variable as being of an '''attached type'''. This is an important extension to the Eiffel type system. + +In Eiffel prior to the introduction of void-safe facilities, any reference variable could be set to Void. So, all variables were considered '"detachable"'. + +The current standard Eiffel supports a mixture of '''attached''' and '''detachable''' types. When a variable is declared of an attached type, as in the following example, then the compiler will prevent it from being set to Void or set to anything that can be set to Void. + + + my_attached_string: attached STRING + + +It is easy to imagine that the more declarations are of attached types, the easier it will be to guarantee that a call to a void target cannot take place at run time. In fact, if every declaration was guaranteed to be of an attached type, then that would be all that was needed to satisfy the Target rule. + +However, it wouldn't be workable to have only attached types, because sometimes it's important to allow references to have a value of Void. + +When it is necessary to allow Void as a value, a declaration can use the ''detachable mark'' as in the following. + + my_detachable_string: detachable STRING + + + +This doesn't mean that on every declaration you must put either an ''attached mark'' or a ''detachable mark''. Declarations that are unmarked are allowed. If a declaration contains neither '''attached''' nor '''detachable''', then it is assumed to be '''attached'''. + +In Eiffel then, all declarations will have types that are either '''attached''' or '''detachable'''. As a result, we need only use CAPs and the attached syntax with detachable types. So the important thing to remember is that ''direct access to class attributes of detachable types is never void-safe.'' + +===Attachment and conformance=== + +The distinction between attached and detachable types results in a small but important addition to the rules of conformance. Because variables declared as attached types can never be void, then it is important not to allow any assignment of a detachable source to an attached target. However, assigning an attached source to a detachable target is permissible. The following code shows both cases (as described earlier, class types are attached by default). + + my_attached_string: STRING + my_detachable_string: detachable STRING + + ... + + my_attached_string := my_detachable_string -- Invalid + my_detachable_string := my_attached_string -- Valid + + + +==Initialization rule== + +If we have attached types, then we can assume variables declared of these types, once attached, will always be attached. But how do they get attached in the first place? That's what the initialization rule is all about. + +The rule says that at any place in which a variable is accessed, it must be '''properly set'''. A variable's being properly set has a precise, but not particularly simple definition in the Eiffel standard. + + +{{info|You can find the formal definition of the '''Variable initialization rule''', validity code VEVI, and its related concepts such as '''properly set''' variables in the [http://www.ecma-international.org/publications/standards/Ecma-367.htm ISO/ECMA standard document]. }} + + +Still, it's not too hard to understand the basics of initializing variables of attached types: + +* For the initialization of attributes of a class, we can apply a rule similar to that of the initial evaluation of class invariants ... that is, everything must be in order upon completion of a creation procedure. If a class attribute is of an attached type, then each of the class's creation procedures is responsible for making sure that the attribute is attached to an object upon its completion. + +* A local variable is considered properly set if it is initialized at some point '''preceding''' its use in any execution path in which it is used. So immediately after its create instruction, the local variable would be considered properly set. But if the create occurred in the then part of an if instruction, the local variable would not be properly set in the else part of that same if instruction: + + + my_routine + -- Illustrate properly set local variable + local + l_my_string: STRING + do + if my_condition then + create l_my_string.make_empty +-- ... l_my_string is properly set here + else +-- ... l_my_string is not properly set here + end + end + + +* A variable is considered properly set if it is '''self-initializing'''. What it means to be self-initializing is explained below. + +==Self-initializing attributes== + +A self-initializing attribute is guaranteed to have a value when accessed at run time. Declarations of self-initializing attributes are characterized by the use of the code that follows the attribute keyword. The code is executed to initialize the attribute in the case that the attribute is accessed prior to being initialized in any other way. + +So, self-initializing attributes are ordinary attributes, with the restriction that they are of both ''attached'' types and ''reference'' types (i.e., not expanded types or constants). Self-initializing attributes still can be, and typically will be initialized in the traditional ways. The difference is that the code in the attribute part serves as a kind of safety net guaranteeing that a self-initializing attribute will never be void, even if it is accessed prior to being initialized by one of the traditional means. + + + value: STRING + attribute + create Result.make_empty + end + + +In the example above, the attribute value will be attached to an object of type STRING, in fact, the empty string, if no other initialization occurs before the first access of value. + +==Rule for conformance== + +You will remember that the Eiffel type system dictates that an assignment instruction: + + x := y + +is valid only if the type of y is '''compatible''' with the type of x. Compatibility, in turn, means either '''conversion''' or '''conformance'''. + +The fact that all types are either '''attached''' or '''detachable''' adds another dimension to rule for conformance: +*If x is of an attached type, then y must be of an attached type. +This prevents us from circumventing attached status at run time. If x is of a detachable type, then y could be either a detachable or attached type. + +The same goes for routine calls. In a call: + + z.r (y) + +where x is the formal argument for r, then if x is of an attached type, then y must be of an attached type. + +==Stable attributes== + +Stable attributes are really stable ''detachable'' attributes, as adding the concept of stability is meaningful only for detachable attributes. Declaring a detachable attribute as stable, means that it behaves like a detachable attribute except that its assignment rules mimic those of attached attributes. In other words, a stable attribute does not need to be attached during object creation the way that attributes declared as attached must. But like attached type attributes, stable attributes can never be the target of an assignment in which the source is Void or a detachable type. + + my_test: detachable TEST + note + option: stable + attribute + end + + +This means that even though stable attributes do not need to be initialized like attributes of attached types, once they are attached to an object, they can never be void again. + +Stable attributes are also interesting in that they are the only exception to the rule given above in the [[Void-safety: Background, definition, and tools#Certified Attachment Patterns (CAPs)|CAPs section]] that stated that direct access to attributes cannot be protected by a CAP. A stable attribute can be used under the protection of a CAP. This is because once a stable attribute has an object attached, it can never again be set to Void. So there's no worry about having the attribute's state going unexpectedly from attached to non-attached because of the actions of other routines or threads. + +==Rule for generic parameters== + +Generic classes provide another question. A generic class like + +class + C [G] + ... + +allows us to create a type by providing a specific actual generic parameter for the formal parameter G. + +So, two valid derivations are: + + my_integer_derivation: C [INTEGER] + +and + + my_employee_derivation: C [EMPLOYEE] + + +If class C contains a declaration: + + x: G + +What do we know about the void-safety of x ? + +In the case of the INTEGER derivation above, we know x is safe because INTEGER is an expanded type. But often types like EMPLOYEE will be reference types which could be void at run time. + +'''For a class like C [G], G is considered detachable'''. As a result, because of the [[Void-safety: Background, definition, and tools#Rule for conformance|rule for conformance]], any class will work for an actual generic parameter. That means that both of the following are valid generic derivations: + + + my_detachable_string_derivation: C [detachable STRING] + + my_attached_string_derivation: C [attached STRING] + + +If C contains a declaration x: G, the application of features to x must include verification of attachment (CAPs, attached syntax, etc). + +Constrained genericity can be used to create generic classes in which the generic parameter represents an attached type. If class C had been defined as: + +class C [G -> attached ANY] + ... + +then x in this class G represents an attached type. Consequently, the actual generic type in any derivation must be attached ... and feature calls on x are safe. + +==Rule for ARRAYs== + +The rule for generic parameters applies to all generic types ... except ARRAYs. In the typical creation of an ARRAY, we would provide a minimum and maximum index. + + my_array: ARRAY [STRING] + + ... + + create my_array.make (1, 100) + +During creation, an area to store the appropriate number of entries is also created. And depending upon the actual generic parameter, these entries are either objects for expanded types or references for reference types. + +In the case of an actual generic parameter of an attached reference type, all the elements must be attached to instances of type during the creation of the ARRAY. The make procedure would not do this. Creation of an ARRAY in which the actual generic parameter is attached must be done using the make_filled creation procedure. + + create my_array.make_filled ("", 1, 100) + +The first argument is an object of the actual generic type, in this case an empty STRING. Every entry in the newly created ARRAY will be initialized to reference this object. + + +For more detail on void-safe use of arrays and other generic classes, see the section: [[Creating a new void-safe project#Using generic classes|Using generic classes]]. diff --git a/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/what-makes-certified-attachment-pattern.wiki b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/what-makes-certified-attachment-pattern.wiki new file mode 100644 index 00000000..74d20a44 --- /dev/null +++ b/documentation/20.05/eiffel/Language_reference/void-safe-programming-eiffel/what-makes-certified-attachment-pattern.wiki @@ -0,0 +1,182 @@ +[[Property:title|What makes a Certified Attachment Pattern]] +[[Property:weight|8]] +[[Property:uuid|1a20197d-5a88-59c3-9a04-512399125661]] + +==A little background on CAPs== + +Certified Attachment Patterns (CAPs) were described in the section on [[Void-safety: Background, definition, and tools#Certified attachment patterns (CAPs)|void-safety tools]]. To review, a CAP is a code pattern for a certain expression, say exp of a detachable type that ensures that exp will never have a void run-time value within the covered scope. + +A simple example is the familiar test for void reference: + + if l_x /= Void then + l_x.do_something -- Valid for formal arguments, local variables, and stable attributes + end + +We know that after the explicit check to make sure l_x is not Void, that the feature application l_x.do_something is void-safe. +Of course, you should remember from previous discussions that l_x must be a local variable, a formal argument, or a [[Void-safety: Background, definition, and tools#Stable attributes|stable attribute]]. + +When void-safety was first envisioned for Eiffel, it was intended that individual CAPs would be proven or certified and documented. This would produce a "catalog" of CAPs. + +What happened instead is that the members of the Eiffel standard committee have been able to produce and publish as part of the [http://www.ecma-international.org/publications/standards/Ecma-367.htm standard] a definition of the nature of a CAP from which a determination can be made as to whether a particular code pattern is or is not a CAP. + +The definition in the standard document is not easily readable by most developers. So, in this documentation, you will see various examples of CAPs and the rationale behind them. + + +==The standard CAP definition== + +The Eiffel standard (2nd edition, June 2006) defines a CAP as follows: +---- +'''''A Certified Attachment Pattern (or CAP) for an expression exp whose type is detachable is an occurrence of exp in one of the following contexts: ''''' + + +'''''1. exp is an Object-Test Local and the occurrence is in its scope. ''''' + +'''''2. exp is a read-only entity and the occurrence is in the scope of a void test involving exp.''''' +---- + +The terminology used in the definition is precise. For example, terms like "read-only entity" and "scope of a void test" have specific meanings that are supported by their own definitions in the standard. + +Still, the standard does contain informative text that gives us a guideline that a CAP is a scheme to ensure that a particular expression of a detachable type will never have void run-time value in the scope covered by the CAP. + +The discussion here will follow that guideline, and, as such, will be less formal (and consequently less precise) than that in the standard, and is intended to be a practical guide. Of course, the [http://www.ecma-international.org/publications/standards/Ecma-367.htm standard document] is available for download if you wish to investigate the specifics. + + +==CAP-able expressions== + +In the first context in the definition above, the expression exp can be an '''Object-Test Local'''. An Object-Test Local is the identifier specified for a fresh local entity in an '''object test'''. Remember, object tests are coded using the [[Void-safety: Background, definition, and tools#The attached syntax (object test)|attached syntax]]. + + attached x as l_x + +In the object test expression above, the identifier '''l_x''' is an Object-Test Local. + +In the second context, the expression can be a '''read-only entity'''. Read-only entities are: +# Constant attributes +# Formal arguments +# Object-Test Locals +# Current + +Additionally, the Eiffel Software compiler allows for [[Void-safety: Background, definition, and tools#Stable attributes|stable attributes]] and local variables to be protected by a CAP. + +===Stable attributes=== + +Stable attributes are the only class attributes which are CAP-able. This is because stable attributes, once attached at run-time, can never have a void value again. So, you use stable attributes safely by using them under the protection of a CAP. Consider this stable attribute: + + my_stable_string: detachable STRING + note + option: stable + attribute + end + +The detachable attribute my_stable_string, because it is stable, is not required to be initialized during the creation of instances of the class in which it is a feature. That means that for each instance, my_stable_string can be initialized later during the instance's life-cycle or not at all. But because it is detachable, my_stable_string cannot be accessed in any context in which it cannot be determined that it is currently attached. For ordinary attributes, this means either using an object test and accessing the object through an object test local, or using using a local variable under the protection of a CAP. + +Stable attributes however, can be used directly in a CAP, as shown below: + + + if my_stable_string /= Void then + my_stable_string.append ("abc") -- Valid + ... + + +So using stable attributes can reduce the need to initialize rarely used attributes, and the need to code object tests. + +===Local variables=== + +Local variables can be used in a CAP as long as they are not the target of an assignment whose source is Void or some expression which could possibly be void. + +So, for a local variable l_string, the following is valid: + + local + l_string: detachable STRING + do + if l_string /= Void then + l_string.append ("abc") -- Valid + ... + + +But, if l_string had been a target of an assignment in which the source could possibly have been void, then it could no longer be guaranteed that l_string is not void. So, assuming that my_detachable_string is an attribute declared as type detachable STRING, the second application of append in this example would be invalid: + + + local + l_string: detachable STRING + do + if l_string /= Void then + l_string.append ("abc") -- Valid + l_string := my_detachable_string + l_string.append ("xyz") -- Invalid: my_detachable_string might have been void + ... + + +==Common CAPs== + +We've already seen the simple test for void as a CAP: + + local + l_str: detachable STRING + + ... + + if l_str /= Void then + l_str.append ("xyz") -- Valid + end + + +Additionally, a creation instruction can serve as a CAP. After the execution of a creation instruction, the target of the creation instruction will be attached: + + local + l_str: detachable STRING + do + create l_str.make_empty + l_str.append ("xyz") -- Valid + ... + + + +==Less obvious cases== + +There are some situations that constitute CAPs that we might not think of immediately. + +For example, the case of the non-strict boolean operator and then: + + if x /= Void and not x.is_empty then -- Invalid + ... + + if x /= Void and then not x.is_empty then -- Valid + ... + +Assuming that x is CAP-able, the first line of code is invalid because the expression x.is_empty could always be evaluated even in the case in which x is void. + +In the second line of code, the non-strict boolean is used, guaranteeing that x.is_empty will not be evaluated in cases in which x is void. Therefore, x.is_empty falls within the scope of the void test on x. + +In contracts, multiple assertion clauses are treated as if they were separated by and then. This allows preconditions like the one in the following example: + +my_routine (l_str: detachable STRING) + require + l_str /= Void + not l_str.is_empty -- Valid + ... + + +Another not-so-obvious CAP is related to the use of the logical implication: + + local + l_str: detachable STRING + do + if l_str /= Void implies some_expression then + ... + else + l_str.append ("xyz") -- Valid + end + + + +==The bottom line on CAPs== + +In summary, CAPs provide void-safe protection for certain types of detachable expressions. + +Possibly the characteristic of CAPs which is most important to developers is whether or not a particular CAP is supported by the compiler. In other words, from the developers viewpoint, the only opinion that matters in the argument of whether a particular pattern constitutes a CAP is that of the compiler. + +If the compiler can provide assurance that a certain code pattern guarantees void-safe protection, then the developer will have that pattern available as a CAP. Likewise, even if a pattern can be shown logically to be a CAP, but for some reason it is not supported by the compiler, then that pattern will not available as a CAP and the compiler will not allow its use. + + + + diff --git a/documentation/20.05/eiffel/Overview/common-myths-and-misconceptions-about-eiffel.wiki b/documentation/20.05/eiffel/Overview/common-myths-and-misconceptions-about-eiffel.wiki new file mode 100644 index 00000000..e5f5c062 --- /dev/null +++ b/documentation/20.05/eiffel/Overview/common-myths-and-misconceptions-about-eiffel.wiki @@ -0,0 +1,82 @@ +[[Property:modification_date|Tue, 09 Jul 2019 09:42:22 GMT]] +[[Property:publication_date|Tue, 09 Jul 2019 09:42:22 GMT]] +[[Property:title|Common myths and misconceptions about Eiffel]] +[[Property:link_title|]] +[[Property:weight|4]] +[[Property:uuid|056c0ab0-8e44-571f-f126-0b1850980754]] +Often, when we speak about Eiffel to prospective users, we hear them repeat misinformation about the method, the language, or the tools. Most of the time, the stories are familiar to us … and untrue. Here are a few of the myths that we hear most often, as recounted and debunked by the series entitled [http://eiffel.com/developers/presentations/ "Where Eiffel Fits"]. + + +==Eiffel is an "academic" language only: ''Whoa, wrong! Twice!''== + +Recently, I was offered the opportunity to speak to a local technology group about Eiffel for Microsoft .Net. The leader of this group is part of a small commercially-oriented software development company. Concerning Eiffel, he said, “All I know about Eiffel is that it’s an academic language.” + +We hear that one a lot … and it’s wrong … in two unrelated ways. + +First, as you should know by now, Eiffel is a framework for software development. It has a full-lifecycle development method. The Eiffel method is supported by a notation we call the Eiffel programming language. The notation just happens to be designed such that when it contains sufficient detail, it can be compiled into a running software system. Additionally, the method and language are supported by a set of tools including an interactive development and compiler. So to refer to Eiffel only as a "language" is to do injustice to the complete framework of which the language is only one part. + +Secondly, I’m not sure what “academic language” means exactly, but if it means only used in an academic setting, or not fit for practical work, then this could not be farther from the truth. It is true that Bertrand Meyer who developed the original Eiffel concepts has academic background and is well-respected in the academic community. It’s also true that many of those Eiffel ideas evolved from work that was done by other academic computer scientists and mathematicians. And it’s true that many colleges and universities use Eiffel to teach the best practices of software development. + +But Eiffel is also used successfully in many commercial and government endeavors. If you have any doubts, pay a visit to [https://www.eiffel.com/company/customers/testimonials/ eiffel.com] and check out the success stories and customers testimonials. + + +==Eiffel is not for doing "real" work: ''That's a joke, right?''== + +Occasionally we’ve heard people say that Eiffel is only suitable for building “toy” systems. + +This is similar to the "academic language" argument and is just as false. + +In actuality, we see Eiffel being used often in situations in which other technologies fail. If anything it is the other commonly used technologies that tend to break down under stress. + +We see Eiffel being used instead of other technologies for systems in which scalability and reliability are essential. + +One of our customers is an organization that has developed a payroll system using Eiffel that every week pays over two hundred thousand employees in twenty thousand different institutions … the people in this organization would assure you that Eiffel is indeed industrial grade. + + +==Not many people are using Eiffel: ''You wouldn't want to share an elevator with them all!''== + +The answer to this one depends a bit upon your frame of reference. Some time ago Microsoft estimated that there were twenty million Visual Basic programmers world wide. + +If this is true, then relatively speaking, we have to admit that Eiffel’s market share ''is'' considerably smaller than that of Visual Basic. + +Despite that, it’s not correct to say that not many people use Eiffel. Eiffel licenses world wide number in the tens of thousands. If you use Eiffel, you are not alone. These license-holders have formed a lasting worldwide quorum. Many world-class organizations are committed now, and will continue to be committed to the Eiffel framework. There is support through your maintenance contract with Eiffel Software. Help and information are available online in the form of the [https://www.eiffel.com/company/customers/ Eiffel Software users’ list] and websites like [https://www.eiffel.org/ Eiffel.org]. + +Eiffel Software's dual licensing model gives developers the opportunity to learn Eiffel without a great initial financial commitment. + +So, don’t worry about it, plenty of people use Eiffel … and those numbers are increasing constantly. + + +==If we use Eiffel, we may not be able to find qualified programmers: ''Gimme a break.''== + +Through the years some potential Eiffel users have expressed to us a concern that if they embrace Eiffel, that they may not be able to find a sufficient number of qualified developers. + +This is of course incorrect. + +First, almost all Eiffel people were proficient in some other technology before they became Eiffel people. It turns out that this really works to your advantage. You see, Eiffel people want to stay Eiffel people. So an Eiffel programmer on the job market will be searching for an Eiffel position first, and would probably rather have a root canal than to go back to working in his or her previous technology. + +Additionally, it is important also to understand that Eiffel developers are easy to create. Because Eiffel is simple, clean, and elegant, it doesn’t take long to get people going with it. I teach a five-day course that contains fifteen programming exercises. Each time I’ve taught the course, almost every student has finished every exercise. Students leave with a good foundation for how to begin saving time and money for their organization by constructing quality software with Eiffel. These people can be fluent in Eiffel in as little as a couple of months. This can be contrasted with the other extreme ... a well-known Microsoft Windows expert told me a couple of years ago that he estimates it to take 5 to 7 years to become truly fluent in C++/COM programming on Windows. Programmers who are proficient in other technologies often experience Eiffel as a breath of fresh air. + + +==Eiffel might not be around in five/eight/ten (choose one) years: ''Better recalibrate your crystal ball, Nostradamus!''== + +I think the first time I heard this one, it was about 1989. + +And of course, I’ve heard it many times in the years since. + +And of course, it’s not true. + +Eiffel is more complete and functionally superior in most ways to every other commercially viable software development technology … and there are enough people around who recognize this (that quorum of users I mentioned earlier) to ensure that Eiffel will be around for a long time to come. + +It’s possible that twenty-five years from now, there will be a significantly better software engineering idea … but certainly, there hasn’t been anything that’s come close since Eiffel’s original design in 1985. In most areas, other technologies are playing “catch-up” to Eiffel. + +Besides, Eiffel constantly implements refinements and new capabilities with minimal impact on existing software. [[Void-safe programming in Eiffel|Void-safe programming]] is an excellent example of this. + +You can get a feel for this issue by watching [http://channel9.msdn.com/posts/Charles/Emmanuel-Stapf-Eiffel-and-Contract-Oriented-Programming/ this video on Microsoft Developers Network Channel9]. Here you'll see Emmanuel Stapf, an engineer at Eiffel Software, speak with Mads Torgersen, one of Microsoft's C# language designers. You'll hear how Eiffel stays fresh and continues to set a technological standard worthy of the aspirations of other technologies. + +So, don’t worry about it. Eiffel will be here. + + + + + + diff --git a/documentation/20.05/eiffel/Overview/eiffel-two-minute-fact-sheet.wiki b/documentation/20.05/eiffel/Overview/eiffel-two-minute-fact-sheet.wiki new file mode 100644 index 00000000..ecd37799 --- /dev/null +++ b/documentation/20.05/eiffel/Overview/eiffel-two-minute-fact-sheet.wiki @@ -0,0 +1,97 @@ +[[Property:title|Two-Minute fact sheet]] +[[Property:weight|0]] +[[Property:uuid|f672bfb8-ddea-beb1-eaa6-e374a6a6bc92]] +If you are both curious about Eiffel and in a hurry, take a couple of minutes to read these facts about Eiffel. If anything here seems too good to be true, please suspend your disbelief. Press on to the more detailed documentation for the rationale, and our success stories for the evidence behind these facts. + +===Eiffel is the most comprehensive approach to the construction of successful object-oriented software.=== + +Software produced with Eiffel is typically: + +*Cheaper -- You spend less on development, debugging, maintenance +*Better -- You get the bugs before they get you +*Shorter time-to-market -- You release quality products ahead of your competitors +*Easier -- In every way: understanding, maintenance, reuse, and extension + +===Systems developed using Eiffel can be made portable across major industry platforms.=== + +*Windows NT/2000/XP/Vista including CLS compliance on Microsoft .NET +*Major Unix versions +*Macintosh OS X +*Linux +*OpenVMS + +===Eiffel is the only approach that covers analysis, design, implementation and maintenance in a single framework.=== + +Eiffel consists of: + +====The Eiffel Method==== + +*Is Based on a small number of powerful ideas from computer science and software engineering +**An example of these is Design by Contract +***Defines a software system as a set of components interacting through precisely specified contracts +***Contracts are active and enforceable throughout the life-cycle +***Design by Contract promotes: +****Precise software specification +****Software reliability +****Safe, effective software reuse +*Uses a "single-product" model +**All life-cycle phases are supported by a single notation +***No need to switch, say, from "analysis language" to "design language" +**Products of all phases are recorded in a single document with multiple views + +====The Eiffel Programming Language==== + +*Exists to express the products of the Eiffel Method +*Supports features not always available in competing technologies +**Contracts and contract monitoring +**Exception handling based on software specification (versus ad hoc try/catch) +**Void-safety: calls on void (null) references are eliminated at compile time +**Inheritance +***Includes multiple and repeated inheritance +***Safe and fully controllable +**Genericity (generic classes), including constrained genericity +**Platform independent concurrency ([[Concurrent programming with SCOOP|SCOOP]]) +*Widely recognized as simultaneously the simplest and most complete implementation of object-oriented concepts +*Is clean, elegant, readable, easy to learn + + +====EiffelStudio and the Eiffel Libraries==== + +*'''EiffelStudio''' +**Runs on all major platforms (of course, it's built with Eiffel) +**Features lightning-fast compilation (Melting Ice Technology) +**Generates lightning-fast executables +***Final compilation generates standard C (MSIL in the case of .NET) +***Speed of executables rivals native C +**Provides multiple views of your product +***Views for different life-cycle phases and developer roles +***Graphical views +**Features automated generation of HTML and XML documentation + +*'''The Eiffel Libraries''' +**Contain rich, time-tested, multi-platform components +**Include facilities for +***GUI building and graphics +***Web +***Networking +***Fundamental algorithms and data structures +***Object persistence and database access +***Multi-threading +***Lexical analysis and parsing +***Interfacing with other technologies + +===Eiffel has a proven track record of successful projects=== + +*Some of the largest successful object-oriented projects ever built, including systems target to: +**Finance and securities +**Education +**Trading +**Manufacturing +**Telecommunications +**Government and national defense +**Science + +For a more detailed overview see [[Invitation to Eiffel (I2E)|An Invitation to Eiffel]] . + + + diff --git a/documentation/20.05/eiffel/Overview/index.wiki b/documentation/20.05/eiffel/Overview/index.wiki new file mode 100644 index 00000000..98bdaaab --- /dev/null +++ b/documentation/20.05/eiffel/Overview/index.wiki @@ -0,0 +1,5 @@ +[[Property:title|Eiffel Overview]] +[[Property:link_title|Overview]] +[[Property:weight|1]] +[[Property:uuid|f65e67ed-0990-4638-b8f8-0fc85c28f0d8]] + diff --git a/documentation/20.05/eiffel/Overview/learning-eiffel.wiki b/documentation/20.05/eiffel/Overview/learning-eiffel.wiki new file mode 100644 index 00000000..bea25cb0 --- /dev/null +++ b/documentation/20.05/eiffel/Overview/learning-eiffel.wiki @@ -0,0 +1,59 @@ +[[Property:modification_date|Thu, 19 Sep 2019 23:24:40 GMT]] +[[Property:publication_date|Fri, 22 Mar 2019 14:53:52 GMT]] +[[Property:title|Learning Eiffel]] +[[Property:weight|3]] +[[Property:uuid|a30e29fe-841d-4634-ded2-88ae1754e5fd]] +If you are new to Eiffel and are interested in learning the technology, you might consider some of the following resources. Remember that Eiffel, unlike other programming languages, is not just a programming language. Instead, it is a full life-cycle framework for software development. As a consequence, learning Eiffel implies learning the Eiffel Method and the Eiffel programming Language. Additionally, the Eiffel development environment EiffelStudio is specifically designed to support the method and language. So having an understanding of the method and language helps you to appreciate the capabilities and behavior of EiffelStudio. + + +=Online presentations= + +Your first stop in getting acquainted with Eiffel might be the collection of [http://eiffel.com/developers/presentations/ online presentations] on the [http://eiffel.com eiffel.com] website. These presentations each usually take less than an hour to view, and give an introduction to Eiffel concepts including Design by Contract, the EiffelStudio development environment, and includes several presentations that describe selected Eiffel features in relation to those of other other development tools. + +=Online documentation set= + +The [http://eiffel.org/documentation|eiffel.org/documentation] section contains the online documentation for the Eiffel method, tools, and language. Within the documentation set are tutorials to help you learn about the Eiffel programming language and tools. + +==The Eiffel Tutorial== + +A [[An Eiffel Tutorial (ET)|tutorial]] that covers the Eiffel Method and much of the Eiffel programming language. + +==The EiffelStudio Guided Tour== + +This [[Introducing EiffelStudio]] page is good way to get a feel for what EiffelStudio can do. + +=Academic materials available online= + +Many colleges and universities use Eiffel to teach "best practices" in software engineering. Often the materials used in courses are available on the worldwide web. For example, the teaching materials for courses at the Swiss Federal Institute of Technology in Zurich are available at [http://se.inf.ethz.ch/courses/ this web address] (warning: old content). + +If you search the web, you can find similar materials at other academic institutions. + + + +=Books= + +To find information about the most up-to-date books about Eiffel, look [[Books about the Eiffel Method and Language|here]]. + +=Examples and sample code= + +Throughout the documentation site, there are many code snippets designed to illustrate certain language features or design principles. For example, the code snippet [[ET: Inheritance#Redefinition|here]] shows the mechanics of redefining an inherited feature. + +In the EiffelStudio distribution you will find a subdirectory "examples" which contains many examples of using Eiffel, primarily with the Eiffel class libraries. + +A third source of examples is the [[Examples]] book in the documentation pages. + +=Eiffel Programming Language Syntax= + +The documentation site includes a summary of the [[Quick reference to the Eiffel programming language|syntax of Eiffel]] the language. This summary is intended to reflect the state of the current official [[ECMA Standard 367|ISO/ECMA Eiffel standard document]]. + +However, usually you will find that there are differences in the syntax supported by EiffelStudio's compiler and that defined in the current standard. The differences between the standard and the EiffelStudio implementation are summarized in the [[EiffelStudio release notes]] and in a [[Differences between standard ECMA-367 and Eiffel Software implementation|documentation page]] that is specific to that purpose. + +Another [[Differences_between_ETL_2nd_printing_and__Eiffel_Software__implementation|a documentation page]] summarizes changes to the pre-ECMA definition of Eiffel as described in [[Eiffel-_The_Language|ETL-2 "Eiffel: The Language"]]. + + + + diff --git a/documentation/20.05/eiffel/Overview/why-your-next-project-should-use-eiffel.wiki b/documentation/20.05/eiffel/Overview/why-your-next-project-should-use-eiffel.wiki new file mode 100644 index 00000000..753efc42 --- /dev/null +++ b/documentation/20.05/eiffel/Overview/why-your-next-project-should-use-eiffel.wiki @@ -0,0 +1,185 @@ +[[Property:title|Your next project in Eiffel]] +[[Property:weight|1]] +[[Property:uuid|038CDA4A-9ACA-46F6-AC10-06942FAE4529]] +(After an article in the special Eiffel issue of the ''Journal of Object-Oriented Programming'', May 1996.) + + +Over its ten-year life Eiffel has evolved into one of the most usable software development environments available today. Other articles discuss its theoretical contributions. This one addresses a more mundane subject: how practical software projects can benefit, today, from the power of Eiffel. In so doing it will largely rely on published assessments from both Eiffel users and book authors. In fact a quotation from one of the best-known books in the object-oriented field -- ''Object-Oriented Modeling and Design'' by James Rumbaugh and his colleagues, the text that introduced the OMT O-O analysis method -- provides a good start: + +
+''Eiffel is arguably the best commercial object-oriented language available today. [Jim Rumbaugh et al. in Object-Oriented Modeling and Design, Prentice Hall 1988]. '' +
+ + +==What is Eiffel?== + +First we should define what the word "Eiffel" means. If you are thinking "a programming language" you are not wrong (and the preceding quotation shows that you are in good company). The programming language is indeed the most visible part, but it is only a reflection of something broader: a comprehensive approach to the production of quality software. As Richard Wiener wrote: + +
+''Eiffel is more than a language; it is a framework for thinking about, designing and implementing object-oriented software. [Richard Wiener in Software Development using Eiffel: There is life other than C++, Prentice Hall, 1995.] '' +
+ +The Eiffel approach includes a method (a "methodology", as it is sometimes called) based on a number of pervasive ideas such as Design by Contract, seamlessness, reversibility, rigorous architectural rules, systematic use of single and multiple inheritance, static type checking and several others. Besides a method and a language Eiffel also means powerful graphical development environments, such as EiffelStudio, available across a wide number of industry-standard platforms and supporting analysis and design as well as implementation, maintenance and evolution. + +The language itself, indeed (which Wiener calls an elegant and powerful language for object-oriented problem solving") is not just a programming language but extends to the phases of system construction that both precede and follow implementation. This is sometimes hard to accept if you have been raised in the view that software development must involve a sequence of separate steps; that one should initially use an analysis method and then at some point switch to a programming language, with perhaps a design method in-between. This view is detrimental to the software process and to the quality of the resulting product, as it does not support the inevitable back-and-forth hesitations that characterize real software development. + +Wisdom sometimes blooms late in the season. However careful you may have been at the analysis stage, some great ideas will hit you - or your implementers - past the point at which you thought you had all the specifications right. Why renounce the benefit of such belated but valuable ideas? Eiffel and the associated Business Object Notation approach to analysis and design accommodate them naturally, by providing a single conceptual framework from the beginning to the end of the process. + +Here Eiffel does not have much competition. The most bright-eyed Smalltalk or C++ enthusiast would not seriously claim that one can do design, let alone analysis, in his language of choice. And users of any of the popular O-O analysis notations know that at some stage they must stop working on their model and move on to the implementation in some programming language. Eiffel is unique in helping you for all of these tasks, without ever introducing the impedance mismatches that characterize other approaches. + +As a reviewer wrote: + +
+''As a design language, Eiffel continues to be a better model for object- oriented programming than Ada. It is even better than the new Ada 9X standard. [Richard Riehle in HP Professional, October 1994, A Tour of Eiffel.] '' +
+ +==The commercial and political context== + +The next few sections give a glimpse of the technical contributions of Eiffel, or more precisely of what other people have written about them. But of course the best technology in the world requires infrastructure and support to succeed. + +Eiffel has plenty of these. It has been around for more than a decade. Eiffel is available from several commercial and open-source providers. The number of licenses sold is in the tens of thousands. Reusable library classes are in the thousands. + +The platforms covered range from Unix (all of Unix, the famous and the arcane) and Linux to OpenVMS, OS/2, Windows 3. 1, Windows NT, Windows 95/98. + +Particularly impressive is the growth of Eiffel usage in education. Eiffel is quickly becoming the language of choice for teaching modern software technology, including, increasingly, introductory programming. A dozen of excellent textbooks are now available from Prentice Hall, Addison-Wesley, Macmillan and others, with about as many announced just for the coming months. + +It is not just the professors who like the approach. Here is just one typical comment on student reaction, from an institution (Rochester Institute of Technology) having adopted Eiffel as its first-year introductory language on a massive scale: + +
+''We were pleased to discover many of our more skeptical students turning around and admitting that Eiffel was a "fun" language in which to work. [Jim Heliotis in the Proceedings of OOPSLA 95, Experiences teaching objects: A new curriculum for computer science students.] '' +
+ +A Computer World article confirmed the need for Eiffel in training the high-powered software professionals of tomorrow. Quoting Amy Cody-Quinn from Management Recruiters International, the journalist writes + +
+''There is a big problem with people who say they know C++ - but they don't really know how to do objects. If they have Eiffel on their resume, then we know they really have the proper understanding of what they are doing. [Leslie Goff in ComputerWorld, Object Edge, December 18, 1995.] '' +
+ +But it would be a mistake to think of Eiffel as an academic tool. A little-known fact is that some of the biggest object-oriented projects ever undertaken (at least the successful ones - other O-O languages have had their share of large-scale failures) are being done in Eiffel. The hot areas at the moment are banking and the financial industry (in particular some very large derivative trading and investment management systems), telecommunications, health care. These are all areas in which all that counts in the end is quality and time to market, so that projects need to select the best technology available. Quoting from an article by Philippe Stephan, the system architect of such a project (Rainbow, a major derivative trading system built with ISE Eiffel): + +
+''We evaluated three major object-oriented languages for the project - Smalltalk, C++ and Eiffel - and chose Eiffel. [...] Rainbow currently comprises over 400,000 lines of code, for about 3000 classes. [Current figures are way over these mid-1995 counts. ] The developers feel very productive. This was confirmed when Rainbow's financial backers brought in object professionals to audit the project. The auditors evaluated the project during July 1994 and were impressed with the productivity of the Rainbow development group. [Philippe Stephan in Object Magazine, July-August 1995, Building financial software with object technology.] '' +
+ +The development group in question is remarkable for being made only for a third of software professionals. The others are professionals from other disciplines (such as trading and financial analysis), who, Stephan writes, + +
+''can express business concepts in Eiffel because they can focus on design and implementation, rather than struggling with memory management problems and debugging. '' +
+ +The result has received lavish praise from such publications as ComputerWorld and analysts: + +
+''Industry experts briefed on Rainbow said they were impressed with the results. CALFP is "progressive" in [...] committing the organization's mission-critical systems development efforts to this architecture, said Richard Crone, senior manager of financial services at KPMG Peat Marwick in Los Angeles. "What's unique here is that [CALFP is] delivering this system end-to-end using object-oriented technologies", said Henry Morris, a research analyst at International Data Corporation (IDC) in Framingham, Mass. [Thomas Hoffmann in ComputerWorld, May 8, 1995, Object- Oriented financial package tames transactions.]'' +
+ +Along with these Eiffel mega-projects, you will also find myriad smaller endeavors. Many consultants, in particular, have found for themselves the key competitive advantage that they can gain from Eiffel's excellence. In ensuring this spread of Eiffel throughout the industry, the benefit of cheap yet complete environments such as EiffelStudio for Linux has been immeasurable. + +Also crucial to the development of Eiffel has been the neutral status of its definition, now controlled by a consortium of vendors and users, NICE (the Nonprofit International Consortium for Eiffel). NICE has already produced a library standard and expects to produce soon the language standard that should shortly thereafter enjoy a smooth ride through ANSI and other international standards bodies. + +The pace of Eiffel history has been accelerating in the past few months. This has been picked up by many journalists. As Dan Wilder wrote: + +
+''With an open specification for both the language and the kernel libraries, and support from multiple vendors, Eiffel now stands poised to take off. [Dan Wilder in Linux Journal, June 1995, Introduction to Eiffel.] '' +
+ + +==The criteria== + +Eiffel - the method, the language, the environment - is based on a small set of goals, addressing the crucial needs of software quality and productivity. Quoting from an article in ''Byte'' magazine: + +
+''Developers who want an object-oriented language that adheres to the keystone principles of software engineering need look no further than Eiffel. [Peter Varhol in Byte Magazine, February 1996.] '' +
+ +or, as Steve Bilow wrote in a review of Eiffel Software's Melting Ice compiling technology (which he calls "an outstanding marriage between portability and development speed"): + +
+''Eiffel was designed precisely for the purpose of enabling software developers to deliver high quality, reliable, efficient, reusable code. [Steve Bilow in The X Journal, The Eiffel alternative, July-August 1995.]'' +
+ +==Reliability== + +The first goal is reliability. No other approach available today has made the effort to give developers all the tools that they need to produce bug-free software - software that will run without bugs the first time around. Crucial in this effort is the presence of static typing ( ''real'' static typing, not "a little bit typed" as in those languages that still keep C-like type conversions); assertions and the whole mechanism of Design by Contract, on which more than one Eiffel developer has said "this has changed my life" by enabling him or her to specify precisely what the software should do, and to track at run time that it does it; disciplined exception handling; automatic garbage collection, which eliminates a source of horrendous bugs in C++-based environments (and a large part of the code, tedious and error-prone); a clean approach to inheritance; the use of dynamic binding as the default policy, meaning the guarantee that all calls will use the right version of each operation; and the simplicity of the language design, which enables Eiffel developers to know '''all''' of Eiffel and feel in control. + +The role of assertions and Design by Contract is particularly important here. According to the ''Journal of Object-Oriented Programming'': + +
+''The contribution of Eiffel is significant: it shows how invariants, preconditions, and postconditions can be incorporated into a practical developer's view of a class. Wider use of Eiffel [...] will encourage a greater use of simple but powerful mathematics during development. [Richard Mitchell et al. in Journal of Object-Oriented Programming, July-August 1995, As-a: a relationship to support code reuse.] '' +
+ +==Reusability== + +The second goal is reusability. This has become a catchword, but Eiffel is the only approach that has taken this requirement and its consequences all the way to the end. Quoting Roland Racko: + +
+''Everything about [Eiffel] is single-mindedly, unambiguously, gloriously focused on reusability - right down to the choice of reserved words and punctuation and right up to the compile time environment. [Roland Racko in Software Development, December 1994, In praise of Eiffel.] '' +
+ +Eiffel benefits here from being a simple ("but not simplistic", writes Racko) and consistent design, not a transposition from older, unrelated technology. Beyond the language and the environment facilities (such as precompilation), the crucial help to reusability is of course the presence of thousands of high-quality library ''classes'', such as, in EiffelBase (a "Linnaean approach to the reconstruction of software fundamentals"), EiffelNet for client-server communication, EiffelStore for relational and O-O database manipulations, EiffelLex and EiffelParse for lexical analysis and parsing, EiffelMath for object-oriented numerical computation, EiffelVision for portable graphics, WEL (the Windows Eiffel Library) for Windows-specific graphics, EiffelWeb to process forms from the Web, and many others. Not even mentioning quality, the result is probably the biggest repository of object-oriented components available elsewhere. The care that has been applied to the production of these libraries also has considerable pedagogical benefits: the way people learn Eiffel is by learning the libraries - first to use them, then to adapt them if necessary, then to write their own software. + +Part of the single-mindedness mentioned by acko is the emphasis on abstraction. In contrast with, say, Smalltalk, you do not read the source code of a class when you want to use it. This may be fine for a couple dozen classes, but not for a large, powerful library. Eiffel introduces the notion of '''short form''': an abstract version of the class, keeping only the interface information including assertions. This is an ideal tool for documenting classes but also for discussing designs and presenting them to outsiders - managers or customers - who need to know what is going on without getting bogged down in the details. + +Let me mention just one of the unique reusability-supporting features of Eiffel, without which it is, in my experience, impossible to have a long-term reuse effort. Racko again: + +
+''The language's designer [...] recognized that no reusable library is ever perfect and, thus, that libraries are always in flux. So he built a kind of version-control system into the language. Specifically, there are language elements to demarcate obsolete code that is, however, still being supported. When these elements are referenced by someone unaware of such code's obsolescence, the compiler will issue a warning at compile time about the impending doom that awaits persons who continue the referencing. '' +
+ +It is this kind of detail that can make or break the success of reuse in a company. + +==Extendibility== + +Next comes extendibility. With Eiffel, modifying software is part of the normal process. As Philippe Stephan writes of the external audit of his project: + +
+''The auditors rated the responsiveness of the development team as very high. '' +
+ +Chief among the method's support for extendibility is the careful design of the inheritance mechanism. Unlike Smalltalk, which is fatally limited by the absence of multiple inheritance, the Eiffel approach fundamentally relies on multiple inheritance to combine various abstractions into one. As Dan Wilder notes: + +
+''Most object-oriented languages do not attempt multiple-inheritance. The literature is full of elaborate explanations why. This is sad. Eiffel demonstrates that multiple inheritance need not be difficult or complex, and it can also yield some quite practical results. '' +
+ +The approach also enforces a strict form of information hiding, which means that a module (a '''client''' in Eiffel Design by Contract terminology) that uses another's facilities (its '''supplier''') is protected against many of the changes that can be made later on to these facilities. This is essential in preserving the coherent evolution of a large system - and the sanity of its developers. + +==Efficiency== + +Performance is almost as much an obsession in Eiffel as reusability. The software field is still, and will remain for a long time, largely driven by performance considerations. (Do not believe anyone who says that speed does not matter. If we get faster computers, it is to do things faster and especially to do more things - not to use more CPU cycles to run the same old applications at the same old visible speed. ) + +There is no reason whatsoever to leave the mantle of efficiency to the proponents of machine-oriented languages such as C/C++, or to follow the path of Smalltalk which sacrifices performance to object orientation. With Eiffel you can have the best of both worlds. Thanks to a performance-obsessed language design and ten years of research and competition on compiling algorithms, the speed of Eiffel-generated code (in such modes as what is known as "finalization" in Eiffel Software's implementation) is as good as that of hand-produced C code, or better. + +Software producers should stand up to their ideas. That is what we do at Eiffel Software: apart from the run-time engine (a few thousand lines of C), all of our software - thousands of classes, hundreds of thousands of lines - is written in Eiffel, and it runs fast. Typical of the situation is a recent incident with the EiffelLex library: it still had a few C elements, remnants of an earlier design. We rewrote them in Eiffel - for a 30% performance gain. + +Why these gains? The answer is simple. The /C++ approach of doing everything by hand, under tight programmer control, works well for small programs. Similarly, a good secretary has no equivalent for keeping one person's records. But in the same way that no humans can match the performance of a computer for managing, say, the records of a bank or a city, no programmer can beat a sophisticated Eiffel compiler for optimizing a large program. Against the automatic application of inlining, static binding, memory management and other optimizations, the human does not stand a chance. + +To have one's cake and eat it also means not to have to choose between run-time and compilation-time performance. For programmers used to the contrast between a Smalltalk-like style of rapid turnaround and the interminable edit-compile-link cycle of most compiled environment, the following comments by Dan Wilder (in a separate article) will be a shock: + +
+''EiffelStudio uses "melting ice technology", which allows incremental changes to run in an interpreted mode. Only modified classes are recompiled. Changing one class and clicking the Melt button caused only a few seconds of compilation. [...] My test application took 20 seconds to compile from scratch in "melt" mode. [Dan Wilder in Linux Journal, September 1995, Two Eiffel implementations.] '' +
+ +Steve Bilow provides further explanations: + +
+''Based on the observation that software development is an iterative process which is usually focused on constructing systems from code modifications, the folks at Eiffel Software have developed something that they call "Melting Ice Technology". Essentially, this means that when you make a [change] and you want to try it out, you simply "melt" it into the system. You don't need to regenerate a bunch of C code, so your changes are integrated into the system proportionally to the amount of code changed. Even in C and C++, `make` still has to relink. '' +
+ +What this also indicates in passing is the technology choice made by Eiffel Software's implementation and all current implementations: using C as the portable implementation vehicle. By going through C, the compilers gain efficiency and portability. This also makes Eiffel one of the most open environments around; in contrast to the self-centered view that predominates in Smalltalk, Eiffel software is born with a sociable attitude, ready to interface with all kinds of other software written in C or other languages. This, needless to say, is a key to the success of realistic applications. + +==With us, everything is the face== + +A good way to think about Eiffel - the seamlessness of it, the insistence on getting everything right, the conviction that software should be beautiful in and out, specification and implementation - is this little anecdote stolen from Roman Jakobson's Essays on ''General Linguistics'': + +
+''In a far-away country, a missionary was scolding the natives. "You should not go around naked, showing your body like this!". One day a young girl spoke back, pointing at him: "But you, Father, you are also showing a part of your body!". "But of course", the missionary said in a dignified tone; "That is my face". The girl replied: "So you see, Father, it is really the same thing. Only, with us, everything is the face". '' +
+ +So it is with Eiffel too. Everything is the face. + +Hundreds of thousands of people have now been exposed to Eiffel through books, through courses, through hearing about other people's successes, and most importantly (for the most fortunate among them) through using it to complete a project on time, within budget, and to the satisfaction of their customers. Shouldn't your next project use Eiffel too? + + + + diff --git a/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/EiffelStudio-_A_Guided_Tour_-_Eiffel_Software_Technical_Report.wiki b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/EiffelStudio-_A_Guided_Tour_-_Eiffel_Software_Technical_Report.wiki new file mode 100644 index 00000000..06a7f2c6 --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/EiffelStudio-_A_Guided_Tour_-_Eiffel_Software_Technical_Report.wiki @@ -0,0 +1,38 @@ +[[Property:modification_date|Wed, 18 Sep 2019 13:17:05 GMT]] +[[Property:publication_date|Thu, 12 Sep 2019 15:07:05 GMT]] +[[Property:uuid|BF3D5A25-A6C0-4645-956A-82807C41F073]] +[[Property:weight|10]] +[[Property:title|EiffelStudio: A Guided Tour - Eiffel Software Technical Report]] +[[Property:link_title|EiffelStudio Guided Tour]] + +==Eiffel Software Technical Report TR-EI-68/GT == + +First published 1993 as ''First Steps with EiffelBench'' (TR-EI-38/EB) and revised as a chapter of ''Eiffel: The Environment'' also available as [[#An_Object-Oriented_Environment|An Object-Oriented Environment]] (below). + +Version 3.3.8, 1995. + +Version 4.1, 1997 + +This version: July 2001. Corresponds to release 5.0 of the EiffelStudio environment. + +Full reference at [[Manual_identification_and_copyright|Manual identification and copyright]] + +==An Object-Oriented Environment == + +:'''Bertrand Meyer''' + +:Prentice Hall, 1994 + +:ISBN 0-13-245-507-2 + +The principles of object technology change the way we envision, design and use software development environments. + +This book explains what it means for an environment to be truly object-oriented, not just by having a modern user interface but by applying to its full extent the concept of data abstraction. It will provide precious material to anyone who is interested in finding out how an environment can support O-O development in its quest for software quality and productivity. + +''Content highlights: '' + +Introduces five design principles for object-oriented environments; presents a complete set of tools applying these principles, based on development object types rather than functional units; describes a novel approach to compilation: the Melting Ice Technology, which combines the fast development turnaround of interpreters with the safety of compiled approaches, and generates high-performance final code; discusses how to use C as a target language for efficiency and portable cross-development, without impairing the benefits of the O-O method; takes the reader through a detailed demonstration of the environment's object-oriented tools, showing their application to compiling, browsing and symbolic debugging; explains the principles and application of GUI (Graphical User Interface) Application Building, going from mere 'interface builders' to the interactive construction of entire applications - interface and semantics; and introduces the Context-Events-Command-State model of GUI application building and applies it to the interactive development of a complete mini-application. + +==The Guided Tour== + +{{Note|[[EiffelStudio_tutorials|The Guided Tour to EiffelStudio starts here]]}} diff --git a/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/Reusable-Software.wiki b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/Reusable-Software.wiki new file mode 100644 index 00000000..0dbb7ad0 --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/Reusable-Software.wiki @@ -0,0 +1,33 @@ +[[Property:modification_date|Wed, 18 Sep 2019 13:10:45 GMT]] +[[Property:publication_date|Wed, 11 Sep 2019 01:44:42 GMT]] +[[Property:uuid|8A382DA4-C45F-4CBB-A2B6-44447C63EFB0]] +[[Property:weight|5]] +[[Property:title|Reusable Software: The Base Object-Oriented Component Libraries]] +[[Property:link_title|OO Component Libraries]] + +:[[Image:/files/uploads/OOComponentLibrariesSmall.jpg|OO Component Libraries]] + +:'''Bertrand Meyer''' + +:Prentice Hall, 1994 + +:xx, 514 p. +:Includes bibliographical references and index + +:ISBN-10: 013-245-499-8 +:ISBN-13: 978-013-245-499-5 + +First reviews the principles of library construction and the object-oriented techniques that make it possible to build high-quality libraries - e.g., finding the right objects and classes, choosing the proper names, using inheritance properly, determining the ideal class size, etc. + +Then provides detailed usage descriptions of hundreds of reusable components, offering thousands of directly usable operations. The components, written in Eiffel, cover such areas as lists, chains, queues, stacks, trees of various kinds, sorted structures, lexical analysis, parsing, and many other fundamental data structures and algorithms. + +For both the users of reusable software libraries and for developers who are interested in building their own libraries of reusable software. + +''Content:'' + +1. Introduction to the Base libraries -- 2. Building libraries: techniques -- 3. Principles of library design -- 4. Abstract container structures: the taxonomy -- 5. Mathematical properties -- 6. Linear structures: sequences, chains, lists, circular chains -- 7. Dispenser structures: stacks, queues, priority lists -- 8. Trees -- 9. Sets and hash tables -- 10. Iteration -- 11. Lexical analysis: the Lex library -- 12. Parsing: The Parse Library -- 13. The Kernel Library -- 14. Classes for abstract container structures -- 15. Classes for mathematical properties -- 16. Classes for linear structures -- 17. Dispenser classes -- 18. Tree classes -- 19. Set and hash table classes -- 20. Iteration classes -- 21. Lexical analysis classes -- 22. Parsing classes -- 23. Kernel library classes + +{{Caution|The last half of the book is taken up by a reprint of the contract form of the libraries as per printing time. +The most current documentation is found here as +[[ref:libraries/base/reference/index|EiffelBase Class Reference]] }} + diff --git a/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/ecma-standard-367.wiki b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/ecma-standard-367.wiki new file mode 100644 index 00000000..3c34bf99 --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/ecma-standard-367.wiki @@ -0,0 +1,16 @@ +[[Property:title|ECMA Standard 367]] +[[Property:weight|1]] +[[Property:uuid|b49b0949-85fa-31da-555e-003b09f6213e]] +[[Image:ECMA-367 cover small|ECMA-367]] + + +==ECMA Standard 367 -- Eiffel: Analysis, Design, and Programming Language== + +ECMA International + +Standard Eiffel syntax, validity, and semantics are described in this document, which is available [http://www.ecma-international.org/publications/standards/Ecma-367.htm online]. + +ECMA-367 is a specification for the Eiffel programming language. Therefore, it can be useful as a reference, but it is definitely not a tutorial. That said, the document does contain occasional informative text and a general description chapter which can help readers understand the specification. + + + diff --git a/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/eiffel-language.wiki b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/eiffel-language.wiki new file mode 100644 index 00000000..cb8c1edb --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/eiffel-language.wiki @@ -0,0 +1,26 @@ +[[Property:title|Eiffel: The Language]] +[[Property:weight|2]] +[[Property:uuid|dae5a248-29f5-02b2-d01f-371394aa75e9]] +[[Image:ETL]] + + +=='''''Eiffel: The Language''''' by Bertrand Meyer.== + +Prentice Hall Object-Oriented Series. + +594 pp. + +Soft cover. + +ISBN 0-13-247925-7 + + +''Eiffel: The Language'' is one of the foundation volumes of Eiffel technology. It was originally published in 1992, and reprinted later with updates and corrections. + +Because the language specification has changed since the last reprinting to incorporate new quality and productivity constructs, hardcopies of ''Eiffel: The Language'', although still available, will represent the bulk of Eiffel correctly, but will not reflect the latest important changes. + +Currently ''Standard Eiffel'', the successor to ''Eiffel: The Language'', is a work-in-progress and is available in its current state online (See ''Standard Eiffel'', on [http://se.ethz.ch/~meyer/publications/#PSTE this page]). + +The most current state of Eiffel syntax, validity, and semantics is described in the ISO/ECMA [http://www.ecma-international.org/publications/standards/Ecma-367.htm standard document], also available online. + + diff --git a/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/index.wiki b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/index.wiki new file mode 100644 index 00000000..c7ccb2ad --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/index.wiki @@ -0,0 +1,6 @@ +[[Property:title|Books about the Eiffel Method and Language]] +[[Property:link_title|Books]] +[[Property:weight|5]] +[[Property:uuid|721967da-6621-33f0-198f-9fc8ee26d37f]] + + diff --git a/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/object-oriented-software-construction-2nd-edition.wiki b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/object-oriented-software-construction-2nd-edition.wiki new file mode 100644 index 00000000..de7d125b --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/object-oriented-software-construction-2nd-edition.wiki @@ -0,0 +1,39 @@ +[[Property:title|Object-Oriented Software Construction, 2nd Edition]] +[[Property:link_title|OOSC2]] +[[Property:weight|0]] +[[Property:uuid|496983ef-b86e-772e-16b9-39b37ef80e37]] +[[Image:OOSC2 small|OOSC2]] + + +=='''''Object-Oriented Software Construction, 2nd Edition''''' by Bertrand Meyer.== + +Prentice Hall Professional Technical Reference. + +1254 + xxviii pp. + +Soft cover. + +ISBN 0-13-629155-4 + + +Click to [http://www.amazon.com/Object-Oriented-Software-Construction-Book-CD-ROM/dp/0136291554 buy from Amazon]. + + +This Jolt Award winner takes the reader through the clear, logical, and comprehensive formation of a method for object-oriented software development ... the Eiffel method. During this journey, the author evolves a notation capable of expressing the products of each phase of development, from analysis through implementation. This notation is the Eiffel programming language. + + +==Praise for '''''Object-Oriented Software Construction, 2nd Edition'''''== + +Roger Smith, on the Dr. Dobbs Journal website, writes: + +:"In my unbiased opinion [...] it is destined to become the comprehensive and definitive reference for most methodological and technical questions raised by object technology. Its width and breadth of scope is impressive, from object-oriented techniques like Design by Contract and inheritance, to methodology issues like patterns and class design, to advanced issues like concurrency and persistence." + + +In ''Unix Review'', Stan Kelly-Bootle calls this book "The ultimate O-O guide." + + +Ian Graham, in ''Journal of Object-Oriented Programming'' calls it "Epoch-making". + + + + diff --git a/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/touch-class-learning-program-well-objects-and-contracts.wiki b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/touch-class-learning-program-well-objects-and-contracts.wiki new file mode 100644 index 00000000..5ecaafe3 --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/books-about-eiffel-method-and-language/touch-class-learning-program-well-objects-and-contracts.wiki @@ -0,0 +1,38 @@ +[[Property:modification_date|Wed, 11 Sep 2019 02:10:22 GMT]] +[[Property:publication_date|Wed, 11 Sep 2019 02:10:22 GMT]] +[[Property:link_title|Touch of Class]] +[[Property:title|Touch of Class: Learning to Program Well with Objects and Contracts]] +[[Property:weight|-1]] +[[Property:uuid|3b4afd2f-6433-c619-f9a4-602c430c6902]] +[[Image:Touch of Class cover small]] + + + +=='''''Touch of Class: Learning to Program Well with Objects and Contracts''''' by Bertrand Meyer== + +Springer-Verlag, 2009, 2nd corrected ed. 2013 + +876 + lxiv pp. + +ISBN-13: 978-3540921448 + +Full color printing; many color illustrations and photographs + + +Click to [http://www.amazon.com/Touch-Class-Learning-Program-Contracts/dp/3540921443 buy from Amazon]. + + +Is this really a book about Eiffel? Perhaps in some senses it is not. It is a book about exactly what the subtitle indicates: ''Learning to Program Well with Objects and Contracts.'' (Primary emphasis should fall on the word "''Well''".) + +Still, the Eiffel method and language are used in this journey as tools, the best tools known, to help those seeking excellence in software development become prepared to meet the types of challenges a career in software will present. In the rapidly changing software world, this is a tall order. As the preface (for instructors) states: + +:'' It is not enough to present immediately applicable technology, for which in our globalized industry a cheaper programmer will always be available somewhere ... [Software professionals] must master software development as a professional endeavor, and by this distinguish themselves from the masses of occasional or amateur programmers.'' + + +''Touch of Class'' imparts its message using techniques which have accumulated through decades of study of technical learning and have been applied for several years in courses at ETH Zurich. These techniques include the extensive study and reuse of libraries of high-quality software components, employment of the Eiffel object-oriented method and Design by Contract, an introduction to formal methods and a ubiquitous awareness for software engineering concerns. + +A unique and refreshing aspect of ''Touch of Class'' is seen throughout the volume. Credit is given for ideas which form the foundation of modern software thinking, and in the process, those pioneers upon whose shoulders all software professionals stand, are made human and personal by photographs and historical vignettes. + + + + diff --git a/documentation/20.05/eiffel/Technical_papers/eiffel-expression-language.wiki b/documentation/20.05/eiffel/Technical_papers/eiffel-expression-language.wiki new file mode 100644 index 00000000..1e50a8ca --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/eiffel-expression-language.wiki @@ -0,0 +1,20 @@ +[[Property:title|Eiffel as an expression language]] +[[Property:weight|0]] +[[Property:uuid|61e93102-c558-42e7-7784-0b60b9257b5d]] +A functional-programming style, or more generally a style involving more expressions and fewer instructions, is possible in Eiffel. In particular, the agent mechanism embeds a full functional-programming mechanism in the object-oriented framework of the language. + +To make the notations simpler, a number of extensions have been proposed. They involve no fundamental new language mechanisms, but provide new, more concise notations for existing mechanisms. Examples are: +*Conditional expressions +*Implicit tuple, a rule allowing the omission of brackets for an actual argument when it is a tuple and the last argument, e.g. f (a, b, c) as an abbreviation for f ([a, b, c]) (an example involving just one argument). Tuples already provided the equivalent of a variable-argument ("varargs") facility, but it is made simpler to use with this convention. +*Parenthesis alias, making it possible to write just f (x, y) when f is an agent (closure, lambda expression, delegate etc. in other terminologies), i.e. treating f as if it were a function; the notation is simply an abbreviation for f.item ([x, y]) (this example also takes advantage of implicit tuples). It has many other applications since a "parenthesis alias" can be defined for a feature of any class. +*Avoiding explicit assignments to '''Result'''. +*Type inference (to avoid explicitly specifying the type when it can be deduced from the context). This is a facility for the programmer, useful in particular for local variables, but does not affect the type system: Eiffel remains strongly typed, it is just that you can be lazy about writing the type when there is no ambiguity. +*In the same vein, omitting the entire list of generic parameters when it can be inferred. + +see [[file:expression_language.pdf|document as pdf]]. + + + + + + diff --git a/documentation/20.05/eiffel/Technical_papers/index.wiki b/documentation/20.05/eiffel/Technical_papers/index.wiki new file mode 100644 index 00000000..8d29e16c --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/index.wiki @@ -0,0 +1,9 @@ +[[Property:title|Technical papers about Eiffel]] +[[Property:description|Background, foundation, or supplemental information about uncovered topics]] +[[Property:link_title|Papers]] +[[Property:weight|4]] +[[Property:uuid|d2b880d6-d1dc-9811-32b8-ed718ad4d4be]] +Occasionally papers are produced providing background, foundation, or supplemental information about the topics covered by the Eiffel documentation. Although the material in these papers might be of interest to many Eiffel users, they might not be suitable in their current form for inclusion in the mainstream documentation books. + +You will find a collection of these papers in this book. + diff --git a/documentation/20.05/eiffel/Technical_papers/void-safety-how-eiffel-removes-null-pointer-dereferencing.wiki b/documentation/20.05/eiffel/Technical_papers/void-safety-how-eiffel-removes-null-pointer-dereferencing.wiki new file mode 100644 index 00000000..6f98ef4a --- /dev/null +++ b/documentation/20.05/eiffel/Technical_papers/void-safety-how-eiffel-removes-null-pointer-dereferencing.wiki @@ -0,0 +1,25 @@ +[[Property:title|Void-safety: how Eiffel removes null-pointer dereferencing]] +[[Property:weight|0]] +[[Property:uuid|d9380464-4312-b76e-9bfd-e57df0f59b4a]] +This white paper (see [[file:void-safe-eiffel.pdf|document as pdf]]) presents the Eiffel void-safety mechanism, fully implemented in EiffelStudio 6.4. + +In almost every program running today there is a ticking time bomb: the risk of a "void call". A void call is possible in programs written in almost any programming language; its effect is usually to crash the program. Many unexplained program failures and other abnormal behaviors result from void calls. + +While extensive testing can decrease the likelihood of a void call, it cannot remove the possibility. The solution has to come from the programming language. + +Professor C.A.R. Hoare from Microsoft Research, winner of the Turing Award and the Kyoto Prize, calls the presence of void calls in modern programming languages the "billion-dollar mistake": + +:"The invention of the null reference in 1965" [the source of void calls] "has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years." + +(Citation at: [http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare] ) + + +The Eiffel solution relies on a combination of language mechanisms: + +*"Certified Attachment Patterns" are code schemes that the EiffelStudio compiler guarantees to be void-safe. +*"Attached types" are types that are guaranteed to have non-void values. +*The "Object Test" instruction lets programmers treat void values in a special way. + + +The White Paper (see the link below) describes the theoretical and practical challenges of ensuring void-safety and presents the Eiffel mechanism. + diff --git a/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Getting-a-STRING-from-a-NUMERIC-object.wiki b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Getting-a-STRING-from-a-NUMERIC-object.wiki new file mode 100644 index 00000000..39f91d94 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Getting-a-STRING-from-a-NUMERIC-object.wiki @@ -0,0 +1,17 @@ +[[Property:modification_date|Mon, 10 Sep 2018 09:09:25 GMT]] +[[Property:publication_date|Mon, 10 Sep 2018 09:09:25 GMT]] +[[Property:uuid|B74D374E-895C-4F22-B95F-656BD78ECD03]] +[[Property:weight|1000]] +[[Property:title|Getting a STRING from a NUMERIC object]] +[[Property:link_title|NUMERIC to STRING]] +Every class has the `out` method that can be used to get a text version of the object. For a lot of classes, this method returns internal information that is not really useful for the end user. But for every `NUMERIC` class, the `out` method returns a text representation of the number that the `NUMERIC` object represents. + + + print_integer (a_integer: INTEGER) + -- Print the value of `a_integer`. + do + print (a_integer.out + "%N") + end + + +Note that for more advanced conversion, you can also use a conversion class like `FORMAT_DOUBLE`. \ No newline at end of file diff --git a/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Iterate-on-a-LIST-and-removing-object.wiki b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Iterate-on-a-LIST-and-removing-object.wiki new file mode 100644 index 00000000..52e4097a --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Iterate-on-a-LIST-and-removing-object.wiki @@ -0,0 +1,28 @@ +[[Property:modification_date|Mon, 10 Sep 2018 09:06:41 GMT]] +[[Property:publication_date|Fri, 07 Sep 2018 12:13:00 GMT]] +[[Property:uuid|78393BBA-9B1E-4523-9881-3D83CEB6A952]] +[[Property:weight|3000]] +[[Property:title|Removing object while iterating on a LIST]] +If you already have the object that you want to remove from the `LIST` you can easily use `prune` and `prune_all`. But if you want to remove objects while iterating on that `LIST`, depending on criteria on the objects contained in the `LIST`, here is what you can do. + +First of all, if you think about removing an object while iterating, I do not recommend using an `across` loop. If you iterate on the list using a `from until loop end`, just remember to use the `LIST.forth` only when you do not use `LIST.remove`. + +For example, let's say we have class `MY_CLASS` with an attribute `has_stopped` and that I want to remove every object of a `LIST` that has this attribute set to `True`. Here is what the code will look like. + + + removing_stopped (a_list: LIST [MY_CLASS]) + -- Removing every closed element of `a_list` + do + from + a_list.start + until + a_list.exhausted + loop + if a_list.item.has_stopped then + a_list.remove + else + a_list.forth + end + end + end + \ No newline at end of file diff --git a/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Iterating-on-a-LIST.wiki b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Iterating-on-a-LIST.wiki new file mode 100644 index 00000000..fd0f6819 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Iterating-on-a-LIST.wiki @@ -0,0 +1,64 @@ +[[Property:modification_date|Wed, 17 Apr 2019 14:09:18 GMT]] +[[Property:publication_date|Thu, 06 Sep 2018 15:17:57 GMT]] +[[Property:uuid|96077603-DD2D-4D8C-A486-AF4BD066613A]] +[[Property:weight|2000]] +[[Property:title|Iterating on a LIST]] +There are three Eiffel mechanisms to iterate on every element of a `LIST`. + +=== the `across` loop === +The `across` can be used on every `ITERABLE` object (including `LIST` objects). + + + print_elements (a_list: LIST[INTEGER]) + -- Print every elements on `a_list` + do + across a_list as ic loop + print (ic.item.out + "%N") + end + end + + +Note that the temporary variable (`ic` in the example) represents an iterator of the `ITERABLE` object, and not directly an element like in many other languages (like the `for` structure in Python for example). + +=== the `from until` loop syntax=== +This syntax offer more possibilities than the `across` loop, but is riskier. + + + print_elements (a_list:LIST[INTEGER]) + -- Print every elements on `a_list` + do + from + a_list.start + until + a_list.exhausted + loop + print (a_list.item.out + "%N") + a_list.forth + end + end + + +=== Using Eiffel agents and `{LIST}.do_all, ....` === +It is possible to use agents in conjunction with the `LIST` features `do_all`, `do_if`, `there_exists`, and `for_all` which are inherited from the class `LINEAR`. + + list_traversal_agents + -- Example of traversing a list with do_all + local + a_list: LINKED_LIST [STRING] + do + -- Insert some elements in a_list + create a_list.make + a_list.extend ("The Moon Is Full") + a_list.extend ("Master charge") + a_list.extend ("Black cat bone") + a_list.do_all (agent {STRING}.append (" - Albert Collins")) + a_list.do_all (agent print_element) + end + + print_element (a_element: STRING) + -- Print `a_element` to standard output + do + io.put_string (a_element) + io.put_new_line + end + diff --git a/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Managing-CTRL-C-on-console.wiki b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Managing-CTRL-C-on-console.wiki new file mode 100644 index 00000000..f1abc49a --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/Managing-CTRL-C-on-console.wiki @@ -0,0 +1,54 @@ +[[Property:modification_date|Wed, 17 Apr 2019 14:06:41 GMT]] +[[Property:publication_date|Wed, 17 Apr 2019 14:02:25 GMT]] +[[Property:uuid|5CA34C5D-30F1-4D6F-9FE4-B555E541EA8C]] +[[Property:weight|4000]] +[[Property:title|Managing CTRL+C in console application]] +Normally, if the user uses the CTRL+C keys, the Eiffel application detect it as an error and throw an exception of type OPERATING_SYSTEM_SIGNAL_FAILURE. + +To manage the CTRL+C keys, you can use a rescue clause to detect the exception and a retry mechanism to cancel the exception handling done by the Eiffel runtime. + +To detect the exception, you can inherit from the EXCEPTIONS class and use an attachment test on Exception_manager.last_exception. + +Note that this code does not work on Windows. If used on Windows, the application will quit, but the rescue call is not launched. + + +note + description: "Show how to quit an application using CTRL+C (without trace)." + author: "Louis Marchand" + date: "Wed, 25 Apr 2018 23:12:33 +0000" + revision: "0.1" + +class + APPLICATION + +inherit + EXCEPTIONS + +create + make + +feature {NONE} -- Initialization + + make + -- Launch `Current'. + local + l_ctrl_c:BOOLEAN + do + if not l_ctrl_c then + from until False loop + io.standard_default.put_string ("Press CTRL+C%N") + io.input.read_line + end + else + io.standard_default.put_string ("%NClosing...%N") + end + rescue + if attached {OPERATING_SYSTEM_SIGNAL_FAILURE} + Exception_manager.last_exception then + l_ctrl_c := True + retry + end + end + +end + \ No newline at end of file diff --git a/documentation/20.05/eiffel/Tutorials/Mini-HowTo/index.wiki b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/index.wiki new file mode 100644 index 00000000..4473fb5c --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/Mini-HowTo/index.wiki @@ -0,0 +1,10 @@ +[[Property:modification_date|Mon, 10 Sep 2018 09:04:15 GMT]] +[[Property:publication_date|Mon, 10 Sep 2018 09:04:15 GMT]] +[[Property:link_title|Mini How-tos]] +[[Property:uuid|B2E4622A-2495-47DD-9C02-B9940A026EC1]] +[[Property:weight|0]] +[[Property:title|Mini How-tos]] +In this section, you will find little how-tos that you can use to learn some very specific mechanics in Eiffel. Those how-tos are small by design and can be used to show very fundamental, or more advanced, mechanisms for beginners. + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-agents.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-agents.wiki new file mode 100644 index 00000000..03dc9616 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-agents.wiki @@ -0,0 +1,250 @@ +[[Property:title|ET: Agents]] +[[Property:weight|-3]] +[[Property:uuid|ba49a80d-5ddf-8b30-4943-528974fd0ddd]] +Our last mechanism, agents, adds one final level of expressive power to the framework describe so far. Agents apply object-oriented concepts to the modeling of operations. + +==Objects for operations== + +Operations are not objects; in fact, object technology starts from the decision to separate these two aspects, and to choose object types, rather than the operations, as the basis for modular organization of a system, attaching each operation to the resulting modules -- the classes. + +In a number of applications, however, we may need objects that represent operations, so that we can include them in object structures that some other piece of the software will later traverse to uncover the operations and, usually, execute them. Such "operation wrapper" objects, called agents, are useful in a number of application areas such as:
+* GUI (Graphical User Interface) programming, where we may associate an agent with a certain event of the interface, such as a mouse click at a certain place on the screen, to prescribe that if the event occurs -- a user clicks there -- it must cause execution of the agent's associated operation. +* Iteration on data structures, where we may define a general-purpose routine that can apply an arbitrary operation to all the elements of a structure such as a list; to specify a particular operation to iterate, we will pass to the iteration mechanism an agent representing that operation. +* Numerical computation, where we may define a routine that computes the integral of any applicable function on any applicable interval; to represent that function and pass its representation to the integration routine, we will use an agent. + + +Operations in Eiffel are expressed as routines, and indeed every agent will have an associated routine. Remember, however, that the fundamental distinction between objects and operations remains: an agent is an object, and it is not a routine; it represents a routine. As further evidence that this is a proper data abstraction, note that the procedure call, available on all agents to call the associated routine, is only one of the features of agents. Other features may denote properties such as the class to which the routine belongs, its precondition and postcondition, the result of the last call for a function, the number of arguments. + +==Building an agent== + +In the simplest form, also one of the most common, you obtain an agent just by writing + + agent r + + +where r is the name of a routine of the enclosing class. This is an expression, which you may assign to a writable entity, or pass as argument to a routine. Here for example is how you will specify event handling in the style of the EiffelVision 2 GUI library: + + your_icon.click_actions.extend (agent your_routine) + + +This adds to the end of your_icon.click_actions -- the list of agents associated with the "click" event for your_icon, denoting an icon in the application's user interface -- an agent representing your_routine. Then when a user clicks on the associated icon at execution, the EiffelVision 2 mechanisms will call the procedure call on every agent of the list, which for this agent will execute your_routine. This is a simple way to associate elements of your application, more precisely its "business model" (the processing that you have defined, directly connected to the application's business domain), with elements of its GUI. + +Similarly although in a completely different area, you may request the integration of a function your_function over the interval 0..1 through a call such as + + your_integrator.integral (agent your_function, 0, 1) + + +In the third example area cited above, you may call an iterator of EiffelBase through + + your_list.do_all (agent your_proc) + + +with your_list of a type such as LIST [YOUR_TYPE]. This will apply your_proc to every element of the list in turn. + +The agent mechanism is type-checked like the rest of Eiffel; so the last example is valid if and only if your_proc is a procedure with one argument of type YOUR_TYPE. + +==Operations on agents== + +An agent agent r built from a procedure r is of type PROCEDURE [T, ARGS] where T represents the class to which r belongs and ARGS the type of its arguments. If r is a function of result type RES, the type is FUNCTION [T, ARGS, RES]. Classes PROCEDURE and FUNCTION are from the Kernel Library of EiffelBase, both inheriting from ROUTINE [T, ARGS]. + +Among the features of ROUTINE and its descendants the most important are call, already noted, which calls the associated routine, and item, appearing only in FUNCTION and yielding the result of the associated function, which it obtains by calling call. + +As an example of using these mechanisms, here is how the function integral could look like in our INTEGRATOR example class. The details of the integration algorithm (straight forward, and making no claims to numerical sophistication) do not matter, but you see the place were we evaluate the mathematical function associated with f, by calling item on f: + + integral (f: FUNCTION [TUPLE [REAL], REAL]; low, high: REAL): REAL + -- Integral of `f' over the interval [`low', `high'] + require + meaningful_interval: low <= high + local + x: REAL + do + from + x := low + invariant + x >= low + x <= high + step + -- Result approximates the integral over + -- the interval [low, low.max (x - step)] + until + x > high + loop + Result := Result + step * f.item ([x]) -- Here item is applied to f + x := x + step + end + end + + +Function integral takes three arguments: the agent f representing the function to be integrated, and the two interval bounds. When we need to evaluate that function for the value x, in the line + + Result := Result + step * f.item ([x]) + + +we don't directly pass x to item; instead, we pass a one-element tuple [x], using the syntax for manifest tuples introduced in [[ET: Other Mechanisms#Tuple_types|"Tuple types"]] . You will always use tuples for the argument to call and item, because these features must be applicable to any routine, and so cannot rely on a fixed number of arguments. Instead they take a single tuple intended to contain all the arguments. This property is reflected in the type of the second actual generic parameter to f, corresponding to ARGS (the formal generic parameter of FUNCTION): here it's TUPLE [REAL] to require an argument such as [x], where x is of type REAL. + +Similarly, consider the agent that the call seen above: + + your_icon.click_actions.extend (agent your_routine) + + +added to an EiffelVision list. When the EiffelVision mechanism detects a mouse click event, it will apply to each element item of the list of agents, your_icon.click_actions, an instruction such as + + item.call ([x, y]) + + +where x and y are the coordinates of the mouse clicking position. If item denotes the list element agent your_routine, inserted by the above call to extend, the effect will be the same as that of calling + + your_routine (x, y) + + +assuming that your_routine indeed takes arguments of the appropriate type, here INTEGER representing a coordinate in pixels. (Otherwise type checking would have rejected the call to extend.) + +==Open and closed arguments== + +In the examples so far, execution of the agent's associated routine, through item or call, passed exactly the arguments that a direct call to the routine would expect. You can have more flexibility. In particular, you may build an agent from a routine with more arguments than expected in the final call, and you may set the values of some arguments at the time you define the agent. + +Assume for example that a cartographical application lets a user record the location of a city by clicking on the corresponding position on the map. The application may do this through a procedure + + record_city (cn: STRING; pop: INTEGER; x, y: INTEGER) + -- Record that the city of name `cn' is at coordinates + -- `x' and `y' with population `pop'. + + +Then you can associate it with the GUI through a call such as + + map.click_actions.extend (agent record_city (name, population, ?, ?)) + + +assuming that the information on the name and the population has already been determined. What the agent denotes is the same as agent your_routine as given before, where your_routine would be a fictitious two-argument routine obtained from record_city -- a four-argument routine -- by setting the first two arguments once and for all to the values given, name and population. + +In the agent agent record_city (name, population, ?, ?), we say that these first two arguments, with their set values, are '''closed'''; the last two are '''open'''. The question mark syntax introduced by this example may only appear in agent expressions; it denotes open arguments. This means, by the way, that you may view the basic form used in the preceding examples, agent your_routine, as an abbreviation -- assuming your_routine has two arguments -- for agent your_routine (?, ?). It is indeed permitted, to define an agent with all arguments open, to omit the argument list altogether; no ambiguity may result. + +For type checking, agent record_city (name, population, ?, ?) and agent your_routine (?, ?) are acceptable in exactly the same situations, since both represent routines with two arguments. The type of both is + + PROCEDURE [TUPLE [INTEGER, INTEGER]] + + +where the tuple type specifies the open operands. + +A completely closed agent, such as agent your_routine (25, 32) or agent record_city (name, population, 25, 32), has the type TUPLE, with no parameters; you will call it with call ([ ]), using an empty tuple as argument. + +The freedom to start from a routine with an arbitrary number of arguments, and choose which ones you want to close and which ones to leave open, provides a good part of the attraction of the agent mechanism. It means in particular that in GUI applications you can limit to the strict minimum the "glue" code (sometimes called the controller in the so-called MVC, Model-View Controller, scheme of GUI design) between the user interface and "business model" parts of a system. A routine such as record_city is a typical example of an element of the business model, uninfluenced -- as it should be -- by considerations of user interface design. Yet by passing it in the form of an agent with partially open and partially closed arguments, you may be able to use it directly in the GUI, as shown above, without any "controller" code. + +As another example of the mechanism's versatility, we saw above an integral function that could integrate a function of one variable over an interval, as in + + your_integrator.integral (agent your_function (0, 1)) + + +Now assume that function3 takes three arguments. To integrate function3 with two arguments fixed, you don't need a new integral function; just use the same integral as before, judiciously selecting what to close and what to leave open: + + your_integrator.integral (agent function3 (3.5, ?, 6.0), 0, 1) + + +==Open targets== + +All the agent examples seen so far were based on routines of the enclosing class. This is not required. Feature calls, as you remember, were either unqualified, as in f (x, y), or qualified, as in a.g (x, y). Agents, too, have a qualified variant as in + + agent a.g + + +which is closed on its target a and open on the arguments. Variants such as agent a.g (x, y), all closed, and agent a.g (?, y), open on one argument, are all valid. + +You may also want to make the target open. The question mark syntax could not work here, since it wouldn't tell us the class to which feature g belongs, known in the preceding examples from the type of a. As in creation expressions, we must list the type explicitly; the convention is the same: write the types in braces, as in + + agent {SOME_TYPE}.g + agent {SOME_TYPE}.g (?, ?) + agent {SOME_TYPE}.g (?, y) + + +The first two of these examples are open on the target and both operands; they mean the same. The third is closed on one argument, open on the other and on the target. + +These possibilities give even more flexibility to the mechanism because they mean that an operation that needs agents with certain arguments open doesn't care whether they come from an argument or an operand of the original routine. This is particularly useful for iterators and means that if you have two lists + + your_account_list: LIST [ACCOUNT] + your_integer_list: LIST [INTEGER] + + +you may write both + + your_account_list.do_all (agent {ACCOUNT}.deposit_one_grand) + your_integer_list.do_all (agent add_to_total) + + +even though the two procedures used in the agents have quite different forms. We are assuming here that the first one, a feature of class ACCOUNT, is something like + + deposit_one_grand + -- Deposit one thousand into `Current'. + do + deposit (1000) + end + + +The procedure deposit_one_grand takes no arguments. In the do_all example above, its target is open. The target will be, in turn, each instance of ACCOUNT in your_account_list. + +In contrast, the other routine, assumed to be a feature of the calling class, does take an argument x: + + add_to_total (x: INTEGER) + -- Add `x' to the value of `total'. + do + total := total + x + end + + +Here, total is assumed to be an integer attribute of the enclosing class. In the do_all example, each instance of your_integer_list will fill the argument x left open in add_to_total. + +Without the versatility of playing with open and closed arguments for both the original arguments and target, you would have to write separate iteration mechanisms for these two cases. Here you can use a single iteration routine of LIST and similar classes of EiffelBase, do_all, for both purposes:
+* Depositing money on every account in a list of accounts. +* Adding all the integers in a list of integers. + + +==Inline agents== + +In the agent discussion above, it has been assumed that there already exists some routine that we wish to represent with an agent. However, sometimes the only usage of such a routine could be as an agent ... that is, the routine does not make sense as a feature of the class in question. In these cases, we can use '''inline agents'''. With an inline agent we write the routine within the agent declaration. + +If we consider the use of agents instead of class features in the two do_all examples in the previous section, the agents would be coded as follows: + + + your_account_list.do_all + (agent (a: ACCOUNT) + do + a.deposit (1000) + end) + + +and + + + your_integer_list.do_all + (agent (i: INTEGER) + do + total := total + i + end) + + +The syntax of the inline agent corresponds to the syntax of a routine. Immediately following the agent keyword are the formal arguments and in the case of functions the type for Result. Inline agents can have local entities, preconditions, and postconditions, just like any routine. + +Inline agents do not have access to the local entities of the routine in which they are coded. So, if it is necessary to use the routine's local variables, they must be passed as arguments to the inline agent. + +Here's an example of an inline agent which is a function. It is used in the context of a check to see if every element of your_integer_list is positive: + + + your_integer_list.for_all + (agent (i: INTEGER): BOOLEAN + do + Result := (i > 0) + ensure + definition: Result = (i > 0) + end) + + +Inline agents are interesting also as an implementation of the notion of [http://en.wikipedia.org/wiki/Closure_(computer_science) closures] in computer science. + + +Agents provide a welcome complement to the other mechanisms of Eiffel. They do not conflict with them but, when appropriate -- as in the examples sketched in this section -- provide clear and expressive programming schemes, superior to the alternatives. + +Compatibility note: earlier versions of the agent classes (ROUTINE, PROCEDURE, FUNCTION, PREDICATE) had an extra initial generic parameter, for which ANY was generally used. The compiler has been engineered to accept the old style in most cases. + + +{{SeeAlso|[[Event Programming with Agents]] }} + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-design-contract-tm-assertions-and-exceptions.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-design-contract-tm-assertions-and-exceptions.wiki new file mode 100644 index 00000000..d9edb63f --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-design-contract-tm-assertions-and-exceptions.wiki @@ -0,0 +1,337 @@ +[[Property:title|ET: Design by Contract (tm), Assertions and Exceptions]] +[[Property:weight|-8]] +[[Property:uuid|2ef367c9-34d9-d45e-a722-163b39581405]] +Eiffel directly implements the ideas of Design by Contract™ , which enhance software reliability and provide a sound basis for software specification, documentation and testing, as well as exception handling and the proper use of inheritance. + +==Design by Contract™ basics== + +A system -- a software system in particular, but the ideas are more general -- is made of a number of cooperating components. Design by Contract™ states that their cooperation should be based on precise specifications -- contracts -- describing each party's expectations and guarantees. + +An Eiffel contract is similar to a real-life contract between two people or two companies, which it is convenient to express in the form of tables listing the expectations and guarantees. Here for example is how we could sketch the contract between a homeowner and the telephone company: + + +{| border="1" +|- +| style="width=10%" |provide telephone service +| style="width=35%" |'''OBLIGATIONS''' +| style="width=35%" |'''BENEFITS''' +|- +| '''Client''' +| (Satisfy precondition:)
+Pay bill. +| (From postcondition:)
+Receive telephone service from Supplier. +|- +| '''Supplier''' +| (Satisfy precondition:)
+Provide telephone service. +| (From postcondition:)
+No need to provide anything if bill not paid. +|} + + +Note how the obligation for each of the parties maps onto a benefit for the other. This will be a general pattern. + +The client's obligation, which protects the supplier, is called a '''precondition'''. It states what the client must satisfy before requesting a certain service. The client's benefit, which describes what the supplier must do (assuming the precondition was satisfied), is called a '''postcondition'''. + +In addition to preconditions and postconditions, contract clauses include '''class invariants''', which apply to a class as a whole. More precisely a class invariant must be ensured by every creation procedure (or by the default initialization if there is no creation procedure), and maintained by every exported routine of the class. + +==Expressing assertions== + +Eiffel provides syntax for expressing preconditions (require), postconditions (ensure) and class invariants (invariant), as well as other assertion constructs studied later (see "[[ET: Instructions|Instructions]]" ): loop invariants and variants, check instructions. + +Here is a partial update of class ACCOUNT with more assertions: + +note + description: "Simple bank accounts" + +class + ACCOUNT + +feature -- Access + + balance: INTEGER + -- Current balance + + deposit_count: INTEGER + -- Number of deposits made since opening + do + ... As before ... + end + +feature -- Element change + + deposit (sum: INTEGER) + -- Add `sum' to account. + require + non_negative: sum >= 0 + do + ... As before ... + ensure + one_more_deposit: deposit_count = old deposit_count + 1 + updated: balance = old balance + sum + end + +feature {NONE} -- Implementation + + all_deposits: DEPOSIT_LIST + -- List of deposits since account's opening. + +invariant + consistent_balance: (all_deposits /= Void) implies + (balance = all_deposits . total) + zero_if_no_deposits: (all_deposits = Void) implies + (balance = 0) + +end -- class ACCOUNT + + +Each assertion is made of one or more subclauses, each of them a boolean expression (with the additional possibility of the old construct). The effect of including more than one sub clause, as in the postcondition of deposit and in the invariant, is the same as connecting them through an and. Each clause may be preceded by a label, such as consistent_balance in the invariant, and a colon; the label is optional and does not affect the assertion's semantics, except for error reporting as explained in the next section, but including it systematically is part of the recommended style. The value of the boolean expression a implies b is true except if a is true and b false. + +Because assertions benefit from the full power of boolean expressions, they may include function calls. This makes it possible to express sophisticated consistency conditions, such as " the graph contains no cycle", which would not be otherwise expressible through simple expressions, or even through first-order predicate calculus, but which are easy to implement as Eiffel functions returning boolean results. + +===Preconditions=== + +The precondition of a routine expresses conditions that the routine is imposing on its clients. Here a call to deposit is correct if and only if the value of the argument is non-negative. The routine does not guarantee anything for a call that does not satisfy the precondition. It is in fact part of the Eiffel method that a routine body should '''never''' test for the precondition, since it is the client's responsibility to ensure it. (An apparent paradox of Design by Contract™, which is reflected in the bottom-right entries of the preceding and following contract tables, and should not be a paradox any more at the end of this discussion, is that one can get more reliable software by having fewer explicit checks in the software text.) + +===Postconditions=== + +The postcondition of a routine expresses what the routine guaranteed to its clients for calls satisfying the precondition. The notation old expression, valid in postconditions ( ensure clauses) only, denotes the value that expression had on entry to the routine. + +The precondition and postcondition state the terms of the contract between the routine and its clients, similar to the earlier example of a human contract: + + +{| border="1" +|- +| style="width=10%" |deposit +| style="width=35%"| '''OBLIGATIONS''' +| style="width=35%" | '''BENEFITS''' +|- +| '''Client''' +| (Satisfy precondition:)
+Use a non-negative argument. +| (From postcondition:)
+Get deposits list and balance updated. +|- +| '''Supplier''' +| (Satisfy precondition:)
+Update deposits list and balance. +| (From postcondition:)
+No need to handle negative arguments. +|} + +===Class invariants=== + +The class invariant, as noted, applies to all features. It must be satisfied on exit by any creation procedure, and is implicitly added to both the precondition and postcondition of every exported routine. In this respect it is both good news and bad news for the routine implementer: good news because it guarantees that the object will initially be in a stable state, averting the need in the example to check that the total of all_deposits is compatible with the balance; bad news because, in addition to its official contract as expressed by its specific postcondition, every routine must take care of restoring the invariant on exit. + +A requirement on meaningful contracts is that they should be in good faith: satisfiable by an honest partner. This implies a consistency rule: if a routine is exported to a client (either generally or selectively), any feature appearing in its precondition must also be available to that client. Otherwise -- for example if the precondition included require n > 0, where n is a secret attribute -- the supplier would be making demands that a good-faith client cannot possibly check for. + +Note in this respect that guaranteeing a precondition does not necessarily mean, for the client, testing for it. Assuming n is exported, a call may test for the precondition + + if x.n > 0 then + x.r + end + + +possibly with an else part. But if the context of the call, in the client's code, implies that n is positive -- perhaps because some preceding call set it to the sum of two squares -- then there is no need for an if or similar construct. + +{{note|In such a case, a check instruction as introduced later ( "[[ET: Instructions|Instructions]]" ) is recommended if the reason for omitting the test is non-trivial. }} + +==Using contracts for built-in reliability== + +What are contracts good for? Their first use is purely methodological. By applying a discipline of expressing, as precisely as possible, the logical assumptions behind software elements, you can write software whose reliability is built-in: software that is developed hand-in-hand with the rationale for its correctness. + +This simple observation -- usually not clear to people until they have practiced Design by Contract™ thoroughly on a large-scale project -- brings as much change to software practices and quality as the rest of object technology. + +==Run-time assertion monitoring== + +Contracts in Eiffel are not just wishful thinking. They can be monitored at run time under the control of compilation options. + +It should be clear from the preceding discussion that contracts are not a mechanism to test for special conditions, for example erroneous user input. For that purpose, the usual control structures ( if deposit_sum > 0 then ...) are available, complemented in applicable cases by the exception handling mechanism reviewed next. An assertion is instead a '''correctness condition''' governing the relationship between two software modules (not a software module and a human, or a software module and an external device). If sum is negative on entry to deposit, violating the precondition, the culprit is some other software element, whose author was not careful enough to observe the terms of the deal. Bluntly: + +{{rule|name=Assertion Violation|text=A run-time assertion violation is the manifestation of a bug. }} + +To be more precise:
+* A precondition violation signals a bug in the client, which did not observe its part of the deal. +* A postcondition (or invariant) violation signals a bug in the supplier -- the routine -- which did not do its job. + +That violations indicate bugs explains why it is legitimate to enable or disable assertion monitoring through mere compilation options: for a correct system -- one without bugs -- assertions will always hold, so the compilation option makes no difference to the semantics of the system. + +But of course for an incorrect system the best way to find out where the bug is -- or just that there is a bug -- is often to monitor the assertions during development and testing. Hence the presence of the compilation options, which EiffelStudio lets you set separately for each class, with defaults at the system and cluster levels:
+* no : assertions have no run-time effect. +* require : monitor preconditions only, on routine entry. +* ensure : preconditions on entry, postconditions on exit. +* invariant : same as ensure, plus class invariant on both entry and exit for qualified calls. +* all : same as invariant, plus check instructions, loop invariants and loop variants. + + +An assertion violation, if detected at run time under one of these options other than the first, will cause an exception ( [[ET: Design by Contract (tm), Assertions and Exceptions#exception_handling|"Exception handling"]] ). Unless the software has an explicit "retry" plan as explained in the discussion of exceptions, the violation will produce an exception trace and cause termination (or, in EiffelStudio, a return to the environment's browsing and debugging facilities at the point of failure). If present, the label of the violated sub clause will be displayed, to help identify the problem. + +The default is require. This is particularly interesting in connection with the Eiffel method's insistence on reuse: with libraries such as EiffelBase, richly equipped with preconditions expressing terms of use, an error in the '''client software''' will often lead, for example through an incorrect argument, to violating one of these preconditions. A somewhat paradoxical consequence is that even an application developer who does not apply the method too well (out of carelessness, haste, indifference or ignorance) will still benefit from the presence of contracts in someone else's library code. + +During development and testing, assertion monitoring should be turned on at the highest possible level. Combined with static typing and the immediate feedback of compilation techniques such as the Melting Ice Technology, this permits the development process mentioned in the section [[ET: The Software Process in Eiffel#Quality_and_functionality|"Quality and functionality"]], where errors are exterminated at birth. No one who has not practiced the method in a real project can imagine how many mistakes are found in this way; surprisingly often, a violation will turn out to affect an assertion that was just included for goodness' sake, the developer being convinced that it could never "possibly" fail to be satisfied. + +By providing a precise reference (the description of what the software is supposed to do) against which to assess the reality (what the software actually does), Design by Contract™ profoundly transforms the activities of debugging, testing and quality assurance. + +When releasing the final version of a system, it is usually appropriate to turn off assertion monitoring, or bring it down to the require level. The exact policy depends on the circumstances; it is a trade off between efficiency considerations, the potential cost of mistakes, and how much the developers and quality assurance team trust the product. When developing the software, however, you should always assume -- to avoid loosening your guard -- that in the end monitoring will be turned off. + +==The contract form of a class== + +Another application of assertions governs documentation. Environment mechanisms, such as clicking the Form Contract icon in Eiffelstudio, will produce, from a class text, an abstracted version which only includes the information relevant for client authors. Here is the contract form of class ACCOUNT in the latest version given: + +note + description: "Simple bank accounts" + +class interface + ACCOUNT + +feature -- Access + + balance: INTEGER + -- Current balance + + deposit_count: INTEGER + -- Number of deposits made since opening + +feature -- Element change + + deposit (sum: INTEGER) + -- Add `sum' to account. + require + non_negative: sum >= 0 + ensure + one_more_deposit: deposit_count = old deposit_count + 1 + updated: balance = old balance + sum + +invariant + consistent_balance: balance = all_deposits.total + +end -- class interface ACCOUNT + + +The words class interface are used instead of just class to avoid any confusion with actual Eiffel text, since this is documentation, not executable software. (It is in fact possible to generate a compilable variant of the Contract Form in the form of a deferred class, a notion defined later.) + +Compared to the full text, the Contract Form of a class (also called its "short form") retains all its interface properties, relevant to client authors:
+* Names and signatures (argument and result type information) for exported features. +* Header comments of these features, which carry informal descriptions of their purpose. (Hence the importance, mentioned in "[[ET: Hello World|Hello World]]", of always including such comments and writing them carefully.) +* Preconditions and postconditions of these features (at least the subclauses involving only exported features). +* Class invariant (same observation). + + +The following elements, however, are not in the Contract Form: any information about non-exported features; all the routine bodies (do clauses, or the external and once variants seen in [[ET: The Static Picture: System Organization#External_software|"External software"]] above and [[ET: Other Mechanisms#Once_routines_and_shared_objects|"Once routines and shared objects"]] below); assertion subclauses involving non-exported features; and some keywords not useful in the documentation. + +In accordance with the Uniform Access principle (described in [[ET: The Dynamic Structure: Execution Model|"Objects, fields, values, and references"]] ), the Contract Form does not distinguish between attributes and argument-less queries. In the above example, balance could be one or the other, as it makes no difference to clients, except possibly for performance. + +The Contract Form is the fundamental tool for using supplier classes in the Eiffel method. It enables client authors to reuse software elements without having to read their source code. This is a crucial requirement in large-scale industrial developments. + +The Contract Form satisfies two key requirements of good software documentation:
+* It is truly abstract, free from the implementation details of what it describes and concentrating instead on its functionality. +* Rather than being developed separately -- an unrealistic requirement, hard to impose on developers initially and becoming impossible in practice if we expect the documentation to remain up to date as the software evolves -- the documentation is extracted from the software itself. It is not a separate product but a different view of the same product. This prolongs the '''Single Product''' principle that lies at the basis of Eiffel's seamless development model (shown in [[ET: The Software Process in Eiffel|The Software Process in Eiffel]] ). + + +The Contract Form is only one of the relevant views. EiffelStudio, for example, generates graphical representations of system structures, to show classes and their relations -- client, inheritance -- according to the conventions of BON (the Business Object Notation). In accordance with the principles of seamlessness and reversibility, EiffelStudio lets you both work on the text, producing the graphics on the fly, or work on the graphics, updating the text on the fly; you can alternate as you wish between these two modes. The resulting process is quite different from more traditional approaches based on separate tools: an analysis and CASE workbench, often based on UML, to deal with an initial "bubble-and-arrow" description; and a separate programming environment, to deal with implementation aspects only. In Eiffel the environment provides consistent, seamless support from beginning to end. + +The Contract Form -- or its variant the Flat-Contract Form, which takes account of inheritance ( [[ET: Inheritance#Flat_and_Flat-Contract_Forms|"Flat and Flat-Contract Forms"]] ) are the standard form of library documentation, used extensively, for example, in the book [http://www.eiffel.com/services/training/books.html Reusable Software] (see bibliography). Assertions play a central role in such documentation by expressing the terms of the contract. As demonstrated a contrario by the widely publicized $500-million crash of the Ariane-5 rocket launcher in June of 1996, due to the incorrect reuse of a software module from the Ariane-4 project, '''reuse without a contract documentation''' is the path to disaster. Non-reuse would, in fact, be preferable. + +==Exception handling== + +Another application of Design by Contract™ governs the handling of unexpected cases. The vagueness of many discussions of this topic follows from the lack of a precise definition of terms such as "exception". With Design by Contract™ we are in a position to be specific:
+* Any routine has a contract to achieve. +* Its body defines a strategy to achieve it -- a sequence of operations, or some other control structure involving operations. Some of these operations are calls to routines, with their own contracts; but even an atomic operation, such as the computation of an arithmetic operation, has an implicit contract, stating that the result will be representable. +* Any one of these operations may fail, that is to say be unable to meet its contract; for example an arithmetic operation may produce an overflow (a non-representable result). +* The failure of an operation is an '''exception''' for the routine that needed the operation. +* As a result the routine may fail too -- causing an exception in its own caller. + + + +Note the precise definitions of the two key concepts, failure and exception. Although failure is the more basic one -- since it is defined for atomic, non-routine operations -- the definitions are mutually recursive, since an exception may cause a failure of the recipient routine, and a routine's failure causes an exception in its own caller. + +Why state that an exception "may" cause a failure? It is indeed possible to "rescue" a routine from failure in the case of an exception, by equipping it with a clause labeled rescue, as in: + + read_next_character (f: FILE) + -- Make next character available in last_character. + -- If impossible, set failed to True. + require + readable: file.readable + local + impossible: BOOLEAN + do + if impossible then + failed := True + else + last_character := low_level_read_function (f) + end + rescue + impossible := True + retry + end + + +This example includes the only two constructs needed for exception handling: rescue and retry. A retry instruction is only permitted in a rescue clause; its effect is to start again the execution of the routine, without repeating the initialization of local entities (such as impossible in the example, which was initialized to False on first entry). Features failed and last_character are assumed to be attributes of the enclosing class. + +This example is typical of the use of exceptions: as a last resort, for situations that should not occur. The routine has a precondition, file.readable, which ascertains that the file exists and is accessible for reading characters. So clients should check that everything is fine before calling the routine. Although this check is almost always a guarantee of success, a rare combination of circumstances could cause a change of file status (because a user or some other system is manipulating the file) between the check for readable and the call to low_level_read_function. If we assume this latter function will fail if the file is not readable, we must catch the exception. + +A variant would be + + local + attempts: INTEGER + do + if attempts < Max_attempts then + last_character := low_level_read_function (f) + else + failed := True + end + rescue + attempts := attempts + 1 + retry + end + + +which would try again up to Max_attempts times before giving up. + +The above routine, in either variant, never fails: it always fulfills its contract, which states that it should either read a character or set failed to record its inability to do so. In contrast, consider the new variant + + local + attempts: INTEGER + do + last_character := low_level_read_function (f) + rescue + attempts := attempts + 1 + if attempts < Max_attempts then + retry + end + end + + +with no more role for failed. In this case, after Max_attempts unsuccessful attempts, the routine will execute its rescue clause to the end, with no retry (the if having no else clause). This is how a routine '''fails'''. It will, as noted, pass on the exception to its caller. + +Such a rescue clause should, before terminating, restore the invariant of the class so that the caller and possible subsequent retryattempts from higher up find the objects in a consistent state. As a result, the rule for an absent rescue clause -- the case for the vast majority of routines in most systems -- is that it is equivalent to + + rescue + default_rescue + + +where procedure default_rescue comes from ANY, where it is defined to do nothing; in a system built for robustness, classes subject to non-explicitly-rescued exceptions should redefine default_rescue (perhaps using a creation procedure, which is bound by the same formal requirement) so that it will always restore the invariant. + +Behind Eiffel's exception handling scheme lies the principle -- at first an apparent platitude, but violated by many existing mechanisms -- that a routine should '''either succeed or fail'''. This is in turn a consequence of Design by Contract™ principles: succeeding means being able to fulfill the contract, possibly after one or more retry; failure is the other case, which must always trigger an exception in the caller. Otherwise it would be possible for a routine to miss its contract and yet return to its caller in a seemingly normal state. That is the worst possible way to handle an exception. + +Concretely, exceptions may result from the following events:
+* A routine failure ( rescue clause executed to the end with no retry), as just seen. +* Assertion violation, if for a system that runs with assertion monitoring on. +* Attempt to call a feature on a void reference: x.f (...), the fundamental computational mechanism, can only work if x is attached to an object, and will cause an exception otherwise. +* Developer exception, as seen next. +* Operating system signal:arithmetic overfolow; no memory available for a requested creation or twin -- even after garbage collection has rummaged everything to find some space. (But no C/C++-like "wrong pointer address", which cannot occur thanks to the statically typed nature of Eiffel.) + + +It is sometimes useful, when handling exceptions in rescue clauses, to ascertain the exact nature of the exception that got the execution there. For this it is suffices to inherit from the Kernel Library class EXCEPTIONS, which provides queries such as exception, giving the code for the last exception, and symbolic names ( [[ET: Other Mechanisms#Constant_attributes|"Constant attributes"]] ) for all such codes, such as No_more_memory. You can then process different exceptions differently by testing exception against various possibilities. The method strongly suggests, however, that exception handling code should remain simple; a complicated algorithm in a rescue clause is usually a sign that the mechanism is being misused. Class EXCEPTIONS also provides various facilities for fine-tuning the exception facilities, such as a procedure raise that will explicitly trigger a "developer exception" with a code that can then be detected and processed. Exception handling helps produce Eiffel software that is not just correct but robust, by planning for cases that should not normally arise, but might out of Murphy's law, and ensuring they do not affect the software's basic safety and simplicity. + +==Other applications of Design by Contract™== + +The Design by Contract™ ideas pervade the Eiffel method. In addition to the applications just mentioned, they have two particularly important consequences:
+* They make it possible to use Eiffel for analysis and design. At a high level of abstraction, it is necessary to be precise too. With the exception of BON, object-oriented analysis and design methods tend to favor abstraction over precision. Thanks to assertions, it is possible to express precise properties of a system ("At what speed should the alarm start sounding?") without making any commitment to implementation. The discussion of deferred classes ( [[ET: Inheritance#Applications_of_deferred_classes|"Applications of deferred classes"]] ) will show how to write a purely descriptive, non-software model in Eiffel, using contracts to describe the essential properties of a system without any computer or software aspect. +* Assertions also serve to control the power of inheritance-related mechanisms -- redeclaration, polymorphism, dynamic binding -- and channel them to correct uses by assigning the proper semantic limits. See [[ET: Inheritance#Inheritance_and_contracts|"Inheritance and contracts"]] . + + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-dynamic-structure-execution-model.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-dynamic-structure-execution-model.wiki new file mode 100644 index 00000000..11f574a0 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-dynamic-structure-execution-model.wiki @@ -0,0 +1,697 @@ +[[Property:title|ET: The Dynamic Structure: Execution Model]] +[[Property:weight|-10]] +[[Property:uuid|1f3f2707-9129-4dca-76c7-157143d7ae74]] +A system with a certain static structure describes a set of possible executions. The run-time model governs the structure of the data (objects) created during such executions. + +The properties of the run-time model are not just of interest to implementers; they also involve concepts directly relevant to the needs of system modelers and analysts at the most abstract levels. + +==Objects, fields, values, and references== + +A class was defined as the static description of a type of run-time data structures. The data structures described by a ca class are called '''instances''' of the class, which in turn is called their '''generating class''' (or just "generator"). An instance of ACCOUNT is a data structure representing a bank account; an instance of LINKED_LIST is a data structure representing a linked list. + +An '''object''', as may be created during the execution of a system, is an instance of some class of the system. + +Classes and objects belong to different worlds: a class is an element of the software text; an object is a data structure created during execution. Although is possible to define a class whose instances represent classes, this does not eliminate the distinction between a static, compile-time notion, class, and a dynamic, run-time notion, object. + +An object is either an atomic object (integer, real, boolean, double) or a composite object made of a number of '''fields''', represented by adjacent rectangles on the conventional run-time diagrams: + + +[[Image:tutorial-5]] + + +Each field is a '''value'''. A value can be either an object or an object reference:
+* When a field is an object, it will in most cases be an atomic object, as on the figure where the first field from the top is an integer and the third a character. But a field can also be a composite object, in which case it is called a '''subobject'''. +* A '''reference''' is either void or uniquely identifies an object, to which it is said to be '''attached'''. In the preceding figure the second field from the top is a reference -- attached in this case, as represented by the arrow, to the enclosing object itself. The bottom field is a void reference. + + +==Features== + + +[[Image:tutorial-6]] + + +A feature, as noted, is an operation available on instances of a class. A feature can be either an '''attribute''' or a '''routine'''. This classification, which you can follow by starting from the right on the figure above, is based on implementation considerations: +* An attribute is a feature implemented through memory: it describes a field that will be found in all instances of the class. For example class ACCOUNT may have an attribute balance; then all instances of the class will have a corresponding field containing each account's current balance. +* A routine describes a computation applicable to all instances of the class. ACCOUNT may have a routine withdraw . +* Routines are further classified into '''functions''', which will return a result, and '''procedures''', which will not. Routine withdraw will be a procedure; an example of function may be highest_deposit, which returns the highest deposit made so far to the account. + +If we instead take the viewpoint of the '''clients''' of a class (the classes relying on its feature), you can see the relevant classification by starting from the left on the figure: +* '''Commands''' have no result, and may modify an object. They may only be procedures. +* '''Queries''' have a result: they return information about an object. You may implement a query as either an attribute (by reserving space for the corresponding information in each instance of the class, a memory-based solution) or a function (a computation-based solution). An attribute is only possible for a query without argument, such as balance; a query with arguments, such as balance_on (d) , returning the balance at date d, can only be a function. + +From the outside, there is no difference between a query implemented as an attribute and one implemented as a function: to obtain the balance of an account a, you will always write a.balance. In the implementation suggested above, a is an attribute, so that the notation denotes an access to the corresponding object field. But it is also possible to implement a as a function, whose algorithm will explore the lists of deposits and withdrawals and compute their accumulated value. To the clients of the class, and in the official class documentation as produced by the environment tools, the difference is not visible. + +This principle of '''Uniform Access''' is central to Eiffel's goals of extendibility, reusability and maintainability: you can change the implementation without affecting clients; and you can reuse a class without having to know the details of its features' implementations. Most object-oriented languages force clients to use a different notation for a function call and an attribute access. This violates Uniform Access and is an impediment to software evolution, turning internal representation changes into interface changes that may disrupt large parts of a system. + +==A simple class== + +The following simple class text illustrates the preceding concepts + +note + description: "Simple bank accounts" + +class + ACCOUNT + +feature -- Access + + balance: INTEGER + -- Current balance + + deposit_count: INTEGER + -- Number of deposits made since opening + do + if all_deposits /= Void then + Result := all_deposits.count + end + end + +feature -- Element change + + deposit (sum: INTEGER) + -- Add `sum' to account. + do + if all_deposits = Void then + create all_deposits + end + + all_deposits.extend (sum) + balance := balance + sum + end + +feature {NONE} -- Implementation + + all_deposits: DEPOSIT_LIST + -- List of deposits since account's opening. + +invariant + consistent_balance: + (all_deposits /= Void) implies (balance = all_deposits.total) + zero_if_no_deposits: + (all_deposits = Void) implies (balance = 0) + +end -- class ACCOUNT + + +(The {NONE} qualifier and the invariant clause, used here to make the example closer to a real class, will be explained shortly. DEPOSIT_LIST refers to another class, which can be written separately using library classes.) + +It's easy to deduce, from a feature's syntactic appearance, the category to which it belongs. Here: +* Only deposit and deposit_count, which include a do ... clause, are routines. +* balance and all_deposits, which are simply declared with a type, are attributes. Note that even for attributes it is recommended to have a header comment. +* Routine deposit_count is declared as returning a result (of type INTEGER); so it is a function. +* Routine deposit has no such result and hence is a procedure. + +==Creating and initializing objects== + +Classes, as noted, are a static notion. Objects appear at run time; they are created explicitly. Here is the basic instruction to create an object of type ACCOUNT and attach it to x: + + create x + + +assuming that x has been declared of type ACCOUNT. Such an instruction must be in a routine of some class -- the only place where instructions can appear -- and its effect at run time will be threefold: create a new object of type ACCOUNT; initialize its fields to default values; and attach the value of x to it. Here the object will have two fields corresponding to the two attributes of the generating class: an integer for balance, which will be initialized to 0, and a reference for all_deposits, which will be initialized to a void reference: + + +[[Image:tutorial-7]] + + +The language specifies default initialization values for all possible types: +{| +|- +| +'''Type''' + +|   +| +'''Default value''' + +|- +| +INTEGER, REAL, DOUBLE + +|     +| +Zero + +|- +| +BOOLEAN + +|   +| +False + +|- +| +CHARACTER + +|   +| +Null + +|- +| +Reference types (such as ACCOUNT and DEPOSIT_LIST) + +|   +| +Void reference + +|- +| +Composite expanded types (see next) + +|   +| +Same rules, applied recursively to all fields + +|} + +It is possible to override the initialization values by providing -- as in the earlier example of class HELLO -- one or more creation procedures. For example we might change ACCOUNT to make sure that every account is created with an initial deposit: + +note + description : "Simple bank accounts, initialized with a first deposit" + +class + ACCOUNT1 + +create + make + +feature -- Initialization + + make (sum: INTEGER) + -- Initialize account with `sum' . + do + deposit (sum) + end + + -- The rest of the class as for ACCOUNT + +end -- class ACCOUNT1 + + +A create clause may list zero or more (here just one) procedures of the class. + +{{info|Note the use of the same keyword, create , for both a creation clause, as here, and creation instructions such as create x . }} + +In this case the original form of creation instruction, create x , is not valid any more for creating an instance of ACCOUNT1; you must use the form + + create x.make (2000) + +known as a creation call. Such a creation call will have the same effect as the original form -- creation, initialization, attachment to -- x followed by the effect of calling the selected creation procedure, which here will call deposit with the given argument. + +Note that in this example all that make does is to call deposit. So an alternative to introducing a new procedure make would have been simply to introduce a creation clause of the form create deposit , elevating deposit to the status of creation procedure. Then a creation call would be of the form create x.deposit (2000) . + +{{info|Some variants of the basic creation instruction will be reviewed later: instruction with an explicit type; creation expressions. See [[ET: Other Mechanisms#Creation_variants|"Creation variants"]] . }} + +==Entities== + +The example assumed x declared of type ACCOUNT (or ACCOUNT1). Such an x is an example of '''entity''', a notion generalizing the well-known concept of variable. An entity is a name that appears in a class text to represent possible run-time values (a value being, as defined earlier, an object or a reference). An entity is one of the following:
+* An attribute of the enclosing class, such as balance and all_deposits. +* A formal argument of a routine, such as sum for deposit and make. +* A local entity declared for the internal needs of a routine. +* The special entity Result in a function. + + +The third case, local entities, arises when a routine needs some auxiliary values for its computation. Here is an example of the syntax: + + deposit (sum: INTEGER) + -- Add sum to account. + local + new: AMOUNT + do + create new.make (sum) + all_deposits.extend (new) + balance := balance + sum + end + + +This example is a variant of deposit for which we assume that the elements of a DEPOSIT_LIST such as all_deposits are no longer just integers, but objects, instances of a new class, AMOUNT. Such an object will contain an integer value, but possibly other information as well. So for the purpose of procedure deposit we create an instance of AMOUNT and insert it, using procedure extend, into the list all_deposits. The object is identified through the local entity new, which is only needed within each execution of the routine (as opposed to an attribute, which yields an object field that will remain in existence for as long as the object). + +The last case of entity, Result, serves to denote, within the body of a function, the final result to be returned by that function. This was illustrated by the function deposit_count, which read + + deposit_count: INTEGER + -- Number of deposits made since opening (provisional version) + do + if all_deposits /= Void then + Result := all_deposits.count + end + end + + +The value returned by any call will be the value of the expression all_deposits.count (to be explained in detail shortly) for that call, unless all_deposits is a Void reference ( /= means "not equal"). + +The default initialization rules seen earlier for attributes (see the table above) also serve to initialize local entities and Result on routine entry. So in the last example, if all_deposits is void (as in the case on initialization with the class as given so far), Result keeps its default value of 0, which will be returned as the result of the function. + +==Calls== + +Apart from object creation, the basic computational mechanism, in the object-oriented style of computation represented by Eiffel, is feature call. In its basic form, it appears as + + target.feature (argument1, ...) + + +where target is an entity or more generally an expression, feature is a feature name, and there may be zero or more argument expressions. In the absence of any argument the part in parentheses should be removed. + +We have already seen such calls. If the feature denotes a procedure, the call is an instruction, as in + + all_deposits.extend (new) + + +If feature denotes a query (function or attribute), the call is an expression, as in the right-hand side of + + Result := all_deposits.count + + +Following the principle of Uniform Access (mentioned earlier in the section ''Objects, fields, values, and references''), this form is the same for calls to attributes and to functions without arguments. In this example, feature count from class DEPOSIT_LIST may indeed be implemented in either of these two ways: we can keep a count field in each list, updating it for each insertion and removal; or we can compute count, whenever requested, by traversing the list and counting the number of items. + +In the case of a routine with arguments -- procedure or function -- the routine will be declared, in its class, as + + some_feature (formal_1: TYPE_1; ...) + do + ... + end + + +meaning that, at the time of each call, the value of each formal will be set to the corresponding actual (formal_1 to argument_1 and so on). + +In the routine body, it is not permitted to change the value of a formal argument, although it is possible to change the value of an attached object through a procedure call such as formal_1.some_procedure ( ... ) . + +==Infix and prefix notations== + +Basic types such as INTEGER are, as noted, full-status citizens of Eiffel's type system, and so are declared as classes (part of the Kernel Library). INTEGER, for example, is characterized by the features describing integer operations: plus, minus, times, division, less than, and so on. + +With the dot notation seen so far, this would imply that simple arithmetic operations would have to be written with a syntax such as + + i.plus (j) + +instead of the usual + + i + j + +This would be awkward. Infix and prefix notations solve the problem, reconciling the object-oriented view of computation with common notational practices of mathematics. The addition function is declared in class INTEGER as + + plus alias "+" (other: INTEGER): INTEGER + do + ... + end + + +Such a feature has all the properties and prerogatives of both normal "identifier-dot" notation and infix notation. This allowing invoking plus using either notation: i.plus (j) or i + j . A feature such as plus allowing infix notation must be a function, and take exactly one argument. + +Prefix notation is allowed as well. A function can be declared as opposite alias "-" , with no argument, permitting calls of the form -3 rather than (3).opposite . + +Predefined library classes covering basic types such as INTEGER, CHARACTER, BOOLEAN, REAL, DOUBLE are known to the Eiffel compiler, so that a call of the form j + i, although conceptually equivalent to a routine call, can be processed just as efficiently as the corresponding arithmetic expression in an ordinary programming language. This brings the best of both worlds: conceptual simplicity, enabling Eiffel developers, when they want to, to think of integers and the like as objects; and efficiency as good as in lower-level approaches. + +Infix and prefix notations are available to any class, not just the basic types' predefined classes. For example a graphics class could use the name distance alias "|-|" for a function computing the distance between two points, to be used in expressions such as + + point1 |-| point2 + + +==Type declaration== + +Every entity appearing in an Eiffel text is declared as being of a certain type, using the syntax already encountered in the above examples: + + entity_name: TYPE_NAME + + +This applies to attributes, formal arguments of routines and local entities. You will also declare the result type for a function, as in the earlier example + + deposit_count: INTEGER ... + + +Specifying such a function result type also declares, implicitly, the type for Result as used in the function's body. + +What is a type? With the elements seen so far, every type is a class . INTEGER, used in the declaration of deposits_count, is, as we have seen, a library class; and the declaration all_deposits: DEPOSIT_LIST assumes the existence of a class DEPOSIT_LIST . + +Three mechanisms introduced below -- expanded types, genericity, and anchored declarations -- will generalize the notion of type slightly. But they do not change the fundamental property that '''every type is based on a class''', called the type's '''base class'''. In the examples seen so far, each type is a class, serving as its own base class. + +An instance of a class C is also called "an object of type C". + +==Type categories== + +It was noted above that a value is either an object or a reference. This corresponds to two kinds of type: reference types and expanded types. + +If a class is declared as just + +class CLASS_NAME ... + + +it defines a reference type. The entities declared of that type will denote references. So in the declaration + + x: ACCOUNT + + +the possible run-time values for x are references, which will be either void or attached to instances of class ACCOUNT . + +Instead of class, however, you may use the double keyword expanded class , as in the EiffelBase class definition + +note + description : "Integer values" + +expanded class + INTEGER + +feature -- Basic operations + + plus alias "+" (other: INTEGER): INTEGER + do + ... + end + + ... Other feature declarations ... + +end -- class INTEGER + + +In this case the value of an entity declared as n: INTEGER is not a reference to an object, but the object itself -- in this case an atomic object, an integer value. + +Expanded classes make it possible to construct composite objects with subobjects. Suppose that two classes, ENGINE and PLANT, are suppliers to the class CAR. Further, ENGINE is defined as expanded, and PLANT is ''not'' defined as expanded. So, here's an abbreviated class declaration (note clause and routines omitted) for CAR: + +class CAR + +feature + + engine: ENGINE + + originating_plant: PLANT + +end -- class CAR + + +We can illustrate the structure of a typical instance of CAR like this: + + +[[Image:tutorial-8]] + + +The field for the attribute originating_plant is a reference to an object of type PLANT external to the instance of CAR. But in the case of the attribute engine, the fields for the instance of ENGINE exist as a subobject within the instance of CAR, because of class ENGINE's expanded nature. + +This example also illustrates that the distinction between expanded and reference types is important not just for system implementation purposes but for high-level system modeling as well. Consider the example of a class covering the notion of car. Many cars share the same originating_plant, but an engine belongs to just one car. References represent the modeling relation "knows about"; subobjects, as permitted by expanded types, represent the relation "has part", also known as aggregation. The key difference is that sharing is possible in the former case but not in the latter. + +==Basic operations== + +To assign, copy and compare values, you can rely on a number of mechanisms. Two of them, assignment and equality testing, are language constructs; the others are library features, coming from the top-level class ANY seen earlier. + +Assignment uses the symbol := . The assignment instruction + + x := y + + +updates the value of x to be the same as that of y. This means that for entities of reference types, the value of x will be a void reference if the value of y is void, and otherwise x will be attached to the same object OBJ2 as y: + + +[[Image:tutorial-9]] + + +For entities of expanded types, the values are objects; the object attached to x will be overwritten with the contents of the object attached to y. In the case of atomic objects, as in n := 3 with the declaration n: INTEGER , this has the expected effect of assigning to n the integer value 3; in the case of composite objects, this overwrites the fields for x, one by one, with the corresponding y fields. + +To copy an object, use + + x.copy (y) + +which assumes that both x and y are non-void, and copies the contents of y's attached object onto those of x's. For expanded entities the effect is the same as that of the assignment x := y. + +An operation performing similar duty to copy is twin . The assignment + + x := y.twin + +produces a newly created object (provided that y is non-void), initialized with a copy of the object attached to y and attaches the result to x . This means we may view twin as a function that performs the following two steps: + + create Result + Result.copy (Current) + +The new object is created, then its content is updated to match the content of y to which the twin call is targeted. + +So, assuming both entities of reference types and y not void, the assignment above will attach x to a '''new object''' identical to y's attached object, as opposed to the assignment x := y which attaches x to the '''same object''' as y. + + +To determine whether two values are equal, use the expression: + + x = y + +For references, this comparison will yield true if the values are either both void or both attached to the same object; this is the case in the last figure in the state after the assignment, but not before. The symbol for not equal is /= , as in: + + x /= y + + +As with assignment, there is also a form that works on objects rather than references: + + x.is_equal (y) + +will return true when x and y are both non-void and attached to field-by-field identical objects. This can be true even when x = y is not, for example, in the figure, ''before'' the assignment, if the two objects shown are field-by-field equal. + +The expression x.is_equal (y) can be written alternatively, using the ''tilde'' ('~') character, in a notation similar in form to x = y . The expression: + + x ~ y + +will be true only in cases in which x and y are the same type and x.is_equal (y) is true. + +A more general variant of is_equal is used under the form: + + equal (x, y) + +This is always defined, even if x is void, returning true whenever is_equal would but also if x and y are both void. (In contrast, x.is_equal (y) is not defined for void x and would, if evaluated, yield an exception as explained in [[ET: Design by Contract (tm), Assertions and Exceptions#Exception_handling|"Exception handling"]] below.) + +{{note|The ~ operator performs an object equality comparison, using the (possibly redefined) version of feature is_equal that is appropriate for the operand types. The operand types must be the same, or the result will be False. As such, the use of ~ is preferred to over the use of direct use of either x.is_equal (y) or equal (x, y), which can be susceptible to [[ET: Inheritance#Catcalls|catcalls]].}} + +Void denotes a void reference. So you can make x void through the assignment + + x := Void + +and test whether it is void through: + + if x = Void then ... + +Note that the assignment, := , and the equality operators, =, ~, /~, and /= , are language constructions, whereas copy, twin, is_equal, and equal are '''library features''' coming from class ANY . + +Void is a language keyword with built-in characteristics, but it is not harmful to imagine Void as another feature declared in class ANY, with type of NONE, the "bottom" type. This convenience allows any assignment of the for x := Void to be valid without any making exceptions to the type rules, regardless of the type of x . + +Using the redefinition mechanisms to be seen in the discussion of inheritance, a class can redefine copy and is_equal to cover specific notions of copy and equality. The assertions will ensure that the two remain compatible: after x.copy (y) , the property x .is_equal (y) must always be true. The effect of twin will automatically follow a redefinition of copy, and equal will follow is_equal. + +To guarantee the original, non-redefined semantics you may use the variants standard_copy, standard_twin, standard_equal, all defined in ANY as "frozen", that is to say non-redefinable. + +==Deep operations and persistence== + +Feature twin only duplicates one object. If some of the object's fields are references to other objects, the references themselves will be copied, not those other objects. + +It is useful, in some cases, to duplicate not just one object but an entire object structure. The expression y.deep_twin achieves this goal: assuming non-void y, it will produce a duplicate not just of the object attached to y but of the entire object structure starting at that object. The mechanism respects all the possible details of that structure, such as cyclic reference chains. Like the preceding features, deep_twin comes from class ANY. + +A related mechanism provides a powerful '''persistence''' facility. A call of the form + + x.store (Some_file_or_network_connection) + + +will store a copy of the entire object structure starting at x , under a suitable representation. Like deep_twin, procedure store will follow all references to the end and maintain the properties of the structure. The function retrieved can then be used -- in the same system, or another -- to recreate the structure from the stored version. + +As the name suggests, Some_file_or_network_connection can be an external medium of various possible kinds, not just a file but possibly a database or network. The EiffelNet client-server library indeed uses the store - retrieved mechanism to exchange object structures over a network, between compatible or different machine architectures, for example a Windows client and a Unix server. + +==Memory management== + +Reference reattachments, x := y , of the form illustrated by the figure just above can cause objects to become unreachable. This is the case for the object identified as OBJ1 on that figure (the object to which x was attached before the assignment) if no other reference was attached to it. + +In all but toy systems, it is essential to reclaim the memory that has been allocated for such objects; otherwise memory usage could grow forever, as a result of creation instructions create x ... and calls to twin and the like, leading to thrashing and eventually to catastrophic termination. + +The Eiffel method suggests that the task of detecting and reclaiming such unused object space should be handled by an automatic mechanism (part of the Eiffel run-time environment), not manually by developers (through calls to procedures such as Pascal's dispose and C/C++'s free). The arguments for this view are: + +'''Simplicity''' : handling memory reclamation manually can add enormous complication to the software, especially when -- as is often the case in object-oriented development -- the system manipulates complex run-time data structures with many links and cycles. + +'''Reliability''' : memory management errors, such as the incorrect reclamation of an object that is still referenced by a distant part of the structure, are a notorious source of dangerous and hard-to-correct bugs. + +The Eiffel Software's implementation of Eiffel provides a sophisticated '''garbage collector''' which efficiently handles the automatic reclamation process, while causing no visible degradation of a system's performance and response time. + +==Information hiding and the call rule== + +The basic form of computation, it has been noted, is a call of the form target.feature (...) . This is only meaningful if feature denotes a feature of the generating class of the object to which target (assumed to be non-void) is attached. The precise rule is the following: + +{{rule|name=Feature Call|text=A call of the form target.feature (...) appearing in a class C is only valid if feature is a feature of the base class of target's type, and is available to C.}} + + +The first condition simply expresses that if target has been declared as target: A then feature must be the name of one of the features of A. The second condition reflects Eiffel's application of the principles of information hiding. A feature clause, introducing one or more feature declarations, may appear not only as + +feature -- Comment identifying the feature category + + ... Feature declaration ... + + ... Feature declaration ... + + + ... + + + +but may also include a list of classes in braces, feature {A, B, ... } , as was illustrated for ACCOUNT: + +feature {NONE} -- Implementation + + all_deposits: DEPOSIT_LIST + -- List of deposits since account's opening. + + +This form indicates that the features appearing in that clause are only '''available''' -- in the sense of available for calls, as used in the Feature Call rule -- to the classes listed. In the example feature all_deposits is only available to NONE . Because of the [[ET: The Static Picture: System Organization#The_global_inheritance_structure|global inheritance structure]], this means it is in fact available to no useful client at all, and is equivalent in practice to feature { } with an empty class list, although the form listing NONE explicitly is more visible and hence preferred. + + + +With this specification a class text including the declaration acc: ACCOUNT and a call of the form + + acc.all_deposits + + +violates the Feature Call rule and will be rejected by the EiffelStudio compiler. + +Besides fully exported features (introduced by feature ... ; without further qualification) and fully secret ones (feature { } or feature {NONE} ), it is possible to export features selectively to some specified classes, using the specification + +feature {A, B, ...} + + +for arbitrary classes A, B, ... This enables a group of related classes to provide each other with privileged access, without requiring the introduction of a special module category above the class level (see [[ET: The Static Picture: System Organization#Clusters|"Clusters"]] ). + +Exporting features selectively to a set of classes A, B, ... also makes them available to the descendants of these classes. So a feature clause beginning with just feature is equivalent to one starting with feature {ANY} . + +These rules enable successive feature clauses to specify exports to different clients. In addition, the recommended style, illustrated in the examples of this chapter, suggests writing separate feature clauses -- regardless of their use for specifying export privileges -- to group features into separate categories. The standard style rules define a number of fundamental categories and the order in which they should appear; they include: Initialization for creation procedures, Access for general queries, Status report for boolean-valued queries, Status setting, Element change, Implementation (for selectively exported or secret features. Every feature in the EiffelBase library classes belongs to one of the predefined categories. + +The Feature Call rule is the first of the rules that make Eiffel a '''statically typed''' approach, where the applicability of operations to objects is verified at compile time rather than during execution. Static typing is one of the principal components of Eiffel's support for reliability in software development. + +==Execution scenario== + +The preceding elements make it possible to understand the overall scheme of an Eiffel system's execution. + +At any time during the execution of a system, one object is the '''current object''' of the execution, and one of the routines of the system, the '''current routine''', is being executed, with the current object as its target. (We will see below how the current object and current routine are determined.) The text of a class, in particular its routines, make constant implicit references to the current object. For example in the instruction + + balance := balance + sum + + +appearing in the body of procedure deposit of class ACCOUNT, the name of the attribute balance, in both occurrences, denotes the balance field of the current object, assumed to be an instance of ACCOUNT. In the same way, the procedure body that we used for the creation procedure make in the ACCOUNT1 variant + + make (sum: INTEGER) + -- Initialize account with sum . + do + deposit (sum) + end + + +contains a call to the procedure deposit. Contrary to earlier calls written in dot notation as target.feature (...), the call to deposit has no explicit target; this means its target is the current object, an instance of ACCOUNT1. Such a call is said to be '''unqualified'''; those using dot notations are '''qualified''' calls. + +Although most uses of the current object are implicit, a class may need to name it explicitly. The predefined expression Current is available for that purpose. A typical use, in a routine merge (other: ACCOUNT ) of class ACCOUNT, would be a test of the form + + if other = Current then + report_error ("Error: trying to merge an account with itself!") + else + ... Normal processing (merging two different account) ... + end + + +With these notions it is not hard to define precisely the overall scenario of a system execution by defining which object and routine will, at each instant, be the current object and the current routine: + +Starting a system execution, as we have seen, consists in creating an instance of the root class, the root object, and executing a designated creation procedure, the root procedure, with the root object as its target. The root object is the initial current object, and the root procedure is the initial current procedure. + +From then on only two events can change the current object and current procedure: a qualified routine call; and the termination of a routine. + +In a call of the form target.routine (...) , target denotes a certain object TC. (If not, that is to say, if the value of target is void, attempting to execute the call will trigger an exception, as studied below.) The generating class of TC must, as per the Feature Call rule, contain a routine of name routine. As the call starts, TC becomes the new current object and routine becomes the new current routine. + +When a routine execution terminates, the target object and routine of the most recent non-terminated call -- which, just before the terminated call, were the current object and the current routine -- assume again the role of current object and current routine. + +The only exception to the last rule is termination of the original root procedure call; in this case the entire execution terminates. + +==Abstraction== + +===Restriction of assignment targets=== + +The description of assignments stated that in x := y the target x must be an entity. More precisely it must be a '''writable''' entity. This notion excludes formal routine arguments: as noted, a routine r (arg: SOME_TYPE) may not assign to arg (reattaching it to a different object), although it can change the attached objects through calls of the form arg.procedure (...) . + +Allowing only entities to be the targets of assignments precludes assignments of the form + + obj.some_attribute := some_value + -- This syntax is disallowed (except in the presence of an `assigner command', see below) + +This is because the left-hand side obj.some_attribute is an expression (a feature call), not an entity: you may no more assign to obj.some_attribute than to, say, b + a -- another expression that is also, formally, a feature call. + +To obtain the intended effect of such an assignment you may use a procedure call, where the base class of obj's type has defined the procedure + + set_some_attribute (v: VALUE_TYPE) + -- Set value of some_attribute to `v'. + do + some_attribute := v + end + + +So instead of the disallowed assignment shown above, you would code: + + obj.set_some_attribute (some_value) + + +This rule is essential to enforcing the method. Permitting direct assignments to an object's fields -- as in C++ and Java -- would violate all the tenets of information hiding by letting clients circumvent the interface carefully crafted by the author of a supplier class. + +===Assigner commands=== + +However, many developers have become accustomed to reading and writing code in other languages which do allow assignments of the form: + + obj.some_attribute := some_value + +For this reason, it is possible in Eiffel to allow such a syntax without actually enabling an end-run around the constraints of the class. It is done by using a facility called an '''assigner command'''. In the example shown in the previous section, we might expect some_attribute to be declared something like this: + + some_attribute: SOME_TYPE + +If this were the case the assignment above would cause a syntax error at compile time. But if the declaration included the specification of an assigner command, as shown below, then the assignment syntax would be valid. + + some_attribute: SOME_TYPE assign set_some_attribute + +The assigner command then is the procedure set_some_attribute coded as shown in the previous section. In the presence of the assigner command, the previously invalid assignment syntax is now valid. But it is translated by the compiler as a call to set_some_attribute, using the source of the assignment as an argument. + +===Controlling modification of class fields=== + +It is the responsibility of each class author to define the exact privileges that the class gives to each of its clients, in particular field modification rights. Building a class is like building a machine: you design the internals, to give yourself the appropriate mechanisms; and you design the control panel, letting users (clients) access the desired subset of these mechanisms, safely and conveniently. + +The levels of privilege available to the class author include, for any field: +* Hide the field completely from clients, by exporting the corresponding attribute to NONE. +* Export it, but in read-only mode, by not exporting any procedure that modifies it. +* Export it for free read and write by any client, by also exporting a procedure of the set_attribute kind. +* Export it in '''restricted-write''' mode, by exporting a procedure such as deposit of class ACCOUNT, which adds a specified amount to the balance field, rather than directly setting the balance. + +The last case is particularly interesting is that it allows the class designer to set the precise way in which clients will manipulate the class instances, respecting the properties of the class and its integrity. The exported routines may, through the Design by Contract mechanism reviewed later in ( [[ET: Design by Contract (tm), Assertions and Exceptions]] ), place some further restrictions on the permitted modifications, for example by requiring the withdrawn amount to be positive. + +These rules follow directly from the more general goals (reusability, extendibility, reliability) and principles (Uniform Access, information hiding) underlying Eiffel software design. They reflect a view that each class must denote a well-understood abstraction, defined by a set of exported features chosen by the class designer -- the "control panel". + +The class documentation (see [[ET: Design by Contract (tm), Assertions and Exceptions#The_contract_form_of_a_class|the contract form of a class]] ) makes this view clear to client authors; no violation of that interface is permitted. This approach also paves the way for future '''generalization''' -- the final step of the cluster lifecycle, seen earlier in the section [[ET: The Software Process in Eiffel#Generalization_and_reuse|Generalization and reuse]] -- of the most promising components, and their inclusion into reusable libraries. + +===Attribute specializations=== + +In certain situations it is beneficial to be able to declare class attributes which behave in specialized ways. + +====Attribute specializations useful in void-safe programming==== + +Part of the strategy to ensure void-safety makes it necessary to be able to declare attributes as either [[Void-safety: Background, definition, and tools#Types as "attached" or "detachable"|'''detachable''' or '''attached''']]. + +'''[[Void-safety: Background, definition, and tools#Self-initializing attributes|Self-initializing attributes]]''' and '''[[Void-safety: Background, definition, and tools#Stable attributes|stable attributes]]''' are other tools for making void-safe programming more convenient. + +These attribute specializations are presented in the [[Void-safe programming in Eiffel|void-safe programming]] chapter. + +====Transient attributes==== + +Another special type of attribute supported by Eiffel Software's compiler is the '''transient attribute'''. When an instance of a class to which a transient attribute belongs is saved to persistent storage, the field for the transient attribute is not included. So, transient attributes are transient in the sense that they are part of the object at runtime, but not when the object is stored on disk. + +This type of attribute has benefits when using the persistence mechanisms provided with EiffelStudio, like [http://eiffel.com/developers/learning_maps/Training/Maps/PersistenceCanPayOff/Serialization.html SED]. Because transient attributes are not stored, they need not be accounted for upon retrieval. So, objects stored before changes to a class that only affect transient attributes will still be retrievable using the new class definition (whereas, if non-transient attributes were changed, a mismatch would occur during retrieval). + +An attribute is marked as transient by including a note option in its declaration: + + + transient_attribute: detachable STRING + note + option: transient + attribute + end + + +Only certain attributes can be marked as transient. Specifically, if attribute ''a'' is declared of type '''T''', it can be marked as transient only if it satisfies the following conditions: +# If '''T''' is a reference type, '''T''' must be detachable +# '''T''' is not a formal generic parameter +# '''T''' is not a user defined expanded type +# ''a'' is not an attribute of a user defined expanded class. + +The EiffelBase class INTERNAL includes features which are used to distinguish object fields as either persistent or transient and to reveal how many transient fields an object has. + + +{{note|Prior to version 6.6, support for transient attributes was limited to the C storable mechanism. In version 6.6, support was added for the Eiffel storable mechanism (SED) on both classic and .NET system targets.}} + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-eiffel-tutorial-copyright.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-eiffel-tutorial-copyright.wiki new file mode 100644 index 00000000..21ca7411 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-eiffel-tutorial-copyright.wiki @@ -0,0 +1,34 @@ +[[Property:title|ET: Eiffel Tutorial Copyright]] +[[Property:weight|0]] +[[Property:uuid|105e9956-f168-b060-a6be-e78b221f269a]] +====MANUAL IDENTIFICATION AND COPYRIGHT==== + +Title: An Eiffel Tutorial, Eiffel Software Technical Report TR-EI-66/TU. + +Publication history + +First published July 2001. Corresponds to release 5.0 of the EiffelStudio environment. + +Author + +Software credits + +See acknowledgments in book [[Eiffel: The Language]]. + +Cover design + +Rich Ayling. + +Copyright notice and proprietary information + +Copyright Interactive Software Engineering Inc. (Eiffel Software), 2001. May not be reproduced in any form (including electronic storage) without the written permission of Eiffel Software . "Eiffel Power" and the Eiffel Power logo are trademarks of Eiffel Software . + +All uses of the product documented here are subject to the terms and conditions of the Eiffel Software Eiffel user license. Any other use or duplication is a violation of the applicable laws on copyright, trade secrets and intellectual property. + +Special duplication permission for educational institutions + +Degree-granting educational institutions using Eiffel Software Eiffel for teaching purposes as part of the [http://www.eiffel.com/educators/resources.html Eiffel University Partnership Program] may be permitted under certain conditions to copy specific parts of this book. Contact Eiffel Software for details. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-general-properties.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-general-properties.wiki new file mode 100644 index 00000000..731c5ffd --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-general-properties.wiki @@ -0,0 +1,49 @@ +[[Property:title|ET: General Properties]] +[[Property:weight|-14]] +[[Property:uuid|1ad0b1d5-7ac6-9f55-92ec-ba6f42aee690]] +Here is an overview of the facilities supported by Eiffel:
+* Completely ''object-oriented'' approach. Eiffel is a full-fledged application of object technology, not a "hybrid" of O-O and traditional concepts. +* ''External interfaces''. Eiffel is a software composition tool and is easily interfaced with software written in such languages as C, C++, Java and C#. +* ''Full lifecycle support''. Eiffel is applicable throughout the development process, including analysis, design, implementation and maintenance. +* ''Classes'' as the basic structuring tool. A class is the description of a set of run-time objects, specified through the applicable operations and abstract properties. An Eiffel system is made entirely of classes, serving as the only module mechanism. +* ''Consistent type system''. Every type is based on a class, including basic types such as integer, boolean, real, character, string, array. +* ''Design by Contract''. Every system component can be accompanied by a precise specification of its abstract properties, governing its internal operation and its interaction with other components. +* ''Assertions''. The method and notation support writing the logical properties of object states, to express the terms of the contracts. These properties, known as assertions, can be monitored at run-time for testing and quality assurance. They also serve as documentation mechanism. Assertions include preconditions, postconditions, class invariants, loop invariants, and also appear in "check" instructions. +* ''Exception handling''. You can set up your software to detect abnormal conditions, such as unexpected operating system signals and contract violations, correct them, and recover +* ''Information hiding''. Each class author decides, for each feature, whether it is available to all client classes, to specific clients only, or just for internal purposes. +* ''Self-documentation''. The notation is designed to enable environment tools to produce abstract views of classes and systems, textual or graphical, and suitable for reusers, maintainers and client authors. +* ''Inheritance''. You can define a class as extension or specialization of others. +* ''Redefinition''. An inherited feature (operation) can be given a different implementation or signature. +* ''Explicit redefinition''. Any feature redefinition must be explicitly stated. +* ''Subcontracting''. Redefinition rules require new assertions to be compatible with inherited ones. +* ''Deferred features and classes''. It is possible for a feature, and the enclosing class, to be specified -- including with assertions -- but not implemented. Deferred classes are also known as abstract classes. +* ''Polymorphism''. An entity (variable, argument etc.) can become attached to objects of many different types. +* ''Dynamic binding''. Calling a feature on an object always triggers the version of the feature specifically adapted to that object, even in the presence of polymorphism and redefinition. +* ''Static typing''. A compiler can check statically that all type combinations will be valid, so that no run-time situation will occur in which an attempt will be made to apply an inexistent feature to an object. +* ''Object test'' ("type narrowing"). It is possible to check at run time whether the type of an object conforms to a certain expectation, for example if the object comes from a database or a network. +* ''Multiple inheritance''. A class can inherit from any number of others. +* ''Feature renaming''. To remove name clashes under multiple inheritance, or to give locally better names, a class can give a new name to an inherited feature. +* ''Repeated inheritance'': ''sharing and replication''. If, as a result of multiple inheritance, a class inherits from another through two or more paths, the class author can specify, for each repeatedly inherited feature, that it yields either one feature (sharing) or two (replication). +* ''No ambiguity under repeated inheritance''. Conflicting redefinitions under repeated inheritance are resolved through a "selection" mechanism. +* ''Unconstrained genericity''. A class can be parameterized, or "generic", to describe containers of objects of an arbitrary type. +* ''Constrained genericity''. A generic class can be declared with a generic constraint, to indicate that the corresponding types must satisfy some properties, such as the presence of a particular operation. +* ''Garbage collection''. The dynamic model is designed so that memory reclamation, in a supporting environment, can be automatic rather than programmer-controlled. +* ''No-leak modular structure''. All software is built out of classes, with only two inter-class relations, client and inheritance. +* ''Once routines''. A feature can be declared s "once", so that it is executed only for its first call, subsequently returning always the same result (if required). This serves as a convenient initialization mechanism, and for shared objects. +* ''Standardized library''. The Kernel Library, providing essential abstractions, is standardized across implementations. +* ''Other libraries''. Eiffel development is largely based on high-quality libraries covering many common needs of software development, from general algorithms and data structures to networking and databases. + + +It is also useful, as in any design, to list some of what is '''not''' present in Eiffel. The approach is indeed based on a small number of coherent concepts so as to remain easy to master. Eiffel typically takes a few hours to a few days to learn, and users seldom need to return to the reference manual once they have understood the basic concepts. Part of this simplicity results from the explicit decision to exclude a number of possible facilities:
+* ''No global variables'', which would break the modularity of systems and hamper extendibility, reusability and reliability. +* ''No union types'' (or record type with variants), which force the explicit enumeration of all variants; in contrast, inheritance is an open mechanism which permits the addition of variants at any time without changing existing code. +* ''No in-class overloading'', which by assigning the same name to different features within a single context, causes confusions, errors, and conflicts with object-oriented mechanisms such as dynamic binding. (Dynamic binding itself is a powerful form of inter-class overloading, without any of these dangers.) +* ''No goto instructions'' or similar control structures (break, exit, multiple-exit loops) which break the simplicity of the control flow and make it harder or impossible to reason about the software (in particular through loop invariants and variants). +* ''No exceptions to the type rules''. To be credible, a type system must not allow unchecked "casts" converting from a type to another. (Safe cast-like operations are available through object test.) +* ''No side-effect expression operators'' confusing computation and modification. +* ''No low-level pointers, no pointer arithmetic'', a well-known source of bugs. (There is however a type ''POINTER'', used for interfacing Eiffel with C and other languages.) + + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-genericity-and-arrays.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-genericity-and-arrays.wiki new file mode 100644 index 00000000..9350f805 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-genericity-and-arrays.wiki @@ -0,0 +1,67 @@ +[[Property:title|ET: Genericity and Arrays]] +[[Property:weight|-9]] +[[Property:uuid|7f3bd1d7-357e-031d-9faa-b00594aa9ae0]] +Some of the classes that we will need, particularly in libraries, are '''container''' classes, describing data structures made of a number of objects of the same or similar types. Examples of containers include arrays, stacks and lists. The class DEPOSIT_LIST posited in earlier examples describes containers. + +It is not hard, with the mechanisms seen so far, to write the class DEPOSIT_LIST, which would include such features as count (query returning the number of deposit objects in the list) and put (command to insert a new deposit object). + +Most of the operations, however, would be the same for lists of objects other than deposits. To avoid undue replication of efforts and promote reuse, we need a way to describe '''generic''' container classes, which we can use to describe containers containing elements of many different types. + +==Making a class generic== + +The notation + +class C [G] + ... The rest as for any other class declaration ... + +introduces a generic class. A name such as G appearing in brackets after the class name is known as a '''formal generic parameter'''; it represents an arbitrary type. + +Within the class text, feature declarations can freely use G even though it is not known what type G stands for. Class LIST of EiffelBase, for example, includes features + + first: G + -- Value of first list item + + extend (val: G) + -- Add a new item of value val at end of list + ... + + +The operations available on an entity such as first and val, whose type is a formal generic parameter, are the operations available on all types: use as source y of an assignment x := y, use as target x of such an assignment (although not for val, which as a formal routine argument is not writable), use in equality comparisons x = y or x /= y, and application of universal features from ANY such as twin, is_equal and copy. + +To use a generic class such as list, a client will provide a type name as '''actual generic parameter'''. So instead of relying on a special purpose class DEPOSIT_LIST, the class ACCOUNT could include the declaration +all_deposits: LIST [DEPOSIT] + +using LIST as a generic class and DEPOSIT as the actual generic parameter. Then all features declared in LIST as working on values of type G will work, when called on the target all_deposits, on values of type DEPOSIT. With the target +all_accounts: LIST [ACCOUNT] + +these features would work on values of type ACCOUNT. + +{{info|A note of terminology: to avoid confusion, Eiffel always uses the word '''argument''' for routine arguments, reserving '''parameter''' for the generic parameters of classes. }} + +Genericity reconciles extendibility and reusability with the static type checking demanded by reliability. A typical error, such as confusing an account and a deposit, will be detected immediately at compile time, since the call all_accounts. extend ( dep ) is invalid for dep declared of type DEPOSIT. What is valid is something like all_accounts. extend ( acc ) for acc of type ACCOUNT. In other approaches, the same effect might require costly run-time checks (as in Java, C# or Smalltalk), with the risk of run-time errors. + +{{info|This form of genericity is known as '''unconstrained''' because the formal generic parameter, G in the example, represents an arbitrary type. You may also want to use types that are guaranteed to have certain operations available. This is known as '''constrained''' genericity and will be studied with inheritance. }} + +==Arrays== + +An example of generic class from the Kernel Library is ARRAY [G], which describes direct-access arrays. Features include: +* put to replace an element's value, as in my_array.put (val, 25) which replaces by val the value of the array entry at index 25. +* item to access an entry, as in my_array.item (25) yielding the entry at index 25. A synonym is infix "@", so that you may also write more tersely, for the same result, my_array @ 25 . +* lower, upper and count: queries yielding the bounds and the number of entries. +* The creation procedure make, as in create my_array.make (1, 50) which creates an array with the given index bounds. It is also possible to resize an array through resize, retaining the old elements. In general, the Eiffel method abhors built-in limits, favoring instead structures that resize themselves when needed, either from explicit client request or automatically. + +The comment made about INTEGER and other basic classes applies to ARRAY too: Eiffel compilers know about this class, and will be able to process expressions of the form my_array.put (val, 25) and my_array @ 25 in essentially the same way as a C or Fortran array access -- my_array [25] in C. But it is consistent and practical to let developers treat ARRAY as a class and arrays as objects; many library classes in EiffelBase, for example, inherit from ARRAY. Once again the idea is to get the best of both worlds: the convenience and uniformity of the object-oriented way of thinking; and the efficiency of traditional approaches. + +A similar technique applies to another Kernel Library class, that one not generic: STRING, describing character strings with a rich set of string manipulation features. + +==Generic derivation== + +The introduction of genericity brings up a small difference between classes and types. A generic class C is not directly a type since you cannot declare an entity as being of type C: you must use some actual generic parameter T -- itself a type. C [T] is indeed a type, but class C by itself is only a type template. + +The process of obtaining a type C [T] from a general class C is known as a '''generic derivation'''; C [T] is a '''generically derived type'''. Type T itself is, recursively, either a non-generic class or again a generically derived type D [U] for some D and U, as in LIST [ARRAY [INTEGER]].) + +It remains true, however, that every type is based on a class. The base class of a generically derived type C [T] is C. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-hello-world.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-hello-world.wiki new file mode 100644 index 00000000..ca3520c1 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-hello-world.wiki @@ -0,0 +1,80 @@ +[[Property:title|ET: Hello World]] +[[Property:weight|-12]] +[[Property:uuid|5b286f94-dd63-1169-a64e-74b5f8c5ef14]] +When discovering any approach to software construction, however ambitious its goals, it is reassuring to see first a small example of the big picture -- a complete program to print the famous "Hello World" string. Here is how to perform this fascinating task in the Eiffel notation. + +You write a class HELLO with a single procedure, say make, also serving as creation procedure. If you like short texts, here is a minimal version: + +class + HELLO + +create + make + +feature + + make + do + print ("Hello World%N") + end + +end + + +In practice, however, the Eiffel style rules suggest a better documented version: + +note + description: "Root for trivial system printing a message" + author: "Elizabeth W. Brown" + +class + HELLO + +create + make + +feature + + make + -- Print a simple message. + do + io.put_string ("Hello World") + io.put_new_line + end + +end -- class HELLO + + +The two versions perform identically; the following comments will cover the more complete second one. + +Note the absence of semicolons and other syntactic clatter or clutter. You may in fact use semicolons to separate instructions and declarations. But the language's syntax is designed to make the semicolon optional (regardless of text layout) and it's best for readability to omit it, except in the special case of successive elements on a single line. + +The note clause does not affect execution semantics; you may use it to associate documentation with the class, so that browsers and other indexing and retrieval tools can help users in search of reusable components satisfying certain properties. Here we see two notes, labeled description and author. + +The name of the class is HELLO. Any class may contain "features"; HELLO has just one, called make. The create clause indicates that make is a "creation procedure", that is to say an operation to be executed at class instantiation time. The class could have any number of creation procedures. + +The definition of make appears in a feature clause. There may be any number of such clauses (to separate features into logical categories), and each may contain any number of feature declarations. Here we have only one. + +The line starting with -- (two hyphen signs) is a comment; more precisely it is a "header comment", which style rules invite software developers to write for every such feature, just after the point at which the feature is named. As will be seen in [[ET: Design by Contract (tm), Assertions and Exceptions#The_contract_form_of_a_class|"The contract form of a class"]], the tools of EiffelStudio know about this convention and use it to include the header comment in the automatically generated class documentation. + +The body of the feature is introduced by the do keyword and terminated by end. It consists of two output instructions. They both use io, a generally available reference to an object that provides access to standard input and output mechanisms; the notation io.f, for some feature f of the corresponding library class (STD_FILES, in this case), means "apply f to io". Here we use two such features: +* put_string outputs a string, passed as argument, here "Hello World". +* put_new_line terminates the line. + +Rather than using a call to put_new_line, the first version of the class simply includes a new-line character, denoted as %N (the percent sign is used to introduce codes for [[Eiffel programming language syntax#Special characters|special characters]]), at the end of the string. Either technique is acceptable. + +You may have noticed another difference between the two versions. The first version uses a call to print where the second uses io.put_string . Here too, the effect is identical and either technique is acceptable. In the next section, you will begin to see how things like io and print become available for use in a class like HELLO. + +To build the system and execute it: +* Start EiffelStudio +* Create a new ''Basic application'' project +* Specify HELLO as the "root class" and make as the "root procedure". +* You can either use EiffelStudio to type in the above class text, or you may use any text editor and store the result into a file hello.e in the current directory. +* Click the "Compile" icon. +* Click the "Run" icon. + +Execution starts and outputs Hello World on the appropriate medium: under Windows, a Console; under Unix or OpenVMS, the windows from which you started EiffelStudio. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-inheritance.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-inheritance.wiki new file mode 100644 index 00000000..d9a56e50 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-inheritance.wiki @@ -0,0 +1,1057 @@ +[[Property:title|ET: Inheritance]] +[[Property:weight|-7]] +[[Property:uuid|c90e6ee3-b39d-48e5-2321-a34e12fd5327]] +Inheritance is a powerful and attractive technique. A look at either the practice or literature shows, however, that it is not always well applied. Eiffel has made a particular effort to tame inheritance for the benefit of modelers and software developers. Many of the techniques are original with Eiffel. Paul Dubois has written (comp.lang.python Usenet newsgroup, 23 March 1997): there are two things that [Eiffel] got right that nobody else got right anywhere else: support for design by contract, and multiple inheritance. Everyone should understand these "correct answers" if only to understand how to work around the limitations in other languages. + +==Basic inheritance structure== + +To make a class inherit from another, simply use an `inherit` clause: + +note ... + +class + D + +inherit + A + B + ... + +feature + ... + + +This makes `D` an heir of `A`, `B` and any other class listed. Eiffel supports '''multiple''' inheritance: a class may have as many parents as it needs. Later sections ( [[ET: Inheritance#Multiple_inheritance_and_renaming|"Multiple inheritance and renaming"]] and [[ET: Inheritance#Repeated_inheritance_and_selection|"Repeated inheritance and selection"]] ) will explain how to handle possible conflicts between parent features. + + +{{note|This discussion will rely on the terminology introduced in [[ET: The Static Picture: System Organization|The Static Picture: System Organization]]: descendants of a class are the class itself, its heirs, the heirs of its heirs and so on. Proper descendants exclude the class itself. The reverse notions are ancestors and proper ancestors. }} + + +By default `D` will simply include all the original features of `A`, `B`, ..., to which it may add its own through its `feature` clauses if any. But the inheritance mechanism is more flexible, allowing `D` to adapt the inherited features in many ways. Each parent name -- `A`, `B`, ... in the example -- can be followed by a '''Feature Adaptation''' clause, with subclauses, all optional, introduced by keywords `rename`, `export`, `undefine`, `redefine` and `select`, enabling the author of `D` to make the best use of the inheritance mechanism by tuning the inherited features to the precise needs of `D`. This makes inheritance a principal tool in the Eiffel process, mentioned earlier, of carefully crafting each individual class, like a machine, for the benefit of its clients. The next sections review the various Feature Adaptation subclauses. + +==Redefinition== + +The first form of feature adaptation is the ability to change the implementation of an inherited feature. + +Assume a class `SAVINGS_ACCOUNT` that specializes the notion of account. It is probably appropriate to define it as an heir to class `ACCOUNT`, to benefit from all the features of `ACCOUNT` still applicable to savings accounts, and to reflect the conceptual relationship between the two types: every savings account, apart from its own specific properties, also "is" an account. But we may need to produce a different effect for procedure `deposit` which, besides recording the deposit and updating the balance, may also need, for example, to update the interest. + +This example is typical of the form of reuse promoted by inheritance and crucial to effective reusability in software: the case of reuse with adaptation. Traditional forms of reuse are all-or-nothing: either you take a component exactly as it is, or you build your own. Inheritance will get us out of this "reuse or redo" dilemma by allowing us to reuse and redo. The mechanism is feature redefinition: + +note + description: "Savings accounts" + +class + SAVINGS_ACCOUNT + +inherit + ACCOUNT + redefine + deposit + end + +feature -- Element change + + deposit (sum: INTEGER) + -- Add sum to account. + do + ... New implementation (see below) ... + end + + ... Other features ... + +end -- class SAVINGS_ACCOUNT + + +Without the `redefine` subclause, the declaration of `deposit` would be invalid, yielding two features of the same name, the inherited one and the new one. The subclause makes this valid by specifying that the new declaration will override the old one. + +In a redefinition, the original version -- such as the `ACCOUNT` implementation of `deposit` in this example -- is called the '''precursor''' of the new version. It is common for a redefinition to rely on the precursor's algorithm and add some other actions; the reserved word `Precursor` helps achieve this goal simply. Permitted only in a routine redefinition, it denotes the parent routine being redefined. So here the body of the new `deposit` (called "New implementation" above) could be of the form + + + Precursor (sum) + -- Apply ACCOUNT's version of deposit + ... Instructions to update the interest ... + + +In the event that a routine has redefined a particular feature from multiple parent, the `Precursor` syntax allows the inclusion of a parent qualification: + + + Precursor {PARENT_X} (args...) + -- Apply PARENT_X's version of this feature + ... Instructions to update the interest ... + + + +Besides changing the implementation of a routine, a redefinition can turn an argument-less function into an attribute; for example a proper descendant of `ACCOUNT` could redefine `deposits_count`, originally a function, as an attribute. The Uniform Access Principle (introduced in [[ET: The Dynamic Structure: Execution Model|The Dynamic Structure: Execution Model]] ) guarantees that the redefinition makes no change for clients, which will continue to use the feature under the form + + acc.deposits_count + + +==Polymorphism== + +The inheritance mechanism is relevant to both roles of classes: module and type. Its application as a mechanism to reuse, adapt and extend features from one class to another, as just seen, covers its role as a '''module extension''' mechanism. But it's also a '''subtyping''' mechanism. To say that `D` is an heir of `A`, or more generally a descendant of `A`, is to express that instances of `D` can be viewed as instances of `A`. + +'''Polymorphic assignment''' supports this second role. In an assignment `x := y`, the types of `x` and `y` do not have, with inheritance, to be identical; the rule is that the type of `y` must simply '''conform''' to the type of `x`. + + +{{definition|Conformance|A class `D` conforms to a class `A` if and only if it is a descendant of `A` (which includes the case in which `A` and `D` are the same class); if these classes are generic, conformance of `D` `[U]` to `C` `[T]` requires in addition that type `U` conform to type `T` (through the recursive application of the same rules). }} + + +{{note|In addition, it will be shown in the discussion of tuples ([[ET: Other Mechanisms#Tuple_types|"Tuple types"]]), that `TUPLE [X]` conforms to `TUPLE`, `TUPLE [X, Y]` to `TUPLE [X]` and so on. }} + + +So with the inheritance structure that we have seen, the declarations + + acc: ACCOUNT + sav: SAVINGS_ACCOUNT + + +make it valid to write the assignment + + acc := sav + + +which will assign to `acc` a reference attached (if not void) to a direct instance of type `SAVINGS_ACCOUNT`, not `ACCOUNT`. + +Such an assignment, where the source and target types are different, is said to be polymorphic. An entity such as `acc`, which as a result of such assignments may become attached at run time to objects of types other than the one declared for it, is itself called a polymorphic entity. + +For polymorphism to respect the reliability requirements of Eiffel, it must be controlled by the type system and enable static type checking. We certainly do not want an entity of type `ACCOUNT` to become attached to an object of type `DEPOSIT`. Hence the second typing rule: + + +{{rule|name=Type Conformance|text=An assignment `x := y`, or the use of y as actual argument corresponding to the formal argument x in a routine call, is only valid if the type of y conforms to the the type of x. }} + + +The second case listed in the rule is a call such as `target.routine(..., y, ...)` where the routine declaration is of the form `routine (..., x: SOME_TYPE)`. The relationship between `y`, the actual argument in the call, and the corresponding formal argument `x`, is exactly the same as in an assignment `x := y`: not just the type rule, as expressed by Type Conformance (the type of `y` must conform to `SOME_TYPE`), but also the actual run-time effect which, as for assignments, will be either a reference attachment or, for expanded types, a copy. + +The ability to accept the assignment `x := Void` for `x` of any reference type (see [[ET: The Dynamic Structure: Execution Model#Basic_operations|"Basic operations"]] ) is a consequence of the Type Conformance rule, since `Void` is of type `NONE` which by construction ([[ET: The Static Picture: System Organization#The_global_inheritance_structure|"The global inheritance structure"]] ) conforms to all types. + +Polymorphism also yields a more precise definition of "instance". A '''direct instance''' of a type `A` is an object created from the exact pattern defined by the declaration of `A` 's base class, with one field for each of the class attributes; you will obtain it through a creation instruction of the form `create x` ..., for `x` of type `A`, or by cloning an existing direct instance. An '''instance''' of `A` is a direct instance of any type conforming to `A`: `A` itself, but also any type based on descendant classes. So an instance of `SAVINGS_ACCOUNT` is also an instance, although not a direct instance, of `ACCOUNT`. + +A consequence of polymorphism is the ability to define '''polymorphic data structures'''. With a declaration such as + + accounts: LIST [ACCOUNT] + + +the procedure call `accounts.extend (acc)`, because it uses a procedure `extend` which in this case expects an argument of any type conforming to `ACCOUNT`, will be valid not only if `acc` is of type `ACCOUNT` but also if it is of a descendant type such as `SAVINGS_ACCOUNT`. Successive calls of this kind make it possible to construct a data structure that, at run-time, might contain objects of several types, all conforming to `ACCOUNT`: + +[[Image:tutorial-10]] [[Image:tutorial-11]] + +Such polymorphic data structures combine the flexibility and safety of genericity and inheritance. You can make them more or less general by choosing for the actual generic parameter, here `ACCOUNT`, a type higher or lower in the inheritance hierarchy. Static typing is again essential here, prohibiting for example a mistaken insertion of the form `accounts.extend (dep)` where `dep` is of type `DEPOSIT`, which does not conform to `ACCOUNT`. + +At the higher (most abstract) end of the spectrum, you can produce an unrestrictedly polymorphic data structure `general_list: LIST [ANY]` which makes the call `general_list.extend (x)` valid for any `x`. The price to pay is that retrieving an element from such a structure will yield an object on which the only known applicable operations are the most general ones, valid for all types: assignment, copy, twin, equality comparison and others from `ANY`. The [[#Object test|object test]], studied below, will make it possible to apply more specific operations after checking dynamically that a retrieved object is of the appropriate type. + +==Dynamic binding== + +The complement of polymorphism is dynamic binding, the answer to the question "What version of a feature will be applied in a call whose target is polymorphic?". + +Consider `acc` is of type `ACCOUNT`. Thanks to polymorphism, an object attached to `acc` may be a direct instance not just of `ACCOUNT` but also of `SAVINGS_ACCOUNT` or other descendants. Some of these descendants, indeed `SAVINGS_ACCOUNT` among them, redefine features such as `deposit`. Then we have to ask what the effect will be for a call of the form + + acc.deposit (some_value) + + +Dynamic binding is the clearly correct answer: the call will execute the version of `deposit` from the generating class of the object attached to `acc` at run time. If `acc` is attached to a direct instance of `ACCOUNT`, execution will use the original `ACCOUNT` version; if `acc` is attached to a direct instance of `SAVINGS_ACCOUNT`, the call will execute the version redefined in that class. + +This is a clear correctness requirement. A policy of static binding (as available for example in C++ or Delphi, for non-virtual functions) would take the declaration of `acc` as an `ACCOUNT` literally. But that declaration is only meant to ensure generality, to enable the use of a single entity `acc` in many different cases: what counts at execution time is the object that `acc` represents. Applying the `ACCOUNT` version to a `SAVINGS_ACCOUNT` object would be wrong, possibly leading in particular to objects that violate the invariant of their own generating class (since there is no reason a routine of `ACCOUNT` will preserve the specific invariant of a proper descendant such as `SAVINGS_ACCOUNT`, which it does not even know about). + +In some cases, the choice between static and dynamic binding does not matter: this is the case for example if a call's target is not polymorphic, or if the feature of the call is redefined nowhere in the system. In such cases the use of static binding permits slightly faster calls (since the feature is known at compile time). This application of static binding should, however, be treated as a '''compiler optimization'''. The EiffelStudio compiler, under its "finalization" mode, which performs extensive optimization, will detect some of these cases and process them accordingly -- unlike approaches that make developers responsible for specifying what should be static and what dynamic (a tedious and error-prone task, especially delicate because a minute change in the software can make a static call, in a far-away module of a large system, suddenly become dynamic). Eiffel programmers don't need to worry about such aspects; they can rely on the semantics of dynamic binding in all cases, with the knowledge that the compiler will apply static binding when safe and desirable. + +Even in cases that require dynamic binding, the design of Eiffel, in particular the typing rules, enable compilers to make the penalty over the static-binding calls of traditional approaches very small and, most importantly, '''constant-bounded''' : it does not grow with the depth or complexity of the inheritance structure. The discovery in 1985 of a technique for constant-time dynamic binding calls, even in the presence of multiple and repeated inheritance, was the event that gave the green light to the development of Eiffel. + +Dynamic binding is particularly interesting for polymorphic data structures. If you iterate over the list of accounts of various kinds, `accounts: LIST [ACCOUNT]`, illustrated in the last figure, and at each step let `acc` represent the current list element, you can repeatedly apply + + acc.deposit (...) + + +to have the appropriate variant of the `deposit` operation triggered for each element. + +The benefit of such techniques appears clearly if we compare them with the traditional way to address such needs: using multi-branch discriminating instructions of the form + + if "Account is a savings account " then + ... + elseif "It is a money market account" then + ... + elseif ... + +and so on, or the corresponding `case ... of ..., switch` or `inspect` instructions. Apart from their heaviness and complexity, such solutions cause many components of a software system to rely on the knowledge of the exact set of variants available for a certain notion, such as bank account. Then any addition, change or removal of variants can cause a ripple of changes throughout the architecture. This is one of the majors obstacles to extendibility and reusability in traditional approaches. In contrast, using the combination of inheritance, redefinition, polymorphism and dynamic binding makes it possible to have a '''point of single choice''' -- a unique location in the system which knows the exhaustive list of variants. Every client then manipulates entities of the most general type, `ACCOUNT`, through dynamically bound calls of the form + + acc.some_account_feature (...) + + +These observations make dynamic binding appear for what it is: not an implementation mechanism, but an '''architectural technique''' that plays a key role (along with information hiding, which it extends, and Design by Contract, to which it is linked through the assertion redefinition rules seen below) in providing the modular system architectures of Eiffel, the basis for the method's approach to reusability and extendibility. These properties apply as early as analysis and modeling, and continue to be useful throughout the subsequent steps. + +==Deferred features and classes== + +The examples of dynamic binding seen so far assumed that all classes were fully implemented, and dynamically bound features had a version in every relevant class, including the most general ones such as `ACCOUNT`. + +It is also useful to define classes that leave the implementation of some of their features entirely to proper descendants. Such an abstract class is known as `deferred`; so are its unimplemented features. The reverse of deferred is effective, meaning fully implemented. + +`LIST` is a typical example of deferred class. As it describes the general notion of list, it should not favor any particular implementation; that will be the task of its effective descendants, such as `LINKED_LIST` (linked implementation), `TWO_WAY_LIST` (linked both ways) `ARRAYED_LIST, ` (implementation by an array), all effective, and all indeed to be found in EiffelBase. + +At the level of the deferred class `LIST`, some features such as `extend` (add an item at the end of the list) will have no implementation and hence will be declared as deferred. Here is the corresponding form, illustrating the syntax for both deferred classes and their deferred features: + +note + description: "[ + Sequential finite lists, without a commitment + to a representation. + ]" + +deferred class + LIST [G] + +feature -- Access + + count: INTEGER + -- Number of items in list + do + ... See below; this feature can be effective ... + end + +feature -- Element change + + extend (x: G) + -- Add `x' at end of list. + require + space_available: not full + deferred + ensure + one_more: count = old count + 1 + end + + ... Other feature declarations and invariants ... + +end -- class LIST + + +A deferred feature (considered to be a routine, although it can yield an attribute in a proper descendant) has the single keyword `deferred` in lieu of the `do` ''Instructions'' clause of an effective routine. A deferred class -- defined as a class that has at least one deferred feature -- must be introduced by `deferred class` instead of just `class`. + +As the example of `extend` shows, a deferred feature, although it has no implementation, can be equipped with assertions. They will be binding on implementations in descendants, in a way to be explained below. + +Deferred classes do not have to be fully deferred. They may contain some effective features along with their deferred ones. Here, for example, we may express `count` as a function: + +count: INTEGER + -- Number of items in list + do + from + start + until + after + loop + Result := Result + 1 + forth + end + end + + +This implementation relies on the loop construct described below ( `from` introduces the loop initialization) and on a set of deferred features of the class which allow traversal of a list based on moving a fictitious cursor: `start` to bring the cursor to the first element if any, `after` to find out whether all relevant elements have been seen, and `forth` (with precondition `not` `after`) to advance the cursor to the next element. Procedure `forth` itself appears as + + forth + -- Advance cursor by one position + require + not_after: not after + deferred + ensure + moved_right: index = old index + 1 + end + + +where `index` -- another deferred feature -- is the integer position of the cursor. + +Although the above version of feature `count` is time-consuming -- it implies a whole traversal just for the purpose of determining the number of elements -- it has the advantage of being applicable to all variants, without any commitment to a choice of implementation, as would follow for example if we decided to treat `count` as an attribute. Proper descendants can always redefine `count` for more efficiency. + +Function `count` illustrates one of the most important contributions of the method to reusability: the ability to define '''behavior classes''' that capture common behaviors (such as count) while leaving the details of the behaviors (such as `start`, `after`, `forth`) open to many variants. As noted earlier, traditional approaches to reusability provide closed reusable components. A component such as `LIST`, although equipped with directly usable behaviors such as count, is open to many variations, to be provided by proper descendants. + + +{{note|Some O-O languages support only the two extremes: fully effective classes, and fully deferred "interfaces", but not classes with a mix of effective and deferred features. This is an unacceptable limitation, negating the object-oriented method's support for a seamless, continuous spectrum from the most abstract to the most concrete. }} + + +A class `B` inheriting from a deferred class `A` may provide implementations -- effective declarations -- for the features inherited in deferred form. In this case there is no need for a `redefine` subclause; the effective versions simply replace the inherited versions. The class is said to '''effect''' the corresponding features. If after this process there remain any deferred features, B is still considered deferred, even if it introduces no deferred features of its own, and must be declared as `class deferred`. + +In the example, classes such as `LINKED_LIST` and `ARRAYED_LIST` will effect all the deferred features they inherit from `LIST` -- `extend`, `start` etc. -- and hence will be effective. + +Except in some applications restricted to pure system modeling -- as discussed next -- the main benefit of deferred classes and features comes from polymorphism and dynamic binding. Because `extend` has no implementation in class `LIST`, a call of the form `my_list.extend(...)` with my_list of type `LIST [T]` for some `T` can only be executed if `my_list` is attached to a direct instance of an effective proper descendant of `LIST`, such as `LINKED_LIST`; then it will use the corresponding version of `extend`. Static binding would not even make sense here. + +Even an effective feature of `LIST` such as count may depend on deferred features (start and so on), so that a call of the form `my_list.count` can only be executed in the context of an effective descendant. + +All this indicates that a deferred class must have '''no direct instance'''. (It will have instances, the direct instances of its effective descendants.) If it had any, we could call deferred features on them, leading to execution-time impossibility. The rule that achieves this goal is simple: if the base type of `x` is a deferred class, no creation instruction of target `x`, of the form `create x...`, is permitted. + +==Applications of deferred classes== + +Deferred classes cover abstract notions with many possible variants. They are widely used in Eiffel where they cover various needs:
+* Capturing high-level classes, with common behaviors. +* Defining the higher levels of a general taxonomy, especially in the inheritance structure of a library. +* Defining the components of an architecture during system design, without commitment to a final implementation. +* Describing domain-specific concepts in analysis and modeling. + + +These applications make deferred classes a central tool of the Eiffel method's support for seamlessness and reversibility. The last one in particular uses deferred classes and features to model objects from an application domain, without any commitment to implementation, design, or even software (and computers). Deferred classes are the ideal tool here: they express the properties of the domain's abstractions, without any temptation of implementation bias, yet with the precision afforded by type declarations, inheritance structures (to record classifications of the domain concepts), and contracts to express the abstract properties of the objects being described. + +Rather than using a separate method and notation for analysis and design, this approach integrates seamlessly with the subsequent phases (assuming the decision is indeed taken to develop a software system): it suffices to refine the deferred classes progressively by introducing effective elements, either by modifying the classes themselves, or by introducing design- and implementation-oriented descendants. In the resulting system, the classes that played an important role for analysis, and are the most meaningful for customers, will remain important; as we have seen ( [[ET: The Software Process in Eiffel#Seamlessness_and_reversibility|"Seamlessness and reversibility"]] ) this direct mapping property is a great help for extendibility. + +The following sketch (from the book [[Object-Oriented Software Construction, 2nd Edition]] ) illustrates these ideas on the example of scheduling the programs of a TV station. This is pure modeling of an application domain; no computers or software are involved yet. The class describes the notion of program segment. + +Note the use of assertions to define semantic properties of the class, its instances and its features. Although often presented as high-level, most object-oriented analysis methods (with the exception of Walden's and Nerson's Business Object Notation) have no support for the expression of such properties, limiting themselves instead to the description of broad structural relationships. + +note + description: "Individual fragments of a broadcasting schedule" + +deferred class + SEGMENT + +feature -- Access + + schedule: SCHEDULE deferred end + -- Schedule to which segment belongs + + index: INTEGER deferred end + -- Position of segment in its schedule + + starting_time, ending_time: INTEGER deferred end + -- Beginning and end of scheduled air time + + next: SEGMENT deferred end + -- Segment to be played next, if any + + sponsor: COMPANY deferred end + -- Segment's principal sponsor + + rating: INTEGER deferred end + -- Segment's rating (for children's viewing etc.) + + Minimum_duration: INTEGER = 30 + -- Minimum length of segments, in seconds + + Maximum_interval: INTEGER = 2 + -- Maximum time (seconds) between successive segments + +feature -- Element change + + set_sponsor (s: SPONSOR) + require + not_void: s /= Void + deferred + ensure + sponsor_set: sponsor = s + end + + ... change_next, set_rating omitted ... + +invariant + in_list: (1 <= index) and (index <= schedule.segments.count) + in_schedule: schedule.segments.item (index) = Current + next_in_list: (next /= Void) implies (schedule.segments.item (index + 1) = next) + no_next_if_last: (next = Void) = (index = schedule.segments.count) + non_negative_rating: rating >= 0 + positive times: (starting_time > 0) and (ending_time > 0) + sufficient_duration: ending_time - starting_time >= Minimum_duration + decent_interval: (next.starting_time) - ending_time <= Maximum_interval + +end + + +==Structural property classes== + +Some deferred classes describe a structural property, useful to the description of many other classes. Typical examples are classes of the Kernel Library in EiffelBase: + +`NUMERIC` describes objects on which arithmetic operations `+, -, *, /` are available, with the properties of a ring (associativity, distributivity, zero elements etc.). Kernel Library classes such as `INTEGER` and `REAL` -- but not, for example, `STRING` -- are descendants of `NUMERIC`. An application that defines a class `MATRIX` may also make it a descendant of `NUMERIC`. + +`COMPARABLE` describes objects on which comparison operations <, <=, >, >= are available, with the properties of a total preorder (transitivity, irreflexivity). Kernel Library classes such as `CHARACTER`, `STRING` and `INTEGER` -- but not our `MATRIX` example -- are descendants of `COMPARABLE`. + +For such classes it is again essential to permit effective features in a deferred class, and to include assertions. For example class `COMPARABLE` declares infix "<" as deferred, and expresses `>, >=` and <= effectively in terms of it. + + +{{note|The type `like Current` will be explained in [[ET: Inheritance#Covariance, anchored declarations, and "catcalls"|"Covariance, anchored declarations, and "catcalls""]] ; you may understand it, in the following class, as equivalent to `COMPARABLE`. }} + + +note + description: "Objects that can be compared according to a total preorder relation" + +deferred class + COMPARABLE + +feature -- Comparison + + infix "<" (other: like Current): BOOLEAN + -- Is current object less than `other'? + require + other_exists: other /= Void + deferred + ensure + asymmetric: Result implies not (other < Current) + end + + infix "<=" (other: like Current): BOOLEAN + -- Is current object less than or equal to `other'? + require + other_exists: other /= Void + do + Result := (Current < other) or is_equal (other) + ensure + definition: Result = (Current < other) or is_equal (other) + end + + ... Other features: infix ">", min, max, ... + +invariant + irreflexive: not (Current < Current) + +end -- class COMPARABLE + + +==Multiple inheritance and renaming== + +It is often necessary to define a new class in terms of several existing ones. For example: + +The Kernel Library classes `INTEGER` and `REAL` must inherit from both `NUMERIC` and `COMPARABLE`. + +A class `TENNIS_PLAYER`, in a system for keeping track of player ranking, will inherit from `COMPARABLE`, as well as from other domain-specific classes. + +A class `COMPANY_PLANE` may inherit from both `PLANE` and `ASSET`. + +Class `ARRAYED_LIST`, describing an implementation of lists through arrays, may inherit from both `LIST` and `ARRAY`. + +In all such cases multiple inheritance provides the answer. + +Multiple inheritance can cause '''name clashes''' : two parents may include a feature with the same name. This would conflict with the ban on name overloading within a class -- the rule that no two features of a class may have the same name. Eiffel provides a simple way to remove the name clash at the point of inheritance through the `rename` subclause, as in + +note + description: "Sequential finite lists implemented as arrays" + +class + ARRAYED_LIST [G] + +inherit + LIST [G] + + ARRAY [G] + rename + count as capacity, + item as array_item + end + +feature + + ... + +end -- class ARRAYED_LIST + + +Here both `LIST` and `ARRAY` have features called `count` and `item`. To make the new class valid, we give new names to the features inherited from `ARRAY`, which will be known within `ARRAYED_LIST` as `capacity` and `array_item`. Of course we could have renamed the `LIST` versions instead, or renamed along both inheritance branches. + +Every feature of a class has a '''final name''' : for a feature introduced in the class itself ("immediate" feature) it is the name appearing in the declaration; for an inherited feature that is not renamed, it is the feature's name in the parent; for a renamed feature, it is the name resulting from the renaming. This definition yields a precise statement of the rule against in-class overloading: + + +{{rule|name=Final Name|text=Two different features of a class may not have the same final name. }} + + +It is interesting to compare renaming and redefinition. The principal distinction is between features and feature names. Renaming keeps a feature, but changes its name. Redefinition keeps the name, but changes the feature. In some cases, it is of course appropriate to do both. + +Renaming is interesting even in the absence of name clashes. A class may inherit from a parent a feature which it finds useful for its purposes, but whose name, appropriate for the context of the parent, is not consistent with the context of the heir. This is the case with `ARRAY`'s feature `count` in the last example: the feature that defines the number of items in an array -- the total number of available entries -- becomes, for an arrayed list, the maximum number of list items; the truly interesting indication of the number of items is the count of how many items have been inserted in the list, as given by feature `count` from `LIST`. But even if we did not have a name clash because of the two inherited `count` features we should rename `ARRAY` 's `count` as `capacity` to maintain the consistency of the local feature terminology. + +The `rename` subclause appears before all the other feature adaptation subclauses -- `redefine` already seen, and the remaining ones `export`, `undefine` and `select` -- since an inherited feature that has been renamed sheds its earlier identity once and for all: within the class, and to its own clients and descendants, it will be known solely through the new name. The original name has simply disappeared from the name space. This is essential to the view of classes presented earlier: self-contained, consistent abstractions prepared carefully for the greatest enjoyment of clients and descendants. + +==Inheritance and contracts== + +A proper understanding of inheritance requires looking at the mechanism in the framework of Design by Contract, where it will appear as a form of subcontracting. + +The first rule is that invariants accumulate down an inheritance structure: + + +{{rule|name=Invariant Accumulation|text=The invariants of all the parents of a class apply to the class itself. }} + + +The invariant of a class is automatically considered to include -- in the sense of logical "and" -- the invariants of all its parents. This is a consequence of the view of inheritance as an "is" relation: if we may consider every instance of `B` as an instance of `A`, then every consistency constraint on instances of `A` must also apply to instances of `B`. + +Next we consider routine preconditions and postconditions. The rule here will follow from an examination of what contracts mean in the presence of polymorphism and dynamic binding. + +Consider a parent `A` and a proper descendant `B` (a direct heir on the following figure), which redefines a routine `r` inherited from `A`. + +[[Image:tutorial-12]] + +As a result of dynamic binding, a call `a1`.`r` from a client `C` may be serviced not by `A`'s version of `r` but by `B` 's version if `a1`, although declared of type `A`, becomes at run time attached to an instance of `B`. This shows the combination of inheritance, redefinition, polymorphism and dynamic binding as providing a form of subcontracting; `A` subcontracts certain calls to `B`. + +The problem is to keep subcontractors honest. Assuming preconditions and postconditions as shown on the last figure, a call in `C` of the form + + if a1.pre then + a1.r + end + + +or possibly + + a1.q + a1.r + + +where the postcondition of some routine `q` implies the precondition `pre` of `r`, satisfies the terms of the contract and hence is entitled to being handled correctly -- to terminate in a state satisfying `a1`.`post`. But if we let the subcontractor `B` redefine the assertions to arbitrary ''pre' ''and ''post','' this is not necessarily the case: ''pre' ''could be stronger than ''pre'', enabling `B` not to process correctly certain calls that are correct from `A`'s perspective; and ''post' ''could be weaker than ''post'', enabling `B` to do less of a job than advertized for `r` in the Contract Form of `A`, the only official reference for authors of client classes such as `C`. (An assertion `p` is stronger than or equal to an assertion `q` if `p` implies `q` in the sense of boolean implication.) + +The rule, then, is that for the redefinition to be correct the new precondition ''pre' ''must be weaker than or equal to the original ''pre'', and the new postcondition ''post' ''must be stronger than or equal to the original ''post''. + +Because it is impossible to check simply that an assertion is weaker or stronger than another, the language rule relies on different forms of the assertion constructs, `require else` and `ensure then`, for redeclared routines. They rely on the mathematical property that for any assertions `p` and `q`, the following are true: + + 1) p implies (p or q) + 2) (p and q) implies p + +For a precondition, using `require else` with a new assertion will perform an `or`, which can only weaken the original; for a postcondition, `ensure then` will perform an `and`, which can only strengthen the original. Hence the rule: + + +{{rule|name=Assertion Redeclaration|text=In the redeclared version of a routine, it is not permitted to use a require or ensure clause. Instead you may: Introduce a new condition with require else, for or-ing with the original precondition. Introduce a new condition with ensure then, for and-ing with the original postcondition. In the absence of such a clause, the original assertions are retained. }} + + +The last case -- retaining the original -- is frequent but by no means universal. + +The Assertion Redeclaration rule applies to '''redeclarations'''. This terms covers not just redefinition but also effecting (the implementation, by a class, of a feature that it inherits deferred). The rules -- not just for assertions but also, as reviewed below, for typing -- are indeed the same in both cases. Without the Assertion Redeclaration rule, assertions on deferred features, such as those on `extend`, `count` and `forth` in [[ET: Inheritance#Deferred_features_and_classes|"Deferred features and classes"]] , would be almost useless -- wishful thinking; the rule makes them binding on all effectings in descendants. + +From the Assertion Redeclaration rule follows an interesting technique: '''abstract preconditions'''. What needs to be weakened for a precondition (or strengthened for a postcondition) is not the assertion's concrete semantics but its abstract specification as seen by the client. A descendant can change the implementation of that specification as it pleases, even to the effect of strengthening the concrete precondition, as long as the abstract form is kept or weakened. The precondition of procedure `extend` in the deferred class `LIST` provided an example. We wrote the routine (in [[ET: Inheritance#Deferred_features_and_classes|"Deferred features and classes"]] ) as + + extend (x: G) + -- Add `x' at end of list. + require + space_available: not full + deferred + ensure + one_more: count = old count + 1 + end + + +The precondition expresses that it is only possible to add an item to a list if the representation is not full. We may well consider -- in line with the Eiffel principle that whenever possible structures should be of unbounded capacity -- that `LIST` should by default make `full` always return false: + + full: BOOLEAN + -- Is representation full? + -- (Default: no) + do + Result := False + end + + +Now a class `BOUNDED_LIST` that implements bounded-size lists (inheriting, like the earlier `ARRAYED_LIST`, from both `LIST` and `ARRAY`) may redefine `full`: + + full: BOOLEAN + -- Is representation full? + -- (Answer: if and only if number of items is capacity) + do + Result := (count = capacity) + end + + +Procedure `extend` remains applicable as before; any client that used it properly with `LIST` can rely polymorphically on the `FIXED_LIST` implementation. The abstract precondition of `extend` has not changed, even though the concrete implementation of that precondition has in fact been strengthened. + +Note that a class such as `BOUNDED_LIST`, the likes of which indeed appear in EiffelBase, is not a violation of the Eiffel advice to stay away from fixed-size structures. The corresponding structures are bounded, but the bounds are changeable. Although `extend` requires `not full`, another feature, called `force` in all applicable classes, will add an element at the appropriate position by resizing and reallocating the structure if necessary. Even arrays in Eiffel are not fixed-size, and have a procedure `force` with no precondition, accepting any index position. + +The Assertion Redeclaration rule, together with the Invariant Accumulation rule, provides the right methodological perspective for understanding inheritance and the associated mechanisms. Defining a class as inheriting from another is a strong commitment; it means inheriting not only the features but the logical constraints. Redeclaring a routine is bound by a similar committment: to provide a new implementation (or, for an effecting, a first implementation) of a previously defined semantics, as expressed by the original contract. Usually you have a wide margin for choosing your implementation, since the contract only defines a range of possible behaviors (rather than just one behavior), but you '''must''' remain within that range. Otherwise you would be perverting the goals of redeclaration, using this mechanism as a sort of late-stage hacking to override bugs in ancestor classes. + +==Join and uneffecting== + +It is not an error to inherit two deferred features from different parents under the same name, provided they have the same signature (number and types of arguments and result). In that case a process of '''feature join''' takes place: the features are merged into just one -- with their preconditions and postconditions, if any, respectively or-ed and and-ed. + +More generally, it is permitted to have any number of deferred features and at most one effective feature that share the same name: the effective version, if present will effect all the others. + +All this is not a violation of the Final Name rule (defined in [[ET: Inheritance#Multiple_inheritance_and_renaming|"Multiple inheritance and renaming"]] ), since the name clashes prohibited by the rule involve two different features having the same final name; here the result is just one feature, resulting from the join of all the inherited versions. + +Sometimes we may want to join ''effective'' features inherited from different parents, assuming again the features have compatible signatures. One way is to redefine them all into a new version. That is, list each in a `redefine` clause, then write a redefined version of the feature. In this case, they again become one feature, with no name clash in the sense of the Final Name rule. But in other cases we may simply want one of the inherited implementations to take over the others. The solution is to revert to the preceding case by '''uneffecting''' the other features; uneffecting an inherited effective feature makes it deferred (this is the reverse of effecting, which turns an inherited deferred feature into an effective one). The syntax uses the `undefine` subclause: + +class D + +inherit + A + rename + g as f + -- g was effective in A + undefine + f + end + + B + undefine + f + -- f was effective in B + end + + C + -- C also has an effective feature f , which will serve as + -- implementation for the result of the join. + +feature + ... + + + +Again what counts, to determine if there is an invalid name clash, is the final name of the features. In this example, two of the joined features were originally called `f`; the one from `A` was called `g`, but in `D` it is renamed as `f`, so without the undefinition it would cause an invalid name clash. + +Feature joining is the most common application of uneffecting. In some non-joining cases, however, it may be useful to forget the original implementation of a feature and let it start a new life devoid of any burden from the past. + +==Changing the export status== + +Another Feature Adaptation subclause, `export`, makes it possible to change the export status of an inherited feature. By default -- covering the behavior desired in the vast majority of practical cases -- an inherited feature keeps its original export status (exported, secret, selectively exported). In some cases, however, this is not appropriate: + +A feature may have played a purely implementation-oriented role in the parent, but become interesting to clients of the heir. Its status will change from secret to exported. + +In implementation inheritance (for example `ARRAYED_LIST` inheriting from `ARRAY`) an exported feature of the parent may not be suitable for direct use by clients of the heir. The change of status in this case is from exported to secret. + +You can achieve either of these goals by writing + +class D inherit + A + export {X, Y, ...} feature1, feature2, ... end + + ... + + +This gives a new export status to the features listed (under their final names since, as noted, `export` like all other subclauses comes after `rename` if present): they become exported to the classes listed. In most cases this list of classes, `X`, `Y`, ..., consists of just `ANY`, to re-export a previously secret feature, or `NONE`, to hide a previously exported feature. It is also possible, in lieu of the feature list, to use the keyword `all` to apply the new status to all features inherited from the listed parent. Then there can be more than one class-feature list, as in + +class ARRAYED_LIST [G] inherit + + ARRAY [G] + rename + count as capacity, item as array_item, put as array_put + export + {NONE} all + {ANY} capacity + end + + + + ... + + +where any explicit listing of a feature, such as `capacity`, takes precedence over the export status specified for `all`. Here most features of `ARRAY` are secret in `ARRAYED_LIST`, because the clients should not permitted to manipulate array entries directly: they will manipulate them indirectly through list features such as `extend` and `item`, whose implementation relies on `array_item` and `array_put`. But `ARRAY`'s feature `count` remains useful, under the name `capacity`, to the clients of `ARRAYED_LIST`. + +==Flat and Flat-Contract Forms== + +Thanks to inheritance, a concise class text may achieve a lot, relying on all the features inherited from direct and indirect ancestors. + +This is part of the power of the object-oriented form of reuse, but can create a comprehension and documentation problem when the inheritance structures become deep: how does one understand such a class, either as client author or as maintainer? For clients, the Contract Form, entirely deduced from the class text, does not tell the full story about available features; and maintainers must look to proper ancestors for much of the relevant information. + +These observations suggest ways to produce, from a class text, a version that is equivalent feature-wise and assertion-wise, but has no inheritance dependency. This is called the '''Flat Form''' of the class. It is a class text that has no inheritance clause and includes all the features of the class, immediate (declared in the class itself) as well as inherited. For the inherited features, the flat form must of course take account of all the feature adaptation mechanisms: renaming (each feature must appear under its final name), redefinition, effecting, uneffecting and export status change. For redeclared features, `require else` clauses are or-ed with the precursors' preconditions, and `ensure then` clauses are and-ed with precursors' postconditions. For invariants, all the ancestors' clauses are concatenated. As a result, the flat form yields a view of the class, its features and its assertions that conforms exactly to the view offered to clients and (except for polymorphic uses) heirs. + +As with the Contract Form ( [[ET: Design by Contract (tm), Assertions and Exceptions#The_contract_form_of_a_class|"The contract form of a class"]] ), producing the Flat Form is the responsibility of tools in the development environment. In EiffelStudio, you will just click the "Flat" icon. + +The Contract Form of the Flat Form of a class is known as its '''Flat-Contract Form'''. It gives the complete interface specification, documenting all exported features and assertions -- immediate or inherited -- and hiding implementation aspects. It is the appropriate documentation for a class. + +==Repeated inheritance and selection== + +An inheritance mechanism, following from multiple inheritance, remains to be seen. Through multiple inheritance, a class can be a proper descendant of another through more than one path. This is called repeated inheritance and can be indirect, as in the following figure, or even direct, when a class `D` lists a class `A` twice in its `inherit` clause. + +[[Image:tutorial-13]] + +The figure's particular example is in fact often used by introductory presentations of multiple inheritance, which is a pedagogical mistake: simple multiple inheritance examples (such as `INTEGER` inheriting from `NUMERIC` and `COMPARABLE`, or `COMPANY_PLANE` from `ASSET` and `PLANE`) should involve the combination of '''separate abstractions'''. Repeated inheritance is an advanced technique; although invaluable, it does not arise in elementary uses and requires a little more care. + +In fact there is only one non-trivial issue in repeated inheritance: what does a feature of the repeated ancestor, such as `change_address` and `computer_account`, mean for the repeated descendant, here `TEACHING_ASSISTANT`? (The example features chosen involve a routine and an attribute; the basic rules will be the same.) + +There are two possibilities: sharing (the repeatedly inherited feature yields just one feature in the repeated descendant) and duplication (it yields two). Examination of various cases shows quickly that a fixed policy, or one that would apply to all the features of a class, would be inappropriate. + +Feature `change_address` calls for sharing: as a teaching assistant, you may be both teacher and student, but you are just one person, with just one official domicile. + +If there are separate accounts for students' course work and for faculty, you may need one of each kind, suggesting that `computer_account` calls for duplication. + +The Eiffel rule enables, once again, the software developer to craft the resulting class so as to tune it to the exact requirements. Not surprisingly, it is based on names, in accordance with the Final Name rule (no in-class overloading): + + +{{rule|name=Repeated Inheritance|text=
A feature inherited multiply under one name will be shared: it is considered to be just one feature in the repeated descendant.
A feature inherited multiply under different names will be replicated, yielding as many variants as names. }} + + +So to tune the repeated descendant, feature by feature, for sharing and replication it suffices to use renaming. + +Doing nothing will cause sharing, which is indeed the desired policy in most cases (especially those cases of unintended repeated inheritance: making `D` inherit from `A` even though it also inherits from `B`, which you forgot is already a descendant of `A`). + +If you use renaming somewhere along the way, so that the final names are different, you will obtain two separate features. It does not matter where the renaming occurs; all that counts is whether in the common descendant, `TEACHING_ASSISTANT` in the last figure, the names are the same or different. So you can use renaming at that last stage to cause replication; but if the features have been renamed higher you can also use last-minute renaming to avoid replication, by bringing them back to a single name. + +The Repeated Inheritance rule gives the desired flexibility to disambiguate the meaning of repeatedly inherited features. There remains a problem in case of redeclaration and polymorphism. Assume that somewhere along the inheritance paths one or both of two replicated versions of a feature `f`, such as `computer_account` in the example, has been redeclared; we need to define the effect of a call `a.f` ( `a.computer_account` in the example) if `a` is of the repeated ancestor type, here `UNIVERSITY_PERSON`, and has become attached as a result of polymorphism to an instance of the repeated descendant, here `TEACHING_ASSISTANT`. If one or more of the intermediate ancestors has redefined its version of the feature, the dynamically-bound call has two or moreversions to choose from. + +A `select` clause will resolve the ambiguity, as in + +class TEACHING_ASSISTANT + +inherit + TEACHER + rename + computer_account as faculty_account + select + faculty_account + end + + STUDENT + rename + computer_account as student_account + end + + ... + + +We assume here that that no other renaming has occurred -- `TEACHING_ASSISTANT` takes care of the renaming to ensure replication -- but that one of the two parents has redefined `computer_account`, for example `TEACHER` to express the special privileges of faculty accounts. In such a case the rule is that one (and exactly one) of the two parent clauses in `TEACHING_ASSISTANT` '''must''' select the corresponding version. Note that no problem arises for an entity declared as + + ta: TEACHING_ASSISTANT + + +since the valid calls are of the form `ta.faculty_account` and `ta.student_account`, neither of them ambiguous; the call `ta.computer_account` would be invalid, since after the renamings class `TEACHING_ASSISTANT` has no feature of that name. The `select` only applies to a call + + up.computer_account + +with `up` of type `UNIVERSITY_PERSON`, dynamically attached to an instance of `TEACHING_ASSISTANT`; then the `select` resolves the ambiguity by causing the call to use the version from `TEACHER`. + +So if you traverse a list `computer_users: LIST [UNIVERSITY_PERSON]` to print some information about the computer account of each list element, the account used for a teaching assistant is the faculty account, not the student account. + +You may, if desired, redefine `faculty_account` in class `TEACHING_ASSISTANT`, using `student_account` if necessary, to take into consideration the existence of another account. But in all cases we need a precise disambiguation of what `computer_account` means for a `TEACHING_ASSISTANT` object known only through a `UNIVERSITY_PERSON` entity. + +The `select` is only needed in case of replication. If the Repeated Inheritance rule would imply sharing, as with change_address, and one or both of the shared versions has been redeclared, the Final Name rule makes the class invalid, since it now has '''two different features''' with the same name. (This is only a problem if both versions are effective; if one or both are deferred there is no conflict but a mere case of feature joining as explained in [[ET: Inheritance#Join_and_uneffecting|"Join and uneffecting"]] .) The two possible solutions follow from the previous discussions: + +If you do want sharing, one of the two versions must take precedence over the other. It suffices to '''undefine''' the other, and everything gets back to order. Alternatively, you can redefine both into a new version, which takes precedence over both. + +If you want to keep both versions, switch from sharing to replication: rename one or both of the features so that they will have different names; then you must `select` one of them. + +==Constrained genericity== + +Eiffel's inheritance mechanism has an important application to extending the flexibility of the '''genericity''' mechanism. In a class `SOME_CONTAINER [G]`, as noted in [[ET: Genericity and Arrays|"Genericity and Arrays"]] ), the only operations available on entities of type `G`, the formal generic parameter, are those applicable to entities of all types. A generic class may, however, need to assume more about the generic parameter, as with a class `SORTABLE_ARRAY [G ...]` which will have a procedure `sort` that needs, at some stage, to perform tests of the form + + if item (i) < item (j) then ... + +where `item (i)` and `item (j)` are of type `G`. But this requires the availability of a feature infix "<" in all types that may serve as actual generic parameters corresponding to `G`. Using the type `SORTABLE_ARRAY [INTEGER]` should be permitted, because `INTEGER` has such a feature; but not `SORTABLE_ARRAY [COMPLEX]` if there is no total order relation on `COMPLEX`. + +To cover such cases, declare the class as + +class SORTABLE_ARRAY [G -> COMPARABLE] + +making it '''constrained generic'''. The symbol `->` recalls the arrow of inheritance diagrams; what follows it is a type, known as the generic constraint. Such a declaration means that: + +Within the class, you may apply the features of the generic constraint -- here the features of `COMPARABLE`: infix "<", `infix ">"` etc. -- to expressions of type `G`. + +A generic derivation is only valid if the chosen actual generic parameter conforms to the constraint. Here you can use `SORTABLE_ARRAY [INTEGER]` since `INTEGER` inherits from `COMPARABLE`, but not `SORTABLE_ARRAY [COMPLEX]` if `COMPLEX` is not a descendant of `COMPARABLE`. + +A class can have a mix of constrained and unconstrained generic parameters, as in the EiffelBase class `HASH_TABLE [G, H -> HASHABLE]` whose first parameter represents the types of objects stored in a hash table, the second representing the types of the keys used to store them, which must be `HASHABLE`. As these examples suggest, structural property classes such as `COMPARABLE`, `NUMERIC` and `HASHABLE` are the most common choice for generic constraints. + +Unconstrained genericity, as in `C [G]`, is defined as equivalent to `C [G -> ANY]`. + +==Assignment attempt== + +{{Caution|As of version 7.1, the assignment attempt has been marked as obsolete. Use the object test (described [[ET: Inheritance#Object test|below]] in a variant of this same discussion) instead. The documentation for the assignment attempt will remain during a period of transition, but will be removed at some point in the future. }} + +The Type Conformance rule ( [[ET: Inheritance#Polymorphism|"Polymorphism"]] ) ensures type safety by requiring all assignments to be from a more specific source to a more general target. + +Sometimes you can't be sure of the source object's type. This happens for example when the object comes from the outside -- a file, a database, a network. The persistence storage mechanism( [[ET: The Dynamic Structure: Execution Model#Deep_operations_and_persistence|"Deep operations and persistence"]] ) includes, along with the procedure `store` seen there, the reverse operation, a function `retrieved` which yields an object structure retrieved from a file or network, to which it was sent using `store`. But `retrieved` as declared in the corresponding class `STORABLE` of EiffelBase can only return the most general type, `ANY`; it is not possible to know its exact type until execution time, since the corresponding objects are not under the control of the retrieving system, and might even have been corrupted by some external agent. + +In such cases you cannot trust the declared type but must check it against the type of an actual run-time object. Eiffel introduces for this purpose the '''assignment attempt''' operation, written + + x ?= y + + +with the following effect (only applicable if `x` is a writable entity of reference type): + +If `y` is attached, at the time of the instruction's execution to an object whose type conforms to the type of `x`, perform a normal reference assignment. + +Otherwise (if `y` is void, or attached to a non-conforming object), make `x` void. + +Using this mechanism, a typical object structure retrieval will be of the form + + x ?= retrieved + + if x = Void then + "We did not get what we expected" + else + "Proceed with normal computation, which will typically involve calls of the form x.some_feature " + end + + +As another application, assume we have a `LIST [ACCOUNT]` and class `SAVINGS_ACCOUNT`, a descendant of `ACCOUNT`, has a feature `interest_rate` which was not in `ACCOUNT`. We want to find the maximum interest rate for savings accounts in the list. Assignment attempt easily solves the problem: + + local + s: SAVINGS_ACCOUNT + do + from account_list.start until account_list.after loop + s ?= acc_list.item + -- item from LIST yields the element at + -- cursor position + if s /= Void and then s.interest_rate > Result then + -- Using and then (rather than and) guarantees + -- that s.interest_rate is not evaluated + -- if s = Void is true. + Result := s.interest_rate + end + account_list.forth + end + end + + +Note that if there is no savings account at all in the list the assignment attempt will always yield void, so that the result of the function will be 0, the default initialization. + +Assignment attempt is useful in the cases cited -- access to external objects beyond the software's own control, and access to specific properties in a polymorphic data structure. The form of the instruction precisely serves these purposes; not being a general type comparison, but only a verification of a specific expected type, it does not carry the risk of encouraging developers to revert to multi-branch instruction structures, for which Eiffel provides the far preferable alternative of polymorphic, dynamically-bound feature calls. + + +==Object test== + +The Type Conformance rule ( [[ET: Inheritance#Polymorphism|"Polymorphism"]] ) ensures type safety by requiring all assignments to be from a more specific source to a more general target. + +Sometimes you can't be sure of the source object's type. This happens for example when the object comes from the outside -- a file, a database, a network. The persistence storage mechanism( [[ET: The Dynamic Structure: Execution Model#Deep_operations_and_persistence|"Deep operations and persistence"]] ) includes, along with the procedure `store` seen there, the reverse operation, a function `retrieved` which yields an object structure retrieved from a file or network, to which it was sent using `store`. But `retrieved` as declared in the corresponding class `STORABLE` of EiffelBase can only return the most general type, `ANY`; it is not possible to know its exact type until execution time, since the corresponding objects are not under the control of the retrieving system, and might even have been corrupted by some external agent. + +In such cases you cannot trust the declared type but must check it against the type of an actual run-time object. Eiffel introduces for this purpose the '''object test''' operation, using a form of the [[Void-safety: Background, definition, and tools#The attached syntax (object test)|attached syntax]]. The complete attached syntax is: + + attached {SOME_TYPE} exp as l_exp + + +and is a boolean-valued expression. So we can use the attached syntax as an object test. A typical object structure retrieval will be of the form + + if attached retrieved as l_temp then +-- We got what we expected +-- Proceed with normal computation, typically involving calls of the form l_temp.some_feature + else +-- We did not get what we expected" + end + + +The expression `attached retrieved as l_temp` tests `retrieved` for voidness. If `retrieved` is not void, that is, `retrieved` is currently attached to an object, then a fresh local entity `l_temp` is created, the object is attached to `l_temp`, and the value of the expression is `True`. If `retrieved` is void, then the value of the expression is `False`. + + +As another application, assume we have a `LIST [ACCOUNT]` and class `SAVINGS_ACCOUNT`, a descendant of `ACCOUNT`, has a feature `interest_rate` which was not in `ACCOUNT`. We want to find the maximum interest rate for savings accounts in the list. Object test easily solves the problem: + + do + from account_list.start until account_list.after loop + if attached {SAVINGS_ACCOUNT} account_list.item as l_s and then l_s.interest_rate > Result then + -- Using and then (rather than and) guarantees + -- that l_s.interest_rate is not evaluated + -- if `attached {SAVINGS_ACCOUNT} account_list.item as l_s' is False. + Result := l_s.interest_rate + end + account_list.forth + end + end + + +Note that if there is no savings account at all in the list the object test will never be satisfied, so that the result of the function will be 0, the default initialization. + +The object test is useful also in building [[Void-safe programming in Eiffel|void-safe software systems]]. + +{{SeeAlso|[[Creating a new void-safe project#More about the attached syntax|More about the attached syntax]] in the section on [[Void-safe programming in Eiffel]]. }} + + +==Covariance, anchored declarations, and "catcalls"== + +The final properties of Eiffel inheritance involve the rules for adapting not only the implementation of inherited features (through redeclaration of either kind, effecting and redefinition, as seen so far) and their contracts (through the Assertion Redeclaration rule), but also their types. More general than type is the notion of a feature's '''signature''', defined by the number of its arguments, their types, the indication of whether it has a result (that is to say, is a function or attribute rather than a procedure) and, if so, the type of the result. + +===Covariance=== + +In many cases the signature of a redeclared feature remains the same as the original's. But in some cases you may want to adapt it to the new class. Assume for example that class `ACCOUNT` has features + + owner: HOLDER + + set_owner (h: HOLDER) + -- Make `h' the account owner. + require + not_void: h /= Void + do + owner := h + end + + +We introduce an heir `BUSINESS_ACCOUNT` of `ACCOUNT` to represent special business accounts, corresponding to class `BUSINESS` inheriting from `HOLDER`: + +[[Image:tutorial-14]] + +Clearly, we must redefine `owner` in class `BUSINESS_ACCOUNT` to yield a result of type `BUSINESS`; the same signature redefinition must be applied to the argument of `set_owner`. This case is typical of the general scheme of signature redefinition: in a descendant, you may need to redefine both results and arguments to types conforming to the originals. This is reflected by a language rule: + + +{{rule|name=Covariance|text=In a feature redeclaration, both the result type if the feature is a query (attribute or function) and the type of any argument if it is a routine (procedure or function) must conform to the original type as declared in the precursor version. }} + + +The term "covariance" reflects the property that all types -- those of arguments and those of results -- vary together in the same direction as the inheritance structure. + +If a feature such as `set_owner` has to be redefined for more than its signature -- to update its implementation or assertions -- the signature redefinition will be explicit. For example `set_owner` could do more for business owners than it does for ordinary owners. Then the redefinition will be of the form + + set_owner (b: BUSINESS) + -- Make b the account owner. + do + ... New routine body ... + end + + +====Anchored Declarations==== + +In other cases, however, the body will be exactly the same as in the precursor. Then explicit redefinition would be tedious, implying much text duplication. The mechanism of '''anchored redeclaration''' solves this problem. The original declaration of `set_owner` in `ACCOUNT` should be of the form + + set_owner (h: like owner) + -- Make h the account owner. + -- The rest as before: + require + not_void: h /= Void + do + owner := h + end + + +A `like` ''anchor'' type, known as an anchored type, may appear in any context in which ''anchor'' has a well-defined type; that is, ''anchor'' can be an attribute or function of the enclosing class. Then, assuming `T` is the type of ''anchor'', the type `like` ''anchor'' means the following: + +In the class in which it appears, `like` ''anchor'' means the same as `T`. For example, in `set_owner` above, the declaration of `h` has the same effect as if `h` had been declared of type `HOLDER`, the type of the anchor `owner` in class `ACCOUNT`. + +The difference comes in proper descendants: if a type redefinition changes the type of ''anchor'', any entity declared `like` ''anchor'' will be considered to have been redefined too. + +This means that anchored declarations are a form of of implicit covariant redeclaration. + +In the example, class `BUSINESS_ACCOUNT` only needs to redefine the type of `owner` (to `BUSINESS`). It doesn't have to redefine `set_owner` except if it needs to change its implementation or assertions. + +It is possible to use `Current` as anchor; the declaration `like Current` denotes a type based on the current class (with the same generic parameters if any). This is in fact a common case; we saw in [[ET: Inheritance#Structural_property_classes|"Structural property classes"]] , that it applies in class `COMPARABLE` to features such as + + is_less alias "<" (other: like Current): BOOLEAN ... + + +since we only want to compare two comparable elements of compatible types -- but not, for example, integer and strings, even if both types conform to `COMPARABLE`. (A "balancing rule" makes it possible, however, to mix the various arithmetic types, consistently with mathematical traditions, in arithmetic expressions such as `3 + 45.82` or boolean expressions such as 3 < 45.82.) + +Similarly, class `ANY` declares procedure `copy` as + + copy (other: like Current) ... + + +with the argument anchored to the current object. + +A final, more application-oriented example of anchoring to `Current` is the feature `merge` posited in an earlier example (in [[ET: The Dynamic Structure: Execution Model|"The Dynamic Structure: Execution Model"]] ) with the signature `merge (other: ACCOUNT)`. By using instead `merge (other: like Current)` we can ensure that in any descendant class -- `BUSINESS_ACCOUNT`, `SAVINGS_ACCOUNT`, `MINOR_ACCOUNT` ... -- an account will only be mergeable with another of a compatible type. + +====Qualified Anchored Declarations==== + +The anchored types shown above specify anchors which are either: +* The name of a query of the class in which the anchored declaration appears +** as in the case of: `set_owner (h: like owner)` or +* `Current` +** as in the case of: is_less alias "<" (other: like Current): BOOLEAN. + +Declarations can also use '''qualified''' anchored types. Consider this possible feature of `ACCOUNT`: + + + owner_name: like owner.name + + +Here the type of `owner_name` is determined as the type of the feature `name` as applied to the type of the feature `owner` of the current class. As you can imagine, for declarations like this to be valid, the feature names `name` and `owner` must be the names queries, i. e., the names of attributes or functions. + +This notion can be extended to declare the type through multiple levels of remoteness, so patterns like the following can be valid: + + + f: like a.b.c.d + + +For example if a class used a list of items of type `ACCOUNT`, it might include a declaration for that list: + + + all_accounts: LINKED_LIST [ACCOUNT] + -- All my accounts + + +This class could declare a feature with a qualified anchored type like this: + + + account_owner_name: like all_accounts.item.owner.name + + +A qualified anchored type can be qualified also by specifying a type for the qualifier: + + + owner_name: like {HOLDER}.name + + +In this case, the type of `owner_name` is the same as the type of the `name` feature of type `HOLDER`. + +Anchored declarations serve as another way to make software more concise and more resilient in a changing world. Let's look at one last example of using a qualified anchored type: + + + a: ARRAY [DATA] + ... + local + idx: like a.lower + do + from + idx := a.lower + until + idx > a.upper + + ... + + +Declaring the local entity `idx` as the qualified anchored type `like a.lower` puts this code (well, actually the producer of this code) in the enviable position of never having to worry about what type is used by class `ARRAY` for its feature `lower`. So, `{ARRAY}.lower` could be implemented as `INTEGER_32`, `NATURAL_64`, or some other similar type and this code would be fine, even if at some point that type changed. + +===Catcalls=== + +In our diversion about anchored declarations, we've gotten away from our discussion of covariance. Let's continue that now with a look at a side effect of covariance known as the '''catcall'''. + +Covariance makes static type checking more delicate; mechanisms of '''system validity''' and '''catcalls''' address the problem, discussed in detail in the book [[Object-Oriented Software Construction, 2nd Edition]]. + +The capabilities of polymorphism combined with covariance provide for powerful and flexible modeling. Under certain conditions, though, this flexibility can lead to problems. + +In short, you should be careful to avoid polymorphic '''catcalls'''. The '''call''' part of '''catcall''' means feature call. The '''cat''' part is an acronym for '''C'''hanged '''A'''vailability or '''T'''ype. What is changing here are features of descendant classes through the adaptation of inheritance. So maybe a descendant class has changed the export status of an inherited feature, so that that feature is not available on instances of the descendant class ... this is the case of '''changed availability'''. Or perhaps, through covariant modeling, the type of an argument to a feature in a descendant class has changed ... the case of '''changed type'''. + +Let's look at an example of changed type, due to covariant modeling. Suppose we have a system which uses the classes depicted on the following diagram: + +[[Image:Catcall example class diagram]] + +If in a client class, we declare the following attributes: + + + my_animal: ANIMAL + my_food_stuff: FOOD_STUFF + + +Also, the class `ANIMAL` contains the feature: + + eat (a_f: FOOD_STUFF) + -- Consume `a_f' + deferred + end + +This routine is implemented in `COW` as: + + eat (a_f: GRASS) + +and in class `LION` as: + + eat (a_f: WILDEBEEST_FILET) + + +So, covariant modeling is used to make the type of the argument for `eat` appropriate for each of `ANIMAL`'s heirs. + +Here's where the problem comes in. It is possible at run-time to attach to `my_animal` a direct instance of either `COW` or `LION`. So, `my_animal` is a polymorphic attribute. Likewise, it is possible at run-time that `my_food_stuff` could be attached to a direct instance of either `GRASS` or `WILDEBEEST_FILET`. + +So, the feature call: + + my_animal.eat (my_food_stuff) + +is a '''catcall''', because there is a possibility that through the changing type of the argument to `eat`, we could be causing a `COW` to engage in the inappropriate practice of eating a `WILDEBEEST_FILET`. + +Because this possibility exists, developers should exercise caution in using polymorphism and covariant modeling. + +In version 6.2 of EiffelStudio, a capability was added to detect harmful catcalls at runtime. So, in our example, if we used `my_animal.eat (my_food_stuff)` only to feed grass to cows and wildebeest filets to lions, then all would be well. But if we attempted to use that same call to feed an inappropriate food to an animal, we would see an exception. + +Likewise the compiler in EiffelStudio will produce warnings in cases in which catcalls are possible. Below is an example of the compiler warning issued on the example. + +[[Image:Catcall compiler warning]] + + + +==Non-conforming inheritance== + +So far, our experience with inheritance is that of "conforming" inheritance ... the most commonly used type of inheritance. Conforming inheritance is what allows a direct instance (in the '''catcall''' example above) of `COW` to be attached at runtime to an entity of type `ANIMAL`. This can be a powerful modeling capability, but it is this same polymorphism facilitated by conforming inheritance that puts us in the danger of using polymorphic '''catcalls'''. + +In cases in which polymorphic attachment is not anticipated, the possibility of catcalls can be avoided by using '''non-conforming inheritance'''. Non-conforming inheritance is just a more restrictive form of inheritance. + + +:'''Non-conforming inheritance allows features to be inherited from parent to heir, but it disallows polymorphic attachment of a direct instance of an heir to an entity based on a non-conforming parent.''' + + +In order to use non-conforming inheritance for a particular parent, we use the marker `{NONE}` in the appropriate inheritance part of the class: + + +class + MY_HEIR_CLASS + +inherit + MY_CONFORMING_PARENT + +inherit {NONE} + MY_NON_CONFORMING_PARENT + ... + + +Here there are two `inherit` clauses, one to specify conforming parents, and one to specify non-conforming parents. The clause specifying the conforming inheritance must precede the one specifying the non-conforming inheritance. + + +{{note|According to the Eiffel programming language [http://www.ecma-international.org/publications/standards/Ecma-367.htm standard], it is possible to have any number of inherit clauses an any order, however EiffelStudio versions as late as 6.5 allow only one conforming and one non-conforming clause, with the conforming clause preceding the non-conforming one. This restriction will be removed in a future release.}} + + +So, in this case, at runtime it is valid for a direct instance of `MY_HEIR_CLASS` to be attached to an entity of type `MY_CONFORMING_PARENT`, but not to an entity of type `MY_NON_CONFORMING_PARENT`. Accordingly, the compiler would reject any code in which an instance of `MY_HEIR_CLASS` could become attached to an entity of type `MY_NON_CONFORMING_PARENT`. Because the polymorphic attachment cannot be made, the possibility of a catcall is avoided. + + +{{note|As implemented, non-conforming inheritance mimics a copy/paste operation in which the features of the parent class are copied to the non-conforming heir class with no inheritance linkage maintained. You should keep this fact in mind when using non-conforming inheritance. In particular, `once` routines are replicated as unrelated features in the heir classes, so they share neither freshness status nor computed value (in the case of functions). Thus, a once function that comes from a non-conforming parent yields a result that is not related to the one returned by the parent's version.}} + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-instructions.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-instructions.wiki new file mode 100644 index 00000000..65b4a617 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-instructions.wiki @@ -0,0 +1,410 @@ +[[Property:modification_date|Tue, 10 Sep 2019 21:54:55 GMT]] +[[Property:publication_date|Tue, 10 Sep 2019 21:54:55 GMT]] +[[Property:title|ET: Instructions]] +[[Property:weight|-6]] +[[Property:uuid|628bf3db-728f-0b3c-bdbb-fe52deaae5b7]] +==Instructions== + +Eiffel has a remarkably small set of instructions. The basic computational instructions have been seen: creation, assignment, procedure call, retry. They are complemented by control structures: conditional, multi-branch, loop, as well as debug and check. + +===Assignment and attachment=== + +As noted above we have already introduced assignment. But let's take another look at the assignment in the context of the more abstract concept of '''attachment'''. Attachment can occur with reference types by assignment such as: + + x := y + +In this assignment, x is the target of the assignment and y is the source. The object associated with y becomes ''attached'' to the entity x. + +Attachment also occurs in other contexts. For example, when actual arguments are substituted for formal arguments in a call to a routine. + + f (w) + +In the call to f above, the object associated with the actual argument w will be ''attached'' to the formal argument for the duration of the execution of f. So, in this case, w can be viewed as the source of the attachment and the formal argument of f is the target. + +Other situations in which attachment occurs include [[ET: The Dynamic Structure: Execution Model#Creating and initializing objects|creation instructions]], attachment of [[Void-safety: Background, definition, and tools#The attached syntax (object test)|object test local variables]], and the attachment of local iteration cursors in the iteration form of the [[ET: Instructions#Loop|loop construct]]. + +We learned in the section on [[ET: Inheritance#Polymorphism|polymorphism]], that the type of the source of an assignment must conform to the type of the assignment's target. + +The rule that governs validity of assignments expands upon this and is generalized to apply to all attachments. + + +{{Rule|name=Assignment|text=An assignment is valid if and only if the type of its source expression is '''compatible''' with the type of its target entity. }} + + +The phrase "'''compatible with'''" in this rule means that either it "'''conforms to'''" or "'''converts to'''". + +We saw conformance defined in the section on [[ET: Inheritance#Polymorphism|Polymorphism]]. [[ET: Other Mechanisms#Convertibility|Convertibility]] is explained in the section on [[ET: Other Mechanisms#Convertibility|Other Mechanisms]]. + + +===Conditional=== + +A conditional instruction has the form + + if ... then + ... + elseif ... then + ... + else + ... + end + +The elseif ... then ... part (of which there may be more than one) and the else ... part are optional. After if and elseif comes a boolean expression; after then and else come zero or more instructions. + +===Multi-branch=== + +A multi-branch instruction has the form + + inspect + exp + when v1 then + inst + when v2 then + inst2 + ... + else + inst0 + end + + +where the else inst0 part is optional, exp is a character or integer expression, v1, v1, ... are constant values of the same type as exp, all different, and inst0, inst1, inst2, ... are sequences of zero or more instructions. + +The effect of such a multi-branch instruction, if the value of exp is one of the vi, is to execute the corresponding insti. If none of the vi matches, the instruction executes inst0, unless there is no else part, in which case it triggers an exception. + +{{note|Raising an exception is the proper behavior, since the absence of an else indicates that the author asserts that one of the values will match. If you want an instruction that does nothing in this case, rather than cause an exception, use an else part with an empty inst0. In contrast, if c then inst end with no else part does nothing in the absence of an else part, since in this case there is no implied claim that c must hold. }} + +===Loop=== + +The loop construct provides a flexible framework for iterative computation. Its flexibility lies in how the complete form can be tailored and simplified for certain purposes by including or omitting optional parts. + +You'll learn that the loop construct is always used in one of two forms: a '''base''' form which allows precise control over details of all loop aspects, and an '''iteration''' form which abstracts many of the details and provides a concise notation, ideal for traversing data structures and other objects which support iteration. + +We will explore the entire mechanism, but let's approach things a little at a time. + +====Two forms -- two examples==== + +First let's take a look at two examples. These examples accomplish the same goal: they both use a loop to visit and print the content of each node of a linked list of character strings. So, the list in question might be declared like this: + + + my_list: LINKED_LIST [STRING] + + +Here's one example: + + + from + my_list.start + until + my_list.off + loop + print (my_list.item) + my_list.forth + end + +''Loop example 1.'' + + +and the other: + + + across my_list as ic loop print (ic.item) end + +''Loop example 2.'' + + +At first observation, it may not appear that both of these examples are using the same language construct. But, indeed, they are simply two different forms of a single language construct, as you will see. + +Incidentally, there is no requirement that ''Loop example 1'' occupy multiple lines, and ''Loop example 2'' occupy only one line. ''Loop example 1'' could have been written like this: + + from my_list.start until my_list.off + loop print (my_list.item) my_list.forth end + +just as ''Loop example 2'' could have been written to take multiple lines. It comes down to a matter of balance among traditional style, conciseness, and readability. + +In fact, these two examples illustrate the two basic usage forms of the loop construct in Eiffel. The two basic forms can be differentiated by the parts of the construct with which they begin. + +The form shown in ''Loop example 1'' begins with an ''Initialization part'' ( from my_list.start ), which starts with the keyword from. Let's call this form the '''base''' form. So, the type of loop you see in ''Loop example 1'' has been the traditional mechanism for accomplishing iterative computation, including iterating across data structures. However, extensions to Eiffel's loop construct have provided a more concise way of expressing traversing "iterable" structures. + +This is the form shown in ''Loop example 2''. It begins with an ''Iteration part'' ( across my_list as c ), which starts with the keyword across. We'll call this form the '''iteration''' form. + +====A closer look at the ''base'' form==== + +What is happening in ''Loop example 1''? Let's dissect it and see. + +First there is the ''initialization'' part: + + + from + my_list.start + +''Initialization part.'' + + +The first thing to occur in the execution of the base loop is the execution of any instructions in the initialization part (it is permissible for the initialization part to be empty of instructions, but the keyword from must be present to distinguish the base loop form). In our example, the feature start is applied to my_list which will attempt to set the list cursor to the first element in my_list. + +The ''Exit condition part'': + + + until + my_list.off + +''Exit condition part.'' + + +The exit condition part of the loop construct defines the conditions under which the loop body (explained below) should no longer be executed. In our example, the loop will no longer execute if the cursor is "off", that is, there is no current item. So, if the list is empty, the loop body will not execute at all. + +The ''loop body'' part: + + + loop + print (my_list.item) + my_list.forth + +''loop body part.'' + + +The loop body part contains the sequence of instructions to be executed during each iteration. In the example, that includes printing the current list item and then advancing the cursor. At some point, the cursor will pass the last item in the list, causing the exit condition to become true and stop the loop's execution. So, at the risk of stating the obvious, the key to loops that always complete is to ensure that there is something in the loop body that is guaranteed always to cause the exit condition eventually to become true. Loop correctness will discussed in more detail [[#Loop invariants and variants|later]]. + +And finally, there's the ''End'' part: + + + end + +''end part.'' + + +====A closer look at the ''iteration'' form==== + +Now let's examine the iteration form (sometimes called the "across syntax") used in ''Loop example 2.'' + +The example begins with an iteration part: + + + across my_list as ic + +''Iteration part.'' + + +The iteration form is special in the sense that it is designed to work with objects which are ''iterable'', usually data structures. The iteration form always targets a particular object (usually a data structure) based on a class that inherits, either directly or indirectly from the library class ITERABLE. The iteration part specifies such a target for the iteration, in the case of our example, the target is my_list. + +The "as ic" indicates that a local iteration cursor object referenced by the name ic, and available only for the scope of the iteration, will be created to effect the iteration. The element of my_list which is currently referenced by the cursor ic is accessed through ic.item as you see in the loop body: + + + loop print (ic.item) + +''loop body part''. + + +Notice that the loop body does not contain the call to the structure's forth feature, as our example in base form did. Neither do you see the call to start nor the check of off in the exit condition. The iteration form abstracts these for you, relieving you of their burden ... while eliminating some opportunities for error. + +Notice also that the call "print (ic.item)"" accesses the current item as "ic.item"" versus "my_list.item"" in the base form. This is because in the iteration form, access to the current item is through the cursor variable, "ic" in the case of ''Loop example 2''. + +Concerning cursors, both ways of using the loop construct to traverse a structure employ a cursor. In the base form, the cursor is internal to the structure object. In the case of the example, that would be the instance of LINKED_LIST [STRING] called my_list. Applying the feature item to my_list retrieves the list element currently referenced by the cursor. In the iteration version of traversal, the variable ic holds the iteration cursor, external to the list object. So, you apply ic.item to get the current list element. The advantage to the external cursor is that multiple traversals of the structure can occur simultaneously without interfering with one another. This is possible in the base form, but only by saving and restoring the structure's cursor. + + +{{recommended|The ''iteration'' form of the loop construct is not appropriate for use in cases in which the target structure may be changed during the traversal. Therefore, if you choose to alter the structure during traversal, you must use the ''base'' loop form with explicit cursor manipulation. This is still tricky business, so you should be certain to protect your work with appropriate contracts.}} + + +Lastly, of course, the iteration form includes an ''end part'' ... at the end. + + +====The ''iteration'' form as a boolean expression==== + +In ''Loop example 2'', the loop behaves as an instruction. But it is possible to have the iteration loop form behave as a boolean expression. This is helpful in cases in which you might want to ask a question that can be answered by traversing all or part of a structure. + +To get this effect, you use the iteration form with one of two alternative body notations, the ''all body part'' or the ''some body part'' in place of the ''loop body''. When you use either of these notations, the ''body'' is a boolean expression. So, the forms for these body parts are: + + + all boolean_expression + +''all body part.'' + + + some boolean_expression + +''some body part.'' + + +So, to know if all the strings in my_list have lengths greater than three characters, we could code: + + + across my_list as ic all ic.item.count > 3 end + +''Loop example 3.'' + + +To know if at least one string in my_list has a length greater than three characters, we would use the ''some body part'': + + + across my_list as ic some ic.item.count > 3 end + +''Loop example 4.'' + +Of course you can use iteration loops with "all" or "some" bodies in the same way that you would any other boolean expression; in [[#Conditional|conditionals]], for example. + + +====Loop anatomy and rules for constructing loops==== + +Now that we've seen examples of the two forms of loops and broken down their component parts, we're ready to examine the anatomy of the entire construct in more detail. You may remember from the beginning of this discussion that the flexibility of the loop construct lies in its ability to use or omit its various parts to gain certain effects. + +Here are all the possible loop parts, most of which we've seen in examples, in the order in which they must appear when we code them: + + +{| border="2" cellpadding="8" +! This loop part: +! Has this pattern: +|- +| ''Iteration part'' || across expression as identifier +|- +| ''Initialization part'' || from zero_or_more_instructions +|- +| ''Invariant part'' || invariant assertion +|- +| ''Exit condition part'' || until boolean_expression +|- +| rowspan="3" | ''Body part'' || loop ''zero_or_more_instructions '' '''or''' +|- +| all ''boolean_expression'' '''or''' +|- +| some ''boolean_expression'' +|- +| ''Variant part'' || variant optional_tag: integer_expression +|- +| ''end part'' || end +|} + + +Apart from seeing examples, it is useful to understand some of the rules of constructing loops from these parts. Here's an informal summary of what you should know about putting together valid loops: + +# Any loop parts being used must appear in the order shown in the table above. +# Every loop used will assume one of the two forms mentioned early. As a result, every loop will begin either with the across keyword (''iteration'' form) or the from keyword (''base'' form). +# A ''Body part'' and an ''End part'' are both required for every loop. +## ''Body parts'' using either the all keyword or the some keyword are only allowed in the absence of an ''initialization part''. +# An ''exit condition part'' is required for all loops of ''base'' form. +# The expression you use in an ''iteration'' part, must have a type that is based on a class that inherits from the library class ITERABLE. +# The identifier you choose for the internal cursor used in loops of the ''iteration'' form shouldn't be the same as another identifier you are using. + +There are implications of these rules that are worth understanding. Let's look at some of them. + +Consider that all parts must appear in order (1) and that every loop starts with one of two keywords: either across or from (2). Taken together, these imply that it would be invalid for a loop in ''base'' form to include an ''iteration part''. However, the opposite is not true. Because the ''initialization part'' falls after the ''iteration part'' it is possible for a loop in ''iteration'' form to contain an ''initialization'' part. Imagine for example, that we wanted to compute the sum of the number of characters in all elements of the list of strings in our examples. The ''initialization'' part could be used to initialize the sum entity before starting the iteration: + + across + my_list as ic + from + sum := 0 + loop + sum := sum + ic.item.count + end + + +Loops of the ''base'' form require an ''exit condition part'' (4). This allows the possibility that ''Iteration'' loops ''may'' contain an ''exit condition part''. Indeed they may, but it is not required. Using an ''exit condition part'' in a loop of the ''iteration'' can be useful if you want to impose an early exit condition on an iteration. So, extending the previous example, if we wanted to sum the length of elements, but only until we reached an element whose content matched a certain criterion, we could add the ''exit condition part'': + + across + my_list as ic + from + sum := 0 + until + ic.item ~ "Stop now" + loop + sum := sum + ic.item.count + end + + +For loops of the ''iteration'' form, types of iteration targets must be based on classes inheriting from ITERABLE (5). What classes meet this criterion? All the appropriate classes in the EiffelBase library: lists, hash tables, arrays, intervals, etc. Although the details are beyond the scope of this tutorial, you also should recognize the implication that your own classes could be made iterable. + +One useful descendant of ITERABLE is the integer interval. The general operator "|..|" provides a concise way of creating the interval between two integers. So, you can use this to loop across a range of integers without a lot of setup. This example: + + across + 5 |..| 15 as ic + loop + print (ic.item.out+"%N") + end + +prints the integers in the interval 5 through 15. + +Also descending from ITERABLE are the iteration cursors themselves. This means that a cursor can be the target of a loop of the ''iteration'' form. Consider this example that prints the items in my_list in reverse order: + + across + my_list.new_cursor.reversed as ic + loop + print (ic.item) + end + +Here the feature new_cursor is applied to my_list. The result is a new iteration cursor for traversing my_list. Then the reversed feature is applied to that result, which itself results in an iteration cursor having the order of the elements reversed. It is this cursor that is used for ic in the traversal. + + +====Loop invariants and variants==== + +The only loop parts that we have yet to address are the ''invariant part'' and the ''variant part''. These two optional loop parts exist to help guarantee the correctness of loops. The ''invariant part'' expresses a loop invariant (not to be confused with [[ET: Design by Contract (tm), Assertions and Exceptions#Class invariants|class invariants]]). For the loop to be correct, the instructions in ''initialization part'' must ensure that the loop invariant assertion is true, and then every execution of the loop body must preserve the invariant; so the effect of the loop is to yield a state, eventually, in which both the loop invariant and the exit condition are true. + +The loop must terminate after a finite number of iterations, of course. This can be guaranteed by including the loop ''variant part''. The ''variant part'' provides an integer expression whose value is non-negative after the execution of the instructions in the ''initialization part''. The value of the variant is then decreased by at least one, while remaining non-negative, by any execution of the loop body. Because a non-negative integer cannot be decreased forever, this guarantees that the loop will terminate. + +When assertion monitoring is enabled for loop invariants and variants, the integrity of these properties is checked after initialization and after each loop iteration. An exception will be triggered if the loop invariant does not hold, or if the variant either becomes negative or does not decrease. + + +===Debug=== + +An occasionally useful instruction is debug (''Debug_key'', ... ) ''instructions'' end where ''instructions'' is a sequence of zero or more instructions and the part in parentheses is optional, containing if present one or more strings, called debug keys. The EiffelStudio compiler lets you specify the corresponding debug compilation option: yes, no, or an explicit debug key. The ''instructions'' will be executed if and only if the corresponding option is on. The obvious use is for instructions that should be part of the system but executed only in some circumstances, for example to provide extra debugging information. + +===Check=== + +The final instruction is connected with Design by Contract™. The instruction + + check + Assertion + end +where Assertion is a sequence of zero or more assertions, will have no effect unless assertion monitoring is turned on at the Check level or higher. If so it will evaluate all the assertions listed, having no further effect if they are all satisfied; if any one of them does not hold, the instruction will trigger an exception. + +This instruction serves to state properties that are expected to be satisfied at some stages of the computation -- other than the specific stages, such as routine entry and exit, already covered by the other assertion mechanisms such as preconditions, postconditions and invariants. A recommended use of check involves calling a routine with a precondition, where the call, for good reason, does not explicitly test for the precondition. Consider a routine of the form + + r (a_count: INTEGER) + require + valid_count: a_count >= minimum_allowable + do + ... + end + + +This routine will only work if its precondition is satisfied on entry. To guarantee this precondition, the caller may protect it by the corresponding test, as in + + if my_count >= a.minimum_allowable then + a.r (my_count) + end + + +In effect, this says that if the value of my_count meets r's precondition requirement, then call r, otherwise continue execution. This implies that there is something useful to be done in the case that the call to r could not be executed because the value of my_count did not meet the precondition. + +But suppose that due to previous processing, it is reasonably expected that my_count should always have a value that complies with r's precondition. In other words, it would always be expected that the call to r should proceed without failure. In this case it might be a good idea to use a check to document this property, + + check + my_count_is_large_enough: my_count >= a.minimum_allowable + -- Should always be large enough because ... + end + +if only to make sure that a reader of the code will realize that the omission of an explicit test was not a mistake. + +In production (finalized) mode, when assertion monitoring is typically turned off, this instruction will have no effect. But it will be precious for a maintainer of the software who is trying to figure out what it does, and in the process to reconstruct the original developer's reasoning. (The maintainer might of course be the same person as the developer, six months later.) And if the rationale is wrong somewhere, turning assertion checking on will immediately uncover the bug. + +There is, however, one form of check that continues to be monitored even when assertion monitoring is turned off. + + check Assertion then + Compound + end + +Here Assertion is a list of assertions as above, and Compound is a list of zero or more executable instructions. + +This variant is used often when ensuring [[Void-safe programming in Eiffel|void-safety]]. It is used make certain that certain detachable entities are actually attached to objects when expected, and to create a new void-safe scope for accessing the objects. For example: + + check attached my_detachable as l_temp then + l_temp.do_something + end + +In cases in which my_detachable is attached to an object (as is expected), the local entity l_temp will allow controlled access to the object during the scope of the check instruction. If a case occurs in which my_detachable is not attached to an object, then an exception is triggered. As noted above, for this variant of check, assertion monitoring is always in effect, even if it has been turned off for other cases. + +So, the form check ... then ... end is somewhat similar to if ... then ... end. The difference is that the if ... then ... end allows the possibility that valid cases might occur in which the boolean expression is not true, and processing continues. The check ... then ... end does not allow such a possibility. The boolean expression is expected always to hold. In fact, if the expression is not true, then like other assertion violations, this is indicative of a bug, and will cause an exception to be raised. + + +{{recommended|An extra indentation of the check part to separate it from the algorithm proper; and inclusion of a comment listing the rationale behind the developer's decision not to check explicitly for the precondition. }} + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-learn-more.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-learn-more.wiki new file mode 100644 index 00000000..4318f047 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-learn-more.wiki @@ -0,0 +1,15 @@ +[[Property:title|ET: To Learn More]] +[[Property:weight|-1]] +[[Property:uuid|74a5c826-8f21-8cf2-4f2c-dee4ee28ead5]] +Beyond this introduction, you will find the following books essential to a mastery of the method and language:
+* [[Touch of class: Learning to Program Well with Objects and Contracts]], Bertrand Meyer, Springer-Verlag, 2009. A modern guide to developing durable skills for software professionals. +* [[Object-Oriented Software Construction, 2nd Edition]], Bertrand Meyer, Prentice Hall, 2nd edition 1997. (Be sure to get the second edition.) About object technology in general; presents the method behind Eiffel. +* [[Eiffel: The Language]], Bertrand Meyer, Prentice Hall, 1992. Language manual and reference. + + + + + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-lexical-conventions-and-style-rules.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-lexical-conventions-and-style-rules.wiki new file mode 100644 index 00000000..3a801bcb --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-lexical-conventions-and-style-rules.wiki @@ -0,0 +1,107 @@ +[[Property:title|ET: Lexical Conventions and Style Rules]] +[[Property:weight|-2]] +[[Property:uuid|60fdf029-8626-166d-cc4f-9069aacdda7f]] +Eiffel software texts are free-format: distribution into lines is not semantically significant, and any number of successive space and line-return characters is equivalent to just one space. The style rules suggest indenting software texts as illustrated by the examples in this chapter. + +Successive declarations or instructions may be separated by semicolons. Eiffel's syntax has been so designed, however, that (except in rare cases) '''the semicolon is optional'''. Omitting semicolons for elements appearing on separate lines lightens text and is the recommended practice since semicolons, as used by most programming languages, just obscure the text by distracting attention from the actual contents. Do use semicolons if you occasionally include successive elements on a single line. + +56 names -- all unabbreviated single English words, except for elseif which is made of two words -- are reserved, meaning that you cannot use them to declare new entities. Here is the list: + + +{| border="1" +|- +| agent +| alias +| all +| and +| as +| assign +| check +|- +| class +| convert +| create +| Current +| debug +| deferred +| do +|- +| else +| elseif +| end +| ensure +| expanded +| export +| external +|- +| False +| feature +| from +| frozen +| if +| implies +| indexing +|- +| infix +| inherit +| inspect +| invariant +| is +| like +| local +|- +| loop +| not +| obsolete +| old +| once +| or +| prefix +|- +| Precursor +| pure +| redefine +| reference +| rename +| require +| rescue +|- +| Result +| retry +| separate +| then +| True +| TUPLE +| undefine +|} + + +Since this tutorial has covered all the essential mechanisms, you may ignore the keywords not encountered; they are reserved for future use. + +Most of the reserved words are keywords, serving only as syntactic markers, and written in boldface in typeset texts such as the present one: class, feature, inherit. The others, such as Current, directly carry a semantic denotation; they start with an upper-case letter and are typeset in boldface. + +These conventions about letter case are only style rules. Eiffel is case-insensitive, since it is foolish to assume that two identifiers denote two different things just on the basis of a letter written in lower or upper case. The obvious exception is manifest character constants (appearing in single quotes, such as 'A') and manifest character strings (appearing in double quotes, such as "UPPER and lower"). + +The style rules, however, are precise, and any serious Eiffel project will enforce them; the tools of EiffelStudio also observe them in the texts they output (although they will not mess up with your source text unless you ask them to reformat it). Here are the conventions, illustrated by the examples of this tutorial: +* Class names in upper case, as ACCOUNT. +* Non-constant feature names and keywords in lower case, as balance and class. +* Constant features and predefined entities and expressions with an initial upper case, as Avogadro and Result. + +In typeset documents including Eiffel texts, the standard for font styles is also precise. You should use bold face for keywords and italics for all other Eiffel elements. Comments, however, are typeset in roman. This lets a software element, such as an identifier, stand out clearly in what is otherwise a comment text expressed in English or another human language, as in the earlier example + + -- Add `sum' to account. + + +which makes clear that sum is a software element, not the English word. + +There is also an Eiffel style to the choice of identifiers. For features, stay away from abbreviations and use full words. In multi-word identifiers, separate the constituents by underscores, as in LINKED_LIST and set_owner. The competing style of no separation but mid-identifier upper-case, as in linkedList or setOwner, is less readable and not in line with standard Eiffel practices. + +Features of reusable classes should use consistent names. A set of standard names -- put for the basic command to add or replace an element, count for the query that returns the number of element in a structure, item to access an element -- is part of the style rules, and used systematically in EiffelBase. Use them in your classes too. + +For local entities and formal arguments of routines, it is all right to use abbreviated names, since these identifiers only have a local scope, and choosing a loud name would give them too much pretense, leading to potential conflicts with features. + +The complete set of style rules applied by ISE is available on the web in both [http://archive.eiffel.com/doc/manuals/language/style/page.html HTML] and [http://archive.eiffel.com/doc/manuals/language/style/style.pdf PDF] forms. These rules are an integral part of the Eiffel method; in quality software, there is no such thing as a detail. Applying them systematically promotes consistency between projects in the Eiffel world, enhances reusability, and facilitates everyone's work. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-once-routines-and-shared-objects.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-once-routines-and-shared-objects.wiki new file mode 100644 index 00000000..a6659d73 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-once-routines-and-shared-objects.wiki @@ -0,0 +1,91 @@ +[[Property:title|ET: Once routines and shared objects]] +[[Property:weight|-5]] +[[Property:uuid|bc42c52f-c668-6036-9540-55d0f48b05cb]] +==About ''once'' routines== + +The Eiffel's method obsession with extendibility, reusability and maintainability yields, as has been seen, modular and decentralized architectures, where inter-module coupling is limited to the strictly necessary, interfaces are clearly delimited, and all the temptations to introduce obscure dependencies, in particular global variables, have been removed. There is a need, however, to let various components of a system access common objects, without requiring their routines to pass these objects around as arguments (which would only be slightly better than global variables). For example various classes may need to perform output to a common "console window", represented by a shared object. + +Eiffel addresses this need through an original mechanism that also takes care of another important issue, poorly addressed by many design and programming approaches: initialization. The idea is simple: if instead of do the implementation of an effective routine starts with the keyword once, it will only be executed the first time the routine is called during a system execution (or, in a multi-threaded environment, the first time in each thread), regardless of what the caller was. Subsequent calls from the same caller or others will have no effect; if the routine is a function, it will always return the result computed by the first call -- object if an expanded type, reference otherwise. + +In the case of procedures, this provides a convenient initialization mechanism. A delicate problem in the absence of a once mechanism is how to provide the users of a library with a set of routines which they can call in any order, but which all need, to function properly, the guarantee that some context had been properly set up. Asking the library clients to precede the first call with a call to an initialization procedure setup is not only user-unfriendly but silly: in a well-engineered system we will want to check proper set-up in every one of the routines, and report an error if necessary; but then if we were able to detect improper set-up we might as well shut up and set up ourselves (by calling setup). This is not easy, however, since the object on which we call setup must itself be properly initialized, so we are only pushing the problem further. Making setup a once procedure solves it: we can simply include a call + + setup + + +at the beginning of each affected routine; the first one to come in will perform the needed initializations; subsequent calls will have, as desired, no effect. + +Once functions will give us shared objects. A common scheme is + + console: WINDOW + -- Shared console window + once + create Result.make (...) + end + + +Whatever client first calls this function will create the appropriate window and return a reference to it. Subsequent calls, from anywhere in the system, will return that same reference. The simplest way to make this function available to a set of classes is to include it in a class SHARED_STRUCTURES which the classes needing a set of related shared objects will simply inherit. + +For the classes using it, console, although a function, looks very much as if it were an attribute -- only one referring to a shared object. + +The "[[ET: Hello World|Hello World]]" system at the beginning of this discussion used an output instruction of the form io. put_string (some_string). This is another example of the general scheme illustrated by console. Feature io, declared in ANY and hence usable by all classes, is a once function that returns an object of type STANDARD_FILES (another Kernel Library class) providing access to basic input and output features, one of which is procedure put_string. Because basic input and output must all work on the same files, io should clearly be a once function, shared by all classes that need these mechanisms. + +==Adjusting once semantics with "once keys"== + +Sometimes it is helpful to adjust the way that once routines work, and that is done by applying '''once keys'''. For example, in multithreaded mode, it is reasonable most often for once routines to be executed once per ''thread'', versus once per ''process''. Therefore, the default once syntax, as shown in the example above, would behave as once per thread in multithreaded mode. + +Sometimes, however, it is useful in multithreaded mode to create an object which can be shared among threads. To do this, once per process is needed. To create effects like this which are outside the default behavior, we can use once "keys". In following example, a once key is used to specify that the once routine is executed only once per process: + + + shared_object: SOME_TYPE + -- An object that can be shared among threads + -- without being reinitialized. + once ("PROCESS") + create Result.make (...) + end + + +Other valid once keys are "THREAD" and "OBJECT". Of course, "THREAD" ensures that the once routine executes only the first time it is called during the execution of a particular process thread. "OBJECT" is used when it is desirable to have a once routine executed on a once per object basis. + + +{| border="2" +|+ '''How once keys affect once routine execution''' +! Once key ... !! Routine executed the first time it is called ... +|- +| PROCESS || During process execution +|- +| THREAD || During each process thread execution +|- +| OBJECT || By each instance +|} + + +THREAD is the default once key if none is specified (which for single threaded systems will have the same effect as PROCESS). + +The concept of once keys is open ended, so additional keys may become supported in the future to allow even finer grained control of once routine behavior. + +==Once per object internal implementation warning == + +{{warning|As of version 6.6, once per object is implemented using 2 or 3 implementation attributes (these are used to store whether the once routine has already called or not, the eventual exception if any, and the result value if any).

The implementation attributes are named starting with an underscore '_', and if you use the class INTERNAL, the implementation attributes will be included in the field_count, and available through the INTERNAL features.
However this might change in the future, and the implementation attributes might be hidden, so you should not rely on them for your applications.
One last technical detail is that for now a once per object is transient (i.e the associated implementation attributes are [[ET: The Dynamic Structure: Execution Model#Transient attributes|transient]]).
}} + + +==Once routines and exceptions== + +It is possible that during the execution that happens when a once routine is called for the first time, an exception may occur. If this happens, then the '''same exception will be raised on each subsequent''' call to the once routine. + +==Syntax from previous versions== + +The syntax shown above is the current standard syntax. However in Eiffel code written for previous versions, you may run across once keys for multithreaded systems which are expressed in a different syntax. Specifically, the older syntax used a feature's note clause to specify a once key, as in the following example. + + + shared_object: SOME_TYPE + -- Obsolete syntax + -- An object that can be shared among threads + -- without being reinitialized. + note + once_status: global + once + create Result.make (...) + end + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-other-mechanisms.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-other-mechanisms.wiki new file mode 100644 index 00000000..3ccc0d6c --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-other-mechanisms.wiki @@ -0,0 +1,345 @@ +[[Property:modification_date|Tue, 10 Sep 2019 23:07:44 GMT]] +[[Property:publication_date|Tue, 10 Sep 2019 23:07:44 GMT]] +[[Property:title|ET: Other Mechanisms]] +[[Property:weight|-4]] +[[Property:uuid|c0a01664-194c-4e84-0517-8e7c1ca61dec]] +We now examine a few important mechanisms that complement the preceding picture. + + +==Manifest constants== + +Sometimes we want to provide in software text a self-denoting value of a particular type. In Eiffel this is what we call a '''manifest constant'''. For example, if we are searching an indexed structure, we might have an integer variable that we would want to initialize to reference the first item in the structure: + + + my_index := 1 + + +In this case we used a manifest constant, 1, to provide an initial value for my_index. In particular, this is a manifest integer. + +Eiffel also supports [[Eiffel_programming_language_syntax#Manifest_constants|manifest constants]] for real (and double) numbers (ex: 3.1415), boolean values (ex: True, False), and characters (ex: 'A', with [[Eiffel programming language syntax#Special characters|special characters]] expressed using a percent sign as in '%N' for new line, '%B' for backspace, '%"' for double quote, and '%U' for null). + +Manifest constants are also available for strings, using double quotes as in: "Hello world!". As with character constants, special characters are denoted using the % codes. + +===Verbatim strings=== + +You may occasionally have a need for a manifest string that represents a multi-line formatted string. In Eiffel we call this type of manifest string a '''verbatim string''', and there is a special syntax for specifying verbatim strings in Eiffel code. Verbatim strings are either '''aligned''' or '''non-aligned'''. Aligned verbatim strings will automatically be adjusted so that their leftmost line (the line with text characters closest to the left margin) contains no "white space" to the left of the first text character. For non-aligned verbatim strings, the white space is left untouched. You use a slightly different way of specifying each type of string. For example, this aligned verbatim string: + + + my_aligned_string: STRING = + "[ + Thrice hail the still unconquered King of Song! + For all adore and love the Master Art + That reareth his throne in temple of the heart; + And smiteth chords of passion full and strong + Till music sweet allures the sorrowing throng! + ]" + + +will print like this: + + + Thrice hail the still unconquered King of Song! + For all adore and love the Master Art + That reareth his throne in temple of the heart; +And smiteth chords of passion full and strong + Till music sweet allures the sorrowing throng! + + +The same string, declared as a non-aligned verbatim string: + + + my_non_aligned_string: STRING = + "{ + Thrice hail the still unconquered King of Song! + For all adore and love the Master Art + That reareth his throne in temple of the heart; + And smiteth chords of passion full and strong + Till music sweet allures the sorrowing throng! + }" + + +will print like this: + + + Thrice hail the still unconquered King of Song! + For all adore and love the Master Art + That reareth his throne in temple of the heart; + And smiteth chords of passion full and strong + Till music sweet allures the sorrowing throng! + + +The difference in declaration is that the aligned verbatim string uses as its "opener" the double-quote plus bracket combination, " "[ ", and the bracket plus double quote, " ]" ", as its "closer". The non-aligned verbatim string uses braces, " { " and " } " instead of the bracket. + +The syntax for specifying verbatim strings allows an option for the situation in which the specified string might conflict with the "closer". You can include a simple string between the double quote and the bracket on each end of the verbatim string to guarantee uniqueness. Here's our aligned verbatim string with the simple string " *? " inserted in the opener and closer: + + + my_aligned_string: STRING = + "*?[ + Thrice hail the still unconquered King of Song! + For all adore and love the Master Art + That reareth his throne in temple of the heart; + And smiteth chords of passion full and strong + Till music sweet allures the sorrowing throng! + ]*?" + + + +==Constant attributes== + +The attributes studied earlier were variable: each represents a field present in each instance of the class and changeable by its routines. + +It is also possible to declare '''constant attributes''', as in + + Solar_system_planet_count: INTEGER = 8 + + +These will have the same value for every instance and hence do not need to occupy any space in objects at execution time. (In other approaches similar needs would be addressed by symbolic constants, as in Pascal or Ada, or macros, as in C.) + +What comes after the = is a manifest constant. So you can declare a constant attribute for any type for which there is a manifest constant. + + +==Obsolete features and classes== + +One of the conditions for producing truly great reusable software is to recognize that although you should try to get everything right the first time around you won't always succeed. But if "good enough" may be good enough for application software, it's not good enough, in the long term, for reusable software. The aim is to get ever closer to the asymptote of perfection. If you find a better way, you must implement it. The activity of generalization, discussed as part of the lifecycle, doesn't stop at the first release of a reusable library. + +This raises the issue of backward compatibility: how to move forward with a better design, without compromising existing applications that used the previous version? + +The notion of obsolete class and feature helps address this issue. By declaring a feature as obsolete, using the syntax + + enter (i: INTEGER; x: G) + obsolete + "Use ` put (x, i)' instead " + require + ... + do + put (x, i) + end + + +you state that you are now advising against using it, and suggest a replacement through the message that follows the keyword obsolete, a mere string. The obsolete feature is still there, however; using it will cause no other harm than a warning message when someone compiles a system that includes a call to it. Indeed, you don't want to hold a gun to your client authors' forehead (''"Upgrade now or die !"''); but you do want to let them know that there is a new version and that they should upgrade at their leisure. + +Besides routines, you may also mark classes as obsolete. + +The example above is a historical one, involving an early change of interface for the EiffelBase library class ARRAY; the change affected both the feature's name, with a new name ensuring better consistency with other classes, and the order of arguments, again for consistency. It shows the recommended style for using obsolete:
+* In the message following the keyword, explain the recommended replacement. This message will be part of the warning produced by the compiler for a system that includes the obsolete element. +* In the body of the routine, it is usually appropriate, as here, to replace the original implementation by a call to the new version. This may imply a small performance overhead, but simplifies maintenance and avoids errors. + + +It is good discipline not to let obsolete elements linger around for too long. The next major new release, after a suitable grace period, should remove them. + +The design flexibility afforded by the obsolete keyword is critical to ensure the harmonious long-term development of ambitious reusable software. + + +==Creation variants== + +The basic forms of creation instruction, and the one most commonly used, are the two illustrated earlier ( [[ET: The Dynamic Structure: Execution Model#Creating_and_initializing_objects|"Creating and initializing objects"]] ): + + create x.make (2000) + create x + + +the first one if the corresponding class has a create clause, the second one if not. In either form you may include a type name in braces, as in + + create {SAVINGS_ACCOUNT} x.make (2000) + + +which is valid only if the type listed, here SAVINGS_ACCOUNT, conforms to the type of x, assumed here to be ACCOUNT. This avoids introducing a local entity, as in + + local + xs: SAVINGS_ACCOUNT + do + create xs.make (2000) + x := xs + ... + + +and has exactly the same effect. Another variant is the '''creation expression''', which always lists the type, but returns a value instead of being an instruction. It is useful in the following context: + + some_routine (create {ACCOUNT}.make (2000)) + + +which you may again view as an abbreviation for a more verbose form that would need a local entity, using a creation instruction: + + local + x: ACCOUNT + do + create x.make (2000) + some_routine (x) + ... + + +Unlike creation instructions, creation expressions must always list the type explicitly, {ACCOUNT} in the example. They are useful in the case shown: creating an object that only serves as an argument to be passed to a routine. If you need to retain access to the object through an entity, the instruction create x ... is the appropriate construct. + +The creation mechanism gets an extra degree of flexibility through the notion of default_create. The simplest form of creation instruction, create x without an explicit creation procedure, is actually an abbreviation for create x.default_create, where default_create is a procedure defined in class ANY to do nothing. By redefining default_create in one of your classes, you can ensure that create x will take care of non-default initialization (and ensure the invariant if needed). When a class has no create clause, it's considered to have one that lists only default_create. If you want to allow create x as well as the use of some explicit creation procedures, simply list default_create along with these procedures in the create clause. To disallow creation altogether, include an empty create clause, although this technique is seldom needed since most non-creatable classes are deferred, and one can't instantiate a deferred class. + +One final twist is the mechanism for creating instances of formal generic parameters. For x of type G in a class C [G], it wouldn't be safe to allow create x, since G stands for many possible types, all of which may have their own creation procedures. To allow such creation instructions, we rely on constrained genericity. You may declare a class as + + [G -> T create cp end] + + +to make G constrained by T, as we learned before, and specify that any actual generic parameter must have cp among its creation procedures. Then it's permitted to use create x.cp, with arguments if required by cp, since it is guaranteed to be safe. The mechanism is very general since you may use ANY for T and default_create for cp. The only requirement on cp is that it must be a procedure of T, not necessarily a creation procedure; this permits using the mechanism even if T is deferred, a common occurrence. It's only descendants of T that must make cp a creation procedure, by listing it in the create clause, if they want to serve as actual generic parameters for C. + + +==Non-object calls== + +The Eiffel model for object-oriented computation involves the application of some feature f to some object x, and possibly passing arguments a: + + + x.f (a) + + +This type of feature call is known as an '''object call''' because it applies the feature to a target object, in this case x. However, under certain circumstances we may apply a feature of a class in a fashion that does not involve a target object. This type of call is a '''non-object call'''. In place of the target object, the syntax of the non-object call uses the type on which the feature can be found. + + + circumference := radius * 2.0 * {MATH_CONST}.Pi + + +In the sample above, the call to feature {MATH_CONST}.Pi is a non-object call. This case illustrates one of the primary uses of non-object calls: constants. The library class MATH_CONST contains commonly used mathematical constants. Non-object calls make it possible to use the constants in MATH_CONST without having to create an instance of MATH_CONST or inherit from it. + +The other primary use is for external features. One example is when we use Microsoft .NET classes from Eiffel code and have to access mechanisms for which there is no direct analog in Eiffel. Microsoft .NET supports so-called "static" methods and enumeration types. To access these, we use non-object calls. In the example below, a non-object call is used to access the enumeration CreateNew from the .NET enumeration type System.IO.FileMode. + + + create my_file_stream.make ("my_file.txt", {FILE_MODE}.create_new) + + +The validity of a non-object call is restricted in ways that mirror these primary uses. That is, any feature called in a non-object call must be either a constant attribute or an external feature. See the [[ECMA Standard 367|ISO/ECMA Eiffel standard document]] for additional details. + + +==Convertibility== + +It is useful at times to designate that instances of one type can be created through the controlled conversion of instances of some other type. This can be done through a safe Eiffel type conversion mechanism called '''convertibility'''. + +Convertibility is useful when refactoring, moving from one design to another, or, as you will see in the example, accommodating external technologies over which we have no control. + + +{{Definition|Convertibility: converts to, converts from|
+
+A type U based on a class CU '''converts to''' a type T based on a class CT (and T '''converts from''' U) if either
+
+ CT has a ''conversion procedure'' using U as a conversion type, or
+
+ CU has a ''conversion query'' listing T as a conversion type,
+
+but not both.}} + + +Before we get into an example of convertibility, let's list some of its underlying principles: +# Conversion Principle: No type may both ''conform'' and ''convert'' to another. +# Conversion Asymmetry Principle: No type may convert to another through both a ''conversion procedure'' and a ''conversion query''. +# Conversion Non-transitivity Principle: That V converts to U and U converts to T does not imply that V converts to T. + +Let's look at an example with which you may already be familiar. + + + my_string: STRING_8 -- Native Eiffel string + my_system_string: SYSTEM_STRING -- Native Microsoft .Net string + + … + + my_string := my_system_string + + +In the snippet above, we have attributes declared of type STRING_8 and SYSTEM_STRING. + +We know that if we have a attribute of type STRING_8 that we can make a direct assignment of a .Net type of string (that is, the .Net type System.String which we see as class SYSTEM_STRING) to our STRING_8 attribute. + +We know also that SYSTEM_STRING does not conform to STRING_8, so according to the definition of [[ET: Instructions#Assignment and attachment|compatibility]], this must happen through conversion. + +Therefore SYSTEM_STRING converts to STRING_8. And according to the definition above this means that either: + +# Class SYSTEM_STRING has a conversion query listing STRING_8 as a conversion type, or +# Class STRING_8 has a conversion procedure listing SYSTEM_STRING as a conversion type + +In this case STRING_8 has a conversion procedure for objects of type SYSTEM_STRING. Conversion procedures are always [[ET: The Dynamic Structure: Execution Model#Creating and initializing objects|creation procedures]]. So they appear in both the create and the convert parts of the class. + + + class STRING_8 + … + create + make_from_cil + … + convert + make_from_cil ({SYSTEM_STRING}) + … + + +We won't show the implementation of the conversion procedure, but as you can imagine, it initializes its target with the content of its argument. + +Because of convertibility, this code: + + + my_string := my_system_string + + +is equivalent to: + + + create my_string.make_from_cil (my_system_string) + + +So, we've seen how SYSTEM_STRING converts to STRING_8. But, in the context of our example, we could also do this: + + + my_system_string := my_string + + +Which means that STRING_8 converts to SYSTEM_STRING. The convert part of class STRING_8 also has a conversion query listing SYSTEM_STRING as a conversion type: + + + class STRING_8 + … + create + make_from_cil + … + convert + make_from_cil ({SYSTEM_STRING}) + to_cil: {SYSTEM_STRING} + … + + +Because of convertibility, this code: + + + my_system_string := my_string + + +is equivalent to: + + + my_system_string := my_string.to_cil + + +You should bear in mind that assignments are not the only situation in which conversions take place. Convertibility works for other types of attachments as well. For example, if a routine calls for an argument of type SYSTEM_STRING, and you supply an actual argument of type STRING_8, this constitutes an attachment, and the conversion from STRING to SYSTEM_STRING will occur. + + +==Tuple types== + +The study of genericity described arrays. Another common kind of container objects bears some resemblance to arrays: sequences, or "tuples", of elements of specified types. The difference is that all elements of an array were of the same type, or a conforming one, whereas for tuples you will specify the types we want for each relevant element. A typical tuple type is of the form + + TUPLE [X, Y, Z] + + +denoting a tuple of at least three elements, such that the type of the first conforms to X, the second to Y, and the third to Z. + +You may list any number of types in brackets, including none at all: TUPLE, with no types in brackets, denotes tuples of arbitrary length. + +{{info|The syntax, with brackets, is intentionally reminiscent of generic classes, but TUPLE is a reserved word, not the name of a class; making it a class would not work since a generic class has a fixed number of generic parameters. You may indeed use TUPLE to obtain the effect of a generic class with a variable number of parameters. }} + +To write the tuples themselves -- the sequences of elements, instances of a tuple type -- you will also use square brackets; for example + + [x1, y1, z1] + + +with x1 of type X and so on is a tuple of type TUPLE [X, Y, Z]. + +The definition of tuple types states that TUPLE [X1 ... Xn] denotes sequences of at least n elements, of which the first n have types respectively conforming to X1, ..., Xn. Such a sequence may have more than n elements. + +Features available on tuple types include count: INTEGER, yielding the number of elements in a tuple, item (i: INTEGER): ANY which returns the i-th element, and put which replaces an element. + +Tuples are appropriate when these are the only operations you need, that is to say, you are using sequences with no further structure or properties. Tuples give you "anonymous classes" with predefined features count, item and put. A typical example is a general-purpose output procedure that takes an arbitrary sequence of values, of arbitrary types, and prints them. It may simply take an argument of type TUPLE, so that clients can call it under the form + + write ([your_integer, your_real, your_account]) + + +As soon as you need a type with more specific features, you should define a class. + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-overview.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-overview.wiki new file mode 100644 index 00000000..805ddf19 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-overview.wiki @@ -0,0 +1,24 @@ +[[Property:title|ET: Overview]] +[[Property:weight|-15]] +[[Property:uuid|0eaddff9-5d72-87fc-663a-2fc8a9152c25]] +Eiffel is a method and language for the efficient description and development of quality systems. + +As a language, Eiffel is more than a programming language. It covers not just programming in the restricted sense of implementation but the whole spectrum of software development:
+* ''Analysis, modeling and specification'', where Eiffel can be used as a purely descriptive tool to analyze and document the structure and properties of complex systems (even non-software systems). +* ''Design and architecture'', where Eiffel can be used to build solid, flexible system structures. +* ''Implementation'', where Eiffel provides practical software solutions with an efficiency comparable to solutions based on such traditional approaches as C and Fortran. +* ''Maintenance'', where Eiffel helps thanks to the architectural flexibility of the resulting systems. +* ''Documentation'', where Eiffel permits automatic generation of documentation, textual and graphical, from the software itself, as a partial substitute for separately developed and maintained software documentation. + + +Although the language is the most visible part, Eiffel is best viewed as a '''method''', which guides system analysts and developers through the process of software construction. The Eiffel method is focused on both productivity (the ability to produce systems on time and within budget) and quality, with particular emphasis on the following quality factors:
+* ''Reliability:'' producing bug-free systems, which perform as expected. +* ''Reusability:'' making it possible to develop systems from prepackaged, high-quality components, and to transform software elements into such reusable components for future reuse. +* ''Extendibility:'' developing software that is truly soft -- easy to adapt to the inevitable and frequent changes of requirements and other constraints. +* ''Portability:'' freeing developers from machine and operating system peculiarities, and enabling them to produce software that will run on many different platforms. +* ''Maintainability:'' yielding software that is clear, readable, well structured, and easy to continue enhancing and adapting. + + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-software-process-eiffel.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-software-process-eiffel.wiki new file mode 100644 index 00000000..3beba97e --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-software-process-eiffel.wiki @@ -0,0 +1,66 @@ +[[Property:title|ET: The Software Process in Eiffel]] +[[Property:weight|-13]] +[[Property:uuid|eef7f31a-25de-93cc-9a33-41d991c51ccb]] +Eiffel, as noted, supports the entire lifecycle. The underlying view of the system development lifecycle is radically different not only from the traditional "Waterfall" model (implying a sequence of discrete steps, such as analysis, global design, detailed design, implementation, separated by major changes of method and notation) but also from its more recent variants such as the spiral model or "rapid prototyping", which remain predicated on a synchronous, full-product process, and retain the gaps between successive steps. + +Clearly, not everyone using Eiffel will follow to the letter the principles outlined below; in fact, some highly competent and successful Eiffel developers may disagree with some of them and use a different process model. In the author's mind, however, these principles fit best with the language and the rest of the method, even if practical developments may fall short of applying their ideal form. + +==Clusters and the cluster model== + +Unlike earlier approaches, the Eiffel model assumes that the system is divided into a number of subsystems or '''clusters'''. It keeps from the Waterfall a sequential approach to the development of each cluster (without the gaps), but promotes '''concurrent engineering''' for the overall process, as suggested by the following picture: + + +[[Image:tutorial-2]] + + +The Eiffel techniques developed below, in particular information hiding and Design by Contract, make the concurrent engineering process possible by letting the clusters rely on each other through clearly defined interfaces, strictly limiting the amount of knowledge that one must acquire to use the cluster, and permitting separate testing. When the inevitable surprises of a project happen, the project leader can take advantage of the model's flexibility, advancing or delaying various clusters and steps through dynamic reallocation of resources. + +==The Single Product Principle== + +Each of the individual cluster life cycles is based on a continuous progression of activities, from the more abstract to the more implementation-oriented: + + +[[Image:tutorial-3]] + + +You may view this picture as describing a process of accretion (as with a stalactite), where each steps enriches the results of the previous one. Unlike traditional views, which emphasize the multiplicity of software products -- analysis document, global and detailed design documents, program, maintenance reports... --, the principle is here to treat the software as a '''single product''' which will be repeatedly refined, extended and improved. The Eiffel programming language supports this view by providing high-level notations that can be used throughout the lifecycle, from the most general and software-independent activities of system modeling to the most exacting details of implementation tuned for optimal run-time performance. + +These properties make Eiffel span the scope of both "object-oriented methods", with their associated notations such as UML and supporting CASE tools (whereas most such solutions do not yield an executable result), and "programming languages" (whereas most such languages are not suitable for design and analysis). + +Additionally, within the EiffelStudio development environment, the concept of '''single product''' is extended to documents external to the software itself, by the [[Eiffel Information System|Eiffel Information System (EIS)]] which allows the linking elements of the software text to portions of external documents and vice versa. + +==Seamlessness and reversibility== + +The preceding ideas define the '''seamless approach''' embodied by Eiffel. With seamlessness goes '''reversibility''': the ability to go back, even late in the process, to earlier stages. Because the developers work on a single product, they can take advantages of bouts of late wisdom -- such as a great idea for adding a new function, discovered only at implementation time -- and integrate them in the product. Traditional approaches tend to discourage reversibility because it is difficult to guarantee that the analysis and design will be updated with the late changes. With the single-product principle, this is much easier to achieve. + +Seamlessness and reversibility enhance extendibility by providing a direct mapping from the structure of the solution to the structure of the problem description, making it easier to take care of customers' change requests quickly and efficiently. They promote reliability, by avoiding possible misunderstandings between customers' and developers' views. They are a boost to maintainability. More generally, they yield a smooth, consistent software process that helps both quality and productivity. + +==Generalization and reuse== + +The last step of the cluster, Generalization, is unheard of in traditional models. Its task is to prepare the results of a cluster for reuse across projects by looking for elements of general applicability, and transform them for inclusion in libraries. + +Recent object-oriented literature has used the term "refactoring" to describe a process of continuous improvement of released software. Generalization includes refactoring, but also pursues a more ambitious goal: helping turn program elements (software modules useful only as part of a certain program) into software components -- reusable parts with a value of their own, ready to be used by diverse programs that can benefit from their capabilities. + +Of course not all companies using the method will be ready to include a Generalization phase in their. But those which do will see the reusability of their software greatly improved. + +==Constant availability== + +Complementing the preceding principles is the idea that, in the cluster lifecycle, the development team (under the responsibility of the project leader) should at all times maintain a current working demo which, although covering only a part of the final system, works well, and can be demonstrated or -- starting at a suitable time -- shipped as an early release. It is not a "prototype" in the sense of a meant to be thrown away, but an initial iteration towards the final product; the successive iterations will progress continuously towards until they become that final product. + +==Compilation technology== + +The preceding goals benefit from the ability to check frequently that the current iteration is correct and robust. Eiffel supports efficient compilation mechanisms through such mechanisms as the '''Melting Ice Technology''' in EiffelStudio. The Melting Ice achieves immediate recompilation after a change, guaranteeing a recompilation time that's a function of the size of the changes, not of the system's overall size. Even for a system of several thousand classes and several hundred thousand lines, the time to get restarted after a change to a few classes is, on a typical modern computer, a few seconds. + +Such a "melt" (recompilation) will immediately catch (along with any syntax errors) the type errors -- often the symptoms of conceptual errors that, if left undetected, could cause grave damage later in the process or even during operation. Once the type errors have been corrected, the developers should start testing the new functionalities, relying on the power of '''assertions''' -- explained in [[ET: Design by Contract (tm), Assertions and Exceptions|"Design By Contract™ Assertions, Exceptions"]] -- to kill the bugs while they are still larvae. Such extensive unit and system testing, constantly interleaved with development, plays an important part in making sure that the "current demo" is trustworthy and will eventually yield a correct and robust product. + +==Quality and functionality== + +Throughout the process, the method suggests maintaining a constant '''quality''' level: apply all the style rules, put in all the assertions, handle erroneous cases (rather than the all too common practice of thinking that one will "make the product robust" later on), enforce the proper architecture. This applies to all the quality factors except possibly reusability (since one may not know ahead of time how best to generalize a component, and trying to make everything fully general may conflict with solving the specific problem at hand quickly). All that varies is '''functionality''': as the project progresses and clusters come into place, more and more of the final product's intended coverage becomes available. The project's most common question, "Can we ship something yet?", translates into "Do we cover enough?", not "Is it good enough?" (as in "Will it not crash?"). + +Of course not everyone using Eiffel can, any more than in another approach, guarantee that the ideal just presented will always hold. But it is theoretical scheme to which the method tends. It explains Eiffel's emphasis on getting everything right: the grandiose and the mundane, the structure and the details. Regarding the details, the Eiffel books cited in the bibliography include many rules, some petty at first sight, about such low-level aspects as the choice of names for classes and features (including their grammatical categories), the indentation of software texts, the style for comments (including the presence or absence of a final period), the use of spaces. Applying these rules does not, of course, guarantee quality; but they are part of a quality-oriented process, along with the more ambitious principles of design. In addition they are particularly important for the construction of quality libraries, one of the central goals of Eiffel. + +Whenever they are compatible with the space constraints, the present chapter and the rest of this book apply these rules to their Eiffel examples. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-static-picture-system-organization.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-static-picture-system-organization.wiki new file mode 100644 index 00000000..d20d27ce --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/et-static-picture-system-organization.wiki @@ -0,0 +1,76 @@ +[[Property:title|ET: The Static Picture: System Organization]] +[[Property:weight|-11]] +[[Property:uuid|46d3f41e-d41c-a443-4574-403dfebb60aa]] +We now look at the overall organization of Eiffel software. + +References to Eiffel Software's libraries appearing in subsequent examples include: '''EiffelBase''', the fundamental open-source library covering data structures and algorithms; the '''kernel library''', a subset of EiffelBase covering the most basic notions such as arrays and strings; and '''EiffelVision 2''', an advanced graphics and GUI library providing full compatibility across platforms (Unix, Windows, OpenVMS) with native look-and-feel on each. + +==Systems== + +An Eiffel system is a collection of classes, one of which is designated as the root class. One of the features of the root class, which must be one of its creation procedures, is designated as the root procedure. + +To execute such a system is to create an instance of the root class (an object created according to the class description) and to execute the root procedure. In anything more significant than "Hello World" systems, this will create new objects and apply features to them, in turn triggering further creations and feature calls. + +For the system to make sense, it must contains all the classes on which the root '''depends''' directly or indirectly. A class B depends on a class A if it is either a '''client''' of A, that is to say uses objects of type A, or an '''heir''' of A, that is to say extends or specializes A. (These two relations, client and inheritance, are covered below.) + +==Classes== + +The notion of class is central to the Eiffel approach. A class is the description of a type of run-time data structures (objects), characterized by common operations features) and properties. Examples of classes include: +* In a banking system, a class ACCOUNT may have features such as deposit, adding a certain amount to an account, all_deposits, yielding the list of deposits since the account's opening, and balance, yielding the current balance, with properties stating that deposit must add an element to the all_deposits list and update balance by adding the sum deposited, and that the current value of balance must be consistent with the lists of deposits and withdrawals. +* A class COMMAND in an interactive system of any kind may have features such as execute and undo , as well as a feature undoable which indicates whether a command can be undone, with the property that undo is only applicable if undoable yields the value true. +* A class LINKED_LIST may have features such as put, which adds an element to a list, and count, yielding the number of elements in the list, with properties stating that put increases count by one and that count is always non-negative. + +We may characterize the first of these examples as an analysis class, directly modeling objects from the application domain; the second one as a design class, describing a high-level solution; and the third as an implementation class, reused whenever possible from a library such as EiffelBase. In Eiffel, however, there is no strict distinction between these categories; it is part of the approaches seamlessness that the same notion of class, and the associated concepts, may be used at all levels of the software development process. + +==Class relations== + +Two relations may exist between classes: +* You can define a class C as a '''client''' of a class A to enable the features of C to rely on objects of type A. +* You may define a class B as an '''heir''' of a class A to provide B with all the features and properties of A, letting B add its own features and properties and modify some of the inherited features if appropriate. + +If C is a client of A, A is a '''supplier''' of C. If B is an heir of A, A is a '''parent''' of B. A '''descendant''' of A is either A itself or, recursively, a descendant of an heir of A; in more informal terms a descendant is a direct or indirect heir, or the class itself. To exclude A itself we talk of '''proper descendant'''. In the reverse direction the terms are '''ancestor''' and '''proper ancestor'''. + +The client relation can be cyclic; an example involving a cycle would be classes PERSON and HOUSE, modeling the corresponding informal everyday "object" types and expressing the properties that every person has a home and every home has an architect. The inheritance (heir) relation may not include any cycle. + +In modeling terms, client roughly represents the relation "has" and heir roughly represents "is". For example we may use Eiffel classes to model a certain system and express that every child has a birth date (client relation) and is a person (inheritance). + +Distinctive of Eiffel is the rule that classes can only be connected through these two relations. This excludes the behind-the-scenes dependencies often found in other approaches, such as the use of global variables, which jeopardize the modularity of a system. Only through a strict policy of limited and explicit inter-class relations can we achieve the goals of reusability and extendibility. + +==The global inheritance structure== + +An Eiffel class that you write does not come into a vacuum but fits in a preordained structure, shown in the figure and involving two library classes: ANY and NONE. + + +[[Image:tutorial-4]] + + +Any class that does not explicitly inherit from another is considered to inherit from ANY, so that every class is a descendant, direct or indirect, of ANY. ANY introduces a number of general-purpose features useful everywhere, such as copying, cloning and equality testing operations (see [[ET: The Dynamic Structure: Execution Model|The Dynamic Structure: Execution Model]] ) and default input-output. The procedure print used in the first version of our "[[ET: Hello World|Hello World]]" comes from ANY. + +NONE inherits from any class that has no explicit heir. Since inheritance has no cycles, NONE cannot have proper descendants. This makes it useful, as we will see, to specify non-exported features, and to denote the type of void values. Unlike ANY, class NONE doesn't have an actual class text; instead, it's a convenient fiction. + +==Clusters== + +Classes are the only form of module in Eiffel. As will be explained in more detail, they also provide the basis for the only form of type. This module-type identification is at the heart of object technology and of the fundamental simplicity of the Eiffel method. + +Above classes, you will find the concept of cluster. A cluster is a group of related classes. Clusters are a property of the method, enabling managers to organize the development into teams. As we have already seen (in [[ET: The Software Process in Eiffel|The Software Process in Eiffel]] ) they also play a central role in the lifecycle model. Clusters are an organizational concept, not a form of module, and do not require an Eiffel programming language construct. + +==External software== + +The subsequent sections will show how to write Eiffel classes with their features. In an Eiffel system, however, not everything has to be written in Eiffel: some features may be '''external''' , coming from languages such as C, C++, Java, C# Fortran and others. For example a feature declaration may appear (in lieu of the forms seen later) as + + file_status (filedesc: INTEGER): INTEGER + -- Status indicator for filedesc + external + "C" alias "_fstat" + end + + +to indicate that it is actually an encapsulation of a C function whose original name is _fstat. The alias clause is optional, but here it is needed because the C name, starting with an underscore, is not valid as an Eiffel identifier. + +Similar syntax exists to interface with C++ classes. EiffelStudio includes a tool called Legacy++ which will automatically produce, from a C++ class, an Eiffel class that encapsulates its facilities, making them available to the rest of the Eiffel software as bona fide Eiffel features. + +These mechanisms illustrate one of the roles of Eiffel: as an system architecturing and software composition tool, used at the highest level to produce systems with robust, flexible structures ready for extendibility, reusability and maintainability. In these structures not everything must be written in the Eiffel programming language: existing software elements and library components can play their part, with the structuring capabilities of Eiffel (classes, information hiding, inheritance, clusters, contracts and other techniques seen in this presentation) serving as the overall wrapping mechanism. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/index.wiki b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/index.wiki new file mode 100644 index 00000000..e33b5c1d --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/eiffel-tutorial-et/index.wiki @@ -0,0 +1,6 @@ +[[Property:title|An Eiffel Tutorial (ET)]] +[[Property:link_title|Tutorial]] +[[Property:weight|2]] +[[Property:uuid|4dbc41e2-ecfc-8c50-9288-fce30f4abd90]] +This Eiffel Tutorial (ET) should provide you with a broad understanding of what Eiffel is all about and why it is different from other technologies. Still more detail is available in [[Object-Oriented Software Construction, 2nd Edition]]. + diff --git a/documentation/20.05/eiffel/Tutorials/index.wiki b/documentation/20.05/eiffel/Tutorials/index.wiki new file mode 100644 index 00000000..62bc013d --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/index.wiki @@ -0,0 +1,13 @@ +[[Property:title|Eiffel Tutorials]] +[[Property:link_title|Tutorials]] +[[Property:weight|2]] +[[Property:uuid|f443f10d-9dbc-4d6b-b9fb-c59af76abde9]] + +== Tutorials about Eiffel == + +* [[Invitation to Eiffel (I2E)]] +* [[An Eiffel Tutorial (ET)]] +* [https://webcourses.inf.ethz.ch/se_courses/edx/eiffel_tutorial/] from Marco Piccioni +* ... + +{{Note|Please, don't hesitate to comment this page to add link to other existing tutorials on the web.This list is for now far from being complete.}} diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-classes.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-classes.wiki new file mode 100644 index 00000000..51bd61cc --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-classes.wiki @@ -0,0 +1,110 @@ +[[Property:title|I2E: Classes]] +[[Property:weight|-11]] +[[Property:uuid|218bead9-428e-f61d-1e45-7eea4291d895]] +A class, it was said above, is an implementation of an abstract data type. This means that it describes a set of run-time objects, characterized by the ''' features''' (operations) applicable to them, and by the formal properties of these features. + +Such objects are called the '''direct instances''' of the class. Classes and objects should not be confused: "class" is a compile-time notion, whereas objects only exist at run time. This is similar to the difference that exists in classical programming between a program and one execution of that program, or between a type and a run-time value of that type. + +{{info|"Object-Oriented" is a misnomer; "Class-Oriented Analysis, Design and Programming" would be a more accurate description of the method. }} + +To see what a class looks like, let us look at a simple example, ACCOUNT, which describes bank accounts. But before exploring the class itself it is useful to study how it may be used by other classes, called its '''clients'''. + +A class X may become a client of ACCOUNT by declaring one or more '''entities''' of type ACCOUNT. Such a declaration is of the form: +acc: ACCOUNT + +The term "entity" generalizes the more common notion of "variable". An entity declared of a reference type, such as acc, may at any time during execution become " '''attached to''' " an object; the type rules imply that this object must be a direct instance of ACCOUNT -- or, as seen below, of a "descendant" of that class. + +[[Image:invitation-2]] + +An entity is said to be void if it is not attached to any object. By default, entities are void at initialization. To obtain objects at run-time, a routine r appearing in the client class X may use a '''creation instruction''' of the form + + + create acc + + +which creates a new direct instance of ACCOUNT, attaches acc to that instance, and initializes all its fields to default values. A variant of this notation, studied below, makes it possible to override the default initializations. + +Once the client has attached acc to an object, it may call on this object the features defined in class ACCOUNT. Here is an extract with some feature calls using acc as their target: + + acc.open ("Jill") + acc.deposit (5000) + if acc.may_withdraw (3000) then + acc.withdraw (3000) + print (acc.balance) + end + + +These feature calls use dot notation, of the form target_name.feature_name, possibly followed by a list of arguments in parentheses. Features are of two kinds: +* '''Routines''', such as open, deposit, may_withdraw, withdraw, represent computations applicable to instances of the class. +* '''Attributes''' represent data items associated with these instances. + +Routines are further divided into '''procedures''' (commands, which do not return a value) and '''functions''' (queries, returning a value). Here may_withdraw is a function returning a boolean; the other three-routines called are procedures. + +{{info|A note on syntax: you may separate instructions by semicolons, and indeed you should when, as on the next-to-last line of the example, two or more instructions appear on a line. But the language's syntax has been designed so that the semicolon is almost always optional, regardless of the layout. Indeed the practice is to omit it between instructions or declarations on separate lines, as this results in lighter, clearer software texts. }} + +In class ACCOUNT, is feature balance an attribute, or is it a function with no argument? The above extract of the client class X doesn't say, and this ambiguity is intentional. A client of ACCOUNT must not need to know how class ACCOUNT delivers an account's balance when requested: by looking up a field present in each account object, or by calling a function that computes the balance from other fields. Choosing between these techniques is the business of class ACCOUNT, not anybody else's. Because such implementation choices are often changed over the lifetime of a project, it is essential to protect clients against their effects. This is known as the '''Uniform Access Principle''', stating that the choice between representing a property through memory (an attribute) or through an algorithm (function) shall not affect how clients use it. + +So much for how client classes will typically use ACCOUNT. Below is a first sketch of how class ACCOUNT itself might look. Line segments beginning with -- are comments. The class includes two feature clauses, introducing its features. The first begins with just the keyword feature, without further qualification; this means that the features declared in this clause are available (or "exported") to all clients of the class. The second clause is introduced by feature {NONE} to indicate that the feature that follows, called add, is available to no client. What appears between the braces is a list of client classes to which the corresponding features are available; NONE is a special class of the Kernel Library, which has no instances, so that add is in effect a secret feature, available only locally to the other routines of class ACCOUNT. So in a client class such as X, the call acc.add ( -3000 ) would be invalid. + +class + ACCOUNT + +feature + + balance: INTEGER + owner: PERSON + minimum_balance: INTEGER = 1000 + + open (who: PERSON) + -- Assign the account to owner who. + do + owner := who + end + + deposit (sum: INTEGER) + -- Deposit sum into the account. + do + add (sum) + end + + withdraw (sum: INTEGER) + -- Withdraw sum from the account. + do + add (-sum) + end + + may_withdraw (sum: INTEGER): BOOLEAN + -- Is there enough money to withdraw sum? + do + Result := (balance >= sum + minimum_balance) + end + +feature {NONE} + + add (sum: INTEGER) + -- Add sum to the balance + do + balance := balance + sum + end + +end -- ACCOUNT + + +Let us examine the features in sequence. The do ... end distinguishes routines from attributes. So here the class has implemented balance as an attribute, although, as noted, a function would also have been acceptable. Feature owner is also an attribute. + +The language definition guarantees automatic initialization, so that the initial balance of an account object will be zero after a creation instruction. Each type has a default initial value: zero for INTEGER and REAL, false for BOOLEAN, null character for CHARACTER, and a void reference for reference types. The class designer may also provide clients with different initialization options, as will be seen below in a revised version of this example. + +The other public features, withdraw, deposit, open, and may_withdraw are straight-forward routines. The special entity Result, used in may_withdraw, denotes the function result; it is initialized on function entry to the default value of the function's result type. You may only use Result in functions. + +The secret procedure add serves for the implementation of the public procedures deposit and withdraw; the designer of ACCOUNT judged it too general to be exported by itself. The clause "= 1000" introduces minimum_balance as a constant attribute, which will not occupy any space in instances of the class; in contrast, every instance has a field for every non-constant attribute such as balance. + +In Eiffel's object-oriented programming style any operation is relative to a certain object. A client invoking the operation specifies this object by writing the corresponding entity on the left of the dot, as acc in acc.open ("Jill"). Within the class, however, the "current" instance to which operations apply usually remains implicit, so that unqualified feature names, such as owner in procedure open or add in deposit, mean "the owner attribute or add routine relative to the current instance". + +If you need to denote the current object explicitly, you may use the special entity Current. For example the unqualified occurrences of add appearing in the class text above are equivalent to Current. add. + +In some cases, infix or prefix notation will be more convenient than dot notation. For example, if a class VECTOR offers an addition routine, most people will feel more comfortable with calls of the form v + w than with the dot-notation call v.plus (w). To make this possible it suffices to give the routine a "+" alias. The operation is still a normal routine call which can be invoked with either the infix form or the dot-notation. + +The above simple example has shown the basic structuring mechanism of the language: the class. A class describes objects accessible to clients through an official interface comprising some of the class features. Features are implemented as attributes or routines; the implementation of exported features may rely on other, secret ones. + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-combining-genericity-and-inheritance.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-combining-genericity-and-inheritance.wiki new file mode 100644 index 00000000..2b15de29 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-combining-genericity-and-inheritance.wiki @@ -0,0 +1,34 @@ +[[Property:title|I2E: Combining Genericity and Inheritance]] +[[Property:weight|-3]] +[[Property:uuid|912e4c38-9add-e478-59c3-5c10aa75d784]] +Genericity and inheritance, the two fundamental mechanisms for generalizing classes, may be combined in two fruitful ways. + +The first technique yields '''polymorphic data structures'''. Assume that in the generic class LIST [G] the insertion procedure put has a formal argument of type G, representing the element to be inserted. Then with a declaration such as + + pl: LIST [POLYGON] + +the type rules imply that in a call pl.put (p) the permitted types for the argument p include not just POLYGON, but also RECTANGLE (an heir of POLYGON) or any other type conforming to POLYGON through inheritance. + +The basic conformance requirement used here is the inheritance-based type compatibility rule: V conforms to T if V is a descendant of T. + +Structures such as pl may contain objects of different types, hence the name "polymorphic data structure". Such polymorphism is, again, made safe by the type rules: by choosing an actual generic parameter ( POLYGON in the example) based higher or lower in the inheritance graph, you extend or restrict the permissible types of objects in pl. A fully general list would be declared as + + LIST [ANY] + +where ANY, a Kernel Library class, is automatically an ancestor of any class that you may write. + +The other mechanism for combining genericity and inheritance is '''constrained genericity'''. By indicating a class name after a formal generic parameter, as in + + VECTOR [T -> NUMERIC] + +you express that only descendants of that class (here NUMERIC) may be used as the corresponding actual generic parameters. This makes it possible to use the corresponding operations. Here, for example, class VECTOR may define a routine infix "+" for adding vectors, based on the corresponding routine from NUMERIC for adding vector elements. Then by making VECTOR itself inherit from NUMERIC, you ensure that it satisfies its own generic constraint and enable the definition of types such as VECTOR [VECTOR [T]] . + +As you have perhaps guessed, unconstrained genericity, as in LIST [G] , may be viewed as an abbreviation for genericity constrained by ANY, as in + + LIST [G -> ANY] + +Something else you may have guessed: if ANY, introduced in this session, is the top of the inheritance structure -- providing all classes with universal features such as equal to compare arbitrary objects and twin to duplicate objects -- then NONE, seen earlier in the notation feature {NONE}, is its bottom. NONE indeed conceptually inherits from all other classes. NONE is, among other things, the perceived type of the Void keyword which represents a void reference. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-deferred-classes-and-seamless-development.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-deferred-classes-and-seamless-development.wiki new file mode 100644 index 00000000..306c1008 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-deferred-classes-and-seamless-development.wiki @@ -0,0 +1,64 @@ +[[Property:title|I2E: Deferred Classes and Seamless Development]] +[[Property:weight|-2]] +[[Property:uuid|b3264238-f160-a6fc-0b03-adcd80b1f55a]] +The inheritance mechanism includes one more major notion: deferred features and classes. + +Declaring a feature f as deferred in a class C expresses that there is no default implementation of f in C; such implementations will appear in eventual descendants of C. A class that has one or more deferred routines is itself said to be deferred. A non-deferred routine or class -- like all those seen until now -- is said to be '''effective'''. + +For example, a system used by a Department of Motor Vehicles to register vehicles might include a class of the form + +deferred class + VEHICLE + +feature + + dues_paid (year: INTEGER): BOOLEAN + do ... end + + valid_plate (year: INTEGER): BOOLEAN + do ... end + + register (year: INTEGER) + -- Register vehicle for year. + require + dues_paid (year) + deferred + ensure + valid_plate (year) + end + + ... Other features, deferred or effective ... + +end -- VEHICLE + + +This example assumes that no single registration algorithm applies to all kinds of vehicle; passenger cars, motorcycles, trucks etc. are all registered differently. But the same precondition and postcondition apply in all cases. The solution is to treat register as a deferred routine, making VEHICLE a deferred class. Descendants of class VEHICLE, such as CAR or TRUCK, effect this routine, that is to say, give effective versions. An effecting is similar to a redefinition; only here there is no effective definition in the original class, just a specification in the form of a deferred routine. The term '''redeclaration''' covers both redefinition and effecting. + + +[[Image:invitation-5]] + + +Whereas an effective class described an implementation of an abstract data types, a deferred class describes a set of possible implementations. You may not instantiate a deferred class: create v is invalid if v is declared of type VEHICLE. But you may assign to v a reference to an instance of an effective descendant of VEHICLE. For example, assuming CAR and TRUCK provide effective definitions for all deferred routines of VEHICLE, the following will be valid: + + v: VEHICLE + c: CAR + t: TRUCK + ... + create c + create t + ... + if "Some test" then + v := c + else + v := t + end + v.register (2008) + +This example fully exploits polymorphism: depending on the outcome of "Some test", v will be treated as a car or a truck, and the appropriate registration algorithm will be applied. Also, "Some test" may depend on some event whose outcome is impossible to predict until run-time, for example the user clicking with the mouse to select one among several vehicle icons displayed on the screen. + +Deferred classes are particularly useful at the design stage. The first version of a module may be a deferred class, which will later be refined into one or more effective classes. Eiffel's Design by Contract™ mechanisms are essential here: you may a precondition and a postcondition with a routine even though it is a deferred routine (as with register above), and an invariant with a class even though it is a deferred class. This enables you, as a designer, to attach precise semantics to a module at the design stage long before you will make any implementation choices. + +Beyond design and implementation, these techniques extend to the earliest stage of development, analysis. Deferred classes written at that stage describe not software objects, but objects from the external world being modeled -- documents, airplanes, investments. Here again the presence of contracts to express constraints, and the language's other structuring facilities, provide an attractive combination. + +Eiffel appears here in its full role of a lifecycle approach, covering areas traditionally considered separate: program implementation, the traditional province of development environments; system modeling and architecture, the traditional province of CASE tools based on UML or similar notations disconnected from the rest of the lifecycle. Eiffel instead emphasizes the fundamental unity of the software process and the usefulness of a single set of notations, concepts and tools applicable throughout. Such a seamless approach is indispensable to support the inevitable reversals that occur during the process of building software, such as detecting at implementation time a problem that leads to a change in the system's functionality, set at analysis time. The use of separate tools and notations, such as UML on one side and a programming language on the other, makes such round-trips difficult at best and often leads to monolithic, hard-to-change software. Eiffel lets you focus on the issues, without interposing artificial barriers between different software development activities. You'll use the fundamental problem-solving techniques -- data abstraction through classes, precise specification through contracts, modularity through information hiding, rational organization through inheritance, decentralized architecture through dynamic binding, parameterization of the solution through genericity, reusability through all these techniques -- all along; only the level of abstraction changes. + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-design-contract-and-assertions.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-design-contract-and-assertions.wiki new file mode 100644 index 00000000..53f3af4a --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-design-contract-and-assertions.wiki @@ -0,0 +1,150 @@ +[[Property:title|I2E: Design by Contract and Assertions]] +[[Property:weight|-9]] +[[Property:uuid|f563aa75-3a5a-5110-b4f1-07da5448f668]] +If classes are to deserve their definition as abstract data type implementations, they must be known not just by the available operations, but also by the formal properties of these operations, which did not yet appear in the preceding example. + +==The role of assertions== + +Eiffel encourages software developers to express formal properties of classes by writing '''assertions''', which may in particular appear in the following roles:
+* Routine '''preconditions''' express the requirements that clients must satisfy whenever they call a routine. For example the designer of ACCOUNT may wish to permit a withdrawal operation only if it keeps the account's balance at or above the minimum. Preconditions are introduced by the keyword require. +* Routine '''postconditions''', introduced by the keyword ensure, express conditions that the routine (the supplier) guarantees on return, if the precondition was satisfied on entry. +* A class '''invariant''' must be satisfied by every instance of the class whenever the instance is externally accessible: after creation, and after any call to an exported routine of the class. The invariant appears in a clause introduced by the keyword invariant, and represents a general consistency constraint imposed on all routines of the class. + + +With appropriate assertions, the class ACCOUNT becomes: + +class + ACCOUNT + +create + make + +feature + ... Attributes as before: + balance , minimum_balance , owner , open ... + + deposit (sum: INTEGER) + -- Deposit sum into the account. + require + sum >= 0 + do + add (sum) + ensure + balance = old balance + sum + end + + withdraw (sum: INTEGER) + -- Withdraw sum from the account. + require + sum >= 0 + sum <= balance - minimum_balance + do + add (-sum) + ensure + balance = old balance - sum + end + + may_withdraw ... -- As before + +feature {NONE} + + add ... + + make (initial: INTEGER) + -- Initialize account with balance initial. + require + initial >= minimum_balance + do + balance := initial + end + +invariant + balance >= minimum_balance + +end -- ACCOUNT + + +The notation old expression is only valid in a routine postcondition. It denotes the value the expression had on routine entry. + +==Creation procedures== + +In its last version above, the class now includes a creation procedure, make. With the first version, clients used creation instructions such as create acc1 to create accounts; but then the default initialization, setting balance to zero, violated the invariant. By having one or more creation procedures, listed in the create clause at the beginning of the class text, a class offers a way to override the default initializations. The effect of + + create acc1.make (5_500) + +is to allocate the object (as with the default creation) and to call procedure make on this object, with the argument given. This call is correct since it satisfies the precondition; it will ensure the invariant. + +{{info|The underscore _ in the integer constant ''5_500'' has no semantic effect. The general rule is that you can group digits by sets of three from the right to improve the readability of integer constants. }} + + +Note that the same keyword, create, serves both to introduce creation instructions and the creation clause listing creation procedures at the beginning of the class. + +A procedure listed in the creation clause, such as make, otherwise enjoys the same properties as other routines, especially for calls. Here the procedure make is secret since it appears in a clause starting with + +feature {NONE} + +so it would be invalid for a client to include a call such as + + acc.make (8_000) + +To make such a call valid, it would suffice to move the declaration of make to the first feature clause of class ACCOUNT, which carries no export restriction. Such a call does not create any new object, but simply resets the balance of a previously created account. + +==Design by Contract™== + +Syntactically, assertions are boolean expressions, with a few extensions such as the old notation. Also, you may split an assertion into two or more clauses, as here with the precondition of withdraw; this is as if you had separated the clauses with an and, but makes the assertion clearer, especially if it includes many conditions. + +Assertions play a central part in the Eiffel method for building reliable object-oriented software. They serve to make explicit the assumptions on which programmers rely when they write software elements that they believe are correct. Writing assertions amounts to spelling out the terms of the '''contract''' which governs the relationship between a routine and its callers. The precondition binds the callers; the postcondition binds the routine. + +The underlying theory of Design by Contract™, the centerpiece of the Eiffel method, views software construction as based on contracts between clients (callers) and suppliers (routines), relying on mutual obligations and benefits made explicit by the assertions. + +==The Contract Form== + +Assertions are also an indispensable tool for the documentation of reusable software components: one cannot expect large-scale reuse without a precise documentation of what every component expects (precondition), what it guarantees in return (postcondition) and what general conditions it maintains (invariant). + +Documentation tools in EiffelStudio use assertions to produce information for client programmers, describing classes in terms of observable behavior, not implementation. In particular the '''Contract Form''' of a class, also called its "short form", which serves as its interface documentation, is obtained from the full text by removing all non-exported features and all implementation information such as do clauses of routines, but keeping interface information and in particular assertions. Here is the Contract Form of the above class: + +class interface ACCOUNT + +create + make + +feature + + balance: INTEGER + ... + + deposit (sum: INTEGER) + -- Deposit sum into the account. + require + sum >= 0 + ensure + balance = old balance + sum + + withdraw (sum: INTEGER) + -- Withdraw sum from the account. + require + sum >= 0 + sum <= balance - minimum_balance + ensure + balance = old balance - sum + + may_withdraw ... + +end -- ACCOUNT + + +This is not actual Eiffel, only documentation of Eiffel classes, hence the use of slightly different syntax to avoid any confusion ( interface class rather than class). In accordance with the Uniform Access Principle (in [[I2E: Classes|Classes]]), the output for balance would be the same if this feature were a function rather than an attribute. + +You will find in EiffelStudio automatic tools to produce the Contract Form of a class. You can also get the '''Flat Contract''' form, based on the same ideas but including inherited features along with those introduced in the class itself. EiffelStudio can produce these forms, and other documentation views of a class, in a variety of output formats including HTML, so that collaborative projects can automatically post the latest versions of their class interfaces on the Internet or an Intranet. + +==Contracts for testing and debugging== + +Under EiffelStudio you may also set up compilation options, for the whole system or specific classes only, to evaluate assertions at run time, to uncover potential errors ("bugs"). EiffelStudio provides several levels of assertion monitoring: preconditions only, postconditions etc. When monitoring is on, an assertion which evaluates to true has no further effect on the execution. An assertion that evaluates to false will trigger an exception, as described next; unless you have written an appropriate exception handler, the exception will cause an error message and termination with a precise message and a call trace. + +This ability to check assertions provides a powerful testing and debugging mechanism, in particular because the classes of the EiffelBase Libraries, widely used in Eiffel software development, are protected by carefully written assertions. + +Run-time monitoring, however, is only one application of assertions, whose role as design and documentation aids, as part of the theory of Design by Contract™, exerts a pervasive influence on the Eiffel style of software development. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-design-principles.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-design-principles.wiki new file mode 100644 index 00000000..0c9246c0 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-design-principles.wiki @@ -0,0 +1,22 @@ +[[Property:title|I2E: Design Principles]] +[[Property:weight|-13]] +[[Property:uuid|529659bd-ec13-5805-87f2-2fd9318ad442]] +The aim of Eiffel is to help specify, design, implement and modify quality software. This goal of quality in software is a combination of many factors; the language design concentrated on the three factors which, in the current state of the industry, are in direct need of improvements: reusability, extendibility and reliability. Also important were other factors such as efficiency, openness and portability. + +'''Reusability''' is the ability to produce components that may serve in many different applications. Central to the Eiffel approach is the presence of predefined libraries such as EiffelBase, and the language's support for the production of new libraries. + +'''Extendibility''' is the ability to produce easily modifiable software. "Soft" as software is supposed to be, it is notoriously hard to modify software systems, especially large ones. + +Among quality factors, reusability and extendibility play a special role: satisfying them means having less software to write -- and hence more time to devote to other important goals such as efficiency, ease of use or integrity. + +The third fundamental factor is '''reliability, ''' the ability to produce software that is correct and robust -- that is to say, bug-free. Eiffel techniques such as static typing, assertions, disciplined exception handling and automatic garbage collection are essential here. + +Three other factors are also part of Eiffel's principal goals:
+* The language enables implementers to produce high '''efficiency''' compilers, so that systems developed with Professional Eiffel may run under speed and space conditions similar to those of programs written in lower-level languages. +* Ensuring '''openness''', so that Eiffel software may cooperate with programs written in other languages. +* Guaranteeing '''portability''' by a platform-independent language definition, so that the same semantics may be supported on many different platforms. + + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-event-driven-programming-and-agents.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-event-driven-programming-and-agents.wiki new file mode 100644 index 00000000..b1c38b8a --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-event-driven-programming-and-agents.wiki @@ -0,0 +1,42 @@ +[[Property:title|I2E: Event-Driven Programming and Agents]] +[[Property:weight|-7]] +[[Property:uuid|16fdab60-ae42-1bb8-f4bb-89e34d18a842]] +The division of roles in object technology is clear: of the two principal constituents of a system, object types and operations, the first dominates. Classes, representing object types, determines the structure of the software; every routine, representing an operation, belongs to a class. + +In some circumstances it is useful to define an object that denotes an operation. This is especially useful if you want to build an object structure that refers to operations, so that you can later traverse the structure and execute the operations encountered. A typical application is '''event-driven programming''' for Graphical User Interfaces (GUI), including Web programming. In GUI programming you will want to record properties of the form + +"When the user clicks this OK button, the system must update the file" + + +each involves a '''control''' (here the OK button), an '''event''' (mouse click) and an '''operation''' (update the file). This can be programmed by having an "event loop", triggered for each event, which performs massive decision-making (if "The latest event was `left mouse click on button 23'" then "Appropriate instructions" else if ... and so on with many branches); but this leads to bulky software architectures where introducing any new control or event requires updating a central part of the code. It's preferable to let any element of the system that encounters a new control-event-operation association + +[control, event, operation] + + +store it as a triple of objects into an object structure, such as an array or a list. Triples in that structure may come from different parts of the system; there is no central know-it-all structure. The only central element is a simple mechanism which can explore the object structure to execute each operation associated with a certain control and a certain event. The mechanism is not just simple; it's also independent of your application, since it doesn't need to know about any particular control, event or operation (it will find them in the object structure). So it can be programmed once and for all, as part of a library such as EiffelVision 2 for platform-independent graphics. + +To build an object structure, we need objects. A control, an event are indeed objects. But an operation is not: it's program code -- a routine of a certain class. + +Agents address this issue. An agent is an object that represents a routine, which can then be kept in an object structure. The simplest form of agent is written agent r, where r is a routine. This denotes an object. If your_agent is such an agent object, the call + + your_agent.call ([a, b]) + + +where a and b are valid arguments for r, will have the same effect as a direct call to r with arguments a and b. Of course, if you know that you want to call r with those arguments, you don't need any agents; just use the direct call r (a, b). The benefit of using an agent is that you can store it into an object structure to be called '''later''', for example when an event-driven mechanism finds the agent in the object structure, associated with a certain control and a certain event. For this reason agents are also called '''delayed calls'''. + +{{info|The notation [a, b] denotes a sequence of elements, or '''tuple'''. The reason call needs a tuple as argument, whereas the direct call r (a, b) doesn't, is that call is a general routine (from the EiffelBase class ROUTINE, representing agents) applicable to any agent, whereas the direct call refers explicitly to r and hence requires arguments a and b of specific types. The agent mechanism, however, is statically typed like the rest of the language; when you call call, the type checking mechanism ensures that the tuple you pass as argument contains elements a and b of the appropriate types. }} + + +A typical use of agents with EiffelVision 2 is + + ok_button.select_actions.extend (agent your_routine) + +which says: "add your_routine to the list of operations to be performed whenever a select event (left click) happens on ok_button". ok_button.select_actions is the list of agents associated with the button and the event; in list classes, procedure extend adds an item at the end of a list. Here, the object to be added is the agent. + +This enables the EiffelVision 2 event-handling mechanism to find the appropriate agent when it processes an event, and call call on that agent to trigger the appropriate routine. EiffelVision 2 doesn't know that it's your_routine; in fact, it doesn't know anything about your application. It simply finds an agent in the list, and calls call on it. For your part, as the author of a graphical application, you don't need to know how EiffelVision 2 handles events; you simply associate the desired agents with the desired controls and events, and let EiffelVision 2 do the rest. + +Agents extend to many areas beyond GUIs. In '''numerical computation''', you may use an agent to pass to an "integrator" object a numerical function to be integrated over a certain interval. In yet another area, you can use agents (as in the iteration library of EiffelBase) to program '''iterators''' : mechanisms that repetitively apply an arbitrary operation -- represented by an agent -- to every element of a list, tree or other object structure. More generally, agent embody properties of the associated routines, opening the way to mechanism for '''reflection''', also called "introspection": the ability, during software execution, to discover properties of the software itself. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-exceptions.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-exceptions.wiki new file mode 100644 index 00000000..5668d427 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-exceptions.wiki @@ -0,0 +1,47 @@ +[[Property:title|I2E: Exceptions]] +[[Property:weight|-8]] +[[Property:uuid|e3e10dac-0dd7-bbe1-240c-6a6985c7376a]] +Whenever there is a contract, the risk exists that someone will break it. This is where exceptions come in. + +Exceptions -- contract violations -- may arise from several causes. One is an assertion violation, if you've selected run-time assertion monitoring. Another is a signal triggered by the hardware or operating system to indicate an abnormal condition such as arithmetic overflow, or an attempt to create a new object when there's not enough memory available. + +Unless a routine has made specific provision to handle exceptions, it will '''fail''' if an exception arises during its execution. This in turn provides one more source of exceptions: a routine that fails triggers an exception in its caller. + +A routine may, however, handle an exception through a rescue clause. This optional clause attempts to "patch things up" by bringing the current object to a stable state (one satisfying the class invariant). Then it can terminate in either of two ways:
+* The rescue clause may execute a retry instruction, which causes the routine to restart its execution from the beginning, attempting again to fulfill its contract, usually through another strategy. This assumes that the instructions of the rescue clause, before the retry, have attempted to correct the cause of the exception. +* If the rescue clause does not end with retry, then the routine fails: it returns to its caller, immediately triggering an exception. (The caller's rescue clause will be executed according to the same rules.) + + +The principle is that '''a routine must either succeed or fail''': it either fulfills its contract, or not; in the latter case it must notify its caller by triggering an exception. + +Usually, only a few routines of a system will explicitly include a rescue clause. A routine that doesn't have an explicit rescue is considered to have an implicit one, which calls a routine default_rescue that by default does nothing, so that an exception will cause the routine to fail immediately, propagating the exception to the caller. + +An example using the exception mechanism is a routine attempt_transmission that tries to transmit a message over a phone line. The actual transmission is performed by an external, low-level routine transmit; once started, however, transmit may abruptly fail, triggering an exception, if the line is disconnected. Routine attempt_transmission tries the transmission at most 50 times; before returning to its caller, it sets a boolean attribute successful to True or False depending on the outcome. Here is the text of the routine: + +attempt_transmission (message: STRING) + -- Try to transmit message, at most 50 times. + -- Set successful accordingly. + local + failures: INTEGER + do + if failures < 50 then + transmit (message) + successful := True + else + successful := False + end + rescue + failures := failures + 1 + retry + end + + +Initialization rules ensure that failures, a local entity, is set to zero on entry. + +This example illustrates the simplicity of the mechanism: the rescue clause never attempts to achieve the routine's original intent; this is the sole responsibility of the body (the do clause). The only role of the rescue clause is to clean up the objects involved, and then either to fail or to retry. + +This disciplined exception mechanism is essential for software developers, who need protection against unexpected events, but cannot be expected to sacrifice safety and simplicity to pay for this protection. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-genericity.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-genericity.wiki new file mode 100644 index 00000000..01ab0951 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-genericity.wiki @@ -0,0 +1,28 @@ +[[Property:title|I2E: Genericity]] +[[Property:weight|-6]] +[[Property:uuid|091c0b65-73de-b454-b3f2-d8752983780e]] +Building software components (classes) as implementations of abstract data types yields systems with a solid architecture but does not in itself ensure reusability and extendibility. Two key techniques address the problem: genericity (unconstrained or constrained) and inheritance. Let us look first at the unconstrained form. + +To make a class generic is to give it '''formal generic parameters''' representing as unknown types, as in these examples from EiffelBase, an open-source library covering basic data structures and algorithms: + + ARRAY [G] + LIST [G] + LINKED_LIST [G] + +These classes describe data structures -- arrays, lists without commitment to a specific representation, lists in linked representation -- containing objects of a certain type. The formal generic parameter G denotes this type. + +A class such as these doesn't quite yet describe a type, but a type template, since G itself denotes an unknown type. To derive a directly usable list or array type, you must provide a type corresponding to G, called an '''actual generic parameter'''; this may be either an expanded type, including basic types such as INTEGER, or a reference type. Here are some possible generic derivations: + + il: LIST [INTEGER] + aa: ARRAY [ACCOUNT] + aal: LIST [ARRAY [ACCOUNT]] + +As the last example indicates, an actual generic parameter may itself be generically derived. + +It would not be possible, without genericity, to have static type checking in a realistic object-oriented language. + +A variant of this mechanism, constrained genericity, will enable a class to place specific requirements on possible actual generic parameters. Constrained genericity will be described after inheritance. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-inheritance.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-inheritance.wiki new file mode 100644 index 00000000..b9045767 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-inheritance.wiki @@ -0,0 +1,72 @@ +[[Property:title|I2E: Inheritance]] +[[Property:weight|-5]] +[[Property:uuid|acf84989-0e7c-f2f7-427a-19e7fce404ce]] +Inheritance, the other fundamental generalization mechanism, makes it possible to define a new class by combination and specialization of existing classes rather than from scratch. + +The following simple example, from the Data Structure Library in EiffelBase, is typical. LIST, as noted, describes lists in any representation. One such representation if the lists have a fixed number of elements uses an array. We may define the corresponding class by combination of LIST and ARRAY, as follows: + +class ARRAYED_LIST [G] + inherit + LIST [G] + ARRAY [G] + + export ... See below ... end + +feature + ... Specific features of fixed-size lists ... + +end -- ARRAYED_LIST + + +The inherit ... clause lists all the "parents" of the new class, which is said to be their "heir". (The "ancestors" of a class include the class itself, its parents, grandparents etc.; the reverse term is "descendant".) Declaring ARRAYED_LIST as shown ensures that all the features and properties of lists and arrays are applicable to arrayed lists as well. Since the class has more than one parent, this is a case of multiple inheritance. + +Standard graphical conventions -- drawn from the Business Object Notation or BON, a graphical object-oriented notation based on concepts close to those of Eiffel, and directly supported by EiffelStudio -- illustrate such inheritance structures: + + +[[Image:invitation-4]] + + +An heir class such as ARRAYED_LIST needs the ability to define its own export policy. By default, inherited features keep their export status (publicly available, secret, available to selected classes only); but this may be changed in the heir. Here, for example, ARRAYED_LIST will export only the exported features of LIST, making those of ARRAY unavailable directly to ARRAYED_LIST 's clients. The syntax to achieve this is straightforward: + +class ARRAYED_LIST [G] + inherit + LIST [G] + ARRAY [G] + + export {NONE} all end + + ... The rest as above ... + + +Another example of multiple inheritance comes from a windowing system based on a class WINDOW, close to actual classes in EiffelVision 2. Windows have '''graphical''' features: a height, a width, a position, routines to scale windows, move them, and other graphical operations. The system permits windows to be nested, so that a window also has '''hierarchical''' features: access to sub windows and the parent window, adding a sub window, deleting a sub window, attaching to another parent and so on. Rather than writing complex class that would contain specific implementations for all of these features, it is preferable to inherit all hierarchical features from TREE (a class in EiffelBase describing trees), and all graphical features from a class RECTANGLE. + +Inheritance complements the "client" relation by providing another form of reuse that yields remarkable economies of effort -- for analysis, design, implementation, evolution -- and has a profound effect on the entire software development process. + +The very power of inheritance demands adequate means to keep it under control. Multiple inheritance, in particular, raises the question of name conflicts between features inherited from different parents; this case will inevitably arise in practice, especially for classes contributed by independent developers. You may remove such a name conflict through '''renaming''', as in + +class C + inherit + A + rename + x as x1, + y as y1 + end + + B + rename + x as x2, + y as y2 + end + +feature ... + + +Here, if both A and B have features named x and y, class C would be invalid without the renaming. + +Renaming also serves to provide more appropriate feature names in descendants. For example, class WINDOW may inherit a routine insert_subtree from TREE. For clients of WINDOW, however, such a routine name is no longer appropriate. An application that uses this class needs coherent window terminology, and should have to concern itself with the inheritance structure that led to the class. So you may wish to rename insert_subtree as add_subwindow in the inheritance clause of WINDOW. + +As a further protection against misusing multiple inheritance, the invariants of all parent classes automatically apply to a newly defined class. So classes may not be combined if their invariants are incompatible. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-invitation-eiffel-copyright.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-invitation-eiffel-copyright.wiki new file mode 100644 index 00000000..c6aa3eaa --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-invitation-eiffel-copyright.wiki @@ -0,0 +1,37 @@ +[[Property:title|I2E: Invitation to Eiffel Copyright]] +[[Property:weight|0]] +[[Property:uuid|ce7b4af4-b669-9fec-92e1-c24c4f089336]] +Title: Invitation to Eiffel, Eiffel Software Technical Report TR-EI-67/IV. + +==Publication history== +First published 1987. Some revisions (in particular Web versions) have used the title "Eiffel in a Nutshell"
+This version: July 2001. Introduces coverage of agents; several other improvements. Corresponds to release 5.0 of the EiffelStudio environment. +==Author== +Bertrand Meyer +==Software Credits== +See acknowledgments in book ''[[Eiffel: The Language]]''. +==Cover Design== +Rich Ayling. +==Copyright notice and proprietary information== +Copyright Interactive Software Engineering Inc. (Eiffel Software), 2001. May not be reproduced in any form (including electronic storage) without the written permission of Eiffel Software . "Eiffel Power" and the Eiffel Power logo are trademarks of Eiffel Software . All uses of the product documented here are subject to the terms and conditions of the Eiffel Software Eiffel user license. Any other use or duplication is a violation of the applicable laws on copyright, trade secrets and intellectual property. +==Special duplication permission for educational institutions== +Degree-granting educational institutions using Eiffel Software Eiffel for teaching purposes as part of the [http://www.eiffel.com/educators/resources.html Eiffel University Partnership Program] may be permitted under certain conditions to copy specific parts of this book. Contact Eiffel Software for details. +{{info|About Eiffel Software (Interactive Software Engineering) helps you produce software better, faster and cheaper. Eiffel Software provides a wide range of products and services based on object technology, including Eiffel Software Eiffel, a complete development environment for the full system life cycle. Eiffel Software's training courses, available worldwide, cover key management and technical topics. Eiffel Software's consultants are available to address your project needs at all levels. Eiffel Software's TOOLS (Technology of Object-Oriented Languages and Systems) conferences, [http://www.tools-conferences.com http://www.tools-conferences.com] , are the meeting point for anyone interested in the software technologies of the future. Eiffel Software originated one of the earliest . NET products and offers a full range of . NET services and training at [http://www.dotnetexperts.com http://www.dotnetexperts.com] . }} + +==For more information== +Interactive Software Engineering Inc.
+Eiffel Software Building,
+356 Storke Road,
+Goleta,
+CA, 93117
+USA.
+
+Telephone 805-685-1006,
+Fax 805-685-6869 +==Internet and email== +Eiffel Software maintains a rich source of information at [http://eiffel.com http://eiffel.com] , with more than 1200 Web pages including online documentation, downloadable files, product descriptions, links to Eiffel Software partners, University Partnership program, mailing list archives, announcements, press coverage, Frequently Asked Questions, Support pages, and much more. Visit [http://www.eiffel.com/general/contact_details.html http://www.eiffel.com/general/contact_details.html] to request information about products and services. To subscribe to the Eiffel Software Eiffel user list, go to [http://groups.eiffel.com/join http://groups.eiffel.com/join] . +==Support programs== +Eiffel Software offers a variety of support options tailored to the diverse needs of its customers. See [http://support.eiffel.com http://support.eiffel.com] for details. + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-object-oriented-design.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-object-oriented-design.wiki new file mode 100644 index 00000000..2ee7b3fc --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-object-oriented-design.wiki @@ -0,0 +1,25 @@ +[[Property:title|I2E: Object-Oriented Design]] +[[Property:weight|-12]] +[[Property:uuid|e0a1f24e-5dd7-e5f8-8be8-8da32cc6a91c]] +To achieve reusability, extendibility and reliability, the principles of object-oriented design provide the best known technical answer. + +An in-depth discussion of these principles fall beyond the scope of this introduction but here is a short definition: + +{{info|Object-oriented design is the construction of software systems as structured collections of abstract data type implementations, or "classes". }} + + +The following points are worth noting in this definition:
+* The emphasis is on structuring a system around the types of objects it manipulates (not the functions it performs on them) and on reusing whole data structures together with the associated operations (not isolated routines). +* Objects are described as instances of abstract data types -- that is to say, data structures known from an official interface rather than through their representation. +* The basic modular unit, called the class, describes one implementation of an abstract data type (or, in the case of "deferred" classes, as studied below, a set of possible implementations of the same abstract data type). +* The word ''collection'' reflects how classes should be designed: as units which are interesting and useful on their own, independently of the systems to which they belong, and may be reused by many different systems. Software construction is viewed as the assembly of existing classes, not as a top-down process starting from scratch. +* Finally, the word ''structured'' reflects the existence of two important relations between classes: the client and inheritance relations. + + +Eiffel makes these techniques available to developers in a simple and practical way. + +As a language, Eiffel includes more than presented in this introduction, but not much more; it is a small language, not much bigger (by such a measure as the number of keywords) than Pascal. It was meant to be a member of the class of languages which programmers can master entirely -- as opposed to languages of which most programmers know only a subset. Yet it is appropriate for the development of industrial software systems, as has by now been shown by many full-scale projects, some in the thousands of classes and hundreds of thousands of lines, in companies around the world. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-polymorphism-and-dynamic-binding.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-polymorphism-and-dynamic-binding.wiki new file mode 100644 index 00000000..1e3ed292 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-polymorphism-and-dynamic-binding.wiki @@ -0,0 +1,71 @@ +[[Property:title|I2E: Polymorphism and Dynamic Binding]] +[[Property:weight|-4]] +[[Property:uuid|1c3221be-0237-1c9a-407d-652a4084de12]] +Inheritance is not just a module combination and enrichment mechanism. It also enables the definition of flexible entities that may become attached to objects of various forms at run time, a property known as polymorphism. + +This remarkable facility must be reconciled with static typing. The language convention is simple: an assignment of the form a : = b is permitted not only if a and b are of the same type, but more generally if a and b are of reference types A and B, based on classes A and B such that B is a descendant of A. + +This corresponds to the intuitive idea that a value of a more specialized type may be assigned to an entity of a less specialized type -- but not the reverse. (As an analogy, consider that if you request vegetables, getting green vegetables is fine, but if you ask for green vegetables, receiving a dish labeled just "vegetables" is not acceptable, as it could include, say, carrots.) + +What makes this possibility particularly powerful is the complementary facility: '''feature redefinition'''. A class may redefine some or all of the features which it inherits from its parents. For an attribute or function, the redefinition may affect the type, replacing the original by a descendant; for a routine it may also affect the implementation, replacing the original routine body by a new one. + +Assume for example a class POLYGON, describing polygons, whose features include an array of points representing the vertices and a function perimeter which computes a polygon's perimeter by summing the successive distances between adjacent vertices. An heir of POLYGON may begin as: + +class RECTANGLE + inherit + POLYGON + redefine + perimeter + end + +feature -- Specific features of rectangles, such as: + + side1: REAL + side2: REAL + + perimeter: REAL + -- Rectangle-specific version + do + Result := 2 * (side1 + side2) + end + +... Other RECTANGLE features ... + + +Here it is appropriate to redefine perimeter for rectangles as there is a simpler and more efficient algorithm. Note the explicit redefine sub clause (which would come after the rename if present). + +Other descendants of POLYGON may also have their own redefinitions of perimeter. The version to use in any call is determined by the run-time form of the target. Consider the following class fragment: + + p: POLYGON + r: RECTANGLE + ... + + create p + create r + ... + if c then + p := r + end + print (p.perimeter) + +The polymorphic assignment p := r is valid because of the above rule. If condition c is false, p will be attached to an object of type POLYGON for the computation of p. perimeter, which will thus use the polygon algorithm. In the opposite case, however, p will be attached to a rectangle; then the computation will use the version redefined for RECTANGLE. This is known as '''dynamic binding'''. + +Dynamic binding provides a high degree of flexibility. The advantage for clients is the ability to request an operation (such as perimeter computation) without explicitly selecting one of its variants; the choice only occurs at run-time. This is essential in large systems, where many variants may be available; dynamic binding protects each component against changes in other components. + +This technique is particularly attractive when compared to its closest equivalent in traditional approaches, where you would need records with variant components, or union types (C), together with case (switch) instructions to discriminate between variants. This means that every client must know about every possible case, and that any extension may invalidate a large body of existing software. + +The combination of inheritance, feature redefinition, polymorphism and dynamic binding supports a development mode in which every module is open and incremental. When you want to reuse an existing class but need to adapt it to a new context, you can define a new descendant of that class (with new features, redefined ones, or both) without any change to the original. This facility is of great importance in software development, an activity that -- by design or circumstance -- is invariably incremental. + +The power of these techniques demands adequate controls. First, feature redefinition, as seen above, is explicit. Second, because the language is typed, a compiler can check statically whether a feature application a.f is correct. In contrast, dynamically typed object-oriented languages defer checks until run-time and hope for the best: if an object "sends a message" to another (that is to say, calls one of its routines) one just expects that the corresponding class, or one of its ancestors, will happen to include an appropriate routine; if not, a run-time error will occur. Such errors will not happen during the execution of a type-checked Eiffel system. + +In other words, the language reconciles dynamic binding with static typing. Dynamic binding guarantees that whenever more than one version of a routine is applicable the right version (the one most directly adapted to the target object) will be selected. Static typing means that the compiler makes sure there is at least one such version. + +This policy also yields an important performance benefit: in contrast with the costly run-time searches that may be needed with dynamic typing (since a requested routine may not be defined in the class of the target object but inherited from a possibly remote ancestor), the EiffelStudio implementation always finds the appropriate routine in constant-bounded time. + +Assertions provide a further mechanism for controlling the power of redefinition. In the absence of specific precautions, redefinition may be dangerous: how can a client be sure that evaluation of p.perimeter will not in some cases return, say, the area? Preconditions and postconditions provide the answer by limiting the amount of freedom granted to eventual redefiners. The rule is that any redefined version must satisfy a weaker or equal precondition and ensure a stronger or equal postcondition than in the original. This means that it must stay within the semantic boundaries set by the original assertions. + +The rules on redefinition and assertions are part of the Design by Contract™ theory, where redefinition and dynamic binding introduce subcontracting. POLYGON, for example, subcontracts the implementation of perimeter to RECTANGLE when applied to any entity that is attached at run-time to a rectangle object. An honest subcontractor is bound to honor the contract accepted by the prime contractor. This means that it may not impose stronger requirements on the clients, but may accept more general requests: weaker precondition; and that it must achieve at least as much as promised by the prime contractor, but may achieve more: stronger postcondition. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-putting-system-together.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-putting-system-together.wiki new file mode 100644 index 00000000..05baa13d --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-putting-system-together.wiki @@ -0,0 +1,33 @@ +[[Property:title|I2E: Putting a System Together]] +[[Property:weight|-1]] +[[Property:uuid|97460714-8ae1-a7cb-8216-235827045ea6]] +We have now studied the constituents of Eiffel software. It remains to see how you can combine these elements into executable '''systems''' (the Eiffel concept closest to the traditional notion of program) and libraries. + +How do you get an executable system? All you need is to
+* Provide a set of classes, called a '''universe'''. +* Designate one of these classes as the '''root class'''. +* Designate one of its creation procedures as the '''root procedure'''. + + +This defines what it means to execute the system: create one direct instance of the root class (the execution's '''root object'''); and call the root procedure on it. That's all. + +In any practical case, the root procedure will create other objects, call other routines on them, leading to further creations and calls. + +For the system to be valid, it must include all the classes which the root '''needs''' directly or indirectly; a class "needs" another if it is one of its heirs or clients. + +For a library we don't need to specify a root. If we want to make sure that every class in a library compiles fine we can specify that we want all classes to be the root. + +The Eiffel method suggests grouping related classes (typically 5 to 40 classes) into collections called '''clusters'''. A universe is then a set of clusters. For example the EiffelBase library is divided into clusters corresponding each to a major category of data structure: lists, tables, iteration, and so on. You can nest clusters, using for example EiffelBase, with its own subclusters as listed, as a cluster of your system. + +How will you specify a universe? Any Eiffel implementation can use its own conventions. EiffelStudio applies a simple policy:
+* Store each class in a single file, called its class file, with a name of the form name.e . For clarity, name should be the lower-case version of the class name, although this is a style rule, not a requirement. +* Put all the class files of a cluster into a single directory (folder on Windows), called its cluster directory. +{{note|It is desirable for clarity, as a style rule, to separate clusters that directly contain classes ("terminal clusters") from those that have subclusters. Cluster directories will then contain class files or cluster subdirectories, but not both. }} +* To specify a system, it suffices to provide a list of cluster directories, along with the name of the root class and root procedure. The universe consists of the classes contained in all the class files in the listed cluster directories. + + +Such a system specification is written in an ecf (eiffel configuration file) which is an xml based file format. It can be created by using the project settings in EiffelStudio. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-types.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-types.wiki new file mode 100644 index 00000000..005c69b9 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-types.wiki @@ -0,0 +1,24 @@ +[[Property:title|I2E: Types]] +[[Property:weight|-10]] +[[Property:uuid|344a9fdc-3346-5e2d-5fdd-77464e92f72f]] +Eiffel is strongly typed for readability and reliability. Every entity is declared of a certain type, which may be either a reference type or an expanded type. + +Any type T is based on a class, which defines the operations that will be applicable to instances of T. The difference between the two categories of type affects the semantics of an entity x declared of type T: for a reference type, the most common case, possible values for x are references to objects; for an expanded type, the values are objects. In both cases, the type rules guarantee that the objects will be instances of T. + +A non-expanded class such as ACCOUNT yields a reference type. As a result, an entity of type ACCOUNT, such as acc in the earlier client example (see the declaration of acc and the accompanying picture as given in [[I2E: Classes]] ), denotes possible run-time references to objects of type ACCOUNT. + +In contrast, the value of an entity acc declared of type expanded ACCOUNT is an object such as the one shown on the figure below, with no reference. The only difference with the earlier figure is that the value of acc is now an ACCOUNT object, not a reference to such an object. No creation instruction is needed in this case. (The figure does not show the PERSON object to which the owner field of the ACCOUNT object -- itself a reference -- is attached.) + + +[[Image:invitation-3]] + + +An important group of expanded types, based on library classes, includes the basic types CHARACTER, DOUBLE, REAL, INTEGER, and BOOLEAN. Clearly, the value of an entity declared of type INTEGER should be an integer, not a reference to an object containing an integer value. Operations on these types are defined by prefix and infix operators such as "+" and "<". + +As a result of these conventions, the type system is uniform and consistent: all types, including the basic types, are defined from classes, either as reference types or as expanded types. + +In the case of basic types, for obvious reasons of efficiency, the compilation mechanism implements the standard arithmetic and boolean operations directly through the corresponding machine operations, not through routine calls. But this is only a compiler optimization, which does not hamper the conceptual homogeneity of the type edifice. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-what-must-i-know-first.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-what-must-i-know-first.wiki new file mode 100644 index 00000000..a40b4903 --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/i2e-what-must-i-know-first.wiki @@ -0,0 +1,10 @@ +[[Property:title|I2E: What Must I Know First?]] +[[Property:weight|-14]] +[[Property:uuid|f40b4a30-87f7-2c27-b6e7-ef2f2a74661b]] +This Invitation assumes that you have some experience of software development, but that's all. Previous exposure to object technology is not required. If you've had it, it will help; but if it has all been to notations like UML or programming languages like C++ and Java, you should not let it guide your study of this Invitation. Although Eiffel shares a number of properties with these other approaches, it takes a fresh path to object technology, based on a small number of simple, far-reaching concepts. + +Once you are familiar with the basic ideas you may want to try them with EiffelStudio, which provides a direct implementation of the Eiffel concepts, available in a completely portable way across Windows, Linux, many versions of Unix and OpenVMS. + + + + diff --git a/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/index.wiki b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/index.wiki new file mode 100644 index 00000000..ad06e3be --- /dev/null +++ b/documentation/20.05/eiffel/Tutorials/invitation-eiffel-i2e/index.wiki @@ -0,0 +1,6 @@ +[[Property:title|Invitation to Eiffel (I2E)]] +[[Property:link_title|Invitation to Eiffel]] +[[Property:weight|-15]] +[[Property:uuid|7a606387-2653-b122-b4ef-e283a389656e]] +The Invitation to Eiffel (I2E) is a short set of pages that should provide you with the essence of the Eiffel way, without taking too much of your time. Enjoy this profoundly different way of thinking about developing software! When you are done, move on to the more detailed Eiffel tutorial. + diff --git a/documentation/20.05/eiffel/_files/expression_language.pdf b/documentation/20.05/eiffel/_files/expression_language.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6aab45db344a2e86a179b871b4c4fb02c7613e9d GIT binary patch literal 403882 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 Vu@t=^>WpS~@^ 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

)`bwzZs;!3RI@2s0o8#;8pqBLNDs`1E-#H;!#d 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

U*{$);u_5#-b z{Wl&FnHfDd5*Fa=1n^(~4zu;?K#r*vV5Sz@JBnr>g6H}j#{7ox%2Q*#1Nnnyrx;=r zK$$TXBgIrJspl9EVG~`ReyUYwTtOyPTHuo$h(4~_#0*9n`UZ0N6IfAww!ERkh}mfn zK#JIm$4pvuR=e7o{K|Il2fF-2gbRkD>McKHZE?cFlUTO02LHS)RL77S-ap}Ou z>2Bq0Ln)Q8_B7GUbcD43v2#faOtlwED&GnYt&5Ch1?eDGO_s6h&hGFTp;hwwYSk=97F z?IK&N&KCIf;Y=zVE;5(P&4aO!a0cZ*8Pa&t>_fo2ffpRB@}c_I39pC`b7&82YP7T>C$z@N&W zt~-M{(y*a*bahg9o+QCy=D;!B0i)Et2Kg3MnU*{*310CY3Ksq+a!&DD!YMjD1;;9O zo|PYPyl=gG2oxU6-u;9hyf|7r_xXK$9w3~7l$yJLWf6MSu=bFJ%2p*sZM%j;k>L#S zZCSei&GE1iuRmexi$OC?L=lKO+jL|~VkWN6A$r`z0hdKI}@#7j&PmsEtIYov;J zCClr!X-cic$imPo7skT%E3e&1tm@=1ORGW69;23JOvzi)Sy~81zoYdiSLXno?1D7S z0P>eV=o^lc15(Kwx2it0?_k^;rd2)esRJ5!d?X8vAQv4G@TonZnge8-1E`-Une84{ ztr2JNA-bcb$yv};ecE&i#2eW@b z^(5X^gx)>;+cl>_@&eVY{noF>l1qV%D^I76KY)|2C ziU$R64s37sb#D%R*-Q}O^-19$5a1sn;v{W6qG#N*^_n=f?m*-oP~;wA<`fS&b5B9N zN20oiQ=?BzS`Sclk6Cq3VRwuf?F`UerDiaKeAeQW1Yh*&WsSgO_2GUdOx}RvMDl9f z?C5`t{)9V5YKkTwHXfpfarneSjU7iCj@8-n>z_>x97yqr?6Lj4f}uY{34(y{XB(^4 zrFyGOiMRz=DjXwM8Y}etIt{y=FSW_tf<$rleuFz)8*a8*;4V^innazgD8$0 zv#?krDDZ3R$(1dS8x*))F4d|q7mGey4*XF82LAf?_UZ1aboXrUs!%~PXg=dA9+z~F zEQDJnB}vb2oh8F*ZNs6Aq|wIR8KH2DgeL2YibfuvevNlX8E&l( z#WF!wH2B7%QwgNwHL|-GNU+lqeSlZz-kzEe#u9I$?t-rF| zdSaFp2v!m}N5g{Qd=nw5AspLNBZcZ-M40{(5Ciu;B-Fc!Q-k1|Dr%eWRHuDntt3o^ z`0b45(S&>ePZgaV&`iA8-D^~f5(NxI)l~cJ^jGr!-bZV~9ofl(u3ZV)s#`W=R>e6- zxB`V!Ms@gJ))=RV5KO#Z8;YB_{ERvUCw1d$010cuR4@v=H`|x)6c}>@2 z>lsjPUpdFbOUV<_uZ9{dXraEK$q?_}FbcFuJ#Bl-cv?xiGaEpIQ3IqxxXPV^lT6V% zUi5J5IBnTJAnvwT}`fEL1wes>A}bh>s0#8sJbZd<=!N&>@;zN^#cNZ;&siUqgzFiI)W~UWvKzAO-_p3U%|x zLCMrIScqvs#awnN9tU(L1q%~5%`a?h!CRS-rBIy=Nd!J&-_YI2EDNNVKU)xSEh5@SGf=ecb73D zq1^RV<679&k=D1hRqWQT*`gzhVk}bNzRTN%d6wgLSDc95J zHhV6&YcXUpXdheWua_3s?J)ZW?zc_7>Cw?Ym@IX(Cvg4ho#i(5VVtbQGO1S4is^9*v!0H>+Jk#|VGVhuX+OlY+q=Uazbb7C@PTi)cj3P-%s3vv& z3QCMdYls_)_U-F=yw!0Z(dH31rhTM~q1`yO?rRP1t2rSd*=A{x zi%WB^#xyA-A-Z9sv?|-EZgJ3A02E;O*up}D>%cAg#-~7eoeo3*vx%x0!&!Zbs>437 zd6^#_E#jjyscKLJqE$vOR3!lzKpDB33=;D&WFWzO_yAZ{@FsXusW)GSh_^8JiQ_b> zuuz#$Z=UJ}ide8iGdon^tULsm%v&+Jo<|s~4I?-h_p5Ic`47V;;?*VaUO%%x2f~Hj zJve*xn=5|&M+rG!Dzeh(&)UM~5ydlpH7GZVgyXV-lc-;-joS+&7*DS|b?NbzBsp#%975of_bSz;~Vs9CRxUI}8hZ7GUu2tw3Lzkofiz0Pa+ z&#m4Nbg^nf;14hw7U$U2jPY|hFK#`u)3`~sgmBino+)3Tu=TRm3=7)SAbXjR%nVhk zf1*RQ%PCn9i3F3@U>?G`IzwSV3Sc*6=0!z$xiBIa*_|{_dP24YQz!aV1qkzjGWFWS zC#}#-phjwrEDGQX!#mx>v{jSkRZ(IS1Vs=j;}q4e;Lz>LRG?f%MGo=KAL1(6K7m^t zI&Hp2#Kgqf%v_i2UTSQv7uP)+R>t7!_vleSpL^S#N0xNxXpu&T`o53mXBW)|{ao*R z!7sZiK6<=j=YHJvk_cY@-BALaHCPl)8k?>Z@R(+gs{8(PbiDpr($&WoM+A@6V7G5{ zBx{XoDtKC;P~{=WT<4)AWZ6uk-=L^zQydd*52*q~<88#~A#q}N&qH%W!UcsY{*Ykb z;FIsHw3!ePdI(z;L~l*d{#aC!(B38h3fi1~2*f_D`?=VwN18I?wIgVH=pI2DJ_k2cAPLA2@ z)UR7#TOW-UJjR$`7#iU%ncvRgYiOWNkk>0*?{D-SxLEu77IqdtxQ^7!ANboRHkI{9 zD4jI}Z!?#*T^bf!3ybaSGo0PuirAHYv<>#*bZ@Y4M=ecVM6TDE5_{E(kOF&Sab_{ z0rGP~&*rFyZzx1F=Bb5gVKdad zedx7H_U`A!&Zew#$N2W)Fs%=4IegSUvY5(k)K}^!*iQL|(|213(e8GWFd@I@4g? zmt@ZEL?QCD-H|?`MtN+k$hxNbGT>97G@u9n09aHiRy0_)YRu(mD>7E4%&JVS%ulS4 z(CXMjZMHC22cs!tMpoQ!8dASb%{LLR*pw@|95MMb%<6@*l}0(IVj) zT>FIJ_g0=MJM#!oZ50hlzwO?bQ}S%Vg0QVH=e0zT0ARgXVJM?1t8YY0n|abyQ6-BEXf-3TdHFPhitU6r|ObCzT+>MZRnZ!J+Z z#i4Yg2b|wcTLM|3ZMn731U3OG$tmW`&YQOkpNKM>n5i*@p@bjLOWtvq;)x)0=w<~k zK6XfAmbuxAZOGy489-iPD?g|%`Y^fYP zZor*dH(&>eRMH{WO1(o;=8VE79iw=-M8YbfQ(~*=Mkx}?z8iHcxME=TJmN`EG_J^d zGLjeqye6;@5sJ(J+~}Ho@a`NfJFnx+FEf85$ZoZ-kSe#>lw(1fp@?gS6_Rg87z4FI zWGtc)2T~{$N@G%pShyV#T)_u?6)R0iLhawo+iwOU`z4H{#7aaaFg?(=OB!npb}KCl zbP-=;Vi98)rqT8WwCnj~9}2DRN1;m%L54KIRbMH4<36n?Vj3{LFgHwH=iPo1lO(I> zf!qx`UIL2H(u|q7$tIP3PbasZb@z&3mK&W`sI5dQ(GeTd@wuJ8Sz{QfJ_P_Nj_L*D zBL#&vT@5-?oe(HWC^wY~rnt|~{fXFf=TjmSLq~lk;llOxS1=v!$Jq)VqA|=jGQYk= zdnjHIh!T*zzTVy2&&Q;T`fYz*@5^x$d3D$4`qhz><9+)iL1G2-vHKKvtEsNlHUD>N zpy&Xdy|4%SWh|5XWwqv-V{dxIp!wZQNgq~CSL@^`n?O^+>XlN0>9ND7sgPrdc&1vr zH!N?^t|&w7aI@RBmOu^6Nn_mcR}9ECU}%YI#s6`gC-o@ojnOx-uYc~&>5HdtT*(3N z4v^Hypx)Osopa(Vvt#@#;-67xWXp^~bRH8S$B|dc=jqCM5`G?j8}CVCGC>kQ=Ax&V zgtC5tQlu~i%pg(JT!iQBrXL4BZ9c_yI&IMTee66mVv%+}y@rya7QUTF(xnwLRmabS z{IasKr9$81V`7$>Yh?NnfU2 zx?Pq;6E9M~Bm?iX0Y+<7VXEufEBNVb3JJt!M!^IM`$|~9+y_oOP{0uckCowo&I#=HyG7G&Q z6h0}A`IDiEl@TL()jRygDo~2Z$5_A5_U*&=v7MbD)Y#+aZCo5r9GtC&Ey^h&PCO)U z|G<3(WWDClFiAs3LE&UWCIWGn^z;FW7{e+XT&p4(D-=U1nKGpTS8K~046<0tMd=h- ztI5B1uL7B-a2%l>m@mJ--#>leM^|@J{vq8DTyMPY02Bh;s9Z^KyG55vuxFtzX)Z>c z65GkPqUfc-ILH2}C`qW5^Vvp zwk3@SaCGv7reytRB;~iP@ELyAy|!dC&Xs{I3GU>a0&q!b6O4|D*+gdIq>zOrM1U4G zR5M`2O2@!S*`BV7XgLUQk1|Qmbj2*D`-3Dm1rr#;d`$)kmIX@0j;z(a6X@z_f09j5 z2EKY1z{g^ZYBLT}!`nXwjmAPR)W}7T&oHyoM>^IY{=ba~=)Z)CO?aPE+;UaqBFXyw`@WRn=w#H1D1A$sT>th_-$qznp?fY!~pdiR+l z0Oa8?|B62RGQtw4Q1K;>ZNAy|=Hc(xJsf`V{xJSV!yghSSGohJFt7ndiKhsgXhPlM z6UUQRX7LHymx<#M_slOFJd}?cmU}cGyBMGKm6qks3z9G`y3ZC=TeUTAN@P3VOlyZZ zRZp2}>$ZAWfS0x^-~K#Ij_cYbrjjgOgH!T!|4i>5)NaALvtHzWuPH^VqP$fVv65(g zuIA|Af=@QV6BhrgevL^W1$e}PtAOtBSv4v$}odZ%dZd@rj0i&|f${fj+ zGq?j%11l~}UoY0GqdYFaIgw(Vj>gTG=su#I6;poQm&Y8$H7 z#L;d|!PgOAsJLf$jPRT0)J@={8k}WeNGL+|k?v#-1TfI(pp6EL8AzugBmq^Bjxd~S z$M$vMsv!~Djke*pg1NJ|r5FGpWlNa$ygWD5y)-g(;QIHuN5afvWT zrEkLM&OMsb>4B{%z3E=RA4vc6gNWBCD9~B&a}rne4<%w(W}861JWRvxHwy*?b{W{L zNZo@)5`6%Jx&#EQ_>>`Gtz@K652md?^|e?`q>_qQ-m1FE-F=E!MfHTbKlb?s$qcuU zj9$ecLS24;>h82+HXMv^m93pddJ*6pKh78e4qz3hJU5lCOI^vlz0dW`UO`X9MC+eMpRIj z=urpBl}z!out&fuQU`z?MPY*2_TSrf}+$zA82FoVP z>6VJDC7BA8DguB3a0OK8V{?KrlAfLMGMO@K`fYtn31^QfPrr@Bb!(|6G4$h!KbIdJ zLCLw*0HFHn*4GZY&Oeh9?uU@0{d?Qf1k8ilCZieL(?TbZMKCRCU`u+Q>6aei(175> zoZ_d10<7_{L5Wj)j3??%Q#6^_GuJ1&%r>!+0V@<3hX}Yav993f_NKsR!CZRPbH~(= ztRJ2}t3J*2A}a*N!gagH#nx)Pa`GU-#X?LX$4x0~tpdtH9)#P3u8PeL3VHU!>YVoy zkOqXvmy4$%Th@|et~mTW80x;&hR!K$8;!};;~OT%u%a@_#0Sx|lSBilSiN3xf-;Fx z$Uev25|~!><6Gia9qnU>9T{)$T?0ab3XiRNU$qAdQ4TY1zuig{l!%!PRx^dPw>FyG zy;F+V`wH8^6i@TN|tB3vl*!)>uCe(XMsdCK{55{j9c`};_uDh zXVV#G86RBiT^4c`{ZCurb zv3{&vO?SrbzueDmP}!jiezmhSiHgwK*u=Tc(J@1qM}k%X{JY3&1ZY$& zy{*J?KMzHlLOn@wv)Y8h)fKJRtbeby)&q|V%{&cWuqF~l#I+Xs$^MGTgF)Tqe^e|k zkzSCwgn5ed79^8F&`z9DZYKgGN?o}l4Hxjyh~(7Ns=Su}PPw*#u{-GOcX{2`Hfuui zs_9Ck(#+SAUK&WWR)^7I6JlFi8%2vu>m!8TLCmee$qX^G)dm1Uu_et@24ilyQZNS_ zi);NbI7ne$kDiaKir)2pDC)e%%DaZ z-uJBHZR2|atE#AMzx8)AtotxDO9=)kyMpwFSi7UAl2uAfibI-$TA5A^T~WU9cxCjA z{tLJbavC1=+~bMW)25}A1@UQ+kScDvM+V$J5vk|WN8Sb;8CvV zB3Zgv<6liUb?nKwA!YI4?E{&^TROIbRO|(Hpx~hK1Xx`%!4eot2v`|n#a@5tdp75} zu`$gHHW$n=vtiA&#*w1(pAM?A`sh^tn&$$^mWr{qM=o@$qEAIkaw1JiTUAnuLmqbs zQRt~Hk|3hhv9@pN;r4azz1{V?z4pEJs7da=^vU7$D0n=*>|AvUBz`fFN^vDoPqM>m ztLy3^ZMW7o)^wYOSY0>l(oisRtA4|LnojBl@E7QU`QB9xM=LRtqXRRhu zX>1I%gNur5&8h)XE52QTzi9F-E(7*|4o{al)_?8}Eppg&V=hqO#?7ww7s=y=c0oyKcICDdTIj>KnLJ<)%s- z;>o0u<)J-Q(tb8b=I8y>zu55O^zZN3aSIaj03-?BW9Wvc>(9EIyOW{_Vya4HTOgaE39>*dGWDOBYp2zjwp5~D zw81j|kcL9muRkieQl@UnyeR!Bk4lan?9tq?oN<|Pv5_Voz%<3ttPmZ}h9lW$p%X-G&Hd0>-jx455`wwW`Ff@@IxPb)`6^))ZycG2n7-Oh(QH&&q55j>owpilNXE)yxX{|LhS zdrsd7K0)NfAU!#R7c_c>i1hE=iB<>675;966@Fm@gU(h*IuT59BJKjp&>dbPeA6&i zbr10*v)GySP~`@FMQ+ZC`HHZ`chOW!C;xdFENWb#z{N6)`xsv21Z5^GrE<$skx{a| zk)@XI{M<1eN($q|_s zHLyCr;M>{XwgmBdPKgPpWh;Ho@(0cl!c%B-s|yq~*`ThWF)yk%W()q3bytx@VH1xj%CC&*~@Q z5!6da?tEQGuz5Ajq{{0kQL23#3yqCi$Z)in-GArn9d%ut%yXCK&L$9>aV+ei)JUpL zQxy27Vv%>M8ymXw-RgmCkXd5=gPc*MmYi_7*$E4JlHuIb(IS*|&m6!w`Usm8hFa-A zEIIS)nO69I4tCv>N_aC-;$o~R%j+Il3})NUlA<{uuLNgmRbu|KI9$gK$3^9ojO@4W ziJR&Zxfhlda2kRF1P-kuMuPAIU{yN_5yUevo6^sFe)qr)4ycxYji0cCeFJ8XqAGfQ zn?Dpm`UmkN##tTQ^B@jZMNOYEBJP%xm3Ahk^t+Y+b_KP9=p1Vbwova;HFc8Zf#&=< zrx`UH#igN}(n~{CyM*GAEc0&Y?Z-x#lEA&a_j2D}A{c|;ewS)16CfAC+q;4OsQaSc zu88FaH06wsW!EvmU3i;1I_<1Bd0;(>{X+9i8?ct*x>I}5O0omWr~>n-kA8gfKvcm4q(32Xb}C(Sir}K2B0+&2ceN-&ZF{W4y9uLpeP|UuiDM-bX9=j zGceu<FyMU@ps!iV}yDS*4xcgzQd_x7T z&RDgs4*x*s-2`h_BLBz$eOZB-PQa%l>gOG6K_b*6w4EB&Br!^I_LJ(D;4%F!F>$IX zmgS1PSH@*Nky{YThq$8?%Hji;ak`BvEbN;__$KELJp1lp*rSyzi_P#a!9ZEEOE}S# zamkcP+wh|vwq4^mjghlV?US?1+P!D{*~fW2wt7ZrUobv8tvx=qBv&3M63$E1QKKtB zs8-+Y_@3fv9#WJD9&TnZ${yJvUoY@D>X^wS0bewJ; zmRfq@E%}Av0qJd?`_^Pyk_+`j^2K>PKQ8UJOLIS2KKX@QJV7T<@(4?BMfCVvA#}8U z@{fsbn(j1u^|^*_;Q-$-c7vPiEl3aG-aKzT&JBQ{@PCH5K-enh+s&1AToAl8Nlqg5 zB;OjqBez7gJMEf=@3!};WvzzH9LlD%FKL}cFqexzY4ncG2|V)t9ioq)?ojFz)s9E5 zG7JBnB6vg}Q!_pjBC$GeR>%@tY%!<~G2)e0Xs|tTNoc{3PCvX5IeJ0!1PmIBE~s;a zK}egpME4@E!*_C&v4^ogf+9F^iPhA+c#BWH$T$gh@Gm^jVO747E;O78*ukjF6I{-3 znZ&%iO@8m%dj*?RXiZR?DhECkSW(0qlQKow7 zv1&&C6c5mqeD;jLSjIj{$IB;hL{#2x-f94OPB7j{re;`QiH7%l*NOZ=Mo#H}>8Fs;*^O6rF?w5+D$QCAho0Lmt8G-+%TQ=l=Wtc<=A`?|95Hru6LD-PP4q)irxo)znC9 z7@i--){5H!$BJ#4yQ&?5DERWaRTJ~-ktG9qfJhy67U<0#0ktZ7TX)uR2t9+)uU zJC+>}FXn|TRMIehbYjuV!|k`3MoR#3vFL^DRoRnxoMh$~Wt+z2XEpIWjSLmK5;#UX=4tgX>qyIU+Np)1wQTwb=`^t61^yuu0E46kW*2$G@pM)#vZ+ zJC40LGIqg>mMSMKNY!O{4M_clx!v0W(Z=4!S!Agndt6K)f1*NiDlS~Vs0f9JEM|Wz zB55RnAh*sQtfCDr=h7aj1gDLORMsolXR`>4Dqa{M7A{ z4b5;wcriG5|Df>ksYa_lLlOZSlc7#?DZl=w1cF4iXfD`$U2l4MNTIXSvUrwi^taU1 z-PDyMZw#Z>{nV1HBXc9xOV@YyR0Dn7obR})x@CFwLrpeAZTnE3uSP)~X>Qfhr@S(k z>Q{AZX!G#Aa}qlyFh=!D>8eJkw@OS*4$S~2=BKYbi4F_ z>+SJB6q%8ei~TR|J<;t5_a2PU@BU~cvyv_|W0(}>HAJhUj?A;j{I#*q@u%sBDV)Tn z(Mc4HgMQv-T(I~#vawv=zj`0E$KJlw&oOLb5;3~62_jKmYF5Ctz)w-m2cE(^#IF~=K`o&LRR%s+)W`_EltxVR8;y8dvJ z;UMSbL&?J^VzhReAc5bl$;C>+Wn|oo?Sd+Me48lU$G3&Trzl27zd?9)ehJ|cQ z7^vM`x>qsbS;hiK%K3ipp?g$~z20Oab^gQ89`QeAC>57`&@UD=&@M3g7bBx79b)&w zsIg*vjdI)vCXTviL}SGsEcxj1@&2~VPUdY+ti*NfLX^~>p@j^4s zzdxrgqr4q+*i&@CYV!;r5$|cCp1k*E>_CS6wG=;78ja%m1rA|@DP8A$sRhs5d+BTm zY%8jyttcU`6x&~$Ah#K1$DTE~PYKySdsK{fwE(AJF>$!;iSUUy){gSUXMIX&Jz6~_ zW+$;V->I7k>U_%qoA7<*P} z1qnbVSR(rnNmH=Qa0D`I8q|F{oxRHSlHW<1qZ~uenW}b0^sPV#f2zzYzRH$QNn5+z zSZFlg%HwH=lJw}&?tK)=kRu`d+KS2(-$2T%_)>8xs;`{Tj^p)+3EMb(@W)`g!67-D zZItviigs3gJia$&PeXI@j^y#fO(V$LaaG7sNpnhl<3Fa@ItHJX&v)SjlW-4w?;IFK zFZ*orrhWDxG6sjWgQot)7>MGT-%#&^`nON0t5=lfB#$>6A1kj!Ohq}V`F&prvln!S zile({6u9yUeO4+zpZ-2=!P_BfX5_M@Y1q4SY3UzLw!Cp6U{W~B)J*Bi?8}^8kQyf! z2g~JACCJjN{X(=Vaul_ev}!bUWWss6mfgx|jOSkSUT_-8=LMG*i!?uy6L#n_*GDXg zpPFGq%i&JOeWq`(~ z&=OOkDYsqkGfE*jp~?)XDOrU)eC1)2k_hb~cY1ri3)wl2?Ipr3V{z!mg^hnq6s&PN zg~ta`82r{Zjdg$yBwSR zHSEDwUK)kf7p{kwu37q2b$uj9*xoN&O$99d`ey7M>Kc|F4u%@}uk83mc$|NqA}j>* zmZWALr+T4zGxXH;?z%?QB%czE_w(?_X>Kb!2kB+0@*@{tP>oVf98+Jq@du}d7fZ8ZauI%vI^yP4GSQo2sm)ur_W3TN6oncr_ zyf=F411n>)-EPcs@u;WSjMF0fh3k47&AMR z2$R!fBktSw1~)V-g4HGi?<&#{-T{uoe%l!NoPINPd6voze0Hvu(pNdv>M~zM`p>9S z$0_BrKR?+=Trs~_+ zMwNXjVfdCnzA~ZELXo!)-L#h4H15sVwXGh;HH|gr;CH4-j&f=>4M@oL>DF4&B>jsG zfmY{_h8iRX-c``y%-LKsogm$^phj)welCN|L4}X<7LE3KuTtK7WXgv(pw#Rmp~AzC zcHi5YU3?83?tDQdW1HUk@^o9iHp;xg0QmyqAYPaFm>iCxBq1eC$P@)>c|oP8tCKkf z&QREotBW#s8%i4g^ej8ioe|>XzT{CnR*xEl3*Rf!Cv{dGFDldHn9(L>7s|~1pdl_r zD2Q16?Nlrp84aFbYSb|JBwc+(`N>8W8`KbBgR)_P)-J;dD>y-v@IFEQv+@YaLGnyTPq#$w^4MVPEW}QWjp{V>^TC28t3PS^1TGe%8G)!w7}du&S%Ij7dzPn>=?MkQIXY7DHYV( z-um%5NN4eM$%kOtNAKkCT|04d>-52}lLPh1TVi&e_eg;P<7C5PUbiV4iX;Avslwl+ zHaJoxyyaCl7Mqbk_jIM2Gasj$uZDlOlHWwUo_bPd zj#9ScW);SZjJ>*1x*P5np=ISUo5ItZ#&lxnc!`E@8^XM-Iviu$*(gL}MzQ=<0~eg+ zqMO-X+?urQntm+E=J(&<_t-e=RJEP8|1_g#=UaZ(DJB0%!lUjX3sHHkdZTRc-u|wK z#I%iN9?u&Jj+~eRnvYL2;^ls3YA~W}Fn7Jgkpi7`qjJ1e-u^g3>rZ`=(J)q{$2fC; zC4%d6=yuL+_&RNGZ%$nI+bXJ9jtu^i7&Vw$fv%kw0>0<%=eX60kq>+}rzDJM z+Pw7dJ##yFbz#@yGRM-ZO87$WS>5Zi3vc@Md|}LV8Sls3bQ@pjR05E>CEYBBz|?^? zZrYpZI}PrSpi;yyhudlFT!Py34?hJ+4^Qt|F{s714WRRTi?I%yXc+FwPZcLR%!WK> zITX2`Y`Db`t-ep}UH|iX!AIoF>kB`WH6hPMAD1R0g53d9LjkVf6eC@U|- zf_iNGCZ|GqQ_1`lN7YZSkVG77X^d5F^wS?DIk_p6$?|nsNb`H-xlwD(l4?VmFSz)% zLtOf7@-ek%Wji?r$e{|+6zHw2+9>ZEN2rAfKM~hZKF!6RdwsPu0An}J(^Ji2tn58h zpyG-g+^Y^pp?@({jWaEha?PzOosfix9+U78T@bb#2W96io?QMZFy zZ>mv(A@UH|v+UtF+3#Oqa;Dw*_`2Ld+2ll5)h~9c zO0vnZFsfX=FZc``4A=}rxx(ZY(D=;wK-@N5eD8->B=z@NA0)N+E)jcSrJ+)rIJz#`qOgUQoE)G zYb`y!!0<(5eSO~EWQ^I2Z1{jJ5Se_Qq?DnA!N6{$>QFYyG(%;V0MAFY!o8dH)$Tjf z;pf(NX`3cH@BU%N zoPJ9$bx09&+t6l{o*>f9WCX)CyWHmQ_Uw|l9A0n!{;;Rb%sJgaq;u+P_?55w*+ z$FGpl|8+#Dzr-4_HU5nD0YFrWK?nr>+e-f_jOTw9;f4R#f2CCajOX%FQvHuuFKqva z=EBeOXV3$3P7Z!PuKx(yqG;k~N6x|VM`%#B|0;wF2RHXW{mt-p>UJN%d|~cnY5|x7 zhz;p>7U%{r9zMi+h(&~rOGHIXOh8CZO-oBmPEAh3%|=d5PshY0z(hySz|P6T$6w|KlwFYZLnY_^*e1|Fad`&I9)W z;Px|s{SaB}K_N0g2_Ru3-NU|j+l7=3ARz(wknSV@>hK@i!~3X6_mCf;JVHZ9LTrfK z2S|VB0T1pY@=#D8A~K&K?jk+IQcA@bvPA z{PsF1I3zUeP59fm_=Loy56LN6*&lOq^YRM{iz+Iss%vWN>Khu{J370%dwTo&zkG#_ z!N(^ir>19?zpbpUt#52@Z66#S9iN<@onKsDVIx4kcmDwZJoo!YkC2`sW8=KKcVE>c z<{tp#;s4hltNo8a9Q(fne%6R80V(I1K61Rrnl!a zZI$-L1vy4EIqmVFhuv>Ps-lf3AG<}rOU!#U45f2RN;ALE7O9K&q)trKp-znTolaJa zg|}%RN~aU6;?>x_RzeL63Q7%#e8ZzK^XT|WeH!d(d4!b*of1Q*@*MZ3#Y1CFSIQ6r zwY@%yCw}wub%78Lb*lw)<+WXeoP0QkFv%@|j*gxy@#L7{M(Kt6wC(zK-hc)cUyN3? z{X*BPgMOwaI?8JarLMu{mOVmD^vpU|KGvo=<1w7 z#qiZ-o7ZlQg_Ur`J}#|~NBlgEli-02iWNpkF0HA(G99`C4s={GF&D8HasE-To{^u6 z-<*Yk3&+%(U)MNozsSCZ6|uic`lDd`tM=qh3LDUeRGj{fvHKhDY8Hivz3AN^1zFJ| zF@~R`%PDkCr7Piopc5)eWsyhh>K1<#bXIq^bneqtwWRGja;|O{m`C)}0I`4kN5Mb( z0E^?`rHc#6do+wdf$A?bJpZHMAAP`&PrmE?-N@gO{Tc_r_n7Cu{hG*$ z{{2L*Wx%T2NV7_&NN0GVK_C{R7j1u&^g^bSiZC^XDq4d(Ix*BfU6<3htCXdDX~Ws& z+Xt1=bSsTQT5v<<=H5x(S&6HHH!AF;t7=_-ZH2C*8H)lFBtji4{WjKqH-9Lsqo07i z$LY6HUn8u*<#E^&d}X%bk*o4f4gG*%D42TZSm29H>6j}O37)>%WO)MsN$r>9k?YYc+J4Es8vE*Y8| z0xe@~ilDWoR3j|`ROO=KL|OTvM*Y~62Eu}^tl$GRQd39g| zu$;IZy@(jK7__kHm(vV3tFeA`u3K*AKc5?F#W=;72E};1#qn;wG~Zx=owRLxCxsR) zOE=S{Cp~Zf*#4dbe;kvEl!>fhtxI2?Dcpj+kkPDg5OJ9eK6eD4hoNI~c!Z)iFrO<_ zN5ZS-IY+?n43-1;9X*DN|>+J^C-c8 z+ix&yQD^(r`tHUZKK|E{gOY=gW`vTR3saMI_1=sdc2{YAeNt+p={kj4Hh8MVCnh3B zsjSb{zADQyu1qOz$0v1a4XhMPH6Q~bemIE|x+>OJqufUuJ9t^1R3=X+m#~x@t5eyb zf!?PVt%yZo%V1q-{w{Whx@D-Kfv^FO!5bOo=I_L7m<*jeO5#l+^k*R8u71Wnnu==M z(Rf}QX{DHGU!KsZ>T9C%Cqo|*zxGB|Dusa_(Ij$qfT(wl8kbEZQSh3parxD!oIeK% zA$Ze2H9D7jI*zsnyq^#c9o9TqHCQ#uS~V)}m*JEhPRh%7zqBxQr8{CC{B_S3M3b8_ zv>|^QWo%JuJ%sCFFSez7zFB7X;Pns)c*wcZ#rWGZUh|Q-_%N3O*bPxL^8Tdb(K=C zI&VR#wTXkhQNOxA$xeJ5E88z9?OPfSd+FK!UXiA6ysrY(N13QYvwkE$#?_Pt9T;e_ z)gfQ}8S4Gu)e&AMR7zCIff>qH*3af<<1hL1w?gj+WAdE7X$y)paSb)2s*^P@d+19{ zg!wLW&{j~*mN z=UQ42w=n9Mu_eZ(_J1N3)E98pbz!7eRo(MB;jKSiA6?CGeGnJzpd<%^xk1?ka?v>V$?6W`k3Yc?~HxgOkD1zw^-pu_rY3+TS$=TeP_r|(s#(N&H#X16lnGAvjcQPgBH+84P_RO` z3ntp6pk*UwWeOo|JR!9OA*95cMvH_cFGd$Zt(RN+15DXE1_lSl-?RXsz`qd7-mNa zzs^rK^{o^nRgS(^OBC$7gpLVxH4Hdahz@~tcg>E(S90sgY2weocG?#MKw3L8tf%d4BM9) zW6sf+JFM!!qyfuqCwyfJ^8zr%|5p6`r7>c;t%Px=JOrJAmCV#+`_p=J-B2wHSF_a5 zG>Tn4aHna;a$7_yycuw@VnwnT0ZFbX^rqr zO42~B>FkLihE<^P={dm72_V}XDF_;{CB~HJ)qJP!%!OUr5TV&RlHGe-%Jca|FkC`Q z(@LR~_{);V-`u~yG>7`M(ZU@u(w)^LIMBB;{%#er>zE^ItKQp~Mr?EwH9T~R@@unJ zF&hN}zRelBa5$8QEy=#SZnOE>2++Re0uCJQ10Lu1vu}Z0b)`E}CY$3hljIS8?F@zW zzG#f~lgOjnG>;5)pq%w?OutS2rR~2t@y`V9!9a33+)edCNJROsU2{m6NzYt6I`Xqq zQw76Y4XW@Lvk%OKkx_HIVaSr?0B^>hLuqIDALE<1d_Z5cqK_q65KrT7i6EW9QdHx= zxp#kQ&IQ4@>ZQs0LNC4|$k%g22shGr_f+(+U90sbg#;xH^q-a}g2q%YJqGpsBii2` zV2~ye$Ueph1ZI5y9Lf@({}|uYu+Q1W@0~?3vsDttlgF6C5ZoI0m$v`j1X5RNvVm%& zh4UWj%MH_*#k5^jfuJh*BsdVh^hPpyEEx;?d!ibhOj^SWgQ{+%Q|8ZqGND*R8eT* zhROl)q`4Q1r$fE(wt5+^+vv%cP~Jda^9ICel`Nk_cv?pgI_T#gEj2S|Nl zlo|$DEF-}!j1JUOmo^rTSI>`>Q>iQ6FL5@=ujFx-=TGQvW`ZuP(X|d7}BMhFt3XCHxnt$0B zjU+@U3u1&HHTywQtvGe&zkn>h&fM1>i#e;S`7|9@ZrOiOrshp5nNX^`gOh)*zGZQt z73q{6qRm`C=rOMa2uA^cU_t)w21uwu4)G;EU4nOWV^p3^VZc_Ig-JssE=DH0xjASD zhYn$xojBO4t3yF|(!bQh&eUE~^|YhZ9{qej31ugh*}zqW$$#uMrywZeEib$~~I* zStcFh1?%b|e1_)sU%4p+H<*8%)*^-oVKPNJ3zY4|E zR$0s*jMY*%XsB$=Nmv2DBXKm~AZ~Kno+6g)t`{)8q0fm{SF3Tj~v zC&QY!4G!V~3M+2be8Rovc?q zRs{w$SijgeuW&6}Kzu8^D}(M8XdbLQb6pzfHU*A9Sz0xz3=O! z<1HFV5{Nw)PU%nW6Kr6?*rM$rUf`6U%e~fmn-XcwV_H2LIu&_M_6Yw+vMB4xv|(9a z38EN1asMuMh$42d31Rm4ex?tN)M@J=eg48p>QVy^g!#4cHnG$I zB8X$)--gpa8$#-;jQz5e_-c?`o+>TW5vGK~?3p zg<{+YUdA@O`IfIQ+eo=i^%iQDN3CC92p9Zi4Ik4b8=@qGO^GK!{PK{>6TmO@o z0C&An-=^G(coU*jfS6ahDjO}*mS^(Sf1S4y-STu~SS`{v6J3}$9KjpxL2vty(}kjw zCAVY-ZbxeUP9`uDE z$O6hdJqA(V5;Q8_cL?ii>s#YZ!PN-2AKn>jLeVVt+&=Ax6VK)j?W zRhoS5eUM#JRPW&Ib00yAN~VLk5e>XPy=rggFB&3hYzE`PSXX5mS@6>^>tnz#tA8DJ zS&&Pq4e%qxcftvzvPT8KNqx1x%lL1Dl7d7iKEi`!J!_JAL!k=F;liA&#N_@<^crvu z2cfm~X@+L;j#F<@$MIPk*Ow%T`jWQv1;pfqMXOI+_OldTLqMW6JNjXlq#Ljv2Q2=f zeb4yI%6BsM!_-PEE37b z5%iBQCnvkyYX`V){z?A7&LHM0i+As~F(usc2B@npn=3tV7aW961M>NdBdLNOHZ7@| z7)#en?f?Akl6VKtOEFQ0!LonuvicSn_c0>hmm$n`OO+Sw+Fuh(<=%~LkCW+>h;`zH zK7x5^@m&}u9xR(4ME)ELdbhOfOs|ptct=V%6+~^G$oexr#zroQ3gfCwK{-PvKDNg( zZF*x{KgvBt)PcE*L6nGXLYQCunTodwEB^H}sj8gx^)Xn10NLj1)*A7aa5YT~RI=~z zRnC@MZtB|VOTq>O?+-Cv4jYB0L+}MiBJ(_mQiCYnlG>2y_XqfXJ*z64Aia?sP7wP0 z1B$;t8%uLn*&WXANaK#3{tuQKDSryb57ko3R<1niv}e3d2!UH6-?ydmahLznhK4#^ z6K}*MBHRL!z(<2p!k0%o4BbX}UK^4&^}ozbN=5i$J0;6M2YZAd{#1+K2?bFvv>y5f z3p{5`3tHV^IFdoQ#I4z0A^r?(S@#U4lqdpm;_o|v*Ib??`!biYVzLn^Fv!2C| zsG!bKj}~ym^?m7|XT*P8ZzszOM&-&gr|W79RcaOH>@xTn@m(evyQq_7g@ru6Vh$I0 zsM&k8=Hp#P@*gPVMPQ;{=4FlKFX$+Wi?c2M6(&M#c}hW8bv4)7!|;JS&PF&3yEzB1Mk;w>PE=52_go zeye4(<~Fve_|3QmkH_7H-X;rTIeR3RJr7OZ7(6-muK96vt8fHetgilZbj63T0e~)s zL@Hm~3j^|?vls{r8nts=vJIHC_9z*xc37L5THRap*?$5Aa*xcNZykoKih^r2-c>}| z`AM!_*?xS!f__`s?!Hzg;(c(iC4Y+oI0px`T+VKgHn~FtD^wVUnHpMu(`|WT(~}S) z+ndk#{i6Mtz&wB&5pj0D(8}LS**i0qiE&rosIX@4&BROs!%&0i?T{;1RI``dSr`Bu zh(T}XvwWnp6C5AqHt6{|fY5CNxZD?ho(x!-w}}9sZ@;g~&&pFYSrn=8SGg&smQGAE zmQ*Gt!ms90Z)tz@BLSteGG(_%!?80kN_dDS-*|bcdJ2b>_3P1L#i&-AA0Uq^F8q(Q%{#RPlQ5ZnEdRu_AY`(-~a0g>aBFQvORh#28f+Fc~ z&!2@jl|}?WCZi~Sb8!=FyGNOaqM9>L!ytbf?ipzieT`U;9zWif_skDx=hkqxtZU>j z^WzyykuTp&q%#*|0K~^zTHF$P+$SZ9h+MU1lS|cSz&70^z2z)fwvZOYZS z4vSFpWcLl;XWXpkiFtTfg9H8`AaF*&-$|BhF4QtVg<1D6Zx?DpHE=8|e3T2b?d?rb7c|fr%k$hX zjHo2T0y0I1_n$dmG8U(BHNl6Kc(N2KCaXuxO1)p4H6hA=O?IN0Ln3>35l=>^>c_Nw58 zMcP(I+jQb!ycD}7nvQw^koQWiw91a|sp2U?>x%Xi+?HK`NG?<$SCXLt;wb^Ua>1Sc z@>&gJnl&Q%h@J#=E!M7l+O@g|L~l6@5I_FGtmwR+^GfjD^e{ znGUhBe(@&&fDQgSk=ewz7m5ZZXE_P8HsfoU-Lo*gh1hF)02rX=X7)**J&`^$rkOS zs;bK@4Io5$#s86=QgV{?77n~VW7yMqFsR020c>i>y zKIbkM_po(~kYaLn1M=6i$e)H_LSPB!ddsb0`0T?X3|DhQQSrm*Cl$)LWKrrL2*E(? z;IFLZDTrUq{bEPkR)Rt8v2uM$vD^BaT{;9njo;7DJ!(URS+n45zi zequo2@gC8D=WOo8gJP}1M{7mP5qUmWPCp`ccaQ+W_7NHMff*`8NoUO{6&wk?p_3lY z%Q?P<1V14_+>F1mQEZX)lqf|tO3`4edM(QGs6|L=pp_WNd__Dxm+BO8sgN+)3Xf-K z#FI6Lpf5Jl|8N8Xdt7|g0$Qoo>$pS4dEs6A)$5qFl`Y6vUqlIk%&fE-?$ODZhZBwP z1f`vQl}b1AwhhT?K4gG9QEcQf=Bnxoc`f=vouWsDV8OWw9_{Aaj7l~Xz?z%RkpaI^ zm7=cad5J~=g9f)}z5DdiXv_EhRs_!Jz2&naIeSV_Tl%~x5p@9g%)i>m6ks{-Qv=m7D~#_9n3oM^@SCEH0UDy1_% zjaBT;rw^tPoWNZ!kEQ(X#0tk>&7!(7D^H&bxqr^M@Punx29a4EVMNOIc-7Qjvg8-( zi8x%XOy9(O?Ojarqe38F=sNc+Ok8Hp?xALjD$bYS

K@IUFGivWLLvfs&(+!S>D@ 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 JRAg`9{69Cr#mE2v literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_files/void-safe-eiffel.pdf b/documentation/20.05/eiffel/_files/void-safe-eiffel.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a736f52a06f112ba2910a629a265757524427682 GIT binary patch literal 149618 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�d3u>{9OCjU^!dIB-Cj z7;2ZPDeeA5{)EI}nvjZed*vFTvwkDn5REIV4F1i|Eq=VIPSM!#a@Zfm=YupuQqejI zoxe+`%kYZjNKDcmr+Re>U(v9zG2SisYLl;~XaUw3WC;g~AQJCHOb|-!zZJLx$|~0# zwqNx&SPhma2q0LbJAZ|whb&>dYsdN<92zi97R-my$P{D}fjv9yM#)QLFO(R<1wJBn zHSc4y>j8J&fFFLVl*nN)px#@`IDT(%IjYK|o1$EZ+g^^ro(+*6_HO6-B{HcgOL}GM zUu}#1O2hw!@g(Zn3u65|8KJuY#>&eR45Nqr=j&J*P7q%{RW5`utDx&rpH`TlpbgF*XB2)dTE1+FZnERVq(@Y z0XGIGyZgpz6`W`4;T#6A1@28UrZS>DToGaz%#AUjJhZQ6*e&hRG0Z`1LqvqQ!TWEmnekJkQjTjG z37xO!hQFTg_Ymk;^s4G+?22wC*pqo0)~(ACZvhNxV8xsUTR~whYZmT7e4QJ&7mDPI zw7QpJ;mJ=U1jQT*r@abON1@}-TR1R=f}K+&HjGyBI>SV1#+C5P3}3Mh23BIITAl)qWjIrz zlw=0=trh+jYyyoy;Q-%@_c9eaY^IcWmySFL4R zHe`S{ev^T4di|7vLn4|ZzIejG3#94gK8khNwu&oSgnI5C8+DL!PH$-d<*p=8BxpL< zdsrc!`Xi^%^@dp{h{q<}9&fYa;xk^_|)u8m6FhMIz2zr1G6OJg?^-*-ze;D;Y4RN@SN;3zj27lF>6IlJt8N;xez7a zweS*)cCe)ltewUaJj0F%_>)+sGQhB%=%CIVDB)4M6T1&eO@@(@ zcaZZgJ}jk`#^2f-p4>$6m+Od7bVVj0_?9t5v$M*}Tm6Oandn!Lv#68NVai)?)%PA! z0&NJ029(|&Pqb}yZHbv2(o{m$g4jdBsU2l%&&9}yF(cBUQstFMP#nb7EG#&3=NGMM=j_Xc`_M6P zls91~HcIL6Go((=KgF_vRlCTFvmv(SwGrG`?L!{LG$^LB^#l58^>8zd9Cpn#{rD#( zEq!L&!PSCwp){M;#+t4OL~z}AF7kBl@A-pU&nAf=zU{&hqOWcH-}b-K(iTFajb{VT z;JdPYB|62Ux7&ofETV6gtd>BiiR1cS5c0e#dIwJ+XubQ+zzFFar z`ZejtFD=%v({kjfpQF?jO^&kp(kb)))q(m^`TvG9}{%6jKuWZh`?52 zC0tcv)+)mfozFdw@hGTAl(%oAApDN|WwP^_Q}g>AHP4t)Y<&T^Md>|=RhQuf0(v`@ zVO$HnReaq)6-CgI`>P54>$)Avr&}Lu%#WChh>YXlY7!9sQh%)AdSsR88ljBY!S*Y+cWP}vtvlp zAe>{E9(v_%P7{mhY05=dMZULpSC?0ho}@IZtT;DSzPkmnp9!64ZqrQNTzG^dxaOZ7 z-!{WRdUcmZef(p9KRtt2pjeA4eEaBUIuA3}>Pnr6qNCWuJfLw+RwR-}G+2#Ix}H)2d_lXeCOq zpd=3c-5i{xH9@AncME(UNtY)K{R@UFLXn%(T}HHnc%6Hp=~otB&^O54^eHt| z7@jM&`aGK?@gae`2Q7I^88tE(GEs=Kr}4_7ZQ_PuNbL+ibfSPeb`Hy<4!W!JV`u8i z`|a~1_UolT3ne=!_IiXr{(Cg{2p3);gk&Cn3~ZT1$$;f}*-)B5pYW&cT%-?ocG!0<$Y)?!dl3;|SBZAh}x z;~~MrvA(xcwYkwUs+~6Yf?N|(E5L^3Rb1vTk=1;2M=Da}sIyh*cqpWni4`;bB7wLl z8L>T0M}HAjeh;0h5ZwD~-G2Lsjy2q5_|9^?N=_F!Fmz&`&Ch~lq2@qs5ww!JSy2Q{ z5~aZ{jvfKi=?~Wg!AZ@sJK?@6B%!!zc_&2>{ZX)96_Nn>XL*ifuQl4Z5T)<_2^1z< z>Wx|RKuIutthaPjf8ze@mwukO*Pwv2#kJq6qwRvsR*xoGYX(-VQdt1CVzt%dbKTr; z{m2X-dsTPUhhHQXN_16=#Qp>v9i4{Vg<_sdfAOvvK}KZhEw}nN|U}&^Z;*J z7W)4xt@@v(D*t;3$M`>naR1F~(;GDXY#Ba{1tV}Ag}KqUH;z4)KI)keA3-4;>QuO< z!y^<_LM(MlRibRk*;%7@?Pp&54VN^RAvZeH`ftm*?9{SW#Tula7DMT6&wW)7<>ny~j4FE;%0$%|wu7L(FO1s1rH+gi?6%4?uzNrlu_we$i;r#>A70WNniKFP z84QWRncLk}@yZbCBo_*UR;EXpVeviI6TltaCecdPn;gXy&zu> zc1{#igd8s=WQw==%wmr)Cncg&@*k zDSvgESC#Rq+864*W2x8Je;a+9FQ$-zdqAxS2%FfsJb}nW0_7+_OcdJKRv* zY^F+HR`!M?zQHn)1kl;nz#GH+0=Y>McY&Y%1f>L%p6g0aE;W~Lw<9bdLhKL8?#?UNo&%{cIEC8dSM1r&sW1;u+$!MNK>&to8JGU z(V_==vs`C_!aN^ix?9-ioDd(JUYSwgt7O}E)lS|5_2>I<5%(Ggkh<>=5d|yF$vj;^ zEbw2GcnLK-h39}!SEHW^RZYx0m(A9^VLzpM{jz7661J0VELid%`IfA%E@Cbxh->Tl z4ua58sow~+NNThUucmv%sLcx{l4E{n8DZ}=+2isNv>!tHV#!}TNq2%Kh>`%6pQGJL zpY{07*D(n;HZTKF8|S$G<_=?}wf{teR{~`q!bIxp*(An1M-voyC(A|vnV4&i+9ipF z{xh4-a6u+l?vQYxx%MDM{MK}3snH!Fq4PDn38)6OhQkyREPzP%2Al&c;DUE)+dQA4 zea2M0A>0fwfo)}&A6&HTACQcN-#7kI&99!OF!p;J^bI9$k?}OgrO+YoMHjk_6@(Kq zyBap$i8L_XtTb=`6CZLt!#K~OrstFenpiv=d+r%Nz+tJ-KJqpmNf&jQPdA>TK)3WzoO{7a90# z2kg8I4^+3mt%!Np)bPAwH~6zm5UT^*q+o1xtgFt=de~J3e%Tz=blb_aXHf>oDs#Xx z9`|ybVDVu*&k>2QlNemMyAKt%Hk{5&Q7S9z+78m=h)FI8yD9LLXnBve7mr>gmjm1< zwtK&K_>5igifgR_G}Qal$~yNZ2p+&b2LhC)qBU^>-N!WOV+n;QH{zJ`{^YgBWSPDI zh|ejVxq9s+F8#C}62whk&aPJ&QtRh|vu*5Gx2SLMA1g{%l&5MaD0$UA%uW(!gn zCF3gKeCYn$IC77)H%6)(GUSqPC<|o65xtAJCr(N=OPL^?!{;eCft@=Iv^Pey{Ch1?aJHZ^Q{=ALr;X)7 z92K{{RWbX=vi(-xb#MQpNzF5mEI0g#FHCdj6wH@V$xp`hAH<{L%5b^RlTZ8s90 z(O4!hUE6DkIIVK*DN8*=xzkg>QQxe+*Nq>^oa<7qmIqy1E zhjrP6$QaAN|NX^FZ1CnvzLpNvk`(W0OkC``sVwzJ6nVwQROg!E+0H!*;<|&NL{GSP!5P5as`KoL5hc+;xzNt8T}0@+DXs>y5H$6FQNyl_@@HDy^B5( zBQ?JkzYyDct!0mv4tlnV`WJ>vX7MOaW)1hz62V$S6Vrj}+FE*#0ROaHPnT?R7DY~8 zJL29iJMxGoX#bklo^kOceyQUNk~EH{yOqvN`*nL8-A9)No&5?h8IGN= zZpvdTZ~Sr!sPWjs=g%7A)g2&K9?LQID>XZ5Ry9}~(m+S@`FEaw%F+-EaTZD#xe(-B zOZ6uga5Xxu`i5Pl-SRP!{T=EB&Y93y5EZMY7ryDYjPebf`!t>znB1sBW4bPLs$q~2 z;A9@x?Z$xf2R96zL@8P3b>gvFo07~6NM7LFWPQx(B_;5c7K3Qu$T8Ujprid=h4%H~ zWj&zzfS&s@%-Vi`qcCBBE5zms$069!b#wC{;^oFR-?dL7@lSx(b>O+t1+<%ee?g=v zV9ML`SdEq}$(0Z%z&xyp$=7;VvrAx%F>W+VB4m@rk}>u#Mbaq9yworD!2$WqvvV35 z69}aiqA^Y5#6lg+uG5Uw>*O^S3X{^F96g{T(g7iKlg1P9ZgKscvg$@zD;a9SE!Erg zI}E6C{H`~Uq2v8~Ha=|zXKA)yD$E3$ja=Zwv&MQa?YD9cia@OxxLeR`kh6E#EBLY- z`S`6EV{J_K;w5`(itu2%g_B?1_C(HRDzMe2hA5OJBiso^leTCHr?_=qVNideNdox* zX?~Gs;wnG$+sD`Zanaj4A~6YhjpD(VvRd#q#?50xwcYZ2ej;m*^4DNwzLGONa7#gk zdvDMqfZlJazt5Ce{M09H}cSr+~r0H`QV`Ul*kKqlwXVHXU@65q}G>*m|ZmubH3_dMQ(eIhV^l5vBu3yiNeTNA;y8P zro#39xq^JImztoj$Em&^_JXI0$)|xc*j@-S`6*D?ySIBaU&vJ>MiEDR|FHo6OLkt&nE97jfKM zrJf_;obGX~fXK!8O%o`AUhOAY%NUkH-{Oz0(_$p$I~82dpx+<%QeTycp?t}{TeyP> z634Fdyhg~TskP4WIJYnxLy8%4Wf9P{2`!lBeE~PSZi8rb@?{}H4^BxiZhvugVolv1 zG-K!-k%$lL+zi~)+f{_CI+=VMNnG&Y{eS^{$OYyofXnGGqi}YA7lv_1i~zjB;C;F= z#S?!*SKT5UIV*$@yQ(kO)7yi$vH+Sy$np5K#M#La+nkowX#}-|dXp9_*9s4d(C9@G zR{TqOfwXO5t0ENhgZzFA*e>mEdvt<@CL*XR+JzHt@7Gah$~9HNB0p}mp7Jzsoxhch zqs*|1Io}*G+vI*#+G_}o?}4*qmw930lQS<`imz&!epgU^&CH_uV&KW=vEBesmJ{Kyn|Wgo z>+--5r{S4I#N|WL_`;(aYqOp&PsG#%XObAQC8Wsq!=We%!(aCkedXo`6sJhz_({+5 z8kUP$i6!E~TW*&~D3r)-UyW~|jN^TQBwMQrf|vY*R*dM&D)rJvFyxPDsX9>8dS5A@!#gn8ej=WTg9&03%y?64GvBwH8O} z*xel8T9xUDi}(we5Pb}()@w?RH@xa zNoo2I;lBlc;6`%cYAbEvfH_E@(37T@>m~S@sORY0J#4vn=!83IQtrKFCYW4AYR6;5 zk%92$%a&U6e)yexFDON+;zNAr&qS z;eqY5+pcVz6DsRf-(l4@;c&a04401ci}dA`MiIUo$-sct)d-Jl^>Cu*@)^Lxd9-^Z z$(r~$UBqyf%iB2x6EYg0502DD3Kuf>RQ$c}NLf`(oLsG(COVX`$SL9Ki zD+|#rF*?Qld+Hg3Tf7Y-q(XJ2bSyqcuD|WuJBvENNw3{_fDOs&^>ckUeOH*~S)V>} z<-Fn7fdvR%Lh(y+_m~H>n1+sSB|^HNJ%=X!KNZj>S35Sl*>}H2YA+bJ0|6SV2`@ zd~lwkl4Po*6~>>)YM6*7a&9M7&uUu(L?(e2VEW6$AA3$=f6P;r_hfE&T7kSiR#JF= zG^16nO@k~Yxs&%N4AOd+_nqD;xMDOyap%eXW?FXRtJd~hd2|=22x05H`Ti+aCspst zS&j#8Wp*J0L2*m#AK9ry;71|fyBI%T^)iMH77{i$yF`H@CXV6~qqy}hwXj+a(atLcTKRC@wL=cs5e&G>TZ>+W z$wJO4_U+-}+;0m$(aU*@ zGl@6&g6YJ@my+@8i5@Fub)DCR-aCsk%tFVk`&)zhEg;dJ@C7A+h>y3JxA)g#f{}>XBX2>>B`VxVe6Ua!6PpnW0s22#*r7%7C(VTi=cm4^Y;**H^|lhFR@+JUJ$QzlxM zr6O_8+fa@#U5UUaT^bumJm1$)k}(pJEIF*E35K$wT#kpPNh9ro>6w2~})0-Pr5 z;LaT>LYa3IhNxbxEFH}qLInfnrdvOvM1C07S_A97van;pEyHz>nY(W+z$%NZd0-BoFNK3l=L7U)owP8+fjdW=;__ z=nL4lDjojX_iJ0SM3(V-Dk748AkMk3L{E-GTF2u3ceXLZH`8U0Idj!>BBxkQl4_)a z|8t=F?=ZMm6#c%jJ16iEnY%%=&V*?W-t1)L%e_Jcg}bTCJCArLMsd*5*LMqUnu$H; zUqx~MvjOG*Z?5?NNo)SreG|E~zoj+&-_n{>IPZU#*4Pe<3y1i}oQO4ddWAvCN~)2U zXQ~t(zX#NA110`jt|(rDQs*2~@Mp#Z5mMU!O9DNv5W~1_opKrShc=nCwwJ!@>32xV zmrgSHuMYE1c(MP=75`zF`OXvn5gC48|HDA@k6iITYJUG!?PL0Ps@DITT=5^F<^M5P zWcgQwu7BMB|61*1WngFi=UlPl-_+S+4&K$(|4?VAkM93*HSx>Nu4N2aGRuW|o3+NI z2`}HJ6CNW`W_{SrsloUJ{VFDAA{r$jm7vnIf_2dxl+@XE*cCFm?k{PgcYP_w;C;W| z*}0JOdQRX?cHT^t{+N^H{kna*?C14K-Ysi?d)c|{?+-**;6A@(;*Asre5K>(DRs>f zg>U1N;yt?hyS3c~5{M1-gZq}sad&Kb-|_rGJ_y|$x4`Y?m2O3AeIAzx8H?=*p-Wkd zt!R8Sl&v(l+G#};{%!lR2%aL$_FIF6%PXH}wzC|0EuYrqy4yo>QPv492l1;w_3QOo zw#7|2GSxq)$mHRkI@yO^otuWU2h8*2bf?<2yKjiswRYL*Is|`|0cuCIx$G)oBDKaE z_l*)^nML*W7w$_sdxhf4VM$ zdvy8d-O-j05|FuD{z|KzQQWgU6*Afz6I@}1wsixw;^?Zdwe!KJTyn+8TGGdl)6&q$ zi&`qqn|aJ%et$@q`Y7>y?4v+K^5k_Qn!v##Ig!0Hg3} z6x@#?F&<|;(-_KgcXLCAp4<>_7ea=qz_|s6Gz=C9X zQUSOasMNOjc`Y^v4gXi-ZT76~cILe_f;SH;pH&2JLV(x85djttcIqth;upu3uw6l~Rx(o2!MuEfIEqRW{O z0=|^xZ0P!sFkmZxg~UMmru79t9{(ymWYObgOBTR^y+wIlbnfEEL#P49z^1PFXhdoQ z2?R0>5QF-}_0EqBY-t=cFI6N0JX{$80qmXC_;(eC(Etq>cywxj^L&Zk$i53VpF5t+DpAhpCXKwK;yFJbO}9`;Fn7D#uC zf$T33JtSr#UUUp`Nx2QOBA%WMYByjkP?zhBQQ1{u8-9EZbhJotxcA|sFUCESUz*kf zngKZt!l8A*jzDEdM1(l%kw0Uk%9GyfM$Y~$v%G-_r485BA%NV2QDH5}yvFmV+*odP z!i9C%@*^Fml1=D|K*XhL5!)Bo0F3Xf|6%3k>q5y5B`w4y)@dTxt@IeQp~8*Y9#M4%$Ff)Ji5 z5@q%g)&M6M2@ulQDNHv={~g^8kXA3Sjob|`5S1nbCcU|r${+Cxi-YI0(-T9}gibsB zv3w{AVm5l_daVx_VF$(K%-t5SLA+C=ch}st1Sr!IT;>(A7ZY0KennP`g6k&{3FT;A ze?*6)p@In7B24zNL8`p`S?5+(2CHL6mfIet!ePT$1ru(_mF%+3qLb*GXSDs1t`H;D zl0228VyTCf2KZ+>ch=W+%KB9PX)zIv_jggJTr*|eO@3eMv{k&oSnu=xgC0bC`?1%!OKp;(Gh zJ#}!XemxzHg?$VU^1oPn#~@GItxLab+qP}nW|wW-wr$%+m)&LCRb94?>GQnLnK?6a z&ioPc?T3uW`;Lsr%zf>()&@^Ez!9~rZc!8yO^DffbokalV78EbDZ&Iij>Xm6$vFQd zW$oB8YXI{(_42s)bL!Gb>xjcOT1Q!Ridyfj{bKj6G3XpcW3;cx0bi5nZZKP9$M7Mh ztBg2P%8kBSa$#$lFI1{O1dI6COCTm%60iqe?5FD=j~@-KJ(w#i$e#q>Ales#mrL{K zN$L`#EJ0InDNOH#-hF{YgY=X6rtZ+a5l1GHE}rt-ST344OyPc-f(y1^aJ=XV(C#X% zL+}0Nzd#VWKYI<~|fPXBlM<@N8U-WLs^Au2z{?!73r0b4aQ` zX(9)euhL3kL{Nz#L+Dh$kA8XDR-a#uNoXVCM4Wj73u zKqK%+ZUGho4lbBvt&jX6P2w8z^o)fN-{PTSsx=tBB!92&cV*yg773chZbm*x^lHNT zGfVQU1co&DlM3;H_}kON!Dd<-tLRg>m;eJvvfmge&Q&`Cw#3wPpT%g ztdXIlYmYv@%7n252fz-h+SSsKLPQ_2LB^C5TuzkaRkt3QU}|V;Lv|hr?HR(HD(OTd zs&~ef-E#I&74TMEev+NaCw%+XyX=P8@b0%QC-WZA7pPK5nxfC{S;p;Vpr6VI&Z>E; zA)OU|x&@-WR_U!*&AeXo_)DZJ&`$C)g$*y2gmw{3|I|0Ag!~1n{3~Zx@yA(CDCaVj zEt?Dox$tB+yxBuah4rj@W@wQ~DI(2hrU{v)t^?*UL;6u<;Nc=)-R0vJ*x8Md6hDuH zX>Y;u9`_}3Mp#(G=w^9LKU|vEeKw_ipNUn@!>o7GExvWp7%FziPJk(Kifb9b@VQetrOzKukS5*?08d5x?yVjmJYy5b5qbz;c$nKkp}Xt?>A z*M0^9YQ)y01L(Yk;XJt7K`H@p>bfe;JNnnTk5v&AS7F&9Sjc>~Ll zhx0E6rla4VtR+k4*JpySpkFqNenYx$r|p0qj(u=E0K0ul$eo?A+g67Z7N-KkezkG) zQ7<6&9_UDm;xW1;%Vomeb+10GkB=CgGs$;);(@*8TqYUDjzmRm7#%{@Rg{*Cw+QV~t_4Q%3#}%by3#0mQq(6=HT=V#;%*r)OwLHm zbOwXN7y(FN@&MnwwZd#s%TAi-Zj4%SpK!=wVS!oBML**)ScB7HQ-Fn#xBELGGD5Gor&@(PQ(=Fr?1xwXpVAax`3 z3i32N#uz|5z5eLomqQ6dqmbcj#=5cYP9g$G0oEAm8zJ3gwX;d9h6(_n9TlHEXXbr! zEWCD49UsypOki(w_9){}zpc4W?X3(6X-ndLh(~>JCF|8Whl+1|znw6dkPE<@ zbEvGa3ummne68FY;3QyM5d{k@u)+~YS?MysNM)5&axBHlg7#&Wx`KCIxyA-+RC-C^ z1CU6({M{|}{yIUCZhCv^mKV{|&12WhPBBy~l5U2?q+{&?W#`wDdrZc=D8924neA*&t+v|hnxM=_+Q9v&2Q)cG#TYmcjsuO-q6r-``?V81h z@-8hxCwaQqWxCb|2%JfH{%238IF-0>c91EOBB)9uF&I6RGhxOox<*k4;nv|Be%^|H3-CQPeN9#Sa7xu z!{8Prn0djre`#a~|Fw9o;0UaiwgTe+)19_0ax<^BF5g6HUCXOThotAHlXYSg&7vBp;c0%=dgG`Lfhu_bq ziHGa_3Y0a$z(|qZst1Uy7HD1KAlXbcV;c?&DU7-=Dh@!*nlXOFON`u zO|HUl#7gSt{We<{44#AU6}4F@R2IpM&=$LO!C)%s*?eCx(NnccUpDRmF*eh-*+OSf zsdCEWj=(V(vh|;0#7VuDC}g|)BsR;eJ`y^G!{ZQv7WSv#js>jb1>~_h4qmle2u(Es z_nHy#mZ=lV$`9)H))%)9rNyJX9#1XBDg@O=tJ`!VH@2txo0jnp)xrgyRsplf+fB)z z4J)8CL%F^-PKBX9e69PUc*hjH4R#|+woP-Tv{ZMk*_d+SZ_0zN{=@#QtE$7L=q_+| z8^_hxcjHGX2wEd4nO1&vo1#yq(9!MegVUk4)gYaX0&^e1EdfKT{*5Y#>WlVSi0M`O z())YVzLlIPw0dV#iUMmeTMk#0IXKIb6GLb-qbzW99KDbGOU{sn+-sq}%_svFf z02wq%i3mn+qZneFMC%Qo4AYAnd)B7#;B3x+C`pFvfr~;ubs(q8{1^+PF`asWoO>~| zuZ?;6IGu1@ow9wk6b+&fMcHt20nTSyhP-cyIc?IqkjnGMK&F=g+>mNv{zZA1-V}YG zH0Ja^7CJUbp8=H4<)o8ODz(-4g3@U?avO>i(x!DGSHJ?s@#hY4J2-o^LH7A#ao1|1 zxT8LCu2ZUra7TEUQ{@1lh$)_^Rn?x_$Pv~fNJa&OS;a3w(Gj8jFQJnt^dSJ&7Q=*H3RTO;qJm^W~xZb*DOn-GCob_Nl zWrV|Biv=)C>P>~0pc|qKNRm{lcDe;8t5Smwb>@i4iWu!F5?gb4r7>2@(HD}0^k%g} z1cD>L8l~L(3KU!n;pEn-Kau9Eli|S|K^5S+!^Da_&-=HR-4&`wI9cC_6)9ZUx<`fm zbx_R#OqJ_-oKtPb^D1ED_F?ZyQnK+S$l;y-#1qG{IKn1Ku!|lv2rB!(;|$eXb-wLH zO#)x`Q4DTkYktKq$n9nw_*Q!n5JxeOY5{@RiJQ@EwkQuDUH_S>RA%GF1tq^O6*QdM ztr^zlGg}7Ru*+60X_H-&Eq#a+~L6}S( zp*PQ!SRzWtEsU{^)OF(p<))I?k0k%~O#Wj$(c)LX-=v5+$2r0A?4KCZvDTAJ)dSqT z-S1pNaYcu4)a6G{-GX7eyru=Xhr_il&i8Z*Z?q(tUthoV7zY7ev$N`+&_c?0_S6h6 zsu+(ZrQ#=)MXqnCQKxxUs*bec2Kp*GEG%KZUVeYr+i=ulVY$&|ntMZUfT#hb^3&W^ zhLE*g@WkFuxVRlJUcf9Cf=Dy%RMp5z{P=3U;dKD?kmVv^3<6E-y*$ag8EnCUfiQJ< z=SIQ*;`9T~6>dr&cMsoD5w=V=aOn?orVf#0ITYneAOpp)HMDlU+DK~xK&G0k>I?AB zF|HpU1CDnO=$he0An}Fpf<%!EUN9@&8{LcsvWYitk67S-zMRlJ0)`92{1DYjhldU4 z-5wSUt-kjA!)qmBQ=R_};$-@VVfa52!vBreGX0;-*fi1qgV#>{#cPHCS6;gl9~n)Y zGoN7V^@@O)8(W{N&WTBRdKcLGhu60LgV&b);kC75QF>&+;^xpF>V^IU!1N1`a{Xef zCtTEL`_P@qd4H_sf@CBk|86(`0I+}W=AXd!uO0pog8mna{R3?O8maK-``^M)roV-v zOn<}Mzd-I^HtK&7i2m0>|Cc=4|K<1o4<2o1&VLJX|FOvbe3||hh%&Qtvi>W`o%{oG zH%1YC^6E~+k?K8HpG#M)`p&mNu#FQ$c}AmfF>oR>_rwZEh)ia@6@8gix2CE@;K;K; zfq;vkhtIAmmCNK@7FMofT^gpASv~HL-i}TQd%svasmH77;0`z1_&;90&faG5F@9Fn z`nLb<==qrtoRD>?Dy1xo^m4q7A&vY}#nFj1Zm<6l>H9bHwqbxRdPFJr_SHMxuc$0P2CEQl{ry2K z=^YQ&kJ%YU8cHP%lcur}%!)WL%HX{C>%>Rx@K#C@uEC)eZn|*f2VD-OGg=wV5*Xj+ zNBFG?UEdsdD4keTG?~=dQ%9TJ)*TLjMC%4_kDz@;WM#VG>R3U~Oq{XTWN-FeW2oZQ zy-#ef{vLYWM>K{$wXCO67MQjqLoRMqC54fsiL>|sw&S@jTo~@Iln5sWoIqLO$DGf% z{bW_8eHxs}<2o#e0_QW6RX5L5O;l=XC>hcx*B(c<{kp;38@bEYs|@xuS03asbL!oQ z8G`{PD(b76_1#v|w|nIsY;{64yopcn0jv`^IcY^o4&&9}xn1DWz%@H)sq14T4^Cyr zyG)}aG7l}~ZmOG@Gcz%N!6RK26~+fO2M_gmq~|&R3W=XH+!XbIb|#Wihzty-V%d{WBVtq-U=XXJaoqdD4j|h)&^G7w#FV=XN)=kr_wG} zWTh=8c`=F%IileKvYDtCb)5ugwx$iVhL70tYr`}FAN;RD;4YuY7Jo*HSLD8Fu`qYg z3>4g;UQk(%d?O4NGj4YtzsV=~PMp+C=_(yv9Q|+2jc;n?) z1D2xz!e)7EB|}uRP+b$)G6q}Ap8@}ziipCcY{i%^!vg{P`tu+h(RU5ThHeKQgqe+C ztR<|o3lJV#5pEz1GaBXjuEO#&DdO@5vD{)|>2GNu4%;&?CB#j)+yt89o*_?X&i4u* zHVL}lvgre5-!%jvMRS2(2sQxb3A6Bk)Z#M0g=bn4!%=E}gFz11+*54DHYu$#9+*vD z<6BLtC)o~)){K;do*s2F&5at7%*86E06BTnnk@reij+(VH6AvvYdnb}ynWb|29GYT zyijBzHl<&m&pDHbFSK#=_3qZoWl4u48&+4)495`wpp`GIe&rb=Ay;IbwO~6Vc$R$+itjx>uxb3Icxf+7~DL;@RJSjMz zjEd3-^a8G}0IH?O3*{li$x$cHA*+cZ>A#1lNxa_Ty2m>o5z(l8_)1dOL!6s1aKh~t zrF?tinbxVO+6vK;% zxm7|8_Z5#jcs-};KIXIP@78C~CU3l`rcEK3FQ7b!tYV?ekF7>&q&*IHtf;F`CK!`w zc19;y3fi}s$?2*qywACX5M%$aa5!^%n<_$t1H>gT_cr@7234?r;W7zibT#Wkw2tnwO3QC1~5yTrfSuQS-Y86|Ni(w*cI)N3>-ftj0*%xDELnz97V81dcXot7aqNZ!q{WECajZFNq@aPq z?BPyY=}+5VA0OPv5Y*6BBroZEwJb+_*U6t$suze) zNNqltFXk(W!BGl;_=7QCPX$acK5SU4qiO*}Q=31RgDSGH_#E9cVRQ6R)pEh<8zhBF z?;%HM`|TJTG;N6~C%8KDqqde!eFJV;S2kGpQx`fiH^mH~U#PuW2aabo!`TgWu>_Ra zI_)lOR>2o@f}2Whd(3$9k^CxrLr2(K>9X#mf#tZG!?(KxoBQ3T4JiJKk~9mk#k~}G zt;pWTG|{OpfvZsWxl%h}_$M!#H@%gUE6bhYyjwHLhv0@Bh;WE$PottTvUA?X9wb*a z&G|FjjNkBQ#TH&r5SYEI_>uIF`XQ`WAn$ti1MBCOoO3Kkl+1u`a1 zJ(>)upv-+)`s5QarIm);Lyo5`jLE&1^Z+1N8*l&t@!1}>?LIsrC%x31sQO6*CQg6= z4aZM97Du=3vu!QP^PjSMkCS-uP=z;z!9M7o4ex~(-PyJ-H~n{7pdp=8S+Wp)geO(@ zY43~(BJutC-A`-C5Pv4UBPfh4=36(@CT?KCf+QuJ5q9Zy_CRp$uvXkZ`e=G{9@Y)k zQhF;dF#~0s^4Xn7D1+r&lSatNdX3x14n_3=&uY3Bpbz7!w`sY5ekz~|*+_VJh8`=f z6>3-3T53{%m~x=eV9VuNpS|_Zr83I86eZ?7It|)fd$<1HeF~_DfF+~x1SfB2zzcRG z`jjR0$Tn4UsxU9Dx!>Z>6)39!pT6ca4K2J39K9nM{@v2!P=?d&R&I5yJX4C16|vl- z)`q_H(l_BcfAo1l78%{=Iur7mDxYX0%K|)@onv!D^4xJu(CH>fwq9JAVN%A;)G196 z1pP$f;L(InqUg{m(Gl@2m+K*U3nN8Eb8H#7=txUbb#g*8aiYJFMQUw(m zvf0diT^r0N$S9REVWh^JO_3Y}OcRxq*4S71l4o;rjF7#b6r|k_u2y)&yNqUG@_w2dzEI}s zM*g5%BDK9=um2P3*^bYZ9e`G$!Qmwm-*)%%X6@GG^;F2aKPb*|X6=)=b@hR{8ZK=N z?^f_E_NQz$U2S1D2)(tx$QL#6_N^72YDPn4ZUpa3aqLUaICHs~BSJ=Dy+UD-HF*Hl zr9C-RcBkE}iX4a?Jk(4l1zbYIav<6o43ib`LF3B>Wx>U75nD0aO3kM4r9XY8uN&{t zSM^t`(Zc0jkdAPcq&ER!ThCd-G>jihw7`m*uVjYcT{PI?r}+K=@KKJGk9`GSD$V=A zV6pRN^8)oYy!`D2XF0dFhWAIf-pI#;+3O8spgi@f{}MH4xRc99`lsa#F!6j9Q8t{(#oa-fZ4)_>VqM#`i$(MwyO zM}I$87A78^2eJ{iNGmBf9Ez5(awTO%($`Vebfc#vH+|dOtz4YiSAN!CG0-rgj0cV& zqsf+oKuJ_UeSZp)B1sl>hWB6Vz_VlbfyO6Dz~ap+SSY1ie1os^+yk3zvSGr}6I_E8 zxvkhgTsazXI|!Lgvw@o|>$XYUeV#Kp%wX-VO2v#^)$Xls9UiHrz%3v8vNqG6Y`WB< zvfkaTZnZ=iLGOb1U3J-nuQwZ27rfogPNhTvGeh2<#BjHcy_7H_#(X2{1Jq%0vHZJ| z{~y)#f3A%GH-Pc~-pD%lPa~`FA0z8#;NM18UUJlg#Mpm~fGoTJ=LpD>lWcufd!W)K z2AS$&(#`mq7S?qz8?e|}w3j*&KtV9wQZ6tvo(mOu=oY^Ig2g{ZR>3BcU;l11|KiI1 z@BHGQyy9=+8PngwGp4_UXMZ@xzZzTr(wqG&xA^Oz|4ZEBuM_uzpM1U(+D1I#Ce!F64nL7Ld!E2OspW7 z98ma0HJflY8OEv`b1_U36GX$^AtpbtcCer1d^?|Hpdf;tR~&Uu?)O4$eH!;(*$?~u z+byq0o$#9Zf__t2DIm-um;zR5OY#G%5{(RitkYVCLXJ5 zMDp%*GffsiXjnqj)1SWQaca|r?t;N5RV|p?A2eXm5a#7go~W`vcoxWTj{qfTforHF zvt};)$pKL2OEK8&Ice5w!7$U8%BAy(AM?+0(UHL&Fv+_zL#X97VK4YCMfMZWX6Ibr zOEX;+Vl>BFdg?mZwU6t-ITv1`H4d{X-Pxr1xL?}ubAK#tIY)+iD_h0;@;)@%d7o0x zVda3C=$>ROM_X2dCTecMoL^&Y<9n2z>+jWLRP$-ATY%)MHK`l(RG{*wBP~B%Wb>V!+SWl8DogAb`rM%o?k2HH6wJ$j%Xw3-~89UD)VvP?9+SJLS zeFT@5BYwdmGuJ+{r?5ymy#!3}6O1p2rG-;C>>ii989xDweBlfG)ckgY;rkN#eDYhl zxm%o}W~?4Cke-gbx18s|mFXtUB+zuAiUP#+H$^6lX*n0a5ZQfnsivoCdv_dzHA>lU zk)+YJ@r-D5O@aw;APg4uOz~uhp$n=5j&L-2Fc;?l_j+L`+WtKYktE*S&0T)h6KxpX z#N2jb`V!YrKQ&kizRi1>TJaH_6IT!($E1ZSD$WJmn+UP|ZWzO2z=hI%9%e*zPgKvN zF`S=9UL8nr7sPeg2P=-if970DQb62<8pGS^E?McB1*$ZJS<8#`hWAxU_343MqY>}+ zC&)=25ZbYoCc93;VnEd`7h@z$mi z5k;b;OtyFv2A=>P#!hY!l6A(?@>Qf|4^QH|fPNM8xM=}9xtK~lA;Tc453AjBb793m z2*WK0c=DFotv&`WU^KA2T2x-rN?VCkGZReyHTU4oRU5^UBp3$Oxro1!}MYxB`~6T4*yjr;u4`C?(Gdq|2)c;X zU}6;tsHzC@?4*84;j3`OEDn(H+g*HWL_M5bf30tNZg+I(WLJZc<`p){QHhLJn6x37 zSxhqpfHO+B2<*lj39Qfij)=d>{LWLP5R>;Aq&`+u=Y z*o5GoC5@_u9%D1(Q%F3}DNqK8lwzR2K!jv-TQP`x&bbiWcR`iXe zx9oWao;SVYnd|lv?4QYxKP+{xeTNn5g`Hn zei1UUW^;JqIKCXYuGTGA(jloo^}OeiAF%xx(jC8N%GQdf6~pyxIw07~;oSEirEecp zkux5G<@w6KkN}8%P_XPK+Z_U$g(3DN)y?wF&SB`4)p?1cJb2zc6)=BvG|G2ioM;Cd z0ZO`U`I#64ZZ$|9Hb~&6a8zGj72_+CrN$-YXN)qVRd`2y02DK*C80QmX&vK3U=@MJ z2XpyKOv8}cE=Pnl+#u32N77}$OPqHg!Cfs@AK|k=Xq_?scoqgI3Fm~hCu56g0*c{) z+}WfOPlD^PA4fqm=yGf<8n6P3$=HTQH*gQKtdO+zMdFCs{q&*Rl>iTm0A~@ngK3_; z=#HhnQC;Za#B`pswLCu;17RP|UA?p6xqB@SICJ`*#()|YX@$uVEr#({k~-MN^W3a~ zN?nb_62J%}^a4#=80x3-^_2STLOplC^GK9xQ3TKrDJi>2kqZbQiEiCWPw6gzhkNjF z#=d8>-Iw?>J5&wLot2p>xS$wIj7eMmO<4eux^zGVo=~d<0KF|3ou~!6?!oyRKvSHP zx>9}<#n~Nk{$1Yh)m5JeCNsTX4K>5#Y|RH5xfD!5$&rlcf>fYk2tWFt`eFk}Zt3h1 z-9OQL#1inoQnTE7_)55#v1BWvEU+q6>qgfPeq;+Du}XhgeG0?UM9;ts*csFv$_V=o z*Y1t=&`2wjf5~2SI%+a!Km#?!1lh|dTyd9HR=fERd3f*R?r$o+Du7k3^hvHU(+qFY z-ZwMYo1eUmJ0mSr*jPCQbS&PUs*FMJognm5g!@j0$1Ftwl-XO#INTwoe<5|bP7wn; zgclBl3iaWgoTBaXg3G(Azsw3_8Ia?9G}%dpCq3a5}{D9;kXg39K@i=GPQ|Ah;-kw zC-twLRp(>Op?ztL`na)vHv!~uCi$eKp^3qtTX-pV+K-ZeDZtR+Vr@Y&Pz;k69M}?w zM|N@+kvI?a1mRn)yFYx>vbLGGh~~;X3NP1QdPZlC7b!2pN`{=uL9>!cLu%q`1v%M? ze%$%RZAY%+?m~hKK%X1mI`Ury$`awC!qoiy(O6#ZDU<>0f4RL+NXZ!P$dCtKD{9*| z*-)+N{~Eg{y4!!LFX16zW9=I?@KLg7NMm})6BTHPE2=;+*r^Z)Yjfl!9H4TAn|nGV z<_kNi=`=I>3`0bkBh&AM#BDlH&pCH=tWQ}EY-&nBcUvm^`09A)$*eT^Lxfy1#oJll ztq)&Nn;Mt~|KjM>W&m{ZoHW8J-Y6(c0oOS=eF3=5g2SqB&<%XEC{q5hrx;#$ zZFos-_Yb851<0|vM{`IuG<|4lW{e^7puGow#XH$iO%Z?uQ8xAzx4ArFx6 zZ4Ggux|0#~m=-O-CpUePAs-72KhEOwhDnxIfK`&6oc$Z3(&c!;L~>L!NXCBAn;5U> zNk{?X3Ga72NV0TKvwmvY!4qfrmMIBko}E8Lj`mpNXZt`P#A2IigyrGe+kj+&EGe{w zxy1NtDvdV^eFQSaSmXL{EvRe%ZlGi_T1t+>3wDuF+MH8{k~kf>;P19!JrKz=6v>Rv zs4OmZ5?LqmD%&kfOW-<7d+lhPfbfO~ie8h)DuUsN^PmReoXfzKs!4 z)4MI#1I^w~Jk{$^F8d=crjM*KO<(fPH&q^|ff)Y+g@&&QI2TLXfOqzWJ}JV{cn`lX z1X0Y6$>HtN`4mhRaoypZbj9)r>Pd%NF#I z@}yjhv|+ckR7GS`dmt)f; zT-7y2pD|nYY)%b*#U#rT6)&R4;a`e*XRBsdPI;86icS}TLqtK7_6lWi7*aO6(HpbeL{K!_mr+d&X&YF_eZ%4w&C1>V5Wj3J;^CGn76@+F z8Mm}A%WF6=gD&r1ill2%qSX{R_>R87D-BYgS%5lIi)0QjONDhd6`0~_OjJe68=qES z)i&*AOIEs?`GTG3HMsXZE5e4$YkdQYfK3^(IvNWuR;)-V5vz-!pM$FC!A`mOZbN}W zHo&pG2YaL6u72nF;HKI~UsnDo?2Y>XZ;iXsrPYTQB!f(|18mgw<{6pcs7IYDTNZ#U zpr`)fp+m+M2q9$LXpj7RE;;9lGfv&T92tS}J}yXpigW~ahcmtH6+%Tsx~Y&TLe8sD z0`!Iz+R9Oz%*yw43kMKsmG=IW`V7>VVY-y7XCmEiae2!Mf+g`H2NGwy42aC7hWyLa z1w4%6Xsb3rE`!GlziluS%i|{HyaU*)wW?c`NSIunKMv{Wvlfu;=cM`UC;ya=gyV9J zSgMJE!%9z0G_-3qzaWCPY5V65x|@wlDn+U$-V~xlnR06X6Yt9l;s7Lr+!iEvny@4d)#*BhmM&quK)@F zgdA!aW3x<=@mI)b`dy^8YJmGc(CT_(|B3+2ZI~fkx6k{H$zqXhyIaIAspfA?d1Dl};`}X&qZq5^S(c zAx_f^$63WA+S+vQ!8YVJ%J4S7T(Vp@q;JGKdycYcdY7w5R0xNe%X}1#l*o}lWD6IM zPV`Q)vQq2u2pE0T_ke+zbdK~^?ax$xB54uF+ga)ZmYy--*#geRG|I{rX*U?q=VXFd zbAfNLv@(Y> zk0t^Th0e3x31<9gQQFw8ZEe7&9>4Q=Zaxrgm$~yUe}}E#*jo}HpdGt)1Gq+M(%wiD z%6s*;pb1GV@)%O1-?$BxG=?SZwK9$l_&8SL|D(m{Sn%d|03cnl$NrwIvM10A}9>9YXx9TNrwAkEnB6554a zUk=a2S^I4l-Pl`hKK>{s0;5`-I!*n%SoqmOo+0_{GQjWNUIA>;GeQbH{yaRVC5QO? z3F%${{Q>JAxd#C4(x1T8x zr&5hUvO34N6sgRha$_F!5gouLefcly_*$I|Fo(UYpR&9b#XS58`@GyKsDPugW}eye z=^{L^m5ofVJ7B7dnN}s*D7PposFcj*g+sNM)aM=Zn6y=rQf{m`&DyT^MjoF+t}fZP zm}4SE#@RETwq?q_v-q4#3ykUk{bTieA}UUS^&XiV#xxFChl?iJF@w*$)(QGVn<=-n z1IXvkeY6)|t~^(UAL#%;F_iVbhFG4zI*xa6Tl4mgD?Tz3wOdH0IvP^8ag_<$u+Ql5Q0e{^jfU{oB{SllTvv=sqUC7d{_B7p?(so#T&^Vrd|o zJph??CYfpyRQl27pIA0QZ2zJYRlXOo1GZkAjO>WlPrLi$>lYFr8U1%{mVXH;_-C7i z`R~@rKjfcGf3;lxwT<%E5C8w#D1WOxO`Pmp9F0tz2sr+$CG#KTpRE5jAM~#U{Xe%+ zm>C)WRsMOQwdMG`J*DSac~?oQWp#+Yf6chkw1d22Tc$B7+RBMBDKn9D{U|sUN3n6^ z9iy{iocO}(>J?BRKGAxnxQV^<)dCm<5(g*SsplF;$*ydS(a(T@v^~!?MrNyhk>b~ z-$r<+smsJlYF2A+*7xh3o+8|^<7i_!FXRAim36^c2bn>#kO7*g1$APv2&JjgG`(Nf z3zX}9t()P}U{gp+$NcPxdR9~=T`^*cLx=;=lWM9`ln_;e6wIg_ygY6#@59ODYsPB}v!z{+Y2RtdQuW%II~41~XYSmw!C!Z|5B2&p)2+MRb6>9W zTGCP#t)o&Pb>i6^wb@YTHWGHdFw^B8RO8?gy8(rLicEWxmV3^w6W9}crhO+e%%&6V z^Nwq?sSG@i4|uKBD_(~MehO~+mkYYVUI>j!#L+8W3oINGj%cXPy|!uVCcbL{rP@R- z^4te5wF`rR0(DLyB^4|(JhxHNH-`1sOZ8$!Q{{rDqO_&DfAnWJ59u%kbd$r2Q(+8aVvA@+I!WRp zhR`eep+lPuaHC#Jh03GfzAKxo`oSFN?X2yUSgu8bAoU!VV6-l=2`-(0!rRqB=+?`! zO=Ma|4wERu*>JC@$wK}wQTpTzI1-!hdS4eJ`rQKHFMSGpM z0B|<~@XK(Xf`E0$j$mOxv^;6{*zE!idan@Kh~EZ%nylJ7 zZ%$H+dTFF;z@Q^bD^eg!$G|XYQF6W!%UbQmwYLJ{{}`JR9uIzA_q>#b`7_i>)sKot%dl4ZU#$m{ za3gjb;dm-+kZIuGbhTPN+br}FUXzz}b=s);0n%JPcMeAS#{h|@PnI)LST0}B@2*hE}V;Sl7)^q^wMhG(W`>iqr08lQ*0SNt?LP;H^g78NVxI2J@-N1#qJkMb# z?L>z-`i{YfV43%8R6i&t8FD|08LM7S92?dN?E#?L;V=Gz4)>2l1)Haw@B1~?k5^R! zK!92_wSMI(^K6y*Fpj%t0j$ip=g!h=&QO2hYrC}kFNurHExzW6Ia@;G%RB~a`axtL z0X{v7vImqagKh-DD*{`Z&R?YBVP$;PaP@ATpiuo*`wH5~8(l|JwjSiuojN{hsMfpd z=zK_=Sp%_A`73Q08+}9m*w{qGac!_*HJl|u2zl%q5V{}WB9TYS-XIgftIq+)0>d}7 z(h@rAVRTHM%9?{6nj}#JYPh4bjw`%`F$5fQO<|<H*P(iTNimpasjNp5p&+% z+acm_cuD!FZmB+9ky#OKFg$rf86f=lhTG8*Fm$+c&Jofl%S`KE=#bAcRc;O~P5+IFJu1x~nC^M_UGnr(!X0g0o!0}PtJG`)wg7{!!{}*FFJ;t2owjSw z^vI4D&;(|`Eaq15eZM#Aw!d#4!|dqeesUi0l(ZzN03NE(bq7Gy0YLW`aI+}NNCd&U z(XO2x(eEbEULC@v)1s6_bpih#*7GafrNzfQa^*l3D{c>;YnW^Fm}tf7*=GUNgq9&T<%>fwj;AM) z67+|Ib?N;tvY`f2{3XW|exY5P7qLRsOVcIX`Nx%p~@#vdzZ z_2+G!y#^3A>TQG)HL0WgL4%u&Q=sbA$@j-igWxhiZHi~EJDY-u5OdWLA)z5)tS{?1 z#kB>32GPtgF_@v5u#1U6eiOvl404uRgcaq8RqKa60r4G56k2G6zXBg9U7O z7~(^N5F+CVw+gG$BwVT7)9XCtlNdh6_kDQ;6NtZ_YDccj=lA=!-CzSDMB;N<29`;# z){F_h+qjgQrRBjXe%)`{LfsxBAAP_xOd-tcmWNBE6*SFj77H#qxuaYHvu7e3hym8z z|LWHeH6rT)*#y^sr$}=u?{8=HEFFdBql@9f_4o-Q>CzWhb%Zw=NSmlrj6SvX`E{yS zc-ja0vQrzehD74za?~kq(hbL)T}2*mxdb}ymXFgLr`jXYd}{sjgS||Nz|AxI7Jfnp z`r?oiT6IRNyt0o~YB~XI007f|_2arNPJ2;P*zhMx=Ov(HQ0P_?dll4d0S=tVFs4wp zrF|3uEg{D1cA$q2@O`aTZGLRjD>(p^+}2M6R8|fEkZGge;1U%rV-q3tZ|LbMjmS}9 zD*uhOa}1KCLEL=X-P5*h+cu{?J#E{zZQHhO+qP}{X5Zca#opb!cM*5@t)il$vNG~R zW)M0wdOtN28ZjeUmk3V2xCZ7iGm%?7B5mqe0G%U-gc<;&Klqhu&E!( z>ClU10ujz^A038-eQC&1ct^n&=lrQMb^sA7qe#_(cnjm!-aXX$1I5>K43^Z_$i7Zo z-j(fBTj`Moh3g$_Ix;fZ!sWSXQ3!2E1{1)`n8-r z-9a0oOwCrNtJoXyi^dnEnW2yezVj0FsH|j>#4sJ&Ln8pCvz3}h4IP~_F;%}+-tSpj zUob!q$Hj5F;#7APCrvfhQ|G?1mTytVZXz?x2NX16w@afcO?>l&1?2?5d76UKFyX=l zuFrLXO;n;S3ZoXn)y2og0~Dy$QQXGl*KB~s8yTRD9R4)gl9KnYVaf1R*ise42ZSAP zBOF3R-`7tochFZ93lRA0qa^KQ>R?qb)tCqSj(85b@zA!!+Mo_VE9hzYEt!st-(}us zz9xDf_lML`0G@K!(iIiad6|*Bw4F-QWmDU#gK3xw8Ed7-<3E&EyyBnQHVc?Kwyv(; z>J1rQr7N|^fat~jl{NS(yX!EFuvt6D?8U0@fRsAG23C^2Ssopa^XcS#VE4kX{c@h& zdRU?t$$MCS*uFz7!_OPAj20PfPZ!T?SeHp~a`!jj(0fql521b9A@2TE2@G(;Cn)~W z*W~~&sX^}}d_U3CX54V%qJys+Xf_M zI^@jF-RtX(g>Kw+c<#L51R0}lou+UoqxXqlctB)@r$H8t{S1kXiyp?*#iIb zi8i6X6#fBNrL&aZX^T4H4RTl^v6tV4Zqmrpi|vhs&u_E=)4OCwOO8-hvVGX%i2bZ! z`nM5-Lgo8hxRv)26)%2TO>@eGm@yx!yVGCfr1(-%g2@qmZTNB0+6NP14S1M)S z9-A@Q1c9AQ;5LM3! z4f<~t*L=(_ z9E;J=tF)Dv4Lp0SvIm449n&q94AEwb-) zX`w@hauHKB(owEGWqT3O3zV3FV&wLa*Z8nT_VnDdLL3?IqEp^z*>mo|I3CxN7}HZ4 z(s)f&2#|vw`)~6|isQNZd!sN)hcqjf1YiPho<-3DgD#cWNVjL4(9%N|vU$`gjEv@(%TH2^O%sifW2>L8BGwY z1CKUgcG(49oNOgz$U4MC3%4F_(b7PKOz50~yZ?qb(-=Ka%y-UsdPpH#SXn|TESjE! z8%<^C8us^>%c1zuJXQ2TpO_q^rDNgUUM9d9Ghw@o65;W5veQ-yi1|_<_P^3E z;0>#Q+GKfsU-jAHf}glJ8y|cZIQEA>aI<+WKW!fhUa4w`Tik{qT5W8mKITt2?p2!v zFEbgum22%Y)ZK_z2EOKZN)uVI9WS-)0AR&}>OQq?eF_r2qrh`G%e{L56Y_s4*a3Vi zUT9Ov7`v{0?Vm`zFYDyJWx$%5{9t8g`DS*T`mnX4_hCA!rgDm6k~+4Nso;ysWcE6S z$drg4+c!>1CG7TvsaUm?PqpsW?PI~t1>6habDzVMGiL9%`Eoc>LmgpF=$6y2~84C zMw^|zf!rwzoIg<><3g0(ohAuUniZtd;^S7D6E+AqjJ*)|QFvm?(~nn$YY$nVMx?YF zA0Ry)cD`sU4TZCmF&i4mSH81?(hG8o=miPr^H$T9UFkW9IasMdZ>xeP5Y_+Mm0uAj z#K9%3mHM;qqLIUn#>Ffbm?VS)-$<#aA&?I04-mDC(_9ON#+l$a!?&P7>&VSHYol?g z7>pRf&cxs}{DH(dM5cSg9iI}nCvzs@P}`z-Vj7%2&eWY3Wzo`SR4>>rC~XBuw0k6mA#@33(kouk=l8Aklz71fKdgNIS^55(R6~kBW_YpW86^Z@uevW z#O}h1UQeoYCYul>VL(P@OkN03&ieSOP28XdhdzG@dbSCuwyKO_{-yX~=68ndvw%aV z`s72lFxW!GN-X>Av---X00$=ZqaCKlbUEx$xC$QuJ2%Zg`@y7}Fg$^J!55m4-(D56 zVOW}!^;&_?r**gvP-G3!X*Gj(HylXUj*)k4UtJfcpw!U5&bn~5Gw zl7-sXBnAf#dNrG>TLCuv?F%fCvIF@BHdRH z!hK01Y&8`wVyt3ZVuhnN$6(zxBOoVyE(!`oej=6HFcgVEu1P$G59Ach$Z~TdN~wv> znaq^+U#HnXvxLEI&MC?d?hKt;4(3Jx;8YHal+y?GW<_Fl0Oa`vrcmMtwv`GQf!MkX zifiE}8#ff+O_259BK$tb_6Q}0UAder2D6SE+=m1uV7eh4hSup7* zo{in(O)3c!)H7^^%k(Nm z3FAwYniqD^nCS$d8~YOIV{G?RTDZWchgWO|y`m1pEntXOX#YFWg41C^fl^IyZR0B`vJn_~&g}%~sUS+8cvbIfB;t?+^!c>Hr*s zY+al(G3tjL;?(6`h2W?{2ikSLB1iohf8`Rs9zlS1)E%JNWbH;UwntsMgWy_!KF+>(`Zb_F zbOTyU^UpO~Lr2G684(f>w8G;!0=CXjt^-obKYJBzs!B`^aD}@J(3rP4sd`=qyoKM) z8)W9^2+s-_&$=ZrI9^$M8+@@4i?{933*5aSCpdEyq6u+5kdFk4VT)mu-nL4u5#X-b zxA<4sw>c{c#S#jvammz-bqT5zH|8P28PY0sJF@UCVB@qNA{-v0#Uzm)mXm!mqq7U> z`_yngIB2xCWyzz_ODM*dp&uPWclGi%sB?Doi!aJA@B4HMa-SX+50h=X(^4nKl=dUR zavw&V-?d|*+a){Te}=c%DC@6}SBDk6TVDR*H8C~>Vf>9f^OqI#pWTlC*=u6_-!e&< zBe>vv@ZmwL>)7~_y+d^9u7BV?7&?pDsP()GrV2jalW)M zG)qab{bBX93kU`v=dzk*!?qT{@yNBst?H;DTN;minO#h;l zF#U^G!t@ud384`mf{v=L`8?vvwRD z{{w!yK;tv2V5sriJ1ei?19%Qb3PrxBs+wfDT@rh+wh%|8?M@g0c5&XNJs0+2;=$a2 zZH(xE<@&V*=*^y$?bqrIaz+_vcDKFkWcqbmt`_QFt9Fy0UgldLzqyxW7#1w=FPpo) zzdt9_`8*Q#YP(-Q|Ga#ER};7G?ils|9S;9BD?_ZDqZdnRqp;^?j}$hXjt|qXw2|zR zPiXt?aUcGinO%l|m-W#OLTjlRD)_OO91De5eHiTcxYQjEdW7kup}ENTkE=DE62;EJz%Ukj&4<0l`S8zGFJcrr1GD3*v7 z5l=qzrW4T>P<%T`XL>W2tQ%7ru06MNn~diL66>{r3JdiyeC_Q*Czy2a>k+L!fSd?t zfGSD03-1cD5#}(p_nC_j?xYr4ccLI2YwUJwF`)A%K)o*eA_4CX3PixNZCpJHuvS=D4NSOg&{l1PRr+M(Lb>&&lWUx$A^?Cq+Q*lvB8)&?< z5YMduQFP%3&P#&%tgr-JOK>r*>ovIAAjb73L}?I;Q@kGLfwRF+CFiFpXC+;#!@(qY z>6RJ`$6*aNheuYm4zG=Ms~cM!oIwIf$9+^wk{b&HtI!aT=l#z#nqQRH2d$=}F(&-AJypQBXo~(JT(?RN zj=pD_wJ|u_-aQ@mOcLpPK8J+i_J5;o1t3;u5Lw@)hY+AK}&EipLx^ zEf5GNFQFoomrM-|LMC?L`b970f&%?6+Z7-?BbwaR#>iCB5uDa!|FU z@3}kHysu+S%{^ql>Y;!$iJ5o~QA)70W}$o{qcV}6cL2+f?PCEj}iC+r_~`rwDDyfKl>-8w>QXu=uyt24UNu>NYJdEcf*r zN~8zfuhbi*@L+TdwQZ~Ku<)C_RPW+ZJYfKfs9yx+usg^X4^T?Wm_sDW&~cg1l`1TC z`enpwsAumT_lL=e@mM3*d(@a0NMIlH3b&=SwiPVW^k62Yc1gtbI6?td4KJ_Is()jw zR6g-W8ZgHz2%r|%Mpcs71qTb}D%QBy;J056%WS(KQU9e`?*C z?Fwdp3cRj7@+Y9Igk$zr@-R@$V0Q;$y$oUd@r7J`RdE&s1u7*<=S2as0@2DA%rNNLpcdQDpM+b zBPI+d2w|EUI8SB=b0)-a`w3$mN5b2<8{;lfJvMbgTF>N+hs#dBfDEn^*rE4 zB*&yl<9I3S+!woVtQ*)9C^>8-356Ug4+UcY`s*Fh^g&^Wq_g;VRSd*_X921DGT384&l@~c3 z%rmcxPr!{JkZw@d2_MEAQb723dkC8x2Y~e1C0Ib!5V#PD48jcX#9hPRi9W?)##A3> z=+3YMTB5a-GC-xq_c($ab|WJR8VnAN*)Gx1I-EKPfuL1LQI*Nn>6{a(hrd4gEO=_i zAu}uel~v!1R``utwfcV+G>aJ!zX2)eS(fcUeJ@hIAqZ{E%kmMzNuZD6=)jM+)u%8$ zVSCy6z|3R&t5Ji0n7_4Ap#mVSgXwJPfj70$N^)7m@*dE|H2(S#f^^GW{$>jb!YZQ3 z(MJy{hJuCkatgddM8qouR12mf0kg`*W*~vrP7tQsfLFZ*5Vo0O)MMz?dom_aUP6$g zrBX^&Dv%NnB~&x>76w)ShbO8ypc;pRIKw=c;#p|r9DBIuFV})PlPPj#sTdjatdhV5 zo=j9)JVT9>Isk_hmP@^ zKg8%00ZAPoeJ3Zex%})2l?5v9VhAwoDNW856od@^RF9{Kb*e+t%PN*l6kJ>x;b!i7 z4d{7Nqa93MUw0S^x*3f--4zvNJi|I4sqZreN za5WH0j~X9a1!YH6;~`MX$$=m4nMc=h%ulE$K;sDGz|odDE^e+3!EOuNo}rR4GkeDg z7`_%Dj`9%Wvg8DLY z`wIpO=2SKZOA$7hA`T++WN9=JGy4WT(;%L0VDoWhjkd`{i4+`NAxeIAjdzFU4M0v} zUu)mTN%{Ef4HgwXyHuP)f(H)o$a^TI;;&5dGQIGlE2nTL6f)H!D>NfHuXLsO=A8!! zT|I|9v8ESF#bZw=^Z9MPO>@Ny&=;2#NS9MU59Y89?(VE`!Mj*ogZ$kJ*|5=*;(7Fn zD8Cw~am;WxWbfZ`{cRywm%%(i9p&ia+JUL?WP8l@3NPgh@*beTn!b(d5j9R}(;`Ub zHghET&3mqau~^&&t##?(zBfb;;gG*-qp#YJDOr;^UD5S<;qt5Z$Rfkf!g2V}t7@s* zueS6vSLE4Mw`W?zfI6W@%`C&<7P_itfZ)kG?F-fAe@f?gIQZ!4W+3@JQ1a1S=nV~V z`rKKC=`Q>BW6-1P+&;|)cQQd0(R?)lTloEw>!!y!$NnUrI(~%w)i~J+Mg28*hOQy? z1JPrSv1U6=1|9&hKXI0gDx?(A1a~#T!6ylIs?a1oPnBhtO%f05KA;C`L3}K=zhS1{ zK{9w;104cE0gM;nH=%I1nb^!qM+)Lh;PmYUCd}mVq5JZ#JoPWb!!rD)DN6uw;7lKa z2v&N@bzjFBrrX(QmRv{}tpNUTKzwd|dHce+qOP`l_~1~Qvd9&xxAG{ELn@r$!esDr>SHQZoYwg5-TYvJYF#Cdo&1P+d?m?Ha5Um?lAQGrOk4YbCMgG$imupE4JvXG#nhiAz%43 z=q!13I*+=fW|?UgIjQM-&;)7Se!k&UlBeztK~S&RoR<501mZ0wz(2zOVqGqSJ+rf- zv^Pr>$+6abl58cIIP%?*q^+oGl>Z6gQvW)2)R#rxwC*^$1wMW?Rk5X&#ng7yL6o{K zI#vOaR;b@KiXYd8)kXD^4}T4j#P3Bu6u0}z8+JKvz-b@lxWxsTLTMy%Xa(zH)zX-< zGOJimc^4pOV5Ax%-;`%zSg-NJr-m~M*EFYIJPX-*I1>ehe1pakKzT-xFeLp%FSMXEJMdnqt+~&VTAt#K&ZPg!aOKF z|7PKA2r)6shv^#6lIE#}3RD--$OPXh9B8p$iD?v0A2BA__$Q_5s_vMw;x|}t1yjy` zj2B~$M$@_DyYy8rWsaO?O;hX7NR?`bb%QL>*_7Bdo-zj8XWsjwt@PZQ_x_j|Y>|4p z0={gHp@9o_g1tm4x5!!GADuJH8uanFs9%A2Yg10gj8iu`(U+DnhpiD)ffqOW)7sNg$_r)R@74_eA~ZaNm8 zALrGv^obfVBUsn)jiI1I2ZZk{-CE5YGbCy|ch*ydw;2>X+U_Gz3%90C^hpPSmZMjM z|BAV-gf*6$nkXo>WiW>0dA%_xWqD{lSxr%XSj9Y3Q)81y(n{U&=x` zgg~jEQ>IzwGhZTMJ`{XtN6<1&%xnpk*Lbe+x%{as@IWQq>T}6t@2D7=r8Y?R;y7?q zCZvfv^A2Q#I6)s}HJVy!B|*>aYGvhI*Dh=j8zF-uaVhU|w_f5#;xgc6dAO z@jHhw508vfE--^&4&>_$l3n{Tb`H!Pd+M+8pV6jq%D^!+KG9@+N5Ga2m7Wt5c&E71 zLDe*xsMzW=)~}f7X#ts4HqUl{kgPR^EjjTKuS!c77xF1BK*!FCrQHq1{+PNiMJML` zSc#u3E9T9mwX*;m{^gj@L+q8k^<)}4v8O`S& z4Qt+-7)7y#PA$0Cwmvha1mVkV>ZGD6!5swUZlG99>-|1|amU+5#ZB=q81L(GbLrel zrH|un_?mhB?)$|IuYm&H}<{W3HI79GekO&TqCf%-XnThOn%Ixg=WJ?^6C>9I#HBex@ALglr;OYZ5$ zZpNvGzmz;JltmMLm``qJwY#4h2dr?jTC&5a$x&QB9j<0dJ%l@hQ;Ffwwz=Zp4zP=O zeQh!{2tq{$cFKROs1$+X4OcM=Z$2}A(2T-v#bFp07w{k%%hUGzcP$hq$yrGXQ|Ymq z{^Qvp#xif!(FI2n(}B|7R8c1)C3U4aa#3UFD<0aKk@3wGu2;Jxd;?Q7qtTbP#y9P9 zh}BNmS3Bo^1i;jZ(kI%y0$qE-nXh*-$Jv36>6C1e;i&iM)jcMnXCUY(Hp% z_UQ_pY#p)UNs>{fN%oA*pJDfSTF~XsmSYmfuIsEDv9HK&%wA# zgD0tBi*|leQ!?>;uY{FKu)x-zq~B zE(D|l>6?(t`?5_PPyQh({0|iZU(qZ)~?-QEahM&lIfRWlA(R`ocVi>$S<1g3G-%`WjUPE|z za4!yb!CKz5PnT9YUa_h^9*lwy#WlKqo*dkl@wKm{x)I(OjIeuY#`{8Rt?2)a}a|3T3rnbSt`XHL~(BS5hJ*K}`sPLTcI(}(|OL6+hFz*zeC@IU`=N{v6Ge*XynU%>uX_@7Q(q@X~*MUZ*= zl)G;oVdKZW?|&%){3X@? zCpDGz@72_Q9RL5Qrn0cJ)Bk%3VBjBPexhz&*Tp4Lh$gmbB6Z?xLH@T9yN)$jbW1oO zy%BUPN)me!!c7uo>uby6@O*+=Oy9X-1>~h9>+K^jGkdjak9ghR^442To{f}aS{{#! z>B0T+uJ_A&nu{XZERW0D-uGXdo9WkH33{8Gp7%D-N4o@nmi#KN?(mlh1HK(%j07OO zkx&d$T~;;&^*qr6bTh(&@2mjD5TmrNcwN5FhXu||y$SqBkh-1%UgGiG1Akb%v26aH z+pg?}Xi$BXfL}j1_wca%fXQaAtlpIskxO)ljCOb1-}!#Hsb<$0tWVU9F=p1}l~lq$ zNg=I3mPIcrF{vY%nvakDzB#?pP`hcD4X^V@^Z$p43a+WXUFeFx`-py&14@m9iXO^O zIh)pwvZZ`wlp*Z9B=&qV3DNC+D%0kAI!QmWFvxa#^f77u4J7?>TUru3=5jl? z9L>&Ij1V0XFeb>MOPQ5m6C)Dl`c}hmlbLsqW}DMdgj!yN@>x`e24ZVqD(MV}k+^H` zu>Vr)rTCCnw(Ce#hGVN>BmnZQqxIuDmgnV?dGd8#ZoRC+P2mPz4qvqNd4ct*V`Br_ z+jqaqLfZTy*v0}EV<{DA-Sl8^c1{ns%fd-+aj7BCzuU2!CuEog7Rgo9*yN~o*q=iJ za*kS&VHSY|w2NU17lij*JiP83s7I-;3dc;-Sfvnn{gGb5~8rqT8~yKyv(3`vv8fcq&m(D z3U~&3SihYFUr`Yrd}`ee7CtQ$bpknZ)t?Y6bC~E;)Tvi;BJ1Hn zRn;B`7=Qj^P@h71kozfvJjB+I<$)P;JV`N1`x7JmD)yZ#p>7$HUSB+$2s?Y`L9fwN zSj3SOzXwUXzu$7Os%1xm-*Z!M7>6_MD1Y0Uu~32-BCkLD^i3&Mc-%=;`7om)=+N{a zg#&0T(|mMB7TI~mTcFJ*h< z2qb7jmxVdAEQZXAZ@XyC522nm4-hmL1@1pNH2i0CQg0iHNM}l9yLoZHi){&23%TSV zjNdmL7lcwt7&n+-mk6XLmXEsfXj1cCFT_Le_`IZbAhHB5 zXt4`WB*lt)+Q9l{QbQ3q^Vy8R>Vjq?vv^(=LU|qvol(u7=~@#V^MKbt1wfY!Hwxb6 zN$8noGnvpY_eD5T`dL|9v?a?r*a;%@d0j*kS3CK0GF}se7E-PHred9={m^HGydS&Osd>q09--$j5U=#|6_hC~njlUFa@*?Fv|p znPjLE6$`F*?w;kJ$N7QLuE;nVI{{C}7!YBS!c;XIs9gTC81kt&q~nd4!LwHA<{Zw? zeo6=hXn+W#v|}~>+i1FAyLr@DwhG*7>3rVb`~K`;*pwj+Nl4Gfp6pHm+X(6V z!i)kqlAdPj4@3ZnojiolL(RHBZFXzV*7JB`@^UtE(JIGy)DX=v9Ak#27->Zre5Tbs zn@4;)Xrd|@Zu(YWRw$lO_Xq>>tV51!>0TIo#7!!K)|vKtlJDhZyEEG8H1elw=z`^= zycM4KyUUIH(5={|T99ufy|mP>LSw_#^u(EiadodIG^#fJdK&=CW;*_Kv;%WT5WlG2 zc{Hh-JbV}XD1^xSKhXV2;Di#yKlOr5-lYr@UI**`0sQ87OxHSL&V-kRmHPAv z>jm*nnFa5HC%e5tlz|$Mn@9xN)8eUz#OrYOc6)DbzQ*-1IB!Ny|FmTF0NO2(E%y7I z&*2f9jSRzSh*QY|zO4Zil$=g0&3^V+LP+#obb!hU_fmb(#Q`8YWS>SN1&XSqwh>NP zu;V+uVxl%jyc&`GuydNqU?B^3jri~Opuh3X{ziCa!`;=bSV_IxLHLbZ-vhfB*R2mJNg5i&C@ zAJDaso4`BLrpren^4wBnV1QIPKcMLV5(`h+?agJdrJo`jY^M^YG z_I>b7z0y+L*!2%YO-cEW?|#r4idU}#Mkt%YDlF2;lzo8=5gS5Wi3n1+lRded)1h)^I5 z7H@V5f==*YS_0OHkbg^GLTJ&$g6cyaak@ z3G_Nz1Y8o-X;h@J*avArE^w9m3|6x#J%6FCUceF>xe1{L&yR#lG*AaVVd`krp4-kw zuT4~hBLi)SIVEK=OJ-CETc|j=7gFPwp0ugrMIx74U1~IWpaoJZLZDD>FhZ!zR5xLm zD&jf32}r1upUJ*v;r{H2^Q6_tuAaPu^136wKAASznAeaGV6rkdv=a~phxlaJbLw6H zoO>yQ3&A_JoWBx|Fgfn7!k(J}TU^6c%JfA)|JeX!b}!l~M-Nci3iqfOGlX>XcONq> zY%nBo!IZc60|SW7D~QtF#w2*s0izF>;=*PDNWj_BLdto+Zgx1$o~M(IkI^1`+PUCS zoH(Q1Ey;Td2^RtKK6(Y4XWvkYOFnP|zqn83>X-__&V6|hF27+LAY7b4=VV4SM&h>a z6b^AKgtsQ9lxZ;D@5}La3V&Pf*6kw$3iqP~JQ;#lp#T+r2YRWB4;(kCTLeAJbIEk4 zQ8|?phjW(f7Ppy)iaH@HunXjK?rdWW6HJx5wX)`&>ZX?&YTV1jDP_F1&m{*u&x)J} zqOw1(aSmRCx60g%Jx^E$E`i(6Eg8W0uwz8~UhIe?{Tgt1wQa=pZ+Fc+^l^dl+ZB3* zWHN;>1w>u)jS})Ulj+_ErAHc6n*=IsPCiMqmvHQp=Y3$ruZ0hO`1tXY=b>=MQ7vWk z!?KlUbkH?nER_;_>t~QBa7C-=Xj-agY0$y2aUCT^n`)cW)x^y*J?Pj18b(CFx+rXZ z|Af(1APjmAJP@dHtt7*sa2@dvQOyHe`JK=1Tr&lGaHC58J>&ZIGb7DO- zn$Yi8w=6=Kpu5Wy+*sSAi{W+e_h}>vcCfyV0DBLdTp9d$`88nzjJ|SEn;WFmC?lkO zx!r`R5@S?Tj&ZtvLBiuI$aWhMdkvnSeN6^RjfMkbWSLTe4n>}#&!)38G3g~z^N+BL zu9qmuW%#XW9E0^NueB#33f4z7NlhNm@yoxqZ;WGW6CI8{!lX<@01IImtCEQXNP4OHIqej*o`Typ$!Jq zzJD1__|z-unvqfU13bR{^^jjB!l#e`x?*3KuHr$65(&#n%e34)X{R0c30U6eIx|R& za8?Ip3jh*&T+4w^E48n8dJx7{gy}HHK|0uO*|_zPr-mx$xyySnvp$_(6vmIM8x>ju2*>NU)LE0vpUd380wiWO?*B(93`iCIKKL2-!onRp{< zm9Kb)`PUA<14kuPc`w~UN*`zB)RF6+u2m_z0i&Gt6v=_Ni*5L9Pw*IM_A!h{LDZNo zHwhb&Mq3s`;PB^8uI?OujHkj~Z;)g$=y5x4<|i?}c-ceu43 zO}xjELTG=#8_Neb1{9WXFc}WcGw+^uJrM%0{MOdijkl#4)Zc(-^=3kW5?E$G~5Uq`nykVhKGB6!G?8_vD?umouySpxV7+ znR^s(1B;l!KB4NU`kK3f5D@f;@H6l3foRfu_#$#>+vN|_lwMLRjMAX|L`L>myOov) zOBR$-nD+wj0c~P-lNu?_H+kSiGbt3}DQz4#5yyj3AQ=7KJLV!~N}m?ts%R+xryv2Q z93rDg>90PZD(TPImCIVvM=ege9}7Eo9PY30zF4@ovvWj;2974AfF8L45gHV*6r-Hm z^ov74j5QxfEg7zb2?g3L!3m+A=hKO2iLxb}wNIE-WWQ;V3OF{Sh68tnTGP)v)Q*(L z?6nUVJ=p8n{A*KQ0$caIz1jP*aGCLQhTz8Q z;n2WB{7cc30-i!mVcSyr6@!~Y#{dnmK{l{`%duft-G!C_wJqtXuJ>3BPrYz_?3 z=j~a^tP|GzC|)$U90!3m`XlXwbUBYC5kM^XY8>!w#Kqzmw3ow-r5Vt2pGx>=Q~Ux; z*1As`D@99k3<>UGpf!ZIGU5LA3Zh*C)1qC4^iR2;M>5hGZ5Cz;DoARaGLnR41Xx;D z{N{}GnZ_R9*FfyFp!P!Eq36r5bB0fmkGl!2JDYgO{c)1p_awrg%b`^O0RguQ9oogu zIZst-LKNMf`($`}A$85C+Q~1Gavt*>n-yne)g{iQD=OZ{HIZTX4wa7zVU!Pzu&j$K z1&(oY&|g)&my~F-cw|`mC5*d1lx!d!N!Bx}EaJYOb?a_H77X%6{E*hQNLdURR8ozF z7W$&<+Izc8m0&f+c9+co!!}(TGZPOzlL(a*NzE&9+~E(EjtRXb-?jXj99S5GcXrfV zRd$%PB8=WNCDKI{ucN<;Bz)C|t0SOMU6y??_AaXR#FN};OlEv(H|B7iu=T$AkRCfm zir9RTgadWV?mxsmj#C5g`;F092o(_i+{uDJfHjfTlW@?&D&gXc*UtSxCD}7%)H%_>;JMFL_F6lOJU_>t>n9 zds}3O+lMaiv*Xx2B!kdxx7eST>z;fviipvLCxKr%(>e}#aE$SnV!p9^_EU&c$qFxY zW^D)iRQv`ven&ROjN3UDaUa;0gXuJ!lQ3e)>>o++EWgWUFi6*1Hkm<4+BKi|UOI~h zeZqyp%G-RiHOl{r59~>59~icKq=>i!D-f75E zu;Kt}hjt;r;m@50b3SZ?0AVEMTBxoNYBo6CwC}YQ()`TXH`_2Z^n+2Zaolzn z*PwZ6v0ysJ%stbbKCy)f721PKkr8AA{-eM07nfCeynba%S@ICdY>lf8L?WrH8cN$| zGQNLNQJ2I<-X?QPV_lQAqNqUj6^1-M%16^K50KJA5Xp>H@*9RdPKP5@Ko2THX)|f6 z!;<{>P9ng$#>LD~&;iQOPosC4SzVmWJ}TOx{*iLePHGz>=USBUJUX>H_XMN%2yXFt z38IY|gh@yCAIlmR%djPTM&NP37N;kZ%5Q$tN;HfO;e(UTJZr3>!@gOn`R~>#o-a31 z4y($93kQ$LJJ=emT4+54uRY1YMK1K)T@MzyGE5ge<|C6jUk`89G``NZT-GTR#f4k# z_&b|a3|?4p7P!_?@&gcf)c+*dYN9a%D;e2M+>$S}-W-7Pr57fex2$NI{9QD90%Q_ST4-;QO^N|` zwj*cDN26TV(md&Sj`_~MSqW?9d`MOU4cM##*XPj@J?y#OXn@)jhv*6}`k=obY+j(L zfpJDgTCB#4mLp_7gK6*_UdcnV0d8z5B}?0HGS{5o+D`ViiurRS>0W)Wm648_+L&5^ z8EzA;x`vR44B0-g_qQbVp4ucUr`(-#eFwSM8>L~ zbBENfv`1e3JUPe0DwUyw1xETK8pA7td}=d{Ab&h5n%U~HKx4|`y_hiP!97m&KV@ay z*9U-|v&rmmq5A7o)rECnR%)OmVR-lor7d?sQH}CVbRrsw1r@?%r*H7js#1E*-(OsBiv?&$1}4n%&Aw!Xuc6M^_XA&jGxuN^^r$shRqk|A%h z_M?Ykvh5y%MhSgCX5(|a{*(rdeLkp0e3?(cQV8jOVf-nu$HJ{NnL%IPku-Dl!)E9K^LI!-@xwwL^1^ZJJq0x0Fpj?BXNA*bzmFAy+s zjNzS3yoaIuXKHDTBA95;CLth=<0Jb^vXmTbZTr0(|JlcvhrUMGm6CFotmm|Nj{BVg zezP5E+OQjmr$a;zuE^73%~PTJvd5obivr~!HK``^{YOJZpP~1I*}d8mPFP=&#blc{ z%6a2y8&|E>S=R<`x_I6?fZTBQ5k4O3oY?Vt-GI09o8m$;+dYw?{T8ehtw z=thKzu>|#2;KP0JKGWZ0d(38V7C{N3q`q+ZCOaic{kuKV9&!WkU!B=IDqm+t^?jjr z;LM@%DSTvYJ!$-L^MOE#1!>#&UInT_nxF~?PCK5Kc&j9S(h|=nWFEqIyj^kwQq;GM z=9>dmC)ABlHDdUS;*k?b_)?bjpbBnvM48e3CcQ6~3i%87^-z#_?t13im6zL1zt>Nf zlm+riILJa0$OG1<*^pKVph^TP#8=U^rkG0XYm)i~k6QkN);*kU7HkZW@CBRW1q+~>0% zR52__1Bl*`|0>?%dVv3JpTVd+)X9<-# z){-DQ#UfKvQup#wC8jwdJ=FdrLL+9DBFr@zG*)TclQ~0*?{hb2E+FB=cEIFis4W6v z_&@VYGhYrgn}Cw1%dI)AvGV~o9kxD_?nw#y%51w9ciuYc*xVVK)hQtiQ?}g}>~wFG zz?%9cO6ub9YEAEXU-z8#c+pBCvMPrV?bW2y@e}q?_+Ik~l+}65ge=g;QOf(tzOD2m zdtLn4j6ndiK4%C?eHeOJ7I8RCR9J09ZFzAA)lbQr$5diIFND?kP%PCKc-)<} zEMTeK=>Ocxh6sX)V@$s|^#HI|eWseYxrji4-$64`j*fvQ0&B4ne5d*?1UWJWf1xuD zhDnzTrq><0&p$>sLL0(z1v`%6D*XHdhz(#1LD%&op7s~cWCJU%dTmo(nw$Nq2nQKr zojw|E@Jaymy;?B~pL=710B`eGPxh%k|DQy6II>5*uq2oaCl#O4q~FueBr5yYA!CKio2?D_Pr2hge6w@eJw-RuyCI zE-Eh@MOdQ=pi5?l3~y$9s)Xv}3-DH}%7(uwj-D{K;_gG>zXd4TgOu=4!LkS)0nI-? zh&q6x?N+-2m^qwlsbersWLf*eBV%mpWtvzj(vv*vX3?%+I9>pA405SS;5V|m1lpg3 z&>I@xWUM!Y_?u=ZGX?(-NC*H@3a)lUo8nW>4LguyHHse(00Q3j7rq@ytWKjGmMfoe z`^{^&E*27lPez?oXLaium6upq;!Hr8tC?*t_Ia9X{{M}(cM6g%Oc!m-wpZDt1%q&s=I+zl&yh?zlzaz4Peu1;j zOo$%z_DvZO2*!Pjqm@1!3or|aP{m)b2%FW_Knjf@TR9JDaMX(_rJ)|EKma02r<$`D zhGx->Pln$Q8h|lTud{*O(y=$aiNHu6vlXIKd(&dPg`V@Ja-QCx3i)Z+2!UH=Ktx!j z71&{B+3Rnfq9t35j40T`MCKAy1 z6I+;5tm3ji*{@Me+FyCqPwNCIB~@Hi2?*;K>t-JF1mVGy#)5mIzp0nmMY{{RmiH1jC7Ie?p~ za2P~-2=XHmR3G?~Io$ps$>_r5Fv~bT8?$)A{NCy{DnCw>QQ~M30R<)+342ivY{Xr6 zixxad0gN#DpGR8#l_i`GLRpLJ)*>(@#_lOBv3tslj(Sc%oP->KQXwZA^1P}_JT(-|y z50VQ??jKwDaFF^9!3O~(gciwPd?2SXmdVpa81e#|v-h}!x6yS70~DWcjwPuF-_(Px zzT7t^3JMRCz@(k>y0kSJI%BMU>*t`!;Fh5%7%2UOJu*hb_)Fu%5_wk(&)uicbEZHR!wy4A6gpwthw3lfKonsm8xFadRm75Ux@q0neww5>z!wK|=LgIJVFjSptrTby*MXXlbqVf}( zNq|CQRk`r79GM1_=K!a>E(7M>uep_y?9R|462Wpw$DM&)fP%m;%rTAJ!HfcC$8VoN zi^~qbgN%u|bC2~d!(N}3U1oWxx5|G9kf!Ddpa_Q>UACbN0>B29dGVWgLUgp##R1uM z&li!N4-@!vLo_gJkU|y;Wt2*>Up=eW%C?BlgXl9A&)fIfZHA?G;eoaYgO4%B+Ub^w zQ8c=TG)Pt*T&{dPXrPS*zY~o8oi4zIxCjJvS)@WKr6P%(m`jpT6LrTRE@;%$F4g&d z)bozB5VjI;na1!>e;KrlwmW9Ld%Z^lFsdslX^Jfi&Bj$#r$0A;#bfqjRu2Fg0Wttp zMYh)GCS6qpX7GP#qXKy3I!UB7G(BHRIVx*m`BbZQ*^@a&jb(O*LyQ1cR_dFp3x+%X zQ(Eb^7>Hn9by?Z|cL_mi>``1>1ijZ}A_@1Aoi3bDGyC%tE{c1!hhQ&saxkrAe??Di z3NQn`fhaswZ$+iJpYDKFg7w7KrRqN5A0_@^sKGa?u!^~Dq|TU5*ewW$EAHti5BiOS z?V5`OzFg^$W-sAXx%Pn5GIN6$fLzE#FIGBkl4HKx{obAQ<`#HtZS}UPoPisGw2@`B z%gktt3k$~Vc(&q<#+8i@Sb7MJhM_{eu{=WdYz82}I{;4wmM0f9*i|=VM`Cehj{rb2 zZomalr!wieCn4I`9KWmPTt zK?3B;@H%#0K#D%ql6(KX({qJD=i2W7HGq-D4(W)+2kK2CWd7AlPw;*WJ{%bJFBrv5 zw6>XIZ;aM5b2wpWoWa%Li6>;$(#qIyDs7@FzknK5P{1@&bfYjd4m+d!oM3(50!)#e zXr)s_z-ti;@O=~kr6bK{-jC+rq zX4A~h2g%@hdIK6=g=o3^PkrL)hbu-g;~37pYu9$*q)}xI9fu3TED;!_e*&yfw`2rR zTH}llPu2AvyWg(A4_5Gc_+%6Yp&=5Os2^|0|I|hJ_famLMAPc^Uc&p`%B%Sk(Xxc< znIXgky=$BFYK#vrx#D0AQac=5puSp9i|;*PNi3rSuE4BHc@{o9FI+x?textOe7vhQ9< z)Ui}()dTAAA5V3lR)i~TDJum`CLk?lMh7x#e+Bg$7!)j>s57oy_-WvoCf)TMeK=tS zdGA-9f;;4OsM+4#UbXS7?Ti{uY7a1NFV-P3@lX`}dG@k`^2X8@$+oong{`K51KV_4 z8$M3TLM*8mt|z^*+MCa&wcyhHnp@l^1s&Q%m2P09p~))YTDRDZmU6R^ zwT#Ft#?sY>eYx>P2>aq55>9_XE}6(`aEil`s2Hrq=<9eGA=iWY6n?(?v92Z9(gQ{? zdpGtmqCS8Ol&B6Iv)l{DuNswJF1BKz)}*U-;TPQg3lp73b1( z&DFL2_2jlPtMn!3hb9>{IE%f!2Wvsv4g#HFI?ae^7o--M!_yVp&ez1q-=%!dnRwIU z>OiYx*%7MPB{{EIN}YKCt}gSJMY8w?!?N=>M7zB{a_ z?I2oHo6SQ$Gsy>0>rEWncH>V-LA8b}j~&0tuX6?J%k`9_ixYEv24tx9>u#})+&tjpaR|)gv0C!56|GJ8s6R(=Tiw=72*SJ->{i*gew?* zTiMlS1q2e1gPx>-lIq9yOkh2CFeA9qe67hTbwtu)5WedTtqvbt;JXlen*O%9oD00L zP1v#i9HfZ24#khx+!@4+45E~4e(gN698f)2g%bjr8?zeR;TqZJGI@Yrv$#2V zTQBmi;MJvK!J;oMW_@Q>{fy;Nxr(m(Vhccp_{8Ia;xxecx9+qN@2o~M+K6VHN^IvL7oN#W_(Pu9KA9Zb|Hr(O>0r@ITJ%f+*B2 zB+#oZXeVYazdf?Jw%+g)DAu^`dhmirIgL>eXoK{#W3EAPJu-Pa?ke1RAOWE5V0@sn zS%`7MSVMisU54tk9&IB^0zOnUt-{BkM5b~pS?3rY2i7z?JiiU_h=e* zY}ARB`G$zsJfU(HUd8L?Ce_Q7r(cQ|37bY456}UHstGXwR6zW}eo=qZk5` z$bSM9=%&b+b&7P!=u93+uDO`?#k5fU(M=OK$OsB_bCuYR2QeudHxneEqlW?Di{E{w zvoJm@Cxbff2&>h~p$2u;iesszWcjFHS2IUpihZn&|HBxAC`o&xWS!luUD$ zi5W(cf~XiK@93@d@L;PZo?a~4pY|Zg7w-DwG;dmwB{~;r6a(kz4b3apG5MqCQVM2& zqD!*6XF+tkM!$qAv@}>QOQg9;;9st$NvG_?Wt7McTWHwFwKI;%q2M&tdjs;dO5DW9 zI%l?_X+%AKkw~QbJro|L_cJtRd6xCSSD41~R9>+d<{T3ZRv9!Y?gzUl1opgAbW#^) zh=vB;shpi9Ie&EhD!#plTSLH{V-1 zsA=M>IetW3thN=tmF4e{&w)&^H~#bXAkq@q4C0z}7A%9~O?eVKGUZ1GTHxE?m&g<| ztk2RXrZT`+?#^ow8dm>n>Kbh!I>EPD3>WLMwZOo&Kc-I3PO#H;;>~Q?QNzBOWV4+1HYaYZsGg< z{`K5j5fkL@_xd2f_slg6$%F4->79=bclX~R*8ifK|Cvz!e|a%IE1fLbkD*8cW*x^a=glSO<6v(h*5vCQlHnt6$|qi)hQsd# zSZ*S;{Ws_MhtvMgbNp{q{Ljh=^FJ#i%>Pi^b?E+45&7q9AzK?K6B{Q-{Qo7#|IbuJ zIQ}8n|0nOAjsD-E;(uKKKmQQ_jfxpq{$CZ5%m4D;#T~qBYDUGNN(~v9+^@DZa?Ogb ztmR^@tx{nzwj#kI^ND4Z3PTFZMOiCCJH!kZgvwe-jYtxmPq}q4|2ef@f)^x0&pkQOMX-6QaJ`i!V?GFAPLc z_LTu=Ehojoi)gcqkowrfwHzrf$Q0D(iS9+Dz|w{VMmvWwD}1<7ro6^-`XDLSVufXc9xR@^Ure93Ze|ql_0Mi7|zWy;lL_Fw!EoRvnsjzDTP2^6;70r z*a}<+s-}Y{<;|Hm!BG92h{$Wz@u74+Hd7u#eDk@|ExVJjIT?E$ikF=H3-zV%^~KKf zG03ZTI9~J)ZkM5OeO*+(TWUIOG+11ns$+xOSq5bDFnqazw@70xr%1Eve!NrQC=-2^ zK8YKlnai44l3&crd)l(;3pVC7)gY5U)@IN0s7w6lPXfv^EXwXWUtH>Ye+_T;k^^;F z?Cn-LpG$6^G?I1qMksP&_kAY5p@9#D%K0&QT^1}65(=Zp7qU(fyYjuBgS<7=K4^Fq z4LXq?I@aO5q>*BMUgqF8=vpw31Mu=Hm6W8tQ#{itVnNXcOjIuUNi@*6jbb2AFlew} z5k8r<egLgO2!q;)NLKIS)dym`#-1)^Oe`hb-g;=C0r{%gdya44MhSgaIfHdKgR% zF75eW=CPC8Y_v}RH)>j%t!-=6_|>xDPCh3GJpbD2?TGrd$E zom8o&XBc~lr^56^ScW;^(RC0YyMyI{ppm~xGE^6>8$zZoJyYhOu(=+epHhS6lmLo2 zOn~R>{EcEr0|#Rj5knIsF!S{=>nVmPDlQBVOXyXgwFtwayFSaRQVb*agW#bD7j4ZU zKK_h~^Z?(noJ3@bPCK?4Lmx1Q98y&EU!-+z- z7Jp6#O0<~N`3o>X(5UpV@S}QqzLyI;X>rjn3sZX7ygbcg0?tT^0>qe{unvO?Bn5J< zdVf%-96|Y+BNn7q8@Tjpzec!#r-syHXmcYlv<=m~M6(FBHkmwf7Ada7Cn)FWFZ)i; zl1q~qv7DY@gb`XZ%zVfdx0SHwWy$!dXzGfqVTw0^RRHwRtM0v_i_Ixz|H_#Fc1n63 zb84I$?(D|y=4`{c0!$M~!p^%wwv5T^Rc@PA(_hs zVK8h*YYsa}4gEv#I(N)d@R?Fcg7cv01g}}3!c=G zkcY6DA@m^pQpn>&6p^Jc2y()WJ@Oe<8HkZ%JcJUIggU+dPI(e+9!^bsNB~SFK!$|G zZ_Jq8Y~dN?@^xzs0#cvuT&j1njjj}!Cx~kA3Tn`^yjUXq9brz`x`N6NBBK2>p;mwr z^#}PKpE;f{Ijc18`2{B~Lg3N5i%otffhT~$58{^#3CIb3_BDW*K_ZypE+MBTlb+G+ znanII#`pEBP&cKRuJ)qIHXzfv7XOFV$8VwSrooYA6JQ32u|x)tjs)~XdfB#!{7qPM zn5^9PLZly57Bq!jXnovcR#5c;_iO?XT7OG#^GUXj=^}kpy`;1ml~La3lp13TQZlb0 zQ|56)W4-yHI&dx4PT2Vo>NmgpgK44Cp<7?{?Cr02KBww3bb)Th&*ZJNXUJ zAES|L?@#tfEO~){`Vq9Sv8+l+9LBW>Q=D6ORec4v3R&pKK?<_JrVhVKCV1LXd_)(e zPkE6NS-^bwd(;0{B7O!*M`asd=f`7c4SXc=?Y4Ihzvsv6cN7%hstT)p^lW(VzOMon z9)AOnyt|&l7bC$m+-1u*FB>)Q^Y&_O?iaoC9VDjsg!Cc^j8%Z}I8@g}Sz;SJm0yw< z5tz>}`a(7v__d&^eL>18KY}zfxKEQg&EMJPSdXL^5kT9FtFl@zMs1)~WsJI11fC<@ zgu>fErqLV}Do@2Ej6U<5r*8{(C*+({KEsy*^6PGpVQSk)S)AxF-0K6dhIO@ ztu0HDo!|J#s4tX+%R!9-acMg$C$R z8QUolIoDq^UbN;7&=J0vlAV=P6%sl2r3Ok&ld8! zu2LzIMok@BOHDLYjCwPo2lM2DVHGa3+||GN#I;u5lCV@`m)fuX_&Mw~7Q8YbV}+BF z5U9<+YQ?3Lf%!-)#7MdRk25)z6m4~yIkyavwUpQz_q;aZ7qpJhh#@C&D#cQU^ns}& zRSb}IZ={unuu-wgWbb^Yi@&sA!=LVv9=WCZLr!O#Z|-An6Dz74Pb^24Vvd8^ zJS|!*fGF0A>tETmpblKQE4(d93r;&ADT|^$aRI~$PH02Mrc8zOMi+Q?SG{`oCf!(3 zOIR`Qa(*+%+fY1I&e==Xo)EZ3cW^R7GHi%kM~=e$_OyiXc6cjdO8n|z>mCzD7}Te; ztasZfmxY(sDRI(?rOeJ0xC6i>X5f9^(X&d6`tgVyG&(0*lAnt3-YI6dLrH$rvV%_f zhMUw9-#46L2{(M-kB}EJwQhze6hYz%NQzK*@l~UeX2u+1To6|E4@zyhoK{BP%j^h2 zJ#x@R6tlAF{4 z9`k5bA9RsysauR)*(B%8&pP}}#6zl~KlQCjl0?kj0PIS_8Yy62_Dt&2^o<1=gYwTp zKcX0ld-4PF1dx!Qof<&pzil{D+>>koLC~MJ+eBFpqUJkE0{I(*$F!kG#;s-&jS8Mg zWl%;@j_V@Z)U7O+^?xI@*Fx%#MiH+Aa2|bGy9P#cKR@G~mh{tLSZ3ccZ1^U4Xi5dH zX}>fA1CUdDp97lrQk1e9yCK6}0~LD1prd$pyR~3S2d5~cp8|PdJE-TzK}VwzjkObE zwYf2z0JY)~H^cTXQH0PN>65Akni?36+J;rqDu{g2TWlQ(mkMtCo{RZoCi09)Q^b!8 zOwH05I;3$$g9*#DE*7Z50K}9y1Wx2gQ!q_c=60}%Vk8RwC{ZFvBlg|^J)YGxVWHadEh8h+zYNuFo(h+#7B@s2&WUQ3vYRC z#%#VVYO8_DilS&)AO4 zg8-P-;~hT-_ZKT^Z$#^>c&iy%Xa5GBqvSE$X1HrIHGb& zjlOxxaVwBkl57mVJ$ht|_SD0Y7M_=F!75JBgmj=f^h( zyD=+k5l*I}x*#&zdXuol(-D&~!nB4kSh%%6H@7z)jVTaTGX=b~Jl$^!@K-H3Wt+-d ztT&;To6hsq7dg%jxQWg=VzxPZ8!%^)`G8JjJPRM&^R$0juh@^z6a8_8RKhfF9;T~( zHiU~z|HdxZO&waz>t9c<(6n&$m?}aEfoRVXpOK@VioKOifXfW0ZYW zU0BB9bIpaf6>yuFXBlN!NmF?x6=9}Lq$y)JYnxJMrOGLH*@0FwxL5-m2FKBB34-9r zuym@u2|4VDU%`Xr<0*QBj!UE>{Q&BUB?u^Ia9g8wwyL=HG)w?B<%;|C!xxFw;7;DS z-%}X@z~@T?B+6L=M)1ja+PU+R^f*RImJuELay9hf-&|2(ZoXjpBa3jL=ig7nWX1*QbW_J&c6dHQmAx6g3`gKFmJ z9ZmIC1T~#S%z389&m8NALBwZD>kLMAvX`p`uq(LzBV45T=*XZ%mtCCt+og87GTRj)S7s6TS&gR(mc>r3t(t7QK>e_b}FJrHuv`4UQz` z7%`Zf_yu7riOm%^%x%GN=rI(ME7N_1p{Mo+|LoJ5l-WI-^9WYH#OhJV5}|ux zfl9eo>-qF{YL4>g4pGq}rXXC8E+<9lQ&T^r|DVVe-uFKDxc6^`~Uw0!D8R+yFT_-1wP|tF2^ntjkh(xXhfG zVLC1>U4y!yp8B0No9+*uA?C%lQbH3uhmg6N!*7X&`)Y}XGh@Lne7)mB<8vzk>`}+& zU)ih2Eb-FJo^urkZs&&2=qf4i3vyJqS%5)cj(`fI$+066OOtAPXUpbvaFUl2ND7l; zFHAh)8owEx9P`iWQhoX={?LB2>FQ`VpP!=YRtT^p`k;fHC1L{q)?Q zgo6%?nJKT~Oy3Z=Qy`4t_byljiT>Q|t7&udk|7Q3kv?8^qRp=e<3#h!5_xx;=dD@h z$H;nnb6@Y^IxBnZXa5ip@w}Owk9-1vEL(-Dd&J3KDT}p&i*p2nIkNC2Mg`2Ko*m+v z!W~$D{LY%S)Ckx(DT%@Dby-aQKr;7ZbTm3*;Lh;s46l*7-bhsn?zzPl%Ym)>dYqq< zo|BWEYJA3(ySToqe6YW3u}joQq~`jimA%18dDH`n0nmV*lJ@UF>3{jM|CuxXAHbL8 z{|bDW<^Kcl<^P}Jz4OI{X8-OO{}OBY-@Nyqm1*XG7NY;bdH_l+rG&^uK%CE|NrK^ENsmGO4g&a)?yA+|Eq7p&ITMN5Psaf8VJ})V($kD zX8-qDYBqEPXTqvbJX9*>N+8Gsg!`1&j{~{nIVHGF3tUUX=fw-%*HX*CB6hh4qwnW| z+Kesw$C6&T(SnN7f~)WQf-9fb&sl}<2M6=W-Gb{(PPd1Tth9MHe2!$#q_p3U8$xJ2 z9to-39di1~LrE_--IX_tX7oEF0Z6>yX^erHskqkwO^}ZR_fl1~`B8yAu^Ly!V^P#~``ZvF=QvWX%Jxpq zParGa*zrIw9rSirRK#qoTISAti2DiPl?Srv_QQ!B-~Q`PY}0_sNa#dml*u3D);^A~}o$AB{AwiH|zSUdBk?E&B}gkv-Rw7}uZ6-Jzl5 zF@57s6qxSSyyh)s9GbgoYfe)sj1Pq@!@Ltbb53lbVrZeivpyki={DzysaEB1zBpIg z%zxhMINS`b$*?}HtUh#DG#eTgDw-w+L8Z#3v(6{+$!0dknsqPf1y{QUV_6GYqCX9Z z;2H7w)<~I?xi>STe7$Gj*&yL%m@;M~A7n;Ted#;zS%F*w7+E)FV}X#$@zhI&ap)r~ zgtcCsl{_{u#2_Bojt59HeNryQ9vRu)HtdX`+QK@`ACgAdm*{+-ydJ!M+XW=GkUVIE zefgZ2BcTroCgj>-<;%>6lW zb6O`AGhXS-Y`IEW81>QTU*_Qz&nXi{ihGy07vM;Ag#!wXY{ECRdgT_3iz}2zMH!;d z>K-PB>30JP`gxYsJIq!r3yMDqe5qc@#2%9gT+|8KZLA)8Y0QNCKuEW7zJptV-fdbluU z3*71qP>g(?2~<#R(iP7a?pTLe1r!d#WAiL!N|FyxB$22?3YfhrO!~u|-}HHuyw@n` zHBjWH^fG|Ee@PCOF;d}<{HH}ep5>7EaKY+t__ikETls2Z^%n4cD#DPS`h^(TBBEbW z0_@FnA)#&^)KK&EQWzWwd%hG&I6Aqok$vm!rtKG+qw}Q%l#9w2e3%hSy3o-n3JLoF z&!7B?YI1wAx0q(Zgpv8USyS_GbD?FM#sTOt;I0|1M;vG>rZxNZw$NE-MMg0z1=_7K z8WuqkTa0z8!f7^K9XGTJFVN6{&+u?Hn zh39%C7!6{)^4BOf4A)8BzV9;EQL}9EjfhjPeQy5)t|B$T%dL z)^(x;a4Scq$tUJObGhR5ES6XBpuum}HMk_>IeT0)+%=X2MEpF%x6mEfh*O1c;1T=) zZo*F;nx4X=t?Vp-v=*a8-Sib7j1p^|GD!fnFV(RNGqejSOOXQrCtL=>R{bE?I03M6 z;|LhEBEp%3ij0Jm2-DBgx$?mhE5`y;-zP>S2KWB#eeM>1ufb)S$|Vp6-pm7e9eu4n zbdzd#m8E{41Z5Q}y9=}5KB7+L?6d(bklm56Py`_q%>r?Q#>$mnIWOcAHPDQ}D=wx% z0Nuh^Bo@bFM5T#R>H+iN)&lZwvStul@aS|yLvZ(ycRnA3Q^n2HjU?wVG-RxK(iW#q zwyq2bN3XqHm-XV849E1NZS2_|kXCW#?==x$L0w3)i8D*)jj*BP!8}k;DOWcKIYif# zB6_6UIr3M&Ei~PbLm?=K!0zyPYlY@+*7BHVyds1Lp-jB85Io#j1mVIwh+Vp9f2UWr z2`aV}jAfOhryaIuhXS(owRENXyK90cW$leY3RK8ZsEF$xT{!Z|2BoDjaOFypk)=io zu}AusRF%hCLehm7T&&GC!Rpn9X`0_Rq=Hu_J<4|>?|N%&9vrc+P|T<-$aq~wEP}JP z0<%n`i~q=u&ap0J64dJZS`LQ;NMAJ)jM-Id)r>ikO}OOEIQO(5-RVSMagGLrr*8$h zyF|a^Zh=Z~Z7(|>1_ zzYA|3^K?BscDRCps0)M+A`;+K?>mWfIHaqC%3+XU&#nIQ@?Y^R)9g#JYw;8&Z*D-j z8|4a;(_Tb966r23WAYQoKkQU4V3Lj80-p6(s?Mqlhfu*b>z5}|*3oT$B(k3=117@x z^_?iqC>0|;%SG-cHDta9S(3yG{JC5tW)(pM|HU0|GSC0|#&m|(aRJH`oHrp(fy~S@ z*CIoMdpw2hnGi*kWRf)NigcN!TSX>6-Muf|v=0F_fDAM#FvB0-#g3`Ign9wm zq7;>4lhqwZKKf-32;wDj>?FW-A+DGj166YQK>27?Jv#!zo&=74i|AIY!~p%>z((X= z3EiwU)wwWK;r!`g%|eU~=~~tbq8BEFlMYM*vWCI}nWbz&9ts2m;ZJdIUGw4^NcdC> zvEN}Ftm$l*?b7QYqn>)~i-VcsW%#L*EY%bB=cs++@~gjOoIhuUYYQ|5w%|oIWOlZF zho6!k_w$S^l{hb}Fl=(H-Hu4+q2iPC2NOL~Ly|r10IwI*fziQ0mj{wbg8Z#}J6Yd_p2DIcVaYh32 zbuFR8M}rZ>zK!2`&<|V?ROWu0jP^CJxv4GM8NH(?3=U@M z=SYUv)ObV34hemVvYSQrndr1H%ah zK({y>%UX|^MXuOC(-s+?}22;DK07Bnp$veS!KlaTkWt{LBaP!RP>{j_WCZo7k1 zSLbAk(Cm}$L7cE?)MksNv;1vG2*&d46OtMTcDGhzUMvS1acn1bYed zMEa-n7}zCNA?MIK?@tl>S97Wc0@cD$sF|vz(c_o^rrJi7h1GToY)dS0(Vj=1_$|8U)*Fhcw-yh8=Aqg54rQ4N#P@#pd{`yV7^4rnv#|!9bSs?R zo#Wq@^~5pg0fo`)oMfuV6)1LT6ote9O*=`{&dIFC8lWVDQX5fy&#$gHYYG9Ir>1QH zj?h^6Q`21or7ju3!Om7s?3EcPcwOc$n#r0^C42*h!rMk^qDcxU;?}m9nxfN1rzND$ z>8s|p76QIs0~aKGWeY_&_>Bke%j0Oe*gd};D%8(23O0Ino3lSS9x?>wW@C8V>gEzb5VH0{$A3R^QwYK(N-g}l}BJf5HEggMUhvt2CZFJaV3GeIujaf?*&*#v_1}> zh22umrniYEAwk?!8w-?&XYZJQ!3RYX^`N~dkM%h~dWUi~uk%u~h~Dzh5Bc%$4(_{Y zODiQ#Y)^_HZWCoM(C&n(0m<)KZ9a*dSaadtt*l3hVV+NRO(hTb9dqvPPF*U`=*$SZ zCuESWZTShHtNl=`HU@)}gk+GpiXHC{o{&-f>!sLe!8>ik#nb%i+x*2(jQ{7>1@?%h zMGBB&qW-gMQUSpfy5Sjmq^W*lOg?v?>9}b#v=84-<#~vvU#Fj0Av~_}q!&ZRc|Swq z{T-M!1aD)CT&nbn+zD1m3d~i)`V&5gHv;nfbMSt-k4d$@AtNX(+?A%SFJ`Zkv%k#5 z$!YaQpQ^e*aT`mWYopU6>66vL@CZMN8g4n7Tv|oa%eS~Yd8^fULvunP_z;gpF3}j? z#9fy8x1eS%HtU=}6OS}v_s&-Gq7)xpK`4ZBAPl>HYKA451fhI^0zAxf zX{$VNC8ZX;yxiL_P6cdm(g;V;HavZNNOBb5;Jy!haxXq9RI*^aniNmEOBT;@4rEUX z9oY!LfImGN<|{CZmVn#JNto}un`1YaJ7JO>FCLKs)uV*{K~>CP2us1}#}U79tR z0&}ou`?G4#qRy)8wX`(BEK*P8(Ri4H<_b^ml>@XMsl6AK0zGKv)5+U-Jnfa9sV-6X z>>hUK{*f9(1U=>=Yb@`(+l6vUV`4(CO##vzQ?5lM zU#qntv-C$Y2_5$)^{izi%`Zf3z|OPamf&|wIQgdP>Trc3mZkTlbz&32xX)yUREB)i z4WHu)#P*hD*xCxQeVxf*4A{(g<;5(HBSTuvNcEy3$6h8>2*R83)MMH?!q_xhBIsNI zR~kGMEZD#wW$bH>`Wwh5q8sIBsuHLmVFtgdIR_GyE59hah7rUz;EVIb?07X&U!)t% zlX>j`xa`k>&yo5R)uM)6)X47@)@dhwLVJE4OI%}`eA=D$I@vI7d(Gg=PBdtz7cFFE z7SOM;`EspIvp|YiT2;KGa#Auqv|SG5dXeQRK@&@8Op;i#wsXrPfE{_8KqhjS;K*H~ z0tlC@fWH0JlA5R@9w)3__zTWsN{@~tx3e!?Cd++;-6W{cuNz!BpH-mQTzNhS0o^sL zuObGls)-&11<FE?xv5Vg`yU%zJS6lN>@|=9CCoFX;Zs35L|4N4J^Q?g=wGNr0KT!ko ztV>d}ph)C#{U|Atc1yf-niy)wZZl_XP}XEjL4v6kbzcD;YwdMzw$D$LyAWJ08tf-G zp@5y=zwz6e$7x&dAV$kuF4N=eZaQDHw|+Dy0qL~H1%2cJHl{)uSUS-#%XdIEOcydr zrHv-(Ys>Fk=jwHi3DtI`2S^c>I?g8=r4n(;ty4~m9u`gn*+gxMsa2*cIRSlpT#WTZ z-ZH5+1t#sW>wZ{|>>JN~ELUY_-*%)aLqF*OYuRdQdYkAxyj?esNHwS&Yl8u z{ll*I=@C|JhJhql+z=7Di;_Rox655CB2H@JUJ?Ij3w7c;Kba;~KZ1!d%T*&_6$RJ{Xlypw4VoiEflv)K?w`o1YK z*Z+wN6K=?CF{AgZks+-$vL&80+yep5_$`6`Uk-M{T=#7ED(~p>+~UzFN-e#<%R^~( z^+83A=1Hn^rrbg$D&LP6uP)uwn-S;4MB`M&eX3ryP4&$5PVC?53Ny8XhKIXVbj7F= zv+%^A{$M^#;ktwVAASyd>fuNxwaIDhm0&iePD+MvpJ(GQvGsvohu~TvDX(QEoeRc= z=r89_L=vhLY8|q03FcU!Bd$ET{$#;Da(clr+K47&n4p=j**hV?-vOH0c7;eyyqWt-OFWOjGmryaW{*Xo7kD2DxVRtl&W6s9f3q8} zM^`);UX9XHP9tAWHEjJRbbe1o=TXx{DFxgk&||a;*i<>$2ih53f6e@m;#zJ*8YoYlJJpR&q+?XQ zX)K(Jv?!Y4zz2Z=);t=25m(cR73hfxwmlcI7Bvd25O zsB|r9a53?$HMJh#i`E2NE-7D%9+k4!nQItIpsi3{(a*$oly<}2f=1N=GaS5GtcAza z7Z#4G59wJ`l*Bk~7dHcrtD#=R+yN}Q+sB4SX@XtC3lT%$AP@@;hcbF5ds5L}vEW5s zd2qUu=9O37g4l{^v;#9tr)^=YP;7Lh5p7S4Afz#?a4HsA$F#*lU>64ig)BgN4xNZx zZf9Uz;LPNLjp4CW;nZkix8;B3sMcgV;ffSecUL`_+z=6{Fi4x2h3uSO(Z>NRSQ)IojniN%FYXaOOv&`>VGk~eb_7uNMOiaKf z=MZ+I7_BVTJr!0>mJ1=;07qqrtSbBdf-|k{I^nEZ>4~)pKU*ojDqm}AKp(+EH?>_` zzo~1&;t&Yi9bA@$k$%ta8zaNhr=;l%%WLX~9Wp=Z`Ei|YA$8843U=pR>qRq(Jf56> zGjO(t5NwU6Pr_l|JgpR$!4y>49PP|r;5VboG|MS>Xf07xh0pqaSDu=cNyjhoG^qrNZ7Hsi6UB1D)KGeB+AH zzdtcyj4z$#mo{cM z;GR@7Ih+Fo6E^xjPPMJOqZcrMuaXO3=IEn({A-z=pAhRC^^-K0gGZZs_AoEGr3wsR z?v=LZVaTI$%2GY$RfJsjIEChJYEha@nZiDuQ?EHQ733Y`CO`IWdVI2P#L2pQwNtZ% zb!YlmR4`^POKw>HFqhNQ$$XS`D4;4*d5fEW-4ktii;UwWZ7jNz4 z75L9-$TP=<<<)8B!-q3gkh)wHI`yM(d)UZrm7^ftvT=X$5CrbWX`Xt(z&QRYBeob9 zqvVw6$@-8qjotB}iIchj6r88xAVu_0!niuXc%mg&K8Z@chH`3saMTA>TsVdJ2a?}_ zerTcg4ghJw9^)wi57=HRog2*t=r@zDxU_>-VA@Y`I-oT@z+?hN9xH9ftFi|LT(Duj zWMk91b=5CR_lH-)x5zV)?SeLO_+Wt!Xu?SVa6w<8lvVM=8ks4CwYvoc~z*Zls?D>?P#EyJphrtji0 z3KT%wR7hdmE1pL4P=wD-QHmiPg6GEqA@4t?xrBGDAo~As_6|U@ZOztb+qP}nwy}G+ zZQHhO+qS*icK2@EwtK(+aPK?skMsTa#;d4`IjdIH!mJgMIWlvMENbT+H3lHZ3;)Y=ANIdo}K|lxHz*@Q?CSy)BORi97(17tX^s zqz@pp_rn&F*H1z$E%NhEiOPYiBOUO^&gAsXx$_hQ;VffpGNX81VyB96@?@G)jk$I$ zZxQdSDt)PJn|GG>7lmslVAwGEdEo}&jC<+rwq;tBhQl^|`J4pBv`iST16BmaqiYvygJd5Gagu z2qWpEkLBGg5um0l`s{}@l3E|Jh-eCZytDu|&?h|yTmKP!-eC+@2#6M+h-0-`!kv*A z@`X6ffZGY!9zMK{zrj5^KLZ7WjTu~v2JS`Vz2o)}6n9yf<1OzZtoBhK6n=iBPC)0q zZ5GGTB(O&chYTDN=sTzy*qe;f9OZ<-7yv;K*O+Wiw-5?HTq|w>OfApm zbFz6f2!LlZrZ%<={-{Uago~UjOAr`rLQp?&R?bU*zM|1awozDUZ;3K5=GL*gHY>tn z$$&b2igIGD8pQ80rCXH+n~{NZqEg6Y)s2LgyxW-GQL2{bOUSdmiK6)_&i8Wc< zX|ONRBTWEYe`MiX;-aSZ1;h7S@Z}R>MYI(6fz#3*sZliQ*x+@-C@g*Wn(7z5_uS^w zLbr!{FGxy+qOX_eKbHD%UH}z3H*v4H-BZ?rmRUkJDe)*1;%|&bM<~aS%}>JE?JABx zrl9le*9NX*2Jh#pJRyF%?S;!eDD+r>?qyS**@)B^O|-~1a^`V~&@{X?M{D*4hFizm z9AgQ+IjjZ`__$tMlVGjTMDh?XQ>~3lU?Rh&8BV{A79)k3aCrevBEw5-6QMFnVz>L; zb?i;_9SA>aoqz(IC(UrHf9Z#>6{%r_%u#ocxW1{D2p~KkXh4J})h_Dd<)MiPCzYv+ z&kHW*_d=T6tN@PL*5c#gwStfNw|8?w-c(Iy=?mwx;7^s^%gUe|=?nyN(g1-a8Bplk zbQMZ$P#T=6X%nu1AcaqsX3eL0i1is6@s|V${1PVQvq}u4g~6|{9NES_qQDQ5icoE# zEx#6CqnN;PcUul1ifTPahGCG*xrx5&zmKSGj&|~Ao@qVWJg3^h7EZnq@M6J7v2+Z) zywW^E@SyQtiYyPr9X`}j)m$Mh+>#U$6 zom5?z<264c?*e&pwfa!PHs1~R6-5W$OV?FUq$6-XwEIU?GBA;{yfiJL2h^Om^oU9h zhyEyWV;7J1GG_ZkKtW?Zt2dg!o52C!J)@qS%3^ffO4*Qp@_E@n-=oqhC&hi>(SZ>m zdbxltw&O^>h{yJ_dNcM9$}X^r4U&PhrivC`%OAg)VW-dS>{vVK&_nQ4zPr6sk`j6DYAD(b3 z$|xDRY@P=XS;^%HH`Dx*g=OMDc5*se+r$&lvs+qo_TfP{j+(m5bDrb`QTeQGD@ySb zB!cC>bHBUP3J`Len(#8C5I=;nNy?8)i7`n^FRRI0it!B^9wtu1ts#RKl*mUu4i z_lmq92b-M=mAsdcSHpehhr4p>Vh$zW?>r2+qGD~%{{d&CX9Udu4hH_C@ajL;HvOM) z_J7|&Yl?|bi%OgHyMxv*TBb8tZ=W7Jo@2Y(y&@uS`B0~#b=`G5#GI5mxu2X<8VjeO z=lZ}h%gi!WB#CmPY#=c$Vwr*jETCW1>HdF^uM7XBl};0poN|QAPobUfFB?L3=cr?-|Y3D==VP_(SHFgkKjd}cs0R&6vGgb=vIPc;w}*50(5^6 zw1JKW7IBA47OtrX+e`{iptYTeFu9YG!+hc4f~=F%SlaVPhAa?dmQ|u%Ly#5HMd!8_ zH28wmbj~Kf=k(Ss`?hC~ZBKf8h9v<&96(^7-jIu@+xx*UUGI8u zzapS8Ay3pJJS9e z>;OOh_&vpJ(e`h#j^t{=FyOkkpoZOGK?Xu3xT$IR5g*9uxuC3>OA#T93Wd)Jh!Sr+ zwW%&n=yg-+;-Wvtvd4k`0CG3C`$28v$5fB#fMC)nP6#dF$qkk|+`R_A*PRz-yGVCH zo`37enCA8o2kj~hNE4d6LzP7sJPT8}c8&l5-whw3_@(`V8TBhuFO)4WPSVA%>J#Bf z81EvaP=V6OqBI}zTLU@{%rQUW!4J?x2%JZbu8+xX4`Zng1TTR0cdgKCX%P@B$eup1 zm@f)mAoGpLY%aY~=N0ZFcfFZ|=qFPxSEh%U}8#$FW7FVJQ%coF0-L0-WS9*Uf4eps85EpO6xVeg`Z$1-zd?3nf})V#yMB~7#32V ze7*neO!L&5WR)<{QPiqoB#$XbI>cv}Aa z`#H$=F}Fns>pWIVgHkDpO9y!Kf-MQc2kuCurlS)F-VV`pMUiHt+LD@P;FrbTEHcVi z`KG6&Z`WzYsE&2j7qzRBPe|{u@3fx60Q&7a=p8}UzX}7WKIGb{w2+5I5m2p23v_w7 zo(9_-y|PnEl`X5+0BNHxp_bj?rpe&%?D?kJDgez!vKJyRYwKY3E}wRy;C}6^aqDy+ z6GqtjDQ*nV57h2Dy8$0Rle>ZQ1<%xRc=<4gr=uh?Rb8`>Az4}4XTOcXF-e4s>Q^}i zWeu}Q(e2QT*oRn_rEbZ-pTc?g;T6QrA#zF0>`R$V`ccPEr!bIrMphfTHuAZ|dFOum z@lMCoQD7VQqLnF-vOsGFZ3?Nm3Aw4biE@x@AsmM<89-!G<)HZz_LxdA8eyVgX@!){ z5x`2M7Ta@x)(U{gZTmcp=@<|pzHmFFLt4f4Nb$1x=a6>>`I5c1eczpfguh|%4MSEB zTAQ*qhJcJ{mu=C_$otoVJl&02b z*)}oHu4|IhKuXjCW*ri35RPA3xro3awN!PF%N1a9qTg4eGBO6g_xB0jepz>4vl`vH}4J%68C=8@> zD6EV;end%Rxlki!EuJRXOjDXp7#Ty(NT`Q!3nc?Hnd~Xr$)R>Zs|Zji_?x`AL3)&1 zw-ISuXm!&YRqQ!j)kd_FiNbjUwE-u=fAJ{q#Y)1om&p4idgaPou`X^GDMyOZ(i~_G zs>NDHa4w&HWDkjcDq1Lc$TAVp;IkN7e{NO$py^$mM0e9&gsL7b3#{Zp?t-aSAJC(1 zc2hpv&zQ^1NUv-+xhXN3-z?pc^MQLQwke@Hl>H)2pEu#)s{EPo#Co<9v~~I;t8&@H zNPHB%vU-6xICEB2=FA|8t8ivi_>R>NdaC`Av3^%CrM=Cqgu;q)4?G2#crD!2GXW2)#K<%(QH!?`Wh8&De~g1L{4zI0Bn~usSYYj5c;ve z4wYF@F8na0S>t(GOn-qSxlx%8m|TM$OA6AceQga5W}iE;?|!tpOPaaNzbs#mo;WvE$U4<`_7h)@XI z5R8IUKA#YT1()VKuhLx`4il3Dd24g>hO1^X!6_32a-~!x!maNh_!lq6uW{^A2}H zm~%`ogiII_?;RH48s~YF0C)nAxESIAL%?2Oam>1=>-m#faZX?3pe&H*;nf2_G9!)$ z;qPV9+`tyOe;rDABD&_wBEM-U^n#q54`^ksj?}@~Q^s`0eBw>V57@!nx;N=kXoX@P zIP%)S_Ad$LimFjFVCW6%5!@sAM%Za<0D}&@_J{A=wuP?(nH@I|V2i6(l>nb?$Jkq4 zl-4n-7{WQa(?IU+iY03NwIaCPa zLrVdw(F7pd#oF?%*>z2g8Do4{4f$$D=|vjKekh0Z^GGS+{q^G{1QG^netVhmEy0k1 zdrz*uc;3s(odw=Q0t+wJ^TDThi+=h2$JWC9?tE4j1uZ7uxZ<3h3t&O}a!@O?TW?{oMgc1iLtJfRgi` zRtNe|eE&9fzVM)7l%H|fgfWArYQ;#2vbo&gp+jQsm4@9eFoXW zV+LwTJ(ijlv&ule)mDI!qeBhn>IPvSYK$@TMF`bG!Hbv!IYQ8kDq+apKrX}_XCE>HJoRQ=^Lwy=7O<_`#D^Fk zF?Kao(3xv&FNGI%@SaK8%Ax)0smYmguyxH7X?cJD&^0wWze>^U;Np638K>>9?x+3i zZy^&m+#ffIwA53wlz)bLUTNG30XzvNXxbO|2B?P_LEM-vU!cwdXCrnIi#5+}iL6EXa>`eF;Vq>xJ>W2U0>w{O4 zHCJLaf$r;e9=(Fo$6m6y%zVFj-k4JGkG!Xq_*W?aFaY*vnbqIH+kYf^|3`Ss#Pt6G zv_BPiZ3hWpHeXTkG@bnllWoE=GR}%%J{1yOj{79z>HKh*4z|(FJe0wswi;H9UUZ_`llFh zt_NvvR2w9w<cA)=oGO@ zF3E$$Ana?$U7Mh0*Z;Va`Tjhf^D;N+T_Pt8Ht3`%98syS+N_jHZP;B(Ru6C3^$4-3 z#Bji?O^qN-Sv{<`1q1`oP_Ul)yOsJ24^PP4$x*@BLD<&X&erBzjqF=tO~TmR)Xa&1 zgI>~F-_%%E-_er5$-()*GteCLO3nsO?smri+WxOpwwkHl;3o1KMTR^Q3N{QJvvod3xDGZ4`JbM`Gx zM!?9)LC5g@U}V*%SI{@Nar*gvmfshopzrjZO}F{?yC24mw$2WQ#*PGxjQlgHDN>0Xh-+NI1*Z9{^$h<2Zo00^b3IoW%-T@Dt_qVFtcYQ6LFeosn zcATCfRVrXy_CzvR32a{lRR5hGDwqK4Si9C+PJ0Lx-K&+*N51!zE zzLWnQ%VK8wubKcR#(!$#vHeGJydrf=+x20jPwMwM|J}nLd{O6S+M zO2e9d^OzJGmKO!uOAv-HAuYeuqLptM;kZHa7`E(4AoTW>af8Fr)Y90->`9;#apR(q zRNQIIn(EdZ2m5~YAyQYt0t{&^i^{p{uUBKa5t7J>>Kh(OAhFqpl0lc6;rQXUmRF-q z11M+`XIcBI?c$`YEJGf{ig(%d0|DWqNmuXYa) zcG~j%S_lqWQ#Rx31E+_iXsUY?%C{zLHMV4poqHc(6Y?3Qg}N;OTAHZnkF|}EcojQ> zJ&geeRMdmMO_P@7r<%v4S@7>jA2>#Goh9WyCEa}d*u1pg!C5aC&HaA)4Fnmk-)V#1 z8?q@=d#5`GB|SAdfTn!8D)1u8BO_Y71wO7mPx)E4p9)#t#!eN>KRj$1)7c*b^kvAc zTq0Co0iG>#c$K`mn^K1>D=S^j$sc%OfA(xzFZtzOGSyDJ(k~rc;k~QjD-y@_ee7K} zb!kGa)VO$P{DB3>C-lIaZqYue$oA0WlPQr0r`GM#fR!ylZL3~;~^Cly_{WHGC_zLa#xZg-%niKZ2EO1c5`j}(#d+eO8O@OjO;aKwO?W|Sy_ea zZbNc?x9yb=QO8e;t13UsnMsMfDTs&Dmh=I_fUtA-z(WA@q(WO*aJopmOFF^{yOB|9 zA;0C?F#gfK5{}GJIUYr5v_plc;VLBV)G$Vw>?E3VYXaaBPF<)kfJ|$C-r3IzpP)2g z{cUPOBm;&30jpqIg*0>pdFo@cU>=xIC~^lMrdZ@$iE7ABs&_@?{l`ydWx<0nBXvLG zkJ?_HI+37Vyv)|eW*0WA@j$sN@f2lu&RbX62*RIT9hO%DP|0*9gK@=T&E1GZ{J4%$g3CMEPh&dDoT)95-=05@b*ofE1Rz>F76`^%O9Z5^Nf8Hozc{HtqG`<*G5F zToBu4R1%lXChbzMB?Ri`uGz;PV{x8zSb88L5T(G?6Ef}$5O=MX@k+w94Ndy8+$>y^ z_3!TN9I|bLG9r775kM2~Dee`9Kfi-!-KlLH;UON&6+ zkwA(G=Q2cyei#{okHPRz3X?itR8zXDP?k_e=w8Itrgnj`tgioHVsKy`=bD`qbQSO?% zq!ag$vtS8y;75af{ct}qpn`Y&=iOHlcRwvh>vq=wUnpv8-G4v_K zsNMBK4}#USPUFSWyCMrip%iU^$Hb1*0)2pf*eLEglh8j%Hxt?*BToldlR~Q+aG-tC zU7qTF%tnlsO?q7+^5zg8QiyC3f?v%~KO^6jeXy(a!{Mtx-J?M{J)5x_iW9swGxXaO zEWfl!5EjotG<=cw`(wDq8^{+`M-@(kUlv%L^8zcB49ayp`s9h?T_V=Hs(x;tl~~%o zA73h@fQ#FL+OAdgCxPJp%3C89xdF~!Zgo8;GB8}s!6JHK8ZVIBQW+y*aiEO&?8A!- zJyIxgMWH|NS0G_4M72hCBzSr4rFO2g^*KgC!cf^-!CLk*(K7lR3pk zJ$~d(Xb&_$vEZp)^?LT9&B!MONuVw;gB`+S>G4~Xp5`sG-sg+ZvY^Mii3Vo6^fe&3 zydrv}rVd;`(6mJTrs7z}JI3?GIdH#W3C~1!(ZWFS>hN-`xR^;PeVok5MWXfMx0Am_ zMdVVD_&R%WGj%-Im~DNgg?uTSB)&$H zk=sP$IK|(d^c{J$(wMP1OUGG(A38gZSENFBys}wNnkvdc#m6sQ7@%LW1}(C0{y4qa z>*38hc(Z4=spvIgZSSrw zsmAPGO3W-&bl3d6^>OH?K$rKuX*jljO$b%|)6gq?I8Y`sbTapP%A23y>t&hAoH8+z z9GklI(2|yVZ&9!HC;oYA;Gwu%olRDOcm(5qt!@DBWb>kiW9WKx=g+r>!&!^M>EHP# z|C_Q=4o>#}_Dwk1ng1cP7*>6Ab|4{B-)X=omsAijzO0Zyce&{Ozp!SE!j9#rH4M-)vi z+Y!!>(RCV|1`8TuvTn?YPD4f>O=S2%BwHG9A@Mv99ZeQbM4!m1#{&G22N4-kWEhFk zl}{~4hYR0bzVEJFK$zmVaiAbw0AnjBm0)-5sZ^Kg|RR z0u6B3j@q$-V4noq1jvjDB^*d*%L^UImII&zi$XI1XZWGFf`jKH$<7)Q!20g^9jhY_V;7y;6Zlr~Woj? z$(7l>al}!wc%$L+;NXeKnV?t)R%&3Qm}L-f2p^~>M?l38A)}#jLC&ieEl0}{z`RO2Utl;Z8dkl|(m zm}7CW$T?UJ5gfJly##&_*i7Ck$%(=#!C9*91qE_|lgn~CtK`^89VW#CciJZ~Daq-@ zWZQ8Zx(Or0X*HI##0TDkjmUGNa>{V#a4H|C(wp-4@~%I4Po>h_)sV@Q@J+IRT2Skj zfLH0h+pfEQ@_yJn*>_*8EB3Bgp{GuKwW`WYZPn0U*AVg{ncmA!d_BIM`M4~9-Mw6& zv-X(#x_>C~_hw`__ww**TBUwoOnsPis@0m9sy#RLR^L?ch~2-AS^G*7pNcv7I1U8L=gQIbPTQ)SFKs>=bzQRabae5g z`*vv39ZKWrJWU*`pz95zE@s8By8=%s1s|B_qGzsO8g*&d)*LJO(^?e_JSG=BAU~lP zWcfHd1JR;YiZ+`V>P4E6TuO`&Grla_(xJD0UIywXUdj{vuB}1acKiK2d(x5PjonX_ zn-R^R0Lt&nhbeRWeyw0vdEk2`_J*dR+MGJkFC-L^ZOj6pqYED(6hR=S)Oo7l-1qY2 z)12*Fsi{#dcJGfj)v9xSfjW@+S`uN+MxOcQ7^~J^<@fwdzJj1#)$={#~>Ihicn*l_(=GqLmWA z^LDr5<9t`UfNz42Fpz*6;+7>4yb&ja>F=YiMc?uQw{kahvC?TtRvoEaP^baLaA-l> zhcXYfeIVoDW9eSLzqmgC-IiC5C^Nmvy@Xn;G`)rI4io)na*NEmm?5WyIpi-IdM_ID z^&{>Yy&KWO?^dFU6RlE6()#MsM1jtPi!O#~Hf(*g@aZA3ky{$X+%7WgGFrKM(AwuR z{rw$eti0tl>n;<@@r>5mT5($O$_tor)}*GI%^K#vc-NBp4^^rp>fAvyEde>1YQWaY zoweZA2o)_+2rIqU*V_6L%Yq__#@2Es(#fLs0G8y5+trX(JBC{DEP~1q%7(k_6k`<^ z@Fe0hI2EWxw%hWrYH0%k2%DghmPl7}q7Oa~kHFg^+eFGqRw{`mQ7Z`w8&D4GUI|K~ zwGg4hGdS27v@W(PD~DnbB!au# zQ$c<)VICbnM`K47P84z=7rmh^iULUYTc-(oeQ{!`ipt954>^4&MjfQdHiOj6dZH{082G1IA>S7mng; z=3#uy%F@wxz(7JIK@=Lu4<9oN6RjV!gCAF`LBGlrRRAFoU9by>YFGqbyn6!fOyMQV z?7!6uMiH%nlDpPY%ZFr!RoGvX0;%OmO>2G>Jz_AXxk*MFesg(BH zjbPe_Y%XEKLe`}DqEQ1}gBC_Gj6Z>k1oiR>nm3W&Wo3zM$|BOFS+LQisva(Y$s--R z`zAUCVEE85uK-0=k?MehrCgnFg3(SVp@RH!G1^NC`8uW{y(`4^4s46ldn&$&x^^SG z%i8s>U~`Pyg}inpl&&Q74%I3}!)YK7aOn>_HrKE#c zt|Z4VsKLd*6L)loIO_@T9YR7g8Tg=)Tt`haqp7vfy{?Xjl|Nu^_*l=}H?Apd9#2o| zl{ET#b1)&L$5R3MR&D4qe=k2GQ+VhSdGj~&-W7+vZ&q9R-mAdviwJv%E*Czjc1%JI z8~d&LDO#DVt;Yk`jY!^jZN+{TIgqlJs!z%$qVL+=q3PyvQ6<&!0P)<75pi(<-zJY2 zkyPTrjrJyX4_^sfX~Ak)&w2S z$^Osc&-{F?;!Xc~)~n5a%zCiW#%Yp`Lxb8KA4o z4=4U7;5~hc9{cODzAh*6*3OUj zXHcIw29Lp+pNseKhhbs$CNFg&=?cCR-rZWdU-b(_3v!74!Zo-het&edtb6Z#c@yZ; zK6ae8zUgS&2jJ=b@uBP)jrPZ)UjsnFgjrpDy1Cue1`V)T2k#+t9(h@tl0U{AIIevW zYxFNeS5RJeJ!1El-`UbkH$hL^O9p|5K)bzEKYG9G?5sb)^8e2N{|ntp)a|=}g^?ox z>pvS>{9V-cU!h74cGmxb1K$)Z#{WAU7*x}?)ntd+l%F$vkJCUZr_ZB^YXVkr`;NKv z;RWQ`A-Bq&a|xdTUG}chZ@P?DdhSoIv~=m83lnWt4iG00xl_LP4P)U4>;@5L{K81E z&tf#$|Iw!w_52dKtl)%^oe$*p5aK;35khPi4}1Qu2UN!=hFr}+OeVNhXWt*d5XcDv7|4lolGKl*p3;XCDdEqF$Tk!xy>kOPnO+A1t3`JQ zHdzb-mcS;!SU;hTFs^wG8WlYRs?$PCNY)t zn?73}5Pkug7-kH)MIN#~x^GS34y=XHX~gLf=D{G2LrkbeL6|ZsOaQt$(g#kE*b1sI zP+%k3kk4#YUEvq5231@CUALTp>>+f(1%j{}^t&=cvH;1mAF-%L;^R?-G{LLtRY&!Nz8n42r{}okevWg zu&@=NUn@M`T<(0F-yWPjp=?Q5%~<(SGHWea>9ts04+8u+T?)8*5Ig+oW0_7p!L zBd7X?jyDQy?a_#>>OHrS%d-=cucs&b%E;1%O|#s~`PAcCH;0CEnnnDX^W-^K&W4UJ zHbc+I;8x~w;Axq~okfLnb!a=@laT%rjH+HpgDNjV?LXp%Ou!v=|1NeN1>=WV?A>HuJP=ovLdw=(pZa!uFnCY>v5$ogxmf-V zve7JA)iat(12M&7Q1D6vE?)J=(mtLRd0&dRez;+Pn9sTTamzJtB{`utWSwXyA8UJjWgskUMjd}Qe^lZ35 zOEKeh2zsoBa>Q&@Tp04C0%dU$;Jb=8HHiNm?|%+4A3 z*fidlv<^p+Mum?0``JU`*P*?Wsnj6@87;;av{$Kx*q`DxhGm9Th8F8$(H(hL@A;Rv zCBM_0m1C61M_vUuHK!^}>M9FsuPfCzYM*D8WMZn{-8l`-^M~QA-94YpTYmTHO0bu_ zD>TQp{B8{vc<%^gdsynDv&v*U<2kK3&f-4+X==2A-bXRQ*2LAfhX$q`m5#ag)?<*Kb+^S7EuVg%`PVR%x=OZKyUoED>`mZB=%16qJL)hhi$8 zsu7}7eAWgvz3PB!|KWUfeJI`mb^QHm53F`Y15!DObGk%V6%l?X$l$IJ%6LrwNq09knLfN|L+a)Z)>&g(K7^ z_Uq+7bQ?d`xux?!oUZ25?s8n(D#%rJ0!d@n3xfv-Og{Ri#;nZ?!;=$YYm;JamAm(T z8f(C~d${P!6FtPF?4||Fa6&B_@=7ooarUP#PvzJzch6}34alNlkcsX5;h=m5kk0Di zAi~o?-AYDZNCtpEG=VFBXHNb?dj0=pPMA6VCv&oHgTjfhDSu1M6I4HOm>Cp@q-MTa z1ws`6L?~2Ah)IAzMgfELG39egS9)<~67n$VWLtEoZ&3QaSRPra^__pJ#pvDD6;xu21`mnoP(%8NG}?-RriRo%3$OTLuNEPWJUzZmkz&@3ZR9A3wHpGnTohr);34mk=svYOQoc1C4~XMx>B-qE-i*2xIqcN_hMaW6qER zxZyk+M?i*OCWr0)gE1%j2T*pj5H>L<6|=_lVjfY`h(){s9q;t$^yC=&(HTq=RQ0CS zbNt#F+@R8+{dz=%Rk|p~5UNHTJ+#qOndG{&Z!ZxP;Sz! z`--IeIl01l(}>YRY15FyInqd*q8JheQ*hIm(L!+3puZSM%Js}w`^li0TyB=Z5V+FL z`^MquB)^3@;CTi?6z@T_U)&`z$lQqhjU*w_E|CyxYDvNeP1G+fm_;SY0i|;oXsW`4 zXBkn|-OZkzId2EK)v5e=C13i8Yps)14Ul0>>FM+zf2(>2#INkdh{)ar#IH@lC>DW& zyNwla5Jank6u42<7QWEU$s^$_W+?zo?ur;8KnzH*nF4lr@=QymxkC;`Y8fLDcJ|rQ7b(CiFF#F)6)QRgGND zO+~M4MGAcTy1h8ybYLcD=jKba2zIJoW<$f&RWVT6>qUzUT-uwcK=zf1*OD*@sTOEH zge9saBF8_TaOO}%X~Tw8b;$s6HGo0w#r08h#dUvq80${N;G6??)nyS)K090~^5cE1 z0m-~3F7nl)+upy7%!%Xvh3BNj&Zv!d5Kb3cC7R5|)$!$Uq!8ZVE@JdE?CJ1g<#1@> zaLAxtsGRp^lj#RS_I>S2u4?14>izu?IDv_{>dNu;(69TU-SeeAFi++8YqQ(8HxtD_ z+Ed?wpdec4fX1be{f>SYwl`<&*c$qtr?f>wq0rYWkE;g86g;#)o@~p!-TRWBiLp|k zDeC{C9O2xud((++6C_TR^sS9O4eMp}m5<5gwe+o>Vb7;0P*bb< z7Lz`OSfEZ?+$|-_RO^+DB`VQlUr`p5pE3FMSY^W-s#ZsuOKD1~(VWk9cBvMV-pa>q zD$x@&_&T&UU{ExwW_X&h)i74@$JXJv)~YNn>>5_|c2_Sl(=hWh2cxsYi;vAQAk#Fd z;I;I&eAR3RV-a2ZWXHeiHtybz20qSG_B_&gU!|MCt#j<-Xn=CKaN&#C46E(x29 zzxuqtruW_cBgl7|xE*xNT|u3=7~h@A<*=|g*Q6H&6>GQ~&3m!UZ(-=QJS)^Dd^)0?RDM0d}3EqGWi*nxJC^mR-DEPSSC3==hIq zjDz-tm5gRa;RXq}%(p)4_+!cZOC#$Y@KI;UL-|~}TDAF~lL?9W`G&7oD_u_vX)Wb? zeY7TXa6e;k>m#=K5F}eMdhTKKTer7d3OpM>>eNqF8sIaR*cJg_QW7P;tFx!ex-S!!}8~^hx9aqx^}Mne6wqQ&*z@}oz3|R zRp@_jb6Eag2*dF|K$tGIbsKDUgilmHGWeL$T^M=+gg!Ya7H5BqdVd}av7HGrd*TWI zN`SHLXPDH^geq;zh~Q{e8UqSLNHP+dIgU#CM0=b%ll=yEoGQZM z`<_0PBR9ixWYgWFo&RtEdMN;i%9{wFic_&I!h3yIOfTtC_fGOKAbv0 zssTX%Qov>MAXpn!YDomudMgT!P}n%&4OHj@35a@72a!n- z&ip|t-~$l&K|sy{SAQ~N5g{B06GS6>yv#Cjt1c`uyZHfFtAN{scoy_}NslBLAqbAWRksp>eR`Vh|%ik{~}E0SrO{@k()lm;!MDIh9zytZ`%l@&jqi{m3aS zzRHa`7{c4%1YU4|!o|blQLW-IsKh0J%?I_^Jxk9da^R_=)R={c#x<;nsC2ZESq5)!DtNOUmWrqC@>1ZcqMH685>Z;q%o1GGTIUVw$RYZ}PPJ zWbz717#FLDIhCH1{rRyxxrO@)7~AZ=GdBb=oZA{%3#=NVt!fhy8Bu5{i}DPr zJv;<2ZMzU^yUoK53%Gd|>{;Uvmk-^PI-(KBE3BV?lS^!VhAH=66#5(RNob^4S*2?h zS)ft7DJJI1H;X$iNx>0Nt2B+C%cKug%i;C@>)pYHskh7KDr3mOg{8OmtAb3MJv29E z3Ybg(eOvMV^ecbPR}(M4xTT%ix}%Y>YTeGs_r5VPyd_mq(<{arAa`duZpxs~?~>sXl^>61~-95!Ob}clV$EXjYf?8Ts((|jAM7PIo1$sdXriwrYy&rY|Ri?D@w-`<0dao-MW@#*IhZ>kbDct*5%UR@$asJ^hWDUro7g z6njdU3HPE|;UHsaDMa}G*{hc4Rflr@fG)gh33)^!&ozQ0=d-4A24PvqB} z_d}e%<98X8cjKe4khUJCcZQ}B78xf&xbb*nV|1s@1f|sk@5&SDR=L{~d|Ra6YJB_e zoQU{~^V8vPin^KJa)pis_-V+Gs(#U&bLd@H-rL8&$B2tTg~9#EFBA8-a78SSLr>~%yewQktn(6X)*QoD9emILY1wf zdvJm~(JdEjnlol5JoL~s&-v+XT<5A+$^pli9=1N!J+XUn@A1@#eR@l3i^Ona$o15B zNE@y@*e9wJ#}jjPkFNA>thP70+40;0WQRe*VAdEaym(sghiTo@N&^~4OoAJ3o?Och zQ=wZW0KCt)pP!hY2WrZIL*aXJjO!<>}FLuDupXhxtp^lOGnYYfuq(*kmf9CC~NU{b$8 zHDMSlA%r3e1=P|znDY#pK#79aVL${f3f{%(iaUi2j2Ihs9P;A~ul#ME8)xXEH;sn@ zeiRkOG`Ji261e&F9qa>Y+-o$1iSSE=48m!c!1yV{*iRUGK?^oY=*iUISyF&d07KB6 z0fL{$TSdbMx+?ahhvth}0}|qbaUKk!`#X?R&^am&0l!3eOORz`mi46%M`Ta|Z=y#7 zWTYWmr77}4yaMBbR~g1-P8sH5HxDI7Au9DFOo0bw1W}XDU>_n|-~Ik#b?ekylEd#Btu(jZ(b=hmUyo)n+<^osp2ohrYh&+TS-t0uj>{3 zS~ln9v9YOM>VN{stuO<73O*X2b)BwN9jg{@j;}>}pKYygo5(ygo^hVb&hHYrQ2F?J zgcUY4wlwvsdVAw_zqerHNL|08OP(pu-kSO5*xIvsiTvg4UjH62)w&dFTB*l2Iz?HQRS;qQzT>XbHb=m-P)W@y_r=VpDGvsMMs%0njL&lb5kMITXH}p z7in6U=$1Npt~QUy*OpD*CDYec>BI|#3pe=4=Rs-b!R7f(VU{cDQ!RAQ z3b#SYnIiPvd6cb(1A=V93)kX$o`QBx3s;EttM^O+PhR24(U~IFlxZZ8D@ijTwRr|p zk4IgH;4bIx$HizO9>?_uc!yc>lZS#Er4(F@v-kJPe#?Et7&8bz{0`Sl{3*rqwg}WMr7?}|0bB{ ze+cup>+>bfx$klHJ#U*Ms)f>z2+xA8$ym-oVk3<9Xhf|uj6po#>Xf>xNu&|Q+YKA7 z@!YnCXD(*_*|7maGg-)luJ(X(*3lnEF5P?sQ3{`87u=>rUO;Edx98cAcFCZ_sX~{c zWdVM|GHI={nH{YSUx5@e%```|M(s874*igJTs^slt$SVsLfR78$Wa<&>4CJX>wW&1 zbe-kohegn`XVt3eqwya-02?KsDZmLBFon-zw_d9Ke;x2ztVj;X(O+EEN^BClg#E!+ za{Jc<_!;WF!ja9=`RK~|;r~6g+r?rTDm3Bg2wLk~q@y8k%vh zyZ&xoPF`KzJVe9boTnpvxv_mUT;&7IuDnYqXrIW??Us;6C_l5j40kp2| zsB&)o)O8c$5S@t~zFAnsl+&VDo+R5=0Tl}PQ?M@Folg&QTUIr4O_0hZdTvcAd4ckk z$;D~~^Bqc=0fMtjf>3^nf(6lCi2LIUo`g^PZNFI-aKvd)yW+fqR;^-a%>ja=RC!(} zkylz)(L!v?I8NK>{M+Zz_xmw*-qcEnpBoT4BhME|GrC4}gsE!~I^A@t5nlYHx`=s< zg$JJxA$(8Tqw06R%W_P+NjG{5Z2h$THZ};F*Y2t;q4Wv;e4XemvNLxmDP{Cp51jz_ z(t3)0vhSQuA=Qv$f(+M7{)@itkk$BD_z-T7H!mBoHR1~;xg@>HqP=Fq&99#SI#?qVbD55-cw3JRT!V@C{w`a71|V*zJ^}wBH2G~8UzEMyM9xQz z{tf|i+9Lmw23-oaoD z9Yi%8ncp_6_LWqmYt`nHXp!qocAGsHo-LepWdt!62Hadcd9>judGwfqBUZz0Ftg@9 z_6#XDW3RZ`idXcOJsj35`262K@G-2y2)R5kTAIA*c!3$Qha8P0G)7~TR`jGQfoBTH zoe)qOzO*K699ssiwRQ+Tp8REoR*>Ke&t&>7zKcNjw_Oe zVVE0oU?l{9bttoBB=j)v2b8ExfdKNp%V`J-MZS(8IJ#60 zMNnp>pl%Q~!X!v8%)=`b>RxG^m!gK=FICH2V!fc=@UszJ=9g+0a5RVSXwj0;%~(*y#y-LfiCs>a}HJu|nOyhe1n;u-of>g4?xBp78`* z#3c-)OxIT&W+g6{rR1a1WBbFQ(6j#!^3$({`T<(KlNSM9U3yH>vjgML&p;&2 znlglt$&a#E7ngfmmj(@+cne1F`}Mu6`!sma-#mot-FbAn>Fk;E#=MfFErijyI<#wN=FV57Iv`f! z+O-hb@0eq}V38>bw63^d=^KFD4&yVLWONFiE0b{iwPFNWk8f4Dr(e=tJl zZ5v4!=N>1NB!I!V)hTq|Fm zr}M#_zal0@Im0@qa;nGRYaUm`rv&aimne1Yn{xi8Q#(&FrF2r!=W9Et9g|#<;HWgh zHuFu3)Q&c<%3JN|cQi+jxUy*ph9&Z{^bd8o%|7CVJm#-s*5dH_fRme5AzyF-rJ`4? z50|#k2U#mP-L+y>Msgb{p4Wk5b_E=B%}0!eg+`27i?(@ZZccYO%bu^X&WX62xHar# z!)h1zD+i2}*;C&zA?sS#Jw=Sy+vsi1{1(;T?nZEkPR8OXb|kzy>YI@2D4V0{@|~7n zV!VDjORIRCcqZpNo_j+NJ4-wMd_&jjuAZtGS-1b3zhUCTj%X?b{S877-fPas1(!s1fpHRG*Y!HJ~XlX z+i2XCqj77@Qos1(uVWyqES<|FDlif{8I(3Pq0GscHotS9ED#3yhWDAuQw22!^%kM! zkV;u0(j~D-gM41Xy{bD>AFT$xT7&WzhUuFdWRSqWLz#csE%@I@ng2y=W@h8&{y(Ek z;<2v~H>hTrC7RY>BU8y|p8_G}?*gr2?XZ zpCoS2le=)-d=sl^oplr;`m>V6IF!gXEF!^ba1db}xUPLg=J4;qOW4z%vcq00q8tK2 z6rQM{h42)bU9l7x-Ym?tax!;2QLAJ>1p%aRxd+iuSClNP`vAkF6hV*uN}MA7Y~^8a z#GJ4w>inc#Bb5Epjj@wnmI(G(=z+lb*I!0J(GMzXZ6bFPeFVimeS|~g^e89Lqdk0I zIW{~HCs!hoXoiZyRqT2KwHyEJA*77CxjAG?WLhpP!-}17ITfbjMc$We=9;0pZ00@= zoS)Wc{>WGg&gqD-M;cfD+=h5{`f|E``WS=swM7?vJo?kQb0ALBma*gw!Mq4orpS^0 zXi=qZqf7=r9HJ4H#DDbFic?~l$^^EC%hgF~I94Wb{e(mX;!8k1GN{uJ86o}HQLvxW z_J8J>nJ6dY^s51Bs!)?c_5^|lv6=zgMr*-??$SWZ%qSxP6$3wx_hMF&6Dvb3ni#80 ztN_c7&uY|unl)8|iv%}Fliax;IHeR9?&z1(NgtjAIn=y(Wt%=$UN6ngT_$g!M5iZZ z?L#0QnoRplxDpdUfHZ0-3L2wUH>I>VRQPYyvp zR>8a}%+b)}jZcA&mj@365|``t7Rv1!JIu}9!?D#1nDDEeySEEzw+Hm)cS6htT~w~u!eQfV1Hrt67;&jM0UD;8Dq zpEXpH+e$Wob;Kb7_@|mEpBP4wLG{oo1V_2U*NUr?S<%#kKXK`4z7mJ8UL5Z(zFsao z9e}X3rk93u+MFJj?-o^khEJEwp5@~!Bbb)B*L!%ZexkrY8CJAtz~_c@SRN76BDge{ zUI?ma$g!CF%+;luy&QyG)s4nZH97&zMst5aEO%@nrSeA?@2B`S#^LJib4>$~Vnrw+ z2y6Ih%E5pYM=mnT3J8C{*m;spE507o&InO$6?fqSSsrroD>7Zj{<^Fk;q$8Fb$4 z{0JX~cRyIMSR;-1{P|%~Hs^P&szuJ??><>)4!@xyiq@oToVJf>YTIC}t3k8cnpNW+ z(TlWS9S+vKD%{oPUzYg z$GcX7e`zBA-kHU}j(@pH@&0aa8NBR9VmH#woN*PrUWIPEO|{_)-bFH`3A-WbK(Q@d zr}jMv?Ol=j$*M?0I>Jlo!mImdRwE2{%3e5*%x^AkoRqzn24GiipEyB+VO8jN8F#87 zP2xv01^NV)vqqtECC*yGdE@nhF-@_@;QZ#>SS}lZV7VrdbNI664WU{`s9AdLeTx-T zW87U;q75~B%&6_QIqWo?-4vbXpptsoR5R_gywK-kDV(sHY});S&zi;EJMGtWql0gl z9PqF1u6e=NX)NBNoZ6-BKYhz^*@|)dsu$qf^*U(Gm89O|I@wgf*sFqcD}!k2%^&?y znm-!}>+6X@H+wa$gXd{1EP0zM3O=$L-P#UWVM$*%WlH6VQ?2gWv}D@ivqFTqY&V3@ zszs}C$h%eDS94c%I#Sy%`{#j%*WClvq2eW_&~nqC{>E3;rlK)5 z!nqB73v;1ry0u%$&b2rj@%Lhe_UwFkYM>nH2_cXa2kX$K_V2*tUp7?#_rc_UyX@FG z{zF~;|9_7R5KQFo#F3^-9tu5r*B74?>Bx-4BO4N;zfmJX0brw<-2rr+5>ML)(n;B8 zr`S&{u>1*k`Yw!4XDTi_?d3V0%9`ZYDXs_0U#I$#`mN!+?}PHMM;&A`|>> z$U?e(uiEj$ZMn9SI?qFRBY2whaQ1Q}5rHzIj{w!+a}nl2zOU zZg(TQ7CDRw&&uGtRSdkff$W~;3y3cVLMArauok#j5cjuH1*5=VsUU8iF!*%RD75q> zbRniFAqu7jef??!tm)uVi{Ruj8tEN<$CX~wVd5%e^xAnG%DjSlj=$svM#1rQ0e)Br zO$2z>@d#T1NLLL6AO>JZ-xS44tw-~E@dgRNj;vW*t%Jp}k4NT0ASd@w#6}a;Z$cq} z34sY5c>Y3^6+7h;EkhYwC$x*jf)R2L1V+FxICH1r{a9h*DEMPxEmB5$Sg($s&W{qD zu)`oh=kG)e1N1Zky^YMkA{iTP?WTkf-N5Z2=*7eu8Np9ogDfUC+Vwr&fuqJ?C5to3 zEh)*3f(U;PC^B>)0dbI{Hj-3mMW(csBO}*6g#ihfbrL_=6OFTh|aQEt*+|A_+-h zqs9U;QE3NIo~D-o`h?~NTkm6c$BY|UGs2&L4dpe=^b0>v$pD&w=$Pg^ebsA1x$8bC)GcK<$6V>oYe|8!sPp-}ee zu;ShAXMS@&lT~quX>4uznRmTC4ccPaxBIy`Ly+VtbHXGKX|>78pG1q>;ce1VL2dPP z=#d(i^YKo%jUQ^CUfGNleqI!{jtr5djl$bbcR|mS;oaV`-eY}qe>hd|UKRe!y+JmA z1!*F492lsHoGM${2z~U{5WhESs}3A2KY^@jch8;)o4pc!kkXxCSNKp*SfMa>m&JGQ zjY#+rb*}COh_p;Ok>XlQ@3p||C<~oHj{cMvx8F~GNsuZqrv0r-{aN4PePYXk@70L^ z2qI8hEq#G)ni&Gykv>_V+EiL`yZz&XC*|kf zt*usIh84uxj=h%`H3KGj3#N&UeSn)0O1!k)&O9#HQi*|d{5BcVgRjchk)&00ezOf6 zi)rkFQ7g;fToi%whpi!C!M}Tb{quU3Lm`zV)r=daFfvgZ!coirm43FG{D%sth^tC~ zqnjK5d38yJMke&R0;^7Y0CK|P!YpnsKC_Q2auGp(J3y9{vzF+Cb%9nx<_UGG$hBFG zobL%URv5}=`{Rhd_3K+WU@hkagR_OKopdeb1Pk_Wi%d&C=ls>UGp<+k_PBG_xR>JB zF?kD?x@H`0)kwc@!*4c@Z8!W(vHVA@#(l*THW+;I z{DG*GlnIjM^omRV*Dlq54X~M**~KLX!#DvO3T2hHl>7J5I- z*MCUbdifz^{|=A-MOov&i$~n7O#eHC#QI+tH-o?s5-vB~CoNBN*q^ro5m3>9VjcYs zz^}f4NZR_l6bl?$Bh*Tm=6^p09K?)xa~+0H4G=?5=157Sh{VFy>;2bW-%1oa`UD_?`%^0}u&<_T12pLwab|{VSqLe05y{p0jHpGau`d5K4 zTdgPKD*g(MKl+FI;kNK!@4!>bUW_!RF^aHKSxGQMO`0XkxQ20{*m5+u&@~t;h*6?j zFuKWvdfTCv`hsYK!9i%r^iOZ0K!qj9IV!CH3Uuuu$x`V{*n~NZiDBTN@%lNHwg{7` zAtZgifjDGb5-SK2H}N87yCjrNN>9@mg!Y%%@9@w9;ITw~VWriu6lmh{Bt;5zyn%x} zSu!`(_72!6r>voamH-*3^4$dDpPz4uq;h#4667g#7(DUxaJ7m7iPQa%Wr&D`)Ms?w z#+z1%gclFk-u8b){1MgQ4-}A0(02-pu*nV#i4mYz&6Oiqh`MqXSHUHh5l_*&s(U(EUXa%FTXag~rwi9XwkH@xVE!SAlDZ*QblDZwgy%3`2QVL~ z1ksWCh)u_dG$y3ehDP>R$_5A9^#ku$E z8TxF^BVJnA^_Bpyw0^d3>+vkzh-Q=LCp^9WOb}}1hxe23)A7_Dtm)q~ct`e?Ah|}m z#wV#y^UItWK{}j89)a$6hk*MqtR%^m_=Eeyi|3=Gg=6&CN?P3`!RziC(~_uHRi|}2 z^@jbS&Be6-({hhbhsBNk_~yT{S#fU9vaj#YKyo&#THfMV#8QzIiCrRBcgNSNk#<}e z&}UUgtTj=X6s0swWPxo3)G*SSo+#M%2>Q}mthv0-l1GY3(nh(i z$dmQyYrl#tLL^h7!zV#&e~GI(^9=JgP= zGXAR>vuV;05n3iIVuy$~p+E)SvRM0S_CTMRpTlQRVUY$c%Hmv0JpDSGJ1(0im4cPH z2L!1xRA45+#DG%u3`qt-zFAx!q24oCMFcwK3xiS66dB8+>KKT*U~zi2YhSr7Qb-MAgn6zmCWjR z*)Ab$T8a0*!n8s;L^enm%zEf+w&`o;J{2T&gV*%=WY6P#I|TQxEq!~|*jAn>9hZ^l-fPUjOsct6f* zi6zp$=C+qB5I}Vp;smxf{MNh0*Y03Wt=~zsw>oUlwb8xNh0qPrOJT}j+F-OpECJ;v zWvRb4ZP%|3IW}KEPPClRLsvpAS=F-Y)}j|pE3J)8aB0^yR)@zq)S49u%nCY$$~p+n z#DBL(xNbKmn^dDY{*Hf7yWE;xQOkEPi@|YnB`u%mcwc`tB%-(0By6{sR??YPNn>3+ zlwnU*F_LuQUY|i(NcUK0aT=I(W!Df){V{-GPKUuuC`glQjMIIEzBpSJDhI^Yd}a6? z%acLKOS5-Td&7gS(42z0xyJ&-!i%W|NX!OLDvF)Qsm|QuE_aoNH-1CJFF~L(Qp0&O z=D!2Be^EyIZv)%E>^@@quc&)P8a8&Ql5pL5^@O`%7c2J+#6=jv2wY|8RnCM+JSmB( zcovaTG;@AVJrA)XxjAHP9a9X?v8-9GhD`Rn%ID|uT;j;QoNtsA!Nm&wxl$jL$ z;NX@h(BE;OVUVno>RW+ZVs!fqQ&eFf{1JbQm4Oc=FN)ZPSFK3AjE%Df6sl^2l8Xy* z@0LW-fb1o8hs2Hc^Yn?UctIB@QV1o+%VIzi0+dX@0Sz5Z3JKjxA|DwsIy2a@CA34RRGKv_JuP zjIq%z48u4J4T6AUU!S-dUcFt+UOZmKPgH{pNe5$Ma-VbHmbs_{V#!OSrFl!&2$G`8 z);~K5nqx7KV)mt==j6hJH^|XD@z%J3D@HG~^+chFRj@+j0D8Fo{&g~J%FsCL2YPSg zGUmMvE@36mr5`Z;*e<8wa1q3kUGbt_^~trthZ>OqbgqFWi}3Mmj!16P+^9@I!GO8bF(c;4VKco9DU76#+R;r&Bnw#vl_0`+1CJEXj0{2T?Gl`|}4Q%I4+ zNv2b%WHB48PpQbo{`zT$N2?7_qF#4_VC8hpc8aB!%u^SY;b$7H$q;1)_&K0-ud;n|C%Pys7MYS@<33IyHcqwT>;8#$;IK z+2#b~2i&A5NOw2K=b1i!Wi#GAJWhyH61&UGpVoyE@T%dWYDNC&*+ZIzC2SGDB)mVw z?DT1=J1w7Lhe^>s8PO4_IZA8cWL*^C>-_p6I8GT+dom}LxD0!GUj4YchpB(z>FDUz zX&Q-YxL;kgZnH$hTt3!Y6FkmS%bN?*mQR(2Gv$J}+uq+l+23{?Jn2~IsA+gQxq&B{ zcS4&HfCD7#xaF*M$@y&^lC!^a(tFW2*2`YBQ@0YlFhk(|!k)A6`~Iu(*o7(QP4a!& z@%6ya_ugi)L{s7SwVM!u4cMll%}Y7Xca^kdPIa>=%^!~46TEYWv!{;a{V7n#md&AN zWiZ+h>&Fgt?svDYbLVm86st6?G=G>%9Sg=IXei6GTOIetBRmLGyvjHiF;ulgl9cpp zIb3iN$v?IXGjM*FDQ0rnERGLZEng}uO{Cc12)izR=OB={9iYIJqPF5OB@+NZY4nZFJUeBJaiK{;6 zdj5Vs&Fps*TU0jO{LLPcoSr9RODl*V)hxZX%jdK8nEcj0l5pxK@_Za0)&kGZ)_l?Y zlyGyEmuvie7xGZAY^pVD#buwNZ3==dBiG^ikJ3}@+pvz~xr1Abr`FfrnasRrpaB1S z>q@4xNxKj~xC}}MiLbk-a&>YU_1gv24T6+^e00>K1r+}dI{rnt=D!ae z-2dAqV&nWj2Ymh~>-#?fKK7}2TLHcPIcVl*-#Dzne2@Z#nmHqI0SI{i8SihBQsGlB&Kx)CpH(QZqQF|f zPLx+`BeTnfiM{+@BV;&0TzUcut4Mwckf8AZF-u{GRji=1BjK}}!XWi^)|Z~!6L%s@ zAkH8py-;|CSx|FQLEfswgw`)vH5)9vuT1#%l*x|b{nA^^^`P%w3mxAp%*huifoIw; zAAN^joS0DaB8l={UUumYU4Uf7a;^8+* zmIP9=F;Tg64@t2jyjmyF^v))_zOZ8u6pH9Tc)C7uDBx8{EK+w!JrZ_E9lVQnNpa^w z;-Z6v0^=qdq{V0}60{^n8+TWS%!xdn3@Ym{pb~=)4l2Tuxv44aZEE>t(wk5kB*%Fe zu%Zc-j%uK$JO}EKyxk?K`ozP5mo9iAe+k!C3@%z3r6!fBlnuQ^_BKX=e;FN;Qj-_jtFNVqgW!H0w%`-#$nVO@)YUc3OPGb?nIi|PU&i{gK|At7e#G^E99 zgdJ?xkAmGB=o3fNfh0_j&cO2~170!Sl7wvQumF~@t#e}BYK$%M7=9VY18gixWc*%% z7;s3B^0p^>U*F~}8E{_3E!v*xR9piw!&Weud+=Es0mo#L>*_ z$Ia&E{_zluuCfzPLN=(X(i(Id>Ns1nw=1aX&(2OA7uFmCUt7D2?~EJvq6xURl)*HE zG(|MdAWR@UeJTOv`V|WFBbMBun{{IkZ@sJ-`{~QALa__;M$7D`4Fl&Tt319W6++lO99hFX zvJI7V@9ul-4QRsUE{T>oMVge<7pQ|Gsi$%cOD1dFv5RbXnLX+_9vw_1G15~*&>W!& zU85MSgwTweob6RN`&mN^&aR8T0KWI*ZM`pn7qRV&dA*PY-5Z73b@jvrXy57Tze+mX zIzFF&ILs(}^ziV?O z8nuCu!V18rEi1OcA(fas)0Km&e>$dh%O|-X0w6P7La6nbsM>m{Z0+ ztRF4EUY@_&@apMTdD~`fuXQ{V5_!4ue!kr_nopZ8WIYjt9~nQ{-zNlhTEuPBuZhc~ z@ntt&6A)-(T!GbH>SL=D znU~gl;LOF2b3$Z^s|myeyDeSn-q^zbA&p5Ja=$R``L)314A2$Ev*@6sGI(FzX~i>z z)O_8csWLzLBDT&?aq}dt8l_v1QYbkz)|Q?uqHpZyMn8rzReiAYOBDSrr6a?SUwV!1 z;+-WSZ2M!5$71xkC_fH+Ya9TWjv(70ONE%U3C!w>VAzI%YkMcH%#`#u?(lqfWI5 z8*$m<<`+S3xtq=aNm=$dE-7Hsj;Rin&W7f4y|>j|JhMPPT}ac#a*$< z{O1bm0^@nT>Qxh>8)104@1-%1UCm*eaLNw|aH2ge75@(4{x6gnxc|jAV&(oXd2>4Q zTH;8T@~a~U0q$;Qg1@1l6QyL!(9q)FeiV-Ok`oiVp5aix-rLMfZdhfl^y2hrA6@0L zvhou0E^`qE)eXO5$&P+-X5hRq>L!}yW7*NdF5Xn%kKxo02C|~L!}ji^=ZppqI`b7c z(TSiIT9YRwr^qU)F#`aL2ZLIxnIz5itPli0Z;E+bNt4RRwEF&x+Ztc+>S^>>NY{UN zsji=%#FaWh2aO6++F8KpR5H*GxchP87yy|Mg-|m$!C)<-b`47)>41k_{0fSjAwpa9JPzRsZ|>-RI?UBt@vlDC!nBFmL*g(_-%Eg>iw%g!p-eXt_SMG&s zR3(qM$4=Er#Q{2lmW29r)`ORLpbvE)0uV@beeT~@C8YvBV4t-!DV{Hz{?rPAzoEGi z*hU@~wm7m}bZec#1x-VoNrbKcVnOWAj-9dNAtoS@>&fHRK0~gPZFNs-xfbt{W7w8q z=orI$euKsNT+;FT0Ozh>y^TA)^mg`U?LO%SW#;M3(DgQ;WNZ(r@Zj8EN^2RovgA2G za1qFzQb+&t@ZtU&tTk%s>2kx+S)|H{Sdu1~TG}Zx1k!{80>7FNdj`P*Ke`-vA-_)} zM@r%8R(eF7HG(xu&Wn~C?K$f*{~V~NrhPp(b|SodDQnx4>(=m?c(a!II_G&Wz`ViU z?{(=*+e+mY=f)y1jnN{t?G`=VWKCq>OG6Ure~XvKb&Ex~rxIrElP>dAU2XPv@;a1f z9R3_*v1icltMmE!(s`>2FkchS{z37%s5R6P^D^fASO=sjcuW=??FdwH8UTqyx27qK~dHTSGXqTEED^aQopI{bsG1s3&(jK z&sn{hO@||$L7rt(ZwoQ2d%}L5CEHu~QC$R=ls0G$dyVCHGizh9l!e(zjDjPta78Vj z#;N#3XK~(r`NN8?*!8@H<>lACJ0t7^QP zs)DPkf}6@OJ%$b{`wp6$4w{uFl+Wsv6T<4jf7Ca>ZEXKrqQU=#Tmm~V*WLfj?Z(2) z@{bY2&ibFC?f+jbP9TxQ4v!OMD{o$WMsz^D3&>f+Bkem1*d!XC$_k2)#s`V4uO0bu zckI?O`c8Ib@)U1-afv$- zv-~qKIi%9HfI(Z6(%b-Fyt*}-6d*D}uft|VX|0GYZd3Qi?(zOWJ!ib4NZDkJ#HWH` z{UcGiF*)%~_3(FmOh-N1l(1Y{W+13a(Pj#OI-!4@DiX+_W4b-!|295`9||C@I~n zs!AlovX9G-Y+K5dN$-w0+CfV;zPDLrB(Com<~ZVB$nhL<6s;4<$A)*DC$B5uB(K-9 z$ZdvtyySU1dVlS|Zcc4JmuyeZeBE#Ne4c;VdpmUcDsIp(?Jw)T?YBrjk^MgG*l(%9 zRR2?UzW>-`cP04w01EM@0`a5*aTx()=~*85!3=R7QG>k?``Zb7&jYmvlS&>_>UeF) z!rJO~u<^nrg5@cTc8E!8?V4FomJXc3w-Dri=2Er6u2dj6wsw!ocQy4P~jb zn%xQs16&2IaK|2rJsf4Q7&6kQ5n?V7il17B44R~p@`RdRrU(rWp#UQPCtQeN=cI(J z8_qLqNc?buh(1c>U?3E37C}Cd6jFYMaJn#J7(GHr^ts1^a!`0Q=DK(64!yM^l=4b} zefQuaO0!g}qObvc2s_%+;_JJcn_F&m{UVpt`Uqb*6e~wU7k6ttiEUYtEi$j23%8TxrTTy|FB#{8~vQ910;syX^SgDfrBW13mW}X(Yu# zys?>t4{gpc(k%&Ju{)=&4>|+p`P}L z*y#r;aAeN{Vr3OUc9{Oacp@~P^fNUH1d^hba&h6}lL0jT)PfPEM%l<|nYk`WA$e!J z#2fZ@P8;{V*~xrv9#+vsW)1_HGc$>NSoX}482U%fpcA2X0*6cqjKuF<#S@a4E z8{nR;LEV9Sc=O|g=<$h%eMgDr0K0o-ZNWNB_7||zvF_c;#YfsJ0 z8jGo-w){qu{RREpQZ@l!)D>+-@sCIVF~mOyY>5S@Xg0>Zu^?KZ5mwywkyHWHLs?RD z%#pE*&d~)%X!wOESfV3TJYxS(6DfMSY6Sl@Gc02K${Q|0x;=wsyLd z*+`DHwttky$dD<7Pt7U z7CYSFfxYk^i`{@IY)%qRg!u@wun-G>A z#7#629~jg%Y`-^!e$4F8=r95!Ip!lQK;>*uIa0mMD9>)!x5{sTV1Xj{akU?bR2v$b z<+}p&QWCTvXTi?M-%*I^gBy|Or4w?|yhg!_f*(-krC*|f4Iqa8%|sVC25F}r7lH~s zZJ&ovA5Vu3j2~&LyUy-UK97*@O9O}_ej6W-nR5Q6b2fX+jCDQTEboMdzC%s$?ci5#1(BXmB?;=v30KxqzK za4&Up)Z1fcv)YSj2Ij^7afQSdk|@E7?1d+?^vCeE@8o9Ao&l>H*#ychiJP=)c@C~v&+`qMU#M11rL)a57d=hR(8MHTU&f~9nK{}3 z;~;;n0MAX2q3L@?2hl7RMFD+dP6e^nxmX*0g4E;=@p5uNIY=}3qx2jb4)GJ`?ZW0e zUE3>pKf%rJuh&jv-mm+Ysj2IpZr;D!ieJ*=4?BvIh}&-ib7q`&@@~G~pZAv)_d@DV zx%M6!Go<2=%&6X~1gNpHf89>wN{(x$OE{(Zb@S}DvU@uJo;qLmt*Y`r{f!sw>G1LK z`#9TN2TtGq$9vU%^IpP<7{d_z6 zW7VUFPr&a!_jNXON7+e>X=*UTq!*$4EkQ>8uyD~+VHvght1ss0@&QEWFHm~p*4lyn z-`S}DBE9i%lDzzcwd>Z5S-Gt*t;Cp2FNOUYDt9G2f|98c#d$2h5MS`VF_=TPvIHue(B95*voLs;W{GCd`QBm3(ts?b>3fYQwVpR%w zrV@o7xmWldIC2U&at+A?jZk(OP;5s}yhSEp3`KWpU8TG*@P}(|Y^|X9qfQP`1g_jd zVv^pD0yX9tMWhshy(`F`&LfP`%%L#|Ysq0wguNAbMbSKj5Cy%dK^LEXgW)1vSIlu5 zYw9lDzJa}k@@2`G<-%Oc!2!v|aFfa`Pj{1=m3gDq2`q`gQVuNmt~I?{F~5{|s`l&# zk5-DMm3FHj*mtX_w_)t6%BZ)DiT^}1C1paJ4)Cbl?q@@~Nc6WAnTAAo7^Z;CBcOpD zh=AB2m?|oNwf?FA19bcfw7bEm&%D7#n?hQA*-yE z4i|OnGvUrP?AMC5?AKxdmO5ZT-u-*Tx&2kvv;I}k)+Z+bH)g;@#(4qn#`Mt##q{;H zzCHfJ`B}ehxwqWPW*zeGmdJ24Gb7;Oma~7ShbrvhcyoQ(HCjJdhl!AP@0A-;Y zuOBCoV)A`YPQnpAT#(oW3tcX}h?wX$Tw>avQSlPGjAtgI;UECK2uX=PemwlnBDz<- zF_`MueUFZkAM`fbUmh-)tx}%P5n;*mCgL=>wX*OI`c|$BQz-DQJlObf0gF12%u7h5 z;Kv5^7(pH743w!{KzwkDd;;=~EnAok%hWxZ(qT-9c3x(jDapr}>NuBk*@seo~DX9ISvE9PEG^ zsq6;Pq7*JO#45GD?1os9X+UA=<#L&17Wp$A_PDwv*a)19brN=jdq5=%Y!MeE8OvS( zlEaw9k8t;?))>FltmX%4Y?EIbE{ zkso-ZYhhfNU4z>C;11k-+7BpB5yok>C>fGR zX82J)pcl;l|#iqayc!&BykB+)1s@N?gYf+jThdq@x!kX#C9cTrf#XZwH& z%V!5ssOw?%y}9q|{B zk~Fw& znMEy{#^UEr6tF@9uB;=y5hHNOIa-}Eu#+0NVwy;Y%FuHXWr?Z6-$GR+VL=7{sjh)< zKwdZm>k!)>q#`M8xS%-54e!H3y2Gk6-y^3oe^IjiF^9e4XcMiR(tLIXtb!Ih1S`gx49C7lA0wBRA_cM+# z#>*c?nR_R%7jaw^NciU)HLw^*pdAjN%z>zd?^!RwMlq!g~nkbfdk^IJm~6v|~w)BW>r-Ir=|rp}yxYHGBEv7>XCeOi0~ zSqQGHDS@n90*Q)dm)&{KeDn7hx`T#Y+VfFZTVC{{BOjtM(4f(`i8ko=apBib)azSq zLk<-`I^Z*cXp(g_2tG|Y-osKRv5k#R!e~$A)cW-D~w_KqcG-#_jCJz ze8xc{cfr>;nwW!7EWKD4c={WBS|Enm{s}KE`Fo@TUIFT(qWH>A(0+UoEMZ?PQx2m& zUg8^))(#h&AM{fS=FJF#!P}JAf*c?g=OL?e&YBCoP-g<$GPY2MHuGlRd|3+bZIL;Y zuXekMQ~C1_@o3#N`?)z|%5-7VEz6euT84GoEo;-Xxt-On!-_@>-y#Y77y&gh zeIUG>vxcMLE6L-LDJZV0?G)o#`BUtki-JNBCuy?cS|DAp(kyHGh)zd zhz{jWin#v}*It}EwzNp0umIM0-uM(U<@0MlfiUX{A?=aTdF)O&h1fX>!L7kb_M zc*?E9ECQ*bV^tEv_LzFXVhurqwquKq8=^C>^vqqrC3!WFBG6j?`MhNQ2 z#m{e>e$u;3TcGM~v*A@zEaUQ`8`W#oZ>?shq~xm_Y@y@IsYKWqynRbzhV%2%wArJ3 zRrXPOD~OYuq0y@E;kg9=y+6yv4uMxCHt0}0gtgoZ)XVKX&bHgD<{>%D4HiyT%rpjRMGbIqASRsK*!;{_KCxT;rF2 zJU<)Q!O~`#I5eop_Mo@r*xXwk4UHNo^Zo5}LXTcf*tTc#ni3DWBQq6cVSL7qby*(YZOD$GCT{e!bPj8ONI8UA|pUI5HmMTX5QU2dieR5xpN9vi}-i z(i%@)8%}&r9Qj(Db;$!z`ORSU9=$vKv2jf>NRWztzW7sU*B$1-W6Vr*&D!?ucM+OX z&z632sZ$%8Sw#~-z|L*6SWnPq>PRwiTE!3DKDz{sQ!_%w4Abn965H$VMhzKQWm?>) zp+;fz7ch9BAZHtXW6AtMXbvX9Gp-3W#ggLe)U@4SoKEEmU9Tc%#A16$K-@{Z|#&$aFA5BHF&*N~FPBuSh)j1>>U zoM|e-Omhz~05n2h?HV-+eZo9Ka<~7{-gAdFwJa|P(k*}}2ogFHLJA3i5JK-@K_GMp zNiax4Fa!ui5iBTOr3eTp%}Z}e5%r2Fq7*3t3ZjCSA{`NsCcj|!{qVi-e&2il-6ZGB zIlHqnvokv4-r%0uv$k=g<(+uU#^hD7+o!eFC)W!B!J6ez4eceFQ zq#&>_eHKDfjQz%2*dKUwtMkV%U_fFS|D5p?r{2|csDZX-nJNxGhQDG;bjT4Lv&|I@+@GWl= z_*$e#n*6)j3BRGtR{J^ceU5*b87)=_T%^s;SnCQPXU)Oq?J#2D*Fb!$t8N;d&K$M9 zfsWT#^CcEf9;sOMkXX#3yqo5F8ok`D{hrIJ|C3d0kd8)GFrRe#bYx91JM)WvBY0IR zeOj<0cy9KU%ab6NP~q7SF4-my$;)7I#t5B51l1eD&fORU2*Ni@8{)BL{VoVb-&KCo_f08)cK)bG(7A(nww z9k7~U_dR(a_^yyc(i@%ruKqks*(1NQ#4V4w?sndJCL+sNR?XPE|8S#sjvw~A(1jQ~ z!y57c^`OHg=usuFYiNVT-5dIw$Q&0l>;Za!HHln zHu=r9rEty*uMN_ANkAR*?uz@)_TcKUPrDY=`HE(G_V?e5CNU%OS+RW-T1Z}MagV87 zG@I9bM?ZQqQKQm>s~;%$Ns-{^ORB%V6Ko82J5?<1_x{ASI#cC?CRMExcb{Fm9d~Km zRP26mdgt9&{n-Gg@c!)WFHI$?5_P=5XIq_mOx9jUu!I3_MVNpx-U=1nbiypOk3NMx zvGwrkCRHaCtE9_Cl@ARRs|-hQ@E&@RU#RAE5oC9#rhT*peB)l>$Hn0@rOAaBw|lNM z?tJ<&dpW+=qQ_a-VWP8i((d3#-xZn%+Vu31!ik>evuK9O{CJvJW!meuOwsV_r$zm< z^EO5C_U-PqUvc&v%g=6`8#|M~=kfk`4q1s$?yPY_HU$a~ zFgBVK*dX4S%KAKk#qTo;s4;V$eto8)ss{V_>#`!TrkV@Alg3a&K`Vby>EQ;$ z+l~UY4hJgP+af>MZ*Pf3hiHb$-9Hr|`8?}`BS2Tk=$cvXwN@7sHoh*s);CFd0-7K__iR_FJ~b8Ztnb8~O0fkmWLP+grOjDK6>6TMV)IiYph?2>k!@`3(I zv#5sVCNtr^%7=IAc+1>R+$9ql62Da~vM7nOxkGuY;R4U!4=h6*=&8;xJ@t_@?MGPOudMUhK4p_^^tDT8LfZmwO+o4+kRbm zu4HSJ{`sq=8N#kxND|M6hp%sQW|vx-dDk%v21pj)Iljh>bUZOQDCT?BB}TD+G0MQN zU6YhGd%8(5Otq*At3j zdE4fq9yZVmPrP)hlAR2@IaY|ghYGAs_O3lD&JG;z>ai`PpHXNeulB?mg)LaMRSZQ% zpYurws}TyD8#$RuoO=Qnho*m!KNY8Bp(q^NFMq2OzIE7KnF`cc$e$rkS>6W?*CnY6rFlb+lB9pUkZN`m0cweJ;f z2~(3gr9YI}4`OO1f{>|W`;P|1y$!aW$x1SLlnp=OG$Uv3Kxa9DwN#u7-MKI(bHy{} z;?RJOG{_BoV%Xu8oeS2mR6VOl%r)Lo*jICuIiI;!z706Go}}9-tPHw=u_HGK?(}zz z9sVEIs03k6FIqx*YfL<~#-%F`BOZnelnfkx=@KrsVAw@Qg$(l*hV>-i8^Ic`Olx=5 z=y@~jnULPzJ9Hg>h?P>tX>bW}+5C(PBK6|EWK@XM9_AEPXx~{Gt+GuNB(#{Zv<$L*Gef)a)ECPeZe}&S|HTHZ^I+! zb>%XkXD?d~r4gKY`VJT1c|2$M@g3T^96JQ{V6=flmoaNQhSHha3Ah0YO?-s&Wh}R( zcEHc_YvUCqNs)lidO=B2li5)oE?GpvaBNuuul*@bk%&hPwMD6vkC*i-&ZU}4ln3#C z62Ciee@dcB4u9cQE-r0WF4Q2h;NI08izKzIH)`#id+Jzpmdvqg?bM|wxU`lT^_LyC zEbSgg*e6SbfYX~?+3$wfu%I(~4kOvlrSh`7%3aX%5zxka+3k+mx*vEIs#-Wr2kn5% zB3MN_1g;sajz~AhTce^30ivQ>$iHVNHbVv}@S@Zbvr%YmE?E8iEg$3ty z&9$(dg3I@~1Hx^^#)G1KZY(7==k6?+3{4#w*_>k4jL38OIFck*&MyRCNP4IR^tH6& zBF{D5uhSo?veCT$hCOB3wnXv(dEUQJfsvb7dk0Hbsw)Rww;?v-GC5m-L;H5yXHUvF z?hOb)M7+4^5@uZ*h@H44w8O_bf+78B__ovCz55-j=RXKmc+|_)6iGOhj-f85nu@Zg z_>BR9(Yr>+>c=}+s^Xl7y+DhP^NPbKtV?J&mk0~{0zFGdmHojpXx`|rJ z!{TqmT&!?v?=TH$y4aPM-EHB*7rv|a@n~cyB7ci*jBDUSrzG4Q_C=$!T#c*M`0T^@ z;s?jX78rwl>fU8196w+S7`4%jqF}`-*9rZSvsSezkEJDJpAI|ggkV9z8!x+RM*gsq zRnB`eY~wU^XZLL5RQ39{((~>&1vWC?4Pxf}C*wt`egCCKLe~S6s{VHIL6EgEO%%$z z%pL4fWS8fF8Dv)@=C0g}xBny_n@h;qi99|M!jYk+b<~~kURpNkc7wDgGHOLI$1$Bj zVv#w|YEZ_lnk&d@0frbI2{Eo`hftbgCL^lVHMaJqO(N1g}77S$l3JR4)hDWc1*jb})ZB5mcHv7e+q zNwZnTEH0GtXye`IkylHfJUU&kAnqPuDnS~5e?fc7mNO*`n18;nF0ES2!T*_`z#j?1 zr>qo!dIc8tBEk&5fm%KO2wN(UDa$cNeP<>i>l%1Z_wn`?4#hk~DOktEp^^eOY~d8!y#*P^@d zWGi8{X`uOpTPb;A9KEu)K=dZ%omD)w!ESSs`MV(l%jhd<#^uq1)pB#st^}^Wy~IFc zL@!c!{D7ps(QPmI#u(zB>dr5Hcjou1m1g1ldaA7gDQakE=djM$Jl_M8RlTY2?_BAYy%;7T%K8Usc+B9&&<;UkVAFA&83s zttZpYB(51vI$Zc0Gkjfy_XP9k$WSa|z9gsaV5aeih9r(abtR&h=j+8_Nx)|ix`&3O_Id@t#{3{amr5f7;7TwhCLJD-B5!o$iGKgPH48 zl>C&HsI((ss2Ver7X$`|!9Yw1khi}l9mfE9dP{vl@(qt3(Hl>5_oBN~Jpt=@ajsM! zx`w3WI-&2cFFhmRzti#Zp^-mRA>hG8GLb^`qK235L{&*c9EyE`hRI^P9?az`Ts&02DOAT*D%3R%4%OJ{{-~4`F~AT z%z?VGte6!{StK0R>Z2b7j7vAY~{V z4}wDxDj-+5s|tufK)T`ZDtJ5rM*OTubMv3u{;El4ow27k9p{NBe#1+^5{kHtgQoi3!{wF6t zI{ZID{{`tkME;g={}I_*=mLjIMvg^|vJOw}Af{UH>(4{p8p&(>iNN`Z3+M zjXcMnVzB(yk7dT-|LRpj;Si=H``byMbw}3Xiz90dDc#g2%YD|Zo?As_sbw+SUq)-k z@u{Y`0a6L~<}-kE`~WFy&8#wjl_mhHar1f0)@!de6}@83*lQMgQ~t899xp)f8Csc> z$dwZr35eVGApGQm49gO!dquqWJ!PJqG1$HwDIp}HONO7dac3=UXLHRyFO2J8VLHi; z2Dpg}3&Skf3JirqQ*?n@Rxa_U3SFi(gm!wg<`N(#*e&S86 zXzrICXtGF-ntpO;};bOE?-T2$Uce@1= zV-2nr?+&V{+FK@pVtaLk?> z4L(RC65R1jM-%{sVK5s#urt=PN5hf2syYa5eFJ?xq^_>ME>s1s2S@6_q58T8NCUVw z2CWZOMd%x-LR29tP&kxXr(&Rn(9?y$^`UAy`Y;&A5p3+~Mg>5TYG0C#f19&_A;1j9iSevj ztT1jLS1(szmQh`1pUO#h@M;lH&fYpFGnw>OJjbIAS60UFlHTm#H+N~c&2il71aT;#WzQHqQ`k4%=HuN!_mut0%t$Q9>&<+z zA*dAG>-#}B_D9LxM%D?YB8n24Yx%qzk{l*g2<6#AqWOVh+qhjP&9O< zBOL;vNH0nkP^m!=+~}G6|IYoh_nK$D`J3an3)`T_+TIfMcLJ2k=HLGw(8{UQ}IA&pH9m?lBzxY$@imsp(tA_IG*ZWt04 z6ati%_Zv~s86*|ydxv_4z=M(Spg@2dByxqyS^jWHP;gWT+!uxf$~gMfsg(UM4e@sW zBNax%1H1v{Lk#}`{^QK{|E6BhKa z#t#Q_(!6*#HIEjaHjMGu#7bLc@9mwOGyy=1+R1rpr4ldbU;%(u*os>1CsIHn(9Hwr z0A4JBFrdf)Z~|yrfH@IL1JEDMuh9Z6SLJil7sdl?Uo4Clo>62t-|`CV>e?J}#49?T zB(Xif1T&Rac7SX3?jL8#>Q=1kVk07P(+2u_!k`yb8)YKHGEZXxuVdE9Mf`a^GTq(Z zYqh@U&jkG-v2LWpHhd5B;AupmEpxAwLvmMx&Y?Xd50L-jh>bIRcfKGmYyDDQvQ3}r zGx#Yhtz;NGqxv3&GCe&#F{s@DvYqY7ho-t-a4Vjd6bX5tigd`St*y|-ZWiRHR~a+= zc&IMGUabdberj%%R?bcf9_^RR+>jUrDF}SeLZ>;wd3Sv84p^&2gZa5e3{1`PAUW#I z&>??fm^SO1jjti~Ys0v~!1%%a<0X{`5(%V-4@(p7woVO%r9@LJ!iCEFvcDgL`#8*S zp`{;P`YmOG{a;!6EI%EB;l9&AMXP(7IswXHI`zIF#k}kFcro9P6|!0*C0xR~g5hA& zf}d6VnHZ9CGxxPnXfIfJ?AqL1)2Ard&k|MQs)*YNU)|63`?Il{WQV~Pebg(r5v=O^ z&d^IV?P#L$oiC!=`KH*=;x~OehdDrEybnqWXyL?Wt%Kq4#IHoUy&u08FeTd0s68}X zTr0Hzl46gK#2kJOH75j>XXfTkh)?%7N7kNSl!=;b!-gq@ zqZ>lm%Uj8Mvd7j5Fp9#uA{yH6zDX9fHK{Q%i3+y%)sM|9(E7qGRbk4>K^WAOwi9=b zeS|LO%E(2S*{kvSDNi%y3kYgw8o#u8#cETR6?NSwL|J=}7b@L{P-M$ojELZ5 zG7pLWRs5!iS%f$f(+!!_?;01ZoW3W7ca1DF3WP-91LN6V7%x>lB_E@0GG0zCg*Q3~ z=#A+Z8C}XlqOU4B<56UON25xt>&n4Qd0H<|HC@c%)ZtZQnxycyi5%G+S6uD)B+EES z3%nx<=4OVL_lZk09!s(eCBgcMiq2<_c~Bc&PPeNQb!NSM(DKdNSeMYft_gMK+uW)| zX?8iKdgwV;tfGv{-_Gl=(0u4d_RK-AtIVL(GCDTBa4a?a z%-y@HS#Y<=Z0>6I9@qZT4W}l~RIWM{yf7h{yNTN4InPPenZ}3dpZ)Jyp&5@Qc{BAi z-(Ag>7>QnT#L6r)$9GqzTx@uVFgl{_5oPvdx6W?sSKiV3(Clx*SWSuJ|IkOgV|}*i z)$j^AB@vP6iayZRMxBlHA(zmJy(R68|A?gVD;utpX7CjG&A+IibV)12Abx`r8*BFX zCYsSuDy**8U3ii7nB~KX_6Cdi*7f=;-b#m}d9#Xsk90gj&A8m8b|ixyZK$RfLKrI>hLqU^Spy2f2$wS3-m$Q%74;cYJ#5)VY2!6CK> z8R^I`eCaud7$yvOZNcKI$N-}ePwIRI-CAKUyg-$ML`yEKW|c}a&#OIeDHcx2EirtW zqjy96pSK)4JBulgV}6CyJFz1U!W;8ta>bl9;I0A3iA$zRlZ(G7dwZ*^Loxo;?Oy2f z%Kq`YT0gBJ^{mpiLc2TH>e8o_keX5NqWYhAb!+-NSM2s#*H>nr<4~#cAF(gg9CLt_ z*`<3JV3RFeG(LCCSlqdUH!X}Q^HBC0>+!~GukGh@a+L`v4j98UAB@;|sS9$a+)q4V zZ>kq13NEj2^ea|hmXcYfUlwQM&mY35wc@9;)1WqPI9%W`!cv<*a~L}c_x3X}uer6! zo!`}6V(7Ui8D@s|GrN31nzR)u{JsVwt?lmCQqKfB*2>qqrAqT=cEL> zbM;w2pKMEs?9w(-+HbE3xuNw=q&2~}mZ?X`w!kK5^psq^gPSaHERK$NG|215CkRtMQ^Q_h4Y%q37%3`Onndug}Z( zc#^nobOcB_EKd@;R&YV_k+aq~b1}%9y-f~s{X~VP(f~PA@1tbTl|jyM5e*Qb2?Vdp zo-7EbIO2wyGx^6GLUf3B1PKBQS{!RJ*{)*-iae6DO zJ;=p6(DDuvb}7v(T6WkT^$rA$)*8#ZVQ@(qsakBSP^wCZ!|P!!xhR`m9F2;+2#wu0 zIR5gMJ!@(40DUr6!3AsN1t&#*vo#o`^qv)%+Pq!$oG7*RXra3nvMws_U%?uw z>Q*gl+qRXjO`3W(FD0}2i0C(Aoqp5v6j%g(Y7dw`GjisB0RK;;#!sGa1yzROIpMr- zLlahuhR+IIA*Uv-U@~N{-Mgt%93gZfcB*Zj4zw3*!tc^EL8o@O!I*d1k1vi}8_b+c zoZ3AC@^JS}^^?2^Z}`X}TjO%z*AYHbyL)dnvvZPzAl8v<@^sD9U{ zBr*ryn=^|Rzj8+;?pmrG;mnyz>Jj&QcV}MNWPF*z)Yf)1bVS#KKcb`H_tQDz-hS`Q ztH8Z}3l;K{F#QEJJW|i%`(6gIOYlm=FMaOJiT9TsDl-ii>K+ zVj}vHDH;8s@M;g3@Uq25mtkKrA?55?rS#xGVeAj*I;j^gH&oaY6E}G9KlL zH4%3Ty|pzwF!AIrX^5dxuWs8ba4r1nM+zXrKUn9h8eUV=G?8@1y2Kir0*z@eW8@Uw z87}ztrS|!~uk@dwGy-=cJYu!D@(`GI2HZf_8WTE6>>w`=v;V0;E%fy9R89UlSqIA| zdE`%zr=xh3zcR@Q8*P{Z9&(-ZUyTW94DRcl8y6R@c+&P!{e_Txkci7tiLEY+qSeK0 zxdlxA>Mu!E8fFA$_rbrdigHl$EVN@oXj|BI{O-(tH@##1Y#@`m!ct>wU3&C4@AF*; z{9cb6N7JE(z2LypF2$>pl%BZrWAQ%GGNVObL#Nt*wmDzto_Ru-50@uvM)0hJ@^Do( zZpfD9Pm8aZN&9}@tnMf%ElZ=S#)G==4NCGWiP`5{6}%5(A(Hxxwd$kBCvQB>wPRS( zGKYvkrwW+TBNnRNLO*%@4sv$El?N(EHO^93l2$W=T9SlbjH2_4TZ)`D{gLY++Yp0s zf$fh_)O+@Sif}J>Qg2r1jzOPfXrr&zj&R6LK;K0y%j_uQnF)d;v^Gzb+!jvKwQ)VcY|xxiN5HAZfENaz(SFGc(d`&Ezql!!t@5{>xnOdY0{MszZ~2<CTcZSTuc%YvRV_(<%=XUzmsYybS0UmrJ9fS20WuB9y&% zC{YwvbUs+Q*}U-cyN8JU&r^rd9&hBg2o2a&h_uyv^PQ$&qAun4*)w0ykNu{X|M2zY z(1+vI+jQ_;+(xNkwN|x(kjNR-`UqBG4bGUVHWQ!mO3&=_bKE0SgTs~*iS==L>ZH** zR9PJ+_tTd=*+n#UM^~_4ulSB5v{)o}j<3(if9gYGVj3YHsde#O=b$xTk`VmiRSuq# z)vrYKZi|pxs_fC0MK3yBzE?I^fYNnryso5sep%n_$7Mv7%wBQ+iIXeQON+H%bevoj$m^>dY(C&Esaa zlwKR&$v-qVyiVfvV!5WhGGeoAye8hw({eVCYy%br`sI3VN&f@pm3{L7 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/Catcall_demo_class_diagram.png.data b/documentation/20.05/eiffel/_images/Catcall_demo_class_diagram.png.data new file mode 100644 index 00000000..9deac1f8 --- /dev/null +++ b/documentation/20.05/eiffel/_images/Catcall_demo_class_diagram.png.data @@ -0,0 +1,3 @@ +title=Catcall example class diagram +author=halw +path=content/catcall-example-class-diagram diff --git a/documentation/20.05/eiffel/_images/Catcall_warning.png b/documentation/20.05/eiffel/_images/Catcall_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd3ed4de0ea0f9558d024edc82ff19f5d86e13c GIT binary patch literal 53476 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]Qpvbk*Rx4a%(N4hHqkG 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 E54Yy;TmS$7 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/Catcall_warning.png.data b/documentation/20.05/eiffel/_images/Catcall_warning.png.data new file mode 100644 index 00000000..0d58433f --- /dev/null +++ b/documentation/20.05/eiffel/_images/Catcall_warning.png.data @@ -0,0 +1,3 @@ +title=Catcall compiler warning +author=halw +path=content/catcall-compiler-warning diff --git a/documentation/20.05/eiffel/_images/ECMA-367_cover.png b/documentation/20.05/eiffel/_images/ECMA-367_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..4c837a2900bfb2efe437882378f07e54476ff144 GIT binary patch literal 18263 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%0A2D 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 BN2LG& literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/ETL.png.data b/documentation/20.05/eiffel/_images/ETL.png.data new file mode 100644 index 00000000..10d4f2c1 --- /dev/null +++ b/documentation/20.05/eiffel/_images/ETL.png.data @@ -0,0 +1,3 @@ +title=ETL +author=halw +path=content/etl diff --git a/documentation/20.05/eiffel/_images/OOSC2_small.png b/documentation/20.05/eiffel/_images/OOSC2_small.png new file mode 100644 index 0000000000000000000000000000000000000000..9da6e0b423b0c264af26c9563b1e9d9e8af8e049 GIT binary patch literal 31077 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%0A>ZXYXt{<(OG1)^6FVDXzi}LlR+?*0c+e8XP`9R zd3gAX*ROm0EAyZF>M2;8x_SdZdESHxmrSs-6gOXYko`xPCf*JxZE&(X$>>-nLeql) z&u1EVo2{Hy4X&}c(bKgHm~|ywyW0SKZ$~~0bAPxCjF#9`K*laZS~Y*l2j9Bq}b6Nm>C=;jGqGv-}HL`lLMk7nB$Cxf%z3{;EZ$-|0 zZ&dw?6~>)1vz|1VVvAbqmW{afvdark#8(>gb+kGcb+^ZP?ZVqYW=W^Lg%wyQOm~Bs z!gE1E0rz1UyJJH=Pkof%A(=8v z-wB&9* zc!A-p46Y(B!Blwy^j#E1tFMfe-}>L(-798?T|=xpU`epwb4Vi#rr4rZ<%86XlWH^u zPT1b}78YXQmFJ`9Unw_bcR1>jasvcBfvUnvXG(*?4Zz=W2d73^IAD79l{Yc>`ki~ex^3rcs!R)0Xhc;kY`x!- zUpb$nmgUp@VY1iFKY9cMrvs`KstnML&}GR;pWP$;R#9GN0Kks7r#MoWSB9$SCRw04 zX#VIaF>{N028&KC%ccVWjhosT0AEdvXWgqVSjIXRF3Qvo4xhd>ohSB`m{a1Ivgw8V z9!ZVGaa#1pWzab-uVY92-%c&GcI#1=W>sgfSji*0T)g@*I|F@HDLvR6T$(m}TKIUj zLWiH14Eus(>7LGD_oxwTF`|2hck%Ifkc04s_*E+XQ&X0euuG#NvDfbgR$m$CzO85H zOJGX#2h)@v1+)UDfZl^!)$wzOiogEz#^QKe>luyA_%V%*93T?oQB`NPvtW(;1(U~s zKXBmn30?)RIDb8}t|G5S2M{_i^nzeS0L0ziz~|o8v1Z;Wqpb;Q!h9fT(uMNW`wFgE z<9)aUEpt|k_Px_R?_Fa>SNNp!$*cNhsfiA*8_$Ur`Os?4wBKX9b7k>ZbLDcLW71fA zbyXM?8Rmdy(d%wtvz9i@ZnxME_*Bhn$X2~@FbYQ#4g4e)U+|JsgJrng9NijM4Ed zAIK_Kn*9DkxtPl(8p4e^m$%i86IRN(+}^y`tn;Ltxu#;ypBhVM$5PEFN000r@p>Kk zk!+YgE}6ta8-Dk=nO(K0B^~!qPE6#%_JruH1$9_}!HFC*we>Ma#*@$I#y#Z>C4zM& zHc;}rCX#)Tc}oJ3PCihk-}zI29r%STpM(BA=V#cedMz;m%m>Q&RRSwt?O<;H--9FD zww`hNN#PZXdHu(XD((Rv!+!j)Kj91HEX81oi&qAVmakg7cpg70w0Gy^EnoVCMo^cc z4XZK&;`Nroo|g37RQV8(5P^zXn}@=(5tyT1ZEX;jpyZ$<#sfpfAL5N+i$5}YS;H_k z;l^h%pdFDWgPw{>0IX_Wo}DZdY+`bz&d*OYaC(IQOtLUNj|Hd?aF%dSNPnd)te$BV z-{7z~3G6J$p0rw=kTwJj=B=p%%>`OEf0m^sxyrL}4GlJj>(!X*J4d#Kwf)wtjj5C* zI>iU5CDx}pKI>icFSy|&|NYZHaT;RML2--eEZ=Rv@iQOg?9v-P!X)9``Lp;@p|h8t z0no^3G25@wMd`T3W8kBBoi1?zStQ_XM;`$cWI5o-M(g4c46EKgtYi299gVcHYuN7< z*NRR_Px?VH=(1Pr`C>;S4`8hi&Gk*Q{?v2~Y8rZBYnn-BjFK zreHe*S&=li552QH;y9FRI++!tKxuWpvfV-gr)Ubp0chSA;EH!N4kaC(cnAy)(AID6 ziqk2v_5uMs0SG-+$SHFI8f%d4Kafnl*gOAyUF_2kwN>w6kYQXPYRjCC;(+*vBJPFf zEIae0)i4R@tkza&n!mfPGhvP~jp>|yVq>%;Q*88hpCurOHz0M;K{SHl0F0Vx0T~p4 zX;D5ksZD_hvvHXG34ZI>XE1fWZ{MJ44oQLp^NvqlzJ1Fskb;(_7^c}jctH2~u#N&$ zI!-PcJM_-*@XmOpzR@j%0zlNB00iowAtpORMz-yMsk}9qWOMQ0U44$fjxD%9wirxt zs(_NCt;0b~^Vf6R^jcbTDS_21ya>nyy!fpag1BghGcFof_`GUDErr zL`r#j^tO5=Ln=x^tXn;6URbV;w&Gx-o_9UAo0aT(HLJ}3mm(;phEm5GT(T2L(jzXg zYieYjfHhgeJb-qsP*{{yAILDJtuvye0E!QwKZ&6&KGQ3V49lKYZ`)Frx4G?vIWt@< zomcKA)GAF3yfLqOwk7RpVC@CSY9Sp1hnr4*FBm0u zX&{iAA^PdQ?bqF^Aoy7=5aR%H$ zyr|mXTePS{BXaF^SLjwu^4aUxgC2ZZ`jSPVCEsQLhoM(y$iq@?O2-ImF-1tp@!=u= ztY-I-?at=eoN@y=18RJQ4LV{@%J6)!P-=1|#>+7TL}BTa0;5JmR6*tejQV<3%^E&d zQtH4|A&vl;VgV#eoj=!FHx&2bx6U>e!ckoooxZpP(0sWLX1Lhc<&`qgR(8HNWMlN7 zD5h>S@Oj1s!->6uE`*&Pz63imJRaNS?mSO{274+9tPEbGMzK1Fjaw=X7QMx!tD(MH zSD1E_)`n7_YM2zn7J{VKCaH|1Pw6bQ4zv$ItQ&83w9Sfbe+K4}FN`jcKgN)yS$MO{A#!S zvb>FrRF5EjtC196Ll0i-8ssImCy>PsXiRCUI-9}{X{nhV>{FFGO*cuhbrX5})Mirh zlfT)`x+YSOTiMCY>`Uc&kHl%Xt}c<&jr#2xn*BcxO*=EK zTUh#W`GFI}`7fWm_5%L9c~_x67LAF&tq@Er*e(`DN_2rfFa z9RpcaW=dyuD#EsW4YF2Ne@H;|cX{f&*MlQf7vSix6sFJ|V6COCB=inFj9TVPXoV~U z$ZE-2nl6h2D0%a0r_La>!isUIcM|vQ%K>N=Q%hD?hEM5aT35cjX%8P!34G|v*Pi%& zY0L9qI$hZe84l280jPfM`qs!~S7+d_m#lo`qz-n6zf_t4CmR<$r*tCG^VUAiNgR}g zUOj_}A>1yuipDZ{n+jsN^Mrh-S_s06|GN_b4vnm4vKegIS(icwMsjn*4QM5_RthZu zt&iH%llQ&N&9feuIceUcl0}#8U<(^NwuNWe37pX z6LelG&^u(^1swKu4;*-7b^DlqZYF=A^3rpEA1(6hxKj}6T$XM1HMTV1<@=1^4-9{$ ztNEL+E`RHd#~%CQ!e`!$pCY;`<@Sy2KkMSvtYBr#%FA(pG(7>{5nS`{*F5p?^QWD1 z!tnkHzK5~tw|`;VHtVrIe8ZK0_|uPApTQ~X;2urx;rpDFQ}f}5$clHLwe!V?DV{zT z4b{kMZv@FiPDYtWhf9Kv*uqfnrdVn=8<4~&VLO12wZ1fBmy9f>n^Ma%&|gJM8N3a& zrwVn$$H?Nh;=M|;nzCVt)kEJolz7F}#47{Xy^>~tEXqq9^}de7x@D*tSnJG#sPJP? z|NOeOrz?o28nNsmJgh|hveuk=!{Pq z{(?qNa~;|zgAom=Mp;(#9V?vV&7REyqK)s^iEll*8O1aQ;$YetoCBsbe>-(k{u(jk{3c{+LsvtTDCoLOj1)4B{JoIjy|e-ayVbANr(OtKjQ9w&mUa zdigjCuL$-2%-My;^WWv?Eg=$L`Q*}^Cnqga1)$Q3rXLD34C;3>eM{fFTx`pARs*+A zRTh?GUik&N4Z}@s%cspQLqD#7PyvK4l(QyC;&2XK7OMvEQ#}u+4 zVx=m+N+#+{;EkeX;CpDgci?`o1K7Br?t zStxH4Kj?Q@Cd&_~UwegEpnmaD$D9(d11#3uy?Y-j%%WE~=5%L3Y^(bIjqG_PFd{gi ztN75Rb2!#yCTkrm41r$SHq<*N7Qm#r0o9N+;e=U^jl&mCLYg5PwDcwdcOqSm$=VS? zGckDgt+(+9h~;95LI3HOWLoQ5)*Qzfs_GAgt9C%Em4K@`N|7VrTlEm6076fbmrn*s zCq9(mCc$FGr7PfTBXDFg8}Esa_4bU%#!yM-UI+S8+5(`bVn*Y#2pNtXis0oV3y1XA zebg0>iqwaH;QsATzX4o(p?0m@RDY_uRqvIy!_Yv+1-9$J&j_;AlF{ldU;5~cSN$t1 zuGk>Jt^ua0uDSL4w}(e^{qarTeG#*;^vv*`KYAE@T8^Fg!&`rP!%x5d?A^Z~JG|?f z@BR=|d*8i}ut65$vM*oM|36<0jO6*KS7u>Jn*w!Fjp-D!x^BvCV6$n$ACehfLN@6@ zPq(`#8Z)#|-}49S-0cZH;X*2UI{fC^`$5avbA3Z zpC8?0S>P?-z4fNszrF6Xw-4(a2J$K!2e|Y=SGrz-6h7D}% zks+*M-2H{`F%P@uVjKz5khO_~wu;bPEn$r##O5mb>K}cg z;@AHDpZ4}_mJQP3`G;S93G4#-#2CLQsX8tt5~2C~W_$VeRqxnXQ;UZuQ5z!z-1|~8 zrlbQ2U490eE=Kb`y|3+Kw5q=^#6}BtTiN)s-v!~OZm|{V;Q@gaObH5BRt*)0+~*t@ zd~RQi&tb4&h!hRzNpmpzSfK!mv|xVd)3*}K9;lPAsbT^{g3{Kke6mf=vk1$^RQ6*i ze1*#sP8cn|(N~__#$F-CFiw5%S#<8(-rm6*0T#J0JvGWcc=l-rqJigMdYP@8OY5DB zmYu*3qZ@wuS#Qb+c9t)qmg`X>j z-M!oT6Dht?RC`k-$tyzs&|k^&3-x4xRqH9SAZt%!`^<-b{AZ>Ful@Hgw(!!=G&VoE z@qx$w#-;$^qmT=3_&AEmwvG0=&A@tKPann?2kS@Q{O7HMLoaRGa{HG)ff&Jd1_u84 zqo<#L01mtMUjOT(Ov}Gf3E~?mDT(+XKyv>aeqiaQj;B#rz8)4&nrzeJlX!fujcM+CcpMV6vblw1ynNjfN6 zYE$uya2N!kRVOK4$AWN%rb8C}6vbpIgRVI%&OT%C;Lw?0yieT@o)I0m)o3kPk**-Ir^`%s?VDG`B&aQ#`uS)hpbWN7k>{qEHI_mRu2jxxPnCL1?ArY5ecxlFMR>tk zw>`OysgN_~u0@is0kCtOn7I;=-TCsKudk3>s?X>6f)Jm+16Do@;BKuij!ecK;y=Bz zNwjbIvU)&wc)O6{R0DwzhZ!*s=ZUoqA&FD%(kb&Tz8zLut3Rnc5+J5DI~PoXdL$y* z?#{2d_&XTZGp@Ye=w3>ajVZJn2TL{*vL%BrEL62MXYCqbUskI2A!xj$c!eEfS;k$$ zly@-rP>@!DB2|sYjG^8E^jANIgxUkA%X#s^Ehl$pvY&PMKBsmcty`BruIpEIG&GgytR`e*Hg1ZaSJ@?>)8}#K^Gsv= z-RnQ5-`0W!L)Fbsyxb9Ld~W-uMT=G~To(ECRo}btqOV%rPqJ+*R3zVNeP38`%gIj_~$ln=xiG?B5ch# z(01IrUq0|=r7nQ>@%huNS%~dVNKaxG&HQ9by=(b#US6V>3%T@>gfAK~9W24l<{SYB zZ(C{GQG>6Hw#;obG8XQ$n#2C6tBIkj&n>^r=PGfC=@?GB%z`K2&Q3ZSgM~yk*zAvw znYnB!5OCE6+`c+*`B0+dYpkayj08M!r+ZPTRPV|d^}Z1Jp--KSyyq@woO@n=b~qM0 zZu#1BM>h&8a8`rsJ0I+x`^b)-LLPt1709q^s&%Aq zFkprXG`n)?-1fS5Ux81&Iy?nO!69F6tuF?6rRw03B;kW8m29c6lx4*W->>ujzt+wM zMyl&Nz;Awb=Izez&g?I{?834v;NXD4*!(!gaUsEKYGZ|@ZDb=mvT0SJIF{O=z$~NGM`HijX|k~wmWjR zZPnc+vspp~MeOyh`pz}@PFr8QGJGZf>c6LY4SjlTX#;@MppUtqn&E#%X}Xua-@Fe` zUpO$Cf7|-|zWvigJk1ecN~TZe`cGWc={aKEydZhkN>PV$ri{zMK{NRS#`_&&1)qt< z@#sp=aIrt9F7X)0&`q*H()lvb(J#}7;KCFnU4#y3kN@44Z@sdOHv$iRs)JDu^Miq2 z?7SROmJU}muREGroa?&o zMCNp7q)_F$RYixNj&)6Lp=SO(9{eu$yDwT9866ER?rdJP7DcFV$ZXyYn56*DW5_uO z6U21oym?Y=STtm zame-D=>A35C)!)*VSmVg<_8O*t(?Zhb?}mPOR8I2ds^a+Be}tmK`hxpP9)tP`nT67 zp1Zdltt<>@jtyk1M;U(yE^r4&$J)$Y0-ocPqAiiR=}GJW)m$!wt`ns;YZOvzK9z`N zFL5|dn=r~AITP3_du}+xeq$LeSxD*@TNA&;@9y{ov$frh^Yu?NF_8r}-qJKSCq~bd z>(pc}JDeq4@Y%a38$6dkhTl{qw^}Bzf%6!MQs27}*A~WX4}fg8zp%TvO z4Ztj*y#b|ja@FBOdw$Ex0Qaq?CA{W~D`1N=m*pJ`je7wrNv&8Ob1&dyq^A+FaCBt<@nY`)Ms)*EA^^e zd|ICUSR7e+qVZLgQthh~dtUr4fO^eD#Kxop;RTF=K_|tHBrO)3LBofM$tO2HR6M&M zXBhao)2G=lB>%;36>HT$M{M#M*eS$}pv-v?i;IG=g- z{asJ+o$k7!Km6=G9RhBLO>u`Wsh@xEZ2P>np?qKWoW=A3!A?MFgfp}FLq}1A&~o{l zg~i)}s2uA@E1O#wsbuhp;1AcigviiMBuG|1T}X80^J&p3EYqqC4kuc;6KE*(+$Web zQi)_u;5l%@GQ_cx(h{rr!H*BCKv_CaKwiqqf`om%NQg}30a6x5zI9#IG$`M(>ZS+p zkY(g)K~B2lCRo#%+AJg;t20r^$~sG^H0I5gj1<}yEMn!qefGTV|FwI~ooo+auU@L5 z*oFIMj=7ViKWt}Y+SZk57nwpOHS2^`64KR5pl?MA{QCCoV^0nkhG~_^>?%=tB-mOV z$IUpF6Ul*4LHgNjks?qcQ-~Sj$wC=be8`j}H2jbSS`0w0b_HlO#(aHE4RL#G?AGOT z5GeF2Qvi7>Yfc$+sL(sIWjYPA2vXeitxVxYd*2`U(F?9CUCQ(zD_AYAo*oi6gT~UD zP_e^Y<;qG*+?0IQiNv~u>v4j=z&eI zGJ<4394#DQy?`u6En))wti0V~c4xM0KRiFqBvrFysC1mqeSXW~U+!RO;+98tm`}iJ zW@T(vu*4OvnFx3?tJb9!)HXUPI%WF-@~z-3Cq?RGZXb4Y4@4`2cfu9{IP%>sbC%xm zfkEA{WO1=BRqXF$@R`-@au9R4CEQw$57orQKV`Fvo(}M#cNq%C5iw4Nkts=;jN)1* zjn{DpqpIY)=ZT@MhO_9tk!d{HUMi%y2N{zznGOo;ynCG0maf}ofjKc5D^;BvKNDSA z6TSHp3A1Vyr=WBu`Ady4u^)6l7JA^O_|o{4WRxMXictF2x-3(AhBGlHH0Y9`XzS%p zMFJY?b(a?77xlE*;g z7DlC@&XJ`T3lRCo^~`5k<&5&7kI5!k5a5~M?Ldexebh!vF(k3-}st2YDV%22`P`qU4!s5xJW9N>}>S|nY+Z1Noufr{Dg0`uO2X)p)LI zF4xpXx_Xi|i2=^J){UR}0K|?$L4d8=fmR%V~MJP0|(2=dDVkw@~QgH zrn%Wd?sO({!>0QZ)uGs;dqWLw+p<3y$|iE>kMb1`r>z)i?d+c0UhS22N%^PRWS)D3OL{f_yJ8S1|Sl_(3J=N5C>z5xLIXT?jRGSS=CYqCTSKrpt zaDAejYW(CXxkmq>JQqmdI`w*G@+yn1(g~oj1a#JWV}bVzc4S7jzF|56Pd%Yfr8C5r zMM1oUEnrE(0IP@tU9S*I*I`z}Bv*i`r;IWIV#CaJ_{Q_#p}mbuZcp$0e$#zlbBBBP zz54h~o1Sy3N7>64?O25kG<5Fw>_}|wS{I(v&D&)s$L>7m)Sf51ufM(CO>zRLW5b`l zx9>GPhH0%OYehB6UVe&~5t2C9oQcOORYx*B}46y;)wJaaR11QR|_#tkM z1!Zx7_yY`DU3DzwX?zw_6k8iLtXa*<_@;Hpe&KaMgO^;;>n$rMNq5soNTg z963<6{7*dUtv?ES7hqTja%v*u!9fCBQIHHFg4bAygSocI z)d331V;;?CYof9^;0Ngq%3;Zp;I{=4sEjP2`O}dQm~u1IYbjz1T2@-bB5kd>hWy>Z z3+yW(>z*xt>&|bq#s9wmgvfgexbZGS0fmXJs#@Ucm71%Nn<;i{o+TmE519FtgU3cw zxQ;1SBzxJ0Y?Z={3K&FML0hT8FbHdsc*as7{afk0vG4r;@4fZ%?iaS)`ITKeAH@|I z{s8$F$4lRNa?8fYOgo*sHqPF)^BnNnH9fz2=fjfhaC5f5|DT&~cmUwrFFnCL`&&=` z$F@B$-@ExSzMP_tuO55!bM`}Y|Mcv0?nv!7nv+jI`7*_4FJB0Kn58h@T5p{Flby%c z+<)hRz1#VY9T)=1cfPk+wawR@XgE;R0m%seir}uJc&=6v* z*tAvu!&jftTLKM8s{8WR&usnYujNw>+}a<0|9O}^uyrHfU?Laz!LQ!~Ln&{AFW|7< zdtpo~tg9Ta1(B>SwaAed(?h9Th^GrEC_DHoL4|Zkf+yGFE#Nmv2+U9Jwhg#~!mlFE z>hj6b$&>x8IdDA(-h78Wpt{@mII@2c6E(C|MPbn1{1;OxGeD}pYcw?D2ubJYqQk9B>L6ISV z_{E2xuS;GGwidhwu>@FZ(d`$pdZ*6cB%`Ai^Mb+yKR2Y(QC5h?XX5=Qcbc#yOYt-2 zPDg?oK^$7`)ZZno%}eMA%{$zJ8kVCj73+G(Fr>V%W6j2MCz$Jsx zDn-k@af~KZwACx^iWe`=ZRtuY%Q=M-dZ5G%T;AHCFf!87_6B7UtlrAhBB8g$o;dvG zDyv|Tz%|I#PRT+pgtWFw7)nwi4k|6ndM^Q#b<=`UEoB7=Y-^r)s9APsW!N8Yx@De`fGUc05V46h(fX(RzM5vv#j z{vs{jdvz8|C!o^-Lnoxl)UsCDDHmcJlt2XptYiSTprs4~Gjg*?rJV6%{46V|t55|i z{CKeci2PA%TfI_-6VVbf6&E<{z>rgfga-32OH>sD%X>6Th82@Zd6B(%6`YkL*}zts zLA*r<`PkwWxi)E<&V8EFT$^S2Xs(jzrD`c92$uCJRmCLbQ=0##z{k8r6oAtFyt3g; zG0b$pFd0%a%V?{}7lmaH7QxU;Ct%1fi}b=Ywge~4e?DUBzY&XMYSo6!t5-UKaIr=^5#MzqW>z(N zYBpq3l}DziAbgye zBbLKXgVB6o1~Pi zjZM_&3d15ex>v@jDXny)I1C2QyZ~cB1H6Jtu1LMY3IUO&Qn0blL2ivjDqyon0tbbn zSvFPzTU;rFRa=59^2xa+y~v=xiD54Rl~c5vO3@V4`GM?4L1em#JmRK_DS3BEP~m!j z5sl%~3YqJ)i}>gS>T%ef6MKN})y)lEN;asYQH(9&ae1f^v6To^3LA3tl%TNy2C4r% zq{_%#k(XP+%E~Ul)-d%X5Ug$r53x`0u?vUF%?jd`UTd)oHF?dkKb%~1 zLBD`#E4?bg_kO{6ML=O&RAKeGLGFm$T#RJid&29RyTX^uD!a}-1p4L z*!S@7|J}@Dk)rLnRgrPy-gD3TKi_`N4gTkU{a+7qg>k!b`HIEk5j#3MwvF`-8_Exv zS>L+7uJw97OC%E3s@JSut5~n!w|)@VU=Xu~GZ!tHj#;PKv7t=SBGJGa%^LRx771b& zkj`x2`SiIK#9|hWMlBvh_>Nd461Qx2$YQamwOTFfcDkf)S-;=oIpcnWy!u`T2b^G9h&un^b#x_<~ZD?f3 z<`)<3Xm5vlCM=td+JlFW?5*#7-wN5B)oKl^miKLU=g=-*yKW=Jj8)3VR;{(ILH+*W zn=!j|He>xppZ4`^K;67u^sDz5ZL~>mEyjQk7xRF!XYo|hl7L(76fgz6K1hni|@WIzMz^({J-#I&T*2+K$& zla@-RsY8+hO^|Pgi2%rB2@{Sx-6mPIyy4y<5%ObV^o}~VwXb{%aw1GV07xAICR-w&@M}#bv?hPQFTkms5D1+7?&JUG z_V0YitIr<+K*-P`g7F)9F|kjG2(b2=cp9BEdFk+QjKZh+OL|ZD8<{9$uIdQ?hJ@+l z7a%=7PVS!k1UK}LCXO88MCSB37<86?se#?D9>uZ zI)J?gx&+216fnZz#+Xfw#(}llZEG{Y^;$I?JHW3tI(4L8qI{`L-m*jEQ17f$J1_`IyP?QN`(nn23Q+D1_F4SNg(bJi!s5V;7I^BIx+%qx>k#F?JtmD`-IdPfJ_1nPHdH%?co8FQ&Q{jet#ou~sZ`3TSsXCOX;-V+vNYU86kmNAkBbYm zt=i~v9=DBWtM>5GW732GbP7w`>h-1#(GQ)rfSa^jwqT8##1##E)F(o{UT5-_Et*I| z^~3tbnRFpx8+cvX9R@-dgf~Z!P8b(IoE&nd3(qfxxBTzvH9g2jkLr}mC-69Vi~&}^ zFfM_>%{T~Y1KOdK4iNfD{SE)64R9UCS!71y!a(#5Tgi3Segq&3Fhj$WmKz#|nvKwA0LgQKC@1aG%;1;H zx9YH7>j;@~-+G7~8pwEJh&(B!*9MqSVr17=yYK8hDS*?+H051 zyPgGX0G0*{gqkS579CIdJt(7OjdnwFW0`vf6|W#Sj<`ruhr-6wIRFPshB9gv_b4Ns z&D!zdp&jg3ZEj}4ws$rylP_38pe7TEG0_O=DNCZ$?A)lWKH9Su*8?V&xJ1oqE=!TqH>HNO-F%%gg45& zwtu+pAWtWU0Bgg=j%K4K#*a*yvLuRx9v}+v;G8X zTep$%c}wTAmI5H^>v)hBR;^QSc)hRRc!Tx~Z1w4V%cCp`C^{r-C!ppD$X=3b&t`IfHefRMs3Y=wyJJn*JHk352kDv(#D|g% z8f`d0&L>TmiP%Ks=yb(-RF?Wk0P(7X6zAmJ`szDPI1Qu#!;RB>4xaEjH+@VTSz?1&j3|Q!r!#1v@$Ok0B`k-` z*<^tCcebovDO;-x`z>Cyc5H<49-*EYC@eB1d2|pFIw)O@%7z{9?pW$@71xee=QMFt}q!=T8U?Zc$PW7Ttn*>T)KpX3b6!EOY7{Ev$HW3vv zD1|YsDgv-96&efPl#C!SO@@DCY8VwDdBG& zy6#EC^kG7c$q6Vux$ga%x}W46W~3iJhJ4ef;Zs};$=?ZdP5`gUdHV3tu>PEf8T!TW zG|Wd(4Xrq8qbA1-jnJtkM+8M{fH+_kJ_5C#l_=1(Sc^^-rI}wmXWP5`uJK3Fz6H2Y z1BZ#z!!Bpgd0E(HJRU>#Ya+8&ojUo9kh}wnln4>yejDo31tituUCShLR>Ewwxw+1> zDI1!3(^Bbk)&Zz)N?{fS%&LgMDwdk>F|cPX4rS|Cx2(N?3u^k!uK4IkyNi)fM>K?;v`5qa zni4hK62LX3^$*wm&_G3~y8tCjL>y4hZ>fx8x+Wi2F#5y1_8_uP%qpn*tnWg+GKn38S zmXefZ;!@{ICUsU%C*;un^C(`GO4ZG9vJ51VyH8n`%x%K}?b@YF$h$TB;`Z%O8OunK zti$44SW3|9AqWlR;Z_SUcbJ?EyyRagrIq6&D2<+%2|yG0tD-tw$Q@%at<=QogWGCHSUx+lR(COwH@Cus#vo;%GYpdQbE>!KGS z_6%!g{K9l9-*0eT-%_}l_zu#Od{2sXZVEn5`|{+nf2q167M_)^P#5P8e)q*clqzvY zVAS7hMtwCD}kR9xgc#{)_`1&fku1t zW&kc}<*KwyRnqL*?E|{4WtF3vwMKB2;P|D*L{bw!eV-jiCUgta`A61w*2U01CB)3aB%B0JVY{sn$j& zr?(1#F(nfglShsTaRX60v1GCBF5vGNIZ_I#k`n20qdr42nhl8h9a%eQkAOwdl zNJZme{`(;4(!cj1bdawGPlv`OJmXaN_~FG;2K5N>ES4;wDt$Of)Q8U}j5r?&2Wqba zR@Hx=D-Y2g|Im)#Ivkkvap2tIg?hb^&fBU-1$g=#D#ZttYePk)#0;bq^3U5$`swLuSaKG#PTjR(u~zp^^y;wak~PaU+dtT| z;`HklANvY2ETBswlM0tqu8;xvuMtp1Qkdkhh@!>HX&@PRpUE?h%~{G~ z6i%bOL|p|G;l!0tZxlbCA0a?|OdMk;K+}Dlp5o$p`v30}2NG@cX9ZgC$CFI-B_JZI zcmnG0HB&l&Ak6zk3Lc)HfY_gZu|nbb3pEZic;T<7(8S=MEJLc!Zycu&bKT35=!O`8 z+RTS>_d|Aj22z=z4!Jo_8M%9tncic@N0<>})1ok8=l4*QWNs2Mkh>FQ1WF@$HHytL zAZ??u?;=JFgELCtVXjLmCey22##90N$Rvvc7B19AF=-w>`G9h*@8Gw2p?H^hd>e+|lh($!8 z)KRwz$X^eAs^-K zH`TV247m2<;rVfip5jl~kFp*))zx+Ns~`R&>=)@xU3s+X)G_S0m>!UJ--7K0m`?;i zu|!ou?nWs-UJR5-;ML%&E)2D6)G9-s8BhW{q`^=@*-j5(rA-Q(Tl|K_G3H0`K=iv2 z4E{0v=Ne$1Lz$8#f(O01YDX?RfW;ztMv(`}D@M64UJPfUcB)sOy3X2q;`eOr=3kF=9xwBY>!D z=|DdTzyAJT-48!L{?7sOV#<(Coo4moo#*E#*zo~V%k`TvG!You?$inUt2mb|Iew3F z9e$(@!Q~G<&oVrrZmJm1g?@gX*F;n&>d+U#w1wh$xVhkr?t`M@j`qbFYmkiYOH6 z$qLz!f}l3Fdc_Vg1x?JpVnd?@Ap}kCOACi;Q4hI0+bAEQv0YsQ*vUtBSsBw)pt7Q@P5<@X~;|U@cX*-{LqN~ zdmiK`rApjP(^5)O5QV!T@&pnC0w}DU02&8B=makj;-E^ooEqMHUZyH0;GNXM+Y~;0 zQva|qp8m8wl>h5?a7TGipWirC9DRnij6q6fNy)F&he^exr!!^$gNi6FT&!<4=NmhXyv1 z!;FL{M{Kp#!8_GL<8B};VkR0e$ntREpG9_!*dbits7fFThV>Y}`vi(ulnIdmuw%35 zs9(y;2W3QBJ;Q)dAqB38<$45zCIKBFz#w_k_^=bzK}stSiGoP0A4psvf-04wb9zw+ zV~@58c#5HjQPyz@84BuMN9n3pF^w^i)i0u;V^b40J2MBTVgk@_ZP~BMUGV`f&M@fJ zas%!pYEJW2vD1q9w?-; zC**Fzg9F_u?rB5(K|LJK8?joSM0{}#kyRZl>cS17*9%bx%Qh#&`w96L+n_|Jv_daG zPX}JJN+1$=s3+jib_mI zbg^iedyqZp*i;S|CsbLJM~&_RqzWFRilOl2XRTHG67y1p5I@|$0Kg|3ZRs;eYFj7* zAns6>I!SHQN2VkVs^o5UhA3y7$*KX7I3zb|p)lk@FpXx_?Zsky%D<1?*JxmC#hzS4 z6lp+tXBXxy;&rFKP}w|UmHJcvR0k0T#U-3{9%XaNp`mhc`I%o*b;6I2<4MAkTj3Mj z`0dNj?{lKg*5@}4{T6Mb-IBN6=F4x|8>ZDWq#$3f4{Z%|5E%KVasRF36ayy-!#XLy z7mw41lE`bIdh6ux)$fIe1XQQ^%FCa!m}{%fCeghxv9w{gJq9esAc<;-1ba{ ziiJf+0j^I@?#p5z*>WJorCWt60yd25`H^X;Cj-NMh2jY~vfDyatPXJFP~sRYNI22+ zDX6Z*SA+lnrhphxNKGDq!}XS^7v(BV0O$sQFolC6gAKNP@PK>(ndC76kb8ad=u@61 zP#ona#z&wOC5=UM(O>UuD^H)5CBnSt3NozIjBgO-usA77g+t^oVJA(5a-e92{0Y-^cgt} zn0Nz3tJ5Mi`2=O!+V5JabX)cFOGLh04O0XPb9 zqbmeJN?1%GcK#@x?t#xVB8Kf%%CCs2?hDY)#u$9Bq|1F`%K{dSV6eM@rQNQ;rUR(a zIR1E1@}lN0s%J}Xf@c4=%BL$DB2yw1a%PU zsJF|EDG)t0JYyw1OUY!$O=yx``UIo5NgA5KvREW!vMUsczT%r{W)YO9dWAR$U{=g8nWsFem87kyzM zCEN$?v>cW4+lMkexkedbD+P4&KW*~qx6*O$S!#9@@a<+SI2pPXbAwNB^EI^pyoM%GHOKvyNh|85y+F-6doz;o#_m6;`lJw zOnVTCGa9smb>M1#Kzyua2^MkYwP&k7+E}-pBDTM>B zxm?UR_ThLUDnk1pK(|nIzmyluSE0p+JRvHoLgnt7HP`nZ$7@I7|ppP#vB=JU#g(Ia*+4GRcfZ z3iJR`nV4;FZrc9-Uf4;f|8*2vSmY+ol0WgjtujgaZoHqKtOw-B|XF8x3h7|jml)m zZs@)inn!7$}PV07qykYSSW?QIYa!lwIu|Dy|f5Y86h(Qq(ALROpjQ5W8bk5#WPs>=)R@qhbgOQ zZPups5R>$Ha#Ep}p}6+z)(fb@!ULKxH^4}e zHVODjn_IRpHxFAPuTkP!VU-Uy<${i4>`&X$xkbBu_b!B(5XmgSC#YKCfDtGNk1)BZ zJJty)Wc6wnJGC4f0Iio{f&*STCZLis9VrT{1=k7(K`kW%4hccK}gxv6Fs zw}TI`FIS&z+VC6a?C_m?*4{1K)IWNIKqqXetfzA##dwBYBCe~xp?t}MGLsGkOaK5N z07*naR9_*^#j=FW$?TJerSa6HFe@QXBC9D-Lk8mp6}^9d#qNChn7C6YCo3WAJ4b}? z9m5fzP+IQ%U0R^B3Tj49 zboMXm!l82+&nM^3+35V7?QXBy^iYAwtwZX=WMJ^}b8`R-Cw!FLybuDAlt=Rh06~H)Rsb-zfNUR)dYqoH18c#Gf zT>vgiK$|*1I4mvd47X@vhEu@zM1G7=$&BSE5C>9t=ZJ+EpPaCR5<%*KY!`gXUgx7-^q^gcg21Oh3IEF8^^Jv;vJo{jzCYlsF- zE4_Eq;w=`J>mYwQ&&2ry_ln+e2|oK>>RxRHaWIQ9bZ+ zW&(mkG}`KYALGpYnC<+8*Wm#Bo~OhD$;{QeD>m_iS8e}qZ(8}&`*cUsM!$L8 zve&Oz|F8_s=p$C*O5>NQ(*tJcJK4Q`$qk`}vaCe1k|_b#By2D=ED>M=Fq)0Bt$q2K zt$+Es?QTA>i8xd>!%!Zt*qbvWHaR@T3IKwy8H8+c43<2w3adnG`zy>|Iv9~6bj3kU zplnrUyj-;s7p0LOL75vYkrttUk*I{Dq~MaaO-#>QVR+o0Z7_S$vKNWqudryb3iw^* z6HTHs#WK3gPHFfx91@?r`+*IR@9up35!|3`m(QHBJt*zFKZCm8y2rhNz4Mc|?H51$ z8K%0nZ5-F_5MWjgD)w~q(CTE~K@--B*BFzt2-omXKhpg3KmHT@*egEb2_SU6Y z+uwL-3Cdm?$pQRhs5J_sCQpgdh`|4B8hV7OK+e+GHFR!@h%WR`AAfA zSEazrkCAV@Y;*tZp8^zOWZ(V_YD=^j+$%Mjw9z+b8QhvBN64eLZ9V!FbU@^x?dT%u z85Vc4jC}k5{=hm4(VS(;hzLU*Hl4?ni98)w^c*ark8Gc0bu-#5VuLt=xGW#WN@1gM z2w7&KXov4VvjlQ&a(WniVdli*K_c=P*y#6OwV{_5S=~Kk`#<~K(sSSftAQp*x6-ow zwOJD@~o}qSy0HJj<8TJMg)?UCo7;j!^+r)%(hg#XH#Rt z1bJ*)a+F{fygS{Aq~(!)*7hE;rs=7T6~-)*9>!(L45A}wpUYZ`2bG+}Pd_wn30PnU zbI>j;3)Z)f?fTRrfMCtnnNd4)b_p=aj3cP`@hTC~pHBnqyzMutc;Q$nP>kEP3rj33 zAF->8v-Wi385Ev1R`r-&ym}4sVVb2pc)k!r&R@TQ(*e-{jei~!Sg*8W8z?Yo^~dBa z3lFPSC}U4;mTYD;ZR^kOS`v}y?C6YrW~;VHKc$8ztVUn%K|Ncr+7xnfqsK}KSeu*4 zXrC5WN?vsZk>8F^Ayky}wDH~p0FHF>%1I85=H79D7XRq0P__r2KD9VviEImHsKPx& zID&_wj6oBw*SP%@c^5Gbac+QU(1dE{FO6G+ew6o3d3O_Z5B|JBy6sRUncM&}dXC$=BjbF_ zd__Lryz%uvlY4PtVamoQ#@rh4&QJf+Hdmk7x#bH^Rg#IkZLx~rxKy@_Q*%xwE6mEX z%Zq?*$UghxbJ*$~3kW6|hGcKyK0R~e2mb8Z>I3`qou9g!F^SlaEso=soF%q2Z5a)u zLg@fV1f#voVZxt0D(f4Eh#$|O0xUV%UAHqR3}+V?EVc9v>$BJ}$vy!Qf#OxTaTb}h3V0iqyEtd5sSJh&0L_LMeE^>nHRYKE za(#Ab9BK#kX0VE1yMj!On0K48qTcEAGwj_^MTsiG>R*NmL#fgHE1y4M!6!=Sn3nzE zY?)*kQ;Npp@zeUML3fjHsHod`m{7#AN`VamRt;cg(=zp#Y=Vy;?2tjkrVyexpFXq4 zcW<(abefLEzz=1TvUTgu=l1I2c}zU4=!DHnxhQL+h*Z}`f?cBQQ7{fxZ0OttJ7hVn z*3WwyP&d%kn0V@@t?x29({o>D|_(@w@zG~-| zu0s@#a1^W&0E0&?p2aRZLyYY+*h$TXNVh?~zA`=m0V!Lm|D_#muh_%gj9t2T!KMmP z8zKB~AF%=+<#K(C2&_jRuHi~9+Bd!{`y#Qvn9d&V?b;&sm^-&@kx>Q`ilk*f9@I|f zYyDRflbC|PwP%3b*aD}(D~c*2E3rnuUBQrefX8m=`WYK~^}_R;1NtpBTeRta`c1^F zUB;7$GwDId!~>|hjQnHYy9QMvGud+)qX9a_(B)|xx-#SPrw<%JBN5b%p!7Gd0vISW zcG!u3_$ud299-g7X5*0>rYerY%X3stN=Vm=UpWJ{MV5!tCT}cI2Da`$;5i6{T3OQNr@(T=Mqu??svpTt*|U0P89QUnD`)*q-OC8<+XHx4=kUc@)g zV7HN>64yI|EH=c)x9?f1Rm;@G-nhKhEt zf*Gf?W#@|!>cTlYK+er#nwn)f?ag=IXDM>W76^)dy1HZc5%OQTat`npP(+S!OKw~4 z>>{%cEfVB+=$sZZ-%33PV37L~%qYNCLYycpeT#*I!vN=REYW*tZIr4nw~&1Xhc+=v zlQ0v_&(k3cP#0PG;o1g@T-~m~{;PP5?mm5FfAF>M*=3ZG|NY@T+op|w_}#Z`i{;S* zNNW2%i`1T2rkAoeFO4C_u^l1pYsSZQ9Bzf z+uiNBUATJH=I3T?kG6gC_$i#E!m8OJ94+D?cr18E8S;!C#}eRnPPedx1-T7bW+12FJVQDs z>BzN`VSTnp6UScdhI*DGVO*sQlpi+m7&Hmjqi;ny2PlZ*2Fz62gV|A{txQ~sWrhHB z(DL(FmTdU7Wq`?jCXP=e%^Vq{`R`Set^uZ8W{2Aaeb~Li0g(-Z2(q&#tcCKhCW*?# z|AIJzkG-^smPnlGg~>^Kh=+!{&u>4VzL#z1;K0rY`%pOTgo43( zY|IiofA{V)do=nroC%nY0BaAAS83&eHDKYHT*?jxW5`NuWdsFo)2NRgY}(5UVdVbU zI7?m*j_k9IRog~s8X>mf_9q_#4K}ZkQh_V@-oyKLe-$d9n`F0@ar@Tfd28SKAwBTO zBKf?H4@0GMY!8%Y|0m2^g3>v@@7}Cqvu)b9-~6gAP0nMN&*L~~P`{R4$G*EjJZl9- z<$%8ZtG{~BO6{c0%`aFM(WZs7;_-urcJ|yk8wR`zjqD2`0vm1DASnJK)U2qA1{cFU z)^!F=%13w)36^I#=i{*q0=UvLp~xsalovnb&=7VZ@!|92KcGC>QvDgIl*bp4NR}6b zF|I2)8DZHN_#RovsdB?=A`tOL!PJZA;WERKXM<+Qe2t9>S>2Ewro!P81*pV4)#8A8l{(TPywv;)IsppgeH@)|Z=X<#UALJzl#F?_2&W4c3k2X*evF9F>-}cT1{mVdV03C3ApPbW83_ieMOhN@iSGcc_23v8q zh(ZX%07x6IX)uKd{sUZ{3e15#W^k*})yh4ALev^NdSC12Vo(_cHv6(?i6#IA2Z`*N z5^Vwi8w>ape{}><-!2mS^mxCA370-FwI{^Ro+< zzK}(BT(x9=(f-4QtTldh8#7WL`{HH0AAHTGn;TXL)~$?2w=}6u$l6L#{E#%hQbQmTcyeV3F`_hf;wz0is zYpYMKJ+fpAi!U*$I<`Yl%-xTEVZq}c+10n8ln}5ORI-Q2vBRz}F(ya~>p~ZP6~XMJ z6%q+iG^`Ufz|un|6+zS9TGH)en8E%^-_RXC@_5%?etp>{&&*mBEpQwPnPt1iUS@*TrQ`O!U1W7s8@*i#9mgw(0n)J=yEo&oSsP%})>y`YY>pLkXpSi4SslZ z(YCfH?Vb032xkQ}fGlA3Z629ApXk_aOkcbEJ)6OBo`NFQ4%;{Z?pSH{V;k$BWNjQ{ zF-WmD9lHy*VpiEH+kS4-#xGy=d}P0s)8WzPL)*i`ppe97?TB3-p~kq2wQT(ug+rdN zI4pj1?U^e&IW1*Zh2yw28H-4r5Jfms4eLd3fVWSqSU~YZ;Dw@UP$Vk@1Sx3_NDZof z3%Ej>?(>YxePZ{{T6IO~!rYvq0!+!czdm$dR1=Ow*@_Z!ym$h@rH2Jb2o)p?uuvwG zQ6YMC1gXf6O-m$KYEtQ0?E~OqNtgRjdbC)osB)M%G8p@RfJ(la1d0a@!xm4$O#NL% zL-gpPFtW#0sC-f`!9$|1%F0C|w%)cYR|>?U7HwmV4H{r43Kniq zPz9vVoV{vaU3+3bJGzSudEV*(@(B6$h=JHGskt3n!Q`}l*tfZ_T(*39)ebS5$44)q z5yQ5S?V6Oe&o(=iT+7Chi@OSY!vfHT5`FpXK9dG^45hA;zE;13?e?p7ZhGG3=US7U z{PxNogHRk!BA;WCLyTwuvI8{xC;(j;o3h0;UNu~sPj;*J?oU5P8~(Z#Q2eT}`QF|W zn`k_-$+H(Qb*Z(l?uzKYBwzi4#z#g*$z*k#cx6#*M6Bo33%rEy~WBb@7&rhQ9 zGLUt)&5W|P>ocf!S$=Y!DKLWb`oA>mqV8O@a;cm&0*h`pfvaH+_RFD zsT=_tLCtm=aoY^otPPXb+}ekBh`Fbn7^u~dm`JhcBu3#Tl&FKfb&L(r%5?5K zAHHw*KKq1n7Hm*lu)U`r(|LWHzVT?&Na&;Z+2NnmYl$qD@O+5lQO8MlSS5BWufFNRzieXg;K7!4s1*|OU!32{M^;- zRa;#v+5Yy1Wr;LepxoDAe#K@M#-QRGY=C#3V4fC$g{rvH!(fPNF&NUeeJe<)d4O0F z?!L!0QC6YH!K#7dhf`E2p&oZo@mG}B6N*x5be#s0y{P0#9=a~Fj93wVPN=h}o)$E+ zsc)e5`Ys{}a7+j(T13zhL#Cpr2iz-)EGa;;p_|u56j&@>hdiK!v z>w%rQ^g5fs6^SvZ5*vW88>+1pri0{|rBQGu&)=|(r(arZ`>v(vjB=Z8ewM$2h4Hl3|Au0)iWFGWiwZg)iHX0*P1X(RW;mWdk-SW8w zzx2 z5^~CyQ*GUMD$6%4IZND_R8do(fIQ0A!_V1 zwSmDmb?v(p2;0S9ebma>=26yiP?*Tm2R21y*WydRXWMP$HGKVJP(ax)_pq^!Ae`^x z7jEIkyBuRf2`J_)aiaT?1$)fi0ljB`jWvSBbvnFWW5rb4o<$4s1X<&=FXQWu=FeGTWZ9NydiK?8Gj?Hlfr-bytu?~?&V9q4?FBZOJz^saJa!O9 z_g)EnQe32HD6WD}$hHCd33bw7NtTrC=PXp?r$H3u5;*B6x4ZHkZu`VNjXxlf4Ob;N zWtQT?ukc?uSwc{f7GMp!fR(Xvz@3!g6kij8-(I%6Ly0?pN@|neKy{YPO;o>>umGR_ z0MHL)Rq*!BxXn-vgvAxg#Py5lszqQ%rH!VA{47H|Xhb~aRmR&0B*~QT} ztua1nosl_M_D!3?wOju9|FYN>0;&l{*;{{%=%dXqA~qK%N^Gb^T{e9HV<=^3idbBb zNqfj+F@jKzjt{UZ5UIaKhfhV|F8lWA;X`};5V`BhKeMqo6qhvndwaftMxCIJ`K7Zq zlV`{6c*Xbh>aw3fiHWaPWhB01+Z6IO?wh(Wxb;9N~4ol}>Evwdq2 zT>a(Wy~7qmSq%Q)vG@P#rX3<471#hHOHfaoO*x80u;r4(M-x}`! z22k1j$o9%_+AHUv8r{cG7lDO=U?uJV^P8J+7-$D1qLj?_XrCkyfHcC`I7NNE~&wl#F zZTsNa5pOOzXZfQ?m;#S&o}I7P(Z<_dcEe^<3j{n%Y;4*N5jIDx>l&ZiwF^1cx%mvg{=D6-&tjY0^tjIsfhyXtw~HdCAm=Vd<6LnXIX*{t z;vT#7Z4jQfYZbO2($?sCHa%{$;$a$%xr*O=j{uMkgV;$E+Q|N}jVdq07{+gp3@rnW z4#~YG07?#sC{-*FtkQ*2b~%sD;*Bf_^9s3pZ7OMRo>{U_?(gA0Z`mq) z`)hmg6q^VqVVRBQB+E9&Y;0ab%W8le6h)i)vH)#nG;W8DsFkgN9kGtpK)aLliAp-M zOS>$CVBoVea~7be#gJ1n_>r4L6g62=^ZKPl`%k_yXE!$^_N>8j6iiHe!HgB>-a>R4 zvJ8V7!LOVgzvy<=7Fu-w?hox7XAiL37H#hUQ_^9>ULG#nqf0rv{YzwT?7K;6m`D43u0da&$_JFvE9&Ec_r_kUPWMRN6 z!?#lpH~^DL2Jq0!g!@wR8t4v?*W9E9mkGMqrN#aMmD@eF_rAbQPJTEb`2`pp__`xN zY2-NoMnJj0*ZL*@=AxEVpANp?=GRGLzL=%@_@(e!zo)$P^Ebm3&td=oAOJ~3K~#>D z3w{p~MG2^1AK6sqHCNb#XJselNhe^EbsJD+#zEbng^QwKvT~?Dd_pN-O&C2x-ypjA zgWO{XSbKvTu!&q)AsXp*maWVzowo3=XAKTX23KWKjdIm3wX0C;3Sm`|0v{2i# z?_Nh{Uf;5Z`?HoDo3Z%ye~t@t-lmo=!d6MiU}#qmE#NCb`AYZSwf^>}c55H`ky)RC z74NYcQ*UW`u(4w+2Q|BhY@VXiYA9j|m6-VmQYH{MLReajU|=$xV(l3X%a76rd_Z)8t@Q1&5Wbejj>%!kNAfy%UuqLOe+xd z(Wn7j*jo#)+ok1EJZS5-R)!iX$VMA02e^jk0jtJ_I_U5q7W&aQn}|wjWS}IM(l*JE zE>HFeM262v@d)BHPWDzQH4G>x;W$eiIHiIDk!+L#5o7E#6LjjIL<*OQnYFI?=&FMQ zAW3!=RpY7WhXz+!{f@)aQIAj_rZiDjnV_U-$??EOB@#cVj8{QQWy#PYZnO?k=qLe;q?+) zJpNzprlS1;L{}TwAycqvE!Klr;h}2VlXbS$DfMh}afWqGM9w_=2-8r~-nn^?^-T%8 ze35AKsWVWS5+JVFDByYxgL@Ul>x-MWtU3)?S=g7!zrtAMkptPbl5|=L8-X3_6+IPJ z;Eo*s*q$Bku~v#@4`}jTsLtrw8^o8U?9)$g**DMN|3-#vVE1bg?A=Ee@5wNY87avM z+d>+(h7L*4i76s~G~Bhl4l5*5wm5^m6s=xMwu1uc5dkW2fGn{CS1(<$;Tg;vD zxNGCDzHWJ9fhQAHOn(!$fperq;7bLURg1uv%uvqGoiEtxd+Qb@q;CX!;t1^{cAgR$ z7!8nMDn`^xEL!(vdSlfmNV` zM=ieg*S5{1+Q+;W5P>CIX#T>R_U1qPZ|q0^?tg&F@y0)1n9(XB=fQcki7&6xfU?m6 zu%$o+YK z99tRcb_*qFeaw&@GX#n4RIfV;W=0} z?82=OEx7Pgm;8^w;NUs|wj&qd=)O!z&ylS3|1XC>uX_?b_#!K=}Yp)j0Uc?(S2HWk~ z?xS0{L2p@ccG1RI5Z7P;%gAK~c0g%BL9`gIs?|BPVDKt-S{VeN-#A_%$GNrKqyk!P!(95L_X~AJhbS@SvUe< zK#bV!4%-fH+le$Wy3Fn)maB*>h$58B#2wJK!gL((7_Y}<@u8Frtz?bh);+9rY?&ya zZ6;9(iX2nl(YXh`v>o7r>m+%}1}j?U2-Hc^&KmFh%Hjf^nkm|?RaT5Li4s^+Lf~i+ zH5PmW>VOrw2AL+0IHiIf_ zO&WQ*t$Km7GWF2Q+O%0m7c)tn7|i|EP0V6Ugey!gD%K?})$@G<8mz+~ATMtBhgl_o zXi>*53xzDfS`GmEVX21aFN0MjRJwdWSeCOd-*_2MR*$7OxH74Sc7X{8hKw0qu|jb0ZA7Yst1A5n&zkdp9B(cE_Q;g$O@V?o~P;}w1zW^d%txEj3Js&ZYY1SfU+dfM6zZWq6pCRKGyCQ*%J#P zbE1lN5k^x;zxckQ5o zHi_J?;<-B9TOnErfU=OV14WTAou#~yp(#5zwO~uQy*x6Ap3`p9s)x4Wtm5{KLy7yW zo(&K+Mv4SP6BMp}vbt=TFgldM$Dd>o9qbY6TB{&a!s@Terpe6IB+=4n?b=--PFLHx zAF;$(QS}PcZZXLu8~51?s9oX3#Oz+uVUsm&cA-ud*jwEHxZJgS><OB8F5@?T8HG$Sgi+*c~}z zArqj}U=tuBMM(i9sVN3!p25Qc1D6w3^*vVEGr?Z~tbwO(ZYRaS??rfSo}>S!!@_Ts zA<#J`;~JoF#SR!pk+E-=RG3A8sH>3oPdgQkI1Jw_E81@ zL;>eCu?Wr%nGE7GdO1df&c5`@s{pl!DUWy7l1_k-ZPb+!Y0$J^gRb_vw?|P&txbFa zYkYIgWE(JW0~TEk@SaIY5jE9E8}IUmX9XmIhIS&N_#goyhS)!RagatJm;2L)pLC3o zJZX9ZwdxU4RlYnwf9ThLeh0<%kV6M7G;0Kfbm;iM$K_=Pi5*WY-Zkk05x2$c_w=S5x%O&fyN; zLF8KsOlHT~h6n2b9-)Dj`NB4ug*o4iuaCPmk4%>vlBb;O0H=d;#SUQ9VUk$X6{~E2 z!W#gKHd@G8xwk}sQ<*}poMba!g+a=wPsEHh2rSt@(6TdRUM4`7MSSsi(>9Q2 zKYP|87Jx;LoF8Fjh~r`fZ&1gkO^P2fakUYeCVGzmol#`=PuFlJ)Bz2VRy~4nT12QN zSgJzwwe4;1+O>1%2$-oLw{KaVl@?7Vdb7;RSgj6a;$MFKDlX(bV(j`f&;77`yEUG6(tkk$RuR%R1`0dyKkY;uHi!rJYxZ!MB)$* zWmcqkJ+b6R7aGDZ?#1Y}J_#R@29Kx?U(eCkf& zgV{_OfD@|-)Px-PjagCdR?r;QMRoReozzPK+wx>_4c!HgQsn@a&n6A9S;;H%JhVz{ zwhwi=bMqspO_hDH*Z~Bee+)yLu%jjHgMb_x_K*-Zw%uBE=nS-?NRU1Xgch-je zK80#NUSkz3a&ZqEq-4-2fer-eSqT?kAML*(Fk!zOk0H0ft^-(sWXZUeP#}kH-u)#q zK?MyT&k@>v7I`SjJ7Kj(Y=))e-}?5q0WU!{0PW&8U$JlglRvfqSzF6bv^}O4$2Fn2 zJ)YmenoveLY%p0GT+0F`jRB@sfW=!6p$aKP3UQbZKU`taAvV(KY4)?~+u`H;w!6kg zcG{7ffoK5EAv!aMNYTLY;9G|>cxhgWe7N<@9)9{u`{eK5w(a#5+aYvNW;+K9V;F)# zEKsMSv{V9Ht6Y!aRc=rQcc9{cSE2#bT9j5wjO0VT9{?I2<|Q`ox#>$eswe<>!gl#d zzcNeoo8x&Io>G@J0T4OV89ob?MgZj_fctBINaJPby7Ff7oz6VQT1#ev=$NPX6{-sO zMxT(4)%shUD=ZLzGXo>w&rEVH$|FiuSYs~fkdoD>uN1O~`7x59L$xQ9SauTgmDq!1 zj?&H=?$ZJ6>wCVcb$_qK?k0GVV9#1Smm(S|gGr~3yrwp3ul@A{UKqi;bG-{Io}$9A zdjUL0zDKN_EJAJa0K5vIGy^M`qwbclAn=|ny~v_3nFcvfo3+V@FSC(caAJ_9%~dO} zen=cBZ}$VZEo8Ge!N1+(r^wv+_IZDoR-o#|8&%l%D7&bPGcl@I0lbd^y><qFp?{z*d;_CtEM+B_Mhk^61Qx4Z&@W_jlRS=$UWF)L~Mp(`23SEpuRl9#It{ z3$}@=DlT>pXrt^N4(0JsIVP5t)-Z!YWkoW-6e`LR`vtYsR@4;*SW>gD@eGAIVBI*c z$$D@{+*`!>xRvd_>QVt5k2N$&v@7*V=Ik^2P!xE zPc~F{TJVfKby}wd;IxR*196bSBU*qcDjWyExTV4hs2(~Oh2~qQs&`mRng$+@p^ys; z?3Dyt&9Xu>%FOBj1}RaCXYe2mLG@sytE@7u;>XtgCo9Ao5I1rC98MBK zC$qE5ycK(fI7ymJjx81`92AMLOh#)U#< zG+_Myjf1)lLt*MElMj;dS3d*lA!CbcmK#< z2@Cc~3lIc>6Etwfq|wAt=aIlEu;0}klyF_7q84UJrRuV)w4~WDXfEk}ZirkW1B1MsM!lg3+-~aKb*NJb{knHq{b%}0;pyaQ_~E5-456mu}e(g-+lP8gP3P5j?7j?fyxn*SI5nGfZQjU zu>t@iP|oug*l>#(zs=&fF6N#^-iMk^vlAYUgkxNe2{i3mhbS#;a-k zkA~>2*`h>!g1O~x?cn^zWELX$40)5iuAulCEE!#tuQTHWXeWkk zW_H5ni#hxJ>9$pHo@8+zRIwarZ`V<(i1~n+iHo*)_8OVO&cu455{fuTB0tMYp>w^n zt67JNi6ZNxK~=?FpcHk4I-Qt-Jir<1=t_$NNz@Oqi?Z}BnUBUXi6IzrA~@Bgc-XGE zxU+0gOpxyGP_gQhG!7`;Q}KQXTu^RJ7XC3SnKYv8jFA8-Ig-iY83RmZB^gz(hIdaK za<{)|L-ti17!pyPT2r=596p)I-`@=Z1T|^YX0$@$RbYQ1Gz3lJkk#0Waz>awg zRi=yZ49Rs`z^E@%krw?0Os<4B&JfimjRIN%T&SYFs;@R;OCz^#tRC9R!%e%&CSqE} zdTk+L%b1FA?-N6Dz)}@#zEIsdvg!JlUs@85aQ-?m6AQB}Z;?D7z9S3tQgh(MAW1P_ zICGZW4L7lNh`KNsVv8b|uE{edQX(9X5`|Do#HK|~knd$~(o2{{Nj<$NtI#6Fh5^N% zK}i%MF+dZ*wQKT&vbsl0K;oCuBIAKKfk0P;R8iBDQ%wx=)lX&;)lqqrbCULSWrINN zV1naCWKvT)DQWbpD|w!^?5==NMt!$1sD6xDg3!j`*EUoSb(EMRv4irpth>)-mt5_W zKodeM3FyaIKFdPD$!W`sOkrz3CT@oSGiiq`=IW(jt;}St(@#U8Bq(PK zM8Ic9*%OLQc!!Jj?&rL!ogL+77FZy+`WRB*wnen#!>1YB-CeQe%aeeag?Mae*6I{k z|HRDAu*D9`o`;FRPh%S`pBT;MM9@T3M|Y0Cu*M!sRj^(5VP!p(A#G#~PF>uI1uPo| zR2k|bzrWrLBamc~8};&vwv5bBiGUc*8aur7;3RDT)+Vwl0`--wt)2b)40IYwoFwB< zK6}LWNyxmjGO;11@WR^wGJIHJ(=lYmH5NSXJ-ll}P?#h#ZjGI2N_$K)_MI(G(2p|H zNQ=c4tEC)z;jcP=baKi!Y?i4|AdxLmfyM%c+g{~j6nGhYUqJv^MG*sW4Y68*RriE0 zr^I|CFT2S}R1wjJb>yD6Zxt!9x<^Z8oPv(=lbC=7!^IJ?Y#pkuqgFB_;vAoWyeRrO zmk_`K6TsJ@6$ql75=%S>Oo*zdxXA!fOOq++BiC~3_EVQRkOm zIlj_CA(WDFam)lxZOK6513AYk*g$2!)Y6VGKKsDl{^f^O#~bq}KllTp>4)sSo1a*j zibrJtM_wGlpT7dAvI_+p8J@I4cLT#e-kakN!O^%ISx`5^_K%_{+SaGq!tIG>zrI13 zAQU5w>7~l-C-#WFr*NTSFY4nd)7qviqJ+F-0k8B)Ly}9|>^J)0-x5;TBnCmlMMu-; z{#I!QQr*^MpQ@F+H(8;|>H|z_DV!4Wnd=qoF|i{hqGNr%mNrjN#~|0&1t35pwu2bu z9jv&5Q8qa{VvTx@WF%vK_IYu+yEg*Uuu$W5xKpLueTaWRgjCfPyF)D~BT0 zLWGE?pr$9Dy*L!I&Kj>0+X)S0%2WDClmU^;RFPF0SO*mBTp$oIT$aNcq8TeTs3iPx z;3^fs&>pe?JK(#kcv>ixsJQY7JB0L{(-%&8y#Vr|ys!+(p8}5n zC~ynxQU+D7?s4#pKL*$xpa9i(v7s)img?;kg&ov25e06G5jz3~po0uBeMO0ulbKHC^GbK=53wg-KCxfC{bTl@lGzE$icN6@uq2tOQdaheMO`Vg zj&u$}|#}RwEI0J|1u{J+rk5|}j87e%(hO*OB1b;B2qf}5v;3~6yl*%2k zWe^0-X3(NnQL35<-LbXLEr*-+%4=*Y3`-UpkbfLw$7lPtfVI2gtpxmVi z3Xjq`Szde*rJ;Rig9K(D@7UVPBX&GN@nR2zf)pE;wbTH~*5(e>k?v%#RMkm?r1;ZP zoh{vI;}8*8+LM3?1ea+?3N0((|Ig3|9VS&2YOSp|#aSZA>f;2joM%V9-E!0(@9=VB zf_Aj>V2^09>DE~rW?N1vfQs^pqFic=AyM`i6jbKb2J6FMXmmd8bHE@lhAs|3RYlEw zq{aSSdu9MhElMZZ*5d(uWJPh+U;0m{Dm{lkkI9VL;DkXtI{Q**dBG5k9MA%_*sWp> z1Ox{RRMJ5Vg?DPKd<8JsOPN>#t|pP5r7Bc}y8;(&6Nu>>7hPmY5`z7swoqs7o~~y^ zB*gWgxc&_JIk=&y@+Q(V6pEXbZz+`l^0H4xJ;xrn^BotZN zbLid_b)!7ErxjB^N^U~9{~>P=JzEokf*3D9MP=@ zxGpWFSXd~UsGJlb#4@ce^*7m215sIj$G1~6&64VIAf^EO#OK+{jzqi4tV`)`cdjr23y z9Ht}iK21)~^YRFV(+yc+_B>&9uvrJ5JU{H8g?KTApnZnu`c(yd;8LBPU9#8z=uhq1 zH{LL9B^e{CN;^Vp6Jc%HQ*9i2CwI|Krck~{ium<0Ma9r2TN)HtmR8Jmk%9Ab3?OVG z!!9ZR;Pne`AC@=nm8E6-{#)P1#kpmF`Qu;Od!OCJ&RIrgR)7fm8?c&T2H90RwS+JG zz(@@k^+xO{6QR7Z3PGAu^a~T4E!l}Z=%JiMsAnJ9xk0qqF(AKuX5N|ECQExhd;eW4 zAMV-Z>({()!|aXvWR+b73Dllo8`0w$6GW842=)$yrPzxw4ySS zF_m6ldR8Ov*YwSOUC=fE=nseFVr;gefbKzpdj)OeaL-5V9`>s@qUiqrL)x3bdzM`F zef9RG_kG{Hr+fApjb=0>&7zTz1Q@XyY{1}z5J((jY$uSw$0Q#+1_uWRI|-KK*cc-) z0?nCVEzrSgx~9 zMw1F5ESptGMVM|*jdbUU9X6|O(f!&%*>*I@nF4EfKT@80Wgm!S3$u#ulYM0ola0$0 z5CuJAaX0EM*8G<;xw?J(RyGncY=gTscu#hy>!INW*&MeB?y?NeCtVDI?CXwWwe1f+ zQC@%ME9L0nGiB%2%`kbqt?WBky4S8PH!i`x=*t6`@-?rm^2xbAh zWQWS-<1e8T?J941&v&73eX(4G_?!&clXd;xjqE$Z#HlbM?7(m62|7d{!~OQ@C% zTYcX>W%q5jm8(DZi{+CX!mtSQ#VtEFGrOF@De#$c*CtLXWVrWa8c#jxW?PO1KF<6{ z@q#_WeyWG=Z~_OBPO#nl_yzoDac02aimX<3%QcvEE<)X4GaqMx9C0CqxOt@PZ z?S;B#iAyugA#E$7H=`Y!A>78z84MZriJ76KHa@J2l!O`A)^#>72Xk1KP`!L1jf#2q zSH)wWt40t-{6#r|Q8Xi779&^=g*x~-R2y#Aayhv;9L^OqoF!-HDV=2&8Jx`ck)K?X z{cx2a%|os$c*5yW&n=yc2gL}tcY|9>s(B;n62AZdAOJ~3K~z&x?I7l7I-(mUkZ zS%4Tmw3gK{&X{_Y^9r!IUx=Ki71uIE3pv~b3kNJAly$ov0i@Y-@U;WsR@d2|HBmNW zQ+vLQY4p4pFV4%iPzhF?kWV!xc@dMuLF@~(LwJGBgS#QvDQsj{vgq;PgLjrMKDVDn zfXn0Vee#(J0M((=%HkcV(damNe9y^8+@GwRFdKmh;QL3M1F0c+e z4SEL+YfIVK%BD0*8k&Z4a>XxP7O}@wojO~u1e~Fml`D#G(lmq+E=Xe|C)3(|q+OjL zK`gFx$>sDkU3IjUM_f5KArS{8`sh@Vr`Cl`O+z( zxh7b-)}_^nb9^H`t}F}7^EFS1UxI{ECE~2mWhoa}#j2fE5kdI;PSL%0-1%f#0&r8f z;_-~tMf9je-IrN;Szg}z(06cB2kM?{SIUMpTf@0e9^}N01N$*(K^|lV?oQan5JWeK zv4E=>dJH1hTsgkKTswJ`2^q2iB|XOng|vz5h|RrHnFB!kY@qruwWOM^?Sa z_7<-RWV>s~jdFkq7AaPAvjV~d>Dgz#gnT#{pr~n*LF)&O@t_9KRdNSMuSVByQJeBL% zSQ3jvqp~JH>NShONEjoI7;g z^IqgyC_BaiKw#AI*^6_qxiV;DSZ403}d)pLBCz#DcC zt5i#tZ2?hCgpd=b&}AJx_$;3LSiutI%Qi7WFyZOn!IAG9%at>G;lS6+6}apfCOB7- zVFy-jEDt}nrkpsqj~V}1S-`~Xk@vil!!1^WYvgsfie3s=P(LSIqo~EE={O@CA=J-` z)dY3y2e#!nU3OB}g$Oduf`j5FF=8R!WS^9a z62yuO>hdl!X1A)Q5WiepTLjW8zao0cz1`K&h5s`XM#K;oUF;lCZw)<}fa18k#V|n?^c}{6L3jv{)VFIJle#`xDCC-wlp&TV7#vANz^+33V zE(9#4=OP|>RJ$Xdz}BPG72v@s4eTUof|aFfOx84T9%OpKvxzO}2hX52xXz&$BRINP zvkFbaa5-}5Fy06;v4jXbxpA=#2N!gLr2WL97e88#A4GPsp=-=@-A#!6soH|+>FbJ#ePsIdCKP_d^uFOWD=@aWtqen4Qz%3G-}ZJg zfW94?PaG{ro_~hMJr8$-SWaTt!FwMQvDK)#hB)Lv!;R$(oxNIicWj3u>lcS|@MUR%>Nq(xTt|N}DSi6Zy z-)rUcD__I#rN1oQzMFFi2Fke?zfqn$cd`tz>vqGY<#fOawo+r~aG3K8Sk@h80;Zg) zQFSj`i*eL)x?;a==Pp!Ta2pmoJX&7j$oaR_Y0ZYUcq!zdIV_jXoj=UZ36P8N%M7E3 zlid&^#F*h3;s_ChD3m2_PU36L31N??i!a&N@}40dqH zQM%Uf9h(nE5sg|9viMGC@dBoFOdg{pkXW@75EegWmCcSsepHJ9L_K85MG)(lW`QT^ zwe*ZA$k|Lc1#mNP#6j!>Hg4Ed4!``3@<)I0JII!}iIhX#c6+(wE%#$vu#wd!b_}56 zachh=uO3w%{U3zagGx!KX*35M23uF2GjTw!ayNpg&UsPXJseFW%Wy>Mlx!CzzMRzE zq8=PP?p9}a6u>=3P;p&5afF_Ar5w|d#ENxnX1vGh+xewD)yXgtwO+Y#Cp(1;S%Q zsotd_4rROysd6408&#S*M;2YuD1N(n{oXHSr5UH**-V1p2@orRGkbc0epYkCSNEbEb|N886%R;2XRhn_TKFj2 z&aySzCepj$G@R+&YtN!mqiV2D>(v2RAP-BU`YH0vT&C))^((T$pC3#5LfwLuetj=b?Mx_!HSFtBZCQLWdYt9MbiNb=HN8XUc=Oagbc!DjMA*9x2dO zAj;2%I)}v!-*OmfL&613nPk{R5RO|sR4*Ze$}Ov!2jWLZ8X_fu-uqaQAT5YQ24-dn z4BT0iaRsl~J|PMSmJuKZ(jhb^Vu}cq*&!GR)D99&g)}PL3k69@{HQ~?E*&HjL^_Sk zP#$9^=~6oZ+;s)ayv^L7*_e@kn>-A!p9rrH{xyb0G18(;M_pr(>-6Kuh$vb3u`df{ z>O%Ce7tfzA|L$M>U*#0~#m#r!hT}1~3X_XLj5rP*c&&W)GoL9x@WVgCs6hjnk|A3u zM9v|{bkdZQpnXT+)HuZ520d^y-;JyLN!?d^#JXEI+&w!TA>D-nIu3bQsUGChDG<5< z2WiJ&dNyLpYG(T95do%jlPGcrAi%-xXew~-hHQKm2Wqoe1i726ADdM@VD}(9&kjJO zh$}tLVyUybRYwzjCiEjN^de_gLtuwW>H)%rus!IaGjGI^$I+Kxj0$TI8;ZT0oA8;Z zo+JI@a@Tzil;yaickde6;f;}#8CR?+EAH6CLIk>ChYcr3wy1SPFI^p((G9il#4y%_ zDEu7X|8#6qK+z46IZSKuWO^rLa!TNGrUsn#E|-&I*#Y3T${Qh8hjO^Ea+H&~EKWfD z;J!}8%&Vms#T`2g->67vQ?AQr;i<7IY$0YjGsN6AOJ{V1z*-F|<(bZ8nS{AvNqRLe z0Ot=kI%&8yF$}7q{;f}m#5Wk8I|Q(3f=DQayd@p_8hd1>=`D*92M!%QT+U%4=(5=v z&N*7WlvSm*c!kEd>Y>Aj%i)8E=}jK1iBD4$;1a7R=?Tyo@w!*Ped` zKVetP+v)gQx9_53V-Jc9xejq_*KHh*jNQYc!NasAlM;tN_bR!F0tRdx8J95FfZY%x zyEkjg+HT6TS>}{LDq&=GDkBwfLr`!p*XofIUG^2ZS^A_+A|T6ICD3duAs$37VaX_n zz&CypnvKH$+{H&k0|=IXQb^_6+|AB10zX6zC++UpL{@NVKPG~zGe!jESmMbT=3kX? zEiAE{PnOY?lXhXWQa3uzaH{M`O9FoR!1?mN zOcFhwT}c)KaKDTI($&VunUJmPeYW(mZ!- z5hc<93_9oP#y{$X^6HEG*|)?Q1n4UJSt(Mv>=6CxORtnYD+kN&&0ARkTfjlVUFE{b zQ*hVytfry%y53#Ba$^e?UE^h=XWB!!;}|~ovXG$*q$9|=4YF z;gF6aH0)$usE=6W=y5pHw39%9lSz#+L0reG*vTWu@CJ^~7|~#c*>E?b#p$ER%PUv^ zu=GCqM47nlZcGvxZP+C_PPv};-Hn5d9LEFURTU4VIV`7C@ZhUATM+Qopz>cF#Gw2#PoOT=sZ5MHX%jk$Qe6;Mxf9eWm$E%jIHi5PO zDxP<3#AEfUzVhC;Zoxbdhh`TsdU+Z9)b-e=qF)fE*6-^-S>LUj#i6IVE-0*7mB;h3m} z%L(MdeP>y)ShcCF;yB9-On{y`y|`?~bZ>BQaaqp7!dABFEMchLd-6&-#Avas=SI1K zK?*KsqCIfywPJ`{%NHYF^fOVqhDX94WXV1h<U~Xb-c~ULNr%8(u*{-o#h5zqzyvK> zOE2+KExr^Nyo6a%i97f)Uhh(5D^VlIn_&WSc<(-x=7-8K!`~7b(T3CQd|MW4F=$ay9n1LdLHSCpL#+1_&E%jGPMb8^YfvJGA460G^BqKaXD33st~ zDo@EhefO@tsQaVhy<}L#z%P)MHBcGDBcJQ*ZjxJr%%_3&b#%F&gSv=CiC(z&GyC>Y z&#|(V3Djmf(Pk{QjvnXO&DEO|e)bfnMsrHa61Jk;K%_ZCUB=i(J+o$@Jmta3s#CFqT(*yt$doT2l$RY&!mcDQyR`Gaz-x>i+h`(AjaTswOj*f3s)s1K+qpb>M- zI><(f@EWE0Rd85)klE zG~)?r?{ILyR~Jjo=4sJCoXSW(U84hN!c zs?F3uRP`D0tq1?RSa?tjr1y{o_`HU5UuDc|42REs^?4R1`f=32HWwU6sOMw}AGkT( z;u7kjl}pM>T=zV(YfFaZDF8pos@8-Yh4uDLXbm>Z9xI2w^c<72i{)+adKCOpae78( zg95E=DDnZ%UL#tx2XM=_MB+q1>nmsIs~NrzA2^Bj0T-G>9Mn62CITX{JST(wz&(!1 z+j+KXudZA^kEOqA9{eRUY4c>60Tu&h z7iFOzf~J`vK!^R)SXu3a>$`>69lmF;?k$TMIi5ZAVtH&EvKzkh<>EFkwa))MI&@2b zUTR7*dE$Gxodjf5-X$&xkY&`mawON2pjpb5tA>->;^x84RVQR{H7_->Ikj93WJr)% zA|;I+HQbDQ+6gFG*{b3k1#6r#eV!lcGs_}R$x))}Qq7`qb+)@`y=8sOMI9@abf~r} zOu{BNRkr2P`h+gHn-}p}Pefy4Cu1TG*uBS*ucqlCFMa8&IFabaI%y9a5#tMF(SBqM zCt%Zv1%+cUUwq+A*|vS8d>jHCA$L_M>oI~E>D$0A)#>t|zVwN5|E|sDvAcJaKR&R( z?BBbZy-5T*+dn}n(xA>l(N$z64k?s_&b<96li!UcBSqDs5Q zc9I+HVbc6?4E^U~>}98rXBJ~KdxNdw`;Q-CJM|D#tBdRb`*0cB@$Ry5^Lpkm*f*dm zvZ)7=d)KXA2~mLq8gGJ;ViF%-hunROflUAFPnRy1W%bN_^};C}8n0!$&hglzUc% zAa1#wE#zp!KZpHrnU+xbY@?>5%XN6=g?J9Vav>U84GA4%7I{COSs+$@3&??C?}=X% zlDEVQ2CC>mUosxnEuW7UdBG4yWEYb;5#09AG=PmI6`;% zr(b!keClgQ;Y3VI@LYZ2$eFV7ZR_GHT|#v!PhotRm6#snwc1upKA5#?gwewa7ZCD~ zwiLOQ%yXrOJz=Bl1sY_RgWGq;*-0?Uu7gQ55~p!GteR@~S`4XK#kvaT9Yq`(D5qJa zG$)xSa8ri)La5d}$yFhh^T$ z(-Fs#2Px3eQJ%!cvzNnpWN-y}C5+s7;|rJE zUW{ifDZQ7`p&=avxl9 z^&$>&VMI zvzuABOlbtuz$+sVHsviw)?9)GlteM18x;^cfX=puRhIMUL1!7Zj~u(igzGp5xpB@F z9c1nD)pYO)CUeNN_WoH}y0?A*SkEM_=XgVBwi z*L_|6)M3lk9p#l{XHwtHiV=093$=kHIJjCREJ>JmH_fH>9EU&(+*+-GLvN*Jup|16 z#EwavE{N5NC=pyGHb&m4CUT%Q^yAhmvRU;zp4Y41HwF%gI&4OV|C)! z@7ixvkGuHgYi^>=Raxig9-o$qV7Yl;v6CkWa7NsRzQF zMxJt}uX6VSOO$esF*wlWtH`troew_vR&<1)$N2eN8Jb{k6~y_ekNyXYj5(YPxv-bn zw%$@^X~>g@E;G~?4#_|~c=Zq}t>tC?#&r>?vaSw5dh8QuXV#vY;-S7-jS*yIRx39F z_nTm1rvh6iXLS~i=75Qy2F%M4S0EpV2?7URuRe%cxNlszlHCT&?|7}O-@2`A=Vg`9_|!SF?uKsLy}8`JXGb~w4NhiZ$G}p2AZXj`zOThDzM$%w zyaP^vDks~lNt>n#=V8L(snz)hRl)7jrj(Q6Q$`d8KQWLYXWXGmV%OBOI;bp(Q?yKA zqI!au6*siPhgfSknUHldMwcFL%mhtJi@Qp2onaVx()gLEDOSie5gh9!h0Y~iao4HcjI?xlHG<>jeT6p$}uJ`*HF#eea|Bh5f<@sIC_L0 zR{F3BSh@gb5Ey&(?&J_)mTq0I5I_z~E#Vtfl zHpDTPJ*?iTy6M#$9(C!Zlj~`4)w=aK8D^CZ#~%xpqXI*HHp4{K38ajp3;W#3%c^i( z@Sw4@0pL^q*a*sM2JpYCa^y5NmhW^(%BgA8Wr{n~k}+bK6X6(sNPOVZt8y{fssAe; z>x;lxmhE9&Wkgz=I?)iMgJ3ebp##XVP0yz)q?z*@FY(}2VX_oknlz@Bn>ODi@Qe&u za<^X+ULhSe#!gBdYWLA}EalgM1yaW2A|YAKVK0p!K~2lk>N z>4BTAU|k;gAx6DAkD_9_O8WDhYCSc|25ZzyF2nY*uSr)qOIg)=;rYGgkG}X+*#?Ju z=M(S1jLzjg-S(u5TOZ(MxznLcc?NknJrqPrfVv*SS`a_3Y(j)sj`W{Krgk{zyeTvT zYu0Wk>)4augN?u>TzSco8{ivnfIHZJv*xyP=+G;i75mAu`r*gR!u4C=*4N8&WVeNr zc-_9t1d-PMt6Wf5_2_s|R)k29F6F*ZZ&1gfuT>N-qEn!J39 zrCw}WvD)fqGC9f2&1KnMbk;71dW8EW&cGT(=Q_Lu_1ZfgLo_%|g;%h=4?!>@(2h+* z(g4)o#-&gK;cjkCVG+g2NOYRuskXkWLIiWg7QmqzLd#K-%0MBMnqP)^BhyL6ZJD$u|*$T<2*^=%`}bf*}0hgYt^$3LD`ICf_h&VUIb52P;Aj??f54j(JWS>Bt) zS;qaWlI`4ed-nUg7B5H4u2r~^2a07l2lkwUBo_hHX#h(92jOpdbQOl&qvhn`Go1E< zsUORps!|3KbQiKYPlDXXiYEX7AOJ~3K~zO_jduWJK%Bqq8+iY?j$C--3M*_(Y>u2b zSa#rq0-MGxe9R*Ij-Q4zb8P(R*n;xaYnTmw<0vQATq#?TN2eJ2SMI!ndS5RiXLN#$ zy#mH4*Qmb}yAinMIA(ztIe7R6;?R;k_mvss=pj0FKg-M?`|KZ=b)4I}X$Oba-E|N4 zyq9q90bcQk6-#_}-P)mROWKg|B37%Sb5zws$AbgV*2F<9sa!@bX_^{8LpB|jWjVs+ zz>ZK%j6?Cn_3ro#26MU8>I5o86bh@oF)t+%9zsT5#=9d&g4eV)v;3{_ z``FY$0#DYw=b@%aRz~5fpQ*24$%>(ska##O;tiWtXP^z_#l%*QWe{RW#}~ebOUQAi z7NOgMct_#5Gc0#5W#vW35n5mMA?ID^_)52&^y0m`i(z;Xr%U%T?2IGBj^f3o2Ljl6 z=T01_A@3sJUdEvL;fL=*NxwRdhPST9Zz^FPfTopKJL|8+31I12%36E_$+7$bO0BjO zO@@#a-}NouT%P&Lv*nWK7a%VWBEL>E8eB$uu^h$wuC1J6xb|fE>Z_=c*y1vPqQ9`! z{MlEY#ARTnU7vaonS29##aI|QbdpVyYzjPe8a3A# zTg{nlAy~Y4jMKb9-%72pKrr3`=n#k(=P$GUWlFi}69X>smm$Iy5n? zAJ)srUWft^t2#-20Gv8?G8X<1Jp4Ykyc{XB$6iAoWfvlohgJB`->`8DXSU)k`q(S5 zsb6dZ`!$f2iaR%SKq#DydHDu7E5Z|BSiT@N8| z4nAIvUP05r-u{`sr^+2WZ!gO+KDiy$RXhd`xkDGd?Ie4suB<|(xOd{F^Jy|2_B}{nUaJ@0i8Z~rT z^RB9bnzEr-<0PJ9gOfRanp4(E9NbmTUSlL(@0lYn0CYD8UTlZk^pyQr$`3<9SuA7- zU9xZ+oOZY@WdotZ?ylXtQB^%s#;D`~2as`08(W*N;;94=Biw+- zbcew>vRohEdg1Oa*V^!Xhyc14Qf}{N`A?roJ#eq7X^D-c)5UCOq33?~rEjq7_H?;- z&pl-;!}K`YtzSKaNU&~GS&74nKIFfR>sFPi4Qq1R_5fVe233Vd&M+Vli`=b~V&PlK zByyUSxoJB7r32~dN1YvE(%QV+ zka9SLVfmom2a|?48aq2VLRu%848TOrqTzzbpB7MwrvA0@ulGNDGonbN6Omd{z_6>7%?DFHkt_KD@F!od68=~ONg2qIyvk^4HF_}hTYSTCIJG> zM1nXr%3MQ95N4Wec!ZFQK$t-cEr}m-LH(&68`!*Jh{Bj()m(5UVIqCfDU(J+;LvV} zgbu;b$s#Av@v@3Wo!nR$r@+dKq-(lJlP?|kwfb}_7ta4Pf&a_7RO>(~d64*;AP?A&uVgu&{RrftYM z8cn-w>CrfooGE|t+>0E1hOa5B129*R&yM3Xw`cR)%8n<#j~xbV+C!F`;z-0{xKj_N zVY={9CKfTy^kI!~V!|PDjaeok2A4D)?xH)aEyaR@Wz&!lgX%Wz8PspeaeA3txyayF z@^B!Av1vNiVRf3l>;YmZT-1G}+__~@*}ipKR-9ID*o;v&CWr?(mi^Qb79pm~dUlic zu%16I91xjG_-Tkk`&-p#+TZHh$b&Q#J9NwFNrfWW&I-i&O|Xos4X@j7RMz`%5Z?qZ zJoj{b);@msvO?dWm&rj%O&uk$wlQly5|sH_XX7y}JN$>~$l-amS4RvW&~4d>AYNL~ zWoJN!a|ysuIkkEE16IGu-38z8eshUd7waq#X(wCfVTc*D^^Dqvz-a%K(32?%-*}}I zI=Dp=G3hc#OZhd-I9}~NPf2Ket+wdUu`i&W#v-5INd)In3^xWi+NTmST#n_#uYKuh z&N!VYPdxS{?$1}S!xSqhcBhWw{NXy=k^3+=d+Kus*iy^%Fqf}OX&we+uDQ+n7) zcnEn_7n-U~JQ{L23UiO^$u0npRW|_kqGsY$zky}tJcp}c4^(&yV&II9g!!hLQGr%Ij zN{DhxxhY_$UGy3rS)9glp}=9nmAPp+YOgMi;QAqws+muH@<)R8!3Om|FL{US@X8Av zGnP~0ln`Z4^rRX7(T2D$4C*&#O`HrMG>IidZEg}Nj76aN9(qMZHj}*Ih15%*QnL^$ zh@*V)jVPcMRacjb4K40d%Dg{;koQ1L-t8yqL{Ml{kO>Yq^)nwj(HbJI_2Qdc9^<2E zl#-r5#K$kN#{>0o3f@kv|2Jf$xc$Dz%C>vGHcD|HJa|TOTUBcI|?QK{N!o zfa5KX?t7`c@ZyoO?w*|}+82~-mwHk8+*AI_cfOwq2eK>(=~LFDQR6q1UTm00Zwj;? zO5A5PiKwCT-^Fy6%jjyo(ENmJDI1D&CwmgFz`+aXuvUwF8Nz0j*v_E1 zH$8)iBbtm$Cy!!tfTt8p3Kye}(hDJyPq~EXavd(Z5QY7YUAxhPvUJLDIss8Uhv&qt z*I#GO&g28`Im}5d&d#&{OXLY82-bO8FC&8loYl1^+^r~fFo!}p?*PupE@Pc`4eyC7 zaJ*5uu(|jX8}%-y%*4lc@YC)jbuWJiT<)#5K=l)_C8g9Lhg5#GqZ%G=3nw&!geul# zlX7Rcmas>jRk+9fW|!uDY*}|>VBKXPp(;KI7iH1rnnhZa*UenjIR3oa2=y(mfv@@Q za~KUV9l3aIx1u*GxXF<0WGr&ThQUc@P0zL@cVjNXpqf2Gm;jD5WcT&46W|@|alrOh z%Ev$Rwekml_|dX^_s(+X9lOeEtm{`S+EtD*TkdAPeG#0opKTP~3{_7d18%=EQY>Qx&#FoMMhk<1D(NURkUuW4lB zIpn*tG2{HQ`M+pHD_amdB#gc?87p|VXy z4Fv=iRnIIFBJEAJP@mDL+o4IqY}8iHvO}=I-4tr`hwIwusA%2#!q6|!`9=(ZkpuIt zn3AO8xFH_nc~z}O<)TeUZW49&dfA3exrT|eAk6O;<9jV7>0-01NW+LR%kB$TRlOiL zCnQ4<%_v8hv(IYsT-k&QYq4_RqS^BI|Jt3n7rI{l?Qea#?0fkYwi9nGd)Ur#9{uG) zX5wS$I)^tfdB7m$D(-*&ldj?)>uyELaETmf>j%>xFRcCV zfN(vE$Sox^nGsQahUjfOcGD-w+gUMXDQkL^{m#4Yh6AqQG{;Ms&3ml;Vpi*HTt$#M z-Jhy7%L16dY89D8!-*3K2>m;mT@o~ zfo4D$9npLpzVo9__6kO)x<#6@kTa?3vX z!8WZ|o7QmiLYsr8BfAgmr~ub%xi;cBTx|p{G%(Id)~vsGcdd*U>tUSU{@`~$T84F4%n^|W+ehZN9ZY*)yr&q zieYWW2@?dWibu{g!iw1}hf!F1n9Q%0*e|$$gYbxU%=h5_F}hz_t1!S*3K{uQS?Ay;gSs9dYD(Sd{OE#%xWI z`jV2=)KgkXNAtnr{Rl4P!s1fVAe`D^*t9SLCvCbdvg3*ICY34QaMjtp!RDOYDX>PX zw@UIBA7b#6AO;t{co`rb99kSL=o!4m$7TWLw2uS-~eEBry`1`5Aj!1zRTcWkIu9SYRA}ulAWfhFC|l~R^cBmfs#Aqz3fZ7qYcvdh4D;F^h6C1ki8@Woa&orfZG2_SV81`3ZFj1t2Y zEk~lWOmeP2o`pjdT7V^({F0?nav8@oq)i@lFksbcOz{U+;%tzmN;tr7SiWLqAzJ?2)6Bo~xWt$e4^;rC$I>5}3YY3}+l};f%h)?e3IavD-9*rvOhW4Bw zq#q8cpDKH`%cn!En`_iPLBkHQk6&4{X9?m6b_s)ch3+2)SZW~=OHj_dB`6OIo?=Ga z#qzIy20X@7LuNTuToBQiHk~5H0+v%%jZKMokfZ+9-L@h^b3gNU%ZtS1R*yL0;H#ZL znAI?dV(M_xHxr?+2RzOf5YmHWykhA z*&1^OOSD7e&149;yBO6xK@aEiyf2+=JR3BP=wt&Jdl+S$rITM&cG|RN=yo05xR9*0 zZ6e#-2Dc35R_h|e0FQo(7$u>mQy5?F&d=@PbVd)23m+wZv<@LK^D!~M}TslkUU#h+WH75oj9Dk0z-xX9;&r~D)xo=g-0F#`IlZRhjBB$VFe~{yq_On_31EXgsky*qu{?hbF{3acY21@ z+ursNv+!kbIo#>6eS|8}fNt?-y&NvS5MqR$V=(Q>D%u@rATz<1?-|r+uKl~!I%a{= z7L6{a>Z9Q$-mDtoE?(k{Q(P)Bg*c)hFERI`ev#YSK%*>y>iNZE>Mhi^^qZoHD066Y z@)DJecA}(LHyXzhAWivH5Io9J->M?jlMm~V>55tvN3_kIP&A>@?T|DPNUeo+qh+i0jOyRp|~MWwG=yhOBc#niDMesRJ&E& z=g$u4z>J*j9jua-NnC~MZO}=UL>LYwK$In($ToB%hqX}3v4dwx*ArBGQjL!h8P_^lm0HA=^qIz%QFP%1LvbLA zdJk(851Q{WQHfJuh+k-OaBsM;M25Q{5tt#`PDuHRG9h5FW*y-Im0?ky59Y}Ry?kP; zdOa{s0y3K|d^3%N#>Hecogfxiq|Yb9jB5um6XqWjTnW$j{7me3ZYfA+LS2=c?f8!5 zW|Bg|3C2ZTT^pz?G?Bcn?}IB-pg()MKQl9#lM-I50}2Y^e}#xZGX())z`*7rp_J$6 zAicTE${Qde=;ynXPMPUt#W)Avhf5aXTnlUZ668Hc*)-knt}wfP2;_}@(56dq*86ex8MC@Pl_yMxlNf?#IO`W zoEDUMd8ceM_Lm4M!fkjsgXvRQ6Uqge47eG6ZaLG>rXjSGck>+CseTWVO)E!k8$U!v zUt(@BFVbZ0p4@Wp)YxbcS-nHW*=cCwE z;reY_%B*0@7?oueAH2wmgzdBV={57(GyGhywqZK3nj{rzh?9cMs0BQ%e=aoz*4_~) z95#txIYU!)n{j%iWh$IIE9FBvKvktwWHdktgIo{$f(&2UX+i{%i^6rB;5civ77o86 zr716nsmM0eUyBACxpIo8oFuft$w?mvb{;s6ihhw?b9DAxpXy%;qoy~x93c&oXE`E6 zcTx~wSS}xY=a;li27$GGuK3QI?PNz1N40gEGOQOc`fCX`c(p`l>up}fvrMn1+!p9W zG0Zq#2F!~OjA_GEZhp8?&C|5pa_7740uJIzh`KAI=Ce__Z0DNHP~#g4thOJpXC+P$ zQl1~{ueVc|&V#sUD_Fq}A`pUeNh$n7ki-l1%dS&kjpAP$IRx#ql~2JuWr!zG{5C+; zQWC2Zj{=(S#+!quzWHuLSgr+|R(a2IBxb`XK;#pYoc+`yJ48RPA&G8|^|E2SYDleL zg}bKr8>A{ylerZU4hx!}k!71lo15|KGY?$Gmyk_s0~r^X+6MA9T$ArySNb&5xA z=^)A4wC2gPbkK@(iEllPV@@(d>miZ*UO%aKNQArxVa;n|80sYeCRXql5X0;}ZKU>I zKZQ7m5rU>tMsF)(9XsjFilq4#ogxvFw{jX+vTgJB?oSw~jPk1pX$gXim^u-~iaOJ! z+$3!(YvqGr3lQ1dyppZ4B@~1CN4z;08~7Vy@-5kVr~D>^lxu;t+=gJ%SyBM;Xi$k$ zm@T)xk}n~0qkJ)KJAx6OG)%PoW;D~M9z>%}DvqtQ>6@$5E=``+HN&P~CT5M^0M}$JY<_JjS>-K(wz0ee zocCM;O57~%2?J%AF8TUL!tvczC@N`Xjh?jrpbLyTJ+*e_{tkQ5uyAe1;QK^TGO zIRZ9QVKScv*4*278fzZR6_?F7;|W^@ntOAJqcoE7tV{Dt{S7k>7msyF<)Ot9!KO_o zNxd4}C4p&7-_%u{SwHS6Blk99d-q$t=A)nuOFCZaNMKy^Z!d|lt)K0~tBfNveR1Zm zy~GR=)C2_QMi%y_9VOWI*-u>N-jvsbB;ZZ{grI`0TG@FO4MFm54)cErLD7k@7I z`LTT_Ug};Ed~@YYWw<}$x#(DiMdMS{MRr1Dh}Gx5nKi1}CXTk+R? zYh+P7ab)?LB7cpS5l8rgdkNN&)p8qxZR#P5te1c!a>{K(d1+$Kh44hiTJ=P&;&+N{ zkRXnN2ar(7m#@j1KPcS2DiQnD$|QEe=l+N!^?ndWR!OS*rh^#1gcG^!XzvS*0e~-- zVcyEHJ}WLXy&dJc#FpVD>6%_lEX%5S3Xeb2`klPytAYY9`Gpv)tmSeyKN~)mcYo#~ z2eC=4Q;qA4H~v&@3_^oXiL&iP=I0k1kbE=rhnQ_HCn4gSM$VmbQ)NX0I#~xUqUI9E zUQPaVgqqen!8T5ysIVHdeXsFMXGq&Y^4dnpm)f~VUn@hHoZfPqdU)4nmdjFVycRCg z`E1=97$DX9=-o%E;F2$smUVK zv}xykOP*Fzg5@5}8_zf<^v+6E2$e^|tXjTER3R+i{MD;d^&ro%`dy-^9jp!G-r;n$ zG1D+|gqB#+KoC_jWf*Sqs`2auaydIu(~)cn>yV%I5`KR+yo6$d8$^9W#Fb#Jljb!G&;{riG8!JSUUHvkMV9|K~ayK`F?4{a(3pQ(nWo=3%YIYdNgRa+#L8r9Re? zEBL8(pDUy06tN=WB?L;E>OlqqkI*ZJt&UJS>4H#uo*Czl1^7UQ-0F89`6mz(f{o$i zh)k_Vi-6$Ed{PPHR-g>3sxH6z)?CTY0OE#_YMK~WME~X|E6Ua8Nt85R;Lrd>VzHsU zghXy5!P;PaYZ}>lMD}xZ2uG{&v#Miy;)P44BisaJg*j>L_5Os(AL+!EWwr1NUy_@j z55ggQ4u@REr>x+W*Q~7@9z+s9I1`@wEG{C3q*3Lt#x+0dL*5PS^@AB%9#_h-M1H}A zkHRDo0lWFsKR)D|>zoeL22lp_Z2Ls_Z^F%!&v~w}Bp{K5-4DQ#vaGk|nWy2#_o_Lj zF0n_b9JQ{xQLb_=QHb3{tf`uWw}w@KLdJdyfwqNNphRl{J|_bA_A;#fi5#E3ZYg6P zF*h~mR`Z%eobOEoRP68$9BHum<(t13@j;RXBXuS&%>KOWaKh7uwRv*~7T+Y;a4Mq{ zQi;BeFM*2m2C;$5R5pf$)BGf`&U0Ia-)h_tVBm0qN8UbLpU&N~fuq5jnvM#b9gR=q zlXfv$V7L`O4NOUtNP(^8#I+nV;tB!P$D98)-)q4s*6-$AujVOm+rBMc{o1~J2UkW# zWtB-+r!9@EZyyc-03ZNKL_t)?m24WEHX}%kcw7pGQIXopi6k>?E)q!~0kN$>eW~>U z`QqA7$zNoKqcuIJiCc3sh5-p|3b^&X32tvmVjN(ikZ|$#TkrS$lA@?FC7PMpd%cxcM&Bx~^^;)&Z>%xkP{a8Y+z`kA{Jbh`zL0`^gDX3b4u4MMw_a~o=& z612mvoYTn{*ve(04g85F5tz5-v;=DozPD+3YZ^LPgp&sNnk5}iYop2@xRbP++clqC z9FZiGGbbP^OU^HR4YzHhcMvLoz}hsrb*ewYasgi}Is~TXbBM{Zns#nt6T*}AlIRTN z4|z)}^LbrFtdupc{=m`dVbh_7KXo82iPI|PX z=jn|X1ge4Z3}$r_k;k`px$~9n9Vs~}tgIzcSTf`d8`oJamJ^Kfo`ctDRXUE9QMROD z;$Vwc;UuDiVmD{4rqSI%Hi{SKmSdWRE#S!?caQPM6hu>Ih?vxx9BQlg zo^M>>&O0W1sVm!TaEVR1AW!77tDqa(+B5)Wk=QE&4LAyi6`58-Zpg)Rw`PI(L|{W0 z0n~|&f*831FY2;(!bM%X*zwCA7vcoT&Aq`r>1J?4?_2V=IQU6@w^JVnV0XECB4=ARER#ey= zrs}oy$!{uyZ1=Xu+16K{{zAF_jc2kkuLmzE3vR!wEPeaqxFBM;0zL}5@TID&po@R< zsWN`_U>Vr3sVsZt+1-QTD#Er;1&zgWGnL74Lc%CY(3Qg-?CFOyNv!c+c*#?BTc3nIJAUkBy%`Q!ah} zixAI9S#;k$Wzkz6Z2UcmG?5KbZ47L3yL6fK+H2)9Ti3@=o(ypgZr)UuzT?p{uxTp< zfK4jI(Zxo{@gs-J#m|41baqY~(pG}2&{_I7Y$?m0{N^x%G;}S7IyG`CzO^Qf9s+M) zE~7^d;vMNq+%*ks*jSdo>pi6pPdOJq`^Uh-=0vu9FMs!YOP|Ep5{W?P0&vTw9v46R z=`wcm7+|ogdF7h2{C(dR20tr7O4O8X$F)tbe(kH}+KVrgsY@In&F&A|W69edE`uA^ zvlWT+yfwJuJ_s}qKCcc4+ za{7b6QqF($cgqAPt4!+!&)ou7@jLsL`^(DreQTL!pVsLQeYlJrIYRpHfw&%lXh0?% zZUW~Qr#|?hGQlY}8-MhN%c4gfhP%>mqD=e%mqVf)^z85dK{@jqzh1^UX2=r{ZS7uM zE}j3_$IFKQ`frt`k3Yc{=|B|K!u;wOMx%kQdNV#ktl=!6&{%`xAevUTXNmt}-vKL=0NB{XRma&8T*~-J-GRm4B!EwnQ zca}wW{okCgOUGgVT`1Acn^B6k1UB7!%KYp=!7ISldo2e5>sD-Ow_Zf{*+!5`lOdIq zfN#B;DA6Ahe{lPbviPm{a~%4TGI1X7dz>@SMML)E57liWRzucb5fsy`@}#{;Or=!TAvpHZM;{BP zzbbb*dZZlv7r#XLt3o__8gazxh1&_&z^*+wJ6=oPG!sNOjC**?5#Q8=XMg;`IrF*S z|6n=x&;RF$89kg&w&byQmBB6B%EYPTc>KW?JPzjAZjn(*eDr{`G`1Ppp6z9xUJ&8P zf!A<`d;u>yFa|o`G$O!_eK=m;u_whw&S#W6_j|uhNBMmW_Sxld|3hWLz4v7_9A{_q z@Q$4!^y%wY%87sTufo;)*%`bHeD`nMRBpWdVi{b&2@XrAQA}t%4K=KLu>ijhracALICZ+^TXW5;R4_%;rLq!7^R2C{DGW9rX$$FNx0;Hf;fiYluwqeKl2N0vte7!h2!Pm&;N9} z{`42i)vtW9T>kPG%JOgiZk*WZw#GvIS*Vu<%i-Ys%_l!*CnODb^-G^G=RWe=AzB-B z(@*>)NPd9$M25>uvxS;H(e>SGiJ*uN)Yl0LNUe6hHS=0*odDF$dX$B1HpN+AXMX2* z=}_aPf79l&c@Ympizg{NKoh@fS@{zLjr+$j9EXbSWFY(MEAFp`t zUn#49;D;*L)fQ}!2alKHMf9rSDr0npWfiqrx z?it`_OV5_AW!pdcClKMrw96E2<0xjHBL@!_hkhB<@^AUJvf=Oix9M1lQ5kIl6H%S$ zh9v+(AORZNMI@tJ)xkwonI*u$=Eug+IZ7wYD>d;>E2DR?^4EbnBZZ){li- zDxWTV;C||Io<^E1tKR?ZWdH*9y79`($b~0}*RH0SC%HKZH zWbaGhnDf8xz7M(b_H>RL`}gAAn~j5rDK#THsko&bB)Un&qFi)>UPd1Gzy(K)oQht~ z`ll{kLQbax5yw%rS1xZG`rXbG`k4olL>G=LZHW_^kdyo4zih($_0D& zq>jl_zX*#sO?&%}a((a1$fK9b#ObqTaM#_*L4r{Xm^^>BOdf$a>_jB&VW{lG^P=Aq zhlZZz7^ji_uLi%pE2z&SPY@U9A~abyj^3)XHq~q3B1FLFTte$bC!?_|%#I+`7vdS) zzpsoP#&HLe!=arV{d8U?L%o@ZjvhIT*mQrH1@7)8IJUdI=NEWQ;|ksxX0NIkKhD3b3}xL^S2LnqhbHA^KlUwONqSUO z5@ZOQI+AV<0eph9baM#X2(sFhr=Q}RoCH-A1l-5*>q%$v5JI~=E1Gn~J9+Uu=^37g z+q=Z=)s7`ZmWwc%>*GK-(@W6POt2JPEL(!H?oR&v*@>pETq$dR_{Yk+|MG7a+>eu& z(Mby-PvL>vj?=pYVs?b0!$n;MUX2$0WN;M37{bqIuNo)sZ4jM$}S^2H+j~LX8 zCSt>n{&+e3&wf4=+G}6u#L5?+FAMK`E0fH>!)cE@QKd2I3i&kfnSWpnp!{jyrK>6u z1eb{?_PkWyrsc_m__Fg>J(B=AIP9xVFl;G*X3X7kn*yclDps_G`pwG>ybNz{^C``| z%#%jQk8k#J)lZh1;U(#aH@_V^`TCLcb|mw4f@E3d7x;X&41S$}<^y5se*58Qa`vP* zDFil&`yt;$+(~PCFY7PXeQ&}#^^st?c$bhZ&xwknk!ZcK_e&hLa_@DmV9HF#@SwD%4M(;t)}M{|Mi)H~|0Zp-1=aEt9C>`qph=1fjFAP@_gkur z2~2GApm*rCgYqQS!7bZEAQR|XZ@l^v+@6N8x8r$Zg!icn=RiEp(6;Vk?tx&=w_ZF8 zI?tKR2RHm3|PTRN;Mq;09JLq4*gRQ zp3hE7Cr+OzBf^d-1I0(iRqib4s{7V$DjR?NXVIPBOZ@Q=xFU@CX2nn3&`B1)?LB3~ z-}<|>pWKms#~kiw$B`-0T?3=kBQDkFb_kQ$xmrS%aAkHNm#3R3i!{hp5*S~C*EUhj zqUIw&`B4!<%waAUnz$uiVQ^@Uw-R2E!InPyE_xxzW#V=2!@pX_4u1neTEb-Ic~m^V zfglcN<0QdlkH3#xNrOAiq3yeY7oYy;&mb#(G@NaQbGt5m>SHvZt2jffVBG}}AcIC- z`p$2q$f_nf_dCB?&i(GMA;%&EGYM4Alp{pd)2Sm55Q&Z9u;)D!!?qr&byG{~9WF+^ zh49XhF{Z_gCS3XqMBXfF9Ga(Kmu~i{( z)mb-Qc`>VrvrLFb_P>ykF&%=*WiO7JXV6Ss{py!9v2q?TbNwuNyj(jr*@T(ERAT=j z2Egsy&r*T8r8Q|QL4@TF&R{-voy1FEhFLNZpC)e7p<%Fu0hqD)4;bL2IMb*ijF_qgzZ z$I^&$g=MT-o&V@>f$-Omhkg~A>IH~tf<=Vq!flqkv#j}{A1%j!`F~}GezBbX)qfeH9az7)Od>n><4%6tKl~-s zP0YF>6xBu3oDXsM=l?{{{K{NEG!tMs`7B$-|G)5m>CD&6dCr&V2Yc zG6`0hKg;s8BipH8{Qx7!*UBPJL09uJdg!&RqKUtykH5Qguh>+sf9-SS&_DVamTWnZ zl96o&(P8AZy%{M7Hg08g@Ns$p!|R`WfgAqUOGI$B_=4%lUz@9b49Q_optoV4RnorM z)tPLGbny>ShIqN_d&(s`mF1e`<#IxjhUi79{XZ}S4VFuv`~%kRUt!kxOk}D4H5`83zr}++(%pdL>b(% zlX}#p@Kn)1;?UdtsvBq<$~arvF)mlv?A2FjgRoLQ8p}}MrDJnx6Zw2ot~FERAv&ZX zl`R;CM-J>Q6UPsyQp0z$1k11<3n7~tc_zwm%5>H_y8o5vQ+qj(VtCKJ=qB$V4unJl zgjfMuZlPQ@dFC*Rcnn`~IILJOuxTp_?fbKAYlC*`0YSv-iD6E|4~Mjgb0@O?>~K1? zb$b~`-ke6}z46lXG~!6dimsY-&?S*Xu zz3h#bUWw9NJ?#ME!NNQ40&a|Pw4|aTmEY7bjO^PNqIFGu&_g*~hHY}C5>3aa4H{Wa zmSNqxhLD9B^5xpfm7a0X!$fp&^Y${d`wnE%ehB3o#6kQ}o6@!)_Zdc=LF(O${`dMz zFHj~Y$ZXjXqaH2N(&h}cs;IO*u)_`QzMbXr)htMyVZHw#V#SG!Xnn}^L$~cg9d%pU z)s;5$A3wq>){#SWlJhCQfBgoC_3k=xl#x)&PBlB!RB7rag7rm04Z)ho3oOiDgIGhH zzBj~bjuC2ohrg1pwLLUh=ZYbMLcNnRIRpZ~oC29O`r0M}U{91fk#o*ex?S6-NzzQfCp!JBKN!?ui3T za7h;(B1c05X=m%ookz7!zB(&k;`q-d)&{|rZbcxZti87dv_PfN;H(liKPzsBXo)5An1q@RVIq;p zU)4VnjTqvx?c#aP$z2*e!S#=Tl1?wtP3HA(cqi|9@jH*Cv7D&eXfU{9h>_faT=PU^ zQQ;oW7a#&W@hq=FWZH)`LO~;S=`S_)us)TLQVrp;p2;Ub^V!7&<5>f8Aflpxj3IKo zjXeKKTH<%a1CyF3<(Q4tFfH*|%&h1G2f;HT5^U90n2vV=v;O`dgal>c1`O(G(X!NU zwUb0G7krUk*aNTa)Z}M9%!IO2uRQbWckq~zGvyf|2*B9N;|Y1QKS`VqV#%wmLsX(6 zDEbSivx>J|hSDerm2+B8Dg|Pzk%5hChQ?4Mphc3E23QM|Xl(>Px0T_smSiAT^Et#L zd<3Ur&F92v{}7gjX5*h_G_1B(sMd{`O(t!c-0kr~B+)e-8AJvF`A#DvPM9<&P$yoS zK}!I>TQ7eC2@YIc3E^92gTD}+z}GlFwV;JVfCt0GM+i&YCE(5A&W9$4_SwW-lw(e{ z1Mu9*$B*Qd?>^7J82Lg#j9k>C3lHVNqxEf=O$gR+5NP~NWz^&|_086q;GIURKy&wb z-X)l6cL|)1fw&iV4DLMf+|WZhcLzg6Xs$P4Bk_f|3SDiyo9>kxTMQRDh?CH!y_gDA zUv?gU8RZMz>pYC zP+)Cg@8lXV1uv=pTo`Je5=-6HYF>5(2(|){OvRls=U=sx8#)gUNi#o|&kg6gHG^An zeAA@K>J14Ks(6+kL}s&B?kFsBUDEj7q;maS*3Iu?#b?^7$-35{jpthp;UUl2N$d#O zgtx8I5^7>~l2rT|RFU!Xrgs)_VVOG{VH)#X6;oqPGC~0E&?p9EwH(}Z6dNY z>GT5a)uc}~i6$WiUK_Ae?;2i33OH<=26#GLIt^}ya$vKq`S{#kH3}gOI5j-6+bGT5 zI5kqTF<}c=6Qed}4S!<}ZwyH?MGG$FKx1SlZSuD56u%@$M@jK#qd?T*sKzxNe_B}5 zX33>~B=+1Tfe|-ign7UDRqJ3GO+IfPtrO~jDSys2_c4taEZ4B?aD|{dcQdjP@t<0W zmSVkm6&c#(5c8RAI!i8ZZhgb zYq&+{eJ)wcWo{~a?(<*p^d=da;?D?v)667DJDD9{VhjV|*-4{UI3ll2M@_sY|2hy8 zx5FU(z_0Ue1}!k+m$JyOmSvvpH{-Qe!`zzJ`At%T8m356c{RBh<;^l8EK_kKQE=y~ z$@1DsW`%7eg>hzzGa|*I$5{TUTqx0NpdbD}U2}Q1RcnCoL(}`~CNzgs8>P9di!ioG zGrk~mwH8(FM5Kn^{5O+1Mv5u}Cl&eIjV-qo1sV{NvGBFO4x(<#w92!7GoDvXfN_xk z03ZNKL_t)2&fhku4R1R|`yTF>mpA#-mUmMoHJ&)(bI>K6!3Xh_H8b+q*2=eXS=(@q z`-OCPZyCZ(ASHLpn=4ZSPe?|)7N$ge!=Db#&m~Ws78d|;K##xkTk;KwYk*Oy(7c?S zOyw6y8{nvLSicw`zFv&0iiaU5!aeyAf6kigO^Op~LEM{sn;#@d{&F?M;xk3hZJFjB z`O8y4<|11Usk4)q=ef&CVao*)+Cf_T;Jy7BqXHrtIvmrmwhj)dJh!P6zwIpT1SB8l z!y}GrDIGAI4Ce9)bbrY|ZQk=!^W1XS5IkgHyBQ^IdBmE0Yx248O?LAGY!+o6dtL*Ot)(6g1XO*iJy#Bk zo>5sg(VB`7HT7y6v;#1a)Q3hVYJ&NfY1<#)1jqEP>MI?@u$o425(mXNhj3AzFf_xQ zAKLgvH?CLG)^9%6U;EL!sIrm#*oL<;39~F4#9vznb+we$k;&vp1L#=&&d!R=+>@c1 z-g3QJIAIM0w?zKSyuMk6)~Ui=Ml zE=V+dfVeY!&ClETowRm{dS!S{hay6Bwcvz!nS2JU1af$o$paZ?J#GP{5yaWhbSX>iSZ}Z#4a^}8Pu6I-9TV9Mi7r%aN-Yvfw zDeHvSvMH+>fx=;l+Lm`ySpjk$Txk^Z6_1ABOkQtJu*R*h+?t)?t+?Uy&AE~6O|Jky z52ygby9kqDQTk4P=3keY<1batVf+C&N4N)ZIE`8k$I*c#;oBfY#!1}1mwuLF`&rlT zTT-SEeyvQs@;RQdNA34Jce#*4Ki~7?$n=)Drw)D{8w7}3Ze^bA0u`RZc8{6!N6W-V zf3Zw_@?V#UFa8z{09WIf_MFn^<~$CMGfnX8sK7SxIG@m5F^(uWWltR}c_n}Ib@d3i zUH0snZCHdw`fUQL8*}nhN7h z1RD|xq@C}^tk?WHwIRe6mz|3;Z;CemrG56ElfpWw{_F>GBg+QV`O(b8g5j)}PO`iR z;dDU&98Np^EJhD_2E3jInR?-q00@`D&UE$$o6AP8mfnZI zm!(7qt*6Y|6S>O`1?wE zuYU|k7`X0zFE$AfImb>an)JTwN6X|N{?jtEdMh>n5QplN^}EXSOP^(b(c02` z|2LQEQwPfQzAr(PY~I_j6C)7fv5B#pG_&WACA{ahhp59dWfns7c=+gtN3WEgd)~=L z!=GnlTZC#>B2IpX9;G4biTBe`sJIh7MJ3a=avy9*gx&} zHc=C=)9#&zHo}|SZ_Q&~6gzXM#yJK&ESxp93SK49a94`4q|SR_O-LtASJY^Hlmi6$-o!$S{(!B;VI0#p6-2KR3E!`XUlGo|c$FkCre1!79Y*P9`_He1kn(`OmR8$)l3@)y2H3Fgt}GoLb?bMOU1 zt%GhuTnSYx09+7srIjiIw&FpGZHY)im*8vQE%)}-@@v_1PxV`6i!EH-8=y zjAdj37~8?dE>e`sq<{dG;FnBPC3y&`BoBTJl{X-jRE8=@Tz= zbUzihO|4yd^L_37!)@(~H?*CH?iB7P+lI0@OA(ylj}4!FLfKodv;D+B)RnAxUE6s5 zk0?9d(+>QoUb(yS`nG-BXLYMS+7A5KFSd^{Buzt~D|G{N$ z{RiHx_cssg?WNb;&^E5RUa!|ZB7J&?^yRN?yAR%_fz%)hzkR1(D%V%j3HGM1qiV*0w+Xn_BO&TcAKB*!lH9{RM6^VS7QhTyNvZNd!v%eNjJX z?LI2Lv)lTW`UQ~B|4)6^pf~CD^$A6g*Ok0mdE(Fipsio~Lv2gCS^I6g@!htS?_8}b z^B(-sUr>ObqeS_a&a`XDJM#MW!tei@184JxKBy(YO>OJr|5-tNZ(G0S`(>g&*w7#C z-O;xgb|2FuVge#n@SSJ%RzL5#>TR!GeOtjllqNU<4UDzv`XyKTPO`4$#>TP7oT=9@ zf4wH|h4PE+uq*{Fm7d|Ks}#(>mR^mY11GTioJ9oRIMyR2feO9{EX{a89?7D<6ogP< z6y?0El2I#AE8_+U^g0|+V}><$IuU0jY=ZV$Ceu)jNR_o6y&@Q&QWOM5ft;TU$fq6( zI+fasq)H#H(vQB*`=X4rZ4L~c~9FAJ-@2Q6Zr1q_v?18Y^b1ue(i$8nh2U$ zTC?ult9McV@}up*557;C^E%tQriZ!R`@bPOw4T#j_;I)aY=g%TLgp z&7_YYC2`otP9Ok)8{v8dOA<36=Fxdx2#Sig5d%F;z9z!7A~sCfv;wLpDj{rK(3cIJ zF2z`3$u0UZ0#Q-2Jqa{<%*%veu|uF^bRDAKdFod6Kc%KnE**vd;p1n{xkXTdz6UEH z)~q-lCHncv3O2t(Dd+ov1jW?##?r2~bz-29sZ0$VJIX-hv5%@JckdE>?PCgh{VLs! zKdS(|+FM*}2Nc`{Ht)2uBcLrNf}UCJx4yUmupP#2kB|L$@|Iq2ckvx9$tPQGf8&d7 zTkFuK-z_+(<-ppR+6mB8ydB227lFif6uNX**yXi4t!bG|?yn}J1B3RXJbs&%@89o`)$}!Mw#n8M1m0qygSGy`p$c&S=Dya;vA3(h zArJ^+(fNH`2Zm_9^iW@v@%(Et+5y--q^zk2L7w*4G)er+cD#5@wnrE5fojnFi5zao zPkS89vWUpJA zf;|h-R`pO&O1u%C0vRYfnf9PW9UwUT(lo)wt(*NvId$#qm+SWTWj(-r&epfZp5vG%&4(Y*8d#pQ8J?dLL`=q;MPWC}6(^`PU290Hc@C;bMOZDxYJ;~Zd><0_R!1B)!LPMQrDV|J<$_i z)>o>(qV?i?{%PC#%x|~jpZP7{MtAPJO&=2I7YDEX0R@n@!FZCE9Vfo}ajj!7ZX2)q z0dF5|>%)Pyi>_!VKJ}klyZA~y{r_Wai)mLtU#Z!=TEE$(z+ye=HS|?)R0dICedlZ5 z6J67if^DenZ+$^Dw`rN6hbH$+ztQ@|Kk(Y~z~9o&g_ap)_!HmwwC0z7BJAq#^Iqz% z`pqqW<5h2J$3OYox;t!XXW{3Rp^r+BCar>-4-3{Wy+T`BtkWOV9`P-$UG$2!_38g1 z-LGy3e*BlD`&K1j{Y8?iwC1j{t6?BesC$qX^*sai*8woNI!GQp_@oCrYz#7mLq7>h zu&`0%Z!-8WkW$wvBL-X;d;+lb|=@W2p@e9>d; z249GKvTc3wciV;@tWMng$J%IrzXtM~dO|*;2a5X@U3}Mvk6pPfYEM;xv;Fl?w*&A0 z=dE3?46F|fHmDtGntzoU%Zp4V-g z4fxw{QbyD+!1*uto-IEHvGa}3x2;e8w|4NI|G>9-w$aeP{k6|X*Pm-!>|MhDwso}I zzo0F$_qP)_{jM`KO9Fp;K+A%iyZ@>k_>rG&o7cX@A9x%W&CbJjtKZs|drIFH)kmlP z)f0WF(bwd1%I+igwio{IZ~0+u<5h3g!=ZjH`sRuP)pxw!gPpUlW| z;X3fCS{S3<4xm}APZSmSY1@8*>L42BhtklA+Cka6Wdq!&WM73%E@-_D(`@21cx~gX zU-~L#x{KNl8BR~w+qZm1dzi{#y7l?Dn6z=fas9jf2^Il=;BWtv)-HI3J{`JC!nCgC zJ388GqOcvrQ~jt;`1Mm8ffTU0`eoO(c1$uay|Qh- z_D1avT&7=lIovkirXMYP`~m&gi~&?s-lw``brkhjDS(bG}rA(QG_6UVqQW;*du zfe(FI#(Keq>-tRgfT${Xs~iaV)evT{U#a7Fs?OGizdm>0dH7B_{_Sn&o|_d+ua?~! zY-Nvied}}kYoE~e)~ymNUcOPOJ=WT~*tq^(?ZmhLO1J;tR0jG;+j!lND+&(jldwP1 zvf#J01@s2pPW4cx0cTr@z-w2&xoy1Vr=8i3fArV%o1&7fUohPI(jR&Pt!VH z`qCfkq4F^g=Gui?r|Zsi{3HLdZ9jCEs`|7~c^*mp`h>A)7Q=qr_nMF#zcC z&RlEuYcvkUB;?@bQof}jq9L{o>HAP-TEc3)TcV%uiL9Wb5}6&lE(VE zm*`{58@&|RIPX#oiq@$YU*+wgwM(y65Q^`@%avs=(|Y%t$~fK>?HEz4wO4`(#b>r}Bb=$pD*-M#>^`6$XYixTx^@u)gdasuv zeyGth!9N(RebsfnU$Ca1j95Xe|P(OrM7s<98+Q{F1@LTG~ z%i4iAzC)S(;kKdm=H{DzTsIc&>nh0DJy^d$@{hbm`Zam=uE6>wmwWAw4uX$NzM-}E z`r&J}AN_6HwW)w-`;4Uv8GrNp-y?ZP9Qfg1Zs`nlTlBb`b){8A)R@VCs-GYC)ZC>-%;9~~z37GeHMXOK5>{WEK?}=W%fy!Pc zZsTd3{=vsysX%;!#t-t^9-hdRx%~zd`?mfXwrKf|J+hEPCglgpw6yT|?Xgj7Tzuhy z)?oV=qtz#`>-i~3eoFwk@)^G2_XrFlBeT??k9?ws|FF%!Pf%M|dO(9uM-F}TC1G@e zX9)M3LGn70%08vmq;%e6&8-{TrPqZvCG@%qO5~KF1HkkVt=Wp#B>S8YFsF-&5ipCF z4g9lg>?xauEFHnRkBS+X4%%uBoIf_jNdoDD=@yOxIns6S7p9Xd2)LStYd9(#P5NiQ z5n~0n44k1u!OepdeCx`Nd<+^zdO96^;unoKm^Bdb8wc1UU6jlkuG_@e?AA)spxAds zjtV^0kIpA17xCGtA`#9U?o;wYZ&GwKVPHa@E+tb9Z}umPgW0knQUHt2?(RV&IK0TA zfDeIcRA31oOeR@*8V0`b?hE!?o^0=OQG-rO;_YAR6|B_(6P@;H7W5Jk{!ASje=iSh z6Cwro#2VhZI;AFe6oDB;`t#`S7$6QhS)KDW5&mdaII@$;(g77j0Te4)Mxy*iKLf5o zP;fH?{R$rRWaJs2m}%1)zCzsfDga$CXD1!HY^$7&J>E-ZfCRK$BcZ~OxGwcMVB}C^ zIhWobcYp$OK`t~pe5E?Jsb?`92Nd9?zK(*ahi=lz6fEeR=x{*I zl8wz(7ono<^h*4$Cc+p5UGK=s}WD_*S|qi_0DZOK>s`&>h8`lEZb>=~~F6ncTZSS@1l2#XhXiOGu^ z6tyh6=;cV@p;o z9feezJ9^r6+QAx~K^THqAL=2)O9SRK0|u^?shXuaV9ct3>x5AugNGFK?3GvK?tq17 z$81+|j9IO7>|4RCaMV&?$==Ia+iuoqQ%ByhUc52rcx!*DMay-NF;qv2s9SkdJ|C7F8|YIukzbBtQmO0>Ug!0s}_=fe)gUCAcHYLyr@aZzcT% z^tue&O+N71@D(xy3LC*muWicuBzCB!(T)t!xydPcRm~F+N5Oq99E};*jB4M8 z(<`jSJ34L^SJ72)R~uS*_wt9|_Q!)63tfHjMNFP#$+;Nd9wamS%3iMYgMdxt`%Tys zKlZxw3^?OUJaEa29UB@7)Q(fdD)A?%w87&YATI-mZ8P~4h~>G0YnttJDHUr;5H~mN zDGKU`4s?a~yiVOZi5i&ZWj12fp*e{IxPx*ls_X8EFh}zE$K;ClL2ano>VZrQKWGik zq_b{3m;nh*+C$)FP7od%j+EuPnjZM-H~68@EK~=VoCTscd!=(kWhtz5L9fH;g3+z1 zJ_#CO@To8LYdka;LErgivL+d`F%}J&$OA>AtK}jISO#f#3NYEgmS&dITC-x0I|x65 zd-g#e1EgEGe$XOx>lHXb*7%tnP&DF1<+O`CJ9EVTte9mrCZT0R_c8!>-0A(;4Q+{q z3o~ei8~SC5)*q5B(fhz5e?SfT5I$KF%5ZphL`Qr0B+4p{7c0dbM-Dt$P&tY<*cKJV z-fK88bjP-bXht6DW4lBYObY#T{dSm;TJ-I)0Uqdrr*;)avMGypGP8K;P~%(IGQnac zv*7ea^(k1bfm0bZKj>fsOs`9P>(7xeqPieNZ7tNXJx; zNjPu{)`@pq5)i0tA?cyYj#%jp%lFf?(DAF#%3SK;nm#z_fh6VAJ}la#2XW3SJgSlI zL;juxdu9pWcEuVW^-c6Pz^8retCS!)^-$o&y2<4by+?{$_~Eq(<4I!GBCy3^p2=I2 z*JYi-=zz7qq;M3;$^%8!J?oSF~z91ziMq5rzHhtp)qyZA1IEGAaSM$ z20gJ~D@S*^OIfL-z+UiIL%3NX(@wa0h?uE^z6J`?0XbBm$`S!kIIq7FGY%Yh2c;_# zJeeU(al=?aWx_emJUTg;X$*X>0$acZ8H=-jp9~{Lb;+2ruReI;H^UIujdf$eR66m4 z1Yk$`Z$TMN8w$}3Yc?S8uH=WlQw6&nI?5T>tTXWlPT_Rkat2|h9R)3!lYdR`jWR&H zEC=*P7PE6n+5>e$#4R^vOyI0l$0h{yEF+kBrD2briCi^dPfj2_G&;%;s>I%83bNgk z5B7FLxS5W$Tee~&cdrm0pZ-ne0goLO!%{|YrwkClX}U~`_77O+NAbv4%COu^SWfx3 z$GX@qumndotx0Az&@iTI;Gdz?7b$^ahiwG!KC2CERk19|^aJdYfC(N&KXMU+P=MJr zZE*moUaA6YlV;?58)Q4#%+7#sZ9LC0I7rfw^4;;?V68ipSp&Y(o7Ug}J3|=i%MTm| zQBxHevV~iX?NSro-a{x$5B1aqR0HjSnBk#WQLsy5f;+R5TKo(7=unx&t5JH3Ch(?A z@=i~{I|CtPECcTdPR70*GjHk>ONpOYkVE0h1GEA>J47F9f(F&pRgq1V001BWNklIJ3K^@ zWj!NhRN3W+tXd`jOhk2NCLJKRFlJmhsFT6Q+gEhE1J&G9K-Q5n*L^F4U>NIz01dEL zxTYWA`&C63hY+%8c=4>P=)d6vXoXOq zdy0+XLxV6XY-f(pVW{bhjtst#8|HzXmylu@f*`XDRn@jCv+6`YPL*Yo_jJ30UW=z9 z`TlcDzC{8!Nx?P-*Ch0tTG~rJqM1%4E({BL(e+M>&8Wa+V};^MEa)MBpWa`ccm@mE9%GmKB+pEFWh2)(bXq2&P;A+(KHDfbltjzlgM_ zSgf~kgxaPhDhM?Tqw~Wo+{3*9R7cb?{YfenvMYzyu&fA>OWQ>RMW2vW7iM_e%F=oq zVc7#UuyGA^s@Ds1z(UYcSjoi?IyxHt90jN=utjkoj<6V5_ah=Ek;q7XUxxO`ev*3J z0fWGk_!I$apOazf2T8+ytiF^YaQx3@8n$)08Kh>>so-uSwkjoyU|dz8%zN}3{tJT$o$ zL{arHn6Bg{$%=~u);2>MWy-ke7uga!nQT2)@+fL-tviEYy)GX5FtZV!ylZs$q}Qpo z`?%m-s}8?fG&3#dg{KURz)(tgNmu?XyUOl5GfA9qd)DbuK&eB*-!_-jyS!jr#X zYSsiX#s&a%D+WTaJv0OYrpo&rJ?HHL`rr>bjhs%I`zAovD$rt&6#jYuCWtAlP0_n7 zjDHvgmu;NUB~ORZ7A3xS$6#8@q>V+>1Tt+nqHX#rftJxn6!jbw4T`G-R(3#b8&`PG z#5BgR(>(EeuNc5@2P_Tmog8JAO(X0y>JGZ%MNtMStkw%ohiw5!0Z~TjijPD?MzU!R z_)(^rh7-JnFYqduaLAVKiJBU;`_M1Nc@QV=LZ9rq3_u>1BKa_RNmTho&V7Vfr9C17 zsg874Hm_i^dBhME9TiI}NDUgtA{;KO%1P+KIbIS_&%l)6$&qw~fgaW^b||d221b?9 z$y1%-rc@q};2=9mrt}6r0>Y#wpZG(rMZ}40G^!m?v#R?Px_br-Z_oLW<@AYDkpMtJ zq`LhTz^UzQh@Vn6EUOHH*|a7|nvmV;tw1nDf$By2&Feg7L#A7J$$)7OW0!F9%EUK* zr6J8&8dPAo5N|L-UOmbO|NhnwvXB-kJ&>;(5*4PIi5Sqn2nL1FwXTX{- zcunV?L=98o{;?xf(1QI2REH8ho?_`OJu4sxq>e~=qNgXqb<~n zaH@8i)Xz9Z5xqs^6`MU!0^8j*o^VGo^DVep41Q< zMCD3hP@%0d)`9J3U+FHs@w()xc3qRUnsuG|YLr)X2$x6MOMk|Cwl&T*W=0oDO0qo1 z406R&zNYD{R(=APGQrt@CZgdoi_^4|BvZ7!ws) z**EtcKS@7p?R>bRoo1&r8^1zwgmm;Abjf$k^b;pKXw^Y8`K`YwOZOzzf(E{5*BLtT z&I~SD(BSWCbJgJt$dVv3|pQTb07W9-Z zD3BY$>PDQLL5#&Y1VqA9Ne@`IeE0zhe*&U9flClN5K$fmOxHmP*i``wi5)pCG0Fh5 zV@x@;8zz|Q4%%`QZ8PLaed%_MaO%iOS%q?6fmJ^ksu-?`R_pe@8&Hg=xFWZ!nhXpO z{_aQ#syabY^)zXwW`Q@ZWDk5Z9va|u*xyB$Fw;_J9N5ZI@jmP%w`zd|-)pLr904u5 z?nDp)U<|2O+eF#cC7AMxU!o|&N-zM`^Y-hgmXkbta&|&NR@XhcmV^!{>FUc6F%js#i!A$r zO$@|XmNaAA#)>#$_Uk@|T4d2P4xz)BYIL;|K4h0ps8{4F z66hLt7hBRTSh~>&`%-i!<%BI`0Tu_hd)JmeskUUrX6ndKvPB72IRMEZ5b(54U2$q5_EuBzh<6X;4Iu%x&16pkyjSu94U zvR8cN`*5ko#S=*MGg>zaI10|IMoGuwKL-f3OpZC?NdTU2nj%j3q z9i@X2svs)ZcXbVWEW)Oyy=i9`UEmI&B49eVJETA02^|jT93dk6WHgZSi5zd0goneHXvd zqbkT33;!tPzNnWeCNj1LXi^%35&^s1){;!GWkoZ)0+%=+I#qx!uQmdrMd`ePmkdwS zvNP$+Ni>%cV0)ln@Fc5QMqCDr?;gHu6k*7~>2_>^eO)EL`h%w#sL;=_l`TaPq5|*b z1A}dP0%9n$ej;iew1#;U5X%@=_`r4W|u;CMOFfl z1)r7FvVh4k20H}NR%Ah>ESN#!SVxw%a8*HA4+JCC4(p~45{#^2SsrLxi{DxGt&t2X zWyxlFK9#{K-<@6%Rp3rcLrt`uyjKQ%Rk2<53RKKCc~#QkMLxTV1~Q*q8O8)5b=2TN zONNyXYCQ?4^NYUssq}Nr%mP}zj&(J%tBiGE;wknbSzeI?S$|EER0NZ3?KTWdpoH@` z2f|@$qt`}(R6!sxt{GhJC(9rN)B$akn2@w8R0A{6N~Uo(Sn~agkl?crS88hSNoQt? zf^k~Hij`Zw42ce6AVst|0ce5XbwdEID5L|dVfn)oo)skUaX>?w2&2L!tEjL|3lhVD znYM@l5NxL^*o5s#TgI2I7LN0$GEKtC?r=5+N|cUR5=7fU5XR{o&Yc3b>=kWR;SJ6h zsPJ?6+|sR}?6t}~8R0rUCCkShagrVU!8?5;)s7P%{2Yq{+I|tvV+m;?XCP@8PF0t{dqT>ORi;`&bS?Z+M3R`NXbel))ZJILNha6?9q2vw0GpSXI3}Lt zm_*aUeL@!FqHD?Ta^b6EF1M2yjDPfBb~&NhUOI|Q_*HizO#20ott)pp92;3Pywh(< z#>0#j1jS{_uqX&{;Y>!5byV^(h!|7NUO@mr^oY-85IR&R<{2<~PIi%e>t4#I?-Yhf zb@#U$Xmw}`$YP=q6C;DphT@@b& znN>C+V^)w`0P0CxpuE-?TYcdyGvXm8F}#RCAV_e6Ibi1*6}rf()aJz&h~0g#NKURy z*Mj$c0|qXdX4S~$Wx!~V9+rybX$X}1aLrdklX@dWV$8o5iehkj216~K%)Wm1WcO2 zkJG~y{)1OE&Q?rx)v;wyAWq%%z?-ZB79En4eV8ccVz55Ofe8f?Yy`vDaV z0eJtHVD*uoauxr0g%n$C4}uo9@%0f@m(DR&Nh5iR;w2W*nZ)|*S&Kz{*n!eJSJ z9R_YJ3~#OR^^oN?TsSA~Z|y+(45{0`%4L5bA-VxTR)<4ss`ozk!-` zG63o$+BrwSl`7dGyTY>3rm-#_^)s>o{UpHQklZ2*0fJQp1PAQ_h7YUhN(m5IFTodM zi#{IOVtHY`(jQ_(=ZXa8*syFUiB?k$WCIXgd?AwH(cv%5iKw!^`veooEexHqxwKmz z6HzvZA^@sI16Qh`!v=MIUg|J;=)JQ*}=d}f| z)WwbiR>frSZ7(|;olYFHgu}f8_7aq3Ul3_$(a-E}0IWL#jloZ++9wQ7mSy(@_IlNK z64iazf<9z>JzVljhT0W26CSflc-aO6FveyoF&04^cEVY_te3@={pN?DsmFmFbc078 zTm%+)+Qv{(QQcqr0YRPqur&!zHc;f|XXcq-v z+sBgOaVUJrsrRS$?*mz0s|ECM5}oyo9}(g$PkN0v(+wv&Dd zN7l_ith-bAt9X$Wd=a2!f5P#tZGs*;4jxo%qKE(33>BUBLx~taV4HNVQHHNlvRS8*ql507E%z!JH0* z%td-*C<$43aEb~K9V%{hCj-GRF@SN$V6p|w{f&-8I28JbB=~aehu__Aa7pS1V1hyb zK2jBZe3C}LG$MU0gzFuExemrM3f70&)N~-zHqZu#EkiL_KJXPkWD+5x8m2aV%f3rO z`T=C=AMFy{6D}>1VB2q%_)CFmdWFRwKDwwexl(HRzdZFq>b#}n53IB4ztqleMU7)aIWLv&v#RebwPnl6I2 z2F7}*M|w+_6))+-QU=A=$!8Z4?#*{01Q@3&O zgbp}d%<4Lg$Xmywe;p!JS6-h=RO&Bs@oq}O1GOm1;gCGqUXAgj` z*3pFvFe@lSHU|zx?pO-9gpKX07p<<unI^ag+NA<6#g;{&90sp^15UU=98!C>GX{-ym~OHSX|M-&B> z=7EnOL%xAvqky+ZvMt{OAzmUTL@yeW67plxl%0w%^V1G4TbJ=-N!Cd}N9pXdcSRPZx)80^ zXZp0apxWJFKY!i&G1@lM=2+qa9&34a zO^PpVM3GhN8cIVXX9j*Y0YVmfDqtgEibaBuMHweOa*@*~4?5FMM9xYHUh{aBh@Fm*UNYkvw{v9JV3{bYtO7NY zbn-6(wgZh$M+HyW)R!X?Bv?$9QE0GQxQ(iQLqo>HHo**5z0mZ_&k4zozK(-ex~x(f z-6URAu|4qOH{wNyx1G464?1MwCl&hZzVPrToW~TK(r1w9px_q;D}ofT{J{!4TDN<{ z5KO?T_*(!}Y?-bI%er)jKzgGZgX~!jG>rn)3oaGh?9d9~hOX{8S74ktRII?KXiq?q zh^AzjK6#4La;j0+i6$~DZQMaAJxRl*K(26mcMpWX$-G%6HyQ^q>$J#>Q=r4aRt%G@ zgh7iR<^SaMEtCPYd=i3CF7lbk!%YcXrwWWNwwam&G5*eL1|`8)zr5!lr4JZ|&q^m(=+LXffgQ@~j*z_-uK(@U3Rr#R zRx^qLjG4hw;28-zB%g}Svki7;jxN3P;6e#@Q0qz{>xE&UFhCfXlzk+`<(US}P|OsZ z6Ey6wCU}*JRvH4ZE@3Cbj1OZtV{E(H{C}P|TD+3xsh`;tymiXqhL-_xjobup!uJ?BiB@ezflvJAOBI|S=u;6+up_c9OyFG6iQaQ8z=gIMG>U+$N?9ANL<@&aqqEBq<`;2^sWu?dM_b*8OO5PQ}NSe(Gv4@~t&w>O4URCXOuXGyf>P`_b|_-jYHt zeqf7>pp`W1BI8y+fma4rbu6&kE_A@_Wq>LKELpX(f-@`+RyCjHbZ1zW1bXONKd5W0 zspybPRlNQ{CQwe%DKy8YI;NgFS$sujbn*nLL|{3MIh;P2-IYmK4RX*IPhG{Ms%gs8 zYI_M_L@C9gQ|V?36xoJ>;27u>Bz(T@;L?)G;%%G$ypsNUO|6f;%(CUsOP-fkWgl4| zUx_7UlREtH28p|w);Jqd*HJjwDAhL*WL=AgmbMNQpga(8sGz695R93Uq?RTrBN)sB zU&ss@X7D;y{&B#v?FnD#jE5;~K>p;v8aF6|HpJG?lIpE1MK{5^rU2{#ixZDa^g#!h z9qK?9E!$cs<;N{-07?PLuVjzXUQ50XI-u(#N27?EOpwldf?&R=>>`)n#EaY{f zq-O|V4m}|wg<(r{HjoOu;`VwgO@lw!x$8iI!!^+E3o^*K=?@gxPyEH2Em4!9kigP` zf8cfW{;Lj57#HIh54M65R(Qy&?y3O^n%6DSb|jB&r9KwqqeuN#m#}UOrdZPxfFqA3 z3y`#yOWz}-GI2u=AL&P*W6e5bYH?Sfj*>k#j-#-PHGn7ySTZRYmekA^6GZ{5KUgtY z$1P21JJ+!OaSLY`NEom(oIq6@=M+egSf{Acd4^s?ThZ4Y2@HBl1ca+aN5ca!$(d?K znw(%jjDyq$jZ~_m&jei21Bfd}()NK4Nzg>0uaw{mK@2DX3oQc&4&TydnH92;3?vG2 zI7T^OG}I!DPpI57EbJ=ol$55zRc80PNt3{r{t8sBWm9^3Dh?P-a$dJ$|uzSo(M_hUQ7eo++8OB^GF=_X%o=uG zO9C=-&!}j@;dF>AvN=?z*$etGU|E1612`w@z(gM-213OIQ5^!e$GFfTU3rVX$$`O9 zeB5e-JyHmb0syC<9LNDa^rxU{e#EvKLuT}QtoDO=h1yjTh-F6Pn6{%O0k=u%K)OZs z3XZ});Re6P6L;iv(-%_(g(c0LY)j)*{S^~@b`%OrDOU;^JZklg1uscV#%ZF9p2TyF zP3bsv$afAlIKr3VZ}B^LEl?yOFZe@mI?Vizn^Gym^W|&zKm^K~&aN;JJ`g<&w~KLfN?rxWUNh7Uk^?Kqj6w= zp5->pm}ts&QVgQy8=L-3)Du}^`AVM>!3R0d!G0n2(6VK_6KysO)P zY|9os8J2~!wzYP6=py?vD0C7Y3>$+bnC-!l;Gv_BFjL2u;j8$wLM*NDk7)Vtk0*KP zA}Nqz34Y|jQ!=SjYHch$qII$w3sMt(71$sw$Al28Ah%>2kf)I2hGdwPhDhCo5@Gou zuq$mcF8mR)!DmSmyhdd?WM9xv5P6ut=&N7Y7@kNGY6Iiop6>SoFaUHK<25WlDF7o+ zxB4?cemG#ykRUCG;zSv<`@BHnXGx&qhX@9REMiCok6Jw&${#cpT>Xv7OKC|*xyyfYO=o`TX@vt|jz z5~>Uvfr%rj6R^}d2+|se$gtD?EPta_GBOzH?i8SMaCO3Vgz=FTV%Q`&OB&k2=(9_F zMNT{f4RppplX9~?HG!K^XY8UREa7hFpibJ7tjMA5gB*4Rtt8ssw5epf(`XD|#D^}B zCLMU+#WG-lKt|o2zKqAYsymLkyJ{1Qju|KGPT zbqeeZSZC(Susn=0Ah9Hf$V@{$xG0tjoN*=BcIZU5vcm%}BDKp{$rCTlN(RVqF(B&! zfiYNnyDCY?MZ%`vYcfC}`luqAp$B-vlE-*Xv?;cKqKkDY{+decfIwJ2MW!+$&ju0z zcZjJaL1iuZ)X0#>oAbEHet<70OKgFOM##DYc&hwC000+=Nkl1RtixDqm9F{JYW#8u_Wk&;HSHAya$&xFIH#*OdkSZ3I>cuRM5tN!5a@0 z)fPFryOU@mnZcYo;kq1KV`CyH7|isYuVTT4oITFeyq*FEDOdEFP=J6NXrxR#2Bg1bMD#CkNRfXv(ML5w$$JK(HJ>2pF+vbcDBNKgI@Lp41St~$ zLi|cUf-U-tzSSl4!&3~>gP0H{Ir%moe)m`iQ9&x6X|%A4iC6^zY9nkIL-z~YAu~T@ z;j@H->3xgk6FR*Qg)uM45qj&20P_a}tWzljEMhqb$XEtU%L9Q-3491d0vJP>0KS!F z5V$iLv^F#z$dG~#cfj&Od%y!X)xnibKfAQNAd~k{#9>>f3w-Z1g8Y1qT6JV*p(8GO8IoCSqmL&=vB%whaM3+q|J& zRmV@+E=lE!>V;Hj>~cJ2Lej?&%mPzzK)ySvZvPR0V=yB#*uqX21mKV6secY)3lZ2w zc*hP>RM&q+AlZ_DeO~@J(*YZwWDU0?D1B6hrA>x~H#=Yjm5sqO6EO!K3i4!}ogUpV zLC(6!3eX{s!JudAf*pfA!R$p$ui({ zWk6)Lz!r|}8D#V;6q+ysfT|cAs0-CLKpn_3qt@J zp=*?kantYcz=V9=+8HTI_!Qod!1&}4SrYIl=usV;_0M|U4`f0kyS$u}4}c3at*=9d z$t*+MJDCXGk+Pdf9<(Myu>#f;R8^%u35J$+CQtS3r~0E;Zs%jbLPKFa%G$JooNGA< zdW_&2O2a!9u!8ZQPT2^Ii@@w-AuFTvIEMq4;6n=~0vY*|!;t|Grh+}VM2QT*)qCnm z7xDyfRyHC~kW{gUtFg~DM!~jD`X|SOK)r=~KvRxv3*X5HEC~!2Atsrc2dm1k@}c`F zxsnk9OZKAwk(uIcDL6xt#Z^@{Zk#0t?D(&rM4+t6pxnbaWsN~u0z69h?Q8cx79 z)`}tXS{`>*_>-s0fL$78hd&)dygwaHT1!9*zAzF3x1C|-Kv^z~Zrfh)`$3C9q$rNP zPR-dnD0M>iek|P3(eWw-DxKt7Mypy|JLu}vVN7l3(6W7TQXO|rl0kzqq=Vrq=L+ax zpBxZ@Kk|vDWWX0ugyhhTIAotrkit`?2W;6R*&g7`AiW=jM+r2L;V*12S~UfacL{0@ zi$4dv`;3f~!*y6L1ROD8$J)k5yZf$3+g0x>YO@h8?~-T zh*qmgApa?naXfgy%J z_{41r)}!tAZ$H|uz2c(wj<;UrSCn_RL(kf#>^-PMLA3LH{vl}WONj*Y#sS>{M7R6A zVg$Rr6v2n$(W{k=Be#D)KtoH;=ePos3^h^pgCjx zBu~d!5|CjrB7(WHEKHWtm9ShOTgFqP(N+sDiZKDBba>}LZ9twNqN!`26!39C&q2MG zBw}!26ujXq@zE#iO`PyCn1lB$<0U$|Z^#;L1Sm728LHH{ISYx!}z9>%aP*_IKZVeS1d1 z_$QycQ^UWZU=oc2@aWNJ+b2JLd%NRXkLWE>1)Z{M?8B0DcG|`n>+OjrpJ{j9eN-W% zpk3#X_3|k?*Ea~%u&tg!uw-2mWm>-qKyiNcQ`&lEvkj*|p2MMS{+mN-U` zVe82O%Ruu0z$|h=;RH;eh{u_k&M-U4u;3|0LlCD^eNFy8v#Je^>Nsv3Xa^_q>kuB8 z4|t&uUFh+oa=^+7IHUqqGM%Bi4e&9UK+`a8TGh<&B{owgUrF( z6R?aAg~^8P$bvp@!;xjtgKvAdz zyS6>`%=7Kx`=4wZ=bqUfeE3-Vjo-Ps9Xk7fXl~Z>=T0Pp(?&EW$C67W$(KKI%5;~ym-w@5Qsuw zXNf?OQC^SMl7OtHI#Es#IMPMqfo8A?*yK^2pS>X{VhO=uiN+S8|_wshrSMF~IB=3@!ozo8KLG3GFy|3MT+av9SCd516dWj~(R{M)v zA8T7$QoQ>IU(x>jmd9-A)kn^0pZwwj?akL-+}?S^m6~gsM(gy$-O!2t(r@}hCXISb zUK#KH2_>Jd?LPVuQNhfM)K~IEOgwOdcfkqyxociS4IYqVo)+5 zluM7NU0PuN$N~XDW|kaa4?1;%lfbh)=ztN}*c$eN3cc6@jKLC=y5*H#6Y3-!L4}bv zwBRqn6}eW&iByCC$V56uT-p^MpvX_MnRqeP_Gq{DbZK*S%b?C~vhB+uQBm z{--ar%P!XU?WFJ3SDxPTguWev~$ngXx|b390fD$;MZPtK|A)`R{PR79&P{T7r(Dvc<7LZLdIbq0gL$Z}012ksva^Tf!!I@+-uoRwL+R~0!Nl8gPwvP1_U{MZc) z8tUUA7PO9C=T)Psl~WuWJvx_=fx22J~s zWti@2exfI32(K-w>)&{!z5mCqX+RhKCM??2Y=zvJO{&jUwwhn9Q=*H`a&sNHn) zz3rFY_gV+u8M?KzuD$%?v)b#gzCanYwO1=Z51qZ&p@Z$t zdylnW`QUYeL9^4|`_{|b0mak#=bX_lJaVqgBhjgE_I1UX4bPKs_M5!mK*bMJ+4%6k z{J9T1W%$?MJIaZx~}}E zm^^6-;t1TJ1sn818`R|=WTX)IsfJ3qT{OyO&pvnDKkogU0`RdXpKnh-{X#paTl^~z zpVtm4+$xr+aGBkc*m9Pn#<2^$CO=Pe&InsES;@2 z>_z7tXy+?EF=fS7jlh2-LcisPVd(RC=8k+^&C0=&^nc~@K*D71Hq~H^) zc-V?~aqnz8@aRL_Wy&Mf-<0Si-rg&s;3G z-mFMQzDt?8D2d4(s<)RNp3vF}^aDB@w=6{Cbj6+c1Gw6!l)W`270ygqJ`E zES;^vS0}K~4g(KPw;Ts0F05G|fo`3`MV7<}85TMj&l)aEZH`-}2Y`;yGaeow zk{r_`k2W&dVw+@`-n8IfOrdixhW<2Zv7cg-v6lykm}Jw3o)CzRKH)I f8}6^z5i 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 Ef-rE`L;wH) literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/Touch_of_Class_cover_small.png.data b/documentation/20.05/eiffel/_images/Touch_of_Class_cover_small.png.data new file mode 100644 index 00000000..e87bab71 --- /dev/null +++ b/documentation/20.05/eiffel/_images/Touch_of_Class_cover_small.png.data @@ -0,0 +1,3 @@ +title=Touch of Class cover small +author=halw +path=content/touch-class-cover-small diff --git a/documentation/20.05/eiffel/_images/Tour_sec_5_class_diagram.png b/documentation/20.05/eiffel/_images/Tour_sec_5_class_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..e7364c8e3f90d2919091c38b2766161a67faf22d GIT binary patch literal 17366 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%0APDgr={L;4?VKNoaaJnxVrzgUDtE2w(3Xb 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/VoidSafeErrorList.png.data b/documentation/20.05/eiffel/_images/VoidSafeErrorList.png.data new file mode 100644 index 00000000..48731813 --- /dev/null +++ b/documentation/20.05/eiffel/_images/VoidSafeErrorList.png.data @@ -0,0 +1,3 @@ +title=VoidSafeErrorList +author=halw +path=content/voidsafeerrorlist diff --git a/documentation/20.05/eiffel/_images/VoidSafePrecompileOffer.png b/documentation/20.05/eiffel/_images/VoidSafePrecompileOffer.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c2739e45d8b4393e32286711f1a1ee078e4cba GIT binary patch literal 6908 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/VoidSafeVEVI1.png.data b/documentation/20.05/eiffel/_images/VoidSafeVEVI1.png.data new file mode 100644 index 00000000..cfa1e2c5 --- /dev/null +++ b/documentation/20.05/eiffel/_images/VoidSafeVEVI1.png.data @@ -0,0 +1,3 @@ +title=VoidSafeVEVI1 +author=halw +path=content/voidsafevevi1 diff --git a/documentation/20.05/eiffel/_images/VoidSafeVJAR1.png b/documentation/20.05/eiffel/_images/VoidSafeVJAR1.png new file mode 100644 index 0000000000000000000000000000000000000000..b757a42b9e07f6177a505e25c163fdff0514cca9 GIT binary patch literal 12896 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 n7_ApG!OS!Vr;Tl0#RD6vnzloXWOpl1my=Yg13- zG8ivyB9~KXqLWlYMoq3m5u%GVtn>cP?DM>TzW==6XJ*d#_dTD>_xqiB&NJtBxH)Qk zr~4fMK*QOI?Fqm)ESU5Er2;>(Qbh~^Dqx4Jmjgvnu%h@la853dYi?%qcumR*00;m$ z00aOOogxT8aDWg1q3AM>02~K60dR_j5C|Y}KoEeSARJH#pm0DDfPxuhBM=P{unIGT z4je%U1fgh2nBq8s69`Vx@~}+c2tgnO1+5?ip>TvE5DF?nXUM>z6I6$aG?gY35CN+& z!|5P!oT6KUk}xF*oS6=mAb1bZSUOOV z2+$;WMNtt7AR87$02KkqflBZu6oO|+gD40Bv@o5)0MG%F;1z|9D*K=dN;6tUsYshE zX%J2S*q{kO;ec>VI4m3)&JH&K_W-v6*8-OVR|FRY(f@zsYjg>r%AEZ!j%;vNRo@97 z)WV#6A^@1bkbci;ktNIkFxS$VZSNJ+Ig%s2IBdE=wddTtx-g>w_kqC`o!_8k9qp$N zF329OXxmlS^SXJxxmn?bIsc=%lllAZj0C_}oTBvaJ1XqM2Tp0kNw;xigM4X1;$n{l zlO2JmyEugCAv2d9c2+-f+j_i#`;wQx%)zks^^v4z?7by-R_c%>{xuczG1%VgT9H-o z{Ryi~Oxn$tMhpk<)$?YT@QXOX`P${@i|| zOk}OLSf*p`DXBH!Ds)SiCf}H^?V|fvIl?`m(2C*7AAUO>jBcKdi5I`=A(vM1zJ%RW zzZmhN+=k0r*C_B0zp7VCGD2&pPY0^jl}}BwpF57(i9g>YnLb|!IUkK;jkNYzg-kEX z-YUlO$R$3S{iNBc7W+#c&-9}Mx-ltX>UrEDQNTEK1ycj|L#v)oOYT~nH`jSYhWlvB`Kf&w-Dgt-9lr$f z*L)Z^@Tqs-crnt}J8OCIxJS*6`@MBG;~}@O^q@4;o-cdXIsFo-yXIr~K=CYlv8;S+ zQdGS8o)`NgDP8XRWv!h83n4RGPrn`mN+6$s>u=GBseloJ`h9hh3d4})LAwfg@Kk&x1o|7zl9iFg|6;l7XRl5_sru4@DRfanYrwXW%PB#Nc1@sakHhhwI%ltI={O2IV>QH)sW|2x!U{RF}HzY%llb;e_QXQx~&Faek_$*8^^r=yiA@MWJt-hMyPbRq(cU-IP6{{8bMo4V) zwaWKcD6X6LRZk?3bFlo>+pc#le5WV@t66=7+&N(Xe!~-!63?pXmU$!3rq*|pJUi0G z9^?6^g@#2*{}Q*FUHablg975@A@a{Hv)Z`jtI znw3UhUTtnYeD&t4YRQHom1(BANO72M&b(F;`x9IS$Ee5|GF3FWk+|FCO>(WUiTfv`uxPYt(Mh zeMXyM4`)xPs0%A|-zjwG&dSc5D)h6AI~LY;DR|JMTMv^))C&p?xhJtXJk>^qfigLR zRUKy<`*Ekd>)plO{F&BLRzF#aO1)WQ31ga7E$OUM#xzkXR5vN^Y8Vlwn4LHiwZg_^ zB+tiKqpAhf>TkKvpKpD+$9MPB&fKqFrSnII)OhkT@efDsYML`#HtJ=q|LLh4fz@8Y zj;FDtQx7@?*u_?c+BM;8(r;hQM5A+>O+Q~VBMvj-I^}8#(FJmQxAWk~cQg zyut5WM)sTYotbrR?^VU>Ua}4H7~y6kW?qBI)$jef$sKJu8BY^~#RsFM4oBkGQbAp+ z8arhhmJb=dy5`;6UL^G&BzLvt{P#JlW!L_+{ejJocf6Qy^IL2$I|w2pEbXZDTV#6D zhabKbH}&%$W0qB{x?XLuYsXY&bdoiz%=3fXBj8H&ijvWpeomD6BJRNO3DV4bk8D-h zyax=-QerAx`;y6-+$8Siyk)gD`#ul^HL!j>Al&rgLYsg&XkTSC%=uk?r)!x>68#tJ bp9oW>R66Y!SStJkOuFLi;Kmkj*?amwX>^rn literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/invitation-2.png.data b/documentation/20.05/eiffel/_images/invitation-2.png.data new file mode 100644 index 00000000..08f9b58b --- /dev/null +++ b/documentation/20.05/eiffel/_images/invitation-2.png.data @@ -0,0 +1,3 @@ +title=invitation-2 +author=admin +path=content/invitation-2 diff --git a/documentation/20.05/eiffel/_images/invitation-3.png b/documentation/20.05/eiffel/_images/invitation-3.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b7d3b653ced3a318d3c21ace95b4bab6edb5aa GIT binary patch literal 2242 zcmbtUdpMN&9{;7SEt1gkRC=6_7YO`906f`~7`?pWE*{m$<#o_Ufu@ zRS`n!jt(3bgj85ipIWvU-g`UaV6zzQ&7~qG*648bdUWXbRC#0UHA}AfO8s#w;Ae zC=8<+Nhom~!zm1>8F^?^I7U$zMS~SUFdD~b3Zp?0oPmLZ6R3kCLuJSmAfO8s&MXSY zX(k#-LP=3LMMF%Ghc-@AI1R}lHMjwaf|QVqu?09|3u-Mqx%*;%JAgZgY<#KsfSJ&9s7&wC+e0HG+i9ZB}!x#AV2-V%MjE_FkB7c;S zkN{hnCTN<^;NVFRG{L6{#5DK>&F9m6;KLz7BR&W*5C#Nih`}<8PY{S9!IRG?_z2k0 zAP}EGzyT#V1R>Z14Nw3=j4)HdLf`--c=92rG6&O8nlUm;MaEo712pqx0~5rD3&J(w zvT$X%J4^uP0Mmf6z;IwhFepI(|LcZ&j}%lE`8e5gQ0$WR4zO7+a&QkuNKK1*Eo$yM zvw+YNPe;x-`%iU@X6;MsGg*Ni>*|xe-Lzgcd#T~_%a5FQy!?sC-1wP|?f7GBt(rZF;xc)?#m&Ws@T2P}c8WgMO1a z_qGXIV_Ac<*~JlhBUQpEETM%L$ z*y$yeyeiu(Zr7-=ortj7e(IXcA$>`X({Ah3Z5qO~cJf%YQEs^!`J;rj_RQt(oLFZI zUfy$i4eb~^(KqRZO^Q&`YSHwDKsnb@p5OLgt)L6H6p`X8Z;_+*)W#EbK|3={9bNJz zjS8W7UsJ=XF0VV*^MS<7LZa3!*422H$7=tij)a#VbRHbt9}-r)IY4%)i5sZm($-l~ z;P`#m^OzU!O9yAp>`5LSeu{hjURxHVpB{jzc_GA}%T9AhIv*~GnMSh`&g^)zIP4BpLLaf`euneMZne7bmwaj<~(eMEqs;Lx01H4yorl_7D2OJ9T3ouHGWFk@{Ty;E-NowBkfhn^8xZ zo%m#-;8B5(+iw}k=exrFZY{fBR9XFtWaV3_U1o&duE_UU9lQV)4+R? zuj0+;)E2>v=i6<%ZHnG#&x_{261&oST#N-3BNE*k*|OIfPm>wt;zFSW;$?|RZBk7i#F4q58|eW&PJMCi2gB}?p;&6+!QnUc;dP4O54AF!uRRe1EUwO%17B*=U9KNC+|n~(H%Zy z!p>JAvk@H=PkTmlrh~Lf%O}%rmQzx!V!eP82^MY_n9TpjiFH&@mOJ%(xA(Nw)lHv# z7x#?I$=K9uUjP0@&|2@D+nP06+i=61C6MnsPjdGB#xnaXaCXyBO_)u9dy4s>&n{JR zbG}pP;#4i$A*b{NvQ+ZoV-X9-?`4bt`D?4n=Nz6Xo}0sTF)EY?c_f2_di8t*75h| X>gD>amq!|En7t#{nNw_c@a+EpCi5pA literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/invitation-3.png.data b/documentation/20.05/eiffel/_images/invitation-3.png.data new file mode 100644 index 00000000..9ff2ef7b --- /dev/null +++ b/documentation/20.05/eiffel/_images/invitation-3.png.data @@ -0,0 +1,3 @@ +title=invitation-3 +author=admin +path=content/invitation-3 diff --git a/documentation/20.05/eiffel/_images/invitation-4.png b/documentation/20.05/eiffel/_images/invitation-4.png new file mode 100644 index 0000000000000000000000000000000000000000..75d213eb4366637e9039dd0f1303e8dd79372728 GIT binary patch literal 2818 zcmbtWdpuO>8$VKr+@^I|TPl(*4IxD3P=iVv$+%>)#eR~M%Mepj9j42UD7z}HFjVU{ zxs+v%+Z-yw$hd^~G1g^5+HvPp^)C%N}^I*WElv8AqasW z6oN23gkcCqAQ**U3{N94gdh-tLI{RKP#8iH2t^?j18@j~Aq;^q6v99R*f2l?1jvF2 z#uoy^C=6q`BnS}%Mo<{RaCwkM5g0{b6a!WO0%Hh_p)dv%fiqwrzzL`WMVyM0QGfth z5Fz+N5d_0a1Ck&_Q3S<6nLr+-5e!8zP#LHixB(Ojssxqcwg8SB0|YRDaVk#600Lw| zgyIVWErQa3BnVO2`0z4igTQ1B<0S(t0Ff1q$%@0_GGk0;fKz2;Oa{XKyMZ80O-%y> z14~Ow5{X16lh2+#8xs@5WHM7zQ`u~GRaI3>OUuB(!1VMqa0YhZ*+rjbubeUz{Z4Lz zpvGFxotxLYTHYikCW0-7u`!H{?jkwJr?P0%c88T1Y&0OkOu0mcG`14aY}1&)H)m({C8?l4?vFmxq5C?%!<2crejODN1h+`0lH+irs1>mP!Pb zP};aV%Gbb7e{j3VoLEauTuOfHInBCTsvf*&PV>BfFmWPFbUp>Gx0x}Qy!!lZUqDiR z<$D8D4%!zn5%7S{eC4&(;MvYGf>%yh;N;_4VTf1JQ2k#T4~g3rv@)1cufJ2R%rX3G z&n=v#Dwt@Rt+&g3s7edY#E8=747>IrVoqr0tZN@JLXKQog#|)+rwV^W)@WD&?j$M_iTGm{w5Q(@(OK~ zI0>#zYep)wO48|(Cz@TzK^~N!EI%F>5NNb|k89Shw)S%~&%?J1pL|>Pr;aCkk5y=Y zK5lgKoAu4`y}g6#N-7-Q6)vUtVo8JQrTC|tm0gu zIre>Q%9NdVk=R%=^!M`E^MjO@XU_$M0i8y=%8SXl6rq0lxMNbmJFBwj`7UXcL;l8* z?r!-NuD9Zm=prc+(SP5IAGF3ttzgXlli25ssfI_IP7j|_`;3}6P;=t)75j~M9{tB~ zok`MA_ARBoSDv`cb{vV_SU~AwM7M|7`2<_HUc4>gBj_5X9Ss%2S-XA00|Bh@?b)fL zV}?H;7<00_H}g7I-azL~s{3Z}dZ&HWiD&MnZduv?&rj5@Fa6Wk?o&#lX~EKs)C!KC zuF9gt?YZOJ(uJH97fNHhQ24S|Dk64 z4c_)^JPODU1 zcX4x8hI_1XUuw9+nyFG-DcJa2MYKaODWCStRf8j`D6ov6&)gvu*WP7535 z%mV8^FT~Jq@P2&3Il)yF#PKu=(if$5|8(r%8Fbynk`qN7JGQbCLz}1yNNwF;n;qzr z)2SXl!R3}kU%wDk!(TQQb9yFrElN9YoAV6ACrZw)y?z?ru*bNFtI{+0wP%&3*vRr8lRm2&bHZni8*K75_oo_0Y-!7= zwa6D0?5pqDnta2pB>t-L``xTUzHRu#TJ5HUF^5roll}GQb2{eY%V{xNx~0M``vVDz42&1-=sN9g;8lZ=H*ItiFjd z-3Yall`RK%NSJ!0MVIEFtNP9J{2?nv;y@S2y4mK{CKB??#nJ}R5doolDJvTe+dlW? z+P10e+^g7yHE>%;TKTwDe@7o>)aa@ABKMaO`VrR*SI%;Ngq5OESp2k#QrO{8f)V`` zGsZ<4`A**FiYPNgzs(}0{O04X;`WJ}brpz?-j6Co!^^ID2cPzBJ<-XQs;dx5RnHev zb;;N0_8-3!QDY@r2uN|=8J>v&@!b!K@ zAtLF@pLX8#gicYIpJ3I_K;csk;91-GJ8B_)-odb^@&$wazOvThs2xKq>Xei*o-}@=Ex!7+ zNuYdWqSk@iuP49xJ27spwlrP7Rv6CsyCO~#yn=ZqQpLEK4Ij>zzY^eo2M#+OBNZJu G&G;8jlwlbF literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/invitation-4.png.data b/documentation/20.05/eiffel/_images/invitation-4.png.data new file mode 100644 index 00000000..0a9644cd --- /dev/null +++ b/documentation/20.05/eiffel/_images/invitation-4.png.data @@ -0,0 +1,3 @@ +title=invitation-4 +author=admin +path=content/invitation-4 diff --git a/documentation/20.05/eiffel/_images/invitation-5.png b/documentation/20.05/eiffel/_images/invitation-5.png new file mode 100644 index 0000000000000000000000000000000000000000..5733334bb0e3f8c76ac8989f4aa670ea9bf20330 GIT binary patch literal 3231 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 HbHu*^-l{N- literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/invitation-5.png.data b/documentation/20.05/eiffel/_images/invitation-5.png.data new file mode 100644 index 00000000..d852bd29 --- /dev/null +++ b/documentation/20.05/eiffel/_images/invitation-5.png.data @@ -0,0 +1,3 @@ +title=invitation-5 +author=admin +path=content/invitation-5 diff --git a/documentation/20.05/eiffel/_images/tutorial-10.png b/documentation/20.05/eiffel/_images/tutorial-10.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d680f5b2cd7c66b24735f9e9887b17a928d912 GIT binary patch literal 2338 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/tutorial-11.png.data b/documentation/20.05/eiffel/_images/tutorial-11.png.data new file mode 100644 index 00000000..fec1db81 --- /dev/null +++ b/documentation/20.05/eiffel/_images/tutorial-11.png.data @@ -0,0 +1,3 @@ +title=tutorial-11 +author=admin +path=content/tutorial-11 diff --git a/documentation/20.05/eiffel/_images/tutorial-12.png b/documentation/20.05/eiffel/_images/tutorial-12.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8eb7622c4e992290f986930e6f73576247b223 GIT binary patch literal 3203 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 T!CbeC%W&A)-i;=(+m-MiNfgKx literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/tutorial-12.png.data b/documentation/20.05/eiffel/_images/tutorial-12.png.data new file mode 100644 index 00000000..60f09c82 --- /dev/null +++ b/documentation/20.05/eiffel/_images/tutorial-12.png.data @@ -0,0 +1,3 @@ +title=tutorial-12 +author=admin +path=content/tutorial-12 diff --git a/documentation/20.05/eiffel/_images/tutorial-13.png b/documentation/20.05/eiffel/_images/tutorial-13.png new file mode 100644 index 0000000000000000000000000000000000000000..e1cf7705f51009643b84d85321855ee5929b7616 GIT binary patch literal 4177 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/tutorial-2.png.data b/documentation/20.05/eiffel/_images/tutorial-2.png.data new file mode 100644 index 00000000..0901a1a7 --- /dev/null +++ b/documentation/20.05/eiffel/_images/tutorial-2.png.data @@ -0,0 +1,3 @@ +title=tutorial-2 +author=admin +path=content/tutorial-2 diff --git a/documentation/20.05/eiffel/_images/tutorial-3.png b/documentation/20.05/eiffel/_images/tutorial-3.png new file mode 100644 index 0000000000000000000000000000000000000000..0a58d632392098513f4758f7db59b8890081a4d0 GIT binary patch literal 3388 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 tYb~~Fj^rMu2<}z?-aB(9=^KT9 zW+wAY5JF}F{`?Sx7+i=8ji^hiiVIFA_+v2h@=3HC=5{qqDVwR1Z)h@fPgGS z7`+G#BQcDkB_SjTj36rT_t1h)8-- z&?1xuk`R)H@zG@(20S^%?YSjQ52S~We)?we$HV&k z^531CnI-*S|C_@Ydj48|ebnDLKxfm5|I@K?U;CO=Cp)g?>~~MxzuWG)+~kzTGOji7 z!NjrB#@dvJ(Ob3`TSy1a@4A#26tOmW)Ma1G+}o??IgDMoI4j-wh=rqnpLyZzn@dkl z_&U&aefv%rdcLwS%k8R66N)^z8=0b%7i~>H92xuL%jj)KI{eDkl?|B;ANnPFAqTli zXF4w1cE|DRjLqyAxw9%Xe)%%Dv%M*5>x;Syfo8w+*6K&Q6s-;Vn;W9I`+nWkdVexR z8kUzH6M*vyw41Y!eXCx+LYh1bYrR?ii|cXw9?&Tk5HWmx^9w^r1rK{-LLoIclm}m+czER&=-g=+e&y* zY57Zi%ir@dtoI(6le>ltWEK^wt``*T%CG-I)jrV|=f}oW%Z1s`LZjU8_22lh_6SQg z)nJ~{RKF%HyRhzZX}tFttw6BWER~FYYy01gY2q2amUE3PC7mar#AsU5t5IE~;cxRkG&$ z45w+&6Pj+#5Ho?mwX6+CDOkUS5Rn(Yr0(2pMg(C0j^3_jkEW4KY58wxSF4c{Xk9bHeUUK8_Uv<2s zjBm^h2^+p5FFl)d==Dzy65hHU!S4RQSJ^c@I~QNY848&`PokK^iGSHuS2CWXTyp00 zZkf&qF8ZtdGCjLO}_2{f`7I`>0Jdoe5KyvRd&4{U5e8%X%fu z0sCx*{5RF1bAB=n&-+bUL{ERPF7}bRQ0z`eY@SuT+)pO>ty(agn#<%CrAp2p8=lH$ ziG+0xdqPcgKQL{XT>I%e?|IoiWteU UqvGba(*FPfK0b%7 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/tutorial-5.png.data b/documentation/20.05/eiffel/_images/tutorial-5.png.data new file mode 100644 index 00000000..bbca28cb --- /dev/null +++ b/documentation/20.05/eiffel/_images/tutorial-5.png.data @@ -0,0 +1,3 @@ +title=tutorial-5 +author=admin +path=content/tutorial-5 diff --git a/documentation/20.05/eiffel/_images/tutorial-6.png b/documentation/20.05/eiffel/_images/tutorial-6.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac1f2b190c4c707a1f8a68d7adde99a0b1c116d GIT binary patch literal 5479 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 TH#mP2&ve9Fw~6ZgWrzL;;+WED literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffel/_images/tutorial-7.png.data b/documentation/20.05/eiffel/_images/tutorial-7.png.data new file mode 100644 index 00000000..c38f5f4e --- /dev/null +++ b/documentation/20.05/eiffel/_images/tutorial-7.png.data @@ -0,0 +1,3 @@ +title=tutorial-7 +author=admin +path=content/tutorial-7 diff --git a/documentation/20.05/eiffel/_images/tutorial-8.png b/documentation/20.05/eiffel/_images/tutorial-8.png new file mode 100644 index 0000000000000000000000000000000000000000..07e4f070bc84895b9db0001bb11498173edf1af2 GIT binary patch literal 2531 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. fil in the directory +$ISE_EIFFEL/studio/filters + +To make a new filter available to yourself and other users of this installation, just add the corresponding file name . fil to this directory. Make sure to choose the appropriate name, since this is what the menu of available filters will display. + +==Filter basics== + +An EFF filter follows a very simple structure. As with all other Eiffel-related notations (such as Eiffel itself and Lace, the control language for Eiffel systems), any line or part of a line beginning with two consecutive dashes -- is a comment, except if it immediately follows a percent sign since, as will be seen below, - %- is used to denote an Eiffel comment in the class text. Blank lines are also permitted. Comments and blank lines carry no semantic value. + +Except for comments and blank lines, a filter is a sequence of entries, all of the form +Construct | Replacement + +where: Construct is one of a set of possible strings, most of which correspond to Eiffel constructs such as Class_declaration or Eiffel keywords such as class ; and Replacement is a string indicating how to format specimens of the Construct that appear in a class text. + +For readability, there may be any number of blanks or tabs between the Construct and the vertical bar |, so that you can align all the bars if you wish. On the right of the bar, however, all characters including blanks and tabs are significant, since they are part of the replacement for the Construct. + +==The asterisk== + +In the Replacement part, you may use the symbol * (asterisk) to denote the construct specimen itself. So for example the entry +Feature_clause | %N%N*%N%N + +specifies the following formatting for any Feature_clause: two successive blank lines (expressed as %N, New Line, a convention taken from Eiffel); the feature clause itself; two blank lines. + +Similarly, in an HTML format, the entry +External | * + +means that the Eiffel keyword external must appear in the filtered form immediately preceded by , the HTML code for switching to boldface, and immediately followed by , the code for reverting to the previous setup. Here you can also write the right-hand side without the asterisks, as external. If, however, all keywords are to use boldface, it is preferable to write a single entry +Keyword | * + +which, thanks to the asterisk, will govern all construct specimens of the Keyword category. You can still override this specification for an individual keyword by including a specific entry for it. + +==Constructs== + +The following general syntactic constructs may appear as the left-hand side, Construct, of an entry: + +Class_declaration +Class_end +Class_header +Class_name +Comment +Creators +Escape +Feature_clause +Feature_declaration +Features +Formal_generics +Indexing_clause +Inheritance +Invariant_clause +Keyword +New_line +Obsolete_clause +Suffix +Symbol +Tab + + +Most of these denote Eiffel constructs as they appear in the official language reference, the book [[Eiffel: The Language]] . Since the Eiffel construct names Feature, Invariant and Obsolete are also keywords and EFF, like Eiffel, is case-insensitive, the EFF construct names use the suffix _clause, for example Feature_clause. + +The constructs corresponding to syntactic constructs are self-explanatory. The others are: +* Class_end, denoting the final end of a class text. +* Keyword, denoting any Eiffel keyword among those listed in boldface in the corresponding appendix in [[Eiffel: The Language]] +* New_line, denoting any passage to a new line in the class text. +* Suffix, used to introduce the file extension for the generated documentation files. If you don't specify this, EiffelStudio will use the filter's name as extension. +* Symbol, denoting any of the Eiffel symbols listed in the corresponding appendix of [[Eiffel: The Language]] . +* Escape, to protect special characters of the external tool, as explained below. +* Tab, denoting any tab character appearing in the class text. + +==Keywords== + +A Construct part may consist of the name of an Eiffel keyword. To see the complete list of possible keywords, look at the template filter, file format.fil-template in the default filter directory $ISE_EIFFEL/studio/filters, which includes all of them with a single asterisk * as the Replacement part. + +If entries are present for both the Keyword construct and individual keywords, the individual keyword entries will override the general entry for the keywords listed; the general entry will apply to all other keywords. This makes it possible to have both a general convention for keywords and a special convention for some of them. + +==Symbol== + +A Construct part may consist of an Eiffel symbol, such as :=, /= and many others. Again, you may see the complete list by looking at format.fil-template. Note the following conventions: +* % * represents an asterisk. For example as a multiplication operator; the % avoids the confusion with the special meaning of the asterisk for EFF. You can find examples of this convention in the EFF filters for troff and gtroff. +* Similarly, the Eiffel comment symbol appears as - %-, since just writing - - would introduce a comment in the EFF filter itself. + +As with keywords, you may specify a general convention for symbols, defined by an entry for the construct Symbol, and special conventions for certain individual symbols. Specific symbol entries will override the general Symbol convention. + +==Escape characters== + +A text processing system or other external tool may attach a special role to characters that may normally appear in Eiffel texts. For example, the braces { and }, used in Eiffel's Export clauses, have a special meaning for TEX. Including them without precaution in TEX input will cause trouble. Similarly, many text processing formats attach a special meaning to the backslash character \ which, although not special for Eiffel, may appear in an Eiffel string. + +In such cases the filter must " escape " the special character, that is to say, protect it by other characters. For example troff and other text processing tools treat two successive backslash characters \\ as denoting a single backslash in the text to be output. The first backslash is the escape character, protecting the second one. + +The Escape construct addresses such cases. The first character that follows Escape (after one or more blanks or tabs) is the character to be escaped. The string after the vertical bar is the replacement for that character. + +Here for example is an escape entry for the backslash in tools that need to escape it through another backslash: + +==Special characters and strings== + +EFF uses Eiffel-like conventions, based on the percent sign, for control characters appearing in Replacement parts of entries. Two of these conventions have just been noted: % * to represent an asterisk and %- to represent a dash that does not introduce an Eiffel comment. In addition: +* %| denotes a vertical bar. (This is necessary since EFF uses | by itself in each entry to separate the Construct from the corresponding Replacement.) +* %N (recommended form) or %n denotes a new line. +* %T (recommended form) or %t denotes a tab. +* %% denotes a percent sign. +* % (percent followed by a space) denotes a space. This is equivalent to just a space, but more visible. + +If c is not one of the characters for which special conventions have been listed, % c denotes the character c itself. + +A multi-line entry uses the Eiffel convention for string continuations: % at the end of a line to signal that there is a continuation; a continuation line begins with zero or more spaces and tabs followed by a % ; the characters after the % are the continuation of the string. + diff --git a/documentation/20.05/eiffelstudio/Tutorials/browsing-features.wiki b/documentation/20.05/eiffelstudio/Tutorials/browsing-features.wiki new file mode 100644 index 00000000..c4c70a05 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/browsing-features.wiki @@ -0,0 +1,95 @@ +[[Property:title|Browsing Features]] +[[Property:weight|-6]] +[[Property:uuid|2c0b0a6c-08e8-fdbc-1eab-e2d87b01ce48]] +Let us get back to EiffelStudio. Before studying the documentation generation we saw how to display properties of '''classes'''. It's also interesting to explore the properties of '''features'''. + +There are two tools with similar sounding names that we will use to explore features: +# The [[Features Tool|Features tool]] (plural) which provides a list of the immediate features of the class on which the development window is targeted. This tool is located by default in the vertical pane on the right hand side of the development window. +# The Feature tool (singular) which allows you to explore the properties of some particular feature. By default, the Feature tool is available as a tab on the lower pane of the development window along with the Class tool, Outputs tool, and others. + +Your Development Window should still be targeted to class LIST, from the last view, Routines, that you displayed on it. If you've lost it, just retarget a Development Window to this class. + +Let's start by making the [[Features Tool|Features tool]] visible. To see the Features tool click on the tab labeled [[Image:features-tab]] (note that this is the plural "Features" versus the singular "Feature"). + +If the tab for the Features tool is not visible, bring it back by following the menu path: + +View --> Tools --> Features + + +While we are at it, let's get make the Feature tool visible as well. Click on the tab on the lower pane that's labeled [[Image:feature-tab]]. As with the Features tool, if the Feature tab is missing, you can use the menu path to restore it. + +One more thing, and we'll look at some features. If you restarted EiffelStudio since you worked through the [[Viewing Classes]] section, you may have to select Link Context Tool again from the View menu. + + +==Targeting to a feature== + +The list of features, organized by feature clauses, appears in the Features tool: + +[[Image:es gt features tool 01]] + +The class only has a few immediate features because most of its interesting features are inherited. Make sure the Editor tool is tall enough (as on the above figure) and click the feature forth, the last one, in the Feature Tree on the left. This makes the feature the Editor tool's current target, and scrolls the text to its declaration: + +[[Image:es gt features tool 02]] + +Note how both of the top target fields are now filled: the first one shows the target class, LIST, and the second one shows the target feature, forth. + + +==Basic feature information== + +Now let's look at the views of the feature forth provided in the Feature tool. + +A view of forth is already visible in the Feature tool. By default, it is the Flat view. + +[[Image:es gt feature tool 01]] + +The flat view of a feature, similar in concept to the flat view of a class, gives the full text of a feature, taking into account any inherited precondition or postcondition clauses. Here the feature as declared in the class appears in the top Editing Tool, with no precondition and an ensure then postcondition clause. But it's a redefinition of an inherited feature; the flat view in the bottom Context Tool shows the full precondition, inherited from the ancestor LINEAR, as well as the postcondition from LIST. + +Flat is just one of the available Feature Views, shown by the buttons on the toolbar of the Feature tool. + +[[Image:es gt feature tool toolbar buttons 01]] + +You can mouse-over the different buttons to see the views they represent. + +Just to the left of Flat, Basic Text gives the feature text, fully clickable. + + +==Who calls this feature?== + +To the right of Flat is Callers. Try it now by clicking the corresponding button. You may have to scroll down some in the display to see the series of entries show in the image below; + +[[Image:es gt feature tool callers 01]] + +This view shows all the places in the system that call the routine, or one of its redefinitions. Such information can be invaluable for debugging in particular. The successive paragraphs correspond to the various versions of forth in class LIST, its ancestors and its descendants. Reading from the top we'll examine a few entries: +* The version from LIST is called in LIST itself by the function is_equal. +* The version from LIST is called in routines in two debugger classes RT_DBG_CALL_RECORD and RT_DBG_COMMON +* The version forth from MULTI_ARRAY_LIST is a version in a descendant of LIST, and is called by three routines of MULTI_ARRAY_LIST itself: duplicate, put_right, and remove_right. +* Although it is not shown in the figure, if you scroll around some, you will find cases in which a descendant of forth has been renamed and that renamed version is called. For example child_forth from LINKED_TREE is descendant version of forth and is called by routines in LINKED_CURSOR_TREE and LINKED_TREE. + +The following five view buttons are similar except that they let you specify what kind of callers you are looking for, or what is being called by the currently selected feature. Feel free to explore these views. + + +==What happens to my feature through the inheritance hierarchy?== + +After the caller/callee views, the next view button is Implementers. + +This is a very useful view, showing all the ancestors and descendants of LIST that provide a separate version of forth, including the original introduction of this feature in LINEAR and subsequent redeclarations (redefinitions or effectings). The mention (version from) signals the version applicable to the current class, here LIST. + +Since all class and feature names on these views are hyperlinks, you can display any of the listed versions in a new Development Window by control-right-clicking it (we will see shortly how to display it in the ''same'' tool). Right-click on the feature name forth on the line that reads MULTI_ARRAY_LIST forth. This brings up a context menu and chose Show --> Text. The tool is now targeted to the routine forth from MULTI_ARRAY_LIST, so that you can see the implementation of the routine in that class. + +We still have two unexplored views, Ancestor versions and Descendant versions. Click the first of these to obtain the ancestor versions of forth from MULTI_ARRAY_LIST. + +The format is self-explanatory: for each ancestor of MULTI_ARRAY_LIST that has a version of MULTI_ARRAY_LIST 's forth feature, it indicates the name of that feature -- which could be something else than forth as a result of renaming, although here this happens only in descendants, not ancestors -- and the version of the feature applicable to the given class. + +In the case of feature merging (combining several features inherited from different parents, in conformance with the rules of the language) there could be more than one history branch, in this case each branch is labeled Branch #X. + +The next button, Descendant versions, similarly tells you all that happens to a feature in the descendants of the current class. + + +==Who has the same name?== + +The last button, Homonyms, displays all the features of the system which, related or not to the current feature by redeclaration, have the same name. You can then explore any such feature to see if the relationship is more than casual. + +In any system or library that takes advantage of inheritance and its associated mechanisms -- renaming, redefinition, effecting, undefinition, multiple and repeated inheritance, polymorphism, dynamic binding -- the feature browsing facilities that we have just explored are invaluable to track what happens to features. What makes them even more precious is their connection with the rest of the browsing and documentation capabilities, especially the pick-and-drop which we will now study. + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/command-line-compiler.wiki b/documentation/20.05/eiffelstudio/Tutorials/command-line-compiler.wiki new file mode 100644 index 00000000..2d56c99a --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/command-line-compiler.wiki @@ -0,0 +1,10 @@ +[[Property:title|The Command-Line Compiler]] +[[Property:weight|4]] +[[Property:uuid|62bd8d62-a734-3ec0-9533-eaa096e7b81f]] +Along with compilation from within EiffelStudio, it is possible to start compilation from a command line (shell). This is useful in particular to recompile your system automatically as part of a script. + +Click [[EiffelStudio: Using command line options|here]] to see how to use the command line compiler and the set of supported options. + + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/compiling-and-executing-system.wiki b/documentation/20.05/eiffelstudio/Tutorials/compiling-and-executing-system.wiki new file mode 100644 index 00000000..509942a3 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/compiling-and-executing-system.wiki @@ -0,0 +1,56 @@ +[[Property:title|Compiling and Executing a System]] +[[Property:weight|-12]] +[[Property:uuid|58494be3-f29f-3a15-a27e-e635bdc71c53]] +EiffelStudio first comes up with a window and a dialog on top of it; the dialog looks like this (from here on the look-and-feel will be slightly different on platforms other than Windows, but the content will be the same): + +[[Image:es gt open 01]] + + +As this is our first project we want to "Add Project...". We could also +* "Create project", which would let you select one among the common schemes -- basic application, graphical Windows application, graphical multi-platform application, Microsoft .NET application -- and set up everything for you. +* "Open project", which would let you open a previously added project. + +In future sessions you'll probably use "Create project" for a new project, as it takes care of generating a root class and configuration file for you, and Open project" to open an existing project. + +Right now you first have to add the project, so click on the Add Project... button. This brings up a File Explorer inviting you to select an ECF file. The file you want is the file + + simple.ecf + + +in the directory "YOURDIR", (either $ISE_EIFFEL\examples\studio\tour or the copy that you have made). The ".ecf" file is an Eiffel Configuration File which contains the information necessary for construction of an Eiffel project. + +So, use the File Explorer to find and select the file simple.ecf. + +[[Image:es gt open 02]] + + +Click the button labeled Open to confirm. This starts compilation of your project. + +During Eiffel compilation, you can observe the successive compilation steps, or "degrees", in the [[Outputs tool]]. The bulk of our little project is the EiffelBase library, which the EiffelStudio installation procedure has precompiled; as a result, there are only a few extra classes to compile, and the process is almost instantaneous on a state-of-the-art computer. + + +{{note|As a frame of reference, on a Toshiba Satellite laptop, mobile dual core 1.73 GHz, 1 GB memory, running Windows Vista, this Eiffel compilation takes about 3.5 seconds. }} + +After Eiffel compilation completes you will see the message + + Eiffel Compilation Succeeded + +in the Outputs tool. + +At this stage your project has finished compiling. + +So, congratulations! You have successfully compiled your first Eiffel project. More precisely your project has been "melted". Strange terminology, you may think; in a [[How EiffelStudio Compiles|later section]] we'll see the derivation of the names used in the compilation process. + +==Executing the system== + +Our system doesn't do anything very exciting, but let's execute it anyway. Find and click the Run button ( [[Image:debug-run-icon]] ) on the toolbar at the top of the EiffelStudio window. + +This little application doesn't use graphics or any other fancy stuff. It simply creates some objects and displays some information. Output is accomplished by using the default Eiffel I/O features (from the EiffelBase classes ANY and STANDARD_FILES), and that output goes to a console. On Unix/Linux and OpenVMS it's the window from which you started EiffelStudio. On Windows, by default, it's a new console window that comes up when and if the system does its first output operation, and stays up you dismiss it: + +[[Image:es gt execute 01]] + + +The message "Press Return to finish the execution..." would not appear if you executed the system from outside of EiffelStudio, for example from a command line. Its purpose within EiffelStudio is clear: to let you see the console output; without it, the console would go away at the end of execution. (None of this applies to Unix/Linux/OpenVMS because no new console window was created when we executed the system.) + +Before closing the console window, if you look at the main EiffelStudio window (by moving the console window aside) you will notice that it looks different than it did before. This is because EiffelStudio is now in debug mode, so it shows the fields useful in monitoring, controlled execution, and debugging. But we'll look at all this later. For the moment just dismiss the console by following the advice to "Press Return to finish the execution...": hit the Return or Enter key. + diff --git a/documentation/20.05/eiffelstudio/Tutorials/computing-project-metrics.wiki b/documentation/20.05/eiffelstudio/Tutorials/computing-project-metrics.wiki new file mode 100644 index 00000000..5cb20342 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/computing-project-metrics.wiki @@ -0,0 +1,51 @@ +[[Property:title|Computing Project Metrics]] +[[Property:weight|0]] +[[Property:uuid|8d1a3556-d9a2-0ac8-4d54-458f18cb56ad]] +In earlier sections we saw how EiffelStudio provides extensive documentation on your systems. That information was qualitative. Project managers and developers will also be interested in quantitative information about their projects. You can get such information through the Metrics tool, which enables you to perform a number of operations, detailed over the next few pages: +* Apply predefined metrics -- number of classes, number of invariants, number of features, number of compilations so far and many others -- to components of a system at various levels including feature, class, cluster, entire system. +* Define new metrics, through mathematical formulae or boolean selection, and apply them to your project. +* Store measurement results, as well as metric definitions, into an XML archive that can be stored locally or made available on the Web for future reference. +* Compare the measurements on a system to those on record locally or on a Web site. Eiffel Software has released on its own site an archive recording the metric properties of its basic libraries, available to any other project for comparison. + +==Methodological observations== + +Although the field of software metrics is a rich one with an abundant literature, its methodological basis is sometimes subject to question. One should resist the tendency to believe numbers just because they are numbers ("lies, damn lies, and metrics"). + +Software engineers and their managers expect, however, to reap at least some of the benefits that precise quantification has brought to other engineering fields. Such is the purpose of software metrics, defined as '''quantitative estimates of product and project properties'''. Object-oriented development, with the rich software structures that it induces, is a particularly amenable to metric analysis. Even when some of the measures do not seem to bring much by themselves, comparing them to those of other projects may reveal significant peculiarities of a system or of some of its parts. + +The metrics capabilities of EiffelStudio were designed with these observations in mind. They result from a conservative approach, where no metric is provided without a credible assumption that it reflects some meaningful project or product attribute. For example, you will find a way to define a new metric as a linear combination of existing ones, but not a way to compute arbitrary arithmetic operations, since it isn't clear that -- say -- multiplying two metrics ever makes sense. + +==Metric terminology== + +The following terms are used in the presentation of EiffelStudio metric mechanisms. + +A '''metric''' -- not to be confused with a measure -- is a quantitative property of software products or processes whose possible values are numbers. A '''measure''' is the value of a metric for a certain product or process. + +For example, we can evaluate the metric "number of classes in the system", called just Classes, by counting the classes in our system. This yields a measure. + +We may distinguish between '''product''' ''' metrics''', which measure properties of the elements being turned out (code, designs, documentation, bug reports...) and '''process''' ''' metrics''', which measure properties of the process used to turn them out (salaries, expenses, time spent, delays...). The current metric facilities of EiffelStudio are primarily product-oriented but include a process metric: "number of compilations". + +Any metric should be relevant: related to some interesting property of the processes or products being measured, such as cost, estimated number of bugs, ease of maintenance...A '''metric theory''' is a set of metric definitions accompanied with a set of convincing arguments to show that the metrics are relevant. Neither EiffelStudio nor this manual provide a metric theory. + +The numbers yielded by measures are meaningless unless we describe what they refer to. Every metric is relative to a certain '''unit''', specified as part of its definition. For example the unit for a metric that counts classes, such as Classes, is called class. + +EiffelStudio provides a set of predefined units. Some simply serve to count occurrences of certain construct specimens in the software; examples include group, class, feature, line, ... The metric ratio describes metrics whose values are divisions, for example "average number of classes per cluster", obtained by dividing the number of classes by the number of classes. + +A metric can be computed over a scope. This scope is defined using a '''domain'''. A domain is a set of program elements. You build up a domain by adding development objects to a list. These development objects are things like application targets, clusters, libraries, classes, and features. + + +==Metric tool interface== + +The following links will take you out of the Guided Tour and into the EiffelStudio Reference: + +* EiffelStudio reference: [[Metric Evaluation Panel|Metric Evaluation panel]] +* EiffelStudio reference: [[Detailed Result Panel|Detailed Result panel]] +* EiffelStudio reference: [[Metric Definition Panel|Metric Definition panel]] +* EiffelStudio reference: [[Metric History Panel|Metric History panel]] +* EiffelStudio reference: [[Metric Archive Panel|Metric Archive panel]] + + +{{SeeAlso| The EiffelStudio Reference section on the [[Metrics Tool]] for more comprehensive discussion and precise definitions of terminology.}} + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/copying-example-files.wiki b/documentation/20.05/eiffelstudio/Tutorials/copying-example-files.wiki new file mode 100644 index 00000000..2e7bd8a8 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/copying-example-files.wiki @@ -0,0 +1,19 @@ +[[Property:title|Copying the Example Files]] +[[Property:weight|-14]] +[[Property:uuid|bb8ff7d7-2e93-d150-339c-d9afb967bc98]] +{{note|If you are using Eiffel on a personal computer, you have the option of working directly in the installation directory and would not necessarily need to make copies of files as per the present section. If you choose to work directly in the installation directory, skip this section and go on to the next section, [[Starting EiffelStudio and Opening a Project]]. If you work under Unix or OpenVMS, or may have to share the Eiffel installation with other users, do not have write permissions on the installation, or want to keep the installation unchanged, then please do read the present section and apply its instructions.}} + +If you are going to work on a copy, choose or create a directory of your own; let's call it YOURDIR for the rest of the discussion. + +To copy all the files of the example to YOURDIR: +* On Windows, open a Windows Explorer, go to $ISE_EIFFEL\examples\studio\tour , select all the files in that directory, and drag-and-drop them to YOURDIR . +* On Unix execute the shell command + +cp $ISE_EIFFEL/examples/studio/tour/* YOURDIR + +* On OpenVMS execute the command + +copy $ISE_EIFFEL:[examples.studio.tour]*.* YOURDIR + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/customizing-tools-layout-and-toolbars.wiki b/documentation/20.05/eiffelstudio/Tutorials/customizing-tools-layout-and-toolbars.wiki new file mode 100644 index 00000000..4c361a7d --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/customizing-tools-layout-and-toolbars.wiki @@ -0,0 +1,267 @@ +[[Property:modification_date|Tue, 21 Aug 2018 18:55:21 GMT]] +[[Property:publication_date|Tue, 21 Aug 2018 18:55:21 GMT]] +[[Property:title|Customizing the tools layout and toolbars]] +[[Property:weight|-8]] +[[Property:uuid|eb75573e-c653-9290-376a-063cb5fa32d4]] +==Overview== + +We saw in [[Viewing Classes]] how EiffelStudio panes could be resized and how the Auto Hide feature works for a pane. + +Now let's look at some other ways in which you can customize the layout the EiffelStudio tools. + +The first time you use EiffelStudio, it will display a '''default''' tools layout that reflects the preferences of a majority of users. Typical user preferences change, so don't be too surprised if things look just a little different after installing a new version. + +As you gain more experience with EiffelStudio, you may want to adapt the layout to your personal preferences. For example, you may always want to have certain tools visible which were not visible by default. Once you make a change like this, EiffelStudio generally remembers that change and it will be in force the next time you open EiffelStudio. But you can also save a complete tools layout and recall it at a later time. For example, you might have two or three different development '''modes''' that you work in, and have a saved tools layout for each. + +The ways in which the EiffelStudio tools can be arranged are nearly endless. You can make tools visible or hide them. You can make almost any tool a tab in almost any pane. You can re-order the tabs for a pane. You can pull tools completely out of EiffelStudio as free-floating windows. You can create additional panes as needed. Almost any pane can be "pinned" open or "auto hidden". + + +==Reverting to the default layout== + +If you changed the layout and are not pleased with the result, you can revert to the default. Use the menu path: + +View --> Tools Layout --> Reset Tools Layout + +to reset EiffelStudio to the default tools layout. + +[[Image:es gt reset tools layout 01|Reset Tools Layout]] + +Figure 1 + + +So at the end of the section [[Viewing Classes]] we manually reversed the changes that we had made to the layout to make additional space. We could have just selected Reset Tools Layout to restore the default layout. + +You can try this now and see the effect. Your tools layout will probably not change very much. + +You can see in the image above that you would also follow that menu path in order to save a tools layout or to activate one that you had previously saved. + + +==Minimizing, maximizing, restoring, and closing tools== + +At the right end of the top bar for each tool you will see buttons that help you control the way the tool and its containing pane are displayed. Here are the icons and what they mean: + +* [[Image:minimize-icon]] Minimize this pane. +* [[Image:maximize-icon]] Maximize this pane. +* [[Image:restore-icon]] Restore this pane to its previous size. +* [[Image:auto-hide-icon]] Set this pane to Auto Hide. +* [[Image:close-icon]] Close this tool. + +There are a few subtleties you should understand when using these: + +The pane in which the Editing tool resides is special. It is the only pane that supports '''minimize'''. And it does not support Auto Hide, nor Close. We'll learn a little more about this in the section on [[#Docking|Docking]]. + +When you maximize a pane it fills all available space. At the same time, its maximize icon changes to the Restore icon. When you click Restore, the pane relinquishes the extra space it annexed when you maximized it, and then returns to its original size and location. + +The Close button will close only the current tool. So, that tool goes away, but any other tools in the same pane remain. However, when you close the last tool in a pane, the pane itself disappears and the space is absorbed by other panes. Remember that you can re-display closed tools through the menu path: + +View --> Tools --> tool name + + +{{note|EiffelStudio supports a number of [[EiffelStudio: Key shortcuts|'''key shortcuts''']] (sometimes called '''accelerators''', some of which can be useful for changing aspects of the Development Window. For example, CTRL+M will toggle the Editing pane between Maximize and Restore, and CTRL+N will create a fresh Development Window. Keyboard shortcuts themselves are tailorable in the [[Keyboard shortcuts preferences|EiffelStudio Preferences]].}} + + +==Re-ordering tabs== + +Within a particular pane, it is possible to have many tools visible. Each will be represented as a tab at the bottom of the pane. For example, the pane that contains the Class and Feature tools has the following tabs by default in the version that is current at the time of this writing: + + +[[Image:es gt default pane tabs|A default set of tool tabs]] + +Figure 2 + + +One easy way to customize your tool layout is to change the order of these tabs if you prefer. Just drag a tab horizontally to a new position to the right or left of where it originally was located and release it. As you drag the tab, you'll see it relocate itself, so you'll know just were it will end up when you release it. + +So suppose that you felt that it would be more convenient to your style of work to have the Outputs tool be the left most tool, versus the Class tool. Just drag it over there ... and now your tabs should reflect the new order: + + +[[Image:es gt reordered pane tabs|Tool tabs after moving Outputs tool to the left end]] + +Figure 3 + + +Try this now, if you'd like but be careful to move the tab '''only''' horizontally along the row of other tabs. If you move it off the row of tabs, you may inadvertently enter the extraordinary, but more complex realm of '''docking''', our next topic. Just in case you do get off the row of tabs and you see strange icons appearing on the Development Window, don't release the mouse button, just press the ESC key to cancel the dragging action. + + +==Docking== + +The docking ability within EiffelStudio is arguably the most powerful tool at your disposal for tailoring the tools layout to your liking. Docking can be a little daunting at first, but once you understand a few concepts, you will likely find it both easy to use and helpful. + +Maybe the first thing to know about docking is that EiffelStudio gives you the option of locking elements of the interface against inadvertent changes in docking. Following the menu path: + +View --> Docking Lock + +you can choose to lock (or leave docking enabled) on toolbars, tool panes, and/or editing panes. So, if you get things just the way you want them, in addition to save your tool layout, you may want to lock the elements against additional docking changes. + +Perhaps the second thing to understand, if you haven't already guessed, is that, for docking purposes, the EiffelStudio interface supports toolbars and two different types of panes. One type of pane is the one in which the Editing tools reside, which we'll call an '''editing pane'''. The other is the type of pane is the '''tools pane''' where other tools can be docked. + +So, with this in mind, we can take another look at the EiffelStudio layout. + + +[[Image:es gt a development window 02|Default tools layout]] + +Figure 4 + + +Here we see the editing pane with one editing tool targeted to the class LIST. + +There are two tools panes. Docked in one are the Class, Feature, Outputs, and Error List tools. In the other are the Groups, Features, and AutoTest tools ... and to the right of the AutoTest tab we see the icon ([[Image:continued-icon]]) and a number indicating that there are more tabs, but no room to display them. In this case there is only one more tab; it is for the Favorites tool. Of course, if the that tools pane were a little wider, we would see the tab for the Favorites tool and the "continued" icon and the number would disappear. + +It turns out that there are actually two more tools panes in this layout. One contains the Diagrams tool and the other contains the Dependency, Metrics, and Info tools. These two panes are Auto Hidden so we only see the minimum evidence that they exist ... just their tabs. You can tell that these are two different panes by how the tabs are distributed. Diagram is somewhat "off by itself" whereas Dependency, Metrics and Info are grouped closely together. + +As we learned in [[Viewing Classes]] you can make one of these tool panes visible by moving your cursor over it, or clicking on one its tabs. The pane will expose itself for the length of time that the cursor remains over it, then recede into hiding again when the cursor is moved away. + +Try this now with the Diagram tool. The pane housing the diagram tool appears from the bottom of the screen. Notice also that it has occluded the pane containing Class, Feature, Outputs, and Error List tools, and about half of the pane containing the Groups, Features, AutoTest, and Favorites tools. + + +[[Image:es gt development window diagram tool unhidden|Diagram tool unhidden]] + +Figure 5 + + +So, Auto Hide works well to keep panes that we might not use very often out of the way ... but still pretty handy. + +===Floating a pane=== + +Let's dive into our first docking (or maybe undocking) experience. Suppose, though, that you were in the analysis and design phase of a project and you wanted the Diagram tool to be open and available at all times. Of course, you could move your cursor over it to "un-hide" it, then pin it open. But then it would be covering the other tool panes which we use often. + +One great capability of the docking mechanisms in EiffelStudio is that you can disconnect, or '''float''', a pane away from the rest of the EiffelStudio development window. Let's float the hidden pane that now contains just the Diagram tool out to the right of the entire Development Window. + +In order to float this tool pane, we first have to set Auto Hide off. + + +{{note|In versions of EiffelStudio starting with version 6.6, it will no longer be necessary to set Auto Hide off before moving a pane. }} + + +So move your cursor over the Diagram tab and the pane should expand (if it does not make it self visible, then click on the tab). Then move to the upper right and click the horizontal pushpin icon ([[Image:auto-hide-off-icon]]) to turn off Auto Hide and pin the pane open. + + +[[Image:es gt diagram tool pane pinned 01|With Auto Hide off, occluded panes become visible.]] + +Figure 6 + + +You may notice that a pane that is auto hidden may, when it expands, occlude other panes. However, when you turn of Auto Hide by pinning the pane open, any panes that it had occluded will become at least minimally visible. In the case of this example, the pane containing the Class tool was temporarily covered by the expanded Diagram pane, as was the row of tabs on the pane containing Groups. When you pin the Diagram pane open, the title bar for the pane with the Class tool becomes visible, and the pane with the Groups tool gets shortened to fit above the Diagram tool's pane. + +It is at this point that new EiffelStudio sometimes have problems understanding what's happening. So read the following description of what's going on before you actually try to move the pane ... and don't forget that you can always reset the tools layout if things don't go the way you intended. + +Now that we've turned off Auto Hide for Diagram's pane, we can move the pane and either re-dock it somewhere else in the development window or, as is our intention, "float" it as a window separate from the Development Window. + +To undock and re-dock or float a pane, you drag the pane by its title bar (but don't do this quite yet). As soon as you begin to drag the pane, you will see the look of the Development window change: + + +[[Image:es gt docking in progress 01|Dragging a pane to dock]] + +Figure 7 + + +In the figure you can see the cursor arrow on the title bar of the pane. The pane has been dragged very slightly and EiffelStudio has sensed that we want to move the pane from its current position. In response, EiffelStudio has overlaid the Development Window with a set of icons that represent valid docking targets for the pane being moved. We'll look closer at those in a moment. + +But for now, notice the large dark, semi-transparent '''docking feedback''' area at the bottom left of the image above. This represents what will happen to your pane if you release the mouse button at the current time. So in the case of the figure above, releasing the mouse button immediately will '''float''' the pane on top of the Development Window. This is nearly our intent, although we want to move the floating pane out to the right of the Development Window. So, without releasing we drag the pane off the top and to the right of the Development Window, then release it. + + +[[Image:es gt diagram tool pane floating 01|800px|Diagram tool floating]] + +Figure 8 + + +So go ahead and try it now. If you've pinned the pane with the Diagram tool open, then drag the pane by its title bar out to the right and off the Development Window and release it. + +===Docking a pane=== + +The problem that some users have when first trying to adjust the tool layout using docking (without the benefit of this Guided Tour) is that once they move a pane, it's not obvious to them what to do next to get the effect that they want. As a consequence, they attempt to put things back the way that they were when they first dragged the pane ... and usually they aren't successful. Remember that you can always press the ESC key to cancel the drag while still holding the mouse button down. + +Now let's take a look at the target graphics and what they mean, and we'll do an exercise in which we put the pane with the Diagram tool back where it was originally. + +In Figure 7 above, you can see the docking target graphics. You see this figure: + + +[[Image:docking-target|Docking target]] + +Figure 9 + + +in two places, and four smaller figures: + +[[Image:docking-target-top|Top]] [[Image:docking-target-left|Left]] [[Image:docking-target-right|Right]] [[Image:docking-target-bottom|Bottom]] + +Figure 10 + + +one near each border of the Development Window. + +The graphic in Figure 9, shaped like a "plus" sign or cross, will appear in any pane which is a valid docking target for the pane you are moving. So, in Figure 7, those panes are the pane housing the Groups tool and the one housing the Class tool. + +The center of the graphic represents the target pane itself. So, if you drag your pane over the center of the graphic and release it, your pane will now become a new tab in the target pane. You can see the docking feedback area hinting to this effect. In the figure below, the pane with the Diagram tool was dragged over the center of the target graphic on the tool with the Class pane. Notice that the whole pane is covered with the docking feedback area, which even shows the hint of a new tab. + + +[[Image:es gt add tab to pane|Hovering over center target will add a pane as a new tab]] + +Figure 11 + + +If we were to release the pane at this point, it would dock as a new tab along side Class, Feature, Outputs, and Error List. In this case, the pane we are moving contains only one tool, Diagram, but if it contained multiple tools, each of those tools would become a new tab in the target pane. + +But remember that our goal in this exercise is to restore the pane holding the Diagram tool back to its original position. So, making it a tab in the pane with Class, won't achieve that goal. Let's look at some other possibilities. + +What happens if we drag our pane over one of the tips of the cross shaped target graphic? These targets will allow us to split the target pane into two panes, one containing the original content and the other containing the content of the pane we are moving. The original pane will be split according to which tip of the cross you drop your pane onto. For example dropping on the right tip will split the target pane into left and right panes an put your pane on the right. Again you can see this depicted in a preview when you hover over one of these, as shown below. + + +[[Image:es gt split pane right|Hovering over the tip of a cross causes the target pane to be split and the new pane added adjacent]] + +Figure 12 + + +It's pretty obvious that this will not get Diagram back to its original location. The only options left unexplained are the four graphics shown in Figure 10. These each look like a detached version of one of the tips of the cross shaped graphic, but they are located along the four edges of the Development Window. If you drop your pane on one of these it will add it as a new pane along the corresponding margin of the Development Window. + +We know that originally our pane with Diagram was in Auto Hide mode at the bottom of the Development Window. + +So, drag the pane from its floating position and drop it at the bottom of the Development window on this graphic: + +[[Image:docking-target-bottom|Bottom]] + + +The effect is that now your pane has been docked back into the Development Window at the bottom. The only thing left to do now is turn Auto Hide back on by clicking the push-pin icon. Now the pane that houses the Diagram tool is back in its original place in the layout. + + +===Docking and the Editing pane=== + +As we learned earlier in [[#Minimizing, maximizing, restoring, and closing tools|Minimizing, maximizing, restoring, and closing tools]], the pane in which the Editing tools reside has special properties and restrictions not present for panes housing other tools. It's the same for docking. Just as you can't close the Editing pane, you can't re-dock it in any other location. You can't dock other tools, the Feature tool for example, in the Editing pane (notice that you don't get a targeting cross in the Editing pane when you drag a pane). + +Although the Editing pane can house only Editing tools, you ''can'' re-order the tabs for Editing tools and you ''can'' re-dock Editing tools by splitting the Editing pane. For example you might want to look at two classes side by side in two different panes. In the image below, after opening tabs for classes LIST and CHAIN, we dragged the tab for CHAIN and dropped over the right tip of the cross shaped graphic that appeared in the Editing pane. Then we put the pane Groups and the one with Class in Auto Hide to enlarge the size of the Editing tools. This allows us to view LIST and CHAIN side by side. + + +[[Image:es gt side by side editing|Viewing two classes side by side in the Editing pane]] + +Figure 13 + + +===Docking and toolbars=== + +You can drag toolbars and re-dock them in different places. You can float toolbars in the same way you would do a tool pane. In the figure below, the Project toolbar has been dragged away from its default home to the right of the Standard Buttons toolbar. Now it's over undockable space, so if released here it will float, just as we saw with tool panes. + + +[[Image:es gt redocking project toolbar|Dragging the Project toolbar around]] + +Figure 14 + + +When you move a toolbar, drag it by its "head". The head is indicated by an icon ([[Image:toolbar-head-icon]]) that looks like a vertical row of dots at the left end of each toolbar. + +The figure above shows that there are two "rows" available for placing toolbars. This is the way it is in the default layout. But the number of rows can be expanded if needed. So, if you drag a toolbar toward the bottom of the toolbar area, you will see that a new row will become available in which you can dock the toolbar that you are moving. + + +[[Image:es gt redocking project toolbar new row|Dragging a toolbar to a new toolbar row]] + +Figure 15 + + +In the figure above, the Project toolbar has been dragged near the bottom of the toolbar area, and a new toolbar row has opened up to allow the Project toolbar to be docked there. + + +==Customizing toolbars== + +In addition to using the docking facilities to move toolbars around to suit your work style, you can also customize each toolbar by adding, removing, or re-ordering the buttons on that toolbar. See more about this on the page [[Toolbar customization]]. + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/debugging-and-run-time-monitoring.wiki b/documentation/20.05/eiffelstudio/Tutorials/debugging-and-run-time-monitoring.wiki new file mode 100644 index 00000000..12877521 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/debugging-and-run-time-monitoring.wiki @@ -0,0 +1,127 @@ +[[Property:title|Debugging and Run-time Monitoring]] +[[Property:weight|-2]] +[[Property:uuid|a53f6a74-7145-35ab-ed5e-2905aeb88774]] + +The next set of EiffelStudio capabilities enables you to control and monitor the execution of your systems. The obvious immediate application is to debugging; but the more general goal is to let you follow the execution of your systems, explore the object structures, and gain a better understanding of the software. + + +==A reminder about debugging in Eiffel== + +Before looking at debugging facilities don't forget that debugging in Eiffel is different. The presence of Design by Contract mechanisms gives the debugging process a clear sense of direction. The speed of the recompilation process makes it easy to recompile after a change; after getting rid of syntax and validity errors, you run the system again, and remaining errors are often caught as violations of contract clauses -- routine preconditions, routine postconditions, class invariants. + +The facilities to be described now are also useful when you find such an error, as they will help you study its execution context. In fact, one of the characteristics of the debugging mechanism is that there is no "debugger" proper, no more than there is a "browser"; you have instead a set of facilities supporting controlled execution and debugging. This means for example that: +* While debugging, you can access all the browsing capabilities to explore the features and classes surrounding the cause of an error. +* While browsing, you can launch or resume execution, and follow its progress through the debugging facilities. +* If execution stops on an exception -- for example, an assertion violation or arithmetic overflow -- you have all the environment's facilities at your disposal to understand what happened. + + +==Setting breakpoints== + +To control the execution you will set breakpoints, indicating places where you want to interrupt the execution. You may set a breakpoint on an individual instruction of a routine, on the routine's precondition or postcondition, or on the routine as a whole, meaning its first operation (precondition or instruction). + +A group of icons on the Project Toolbar help control breakpoints. They are known in EiffelStudio terminology as "''buttonholes''", meaning that they can serve both as buttons (you can click them to get some functions) and holes (you can pick-and-drop into them to get some other functions). + +[[Image:es gt debug buttons|Run and debug buttons]] + +The labels correspond to the icons' use as buttons: enable all set breakpoints ([[Image:16x16--breakpoints-enable-icon]]), disable them all ([[Image:16x16--breakpoints-disable-icon]]), remove them all ([[Image:breakpoints-delete-icon]]), and display information on current breakpoints using the Breakpoints tool ([[Image:debug-show-breakpoints-tool]]). The difference between "disabling" and "removing" is that disabling turns off breakpoints until further notice but remembers them, so that you can later re-enable them, whereas "removing" clears them for good. + +Here you also see icons for controlling execution: '''run''' ([[Image:debug-run-icon]]), '''step-by-step''' ([[Image:debug-step-over-icon]]), '''step into routine''' ([[Image:debug-step-into-icon]]), '''step out of routine''' ([[Image:debug-step-out-icon]]). + +Target a Development Window to the class TESTROOT and pick-and-drop the name of the procedure make (the first routine, after the declaration of the two attributes o1 and o2) to the '''Enable all''' icon, used here as a hole. This sets and enables a breakpoint on the routine. Click the button labeled '''Show information about breakpoints''' ([[Image:debug-show-breakpoints-tool]]). This will invoke the '''Breakpoints tool''', as shown in the next figure. + +[[Image:es gt breakpoints tool 01|The Breakpoints tool]] + +This shows that so far you have enabled only one breakpoint. For a finer degree of control, let's look at the feature's flat form. Close the Breakpoints tool, then pick-and-drop make from the Editing Tool to the Feature tool (anywhere in the lower left pane should do; this sets the pane's context to the Feature Tool. Select the '''Flat''' view if that wasn't the last one used: + +[[Image:es gt development window breakpoints 01|Breakpoint set in "make"]] + +The small circles on the left side of the Flat form indicate breakpoint positions. Empty ones are not set; enabled breakpoints are marked by a circle filled with red. At the moment only one is enabled, corresponding to the first instruction of the routine since, as noted, setting a breakpoint on a routine as a whole means setting it on its first operation. + +By (left) clicking on a breakpoint mark, you toggle it between enabled and not set. You can also right-click on a mark to get a [[Breakpoint menu|menu]] of possibilities: + +[[Image:es gt breakpoint context menu 01|Breakpoint context menu]] + +Try enabling and unsetting a few of these marks; you might get something like this: + +[[Image:es gt development window breakpoints 02|Multiple breakpoints: not set; enabled; set but disabled]] + +The breakpoint mark for the routine's third instruction, create o2, is filled but not red ([[Image:bp-disabled-icon]]); this means it is set but not enabled. You can obtain this by right-clicking on the mark and choosing '''Disable breakpoint''' on the menu that comes up. Any potential breakpoint will be in one of three states: '''not set''' ([[Image:bp-slot-icon]]); '''set and enabled''' ([[Image:bp-enabled-icon]]); '''set but not enabled''' ([[Image:bp-disabled-icon]]). + +Remember, you can see the complete list of enabled and disabled breakpoints by making the Breakpoints tool visible ... which you do by clicking the '''Show information about breakpoints''' ([[Image:debug-show-breakpoints-tool]]) button in the Project Toolbar. + +For the remainder of this chapter it doesn't matter which exact breakpoints of make you've set, as long as the one on its first instruction is set and enabled (red-filled circle) as above. Please make sure this is the case before proceeding. + + +==Executing with breakpoints== + +To execute, you will use the following Run buttons in the Project toolbar, or the corresponding entries in the '''Execution menu''': + +[[Image:es gt debug buttons|Run and debug buttons]] + +Most of the buttons shown here are enabled, but at different times some of them will be disabled (grayed out.) + +The '''Execution menu''' entries will also remind you of shortcuts: F10 for '''Step-by-step''', F11 for '''Step into routine''', Shift-F11 for '''Step out of routine''', CTRL-F5 for '''Run ignoring breakpoints''', F5 for '''Run with breakpoints''', CTRL-Shift-F5 for '''Interrupt execution''', Shift-F5 for '''Stop execution'''. + +[[Image:es gt execution menu 01|Execution menu]] + +Start execution of the compiled system by clicking the '''Run''' button ([[Image:debug-run-icon]]). Run actually means "Run and stop at enabled breakpoints." EiffelStudio automatically switches to '''Execution mode''' to accommodate supplementary tools providing debugging information. Execution stops on the breakpoint that you have enabled on the first instruction of procedure make: + +[[Image:es gt debug breakpoint reached 01|Stopped at first breakpoint in "make"]] + +By default, in Execution mode, EiffelStudio looks a little different. Specifically, the Feature tool now occupies the space that was previously held by the Editing tool. The '''Call Stack''' is in the tall pane on the right, and the '''Object tool''' and '''Watch tool''' are on the bottom, under the Feature tool. + +The Call Stack indicates that execution has stopped in make. The Feature tool shows the flat form of that routine, with an icon ([[Image:debug-stopped-on-breakpoint-icon|Stopped on enabled breakpoint]]) to indicate the stop point which execution has reached. The Object tool, which shows the content of current object and (later) related objects. At the moment you can see that: +* The current object is an instance of class TESTROOT. +* The class (as you could also see from its text in a Development Window) has two attributes o1 and o2, both declared as type PARENT, for which the corresponding fields in the current object are both void; this is as expected since you haven't yet executed the two creation instructions create {HEIR} o1 and create o2, as they come after the breakpoint. +* Along with attributes, an Eiffel class may have '''once functions''', executed at most once -- the first time they are called -- in a given session, and from then on always returning the same value. You can see the status of these by expanding the entry "Once routines" in the Object tool. Here the once function io has not yet been called, but after it has it will return an object of type STD_FILES. + +The execution-time objects that you may display in the Object tool are our latest kind of EiffelStudio "development object", along with classes, features, explanations, clusters; notice the distinctive icon ([[Image:debugger-object-eiffel-icon]]), a rectangular mesh shape suggestive of an object's division into fields. It appears colored for actual objects and gray ([[Image:debugger-object-void-icon]]) for Void references such as operating_environment. + + +==Monitoring progress== + +Click twice on '''Step-by-step''' ([[Image:debug-step-over-icon]]), or press the function key F10 twice. Monitor, in the flat form of make, the marker that shows execution progress; note that the marker always points to the ''next'' operation to be executed. After the two steps, the Feature and Object tools look like this: + +[[Image:es gt debug step by step 01]] + +The last instruction that you executed is create {HEIR} o1, meaning create an object and attach it to o1, but instead of using the declared type PARENT of o1 use its proper descendant HEIR. As a result, the entry for o1 in the Object tool no longer shows Void but an object of type HEIR. Note that all objects are identified by their addresses in hexadecimal; such an address is by itself meaningless, but enables you to see quickly whether two object references are attached to the same object. The addresses you see as you run the Guided Tour will -- except for some unlikely coincidence -- be different from the ones appearing here. + +Note that since the garbage collector compacts memory and hence may move objects around, the address of a given object is not guaranteed to remain the same throughout a session. + +To see the details of the object, expand its entry in the Object tool. + + +==From the instance to the class== + +Now notice what happens if you pick the type name (HEIR) from the entry for object o1 in the Object tool, and then drop it in the Feature tool above. The context changes from the Feature tool to the Class tool and is retargeted on HEIR. The Class tool has switched to the default format for classes, '''Ancestors''', and is showing the ancestors of HEIR. Click the Feature tab to get back to feature information for the continuation of our debugging session. + + +==Stepping into and out of a routine== + +Click '''Step-by-step''' once more to advance just before the call o1.display. + +Choosing '''Step-by-step''' again would execute the next step in the current routine, the call o1.display, treating the entire execution of display from class HEIR as a single operation. Assume instead that you want to go ''into'' that routine and follow the details of its execution. For one thing, you might not know that it's a routine of class HEIR, since o1 is declared of type PARENT and it's only through polymorphism, that is, o1 being dynamically of type HEIR at this point, and through dynamic binding, that the execution ends up calling a routine from HEIR. Of course here it's obvious because of the wording of the create a few lines up, but in many cases, especially all those for which polymorphism and dynamic binding are ''really'' interesting, the exact type won't be immediately clear from the neighboring software text. + +Click the '''Step into routine''' button (or press F11). This brings execution to the beginning of the appropriate display routine in class HEIR. + +[[Image:es gt debug step into 01]] + +While you're here notice the Call Stack tool. It shows that we are currently executing feature display of class HEIR, which, as can be seen on the second line of the stack, was called from feature make of class TESTROOT. + +Now click '''Step out of routine''' ([[Image:debug-step-out-icon]]), or press Shift-F11 to finish the execution of display. This brings you back to the next instruction of the calling routine, make of TESTROOT. + + +==Terminating== + +You may now click the '''Stop execution''' button ([[Image:debug-stop-icon]]), or press Shift-F5, to end execution. The execution-specific tools go away and the display returns to what it was before execution. + + +==Other debugging capabilities== + +In this little application nothing runs long enough to give you the time to interrupt it. In a longer-running application you may want to interrupt execution, without necessarily terminating it, while it's running (not stopped on a breakpoint). This is the purpose of the '''Interrupt execution''' button ([[Image:debug-pause-icon]]), which can also be triggered by pressing CTRL-Shift-F5. It will interrupt execution at the closest potential breakpoint position, letting you -- as when execution stops because of an exception -- take advantage of all the debugging and browsing facilities to see what's going on inside your running system. You may then restart execution -- with or without breakpoints, single-stepping, out of the current routine, into the next routine -- by choosing the appropriate Run button + +In debugging sessions for more advanced applications, you will also find self-explanatory mechanisms enabling you, in addition to what we have seen, to examine all the objects on the "call stack": arguments and local entities of the current routine, its caller, caller's caller and so on. + +The combination of these facilities provides you with a level of ''dynamic'' information on the execution of your system that matches the ''static'' information that the browsing mechanisms studied in preceding sections provide about the system's structure. + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/executing-system-within-and-without-eiffelstudio.wiki b/documentation/20.05/eiffelstudio/Tutorials/executing-system-within-and-without-eiffelstudio.wiki new file mode 100644 index 00000000..0ecb71f8 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/executing-system-within-and-without-eiffelstudio.wiki @@ -0,0 +1,37 @@ +[[Property:title|Executing a System Within and Without EiffelStudio]] +[[Property:weight|5]] +[[Property:uuid|8256398e-d1a9-0471-664a-3225c7dfb306]] +To complete this study of the compilation process let's see a few more properties of how you can execute an Eiffel system, both in EiffelStudio and as a compiled system that you deliver to its users, who may need to run it without EiffelStudio. + +==Arguments== + +Our example system is very simple and has no need for execution arguments. In more advanced cases you may want to pass values to the execution, such as a numeric parameter or a file name, so that you can have different executions without changing and recompiling the software. + +In the Eiffel text, you can access such run-time arguments through the Kernel Library class ARGUMENTS. There is another technique -- using the arguments to the root creation procedure -- but using ARGUMENTS is the most general way. Any class of your system can inherit from ARGUMENTS and use queries argument_count to know the number of arguments passed to the execution, and argument (i), for i between 1 and argument_count to access the i-th element. Class ARGUMENTS has more features; since you have Eiffelstudio up, you can check the details if you wish (use the contract form). + +There are 2 ways to specify execution arguments from within EiffelStudio. The first is through the menu path Execution --> Execution Parameters . +The second is through the argument dialog which can be opened by right-clicking on any of the debugging or program execution buttons on the main toolbar. The latter is more convenient for quick and easy access to execution arguments. + +==Executing from EiffelStudio== + +We have seen how to execute a compiled system from within EiffelStudio: choose one of the appropriate execution buttons, with or without breakpoints. + +==Executing a finalized system outside of EiffelStudio== + +A finalized system can be executed on any computer of the appropriate platform; it doesn't need EiffelStudio. The executable version is in the directory `project_directory/EIFGENs/target_name/F_code` where `project_directory` is the project's directory and `target_name` is the name of the target. The name of the executable file is `system_name` (or `system_name.exe` on Windows) where `system_name` is the name that you have assigned to your system in the project settings (reflected in the ECF file). + +The target of the Guided Tour system is `classic` and the name is `simple`, so you can locate `simple.exe` (or `simple.exe` on Windows) in `EIFGENs/classic/F_code` for your project, and run it stand-alone if you like. + +If you run the system from a command line, and it requires arguments (`simple` doesn't), you will provide the appropriate arguments after the command name: `system_name ... arg ...` . + +Because various platforms have different conventions, "relative paths" referenced in your system will mean something different under Unix/Linux, where they relate to the directory from which the command is launched, and under Windows, where they relate to the application's directory. + +==Executing a frozen or melted system outside of EiffelStudio== + +A system compiled in "Workbench mode" -- frozen or melted -- is normally meant for execution within EiffelStudio, not for outside delivery, since it is not optimized. If you need to execute it outside of EiffelStudio, make sure that you have access to the system_name.melted file in project_directory /EIFGENs/target_name/W_code. + +==Moving on== + +With this discussion of compilation and execution we have finished our review of the key capabilities of EiffelStudio. Not everything has been covered, but you are now familiar with the essentials and ready to discover the rest by yourself, both by trying out various capabilities -- most of which should be self-explanatory -- and examining the extensive online documentation that accompanies the product. + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/graphics-based-design.wiki b/documentation/20.05/eiffelstudio/Tutorials/graphics-based-design.wiki new file mode 100644 index 00000000..ac2d1afd --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/graphics-based-design.wiki @@ -0,0 +1,298 @@ +[[Property:title|Graphics-based Design]] +[[Property:weight|1]] +[[Property:uuid|78239225-67a7-8718-857d-f2c8fb70ef18]] +So far the project modifications that we have made used the text editor in the Editing Tool. Now let's look at EiffelStudio's ability to provide a graphical depiction of our software system. + +In line with the principles of seamlessness and reversibility recalled at the beginning of this Tour, EiffelStudio's interaction between text and diagram access to software is bi-directional. When you make a textual modification, the next incremental recompilation will update the diagram; but you can also work directly from the diagram, and the text will be generated or updated after each graphical operation. + +Many people like to use the graphical mechanisms at the beginning of a project, to draft the overall structure of a system in "bubbles-and-arrows" style, then concentrate on text as they get closer to implementation. But there is really no such obligation. At any point in the development, just use the form that is more suited to your taste and to your needs of the moment. + + +==Displaying a cluster view== + +We are going to play with the root cluster. So, we can work from EiffelStudio's default tools layout. Remember that you can reset the tools layout to the default by following the menu path: + +View --> Tools Layout --> Reset Tools Layout + +Now target an Editing tool to the class TESTROOT. So to start out, your Development window should look about like this: + + +[[Image:es gt graphics based design starting point|A starting point]] + + +Before getting started, another thing we want to do is to make sure that the the [[Making the context tool independent from the editor|tools are in "Unlinked" mode]]; you can see this by going to the View menu you will see either a menu item '''Unlink Context Tool''' (if tools are currently "Linked") or an item '''Link Context Tool''' (if tools are currently "Unlinked"). So if you see '''Link Context Tool''', you don't have to do anything. But if you see '''Unlink Context Tool''', then select that item to unlink the tools. + +Let's start working with '''cluster views''', showing the content of a cluster. Make the Diagram tool visible: move your cursor over (or click on) [[Image:diagram-tool-tab|Diagram tool]] at the bottom of the Development Window. You may want to float the tool away from the Development Window or "pin" it open (as we learned in the section on [[Customizing the tools layout and toolbars#Docking|docking]], and then maybe enlarge the tool some. You should see a graphical rendition of the root_cluster in the Diagram tool, something like the figure below. In the case that root_cluster is not visible, click the '''Target to class or cluster''' button ([[Image:diagram-target-cluster-or-class-icon]]) on the Diagram tool's toolbar. + + +[[Image:es gt testroot cluster diagram|root_cluster diagram]] + + + + +==Hiding a class== + +First we might decide that we don't want to be bothered with class INVALID. We could delete it altogether from the system by a pick-and-drop of its bubble to the Delete ([[Image:16x16--general-delete-icon|Delete]]) hole. This is not what we want, but try this now to see the confirmation request: + + +[[Image:es gt diagram delete confirmation]] + + +Make sure to answer '''No''' to that confirmation request (you want to keep the class even though it wouldn't be a catastrophe to lose it). Instead pick-and-drop the INVALID bubble into the Hide figure ([[Image:general-reset-icon|Hide figure]]) hole. This time there is no confirmation request, since the operation is reversible -- it just affects what's displayed in the cluster view -- and the class is removed from the display: + + +[[Image:es gt class invalid is hidden|Class INVALID is hidden]] + + +You can try '''undoing''' this change ([[Image:general-undo-icon]]), then '''redoing''' it ([[Image:general-redo-icon]]). + +You can also click the '''History''' icon ([[Image:general-undo-history-icon]]) which, during the rest of the session, will display the list of executed operations, and let you undo or redo many operations at once by clicking the oldest to be kept or the youngest to be redone. + +For the rest of this discussion we assume INVALID is hidden. + + +==Adding a class== + +We are now going to add a class graphically to our system. This means you don't have to worry about creating and initializing a file; EiffelStudio will take care of the details. + +The useful button here is '''Create new class''': + +[[Image:es gt create new class button|Create a new class]] + +When you click this button you'll see the '''Add New Class''' dialog box: + + +[[Image:es gt new class dialog]] + + +Overwrite the default class name being proposed by the name HEIR2, as we are going to create a new heir of PARENT. Now click the button labeled '''Create'''. + +The new class is created and added to the diagram as part of root_cluster: + + +[[Image:es gt class heir2 created|Class HEIR2 created]] + + +Using conventional drag-and-drop (not pick-and-drop), move the class bubbles for HEIR2, TESTROOT and PARENT so that the display looks approximately like the following. The double circle around TESTROOT is the [[Notation|BON]] (Business Object Notation) convention to identify a system's root class. + + +[[Image:es gt class heir2 relocated|Classes rearranged]] + + +==Adding an inheritance link== + +Now we are going to make HEIR2 an heir of PARENT. To create relationship links between classes you pick-and-drop from the source class, but don't do that yet. First we have to specify that we want an inheritance relationship. + +By default, the new relationship '''Creation Mode''' will be client/supplier ([[Image:diagram-new-supplier-link-icon]]). To change the creation mode to inheritance, click on the selection triangle next to the new client/supplier link icon, and choose '''Conforming inheritance Creation Mode ...''' from the drop-down menu, as shown below. + + +[[Image:es gt select conforming inheritance link creation mode|Selecting Conforming Inheritance Creation Mode]] + + +Notice that the current Creation Mode icon has changed to indicate conforming inheritance ([[Image:diagram-new-conforming-inheritance-link-icon]]). + +Now pick-and-drop from the HEIR2 bubble to the PARENT bubble. (Now you see why conventional drag-and-drop is used to move bubbles: pick-and-drop on the diagram serves to add links between classes). + +[[Image:es gt class heir2 inheriting parent|HEIR2 now inherits from PARENT]] + +To convince yourself that the new class has been made an heir of PARENT, not just in the diagram, but in its text as well, you can look at the class in an Editing tool. Unless you are so fortunate as to have plenty of monitor space, you may have to un-pin the Diagram tool to be able to see the Editing pane. Pick-and-drop HEIR2 bubble to the Editing tool to see its text. + + +[[Image:es gt class heir2 text|Class HEIR2 in an Editing tool]] + + +The code for a minimal class HEIR2 has been generated from your graphical operations: creating the class produced a class template, and the creation of the new inheritance link made HEIR2 inherit from PARENT. + +In a moment we'll use this Editing Tool to see how, conversely, EiffelStudio will automatically reflect in the diagram a change made to the text. + +For now, make sure the Diagram tool is visible again. + + +==Adding a client link== + +Next let's make TESTROOT a client of HEIR2. + +First, re-select ''Client-Supplier''' as the Creation Mode for new links. + +Pick-and-drop from the TESTROOT bubble to the HEIR2 bubble. This causes the '''New Feature''' dialog box to appear: + + +[[Image:es gt new feature dialog|The New Feature dialog box]] + + +This technique gives you many option and in fact is a convenient way to build your classes, whether at the analysis, design or implementation level. Here, fill the fields as follows. For the top choice, keep the default, Attribute; we'll give class TESTROOT an attribute of type HEIR2. For its feature category, keep the choice currently displayed, Access. For its name, replace the default, by the name o3. In the '''invariant''' box, choose + + o3_not_void: o3 /= Void + + +from the list to specify the invariant property that this attribute should never be void. Finally, to see how EiffelStudio can generate the full accompaniment to an attribute, in the box '''Setter?''' choose + + set_o3 + + +This will create a routine with this name which clients can use to set the value of o3. + +You may have noticed that the checkbox labeled '''Assigner?''' became enabled when you chose a name for the '''Setter'''. This will make the setter routine be called if a client uses an assignment of the form: + + my_testroot.o3 := some_value + + +The assigner makes this is a syntactical shortcut for writing: + + my_testroot.set_o3 (some_value) + + +Without the assigner, the direct assignment by a client would result in a syntax error, because in Eiffel clients are prohibited from assigning directly to their suppliers' attributes. + +So, check the '''Assigner?''' box. + +Now, click '''OK'''. + +The diagram now shows that TESTROOT is a client of HEIR2. + + +[[Image:es gt testroot is client of heir2|TESTROOT is now a client of HEIR2]] + + +Now, if you'd like, you can check the text of TESTROOT as we did earlier with HEIR2, but here are the highlights: + +You'll notice that the attribute o3 has been added under the feature category "Access": + + +feature -- Access + + o3: HEIR2 assign set_o3 + -- `o3' + attribute Result := ({like o3}).default end --| Remove line when attached attribute is correctly assigned + + +After the attribute declaration the keyword assign declares that the feature set_o3 is to be called when assignments are made to o3 by clients. + +You see that the header comment is trivial ( -- `o3' ), simply echoing the feature name. This is because we failed in our duty to fill in a reasonable header comment in the New Feature dialog. Every feature should have a meaningful header comment. + +Now notice the last line, beginning with the keyword attribute. This line is intended to be temporary. It makes your new attribute o3 a [[Void-safety: Background, definition, and tools#Self-initializing attributes|self-initializing attribute]], which just allows you to avoid certain errors until you insert code to initialize o3 properly. + +The "setter" routine for o3 is generated and categorized as "Element change": + + +feature -- Element change + + set_o3 (an_o3: like o3) + -- Assign `o3' with `an_o3'. + require + an_o3_not_void: an_o3 /= Void + do + o3 := an_o3 + ensure + o3_assigned: o3 = an_o3 + end + + +Notice that EiffelStudio has included both a precondition and postcondition for set_o3. + +Also, a clause has been added to the class invariant to ensure that set_o3 is not void: + + + o3_not_void: o3 /= Void + + +The situation here is different from what we saw earlier with HEIR2, which had been generated from scratch by the diagram. Here TESTROOT existed before, in text form; so the diagram mechanisms have had to preserve the existing feature and feature clauses, and add the elements corresponding to what you have specified through the diagram mechanisms. The unlabeled Feature clause of the existing class has been kept; the new features have been entered into clauses labeled Access and Element change, observing the Eiffel standard for common feature clauses in libraries. + + +==Updating the diagram from the text== + +In this tour of the diagram facilities we have, so far, worked on the diagram and seen the text updated immediately. Of course we want full reversibility. So let's make a change in the text and check the diagram. + +The change will be very simple. We'll make TESTROOT a client of HEIR. In the Editing tool, add an attribute declaration + + other: HEIR + + +Now save the file by clicking the [[Image:16x16--general-save-icon|save]] icon. + +Nothing happens yet to the diagram. This is normal: EiffelStudio doesn't update the diagram every time you type some text (which, for one thing, might be syntactically incorrect, or invalid). You need to recompile first. Click the [[Image:compile-button]] button. Then the new relation appears: + + +[[Image:es gt testroot is client of heir|Now TESTROOT is a client of HEIR]] + + +If the label other of that relation doesn't appear in the exact place shown here, try moving it using conventional drag-and-drop. You can only move such a link label within a small area on either side of the link. + + +==Creating a cluster== + +Earlier on, we saw how to create a class from the EiffelStudio diagram, letting EiffelStudio take care of creating and initializing the file. Similarly, you can create a new cluster graphically, and let EiffelStudio create the corresponding directory. + +To create a cluster, you can go through [[EiffelStudio: Project settings window|Project settings]], or you can do so directly from the Groups tool. Let's use the Groups tool. On the title bar of the Groups tool, you'll find the '''Add a cluster''' button ([[Image:new-cluster-icon]]). (You may have to expand the titlebar menu through its double chevron placeholder >>). + +The resulting dialog asks you for the cluster name, and the existing cluster (non-precompiled) of which you want to make it a subcluster, here leaving only one choice: + +[[Image:es gt add cluster dialog]] + +Instead of the default name, type my_cluster; select the only possible supercluster, root_cluster, and click '''Create''' at the bottom of the dialog. + +Now the diagram shows the new subcluster: + + +[[Image:es gt new cluster added|A new cluster has been added]] + + +Try to make your display look approximately like the above; you will probably have to move (drag from the center) and/or resize (drag from a corner) either or both clusters. + + +==Moving a class to a different cluster== + +Among the many operations you can do graphically is to move a class from one cluster to another. Pick-and-drop the HEIR2 class bubble to the rounded rectangle for MY_CLUSTER. + +This graphical manipulation has caused a structural change: class HEIR2 is now part of MY_CLUSTER. Check this by expanding the Cluster Tree on the left: + +[[Image:es gt class HEIR2 moved to new cluster|Class HEIR2 has been moved to my_cluster.]] + +If you like, you can also look into the project directory -- using the Windows Explorer, or cd and ls on Unix/Linux -- and check that it now has a subdirectory my_cluster with a file heir2.e containing the text of class HEIR2. + +Clearly, it's much more convenient to use EiffelStudio for such manipulations than to move files around manually. + + +==Adjusting the display== + +A number of buttons enable you to customize the display. So far all class bubbles had the same default color. Try pick-and-dropping a bubble into the '''Color hole''' ([[Image:diagram-choose-color-icon]]) to get a color palette that enables you to select a different color. This is useful if you want to highlight classes possessing certain properties, for example classes that are part of a certain Design Pattern. + +'''Relation depth''' ([[Image:diagram-depth-of-relations-icon]]) enables you to select the depth at which inter-class relations will be displayed. (Don't change this setting now.) '''Include all classes of cluster''' ([[Image:diagram-fill-cluster-icon]]) is more useful for class diagrams than for the cluster diagram we have now, which by default included all classes of the cluster; if you click it here it will add the class INVALID that you removed earlier. There is no need to do this now. + + +==Views== + +So far the top-right '''View''' field has always shown '''DEFAULT:BON'''. You can define any number of views in your project, and apply them to various class and cluster diagrams. + +For example, using the buttons to show and hide links of various kinds you can produce diagrams that only show the inheritance links, and others that only show the client links. If you want to keep both kinds of diagram, simply define views by typing view names -- such as '''Inheritance''', '''Client''', '''All_links''' -- into the '''View''' field. + +You can also use views to retain some of the choices seen just before, such as different colors and depths. + +To load a previously defined view, just use the menu associated with the '''View''' field. + +You may remember that when we generated HTML documentation, the dialog asked you to select a view among the available ones. You can choose a different view for each cluster. + +You may have guessed that the '''BON''' in '''DEFAULT:BON''' means that the diagram view is in Business Object Notation. You can also view diagrams in UML-style notation. To do this you would click the '''Show UML''' button ([[Image:diagram-view-uml-icon]]). Click it again to return to the BON view. + + +==Class diagrams, cluster diagrams== + +In the present discussion we have used cluster diagrams. Both are interesting. To obtain a class diagram, you will target a Class tool to a class, and select the Diagram tool. By default, this shows the parents of the class. Do this now for TESTROOT. + +{{note|Because at the beginning of this page, we put the EiffelStudio context tools in "unlinked" mode, it may be necessary to synchronize the context to see the class diagram. You can do this by clicking '''Synchronize context''' ([[Image:context-sync-icon]]) in the main toolbar. }} + + +[[Image:es gt testroot class diagram]] + + +It's for class diagrams that the '''Relation depth''' ([[Image:diagram-depth-of-relations-icon]]) button is most interesting. It will let you select the exact depth that you wish displayed for each relation type: + + +[[Image:es gt relation depth dialog]] + + + +This will conclude our review of the Diagram facilities of EiffelStudio, although you'll surely discover some further riches by yourself and through the rest of the documentation. We hope the complete seamlessness between text and pictures will enable you to increase the effectiveness of your analysis work, or your design work, or your programming -- whatever level of system development you need to tackle. + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/handling-syntax-and-validity-errors.wiki b/documentation/20.05/eiffelstudio/Tutorials/handling-syntax-and-validity-errors.wiki new file mode 100644 index 00000000..61a3dcd6 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/handling-syntax-and-validity-errors.wiki @@ -0,0 +1,81 @@ +[[Property:title|Handling Syntax and Validity Errors]] +[[Property:weight|-3]] +[[Property:uuid|c2be8123-b793-f8ce-e082-d4fdacc6bbe6]] +So far we have tried to make sure that everything went smoothly. But in actual software development you may encounter error situations, and it is useful to know what can happen then. + + +==Levels of language description== + +Let's remind ourselves first of how the language is specified. The [[ECMA Standard 367|ISO/ECMA Eiffel standard]] and the book [[Eiffel: The Language]] carefully distinguish between three levels of description: '''syntax''', '''validity''' and '''semantics'''. Their roles are clearly distinct: +* Syntax defines the structure of software texts. A typical syntax rule states that an assignment starts with a Writable entity, continues with the symbol :=, and ends with an Expression. This is a purely structural specification, saying nothing for example about the types of the Writable and the Expression. +* Validity, applicable only to syntactically legal texts, defines required consistency conditions. A typical validity rule states that in an assignment the right-hand-side Expression must conform -- a property of its type, defined rigorously on the basis of inheritance -- to the left-hand-side Writable. Eiffel has about 75 validity rules; part of the language's originality is that these rules are of the "if and only if" form, not only telling you individual error cases ("this is valid only if ... ") but also reassuring you that your text will in fact be valid if it satisfies the conditions listed exhaustively. +* Semantics, applicable only to valid texts, defines the software's expected run-time behavior. A typical semantic rule states that an assignment replaces the value of its left-hand-side Writable by the value of the right-hand-side Expression at the time the assignment is executed, with precise rules on the different possible cases involving references, objects and simple values. + +You may make an error at any of these levels: +* Writing = instead of := for the assignment symbol is a syntax error. +* Writing your_integer := your_real, with the types suggested by the names, is a validity error. +* Violating a precondition, causing a division by zero, are semantic errors. + +Syntax and validity errors will be detected by the compilation process. For semantic errors, you will rely on contract checking and on the debugging tools described later. Let's look now at examples of the first two cases. + + +==A syntax error== + +To see what happens for a syntax error, replace the keyword do by dont in the routine display of class PARENT (click the position immediately after the o and type nt.). Save the file by clicking the Save button or using CTRL-S and then compile the system. + +[[Image:es gt development window syntax error 01|Purposely injected syntax error]] + +The error shows up in the [[Error List Tool|Error List tool]]. You can expand the entry to show the point at which the error was recognized by the compiler. + +To correct the error, just bring the mouse back to its location, remove the spurious nt, and click Save again; also click Compile to make sure that the project is recompiled up-to-date. + +You may wonder why the syntax error messages are not a little more verbose than just Syntax error. The reason is merely that Eiffel's syntax, being simple and regular, does not require sophisticated error messages; syntax errors usually result from trivial oversights. If you make a syntax error and the reason is not immediately clear, check the syntax summary in the [[Quick reference to the Eiffel programming language]] or the [[ECMA Standard 367|ISO/ECMA Eiffel Standard]]. + + +==A validity error== + +A validity error is a violation of one of the validity constraints given in [[ECMA Standard 367|ISO/ECMA Eiffel Standard]]. Every such constraint is identified by a four-letter code of the form VXXX (the first letter is always V). + +A validity error will produce a precise error message, which includes the validity code. Although short, the error message is usually sufficient to find out what the error is. If not, you can get the complete rule, straight from the book. + +To see this mechanism at work, let us introduce a validity error. There is in fact one ready for you in class TESTROOT. Target a Development Window to this class; at the end of its text, just before the final end, you will find the following comment line: + +-- inv: INVALID; + +If uncommented, this is a declaration of a feature of type INVALID. A class called INVALID indeed exists in file invalid.e of the root cluster, but it contains a validity error. To see what it is, remove the initial double-hyphen -- in the above line from class TESTROOT so that it is not a comment any more. + +[[Image:es gt development window validity error 01|inv: INVALID uncommented]] + +Click Save, then Compile. Compilation starts but after a few degrees it stops with an error message that appears in the Error List tool. Expand the entry and perhaps do some resizing to see it in its entirety: + +[[Image:es gt development window validity error 02|Validity error]] + +As the error message indicates, you have (shame on you) violated the validity rule VUAR, which requires the number and types of actual arguments in a routine call to match the number and types of formal arguments declared in the routine. + +One of the interesting properties of the error message is that everything in color is '''clickable''': class name, feature name, but also the error code. This means that you can start a Pick-and-Drop on any of these elements to find out more. + +For example, to see the exact context of the error, pick-and-drop the name of the affected feature, display -- appearing in green on the fifth non-blank line -- and pick-and-drop it to the Editing tool. This displays the erroneous feature: + +[[Image:es gt development window validity error 03|Validity error exposed]] + +Note on this display a special property of Pick-and-Drop when its source is a feature name appearing in a validity error message: the instruction that causes the error is highlighted. + +In the error message in the Error List tool, the error code itself, VUAR, is also clickable. Assuming the message was not sufficient to understand the error, you can use it to start a Pick-and-Drop. Do this now, by picking that code and starting to move the mouse, but not dropping yet. The pebble shape for such information elements is a question mark ? enclosed in a small gold talk bubble ([[Image:error-cursor]]). Like other picked objects, when it is not over a droppable target, the pebble will be crossed in red ([[Image:error-cursor-disabled]]). The place to drop is the Explanation hole ([[Image:error-info]]) in the Error List toolbar: + +[[Image:es gt error list tool pnd validity error|Dropping a validity error pebble]] + +When you drop the pebble, you'll see the Compilation Error Wizard appear: + +[[Image:es gt compilation error wizard 01]] + +The wizard displays the complete text of the violated rule. Depending upon the particular violation, the rule will come straight from the pages of either [[Eiffel: The Language]] or the [[ECMA Standard 367|ISO/ECMA Eiffel standard]]. In this case, the VUAR rule definition used comes from Chapter 22, page 369 of [[Eiffel: The Language]]. An rule cited from the ISO/ECMA Eiffel standard will be state as such and will include the specific edition of the standard and the section number, for example: + +VEVI, ECMA-367, 2nd edition, section 8.19.17 + + +The VUAR rule that we violated has two clauses, numbered. Since the error message showed the error code as VUAR(1), the violated clause is the first; this convention of showing the clause number in parentheses applies to all multi-clause validity constraints. + +To correct the error the easiest is to go back to class TESTROOT and reinstate the comment symbol -- (two consecutive hyphens) on the erroneous line. Save and compile to continue with a valid system. + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/how-eiffelstudio-compiles.wiki b/documentation/20.05/eiffelstudio/Tutorials/how-eiffelstudio-compiles.wiki new file mode 100644 index 00000000..91b4543e --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/how-eiffelstudio-compiles.wiki @@ -0,0 +1,214 @@ +[[Property:title|How EiffelStudio Compiles]] +[[Property:weight|3]] +[[Property:uuid|6fc86303-8afe-78af-6ca7-2853e8bfcbc3]] +So far we have relied on the compiling capabilities of EiffelStudio without exploring them in any detail. We must now understand the principles behind EiffelStudio's compiling strategy, in particular how it reconciles fast turnaround, efficient generated code, and strong typing. + + +==Compilation is automatic== + +Any speed issue aside, the most important property of the compilation process is that it is entirely automatic. + +You've seen it from the beginning of this Tour: all the information the compiler has -- obtained from a configuration file, as here, or generated automatically by the other options -- is the name of the root class and the list of directories holding Eiffel clusters. In fact it only needs these directories for non-precompiled clusters; here, because we are using precompiled EiffelBase, and because we've started EiffelStudio from the Tour's own root cluster directory, EiffelStudio has all the information it needs. + +The compiler takes care of finding all the classes that must be compiled. + +There is never any need, when compiling Eiffel systems, to supply "Make files", "include files", or other manual descriptions of inter-module dependencies. + + +==Compilation modes== + +EiffelStudio offers several forms of compilation, which you can see in the entries of the Compile menu (don't trigger any of them right now) as well as keyboard shortcuts and, in some cases, buttons: +* '''Melt''': quick incremental recompilation, doesn't optimize code for changed parts. +* '''Freeze''': incremental recompilation, not as fast as Melt, but generates more efficient code for changed parts. +* '''Finalize''': recompile entire system, generating highly optimized code. +* '''Precompile''' (available both in the Project menu and through Tools --> Precompilation wizard), to process an entire library, on which many systems can then rely without having to compile it. + +You'll quickly learn to use each of these modes to suit your needs. + + +==Criteria== + +EiffelStudio's '''Melting Ice Technology''' reconciles the following goals: +* ''Security and efficiency of the generated code'': compiling techniques for the strongly typed Eiffel programming language ensure that compilers can catch many errors before it is too late, and generate more efficient code. The "validity constraints" of the language, whose violations are caught as compilation errors, are particularly useful here, playing the role of enforceable design rules. +* ''Quick turnaround '': you should experience an almost immediate transition from the time you write or (more commonly) modify software to the time you can execute it. +* ''C code generation'': for portability, it is useful to take advantage of C in its proper role, that of a portable assembly language. C's closeness to machine concepts -- one of the very properties making it less suitable for human programming except in the case of short routines to access low-level mechanisms --, its almost universal availability, and its good level of standardization, make it an excellent target language for a code generator. This also enables the environment to benefit from the often extensive optimizations performed by good C compilers, and facilitates interfacing new software with the large body of existing C-based systems, tools and libraries. As the final output of Eiffel compilation, you can obtain a complete C package that you can either C-compile on the same machine or port to other platforms, making EiffelStudio a tool of choice for '''cross-platform development''': develop on one platform, deploy on one or more others. + + +==The Melting Ice Principle== + +The idea of the melting ice is based on the observation that, for the practicing software developer, the crucial day-to-day compilation problem is not how to process an entire system but how best to process a '''changed system''', of which an earlier state had previously been processed. + +The change may be big or small; the system may be big or small. ("Small system" here means up to a few tens of thousands of lines.) This gives four possible cases, of which only one is really critical: + + +{| border="1" +|- +| +| '''Small System''' +| '''Large System''' +|- +| Small Change +| +| xxx +|- +| Big Change +| +| +|} + + +If the system is small, as in both of the left column entries, speed of recompilation with a good compiler will be acceptable. + +In the bottom-right box, the developers have spent days or weeks changing many classes in a large system, so they will not resent having to wait a little to see the results of the recompilation, as long as the time remains reasonable. In EiffelStudio this corresponds, as we'll see shortly, to ''finalization'', which is in fact fairly fast anyway, but not as fast as the incremental modes. + +In the day-to-day, minute-by-minute practice of building and modifying software, the case that recurs by far the most often -- and can cause most frustration -- is the one marked xxx: you change only a small share of a big system. Then the result should come quickly enough. More precisely: + +{{definition|Melting Ice Principle|The time to re-process a system after a change should be a function of the logical size of the change, not of the size of the system. }} + +''The "logical size" of a change may be different from its physical size because a small physical change in a class may have consequences in many others. Imagine for example that you add a feature to class '' ANY'', although this is an extreme case and won't normally happen. Since every class is a descendant of '' ANY'', the logical change may affect the entire system.'' + +''In practice, however, most small physical changes will also be small logical changes and will only cause minimal recompilation. In particular, EiffelStudio will detect that a change does not affect the interface of a class -- for example if it's only a change to non-exported features -- avoiding the need to re-process its clients.'' + +Processing such incremental changes, in time proportional to the logical size of the changes, is known in EiffelStudio as '''melting'''. The reason for this terminology is the metaphor illustrated on the following figure. Think of a compiled system as a block of ice; it may have taken some time to "freeze" -- compile. Now you start working on it again; the changes are like melted drops of water, dripping from the ice as a result of the heat generated by your work. + +[[Image:index-140]] + +The Melting Ice Technology ensures that incremental compilation will only process the "melted" part, usually small, leaving alone the "frozen" part, which may be large. This is crucial to the incrementality of the mechanism. + +The roles of the four compilation modes follow from this analysis: +* '''Melting''' is the fastest mode: it processes the melted part without affecting the frozen part. With EiffelStudio, the melted elements will be ''interpreted'' while the rest is compiled. +* '''Freezing''' is the process of putting back the melted parts into the "freezer": bringing them to the same compiled state as the parts that have not been modified. +* '''Finalizing''' is the non-incremental process of producing a stand-alone C package and the resulting executable, extensively optimized, from the current system. +* '''Precompiling''' is the process of compiling an entire set of reusable classes, once and for all, so that it can be shared by many systems and many users without duplicating the code or compiling it again for each project. + + +==Properties of the compilation modes== + +The following table summarizes the differences between the four compilation modes: + + +{| border="1" +|- +| +| '''Regenerate C Code?''' +| '''Incremental?''' +| '''Compilation result shared between projects?''' +|- +| '''Melt''' +| No +| Yes (fast) +| No +|- +| '''Freeze''' +| Yes +| Yes (but requires C compilation of changes and linking) +| No +|- +| '''Finalize''' +| Yes +| No +| No +|- + + +| '''Precompile''' + + +| Yes +| No +| Yes +|} + + +During the production and modification of your software, you will usually alternate between melting and freezing, since both of these modes are incremental. Most of the time, you will simply '''melt''', since melting satisfies the Melting Ice Principle: the time to get back to a working system is very short -- proportional to the size of the changes. Note in particular that the unit of melting is the smallest possible one: each feature of a class -- attribute or routine -- may be melted separately. + +The main difference between melting and '''freezing''' is that freezing implies re-generating C code for the changed elements, and hence relinking the system as well. In contrast, when you melt changes, you do not change any C code: it remains frozen. + +As a consequence, melting can only process changes to Eiffel code. If you add new external code (in C, C++ or other languages whose modules will require linking), you must freeze. This is also true if you add new Eiffel agents. If you ask for a Melt in such cases, the operation will trigger a freeze anyway. More generally, the Compile button, which you have used a number of times to recompile the system in this Tour, triggers a Melt by default, and a Freeze when it has to. + +EiffelStudio knows how to hide the differences and present you with a uniform view of the frozen parts (the C code) and the melted parts. Here indeed is the full view of the picture that was previously given in part: + +[[Image:index-141]] + +When you examine a component of the system -- to edit a class, produce a view such as Contract or Interface, enable a breakpoint on a routine, run the system, inspect a run-time object -- EiffelStudio automatically knows where to look for the corresponding information: melted or frozen part. If one of your actions requires melting or freezing more elements, EiffelStudio will also handle this automatically. + +As suggested by the lower red arrow, successive melting operations "pour water into the bowl", corresponding to the elements that you have changed since the last freeze. Freezing, represented by the top red arrow, updates the C code so that it integrates all the latest changes, emptying the bowl in the process. + +Because the difference between melted and frozen code is largely invisible to users of the environment, the term '''workbench code''' will cover both kinds; workbench code is code resulting from a succession of freezing and melting operations. As long as you are working within EiffelStudio, you are using workbench code. + +When you are happy with the results of your development, you will normally finalize the system, thereby generating '''final code'''. Although not strictly required, this step is in most cases appropriate since final code is significantly more efficient than workbench code in both time and space: finalization performs a number of optimizations -- dead code removal, replacement of dynamic by static binding -- that wouldn't be justified in incremental development where, for example, some code element that is "dead" one minute may be resurrected the next moment through the addition of just one line of text. In addition, because finalized code is more efficient than frozen code, it is the natural choice if, using EiffelStudio for cross-platform development, you wish to port the resulting C-package to other architectures. + +If you have a set of reusable classes that may be useful to many applications, you can '''precompile them''' into a library. This set of classes must be ''self-contained'' in the sense that all the classes needed by any of them must be either in the library itself or in another library that you will include in the precompilation. + + +==Bytecode== + +The result of melting operations -- the contents of the "bowl" -- is an internal software representation known as melted code or (for no particularly good reason) as ''bytecode''. EiffelStudio generated bytecode serves two complementary purposes: +* It can be executed directly. This is what happens during melting: while the rest of your system, the frozen part, is executed in the form produced by Eiffel compilation generation and C-compilation of the result, the melted part is interpreted "as is" without further translation. +* It can be compiled into C for further processing. + +Internally, the melted code is in a file simple.melted (where simple is our project's name) in the subdirectory EIFGENs/simple/W_CODE of the project directory. The file is not human-readable, but as you add elements to your software and melt you watch its size grow. Whenever you freeze, it's emptied. + +{{note|For systems targeted to Microsoft .Net, bytecode is replaced by that platform's own internal code, MSIL.}} + + +==Degrees== + +You can now see the reason behind the terminology used to describe compilation steps, called '''degrees''' on the messages that flash on the screen when you do a compilation. The names are inspired by the international temperature scale -- Celsius, also known as centigrade -- where water freezes at 0 (and boils at 100, but Eiffel software never reaches that). For EiffelStudio: +* Compilation starts at degree 6, which examines the clusters of your system to determine what classes may have changed. In many cases the compilation can safely skip part of this degree. +* Degree 5 parses modified classes. It's executed not only when you explicitly request a compilation, but also when you save a class from the EiffelStudio editor, or exit from an external editor, so that you can see and fix syntax errors without delay. +* Degrees 4 down to 1 take care of melting. +* Negative degrees only take place when you freeze or finalize. +* After negative degrees comes C-compilation if needed. + + +==Using melting and freezing== + +When should you melt, freeze, finalize or precompile? The answers are simple and follow directly from the preceding overview; they provide the key to getting the environment to work for you in the most effective way possible. + +Melting is the bread and butter of the Eiffel developer. As you build your software, either from scratch or by modifying an existing system, you will regularly melt to benefit from the various checks that compilation performs and, of course, to generate executable code that you can test and debug immediately. During this process, there is no need to refreeze, since this operation (although still incremental) takes significantly more time than melting. + +Only two operations, noted above, ''require'' freezing: the addition of external (non-Eiffel) routines, such as C functions or C++ classes, and the addition of agents. The reason is easy to understand: the EiffelStudio compiler knows how to melt Eiffel software, but not software written in C or other languages; agents similarly require special code generation. + +''For the first compilation of a system that does not use precompiled EiffelBase, a Freeze is needed since class '' ANY'', from which all other classes inherit, uses some external routines. In this case the environment automatically starts a freeze even if you just click Melt. This does not apply if you have access to precompiled EiffelBase.'' + +Except for the addition of external routines or agents, freezing is never strictly necessary. It is indeed possible to use melting throughout a development, never requesting a freeze after the first compilation. But as the melted-to-frozen ratio grows, you may detect a certain degradation in the performance of the system (determined by how big a share of your system is melted, not how many times you melt it). After a while, then, you may want to refreeze. Like melting, freezing is incremental: only those parts of a system that have been logically changed will be recompiled; as with melting, the determination of what needs to be recompiled is entirely performed by the environment, without any manual intervention on the developer's part. + +The principal difference is that freezing takes longer than melting. Because of this you are requested to confirm the first time you freeze. Freeze the example system by choosing the menu entry + +Project --> Freeze +You get the following dialog: + +[[Image:es gt freeze warning|Freezing requires external compilation]] + +Note the No option: by default, freezing will start a C compilation, but you can stop after C generation if you wish. This is useful for example if you want to generate a C package for cross-development, C-compiling the result on a different platform. + +Click Yes to confirm freeze and C-compilation. Once the Eiffel compilation is complete, a message in the Development Window ( C compilation launched in background) tells you when that C-compilation has started. C-compilation does not block EiffelStudio: at this point you can continue working with the environment. Any messages from C compiler will appear in the [[External compilation pane]] of the [[Outputs Tool|Outputs tool]]. + +You will be able to execute the frozen system as soon as the C compilation finishes. + +You will note that freezing, although it takes more time than melting, is actually quite fast, both due to the speed of Eiffel compilation and to the structure of the generated C code, designed to optimize the operation of the C compiler. + +{{note|When you freeze a system targeted to Microsoft .NET, the external compilation of your system is not necessary. The intermediate language generated by EiffelStudio and other .Net compatible compilers will be converted to machine code at runtime by .Net's just-in-time (JIT) translator.}} + + +==Using finalizing== + +The main reason for finalizing a system is run-time performance of the generated system. Finalization enables you to generate the high-performance executables that are among the hallmarks of ISE Eiffel. As a consequence, finalized code is the best vehicle for cross-development: you can port the resulting C package to various target platforms and C-compile them on these platforms. + +The '''optimizations''' performed by finalization affect both space and time: +* ''Dead code removal'' strips the executable module of all the routines in the system that are not actually called, directly or indirectly, by the root's creation procedure. In a large system relying on many general-purpose classes, dead code removal can easily reduce an executable's size by one third or more. +* Finalization also applies ''static binding'' to non-polymorphic calls, and ''inlines'' some routine calls. + +As long as you continue changing, melting and freezing your system, the workbench compiling mechanisms cannot perform such optimizations: if a routine is "dead" today you may resurrect it tomorrow by adding a new call to it somewhere; and if a call is non-polymorphic a single additional assignment may require dynamic binding. Compilation can only generate optimal code by working on a full, stable system. This is the task of finalization. + +'''Cross-development''', the second reason for finalizing, is important if you are taking advantage of the portability of ISE Eiffel to develop your system on a certain platform and then run the result on target computers with possibly different architectures. A target machine may lack an ISE Eiffel compiler (unmistakably signaling its owner's backwardness) but include a C compiler. If the development and target platforms are of different architectures you will need to obtain a copy of the run-time system for the target architecture. The run-time system is also ANSI-C-based, so porting it is usually a straightforward matter. + +Note that cross-development does not ''require'' finalization, since you can cross-compile a frozen version. In practice, however, the finalized version is usually the preferred form for porting a C package because of the performance advantage. + +Finalize the example system now by selecting the menu entry + +Project --> Finalize +Here too you will be asked to confirm, although the dialog enables you to suppress that confirmation for later attempts, and you may skip C compilation. You will note that finalization is longer than freezing, but still remains quite reasonable thanks to the extensive optimization of the Eiffel compilation process and the structure of the generated C code. + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/index.wiki b/documentation/20.05/eiffelstudio/Tutorials/index.wiki new file mode 100644 index 00000000..19f06edf --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/index.wiki @@ -0,0 +1,6 @@ +[[Property:title|EiffelStudio tutorials]] +[[Property:link_title|Tutorials]] +[[Property:weight|2]] +[[Property:uuid|4d68a136-f7c2-ddd3-d30d-e16ee7692302]] +This is a guided tour of Eiffel Software's EiffelStudio interactive software development environment. + diff --git a/documentation/20.05/eiffelstudio/Tutorials/look-project-directory.wiki b/documentation/20.05/eiffelstudio/Tutorials/look-project-directory.wiki new file mode 100644 index 00000000..03217f3d --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/look-project-directory.wiki @@ -0,0 +1,31 @@ +[[Property:title|A Look at the Project Directory]] +[[Property:weight|-11]] +[[Property:uuid|d82eae3f-fe0d-3e27-008e-61afd05f8cb0]] +Before we proceed with the facilities of the environment, let's take a look at the way EiffelStudio organizes project files. + +With EiffelStudio, you build projects. Most projects yield an executable system, although you can also build a project just to define a library for use by such systems. + +Every session is relative to a project; you can start a new project from within EiffelStudio by following the menu path: + +File --> New Project + +... but please '''don't select that menu entry now''' as we have many more things to do with our current project first. + +Every project has a '''project directory''' which will contain the files generated and managed by EiffelStudio. The project directory may also host some of the source files containing your Eiffel classes, the ECF (eiffel configurationl file), and external software written in other languages. However, it is not required that everything be stored together; the source files and ecf may reside anywhere. Some users, in fact, like to put nothing other than the EiffelStudio-generated files in the project directory; this separates user-managed and system-managed files, and can facilitate configuration management, backups and porting. + +In this simple Tour, things have been set up so that all the files of interest, source texts as well as generated ones, will appear in the project directory YOURDIR (either $ISE_EIFFEL\examples\studio\tour or the copy that you have made). Go to that project directory using the Windows explorer or a cd command, and look at its contents (using ls on Unix/Linux): + +[[Image:es gt project directory 01]] + +The contents of this YOURDIR directory includes the following: +* First you see a number of files with the extension .e , for "Eiffel": heir.e , invalid.e and others. These are the Eiffel source files, each containing one class. The recommended convention is to store a class of name CLASS_NAME into a file of name class_name.e , where class_name is the lower-case version of CLASS_NAME ; here, file heir.e contains the class HEIR and so on. As you may remember, Eiffel is case-insensitive, but the standard convention for class names is to write them in all upper case. Calling the file class_name.e is only a recommendation, not an obligation; but you are required to store one class per file. This keeps things simple and facilitates project and configuration management. +* You also notice a file with an ecf extension. This is the configuration file that specifies this project. As you remember, the ECF file for this example was available as part of the delivery; we used it to compile the project. In most practical cases, however, you won't need to build an ECF; if you use the "Create project" option of EiffelStudio, EiffelStudio will build the ECF for you; if you change the Project Settings during a session, EiffelStudio will update the ECF. ECF files are written in a XML notation. +* You will notice a subdirectory called EIFGENs, for "EIF''fel'' GEN''eration''s". EIFGENs is created and maintained by the compiler to store information about your project, including generated code for execution. EiffelStudio manages your project in such a way that EIFGENs can always be re-generated if need be; this means in particular that if things go wrong for any reason and you want to make a fresh start you can always delete this directory and recompile your system. This also means that you should not add any files into this directory, or modify any of its files, since a later compilation is free to change or regenerate whatever it chooses in EIFGENs. +* Because the demonstration system for the Tour is a Microsoft Windows system, there is a file named simple.rc in the folder. This is a Windows resource file that was created automatically by EiffelStudio. + +Later on, we will see that EiffelStudio may generate three more subdirectories of the project directory: Diagrams, if you produce graphical system diagrams; Documentation, if you request system documentation, for example HTML; and Metrics, if you perform measurements on your system. Other than these directories, EIFGENs EiffelStudio will not touch anything in the project directory, so you may safely add and change whatever files and subdirectories you like. + +You seldom need to look into EIFGENs, although you should know that it's there. Right now if you check the contents of the project directory YOURDIR (using the Windows Explorer on Windows, the ls command on Unix, or some equivalent mechanism), you will see that EIFGENs has been created, itself with a subdirectory called classic which is the name of the target and which has some subdirectories, including W_Code which contains the generated code ( W for "Workbench" -- we'll see the reason later). Feel free to browse through it if you like, but don't change anything. + +By the way, we are now done with any platform-specific instructions. Everything in the rest of this Tour, other than the graphical look-and-feel, will work the same across all EiffelStudio platforms. + diff --git a/documentation/20.05/eiffelstudio/Tutorials/manual-identification-and-copyright.wiki b/documentation/20.05/eiffelstudio/Tutorials/manual-identification-and-copyright.wiki new file mode 100644 index 00000000..8746fab5 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/manual-identification-and-copyright.wiki @@ -0,0 +1,41 @@ +[[Property:modification_date|Wed, 18 Sep 2019 08:06:58 GMT]] +[[Property:publication_date|Wed, 18 Sep 2019 08:06:58 GMT]] +[[Property:title|Manual identification and copyright]] +[[Property:weight|7]] +[[Property:uuid|c581a81b-fc9b-99bd-e73a-f290f6051a45]] +Title: ''EiffelStudio: A Guided Tour'', Eiffel Software Technical Report TR-EI-68/GT. (Replaces TR-EI-38/EB.) + +===Publication history=== + +First published 1993 as ''First Steps with EiffelBench'' (TR-EI-38/EB) and revised as a chapter of ''Eiffel: The Environment'' (TR-EI-39/IE), also available as An Object-Oriented Environment (Prentice Hall, 1994, ISBN 0-13-245-507-2. + +Version 3.3.8, 1995. + +Version 4.1, 1997 + +This version: July 2001. Corresponds to release 5.0 of the EiffelStudio environment. + +===Author=== +''Bertrand Meyer'' +===Software credits=== + +Emmanuel Stapf, Arnaud Pichery, Xavier Rousselot, Raphael Simon; Etienne Amodeo, Jrome Bou Aziz, Vincent Brendel, Gauthier Brillaud, Paul Colin de Verdiere, Jocelyn Fiat, Pascal Freund, Savrak Sar, Patrick Schonbach, Zoran Simic, Jacques Sireude, Tanit Talbi, Emmanuel Texier, Guillaume Wong-So; EiffelVision 2: Leila Ait-Kaci, Sylvain Baron, Sami Kallio, Ian King, Sam O'Connor, Julian Rogers. See also acknowledgments for earlier versions in ''Eiffel: The Environment''(TR-EI-39/IE) + +Non-Eiffel Software: special thanks to Thomas Beale, Eric Bezault, Paul Cohen, Paul-Georges Crismer, Michael Gacsaly, Dave Hollenberg, Mark Howard, Randy John, Eirik Mangseth, Glenn Maughan, Jacques Silberstein. + +===Cover design=== + +Rich Ayling. + +===Copyright notice and proprietary information=== + +Copyright Interactive Software Engineering Inc. (Eiffel Software), 2001. May not be reproduced in any form (including electronic storage) without the written permission of Eiffel Software. "Eiffel Power" and the Eiffel Power logo are trademarks of Eiffel Software. + +All uses of the product documented here are subject to the terms and conditions of the Eiffel Software user license. Any other use or duplication is a violation of the applicable laws on copyright, trade secrets and intellectual property. + +Any third-party products mentioned in this document are hereby acknowledged as trademarks of their respective owners. + +===Special duplication permission for educational institutions=== + +Degree-granting educational institutions using EiffelStudio teaching purposes as part of the Eiffel University Partnership Program may be permitted under certain conditions to copy specific parts of this book. Contact [https://www.eiffel.com Eiffel Software] for details. + diff --git a/documentation/20.05/eiffelstudio/Tutorials/producing-and-exporting-documentation.wiki b/documentation/20.05/eiffelstudio/Tutorials/producing-and-exporting-documentation.wiki new file mode 100644 index 00000000..bde3f645 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/producing-and-exporting-documentation.wiki @@ -0,0 +1,161 @@ +[[Property:title|Producing and Exporting Documentation]] +[[Property:weight|-7]] +[[Property:uuid|ca43a3c2-9e1a-a69f-81cf-55d0b12294ea]] +Software development is, most of the time, cooperative work. You must tell the rest of the team what you're up to, and find out what they can offer you. Bring in distributed development -- increasingly common these days, with some people working at headquarters, others at home, others traveling, an offshore team half a world away ... -- and the problem becomes even more critical. + +EiffelStudio provides unique facilities to make such distributed development possible in a safe, effective, harmonious way. Some of the key criteria are: +* You must be able to export the information easily to the World-Wide Web, the most general and widely available interaction mechanism. +* The documentation must be faithful to the software. Because of the ever-changing nature of software, this goal is impossible to satisfy unless the documentation is extracted from the software -- as opposed to the traditional approach, still perpetuated by many CASE tools, of treating the two as separate. +* The task of updating the documentation after a software change must be straightforward and automatic. +* It's not enough to support HTML; many other formats are useful too. +* Users must have the ability to adapt the mechanism to support new formats. +* For existing formats, they must have a way to tune the output easily to any specific style standards, company policies, local variants. + +EiffelStudio's documentation generation satisfies all these requirements. + +==Documentation filters== + +Let's see how documentation works by starting to generate it for our Guided Tour system -- which really means for EiffelBase, since that's what it mostly consists of. The HTML result is available as part of the present documentation (we'll tell you where in just a minute), so you don't have to regenerate it unless you want to. Indeed we'll show you when to click Cancel if you are happy with the pre-generated version. But let's get started anyway to understand the principles and possibilities. + +Click the following menu entry, used to generate documentation: + + Project --> Generate documentation... + + +This is the next-to-last entry in the Project menu. The last one, by the way, XMI Export ..., is directly relevant too: it will make it possible to export information in the standard XML representation for UML, for consumption by third-party products such as Rational Rose. But for the moment we choose the Documentation entry to start the Eiffel Documentation Wizard. + +The Wizard starts with a list of available output formats, also called filters: + +[[Image:index-37]] + +The filter names correspond to major documentation formats which EiffelStudio supports by default. Among the most important, listed here in rough order of appearance in the list: +* ASCII : plain text, no formatting codes. +* eiffel : essentially the same as ASCII; useful if you want EiffelStudio to pretty-print your class texts and replace the originals, as explained below. +* MML : internal format for Adobe FrameMaker. +* Postscript : to generate Adobe Postscript output, suitable for printing on a Postscript printer, display on a Postscript previewer such as Ghostscript, or distilling to Adobe PDF. +* COM : to generate class specifications in the form of an Interface Description Language (IDL) interface for Microsoft's COM component model. +* RTF : Microsoft's Rich Text Format, used in particular for Windows "Help" files. +* TeX1, TeX2 : two variants for Donald Knuth's TEX processing format. +* troff : if you already know what this is, congratulations (or condolences), you've been around the industry for a while. This is a traditional text-processing format available on Unix systems. Also works for the gtroff variant. +* html-classic : HTML, no style sheets. The next variant, with style sheets, is strongly recommended unless your colleagues will be reading your documentation with Mosaic 1, vintage 1993, or Netscape 2, Vintage 1995. +* html-stylesheet : HTML with style sheets. This is particularly attractive for Web publishing not only because the output makes full use of style sheet capabilities (fonts, colors, layout, formatting) but also because it becomes trivial to change the look-and-feel to support any style you or your users like, even after generation, simply by editing the style sheet file. + +Not only do these predefined filters provide support for a number of important industry formats; better yet, if you want another format not represented on the list, or would like to adapt an existing format to your own style preferences, it's easy to define a new filter. The list that EiffelStudio displays comes from the files with a .fil extension that it finds in a subdirectory of the installation: +$ISE_EIFFEL/studio/filters + +To define a new filter, simply add a file to this directory. Filters are expressed in a simple notation called EFF ( Eiffel Filter Format ), general enough to support a wide variety of tools for text processing, project management, Web publishing etc. The best way to define a new filter is usually to start from an existing one and adapt it. You will find the specification of EFF at the end of this manual, [[APPENDIX: WRITING DOCUMENTATION FILTERS WITH EFF, THE EIFFEL FILTER FORMAT|here]] . + +==Generating an HTML record of your project== + +Let's select the most obviously attractive of the predefined filters: HTML with stylesheets. Click the line html-stylesheet in the list to make it active, then click Next at the bottom of the Documentation Wizard window. The next window appears: + +[[Image:index-38]] + +In this pane you select which parts of your system you want to be included in the documentation. By default, all library and cluster names are checked. You should uncheck any that you do not want included. + +Note that each library or cluster name must be checked or unchecked individually. For example, unchecking "base" will not automatically deselect "elks" and "ise" which appear under "base". + +For this Tour we'll want to generate everything, including EiffelBase, so make sure that in the end all library and cluster names are checked, as in the figure. Then click Next. + +==Generating Metatags from Note entries== + +The next step of the documentation wizard asks you to select Note entries: + +[[Image:index-39]] + +Eiffel classes, as you know, may start with an note entry that enables class authors to include documentary information in any category they like. It is standard (and part of the official style guidelines) to include at the very least an entry of the form description: Descriptive text in every class. The earlier displays of class LIST showed that entry, which read " Sequential lists, without commitment to a particular representation". + +You may have noted that the purpose of Eiffel's note clauses is, conceptually, similar to that of '''metatags''' in HTML. Metatags carry information which Web page visitors do not normally see in the browser; this information is available, however, to search engines and other tools that explore and classify Web pages. So it seems quite appropriate to generate metatags from note entries. + +The dialog illustrated in the last figure lets you select the entries you wish to transform into metatags. It appears only if you have selected an HTML filter. It lists all the note tags found anywhere in the system; those that are checked will be retained for metatags. Initially unchecked are three tags ("date", "revision", and "status") conventionally used -- at Eiffel Software and other Eiffel sites -- for interfacing with configuration management tools, and hence of internal interest only. + +There is no need to change the default selection, so just click Next. + +==Choosing a level of detail== + +The next step of the Documentation Wizard lets you specify what kinds of documents you want to generate: + +[[Image:index-40]] + +This is a very important facility since it gives you control over how much you want to publish about the properties of the software: +* You may want to publish everything, source included, for example on your Intranet for a group of developers working closely together on the same classes, or on the Internet for open-source software. +* You may want to publish only the interfaces (Contract or Flat-Contract views). This is not necessarily to protect proprietary information; even if you don't care about showing your source code, it is usually too detailed for client programmers, especially in the case of libraries. If various teams work on separate parts of a project, what each releases to the other should usually be the specification, not the implementation. +* You may of course want to publish both the text and the interface, and let the recipients use the version that best suits their needs for each use. +* You may want to publish the diagrams, showing the structure in graphical form. Note the warning -- which we are about to ignore -- telling us this may take a while. +* The class list, cluster list, cluster hierarchy view, cluster chart (following the conventions of BON) are also optional. + +The dialog shown on the last figure lets you specify the exact combination you wish. The figure indicates the default options. + +This time, if we generate anything, we'll generate everything. Please check '''all''' the boxes (the generation won't occur until the last step) and click Next to move to the next dialog of the Documentation Wizard. + +==Specifying cluster views== + +The next dialog only appears when you have asked to generate diagrams: + +[[Image:index-41]] + +Although we didn't use this possibility yet, the Diagram view lets you define different subviews of any cluster. One view might show inheritance only, the other client links only; one might include all classes, the other hide some library classes. The last dialog shown will allow you, for any cluster, to select a subview other than the default for the generated diagram. + +Here we only have the default view, so just click Next. + +==Generating== + +The last dialog simply asks you where you want to generate the result: + +[[Image:index-42]] + +By default, as shown, EiffelStudio will produce the documentation in a subdirectory -- created for the occasion, if it doesn't exist yet -- of the project directory: + +.../your_project_directory/Documentation + +You may, however, select any other location you like. In the case of HTML generation, as here, EiffelStudio takes great care to use only '''relative hyperlinks''' so that you can move the Documentation directory around, for use either on a file system or on your Web site, with the guarantee that the hyperlinks will work -- as long as you move the entire directory together. + +To continue the Guided Tour, you do '''not''' need to complete the generation now unless you want to. If you are happy to continue without generating the documentation at the moment then click Cancel on the last dialog. + +{{note|If you do prefer to produce your own local version of the full documentation for the guided tour system, click "Finish". The process takes 7 minutes on the Thinkpad configuration mentioned earlier, and generates a documentation directory of about 220 megabytes. }} + +==Browsing generated documentation== + +Let's take a look at the generated documentation. We start with the root of the generated documentation, Documentation/index.html : + +[[Image:index-43]] + +This root page shows overall information about the system. The top set of links, repeated at the bottom, enables you to browse the system from its list of classes, its list of clusters, or the cluster hierarchy; note the box labeled to Go, which provides a built-in search engine, enabling you to type any class list and go directly to the corresponding page. Let's look at the class list: click the box Classes at the top left. + +[[Image:index-44]] + +This shows the beginning of the list of classes, alphabetically sorted. You could click any class to get the corresponding information, but wait; we'll look at individual classes in a moment. Instead, click Cluster hierarchy to see the overall organization of the system into clusters: + +[[Image:index-45]] + +Click BASE to see details of the EiffelBase library where (under EiffelStudio) we had found the class LIST used as example in the preceding sections: + +[[Image:index-46]] + +This indicates the relations of the cluster to others in the hierarchy, and its list of classes. Again you could click any class name but instead note the link (diagram) next to the cluster name near the top. Remember that when generating the documentation we elected to generate everything, diagrams included. Hadn't we checked the corresponding check box, the (diagram) link wouldn't be there. Click it now to get the diagram that has been generated for BASE: + +[[Image:index-47]] + +The output is a diagram showing graphically the classes of the cluster and their inheritance relations. All EiffelStudio-generated HTML diagrams use the PNG graphics format ( Portable Network Graphics ), supported by all recent browsers. + +The class bubbles in a diagram are all hyperlinks. To see the HTML documentation for our old friend the class LIST you could just click its bubble. But because this diagram includes the whole library and is automatically generated, you'd have to look around a bit for the LIST bubble. Go ahead and do that if you wish, or just type the class name LIST into the Go to field and press return: + +[[Image:index-48]] + +The display shows key information on the class, in a form called the "Chart format" listing the ancestors and then the features, divided into Queries (shown in part on the figure) and Commands. Note that all class names and feature names are hyperlinks, which would lead you to the appropriate place in a class text. + +The top row of hyperlinks now includes class formats corresponding to those we discovered in [[Viewing Classes]] in EiffelStudio: Relations (covering ancestors, descendants, clients, suppliers, ), full Text, Contracts, Flat contracts. Click Flat contracts to see the full interface of the class: + +[[Image:index-49]] + +We'll stop this brief review here but you may continue browsing through the HTML pages if you like. Note how closely the appearance of the class texts, flat forms, contract forms, diagrams and other forms of documentation matches the corresponding formats under EiffelStudio. + +Although we suggest staying with the standard, you can easily change any convention that doesn't match your own preferences: +* For the EiffelStudio appearance, use Tools --> Preferences. +* For the HTML appearance, if you know about Cascading Style Sheets (CSS) for HTML, edit the style sheet default.css. You will find this file in the generated documentation directory; alternatively, to ensure the changes are applicable to the generated documentation of all future projects, edit defaults.css in the directory after backing it up. For more profound changes in the structure of the generated HTML, you may also backup and edit the Eiffel Filter Format file html-stylesheet.fil in the same directory. EFF is described in the [[APPENDIX: WRITING DOCUMENTATION FILTERS WITH EFF, THE EIFFEL FILTER FORMAT|Appendix]] . + + $ISE_EIFFEL/studio/filters + + +The documentation generation mechanisms, using HTML or other formats, let you publish your designs, at the level of detail you desire, on an Intranet, the Internet, or as part of documents you release. They are an important part of the power of EiffelStudio for quality software development. + diff --git a/documentation/20.05/eiffelstudio/Tutorials/recompiling-and-editing.wiki b/documentation/20.05/eiffelstudio/Tutorials/recompiling-and-editing.wiki new file mode 100644 index 00000000..4a9df320 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/recompiling-and-editing.wiki @@ -0,0 +1,173 @@ +[[Property:title|Recompiling and Editing]] +[[Property:weight|-4]] +[[Property:uuid|6574a573-48b9-6088-aa98-53d7119d7c5c]] + +So far we have relied on existing class texts. Fascinating as it may be to explore excellent software such as EiffelBase, you probably want to write your own too (with the help of the reusable components in the Eiffel libraries). EiffelStudio provides a built-in editor -- as well as the ability to use some other editor if you prefer -- and sophisticated compilation mechanisms. + +==Recompiling== + +When we started, we compiled the example system. Let's recompile it, just to see. We'll see compilation entries in the Project menu, but the easiest for the moment is to use the compilation button ([[Image:compile-button]]) in the Project toolbar. Click this button. You haven't changed anything in the project since it was compiled (at least you were not supposed to!), so EiffelStudio will very quickly detect this and finish compilation. On our test platform this takes less than a second. Now of course we should see what happens if you do change something. + + +==Editing== + +We don't want to touch EiffelBase classes (and in fact can't, since it is used in precompiled form), so let's focus on classes of our small root cluster. In the Groups tool, expand cluster root_cluster and click class PARENT to retarget the Development Window to it. + +Make sure that the Editing Tool is big enough to display the text of the class: + +[[Image:es gt development window targeted to parent 01|Class PARENT in Editing tool]] + +The Editing Tool hosts a text editor which you can use to change the class text. Here the routine display starts by outputting a simple message; let's precede it by another line of display to check that we affected the outcome. We'll want to add the following two lines just after the do, before the first two instructions of the routine: + + io.put_string ("THIS IS SOME ADDED TEXT") + io.new_line + + +You can just use copy-paste from the example above: select the two lines with the mouse, copy them using CTRL-C (or Copy from the Edit menu), then paste them just after the do using CTRL-V (or Paste from the Edit menu). Add or remove tabs to align with the rest of the routine, so that the result will look like what's shown on the next figure. Please check the result and be careful not to introduce any mistakes; in the next section we'll study how EiffelStudio will report syntax and other errors, but right now we want to see what happens when everything is right! + +[[Image:es gt development window targeted to parent 02|Class PARENT with changes]] + +Now save your changes; you may indifferently use CTRL-S, the Save entry from the Edit menu, or the Save button ([[Image:save-button]]), at the cursor location on the figure. (If you forget to save, the next compilation will tell you so, and ask you if from now on you want all non-saved class edits to be saved automatically.) + + +==Recompiling and executing after a change== + +Next compile again, using the Compilation button. Some "degree" messages appear quickly; EiffelStudio has found out what class has changed and deduced what exactly to recompile -- only a subset of the whole system. So this again will proceed very quickly. + +Execute the system again now, using one of the execution buttons, with or without breakpoints, on the right in the bottom Project toolbar. You will see that the message output by the execution has changed to include the added string. + + +==Views in the Editing Tool== + +In studying the Class tool we discovered a number of views of a class text. For convenience, you can also display a number of these views in the Editing Tool, although only the basic Text view is editable. A row of buttons next to the Class and Feature fields lets you choose between them. + +[[Image:view-buttons]] + +You can try some of these view now, although there is nothing exciting to show about class PARENT. Make sure to come back to the Text view -- through the leftmost of these buttons -- so that we can continue exploring the editing facilities. + + +==Basic editing facilities== + +The editing facilities in the Editing Tool are provided by the EiffelStudio Editor, a specialized tool supporting the development and update of Eiffel texts. As we'll see next, if you have a preferred editor you can use it instead, but the EiffelStudio Editor is worth knowing. + +The [[EiffelStudio Editor|EiffelStudio Reference section]] on the Editor provides many more details about editing functions. Here are the essentials. + +First, the key property of any interactive system: '''Undo'''. You can cancel the latest editing command, or any earlier one performed during the current session, by choosing Undo from the Edit menu, or typing CTRL-Z. To cancel more than one command, apply Undo repetitively; there is no limit to the number of undoable commands within a session. (When you exit EiffelStudio, however, the editing history is lost.) To redo an undone command, use Redo from the Edit menu or CTRL-Y. + +{{note|Since right now we don't need to do any actual editing to continue this Guided Tour, we suggest that you don't change the text of class PARENT but simply look up the menu entries described next, without actually selecting them. If you do make a change, voluntary or not, you should at the end of this editor discussion perform enough Undo commands to get the text of class PARENT back to its original state. }} + +To '''copy''', '''cut''' and '''paste''' use the corresponding entries in the Edit menu or the familiar keyboard shortcuts CTRL-C, CTRL-X and CTRL-V. + +When you edit text, it will be automatically '''indented''' according to standard Eiffel style rules. If you prefer to remain in charge of your own indenting, you can disable this facility through + +Tools --> Preferences --> Editor + +To indent a sequence of lines, select the lines, then use + +Edit --> Advanced --> Indent selection +You can also use the Tab key, but only if the selection consists of one or more entire lines; otherwise typing Tab will simply replace the selected text with a Tab character. Shift-Tab will similarly decrease indentation by one step. + +To '''comment out''' a sequence of lines, select them and use + +Edit --> Advanced --> Comment +or CTRL-K. Conversely, CTRL-Shift-K will uncomment. Also in the Edit --> Advanced menu are "set to upper case", with the keyboard shortcut CTRL-U, and to lower case, CTRL-Shift-U. + +Other useful facilities of the Edit --> Advanced menu are: +* Embed in "if", or CTRL-I, which will create a conditional instruction and include the selected instructions in it. +* Embed in "debug", CTRL-D, which will include the selected instructions in a debug ... end instruction, so that their execution becomes conditional on a Debug compilation option. + + +== Search and replace == + +The editor lets you search for text and replace occurrences, individually or globally. We assume you have seen a text search facility before, so we'll just emphasize some of the less obvious features. + +To start a search, make sure the [[Search Tool]] is active by clicking the Search button in the top toolbar (this one we'll let you find) or using the + +Edit --> Find + +menu entry. + +{{note|If you press CTRL-F in a tool you will get a quick search bar that quickly allows you to search for something in the current text.}} + +The [[Search Tool]] presents a number of self-explanatory options: + + + +[[Image:search-tool]] + +You can enter a term to replace your search term in the Replace with box. + +Having filled the two fields, you can elect to replace the last found occurrence, or all occurrences at once. + +The Search for field has an associated drop-down list, so that you can reuse a recently entered search string without retyping it. + + +==Let the editor do the typing== + +Particularly interesting are the editor's '''automatic completion''' facilities (often, we shorten the name to '''auto-completion'''). Well, particularly interesting for ''most'' people: maybe you like your editor to do the grunt work for you, or maybe you don't. In the latter case -- if you prefer to be in control of all the details -- don't worry: through + +Tools --> Preferences --> Editor +you can easily disable any facility that you don't like. The behavior described here is the default. + +The EiffelStudio Editor knows about Eiffel syntax and will recognize syntactic elements as you type them. It will color them according to standard conventions: basic elements in black, keywords in blue, comments in dark red. You can change these conventions through Preferences. + +If you start typing a control structure through its opening keyword, such as if, or from for a loop, the editor will automatically display the structure of the whole construct. Here for example is the result if you type the from followed by Return/Enter at the beginning of our example routine: + +[[Image:es gt auto complete from 01]] + +This has produced the structure of an Eiffel loop: from ... until ... loop ... end. You can then fill in the blanks with the appropriate expression and instructions. The generated lines start with the appropriate number of Tab characters to support the standard Eiffel indenting conventions. If you want a more compact style, follow the from with a space rather than Return. Typing if followed by Return or a space will similarly produce the outline of a conditional instruction. + +Also interesting is '''feature completion'''. Feature completion is activated by default, and it works at two levels: +* You can type the beginning of the name of a feature of the current class, then CTRL-SPACE to get possible completions. +* Once you have typed the name of a query (attribute or function), either all by yourself or aided by the previous completion technique, you can type a period to get the list of possible features to be applied, deduced from the list of features in the corresponding class (the type of the query). + +In both cases, if more than one completion is possible, you will get a menu of the possibilities. You can scroll through it with the up and down arrow keys, or the mouse, and select one through Enter or double-click. You can also or give up through the Escape key. + +Here for example is the menu you will see in the body of our example routine if you type io. , where io is the feature, coming from class ANY, that provides access to standard input and output facilities: + +[[Image:es gt auto complete feature 01|Feature auto-completion]] + +If only one completion is possible, no menu appears; the completion is selected. + +When a menu of possible completions is displayed, you can use the arrow keys to traverse the list. + +If you select a routine with arguments, auto-complete will show the arguments and their types, allowing you to provide your value for each argument. The figure below shows auto-completion of a routine with only one argument. + +[[Image:es gt auto complete argument 01|Auto-completion of arguments]] + +You can see that the argument is pre-selected and is of type STRING_8. As soon as you begin to type your substitution for the argument, the pre-selected argument definition is replaced with what you type. When you complete an argument, the Tab key will either pre-select the next argument (in the case of routines with multiple arguments), or place the cursor to the right of the right parenthesis that terminates the routine call (in the case of the last argument). + +Auto-completion will only work for queries that were present at the time of the last successful compilation. So if you add an attribute, say attr, to the current class, and do not recompile, typing a then CTRL-SPACE will not display attr. To make sure that it's included in completion proposals, save and recompile. (Remember, incremental compilation is fast in EiffelStudio, so there is nothing wrong in compiling early and often.) The same rule holds for features of ''other'' classes, those that will appear in proposed completions after a period. + +The features proposed for auto-completion include all features of the class: those declared in the class itself, or ''immediate'' features, and those ''inherited'' from proper ancestors, direct or indirect, with one exception: by default the list will not include features from the universal class ANY, which serves as ancestor to all classes and provides many features for comparison, copying, input-output, reflection etc. Including ANY's features would clutter all menus with too many features. So for example typing i followed by CTRL-SPACE will not suggest io among the possible completions. You can change this policy through Preferences. The policy does not apply to remote feature completion for an entity x declared of type ANY. In the case that you type x., auto-completion will produce the list of ANY's features. + + +==Using your own editor== + +You may have a favorite editor and prefer to use it, at least in some cases. The EiffelStudio incremental compilation mechanism, to be studied shortly, recognizes that files have been modified outside of EiffelStudio (by checking their time stamps) and will without any fuss take their modified versions into account. + +You can also call an outside editor on a class from within EiffelStudio. Just use + +File --> External editor +or the corresponding button in the top toolbar. + +This will call the editor of your choice. The default is Notepad on Windows and Vi on Unix and Linux. You can easily change this to any editor by entering the desired editor command in + +Tools --> Preferences --> General --> External editor command + + +In this command text you can use the two special notations $target and $line ; when EiffelStudio calls the selected command, it will replace any occurrence of $target by the name of the file where the current class resides, and $line by the line number at which the Editing Tool is currently scrolled. If you include one or both of these markers at the appropriate argument positions for the command, this will enable you -- assuming the editor supports the appropriate options -- to make sure it starts at exactly the right place. For example the default editor command under Unix is + +vi +$line $target + +meaning: start the Vi editor on the $target file, initially positioned at line $line (the + line_number command-line option of Vi directs it to start at line line_number ). + +If you start an external editor on a class, then exit the editor after possibly making changes, EiffelStudio will immediately update the class text in the Editing Tool. More generally, note that EiffelStudio will detect changes made separately on the same class, and warn you of possible conflicts. + +Several important text editors from various providers have '''Eiffel modes''', which support the syntax-directed editing of Eiffel texts. They include: +* '''Vim''', for Vi iMproved, an extension of Vi available on both Unix/Linux and Windows -- see www.vim.org +* '''Emacs''' -- see www.emacs.org. +* '''Editeur''', a Windows syntax highlighting editor -- see www.studioware.com. + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/retargeting-through-pick-and-drop.wiki b/documentation/20.05/eiffelstudio/Tutorials/retargeting-through-pick-and-drop.wiki new file mode 100644 index 00000000..aa048315 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/retargeting-through-pick-and-drop.wiki @@ -0,0 +1,164 @@ +[[Property:title|Retargeting Through Pick-and-Drop]] +[[Property:weight|-5]] +[[Property:uuid|a3789781-153b-7f4d-bb94-4bdf8923fb56]] + +You now know quite a few ways of re-targeting a Development Window to a "development object" -- a class or a feature -- but haven't yet seen one of the most important: "Pick-and-Drop", which lets you pick a development object that you have spotted anywhere in the display, and retarget the current tool, or another, to it. + + +==Trying Pick-and-Drop== + +We restart from the last state, with a Development Window target to feature forth of class LIST. The next figure shows the whole window; it should look like what you see as a result of the last operations. We'll use the Descendant versions view of the Feature Tab. + +If for some reason the window doesn't look like the next figure, it's easy to reconstruct it: make sure both the Cluster tree and the Feature tree are visible (if not, make visible using the instructions given in [[Viewing Classes#Making some room|Viewing Classes]]); target the tool to class LIST; target further to its feature forth by clicking that feature name in the Features tool's roll of the features of LIST; make sure both the top-left Editing tool and the bottom-left Feature tool are visible; in the Feature tool, select the Descendant versions format. + +[[Image:es gt development window feature descendants 01|Descendant versions of forth]] + +In the Feature tool near the bottom, there is an entry that reads + + MULTI_ARRAY_LIST [G] forth + + +referring to the version of feature forth in class MULTI_ARRAY_LIST. Let's assume you want to see what that version actually is. It suffices to retarget the tool to it. Of course you could type or copy-paste the class name MULTI_ARRAY_LIST in the Class field at the top of the window, and the feature name forth in the adjacent Feature field. But there is an easier way; after all, you have just seen a reference to the feature, through its name as it appears in the Descendant version format, so it's natural to use it directly from the graphical interface. + +As we've seen before, you could control-right-click on the feature name at the place where it appears; this would create a new tab and retarget the Development Window to forth from MULTI_ARRAY_LIST. But you might not necessarily want a new tab. Instead you can use Pick-and-Drop to retarget the current window. + +Here is how it works. Position the cursor on the desired feature reference: the word forth in the line forth MULTI_ARRAY_LIST. Right-click, that is to say click the rightmost mouse button and then release it. You will see a context menu that looks like the figure below. + + +[[Image:es gt pnd context menu 01]] + + +The item we want to choose from this menu is "Pick Feature 'forth'". So do that now, by left-clicking over the item. + +Now move the mouse around some, but ''without pressing any button'': + + +[[Image:es gt picked forth 01]] + + +The cursor has changed into a new shape, a cross representing the type of development object that you have picked, a feature. For a class, as you may have guessed, it would be a small ellipse ("bubble"). Each kind of development object that you may create and manipulate during your work with EiffelStudio has its distinctive icon. When you '''pick''' an item, you'll notice that the item's icon stays connected to its origin by a dotted line that stretches or shrinks as you move the icon around. + +So, now you have '''picked''' the feature forth. You can '''drop''' it at any appropriate place to retarget the corresponding tool. Move your cursor (and the feature icon for forth) over the Editing tool now. + +To '''drop''', just '''right-click''' again. (That is to say, as before, press the rightmost mouse button and release it immediately.) Drop the icon representing {MULTI_ARRAY_LIST}.forth in the Editing tool. + +This retargets the Development Window to the chosen feature, forth from the class MULTI_ARRAY_LIST. The Feature tool (assuming the Link Context tool option is selected), keeps its current view ( Descendant versions in the Feature tool) and now shows descendants of {MULTI_ARRAY_LIST}.forth. + + +[[Image:es gt development window multi array list forth 01|Retargeted to {MULTI_ARRAY_LIST}.forth]] + + +==Bypassing the context menu== + +In the example above, when you right-clicked over an item, you were presented with a "context" menu, containing choices applicable for the item you clicked. We chose to pick the item. It's possible that if you use pick-and-drop quite a bit that you might rather not see the context menu each time you right click. You can make this happen in a couple of ways. First, if you use the context menu most of the time, but you want to pick directly at other times, you can '''shift-right-click''' to bypass the context menu and pick the item immediately. + +The other option is used if you want a right-click to pick by default, and only use the context menu occasionally. To make this happen, you need to change the '''Pick and drop (pnd) mode''' [[EiffelStudio Preferences|EiffelStudio preference]]. You can change this preference by following the menu path: + +Tools --> Preferences... + +When the preferences window opens, expand the '''General''' preferences folder. You'll see '''Pick and drop (pnd) mode''' is set to '''False''' by default. If you wish to change the behavior, then check the box and the value will change to '''True'''. Then you can exit the preferences window. + +With '''Pick and drop (pnd) mode''' set to '''True''', you will always get a pick when you right-click over an development object. If you occasionally wish to use the context menu, then you would shift-right-click, which would cause the context menu to appear. + + +==How Pick-and-Drop works== + + +The Pick-and-Drop mechanism is very simple. It consists of three steps: +* '''Pick''' step: find the development object and pick it: either through the context menu, or by shift-right-click, or by right-click, depending upon EiffelStudio's Pick and Drop Mode. +* '''Move''' step: move the mouse to the desired drop point, without pressing any button. +* '''Drop''' step: right-click (again releasing the button immediately) at the drop position. + +During the Move step, you can at any time '''cancel the whole operation''' simply through a '''left-click'''. + +The Move step is actually optional: if the current position is a valid drop target, as explained next, you can drop immediately after the pick without moving the mouse. + + +==Pebbles, holes, drop targets and type compatibility== + +The Pick-and-Drop mechanism relies on the metaphor of '''pebbles and holes'''. When you pick a development object, the cursor changes into a '''pebble''' whose shape represents the type of the development object: cluster, class, feature, run-time object ... You may then drop it into a '''hole''', which can be a window, a tree view entry, or a hole-shaped icon. This performs the appropriate action such as retargeting a tool. + +In the same way that Eiffel is a typed object-oriented language, the Pick-and-Drop mechanism is typed: you can only drop a pebble into a compatible hole. For example you may drop a class pebble into a Development Window, to retarget it to the chosen class. If you have picked a development object and have moved its pebble over an area which is an unacceptable place to drop it, you will notice that the pebble takes on its "disabled" form. An enabled class pebble ([[Image:context-class-cursor]]), for example, would become a disabled class pebble ([[Image:context-disabled-class-cursor]]) for the time that it's hovering over unfriendly territory. + +In Eiffel, type compatibility is not necessarily type identity, but is governed by ''conformance'', based on inheritance and polymorphism: to an entity of type POLYGON, you may assign not only an expression of that same type, but also one of type RECTANGLE, if class RECTANGLE inherits from -- conforms to -- class POLYGON. Similarly, EiffelStudio considers that the development type "feature" conforms to "class"; this means you may drop a feature into a Development Window targeted to a class; this will retarget the tool to the feature's class and the feature itself, with the text of the class scrolled to the position of the feature. + + +==Clickable formats== + +A good deal of the power of Pick-and-Drop comes from its connection with the various views of the Class and Feature tools ... and the Diagram tool which we will see later. As was mentioned when we saw these views, all the feature and class names or other graphical representations that appear in these views are '''clickable''' ; this means that you can select any of them as the source of a Pick-and-Drop. + +As a result, you can quickly traverse a system and get to its essential properties by displaying the information of a class in any of the many available views -- the contract and flat contract of a class, its routines, its attributes, its clients, its ancestors, the ancestor and descendant versions of a feature, and so on -- then wherever you see a feature or class name follow the corresponding link. This '''proximity-based''' form of browsing, combined with the other techniques seen earlier, provides considerable help when you are dealing with a large, possibly complex system, and want to master its intricacies, be it for development, testing, debugging, maintenance or revision. + +Other places where you can pick development objects include the icons representing classes and features in the Groups tool, Feature tool, and Favorites tool. + + +==Semantic consistency== + +An important property of the pick-and-drop mechanism, shared by its cousin the right-click mechanism, has already been mentioned in this chapter: semantic consistency, which guarantees that the operations you can perform on a class, such as pick-and-drop, only depend on the ''development object'' to which you are applying the operation. It doesn't matter where you picked the object -- in any development tool under any view -- and in what form: textual, as a class or feature name; graphical representation, as a class bubble in the Diagram tool; or an icon, for example in the Groups tool, Features tool, Favorites tool. + +The pebble that you see during the Move step of Pick-and-Drop represents the underlying development object -- such as a class or a feature -- regardless of how you got to it. + + +==Behind the Pick-and-Drop conventions== + +Pick-and-Drop works differently from the usual Drag-and-Drop present on many computing platforms. The usual Drag-and-Drop retains a role within EiffelStudio (to move class bubbles around in the Diagram view) and you may of course have to use it for operating system functions such as copying files. But the key EiffelStudio operation is Pick-and-Drop. This technique is motivated by careful consideration of ergonomics and user comfort. In particular: +* Pick-and-Drop is much less stressful. Drag-and-Drop requires you to maintain pressure throughout the move, being careful not to drop on the wrong place. With Pick-and-Drop there is no stress: you click and release; get a drop from your coffee cup if you like (optional step); move the cursor with no pressure from your fingers or on your mind; make sure, at your leisure, to find the right drop place; and right-click again on it. At the end of the day, after many such operations, the stress reduction can make a real difference. +* With Drag-and-Drop, it's easy to lessen the pressure involuntarily and drop on the wrong place. The consequences can be damaging, especially since in such a case you may well not know where you dropped the element; after all, that wasn't intentional. It is possible, for example, to lose files that way. With Pick-and-Drop this is much less likely to happen. +* Pick-and-Drop makes it easy to cancel the operation if you change your mind: just left-click anywhere. With Drag-and-Drop you have to find an invalid place to drop; this may be difficult, or even impossible! (Sometimes pressing the Escape key works, but this is not universal.) + +If you are new to EiffelStudio you may find Pick-and-Drop surprising at first. We trust you will join the ranks of EiffelStudio users who consistently rate it among the most convenient features of the environment. + + +==Pick-and-Drop miscellany== + +When you start repeatedly retargeting the Class and Feature tools -- especially when set to "unlinked" behavior -- you will notice the following properties: +* In most cases, pick-and-dropping a ''class'' into the lower pane where the Class and Feature tools are docked will switch the view to the Class tool, and pick-and-dropping a feature switches to the Feature tool. This is true even if the pane is currently set to the Outputs tool or another unrelated tool. +* The view displayed in each case -- for example Ancestors for the ''Class'' tool and Flat for the ''Feature'' tool -- is default view for the corresponding tool. + +You know by now that if you pick an object and drop in into the Editing tool it will retarget the Development Window and will evict the previous occupant of the current Editing tool tab and display the dropped object in that tab. But, you can also use Pick-and-Drop to create new tabs in the Editing tool. Instead of dropping into a tab, drop the pebble instead in the tab bar of the Editing tool next to existing tabs, or on the "New Tab" icon ([[Image:new-document-icon]]) in the Standard buttons toolbar. + + +==The many paths to retargeting== + +As a conclusion to this review of Pick-and-Drop let's recapitulate the various ways we've seen for retargeting a whole Development Window or a tool to a class: +{| border="2" +|- +| '''How to retarget''' +| '''Same window/tab/tool, or new?''' +| '''Where described''' +|- +| Type class name, then Enter, in class field at top-left of tool +| Same +| [[Starting to Browse#Retargeting by name|"Retargeting by name" in the chapter "Starting To Browse".]] +|- +| Choose class in Cluster tree +| Same +| [[Starting to Browse#Retargeting from the Groups tool|"Retargeting from the Groups tool" in the chapter "Starting To Browse". ]] +|- +| Choose class in Favorites +| Same +| [[Starting to Browse#Adding to Favorites|"Adding to Favorites" in the chapter "Starting To Browse".]] +|- +| "Back" button +| Same +| [[Starting to Browse#Moving back and forth|"Moving back and forth" in the chapter "Starting To Browse".]] +|- +| "Forth" button +| Same +| [[Starting to Browse#Moving back and forth|"Moving back and forth" in the chapter "Starting To Browse".]] +|- +| Pick class from history list +| Same +| [[Starting to Browse#The Target History|"The Target History" in the chapter "Starting To Browse".]] +|- +| Pick-and-drop +| Existing or new (depending upon drop target) +| [[Retargeting Through Pick-and-Drop|Chapter "Retargeting Through Pick-and-Drop".]] +|- +| Control-right-click on class name or graphical representation found in any tool +| New tab +| [[Starting to Browse|"Starting a new tool" in the chapter "Starting To Browse".]] +|} + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/starting-browse.wiki b/documentation/20.05/eiffelstudio/Tutorials/starting-browse.wiki new file mode 100644 index 00000000..9de37bb7 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/starting-browse.wiki @@ -0,0 +1,181 @@ +[[Property:modification_date|Wed, 11 Sep 2019 02:15:25 GMT]] +[[Property:publication_date|Wed, 11 Sep 2019 02:15:25 GMT]] +[[Property:title|Starting To Browse]] +[[Property:weight|-10]] +[[Property:uuid|cb6c2e52-d238-9b55-0b78-ab3af9568550]] +It was important to take a look at how EiffelStudio stores your project, but unless your idea of fun is to poke around directories to look at compiler-generated files that's not really the exciting part yet. Among the most innovative aspects of EiffelStudio is a unique set of facilities to "browse" through a software system. + + +==Browsing style== + +Browsing -- traversing the structure -- is particularly important in object-oriented development and especially in Eiffel because of the speed at which you can construct sophisticated class structures, making use of inheritance, genericity, the client relation and information hiding, and subjecting features to all kinds of adaptations -- renaming, redefinition, undefinition, effecting -- that are key to the expressive power of the software, but call for smart tools to keep track of what's going on. EiffelStudio's tools are second to none. Among their key properties: +* You can choose many different ways of browsing: sometimes you know the ''name'' of a class or feature, and will get to it just by typing it; sometimes you want to traverse the system through its cluster-subcluster ''structure''; often, you see a reference to element (class or feature) in the text of another element, and just want to get to it by following that reference, like a ''hyperlink''. You'll be able to use all these techniques, and alternate freely between them. +* The browsing facilities are always available. There is no "browser" in EiffelStudio; you just browse when you want to, by looking at the information you need. You can do this while editing, debugging, or performing any other of the analysis, design, implementation, extension and maintenance tasks of system construction. +* Although classes are stored in files and clusters in directories, you can for the most part forget about the file system. Unlike most environments, which let you manipulate files containing software texts, EiffelStudio lets you concentrate on your development objects -- the units that make sense for you: features, classes, clusters, systems. You think in terms of those conceptual units, and don't have to worry about where they are stored. Most of the time, you'll just forget about files and directories. +* You can produce many views of the development objects. For a class, you may see the full text, the interface only, the inheritance structure, the clients, the features, and many other views. You can even display graphical views along with textual ones. All these are fully browsable; you can go from one to the other as you please. + + +==A Development Window== + +Let's see how this works. First, take a look at the EiffelStudio window: + + +[[Image:es gt a development window 01]] + + +{{note|If some parts are too small, just resize the window to arrive at something like what's on the figure. As soon as you have resized it, EiffelStudio will remember that size, and start up in the next session with the size you've set.}} + +You can see that the bulk of the Development Window is divided into three primary panes or areas. The [[EiffelStudio Editor|'''Editing''']] tool is the large pane on the top left. The Editing tool supports a tabbed display of the elements in your system ... usually that's class text, and it's in the Editing tool that you make changes to your software. In the image above, it is targeted to the root cluster of our example system. We'll target the Editing tool to a class in a moment. The other two areas support multiple tools, also using a tabbed display. In the area below the Editing tool you see the '''Outputs''' tool currently selected. As you can see there are other tools represented by the tabs at the bottom of the same area. Likewise, the area to the right of the Editing tool shows the '''Groups''' tool selected, but in that area are also tabs for other tools. You will find that the layout of the Development Window is very flexible. Different tools can be made visible or hidden, panes can be removed, new panes created, tools can be docked in these areas or viewed as standalone windows. The appearance of EiffelStudio can be tailored to your needs and preferences. + +So far we have talked about "the EiffelStudio window", but in fact that's not correct. What you see is one '''Development Window''', of which you can have as many as you wish. Some people prefer to use a single development tool, avoiding screen clutter; others don't think twice about having lots of windows, taking the "desktop metaphor" to its full conclusion (some non-computer desktops are quite cluttered). There are many ways to start a new Development Window; for example if you look at the entries in the File menu at the top left -- don't select any of these entries yet, just look -- you'll see, among others, New window, which would create a new Development Window. + +Whether you have one Development Window or many, each may have as its '''target''' an element of the system: system, cluster, class (the most common case), feature, run-time object. This simply means that the tool displays information about that element. + + +==Retargeting by name== + +In our first look at the Development Window, the Editing tool was empty. To target it to a specific class, you can just type the class name -- if you know it -- into the '''Class field''' at the top left: + + +[[Image:es gt class field 01]] + + +Let's use one of the most basic classes, STRING_32 from the Kernel Library of EiffelBase. Bring the cursor to the Class Field, click to make it active, type string_32 (or STRING_32 ) and the Enter key. As shown on the next figure, this causes a new tab to be created in the Editing tool and retargets the Development Window to class STRING_32. Note that you didn't have to worry about where the class resides in the files of your computer. Also, it doesn't matter, when you enter the name into the field, whether you use lower or upper case, or some mix; EiffelStudio will show the name in all upper case because that is the standard Eiffel convention for class names. + + +[[Image:es gt string 01]] + + +Retargeting by name is only one way to retarget a Development Window. There are other ways of retargeting that are useful at different times. Let's look at some of them. + + +==Retargeting from the Groups tool== + +Your first browsing action used a class of which you knew the name, STRING. What if you don't know what's in the system and want to explore it? Among other techniques, you can let the Groups tool, guide you through the classes that are available to your system. + +An Eiffel system, as you know, is organized into clusters and libraries (and assemblies on some .NET systems). Additionally, clusters can be structured hierarchically into subclusters. You can expand the clusters and libraries nodes in the Groups tool (by clicking the little + signs to the left of the node icons) in order to see the classes. Try it, and what you see should look about like the following figure: + +[[Image:es gt groups tool 01]] + + +You'll see one cluster: root_cluster, containing the few classes specific to our Guided Tour system. Under libraries you'll see base which provides the classes of the EiffelBase library, and base_precompile which does not provide any classes directly (precompiles are present to speed up compilation time by precompiling classes, so base_precompile is just a precompiled version of the contents of the EiffelBase library). Let's go into base, Eiffel Software's open-source library of fundamental reusable mechanisms. + +The most extensive subcluster of the EiffelBase library is structures, which contains implementations of major data structures and algorithms of computing science. Expand structures to see its own subclusters: + +[[Image:es gt groups tool 02]] + +{{note|If you initially don't see as many details as shown on this figure, you may get them by resizing the window, moving the vertical pane boundary, and/or scrolling.}} + +The EiffelBase Data Structure library and its subclusters are described in the book [[Reusable_Software-_The_Base_Object-Oriented_Component_Libraries|"Reusable Software: The Base Object-Oriented Component Libraries" ]] . Let's go to one of the most frequently used subclusters, list, containing implementations of list structures. Expand the subcluster list. This time, since list is a terminal cluster, it's not subclusters you'll see, but '''classes''', identified by small ellipses ([[Image:class-normal-icon]]): + +[[Image:es gt groups tool 03]] + +The ellipse, or "bubble", is indeed throughout EiffelStudio, as in the Business Object Notation (BON, the underlying graphical convention), the distinctive symbol for classes. You will notice that instead of the bubble, some classes are represented by what we call the "expanded" icon ([[Image:expanded-normal-icon]] ). These are still Eiffel classes. They are represented this way to show that they are marked as [[I2E: Types|expanded]]. Still other classes have a modified bubble ( [[Image:class-deferred-icon]] ) indicating that they are marked as [[ET: Inheritance#Deferred features and classes|deferred]]. + +Our second technique for retargeting a Development Window to a class (other than typing the class name as we did before) is to click the class in the Groups tool. Do this now: click LIST in the tree. It doesn't matter whether you click on the class name or the adjacent bubble. This retargets the tool to class LIST. + +[[Image:es gt Development Window targeted to list 01]] + + +As the tool is now targeted to LIST, the Class Field at the top left now shows the name of that class, exactly as if we had typed that name, the way we did with STRING_32 in the previous method of retargeting. + + +==Moving back and forth== + +Here now is a third way to retarget. Towards the top-left part of the Development Window there are Back and Forth buttons, which will enable you to revisit classes already seen during the current session: + +[[Image:es gt go back 01]] + +Click the Back button. This retargets the tool to the class you visited previously: STRING_32. The Forth button, immediately to the right of Back, becomes active. Click it to retarget back to LIST. + +Note that all buttons of the interface have a "tooltip" as shown in the figure above. if you move the cursor on a button, '''without clicking''', and wait a second or so, a small message comes up, explaining the purpose of the button. Also, if there is an associated keyboard shortcut, it will be displayed in the tooltip. + + +==The Target History== + +As a fourth way to retarget -- there are more, and after this one we'll stop counting -- you can also use the Target History menu, which you can bring up through the little arrow to the right of the Class Field: + +[[Image:es gt target history 01]] + +If you click this arrow -- the little black triangle -- you will see a menu of all your recent targets. Doing this now will only show the two classes visited so far, STRING_32 and LIST, but later on there will be more entries. By default EiffelStudio remembers 20 history entries; this is one of the settings you can change later if you wish, through the menu path: + +Tools --> Preferences + +But, let's don't do that now. + + +==Adding to Favorites== + +If you find yourself often needing to examine a particular class, you can add it to your [[Favorites tool|Favorites]], much like adding an interesting page's web link to the bookmarks of a Web browser. + +It's easy to add the current target -- currently, LIST -- to your Favorites. Do it now by following the menu path: + +Favorites --> Add to Favorites + + +[[Image:es gt add to favorites 01]] + +Now display the favorites; one way is to go back to that same Favorites menu: + +Favorites --> Favorites + +The Favorites tool appears as a tab in the same area as the Groups tool: + +[[Image:es gt favorites 01]] + +This gives us one more way to retarget a Development Window: click a class in the Favorites tool. ''Two'' ways actually, because once you add a class to Favorites, it appears in the Favorites menu and you can select it by choosing its menu item. + +[[Image:es gt list added to favorites 01]] + +Right now we don't need the Favorites tool, so you can get rid of it by clicking the little Close icon at the top right of the Favorites pane: + +[[Image:es gt close favorites 01]] + + +After you close the Favorites tool, you may see some tool other than the Groups tool that we had been using. If this is the case, click on the Groups tool's tab at the bottom of the pane to make the library classes visible again. + + +==Using additional Editing tool tabs== + +So far, even though we've targeted to the Development Window to different classes, we've only used one Editor tab. But it is helpful sometimes to have views of several classes handy in multiple editor tabs. Its easy enough to create a new tab at the time that you target the Development Window to a new class. For example, you should see the class CHAIN in the Groups tool's view of the the list subcluster of structures (the same place we found class LIST. Instead of clicking on CHAIN the way we did LIST, this time '''control-right-click''' on CHAIN, that is to say, click with the rightmost button of the mouse while holding the CONTROL key on the keyboard. This creates a new tab for CHAIN and retargets the Development Window to that class, while sliding the existing tab for class LIST to the right a bit. + + +[[Image:es gt development window multiple tabs 01]] + + +You can click on any of the tabs and the Development Window will be retargeted to the class associated with the tab. Each tab has a "Close" button on it, so you can close tabs you no longer need. + +So, for now, close the tab with the class CHAIN and leave just the one tab with class LIST. + +==Using additional Development Windows== + +With all the techniques seen so far, you were able to retarget the current the Development Window to a new class. And that may be all you'll ever need. But, as noted earlier, you may also wish to have two or more Development Windows active simultaneously. + +To create a new Development Window, follow the menu path: + +File --> New Window + +This will create a new Development Window with a title bar that reads "Empty development tool #1" because the window is (as yet) untargeted. You can also create a new Development Window by using the keyboard accelerator: CTRL-N. + +You can close a Development Window either by clicking its close button in the corner of the window, or by following the menu path: + +File --> Close Window + + +Be careful not to try to use: + + File --> Exit + +to close a single window. This menu command will exit the entire EiffelStudio development environment, closing all windows. + +If, during a session, you end up with a number of windows active and want to see an active index to them, you can invoke the [[Windows tool|active windows tool]] by following the menu path: + +View--> Tools--> Active windows + + +[[Image:es gt active windows tool 01]] + + + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/starting-eiffelstudio-and-opening-project.wiki b/documentation/20.05/eiffelstudio/Tutorials/starting-eiffelstudio-and-opening-project.wiki new file mode 100644 index 00000000..3adf479f --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/starting-eiffelstudio-and-opening-project.wiki @@ -0,0 +1,29 @@ +[[Property:title|Starting EiffelStudio and Opening a Project]] +[[Property:weight|-13]] +[[Property:uuid|676cf329-5640-69c4-d10b-b56fcd3f2ff9]] +In the rest of this Tour YOURDIR denotes the directory where the example resides (the original, $ISE_EIFFEL/examples/studio/tour , or a copy). Launching will use the operating system's mechanism for starting a program, so we look separately at Windows and at Unix/OpenVMS. + + +==Launching EiffelStudio under Window== + +On Windows, you can launch EiffelStudio from the Start Menu by following the path: + +Start --> Programs --> EiffelStudio Version --> EiffelStudio + + +where Version is the version number, e.g. 6.5. Alternatively, you can double-click the icon that the installation procedure will have added to your desktop (if you have selected that option during installation). + +If this is the first time you are using EiffelStudio, you may get a dialog asking for an unlock code or inviting you to register the product. See [[Software Installation for EiffelStudio|your platform installation instructions]] for registration information. + + +==Launching EiffelStudio under Unix or OpenVMS== + +To launch EiffelStudio on Unix or OpenVMS, change directory to YOURDIR and, from the command line, type + +estudio + + +In general you can start EiffelStudio from any directory, but to make things simple for this Tour '''please make sure''' indeed to execute the estudio command from YOURDIR. (This will allow us to use relative rather than absolute names for some of the files involved.) + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/using-automatic-class-licensing.wiki b/documentation/20.05/eiffelstudio/Tutorials/using-automatic-class-licensing.wiki new file mode 100644 index 00000000..77b9b1a2 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/using-automatic-class-licensing.wiki @@ -0,0 +1,137 @@ +[[Property:title|Using automatic class licensing]] +[[Property:weight|2]] +[[Property:uuid|3abb5fc8-b5e5-2d25-fcac-72929abba0a7]] +You can use EiffelStudio to include a license text in each of your classes automatically. The automatic class licensing facility is flexible so that you can use various strategies to retrieve the license text used. + +When you save the text of a class file in EiffelStudio, the automatic licensing facility searches for an appropriate license text file to use. If such a file is found, then EiffelStudio includes the contents of that file as an ending note part in your class. Here's the text of a class that includes an Eiffel Software license: + + +class + APPLICATION + +inherit + ARGUMENTS + +create + make + +feature {NONE} -- Initialization + + make + -- Run application. + do + print ("Hello Eiffel World!%N") + end + +note + copyright: "Copyright (c) 1984-2010, Eiffel Software" + copying: "[ + Duplication and distribution prohibited. May be used only with + Eiffel Software products, under terms of user license. + Contact Eiffel Software for any other use. + ]" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + ]" +end + + + +==License file format== + +License text should appear in a text file with the file type ".lic". The text should contain the note clause which includes the license text and nothing more. EiffelStudio will parse the text and invalid instances of license text will not be merged into the target class. + +The following text is the content of the license text file which was used to annotate the class shown above: + + +${NOTE_KEYWORD} + copyright: "Copyright (c) 1984-${YEAR}, Eiffel Software" + copying: "[ + Duplication and distribution prohibited. May be used only with + Eiffel Software products, under terms of user license. + Contact Eiffel Software for any other use. + ]" + source: "[ + Eiffel Software + 5949 Hollister Ave., Goleta, CA 93117 USA + Telephone 805-685-1006, Fax 805-685-6869 + ]" + + +Notice that a variable is used for the note keyword (to support the language keyword change from indexing to note). Also a variable for the current year is used in the copyright notice. + + +==Location of license text files== + +Where you keep your license text files depends upon which method you use to have EiffelStudio retrieve the license text from the files. Generally, license text is retrieved from files in one of three places: + +===Your project directory=== +This is the directory that contains your project configuration file, the ".ecf" file). + +[[Image:Automatic class license project directory]] + +===The Eiffel Software license template directory=== +This directory is located at: $ISE_EIFFEL/studio/templates/licenses + +[[Image:Automatic class license Eiffel Software directory]] + +===The Eiffel user files license template directory=== +This directory is located at: $ISE_USER_FILES/studio/templates/licenses + +[[Image:Automatic class license Eiffel user files directory]] + + +==Methods of retrieval== + +===Designating a license in class source code=== + +You can put a note in the source code of a class which will cause EiffelStudio to search for a corresponding license file and then include the license text from that file. Here's what such a note might look like: + + +note + license_name: "OurLicense" + + +The license_name term should be placed in the top note clause of the class. (If you include in the bottom note clause, the license_name term itself will be removed when the class license gets replaced.) + +In this case, EiffelStudio will search for the file `OurLicense.lic'. It will look first in the '''Eiffel user files license template directory''', then in the '''Eiffel Software license template directory'''. + +If you look in the '''Eiffel Software license template directory''' (or in the image of that directory shown above), you will see several standard license files that are used by Eiffel Software, for example, forum2.lic and eiffelsoftware. Also included is default.lic, which we'll examine [[#The default license|later]]. + +You should create your customized license text files in the '''Eiffel user files license template directory''', or in a local project directory as described below. + + +===Using a local project license file=== + +If you use the same license for a particular project, or set of related projects, you can keep the license file in the project directory along with your project ( .ecf ) file. In this case EiffelStudio will include the license text from that license file in each class in the project. + +This method has the advantage that it is not necessary to put the license_name term in the source code of classes. + +The license text file should be named in one of two ways: + +:# The .lic file name corresponds to the project name (e.g., my_project.lic for my_project.ecf) +:# The license text file is named license.lic + +The second option is convenient if you have a project, a library for instance, that has multiple .ecf files for different purposes. + +Even if the license text you want to use is in one of the license template directories, you can use this local method to retrieve that text without including a license_name term in the source code for each class. You do this by building a local license text file and include in it only a reference to the appropriate license name. + +For example, suppose that the our license text is in the file OurLicense.lic in the '''Eiffel user files license template directory'''. To include the license text in the classes of our_project, the our_project.lic (or license.lic) file would contain this reference: + + + reference:OurLicense + + + +===The default license=== + +As mentioned earlier, the file default.lic exists in the '''Eiffel Software license template directory'''. This file is empty ... and you should probably leave it that way. + +The license text in default.lic is added to a class when no license_name term is found in the source code and no appropriate license text file exists in the project directory. So, because the default.lic file is empty, no license text is added to classes by default. + +However, if you would like to set up a different default license text behavior, you can do so. Just create a default.lic file in the '''Eiffel user files license template directory''', and whenever license text is not found by some other method, the text from your customized default.lic will be included. + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/using-autotest/create-manual-test.wiki b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/create-manual-test.wiki new file mode 100644 index 00000000..ff00d6bc --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/create-manual-test.wiki @@ -0,0 +1,323 @@ +[[Property:title|Create a manual test]] +[[Property:weight|2]] +[[Property:uuid|32273F6B-AA84-475F-86B8-143F212FB40E]] +==A system to test== + +For developing our manual test, let's use a simple system that contains a class modeling bank accounts. Here are two classes that will make up our system. The first, APPLICATION will be the root class of our system. APPLICATION really only serves to declare an attribute of type BANK_ACCOUNT, which is the class we will write a test against. APPLICATION looks like this: + + +class + APPLICATION + +inherit + ARGUMENTS + +create + make + +feature {NONE} -- Initialization + + make + -- Run application. + do + create my_account + end + + my_account: BANK_ACCOUNT + +end + + + +And here's the class BANK_ACCOUNT: + + +class + BANK_ACCOUNT +inherit + ANY + redefine + default_create + end +feature + default_create + do + balance := 0 + end + + balance: INTEGER + + deposit (an_amount: INTEGER) + -- Deposit `an_amount'. + require + amount_large_enough: an_amount > 0 + do + ensure + balance_increased: balance > old balance + deposited: balance = old balance + an_amount + end + + withdraw (an_amount: INTEGER) + -- Withdraw `an_amount'. + require + amount_large_enough: an_amount > 0 + amount_valid: balance >= an_amount + do + balance := balance - an_amount + ensure + balance_decreased: balance < old balance + withdrawn: balance = old balance + an_amount + end + +invariant + balance_not_negative: balance >= 0 +end + + +You shouldn't let it worry you if you've noticed that the class BANK_ACCOUNT contains some flaws. We'll deal with these later. + +If you want to work along with this tutorial, you should be able to copy the text of each these classes from this page and paste it into the EiffelStudio editor pane. Build a system using these two classes, and {APPLICATION}.make as the root. + + +{{note|If you are using EiffelStudio version 6.3, there two things you will need to do to prepare your system for use with AutoTest. Both of these are done from the [[EiffelStudio: Project settings window]].
1) Set your project to be a console application in the [[Advanced options]].
2) Set a value of False for the Recursive attribute of your project cluster in [[Group options]].}} + +==Getting to the AutoTest interface== + +If the AutoTest interface is not on a tab next to Clusters, Features, and Favorites, you can invoke it by following the menu path: + +View --> Tools --> AutoTest + +Depending upon your version and platform, the AutoTest interface should look about like this: + + +[[Image:AutoTest empty tool 01]] + + +==Creating a new test== + +To begin the process of creating a new test, click the Create New Test button ( [[Image:create new tests]] ) on the interface's tool bar. When you click this button, by default AutoTest will set you up to create a new Manual test. To choose a different test type, click the small triangle to the right of the Create New Test button and you'll be presented with a drop-down menu of choices: + + +[[Image:AutoTest create new test|Create new test drop-down menu]] + + +For now, let's select Create Manual Test. + +If this is the first time you've used the testing tool for this project, it is likely that you will be presented with a dialog box asking if you want to add the testing library classes to your project and recompile: + + +[[Image:AutoTest add testing libraries dialog]] + +You want EiffelStudio to do this before launching the wizard so, click "Yes". In a moment, your system will have recompiled with the testing library classes available. Remember that you won't need to interact much with the testing classes, but AutoTest uses them, so they need to be available. As long as the testing classes stay available, you should not see this dialog again for the current project. + + +==The Manual Test Pane== + +After the compile completes, then the first pane of the New Eiffel Test Wizard appears. It's the Manual Test pane and should look like this: + + +[[Image:AutoTest Manual Test pane]] + + +Here we will name our test. Let's say that we plan to write this test against the feature {BANK_ACCOUNT}.deposit. We'll give this test the name test_deposit_01. The name uses an ad hoc naming convention for tests. You can use this, or develop your own. The prefix test_ comes before the feature name it will test, and the suffix _01 follows, so that we have a framework for adding more tests against deposit. Again, you can choose any naming scheme that makes sense to you. You may want to try to describe the test in its name. For example, test_deposit_very_large_amount. + +We're ready to click '''Next''', but before we do, let's look at the check boxes on this wizard pane. The two check boxes labeled '''Redefine `on_prepare`''' and '''Redefine `on_clean`''' have to do with the way that tests are run. + +AutoTest runs each test as a three step process: +# Preparation +# Execution +# Clean up + +There are features in class EQA_TEST_SET named prepare and clean which accomplish steps 1 and 3 above. These features are frozen, therefore you cannot redefine them in a test class (i.e., a descendant of EQA_TEST_SET) However the class does provide features that can be redefined so that you can include custom behavior before and/or after the execution of a test. These features are on_prepare and on_clean. So if you check one of these boxes, then the test class that is built for you will include a redefined feature ready for you to implement. In this simple example, we'll leave both boxes unchecked. + + +{{note|The check box labeled '''System level test''' is displayed here as not sensitive. This box is reserved for future system level testing capability in AutoTest, so for versions including 7.0, you can ignore it. }} + + +Another thing to notice before we click '''Next''', is that at this point we could click '''Launch'''. '''Launch''' will immediately try to create the test with the information it has available. The idea is that if you are creating several similar tests, you can change the test routine name and leave the rest of the information as you had entered it on a previous test. This keeps you from having to traverse the wizard panes entering the same information repeatedly. + +But in our case, we need to use the subsequent wizard panes, so let's click '''Next''', to go to the next one. + + +==The Tags Pane== + + +[[Image:AutoTest Tags pane empty|Tags pane]] + + +With this pane, you identify tags for your test that allow you to manage your test set more easily in the future. Read more in [[#About Tags|About Tags]] below. + +For this test, we will include only a tag that identifies the class and feature covered by the test. To do this we click '''Add tag for covered class/feature'''. When we do, we are presented with a dialog in which we can choose a class and feature. + + +[[Image:Autotest test coverage tag dialog|Dialog for coverage tag]] + + +We'll choose class BANK_ACCOUNT and feature deposit, click '''OK'''. + +Now you should see the coverage tag in the list of '''Tags used in new test'''. + + +[[Image:AutoTest Tags pane|Tags pane]] + + +That takes care of adding our coverage tag, so let's click '''Next''' to go to the next wizard pane, the '''General''' pane. + + +==The General Pane== + + +[[Image:AutoTest General pane empty|The General Pane]] + + +We will use this wizard pane to name our test class and let AutoTest know where we want the test class to reside. You can give a test class any name you wish, as long as it doesn't conflict with another class name in your system. If you try to type in a class name that already exists, the wizard will let you know right away by changing the text color to red. There is a convention that has arisen around test class names. If possible, make the test class name the name of the target class, prefixed with TEST_. So in our case, we want to build a test against a feature of the BANK_ACCOUNT class, so we will name our test class TEST_BANK_ACCOUNT. + +Now, for the question of where the tests should be kept. + +By default, tests will be stored in a subdirectory of the EIGENs directory that is generated by the Eiffel compiler. Because it's the default, it's the quickest, easiest way to house tests. But it may not be the best for you in the long run. For example, if you manually delete the EIFGENs directory, which is occasionally necessary, you will lose your tests. + +You could include them in the same cluster as some of your application classes. But there are some advantages to keeping the test classes in a '''test cluster''' separate from your target classes. For example, it will be easier for you to deliver your application or library classes if the testing classes aren't mixed with your domain classes. A '''test cluster''' is just a cluster of classes that EiffelStudio and AutoTest expect to contain test classes. So, in our case, let's create a new testing cluster as a subcluster of the cluster in which the classes APPLICATION and BANK_ACCOUNT reside. + +First, uncheck the box labeled '''Use EIFGENs cluster'''. + +Notice the '''New cluster''' link on the General pane. We click that link to add a new test cluster. The '''Add Cluster''' dialog box appears: + + +[[Image:AutoTest Add Cluster dialog]] + + +We can name our test cluster tests, the default, and make it a subcluster to our root cluster accounts. Notice that there is a '''test cluster''' check box on the dialog. It is checked and disabled, so at this point in the wizard you would always create a test cluster. Let's also check the box labeled '''recursive'''. Once the test cluster is created, we're back to the General pane which now looks like this: + + +[[Image:AutoTest General pane]] + + +At this point we have provided all the information necessary for AutoTest to create the shell for a manual test on the deposit feature of the BANK_ACCOUNT class. + +So, now we click '''Launch''', and AutoTest creates our test set and test. + + + +==Writing a test== + +Let's look at the class TEST_BANK_ACCOUNT: + + +note + description: "[ + Eiffel tests that can be executed by testing tool. + ]" + author: "EiffelStudio test wizard" + date: "$Date$" + revision: "$Revision$" + testing: "type/manual" + +class + TEST_BANK_ACCOUNT + +inherit + EQA_TEST_SET + +feature -- Test routines + + test_deposit_01 + -- New test routine + note + testing: "covers/{BANK_ACCOUNT}.deposit" + do + assert ("not_implemented", False) + end + +end + + +We can see that the feature test_deposit_01 exists, but doesn't really test anything. So, let's change that. We'll alter test_deposit_01 so that it creates an instance of BANK_ACCOUNT and then makes a deposit to that account. + +So, test_deposit_01 now looks like this: + + + test_deposit_01 + -- New test routine + note + testing: "covers/{BANK_ACCOUNT}.deposit" + local + l_ba: BANK_ACCOUNT + do + create l_ba + l_ba.deposit (500) + end + + +Now we have created and written a manual test using AutoTest. + +Next let's look into the notion of '''Tags''' in a little more detail, then see what it takes to execute a test. + + +==About Tags== + +The '''Tags''' pane allows us to associate our test with any AutoTest '''tags''' that we feel are appropriate. + +'''Tags''' are simply names or otherwise meaningful strings of characters that are arranged hierarchically and can be associated with a test to help manage, maintain, execute, and monitor its results. Any one test can support many tags. It is quite likely that during the development process, your system may eventually accumulate a great number of tests. And you may want only to execute some selected portion of those tests at any particular time. '''Tags''' allow you do that with the help of AutoTest. + +One of the most common types of tags specifies what class and feature a test covers. In our example, we wrote our test against the deposit procedure of the class BANK_ACCOUNT. The tag that we added to express this is: + +covers/{BANK_ACCOUNT}.deposit + +When we look at a tag in this notation, each hierarchical level is delimited by the forward slash. So the tag above specifies a root "covers" and its child "{BANK_ACCOUNT}.deposit". If this same test tested both deposit and withdraw, then its list of tags would be: + +covers/{BANK_ACCOUNT}.deposit +covers/{BANK_ACCOUNT}.withdraw + +So when ever you ask to view or run all the tests that covers either deposit or withdraw, this test would show up in that set. + +The "covers" tags, as you saw earlier, can be generated by AutoTest's New Eiffel Test Wizard when you create a new test. But you could enter the tag manually, as well. For example if you had written a high-level test that exercised all or most of the functionality of the class BANK_ACCOUNT, you could manually add a tag that expresses that, i.e., a "covers" tag for BANK_ACCOUNT that does not specify a particular routine: + +covers/{BANK_ACCOUNT} + + +Tags can be completely arbitrary, too. So, for example if you were building software that you expected to run on multiple platforms, in the test suite, you might have a test with the following tags: + +platform/os/linux +platform/architecture/i386 + +So this test would be specifically for Linux running on Intel architecture. When you were testing on that platform combination, you could select the appropriate tests to run using tags. + + +===Associating tags with a new test=== + +Looking again at the '''Tags''' pane, you will see that there are two boxes under the label '''Tags used in new test'''. The first is just a display of the list of tags that you have added to the new test. The next box down allows you to add an arbitrary tag sequence like: + +platform/os/linux + +Below that box, there are links that allow you to add certain commonly used or predefined tag types. One of these, '''Add tag for covered class/feature''' is the link we used to add the "covers" tag for our test on {BANK_ACCOUNT}.deposit. + + +===Other predefined tags=== + +In addition to '''Add tag for covered class/feature''', choices for other predefined tags are shown as links. For example, '''Add tag to run test in private evaluator''' and '''Add tag to run test serially'''. + +Selecting '''Run test in private evaluator''' will insert the tag: + +execution/isolated + + +When tests are executed, they do so within the context of '''evaluator processes'''. Normally, evaluator processes are reused for multiple test executions. But if you select '''Run in private evaluator''', the tag added to your test guarantees that this test will be run in a fresh evaluator process, that terminates when the test completes. This can be helpful, for example, when you don't want your test to enter or leave the evaluator process with the effects of "once" routines or any other action that might affect the efficacy of other tests. For example, if your test executes external routines which might have a damaging effect on memory, you should run the test in a private evaluator. + +If you select '''Run test serially''', the following tag will be inserted: + +execution/serial + + +Tests tagged with this tag will not run concurrently with any other similarly tagged test is running. + +You can extend the serial execution tag with arbitrary terms that will differentiate groups of tagged tests. For example, if some of your tests are tagged like this: + +execution/serial/group_1 + +and some are tagged: + +execution/serial/group_2 + +then AutoTest will not run any group_1 tagged test concurrently with any other group_1 test, and likewise for tests tagged group_2. + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/using-autotest/execute-tests.wiki b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/execute-tests.wiki new file mode 100644 index 00000000..4f08f0b0 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/execute-tests.wiki @@ -0,0 +1,110 @@ +[[Property:title|Execute tests]] +[[Property:weight|3]] +[[Property:uuid|d0515cb1-0792-3028-2a24-a71b56506959]] +In the previous section we coded a manually created test. AutoTest will allow us to execute that test, or, in more practical terms, any set of tests that we select. But before we execute our test, let's take a look at what we will get out of such an execution. + +==About test results== + +It is important to understand that for AutoTest, test results are solely determined by whether an exception occurs during the execution of a test, and, in cases in which an exception does occur, what kind of exception it is. So, with AutoTest, it is not necessary for you to write anything special into a test that propagates the test's results. + +When AutoTest executes a test, the result will be one of only three possibilities: +# The test is '''successful''' +# The test is '''failing''' +# The test result is '''unresolved''' + +These possibilities are defined as follows. + +{{definition|Successful test|A test which has executed without causing and exception to occur. }} + + +{{definition|Failing test|A test which has caused an exception to occur during its execution, specifically during the execution of a target routine. }} + + +{{definition|Unresolved test result|A test which has caused an exception to occur during its execution, but exclusive of the execution of a target routine. }} + + +So, successful tests are easy enough to understand. The test executed with no exception. + +Failing tests and unresolved test results both mean that an exception occurred during the execution of the test. The distinction is made based on the location of the feature that causes the exception. + +When we execute our test {TEST_BANK_ACCOUNT}.test_deposit_01, we know that test_deposit_01 will make a call to {BANK_ACCOUNT}.deposit. If the exception occurs during the execution of a target routine (i.e., in {BANK_ACCOUNT}.deposit), then the test is considered failing. If the exception occurs anywhere else in the execution of {TEST_BANK_ACCOUNT}.test_deposit_01, then the test is considered to have an unresolved result. + + +{{note|Be aware that some early versions of AutoTest reported some unresolved test results as failing tests. }} + +This behavior can be helpful to us as testers. A failing test indicates that there is something amiss in the target routine. The routine has not completed in a state that satisfies its postcondition and class invariant, or is dealing with an unresolved exception from some routine that it has called. An unresolved test result indicates that something is amiss in our test. Something went wrong in the setup or cleanup of the test or perhaps the test called a target routine from a state that did not satisfy the target routine's precondition. + + +==The AutoTest tool== + +In the last section, we created a manual test. The AutoTest tool shows us the new test in the '''Tests''' column. So, now the tool should look something like this: + + +[[Image:AutoTest tool with test]] + + +==Test execution== + +You see under "Tests" the project cluster accounts, the test cluster tests, the test class TEST_BANK_ACCOUNT, and the test test_deposit_01. You might have to expand some of the elements to see everything as shown above. + +You see that the '''Status''' of test_deposit is "not tested", and that the '''Last executed''' date is empty. + +To execute tests we use the "Run" button ( [[Image:debug-run-icon]] ) on the interface toolbar. By default, the Run button will run all tests matching the tags in the '''Filter''' box. However, there is a list of run options that you can access by clicking the black triangle just to the right of Run. You can choose to run all tests, only those with failing status, a filtered set of tests, or only those tests that you have selected in the tree below. We'll cover filtering a little later. For now, life is simple, we have only one test so just selecting '''Run all''' should execute it. + +==Examining test results== + +The test runs in background and the AutoTest interface now looks like this: + + +[[Image:AutoTest tool with failed test]] + + +It's pretty clear that our test has failed. Its status is now marked with the Failing icon ( [[Image:general-error-icon]] ) and in the box below the '''Execution''' tab we see that the status also includes a tag: balance_increased. More detail is provided in the Testing pane of the Outputs tool, as shown below. + + +[[Image:AutoTest Outputs tool after run 01]] + + +We see that balance_increased is a postcondition tag on the target routine {BANK_ACCOUNT}.deposit. Upon examination of the code: + + + deposit (an_amount: INTEGER) + -- Deposit `an_amount'. + require + amount_large_enough: an_amount > 0 + do + ensure + balance_increased: balance > old balance + deposited: balance = old balance + an_amount + end + + +we realize that there is no implementation here. So we add the code to implement deposit: + + + ... + do + balance := balance + an_amount + ensure + ... + + +After compiling, we can execute the test again. We could do this by selecting '''Run all''' as we did last time, or by selecting '''Run failing'''. Once the test executes we see now that it was successful: + + +[[Image:AutoTest tool with passed test]] + + +This time we see that the test is successful, as indicated by the Success icon ( [[Image:general-tick-icon]] ) in the Status column. + +==The beginnings of a test suite== + +Of course we would not have had to use AutoTest to find that bug in {BANK_ACCOUNT}.deposit. We could have just written a simple class to exercise instances of BANK_ACCOUNT and truth would have come out. + +The advantage of using AutoTest is that the test that we wrote to cover {BANK_ACCOUNT}.deposit can stay with us throughout the lifecycle of class BANK_ACCOUNT. We can expand the TEST_BANK_ACCOUNT with additional manual tests and run them after every development increment to ensure that all tests that were once successful are still successful. + +==Manual test summary== + +We have seen how to create and execute a manual test. You will find that manual tests form the backbone of your test suite. But there are two other types of tests available in AutoTest. Next let's take a look at these test types and in what ways they can be used. + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/using-autotest/index.wiki b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/index.wiki new file mode 100644 index 00000000..e248bd75 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/index.wiki @@ -0,0 +1,30 @@ +[[Property:title|Using AutoTest]] +[[Property:weight|-1]] +[[Property:uuid|6b900a65-85c6-9cd6-ef57-ccd4b8decbef]] +{{note|The following few pages contain the AutoTest tutorial. This tutorial uses a different software example than the bulk of the EiffelStudio Guided Tour. If this is your first time through, you may want to delay the AutoTest tutorial until you have completed the rest of the Guided Tour, then come back to it when you're feeling more familiar with EiffelStudio.}} + + +{{note| '''To users of V6.6 and later:''' As of V6.6, the New Eiffel test wizard panes have changed somewhat from this documentation. V6.6 introduces the ability to store certain preferred values for creating tests. The advantage is that one need not enter this information on wizard panes each time a test is created. Because preferred values can be stored, the panes containing the values more likely to change between test creations are presented earlier than other panes. In previous versions, these panes were presented later, as shown in this documentation. The documentation will be updated in the future to reflect the newer wizard sequences and pane layouts. }} + + +==Introduction== + +AutoTest is a tool that helps you to create, manage, and run tests against your software. AutoTest is accessible directly as a part of EiffelStudio, but works to a large extent behind the scenes so that it doesn't get in the way of your development activities. In other words, even though you may be accumulating a substantial collection of test software along with your project software, you can still run and deliver your project software without going to a lot of trouble to separate the two. Tests managed by AutoTest stay handy and can be run any time to help make sure everything always stands up to the scrutiny of testing. + +This tutorial will guide you through the use of AutoTest. A [[AutoTest|reference section]] for AutoTest is also available. + + +{{Recommended|At least on your first viewing of this tutorial, take the sections in the order in which they are presented. There are three different types of tests supported by AutoTest. Each type of test is discussed on its own page. But to avoid repetition, the pages for the second and third types of tests omit some of the detail in the first and assume a familiarity with the example. }} + + +{{Caution|
1) At this time, AutoTest will work '''only''' for project targets in the '''classic Eiffel''' environment. This means that projects targeted to Microsoft .NET will not be able to use AutoTest.
2) Currently, the use of AutoTest should be '''restricted to projects built without void-safe settings'''.}} + + +{{Recommended|During the transition to void-safe Eiffel, projects can be built using '''experimental''' mode. This mode is as stable as '''non-experimental''' mode, but includes some facilities that might break existing code in a few circumstances. However, since version 6.5, EiffelStudio itself is built in experimental mode, so '''we recommend that you use AutoTest only on projects also built using experimental mode'''. Experimental mode can be invoked by using the "-experiment" option from the command line, or on Microsoft Windows by following the '''Start''' menu path to EiffelStudio and selecting experimental mode. As of version 6.6, the mode that was '''experimental''' in previous versions, becomes the '''default''' mode.}} + + +{{SeeAlso|
[[AutoTest]] reference }} + + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/using-autotest/managing-tests.wiki b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/managing-tests.wiki new file mode 100644 index 00000000..a44f4b22 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/managing-tests.wiki @@ -0,0 +1,104 @@ +[[Property:title|Managing tests]] +[[Property:weight|9]] +[[Property:uuid|f1e7f63a-dc86-fefb-e669-3e3ea178c596]] +The previous sections cover the basics of testing and what it takes to create and use each of the test types supported by AutoTest. This section will finish things up with some miscellaneous information about testing strategy and hints on using AutoTest. + + + +==Favor manual tests== + + +It is worth repeating that currently, manual tests should form the majority of your testing suite. As you have seen, extracted and synthesized tests use more complex setup and execution mechanisms. These mechanisms make tests less robust and readable than manual tests. So using extracted and synthesized tests as a guide to produce manual tests with the same coverage is, at this time, the best way to work. You will probably be able to do this easily enough with synthesized tests. Extracted tests attempt to recreate the context at a specific point in time, which may make it more difficult to write a manual test that is equivalent an extracted test. + +Because manual tests are more easily readable than either of the automatically generated test types, you should be able to understand more quickly what has happened when a test produces failing results. + + +==Deleting uneeded tests== + + +At some point and for various reasons, you will probably want to delete tests from your test suite. This is easy enough to do. Remember that test sets are actually just classes with certain characteristics, and that tests are actually just specialized routines of test classes. + +If you want to delete a single test, you can delete that feature from its test class. + +If you want to remove a whole test set, then [[Removing a class|delete the class]] that defines that test set. + + +==Using Filters== + +Filtering is provided to help view, manage, and run the tests in a test suite. + +Filtering controls which tests are visible in the AutoTest interface how the view is organized. You can display tests organized by the test classes that contain them, by the classes they target, by their type, by their most recent results, or by any system you set up using a system of [[Create a manual test#About tags|tags]]. + +Filtering helps you manage which tests get run during a give execution. You can select certain tests to be run from those visible in the AutoTest interface, or you can choose to run all tests visible through a filter. + + +===The Filter box=== + +The Filter box in the AutoTest interface can be used to enter filter text which will allow only certain tests to be visible. + +Filter text can be a string of characters occurring in specific test class name or test routine name, or it can be a [[Create a manual test#About tags|tag]] or a portion of a tag hierarchy. The Filter box supports regular expressions, so you can filter with more granularity. + +It is important to bear in mind that the View box works with the system of [[Create a manual test#About tags|tags]] described in the section on creating manual tests. Tags are hierarchically structured names that are applied to tests through the note clause. When you use the View box to display a set of tests, you specify that set by the tags on the tests. Some of the tags are implicit, in the sense that AutoTest accounts for them, and they are not explicitly coded in note clauses. This should become clear when we look at some examples. + +When the filter text is cleared, the AutoTest interface will display tests accessible through all tag roots. + +As of version 6.5 of EiffelStudio, the tag root words used are: + + +{| border="2" +|- +| class || Tests organized by test classes +|- +| covers || Tests organized by target classes/routines +|- +| result || Tests organized by the results of their most recent execution +|- +| user || Tests organized by type (manual, extracted, generated) and by user-added tag hierachies +|} + + +{{note|The tag roots will appear only if there are tests that can be categorized under them. For example, if you have not run any tests, then '''result''' will not appear. }} + + +Notice that the Filter box has a drop-down with a list of options: + + +[[Image:AutoTest filter drop down]] + + +These options are shortcuts to the various tag roots listed above: + +#'''Test classes''' displays the sub-tree under the tag root '''class''' +#'''Classes under test''' displays the sub-tree under the tag root '''covers''' +#'''Results''' displays the sub-tree under the tag root '''result''' +#'''User-defined tags''' displays the sub-tree under the tag root '''user''' + + +Any tagging system that you devise will show up under the '''user''' tag root. + +For example, consider a manual test containing a '''testing:''' note name with a user-defined tag as in the following code. + + + test_deposit_01 + -- New test routine + note + testing: "covers/{BANK_ACCOUNT}.deposit" + testing: "my_tag_root" -- My new tag root + local + l_ba: BANK_ACCOUNT + do + create l_ba + l_ba.deposit (500) + end + + +This will cause the new user-defined tag and its associated tests to be visible in the AutoTest interface. + +[[Image:AutoTest user defined tag root]] + + +{{seealso|The [[The AutoTest Interface#Filtering|Filtering]] section in [[The AutoTest interface]].}} + + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/using-autotest/testing-background-and-basics.wiki b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/testing-background-and-basics.wiki new file mode 100644 index 00000000..20fe5719 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/testing-background-and-basics.wiki @@ -0,0 +1,149 @@ +[[Property:modification_date|Tue, 30 Oct 2018 14:59:36 GMT]] +[[Property:publication_date|Tue, 30 Oct 2018 14:59:36 GMT]] +[[Property:title|Testing: Background and basics]] +[[Property:weight|0]] +[[Property:uuid|12c2a2d4-9bf2-ba73-6647-cb9900666de1]] +==Background and motivation for testing tools== + +Developers test software in the hope that the testing process will expose faults in the software they've developed. Most developers also realize that no amount of testing will ever prove software to be bug free. So while testing is a virtuous activity that we dare not neglect, we are wise to temper our expectation of the practical value of testing. + +A test is designed to exercise a software element given certain inputs and execution state. The state is observed after the test execution to see if the software element has behaved in a manner that is consistent with its specification. + +As a body of software is developed and tested, a large number of tests may accumulate. This large suite of tests can be run at any time in order to ensure that a change or the addition of a new software element does not cause a previously successful test now to fail. Some software development processes call for running a whole suite of tests after every increment of development activity. This type of testing is often referred to as ''regression testing'', because it tends to expose software which had been satisfying its tests at one time, but because of some development activity has regressed to a failing state. + +Creating, managing and running a large number of tests manually can be time-consuming, messy, and error-prone, thus the motivation for automated testing tools. Testing tools help programmers to create, maintain, and execute a suite of tests by automating the activity. During the last few years, both testing methods and tools have become more sophisticated. + + +==The Eiffel advantage in testing== + +Some of today's development methods require tests to be written before the software elements they test. Then the tests are included as a part of the software specification. But tests can only reflect a very small subset of the possible execution cases. Testing can never replace a comprehensive software specification. + +The great advantage you have with Eiffel, of course, is that the specification for a software element exists in its contract. Like the tests mentioned above, contracts for software are written prior to implementation. So, importantly, tests are ''not'' a part of a software specification in Eiffel. + +With contract checking enabled at run time, the running software's behavior is constantly monitored against the contract's expectations. In other words, for routines, the precondition defines an acceptable state in which the routine can execute, and the postcondition defines an acceptable state after successful execution. The class invariant defines the constraints necessary for instances of a class to be valid. + +A term commonly used in software testing is "oracle". Tests are generally looked at as having two parts, the first part is a mechanism that exercises (runs or calls) a particular software element in a given context. The second part is the "oracle" whose responsibility it is to determine whether the software element passes or fails the test. Not surprisingly, test oracles in other testing frameworks often look a lot like assertions in Eiffel. So the advantage for Eiffel is that the test oracles for all routines are already written as the postconditions on routines and class invariants. + +The presence of preconditions provides another advantage. Preconditions make it possible to automate testing in ways unavailable in other environments. Because of preconditions, we already have information about the limits of valid inputs to routines. So it's possible to generate a call to a routine we want to test automatically and with a context that meets the routine's precondition. + + +==AutoTest== + +AutoTest attempts to capitalize on the testing advantages inherent in Eiffel due to Design by Contract. AutoTest consists of an interactive interface, and a library of classes which support testing activity. + +The testing support classes are distributed with EiffelStudio and exist in the ''testing'' subfolder of the ''libraries'' folder. With the exception of one class which we will discuss soon, the classes in "testing" are not intended to be used directly by developers. They exist to support the functionality of AutoTest. + +The interface for AutoTest is accessible through the EiffelStudio development environment. You may find it already resident as a tab in the right hand pane next to Clusters, Features, and Favorites. If it's not there, then you can bring it up by following the menu path: + + +View --> Tools --> AutoTest + + +==Test classes and tests== + +The AutoTest interface helps you to create and execute tests on the software you develop. The interface contains a wizard called the '''New Eiffel Test Wizard''' which helps you create or generate the types of tests you need. We'll learn more about the interface and the wizard as we go along. But first, let's look at what constitutes a ''test''. For AutoTest, we define the term ''test'' in the context of some other testing terminology: + + +{{definition|Test class|An effective class that inherits from the class EQA_TEST_SET. }} + + +{{definition|Test|Any procedure of a test class that satisfies all of the following conditions:
1) Is exported to ANY
2) Is immediate (i.e., introduced within the text of the test class)
3) Takes no arguments }} + + +{{definition|Test set|The set of tests in a test class. }} + + +{{definition|Test suite|A set of test classes (and by implication the tests contained therein) which is designed to test some particular software system or library. }} + + +Whenever you use AutoTest, it will find your test classes, those classes that inherit from EQA_TEST_SET. When you run tests, it will execute all the tests in those classes, or a subset of tests that you choose. So, you have probably figured out that the one class from the testing library that you may need to know a little about is EQA_TEST_SET. But you don't have to know very much, because AutoTest can help you construct your test classes. + + +==Types of tests== + +There are three different types of tests supported by AutoTest: +* Manual tests +* Extracted tests +* Generated tests + +Each test of any of these types ultimately is a feature of class that inherits from EQA_TEST_SET. Ordinarily, though, the three types of tests won't be mixed in a test class. That is, any one particular test class will contain only one type of test. But from the point of view of AutoTest, all types of tests are managed and run the same way. We will discuss these types of tests in more detail later, but for right now, let's just establish some definitions. + + +{{definition|Manual test|A test manually coded within a test class. }} + + +Manual tests are features, procedures in fact, of classes that inherit from EQA_TEST_SET. In many simple cases, test classes containing manual tests inherit directly from EQA_TEST_SET, but that's not a requirement. Occasionally it can be useful for test classes to inherit from a descendant of EQA_TEST_SET that provides additional functionality. + +A manual test is "manual" in the sense that you code the essential procedural part of the test by hand. But you really don't have to deal with the more mundane business of creating the whole test class and ensuring the proper inheritance. The ''New Eiffel Test Wizard'' helps out by automatically creating the shell of a test class and the shell of a test for you to fill in. Then it's pretty easy to add new tests manually to an existing test class. + + +{{definition|Extracted test|A test that has been created during the execution of a system as a result of a developer request or a failure of the system. Extracted with the test is the current runtime state. When run, the test will attempt to recreate the runtime context. }} + + +Extracted tests are convenient because they allow you to accumulate tests that are based on actual failures of your software (good for the software, not so good for your ego!). Once these tests are in your suite of tests, they are available from then on. + + +{{definition|Generated test|A test that is the product of generating and running a series of randomly generated invocations of target routines. }} + + +The process of creating generated tests is sometimes known in the community as creating via ''AutoTest''. The randomly generated calls to target routines which were created and run are discarded at the completion of the creation. But from the results of these calls, a set of permanent tests is distilled. These are the generated tests. + +Generated tests are made possible by Design by Contract. Hopefully, you remember that one thing that DbC gives us is the handy ability to assign blame when something goes wrong. When a test makes a call to a routine we want to test, if a contract violation occurs, it may be the fault of the called routine or it may be the fault of the caller ... and that depends upon what type of contract violation has occurred. The contract violations that are interesting to AutoTest in the process of synthesizing tests are only those in which the called routine is at fault. That is, postcondition and invariant violations. AutoTest will then create a generated test for every ''unique'' failure in which the called routine being tested was to blame. + + + +==Anatomy of a test== + +Here are two more definitions: + +{{definition|Target routine|A routine that is to be tested by a test. Sometimes called a "routine under test." }} + + +{{definition|Target class|A class that contains target routines. Sometimes called a "class under test." }} + + +In its simplest form, a test is a routine that issues a call to some routine you've developed in some class you've developed. + +So the tests and the test classes are in the realm of testing and are used to test the target routines in target classes which are the real product of your software development project. + +AutoTest will manage and run the tests in any test class whether or not they actually test any target routines. Even though the test shown below doesn't test anything, it still qualifies as a test. Naturally, it would seem silly to keep a test around that doesn't test anything, but the important thing to understand is that AutoTest will work with anything that matches the definitions of test and test class above. That is, once tests are created, AutoTest doesn't really have a stake in what you are trying to test. + + + + +note + description: "[ + Eiffel tests that can be executed by testing tool. + + ]" + author: "EiffelStudio test wizard" + date: "$Date$" + revision: "$Revision$" + testing: "type/manual" + +class + MY_TEST_CLASS + +inherit + EQA_TEST_SET + +feature -- Test routines + + my_test + -- New test routine + do + assert ("not_implemented", False) + end + +end + + +This test class was created by AutoTest's New Eiffel Test Wizard. It is about as simple a test class as there can be. Its only value is to illustrate the basic form of AutoTest tests. So, let's look at that form. + +It is clear that MY_TEST_CLASS is an effective class that inherits from EQA_TEST_SET, so that makes it fit the definition of a test class. And, it's also clear the my_test is a feature of MY_TEST_CLASS, specifically a procedure, exported to ANY, requiring no arguments. That qualifies my_test as a test. If MY_TEST_CLASS is located in a test cluster of your project, then AutoTest will find it and be able to run it whenever you request. + +This test would always fail because of the assert that the wizard put in the implementation. So if you asked AutoTest to run your tests, it would tell you that my_test was a failed test, for the reason: "not_implemented". The assert is not a necessary part of a test. The wizard puts it there to remind you that the test has not been implemented. If you removed the assert line from the test, then the test would always succeed, which would be nice, but it would be succeeding at testing nothing! We'll see more later about what it means for tests to succeed and fail. + +But first let's get some exposure to the AutoTest interface, by building a manual test for a routine in a simple class. + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/using-autotest/using-extracted-tests.wiki b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/using-extracted-tests.wiki new file mode 100644 index 00000000..696be15c --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/using-extracted-tests.wiki @@ -0,0 +1,146 @@ +[[Property:title|Using extracted tests]] +[[Property:weight|5]] +[[Property:uuid|bebd4f28-9818-80f0-a69a-e9ce867723f4]] +==About extracted tests== + +At any time that you are running a system in EiffelStudio debugger and your system is paused, you can ask AutoTest to extract a new test class and test from the current executable context. Most often you would use this capability in the case in which you experienced an unexpected failure or exception in one of your routines. It is possible, though, to extract at any point at which the system is paused. + +The value of extracted tests is that they provide a kind of a snapshot in testing form that will reproduce the unexpected failure. An extracted test attempts to reproduce the context in which the offending routine executed. So, extracted tests supplement your manual tests. They serve to cover situations which you just may not have written manual tests to cover. + +Extracted tests are intended to supplement the suite of manual tests that you have created to do the bulk of your testing. So, usually when you create an extracted test, it happens as a result of your being surprised. You will notice that each time you create an extracted test, you get a new test class, too. This is in contrast to manual tests, in which you might use the wizard to create a new test class and one new test to cover a particular target class and target routine. Then you might manually create, in that same test class, many additional tests covering the routine behavior of the same or other target routines in the same target class. + + +==Creating an extracted test== + +Let's use the same test system we used for manual tests to demonstrate the creation of an extracted test. The example will be slightly contrived because it will find a problem that certainly we would already have discovered had we written a comprehensive set of manual tests against the BANK_ACCOUNT class. Still, the simplicity should help keep things clear. + +If you remember, the root class for the example application was not very interesting, just a root procedure with a single instruction and a declaration my_account of type BANK_ACCOUNT: + + + + make + -- Run application. + do + create my_account + end + + my_account: BANK_ACCOUNT + + + +Now, let's add some code into the make procedure that will make use of my_account: + + + make + -- Run application. + do + create my_account + my_account.deposit (500) + my_account.withdraw (100) + end + + + +If we run the application from EiffelStudio, we see that it stops when it incurs a postcondition violation in {BANK_ACCOUNT}.withdraw: + + +[[Image:AutoTest extracted 01]] + + +When we look at the feature pane, it's pretty easy to see where the problem is: + + +[[Image:AutoTest extracted 02]] + + +There is an error in the specification for withdraw. In the postcondition tagged withdrawn, the plus sign should have been a minus sign. Therefore, the assertion should read like this: + + + withdrawn: balance = old balance - an_amount + + +Certainly we will fix this, but AutoTest gives us the opportunity to extract a test based on this particular failure. So, let's do that. + +So, we go to the AutoTest tool and click triangle next to ''Create new tests'' button and select the '''Extract tests from debugger''' from the drop-down menu. Because we are paused in the debugger, the drop-down menu appears with the '''Extract tests from debugger''' choice enabled this time: + + +[[Image:AutoTest create new test 02]] + + +When we select '''Extract tests from debugger''', we are presented with the New Eiffel Test Wizard's '''Test Extraction''' pane. This wizard pane shows a depiction of the current call stack and asks us for which feature(s) on the stack we want to create the test: + + +[[Image:AutoTest test extraction pane|Test extraction pane]] + + +The choice for withdraw is the selection we want. We can deselect the stack frame for make if it is pre-selected. If we click '''Next''' at this point we would be taken to the '''Tags''' pane, and from there to the '''General''' pane. But we really don't need to do this. AutoTest will sense that we are extracting a test for {BANK_ACCOUNT}.withdraw and tag the test properly. It will use the same test class name from the '''General''' pane, but add a numerical suffix. So, all we need to do now is to click '''Launch''' from the '''Text Extraction''' pane. + +AutoTest creates the new test and returns us to the debugger, where our system is still on hold. We can stop execution and compile to include the new test. + +Now we see the new test class and test in the AutoTest tool windows. + + +==Run the tests, fix a problem, run the tests== + +We run our tests using '''Run all''', and we see that the test on withdraw is still failing: + + +[[Image:AutoTest tool after run]] + + +If we fix the error in the postcondition in withdraw, recompile, and then re-execute the test, we find that it is successful. + + +==A closer look at an extracted test== + +Look at the code that was generated for the extracted test after the assertion violation occurred: + + +note + description: "Regression tests reproducing application state of a previous execution." + author: "Testing tool" + +class + TEST_BANK_ACCOUNT_EXTRACTED_WITHDRAW_01 + +inherit + EQA_EXTRACTED_TEST_SET + +feature -- Test routines + + test_withdraw + note + testing: "type/extracted" + testing: "covers/{BANK_ACCOUNT}.withdraw" + do + run_extracted_test (agent {BANK_ACCOUNT}.withdraw, ["#1", {INTEGER_32} 100]) + end + +feature {NONE} -- Access + + context: !ARRAY [!TUPLE [type: !TYPE [ANY]; attributes: !TUPLE; inv: BOOLEAN]] + -- + do + Result := << + [{BANK_ACCOUNT}, [ + "balance", {INTEGER_32} 400 + ], False] + >> + end + +end + + + +You probably noticed immediately that it doesn't look much like the code that we wrote for our manual test in the previous section. + +One reason for the difference is that the class does not inherit directly from EQA_TEST_SET as our manual test did. Instead, it inherits from EQA_EXTRACTED_TEST_SET which itself is a descendant of EQA_TEST_SET. EQA_EXTRACTED_TEST_SET provides additional functionality for extracted tests. + +Notice that the call to the target routine {BANK_ACCOUNT}.withdraw is effected in the routine test_withdraw which passes an agent representing {BANK_ACCOUNT}.withdraw to the procedure run_extracted_test. The second argument to run_extracted_test is a TUPLE with the argument values which were used in the call to withdraw which caused the original assertion violation. + +Another thing worth noting is the function context. This is how AutoTest recreates the state of the instance of BANK_ACCOUNT at the time of the assertion violation. + +{{caution|The extracted test recreates the state at the point at which execution has halted. So, in the case of a postcondition or invariant violation, the values of the attributes will reflect any changes that have been made during the execution of the routine. (In the example, the value of balance is set to 400, rather than 500 as it would have been when routine withdraw began execution.) This could make a difference in whether the test extracted after an exception is a valid recreation of the original failure. One way of dealing with this, at least in simple cases like this, is to change the test class code to reflect the proper value. A safer way would be rather than extracting the test after the exception, restart the system and stop execution as it enters the failing routine, then extract the test at that point. }} + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/using-autotest/using-generated-tests.wiki b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/using-generated-tests.wiki new file mode 100644 index 00000000..79d09660 --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/using-autotest/using-generated-tests.wiki @@ -0,0 +1,142 @@ +[[Property:title|Using generated tests]] +[[Property:weight|7]] +[[Property:uuid|c17ebddf-5d35-76c1-4912-d9f1ca3770a5]] +==About generated tests== + +Generated tests fill a different role from either extracted or manual tests. The idea behind generated tests is that because we specify software through its contracts, and because compliance of the software to those contracts can be actively monitored at runtime, we can know two things necessary for building tests: +#For any routine, what argument values are valid +#For the execution of any routine, what resulting states are acceptable + +The first bit of knowledge comes from the ''preconditions'' of target routines. The second comes from ''postconditions'' of target routines and the ''invariants'' of target classes. Armed with this knowledge, we should be able to generate a series of invocations of target routines using random argument values, and evaluate the results. This is what is done by an internal facility of AutoTest that builds generated tests (this facility is often also referred to itself as AutoTest). After many of these randomly generated invocations, AutoTest attempts to synthesize the results of these feature calls into new test classes. The tests in these new test classes contain the calls leading up and including calls that fail. AutoTest will attempt to create only one test from each unique type of failure, so that your test directory doesn't get loaded with lots of duplicate tests. + +You may look at a generated test class and think that it seems to be very long and to contain lots of stuff that you doubt is relevant. This is a fair assessment. The processes that AutoTest uses to build and minimize generated tests are constantly being improved. But for now, generated tests, although useful, retain a certain amount of that randomness that was used in their creation. + +So for the time being, unlike manual and extracted tests, you should not make generated tests a part of your permanent test suite. Rather, you should consider them a disposable means to an end. Use each generated test as a guide for building an effective and readable manual test. + + +==Creating generated tests== + + +If you've been through the discussion of the creation of [[Create a manual test|manual]] and [[Using extracted tests|extracted]] tests, then it should come as no surprise to learn that you use the '''New Eiffel test wizard''' to create generated tests. And much of this process will seem familiar now. + +In the drop-down menu for the '''Create new test''' button, choose the item '''Generate tests for custom types'''. + + +[[Image:AutoTest create new test]] + + +At this point, you'll see the '''Test Generation''' wizard pane. This pane allows you to specify which classes you want to generate tests for. You can also adjust the values of certain parameters used in the test generation. + +Let's type the class name BANK_ACCOUNT into the box labeled '''Class or type name''' and click the "'''+'''" button to added it to the list. Of course you can remove an item from the list by selecting it and clicking "'''-'''". + + +[[Image:AutoTest Test Generation pane]] + + +The rest of the pane is used to configure certain options for the test generation process. + +'''Cutoff (minutes)''' lets you specify a number of minutes for AutoTest to run random invocations of the routines in your target class(es). + +'''Cutoff (invocations)''' lets you control how long AutoTest will run random invocations by declaring a specific number of invocations. + +'''Routine timeout''' sets an upper limit on how long AutoTest will wait for a random feature call to complete. + +'''Random number generation seed''' provides a way for you to control the seeding of the random number generator used by AutoTest. When the value is '''0''', as shown here, the seed is created from the system clock. This is adequate in most cases, but this option is provided because there might be some cases in which you would want to try to reproduce a previous test generation run. And to do that, you would have to set the seed to the same value for multiple runs. + +The two check boxes '''Slice minimization''' and '''DDmin for minimization''' allow you to select the approach that you want to use for minimizing the size of generated tests. Generally, the default value here is adequate. '''Slicing''' and '''ddmin''' are two different ways of doing minimization. Tests are generated after running many randomly generated calls to routines in your target class. Tests are generated for calls that fail. So, there may have been many randomized calls leading up to the failed call. Minimization helps to eliminate the majority of the unrelated randomly generated calls, leaving the test code as short as possible. You will notice that minimization processing is memory and processor intensive. + +The last check box, '''HTML statistics''' gives you the option of having AutoTest record the results of a test generation run in a set of files that you can review with a web browser. + +We can allow all these to remain their default values, with one exception. Let's check the '''HTML statistics''' box. + + + +During the test generation you can watch the random invocations of your class's routines being logged in the Testing pane of the Outputs tool. When the generation completes, AutoTest directs you to the location of the results: + + +[[Image:AutoTest testing pane after generation]] + + +The file statistics.txt contains a summary of the generation run. If you enabled '''Create HTML output''' you can open the file index.html with your browser and view formatted summary and detail information. + + +{{note|The '''result''' directory includes files that summarize the whole generated testing process. Some of these are lengthy because they contain information on test cases used for each target routine. }} + + +If we try to generate tests on the class BANK_ACCOUNT in which we have already fixed two bugs after the manual and extracted tests, we will see something about like the following results: + + +[[Image:AutoTest generated results pass]] + + +The important thing to notice here is the status: '''pass'''. There were no randomly generated cases that failed. So every valid invocation of a routine for class BANK_ACCOUNT completed satisfactorily. Therefore, no generated test class was created. + +If we re-introduce the bug into the deposit procedure of class BANK_ACCOUNT (i.e., Remove this line of code: balance := balance + an_amount), and then request generated tests again, we get different results: + + +[[Image:AutoTest generated results fail]] + + +This time, as we expected, failures were encountered. And a generated test class was created. + + +==A look at a generated test== + + +The generated test class looks like this: + + + +note + description: "Generated test created by AutoTest." + author: "Testing tool" + +class + TEST_BANK_ACCOUNT_GENERATED_001 + +inherit + EQA_SYNTHESIZED_TEST_SET + +feature -- Test routines + + generated_test_1 + note + testing: "type/generated" + testing: "covers/{BANK_ACCOUNT}.deposit" + local + v_6: BANK_ACCOUNT + v_7: INTEGER_32 + do + execute_safe (agent: BANK_ACCOUNT + do + create {BANK_ACCOUNT} Result + end) + if {l_ot1: BANK_ACCOUNT} last_object then + v_6 := l_ot1 + end + v_7 := {INTEGER_32} 3 + + -- Final routine call + set_is_recovery_enabled (False) + execute_safe (agent v_6.deposit (v_7)) + end + +end + + + +{{note|If you've been following along by the doing these examples in EiffelStudio, you may notice that your generated class looks slightly different. }} + + +This test is written in a way that is a little different from both the manual test we wrote and the extracted test. But it's not too hard to figure out what's going on. An object of type BANK_ACCOUNT will be created (local v_6) and the deposit feature will be applied to it with an argument value of 3 (local v_7). + +You can see that this test, although it is implemented differently, is about the same as the manual test we wrote covering {BANK_ACCOUNT}.deposit. Because we have re-introduced the bug in BANK_ACCOUNT, if we run all tests, we see that both our manual test and the generated test are failing ... only the extracted test covering {BANK_ACCOUNT}.withdraw is successful: + + +[[Image:AutoTest interface after run 05]] + + +If we replace the implementation for {BANK_ACCOUNT}.deposit that we had removed, and then re-execute the tests, all are successful. + + + diff --git a/documentation/20.05/eiffelstudio/Tutorials/viewing-classes.wiki b/documentation/20.05/eiffelstudio/Tutorials/viewing-classes.wiki new file mode 100644 index 00000000..746479cf --- /dev/null +++ b/documentation/20.05/eiffelstudio/Tutorials/viewing-classes.wiki @@ -0,0 +1,120 @@ +[[Property:title|Viewing Classes]] +[[Property:weight|-9]] +[[Property:uuid|78136af1-5d7a-f3d2-9619-17f4c0541f1e]] +__FORCETOC__ +We haven't really looked at the text of a class yet. It's important anyway to see how EiffelStudio provides you with numerous, complementary '''views''' of your software. The Class tool and Feature tool are where the bulk of these views will be displayed, although the Editor tool does support some special views. For now we will concentrate on the views available in the Class tool. + + +==Making some room== + +We'll need just one development window for the moment, the one that was targeted to LIST. You should still have that window available from the previous Tour topic, and it should look about like this: + +[[Image:es gt development window targeted to list 01]] + +{{note| If you don't see a development window targeted to LIST, just retarget one, as you know how to do this now, for example by typing the name followed by Enter in the Class Field at the top left. }} + +First let's give ourselves more space. Right now we don't need the Groups tool or any of the other tools sharing that pane. We could get rid of them by clicking the close buttons on the top right corner of the panes. Then we could get them back later by following the menu path: + +View --> Tools --> x + +where "x" is the name of a tool we want restored. But there is an easier way. Let's just hide them away until later. + +We do this by setting the pane containing the tools to '''Auto Hide'''. On the bar at the top of the pane, you'll see the Auto Hide icon ([[Image:auto-hide-icon]]) which looks like a pushpin. + +[[Image:es gt auto hide 01]] + +Click the icon and you'll see the pane shrink into a set of tabs on the right window margin and the remaining panes will expand to fill the abandoned space. The tools in the pane will temporarily expand back out if you move your mouse cursor over their tabs. Try it with one. When you want the pane back in its original place permanently, you just expand one of the tabs by mousing over it, then click the Disable Auto Hide icon, which is the pushpin again, just horizontal this time. + +Two panes remain, showing the Editor tool and the lower pane containing the Outputs tool and others. You can resize the panes by dragging the border between them. Make sure there's plenty of room in the lower pane. + + +==The Class tool== + +Before we look at the Class tool, let's make sure that we set [[Change data share mode|linked data share mode]] which will always display information about the current target. Go to the main menu bar and expand the menu item View. If you see a choice marked with the link context icon ([[Image:context-link-icon]]) and labeled Link Context Tool, then select it. After it has been selected, or if it has already been selected, then the label will read: Unlink Context Tool. + +At the bottom of the lower pane you'll find a tab labeled '''Class'''. This gives you access to many forms of information about the current class -- the target of the development window. Click on the Class tab to bring up the Class tool. A set of buttons at the top enables you to display a number of '''views''' of the class. The currently highlighted button indicates the default view: Ancestors. You can see the others' names by moving your cursor over the various view icons, and reading the tooltips. + +The view currently displayed, Ancestors, shows the inheritance structure that leads to the current target, LIST : + +[[Image:es gt class tool 01]] + +This shows that LIST is an heir of CHAIN which itself, as an example of multiple inheritance, is an heir of CURSOR_STRUCTURE, INDEXABLE, and -- twice, as an example of repeated inheritance -- SEQUENCE. If, because of direct or indirect repeated inheritance, a class appears more than once, the display doesn't repeat its ancestry the second and subsequent times; the omitted repetition appears as just three dots, '''...''', as illustrated here for the second occurrences of BAG, ACTIVE and others. + +As you may have guessed, all the class names that appear on this display, by default in blue, can function as hyperlinks: you can use any one of them to retarget the Development Window to the corresponding class. This will be another major retargeting mechanism. But let's not pursue it for the moment and instead continue looking at the documentation views. + +Next to Ancestors button is Descendants, which will give you the descendants of a class in a similar format: + +[[Image:es gt class tool descendants 01]] + +The progeny of LIST, as you can see, is just as impressive as its ancestry. + +Let's now look at the other formats, starting from the left. The first button, Clickable, gives the class text. It's essentially the same information as appears in the top Editing Tool (whose pane was reduced to its bare minimum in the last few pictures, showing only the first three lines or so), but with some differences: +* The Text view in the Editor is editable. In fact it's EiffelStudio's primary tool for entering software texts. The Class tool's Clickable view is just a view; you can't change it. +* The Text view retains the formatting of the class text the way it was typed in; the Clickable view is automatically formatted -- "pretty-printed" -- according to the standard Eiffel layout rules. +* The Clickable view does not include comments inside routine implementations ( do and once clauses), although it does retain features' header comments. +* As part of the pretty-printing, the Clickable view uses colors and fonts to distinguish keywords, identifiers, comments and other syntactical elements. You can change the fonts and colors, like many other elements of the interface, through Tools --> Preferences. (Now is not the time.) + +This view is called "Clickable" because, as we'll see later, every syntactical element on it is a hyperlink, which you can use for browsing. + +After Clickable comes the Flat view button. The layout of the result is similar. The flat form of a class is the reconstructed class text including not only what's declared in the class itself but also everything that it inherits from its ancestors, direct or indirect. This applies to the flat form's features, which include ancestor features, but also to contracts: the flat form's invariant includes all clauses from ancestors' invariants, and the preconditions are expanded to take require else and ensure then clauses into consideration. (The [[An Eiffel Tutorial (ET)|Eiffel Tutorial]] explains these notions in detail.) + + +[[Image:es gt class tool flat 01]] + + +As a result, the Flat view shows the class text as it might have come out had inheritance (what a horrible thought even to contemplate!) ''not'' been available to write it. + +The first two features appearing in the above display, cursor and first, are indeed inherited from ancestors, rather than declared in LIST itself. Note how EiffelStudio, when producing the flat form, adds a line of the form + + -- (from CLASS_OF_ORIGIN) + + +to the header comments of inherited routines, to document where they come from. + +The flat form is an important notion of object technology, making it possible to understand a class by itself, regardless of the possibly rich inheritance structure that led to it. Looking at the Flat view of LIST, you may note how few of its properties come from the class itself; most of the interesting work has been done in ancestors, and LIST just adds a few details. + +{{note|If at any time you want to search for a certain pattern in the views displayed, you can type CTRL-F. A Find bar will come up at the bottom of the pane you are using. If you need more searching power, click the Search icon ([[Image:search-icon]]) in the development window's tool bar to invoke EiffelStudio's [[Search tool]]. }} + +Next come two essential documentation views: Contract and Interface. Based on Eiffel's principles of Design by Contract, they document the interface properties of a class. Unlike the previous two, they do not show actual Eiffel texts, but information useful for client classes. + +The contract form (also known as the '''short form''' of a class) is the class text deprived of any internal detail to retain interface information only. It discards any feature that's not exported (available to all clients); for the retained features, it discards the implementation -- do or once clause -- but retains the header (feature name, arguments, results), the header comment, and the contracts (precondition, postcondition, invariant) minus any contract clause that refers to a non-exported feature and hence would be useless to clients. + +As you will know, particularly if you have read the book [[Object-Oriented Software Construction, 2nd Edition]], the contract form is the preferred way of documenting software elements, especially reusable components, as it provides clients with just the right level of abstraction: precise enough thanks to the type signature and the contracts; clear enough thanks to the header comments; and general enough since it omits implementation details that are irrelevant to client programmers (and might lead them to write client code that won't work any more if the implementation changes). + +In practice you will often want to use, instead of the Contract view, the next one, Interface, also known as "flat-short form" and "flat contract form", which applies the same rules to the flat form rather than to the original class. This means it shows information on all the features of the class, immediate (defined in the class itself) as well as inherited, whereas the short form, non-flat, only considers immediate features. The Interface view provides the complete interface information for the class. Try it now on class LIST. + +The next two buttons are for the Ancestors and Descendants views, which we have already seen, showing classes connected with the target through one of the two inter-class relations, inheritance. After them come Clients and Suppliers, to list the classes connected through the other relation, client. Clicking the Clients button shows the list of clients of LIST. + +Now click the next button to see the Suppliers of LIST. + +The only two classes that LIST needs for its own algorithms are basic types from the Kernel Library, BOOLEAN and INTEGER_32. In Eiffel, as you may remember, all types are defined by classes, even those describing such elementary values as integers and booleans. + + +==Feature information in the Class View== + +Let's resist the natural urge to go see now what the classes INTEGER_32 and BOOLEAN look like, and instead continue our survey of views. The remaining views will all display information about the '''features''' of the class. The first of them, Attributes, lists the attributes. It's not very interesting for LIST, a deferred class with only one attribute -- you can check this for yourself by clicking the Attributes button -- so let's look at the next one. Click the Routines button now to display information about the routines of class LIST : + +[[Image:es gt class tool routines 01]] + +The sections of this display group routines according to the ancestors of LIST -- including LIST itself -- that first introduced them; for example append originally comes from CHAIN and back from BILINEAR. Much of the benefit of this display comes from its support for browsing: all the colored elements, representing classes and features, will be "clickable" hyperlinks. + +The Invariants button shows the complete class invariant for LIST. This includes all invariant clauses that have been inherited from all ancestors. + +Other Class tool buttons display information in the same format as Attributes and Routines. Each selects a specific subset of the target class's features. You can now try any of the others by clicking the corresponding button: +* Deferred features: abstract features which don't have an implementation in the current class, only in eventual descendants. Try this for LIST ; you'll see that this deferred class indeed has a number of deferred features. +* Once and constants: constant attributes, "once functions" which provide shared objects (close to the "singleton" pattern), and once procedures which provide a convenient initialization mechanism. LIST has 'Operating_environment' and 'Io' inherited from the parent class ANY. +* External features, implemented as calls to routines, macros or other elements implemented in other languages. LIST hasn't any. +* Exported features: those available to all clients. LIST has quite a few. + + +==Restoring the look of the development window== + +Once you're done looking at the different views, let's undo the changes that we made to the configuration of the development window at the beginning of this section in '''[[#Making some room|Making some room]]'''. + +Reduce the relative size of the lower pane. + +Then go to one of the tabs on the right margin of the development window, Groups, will work. Hold your cursor over it for a moment and it should expand. Then click the Disable Auto Hide icon, the horizontal pushpin, to restore the rightmost pane. + + + + diff --git a/documentation/20.05/eiffelstudio/_images/16x16--breakpoints-disable-icon.png b/documentation/20.05/eiffelstudio/_images/16x16--breakpoints-disable-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed72a336b3126d586904ee285a3067531a84715 GIT binary patch literal 716 zcmV;-0yF)IP)ko zh4NOsurJ6yG@3Yw(wyctH=R3YXJ>C0;xaP-m(Roh_k8d?f_3t%s$3c$CpzWBl9|cY zy(JX4vokkDfo%Te^{X|CVx;Zofx8qU;++1Uko`~D+_Uw@Wu4|-Ajsw%b5 z<0!e=*fKI8EV0^bSgZ=dY5^g*@o9*{16csL-PvMzZs!!S2A19=ik=E*hGv#ipNj^Xe1%Yd-K#JSW#hTi1ov yJJ<{Wp!SSP@5Bsq{t$WjPD)A(XlSlZ`F;be`5WlxRSI+f0000i~I*LH^UtJ?D4Nx#yoF_)DX&retI`K{TS{ zc01YDP{Wyv?Sc(t1)n|~lSZ~cv1qdVD@S@M%VIJ^MWx2cOZ&L{-~|{!O$|r)H_&zb zh_D_Q8XT93B4}#f%HGx;0w6pSm(!sb&mO<$v;4;8GbcFLaahdFCFHf+_c-5ijO%v> zQAb}*$>?{T)&q?e4A8i%P5``oJ}FC2^02fLs;{pVqi;UQz8ix8sFB$OrdeJC|1JNX zdH_OGKdrmIn?dWWMk6|vo=yK9l6&$s{k|BP>9?Hf?vbvRW}13?tzwGX?IgXFB|Hg8%>k07*qoM6N<$f>0_*F#rGn literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/16x16--breakpoints-enable-icon.png.data b/documentation/20.05/eiffelstudio/_images/16x16--breakpoints-enable-icon.png.data new file mode 100644 index 00000000..2495ee49 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/16x16--breakpoints-enable-icon.png.data @@ -0,0 +1,3 @@ +title=16x16--breakpoints-enable-icon +author=admin +path=content/16x16-breakpoints-enable-icon diff --git a/documentation/20.05/eiffelstudio/_images/16x16--general-add-icon.png b/documentation/20.05/eiffelstudio/_images/16x16--general-add-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..efa54325e80d66c98cb1e9b525b3367a592a95d5 GIT binary patch literal 540 zcmV+%0^|LOP)Xo2YF^r54QT^84(lbF68k%**M&0%FK}|E|yjGVD;fA5U3C%Den0`E}z6HllCIQq9TT@2 znoR!(iW6Cim$HZ?>HuCW1RO8T>5hpjKO8E3gxl4`@hHMtOB6+%JT;CgAh0-FBS^#K zNFS?>(`>d0el-;l7|0C+&_9rPuv^K4yJeowTNJo`CCj6Q-<@mxX$4XE`emLtj{l2W zlO){r;yA`RhjVUUtvGduAT!V* z7(8Og<)Bcw-u)K#=GsvZ1&2BWqr(9=ABJqyh1Ion#972!#97o^#J3P(eY eKj;_q9)AESs6@GFOWsNV0000sHgE7SY;OM5}f|D``
(XDQ2{3VFlq-Z?t*paKRC>Nh39XpymIn9$)^4biP-a7diY?J zcpQqw1i4jZWld`H+!qhWGYobl0l1e<`~kAuO+^(Ha9pMDK!o0&7-GN(T&*?%u>1)g zzVzt6wye3ky){U*Pz(VIP9az~H$$=oT3exgS0KxRZ=T`vWQwlK^I8Xl4&J=Baa=`0 z*x#~ZaJ)6a=$#U&J$-auuob}i=o&=h^!I0Y@KjKV1&<_%pkXY_f^%o0ob{9V2F^b^ z!Wv+C5=32CuyG0lsKWHKDT>8nP2=O&>DgC@mC6lC^ulQAbcRXW$4C>y!y`y|Sp>Z5 zzvZizeguG@Mi7O?MVpG8LKJ3Zrtmy(TV1@AMf~z_2SE~#9?MXkt)c>hLnAf2jSbeg zXZ%tCs0twPZpmidKZy~TeX+BHv9WCZ3+-XO(noJ3E+|$RbwI+ScvSj#^vx-*UBmHw>K~LBoF=6G*~pi3Sd8fX31s z+8bl^{wDdNko)c+eg(g>f$=sGzd|&gM65t+wE*x7DMgBrqXeAx00000NkvXXu0mjf DD{de5 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/16x16--general-copy-icon.png.data b/documentation/20.05/eiffelstudio/_images/16x16--general-copy-icon.png.data new file mode 100644 index 00000000..f165d2f9 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/16x16--general-copy-icon.png.data @@ -0,0 +1,3 @@ +title=16x16--general-copy-icon +author=admin +path=content/16x16-general-copy-icon diff --git a/documentation/20.05/eiffelstudio/_images/16x16--general-delete-icon.png b/documentation/20.05/eiffelstudio/_images/16x16--general-delete-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0c022debaf6b8af48e02df9d5ff8bb5b378664 GIT binary patch literal 438 zcmV;n0ZIOeP)L_MQNkwe2i-VKk&^4151UFY*1Sco|2|;vo5vM|j!oyh~HPq_R zhB|d{cx@07BG;i!sw5Q(e$(ULeZRYV?|?(d;+!VBPJ%J|uQvbyOT)m>Fu+PBEPB1Y z5Q}q~HyUnEz&TvSV))!_a96EjJHgS)G-=WA)2L9u(lESa!5B?+ojR&Y9aW|0T#i=^>y0?&b$_e{h=A5VsTD=O{01=N~2`b_ZKYA{UIyUq;V!g^=Op(n&#Qcm1z=-$7!PLJ8^e}kHG-# z=@bBPkb64@ybQWWX3)xyv)unqqOFa}}UNQc8X%jbPxTuvmU>r@K15Z)04V>HfW g=)K+EziEfo7fgfTpMi_Y-v9sr07*qoM6N<$f=Oq}PXGV_ literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/16x16--general-delete-icon.png.data b/documentation/20.05/eiffelstudio/_images/16x16--general-delete-icon.png.data new file mode 100644 index 00000000..4dcba811 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/16x16--general-delete-icon.png.data @@ -0,0 +1,3 @@ +title=16x16--general-delete-icon +author=admin +path=content/16x16-general-delete-icon diff --git a/documentation/20.05/eiffelstudio/_images/16x16--general-edit-icon.png b/documentation/20.05/eiffelstudio/_images/16x16--general-edit-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0d10ac664befcac86bedb7f6fb98b191e5b582f8 GIT binary patch literal 535 zcmV+y0_gpTP) zv1?ON6oOf=O!^ zi_k@q4vGrx6NE^!*u*3z@7dgQ9G-m%*lP7G_YC*@&f(sl#Xpo@L-%^81Emn6Om7X=-m9#e<;z?V=QY?%FZ$Z@ zl(wt1U7_I$4OeOQ6rG7tPQdVV68_ogbg%&%VD_SoD5!uch`@Nof&*ZHdc95_EPJOb zh=j36d{`BZty_>j0CvuB#n~kPEN=mXcDm|MABOoe{C@07@E)O0jXo;SZf(&s@b2w8 z8`U*RrH6noxyNPz=W?r{kV;KpeslwY-SqqoQs>U23WY*}<>gBxlcnI&t=p@JK=SMa z#(>%VJ}eMaVC~g&j4@;~8EUl}A{P)5?u+p8!yB@>1)eTF;O6W+;gRS-Fn-h`7K5p& z%Rv_U{a<+)`W<87`i*&vfnIoYAV|i;%q@P!^;~+cN6+pc@f><9p2M^Jlg|J?si Z{RDS276M8>LJj}`002ovPDHLkV1g+E`yv1U literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/16x16--general-edit-icon.png.data b/documentation/20.05/eiffelstudio/_images/16x16--general-edit-icon.png.data new file mode 100644 index 00000000..72553165 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/16x16--general-edit-icon.png.data @@ -0,0 +1,3 @@ +title=16x16--general-edit-icon +author=admin +path=content/16x16-general-edit-icon diff --git a/documentation/20.05/eiffelstudio/_images/16x16--general-save-icon.png b/documentation/20.05/eiffelstudio/_images/16x16--general-save-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3f6a757cfadf957f6868ee3de4ec853a23fa234d GIT binary patch literal 518 zcmV+h0{Q)kP)(o&QC zW3t>`_0F96b1brZ-Mea)1BdgSf%DCGz8N@UbO7G$&2%QffSb*`!(e17g zLZB>5j4>EvP*rly2YT!A(#SO7_`Sz$OF zHYOTlu-3Nvq9};bHwx@Rf%mZc>@xk0;=i9}ItdM4c+e1tS7KC-w>H?m`xy~If*=y+ zRoHvE3BZ*LH`)pS#49N%+jl;3Zmr~SToJwF_3kwQ?mhZK*PQ3XeVv=QN|ZE$0b&{{R3007*qo IM6N<$g8AU_ng9R* literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/16x16--general-save-icon.png.data b/documentation/20.05/eiffelstudio/_images/16x16--general-save-icon.png.data new file mode 100644 index 00000000..d0bfc509 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/16x16--general-save-icon.png.data @@ -0,0 +1,3 @@ +title=16x16--general-save-icon +author=admin +path=content/16x16-general-save-icon diff --git a/documentation/20.05/eiffelstudio/_images/16x16--new-class-icon.png b/documentation/20.05/eiffelstudio/_images/16x16--new-class-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..535b36a4213676f5d01776003f71362d3083d0f5 GIT binary patch literal 298 zcmV+_0oDGAP)8%E2N;HpmK>)QAKcuq;xt8s)&XTXnG&)vA4~!`~MTLS;0D(YPD5 w1;>{kuKp#}3pXWpRSRwlnj*V;1H7L&12Ri)6`*eYeE literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/16x16--new-class-icon.png.data b/documentation/20.05/eiffelstudio/_images/16x16--new-class-icon.png.data new file mode 100644 index 00000000..3bf483d2 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/16x16--new-class-icon.png.data @@ -0,0 +1,3 @@ +title=16x16--new-class-icon +author=admin +path=content/16x16-new-class-icon diff --git a/documentation/20.05/eiffelstudio/_images/16x16--new-cluster-icon.png b/documentation/20.05/eiffelstudio/_images/16x16--new-cluster-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1816187da639bf714d85a6a20950b26195d47624 GIT binary patch literal 529 zcmV+s0`C2ZP)Kb8fs_2ri2 z&OXQYKQS>e%(biUs8ni%VIAAv!@2V%tM7#JdQM!|70*LNj)~_XuItL?=NnR9&&l*O z^5pTszRs*nCL_zsVT(Qk3cw86>|S2JIEiYkv9dNtwMrKT2Mq=u+~0LGe<_LMtdL5L zQYc&}pC7|}>Y}WlSPU?{f0U$sn33cG(j)sAOYbIqG{&1^4Quh0Bgap?W^(dkl)?Ob z5v4$D5Ft8ua;w(l(cCxU8y`2QeqUr^p-48H#P^F`;`Vtb7X@Jmu|@+#eMM{V{ST3_ zE$;Ocfu@4(ZHPA-AbRr;;m#&!scdpC1q7$YX)3cytX?+*dfn0<z7O3P|01 zh*E-5EeE=fgEprWaCbHM{qt7~G|!mt(F*zbA_3Oa6wFtC^#frouz{RKonfW z)DBKos!ehnT4}4Mpo<>3a37EJd-w1z{5$3IdHvdKjFIHZ81r+8F-AdvBv(Ozj4>)z z(A*{}RTvHQJWrC_s|!gRl3aP7r*hTN%t|)E2B_ETmhU@+;SCTHhO79#!}M+wB@nl= zAGbcosMR8T-{EoLnAybwuTLrGhY=G+NZ(+53Qm^$z9GQ;4zl(+=BQ8ie(3N#AUSsHdwvN1YEE8 zM=LBLB@nl}AMkK69QWG@gZdadX^&okT;@#zS4R<+4ffbb#vkh)au1lW`u~hh00000 LNkvXXu0mjfsAisl literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/16x16--new-feature-icon.png.data b/documentation/20.05/eiffelstudio/_images/16x16--new-feature-icon.png.data new file mode 100644 index 00000000..c5f3e3e9 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/16x16--new-feature-icon.png.data @@ -0,0 +1,3 @@ +title=16x16--new-feature-icon +author=admin +path=content/16x16-new-feature-icon diff --git a/documentation/20.05/eiffelstudio/_images/56--unix-registration-error.png b/documentation/20.05/eiffelstudio/_images/56--unix-registration-error.png new file mode 100644 index 0000000000000000000000000000000000000000..633517d8cce5ec8220632106fa9d455626648c98 GIT binary patch literal 11343 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

;Rjh$P%kgTVE&bqVy&DzFCn>?P+55u2OuOoX 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/56--unix-setup.png.data b/documentation/20.05/eiffelstudio/_images/56--unix-setup.png.data new file mode 100644 index 00000000..2c582966 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/56--unix-setup.png.data @@ -0,0 +1,3 @@ +title=56--unix-setup +author=admin +path=content/56-unix-setup diff --git a/documentation/20.05/eiffelstudio/_images/56--windows-registration-error.png b/documentation/20.05/eiffelstudio/_images/56--windows-registration-error.png new file mode 100644 index 0000000000000000000000000000000000000000..adb6c4f16531013b5ced82e109b310afc4bee139 GIT binary patch literal 7799 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/56--windows-registration-error.png.data b/documentation/20.05/eiffelstudio/_images/56--windows-registration-error.png.data new file mode 100644 index 00000000..0cff57b9 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/56--windows-registration-error.png.data @@ -0,0 +1,3 @@ +title=56--windows-registration-error +author=admin +path=content/56-windows-registration-error diff --git a/documentation/20.05/eiffelstudio/_images/56--windows-registration.png b/documentation/20.05/eiffelstudio/_images/56--windows-registration.png new file mode 100644 index 0000000000000000000000000000000000000000..3721b8012322d8666cb1a3fa26ade2b0d76d429d GIT binary patch literal 52271 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 z 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 SQr-m&K;Y@>=d#Wzp$Pz)IE^d- literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/56--windows-registration.png.data b/documentation/20.05/eiffelstudio/_images/56--windows-registration.png.data new file mode 100644 index 00000000..34286628 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/56--windows-registration.png.data @@ -0,0 +1,3 @@ +title=56--windows-registration +author=admin +path=content/56-windows-registration diff --git a/documentation/20.05/eiffelstudio/_images/Advanced_Options_main.png b/documentation/20.05/eiffelstudio/_images/Advanced_Options_main.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd4ae4fc5736c81a8ae71a9140334af6b35367f GIT binary patch literal 47486 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/Advanced_Options_main.png.data b/documentation/20.05/eiffelstudio/_images/Advanced_Options_main.png.data new file mode 100644 index 00000000..347fe5b6 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/Advanced_Options_main.png.data @@ -0,0 +1,3 @@ +title=advanced-options +author=halw +path=content/advanced-options diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_General_pane.png b/documentation/20.05/eiffelstudio/_images/AutoTest_General_pane.png new file mode 100644 index 0000000000000000000000000000000000000000..ccd9a268b260414b39fc27acf3dad82f3597274a GIT binary patch literal 17021 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 Nl~jV1zR~~ue*wj6(p&%l literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_General_pane.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_General_pane.png.data new file mode 100644 index 00000000..51360963 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_General_pane.png.data @@ -0,0 +1,3 @@ +title=AutoTest General pane +author=halw +path=content/autotest-general-pane diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_General_pane_empty.png b/documentation/20.05/eiffelstudio/_images/AutoTest_General_pane_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..36287dd111ee31958491875397970dcac7987e1a GIT binary patch literal 16915 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 GOZ*=bM{i32 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_Interface_annotated_01.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_Interface_annotated_01.png.data new file mode 100644 index 00000000..07338a43 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_Interface_annotated_01.png.data @@ -0,0 +1,3 @@ +title=AutoTest interface annotated 01 +author=halw +path=content/autotest-interface-annotated-01 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_Outputs_tool_after_run_01.png b/documentation/20.05/eiffelstudio/_images/AutoTest_Outputs_tool_after_run_01.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1b9b7395904f6aaab16902a24f495f4a1e704e GIT binary patch literal 19531 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_Tags_pane.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_Tags_pane.png.data new file mode 100644 index 00000000..a8a05040 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_Tags_pane.png.data @@ -0,0 +1,3 @@ +title=AutoTest Tags pane +author=halw +path=content/autotest-tags-pane diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_Tags_pane_empty.png b/documentation/20.05/eiffelstudio/_images/AutoTest_Tags_pane_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..50b9f347e7bafe7cb6580fda9b485303257f5700 GIT binary patch literal 13117 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 Q@IQ&&?DBIC}^jx7@@6`&QMhxD{3V~jJZtR~n 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_add_cluster_dialog.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_add_cluster_dialog.png.data new file mode 100644 index 00000000..12d37d44 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_add_cluster_dialog.png.data @@ -0,0 +1,3 @@ +title=AutoTest Add Cluster dialog +author=halw +path=content/autotest-add-cluster-dialog diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_add_testing_libraries_dialog.png b/documentation/20.05/eiffelstudio/_images/AutoTest_add_testing_libraries_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..bbee73a983f970d84e75ad613079795a8131e7e9 GIT binary patch literal 14930 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 z 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_add_testing_libraries_dialog.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_add_testing_libraries_dialog.png.data new file mode 100644 index 00000000..a0d2b5da --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_add_testing_libraries_dialog.png.data @@ -0,0 +1,3 @@ +title=AutoTest add testing libraries dialog +author=halw +path=content/autotest-add-testing-libraries-dialog diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_create_manual_test_pane.png b/documentation/20.05/eiffelstudio/_images/AutoTest_create_manual_test_pane.png new file mode 100644 index 0000000000000000000000000000000000000000..30da04c5c01acfc4b7af46b6a70be08d85be3845 GIT binary patch literal 13886 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_create_manual_test_pane.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_create_manual_test_pane.png.data new file mode 100644 index 00000000..5dd82070 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_create_manual_test_pane.png.data @@ -0,0 +1,3 @@ +title=AutoTest Manual Test pane +author=halw +path=content/autotest-manual-test-pane diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_test_02.png b/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_test_02.png new file mode 100644 index 0000000000000000000000000000000000000000..40cab741e0b1592ae1120ebbbd21440eb843d16b GIT binary patch literal 12155 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_test_02.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_test_02.png.data new file mode 100644 index 00000000..682de328 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_test_02.png.data @@ -0,0 +1,3 @@ +title=AutoTest create new test 02 +author=halw +path=content/autotest-create-new-test-02 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_tests.png b/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_tests.png new file mode 100644 index 0000000000000000000000000000000000000000..603f45ad673466676672d1009240268da3a16860 GIT binary patch literal 11522 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 JD#i2z{trMba}59h literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_tests.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_tests.png.data new file mode 100644 index 00000000..9ee5378f --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_create_new_tests.png.data @@ -0,0 +1,3 @@ +title=AutoTest create new test +author=halw +path=content/autotest-create-new-test diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_drop_down.png b/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_drop_down.png new file mode 100644 index 0000000000000000000000000000000000000000..7d90bc8ece83816ccfb90021225289ac3253f106 GIT binary patch literal 8694 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 gup)L*k$542fod;kCd literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_drop_down.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_drop_down.png.data new file mode 100644 index 00000000..2c61eb98 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_drop_down.png.data @@ -0,0 +1,3 @@ +title=AutoTest debug all drop down +author=halw +path=content/autotest-debug-all-drop-down diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_icon.png b/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..525c93e88bab12d2bc539a611622ff834ec8ef97 GIT binary patch literal 773 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_!2~2{R-NzxQk(@Ik;M!Qd`Cc-ajG_-G*FPe z#M9T6{U$RPpCr?|j2UOaLaq@dj-@3T`9%yX*PZbI3h|Txg;oF&M`+;I?AY~z$B{``KE8bmFXJBBw;OXKRqA_vlSi(xJ+O8zNNHChR?xUHYHFGf{Y>uF`)%y85^Z&0Shwf~B z>9gABrO)e$mu6m@c`5bTTVcinKX0#0x8EmujYas*EI~foh&hvmLSOC>T^=^^+S%}9 z)4LOQ8{Xcr@ooh32g!e*R^Rmx&)6=#x&Phue^1z(Q}*8PI#jXu{;ijv4o|&(CgLsc zr>joCpHEPqk>+k zds_$3l6V#F_{=abFLj2_kKY+7JWE<0i?DVdy78TvVR>eh9iz;i1o3TUa;ayF*4z{f zl*rH7YBz5=!=vMSu86Xi>-{$Rb~bEtz_*uAy%g(<<}gImsKxA=*tlB%}n9*gj1M&TJ*K~hGh=7o1x g&Jp_m+4~<`#>)>`-JA`Az}RN+boFyt=akR{01K8y?f?J) literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_icon.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_icon.png.data new file mode 100644 index 00000000..093c758a --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_debug_all_icon.png.data @@ -0,0 +1,3 @@ +title=AutoTest debug all icon +author=halw +path=content/autotest-debug-all-icon diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_empty_tool_01.png b/documentation/20.05/eiffelstudio/_images/AutoTest_empty_tool_01.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1493cdea768290703b16b135d6edfbe3879248 GIT binary patch literal 17212 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_empty_tool_01.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_empty_tool_01.png.data new file mode 100644 index 00000000..3898c7e6 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_empty_tool_01.png.data @@ -0,0 +1,3 @@ +title=AutoTest empty tool 01 +author=halw +path=content/autotest-empty-tool-01 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_extracted_01.png b/documentation/20.05/eiffelstudio/_images/AutoTest_extracted_01.png new file mode 100644 index 0000000000000000000000000000000000000000..c411fbfc2dc74fad37939a70617b49581b5ca5e4 GIT binary patch literal 14178 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 P03aiwC|)II81#PuJn)iD literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_extracted_01.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_extracted_01.png.data new file mode 100644 index 00000000..04a37393 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_extracted_01.png.data @@ -0,0 +1,3 @@ +title=AutoTest extracted 01 +author=halw +path=content/autotest-extracted-01 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_extracted_02.png b/documentation/20.05/eiffelstudio/_images/AutoTest_extracted_02.png new file mode 100644 index 0000000000000000000000000000000000000000..5181a3ef50db0b55a3e7b065456c935c7db915b6 GIT binary patch literal 21895 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_filter_drop_down.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_filter_drop_down.png.data new file mode 100644 index 00000000..c97b199b --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_filter_drop_down.png.data @@ -0,0 +1,3 @@ +title=AutoTest filter drop down +author=halw +path=content/autotest-filter-drop-down diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_filter_result.png b/documentation/20.05/eiffelstudio/_images/AutoTest_filter_result.png new file mode 100644 index 0000000000000000000000000000000000000000..eb32790cb8e72b3be8db0eef92ba40f0a104e0a9 GIT binary patch literal 13456 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 Ucq}jeeeDTSkWqz{O1%sDU%l$8A^-pY literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_interface_results_-_Execution.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_interface_results_-_Execution.png.data new file mode 100644 index 00000000..445c6af4 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_interface_results_-_Execution.png.data @@ -0,0 +1,3 @@ +title=AutoTest interface results execution +author=halw +path=content/autotest-interface-results-execution diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_class.png b/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_class.png new file mode 100644 index 0000000000000000000000000000000000000000..fde87617fb2e1c8d54acbb49634313d0a8fa22f7 GIT binary patch literal 10182 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 J;;nJu{{f!bmn{GQ literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_class.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_class.png.data new file mode 100644 index 00000000..a5745bad --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_class.png.data @@ -0,0 +1,3 @@ +title=AutoTest interface test view class +author=halw +path=content/autotest-interface-test-view-class diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_covers.png b/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_covers.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e9d5a9e263dab6c97f2a55e27829c7d3a38f8c GIT binary patch literal 10475 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_covers.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_covers.png.data new file mode 100644 index 00000000..c8acff4c --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_interface_test_view_covers.png.data @@ -0,0 +1,3 @@ +title=AutoTest interface test view covers +author=halw +path=content/autotest-interface-test-view-covers diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_run_all_drop_down.png b/documentation/20.05/eiffelstudio/_images/AutoTest_run_all_drop_down.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c0be3e38c2271ce9bba0d8723bda9f67b8c03a GIT binary patch literal 8247 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 J)X15K{XaqPJs1E0 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_run_all_drop_down.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_run_all_drop_down.png.data new file mode 100644 index 00000000..6a37638b --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_run_all_drop_down.png.data @@ -0,0 +1,3 @@ +title=AutoTest run all drop down +author=halw +path=content/autotest-run-all-drop-down diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_test_coverage_tag_dialog.png b/documentation/20.05/eiffelstudio/_images/AutoTest_test_coverage_tag_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..94b1aa1f2d859b51bc7ada25dc16300a029799eb GIT binary patch literal 16212 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 KRWDJse)eBtV_3WZ literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_test_results_details_0.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_test_results_details_0.png.data new file mode 100644 index 00000000..397473bd --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_test_results_details_0.png.data @@ -0,0 +1,3 @@ +title=AutoTest test results details +author=halw +path=content/autotest-test-results-details diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_after_generation_01.png b/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_after_generation_01.png new file mode 100644 index 0000000000000000000000000000000000000000..2579d0f7dcfa7b684d64563c9c54c3e8c3435f91 GIT binary patch literal 24660 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%0DsY?}W{wb|x9IYKklMO#qpG$)Q=x5s$QCa1+~ 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 KA(j6=j`%;PBcA2} literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_after_generation_01.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_after_generation_01.png.data new file mode 100644 index 00000000..5e21c00d --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_after_generation_01.png.data @@ -0,0 +1,3 @@ +title=AutoTest testing pane after generation +author=halw +path=content/autotest-testing-pane-after-generation diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_execution_results.png b/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_execution_results.png new file mode 100644 index 0000000000000000000000000000000000000000..474f8ed2d2555b03bc1af5ad7e1647aa87ee72e3 GIT binary patch literal 14994 zcmcJ$cT`is-#!?WCWs(PmyUD+rG^ruH>LNE0-+-W41^NJLQ|UbDor{lp?3wONUu@? zN{2`=^qTC&@4mbHo_+V6{p0t$Cz<5T%$+;;&fL#DpXc*Tq`s~O6$LW|2n3?i(o{7B zfv!w}KtvGoD?kqK`;KMc=h`z(3m6D=qwDfZlq7V61;`}x(|W8%HglbZSXct~!j0`; zmYTVrlE0sew=bxqazGQvy6y*LsXD=)`no>zbM^KD-MYrf4dhc?=Bs!=3-on`y7+<0 zsRv|%+#COLeVrUGt8)0cdOCq5kEpK!CD$%XjJ%!w;10e{Ae(1|%j%T>8h3>~^>6^H z`hw~^YGQ$G^2=;92VXB&FDR&kWi1@YBm2+!{=QG0KnH|ZnE$G#;_d0_V|*YG2S`g*$v7Z$8y!@0*CgZ@&MpgvEn`u-62Eryq3hslQrAZ> zzB4NEy1sMdVP>VxV$5uyeWe+(N1nDiP?+_I6v~@s`);V;kv1&d!F8kj#WBajkCO(? zO1Ug9YJu17g$6r6dBYc{!9{Mv?Ec;dZME?2S(9~x^~|%2a@*D|Y_pxo(E!Y;wL~KF-#gZ+#gdHibuVPLB1zXaM?1JxlhPM>lF#Y%7X!+KYY<$=_NbJ#Vnw&K2uwyYBz{W0$KEz>yk z(B4&$*tZ)4^`Ev5SnW=HX*6ki*=^w4$df9oR}U8s>wc)Jp=~}z%vs8rR!tU|en33# zCaX=CnT>+VEqz{o*^aN3!7YT_o_4adKe35$t+muzF({jKtF@#Jo^X@A|2*7WnMT2s z!wUrZ$Z%so664=^zH1k$9GUot5RN=Mn?7IQ4hsF4Xc%utzFX_f;O4%~964twNUq{q z>*V`wW@-Sw#J{q(Imn`md=v2}@KoRQoRe$NS^OI0$pOM9nVVXHB9c#etm4y?7`uRB zLL^i*A@JtKF>rU%CtkavNj>RyqD%fb5Qy zH?e0mbUo}i{J3HZuJ`#wIlp6QD8x3{Rf4&%$H8$G>Zist!)^GOoR*9oCwToOImn() zR&0@({lkyY)oT6({)GCrgK9B~Jk8nM9py)(b$OcIo@(&{b^hPJ+&aaN3)P3N0+ZhF z+n2*wqT#_oV3w%o-l_hXv6_}LDcoZml8~{$!SB*on<2q-vm%NKKXa}ULFr1 zZ0zi@@bC%D!OC9K;TuMGM|)n&`ux)Znm`ap?8(~N+V}6@zlq(B53qB)^L(RTYjXNY zgPb4;v=R2^%^Mkf#H-ljTaA6dWvx&>?C&>q$-kA8g6tE8r8>Kv16=C1La!$|qXf7P z5DM9pqdO!C>4dnIHjX3jAUmfE5)eoQdkzngg**#q6_6KTxU^y~4#PZ}w}(obL4Je# z`}^5wxiTyX=z1j)g_5e{+2OVcoM2DJ#Ry znrYq%cxTbEsZR3&ACb}FZM^_L;TcgJjJvDV!zIC#Q9qr$Eo zpCFxM=a~ZP80UD)LAIXP6FOq+5gxt$>t;kV-l&!J292W2|i(AXd{?aowwy@2el)R zXI<2UrB7+o?O4W}fyZa!XW8Jjg(`gPjr_RQ@L{2SwqNX(*LH6E0Y&rh+t*gtiY?7IUrR?(kwGl{~ALfh7OG`@|w=-L89ha=x znXSbzNDux=1F!YH^8G#vd~`N3x*0RLT0YrpN&(a$jxTG)8;wN}Irwo2!;u1Q(VcV~ zgzM>vT~lpmzqksGf;Inbs2_GD(@^`}y*9V%NjFL6_bb?!eHX;}{6Od2>s2ex(Ne8=e;r)-9TXQXyE9yFlWm6x zBz*0LeBBu(26=kLfJHCxpwI#H@HU%aX)VSIS>N#U&6hE@u!1Ksz_K4 zIG*1kl$}>cAg^GOmTtAh=(eYuYR>kE(URyg*- zkj=hjoR{c&`mYY`S$#JAcaYvm2`c}u{!dv(HJIZ3*+o%1d=AVadb~B=hJz^*;)hr^ z*Pc&!-J2Syw-ij6^CnpD&Zbxj=;4t)a*F(cA12piqrn2TE998>9|sBLj&!hFx7eIW#=aolw3#r1txF>o7JDc&45|pM76|wzoQ$ zK0m+az15PXbgnv}T*fL8cs5rxQiQx)E8Hs2DLe#^x-afxKTIZ@*qpsFa-AWavUJi- zfpETe;PhUd8(cZ*wtbivM85(U3FM9$p~nV}3_!c;u=ih_E2W{OVZ%8{M*=>h?eu-d z!uj_E?`wB(8H#K76?^Sr>xkPlzHbI9Uy*mqyB!+5H&;oqa$H%H45oaNb826P4+WSE-Ia0ZL;c8}Rf19Lx!6dM7f4L9d zDz2JfS-R};=YSPVd(d~x!cPwmna!2y7Hys=`r&|(3Uu&hou`$aC47GS=$&`y++^)+ zB-(ALmgebu+Wlu;10N2Y1Yy|c#)T`{L0;1EmjyQ#a4|>CdU~dBnNQC(cAXNw-se_s z3B$UHlzuLR?AL|&@b!f5FFgwK`7NF!Z=zaxoW;kx<$fgkhssLuNTtyf8GI2FYuoO+ z=Nx|{kLLcu)!;4E&dlfEaS;Opz4(hUx4y>peg!z8uD4mo_=Y`5-~`vl#~Sn}G9|}% zYX)&jsdrHX8_H~Ydggv%JyqzdFLcDCoYX?rbcV3Dn%unhkWJrEi4Byk^1+gug!J`TZ;`v?M)m0ev_1AY%ORZZz=1w~%_KSbY8R+L*E$>_Z`ydzs?M*hRPm(hDFGK7 z`b@J`MsE7uH!+HQ#M3`^$Od}$Vc~QAk`4R`!N!Y|H&=u6P3jI&D5hoyzbpFVcjtrq zoYB!bUo;u}Bl-FX7wvZP+m6aK_O~+w#;kPZwT2dcw$qc{Cnh2toSe3uMpFy^Q>!%r4*~IwL=&bDUWMAV}<+KUIP_e*C&6V zpkU+A@WN!prv22EEA&4A3BX&VD^Y-}3Hdyqc@uDIrvJI6B>zd7xvID80AxlAc)2#r z-!u$>il0WvR4dyKW#h$lY92hyi68=ju0H7m+rkBRR)$6|ebkP;Y3U#Km+-L|#7PdM z4~LW=?Y=%WzpEEb751@to0qS<)0+rXtUV;GDX%G1h)}RBdcumLw(-!s2b0*sCO}oP zZj*uRKW5hY7{P`1Z6ZdCxWYIhdZt$%>giFnzT`Dg)vKW&*1n(d9I3O;G~(#rN03l} zT>*(5FCFJM8$_6qFPX=TF4MxEE9vBIqe>?7QR^YQf+US6XsCE#lzaZ}U@@>(FCIyEL~cNILi0_yn5k*5?n25P=@n`|X~C z_403Bk_VNSDEV}R;&KSgf8Vn5{yS_fYs*Ot445m+P-6$56(2_O-*`O%=8i(e;t|t* zfP=A7z2u$*AO3GhM~a)Sx_(W5s5()zg>sETmh<%e$$q zMYFOZVL336JdxJVRG*N?=UnSF<$CzlL!^vatvNAdGsb!^FDxm^O|khQ;eik|VPo-S zLA~=Wh|Rr_Pg$51*&~ZBODcomm!omwlnK}CR}=XcFuyuyqmYWrKkwp;Qno(N;V{|w zt(1a-CvRlBW&4}#7v&#BcTGfU`J;9xxhwTZg_bG~Y*-yhq17`76DKmTJzWAA6UwVa$ zqFf3B<#eM^NZg7R6_psI_CDjY)JpH7Ru(?;uA|)@r?$a+_j}^f_dc7>ak{^WVM>{w zG6H`nokz)(^kvV#9q@R=+~4oviO$-vn7_`SMox6vM;F$`-3sQxMD~426EAB>vW?Bp zZO}y-42wkGjJUlG%}GPCLZUe!bZhkWq%>2jNp5r$*&f}LiI478?|*0$`5>#wD%a23 zgEP;tf|}yW-x`+bR?8O$NhS9GaZ!*SMFqT3)CUChQgW>GnPN0%>Ui+20m9R8%Sv#JpIs!~YyT~bhvrwtD0AuCkW%o0N-qIM$fIOtL5 zrNFH)irT|Z(>xTtO|GXSNl1)1f4w_Dgt+a$G1LhGwBDMmue%Ol>T z$g+`4O5mqf-g0@x;_ke?107Ucqs>uNb4$hqmhcs=txTZON*Y8UcU;f|uJoe}F8f|Q zSz323(<-1gcipp2)3%6S2Ze_RVjH`SBC&;cK&>AXDVMVUK7+yvQoM>gMGo?EvWC-B ztAeJ?zLlqFsD4OYuLx((-8M+-MSR|{+ZkxXBHLZ zRChY(Xh^jq2P;7KTX6CR!uiLa_s2`UpAx+q+ET3{`Y80)gA*|6??{yaLQ|jUzol_e z-PGO1O@NcW&%&wMef*3FWbeOq6z=;J@I>qBC1421+T8l+Z#B##ClLg;aT92#fI^vu zpb?%??fYpAxRsEFRA`n~Pk&a>)gZ+mZkPuYKsl*VE` zyNMjD4e(z?lLKKgY;)V1EeNS=&;>PNoOY4!{`VD-f7@L!;-G~wL2ky9|@1%?MZV!e6B;|v3atS4ZT&i zLPz(BLOJdRa_;o-$CisrBBWw`c>GVnH`l@?LQ#_7{oVt=f*h$Kp`;}jwD25vHdUZA zW)En6Fp^TBc3*GDw-j=r)0&7cwCJDB6d{kP!R9a?jn6jK=1hsgN;X5!mkKR6RYqR@ z9^0W_{p5ASxm67@6*6ul{WztC;nT{e&64IKEARMh*&#Q6p>B`v5Os)X3EuN$K77G) ziXd@;@tgiNyk~pRXI>l|d65@20r3?vd-K zrgdaG-d}d86;nt25`w?WZS7_ptsw_1)}b3N6&LZEs$$>pOcR)z0$Q|`-lQsw31P0D z+T6J8UDSEElUCFkp4sv$d5G?lhqo!R4a4p!3963V`mii>JR)9nqnb9>Z_MRxB}x$` z%1D3J&%Ju$1s@Z)m%&A3c|}Dk)HtHHL5^I9#0q;I{p7v9to)HMWG91l=L}t_4NVoP zl`@VXM0U+DBSt?3`8;QRK1`4X_oXt|DGUpUEP+?3N0Z+=zU6kd;lf>K*e{I`)7R|g z)Wq(;I2-hvUUYy`Wv()BefG9+c)xC}A34?RuTXJI+~zmft8sA=?h_!ATT}rZ)bsl$ zYnGVgz`uc06|B?mXH#F%m6zEPPT$}z%PI6{lub3_ZcM%TGJ@EB%1-j^nC}c-+EYjE z9+lsaPnWYaMY2}z@6u`syV-+AwuaW1Q|3`%Nqmla_9QC6s3EjMuG4dlXtsXG#~!Jh zYt<3?r0#3Rx)(pnz0;WH{Vjjcd!qX@`L{mnIRA8bUJi#EZ-@@@H!uBggm9mX-RVxM zW09y0TQ-mXGUX}-9kk;g_0WtB^60)-B~@~b8WR;MdDld~wy!hZ<*}UsABz&{FhKK3 zXTrV$KQNdVK>uye)i1Um4V=}t?ywvw&bvtP^6^bq+B7@QO#C~#x-JRdpFho8ZL6j+ zwU+nD!`zfQ)C258r3a5{C z>}p9}ioPFV7IJFp*PA6q*a6V<%Y8qO>Z9^ypyLGv%_Us=Zz+JMXceXMwrqu& ziiZG-^o2SfF;g*h)(vAQV0j)+2J=rNa=iE2mK(ca;>|n6Idh1}jFO_AH}klshd>Q2 zy4M^paXd%LdW(lh;`AB)(J6&xQg;|a*XIQjW zNep^nQkZTLHxZCID{oNKke`SgnvbE|G8{$ofI#I^`Fpw6z&)s5+QCJs_g6qK@GSE* zuU)Q!UfleyeEt7|>Hh)i|4BQ3d1>6^`$-!SkdgL&P$EY^jWj1lq=xPYo_j^`n@pvtxdWM63@hlzkJP z%F&JQ+C7@m38}f~AN~-t$9<4_mu=sCe=4lxhH=Bq&Oy5 z{;xgQaH-hQyMzIJB&)WUNoLSu`~Mrnb#wg4A<V<>AL@E3X9lU%n zE>IiW5>o~ZCz~nXSV_~3CfkX$$++P{A&G_k)A%^-CnM^2j}*$re7Ky40?G#~#LEIq zRZ2|wEZ8O#ShSs<*JNjGShRd&=U0#1v5j-Q!QsrhS@9HR`pBLYtsuADYf;Pw&qA0a zg|o^gwW4z88!}Ah_tbbrmS*;8TA!uGrvqSD`=$~%H zZP9)9=n@J>*PqS6b`M{Q!I!=oKu1;Cv#5Vgi9fh?0U)#Wq#z~v=80~*7i`_^U*@GZ zLY`)6ZiqpX-KKec*QEwB5v25{Bko|%2!BJ)q+;&`P1X#s6ZqS+Kg?g~r=OCbbYTg+ zLNb4=#vkLekTsmr!eY@F5+kPaaUO_DNv&?J?_9or zb*>A56GKEaO;y&ChD!%e#rtKQ_QK5FpVx>az+^3;j*lPJ=J|KHzj|YmIe6zJp_QX# z*?3UvZRQ90v2|{wMoG2B&JJru26&L`^ve5%_XXl5szRuP@-oK?BSj;H7teP7iVZ8& z2MCU~CSG0X&msAutDE|RAF|l5-KQ;_*w`7#G#q*=J#j)DdBWg%!7_Z>c@%86t?LIB zgOUd`?+Td6esNJTg_uFga`UnVF2=;W2lo*4rBkrpFO{!W*cd#!QJZ;G{tY)0tX^?v zEcZ8vr}WO8yt&ekyHI`S_w>;l7UUe`qt1g2@PF`SqLDqlW5cm`Dr@pv*~D5qhX9tX z5dcpvZe)#a2z+UzV|2)W4xdn640}QJPOAL$P*7S}w5W4T519{F&kuLGIzqLNHXs6Z z6mwm=o^$|h^#4dp%+DReOM?K{wf$z8@jKRC(2L2Ebn4YpMZ&D*$iU`Fxm(WqMNmaK z2*hM?sRgiOs1Q$T+-O|?1O$2$1j&`obC90>{b|~wvvCKx7TNy1tU_>Xi4iv*FnzSZ zvi^WDI!%Zq%|7CKq!3i1n#H=CqY7YJiGS91m6xx{5Xvd4jXNX)O}RrqCganU9nQ zkZylm2)|iQ+6K}G1RA;bs+pmHL9f>N6A=)iyWhY`{u}VDxjlO6p8zC@%YT0m|9L0^ zPm_Yn>oG-4im)PUvN~d=-Kyr+t;`uAg6`qApFGRfImOY^JK5tq_$Z`vQ(B`-tp(L8 z84|N6c4b&^hBujA~$dldkmj)%5jJD|XPu74@q&-nx&4Bo)Ng7g;Xw z`d(XW_ES~`P_(py|M50QL?5S_z3`K>Cb7mPY&jxL3azdWMECUK~^*FLJ}#5P!b(WCyOLg#e+{#dg9- zt_lnWi;j-2FfBuSQIAyg4bTxe$xl?g9wU+SE@aTr?PuEC+H7rT_3+Bq(vF?_5xgL+ z2W{VhrwC>_G)>IvbK?1E=V*!5qGi&t-823_Tb0}U`n~TfcS&0bqVNl76sh}=%w2zH zyv?pRI>!P!)~YF0C0WvScaL0^JII2( zxI88Gsp2X#j9pP%L4xppDn_`mTSM!!^Mwg27FoSm;q09-GG1YIr#ec`5+{KDDaa|r z&Dk0`A^+aL>~$?^PCNt?RvZ?jG=G7Uf9yU~4uk8tq_Otqg+IWvFqhBCRlEINq~xkQ zNt%fB&}DR-biHR)<1f^6nCNTspz{XmX{%hmGSa7RNvLf?!%sntFqS#@%-G%3r9vZT z;q!BWGQ}woIyZC(*PEfC_#Zh%Faa}G z<}BK7jFl`2S3o1|m;RlteALu>plhMk@ajMA!A<-jr>1CXCvqp7J7-cB1yI+ifT65r zb7QBTY}7N-dHl2>o4HC)-W=B7->V|(Qilbf*5xxE7X~sUDp+lOSsZUN$w{SM7oP zGR|^lA6TnC)vwXXW>EE*?m`FvljqR7Wf;A;o;?}WhqxImn`71Gf!>=(HLbuXEc`|I zd~Ye*>wC;p7fwH3dCk$-iPVekF_cX8FLk9OV~Sy(XF~8?6EGB=DH;8C^Las(T)L*o z-8vtUG8UXtsh|d|$ryu=)UI$DMK~GS>^5>tmEO7e2s_M=K{#i9(#wi5oiF+zTbKN} z7TeHkv7Q=)weYtL#D`vCmu`Si z&94Guw<7y|rdD1L3rA#&`wQ3gezz=|xpl!|qEbq`_pZ8Wf(|>gt1GzAlvjRLYx7f3 zf&O1dr?yUP%g_yz<4?%qbryN{SsLP(ct5^9&iJV=V)utHD)rC5{LZ9QZDI|RNyRYZ zQ6yM5ofQAu5)4nyQ+%6Pf`uhhT1E7|-VF$1!GDj1$!=GmeAm=OB$NnEtg1O;eoLrfF7*Mck0k zKvM0-!aWPhzX=L7$+i>q&d>NxH-bCrY#oRBc}z;@8=ISrYdm7j;U6^PVeF2;IXvi0 z=00s=(<1yp*ncq!HemU>5ObqD-6&@5dx4IRZH{;5#N0n0j?0!j-8LK&C=XtJFs)Jk zfxYB?Xv|U_y$zkEhEJ_;exAk1Y-X)43JhNlp&fiXP`1v-T0PZhc;M&{DN`K#+9;R2 z;H$@1!b#UA!#h@uNTowKAIKlgD=dSD6^Z+7xo*a$Mb2-t_SOF+zjDmq#IS<*+&TMx zK`qVvzOSzjFlm(*Qj-6U`}gldAP^}jQ-C8lKvbAghH)qozf@e1C(7Db5sheve2k77 z3M&uU4%dFoF`r(Z5kNvLJF0cgSqG*DtzMtEjjQ~Ot=Z^&+^PN$D||X4Ig#tIS=62j z$#;{}+o$%Meu(7yB$4-i?DW`eq3Erwgz&|_^aNC5B8x0;EXRW8ADpA;hAQ>{gLFb- zlmN^V?6`E`i$RxG<>QrqYEFv(R*Fprj0(){0n4EW2rvc^EO(k3(PP^aZ`wsHD%t-a*iHrrpsS;fMi7pDV2Lf*)oVw8XD~-cceg~R?-C60IO2F9 z!uRYtP|Ro$0g?W=et&UE&hdRSw>Vp~sHU4j@krrS&__7w6MCN75GB1wF$a>-JZQfA z5V2{=#4n1S)^|o>yjjMxbqVEP z{)^L(ToovKEJI%Y3k|?$|F<|@hb_?2xXtqS83SDaWZYoa!CORbfWlXS_PJ_+no#Ja6;8u<|y#7<+Bkg5G@Z**Lr1K0wSpgvb0P9_5*uN>O zYOSQMkWh8pc2}GTPX^qWI2jbRrv!exJz#Qw->-_jcdqfja0s^9`){*lZ*g|Yq)W~p z0H!du?nNOTbABRJCRvHZM(WVdp^=6j8YGtwRJ8YFhRt&9SVgG2ct_&;AEf| zfXsl&8WsIjN3>M}0tuaUEowdA{h`(G%ExZzKi%YfDTf|X3tyY~dID(t5WnqVxs$do z_4Jn8Z=MIWUH&~tL^kjiH~j$GVjQGdd5YYH0;o7>DUwgs5zrH1rYg>;30Q6uc9XH?_o&thP3AZ8IM;qimr_H3}Ud4}ZwpBiwB z%V5&xP}zk9)aVN+?7V{Y3A>~23;H!LQBq!8r#7oFDzlFGU38ChmfvYmWy8{%9JXOO z+V1>G*`%fQ!NFdCW#(Gx@t()TzMhVe_bg# zEcSf{;ZK72Qey1<*@}hq!rj1^y%sFecY7|VAx|1n90Oobo~xbG~A$6t|?Zpi*wm5U!kK^d}67`ly>>O23F6mYh4rJ;0Ddffi4 zDM(EJ4`;81G$fUno&99UcdJQ!rJ|j$87qtVPKL^h(_WLW%%1Z*4jPl^SguOU7)Eo3 zqBvfOTNmC*PvWN#ZT?dY%?Xhj<1b8jssRMg&8CGEC5jRgN=mqiGz53!R$q07s~PiG zKlz%Muqe&W`qmVm>zIk^QscLw0X22ghVkHf4F7)F>7!e;g{x=wyi=ZER@yC1U(qT| zWs+ybXP@t9=qmh0PaWZLVDOP9;sL|%C+XHcKK{P#To=*#)4uOLrv%olA&1C3F&gmp zM2=y6RAN+~W}Q)jq$Jv5^MM}E&sA}D&9^(Q8Z(e79v;h~pbD>sm?#26{#GUyD+cpJab)u33l?F*FmU7{ha`qsp7+u4Y8TbqGys?7EyCL>IG>;Up4+Z!9Y z^-Zz$E~cfN_1Vz~s?51=OtJaIRLF4m*Hyii-z^8!kiT6M6F&i+oGKuJTir3z&eK%Y zD!VI4L3wZwv%YbR-UA=r3^%nq9owGL628z8ukp=HckBvAIF>Wq7l+c_UKagEa3uPe zi4Wo8Jy_xoJ-dDf7;p)c6@B)H;=2{EwBL+ne-LW>Ea28ZYbILJD`S2nvGVD7+M>oI z51q_Up;khPTyvpQ(=JgNh8+I6uv2s=e2HdRl)z1muXf;P;m9SkFti;4TawZiIE`cQ z8rpi5w$%0wKizJ%^JCrW9$nvT{`Vz*$DSCz7)x<_JzD;F&w9L*ys=Q>0&a*ps-Id( z{)EhGbt_h-3@|6wk(%-+H}8d;{vdm!EF|r&x*;C&f`qarYmHLxKMY@dDkd9*U7 zDDZbPb%I6v{=$c()Zv_&dr|lv){(C7 zbj+tZ!*qNSryU+GjyM?1a>pi?q&vUEgns1*vIL#<3vcL6RAko=lk551igFS&Ukn*%_ zf7){kc~nmjVroQU`V|>d=v4e87wg9^L}&HyShikln{8M<AAkH~1!kz0IN_W+ep>SJrlI+GAxn@!ezN>|eb5{Vm`viLat5^%*~2>@ z(upOnMJb-D?>JPy?69_&F7mu{HPs@cU4}R^u?c?kQq0hyxImx^kNZJM_&W%V2|c)$ zi&!;(_G~xlz$}|_Xh>pib17Ts6t6IVE-bT4=Hf$i!Px?N7p`z|Q7i7hqn$bUC2qje zj$<(svY7pt9z_4-+`9U7`B0KMEBxcb%%ZtaWcP)CUIg;5h<NNqbK;Nq?|V|<1ZE9~8$AY8Ip+pg+O13`+;XUpw`{g9nS zKWnj|({PbMY%#mkx^3v>c0H-y_S`++-^g=J>DgTTiK$%FN`j7v;_k~ym+o-0<*#yv zz5%AZeAA|AJ3GK^TPQs=Q-->8IgkNys7Pqn>)k9-2*X4{GU4lY&SwW?Z6}fKEzg|S zj8G`9Y6(WW0DRyPHrW0tY>kgPl6dz*B^H9G2nWHvqaOF z-yoPKGAfZ``BfxB;oY}LTptcsQhJ7QH&zh>ZREX;06ZobuwCHN=iM4=@K|iS0F+Um zpC7<&ks-bC{EX86ZUDbW3cC4G%OV-0N z!Gj+zI!e0Tem=L-lbxaiG*uknO2L{Z53Y95SfrC&ax;h9b3)r%F@Qdg6T*02Nxy`& zovV-TZRm}}r67^x>xelN8{;JV6AuJJ7TmVSY!SL^{kY&5>jE+-i4pGN>FoT)l2=Lp zpmg1-wp5oMWX~Mg%FzL0j3OD#TdG9?#JRnMq$Bx}9pVx5&F61!5BmWk>k?yjEzvjz2g}DOFFjO^RdaMobvRLd zmh%z|Yx0~)Ck*DFTE1)KuFXxESboQ&5Tk5p z(o-gO34A${AKCI4Xu4^Xw%y^LYUMzv_0@#8$t4K@c-wwVu{U8P#eRR_@GPt=Euk@P zg3K|G|6i~}pih0wQO@-aawAA7A#)Shcyl|Ufafb&nHbQfS`JDxEOrH{fT!s}8>mGq zC(PCN)biLJZYKg`@M~PrETfBS$|SX;MXuCwo?A6Jha(>tP|!w#3->i8)n(9DH5 zfTv$YS4>8n(OKOPC7a(yAflat5|(zS#J1r|y@^JmByhWmD$?J^rZk fhP7mW0!~mw(jf6BWYko^sUR&iUDZlu`>_85F5DGt literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_execution_results.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_execution_results.png.data new file mode 100644 index 00000000..3c026bd2 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_testing_pane_execution_results.png.data @@ -0,0 +1,3 @@ +title=AutoTest testing pane execution results +author=halw +path=content/autotest-testing-pane-execution-results diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_tests_pane_null_filter.png b/documentation/20.05/eiffelstudio/_images/AutoTest_tests_pane_null_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..11586d265ca2fc4ce2e02cf1b1c79769138bba06 GIT binary patch literal 14762 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_tests_pane_null_filter.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_tests_pane_null_filter.png.data new file mode 100644 index 00000000..e57a32f1 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_tests_pane_null_filter.png.data @@ -0,0 +1,3 @@ +title=AutoTest tests pane null filter +author=halw +path=content/autotest-tests-pane-null-filter diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_tool_after_run.png b/documentation/20.05/eiffelstudio/_images/AutoTest_tool_after_run.png new file mode 100644 index 0000000000000000000000000000000000000000..14b8be91ce797993f80ff42bb2bba20e6bf682e2 GIT binary patch literal 27976 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


WfN73h-nR_&q!5bSPbTk`!N< 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_tool_after_run.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_tool_after_run.png.data new file mode 100644 index 00000000..ed5ae1d6 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_tool_after_run.png.data @@ -0,0 +1,3 @@ +title=AutoTest tool after run +author=halw +path=content/autotest-tool-after-run diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_failed_test.png b/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_failed_test.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e109c1a0073be2c8604a0d0746188d7927a15e GIT binary patch literal 24202 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 z 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 O$<$SJK$Xv}KK=&)0ypOX literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_failed_test.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_failed_test.png.data new file mode 100644 index 00000000..5fb2b848 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_failed_test.png.data @@ -0,0 +1,3 @@ +title=AutoTest tool with failed test +author=halw +path=content/autotest-tool-failed-test diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_passed_test.png b/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_passed_test.png new file mode 100644 index 0000000000000000000000000000000000000000..071b5c4abb80a754ce5f87be36687b0742d7e0c5 GIT binary patch literal 22970 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 x4VARt_~hhls$lX5<1ls-mq!FxV(3pq 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_test.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_test.png.data new file mode 100644 index 00000000..ac244d7b --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_tool_with_test.png.data @@ -0,0 +1,3 @@ +title=AutoTest tool with test +author=halw +path=content/autotest-tool-test diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_user_defined_tag_root.png b/documentation/20.05/eiffelstudio/_images/AutoTest_user_defined_tag_root.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f8ff3a9125c5598bfb767784670018e8d28afb GIT binary patch literal 12368 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/AutoTest_user_defined_tag_root.png.data b/documentation/20.05/eiffelstudio/_images/AutoTest_user_defined_tag_root.png.data new file mode 100644 index 00000000..6ad1ad45 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/AutoTest_user_defined_tag_root.png.data @@ -0,0 +1,3 @@ +title=AutoTest user defined tag root +author=halw +path=content/autotest-user-defined-tag-root diff --git a/documentation/20.05/eiffelstudio/_images/Automatic_class_license_Eiffel_Software_directory.png b/documentation/20.05/eiffelstudio/_images/Automatic_class_license_Eiffel_Software_directory.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d8dc84a7f4a57273195a9cf97d8270869dbc9d GIT binary patch literal 23728 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�yE@}ELm-b7W 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/Automatic_class_license_Eiffel_Software_directory.png.data b/documentation/20.05/eiffelstudio/_images/Automatic_class_license_Eiffel_Software_directory.png.data new file mode 100644 index 00000000..63d35be1 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/Automatic_class_license_Eiffel_Software_directory.png.data @@ -0,0 +1,3 @@ +title=Automatic class license Eiffel Software directory +author=halw +path=content/automatic-class-license-eiffel-software-directory diff --git a/documentation/20.05/eiffelstudio/_images/Automatic_class_license_project_directory.png b/documentation/20.05/eiffelstudio/_images/Automatic_class_license_project_directory.png new file mode 100644 index 0000000000000000000000000000000000000000..353bca71777c7c17d4ea9a0497bea4e1c1a6dd74 GIT binary patch literal 22310 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/Automatic_class_license_project_directory.png.data b/documentation/20.05/eiffelstudio/_images/Automatic_class_license_project_directory.png.data new file mode 100644 index 00000000..49a99424 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/Automatic_class_license_project_directory.png.data @@ -0,0 +1,3 @@ +title=Automatic class license project directory +author=halw +path=content/automatic-class-license-project-directory diff --git a/documentation/20.05/eiffelstudio/_images/Automatic_class_license_user_files_directory.png b/documentation/20.05/eiffelstudio/_images/Automatic_class_license_user_files_directory.png new file mode 100644 index 0000000000000000000000000000000000000000..7f105c19e0856e416a8e685a71244e799990deac GIT binary patch literal 20426 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 T;B=m(00000NkvXXu0mjf-2m8< literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/Automatic_class_license_user_files_directory.png.data b/documentation/20.05/eiffelstudio/_images/Automatic_class_license_user_files_directory.png.data new file mode 100644 index 00000000..79cad87e --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/Automatic_class_license_user_files_directory.png.data @@ -0,0 +1,3 @@ +title=Automatic class license Eiffel user files directory +author=halw +path=content/automatic-class-license-eiffel-user-files-directory diff --git a/documentation/20.05/eiffelstudio/_images/CA_Analysis_Buttons.png b/documentation/20.05/eiffelstudio/_images/CA_Analysis_Buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaf732c482c43952cd2a99905dc2a15c7697ae7 GIT binary patch literal 3352 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/CA_Analysis_Buttons.png.data b/documentation/20.05/eiffelstudio/_images/CA_Analysis_Buttons.png.data new file mode 100644 index 00000000..2f413625 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/CA_Analysis_Buttons.png.data @@ -0,0 +1,2 @@ +title=CA Analysis Buttons +path=content/CA_Analysis_Buttons.png diff --git a/documentation/20.05/eiffelstudio/_images/CA_Class_Context_Menu.png b/documentation/20.05/eiffelstudio/_images/CA_Class_Context_Menu.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1360b61f3176d637e48a8bd73668b57dfbdaee GIT binary patch literal 14650 zcmcJ0Wmr^g*Y>7k5RfkEW{~cZ?#`hFMj8bKqy$BfZV-@=?iyN36cC2)7NilBlvMaO z_x-%b6UTkO@#Fh32gl52uGxF-wa#mu=ec%-j+XKrTq;}u0Pd)&DChwIiYNHm!bSx@ z>EYpw2mhdW>M6?sRl_tp;2U&%Sxs30sEvdCdWZqO$9bXx1HXa)>Gp;4`EiLI0EmvL zD##iYoAZy?cA3FBCO;ohC7BOh4Sv9Ic zU~iGmCRnF&*LUM}z4iOO zw{ME?nPWv8rium@oiHc;zW0%+&+~k;BamNqD_kNXeO2nBp4al2<9G5+OWwv=lH5|Q143cW$EIi1TD}YJ(g-o;5%AFFL82g z+Nm~iBx1A-Lvs6=hA&ax6`9Ll5`wv`?Bh7Oe~ z7NXO>l)OTAy5hrIewZ{OOqjIY7&P2>ZDlmB%0DPTTv5kraV<%yGw=5qM2q>P*7X*3 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 G?0*1nRoN&2 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/CA_Cluster_Context_Menu.png.data b/documentation/20.05/eiffelstudio/_images/CA_Cluster_Context_Menu.png.data new file mode 100644 index 00000000..793c2081 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/CA_Cluster_Context_Menu.png.data @@ -0,0 +1,2 @@ +title=CA Cluster Context Menu +path=content/CA_Cluster_Context_Menu.png diff --git a/documentation/20.05/eiffelstudio/_images/CA_Fixing.png b/documentation/20.05/eiffelstudio/_images/CA_Fixing.png new file mode 100644 index 0000000000000000000000000000000000000000..94e2128ce9b35a19627fc10e0119c3e940107beb GIT binary patch literal 4211 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/CA_Fixing.png.data b/documentation/20.05/eiffelstudio/_images/CA_Fixing.png.data new file mode 100644 index 00000000..eb6063cb --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/CA_Fixing.png.data @@ -0,0 +1,2 @@ +title=CA Fixing Rule Violation +path=content/CA_Fixing.png diff --git a/documentation/20.05/eiffelstudio/_images/CA_Preferences_Dialog.png b/documentation/20.05/eiffelstudio/_images/CA_Preferences_Dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..13369061d9e72ace65f0af0644497b3ea46b4e54 GIT binary patch literal 16789 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ⅇc%mIg3*5Xvj19tH_V*zOmk|KXjN9bB( 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 M>FVdQ&MBb@03LjuxBvhE literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/CA_Sample_Results.png.data b/documentation/20.05/eiffelstudio/_images/CA_Sample_Results.png.data new file mode 100644 index 00000000..178c5975 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/CA_Sample_Results.png.data @@ -0,0 +1,2 @@ +title=CA Simple Analysis +path=content/CA_Sample_Results.png diff --git a/documentation/20.05/eiffelstudio/_images/Ca_empty-tool-panel.png b/documentation/20.05/eiffelstudio/_images/Ca_empty-tool-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..542b15304bf54783a3ba1d7036c6747ebf07ac4c GIT binary patch literal 17630 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/Ca_empty-tool-panel.png.data b/documentation/20.05/eiffelstudio/_images/Ca_empty-tool-panel.png.data new file mode 100644 index 00000000..9dbf267c --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/Ca_empty-tool-panel.png.data @@ -0,0 +1,2 @@ +title=Eiffel Inspector - Tool Panel +path=content/Ca_empty-tool-panel.png diff --git a/documentation/20.05/eiffelstudio/_images/Create_new_tests_2.png b/documentation/20.05/eiffelstudio/_images/Create_new_tests_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2122892d8f37db4a1432eece8db779f7bcf1eee0 GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0vp^f;oF&M`+;I?AY~z$B{``KE8bmFXJBAd^K@|x(U`b)^2WSF1_Etw z4_(vME@o@f={%CbzsFIoXC?mu*f zuYUjk%Qw4?*$=$Ca(VB8dV|R)pV+y1?YwXAtyvFrnt;<2OXfp1=}sJfG}sjSk`-8- z61a654EmDSZVmFvwmtLZl}?RpzO4+OYv7#}8@3jwj9M8 zRXnGip1ysZa+Ucph7H%QmHN6k3ivD!e*fgJ?Ts9>KoQw~_vbPUN}n2w^S0kU`}}j` z&yv`3tGVkKlY6#)OOpOBskCa8X{b9tMjVhjH!9p(bN`I5<*v+mt# z&TlR|_x1hd>lGiaSY9{beO_ZC6`Q{Q%iI2{C;BxE_wVU%zEBk+1`I<6Pgg&ebxsLQ E0KjzT%K!iX literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/Create_new_tests_2.png.data b/documentation/20.05/eiffelstudio/_images/Create_new_tests_2.png.data new file mode 100644 index 00000000..94a996b9 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/Create_new_tests_2.png.data @@ -0,0 +1,3 @@ +title=Create new tests +author=halw +path=content/create-new-tests diff --git a/documentation/20.05/eiffelstudio/_images/Customize_toolbar_dialog.png b/documentation/20.05/eiffelstudio/_images/Customize_toolbar_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..19f290e6f22ffe81b05c2c36af425759db10fa18 GIT binary patch literal 19846 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 Dnmx9e literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/EIS_add_button.png.data b/documentation/20.05/eiffelstudio/_images/EIS_add_button.png.data new file mode 100644 index 00000000..065fdf75 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/EIS_add_button.png.data @@ -0,0 +1,3 @@ +title=EIS add button +author=halw +path=content/eis-add-button diff --git a/documentation/20.05/eiffelstudio/_images/EIS_affected_source.png b/documentation/20.05/eiffelstudio/_images/EIS_affected_source.png new file mode 100644 index 0000000000000000000000000000000000000000..7107509f66ca10bc87a1ca538126436c0965c479 GIT binary patch literal 103095 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

NdATCDEc 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%0AhISx zDOzZsT*>x`Z4Ld>Z@P@$-$A>&Mbk%SM&)$33kO&33W~3PL#ywv_-_62J4R z%kO`=03H5+)tM?+(AlmSdxZ>x4KfYv`6z09kQd@#7E&qpDA!qx(?(nt|HLT!`oLC& zHJ09^YzAa~kW{*$P9a86^m`ju)?A7h+g!eN)&~nI96dJkOqYRxQIgddF+i7+3aJ%{pEQ3dnt7?%%?5I5S2xRjMg$|MgP z>?ENH!y>B0qA!r!%NlJ#X75jn^8a%Pu#ZTAohW8udzil00Wp^B$v!uIdd$G!@xjJX zpjzN_zeX-{w_h2cF2nx!KlYz;+0@q77V5`yBEM%oeps;*fsxrzhWD~R%5$l}nMOF% z79hv9n~$7-r(VQX-jN+5PCu(Y(Kr>EDP6I z%>Q)#hcOrvh;oc+h;m-SEBQE>>pfFlfTBy3f0h~<8y?5{i>yg5_7}i)a7?Ro|2ZyU z0{&(|KTAk7m62e5HVf1^98en_7NgS=gU(8kfxu?a7uYLS_$m-UQc0U@Xz1p9vx&4k zoQ*f007(v%y_ihyd&&b+D%iGdV7kK%0oHo`F(}@E^=S5lvZe+0fRBpDy~zH=;<%Mg z-?Rbstpjf?EL8#ox5sPAQt=Q)K#DzPRl5u=-pi*nz-POW7)%>A2P@t5-)c<(3H~I3 zBjt?WnP=Vr6B6Y8sB%Nu?0t2`2ztEk8u7hf+osLzPxPt4SneL~Je(_fB;4Q4!)wun zBcxdmw*E0sZu`0nG=>92Z$B1yh%Oz3AjPTgkgK8%S@%-blq$;{u7fG1KWa|H)(O}#!nn`ayXfJd%*W#H;N&926mNmcw4!$VkKTyk zS|sB(H{@!nS4k5h5E|%>4Jna={F?upuBsBzdo%3AM#aS2LAbZpi9omG{#jKlyd`dv za7=o#8`u5qZ|vGk#jJIlv@AGMU#3wm!-E14;PAEK+^=L4T)(__N-ZtI ztd*_y&<)^kiP2WjB0E+`i;%ET5sgIZ?Og*JPY^odM=&Y1nkrrxj7DZ{b6@=KMEcY@ zd-`F0=7W1F+vSXTc3R@i?Vc9J<#5d8@G1~Zss4>8)CdD?8Hegit^VYzx$x0Kwyg{5 zFB4E2we`0f3@j4~aB7tvE6Rufd}ht>;TRr`JE<>CQJILVdgS}5;mEnn-c~(n03=Z> z%Vc#c6=7Kr<)I`5`J&Xuq&lZg#V&mfYr)?!X($8uew%vIXJHmJmYd1z@ia_h(bt3M zKtR*iaGR2Q_OZ|>(^AH@Bcq;hb)H+1>cQ{Zc@R%>+=hNWAaX7>$~*Bvy;;n5tHtWA zV1wa$JgdDGFFnKC7b~Z(H4k^boSecBqk8mDw(Th4hw}AMb8skFCw5kF8OCnvf|ASP z*^-{T;KTQ`<}TOXr=Nd%r_4_|5ka z18tk(pVP{M7j~*Wk$aX3o1#*s_mDQY3oVhusVrg_5t8ukM@zYf5d%Bkbu<7>#=u@? z#y*EK6^5pNKE6nX{;$d{Mt1dTIIvfTw>$mbG=AzAtaz0xCLECOt@@!~UE~=BxP4m&S$W%?Qz~gy6GdVb#@AR5F@KbUgw>aojV?S1LnDNJFhPiM{ zq~Lxtr~84Vt`kv3{^JW}*kIZon68qGkD)}<5DS1onu)$aIWYy(wbW)o9UG&t5`NyV zYSOo-BVL#DUoBs>s*{}QWG)yg%Q5+PQ@T^zY{*+`Ftzvts>yXbK-a-oyvQlX1b2NP ztC^$gtP$_cqjC#umHKFLChvmuUPNo-)9MoYrgnjd9SlHnQqk{XbJn;cW`uX{WbXQ@ z(!QhdD3O-$3R1bl<>lS%Dp6Z*7RM9(f{62#817lvaXRSQ#u9y_eDY+pSS*}1<5~$3 zI??Xn68j5-&-39f_*6NU?$vLI;k~+B)8bTsM-0FSTNAxhGQ*|n(KojTBe~L6%%Y~& zoZiCg{+!C1Q;JW-yL>n`YGW%Q!`-$l45ao0DmSZbO==O#ebSOYDGSpcJ2BarXK>sx z6J}n!V*;U0oGtH$r$1r3+;DACnD>!Juhs7Pwpow~tS`@9C>y7~b{=Pj%{m)DhVdgO z43q)_J<_|S>!V4~Ha2q#)WJI}ncFau>FTXsa2J=wt~Jjo&q=Gjc$o>(1wZ+46NJi* zyf-`k--xREZ-HbW5Je%v9_h_u(@1uNf_K8$c`dc=h>}NU@{9?c)TlVEEjKJq?20+m zZuwR8%uT$!ah%k|fpPi?SO>R-10plHS-ZcAbHlo)g3Dxkc@$oM#6zFrMfq_b8z5W_&41(>St4qwvpf6@y8j`A+AJLUWJl*`E7xGE-StqX zA|~b(CaapcFzaqI+q0M%h+%YP`}CqUiB0qBh74oXe6E`kCH7$Nstra2@)|g`;~Z3o zJm-1+**n)qz@g#15~#bx4g_@%AWIQV<;iXMQC_yc=hvnT#TXrDDa~fB7yI8pOroKJ zvpfA$7+WWOs801Y0vqq7gz));3m%~k?t7@Qsq0s=AQE4^u?<4sY^1-O083kifP@Ss z&(qn3d^wwqF{@g#{NRVX)>x9jb8%8axTN~+>2Np@cYfM7u7$R! zrkTVV71a#m4h%f+KI{fZ6>rxWLj{=Yytf;T;<|A@0%QBHJZ#QGi4k0)9hj`W{%*giU-!Pj2h(uYPvb|)eWz11o4IX&Rjj48RFr5 z5pkclY$v^Mv;}LgauW66-adE&x_zK?^PrTM-(Rp>emciR>2<*^>YA^XPSylffYRUQ z52J#Xsz{Dn9ydf>{_>QPV$hdsPW44fj6JaOufTe*oHgNoz_}pXVkZ%T=1tX`ezVsG z9M84o6;fP9Auj;$;goPWnj^04$Bsgw@8G7PjuDW(b(p|&Y)i2V+%9vF9`H=o8MLhG zMAA$d6^YkC-|$}F?40(OlzPu(5iZW8JK!Q+{6a-6^xk`?3}UUwJhbs8wwno)aHCiy zI4|*wXic(sb0VlX|SWsT&M4okFJ*CYS)5nlHl692ov0J9w222&Ev@d{ysXfU^j)+T8nOPqUPS)}?v5bNVqC-=5ThN^~XLTU~gxAQ%kWd`k`{;A$_78 z#D(~+bRfFd1go^TLcw`jeCy%oc&oZqh|dv_)QiK>7g!8H!*ukb%6a|+EQ8C>)Ep=_)U!AV8a|dc2rn@G+Cx6;(odg>^LlZH}5zE%$l({ z+uY)|wOMSqiV!#~f+JbwqMJA(NE_52lq&CP_VaQOVQFYk~m-v!9 z^;EfHDt0qjO7Nuxj}mUwrXZE47~ zVKis>v>9Eav1?`|@7piKER}EcDA9u{n=aqP^f>;vpor%5b3g43MBN({JVTo%aj`<{ znYQx|AoM#9Uin;00bP$XKF(dFuKNoOHJTg1h)Jaa**aj)`G1Y*bB*p(P#u<=#~*C0 zodkAk=sfqQi7kx}nU5C#cg#ybb+yFuOXm*Pnbve9Bc1#-G{ zv%Ig>RypLho`~<@AO* z;r}C64zO`liS{sz$ePpkPeFA-Gz{CWi|ULT(*RhX**s>Z|7XzL{#-_jQ zegH#$i}M&YD%NlJ$}&ZKn?Zg+GrC8I-DjNk9D>a{G+pB1a&UZn7lY7gr0W>nQGwD> z%WvA+y=oyHky7`)0N7CTeW#~?#Bs}R&4bnpKn*N%tdGda zZ3;?Orv0x#taW(_Tw=)N7+a?Z>m+gUQg24A0U;n)^J{*8LOV>H4f$xmMs*4_rfc`F z1O>oZKi5ow-gKpftdC7uV#$woNBID?<%PWhE&S^wKazSel=H!_4lC0D^H5*y9cnw| zxg;4x_rRscbp6c{M6rdYy`1KVY`oA|Z89z*OM&S~ zYDk%_{;xOO`0Wc&-W*9BF~!@3^QetdOiq{od3`(oi69F*DT2+P?Hy5t$-DMR*d(wO zTLK>F;NW2QJOITg!7okFy<%*qzZwHL3!qv|E(Ef0&~AGBLN@9fw=sE{39n0Oe!j`$ zH){J}_dk!i_9^FC7y1Sx>(zRK*V>)bcL)7yok9uQ|N0`M&VJaOk@kWaShsOe9u7x4j`pDub`T#}Gk<%nFCd1F7ftn}ys~({HJ(Yigc{$O3)e zXrSUN$J6zm;*jS;m@&Z3B9k#KHUE!tI6MEG^kCNpzEj^X;-z97P3i9_soLs)R6iDZ zSzpt&&cAj{<;2Q62=QdT(_G%8W&=;nb^PMNZS|UQQ@@zlOv%drn@IqM&+86jyC_AT zx%_Ur8q4AS^8h)W=P6@I1gumq$|H2@XmE-KLg9bPpo-MjVd};I2f6bFlA2{((gBcs ztVzhx5D?X%h^>mKga^;ju;Aj}XFT_BrbC*R$A^p_v7g_~3Asy6AXny~+KT{8;jf2i zO@R5{+uMV)n*J?X&vBmZ41v4f%551t!~!ZT3S_LHAof&P1@rdj8vUS-c7%?R!Qub7 zccANoe#^-DEPZjItx;rCAi(#_YWSm}I7D3h5}+Ksco!gZh$aqwH@l-m>swnOntuAn zD1Q`TM^|BE>Cc~!c?}%O09+a?OQ71r0>Z?CQ$IKmBVi}F91SCq5{Tf$5) zKXI#r9aW_fww2&$GmDvaiPiswFEdVODa4IyafP(1=@|X7jIi>A$EeSTS8Qa?1pFnjQGTb+lpWNJzf+UZQ zcxO=G0#wd&z>fx&W-#npAKzAlOu;kB(Wr&DgWjsEF~EMeDVm0MdIJa$Kl+D_2q++z zZJC`5hFC%O^I2ATPcL?Oc4+O}M~IgAkUkJKxU5fKa%5f?;0)-v^~o_O$~Z1^wG5$Z zC0kM@=QHNI4g9X1r&_Yq*Esk#&#yM3h-IMzU~s4@WZYEE-$Bb*L^4`lnv-8<*MjW% z`@f^%dF#1k=nAgoC+d#MPR&2w49H9A1~-{fdn*yXB&cLKxxOC&}J2ZAjLp@bz)!P4#Hmb%k1wEKF;S$n;2ybg7ELI$Uof5t#} z3sLK3#!~`Wno>}bu;M>mdbgon0|lg^AhKO{`kxZWKe(8gZd3xvpX(XXP}0PYmQ@v5GOzF9#Qg5J+QBPfN-OAWi``9_w3w)(JrvPLDz+WdDdD z|K-0naFWwN|1w~82or~qHdr%nXB$$c0Y?ux3l?O`?=95{b_VV4zq}D=z>`y{NzCt- zJNpb{D2+38X*ek7`?qQl0kY9lo|Y)EeRe>pR*lUkuEqW!2%R|Z z?gP1I4NbC_6Akek<0F4qr;PnHhQN*)wn@_=gh^-W7{}8Os|_mf2FCP6rRURWSV*x!?z`RLif2LcRm-8AHFy|Ws>whnfP*Fa>pBu zow!9qprBYtrvXTxuCi@i(;5yWrVxDIm|cXZ3yw*6|D1c9+CsT+-aJi#QNx@?5w%iP zMpBUTe|BsXeD0u70fG7~6XPrn0dtL@c$dP3m2l&|__@cgt$cDa5&oZBvrkrxqGFqG^iD#C>USlr`6{9ys2NXP11djt@xUdzzM5zB5x`zz;sZ zR$3tt|Ch@YTe2nl3fI4%bI!23TVVw*sJ13W9=PXk=p7=B*3R@@q~WY`stRU%3; zRoAu&L2Iq~XRrmQ7uE1YUdyGnDXfQ{XC{o(9vZ1@M-7Q^q`hHr=0Wgb~V}VQVje&z?o(%uz39^md!gLVc%KaeTBD+WRi4sfx z&jxq05;Q#b%K^rmnA_-iHUrT6A`9>apMPV|Q~0m5wL41Ue|&)0Y~XA?o>OXWA2$*} zfgz~8TO*@Aor@L1&in^3KR?yJ)|^^@!AK#z_{;^NzDRS7q~5fD1@I{nXW&o%tvW-5 zd9^^CL~kH?Ktapswb8fJUDC$i41R5=J<=OnIhZK`L~Pilj`~TTyhy> zN_n7ZIzWc}__>7`8A4Q5Rn@Qen~Du^7)uOal*nqx7#UOMFGEo>`$~!ats^$}o3H`E z!nyzmni@>eJZTqzd-e)7_j4kG<7WWK1-u0@hs~x~OYPm7{22!m7l61L$d7^6l2Dq$ zXtoBOi)qZFJ3$Vj7`z^A;N_Wv#5?^B!_~7McE{&uPP-_mZJMk2s&dV^Y;0%#dix3L zZqTPSrwezye?$bWqkrlU`88MX4DRY#1VfYAf&1LUexeCON!Ac-Tttp#XszqY^|10^ z8l(?J0PLtcKtM~{SgxWmqqgMTy5KI0XVW9xN<-1MQx#vWYc_r!aTJBx{nbK8=An!V zM|k|E0|#Vlb5{loVDmoh=>o9-q<6J>h`j=E$pBn>wZ=KKTgP}Ihxn>R-p1T0jO`z} zO9SSgtj&di0Fp^YrpMo*mVa(zxHwL6 zE3ElcC%g8nxAmdCEw0vI(MuU;lHT+tetkpU_=KTxmz2^mb+%FD6pv_Hd8@_xYdL*{_gP5}=?7bm zW|!wbinu+If_e4_kC}wjE9rc$;HJ1l`h0kBVlww9|QD( z5l>QFJn;K>UcnE~E2-4|@t%reFgG{9UcvO`bw4#ejWN*xeJxf-LtyOt%_uWgrCF*< z-(U%bu<3{a3+?}C0-HMlN0fHBiAIVkL4pBcb&Z<%80P?MRl=dt#X_^UfFH zJp4Pnz3COV_gSAqM*OwyMXs2%4#v;!M%gyPW4418c~Juz29gNC*X5WvVpJe8@QLpk z1HTlirC3pR8EGUKI1v)dacF8nBrDORwx-*(fVRZ%uYZVnP8IEov7sso`f;&cb|?${A%~>yz@0Xipl}IR)oR>Q&}?FKdo|)$jJ_)S91J-;M7}5xJ|) z7jdq}bv~aN=OQ1}HGJKYN&&%dCteejl%9owc?C4pm3k~zL96#(Jv}vDDTyewTD5Q` z+9dNRD&5ivR`|}PZO2r6i=Pe%dRD}jt=UarDm8&|v@r%)CH8pn&V5ID&TChfh?Zrf zi=0*mgZq`~2N~T|-wbj_98JqC;LO~pxGYU(gS-WtvAcV@6(N^xgc_XU*7Myn%wtW( z?a8*CO!Jk|AqnaJ-Vih{LB-( z5=%AG9}*Bqj`M}30rAt!Qqw7(uk|Hnzbo?`Q-EYiE+}V|``4_7W~GS?&M!uNOn4Xv z^!7aAz2CPg|AUI~@xfZlgm8HFHESa@t=|<^l(1bx8?FXw>8Z_x@!GuY5^H1Tvhk+ zEwaaNT|3F^!35^sj4dr?#vvjh1qKEVWH?4TB0Q_I_W1iN=*;68kC}$tUt`enre)^9 zj<&abZ_B)Z5QaZD7RYbvgNEQIjh<%l$UF%+&@b6JyUj7h)O0x$>iP)okenj(8NymO z7;>-lB~$N$ZTH0f;)c6-Nfo0{Z(C;CLM4xCqZ z=a)#$VTo^9c%ZE8>~}Q{wxK(3fVJBQe-;=A#VnX;S-J2r^-@1rrEwz*gd6M|=9tPW zR-rjSG`L?`0)kOPw{|@PwRW&`2N^7S2qc;i1{rvI-kGP+Kt44zG^CS0+m!Vf5`Ne4 z0S)_$`!}GXvZJ+4OL%YSI%Dc>#OxW#Bp8I>PGBO@-93x%sCB8#jM6sMo7pf;NV zdpaz6Y(;v8Jl#avK6&a=VetuYJ{unWkz5CU>6w?Wk%2dO{hl@|Lc4ermN|jKu9qZ6Gz9Rt_jfkz6A$v)k4r zF@X4T=hajjB_4_xU-&OCVSJ~x$dbupn-N*Y;=Z%8va++YGykt?cxoeU z5r$3sC4;wIkYbhN)ZyEPC1}|aAx*4}wZAO$4jm)tc}8Sz2VWDInz|$Cphl7bo>O?3 z)B5v>%~DwM)q$;F^N+AP_KPN|V6#?$(b5Qp9iXeBa%8 z`4}0k0n`6G4B5c-9t7Fhb= z2Lj%S#RRW;%8Jsa=W z@SdthlsY)Y(Kn^`!x53gyY*mfw02gs_6jsH4iC0h4sSXukY8- zZaC$@oJ6rYz~bTxjHn>ScGgW&E9|k{T;Jz33z$mqo%9=F|Nbx;OO+fIvoSyErR0w zfQ8{%^a^b#_quVIscf0FWYZyTWn~-~1`R$*5(1(ZB(ptP?EqS8;r;yzy82pTBMx;S zU`5G(yU-*!&>?7eUOuq4@^oy!7~%~_+-$wX()V)6Oq<>rYSh%pj{vG45sJj)^oX>_HN9c^rEjPeq9Zi%sHVsj|- zshcu#`d2smt!~qsjP8Z+CNs$#W;E2)$yWWTJdsY{_yt<+zkB&!3+}6ly%3d`ABvS1 z26liT2etCv6poHGfti|Q5w}c!3ZQ}%vQz%VI$aP~9&}IR+|ZrO*h|zUQTQskXh)y^ z95*KBQ&d-1cXxN+8u&6d@wa)^&krOphw}o_OW5~tz7D7+L<9$yE5w@koBVbi!0BUu ze0($%5s5`7*VBuc|92ku!fh3~mjou?qhx?9nlCr%x;&Vp3n9XM(&VpqEj_*xgP_5vFOYVo~PU(~a&CBVW)mD#9M6q8W(%%@=E9`%|N4!MuJW*CZ;Q=9*U z1sr5#hnt(7>An&)nf8(oJyf80X%qQWc>lL_babq&c8~Wrz$3$Ld3o`C6i*P9stW8Y z)!toSyTyhd9+I7f&($39(*Cj!HXsOB-P@saaCr-qBi7Dt+S=OAwuV?37_{mfHgw{l zGYbs`H0@b5qcMB#@=h=vwd<#&rp()5c+ozk3A|yq_i{nPDIm5) zs|e+78eVm$J5@U8>dp?oV#fg#l+h}dsZQ345-rq!VWS&95EzjM(`3S$*}c@)NLaVj z{3|-<^!4j-o>Z(XH*jUnJ5B z9vOtr!C^-P`moH|Q{QR9iURt8js8t@y3_a4wXCs2FZBW8EPcbX(m*aB@k2~Xbo1SB z3JxXsQEihq1g1}01sGPb;&9UWh}}O68KsjM;`{#YsPM&0w=4ShZveV zisoH(rbN!ad5oAj@~i2kow8hgi4@BUM-*i`CSuehaH@^gBtS1F;Z`2zPf z%ittF)#Q7SG%B_ued&RT5x%z#mD~X6%t;Ol7iDH=wS=TSMxpM+KQGl0YwcO>_r`YF zL(X3&%`<)u^_QaUT~&@L2L=_)T;od0jCnsF^!ubM^^S#}o4@!bx%b^e_Wri9GRlnw zEE2tb=QL$RUwf#<{%Ypk_-a%rS<0-2 z;1?7WRCAOhFV54ap4KVJ`C) z8QqFv#GG^TuvVhzZlcC^$$%gwx!bjaD|h$E)#U~Aw~2+7WK!~2<<}p-a0*M3NigXU z$JEnYU=lZ?)unvMgj{ewJ7AxNYircIZW+{Yn*tg@X|0)fqY6y(3W>4!>tvDZ>J)Q7 zy8HMTn{GzAD6AhbBX+Y1B~Xa8aC0cp_XsM!q&rcwbe6O3)q~2EqqWz*0u@o{7=^TV z;J)TjU#I#ktP}a*8p|_ppV+k~m(G8&Iq;=?I18BPJ=@nc?b7)Na=a^w86sNA=mJx}123i;c3Ns(S(}~|g-->6 z_NdM#eN$AXg`v+k77)#1{(G@BW@bdt=l-4^Kf_8fDfZmUkdB?(g*?#P0TsNSzd_Bd zVHE7xaxphHU+ldad5Pb$QBv9;cT3@5$@qusty|P?ZUiji56p@cS!KNk*y1Hn=$B$; z3`*tiwLpvkkART=c*Op(+W`6D&Zc|fFvcuswpgi8wr-}mK{ctdpJT$8CIUBL9kbA!&1C_2 zc6T42pQ8cxg2U{Kot>Sb;cAv^86S}AGNSnO9AW&-9fNiE>|Pv|#LicXOW2f_P4#Z4 zXg?5`_hwki$@3I|UEwOeSN{HOcXxRJm}{PSi{Z^QSL7RZhuVTf~&$@?a{sn0g@yx930$Wh(TD?C+m9J?>{`FVqUve--qnF)xm=jm@zdC&n^<&zS^8_`8R$09$v?+|6f^O9adHMZM^|O zNdqJWBqWrQZV&_s>F(}&=`InFl9Da~0qHz+Bb`!*?(XjR7Vq!g@43&t`>)M8>~;29 zd#|NSgLCtUw`Gac*wT!1KpDl_Gq%QQ#_@ zCGrC$)Vex%Z}0mIk&wPT=VT9){lCqfI#OvyFp-{q_b8s?y7`m6hVhdqG4*tC2wBbb;M<@1257p@x1gf{2#{*cT_)_~+o==GS@X)(ygG zCaF?!~Sj+kO`Ef*0A0hTO zNjfNcJ|6kPplPPc!Dv~bkTNtR8!4u!qcabzz^SRJk&y@e79SsCTAX&`{YAb2F`ZF)#>1dYlfL3zF7G^45UnAE#Dv<|3m|dR_;kZU zR;TH-;tCiH83l!Kw_woqWY8zNSN@11+;ED+ArExA>F6eYMKTO?)fMk#OarS7Y zNr0|yey61jtg#XCs;1kAZNTew0HcD~5@AvU){Tyi4p4P0xLw}^ng=1X#;dJ&L4QuO z@8W-1@IJU4k%86GyK)3G6#(*b1Jix~ zi}w8y$~MeMYC`{ks#@c8*Tp5(zxw6B>?ixaF=A=CniF$qDXiEqZ>B}9k=S}2DNL)R zI4|xi&5`CMy3EeYPN#Np6lXrzRCAvE3?#>FUx!?bZC+5}s9(Tm$gTGu)W6fxNZU%F zW~m7(#eKqF;O@vIu7J*1-5WWOhoqsOcbMUbM1HjTEbu`Xp4b8kcW9`qLq7`(`+IvO zUqAbt!2E`RVPJTUQX`4K>NXX`!GBm^woq!Z+k=_eq{TFvh?_BArp*8C_iq{wjw&#$ zpn7p742J42lrD>pgR`=~Z)1Y~`g?Ga)4_CNr$L(=TQU=3G>1U>=&$F|&Nds`jZK$L zBT*az4Wr%>vsN`;IpZEw+X$C2-lX?bwv+dUVzZe3y>V#w^DRj-w%fE=c)|m9%J#%H zpOdwJPqUL!jx{AQFnsRI<&B~x_|@2ur?~EQZzLM%jP6>q8+0=k)!AnrX(>e>)+08b z(xhg-f%WPe+54O$F)HV9V5jc{hmspHbp5F_uwN=GM?W2-93N0&z~2A<=H&{rEjNCQ zs9H6lGSMTkzW4db@zL0ETCeiwTl6WOkim`jJ*-mS3l9bZPctVcr>>6YoE|ASLlqZN z4ba06V87`s!{{Z93ElG!@S(R3owe;BjC_D&D%1l`P!F|yFHLs$_849SfmH*;e?S8E zpf_1NBL-PnS;eNId0+mKi+3J$82U4i3U|AU8cumEI85wvb8fRY3v!v}PSGKU?Uw~H z)Bd5h(PZk-x1b<`BRe@Jhx-(%E)bBPTkL~ zJvq(gPX#P@`KzBrnt2t}7S;Yt?elZ9P7g>hlgBhKR>ZG-c}c7P<#Srxf0?lvPlly( z#w6`yVz`1LEV>b&#@=V>?uo;#HGR&Cm!ch1%9^>z zP(+;a8!F{78c0xEJ-*tw#&)~Tz_Cubi1vG2cT2?F=2Y*3GW(Av^mc!Cq7P4M>YvYc z3De*lUEZ8-!<&G*{Wyt5TN#}cOF-Q;Pe2lpw`;HiNENfGzr=MmxI9`dGx07Q<37QX z$7mbIz+7n63i=<8arM)eeDN9+PP1#RAH~<68&UaaQZXRErWKdYB3q8M9uTkK+Tr|j z1@jyW-<3{w)cI%bZ-ZKQ5(Qrd!otpK$4xCrIO#dB+kB~_K6krX7i-U^)v8E~06o~U z`}_r6eLvzmbY`Uect|s-Zl-4BeR>CyLa6OeDl$ zbFoSIKM;c7`}%gewH;+UK=La(D(W*kurE5x3MeQLAiFCMlKIHT#EwAn34jADk4Zfs z2&>VjxqJ8<@Q#_^a(iAmlE{;n0R?_w#FVRBC@fu$;rw2?H8b*fvI+#B$#N87+<;7Uihv$y46(a zwiz9L--(FLD7}>!svBrmn6T7Vo#jPZAo|Ptys9KG&%Er9%S$Heu~K1u%U^tBJ9%l& z4*S2J8o|j&+F{0o0KgsZ})QZgQz^g8iT4O@DytdIVVlE_5@97KI>f|r+Dm>K;GqfPM z(i3GKR#klqZ!b}aqwYRFZ87BaUJ+YOTyjauELUERqtiiZPjbTR5E1V>+tVLmVc}-z zGGeYVODFesPS5HAR$JKXubT5r?(j#5ALQlbb#)g&A*$P(8_UrhFkIW)3i)i~$_HV{ zq@=Sp_p`HnYec|{v{j{qnwdgH^G{E3Ftr_D{Vz1;&GK(7_9)T#lcMM5u&Mt3evf}* z4K2>M@N^Krwh#C<-L3}*?bzsime0)~u-}@Ssu-bPfGLubra}p)0 zkD_Pwl6K~Ob#jm9gBx8YM#WwqDff$Y|00r3Cpx|mwDai}A^%Ny3wFtIaY8gX%^6Rm zDar@}{aeqXGq(d0qIJnKHffziRyL&J2VlU=+DKZWUbO)IHJ)IampF4cO{SrKDL!-X zkK9;wm|J7is>N#_o@Liuueyl>n=p6HSzm--H6jE{4z^^FpuV&;3Qm$rrLwi@BeIpF zfP^A5*woR{Q9(fgtwOfyjhwmQTG3zD-7W%y2dwI!iy5|nadUzxm^(aMI)xh;-d$Z? zpz;wHl?uhBr$*9VY?)#DZ_&)fGX+sm(M0FdehKf>^VG(l1YL?^LC@Uu#$|MFZy7!K zy00|3-}paA@O<2CUgP*SCa<9Z7)zdjG&^GljNw=#My=Y>xjAcEgJYemJ`39DdXa$N zW@9M~x653&cqR>JKNqE>Y*ZNgB)lC{seL+*>K2+#%(Uz)wy;!x>oz^B+6z?vbC*@J zlN%cI%kX-t2D0z2j5xmq4?^UqNTrglqQ1#`Jdw++$S&eniwnGE+n#{AlFBp%VI+xL zqi%bmKZ)dC#HUbG${F9{P4+r@H*dzuIQgP@jJ&izh2Nh+tC8QHW<}}5A@HHg=eJjhcgW)lS1HuuQd!0XlAU0z-0dU^L2Cu-RsvsVXzpCHTBjLXJ<95xz?n_Ifk%P z=dfPOO1|IC&CP+z&6OanJfCzBHJJ(lK#K0rZza|)874=PQ?2;b>6%(#bHb>a=BIno& zmAAVngY@D{N|b5lQyro;f7BwS?_(i z%;oC~P%@iW%!Zap9DMu;056R&Y$Qq|$IU^4iWme<5%K?q@rreTqSc1WYgp=ud;hLA zTxIT?11Wn6Ax3T3Q@wu=Ke)XV zx`{tS@~ZyR&l>cumZ!brc(^m3{|sTL2N{0cB!o;^2`!v8DMoL%0Fumv(a-sh*)Q`O z-iTD>*ncki8AT)gt|=a1g+E3%wZ``m(Rx&z;hhh7Z+}vXekr3=-OWnj^R3OzH-ldP zIK8G2vE}5!1u-F0p%M-)mTnfBV8RnoeH>8XK?J0_&`ROyN`17pwgv;h5V?dw_=`-% zK4|12IIo$~0Far0Hp|&w2O;_VvE_TOn)t7??SOzxFkO!KKx_~OE*f}ih(|cVUmzeY z;*@1!Q-9c@+W9Y4@GG6&Wx_uA;+c>$$LIf0COX*u?+NuUi~aiJ@3J%wH?|Kw`>Of; z|5GO@JdHP0e=FS3Z`{BG;tJ8do{_nFh|&MhSye%w6;jWQ)n+52{bkMuHT$`tw7Sa9 z|HQ(uw=j6kOF=;DAM_B;KeWafh5>GIWlm0@C8K(U>DR*C;K~Ce+;79@_!3`&D}N7o z_tTda-n{j;Eiio#i9yZ8kl+#)1eGQWw0m=^qBHfYQ<%eQv$NNL#CaPhGU(5f*%+{N z5x#u6da?YSMvDia4smgDvNXy3p4`1Sex{eqKL*6_K0vBu06WQraK`~ zPtuXLbk9`^U)U(Ce2Bqf`BW3Wgtg37PtNrxLwD(+FCm5NDxdhroHOB~6nG4pPcSi4 z*er0*C(kY%9<&Nfg%8125o^VqqCvYy$ZslRx^UIXTo)BLQ!|DSL^CXiJ~3yjRF$s7w{0 z=ax(}xj=WZN1n3pyuC)8N4dy^iJB%V=Ra^xR^Du?EZ_b62StMvSMT07Wsn1e!tk?KhMN=p zZwPu3>zG{oXz+Gh#pZ6pu0wRBLLzI}9QF_tB@7LRA>*EI)sYQyd zFmI}Rdkcuj5r&~aAIT$ga!i2EJ*fRNDRv)erQb>JYs*_@}A<~UHCN6 zMSsHeTH7E(vwhnA3y538+amLMp|a$N186F|Gn2DR@>4R(!@NokG*XMoAYj6vz(MQo zO7g>`*0OhYrq=rMHb#Q-MNLi3<@LjXB&e(VdQ+Du;LHaZK}4fKN{8okuJ)r&Dc>%> z8@%fT)~|5?;)n?y>c7Q-re|c@U1a7inu!RIRV-PBMjQb6?e5MaA_tW{H#n3?p?Y5O`QCALJVw8-b_rOQ9bQhxhk~DQ;|T9v&SL$|t2u!t;U$IM{zA zF=D-`nVQU-eme0N%Xv>-E1LU{7RSM>rGdNE3DPvT0~I1t7bK{aZ2}J%#|aR&R45g=LZtst=r-x?C=Wr^6!Xr0^H8nxnj6Z_1+~T~x{z z{c66=dr3g&Zsp!xKu`eh+8xf5j%7dPf7g)OK0LgrJNC{`%r|`oU|ph?P6h_d z0a&O`PshNv7q&K#!UKjV)9W6KSq$w!SN0kXJ?of4;}QFP+txDGD>e1cQ%BD4^Wo>#l^#sv^xiv#}D%nFk2Ydi%bStzzThckMz(| z`eAqbFx$UpK^>@@Qy>jO7&rQX)bS+!17=iF`@oZeyr#8y*@s#6wWBHT%A%A7k=XUm zhgd=|^EwBf)DMrY#hd=;>zWAyUtke`=UrNOCk$5e<##R?7u%e1$ ze*EC1`cK-N;osMr>eFGV1z{Ez=H{=k`?X$!U{Ub`1kDt}ce_ei7cy;-hYKZ z1S^CnOjPy>vx(1^&w$QL_D1So=eC9{6-?;Xs?|6Q4N||pMpzgql!i<<_ulW!jWcpy z79=gVJ&>e_s@c%OT|QMtYW^F^hK{IBbDgA2O3qhkovj@MT*V39aDMR)X`wHG#dNb~ zkIX1z_j=D({uj750-flu?uHGUcu!JFyVt#yGj^D{qQS!GJC z)8dD>B*GFeAGG_caItwXcK<4TaW(V0alX`$veSu{C~X13#STrs`#$m7Q)ouby1$*# z%cA~WjrF-TTYr&s1G9bGe18aWFE2K-kH7Zcy%(5Ii&FA1tL-foT=A`L+iuEYtbQr) zBKcrGp8OI+fr=_p_d3rgx|SPeD?8zwS1Ua^$Fu{6T-sm^4*qF z+F<_YII555=0bgLa2K5BhI66G-0VuY0SkO zqCU*YT@xgoJGHsfQtKIGY`MjxTpnA)nbaBe-x$GqMs;K3x=kB zjlQnVmdg2rvGF2)mxZ}@Av4gO{MJe+T4DO|v_17;<7gvyK5uOej&Z{*3;$)^m|M2q zYn)NLg#lS|c9l)Q06)|;qwJm5@}Uba$v$a*UblB(Y7y6oL%)Es64Bd|`5>R@3aNPx z@7*lZR8%yY;A7^cmcS(eE~nsn&QrUJfy~E=;L32g!@}QtW~lECOan_Bg{fefp(7*L2Or} zRe4rom(kWYRd!zttq|g3(F8^@s?hs9#KGGMN9kEu0k&B3>=*Cy)4JKcjE3 zji#^ViFI^%QOmO(ezCbg^09Sfbmo83Ko^@l{rqxorb`yZ;G?GpgJ0u{}T~ogg9<|Z}2d<)()ADcGnZBSw(6zE&$HV)DSYmO;L4fF< z$2M-cN7&{?&Aej13rpc>OotX))56bBA173_n03oWJ)=nfZSeSMGuMUhJ^L*YDx0Gs zGcsf$;QB6MRL0BLL};nSz~+r#dk+**a-3iojQH)dTFL=|ERN&Og74Rqm)*5URK@D( zalRQeTN}?bCUCf(*&XGiYXCXW6|6&rAc~^nyq)e$WDyL=i&g4(SLI>W+!GK&j zc4%lK@-)eDQ+;`cW%Qr58U#o%qK*erJWYx4wnv1}8gKf;y)K5*;%1&oF4PRpbDk{{ z*P5Bp6HlFt1#aKX_kNf=dEKAl`zdd7MDAarxe0@Ip)Wo1&WE4MyCX6-@20DtLb$8S zX>%{KdS}meXO3@r=;i!6gTY={Q$RMTRc9LvUc}n%i9K%Ru|E_w>VYP`t2RZmoFblA zy?fqGF2Y$@KxN@i=4UE(;_DH1F^%WqayZDS#hxQv3$n())NXy_V&5v@K<&$;D+F%xf7Gtm_?5sXt5fE;v z&@%A5s9!KmKL}hUlZ+=lO?K~6K!wid=SgyK)Eca5a|zb9J#4)@j@2SX$uydL0?@4; z4l#@SWJ=P1F5riEhV*gE*SuTQgtfM!+R1#9gdzC|G!&c$s3@4^ZwPpar{3G&2+q}* zHv#jqmc+TV_(0XbUbLeY&}^wb&J!-i#jMzx#=5iOen22wkfA>cf z(LQ>B;9%D`GY`}F$B246v}Y2Q!sQD~D`Mpg+{1V%5G|l?p%?$k-pFA6YIzt+`OYh< z`t*4dz|DFndbz^>Nn#afDcERO@|8?w?xH=LT|sJ2dfIe9v);senzrRxeDfHpY&!Cg zk-RNk_JAU~4S}8qP&|3$(^lAN^qOTyqf)LZSl571gJ~j*QaRho2XI#kGf>uwt;E_+ zAIzIQCkhF8qpOJ7xi5M7ik6zNOEeo%gu#bh+>pzPv*c*&feE612A7;}fWHhOJRgKi#2vLs2d- zkPy~Pv<@ue#AiFTQbl2Nuu|boYofIaifP59bGOB4#+mOGxOmP?KP)-s6-DmX! zj!A6ib1C-wV+{+G4&R$b+nl#EDVM(>LnU{`7PEKkFmHwihs9x#ychLiKAKv_e3L5Y z;{%sz78ykbKG)Ztp0gNV0^e<*#%jh!VjLNMIFj+OfS0gxgdz@SFS@TWSQ0GCSZD}O zCPoAwvz9K*u(28zHzlm^JOd4-qZ&py6#n}4#|fGB?<46`JEteHi_R~BkvH3;TzfWQ z5Y9#SU;ag;*5H37ObvY5{O^RR|2{Fc*qZ|74VOwdlY7tT8iMSJ0dV*(IV3bflE~0# z<70J8F5f#etqtxUKYmopRyftZlj&L5q-6^bigo>T?sO0? zlazJ?;w0<->>eP%ucV{|J$rZ^9)q)AkD}SZOJ^!dtp%D#r`s{FD>}HJcNaLtMy5m4 zamw~mR2MZcnXL_tjWvcY01~KNERE!IdySs*YNTZ6YVx~^9S2xk*)1%(4TH`HPM?mS zDeYe{7m81!L3ir}Pe>}l4p&EWe_pxmh7zQ8w6}vFCFXUB_>soz%1lSM6NBl+HZmEm zEyv9v2Ks}=g0`7Bp;BLK){}lD{egZ*^XRO#RqOT2Q$25yRMtipsVrVe<|EZ)!JFj2 z6oWA~cOI(!Ag({GXjJ5&s9zQyLS;f#RvB9#RY&_zA|>OeVJEFpgTcv;fFt5Kb|;rg zL28-UA64p0`shp2DQFpN-4^iMyFPu=%H#^E4NT5J*^?I5atp`{Z55Kw;{w zmtXETMzq`14xo+9%*^8A!L~LE&WW*MtH-vj0)&7$MzAUG=O`6vD2$B>m4w~zY^s#q zYq?JsWRT0eU5n`cAmdb3RbbLzgGfqxIM*|mIfT>ax!^f3@_)E`Oe92WGl)i z=Dr|nDL+l_*S(Z119nJzZCn&x4YLKM9;ZKpoW=_@h|#l{%s(3O%WGGy^D3R7wCgT& zjwDSgX~sSp`M0NWLWy{^q}S*rMYLsyf9T6@R~fCp%r;mcrA-ad9Q`^}(ZO$f*b4p`hX2*LeS3b#J=M|JcH1S|JU+j)sQIo7I2bOT2Hzw_}U?UCO5wPz7jtWHiB} zr9Vo$jW+#71*EcS>}a9U?~Z-I7EV8x(QCriy6gB|rw``Y_`u#ay~=(H-o8*h&h@X7ZLQ@^=sPwY zd-P-!-;vO=zAfy>4acN%l~+)64*JGp%5LdkYYa2iL?AdcU1c-ES}32Z8mp8)7RRWQ zZRQ4`Ja$o$mw~~0QZ4A^%a8lv9Y|*8C_lJ)o`CEGf;HXWWFV1nV$)VE?tz<3O?s|+ zy(L|j7*U`aEvx#LgG6O96#t(NQjARO;d^A8Po zb&`t}b(}eXk>TTO2)IX?lmc9v5{vR(QtDWSFRlrzl13?c-A5)3-rkFmjCZz+0(d(E zV<;#gC=8iqtab^UUfWzWpYcMnT+v3t<1Ldszu;1b=?yT6t$Hj zLx2U5PmxAGR#qk;5qCuxXtPNH=qAls=Khyea#S2#c-9lyX@R@MySH69X!Mh&bwxBy z8QdCU8(a_-d-Mygk&pM^_48sQ5d`!(1Ojhn=NWO=p}hg zTJD*ie?oz7^UR?q$y92u-l^krSiIMnbI;SGlIabgIu&5ex=wfJ6DIv3kMMzT-(vq| z{J!-?SG7PfSKQP}mY1cfvuMP?WWQl?OG0XP!~CNqkU&Ei2Bvnbky#=Y5k}i@#kU%n z8AlBodi`jqKCEoZnulchK~dsNmC`de__&Q}!n|s?>t)Z;F!rZM3ar}h6G7Cj>z`rR zEUY!;82M8Z>y`?Ua#6=6CN?A(6_bR#qSAIEq?I72^Nn)bA7c-TKqSCBoNgB#_@?=< zB@usJf1Hn?bYtI?An-MjVMFwZi_7spSGV{nOlEF_uiO?Z{qY4K5!y&iQ%O>sDgcd? zH*URHvLE%=%5X$f98iy#%;NDHNXR-9TgV6!TzOxws=bJa!)>i8JY30Q_rqM8@I zZjH5`6X6beZ1gbXdl{zC>sxb^d;hE-LDD`&?*w9E|sh zQEJ>Ex&YSshS@g~uOj0M{|UiJ>Nia;Z)19Tv`~f3ttkEY!=@nUd8hct4~o}VDM$Tj zZT=Lq^Ik?%uyJ*OY!-P}kF}=y-LaN>kPmAP*Hr&y($&}2$79x<7zHLtzj@s-n*wUU z-V;wO4t2cwdZXoD|;3}-yQEmckbzDo-$}u_FeV+hRLU%2r=Ee z>>3~cq4y97v@aXhTxOV*Gk5xV`CQZc0WD5;*e&tkfmqMXjU4*_v1d!*ynV5brvX8~ z8{DMtdyAH254q$`Pui3s&)w2jQRw%0Vt?4&z2e6CXYm_@2n(foTw_Hd*s#Pn_P-P! zCVPvnGG}@#(5HSQXOzK$z%H`Nz-(-ytuNwCtZ~{Rb(s)bes4+k#^io-*dvPTdN6i@ z=uVj5YFYCWLv(jxyQKtN%^3EjJ+{z3trZCpp&*4Q(^j zkQf}q%X;TOTd$7Q$y_Z7aA-Js>k*`XMN2iyN4*wTU>UHQHLZTN*7OOpTUL4mg&D;h zUMA~mMwTNWmrK`!f8k;2MJ~*38!|trms;R(T=Z!6RUH{C&jtKN0FVlFF{q39X|VD3HR2y&gJz=Z9e$)#`1(?A0fPm`M6KI*! z%*4SvNxAI*;Ou>%OU~XLD}UU^^z!A)I0mhyxkGGkuK^R9hl-;etWl<)Z!?BV*%`k7? zzH}W=jfZy0r6!}O63F@H9DHeSVLSbNa*|EO?Pg`yh5v{7>b#nnt8RDtHY&P`w*(Y} zG;LfHMGNPDQ3X*AqCS;BHV5?)gNE7JiT6!RR(8U*YaK>~Y;mSZX$T$t?%oAHBYX;K zRRA;8^K_=hm;WS?#BBqV!f*#QECM{{Vd|H{3fWFky9=@$q{U`iYB%^2sEg0W_XnQB z5d{sO2vDf;NVL2=`sJRvdQ~TxjYqYU=g^;{#5F(ZU3u~327x=7xQj-kQWY`eO=s^* zaPL|sETp=9c5I&}8gIwXcD=mWwU27-eD^PpInqh~eE9WgS3;@j)Adu=UQH&DtO^ol zIyMO{;4{YqL^E}Kr;v}AtWqZ9t3nW`r&L3JFJHUWp5 z4~?(gCfp1tFeK$apRSr`W-Q=$J-RWGL3BY7v}r$y-%TQsB$z`o2a(O1cwdJw7^8|k zBHTmbrCl)KMq$c4`o8*{Qq69ivhlBEoG4>^j2F0-=LwhrQNOHavaKH?M?%;b)LI5= z!jFl1%i>EPK6n!L_{ssucm(MAA}hyLmD2Hih_%kj$^wMY>6fo?`?_kB|Cief|9Rg7 z;(%NTKGsu&y-Wq^eqkdc4>A@Y+Ajt{lphT66OB}b;ov)v=_mai>ml?41DazX)dOlK z6?L*Zcu6!!IwYoVztqS+H+EWtfF2ratcIc*Yvjmhc=GX{nraq5og5Rwt-*!K)+&*ObJz)NhGvcGF|XN z=S(LUG^?Kx5^`IN)9u-J(*)b;iw(4=lzbd<0IrokIv$C~!3XL9RxdeiN2#quQ9a4x z+R6k58zTf=+h@p7v2h7-#eMy?fQxc>@4lbomEj|@Xu+UXeVp}SeEbE}HO&?gJa(qE zPCPr^BEWCuW#?rL^%fbPO}R-Q z7NzaFym21+&SwJLug|eA`iAPkYj ze0a(ftWx=7TOjZ1DC#8N_CA@jOU7g`4UkZ9q(+=}A98~jwG~_`?OS=terLr6F}({# z8@q7~*n44`@j(`S`eN{IFQ)3kqTE|IE2W_DP4S8~S~694Z)Am*%Fcv+Wof!cXI2<- zD*aG*^qbYf*wDpjSLFHIq|RXR#EuA=w3%MvD#Qn|Lp%1wY(Q&K&PRrVGcafgo!!6a za^2DfSosR-+SIP$0MDU;DN_vKshEOg9XlXO!Sr@rekJFRi7*y5jMb(S%adb-FlM){TyjuazE5Y`^TB1Bf2}&Bvy@%qIcKrXFD+4qrsF`M3L8Kx;Pc`;s&`0(WHjrL*6SE#uBM&`r>$8{j$5u57 z2!dvWYAmtq^A#l=_Ip=wUoeT>W$TMo%zoEWcN?40lZBqp;hhzK0si?-ujlLkB&qK9 zTdmOp5a>|Vr9l4jIaEN;=k*#!0*Mu^&GYanrr2LJ@C2r>cq{j7M7!-rESHBjdzL+3 ze}jyJPA9?+7J&3a!Thmd*4g>_!R135tfS${zg#%IWubTcxmVZL?}gGM9QeKqQ1U6R zdCXbyUu+7 z8Gglc-GwV62Z3+}B6_VAc<;L|O%wO__N;Aea%h4F*N;QFc(?=gL;tc$p>!6U7j*+r zKnN1U!=qYLY(!6TAhxngaB;T$o49ncgT_pbS{odMv>blr8HV;rWj7|cS~2MG7k5+v zapY)^=pq!XObGFQx#4RTDB;CzuFwH0JlE(N^m}u!YzM&vxrUuG7T+|@v)wC>{qX~t z^g8rMwDR=eRvmKpX}($@7w`X=IgmuV1le3IA9wX0BK>;|AYa=^n%oeFHYOWYMdZxd zMI~1e*9a#&q&+KFB1>K^0cp~G6%stE0e?K?rT|~7cO{cFSu<8UrhL+cQZcfLmS^u$ zZUA#TaTKf@br$~jsKQ!qnWcH&hOD@|&)7#@QAS9}G58t?!YZKt%vIIP^6#{@6PE5d>1?WnW5`QHd+Q z!hzEWs%!iwKbw7&owWQF0Z4wr5|N0C-=rR+J>oFxd`TNv7T;WH(TwEtjldd;`ajYm zNu?LX>`u;UtqQEIz(axlDNsH(-yqfbqGNkKrhUD%(`UBVvb0b;VC;jOiCgtPb$&Pv zK?FerC~w?)BMwipiv~VqyGEdk_5F1$qK%O_Zmfy?yK0_ofq@ek^6n>-79DO#J9yf^ zyT0Rvi&kk*JBmy@wg(1QURI8e!7Yp&FuTXJ@7ug>-tJ9Ilr}{pK;kr*AemLKfqMrv zd*#4AqhKc-dJUf5lXNE4R~}NXVQY`4O-;T&5~M0XIH;})UOR-`9~hruPYv~B^~w^v z&5=w#t;^0Rm9ESX1R!YG!viD}6C+a_RZ_)YynV>Z7OwRTz^rvOm$1GwiLdKWtC0vW z_!Lj&WKICQ+_U@Xy0i(JJWi~ICJvigmLVh4y26k>a)4~&(Zu{3@bzW> zP?-+7ED7o-sun3>RsId3BKiE|&k%M;gik<)xE0-FhBx?G-kV=6ZH+8|t-RZJeBcxS z)6)1_RtKAxiJt7<8JLETcpa}b%%eY-)6wzPnUCDsLO&{Wo+Bd9kUY#YvW9yE6I69t z+mfU4S%l4!lcNQ`L(1B8<{9vBi($_1e^Z&v+i0KQL=r9W(awRMC3#Je_|FC*1mOhv z`y(evgW8;MJxvO7piTT9h-}3pnH*HLs?Zp=r?AI=OiDL zePQt4#;%HE+fJp7{5|_|Pc1k@v7#mrsCtS=;+es^X7-{y)$0*Y(gJ(Jb4xZDz}JRB2nGxyr^FlRh;fFXBv$0eCaQgsoX2sN`2ok zQxK4a0ztC8D_5O6f7Xhg_Ronp@RiW@-mPcPl_hr`Wm-&*jWbZMY%iuh#{P4+>hUtT zV%0K(I+Egg^?uD+4uM|)-Qp!#{ivYaPZXHyqD(=~cD73W zk%+eZH2#$~h0xeT`-A~{fIg|qv>~l&PhDDA6_{QoT0~d77TX;rni-&nQ)?lzbzH?a zuz99rR>Jkd{JSh&<~}S&81d(K@hY; z=^ZMa%qh3=y@0^=?vi1x;(*ih-Dm?B;3kWtqUvGOQa-}g_ws5i%{>I7`}x;K;3DWU z0#^7IRpSX+@w3SC)Zv6&Mjcv<79(F)HnxQ9niFn=&#Ri$lkQ}XP`Ui+aYKl?T}n>J zlzE>cLy!+!C#t!Sp%I&FYnif=@%KN>?+bqh^|ST^A)+ie*SfiQP>#@L10b~as1SsA z27UW_ae9_AF^jK&V={>#Y>fn(AYYf>i0Xa+)oL=D)QOq#R2}!nOXXj z_wAVfSZltslq(0xA0Xp9ZLpI|g|)x@npVbHMrJmZFJXz;Qk+v*8MFm;Wda37PzCS$ z)(db{H@N2y0u$K#eOpMkwzgAV2Q9LK|M6-4otwM4zb}&||3LK5-stgsvp0FGFS(w; zA~1WinuTlzXJllQmfE_wRF{{R13|85Pc~|c-1crcHC}jm*_d9B zSdlt7dj2xYkxl_If;K8ea8Ze}k#Q;N`CtuYGQnj+rh5chs`mhp{Repnif@6XQE4@; ztgfE7&3#SxqI&MYON+0c@aI1w3)6B(`9(TJ$4G91PHV9WEhX0HeP?QfWT9ldyQmRmrnVZUB`kkK>D8mVo3C>R|DNig) zWr!{K4^qwzHaxR9IVTaQw1{E*fi3+&VGfXRcw$jrW?nkO0qJM$KrwcR{?el4REDqr zn_t6}Ip^o*rskC}d^Ry{= zv(Jf6`*7LwIhVK4vRjkmU)WzhVj?@!<>J&=;(wj*PC9pxf#KZj7joa2KNQF`thb%d zSn`eErD^Y+72Rj&@~AcXCoT{xUvX5Him^n|Cw-4CVj7bV#&nfHxhw9vHSHIJ^DiK z$^=F}=V7^YJGlAFw=K-xOD3-CT^{GkA0m}qvZgCkLdNZBM7L#khA4OI!HWe-#(dik zET8Xd^>o~XQbV4Mt*EanyFN+u}Hzuu3+)%XTFShP0tpd@ z5>uP}kV9+KLv(;Fkes!%>$imsnG0Q*9=x6KHF2?M!^VG4rssbRH`CuPH-E2NSVZ~a z1$)-)cyQ|P-=Ebw{&D&~yuHmLQg+XXNw$NLy6(nxch_Ehw>>I1d*!_Skr68|CLXa*|C;-|BYmTf^FB!iy>~jN zC$4*6{xRpE_up%Wj_a;#^b4N*RE?o6k>N&;8N*gN?=KOXqVuJ4t9$6b@5Hbciw&uR=?l#@5CSZ;v;qrx2}ETXo&Hc*`mfcz9w64yV91_!(zQ|$wo_W=4?w?kvyrP;s5uKoL(#s h{v5ru@|eI2>weo8dnJ|}%md~?22WQ%mvv4FO#u5o`N9AI literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/EIS_info_tabl.png.data b/documentation/20.05/eiffelstudio/_images/EIS_info_tabl.png.data new file mode 100644 index 00000000..32d6a013 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/EIS_info_tabl.png.data @@ -0,0 +1,3 @@ +title=EIS info tab +author=halw +path=content/eis-info-tab diff --git a/documentation/20.05/eiffelstudio/_images/EIS_information_icon.png b/documentation/20.05/eiffelstudio/_images/EIS_information_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..315696c789383760fc3876f728d74c13a1188919 GIT binary patch literal 673 zcmeAS@N?(olHy`uVBq!ia0vp^f1OQk(@Ik;M!Qd`Cc-ajG_-G*FPe z#M9T6{SG^$n6=98b&{*VLaq@dj-@3T`9%yX*PZbI3h|Txg;oF&M`+;I?AY~z$B{``KE8bmFXJBB=@pN$v(U>@OlD)^_0D)us zJ=z+$N;|eFcy%|&x*Y8)DR{A<`^A%l*v%S#=gL9~E-pR$Ab@@4BKHXJS zIngu!nDOo6WjD2LwupZHT#?VPrv2XWO>A+0wrpy>9kpSX$=`kT6|4=)O6l8X{*;LP ztMF{q-^RS)7hB$(>aDJP{=Q%mk747DPdlU~m}`#R-#X*NOpqi4OQV3WQe)@4lV{?; Y@Wv^=KHkJ62Z~z;Pgg&ebxsLQ0J&rhz5oCK literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/EIS_information_icon.png.data b/documentation/20.05/eiffelstudio/_images/EIS_information_icon.png.data new file mode 100644 index 00000000..919df111 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/EIS_information_icon.png.data @@ -0,0 +1,3 @@ +title=EIS information icon +author=halw +path=content/eis-information-icon diff --git a/documentation/20.05/eiffelstudio/_images/EIS_locate_class_or_cluster_icon.png b/documentation/20.05/eiffelstudio/_images/EIS_locate_class_or_cluster_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c00a79e0e43c55e43eb2fcd361ce94086d643e84 GIT binary patch literal 590 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


QQUm0ZpJeftc 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 z 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/Eiffel_Inspector-command_line_0.png.data b/documentation/20.05/eiffelstudio/_images/Eiffel_Inspector-command_line_0.png.data new file mode 100644 index 00000000..f03e71af --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/Eiffel_Inspector-command_line_0.png.data @@ -0,0 +1,2 @@ +title=Eiffel Inspector Command Line +path=content/Eiffel_Inspector-command_line_0.png diff --git a/documentation/20.05/eiffelstudio/_images/External_commands_tools_menu_0.png b/documentation/20.05/eiffelstudio/_images/External_commands_tools_menu_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5286c9071d54e5943520ba29c8244243b8cdb70d GIT binary patch literal 16729 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/External_compilation_pane_file_selection.png.data b/documentation/20.05/eiffelstudio/_images/External_compilation_pane_file_selection.png.data new file mode 100644 index 00000000..929837e9 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/External_compilation_pane_file_selection.png.data @@ -0,0 +1,3 @@ +title=External compilation pane file selection +author=halw +path=content/external-compilation-pane-file-selection diff --git a/documentation/20.05/eiffelstudio/_images/External_compilation_tool_01.png b/documentation/20.05/eiffelstudio/_images/External_compilation_tool_01.png new file mode 100644 index 0000000000000000000000000000000000000000..2e481a85817d04a9415cc8a4fb896a400e8ad166 GIT binary patch literal 18677 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/External_compilation_tool_01.png.data b/documentation/20.05/eiffelstudio/_images/External_compilation_tool_01.png.data new file mode 100644 index 00000000..6263f26a --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/External_compilation_tool_01.png.data @@ -0,0 +1,3 @@ +title=External compilation pane 01 +author=halw +path=content/external-compilation-pane-01 diff --git a/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rule_Condition.png b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rule_Condition.png new file mode 100644 index 0000000000000000000000000000000000000000..868557353bcaf0f360ee54df3e50c8eb0f246811 GIT binary patch literal 23220 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rule_Condition.png.data b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rule_Condition.png.data new file mode 100644 index 00000000..2a0a0551 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rule_Condition.png.data @@ -0,0 +1,3 @@ +title=condition-dialog +author=halw +path=content/condition-dialog diff --git a/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rules.png b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rules.png new file mode 100644 index 0000000000000000000000000000000000000000..b0971e8eb0ca0c694f3f5ac3c06fe351c80eb36f GIT binary patch literal 15508 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 z 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 W9lBptcK(en@KjC>QY`cO!~X&nJ7u&0 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rules.png.data b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rules.png.data new file mode 100644 index 00000000..c1420713 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Exclude_Rules.png.data @@ -0,0 +1,3 @@ +title=exclude-dialog +author=halw +path=content/exclude-dialog diff --git a/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Root.png b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Root.png new file mode 100644 index 0000000000000000000000000000000000000000..e771bb0d6f0c3fd8a11ffc1ba9b60fee5f9c9807 GIT binary patch literal 9118 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 Jr9jh9{|DU%R&W3S literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Root.png.data b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Root.png.data new file mode 100644 index 00000000..2b173b11 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Root.png.data @@ -0,0 +1,3 @@ +title=root-dialog +author=halw +path=content/root-dialog diff --git a/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Version.png b/documentation/20.05/eiffelstudio/_images/GenTargetOptions_Edit_Version.png new file mode 100644 index 0000000000000000000000000000000000000000..42071d1cab9dd2528efca726ccb99bb3a0c25b5b GIT binary patch literal 9496 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 z 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 literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/Group_Options_Edit_Visible_Classes.png.data b/documentation/20.05/eiffelstudio/_images/Group_Options_Edit_Visible_Classes.png.data new file mode 100644 index 00000000..129a282c --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/Group_Options_Edit_Visible_Classes.png.data @@ -0,0 +1,3 @@ +title=visible-dialog +author=halw +path=content/visible-dialog diff --git a/documentation/20.05/eiffelstudio/_images/Group_Options_main.png b/documentation/20.05/eiffelstudio/_images/Group_Options_main.png new file mode 100644 index 0000000000000000000000000000000000000000..78a2c0ff6bb7dcfa80d13f17cfc94dbaff4b309b GIT binary patch literal 53018 zcma%iWmFx(((NF@f(C+Xa3{EHfZ!0^-QC?nfIx79yNBTJ65I*y?(S}H$i4T+_wUV0 z7U%Tz>FKHI-c@^7O^Cd#I1&Ob0ssI=5}!YP0RYH!0DuyNgM4jKy=Mgfz}tORcLV_B zuGjw%akR*IU?Z%Pgp4TcA_Our0*$UV8OgsUQ8gzaXD2gT2cWQY=rh=a=ma)>GIlg{ zFt>9ux3vM#;Ymorc7)e<5nDTV2Xj+1C!iQ*h#PE0{@3bYtpD1T*vZ`57+||Wfd|jP zzn)RFHF0v)cQ6LD?OtBHzx_A3xuc<#KG@X(sB5o|1e@Vrn^pB4Y|L#;fp)y@V6YAL zKfiZ&Ff<0PUIGsO*G6)K+-{(_k%R z9ipi+-FO@-AMGwg^o6MKGn2b+GKYkr08Ec-Tzk3j}~W-RvawkdFvA%SqQPAcx;&NVyEuwN;6$AI8Owa|Qp z5FvO6IHcV3np=5TJPT>OItzon;0nPL#Zo_+RG{pysP=3Edbc=8RKbSZKpm9MHBD1t0 zA!IRky`@5Z_Zwp1YG%&iy z0$xz0YfZW3J(*X$yp)2?$ZbAooxVw-5|!b&pc$Pb0`7ggL|P=(qP7qBY{=@D)in&7 z4kEUDTstNeR{cn2H8t~J^v7rTnV19>FwmR{BYUNTH_qIQcJVze@R_`i@FSda=(IWH zb4tgmVNOjaUF+;2{KlLCvoB{>bFT}cRGlg`+x%}zSpdI=S+Wzm;zsNn;4gQJP63PA zuaAtle%XG-XyOpS8&>PuT3S&k83lm#4TkmS&p32{x%p;Q^x2Srzbh+pS}uf<1rvLh z9(*io;U&A$M31OCJOG*Pn$q-X$5-ecKlfr+^!S%8EJdDz=Z5>b72F70uhpDUALAC< zKR+7}moyy`xUuIjP1BoRMl&FQc0M^G-#wUKbZ&B2Oc~w9i{RfY-jBU;$X$F_qf@r9 z$fO5rJ#{0DFB~@lBzH|G2sm-?!G*Vg9r$OiEslYCDh${`PcyK_1Mq8Y zQfo62CkI1CMwBye^I~we%}Ns`d-L5jeT0laCRJ=f=U7+Wb=B-@PeBCRv(1ib1+pl( zV{qUxM4@)mT4dnII0Ag;hSv+SJ4TToJLA(lk3FsC=C4FdAp{ScJW6_2trZ0;2+3L% zSbfjbDY#k>(v36Yt5^YqnG>#w^P8?iWIh&4J z);&8;TEKLCUBuBAaCX4ulBcQ3%HrL2JE(0fC;pSVXJg_*)oJ+VcIBzb+1K|$>j}Bw z05-Op*m=uXVH|kJZYrJ~PH!;>UxIB9BeSy8k<9T(P|LGuFdHI(ub36Gu)XxK*WXoO zW6x^%3YU7=%Uf1e)noPq-k2`$D)CybG)i=2wsR_~(_k|7WWJAT-;fbKZV~{TxBWaR zz8AZHhm9EMG$FNB z3guZ?Sb6QFxw^EK?@aca7bS?B)tvDPp%#Bbxp^_~ot^yj-PfFbIY=Ui{IZl$kR*O16q&MBfL^4=EK=ic3bxP5hQ zg;z1E77oayxfx@dBPV+n(BBbR0ouLM=IUN9s?zGP9n@=WmL^bIo=&D1mxe8j*gw`B z_r90zSSfy3p`;_#8+z*Uq+Le#GSIo!%mCUKDO=gpSmu)+x*Y%55+FTZUUUh%ME9u@ zE2Z%v54r?mx3#)gJ9>W5c_IRU^0&6P4MQKQe9*5?48v?K5SBId@2h5SqhZU0%Z+UE zDnp>^#ZkW!8^XLXtZJYl{m9xL^^maaxMFx18AfYMOR~pmDwQi+VC-PvnrsVqmT&&F zy~2CnFYXKLC&z!!qb_{Rp-HGqa2SWZUovB1j!QML`SI)7gLPqfay~?6Sy|-h4vXdZ z$AG;=A6J+di|;UZ&+N;^b8Ahyvxa>sH>wc6t&J~GfZOVFufXC{zVzY6F*3gS^>oU3vz&Ib z*TylV|0S)j@y6`1AdYbq;`Vv2%}WQp1t)^Pa=VF*lHYgc*Ia=>Zu|*oxD`BUtqZpP z0y%u|&3Mn{ueTgD#!?XNLrPtPhu`GNOmVpMhtfp;%vo)n2nakOc)c7h$+g@JZmZfD zy{|u8E%QYwC*VwFIWZ3Qy}fIyQ+sq%z9PS{NfybcP)bU`C%)es7|nq3LsuWX*^>b(-<}aFx-4 z(KH2}$8MGRzi&7`W2x^czX4oFtOjN^WECc-YD;O^D*?ahX%z=l-?lLPP2bdRXr01e zHOZ1)1CT&z{PP$0T|-Uv&%pemh)>nlneU-@$T!~WhaH>Uve-v0r!7;>5MpU!=mnag zuqet#*-zRW+}qx}Fz)nIO6sJ%_D(a%hAF&b&K(gYW#&_C0BT)s^QrVR zZXF)Aq>aVuVXJ57H3YDDlh6ShE&`Xmu`W!FkXc)ad)#D+BMKq-H^6n}c^$8}sQkIEv&Gb2b^3Ou)-%qQIH{Xn(GML>X0;vahvuZYW z32w^rsr-x&HuP;p2;L*bO)2<#dw~Pru3S9a)?I(W5Pc)D^JLpwS{}=2TZn8G>OC2{-x-W-Im82USI|r!G5*FuvDeMz^?p2TXuYFgk`2erwAI08yI7E+Q z282HAVBfy=y-u+`G#F~V>nWwokj!yg%!9hp!~SGjEjAI4qb{7QU7`X7Bn*NAehS zKBuc$xx^FaP@)PL!G`s8LmQ~wAHxt>J^=`;t=cOsxWi;6cYXvbi^=4FQ23%fE?wVH z61I$XVBnjQ=N1!azJ(rGWvr?~_Sl^|A+)%)n$WfvD0$JGA|0GHhT3)?Z{B1h;=K@` zz0y`@rE)a#1uhtEb}Ti1mXFjHlK2{l5XL!^&n)4G6(NzrF;if}JULh|8x9N(9+B0> zMR79q^xJ~r$4nzOfIW3qqncie2n}e$)I_tyDhH)e$y@ca9QXGHSZJgpphim%7D zbIgoo8ShhpsqW6{ZN)w2fx2A-=ylnG=vUfXQ&aS{`hv2HTY=09Ng|t)LOua(Ovj(deM2q z7;Y>Ihm7J6l|fXDD~;Feawj~2TBPpvvNp!;pyhl$D|gY+QIg0kV|Fzwsb}Zb7l`%z zz}KDiD?h-q%|sNg`9|P`x1s)bP@1UQ-ws+NXLd=Qg8E838)8xW{Rk`_rs1)H8AKF~ zTSfYhSKiMvCgjzI7JWo>^4P}jEBqL}*52wGo@P^p_U<%=d{WT`GAodPS;@YQ3+f5F zZy%zkW}?*peNChT{Af|ny9s$KDCG|OZ%$W#^bf`|UUNzffA(CHFgTSPZ6)kHc%G;# zi;XmAB=61@5Sa@rIQko^Sd@tAg`Jo)!!xOtT!_IO(Wk?*otfdl*25GIx z`^8v4SR`5Bu=yE(eQG|vQ~V8>odXqnX$O_X<6RS?joj_|9$}_ zUZBy5gRc2yI?#kmf~20H`^qjnRFRIT1nJH!BFy zy>YhqZCdq122qvM%!RE6pXkUuXx6jOj_tQb5P%j3M{6*pCGYC0U?cg@(0+rE&oz?L zj-E2Yps`{h&a1PO;|{iAYL(S2i~hP~fkesY@vN7$`$|PlAZ5w!-ncWA@u6x-Vy7{k z0TzI06IP|%f*E+gGXqvf!rb&%2L&w@Oc-k>pW}~ zd!OvJb;J_!S{bK7VhP{1!Djejy}0tYRD&Cc9slWOhq`Sc%k0p;RK4FSGOSKu@${ex zBotxa-p@VgSn}V+#aiJRE!$3&EY!YGlb5wyDnwdZ}1odTHf8XUgnSr zF+6*MGY=slIP!W%#fw40LQd#RpW&Yd_qg2Vh$9vh5{9wbw-LY?UrBrdLo|QrqvEnm zHuJ$E(=(6UCNelJB8ISPO@XH|B3Re4LaJ|AIudn;w7jVtG(x5BCxzjoxFz}sk75e-8XXPNna&Xk`<_#jo#`W_5K#~)vyO~AL55$<6jT#;sYJ& z4_u+6R5x0xQY~?WC@`1J-hty}@VcKz@EqTs4>AS>1U%f|1MN#oe9X)aKfBjEU<3twA9znQg8K-j#9e#TovhZ)kW$0+>tkZ z^Y-@UP8*q+KnK8GOHoMB)Ax9H;pyoqZc_03w`9&36$XNV#r9B=MU6(z*e@j-K&{QE zWkYwshXjjW>V5&?CsfijkvCO*ICU~Myr>HwrZ%KEnciKwzR_| z69}D0kIl|vqoIwhtmx|MuFTB19?n+OSk7>FJ18nn6nm%1guid~ZAAlG!;!QVbDcts zp_A;yj%(_wtMLVVc)7W8fv*7pg98H}K70@s7QVl~mz0tcSENX@IM{cF<#(@u1PDEL zi>hZfT&%p0o;~0Flsqa_d`4I6P`J0q<^A*LPY&Z~mPjx*PcSmU2md$!4$*%HDZ?gs z;sYtEc``CGa{S=dmqMrK$Gfqyu}>xrj*gT$1hvtQJ0ovkU?PSh#B#WNpLq>`*Vd{K zqn_S*p`f6^wnYR4($UbIUtg;fO~wB{JU-^nO)D>FGS~?w^1=3hqiNR4r=zK3zuyWA z1BNyh(B3s)YEC-Q)EF2U8L3|nF7JC*bhqonIU=9itk%}n`uf|&21g)s<{)jV;P`0k zshZnm+T7<-^+LAT{pyn+C*XMyP2JU(*OHm3*B$yEL@#30+lPnV?rs7BpVaJMQBkM> zv5arGSP;2(oy{+S=PN;ZLDb-v{{1*cq6gg#&}N)UT~9Y;Ks#uq0@=Hhl@lo)m#*ao zawA@v-nQ>k=eM`FVU@g~wG0;2TfMk)j?>fAZES3~(;^bVfCWzlKE(JRW1n8_u;btG{B``g z{plN2`%RPXFJFOJZ%N$}{M+r6-$$Aj5gFM2ThGtWNi3#~4GrpiQl(0cju)4E6FfXT z;(9A#)@*2-f~0Q%H$T}u-CM2LX2Z*Pv@TI>_kc&|8EsX0c~o?CP^D;WYWnfxhia)7 zJb)p3cYhD*Czf+|bv0$i3drl~p44xlxTuur5Hbh9-`UJphj=Lx zM$Y{GE3c~BYx8({eojMA|32iCcm#gKQSAanG{Je5BF5DGyvNykclQshqA80H*ud)X z@o^@BOZbPakcf!uvork1QJkZ1%dVRH89vAfo=A zkbqT)x4G0xz@M=)KJKtJ5O+}8RGOF9ZU5HAPP2}|s}wrjv$eK4+iFGJ8;c?E)r(&@ zXAJQsgsiQvrBn_HVB7a`uF4e3g9K#OA78|3mKB&c2KQAIxXeiXRFMJs{TzV<*R?s}{G1?y}p zA&z^*=RCV1khQLS;vrOWrsx(Tj6Lfv_eJZ397_?ix?#{Oc2?z+l&mfwMJR5+1ue-ZjqolU9G$Na7 zoLKsJCbzq?tgNigmCSWkCWZY8#PF{3uW#Nar=%n)f}5R$gydp-xN1v#u5x2%r$C8j zaBz@^o13C*#JX-tMN3P1!pYhBYQ6ghL}qPm{O&ig9D7&Sor}A*wKb92qMNI$678mV z>d|426|4N{rKKedQSBCwxUg(&%tPU2he7&Qy5{EQc6~mbMkne*JaApBH#+UX(arj! zO-;P9D{w7} z%|K+<)y+ItC6F&{1cLuYtxtW-gC8CuZ}CIUNgI7W%?=puc_=GSUC-yE{lpj2idB$k z(kW|O3&KM{K!|759f96=YOJlT-QV8_aU5LmrKJq#jQjQKgfCxp5`1r;4BPINXEpbf z;j4-eo*O{yX%CkH`@mvGbvp2K=x zNnRe*QOjly@NjWQ(s;z1uX}oWDl3`KWy@b$oVe3;%21Gz8K|h>5D_2e;4((Beso*Z z-0x2nv6zlP1L8g(*M(xl(IFEC-vA{l2U}ZPdwX0=OvLX(4nddR*5)fD^anIGA|U-x zphk!JqdWIkXC;ea4C-0+42;{myZ$YQ!O|7b7UG9$ zT3QIgJPzwSCDR2!8}^AHR{ULBI$B#BoA`H3PqSBs{vlp$-Dq7J4TjqtFkCrqI`NO) zQYL}q-pwM&o+CZ%rc8)?w1I+x0&#p(7kq>XyN!~0U_OL9%|^{6WN?J(fK@jR4#xLM zDxma6MPkOAcD}{)rcW}0xU|17FYQcfwoz6=$(UN)K+VyB@Eh({9i|==H z1Hj-!a`Z|sZW9x-XJSmlA!bm94W*^WI~l$d;hm8F?Pmq7J+k8B;=aBw?d`ywPOiP% z;}L41rKM#Gn<4^~~lI3NF zcOjr?T~M%Nmm)ndFcA9V2OlqQJe|6*FekpOoZM)nz_Xf;&PYW6&c#tetWk?WH^RFT z@FBOhE)Nfv6ctHPVL1>SG4auP&a02LdX z3Kb6gof;izo=rQ>P6FX#<(XM-=ZnC`zmLD8I(G;d*Fd0w31dR}P*PH&qoX4uBNH~e zkX2D(4+43YYc*;7b&9?-cbaU0Vxdyk)b_>Q5I&g$mW!9+b;^?SIg@HU@9avU&0*-BAX&GVyg1Uaq!ARoA&f#I1yf1}HG@#vSRZCG}ol=ib zRTFOyjFfmA)IQCmq@-ZcsWIgeoVOcc{!%Ggn4bspVRMU%T8fH}SNl_7AnY$F$g2Rm zcYGW#nHL@&4%(7W3?OD;C~ay=(Pk2FrCaDe+24f z+Sa;_9$%&(t&0t3s@X*fbpKC}j{vxlvx|x>=c~;@oLydCCf)U@mNfI33dqX#)v-EM zPK{LZ(rDb$fkm%O!K~J>77>BMUTVF*cDepcRRjWd$fxYt*;x?Z?(aR$p+z*2p*+Z_bK4h`b#X1QRayiXrPYb+xtUcV6R?0(6O#?BQY}+gJe5 z)aIz>(%jM#^7H!U26UaS&aX#9Lxa1U8|Q56J{=FZtKWruGj9idEX5JIMa`?*hxFI` z%(H18_tRhLq_&nFIhe(9dkDmDBBG4z>uWzhAW#^@P>Gj{0Mv%?@81DG^(vSIIg+bT zP-|9x6LvL?X)+42=}}=_Ngs*mU2{I^jiLk;YdsX5Cg}W{Z{4a-)~G!ZS-U16t)<35 z0PhY85|W#nyYG`YK-?&stj5dBE5@Rtw}g9>aStT`ue{>p5P`iJR>~L^8V75GTcHkZ zFC(^9Q^n%}uTi2xhZ$?%q35(N&h%bcE+Hilj_dj8_elD7P~G!`bJ;qmW^42Ee|-lD zfFXmmHF?W?mp#$=2pA-T&JrXa;I*@Ja&|`27C<}%vuHMFn@iCrq60Z&W}nfyA21r; zR%yHQpq8b1gSj;)5PDfmhRm$3t-*lS+B)r{VNhG!i(L~XeAm&&#a$S1>c+c$XK2K} z<-lb=rAia0tgI3wA67$4#%=pu->xpk> znM%YE1(f+a@Ln#iuT7lNyu4jqZ`LF|-BSRdmA+oSpYay{f=gnni|eq0fS5v^GESfWDe0&f@-ZPqj=(xo9dYE6bo_wv}k8+~>*T+-}7tWFFQZ6ol= zNMOK%3ZV^>&Q7*IL4;RS(bgVT@&VB+O_uUq$Y=DvzUdChd3FeQ^&d#KEFg(;>`r4MX zSJ#>GrNVSWaIeO z&l;w3ByEGK)DHBavIP?sHAeI-92^`Dx|ZhVXJ=>TW@d>Tw&_pjOfvVy%~N z3)*?L@u1YumyV7Of6hTnB_pZt{iH<=D3^ds|2oY%2xQll(=8=COy?8fhy7)RnSPo_ zXoLttC`U}OcCvP6v-52G%z+E1d1<{HA9K*Xyu4U(!!t67WG2Aa3yjbs5S?lU5D8%c zl`;wDw`Ix-Ec3~h%9Eg(%8GINJG|i5*Rk`wp>22ooPAJlCHvrMYuBLFq9agz_UT)- z^ufgzO`MH>78IDc{V8efRzF-23j+J#I~P~iAD=$NNs5}xgVF?;a^G_3r>n2%nP%+y zRSBXK3XuqRv{3_h<+>!O!GOfL9|Hgv;JEe5)D$@?9O&_aG(Uri-T3$y=H8)VmcYTS zm_cqW9+i`k4J&af3~>4XR-ze4J^=&I$;rv_ap6xRLZlM~a;9K}VH)v5QOk6IM$9He zhpF4*p-hD#Nfx88PAY|kE}PD4o}}vQ+a^ziFI48gQ<>JLK(oVp>L-to4R z?ekxY8W1NpP05Bey!bP;Y}V@!t~^Yhe{Xz}R(-kFW&@}uwX7#rrRV2sAxcXXd#@k? zr#ZBQP8^$uzLsm{q8ytwN-tc4NHO*H$K3o;NkzpO z2x_2f)YJ3hW7boPI_eOM{IT$=zj!Wx3s?l{xGZ%T4nDGYmOK*@J#KhV=bBlKMrG;< z6@5Zn+{dM(uquA$!3p23k58&|InYfnbkP!p$wk*G#rHa7chOXa@AxF0Mk z8GwpTNJt2}c4+?}?Ed~fwF-mo+^R6*?}O`)Xy>o`;#X;64B#*8)9{;E`i@IhI(U0C zZZMGyo|0XYj!QP2pGnVm=E32kr=|VTy8*iVkZuE4(ht$!4>iRoH0>L}qL{%oJE~9v z+)Z)T2;^7k5|xr=KFevAIP!Ir(g5_JzDSF6ynkbkbcMvO%;w8a{}Vxl?FKBIRB$)b z46y#GrtlCC|5Zozy*;sCWl^CXq5>O~fcbw~DS8CUCN|#YfAv$Of74&5;dE_tNuB*~ zhl}{)EGl5q@t>qBPld3nFxb?eUphc}+dq@<4$8uvm z&`I4UfZe*B^~CxNfBX}LrI}=-4VV8aqz;b}dES>H9NbR=nHK9a7BIl8q~LdatwP9G z^t zQs13^7SxhdBt;9wmW~2`d z{~2Q_f$*Dc9WIjp{+ID8&q=c(BU1EL)3g0^*{A0s0gtoEL=13ob$wUdOq`o^e$?2s zWP{Qd`br@7uZ+e0Xw=1&2ujdb1VaW-Di*!~j<1$(T}*8I3nEf0s#^a58}u z)Tz8&HQ@qJq`ftVIb)EN39w4ecQjTHnPl$+C8d$L_j$*ES|2TcPOSJql$$+C9%$%1 zjZGhfTRr{41!UXYo~~we+nf(nTr#H;52Frrd986EgrY353;HS)=BZ<663171QrLLB zZr*w#s$V=0xN7Dr&zMcIp)5Y!20y$wJx=O^cy2~jwyJp|Qzx!gMIu3+YwqqL@gXi1 zHmZE=*O7a$)VM1J@R`)G>RrjhVrb>N^*@Rjaf!-GG$5axy*$K#2gs~`3LS1Ey<@^p z_?flBube4eLDZm82mlghOo?U{3O%tp0W#k%IT-wit8!S3cc$P&kE4;!EX(VHNTY1lgf9qr{** z74x{{cRHyr2eqZv+D0z<-}9RkAR@A9rke zsegFmtZ3LR+R&d`Hzh^-bD%B7G%6vQggj>lLmUOO+a?~;R6w$>D-ef#i_zH`h^ zVXiJ~T17y!mE19hn2p}h6cV{z#0tIH;VFA&H0|MD=?e4W*?IkMN~E5^Q%N4$!N;Pw zLr$aOWpD|P1Rskyi=%c?I~+c?x~!)y1RvE*+|Tc1$V?$UdgR}XfXR0q=ZWJjeUz?V z8*RdC08mm=qf?J%s{6@Wpg2DHORMu6yTm~0uj1lg+AuBbvR(=KF`3`OnN6^@h4Xm{ z5b4i3KN405oyJ!eV5wV^py)LCpkZq+Labhj*W!*5d^eYWxuOl|NBc@V!wI6{j+_ta za)UQ^S=wm_?OxbS>#yFERB;w1NTB%oDWPT(K8ZEW{OFsN;nxx>3JCD#xdXk~V`cS3 zt3AS`ZGsYaOu|>`A4Y>)-JT33W>{ibkxF(ouXoy~b7zQ}(mCgTq>s!QOmv}s45;fn z_IRpb)RAj^J`nv8q$v#M(gHVuN5*@7)lWwhi8f}@LHJw)xdtL^v!YN6&*JUUp%I(IK-!CzksE2Dn{uVFk z1DpfWs{#6Z-LAyy5f=t96(say>4lGr`qAwY4;g* zHjr+n^+Yu;PkV{4B|WkoG~T8T;yyWRd6cOT6ch{!Jky=@p}8u#zIs|5B=pr9tn_}} zhTlI%8>A-^>Yez3Q)nST=w<~f(DXbK-yRmo8!v}T%cGU6H8Vy}VPNc1HbgU>aAPm1 zUnVn}Z&s$wOGj72?_%4F&){~?dkZAqkAWwL&@B;|zfj!3xjVnWZi|{n{NMbBE~j1Q zAYHP(c0;of4gGk3GCwAJbpOENZf>p_(5y&WyZbs?Hz@_RdF@(GGa9cc${_SKLl^!| zL=;h6&7*CEHcg8e4!?kd&|_nbiGPe81hC8bFx=t%926jXA{((>Y-l;DAkpGVMt*-9ZWo}o8*f2{r&bquP!Pyn~H{klr)L?c+&_$@+=EUxoBvRWd5VaYTeFkS@lr6CIt|KgrCPK4Sn#Ge zN-oPhvku5@ZGuN?jBC~UI~YY`#o*(fpi)1;lfN;`Cy}tK=*`~6UZcafn)uLx^u}DO zqUmUQ2aS`=+Rr2Xu!kBR`-8eHGq~z^v!zKXX%8>im;)JXk z7pEzX!CR$(2w^shk1t3dWB#i7GZ|(sm+sZKQEbsjE*UPGjQBt=m`HJGBntPS%k3@t z-FtLe*H*Oh>oJ^7G?xDS6D}bkQMCOhE@Nv6`0I9U6!7vp_w~T0GQ1>Al9ax{K;e+c zc?=bo{_^ht^@A~qj}T1O%V59VIre>N)ySQ2iQ;?+qx}s;E_RQjpZ%87V7;x1wjrk4 zWVy_N%iy(}zFL%^uCska)G{ICWK*CEV{Ju2JUL8V8eb2C%LNQP;Fn!Y#_nwj3HXs2 zCxoRc{ft8;O3VJ$Rh<2$A*AM;^nCHCw*94Ev=tVQw1P^kS9J!%YSH5Y%XMk8g zCyZL8Lk#EVPip+{dcAaa$Q1ceXT~mm3JZ7#p4$>gu8ZauHa|Teqn}HUb^MNx3D?8H zhl(-d>U<-s7ad(;06n98$W_vM`*TX1@4(q4`Nhg=tF4xpW+>~|SYO3NeDU7#{^Gq8 zKabJN!P%x?Sd!^--WS?_Uxwzpx|@24zhH)?H`{62BR58J6WpDDfSsX)8X zHY}a5*z%BCJBjQlK4YMNuTn)|sG}U`S>s!@;RXaBBx%0)(d4iBjhi+wL-KLWXo&Y= zX}{FQ@mqE4e)i0Z1K`&j{01I>SW`y>1CRR6x~67o+)y|(yFM-Rcx9p>wp9~HZ)KTw zrM_daxmW)pRUfz2p_AMo?joa)QdqQlmxSBMbudgrGlbf)lB$Ry2T=4fH8BCTUqRp_ zxj~(VC$BrS4|5VfC{wL=$Ths{$uT{XlB?BVv0R;QGqLaQ3?p;3;PvaM$QAVEDupNDv6+yDl86@tmq1`}I> zvN5Y4nSXG?%k61JrW$;gz`dL+aCdr1jh%P{KzuZ!m^|E7zK~7hO>zV)`TaAphazM( zw%qrPWRdSU!8ILsIFUZy0KwJGbp@cJq6&7vs7k?ompF$$MTDbb;7@WSC#ImDuN( zciKZr?LexT)hl6m~^VVgC$5Js;va#%Iy}!^3J`=X^;5X2mXK z37c#=F*&fVV*Shw6hlEJZt44HvUee$gtO%T6*zzd6I4O*kwq0KipIioMZt3DZE*%p zr`@P2yP`9$D%`AYyT#%O$o3Dn;(yvxz3;M$N^`&$6~IS@uZs9>Z*=#KZe+FmbpJxE z21bfaNfVI}evYQjG|P#YQwJI}4iq*QVff8RF^SwCD#Y$GP0I$>aDwsidAbe;U~#&| z?Z^3TtcEhV9QO3l6UE7`!c}&3d_VN751;xA%Q%>4-@s*L6s0U$FsxbgPTL9OtS~HG zgdr2d=kwx+RVc9>E7iLu96MqFFpGjL=Y@wLAxV<9PG{Ix^P|AYI7T#f^l+EVX$=k9 z9vMcTDD6X)ix1w$-XR<_b-mqM$0sZZdu`B}8zOgm5K)h;5SnyxR*vy}4WkAtO3<~T zyPOM4OMCR4`gSW`{C0L*AQ6&1gX$DAxDT&i}BrVsC{NBdljcr+? zJ|AxWR%JvXt#jvi;VRMG;k}(U?IZt_Oh3~kP#@8o^JJx=V3ZrzXGG496-h)<{K6+8 znRRDl-)FS5og#I@j^+xD^WLyv`WBzb*sg=-9LBr=2^%?8wM(BVcV^jF`Sz&7aQLJd z1_=2Pk@l#ktEqzyEN-q{Ex0c1NTX=qjE9sH`#;GTgVB7)b{Y>y=bxNgIX}eVG#*|0 zrGNtvKO{*iU!~BXgnhU2dd^T zl|qjvc%EI3@eqQ>;TlqG3*}jy9;ocLQJ>k%YqX=$#L;3d=ma!i{u@a29IgHMlDCO? zQ0UGCKXDE6+-_r|D4DI2F1#NMkX`VfcpF*Hlf>z|_yndF{QeY<%3bNa$UgHNgzLW# z5>a`}kG>g>1fd9Q^Xs`R=shu}z;2VLEPkY`a2Cjor-|iIF!}3$1j|$K}KjD{|PFWV@OyctC`2is7gw2Ne&X zxo~lvE4CH0lQRVUBQokgK?2BvcfM8-wEZGuPJ!+xX4jTYvEhhKpkteldJPj^Vnqw{ z@FYHT5>{=ylazk;y5EUkC(Kv|i=)QI&hD=JFcd}_ZHA~AIQBy=J^pxK`a?+xNlZjUnnD5`zp(;l$;vElsZ*9QeLr1` zm-Pf*6&1Cj+Gb!q)!AN#I4*SZpViux7F(v>ZPgWTR(xQc!zwuCq?rvLu{SRi!4E-{ z`tek{nq&+`b)dK6u@76n8Aa_Wq0XJC+<$%d&xbjNUh#w32G6k7(!hE|@JS`$k=VZQ zZTj~L3@#_MY>fyATza`){rREm3l9+aoZj@N-*M7?mS4!PKB(C_lAvdvc9l%lfL0H_ z@I&;?snSo$+8a0|1^nm|_HOKsNz3AzQ4`3XLsaKB_Gp&XeL1{dAB6q&R0=^|<E4;4g7hY?!S|-##HE_3e!sU8JZJMq%`;FtSx4}HQ23R+AEAL=nj*}*XI#LA_x4sm zr-cY$ZQ(1LA%pO1s+^UCaSyHnont@_`sQB6rv(Urj5_fAayEuJ@J{^I`Qt9Td4PYJ zG*paojd3y-twlM8aqT5Kh`ev6#+$blO2J%-hHhuklLDjzQ^?A!(WSdm%CFF z+IMT90M!}y#|3;~_icEEbfPQgV6~7W7>-y?ukrRtvEQF5G<_l4CL$qGOh*>eU0FZl z)Xy1mke3FTatm3s8dtr#%|p^0FJo6AyzixUk4U8Ny0RO^{KCRRG;MT*$I;oIDN=|X z@zT%E{kG;SK}%P}uVi^l90P7eANd%;*m3YfK5{_VH}%CrwfLizny5mQHvqV8GHgH2 z5yl6Bjy$<0!(+ejX4%tr5y4dKGK1&kN*u+<)BTU_^DG`5An*Oy)k5UUYq~7+!B-df z9_8)ra8lyRZ-;4=sSU9|!1A|Z@D0$7BkR&S>d zN}yYXEXo#DOY^$ZjcH-&@o{mlmD`JpU`a$18d!-3CV+*r1c_HK?p{UVEeB5g&}@pN znNo8V?Z^8;1aEClnKvboy5&biaaX+2Z70D*j|6~|R++%FOe^2Tz$_LfSQyKSon~`c z9Q{#`xr77-&=-QdxoZ1OA8XmroVoh9eChyn>`zGaJcM4UpKi~m4tnYnK_8VvNfMjS zLfMGgr_}xW5YtvZ;+)rcjagPiK&;;%w;VF7sHQ+8RxfHAm3O2OzT^^A!0^#QoC^9lNa_%)7SUwqpDE~ z53Gk>F+ieRRSFX2;xXOcyc>%tdymG)jnVT6e0yN(cb#E8x)OeWC;5PQbNpvxH!oB8tFaB6O(Fd@*YtCmM~mlligN@B`e}@6yAZ-_t=*r2HYB`>0#gzI&SPS?fcjQigOph(cl}Uk zuz{LdIr-pQ8aucFokEW$-20U@$oieWzgm1cNzZ)rWqTGRzwv7qq*z^G+=NL5j|KQe zRISi~FJN-+ULJ4mw#*ke-&eb-56VPW(6iAbm|$AU^>w``MTM2<`&p3i8D+~KKN51tHMEcc59|zCaCew zRb1788t+@AEpQs$H+x${7S-k-*uNkE0XGucK59zul4K^5;6ZOD6F$IZb*~X)_7bH2 z%57O?1}8|IHG?3DZ6iN^w29^o?3aosT$HYb9SN*P4D5F1aCuCegwBts_*f(ipX5}E z2*RETnziy^_T+dt$fX-9vnTm(nL>!+^qD1i08pnrjKnx8^Qtq}a1K||uKJJQEG2M; zg1`Gk>DNrLeO1hI{Z<88UKFSr2T+DBw19r7eRu9ve-48$Mo&pk`=H@1X>5S7) z+Qfh~FE<7QhkZzTh=wLEMc4J!rp!OIJ!I-I*kO`YNs4BR<16-f!g&I}-lZ?WebuUx zZmtH)KbG(MuntvS6ZDICm`&23Y+yu(3$AL0dS5m1ipyx&V{fnSaq%H7F97IY{8iET zL_Hw+8IwAYH4SN@T*wC@o71D5%A!;#%@~F<&23Az{d z05aG^Fn!lERJC&D#Kl7*qx+>u7Sz)Cv`dSqSI^Gb=yfmL?%2;IW|NQ$zck(GfUW`i zP)=s>Lum{v^Ykv|7QqN^n6}gDFUa<0EZvwdAU_i&vak?J?qWf2mzNl)n>T?eYclHG zR-;8L)^9;bGHlTR_l=tAI%V6{)fEq+dV87t9#XGlUi|co!!Nk(n?=EfQdt^=pEn$T zy>!c&!y-7R9Al{m%7?wJ8hIz0Ls&sKKuAgc@s;7hlPxje#C4~IS5>pTb zhzIk~+c^;sJ_94aQy?+&Ug@IWtP>YY-B+b|o$ygx<9H}3+BZKt7QYOj3YpmUq>8@( z`YpV&>l1Yx&7iUMoq5fFr`zw1z`cru#jtxVV&=8z)7Lc&CI44GPy(jl=60ZXCnwsK!_=~!_s@r8x?1jVaj zi%xe0ZfbmPr#_2%V?EKp>(+<;%r`)$x~aS^pEj~j=ES#vjEJ|WguhR0GaFb2>0|%B zyin5)E#(O+Y4K7Mvn2E-;atclJK&p!_%vU=CMUKmWH`&Xz8(ZOz9#Fmn(E~P9;0~L zTJG}GpUyz8$=DoYL+jvntLDpQ1t}^9uR;P+DQFO%*N$gw@-N}mF&MP!nZ`r~wXli_ z`*Pa@bC;r@=F?J8h3M2lru0gb6u=&S|3m0^7xVC>@uri`uM(wxy-M?S`UuBGr1!vv zF8C6SiN5vHD1eGP&~#MWinjUvRrX}~@mAtt*8S-J2c+}gF-#KMI>)&ckkRqRwmB$c zWjH3~Ge%qMyMHD2KaGDlkpTQi#TP;CbEQdDP)9tXeu1fTUS*;j9nP~#)o4FDK^lp9 zynD@B>0SI$);_8V%S>0U$85c@+fh`=AJB^xKg>@(5t+fXk}h;bW4(g6gcq30$U|G> zsU2!!^qKd*k*TUILqt_ih(BgNhKoTG5BARK^*!(ZY}KfLp`xymec|#5CjQ<@A;$kp zL>1%2q8nai?g?LnKcgCbu+M_I)4!_O@pb%vti5$uRbAIF45FeUAkq?>P>}9UX{3>m zF6okPQ0eY2=?3X8sZC3FcS|>%x%GLTx4!Fq?|IMJe|gWP+cFC;krt|?2b;$t>^TW1IB6V1I5PB+zt!nJJZWX!7$&8O-S-|nFkSU_hB zQ_BAGkX+qCSVT33I#wlIGa@3{UAB&#uH)?eF?gbFI%Up#vG3`4uO{_k=n9-ma%Cg! z9n~&uohnV&uWX%Ib}E$4qDz~pu)pMq4&bA*E|PDAyXghUXLb5$oQdn@udcEOydNlM z_m$)ZWntXyI8E`Ob}zL}Ymn74V^5!yiV}IZPrpy{gX4(2nxLRhrsfSW(a)`gl_<9T zy%fE+obhka!$U${Y+7`7g7@|K%w%vy0cR^Vb5Yi!DVMxirfp5_`kpul-TRx#Vd5J- zV#gZ)RN@3B=x`kFsVV*YvbXvkMtZgNV_MM)=g9-YcKf%8USvVEX>6D{p4y%`+!TC_ z?HqnzS%pa!C$0ms4=jSWf0WxM9GB9HD3dUloy0ssG3>V2=^gUYDzzC7!_dh>p`DcI^g^#%iq{6X z=6H<)Tu;Lf$pBayIXd|$qEMvCVWtUz2%2j}Yz+B2(R6?6c-Gs8ajhYfXo;9J%myaSP-Akc>t|y5&xCNZw7|Vm zH_r$W@1a#uB9Sn{#Kk2`rwR^Y;dR;|7+@4v0fC;yt_kinP|teZsgh2;pbv?~r!b@I zXasfkrn@Bq{d$W)8uDvT!P7UBRQ{By!VHbvZXeBV_+(7UzV0Q#YUbnVa)$p)W_diqmKf-(&=aR)`!xQ@mVPH& zk6y;F=D}00KgGk(qvKKQcfBJH<-nQ0@E{;H5UFd*Ig!7zUm15PdE{{$uMG@OCxgF?XhiDj1Y zcVfKzx&PmM!^W-@QnWK2C@}vZ`Yip&^7>sy{X*>wp+{QN>yOA4O?Xhq^>i$26#4WHweub}v#X z1L#F_4O@V71D2C5A(HN}YPUxS`vLG{d0Rk_vQsW8wM1(Au~sX2Kbp@t1j`tmOYl}@Az=-YhbSB~8?caO@_nRa3w9d7NQ(7k0<3?pZoOB;3c!pFul33I!t4vYZ zEhAvhA+++T^WGUz-N1(Wy4-!*mIPc2`opJQ)w3Ql58&`QmfctVuIC#c9O>2{t>guI zM7AE}a4k?f@9olXcG-8(1J{Jb5a%U*9wBQn#G)xs^7&>ZYA|T^a3(5^{@FmdodzE6 zmj;biV-m1Oe4)b!C2~7%*2Enfu7W$f%Z!MH&PmJ=kmW&n0|OOAbU>vcEKpqhtU2?k z<0H?D_747%IYOYjrP`=;O%1vm-<0&tbV$8~nP_y7s%kPINu?Hpp_S``|2kR?a&zQET15j=mRs-iC3Pze3F zEHJ$PO|xD;?-5*dQ>)U$CYh43mBI5ZeL5-B>^hujcm|a)gx}Tm{7%nx%ZS#Io@khc zY4*18eQKrnvP(xqw(vfrxfxH1ikJ*Zw`>u09dAta1^f)>W70&GyBUqoH%NZn-{SOs zFG{Uv36~JS!38|8w;`A}noXvmQ*r)Wo&>Xr0Ce$4<-s`4r{?Y^7_FAggnk4g-c;LR z=@(pLcJ&4X(SUS73uuooO6E;0_=3Q6 z9-PBz0J(ZULd(k4G2XEv^d(2|ZAEFyn_j4eWm6~!6D6nJfj-w z`JL|-EMh*$r5@45)T(OlhlG}B;h4_En~pnsCUlIbS56fYi;1fTGCFyWY4yFu)2V$P z=4Q(H{TvrA7t9S(zN=B{kb+HJJhPr}hAr=Rcyt_MT63z+i1|z0UWmW9cYfMi8G(CK zl9pu4^%x1}{7|XrB>Oi*NKpU1G!z9F0^YrUn8XM(jSSmN$z0E$2SW@V4EkE-jK{>t zdeJ z2{Gel%P5=MJP~bquXGU&S-MLl9yR->j`y}To8ohF4*CRtL>Uz&3^VdGvOSZ;Q+tEQ z+Lgf4{GL=VIOXHKj@qCY@J2W}7fwxbgSzMQ=fMxIegf09Dfp zOh=p*5UcJq>q(znU>Xqj2T$88Zq#~({Y_GJc&JHkEa-4=$9WHw><&@2_%~JG#=JX( z%`#{y!G(ENzmBa7AL3f@xbM&&4-%Ds-e-2V z_=zylPIPraLaS#rJ~xwO_z|;qB&i{cM({>o*F|WKAHY==-;Y9a8{ZbzIQ=qrP%=GR z2#Oq;{4m;y2;35&=NrYuiHWV?%R9ka?1c;UlyM8EeEBUbEKdG;_&Vo$*KwLxLFhI*2C~V+=PmujxHlcBG)Nfs-$U zS4&hTIyThDH%nHAT`ITPc{J`04V?hy$f$z>vkyKSAX^@+up zcgL&^Uaw(`85#_53=5vq3>1e?Cb ztIS0X4bS&g5}rkIaQcf$LgS#L9Cz2kWZPf4Gv{ip{qI6XcyP$rsTxLk>WLRQDv?S2Mf$2PsE1}+5J3^-m z9xc2BZ*So32Bc-RC*v1yw#}Xf-;7J{!S|}0v;2;sI4icws?y?uigqsqXr!`0j(hh7N*A5SC{w+8xs4Tmmz8~gvWFmTWJQK*9u56_og-STor41G(2yU7NO$crY&wcZtc_as zBqaSM<@>F0VJuD<(_PNRZe9$BqNg7xek~qO%(J3kJq^Ute4Rc~+?cIC-Mt5q34McQ zS&&H15Sf#dl}H`Jd5Mv9BCd&xi6J2@;PLv-@F(GubK!0U{il-*5s4;PB^T$h-5zC% zz20|z9WzFxFV8)$1jfKnuqVpLxWuFD2#&Ote~0mU?A(;0qvd%dpQ1kgQrHdNd5GNg zHo1L~yY9r#M-G0d3W^l>Z_@LfVuML<{$*XB0tHkIS;P_&OH;p2hvGF$Ng|NXhqm4C32ZvG9RwG)E!@#~H$+|^TluWwOnGRWY zk!yXKzeDK#JA^EW*bc~;o<C$|yKP$`dZWRNKCeA~+ zb z-gQ(?1pAPcn#b1cBiQ-&3>b0D&AZ!LhWO9J)SRLS4J1=s_G?*8$BlYtW@aiOXeq8` zo7XZlcb7@kz8lI(l(n)ZKX6ew-5pLHhGOs5E+EoqL#1x@d_88Jf^GL#gAk;f)Z>+b zwP%sfw{)}_iFuxX>Uf>$8(+L&+T3Vj1vZ>m)b3v?FYxK#_M4G#^4y@MYrVK#wi%At z@$=iiJo?o-yxgJeP3nn+y*}gu8n4nTIbn2m+7<&G7d@>uk~y@?S3vWrnSB4l$-q$A zWhd27n!c0N*>JvVg|^C(cx6CHhFKoHt=OPF#v_}Ahtpn%X8a0q-3vo?c5%t6LkesD z?ATHfCYr{Rb2$yq=(UqcgsCoqsKW3R^5S^2*AfSaNN|#~lDL%~?7z)`qD(=%^(H;d zbc|fONm%H31Do%6OO{o|6L6Vo*kvq6-Oo;9>&_kKTox`P(%U9PESP?n3wn;DVO<}} z2!JptU<=A>0kBi}Xl3Arb=zm|x?XA4t|@bqUeEWr86FxY-o`75gS(zKRuWi5-JdJ3 zGG_|l1K%802ooEN!>(m}l&ZKbVr`)UEt_p<^q)g~M6~*|f0gLI&rh!2==TwdqWIy~ z`<-MVAuwz9RR%QN?lI>KP;m_a&0+)5}& zpR*vWFKLTkv^K7bXL4Ds)TTWn%D*aGNWa2E4V>GbPp=0X^{{owkvmL)GW5 z4YTxRjq23ZU3dHpB(Z^kGj#}XXj88m`_%-zCQ&Y5 zhmx&!F`Mv>I(+sdoO7hZ$Hm9p=e#;gxlGlxyE^*Zl|QJJaIf?`#?XJ$-|7Abg_8Wq zH6Db$&Eqg+A(fDj)B4lfa#}C-q_MTK_q7BMQx%i9-+hRB>sNwdZKb3oM(N=FvH;3d zB~JAkGvC10juVdKdpWxJ^**`uQjLHRF}5M9AFfYk&e6Vvo!EuClg$;PNZSMl33U1K z<(vO)3=VlA7k@7E>h3lp_Wn*Sn}cos)*sIwilctmdC!{J?Arhq^GAHU;V>TjJQMvs z%Z#wz(RDw@P8=lpav7qRuH%m3aUmS5j81*J0qePJx}o<&C@u+k(F|C&k9XA(Kq&wC zi-P=-V&RL^h#cY$trzBqMA)_t>GoQY{dBxYoCy8At?P#G$WOC$^?TDR@RV=}v{HH#>RU-K!~nuQct4$7>&_}rW>umsW2 z2vXekA@_TIA@|&ZLf|=z$RxSwc_d6Z2C^9|WUpa}YHcaSzfI$dFxYx+3&%)$QE2}x zz|*RCv!Lz7uz*eP+oK~fLhrNEkZHOk$mEoKeR!sCm!1{ z`KmD-1>8M0?Cv>Dnr*krE;5`8O)orgJc7}N$QM%eFLnh;UJBM24+Lwu{myPHA9Mrb z@q6pMjDMbIbuzae>MWk{0-Mfnd2a4qx%%=m@g1REkjInq`qBDbKbbR}vp~raRFp|MRMY){W$r*3G&EGHkq?{x;w(`P}PmW_Mt>M=wnB zt=@{?z5c4`3VFpmUh-#ugT6S}S}!HlFSIRmhbpEYbwW=ZTiJ}(TtH8G$Pf16{i2<| z-zO5yeBLF48r`VL#P#9{1~xX>Kc%Rk&=(OM`{xrA^D4MABI2cIt2RAOKtKR{NaBA@ zCp@gzCoY0i&)Jd)_sO>J`p@6qKm^%nV59Wq#jo=ZkckO9Y_Sv4OASMW`*B&%aQNVo z7%cp_fy#;bYIzsa1m=WWL&Z1Iy@9BET-aB_@p~C-vpECF9F7{hZ8kz1DOckQ`kFLw zaQsc68cC_I*cs$a)cxj0ntVG~zHr^jwk7xsS#$n0RxOa=UW=BK9-fu2jUP19?j!=2 ziOSTt-!x1)xm)e-w!}VCva~!~s-tOZ51LS=(b4W_LXmmZn|~c;`OsO2Dat^j*WJyXFXe4O7e=q= zZ{*8EXd3ftlE=uO@D@}MpII+Wm6wv}tR2@G%AA`?Rz4((Ju(vDjkMVd9glg5HdN@? zT{rM`deH4`5Ro=1i;E*Y@qn^EejSHyw(R`pom8FTlcsgQ5pfVJeP%>jji~31suRgu z4Ov(&wi)Y2K0@_T**)b$QY_X7?67sVsZF=0>ftBG-rdD7|C&E7Z}h!FG3m7|Q7vpF z?H@ars4$(kSsyRfY8DaFw>(|2( euMrcn`B)fKAATpFBb-(qj9(Ny`s)`(4cZJb zQ$v0Cmhr$v7+Pc-C?0|-Qo{a~=u)&ouWt`S8xOB`dmdTNowsfov{iES5yc=T%sX$- zG|$@{K~7#_aLz#Gx{mEonhOvXgoN5XJ;2$GuiKZxRO4W-FPah{DW^RVU9Nq%_w}=uLbEVb zbU1{`sjpS2Fb0+kc(tbbTA+n&%Gsg`&cGnwIRR#8+y1ie8UJTO;WDf)2YRKJ=cey|H9AV8sH`kaU53 z)z$1YyYO+xvas!y0#S&A!-Cgn5teN{Jl_C<@jZ_yB*@!8XFKyADu#)cuC z4)_H9Lb@Rel)YsHr#LdO0LC5gP<$R>y11{IIA4OMK-ey-F>mPdXMdb8cffIA9v_5C zWL&gwJor)=fA!0K>852MW;&UsQgr?@`eN~?6GdQ=W54UoLL@{}!2&v&c5v6y8(o#e zd){8q?3!u1FjsPSgm$=r)SL3lm|_&Iu&Z|CpI!jJ`?MGm+wY`8?R1RfWFv_yq}ELX z@66SzD&n(<9V_UlH3{C>R(XGDCTtqedHPza;wZ2$lVZpeEgRQ8oa63L_BRXSD%y=v zqBda@eFsW&?QYe3l7QO^jf0rDXuPwt3hJG}&fH-IVJ>=9)LN#~wAz8CXZ$JOahwZ&XM_15NQZeCuz zSh5%@LLLzSU&7Q_1;xdL|MN_{d{DWdSy|KAs8P)w+24H2M~KsOwAf|wU9~s7)f7-J zqO_?m>AKoVfZe-K_5=R3>492aBa0Lz`GBU%9a}S()mcwcXbcDT5Fijpq@OJb3Pua# zBWq?vBvOjv3}}PC^L^2xYzYJ`$1}AMwUy9nbHIMIBpR%FBOPyMfs7-Wz#ZVB*E7*% zwW7W6{D4X2AGuSR+DH6d++!GC;WR;vdsq{MBHyZS8-^MA8{TTW`3B3k1_j_ps}Zx& zyQP+L4VU|@n#@=~pJK&S_Dd|Zez34w5Ms$P0zoo$q629**Xnk6i_Y%gpzgfs7*I(i z!LtV1Gd_=tNU6_OQoZaCQoJ|8FY-IF5SKKH2ERYQE5>w4rla8OntnD1G zZ$A1F><9j~(&fC+d?sjl5CA%bL~{AE9_B4p@?g#4LCGh)I~ZrqKHWJ8kB?+YJWYj# zJKo>cckWNcnLOpEmCBK;7mI%>qTpIL>`aa}^c%6%CB_CoW?{A=3A$wEB7Dt^6s4!HAUkx9jPDn3{6H|GzJNIR0o9JHB%IM%~YF^L{v2v|inPz;x z$4ATPb^20za{kd$ViqC-+jERybq|ZPmSDr;L3b_ixU)U~rmx?oTK9ElqHOb!t5At$ z?uPfqL;aR_H!dC%W4Er?bcy%1J9`!j-M!UDBW;-xaSqYecK^spg8;531f9My7+Mnu zvGIPpy1Wa|@U;3u(r}*D*t4RjU|fMmaXh6=8k&{aCRlzgX4tGP+K=PU;cV9#`yVn^ z==LZLr}suNjS2D{U0QCd9M3t|PX7J&(i;J}Ho7bKFsDk^=C~D>P080Y&qec9agS%- z!jRUxP8`!LR*q{EsJ@Af-;|E$=q}Tx$}bACvvHZ*Hy4G6$fE_hYN+Pn)94clJpF~z z(9(;gG#Irw`E$=3}f3@YlVe1@cw z9WQ%mSsv;h_5f<3yKd~!28icl$&UREM_NVIb@#hXnEFEP<3&wNOcGOdV?rn1Gg#{9 zUF1wAn!i={Fg^v9=CWyE*<;sf4o{(FGQ#t5dKPo6dTWUFbBQhkanUzpG&mka4AjgC>A62vwA4DP5w&GM(~WLE@OXGzFg1 z`QqvQ-7_@*d)l~yNHa~Xzvzj5ewcaaQ!V-`oy8@P2K7(XU^v_)=~+XU}q*x@7i8b&kG@7PCln zHs$nJCr4;97zt>-H-49?I`z?7NX>DXQrUKA`Rlzi9~$yqHKL!;0_F zV3A6>h#J^jQJnl0xP{U!i%KZ3+Fg2n4(Q3C;;S?jpN;hVgxG25i$cy^kE5yWqaUV@ zjZS#sj=7e(-(D4|RZ~iUK1(JhCS>yD!)^SOAStMz1$N{Y6o7^~6@h2XTu?NMw!;xY z{gR13l!p&MJ3@VZeN0Tu@=u_f9r$ErWr<{zW@fen;Pu=mJ)Iu_s{m_+qG-OX}O62z{*d56`aRehzYx}Y}lxWq||H=l;f$r!nBanlF&y2YQ!gILYe95u{T1Q@PLk)oVP z`_CEGBR~MYqz$!T<}z8YHcTbJEeaU~_&~bnBG59UHCY1?ehC1c{RhHNmqC3TWrQDa z1CmFTh7N*oG%%pG$jAu|5Wn~m2l$iOC5~fc!~xVs8`m&DFTFS9bjY33&(Y=9@Db2z zA%!?vutSoZ^tYQQ2-!@U&ipMe1`b;v*#sl4zcMYF1uK2Q!z^Z}7t>*`6K!alhV!X0 z44@_BGMHc^?))r`h>V>KN!6Hk2tXS;N~|T#@$tAR+Lr^HZXxym#M#Y`ogYhSdA2*VZP+EtYS; z`R1J$BR17zWqc-kGyn7Isav#)#@brmIDP^3c;VCwUwu{oo1(Jl8Y}A6V1V9g@hVdr zn2*3M^yUl*X(3g4?4)))v_e?NlhJ5=HCN{tP1iG6UuEB2*mXcfYXFf^30yP{VNVV> zn?q4QjE!<|C@AlEm-53g>tWH#oZz>?p7^VT)f4)n(fA@%-`WBduQtXap*tmx`cy2#xB#w97Eo4dXWfg~e0$_P2Qu3j}?`P$gqEL3e&{U?4fbMwtmt(gpA;HXJ69hSK}cYInu; zYX!9zfIy7xr8K+GP42$^RZ7D=TFIn(F;coZ;Dy8VAd<2%E{b6~qv>zz;z_2E4bj{SUP<9sRWn(e zad+Q)at#8j$ND3ejfMyVU~0=$CP(=ExVDLn(5YtL`V)*RQfplBVpq!ohFt8zxEi@7|v&DFd|!KoE@xpsTo_jhB>jh_qm7E@AR4&Bck zo@?Dh_%!J!9G7>8Dl*P~Vac%bx-vQa#Mpci?wE{bn)TRNEXVo1(CYIZYz}>=&qX6x zs}O)?&_bgzR^Kt|$(6(%x}A7ZmM4rca$vLx#mMmmw0QB{9SN)Cm-4i<|6>gO&CNOK zCA=ny=NHPMjaRSGkeiS9hZ6~3r*{$FcOu;%QwiDbE&HC&y6~a(b6%MyKNcYP+P)}t zLzQ$<&{JQZp(&B6CCdjgCIx-f&eo-{L4+xmYyVd{>5=>dpIIiw4n3`0Qco2l7=t^B zDW~%LGU||h8XIe43^tjq%P|lY*ICF<1#I3P*`WlUEmp9r)_X=xnZ0O+Qp@xsH5o`k zck&v{Tiva5^S$O`k!pe5X;fOsXX&f5 z2gvLi3HKa(K4~HRN6dBHx)CK`Kv^bbp?MnxfK#k|N`B=S*GlZrn`gIjmhH6T5xNEn z+mZP+arpB5YwRIA--8U&%-yjTa)6X2n{1sk{VGc^Gi{JMWLlIXm$6u-GXF|;^$#nW z&ixq3Tp9gQt%_Ex9HDg@xMKlE$M9PmfbnPqtY1Bh(e@by6Gtd6b z%pg6$Gy3*!{(CWwu`VeESkmC)hz)vjZ`-~a)}P%;Sc%i2A!`&Eh%Rud2>e5iJ3PSz z)PvTVoYCN1?tcrzdBgN5oAbuA{aX#HeNHWT+qhD}$5p|80l_xGSq>g+I(TS%^E{@& z*)UUu+mSj~Z@4v)E><1zJch|%x69C@nVei&O2y^z(@$OReyflx6)l#pQ~I`gU9*Y| zb8*M8IS+OQctu~GhbXSwJ&NOoJwUf&x8Fx0rpk9VM!y|zaxQGMP6t$Xk}G>Dv3aY` zMzo5PZ`bGsd7W*=3|BJoSH$fv|M;(c}^SPkb+2pgQMwRcYo_wxy~ z&+qZIj3InJOE1f8eOo()z?M?0S@NKDVv&Jrzenfzx@$-#&LZ|)7 zc1$5;N}UN#&m}Z0`;XaDu|X0MlY*-f$G4&P+WYEl58aU zcy?P)^L)?$USR9KNvzUPR>m3}SEo=%pp*Z~fwQ9>zmfAm0%YE93Fb#|Dp9ZuwlS?} zv%B;=t2Q;^+FM_SyJ|naYn+G4!~GBdY`WS*-68UM2^DYGK(lwZ6BPf_^;Q`WvocG< z8%k1V4538<|G8}dg48^7)-8Zvj^>I-7}wTo`%j%6Fsfv33FkXg>Y z9I=W#Qk~464y+epZ=(vH%a;#E%~qJ?ecuwyFV5z4ZcAx$E^W4cJW*q$HQC@dv4>e( z?`bd?^TJ!*{@MGH?F2o|oa)RAZ~2I7WT4;|e^rgF&(wn5DIND*$Rc(;Q@`qcHl_DW zzWMUW4FIh#tN#I7)Bl3j_U@b5ryQEZJFpdbqJI5r(Q55O@kL%l*hXI}CkP-~bh$gD)e4i6x?YTlb1fH8WFC|BDei zYL{g|Q97>DH64OCy{RtJMaP(PS2AFLX};LCFVwuitdiEA_%=jVS}aHy%&LN|wLok-&0S-a zn1)>Iw)sG8gjI#UWYB?|Gt2H1hWZw~<*y zEu90>ilj>fXt^G#gzX-($=LMec+kY-iSleYc>RLlYK2TsF0sYVDTxb}rdBoQl{bKU zN{P{T8^Tdc$Tvbv0oXdl#QRhAw;OETF9r zRE+#z5Volm1NyyH=AHF13+}xQk;@~onwT-|&p7dSD0 zhicC0;nbW2djVR>q<6&747KsqlV_Lf>*a@CNZ43FTM3nchW?lY-|fhuLWYQ{BjO-{ zT$EjhI;DSH{=h|;p6O2-p4(JF-<9E2Ihlhvekf}AtW&&zo|w8+utT4*7>5|A01_fO zjh0J@Ojg^;_{p(3po9_sXOuoHvPVgG=X~gLpdl)hxIb}C zO9=+#pG0BzM&iJl7icv^Aia&xYlvgi-Z37DrvGk$0_DvzO;CEQC?5%`1Omkoxd0 zyU3c8LIEC*F&0>bICv)RjLa#}(E0;n3wQ8yZ)XkfT^E0<)J2lkT^5%m8iySIq;a9! zUC31P{sYc|;m@olqeD`=z+svzUC4TQIOI$Dd`UAUj2Skoz_p%27|_ngARpOGv4EqG zhOy@V(dA>c=SHRIt-L@tRO~buuU7AV`wA_(am=I34zt;Lg#@i%r<8GD@u*{^-8-oIY7Enk|(H+a#DAZ5vOx~Fx(af#}T{4CjgHFqVNgTb#o{-f1{KN_eh z)gZK|TWk6F@{b6bDc`YLpswL6EcG>87>cVeKOrkhLZGUf(|#VHyU#O+B7ZQjia-jZ zoS(T!T5E_GkjGflrta%Jh9iQR{Pu13#tK+-wB9w~Xr6TLlyA73>|@99SPcf`K-A9r zOb=4IT9E?-?W+bz(mBcpwiSql&sJTPmyvV+sew|AB_=I%jiP;Kt#vxwj}8Jp9L#VK(z%Molul=nj3z`8O+ZEY(3sc`!685`2qh<$ZR0JJAvGS{rChh@*J%JJusmde2D(+{rgnQh~n!OYhW0ojYjhYZXB$={aWTAonPQA!&} zVM8`sKfTm*d3)Gxp<7v7j|&6d58O`>Nc-m}@WC+3U=N9)Qj4AMM|qaLp~POegZmra zn$Pb1DvJMYxVwxkgF_bPjwD&{&+Z+yFM2#7 z^*m3SN^^Xx@O|yKmJr^y#Jj)wR;nQe*Srw zrPxHB&*e%2cuw~l4_w8EmP|>jaVM+N-t9aIyuBb#1HhITI5pv9HGv=AnXT@>kB9SE zWnTY^k`gA9e7%^Y#JuGQ4|k*m9^do9%3Gdyg-8};13vUsUSG3c4l#nJBXZp`={6o;w4Fl9!$Mvh- zb4-H-$15z7<+&O~E;vc-58VGUpn7cb(fS|%rpyv%YrZ@_xYbZTKi+FLyW1$Pu6HA+ zTS)IeiU=?mVEJqAcc#549NulDW59?+;uydL+G{zY*uYF0m$rn$a0yM6nsl*fA#_7N zl}l`d`BN;g-JLPNw$ENHr<^x17BzK~Z@3$3oNDnj2)#AA5MDrKv}9wDOBGAQ4N<6MT(6eW zII`h!-jv}{7y0EWlU-)M5alPpr&*jnWtHO5k{L471Sx|Bd8(_vzGG0+T1k4EbBgPQ%Y}bQ?g#Rtx=dcXD`ncX-WWx$|utkkp#DIpoDrW zUz5W$fbbkn`vzR-zoZn+9$hL;rji?FHjbGjdDf%-)}8xXOp=%P8uZHKQw>cQS@M97 z{#YKR^(iLj=OZl}B26*>S{IhRr=z3MVv+U0szVgII3lsY{7D%~-aH~;m}naZ3Imgw zvaDdnpj~G~U{cE=LW&@m5QXEHmUJ`vr(?ADzbRLK2RQm)=KjBOpBI$N)j_rsRI@@@*&I7Z+t4xRKRfgW24kw35ju-T7Sv=y!lN8$sl0XJVv&;xK z3toPM6?v=*$iyW-KZfx!8=o2>3O(D6B2I(_aDa&ULK9D5Ki~PRjp=ydPz*SK($sJ< z73>*M+bIa(JxnS4aXdMKAR1Fra9dIKTU0}NYRH#o!Szj`#v5SHJ7v*%$(>rL)$G1A zUeps25)zV-kl;VcVd5MY7Pyn!Wkrwv{{#a4I}eMx!)>}ugQ#Ie6=7r(fC}ZX>MExW4-PI*%F5^; zDZ-eUEp;sF^d-;dC7B6Ax6|&lf&+|L+M3U8 z_iSAbwqK!#`{EiSx}_s>x?4_~QFNq2LNYCm>v3q#4ECthmMh{)TC(H7X*9>nX)u499P!xb<> z6nhu6TR`Y$t0-^A2d?r)0vvl)wt5$X5b({8j!?oKON*}Q^TIjozkZslv+EJi4?bkv ztK!^y0JkY<5Pd<7;H;4Ty{6={WjBFV$p{hye0fm zUZBx5pA%14nu1#$FMdIK-MIY7;z-d^{NnQ1ubrI^pT~Z86FesgUwmqgY-6)b80{8b=R4AylIE5**rr3|6?pP_qe(!HQa2w`C44eN? zhP3=UFk92>>YTN;`PG{KCnX)2fpBnNzJ2=z3;^K#&1nGLpFN|^KoFA$g(6@NxW{H@ z)KpYB#u~pE(_sa!)jb6-0QNWkd5L5^sbwF)OxV_3Re*`STNVki-DE4duglE^X+u^z z<*O~sb!pVk&el?bF`rVUPVl(Y8S3S~fvffUg%TF?R|sD(MJ)37sEyq9zJ&B9U)kzVxpU7q@sEmp3|I2uN9;P zV<<CZ-)ApIM22RmMX(+wtv7{{Eef_!T|kY zF-B0HG=)`|>-rTHOEufe_tDuD%UavecC3UMNZlIv`K4#rlga6xp6)d3h(|whrc=M% z-yVw@HCndwPc+e#NT>}6+je`=D`_4wZWVOT6d9MXP($t{{x7y1cFzeIzz3|yCC4s5 z))Tit)*0|tFQ}A=!oV2_bTEcnzwf}FjRS!|-u9{8!z3wPv!{Qzw}9;|?*i2Grv=ow z*NOCk7}l%b*!8c2LlmDH=-aq==p`CRk-)acFddq#4LnTN0c7`wk$ssjAZ%+!aQM3VYE;!|3u9HFdU_Ftlw!!?5T=E24k*y_}lBv}^m@k@aD?@nUSQ6eTI}MM$yHTy3xj=Hl}fT}6Rq1mnk<;b|3STcnkdzJ_kLd-tKH&;*@l(QlGWdqrwxXhtt{ml9Wf_uRc)%*LOU6Y$$ znn>aOe4WY+BBdM3#o4iRz*}7koKZ*V{~vCxSK#?zfXXnC?G-8$*f?pV%he2(#MQ9s zpWw(f?~S>jhC`G4n6Qiuw!REFtMyF(+1BWPLe-PurgJ#Wm{v}cRHd_*;F{bP@h-J8 zc?mmyt=qYEqL7QY#9jD`j@!C78Sg(}?zM1puc8QWeQ5%&^9YQP3r=6ws+k)(x^B|z)fSxs2g>55 z;W0TyRJ~TqsL&Klok};CKKy7XH9tqd+*_0x zVmBRYaEzD?&jko(1P)vBRhAO5bMM~Moza-}+flbM;LpqV+98sP{a>wp1yoes+W#Ob zDhQ&4h=c=zfRcjJsB}tqBOTHm22#=;f=UmE>p5R%R9J?~%sNTa<6BY~!Xhhf!WGfRY3$tEv*<;hB=6yq&{n6h6#m`nBo6<0-CO z1iMOt2FxI&ZTti5tPBn*DXCylLkWohOlb@r*rfVyi~ayUE5k+I!WEtZGK1#o*FM?r zz#_H)Svt1drvi@23HdB{^#bqd@(Sf`ty?dskRs9Feu@>8v)qN);eVl^miR|{Z97u` zju22<5f$xAdgZGqRMRxpttVG!ags1$*?$2X)J527vEuBoE(snkyEgeclR=d<%_|UA zW}wlsuL>}ktXM>BK&K=>-KsHU*jSHYk7C>oqQ8a(p}VHqik${Myu-Kfc?LhblDwA` zvP~t5f-pSji!~#;PX}80(fn2cu@dj@Dw6}(om9K~%}*BrcegRnzv;*YIs=4%)E=Nl@%$LKNIa(BuLgNIB2|PH9?F{7gQNbf z3!$W-WJ2D1<);Nk94kt*UvS*B$#HIGNmaCrFq?-!jyLC@_!K$Zid-RLj4WcL97BIR zN^h|)G0(QsH;C*2mVV^LE86)|uzC7NT8lTCuj(U?gS5I3VVlUZsu zz`v9v&m*Ryb8&vM>a?T2av4Gd1*a=r)P2`-S1C<#abkUKd{!AG_b1i4yk7tw*mDvm zNb60E)_LDmy!jwt_@?~|Gq-x8vifJYgmPm{Mor;&@S+DvBZ>=;FWUN0eRhG8HC@rM z%@fKK1jbJwg~>G;Bt}C%3*7_qXPnKRu5G;&#If?sA36usXC0TvV1POD0_C%U#pb_(Q0XDup9o=XM{c>^;fNoaAlc!N_# zRL}(AxoHi)9WOuNY)P$Z8e3VA=paog$9ay)VDj!uAOZf8f2+zyns`lEF*)R=KL9BT zKUeR@2#F<-S=N~#6kp!u)NGU)pZJJSc=vcO*DWE#7^qB3owVwwpkm!<-ZyOtJhKOw zXZBls@BNFqMa2)z7z)x1_mh?WyzzuQ++jiML`mMhawe>O?w;8<8R6+-**B&|k*9!_ z{EI4IgdxAAY z=pF|5V|p|=+l6;_TOPN&2r4$}6xc7Ku*|ZA9#vTWbBF$iz zlz3Mhb{kU2H7X#*cSvlaWXyP!%CMi!^DkmS`hb>*!=EA3z=DWk)Z)E5lW3EwTRT&4 zyJ5Wgc}e$F`C?Q{j*lamD6RVV2ME7ET{#@!%>4E!5{U(NSqAbzxF0v8AMWgo(+QH4 zua&J4tvT(`9)8Q<5_>#Lb^=}r8xEP_w`k;rfahf))SNlki19ZeZbPUpYKz2-;vSOh z9}K*i5J=>8aNog)Wln4lk?3ay_DJZQ5vm2EIS@7inwj0+rNT^)BdQOgZi+ zeBmk*ZjO^BnXKR7h?W5kYbuzJG&cYUvYZ8AHBI^(3#F)A{n6uqueRe2xWlrrcG+hn zv|9#_U^QJ$^DoU{4C1>$;3#gtfri?T6pHX*O(s1^Q;MeDT&F9{tfNoM;?7U@0>gkr z>!0j=K4icp`8Ct772Kn5`~D@pqQ#=WIHtZ)=g3JBb5Q(7_B|-`heU!qeWKt4Vy-Y6 z`P+L6mGMzD7MiKCeAfk@)hslcuOR0(niKgJ*phf5KFc5fIrI6im8jf4yML2TbzA(> z|3MbjU0_!J;Uk0Rhbd^B$zF#Dc`c(*pH`TK&H|eZ02Axe3l={urkq6b4_$d%5Qr_t zwf^lgqW4a}J0xL&9yCvutsNp?$EsA(<{Ew#=fj0?kYL1btHb75Vawy|+c}%->m3m_ z7lg2Y!D)Tpnc`}!4Dn&`1#gI~x{ELr^|m`9s_XvT&Hk3GjCDuVow5NA^mC7fGhur& z>l__9wsd&jv(vkfYsAlaYt?+UGPwMn%2UyDzcU}{m(B(G`ca=B&6|7fVZu>uN7|sx zN6TH1#t(pWn$7bnke$>#teEaLJa7XE<&1AE*;5hgOp+RnVOgi z??%hK>1xxJ!8@Qz;WvN_{UQjB1-v1Hghj@fQ?c)-<7^ECXB_My7B6!?cHC94V%cc` zChiPMV_k`AuHkv1_eJogcakweUdBkX>JG36hPeYifI@id2k!T(Eppt31_}}#E_AL; z+mz-iQb&mP?G-EKm~Ddi%ktiWP$g@s6;PZ+Iq6w%oSnt0V#EcT*CD=mKoYOJ$|i!s zmu8%9F7E-U?F+6~EI}Rg>$@#Yf>=xNj932vbxBbfS0DYtdpY;v>DkZDVyb@_4y82U z_&k5J%L>UJ0fy8ub`yhv_y`E)l?_YWtoF?3Ot!KeHD~e*C`#Nd$6&nKYH4|OF)Lt) zu{U*DznGQZU%zxKwsex+hr18}rhusYAwKofSp65ktB(MC)@QF@m;;+5=-j1bwFN~< zg#ST%9nV#i+&5wAN9 zwwfr*AaNA}tes+E&2)uP8^Qj-U^I@Y$pr>RJ{h!vI)0%R+$8mPpijQ4no|}+!uMic2vTLk>%5O+I1>$C3 zOl*|X4ynclc1HuYPm|hx0~az!3@ld({0h$qi1H1TX*>fNAw z5Ev&XjeGaIgG>@8k7;PkAJe~Osk4E8aL$_DeT`DVQ`rAkZT%}NqRP3jQ?3kADCtPa>e;$j(zp?vBsxJ8P^D4Zm(j* z8MDU+5N8%3%a6c(Xu)nK$v|Buul(T^P~EW2`|JAnQ$2oWNt1NDV`rOp17ww2GY<%t zx$#c4DM)z;%1lCctgs-zfKvV-{e4ATKp^aKfp!Pd8z(=r+ggNw&wf1r%-@?^KTQcW$`iKol{y>e4TL8qi9aLMhjgRPj75nJZKh*U`97 zdF+0hSob7dx~-fg3?`+BD5q8)`;AOe0D;^X@fx9WLy+tp${hzKcmG|l0{iu&j{jFz zrH{aqNb5T0LCQ>6dF9uAR+PS-v+}N7DxtV3(4umN#uubP5_0dRjWzmS(FY_a{- z!H4J{<{85m24;dF=TUk|i8HJMa)j%LBaQoarvU}>4|rKey#4YJY*QU;-n%{DE;f2N z610jTrgwXA`Q;wbLy-qn_jRX408hO$z-Jb2y1YQDf;w`WDbqRzeCZBdk1NC{|GB9j z*|df3NkZ|apCDR)fphIz<>8WD6?HD&q=oxX8`b3-{aAW13?Syf(eR40+a!R5iD4}2 z_uVgkF@1S(Z-P1s;156N?I6-BV6(2;>|N-TGE@E8WVmu4M`K;L!01QB{VOMsF!~!v z{S3Vy&6TH>h%Ub+q4rR(JVxE}qiC>|H03fBpe_cC`OTgWwbqfWa6%=lctId(7z;BC z?hM1u%W|Fy*jVi>q$>`9twf}!+ih5BJ}$dkn{{ZedSuP7O3dzK|02v4Ja#A`dXo2w zUQCmpRzJS8Gqk>@&LkkscazB-mbu8#r=2!I0@1tnw}8nW1(5(HXqaA1nII9|)}^)) z;QWQZCv2Y%mD#9KnE;%*HWuJn!@{mZFmsOdmjmncn0y^b!QXgL;l0p1NB2h!0QoG||Om!qS zsI{}CrTTFG_;`LpmwRU@eu^KB`D6Pmn#1O3sw5U3b^zBp+#{{gs&Oi7JyB&ow#ijn z_dekW9fEU)K*#GJoj2jSgB z$%D!A+xC%y3m$( zN$=%sd@6_jN)+DNkeQUtRB_3Py zQJSo=TQI1%E}7pKqdc3?wAFo`7(bHnyu^C4VjPOR>lS$Z;rYkP*wTA8WuB;5s_Fyh zlA`Uz8n5%1rOrI9GN`&(yQ;_5Afy*r4~q>!%&Lx=GyjicA{em8tXl zh|ozM!*TYo9`;){}5^^B*$s2qKkax1OGT zB@Sp%x7H=sj2V$HcoI=W;^XUc3B*#QeL>W)R!J=kNBZHQClZ#lc+bm(tA4Zw{$qC|UpSXHX?NZ1JXr}2i5D)y zj=bhj6#VoPjTM=c|L&fFMRl5vd9h4>@w8#fF0=HI!i0E*t}-}IgZcL*W*tONWewji zyX!iuPVf6ZUQ8U(@q73jjB+&z72fQ5awmP!@^Yc4wcC%6LSl(6qofiqHFthEnQ=cY z+{1yGJp*T6!JK)WYwWV&ikr5ivR_Fmqwy)X*_TOiv1t8V{vS|J4YvRbp3kb+Sa!r> zJG6DIzM{hGNZjYl4(pd3!`a-yMPhzTM{e#vExSM48|Hp#EdG*jXY?@4p(y(}ID2_p zRE%(^8N0c6c~@BOU`?ZsjgwwKv&`cq|e_JN1>lXm6pp<HFO21rtWhw}nv%yw(R=&hG!&0~PZpLa-upMdjXFuu&8+V-^u$7FQjA;hRS->5K z{Kd~HTXN*ggN`!iH_FIE9cYkmqM-3P>3R2FF^l44$?;*bgb% z2^t|er!Y_IX$WeHJ2i4%s8TC zX9wcQPyWNo^q$jmG8-oaq^fQ!8I^m?Zt$u?QDJER{)hF_z#&fJiR-=B9iN?>&KW*? z0X8}m=I#3kp63>&CD~oee2ezN{g`I~(p9M!3~2&L=}3mwEvU>^uUzCoitY}y3A1Eh z;(@KC$t4!4$R5G6zgwAp`$%C6UZviTmBUVpelpbD$GYVGgI7QjVf3%Yq)F!9`3-Zn zF28(0v|Ywzpj*K8iNKd{=JB_hjUJP&-tJ36$Qvl3Ym+*1uUw`|C@I77$Oncy4c8yj zKN=Y2dMw#p_b&X%)z~e-No6@;)M|r@Vt}siO(Flg?5P4PM~S&ekx1v8a78@P0V7Hiqh!FFPcZ_u0QA33p+mDW}~8}_On zkKY*}NTr^vZnob2N&!-nRO?4=DQWUXPwlx@J)R$LWX3>bR%R|Ka8YK?|V_v zZgVhs087=@dP|@`TZrzV!>I4JJ3pnIwe@!b>T^2YQImJ>kNuJ=PjwG;T zcam+~$9?pz_rd~DDSv9tI_fcGKIA(!0mLW!1|XZ_uJz*o^T+QmC>NfvvWBgs1B&2B zUgiGwklR66YX(jAB3`ytWLGmOd1D^P_oW*sH6kYzGFr`Lcd7RWyxb|@ zTU=Q9!iHAl%C5*pEmq6AA{n|AqGxOPj8c3a*>rY~VXP=y`ol4cj+AZ%HasOzAls{J zafj^{PMD}LZ`j+IHO{e;;oF6tKYeJ{YK7_*!!1~Bf}<=wk2JIbW^3PIhfHJ&3(KOM zp5o(~UNgvZ&#a3AqtuiWAWrp`AjW zV)m%Nu*$Su3Yn%Eq!QrCvneYCB|T#2%n2dK-omHG@5QJ6LSG@!KV;lHeS#Y7KHBAU z3~+}H+o$woj$yOVU!VM{{3^hAP|otE6_Zz~v(@Dkt?}ECS|64gefiSWgK>i+(m-T;~m^q(0nkO9{&=(;)ju_k-+-5XHoh z!{jTmDuRo=(2$8e{1UHu`$6art{>OmKbcwnB)b@lrG`fYXsW%W4Q#eGCIw|zbRD`8 z>3*=z?}a{0x{e<=-t~!>0Bp_h5O7hCSXffvTfjyG3qDzDOOuZdb{13-{%DJ?&unLo znp)j*v9q_2eWYoeueN@b=>g_YD|ayS^77Kr(UHX*T@m-Ch(z?C0nStL9&n6UiN6B> zUQwT%;znvwkwdkg&qGc=K1+ngqC1h==G!{Gj0ymC{#n+6R%FzPoqkFd>pX-4N;e7? zB6LUegX?fj%T1Gs>5o%Fmok7Mq>~?AR|N+CBq_OE-LE3|D8em!G$!Vae)6Eh2e7~F z0|z%hrBYAKhw1KfPt3M zwL2*PYOyi-{yAJK+pY|@OLCLE@%dm)OM!KFvLi`*ve)v|E$y@?eE5_)nJm*A%PB44 z^#lG+dN#Y<`fm3Jh^$%(~>sgz%jW_zUE@H zDC5|{V4(j9(E6F<1=Ux=MyN@O1LHSbuus(edJPqwn*d zRfTDLdP#J`N=Q{dnEafa{GqaZi~PNW+OX35%=y#v@!Z(ap!7sX7o$79_|hV%YJf$C z2*ZFCs93^XLROa`^8nzGl_z?Y`1k|qoK@$^-t%--I_-2h%Nq-NR>wmj>zBb)^U;NC zJ-8M;p4PppbED#Z($g-tsiTq1oaKDhz?gEi@Utr^RR{|=u9{0cBw7x%V9l7Py>3vK zwTw5I=AqF~cFl1mwBej-C}ZbKMj6>%l1Ik>(4j!7rpd2K@4tUQzFqb@wWG~4ZYl~RZFMDjTnM%}Uo)NO`ahT{QbGLZ#?Ar}Wi?e-`w z8I}|4^;h4~G|?*~a#Sjr-Q`j-5EpeT#9q6VxrJg{r9YdZ!OKl-ye{_?mD`kgU99L} z!?yA`O)iHiX)CY@z%R^XXB8?6Jau#Z#ZjV}A3t6aUTca@E{9dnJG`2`oaisEXGyyq z@TKdPzyJlVysu`E3IBJRzr|3_hcBI}t$^e^S$4)M?WI{Jc5Rm{rYuZZWrX_Dy0~b+ zOTzbkelMj0x_{rI|LA2ajcmj53BD%@)u|RF?RqbM+8eNHYpU4!f(YcAs;ZJ{l~rT? z{Ty9xUDK)3%5P?b)}>UsasOBaZ&tv$DNFEyihI68A%18F@Yp24TVi5}9dDTODk+It zvndY1tO$Nbuz!;z{Ar}t%dvTzSn&$WG>+f|l9D2xha^Ee=Ch#D?O6@aDgmdTD023l@i@%O6{cW!pcp2$KXR|1{568@hi!IC93Ht%JoL z03a)nB!>Oo)9F+#**0}A5)%2|$f>R;`BnJp?$4l4T9p(k>=A&cNq=`WJiF>*-sun$!rLeNmwsv9v|JkMn@d@NL}a0_2pp6KC8+2TiM8{k z4P)j!i20*_-kA_fl#R_J0jsA;RoCZ%6pRgs)wO}kK|4P2{ z_N=$HSW18JcolDm+|TynvBoYGTbDuguJ@*K&M4z2S_@Ryk6Q{l;kHM5`Bu zuPg)n#b3?-kn&V$asDa&z-7;_=}wOSMepsEd0IFa?qr-e_3X16s;RG&hmYM4yrmqJ z!YPWzae4z`6M3D1w9ldfjrt02wa}ac%jH^1TE$eIeKdHc> zzfpl9Z+=sOBy)cn??3FgIAhpr)77=H*@MLnTDP}3O$O?*XjQ|LgEY5Gt+d6xSQ4WN zEPKI>R!#J`x~vmz-TP0lc;HfIO#8Z$iU+Olua#_g+&Wna^Njmly}nijYH+Z3TH!0x z?wb(Ch5#0wSd|q=2FVUH*54E)Lts03cGOo5%MR<*#mW zhQaq&4yiDhd5S&8aPe+%dc;(e09Sa*vS0RHFQbT@J;hxH0WxPV_dfG{)UZ>wr);+6 zft=kg@503I5{o?|x8cuQfT*cL92QN#-aq3HQBB!3bM)=k4tD}tnK&ACVlEE0ceRBtFWo5^QrvOZTnh5LdhmRgr+0Kg2NZC}Lc5lm+75sz0ez(Ex7P3t18spRTD}7Garsi&BZ+HOz}`3H z#1?+55yzNyIgfub>yA3HRq1JRgZP?M+5J#nvoHR5#YI0P07->nA3d^FD+NY;5@W<` zF-AQ6cO&js_zxq#{>z9n;C>ADR}^d*9IBk+e!3zj{{X5m>QyjGqI-oS`?bZ^HykG; z{UYjLG5#~(D5I7XM zCXrhx5(WC>?I&IL_rKV+k0*LfU#Bi7mT5>$g!V8}m4)7Q0_iZhn0I>*r^%cp#(HQv zockA~A*rYq%!AQTD*($(m90o5BEQBTe3qvXPUH(!P-icfktb@JROlNPDM-|n3DVTS z;8<70Q|lqhN!>-$M`tRL%4r$>nZvJWDA?a@Ah5FsoU+YTwc-JWK;G45Gy5XGRV{UO zxZ$xm&kI}JCcnC@&PK zvbGjGJ%kAJ{t;?guLK8gFTt3~MQi3GrTZ(!i+_ZDCua zZ3hm4a8+Iz)3A<1r$1n6|VwoFd)@gY^JRU9Gblq)Wuz%X-@CoT$zm5xYQu$iT6j~*Gu7&zbW59-Bki%Q2`QOV{p!n zY34#{CBtOv#GNO9qhv843B#u{jGIwenngx#wa-i7&bnytCyUkq{{~5K<(6I-J`)K` zKz}a^)2pew%hbc|zZ+@|t664$R7m zuIV2je-gb^wJ(dh@znEwTv5MyS*mVsne2;rAA_ayS?jYm1{4)#1~`wo$_Jt|M)29` z{sD=3*DIa=9uogVU4b*=bnTn+t^iy{9Lz`a`}lg2!HH^{EAxSzDuh?h<_6m(bV|5B z9h5PNo<7S*{^q&?@*?eJg`1M*Oi12aj8Od!p>M0en50BYe3?WuI>1XlS=ufMs*Vsy zWa*|aHngZ7P`$})>$=B7gZzmCt5_mqAEE7eJT^`jd=+;ac-i4r4s6(Q8nX+^{WCEt zeoY3pI*&pU5q<~5+!{eOgGR*J%e%{t7;o>Tu(0x=eKmn_Knx7Vcc$lMfU0sopcM4- z=(>y}ZN1p_$q%1`JqDzu#>B>UXLK%85zIO=ST&uM!ky_KHP$z8v5E)jv8rikxXm^P zH^xr792kl;-fm&>C|`SiR7Dv||Ky4DXu&H`-;wABKsmcWOkC2{{=&qYMiA`oI}ZtFRj;BmAKm9?*&i zI(?y_qC(I;WF%VlW?&@|0qQA)=|;e zE)>dXB`_5~#7<_HA|BD6568dTvp#E)YknDjO(4C*%#;|SfZ+>);|qgr)ujc3#}IIF zlFWskx?nkA{b8vFH8m(2P^=J;O7SwVqAa3SCk#hNK9Fmzp1 zwAqATjS34?VF=kg=>~EB;_nZGEqYM->+6QY+GYtB=!YgNoHw>+TNW)}*UmYukGn4Q z+%p8}_BO7rM;^iSRYfVySI;f+Av+I#gH8rVKd2d=-I`liVAd?| zFvuUjrScMUe0NyxL!;54Wn9v)0~Fsq2&{k07xwA0Y^h(`H%Hzwe7yt^UXp|utZ zHA3geVT6`D zH+2B{0*+2f$rmi4hnTzRuxt}}{aL`S9_BSX;rU$Gm&%2^U{?SLal)3OkIGXo8R5L( z)xsS>5`Se`vmnNz?uvDOUKNO6pcL{j8w6wTkCiW!MW z8@#pJ^w<+MpSwrP>*D}I0C6nX^w1nMBuoGk(J(%|s_7L^B6Jy0gLe}hvZ)}(!KQwr zzr}SSdIGlpj)VTqS2v3ev$*J&dminwmBP^$A%Z`!|ICE28{QQQ<$i6wJ32 z$L?bg$n{SW!q1fcj2r*c8PdLyQ+kY`8Nv?#MM!B7_}y2#agtvtj0?e!{+a^)|D>*e z5!CmP`qqmY*Klz)yP9GK?ovEa43#*Ro0uNQzg+7xBrrZblrF>EZ0>7*~N zu{(7;&r@!GK66)1+TSTox1pL;jG)V`sM9m_awxy$r<4#ZqpM#jf_xl@t7lA7B>Xk3 zmdjboy}a_$zb`D6rE*Re*q(mT?;>aD%ah=w>e31o?Tv+|j(R+w^e7&Gnq{hA^yahI zbdg&&x7%a1bvJ@&2sC(Hik|f&JaFbVsbt(XRu_c;qM_yM_v+K=#w_hAkQxPwhTt^? zr@}^orwfHR^KmN0Wt(K&8C7Qsg;TurP`kWzv_k_i3L5XBk$gnijffJ|M7Los(yiH^ zSz1U)on0LR187saZw1=&3uw4hd3tJv_OHyxB?%Bd^0wcdHXMeRz~$IKN}MrH=fNu< zNC+H3#0kKSHXiS*2JTS@_0abw$_WR75k~Tqp#@$IPOjgknR0}^`R?2%B_sG~-al1e zU*AbT>B0M8b4nI}4_m1? za_=*{I9Od-rj<`He@Q#u9`d8Ym22z%#HqEnusqx>QdHxk5;<`qbPNo(v8h_k&0#|-=ZIfbeH!Q`-*?@_er)!5pNS>Jn)xB-5S)1ZDxz%v`1+V(Nv}*! ztZH$}h?bg~+Tq8?mU6aM^{gr=WTvjNiwd49zY2Pv!xtR$pr9A30sLQHcHg<2bZxwh51sb<6V6a>lPw0k`PA zPFHokcYDRms0J%R@NJp2=CBF0p*1O|0g9}kHOJ<3Wo~eaIoAu#(Y_JCk)PJGr&)8J zVuN07e1ANbN+7*jpV|^Kq4;uh*!y%i~=Lge%x??5q@835MYR)}BG;_7A zS8P;grg$Cyta}%~?(dF*go&KZHlyyxxMK!Te@hZxb5buR_3!}Q5-D_6s9cQsx{@F|eKlAQqzDV&uw2j%F|h z;TxZ|dL>TnVP*}GTjcYNBmC;=qZHg6?wgOJM3XOt4tT8FKRPwraBcR+QC2oVnrw>8 zL^vnXH47qlJ38qxp-GZADPB8gnWDNbs|^H#=*l4|HF`SOAPHy;oKKAU<4Lm=^^Cwg%nKd4>R72_JdNIb~YyIbnwAG{E z!5!?B+nhbtdg;Cvr=#Ki@V42Enw4eK;oJD&hjy=;*}$_|+g{F0nXGi>`1I(5K)K@C zPwzmp$Gg3sQgB4AC(#~Dw~mg^P6fS>y)O!;Ea;>PoH~4{`Sv7IP$c3>&Pm@+-OnB9 zcHybY!9lUN*~z;va&wC(=iMCOYw+z59C5ypId&FQ>29!d%j8KVC3^ZD6l%A#(3yhr zMi0WxFA0v-9Jx2>A}NoB*FA_5eoVC+#o&=!F)&K`vpa2 z5(g{ozizFr9JDkyH+Ok166R{lr&0)0O4U;k61uLO80zB;HS0X(FFdy~WCVJlm3f*> z{|^7At~38$D*U{&dpA??Byo?WwZvJ;k3M;&u~B%>S@&drWH^OqtKH#%pN)-eHW9TV zU5(DD8XXLG=G|%s>z<2ktG$+mGGBm|4Se!mJ`r)~qgWR5M%N;dVqOj-hbAsR>jrOX z-gKWX>X0cf1Q0!_7P+Cb$5&(Ac?UJBn4BZ1My@+wmn*n=aoA(t%oT;B$x+BEs5<0z zuwpTkS##5?B-G;sLFL~XVncP>raFYq<=Y-m43)OaKQmF=DS<-eT=Tq~QOJ$zeN<-6 z*VtAt=2YkAp-C`UiVss|&oA#NDG3Vl9D5u}r1`BZisjJA<)lziM3aqARVS)Y5uEK&ue}SJ}>b3vPh*Jt`t|!c~66HLGlTM#S-=2xtK| z_2kaW-hpJ)7;)*CS6L}zOH}9m{fi)UuSu-u=E>N)dv&SvkDBfSwZ7S&MymD=n{)6# zG6(g*(V05iFY!jVc%yT4PZ@7vC%O~xZPwa&pNxV3lXeE_ghC{vKh;J(=cn>c7X?p5 z>r%SFFmnV{*{Ww&?+oW1;1%a*C*J5;Dx1m5QRBi_23qzTAazLaY%6r5=KSpUF zeacvsyK}}brCVWnrqH{i;F9@2P_P)GiJ)6f@g=Rp#tS#zY$F1mnrgbP_I54dNc!q<@Wj@s~j|PkvB+( zC0TfUeGnM4g*2qe?FC-u`1m+@)PVcVaBrG`Jl}G*VS76}jA3P$3ED@aJswRUe4ZFrHa0tZ6iKalOvJ5fWLfkdgVDjz ztwdlmDI@={4>Yc^XqP{}xf$*tmsGJR%FMysB()aB|K!O5xQC;oBMpk&Q1K3Ih);(+ zkx2W@uW@PY4;lk1XuFU!EG;4@V1l%mpB6aX?H30VZN2*_91&2#Wsx#hU18d5om3#E z(F=H^+a*0>8a4Kd7^_r!*MFQU)Y6S3?+5*QT05tXS;vNWS-OSE_{&hVMTcYj-0)Ik*m`)%mqCpH zzE6cE7a_F<#^^H*+S$mwW~P7|QF?~zS>|coxF-UjpwXTtVkX>_w842aICR#zTf&8h zQq>yI(T)P*Q)ZHsK`%R$dQR85EUw?@Bli#obnPK_e&HFhJ=dETk51-U2Dd!!AGA}t dU8;I6I3~UBSh&>q9SjSR5Rnzmd#?BP{{hF7bu<6~ literal 0 HcmV?d00001 diff --git a/documentation/20.05/eiffelstudio/_images/Group_Options_main.png.data b/documentation/20.05/eiffelstudio/_images/Group_Options_main.png.data new file mode 100644 index 00000000..105a37b2 --- /dev/null +++ b/documentation/20.05/eiffelstudio/_images/Group_Options_main.png.data @@ -0,0 +1,3 @@ +title=group-options +author=halw +path=content/group-options diff --git a/documentation/20.05/eiffelstudio/_images/Implementation venn diagram.png b/documentation/20.05/eiffelstudio/_images/Implementation venn diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..8e60ec0af987c58106221206f3158fb71cd8e90c GIT binary patch literal 27713 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­RMx@qGO^B^CIQX)O-NDbZK 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