This repository has been archived on 2024-04-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
DeezCycle/mocodo/html/Mocodo5.html
Morph01 ebe07907cf mocodo
2024-03-24 15:23:58 +01:00

1500 lines
76 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="fr"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><style id="ace-chrome">.ace-chrome .ace_gutter {
background: #ebebeb;
color: #333;
overflow : hidden;
}
.ace-chrome .ace_print-margin {
width: 1px;
background: #e8e8e8;
}
.ace-chrome {
background-color: #FFFFFF;
color: black;
}
.ace-chrome .ace_cursor {
color: black;
}
.ace-chrome .ace_invisible {
color: rgb(191, 191, 191);
}
.ace-chrome .ace_constant.ace_buildin {
color: rgb(88, 72, 246);
}
.ace-chrome .ace_constant.ace_language {
color: rgb(88, 92, 246);
}
.ace-chrome .ace_constant.ace_library {
color: rgb(6, 150, 14);
}
.ace-chrome .ace_invalid {
background-color: rgb(153, 0, 0);
color: white;
}
.ace-chrome .ace_fold {
}
.ace-chrome .ace_support.ace_function {
color: rgb(60, 76, 114);
}
.ace-chrome .ace_support.ace_constant {
color: rgb(6, 150, 14);
}
.ace-chrome .ace_support.ace_type,
.ace-chrome .ace_support.ace_class
.ace-chrome .ace_support.ace_other {
color: rgb(109, 121, 222);
}
.ace-chrome .ace_variable.ace_parameter {
font-style:italic;
color:#FD971F;
}
.ace-chrome .ace_keyword.ace_operator {
color: rgb(104, 118, 135);
}
.ace-chrome .ace_comment {
color: #236e24;
}
.ace-chrome .ace_comment.ace_doc {
color: #236e24;
}
.ace-chrome .ace_comment.ace_doc.ace_tag {
color: #236e24;
}
.ace-chrome .ace_constant.ace_numeric {
color: rgb(0, 0, 205);
}
.ace-chrome .ace_variable {
color: rgb(49, 132, 149);
}
.ace-chrome .ace_xml-pe {
color: rgb(104, 104, 91);
}
.ace-chrome .ace_entity.ace_name.ace_function {
color: #0000A2;
}
.ace-chrome .ace_heading {
color: rgb(12, 7, 255);
}
.ace-chrome .ace_list {
color:rgb(185, 6, 144);
}
.ace-chrome .ace_marker-layer .ace_selection {
background: rgb(181, 213, 255);
}
.ace-chrome .ace_marker-layer .ace_step {
background: rgb(252, 255, 0);
}
.ace-chrome .ace_marker-layer .ace_stack {
background: rgb(164, 229, 101);
}
.ace-chrome .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
border: 1px solid rgb(192, 192, 192);
}
.ace-chrome .ace_marker-layer .ace_active-line {
background: rgba(0, 0, 0, 0.07);
}
.ace-chrome .ace_gutter-active-line {
background-color : #dcdcdc;
}
.ace-chrome .ace_marker-layer .ace_selected-word {
background: rgb(250, 250, 255);
border: 1px solid rgb(200, 200, 250);
}
.ace-chrome .ace_storage,
.ace-chrome .ace_keyword,
.ace-chrome .ace_meta.ace_tag {
color: rgb(147, 15, 128);
}
.ace-chrome .ace_string.ace_regex {
color: rgb(255, 0, 0)
}
.ace-chrome .ace_string {
color: #1A1AA6;
}
.ace-chrome .ace_entity.ace_other.ace_attribute-name {
color: #994409;
}
.ace-chrome .ace_indent-guide {
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;
}
.ace-chrome .ace_indent-guide-active {
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;
}
/*# sourceURL=ace/css/ace-chrome */</style><style id="autocompletion.css">
.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {
background-color: #CAD6FA;
z-index: 1;
}
.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {
background-color: #3a674e;
}
.ace_editor.ace_autocomplete .ace_line-hover {
border: 1px solid #abbffe;
margin-top: -1px;
background: rgba(233,233,253,0.4);
position: absolute;
z-index: 2;
}
.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {
border: 1px solid rgba(109, 150, 13, 0.8);
background: rgba(58, 103, 78, 0.62);
}
.ace_completion-meta {
opacity: 0.5;
margin: 0 0.9em;
}
.ace_completion-message {
color: blue;
}
.ace_editor.ace_autocomplete .ace_completion-highlight{
color: #2d69c7;
}
.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{
color: #93ca12;
}
.ace_editor.ace_autocomplete {
width: 300px;
z-index: 200000;
border: 1px lightgray solid;
position: fixed;
box-shadow: 2px 3px 5px rgba(0,0,0,.2);
line-height: 1.4;
background: #fefefe;
color: #111;
}
.ace_dark.ace_editor.ace_autocomplete {
border: 1px #484747 solid;
box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);
line-height: 1.4;
background: #25282c;
color: #c1c1c1;
}
.ace_autocomplete_right .ace_text-layer {
width: calc(100% - 8px);
}
.ace_autocomplete_right .ace_line {
display: flex;
}
.ace_autocomplete_right .ace_completion-spacer {
flex: 1;
}
/*# sourceURL=ace/css/autocompletion.css */</style><style id="snippets.css">
.ace_snippet-marker {
-moz-box-sizing: border-box;
box-sizing: border-box;
background: rgba(194, 193, 208, 0.09);
border: 1px dotted rgba(211, 208, 235, 0.62);
position: absolute;
}
/*# sourceURL=ace/css/snippets.css */</style><style id="error_marker.css">
.error_widget_wrapper {
background: inherit;
color: inherit;
border:none
}
.error_widget {
border-top: solid 2px;
border-bottom: solid 2px;
margin: 5px 0;
padding: 10px 40px;
white-space: pre-wrap;
}
.error_widget.ace_error, .error_widget_arrow.ace_error{
border-color: #ff5a5a
}
.error_widget.ace_warning, .error_widget_arrow.ace_warning{
border-color: #F1D817
}
.error_widget.ace_info, .error_widget_arrow.ace_info{
border-color: #5a5a5a
}
.error_widget.ace_ok, .error_widget_arrow.ace_ok{
border-color: #5aaa5a
}
.error_widget_arrow {
position: absolute;
border: solid 5px;
border-top-color: transparent!important;
border-right-color: transparent!important;
border-left-color: transparent!important;
top: -5px;
}
/*# sourceURL=ace/css/error_marker.css */</style><style id="ace-tm">.ace-tm .ace_gutter {
background: #f0f0f0;
color: #333;
}
.ace-tm .ace_print-margin {
width: 1px;
background: #e8e8e8;
}
.ace-tm .ace_fold {
background-color: #6B72E6;
}
.ace-tm {
background-color: #FFFFFF;
color: black;
}
.ace-tm .ace_cursor {
color: black;
}
.ace-tm .ace_invisible {
color: rgb(191, 191, 191);
}
.ace-tm .ace_storage,
.ace-tm .ace_keyword {
color: blue;
}
.ace-tm .ace_constant {
color: rgb(197, 6, 11);
}
.ace-tm .ace_constant.ace_buildin {
color: rgb(88, 72, 246);
}
.ace-tm .ace_constant.ace_language {
color: rgb(88, 92, 246);
}
.ace-tm .ace_constant.ace_library {
color: rgb(6, 150, 14);
}
.ace-tm .ace_invalid {
background-color: rgba(255, 0, 0, 0.1);
color: red;
}
.ace-tm .ace_support.ace_function {
color: rgb(60, 76, 114);
}
.ace-tm .ace_support.ace_constant {
color: rgb(6, 150, 14);
}
.ace-tm .ace_support.ace_type,
.ace-tm .ace_support.ace_class {
color: rgb(109, 121, 222);
}
.ace-tm .ace_keyword.ace_operator {
color: rgb(104, 118, 135);
}
.ace-tm .ace_string {
color: rgb(3, 106, 7);
}
.ace-tm .ace_comment {
color: rgb(76, 136, 107);
}
.ace-tm .ace_comment.ace_doc {
color: rgb(0, 102, 255);
}
.ace-tm .ace_comment.ace_doc.ace_tag {
color: rgb(128, 159, 191);
}
.ace-tm .ace_constant.ace_numeric {
color: rgb(0, 0, 205);
}
.ace-tm .ace_variable {
color: rgb(49, 132, 149);
}
.ace-tm .ace_xml-pe {
color: rgb(104, 104, 91);
}
.ace-tm .ace_entity.ace_name.ace_function {
color: #0000A2;
}
.ace-tm .ace_heading {
color: rgb(12, 7, 255);
}
.ace-tm .ace_list {
color:rgb(185, 6, 144);
}
.ace-tm .ace_meta.ace_tag {
color:rgb(0, 22, 142);
}
.ace-tm .ace_string.ace_regex {
color: rgb(255, 0, 0)
}
.ace-tm .ace_marker-layer .ace_selection {
background: rgb(181, 213, 255);
}
.ace-tm.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px white;
}
.ace-tm .ace_marker-layer .ace_step {
background: rgb(252, 255, 0);
}
.ace-tm .ace_marker-layer .ace_stack {
background: rgb(164, 229, 101);
}
.ace-tm .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
border: 1px solid rgb(192, 192, 192);
}
.ace-tm .ace_marker-layer .ace_active-line {
background: rgba(0, 0, 0, 0.07);
}
.ace-tm .ace_gutter-active-line {
background-color : #dcdcdc;
}
.ace-tm .ace_marker-layer .ace_selected-word {
background: rgb(250, 250, 255);
border: 1px solid rgb(200, 200, 250);
}
.ace-tm .ace_indent-guide {
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;
}
.ace-tm .ace_indent-guide-active {
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;
}
/*# sourceURL=ace/css/ace-tm */</style><style id="ace_editor.css">
.ace_br1 {border-top-left-radius : 3px;}
.ace_br2 {border-top-right-radius : 3px;}
.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}
.ace_br4 {border-bottom-right-radius: 3px;}
.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}
.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}
.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}
.ace_br8 {border-bottom-left-radius : 3px;}
.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}
.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}
.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}
.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}
.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}
.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}
.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}
.ace_editor {
position: relative;
overflow: hidden;
padding: 0;
font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace;
direction: ltr;
text-align: left;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.ace_scroller {
position: absolute;
overflow: hidden;
top: 0;
bottom: 0;
background-color: inherit;
-ms-user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
user-select: none;
cursor: text;
}
.ace_content {
position: absolute;
box-sizing: border-box;
min-width: 100%;
contain: style size layout;
font-variant-ligatures: no-common-ligatures;
}
.ace_keyboard-focus:focus {
box-shadow: inset 0 0 0 2px #5E9ED6;
outline: none;
}
.ace_dragging .ace_scroller:before{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
content: '';
background: rgba(250, 250, 250, 0.01);
z-index: 1000;
}
.ace_dragging.ace_dark .ace_scroller:before{
background: rgba(0, 0, 0, 0.01);
}
.ace_gutter {
position: absolute;
overflow : hidden;
width: auto;
top: 0;
bottom: 0;
left: 0;
cursor: default;
z-index: 4;
-ms-user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
user-select: none;
contain: style size layout;
}
.ace_gutter-active-line {
position: absolute;
left: 0;
right: 0;
}
.ace_scroller.ace_scroll-left:after {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;
pointer-events: none;
}
.ace_gutter-cell, .ace_gutter-cell_svg-icons {
position: absolute;
top: 0;
left: 0;
right: 0;
padding-left: 19px;
padding-right: 6px;
background-repeat: no-repeat;
}
.ace_gutter-cell_svg-icons .ace_gutter_annotation {
margin-left: -14px;
float: left;
}
.ace_gutter-cell .ace_gutter_annotation {
margin-left: -19px;
float: left;
}
.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");
background-repeat: no-repeat;
background-position: 2px center;
}
.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");
background-repeat: no-repeat;
background-position: 2px center;
}
.ace_gutter-cell.ace_info, .ace_icon.ace_info {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");
background-repeat: no-repeat;
background-position: 2px center;
}
.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");
}
.ace_icon_svg.ace_error {
-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+");
background-color: crimson;
}
.ace_icon_svg.ace_warning {
-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg==");
background-color: darkorange;
}
.ace_icon_svg.ace_info {
-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg==");
background-color: royalblue;
}
.ace_icon_svg.ace_error_fold {
-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");
background-color: crimson;
}
.ace_icon_svg.ace_warning_fold {
-webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4=");
background-color: darkorange;
}
.ace_scrollbar {
contain: strict;
position: absolute;
right: 0;
bottom: 0;
z-index: 6;
}
.ace_scrollbar-inner {
position: absolute;
cursor: text;
left: 0;
top: 0;
}
.ace_scrollbar-v{
overflow-x: hidden;
overflow-y: scroll;
top: 0;
}
.ace_scrollbar-h {
overflow-x: scroll;
overflow-y: hidden;
left: 0;
}
.ace_print-margin {
position: absolute;
height: 100%;
}
.ace_text-input {
position: absolute;
z-index: 0;
width: 0.5em;
height: 1em;
opacity: 0;
background: transparent;
-moz-appearance: none;
appearance: none;
border: none;
resize: none;
outline: none;
overflow: hidden;
font: inherit;
padding: 0 1px;
margin: 0 -1px;
contain: strict;
-ms-user-select: text;
-moz-user-select: text;
-webkit-user-select: text;
user-select: text;
/*with `pre-line` chrome inserts &nbsp; instead of space*/
white-space: pre!important;
}
.ace_text-input.ace_composition {
background: transparent;
color: inherit;
z-index: 1000;
opacity: 1;
}
.ace_composition_placeholder { color: transparent }
.ace_composition_marker {
border-bottom: 1px solid;
position: absolute;
border-radius: 0;
margin-top: 1px;
}
[ace_nocontext=true] {
transform: none!important;
filter: none!important;
clip-path: none!important;
mask : none!important;
contain: none!important;
perspective: none!important;
mix-blend-mode: initial!important;
z-index: auto;
}
.ace_layer {
z-index: 1;
position: absolute;
overflow: hidden;
/* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/
word-wrap: normal;
white-space: pre;
height: 100%;
width: 100%;
box-sizing: border-box;
/* setting pointer-events: auto; on node under the mouse, which changes
during scroll, will break mouse wheel scrolling in Safari */
pointer-events: none;
}
.ace_gutter-layer {
position: relative;
width: auto;
text-align: right;
pointer-events: auto;
height: 1000000px;
contain: style size layout;
}
.ace_text-layer {
font: inherit !important;
position: absolute;
height: 1000000px;
width: 1000000px;
contain: style size layout;
}
.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {
contain: style size layout;
position: absolute;
top: 0;
left: 0;
right: 0;
}
.ace_hidpi .ace_text-layer,
.ace_hidpi .ace_gutter-layer,
.ace_hidpi .ace_content,
.ace_hidpi .ace_gutter {
contain: strict;
}
.ace_hidpi .ace_text-layer > .ace_line,
.ace_hidpi .ace_text-layer > .ace_line_group {
contain: strict;
}
.ace_cjk {
display: inline-block;
text-align: center;
}
.ace_cursor-layer {
z-index: 4;
}
.ace_cursor {
z-index: 4;
position: absolute;
box-sizing: border-box;
border-left: 2px solid;
/* workaround for smooth cursor repaintng whole screen in chrome */
transform: translatez(0);
}
.ace_multiselect .ace_cursor {
border-left-width: 1px;
}
.ace_slim-cursors .ace_cursor {
border-left-width: 1px;
}
.ace_overwrite-cursors .ace_cursor {
border-left-width: 0;
border-bottom: 1px solid;
}
.ace_hidden-cursors .ace_cursor {
opacity: 0.2;
}
.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {
opacity: 0;
}
.ace_smooth-blinking .ace_cursor {
transition: opacity 0.18s;
}
.ace_animate-blinking .ace_cursor {
animation-duration: 1000ms;
animation-timing-function: step-end;
animation-name: blink-ace-animate;
animation-iteration-count: infinite;
}
.ace_animate-blinking.ace_smooth-blinking .ace_cursor {
animation-duration: 1000ms;
animation-timing-function: ease-in-out;
animation-name: blink-ace-animate-smooth;
}
@keyframes blink-ace-animate {
from, to { opacity: 1; }
60% { opacity: 0; }
}
@keyframes blink-ace-animate-smooth {
from, to { opacity: 1; }
45% { opacity: 1; }
60% { opacity: 0; }
85% { opacity: 0; }
}
.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {
position: absolute;
z-index: 3;
}
.ace_marker-layer .ace_selection {
position: absolute;
z-index: 5;
}
.ace_marker-layer .ace_bracket {
position: absolute;
z-index: 6;
}
.ace_marker-layer .ace_error_bracket {
position: absolute;
border-bottom: 1px solid #DE5555;
border-radius: 0;
}
.ace_marker-layer .ace_active-line {
position: absolute;
z-index: 2;
}
.ace_marker-layer .ace_selected-word {
position: absolute;
z-index: 4;
box-sizing: border-box;
}
.ace_line .ace_fold {
box-sizing: border-box;
display: inline-block;
height: 11px;
margin-top: -2px;
vertical-align: middle;
background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");
background-repeat: no-repeat, repeat-x;
background-position: center center, top left;
color: transparent;
border: 1px solid black;
border-radius: 2px;
cursor: pointer;
pointer-events: auto;
}
.ace_dark .ace_fold {
}
.ace_fold:hover{
background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");
}
.ace_tooltip {
background-color: #f5f5f5;
border: 1px solid gray;
border-radius: 1px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
color: black;
max-width: 100%;
padding: 3px 4px;
position: fixed;
z-index: 999999;
box-sizing: border-box;
cursor: default;
white-space: pre;
word-wrap: break-word;
line-height: normal;
font-style: normal;
font-weight: normal;
letter-spacing: normal;
pointer-events: none;
}
.ace_tooltip.ace_dark {
background-color: #636363;
color: #fff;
}
.ace_tooltip:focus {
outline: 1px solid #5E9ED6;
}
.ace_icon {
display: inline-block;
width: 18px;
vertical-align: top;
}
.ace_icon_svg {
display: inline-block;
width: 12px;
vertical-align: top;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 12px;
-webkit-mask-position: center;
}
.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {
padding-right: 13px;
}
.ace_fold-widget {
box-sizing: border-box;
margin: 0 -12px 0 1px;
display: none;
width: 11px;
vertical-align: top;
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");
background-repeat: no-repeat;
background-position: center;
border-radius: 3px;
border: 1px solid transparent;
cursor: pointer;
}
.ace_folding-enabled .ace_fold-widget {
display: inline-block;
}
.ace_fold-widget.ace_end {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");
}
.ace_fold-widget.ace_closed {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");
}
.ace_fold-widget:hover {
border: 1px solid rgba(0, 0, 0, 0.3);
background-color: rgba(255, 255, 255, 0.2);
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
}
.ace_fold-widget:active {
border: 1px solid rgba(0, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.05);
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
}
/**
* Dark version for fold widgets
*/
.ace_dark .ace_fold-widget {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");
}
.ace_dark .ace_fold-widget.ace_end {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");
}
.ace_dark .ace_fold-widget.ace_closed {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");
}
.ace_dark .ace_fold-widget:hover {
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
background-color: rgba(255, 255, 255, 0.1);
}
.ace_dark .ace_fold-widget:active {
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
}
.ace_inline_button {
border: 1px solid lightgray;
display: inline-block;
margin: -1px 8px;
padding: 0 5px;
pointer-events: auto;
cursor: pointer;
}
.ace_inline_button:hover {
border-color: gray;
background: rgba(200,200,200,0.2);
display: inline-block;
pointer-events: auto;
}
.ace_fold-widget.ace_invalid {
background-color: #FFB4B4;
border-color: #DE5555;
}
.ace_fade-fold-widgets .ace_fold-widget {
transition: opacity 0.4s ease 0.05s;
opacity: 0;
}
.ace_fade-fold-widgets:hover .ace_fold-widget {
transition: opacity 0.05s ease 0.05s;
opacity:1;
}
.ace_underline {
text-decoration: underline;
}
.ace_bold {
font-weight: bold;
}
.ace_nobold .ace_bold {
font-weight: normal;
}
.ace_italic {
font-style: italic;
}
.ace_error-marker {
background-color: rgba(255, 0, 0,0.2);
position: absolute;
z-index: 9;
}
.ace_highlight-marker {
background-color: rgba(255, 255, 0,0.2);
position: absolute;
z-index: 8;
}
.ace_mobile-menu {
position: absolute;
line-height: 1.5;
border-radius: 4px;
-ms-user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
user-select: none;
background: white;
box-shadow: 1px 3px 2px grey;
border: 1px solid #dcdcdc;
color: black;
}
.ace_dark > .ace_mobile-menu {
background: #333;
color: #ccc;
box-shadow: 1px 3px 2px grey;
border: 1px solid #444;
}
.ace_mobile-button {
padding: 2px;
cursor: pointer;
overflow: hidden;
}
.ace_mobile-button:hover {
background-color: #eee;
opacity:1;
}
.ace_mobile-button:active {
background-color: #ddd;
}
.ace_placeholder {
font-family: arial;
transform: scale(0.9);
transform-origin: left;
white-space: pre;
opacity: 0.7;
margin: 0 10px;
}
.ace_ghost_text {
opacity: 0.5;
font-style: italic;
white-space: pre;
}
/*# sourceURL=ace/css/ace_editor.css */</style><style id="ace_scrollbar.css">.ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{
position: absolute;
background: rgba(128, 128, 128, 0.6);
-moz-box-sizing: border-box;
box-sizing: border-box;
border: 1px solid #bbb;
border-radius: 2px;
z-index: 8;
}
.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {
position: absolute;
z-index: 6;
background: none;
overflow: hidden!important;
}
.ace_editor>.ace_sb-v {
z-index: 6;
right: 0;
top: 0;
width: 12px;
}
.ace_editor>.ace_sb-v div {
z-index: 8;
right: 0;
width: 100%;
}
.ace_editor>.ace_sb-h {
bottom: 0;
left: 0;
height: 12px;
}
.ace_editor>.ace_sb-h div {
bottom: 0;
height: 100%;
}
.ace_editor>.ace_sb_grabbed {
z-index: 8;
background: #000;
}
/*# sourceURL=ace/css/ace_scrollbar.css */</style>
<title>Mocodo online</title>
<meta charset="utf-8">
<meta name="apple-mobile-web-app-title" content="Mocodo">
<meta name="application-name" content="Mocodo">
<meta name="theme-color" content="#fff">
<link rel="stylesheet" href="Mocodo5_fichiers/reset.css">
<link rel="stylesheet" href="Mocodo5_fichiers/style.css">
<link rel="apple-touch-icon" sizes="180x180" href="https://www.mocodo.net/apple-touch-icon.png">
<link rel="icon" type="image/png" href="https://www.mocodo.net/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://www.mocodo.net/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://www.mocodo.net/manifest.json">
<link rel="mask-icon" href="https://www.mocodo.net/safari-pinned-tab.svg" color="#0d42ff">
<script src="Mocodo5_fichiers/jquery-1.7.2.min.js"></script>
<script src="Mocodo5_fichiers/js.cookie.js"></script>
<script src="Mocodo5_fichiers/mocodo.js"></script>
<script src="Mocodo5_fichiers/flashlight.js"></script>
<script src="Mocodo5_fichiers/ace.js"></script>
<script src="Mocodo5_fichiers/ext-language_tools.js"></script>
<script async="" defer="defer" src="Mocodo5_fichiers/buttons.js"></script>
<script src="Mocodo5_fichiers/mode-mocodo.js"></script><script src="Mocodo5_fichiers/theme-chrome.js"></script><link href="data:text/css,%3Ais(%5Bid*%3D'google_ads_iframe'%5D%2C%5Bid*%3D'taboola-'%5D%2C.taboolaHeight%2C.taboola-placeholder%2C%23credential_picker_container%2C%23credentials-picker-container%2C%23credential_picker_iframe%2C%5Bid*%3D'google-one-tap-iframe'%5D%2C%23google-one-tap-popup-container%2C.google-one-tap-modal-div%2C%23amp_floatingAdDiv%2C%23ez-content-blocker-container)%20%7Bdisplay%3Anone!important%3Bmin-height%3A0!important%3Bheight%3A0!important%3B%7D" rel="stylesheet" type="text/css"></head>
<body>
<div id="wrap">
<div id="banner">
<img src="Mocodo5_fichiers/mocodonline.svg" alt="Mocodo online">
</div>
<div id="motto">
<span>Modélisation Conceptuelle de Données. Nickel. Ni souris.</span>
</div>
<form method="post" id="mainForm" action="web/download.php" autocomplete="off">
<input type="hidden" name="state" id="state" value="ready">
<div id="inputZone">
<div class="line"></div>
<ul class="tabs">
<li><a href="#aboutContents" class="first_tab"><span class="info-symbol" style="background-image: url(web/png/info.png);"></span></a></li>
<li><a href="#inputContents" class="active"><span>Entrée</span></a></li>
<li><a href="#paramContents" class=""><span>Options</span></a></li>
<li><a href="#geoContents" id="geoTab" style="display: inline;" class=""><span>Retouches</span></a></li>
</ul>
<div class="pane">
<div id="inputButtons" class="buttons">
<div class="button-with-popup" id="arrangeButton">
<span class="customButton tooltip" onmouseenter="closePopup()" onclick="handleClick(this, 'arrange')" style="background-image: url(web/png/arrange.png);"><span class="tooltiptext">Réarranger</span></span>
<div class="popup-menu" onmouseleave="closePopup(this)">
<span class="popup-item popup-close" onclick="closePopup()"></span>
<span class="popup-item" onclick="rewrite('arrange:current')">sur la grille actuelle</span>
<span class="popup-item" onclick="rewrite('arrange:wide')">en privilégiant la largeur</span>
<span class="popup-item" onclick="rewrite('arrange:balanced=0')">sur la plus petite grille équilibrée</span>
<span class="popup-item" onclick="rewrite('arrange:balanced=1')">sur la seconde plus petite grille équilibrée</span>
<span class="popup-item" onclick="rewrite('arrange')">sans contraintes (double clic)</span>
</div>
</div>
<div class="button-with-popup" id="flipButton">
<span class="customButton tooltip" onmouseenter="closePopup()" onclick="handleClick(this, 'flip:hvd')" style="background-image: url(web/png/flip.png);"><span class="tooltiptext">Inverser</span></span>
<div class="popup-menu" onmouseleave="closePopup(this)">
<span class="popup-item popup-close" onclick="closePopup()"></span>
<span class="popup-item" onclick="rewrite('flip:h')">horizontalement</span>
<span class="popup-item" onclick="rewrite('flip:v')">verticalement</span>
<span class="popup-item" onclick="rewrite('flip:d')">selon la première diagonale</span>
<span class="popup-item" onclick="rewrite('flip:hvd')">selon la deuxième diagonale (double clic)</span>
</div>
</div>
<div class="button-with-popup" id="typoButton">
<span class="customButton tooltip" onmouseenter="closePopup()" onclick="handleClick(this, 'ascii:labels snake:labels lower:attrs,roles upper:boxes')" style="background-image: url(web/png/typo.png);">
<span class="tooltiptext">Éditer</span>
</span>
<div class="popup-menu" onmouseleave="closePopup(this)">
<span class="popup-item popup-close" onclick="closePopup()"></span>
<span class="popup-item" onclick="rewrite('camel:labels')">libellés en <i>camelCase</i></span>
<span class="popup-item" onclick="rewrite('pascal:labels')">libellés en <i>PascalCase</i></span>
<span class="popup-item" onclick="rewrite('snake:labels')">libellés en <i>snake_case</i></span>
<span class="popup-item" onclick="rewrite('ascii:labels')">libellés en ASCII</span>
<span class="popup-item" onclick="rewrite('lower:attrs,roles')">attributs en minuscules</span>
<span class="popup-item" onclick="rewrite('upper:boxes')">noms des entités et des associations en majuscules</span>
<span class="popup-item" onclick="rewrite('snake:labels ascii:labels lower:attrs,roles upper:boxes')">les quatre précédents à la fois (double clic)</span>
<span class="popup-item" onclick="rewrite('fix:cards')">correction des fautes de frappe dans les cardinalités</span>
</div>
</div>
<div class="button-with-popup" id="createButton">
<span class="customButton tooltip" onmouseenter="closePopup()" onclick="handleClick(this, 'create:entities')" style="background-image: url(web/png/create.png);"><span class="tooltiptext">Révéler</span></span>
<div class="popup-menu" onmouseleave="closePopup(this)">
<span class="popup-item popup-close" onclick="closePopup()"></span>
<span class="popup-item" onclick="rewrite('create:dfs')">mettre des DF partout où c'est possible</span>
<span class="popup-item" onclick="rewrite('create:df_arrows')">ajouter des flèches aux DF 11</span>
<span class="popup-item" onclick="rewrite('create:cifs')" id="createCifs" style="display: none;">ajouter les CIF correspondant aux agrégats</span>
<span class="popup-item" onclick="rewrite('create:types=')">mettre en évidence les types à remplir</span>
<span class="popup-item" onclick="rewrite('create:types')">deviner les types à partir du nom des attributs</span>
<span class="popup-item" onclick="rewrite('delete:types')">supprimer les types</span>
<span class="popup-item" onclick="rewrite('create:entities')">réparer l'oubli d'entités référencées dans des associations (double clic)</span>
</div>
</div>
<div class="button-with-popup pulsating" id="jokerButton" style="display: none;">
<span class="customButton tooltip" onmouseenter="closePopup()" onclick="handleClick(this, 'obfuscate')" style="background-image: url(web/png/joker.png);"><span class="tooltiptext">Masquer</span></span>
<div class="popup-menu" onmouseleave="closePopup(this)">
<span class="popup-item popup-close" onclick="closePopup()"></span>
<span class="popup-item" onclick="rewrite('drown')">masquer avec des libellés génériques numérotés</span>
<span class="popup-item" onclick="rewrite('delete')" title="Crée un MCD à compléter. À accompagner de la liste des descriptifs des attributs obtenue avec l'option «&nbsp;Dictionnaire des données en Markdown (deux colonnes)&nbsp;».">masquer les attributs et les cardinalités</span>
<span class="popup-item" onclick="rewrite('create:types=PLACEHOLDER randomize:types')">remplir les types au hasard</span>
<span class="popup-item" onclick="rewrite('grow:n=9,from_scratch,ent_attrs=3 obfuscate:labels=en4 create:roles lower:roles arrange')">créer un MCD d'entraînement à la conversion en relationnel</span>
<span class="popup-item" onclick="rewrite('grow:from_scratch,arity_3=1 arrange')">créer un MCD aléatoire avec des libellés génériques numérotés</span>
<span class="popup-item" onclick="rewrite('obfuscate')">masquer avec du faux texte (double clic)</span>
</div>
</div>
<div class="button-with-popup pulsating" id="explodeButton" style="display: none;">
<span class="customButton tooltip explosion-call" onmouseenter="closePopup()" onclick="handleClick(this, 'explode:arity=3 arrange')" style="background-image: url(web/png/explode.png);">
<span class="tooltiptext">Décomposer</span>
</span>
<div class="popup-menu" onmouseleave="closePopup(this)">
<span class="popup-item popup-close" onclick="closePopup()"></span>
<span class="popup-item" onclick="rewrite('drain')">drainer les DF porteuses d'attributs</span>
<span class="popup-item" onclick="rewrite('split arrange')">décomposer les DF ternaires et plus</span>
<span class="popup-item explosion-call" onclick="rewrite('explode:arity=3 arrange')">décomposer les non-DF ternaires et plus (double clic)</span>
<span class="popup-item explosion-call" onclick="rewrite('explode:arity=2.5 arrange')">décomposer les non-DF binaires et plus porteuses d'attributs</span>
<span class="popup-item explosion-call" onclick="rewrite('explode:arity=2 arrange')">décomposer toutes les non-DF binaires et plus</span>
</div>
</div>
</div>
<div id="aboutContents" class="contents" style="display: none;">
<p style="height: 2em;"><span></span></p>
<p>Mocodo est un logiciel d'aide à l'enseignement et à l'apprentissage des <a href="https://fr.wikipedia.org/wiki/Base_de_donn%C3%A9es_relationnelle">bases de données relationnelles</a>.</p>
<ul>
<li>En entrée, il prend un <a href="https://fr.wikipedia.org/wiki/Mod%C3%A8le_entit%C3%A9-association">MCD</a> (modèle conceptuel de données) décrit dans un langage dédié minimaliste.</li>
<li>En sortie, il produit un diagramme entité-association et, à la demande, un <a href="https://fr.wikipedia.org/wiki/Merise_(informatique)#MLD_:_mod%C3%A8le_logique_des_donn%C3%A9es">MLD</a> (schéma relationnel, sous forme graphique ou textuelle), un <a href="https://fr.wikipedia.org/wiki/Langage_de_d%C3%A9finition_de_donn%C3%A9es">DDL</a> (script SQL de création de la base), un <a href="https://fr.wikipedia.org/wiki/Diagramme_de_classes">diagramme de classes UML</a>, etc.</li>
<li>En bonus, il est capable de réarranger automatiquement votre
MCD de façon esthétique, et de lui appliquer des opérations de
réécriture qui vont du mondain (typographie) à l'académique
(décomposition d'associations), en passant par le merveilleux (inférence
de types, génération d'exercices et d'exemples).</li>
</ul>
<p>Ce site est prévu pour une utilisation basique et
occasionnelle, typiquement en salle de classe. Si vous travaillez sur
des données confidentielles¹, ou souhaitez avoir accès à toutes les
fonctionnalités de Mocodo, vous pouvez, soit l'importer sous <a href="https://www.basthon.fr/">Basthon</a>, soit l'installer sur votre ordinateur&nbsp;:</p>
<br>
<pre>&gt; pip install mocodo</pre>
<br>
<p>Sous cette dernière forme, Mocodo est un puissant <a href="https://fr.wikipedia.org/wiki/Interface_en_ligne_de_commande">logiciel en ligne de commande</a>, multiplateforme, <a href="https://github.com/laowantong/mocodo"><i>open-source</i></a>, <a href="https://fr.wikipedia.org/wiki/Licence_MIT">libre</a> et gratuit. Il s'intègre particulièrement bien à l'environnement <a href="https://jupyter.org/">Jupyter Notebook</a>.</p>
<br>
<p>Pour en savoir plus, suivez nos tutoriels interactifs (onglet Entrée), puis plongez-vous dans la <a target="_blank" href="https://rawgit.com/laowantong/mocodo/master/doc/fr_refman.html">documentation</a>.</p>
<br>
<p style="font-size: small; font-style: italic; text-align: right;">Aristide Grange, Université de Lorraine, Metz (France)</p>
<div class="footnote">
<hr>
<p>¹ Ce site stocke dans votre navigateur un <a href="https://www.cnil.fr/fr/cookies-et-autres-traceurs/regles/cookies/que-dit-la-loi">cookie non soumis à obligation de consentement préalable</a>
qui lui permet de retrouver vos réglages de l'onglet Options. Côté
serveur, il stocke le dernier état de votre travail afin de le mettre à
votre disposition sous forme d'archive téléchargeable. Ce dossier est
détruit au bout de 24 heures. Pour le détruire dès la fin d'une session,
effacez le texte d'entrée et pressez le bouton de rafraîchissement.
Sous Basthon ou en local, rien ne quitte votre ordinateur.</p>
</div>
</div>
<div id="inputContents" class="contents" style="display: block;">
<div id="inputPane">
<div><input type="text" oninput="markAsDirty();get_from_lib()" onfocus="onFocus(this)" name="title" id="title" value="MCD" onblur="onBlur(this)" autocomplete="off"></div>
<select onchange="changeTitleToNthTuto();get_from_lib()" name="tutorial" id="tutorial" title="Parcourez notre galerie de MCD pour apprendre la syntaxe de Mocodo."><option selected="selected">Tutoriel interactif (1/2)</option><option>Entité</option><option>Identifiant et attributs d'entité</option><option>Identifiant composite</option><option>Association</option><option>Cardinalités</option><option>Attribut d'association</option><option>Association de dépendance fonctionnelle</option><option>Association réflexive</option><option>Schéma relationnel</option><option>Rôles</option><option>Diagramme relationnel (1)</option><option>Diagramme relationnel (2)</option><option>Inférence de types</option><option>Génération du DDL</option><option>Schéma sur plusieurs rangées</option><option>Réarrangement automatique</option><option>Réarrangement automatique avec contraintes</option><option>Entraînement au passage au relationnel</option><option>Pour aller plus loin...</option></select>
<textarea hidden="" name="text">joueur: idjoueur, nom, prenom, pseudo, annee_nais, email
tente_validation, 1N tour, 1N joueur, 1N carte: nb_tentatives
tour: num_tour
carte: idcarte, niveau, img, points</textarea>
<div id="editor-wrapper">
<div id="editor" class=" ace_editor ace_hidpi ace-chrome"><textarea class="ace_text-input" wrap="off" autocorrect="off" autocapitalize="none" spellcheck="false" style="opacity: 0; font-size: 1px; height: 1px; width: 1px; transform: translate(341px, 95px);" aria-haspopup="false" aria-autocomplete="both" role="textbox">carte: idcarte, niveau, img, points
</textarea><div class="ace_gutter" aria-hidden="true" style="display: none; left: 0px; width: 43px;"><div class="ace_layer ace_gutter-layer ace_folding-enabled" style="height: 1000000px; transform: translate(0px); width: 43px;"><div class="ace_gutter-cell " style="height: 19px; top: 0px;" aria-hidden="true">1<span style="display: none;" tabindex="0"></span><span style="display: none;" tabindex="0"><span></span></span></div><div class="ace_gutter-cell " style="height: 19px; top: 19px;" aria-hidden="true">2<span style="display: none;" tabindex="0"></span><span style="display: none;" tabindex="0"><span></span></span></div><div class="ace_gutter-cell " style="height: 19px; top: 38px;" aria-hidden="true">3<span style="display: none;" tabindex="0"></span><span style="display: none;" tabindex="0"><span></span></span></div><div class="ace_gutter-cell " style="height: 19px; top: 57px;" aria-hidden="true">4<span style="display: none;" tabindex="0"></span><span style="display: none;" tabindex="0"><span></span></span></div><div class="ace_gutter-cell ace_gutter-active-line " style="height: 19px; top: 76px;" aria-hidden="true">5<span style="display: none;" tabindex="0"></span><span style="display: none;" tabindex="0"><span></span></span></div></div></div><div class="ace_scroller " style="line-height: 19px; left: 0px; right: 0px; bottom: 0px;"><div class="ace_content" style="transform: translate(0px); width: 857px; height: 388px;"><div class="ace_layer ace_print-margin-layer"><div class="ace_print-margin" style="left: 775px; visibility: hidden;"></div></div><div class="ace_layer ace_marker-layer"><div style="height: 19px; top: 76px; left: 0px; right: 0px;" class="ace_active-line"></div></div><div class="ace_layer ace_text-layer" style="height: 1000000px; margin: 0px 4px; transform: translate(0px);"><div style="height: 19px; top: 0px;" class="ace_line"><span class="ace_heading ace_entity ace_mocodo markup ace_bold">joueur</span><span class="ace_entity ace_mocodo">: </span><span class="ace_variable ace_attribute ace_mocodo markup ace_underline">idjoueur</span>, <span class="ace_variable ace_attribute ace_mocodo">nom</span>, <span class="ace_variable ace_attribute ace_mocodo">prenom</span>, <span class="ace_variable ace_attribute ace_mocodo">pseudo</span>, <span class="ace_variable ace_attribute ace_mocodo">annee_nais</span>, <span class="ace_variable ace_attribute ace_mocodo">email</span></div><div style="height: 19px; top: 19px;" class="ace_line"><span class="ace_entity ace_other ace_attribute-name ace_association ace_mocodo markup ace_bold">tente_validation</span>, <span class="ace_entity ace_other ace_attribute-name ace_cardinality ace_mocodo">1N</span> <span class="ace_heading ace_entity ace_mocodo">tour</span>, <span class="ace_entity ace_other ace_attribute-name ace_cardinality ace_mocodo">1N</span> <span class="ace_heading ace_entity ace_mocodo">joueur</span>, <span class="ace_entity ace_other ace_attribute-name ace_cardinality ace_mocodo">1N</span> <span class="ace_heading ace_entity ace_mocodo">carte</span><span class="ace_attrs ace_mocodo">: </span><span class="ace_variable ace_attribute ace_mocodo">nb_tentatives</span></div><div style="height: 19px; top: 38px;" class="ace_line"><span class="ace_heading ace_entity ace_mocodo markup ace_bold">tour</span><span class="ace_entity ace_mocodo">: </span><span class="ace_variable ace_attribute ace_mocodo markup ace_underline">num_tour</span></div><div style="height: 19px; top: 57px;" class="ace_line"></div><div style="height: 19px; top: 76px;" class="ace_line"><span class="ace_heading ace_entity ace_mocodo markup ace_bold">carte</span><span class="ace_entity ace_mocodo">: </span><span class="ace_variable ace_attribute ace_mocodo markup ace_underline">idcarte</span>, <span class="ace_variable ace_attribute ace_mocodo">niveau</span>, <span class="ace_variable ace_attribute ace_mocodo">img</span>, <span class="ace_variable ace_attribute ace_mocodo">points</span></div></div><div class="ace_layer ace_marker-layer"></div><div class="ace_layer ace_cursor-layer ace_hidden-cursors"><div class="ace_cursor" style="display: block; transform: translate(341px, 76px); width: 10px; height: 19px; animation-duration: 1000ms;"></div></div></div></div><div class="ace_scrollbar ace_scrollbar-v" style="display: none; width: 20px; height: 350px; bottom: 0px;"><div class="ace_scrollbar-inner" style="width: 20px; height: 95px;">&nbsp;</div></div><div class="ace_scrollbar ace_scrollbar-h" style="display: none; height: 20px; left: 0px; right: 0px; width: 857px;"><div class="ace_scrollbar-inner" style="height: 20px; width: 857px;">&nbsp;</div></div><div style="height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; white-space: pre; font: inherit; overflow: hidden;"><div style="height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; white-space: pre; font: inherit; overflow: visible;">הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה</div><div style="height: auto; width: auto; top: 0px; left: 0px; visibility: hidden; position: absolute; white-space: pre; font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-optical-sizing: inherit; font-language-override: inherit; font-feature-settings: inherit; font-variation-settings: inherit; overflow: visible;">XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</div></div></div>
</div>
</div>
</div>
<div id="paramContents" class="contents" style="display: none;">
<div class="settings-pane">
<div class="setting-row">
<label class="setting-label" for="shapes">Police et proportions</label>
<div class="setting-controls">
<select onchange="markAsDirty();writeCookie()" name="shapes" id="shapes">
<!-- To be populated by JS -->
<option>arial</option><option>copperplate</option><option>georgia</option><option>mondrian</option><option>sans</option><option>serif</option><option>times</option><option>trebuchet</option><option selected="selected">verdana</option><option>xinnian</option></select>
</div>
</div>
<div class="setting-row">
<label class="setting-label" for="colors">Palette de couleurs</label>
<div class="setting-controls">
<select onchange="markAsDirty();writeCookie()" name="colors" id="colors">
<!-- To be populated by JS -->
<option>blank</option><option>bw</option><option>bw-alpha</option><option>desert</option><option>keepsake</option><option>mondrian</option><option>ocean</option><option>pond</option><option>wb</option><option>xinnian</option><option>brewer+1</option><option>brewer-1</option><option>brewer+2</option><option>brewer-2</option><option>brewer+3</option><option>brewer-3</option><option>brewer+4</option><option>brewer-4</option><option selected="selected">brewer+5</option><option>brewer-5</option><option>brewer+6</option><option>brewer-6</option><option>brewer+7</option><option>brewer-7</option><option>brewer+8</option><option>brewer-8</option><option>brewer+9</option><option>brewer-9</option></select>
</div>
</div>
<div class="setting-row">
<label class="setting-label" for="flashlight">Mode nuit</label>
<div class="setting-controls">
<input type="checkbox" id="flashlight" onclick="switchOnFlashlight(event)">
</div>
</div>
<div class="setting-row">
<label class="setting-label" for="adjust_width">Ajustement de la largeur des libellés</label>
<div class="setting-controls">
<input type="number" value="1.00" max="2.00" min="0.50" step="0.01" onchange="writeCookie()" name="adjust_width" id="adjust_width" style="width: 5em; border-radius: 0;">
</div>
</div>
<div class="setting-row">
<label class="setting-label" for="detect_overlaps" title="Lève une erreur en cas de chevauchement de pattes horizontales ou verticales.">Détection des chevauchements</label>
<div class="setting-controls">
<input type="checkbox" name="detect_overlaps" id="detect_overlaps" onchange="markAsDirty();writeCookie()" checked="checked">
</div>
</div>
<div class="setting-row">
<label class="setting-label" title="Les formats cochés seront générés et inclus dans l'archive téléchargée.">Format des images en sortie</label>
<div class="setting-row">
<span>
<input type="checkbox" disabled="true" id="svg" checked="checked">
<label for="svg" title="Pour le web, zoom illimité. Requis.">&nbsp;SVG&nbsp;&nbsp;</label>
<input type="checkbox" name="png" id="png" onchange="markAsDirty();writeCookie()">
<label for="png" title="Multi-usage, zoom limité.">&nbsp;PNG&nbsp;&nbsp;</label>
<input type="checkbox" name="pdf" id="pdf" onchange="markAsDirty();writeCookie()">
<label for="pdf" title="Pour l'impression, zoom illimité.">&nbsp;PDF&nbsp;&nbsp;</label>
</span>
</div>
</div>
<div class="setting-row">
<label class="setting-label" for="conversions" title="Les formats cochés seront affichés sous l'onglet «&nbsp;Autres sorties&nbsp;» et inclus dans l'archive téléchargée.">Conversions en sortie</label>
<ul class="setting-controls" name="conversions" id="conversions">
<!-- To be populated by JS -->
<li><span><input type="checkbox" name="conversions[]" id="_url.url" value="_url.url" checked="checked" onchange="markAsDirty();writeCookie()"> <label for="_url.url" title="URL d'une session Mocodo online pré-remplie avec le texte-source de votre MCD.">Lien de partage du MCD</label></span></li><li><span><input type="checkbox" name="conversions[]" id="_mld.mcd" value="_mld.mcd" onchange="markAsDirty();writeCookie()"> <label for="_mld.mcd" title="Résultat à réinjecter sous l'onglet Entrée pour tracer un diagramme sagittal des relations.">Diagramme relationnel en Mocodo, clés étrangères&nbsp;&nbsp;</label><select onchange="markAsDirty();writeCookie()" name="fk_format" id="fk_format">
<option value="#{label}" selected="selected">avec # au début</option>
<option value="{label}#">avec # à la fin</option>
<option value="{label}">telles quelles</option>
</select></span></li><li><span><input type="checkbox" name="conversions[]" id="_mld.html" value="_mld.html" onchange="markAsDirty();writeCookie()"> <label for="_mld.html" title="Affiché également au-dessous du diagramme conceptuel. Cliquez sur un schéma de relation pour faire apparaître une explication du passage du MCD au MLD.">Schéma relationnel expliqué</label></span></li><li><span><input type="checkbox" name="conversions[]" id="_ddl.sql" value="_ddl.sql" onchange="markAsDirty();writeCookie()"> <label for="_ddl.sql" title="DDL œcuménique, pour peu que vous utilisiez les types requis par le dialecte-cible (MySQL, SQLite, PostgreSQL, Oracle, SQL Server, etc.). Les libellés sont automatiquement privés de leurs accents et espaces pour éviter de polluer le code SQL avec des délimiteurs de chaînes, qui plus est non portables.">Script SQL de création des tables, libellés en&nbsp;&nbsp;</label><select onchange="markAsDirty();writeCookie()" name="sql_case" id="sql_case">
<option selected="selected">snake_case</option>
<option>camelCase</option>
<option>PascalCase</option>
</select></span></li><details class="setting-details">
<summary>Autres options de conversions…</summary>
<!-- To be populated by JS -->
<li><span><input type="checkbox" name="conversions[]" id="_data_dict_2.md" value="_data_dict_2.md" onchange="markAsDirty();writeCookie()"> <label for="_data_dict_2.md" title="Colonnes&nbsp;: attribut / descriptif.">Dictionnaire des données sur deux colonnes</label></span></li><li><span><input type="checkbox" name="conversions[]" id="_data_dict_3.md" value="_data_dict_3.md" onchange="markAsDirty();writeCookie()"> <label for="_data_dict_3.md" title="Colonnes&nbsp;: entité ou association / attribut / type.">Dictionnaire des données sur trois colonnes</label></span></li><li><span><input type="checkbox" name="conversions[]" id="_dependencies.gv" value="_dependencies.gv" onchange="markAsDirty();writeCookie()"> <label for="_dependencies.gv" title="Vue simplifiée des contraintes de clés étrangères. Copiez-collez le résultat sur le site donné en lien pour visualiser le diagramme.">Graphe des dépendances pour <a href="https://dreampuf.github.io/GraphvizOnline/" target="_blank">Graphviz</a></label></span></li><li><span><input type="checkbox" name="conversions[]" id="_mld.txt" value="_mld.txt" onchange="markAsDirty();writeCookie()"> <label for="_mld.txt">Schéma relationnel en texte brut</label></span></li><li><span><input type="checkbox" name="conversions[]" id="_mld.tex" value="_mld.tex" onchange="markAsDirty();writeCookie()"> <label for="_mld.tex">Schéma relationnel en LaTeX</label></span></li><li><span><input type="checkbox" name="conversions[]" id="_mld.md" value="_mld.md" onchange="markAsDirty();writeCookie()"> <label for="_mld.md">Schéma relationnel en Markdown</label></span></li><li><span><input type="checkbox" name="conversions[]" id="_uml.puml" value="_uml.puml" onchange="markAsDirty();writeCookie()"> <label for="_uml.puml" title="Copiez-collez le résultat sur le site donné en lien pour visualiser le diagramme.">Diagramme de classes UML pour <a href="https://www.plantuml.com/plantuml/uml" target="_blank">PlantUML</a></label></span></li><li><span><input type="checkbox" name="conversions[]" id="_ddl.dbml" value="_ddl.dbml" onchange="markAsDirty();writeCookie()"> <label for="_ddl.dbml" title="DBML (database markup language) est un langage dédié simple et lisible conçu pour définir des structures de base de données.">Définition de la base en <a href="https://dbdiagram.io/" target="_blank">DBML</a></label></span></li></details>
</ul>
</div>
<div class="setting-row">
<label class="setting-label" for="knowledge" title="Vous pouvez adapter les traitements et l'interface de Mocodo online à des besoins plus avancés.">Utilisation avancée</label>
<details class="setting-details">
<summary>Découvrir…</summary>
<ul class="setting-controls" name="knowledge" id="knowledge">
<!-- To be populated by JS -->
<li><span><input type="checkbox" name="knowledge[]" id="advanced_tutorial" value="advanced_tutorial" onchange="markAsDirty();writeCookie();setTutorialKnowledge(event.target.checked)"> <label for="advanced_tutorial" title="Cochez pour remplacer la première partie du tutoriel par la seconde.">Tutoriel (2/2)</label></span></li><li><span><input type="checkbox" name="knowledge[]" id="weak" value="weak" onchange="markAsDirty();writeCookie()"> <label for="weak" title="Cochez pour inclure des entités faibles dans les MCD aléatoires et certaines opérations de décomposition. Une entité faible est une entité dont l'identifiant nécessite d'être renforcé par une ou plusieurs entités dont elle dépend fonctionnellement. NB&nbsp;: laisser cette option non cochée ne vous empêchera pas de créer vous-même des entités faibles.">Entité faible (ou identification relative), cardinalités notées&nbsp;&nbsp;</label><select onchange="markAsDirty();writeCookie()" name="strengthen_card" id="strengthen_card">
<option>1,1</option>
<option value="_1,1_" selected="selected">1̲,1̲</option>
<option>(1,1)</option>
<option>1,1(R)</option>
<option>1,1🄡</option>
<option>1,1®</option>
<option>(R)1,1</option>
<option>🄡1,1</option>
<option>®1,1</option>
</select></span></li><li><span><input type="checkbox" name="knowledge[]" id="cluster" value="cluster" onchange="markAsDirty();writeCookie();setClusterKnowledge(event.target.checked)"> <label for="cluster" title="Cochez pour inclure une agrégation simple dans les MCD aléatoires et pour ajouter au menu «&nbsp;Révéler&nbsp;» une option permettant de la visualiser comme une Contrainte d'intégrité fonctionnelle. Ces notions voisines traitent du cas où une des entités participant à une association est complètement déterminée par la connaissance d'autres entités participantes&nbsp;: une ou plusieurs dans le cas général, toutes sous Mocodo.">Agrégation (ou pseudo-entité) / CIF</label></span></li><li><span><input type="checkbox" name="knowledge[]" id="constraints" value="constraints" onchange="markAsDirty();writeCookie()"> <label for="constraints" title="Cochez pour faire apparaître dans le schéma relationnel les contraintes d'unicité en exposant, d'optionalité comme des «&nbsp;?&nbsp;», et de non-optionalité comme des «&nbsp;!&nbsp;». Ces notations sont non standard et peuvent gêner la lecture. NB&nbsp;: quel que soit votre choix, Mocodo ajoute systématiquement les contraintes UNIQUE, NULL ou NOT NULL appropriées dans le code SQL généré.">Contraintes d'unicité et d'optionalité</label></span></li><li><span><input type="checkbox" name="knowledge[]" id="assoc_ids" value="assoc_ids" onchange="markAsDirty();writeCookie()"> <label for="assoc_ids" title="Cochez pour activer cette possibilité, non prévue par Merise, mais qui permet dans certains cas de produire un même schéma relationnel à partir d'un schéma conceptuel plus simple.">Autoriser les identifiants supplémentaires dans les associations</label></span></li><li><span><input type="checkbox" name="knowledge[]" id="reproductibility" value="reproductibility" onchange="markAsDirty();writeCookie()"> <label for="reproductibility" title="Cochez pour que la longueur de la première ligne du texte-source soit prise comme germe du générateur pseudo-aléatoire. Ainsi, les algorithmes randomisés produiront toujours la même sortie sur un même texte-source.">Reproductibilité des tirages pseudo-aléatoires</label></span></li><li><span><input type="checkbox" name="knowledge[]" id="random" value="random" onchange="markAsDirty();writeCookie();setRandomKnowledge(event.target.checked)"> <label for="random" title="Cochez pour ajouter un bouton donnant accès à des opérations de masquage des libellés et de génération d'exercices aléatoires.">Masquage et génération aléatoire</label></span></li><li><span><input type="checkbox" name="knowledge[]" id="decomposition" value="decomposition" onchange="markAsDirty();writeCookie();setDecompositionKnowledge(event.target.checked)"> <label for="decomposition" title="Cochez pour ajouter un bouton donnant accès à des opérations de réécriture de certains types d'associations.">Décomposition d'associations</label></span></li></ul>
</details>
</div>
<div class="setting-row">
<label class="setting-label" for="lib" title="URL d'un répertoire distant. Si l'utilisateur modifie le titre du MCD, Mocodo y cherchera un fichier de même nom (extension '.mcd' facultative) et, s'il existe, remplacera le texte d'entrée par son contenu.">Bibliothèque de MCD</label>
<div class="setting-controls">
<input type="url" name="lib" id="lib" onchange="markAsDirty();writeCookie()" placeholder="https://your_server.com/path/to/your/mcd/directory" pattern="[Hh][Tt][Tt][Pp][Ss]?:\/\/(?:(?:[a-zA-Z\u00a1-\uffff0-9]+-?)*[a-zA-Z\u00a1-\uffff0-9]+)(?:\.(?:[a-zA-Z\u00a1-\uffff0-9]+-?)*[a-zA-Z\u00a1-\uffff0-9]+)*(?:\.(?:[a-zA-Z\u00a1-\uffff]{2,}))(?::\d{2,5})?(?:\/[^\s]*)?">
</div>
</div>
<div style="display: none;">
</div>
</div>
</div>
<div id="geoContents" class="contents" style="display: none;">
<fieldset>
<legend>Coordonnées du centre des boîtes</legend>
<div id="coords"><div><label>JOUEUR</label> <input value="49" type="text" onfocus="markAsMoved()" name="cx0" id="cx0" min="0"> <input value="77" type="text" onfocus="markAsMoved()" name="cy0" id="cy0" min="0"> </div><div><label>TENTE_VALIDATION</label> <input value="178" type="text" onfocus="markAsMoved()" name="cx1" id="cx1" min="0"> <input value="77" type="text" onfocus="markAsMoved()" name="cy1" id="cy1" min="0"> </div><div><label>TOUR</label> <input value="302" type="text" onfocus="markAsMoved()" name="cx2" id="cx2" min="0"> <input value="77" type="text" onfocus="markAsMoved()" name="cy2" id="cy2" min="0"> </div><div><label>CARTE</label> <input value="178" type="text" onfocus="markAsMoved()" name="cx3" id="cx3" min="0"> <input value="178" type="text" onfocus="markAsMoved()" name="cy3" id="cy3" min="0"> </div></div>
</fieldset>
<fieldset>
<legend>Décalage des cardinalités</legend>
<div id="cards"><div><label for="shift0">TENTE_VALIDATION,TOUR,0</label> <input value="0" type="text" onfocus="markAsMoved()" name="shift0" id="shift0"></div><div><label for="shift1">TENTE_VALIDATION,JOUEUR,0</label> <input value="0" type="text" onfocus="markAsMoved()" name="shift1" id="shift1"></div><div><label for="shift2">TENTE_VALIDATION,CARTE,0</label> <input value="0" type="text" onfocus="markAsMoved()" name="shift2" id="shift2"></div></div>
</fieldset>
<fieldset>
<legend>Zone de rognage</legend>
<div id="size"><div><label>&nbsp;</label> <input value="346" type="text" onfocus="markAsMoved()" name="width" id="width" min="0"> <input value="238" type="text" onfocus="markAsMoved()" name="height" id="height" min="0"> </div></div>
</fieldset>
<fieldset>
<legend>Position des flèches des associations</legend>
<div id="arrows"></div>
</fieldset>
</div>
</div>
</div>
<div id="outputZone">
<div class="line"></div>
<ul class="tabs">
<li><a href="#diagramAndSupplementOutput" id="diagramTab" class="first_tab active"><span>Diagramme</span></a></li>
<li><a href="#convertOutput"><span>Autres sorties</span></a></li>
<li><a href="#errorOutput" id="errorTab"><span>Erreurs</span></a></li>
</ul>
<div class="pane">
<div id="outputButtons" class="buttons">
<span class="customButton tooltip" id="refreshButton" onclick="generate()" style="background-image: url(&quot;web/png/refresh.png&quot;); display: inline-block;"><span class="tooltiptext">Rafraîchir</span></span>
<div id="rotatingButton" style="display: none;">
<span class="customButton" id="empty" style="background-image: url(web/png/empty.png);"></span>
<span class="customButton" id="refreshRotatingButton" style="background-image: url(web/png/refresh_rotating.png);"></span>
</div>
<a class="customButton tooltip" id="downloadButton" href="https://www.mocodo.net/web//sessions/86.221.249.148-53ib3hkcfh14h3uqg6e8d1ldd2/MCD.zip" download="MCD.zip" target="_blank" style="background-image: url(&quot;web/png/download.png&quot;); display: inline-block;"><span class="tooltiptext">Télécharger</span></a>
</div>
<div id="diagramAndSupplementOutput">
<div id="diagramOutput" class="contents active"><!--?xml version="1.0" encoding="utf-8"?-->
<!-- Generated by Mocodo 4.2.4 -->
<svg width="346" height="238" viewBox="0 0 346 238" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="346" height="238" fill="#f7f7f7" stroke="#808080" stroke-width="1" stroke-dasharray="2,2"></rect>
<!-- Association TENTE_VALIDATION -->
<g>
<line x1="302" y1="77" x2="178" y2="77" stroke="#d6604d" stroke-width="2"></line>
<line x1="49" y1="77" x2="178" y2="77" stroke="#d6604d" stroke-width="2"></line>
<line x1="178" y1="178" x2="178" y2="77" stroke="#d6604d" stroke-width="2"></line>
<g>
<path d="M221 52 a14 14 90 0 1 14 14 V77 h-114 V66 a14 14 90 0 1 14 -14" fill="#f4a582" stroke="#f4a582" stroke-width="0"></path>
<path d="M235 77 v11 a14 14 90 0 1 -14 14 H135 a14 14 90 0 1 -14 -14 V77 H114" fill="#fddbc7" stroke="#fddbc7" stroke-width="0"></path>
<rect x="121" y="52" width="114" height="50" fill="none" rx="14" stroke="#d6604d" stroke-width="2"></rect>
<line x1="121" y1="77" x2="235" y2="77" stroke="#d6604d" stroke-width="1"></line>
<text x="129" y="69.75" fill="#000000" font-family="Verdana" font-size="12">tente_validation</text>
<text x="128" y="94.8" fill="#000000" font-family="Verdana" font-size="12">nb_tentatives</text>
</g>
<text x="240" y="94" fill="#2166ac" font-family="Verdana" font-size="12">1,N</text>
<text x="94" y="94" fill="#2166ac" font-family="Verdana" font-size="12">1,N</text>
<text x="183" y="119" fill="#2166ac" font-family="Verdana" font-size="12">1,N</text>
</g>
<!-- Entity JOUEUR -->
<g>
<g>
<rect x="9" y="9" width="80" height="25" fill="#92c5de" stroke="#808080" stroke-width="1" stroke-dasharray="2,2" opacity="1"></rect>
<rect x="9" y="34" width="80" height="111" fill="#d1e5f0" stroke="#808080" stroke-width="1" stroke-dasharray="2,2" opacity="1"></rect>
<rect x="9" y="9" width="80" height="136" fill="none" stroke="#4393c3" stroke-width="2" opacity="1"></rect>
<line x1="9" y1="34" x2="89" y2="34" stroke="#4393c3" stroke-width="1"></line>
</g>
<text x="29" y="26.75" fill="#000000" font-family="Verdana" font-size="12">joueur</text>
<text x="14" y="51.8" fill="#000000" font-family="Verdana" font-size="12">idjoueur</text>
<line x1="14" y1="54" x2="65" y2="54" stroke="#000000" stroke-width="1"></line>
<text x="14" y="68.8" fill="#000000" font-family="Verdana" font-size="12">nom</text>
<text x="14" y="85.8" fill="#000000" font-family="Verdana" font-size="12">prenom</text>
<text x="14" y="102.8" fill="#000000" font-family="Verdana" font-size="12">pseudo</text>
<text x="14" y="119.8" fill="#000000" font-family="Verdana" font-size="12">annee_nais</text>
<text x="14" y="136.8" fill="#000000" font-family="Verdana" font-size="12">email</text>
</g>
<!-- Entity TOUR -->
<g>
<g>
<rect x="267" y="52" width="70" height="25" fill="#92c5de" stroke="#808080" stroke-width="1" stroke-dasharray="2,2" opacity="1"></rect>
<rect x="267" y="77" width="70" height="25" fill="#d1e5f0" stroke="#808080" stroke-width="1" stroke-dasharray="2,2" opacity="1"></rect>
<rect x="267" y="52" width="70" height="50" fill="none" stroke="#4393c3" stroke-width="2" opacity="1"></rect>
<line x1="267" y1="77" x2="337" y2="77" stroke="#4393c3" stroke-width="1"></line>
</g>
<text x="289" y="69.75" fill="#000000" font-family="Verdana" font-size="12">tour</text>
<text x="272" y="94.8" fill="#000000" font-family="Verdana" font-size="12">num_tour</text>
<line x1="272" y1="97" x2="332" y2="97" stroke="#000000" stroke-width="1"></line>
</g>
<!-- Entity CARTE -->
<g>
<g>
<rect x="152" y="127" width="52" height="25" fill="#92c5de" stroke="#808080" stroke-width="1" stroke-dasharray="2,2" opacity="1"></rect>
<rect x="152" y="152" width="52" height="77" fill="#d1e5f0" stroke="#808080" stroke-width="1" stroke-dasharray="2,2" opacity="1"></rect>
<rect x="152" y="127" width="52" height="102" fill="none" stroke="#4393c3" stroke-width="2" opacity="1"></rect>
<line x1="152" y1="152" x2="204" y2="152" stroke="#4393c3" stroke-width="1"></line>
</g>
<text x="163" y="144.75" fill="#000000" font-family="Verdana" font-size="12">carte</text>
<text x="157" y="169.8" fill="#000000" font-family="Verdana" font-size="12">idcarte</text>
<line x1="157" y1="172" x2="199" y2="172" stroke="#000000" stroke-width="1"></line>
<text x="157" y="186.8" fill="#000000" font-family="Verdana" font-size="12">niveau</text>
<text x="157" y="203.8" fill="#000000" font-family="Verdana" font-size="12">img</text>
<text x="157" y="220.8" fill="#000000" font-family="Verdana" font-size="12">points</text>
</g>
</svg></div>
<div id="diagramOutputSupplement" class="contents"></div>
</div>
<div id="convertOutput" class="contents" style="display: none;"><fieldset class="listing"><legend data-index="0">⧉ Lien de partage du MCD</legend><pre><code class="language-none" id="code-0">https://www.mocodo.net/?mcd=eNo1jsENAzEIBP-uggL45HtFpAWLxCjidIbIhqs_-JK8GKHZ1e4WHGMDaftFCGod4T34eydHMwRSZa5KMhG4kxzFWZ3rSYc0cjFFuN3BbTUk_MsSnzScN9BHXZF0T55lifmLXheV8pOkXZAj0qJAkP7KESbq8wNFbzxa
</code></pre></fieldset></div>
<div id="errorOutput" class="contents" style="display: none;"></div>
</div>
</div>
</form>
</div>
<div id="navigation">
<a title="Voir le code sur GitHub." target="_blank" href="https://github.com/laowantong/mocodo">Mocodo 4.2.4</a>
&nbsp;&nbsp;
<img class="inlineIcon" src="Mocodo5_fichiers/basthon_play.png" alt="Basthon" title="Ouvrir ce MCD dans un notebook pour accéder à toutes les fonctionnalités du logiciel sans avoir à l'installer." onclick="sendToBasthon()">&nbsp;&nbsp;<a target="_blank" title="Un bac à sable en ligne basé sur Jupyter Notebook." href="https://basthon.fr/">Basthon</a>
&nbsp;&nbsp;
<a target="_blank" href="https://rawgit.com/laowantong/mocodo/master/doc/fr_refman.html">Documentation</a>
&nbsp;&nbsp;
<a title="Contacter l'auteur par mail." onclick="alert('Pour envoyer vos compliments à l\'auteur, trouvez d\'abord son nom sous l\'onglet d\'information, puis adressez un mail à prénom.nom@univ-lorraine.fr. Attention, tout problème ou demande concernant le logiciel doit préférablement faire l\'objet d\'une issue GitHub (« Récriminations »).')">Félicitations</a>
&nbsp;&nbsp;
<a title="Créer une issue GitHub." target="_blank" href="https://github.com/laowantong/mocodo/issues">Récriminations</a>
</div>
</body></html>