diff --git a/docs/case/.gitignore b/docs/case/.gitignore index 8f14b2e0ff65394c6e59d62c4b0f6c63aea1eb7b..358a41691f64b61070e13b8d573e160298d9b94d 100644 --- a/docs/case/.gitignore +++ b/docs/case/.gitignore @@ -3,3 +3,5 @@ *.log *.out *.fls +*.bbl +*.blg diff --git a/docs/case/bibliography.bib b/docs/case/bibliography.bib new file mode 100644 index 0000000000000000000000000000000000000000..a1f44dce4601765c6f8be221838a85e2bfe4f8f0 --- /dev/null +++ b/docs/case/bibliography.bib @@ -0,0 +1,123 @@ +@inproceedings{hinkel_ttc_2018, + address = {Toulouse, France}, + title = {The {TTC} 2018 {Social} {Media} {Case}}, + volume = {2310}, + url = {http://ceur-ws.org/Vol-2310/paper5.pdf}, + abstract = {To cope with the increased complexity, models are used to capture what is considered the essence of a system. Models are often analyzed to obtain insights on the modeled system. Often, these analyses have a heuristical nature and need to be adjusted according to updated requirements and are therefore a subject of maintenance activities. It is thus necessary to support writing model queries with adequate languages. However, in order to stay meaningful, the analysis results need to be refreshed as soon as the underlying models change. Therefore, a good execution speed is mandatory in order to cope with frequent model changes. In this paper, we propose a benchmark to assess model query technologies in the presence of model change sequences in the domain of social media.}, + language = {en}, + booktitle = {Proceedings of the 11th {Transformation} {Tool} {Contest}}, + publisher = {CEUR-WS.org}, + author = {Hinkel, Georg}, + month = jun, + year = {2018}, + pages = {39--43}, + file = {Hinkel - The TTC 2018 Social Media Case.pdf:/home/antonio/.zotero/zotero/lo4gxuop.default/zotero/storage/8ZS692NG/Hinkel - The TTC 2018 Social Media Case.pdf:application/pdf} +} + +@inproceedings{gotz_quality-based_2018, + address = {Toulouse, France}, + title = {Quality-based {Software}-{Selection} and {Hardware}-{Mapping} as {Model} {Transformation} {Problem}}, + volume = {2310}, + url = {http://ceur-ws.org/Vol-2310/paper1.pdf}, + abstract = {In this TTC case, we describe the computation of an optimal mapping from software implementations to hardware components for a given set of user requests as a model transformation problem. Further, contracts specify dependencies between components in terms of non-functional properties. Different approaches of this case can be compared in terms of their validity, performance, scalability and, quality w.r.t. the real optimal deployment.}, + language = {en}, + booktitle = {Proceedings of the 11th {Transformation} {Tool} {Contest}}, + publisher = {CEUR-WS.org}, + author = {Götz, Sebastian and Mey, Johannes and Schöne, René and Aßmann, Uwe}, + month = jun, + year = {2018}, + pages = {3--11}, + file = {Götz et al. - Quality-based Software-Selection and Hardware-Mapp.pdf:/home/antonio/.zotero/zotero/lo4gxuop.default/zotero/storage/B8QHPZVC/Götz et al. - Quality-based Software-Selection and Hardware-Mapp.pdf:application/pdf} +} + +@inproceedings{anjorin_families_2017, + address = {Marburg, Germany}, + title = {The {Families} to {Persons} {Case}}, + volume = {2026}, + url = {http://ceur-ws.org/Vol-2026/paper2.pdf}, + abstract = {The Families to Persons case is a well-known example problem for bidirectional transformations. This paper proposes an implementation of this case within the recently developed Benchmarx framework [2], based on previous conceptual work [1].}, + language = {en}, + booktitle = {Proceedings of the 10th {Transformation} {Tool} {Contest}}, + publisher = {CEUR-WS.org}, + author = {Anjorin, Anthony and Buchmann, Thomas and Westfechtel, Bernhard}, + month = jul, + year = {2017}, + pages = {27--34}, + file = {Anjorin et al. - The Families to Persons Case.pdf:/home/antonio/.zotero/zotero/lo4gxuop.default/zotero/storage/F29LELN9/Anjorin et al. - The Families to Persons Case.pdf:application/pdf} +} + +@inproceedings{hinkel_ttc_2017, + address = {Marburg, Germany}, + title = {The {TTC} 2017 {Outage} {System} {Case} for {Incremental} {Model} {Views}}, + volume = {2026}, + url = {http://ceur-ws.org/Vol-2026/paper1.pdf}, + abstract = {To cope with the increased complexity, physical systems are more and more supported by software systems consisting of multiple subsystems. Usually, each of the subsystems uses standards relevant to the subsystem for interoperability with other tools. Thus, one faces the problem that information about the system as a whole is distributed across multiple models. To solve this problem, model views can be introduced to combine these models and extract application-specific knowledge. As an example, the smart grid is a cyber-physical system where one is interested to detect, manage and prevent system outages. The information necessary to do this is split among the standards IEC 61970/61968, IEC 61850 and IEC 62056. This paper presents a benchmark case and evaluation framework for joining information spread across multiple models into a single view, based on a model-based outage management system for smart grids. Because cyber-physical systems often require very fast response times to changes of underlying models, the benchmark focuses especially on the incremental computation of model views.}, + language = {en}, + booktitle = {Proceedings of the 10th {Transformation} {Tool} {Contest}}, + publisher = {CEUR-WS.org}, + author = {Hinkel, Georg}, + month = jul, + year = {2017}, + pages = {3--12}, + file = {Hinkel - The TTC 2017 Outage System Case for Incremental Mo.pdf:/home/antonio/.zotero/zotero/lo4gxuop.default/zotero/storage/NUJ688D8/Hinkel - The TTC 2017 Outage System Case for Incremental Mo.pdf:application/pdf} +} + +@inproceedings{fleck_class_2016, + address = {Vienna, Austria}, + title = {The {Class} {Responsibility} {Assignment} {Case}}, + volume = {1758}, + url = {http://ceur-ws.org/Vol-1758/paper1.pdf}, + abstract = {This paper describes a case study for the ninth Transformation Tool Contest (TTC’16)1. The case is aimed at the production of high-quality designs for object-oriented systems and presents the problem of finding a good class diagram for a given set of methods and attributes with functional and data relationships among them. In order to obtain such a class diagram, dedicated quality metrics that have been defined in the context of the class responsibility assignment problem need to be optimized. Therefore, the focus of this case study is not on the definition of the necessary set of rules, but rather on the orchestration of such rules in order to find the optimal class diagrams. The evaluation of the produced transformation is driven by the quality of the produced models, the complexity of the rule orchestration as well as by the flexibility of the solution and its performance.}, + language = {en}, + booktitle = {Proceedings of the 9th {Transformation} {Tool} {Contest}}, + publisher = {CEUR-WS.org}, + author = {Fleck, Martin and Troya, Javier}, + month = jul, + year = {2016}, + pages = {1--8}, + file = {Fleck et al. - The Class Responsibility Assignment Case.pdf:/home/antonio/.zotero/zotero/lo4gxuop.default/zotero/storage/HZVQQB9A/Fleck et al. - The Class Responsibility Assignment Case.pdf:application/pdf} +} + +@inproceedings{getir_state_2017, + address = {Marburg, Germany}, + title = {State {Elimination} as {Model} {Transformation} {Problem}}, + volume = {2026}, + url = {http://ceur-ws.org/Vol-2026/paper4.pdf}, + abstract = {State elimination has been proposed in the literature as a viable technique for transforming finite state automata (or finite state machines) into equivalent regular expressions. In this TTC case, we consider this well-known technique as a model transformation problem, aiming at evaluating the suitability, performance and scalability of dedicated model transformation techniques w.r.t. this problem.}, + language = {en}, + booktitle = {Proceedings of the 10th {Transformation} {Tool} {Contest}}, + publisher = {CEUR-WS.org}, + author = {Getir, Sinem and Vu, Duc Anh and Peverali, Francois and Struber, Daniel and Kehrer, Timo}, + month = jul, + year = {2017}, + pages = {65--73}, + file = {Getir et al. - State Elimination as Model Transformation Problem.pdf:/home/antonio/.zotero/zotero/lo4gxuop.default/zotero/storage/Z5FDISFM/Getir et al. - State Elimination as Model Transformation Problem.pdf:application/pdf} +} + +@Misc{live2017, + author = {Georg Hinkel}, + title = {The {TTC 2017} Live Contest on Transformation Reuse in the Presence of Multiple Inheritance and Redefinitions}, + howpublished = {\url{https://www.transformation-tool-contest.eu/2017/solutions_livecontest.html}}, + month = jul, + year = {2017}, + note = {Last accessed on 2017-05-10. Archived on \url{http://archive.is/gHEys}}, +} + +@Misc{live2016, + author = {Antonio García-Domínguez}, + title = {{TTC'16} Live Contest Case Study: execution of dataflow-based model transformations}, + howpublished = {\url{https://www.transformation-tool-contest.eu/2016/livecontest.html}}, + month = jul, + year = {2016}, + note = {Last accessed on 2017-05-10. Archived on \url{http://archive.is/gHEys}}, +} + +@Misc{atlzoo, + author = {{Eclipse Foundation}}, + title = {{ATL} Transformations}, + howpublished = {\url{https://www.eclipse.org/atl/atlTransformations/}}, + month = jul, + year = {2019}, + note = {Last accessed on 2017-05-10. Archived on \url{http://archive.is/HdoHM}}, +} + diff --git a/docs/case/case-description.pdf b/docs/case/case-description.pdf index d89f7bde2321734bce218e4bebc1d48098cac26d..57c4ed3bdd61554635bfc4e9e9904a9ebc3db8d8 100644 Binary files a/docs/case/case-description.pdf and b/docs/case/case-description.pdf differ diff --git a/docs/case/case-description.tex b/docs/case/case-description.tex index 4a975072a3746d888810c58d19e93a57b171b0d2..0f48a0d56733dd0267d8d93286584d9581eacefb 100644 --- a/docs/case/case-description.tex +++ b/docs/case/case-description.tex @@ -17,6 +17,9 @@ \usepackage[pdftex,colorlinks=true]{hyperref} +\usepackage{listings} +\lstset{columns=flexible} + \newcommand*{\class}[1]{\textsc{#1}} \newcommand*{\feature}[1]{\emph{#1}} \newcommand*{\file}[1]{\texttt{#1}} @@ -43,22 +46,24 @@ Past editions of the Transformation Tool Contest have focused on a variety of topics: \begin{itemize} -\item In 2018, the Quality-based Software Selection and Hardware-Mapping case - discussed optimisation-oriented model transformations (with a combination of - performance and solution quality). The Social Media Live Case considered - performance in updating model views as models changed (with a strong - preference for approaches supporting incrementality). - -\item In 2017, the Smart Grid case focused on incrementality, the Families to - Persons case discussed bidirectional transformations, State Elimination - focused on performance and the live case on Transformation Reuse discussed - mechanisms to share complex logic across multiple versions of a - transformation. +\item In 2018, the Quality-based Software Selection and Hardware-Mapping + case~\cite{gotz_quality-based_2018} discussed optimisation-oriented model + transformations (with a combination of performance and solution quality). The + Social Media Live Case~\cite{hinkel_ttc_2018} considered performance in + updating model views as models changed (with a strong preference for + approaches supporting incrementality). + +\item In 2017, the Smart Grid case focused on + incrementality~\cite{hinkel_ttc_2017}, the Families to Persons case discussed + bidirectional transformations~\cite{anjorin_families_2017}, State Elimination + focused on performance and the live case on Transformation + Reuse~\cite{live2017} discussed mechanisms to share complex logic across + multiple versions of a transformation. \item In 2016, optimisation-oriented model transformations were discussed in - considerable breadth through the Class Responsibility Assignment case, and an - alternative dataflow-based notation for model transformation was evaluated in - the live case study. + considerable breadth through the Class Responsibility Assignment + case~\cite{fleck_class_2016}, and an alternative dataflow-based notation for + model transformation was evaluated in the live case study~\cite{live2016}. \end{itemize} While these were notable examples of realistic transformations, they were @@ -66,21 +71,20 @@ narrowly focused on a specific topic,and their inherent complexity discouraged some attendees from trying their hand with their own research agenda on the transformation. -In this case, we propose a broader contest that welcomes all active lines of -work on model transformation, based on a simpler, well-known transformation from -the ATL Zoo\footnote{\url{https://www.eclipse.org/atl/atlTransformations/}}: the -TT2BDD (Truth Tables to Binary Decision Diagrams) example transformation. -Striving for raw performance is an option, but the case welcomes approaches that -focus on other attributes of interest to a high-quality model transformation. -This includes attributes such as verifiability, traceability, bidirectionality, -or understandability, but solution providers are welcome to propose their own +This year, we propose a broader contest that welcomes all active lines of work +on model transformation. It is based on a simpler, well-known transformation +from the ATL Zoo~\cite{atlzoo}: TT2BDD (Truth Tables to Binary Decision +Diagrams). Striving for raw performance is an option, but the case welcomes +approaches that focus on other attributes of interest of a high-quality model +transformation: for example, verifiability, traceability, bidirectionality, or +understandability. Solution providers are welcome to propose their own attributes of interest. In general, this case is proposed as a showcase of the current variety of model transformation tools. The rest of the document is structured as follows: Section~\ref{sec:transf-descr} describes the TT2BDD transformation. -Section~\ref{sec:task-suggestions} suggests several tasks of interest that could -be tackled in a solution (authors are free to propose their own tasks of +Section~\ref{sec:task-suggestions} several tasks of interest that +should be tackled in a solution (authors are free to propose their own tasks of interest). Section~\ref{sec:benchmark-framework} mentions the benchmark framework for those solutions that focus on raw performance. Finally, Section~\ref{sec:evaluation} mentions an outline of the initial audience-based @@ -124,8 +128,8 @@ outline of an implementation. \label{tab:tt-example} \end{table} -The input metamodel is shown on Figure~\ref{fig:tt-metamodel}. A -\class{Truth\-Table} object acts as the root of the model, and contains a +The input metamodel is shown on Figure~\ref{fig:tt-metamodel}. The +\class{Truth\-Table} class is as the root of the model, and contains a collection of \class{Port}s and \class{Row}s. \class{Port}s come in two types: \class{Input\-Port}s and \class{Output\-Port}s. \class{Row}s contain sequences of \class{Cell}s, which assign values to the \class{Input\-Port}s and @@ -161,7 +165,7 @@ $B$ are 0, then $S$ should be 0. level 7/.style={level distance=2em}, port/.style={circle, draw}, value/.style={draw}, - assignment/.style={ellipse, fill=blue!20}, + assignment/.style={fill=blue!20}, ] \node[port] {$A$} child[grow=left] { @@ -245,8 +249,8 @@ $B$ are 0, then $S$ should be 0. \label{fig:bdd-equivalent} \end{figure} -The output metamodel is shown on Figure~\ref{fig:bdd-metamodel}. A \class{BDD} -object acts as the root of the model, and contains the root of the \class{Tree} +The output metamodel is shown on Figure~\ref{fig:bdd-metamodel}. The \class{BDD} +class is the root of the model, and contains the root of the \class{Tree} and a collection of \class{Port}s. Similarly to the Truth Tables metamodel, there are \class{Input\-Port}s and \class{Output\-Port}s. @@ -260,7 +264,7 @@ to each of the available \class{Output\-Port}s. The equivalent BDD for the truth table on Table~\ref{tab:tt-example} is shown on Figure~\ref{fig:bdd-equivalent}. \class{Subtree}s are represented by the circle referencing an \class{Input\-Port} and their subtrees for when the port takes a -0 or 1 value. \class{Assignment}s are represented by the shaded nodes that +0 or 1 value. \class{Assignment}s are represented by the highlighted nodes that provide values to the \class{Output\-Port}s. \subsection{Process Outline} @@ -308,8 +312,8 @@ which points to the equivalent BDD \class{Input\-Port} and has two This simple approach does not necessarily ensure a minimal subtree, as in some points there may be multiple ports to choose from. It may require improvements for cases where there are no input ports which are defined in all available -rows. Authors are welcome to try and implement a more efficient or optimal -approach in their solutions. +rows. Authors are welcome to implement a more efficient or optimal approach in +their solutions. \section{Main Task} \label{sec:task-suggestions} @@ -350,7 +354,11 @@ languages. \section{Benchmark Framework} \label{sec:benchmark-framework} -If focusing on performance, the solution authors should integrate their solution with the provided benchmark framework. It is based on that of the TTC 2017 Smart Grid case\footnote{\url{https://www.transformation-tool-contest.eu/2017/solutions_smartGrid.html}}, and supports the automated build and execution of solutions. For this specific case study, the visualisation of the results is currently disabled. +If focusing on performance, the solution authors should integrate their solution +with the provided benchmark framework. It is based on that of the TTC 2017 Smart +Grid case~\cite{hinkel_ttc_2017}, and supports the automated build and execution +of solutions. For this specific case study, the visualisation of the results is +currently disabled. The benchmark consists of three phases: @@ -379,12 +387,21 @@ standard output a line with the following fields, separated by semicolons nanoseconds. \end{itemize} +\lstinputlisting[ + float,frame=tb,numbers=left, + caption={\file{solution.ini} file for the reference ATL solution}, + label=lst:ini-atl +]{../../solutions/EMFSolutionATL/solution.ini} + To enable automatic execution by the benchmark framework, solutions should add a subdirectory to the \file{solutions} folder of the benchmark with a -\file{solution.ini}q file stating how the solution should be built and how it -should be run. Solution authors will want to study the available -\file{solution.ini} for the sample ATL solution, and adjust its settings in -order to run the appropriate commands for building and running their solutions. +\file{solution.ini} file stating how the solution should be built and how it +should be run. As an example, the \file{solution.ini} file for the reference ATL +solution is shown on Listing~\ref{lst:ini-atl}. In the \file{build} section, the +\file{default} option specifies the command to build and test the solution, and +the \file{skipTests} option specifies the command to build the solution while +skipping unit tests. In the \file{run} section, the \file{cmd} option specifies +the command to run the solution. The repetition of executions as defined in the benchmark configuration is done by the benchmark. For 5 runs, the specified command will be called 5 times, @@ -448,4 +465,7 @@ the evaluation will operate on two dimensions: research areas may be awarded. \end{itemize} +\bibliographystyle{plain} +\bibliography{bibliography} + \end{document} diff --git a/docs/case/figures/bdd.pdf b/docs/case/figures/bdd.pdf index 74ae189f8a8087585d2872beb993421338c3ca49..e141827b612480fcb103c66b67414719c32ac33b 100644 Binary files a/docs/case/figures/bdd.pdf and b/docs/case/figures/bdd.pdf differ diff --git a/metamodels/ttc2019.metamodels/models/BDD.aird b/metamodels/ttc2019.metamodels/models/BDD.aird index 60db27e79b4680a96acf459a224b9f7cc117d412..b5912f1b8f52f24903e49f9174d2331975a95ba7 100644 --- a/metamodels/ttc2019.metamodels/models/BDD.aird +++ b/metamodels/ttc2019.metamodels/models/BDD.aird @@ -189,17 +189,17 @@ </edges> <edges xmi:type="notation:Edge" xmi:id="_OVWsAHKKEemby9dK47XbYQ" type="4001" element="_OUMOYHKKEemby9dK47XbYQ" source="_OUzSYHKKEemby9dK47XbYQ" target="_OUty03KKEemby9dK47XbYQ"> <children xmi:type="notation:Node" xmi:id="_OVXTEHKKEemby9dK47XbYQ" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVXTEXKKEemby9dK47XbYQ" x="-33" y="-10"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVXTEXKKEemby9dK47XbYQ" x="-29" y="-10"/> </children> <children xmi:type="notation:Node" xmi:id="_OVXTEnKKEemby9dK47XbYQ" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVXTE3KKEemby9dK47XbYQ" x="8" y="18"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVXTE3KKEemby9dK47XbYQ" x="9" y="18"/> </children> <children xmi:type="notation:Node" xmi:id="_OVX6IHKKEemby9dK47XbYQ" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVX6IXKKEemby9dK47XbYQ" x="-24" y="10"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVX6IXKKEemby9dK47XbYQ" x="18" y="10"/> </children> - <styles xmi:type="notation:ConnectorStyle" xmi:id="_OVWsAXKKEemby9dK47XbYQ" routing="Tree"/> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_OVWsAXKKEemby9dK47XbYQ" routing="Rectilinear"/> <styles xmi:type="notation:FontStyle" xmi:id="_OVWsAnKKEemby9dK47XbYQ" fontName="Ubuntu" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OVWsA3KKEemby9dK47XbYQ" points="[0, 0, 229, -53]$[0, 27, 229, -26]$[-144, 27, 85, -26]$[-144, 52, 85, -1]"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OVWsA3KKEemby9dK47XbYQ" points="[0, 0, 229, -53]$[0, 27, 229, -26]$[-74, 27, 155, -26]$[-74, 62, 155, 9]$[-126, 62, 103, 9]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVYhMHKKEemby9dK47XbYQ" id="(0.5,1.0)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVYhMXKKEemby9dK47XbYQ" id="(0.13333333333333333,0.02)"/> </edges> @@ -253,49 +253,49 @@ </edges> <edges xmi:type="notation:Edge" xmi:id="_OVfO4nKKEemby9dK47XbYQ" type="4001" element="_OUUKMHKKEemby9dK47XbYQ" source="_OUty03KKEemby9dK47XbYQ" target="_OUzSYHKKEemby9dK47XbYQ"> <children xmi:type="notation:Node" xmi:id="_OVfO5nKKEemby9dK47XbYQ" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVf18HKKEemby9dK47XbYQ" x="-8" y="-10"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVf18HKKEemby9dK47XbYQ" x="-6" y="-10"/> </children> <children xmi:type="notation:Node" xmi:id="_OVf18XKKEemby9dK47XbYQ" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVf18nKKEemby9dK47XbYQ" x="5" y="57"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVf18nKKEemby9dK47XbYQ" x="-20" y="57"/> </children> <children xmi:type="notation:Node" xmi:id="_OVf183KKEemby9dK47XbYQ" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVf19HKKEemby9dK47XbYQ" x="-51" y="10"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVf19HKKEemby9dK47XbYQ" x="-50" y="-12"/> </children> <styles xmi:type="notation:ConnectorStyle" xmi:id="_OVfO43KKEemby9dK47XbYQ" routing="Rectilinear"/> <styles xmi:type="notation:FontStyle" xmi:id="_OVfO5HKKEemby9dK47XbYQ" fontName="Ubuntu" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OVfO5XKKEemby9dK47XbYQ" points="[-14, 0, -199, 52]$[-14, -70, -199, -18]$[126, -70, -59, -18]"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OVfO5XKKEemby9dK47XbYQ" points="[-14, 0, -199, 52]$[-14, -75, -199, -23]$[126, -75, -59, -23]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OViSMHKKEemby9dK47XbYQ" id="(0.5,0.0)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OViSMXKKEemby9dK47XbYQ" id="(0.5,1.0)"/> </edges> <edges xmi:type="notation:Edge" xmi:id="_OViSMnKKEemby9dK47XbYQ" type="4001" element="_OUVYUHKKEemby9dK47XbYQ" source="_OUty03KKEemby9dK47XbYQ" target="_OUzSYHKKEemby9dK47XbYQ"> <children xmi:type="notation:Node" xmi:id="_OVkHYHKKEemby9dK47XbYQ" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVkHYXKKEemby9dK47XbYQ" x="25" y="-10"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVkHYXKKEemby9dK47XbYQ" x="27" y="-10"/> </children> <children xmi:type="notation:Node" xmi:id="_OVkHYnKKEemby9dK47XbYQ" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVkHY3KKEemby9dK47XbYQ" x="3" y="-60"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVkHY3KKEemby9dK47XbYQ" x="-30" y="-60"/> </children> <children xmi:type="notation:Node" xmi:id="_OVkucHKKEemby9dK47XbYQ" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVkucXKKEemby9dK47XbYQ" x="-39" y="15"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVkucXKKEemby9dK47XbYQ" x="-42" y="-15"/> </children> <styles xmi:type="notation:ConnectorStyle" xmi:id="_OViSM3KKEemby9dK47XbYQ" routing="Rectilinear"/> <styles xmi:type="notation:FontStyle" xmi:id="_OViSNHKKEemby9dK47XbYQ" fontName="Ubuntu" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OViSNXKKEemby9dK47XbYQ" points="[-49, 0, -234, 52]$[-49, -102, -234, -50]$[126, -102, -59, -50]"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OViSNXKKEemby9dK47XbYQ" points="[-49, 0, -234, 52]$[-49, -105, -234, -53]$[126, -105, -59, -53]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVkucnKKEemby9dK47XbYQ" id="(0.5,0.0)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVkuc3KKEemby9dK47XbYQ" id="(0.5,1.0)"/> </edges> <edges xmi:type="notation:Edge" xmi:id="_OVkudHKKEemby9dK47XbYQ" type="4001" element="_OUWmcHKKEemby9dK47XbYQ" source="_OUqvgHKKEemby9dK47XbYQ" target="_OUzSYHKKEemby9dK47XbYQ"> <children xmi:type="notation:Node" xmi:id="_OVlVgHKKEemby9dK47XbYQ" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVlVgXKKEemby9dK47XbYQ" x="29" y="-10"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVlVgXKKEemby9dK47XbYQ" x="36" y="-10"/> </children> <children xmi:type="notation:Node" xmi:id="_OVl8kHKKEemby9dK47XbYQ" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVl8kXKKEemby9dK47XbYQ" x="-99" y="-34"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVl8kXKKEemby9dK47XbYQ" x="-101" y="-34"/> </children> <children xmi:type="notation:Node" xmi:id="_OVl8knKKEemby9dK47XbYQ" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVl8k3KKEemby9dK47XbYQ" x="67" y="-17"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OVl8k3KKEemby9dK47XbYQ" x="69" y="-12"/> </children> <styles xmi:type="notation:ConnectorStyle" xmi:id="_OVkudXKKEemby9dK47XbYQ" routing="Rectilinear"/> <styles xmi:type="notation:FontStyle" xmi:id="_OVkudnKKEemby9dK47XbYQ" fontName="Ubuntu" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OVkud3KKEemby9dK47XbYQ" points="[-1, 0, -551, 212]$[-1, -280, -551, -68]$[491, -280, -59, -68]"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OVkud3KKEemby9dK47XbYQ" points="[-1, 0, -551, 212]$[-1, -295, -551, -83]$[491, -295, -59, -83]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVl8lHKKEemby9dK47XbYQ" id="(0.5,0.0)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVl8lXKKEemby9dK47XbYQ" id="(0.5,1.0)"/> </edges> @@ -468,7 +468,8 @@ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_OUMOYHKKEemby9dK47XbYQ" sourceNode="_OTTdkHKKEemby9dK47XbYQ" targetNode="_OTOlEHKKEemby9dK47XbYQ"> <target xmi:type="ecore:EClass" href="BDD.ecore#//Subtree"/> <semanticElements xmi:type="ecore:EClass" href="BDD.ecore#//Subtree"/> - <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_OUNcgHKKEemby9dK47XbYQ" targetArrow="InputClosedArrow" routingStyle="tree"> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_OUNcgHKKEemby9dK47XbYQ" targetArrow="InputClosedArrow" routingStyle="manhattan"> + <customFeatures>routingStyle</customFeatures> <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_OUNcgXKKEemby9dK47XbYQ" showIcon="false"> <labelFormat>italic</labelFormat> diff --git a/metamodels/ttc2019.metamodels/models/bdd class diagram.pdf b/metamodels/ttc2019.metamodels/models/bdd class diagram.pdf index 74ae189f8a8087585d2872beb993421338c3ca49..e141827b612480fcb103c66b67414719c32ac33b 100644 Binary files a/metamodels/ttc2019.metamodels/models/bdd class diagram.pdf and b/metamodels/ttc2019.metamodels/models/bdd class diagram.pdf differ diff --git a/metamodels/ttc2019.metamodels/models/bdd class diagram.svg b/metamodels/ttc2019.metamodels/models/bdd class diagram.svg index 3bf13498394191225ea85f138373c7445a0ea065..725c8afe89a7de645232813e49c71b1f353d15b5 100644 --- a/metamodels/ttc2019.metamodels/models/bdd class diagram.svg +++ b/metamodels/ttc2019.metamodels/models/bdd class diagram.svg @@ -12,20 +12,20 @@ contentScriptType="text/ecmascript" preserveAspectRatio="xMidYMid meet" font-size="12" - viewBox="0 0 678.94397 410.54999" + viewBox="0 0 678.94397 412.61301" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" contentStyleType="text/css" font-style="normal" - height="410.54999" + height="412.61301" font-weight="normal" - id="svg547" + id="svg549" sodipodi:docname="bdd class diagram.svg" style="font-style:normal;font-weight:normal;font-size:12px;font-family:Dialog;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" inkscape:version="0.92.3 (2405546, 2018-03-11)"> <metadata - id="metadata551"> + id="metadata553"> <rdf:RDF> <cc:Work rdf:about=""> @@ -47,33 +47,33 @@ inkscape:pageshadow="2" inkscape:window-width="1981" inkscape:window-height="1081" - id="namedview549" + id="namedview551" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" - inkscape:zoom="1.0776256" - inkscape:cx="240.02861" - inkscape:cy="113.33754" + inkscape:zoom="0.52678571" + inkscape:cx="343.444" + inkscape:cy="214" inkscape:window-x="67" inkscape:window-y="34" inkscape:window-maximized="1" - inkscape:current-layer="svg547" /> + inkscape:current-layer="svg549" /> <!--Generated by the Batik Graphics2D SVG Generator--> <defs id="genericDefs" /> <g - id="g545" - transform="translate(-24.056,-17.45)"> + id="g547" + transform="translate(-24.056,-25.387)"> <defs id="defs1"> <linearGradient x1="123" x2="243" - y1="163" + y1="173" gradientUnits="userSpaceOnUse" - y2="272" + y2="282" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" @@ -93,9 +93,9 @@ <linearGradient x1="193" x2="313" - y1="323" + y1="333" gradientUnits="userSpaceOnUse" - y2="432" + y2="442" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" @@ -115,9 +115,9 @@ <linearGradient x1="28" x2="146" - y1="323" + y1="333" gradientUnits="userSpaceOnUse" - y2="431" + y2="441" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient3" @@ -137,9 +137,9 @@ <linearGradient x1="363" x2="481" - y1="323" + y1="333" gradientUnits="userSpaceOnUse" - y2="431" + y2="441" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient4" @@ -159,9 +159,9 @@ <linearGradient x1="393" x2="511" - y1="163" + y1="173" gradientUnits="userSpaceOnUse" - y2="271" + y2="281" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient5" @@ -181,9 +181,9 @@ <linearGradient x1="583" x2="701" - y1="163" + y1="173" gradientUnits="userSpaceOnUse" - y2="271" + y2="281" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient6" @@ -203,9 +203,9 @@ <linearGradient x1="524" x2="701" - y1="309" + y1="319" gradientUnits="userSpaceOnUse" - y2="446" + y2="456" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient7" @@ -225,9 +225,9 @@ <linearGradient x1="578" x2="696" - y1="13" + y1="23" gradientUnits="userSpaceOnUse" - y2="121" + y2="131" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient8" @@ -248,7 +248,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath1"> <path - d="M 122,167 H 246 V 269 H 122 Z" + d="M 122,177 H 246 V 279 H 122 Z" id="path43" inkscape:connector-curvature="0" /> </clipPath> @@ -256,7 +256,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath2"> <path - d="M 122,167 H 244 V 267 H 122 Z" + d="M 122,177 H 244 V 277 H 122 Z" id="path46" inkscape:connector-curvature="0" /> </clipPath> @@ -264,7 +264,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath3"> <path - d="m 158,172 h 50 v 18 h -50 z" + d="m 158,182 h 50 v 18 h -50 z" id="path49" inkscape:connector-curvature="0" /> </clipPath> @@ -272,7 +272,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath4"> <path - d="m 158,172 h 54 v 18 h -54 z" + d="m 158,182 h 54 v 18 h -54 z" id="path52" inkscape:connector-curvature="0" /> </clipPath> @@ -280,7 +280,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath5"> <path - d="m 127,195 h 112 v 18 H 127 Z" + d="m 127,205 h 112 v 18 H 127 Z" id="path55" inkscape:connector-curvature="0" /> </clipPath> @@ -288,7 +288,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath6"> <path - d="m 127,195 h 115 v 18 H 127 Z" + d="m 127,205 h 115 v 18 H 127 Z" id="path58" inkscape:connector-curvature="0" /> </clipPath> @@ -296,7 +296,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath7"> <path - d="m 123,193 h 120 v 73 H 123 Z" + d="m 123,203 h 120 v 73 H 123 Z" id="path61" inkscape:connector-curvature="0" /> </clipPath> @@ -304,7 +304,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath8"> <path - d="M 192,327 H 316 V 429 H 192 Z" + d="M 192,337 H 316 V 439 H 192 Z" id="path64" inkscape:connector-curvature="0" /> </clipPath> @@ -312,7 +312,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath9"> <path - d="M 192,327 H 314 V 427 H 192 Z" + d="M 192,337 H 314 V 437 H 192 Z" id="path67" inkscape:connector-curvature="0" /> </clipPath> @@ -320,7 +320,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath10"> <path - d="m 230,332 h 46 v 18 h -46 z" + d="m 230,342 h 46 v 18 h -46 z" id="path70" inkscape:connector-curvature="0" /> </clipPath> @@ -328,7 +328,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath11"> <path - d="m 230,332 h 49 v 18 h -49 z" + d="m 230,342 h 49 v 18 h -49 z" id="path73" inkscape:connector-curvature="0" /> </clipPath> @@ -336,7 +336,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath12"> <path - d="m 197,355 h 112 v 18 H 197 Z" + d="m 197,365 h 112 v 18 H 197 Z" id="path76" inkscape:connector-curvature="0" /> </clipPath> @@ -344,7 +344,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath13"> <path - d="m 197,355 h 115 v 18 H 197 Z" + d="m 197,365 h 115 v 18 H 197 Z" id="path79" inkscape:connector-curvature="0" /> </clipPath> @@ -352,7 +352,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath14"> <path - d="m 193,353 h 120 v 73 H 193 Z" + d="m 193,363 h 120 v 73 H 193 Z" id="path82" inkscape:connector-curvature="0" /> </clipPath> @@ -360,7 +360,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath15"> <path - d="M 27,327 H 149 V 429 H 27 Z" + d="M 27,337 H 149 V 439 H 27 Z" id="path85" inkscape:connector-curvature="0" /> </clipPath> @@ -368,7 +368,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath16"> <path - d="M 27,327 H 147 V 427 H 27 Z" + d="M 27,337 H 147 V 437 H 27 Z" id="path88" inkscape:connector-curvature="0" /> </clipPath> @@ -376,7 +376,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath17"> <path - d="m 47,332 h 80 v 18 H 47 Z" + d="m 47,342 h 80 v 18 H 47 Z" id="path91" inkscape:connector-curvature="0" /> </clipPath> @@ -384,7 +384,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath18"> <path - d="m 47,332 h 83 v 18 H 47 Z" + d="m 47,342 h 83 v 18 H 47 Z" id="path94" inkscape:connector-curvature="0" /> </clipPath> @@ -392,7 +392,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath19"> <path - d="m 28,353 h 118 v 73 H 28 Z" + d="m 28,363 h 118 v 73 H 28 Z" id="path97" inkscape:connector-curvature="0" /> </clipPath> @@ -400,7 +400,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath20"> <path - d="M 362,327 H 484 V 429 H 362 Z" + d="M 362,337 H 484 V 439 H 362 Z" id="path100" inkscape:connector-curvature="0" /> </clipPath> @@ -408,7 +408,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath21"> <path - d="M 362,327 H 482 V 427 H 362 Z" + d="M 362,337 H 482 V 437 H 362 Z" id="path103" inkscape:connector-curvature="0" /> </clipPath> @@ -416,7 +416,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath22"> <path - d="m 376,332 h 91 v 18 h -91 z" + d="m 376,342 h 91 v 18 h -91 z" id="path106" inkscape:connector-curvature="0" /> </clipPath> @@ -424,7 +424,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath23"> <path - d="m 376,332 h 94 v 18 h -94 z" + d="m 376,342 h 94 v 18 h -94 z" id="path109" inkscape:connector-curvature="0" /> </clipPath> @@ -432,7 +432,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath24"> <path - d="m 363,353 h 118 v 73 H 363 Z" + d="m 363,363 h 118 v 73 H 363 Z" id="path112" inkscape:connector-curvature="0" /> </clipPath> @@ -440,7 +440,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath25"> <path - d="M 392,167 H 514 V 269 H 392 Z" + d="M 392,177 H 514 V 279 H 392 Z" id="path115" inkscape:connector-curvature="0" /> </clipPath> @@ -448,7 +448,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath26"> <path - d="M 392,167 H 512 V 267 H 392 Z" + d="M 392,177 H 512 V 277 H 392 Z" id="path118" inkscape:connector-curvature="0" /> </clipPath> @@ -456,7 +456,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath27"> <path - d="m 429,172 h 46 v 18 h -46 z" + d="m 429,182 h 46 v 18 h -46 z" id="path121" inkscape:connector-curvature="0" /> </clipPath> @@ -464,7 +464,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath28"> <path - d="m 429,172 h 49 v 18 h -49 z" + d="m 429,182 h 49 v 18 h -49 z" id="path124" inkscape:connector-curvature="0" /> </clipPath> @@ -472,7 +472,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath29"> <path - d="m 393,193 h 118 v 73 H 393 Z" + d="m 393,203 h 118 v 73 H 393 Z" id="path127" inkscape:connector-curvature="0" /> </clipPath> @@ -480,7 +480,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath30"> <path - d="M 582,167 H 704 V 269 H 582 Z" + d="M 582,177 H 704 V 279 H 582 Z" id="path130" inkscape:connector-curvature="0" /> </clipPath> @@ -488,7 +488,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath31"> <path - d="M 582,167 H 702 V 267 H 582 Z" + d="M 582,177 H 702 V 277 H 582 Z" id="path133" inkscape:connector-curvature="0" /> </clipPath> @@ -496,7 +496,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath32"> <path - d="m 618,172 h 47 v 18 h -47 z" + d="m 618,182 h 47 v 18 h -47 z" id="path136" inkscape:connector-curvature="0" /> </clipPath> @@ -504,7 +504,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath33"> <path - d="m 618,172 h 50 v 18 h -50 z" + d="m 618,182 h 50 v 18 h -50 z" id="path139" inkscape:connector-curvature="0" /> </clipPath> @@ -512,7 +512,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath34"> <path - d="m 583,193 h 118 v 73 H 583 Z" + d="m 583,203 h 118 v 73 H 583 Z" id="path142" inkscape:connector-curvature="0" /> </clipPath> @@ -520,7 +520,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath35"> <path - d="M 523,327 H 704 V 429 H 523 Z" + d="M 523,337 H 704 V 439 H 523 Z" id="path145" inkscape:connector-curvature="0" /> </clipPath> @@ -528,7 +528,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath36"> <path - d="M 523,327 H 702 V 427 H 523 Z" + d="M 523,337 H 702 V 437 H 523 Z" id="path148" inkscape:connector-curvature="0" /> </clipPath> @@ -536,7 +536,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath37"> <path - d="m 566,332 h 92 v 18 h -92 z" + d="m 566,342 h 92 v 18 h -92 z" id="path151" inkscape:connector-curvature="0" /> </clipPath> @@ -544,7 +544,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath38"> <path - d="m 566,332 h 95 v 18 h -95 z" + d="m 566,342 h 95 v 18 h -95 z" id="path154" inkscape:connector-curvature="0" /> </clipPath> @@ -552,7 +552,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath39"> <path - d="m 528,355 h 169 v 18 H 528 Z" + d="m 528,365 h 169 v 18 H 528 Z" id="path157" inkscape:connector-curvature="0" /> </clipPath> @@ -560,7 +560,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath40"> <path - d="m 528,355 h 172 v 18 H 528 Z" + d="m 528,365 h 172 v 18 H 528 Z" id="path160" inkscape:connector-curvature="0" /> </clipPath> @@ -568,7 +568,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath41"> <path - d="m 524,353 h 177 v 73 H 524 Z" + d="m 524,363 h 177 v 73 H 524 Z" id="path163" inkscape:connector-curvature="0" /> </clipPath> @@ -576,7 +576,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath42"> <path - d="M 577,17 H 699 V 119 H 577 Z" + d="M 577,27 H 699 V 129 H 577 Z" id="path166" inkscape:connector-curvature="0" /> </clipPath> @@ -584,7 +584,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath43"> <path - d="M 577,17 H 697 V 117 H 577 Z" + d="M 577,27 H 697 V 127 H 577 Z" id="path169" inkscape:connector-curvature="0" /> </clipPath> @@ -592,7 +592,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath44"> <path - d="m 603,22 h 68 v 18 h -68 z" + d="m 603,32 h 68 v 18 h -68 z" id="path172" inkscape:connector-curvature="0" /> </clipPath> @@ -600,7 +600,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath45"> <path - d="m 603,22 h 71 v 18 h -71 z" + d="m 603,32 h 71 v 18 h -71 z" id="path175" inkscape:connector-curvature="0" /> </clipPath> @@ -608,7 +608,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath46"> <path - d="m 578,43 h 118 v 73 H 578 Z" + d="m 578,53 h 118 v 73 H 578 Z" id="path178" inkscape:connector-curvature="0" /> </clipPath> @@ -616,7 +616,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath47"> <path - d="M -1,-1 H 736 V 439 H -1 Z" + d="M -1,-1 H 736 V 449 H -1 Z" id="path181" inkscape:connector-curvature="0" /> </clipPath> @@ -624,7 +624,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath48"> <path - d="m 184,378 h 11 v 11 h -11 z" + d="m 184,388 h 11 v 11 h -11 z" id="path184" inkscape:connector-curvature="0" /> </clipPath> @@ -632,7 +632,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath49"> <path - d="m 312,378 h 11 v 11 h -11 z" + d="m 312,388 h 11 v 11 h -11 z" id="path187" inkscape:connector-curvature="0" /> </clipPath> @@ -640,7 +640,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath50"> <path - d="m 510,213 h 11 v 11 h -11 z" + d="m 510,223 h 11 v 11 h -11 z" id="path190" inkscape:connector-curvature="0" /> </clipPath> @@ -648,7 +648,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath51"> <path - d="m 488,159 h 11 v 11 h -11 z" + d="m 510,183 h 11 v 11 h -11 z" id="path193" inkscape:connector-curvature="0" /> </clipPath> @@ -656,7 +656,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath52"> <path - d="m 247,197 h 109 v 18 H 247 Z" + d="m 247,207 h 109 v 18 H 247 Z" id="path196" inkscape:connector-curvature="0" /> </clipPath> @@ -664,7 +664,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath53"> <path - d="m 322,217 h 67 v 18 h -67 z" + d="m 322,227 h 67 v 18 h -67 z" id="path199" inkscape:connector-curvature="0" /> </clipPath> @@ -672,7 +672,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath54"> <path - d="m 242,212 h 15 v 9 h -15 z" + d="m 242,222 h 15 v 9 h -15 z" id="path202" inkscape:connector-curvature="0" /> </clipPath> @@ -680,7 +680,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath55"> <path - d="m 385,212 h 10 v 9 h -10 z" + d="m 385,222 h 10 v 9 h -10 z" id="path205" inkscape:connector-curvature="0" /> </clipPath> @@ -688,7 +688,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath56"> <path - d="m 597,272 h 80 v 18 h -80 z" + d="m 597,282 h 80 v 18 h -80 z" id="path208" inkscape:connector-curvature="0" /> </clipPath> @@ -696,7 +696,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath57"> <path - d="m 599,307 h 117 v 18 H 599 Z" + d="m 599,317 h 117 v 18 H 599 Z" id="path211" inkscape:connector-curvature="0" /> </clipPath> @@ -704,7 +704,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath58"> <path - d="m 589,265 h 9 v 15 h -9 z" + d="m 589,275 h 9 v 15 h -9 z" id="path214" inkscape:connector-curvature="0" /> </clipPath> @@ -712,7 +712,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath59"> <path - d="m 589,320 h 9 v 10 h -9 z" + d="m 589,330 h 9 v 10 h -9 z" id="path217" inkscape:connector-curvature="0" /> </clipPath> @@ -720,7 +720,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath60"> <path - d="m 357,307 h 63 v 18 h -63 z" + d="m 357,317 h 63 v 18 h -63 z" id="path220" inkscape:connector-curvature="0" /> </clipPath> @@ -728,7 +728,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath61"> <path - d="m 437,307 h 110 v 18 H 437 Z" + d="m 437,317 h 110 v 18 H 437 Z" id="path223" inkscape:connector-curvature="0" /> </clipPath> @@ -736,7 +736,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath62"> <path - d="m 417,320 h 9 v 10 h -9 z" + d="m 417,330 h 9 v 10 h -9 z" id="path226" inkscape:connector-curvature="0" /> </clipPath> @@ -744,7 +744,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath63"> <path - d="m 545,320 h 9 v 10 h -9 z" + d="m 545,330 h 9 v 10 h -9 z" id="path229" inkscape:connector-curvature="0" /> </clipPath> @@ -752,7 +752,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath64"> <path - d="m 442,122 h 109 v 18 H 442 Z" + d="m 442,157 h 109 v 18 H 442 Z" id="path232" inkscape:connector-curvature="0" /> </clipPath> @@ -760,7 +760,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath65"> <path - d="m 412,99 h 171 v 18 H 412 Z" + d="m 412,82 h 171 v 18 H 412 Z" id="path235" inkscape:connector-curvature="0" /> </clipPath> @@ -768,7 +768,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath66"> <path - d="m 434,160 h 9 v 10 h -9 z" + d="m 434,170 h 9 v 10 h -9 z" id="path238" inkscape:connector-curvature="0" /> </clipPath> @@ -776,7 +776,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath67"> <path - d="m 565,94 h 15 v 9 h -15 z" + d="m 565,99 h 15 v 9 h -15 z" id="path241" inkscape:connector-curvature="0" /> </clipPath> @@ -784,7 +784,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath68"> <path - d="m 291,114 h 107 v 18 H 291 Z" + d="m 291,157 h 107 v 18 H 291 Z" id="path244" inkscape:connector-curvature="0" /> </clipPath> @@ -792,7 +792,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath69"> <path - d="M 415,72 H 583 V 90 H 415 Z" + d="M 412,49 H 580 V 67 H 412 Z" id="path247" inkscape:connector-curvature="0" /> </clipPath> @@ -800,7 +800,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath70"> <path - d="m 399,160 h 9 v 10 h -9 z" + d="m 399,170 h 9 v 10 h -9 z" id="path250" inkscape:connector-curvature="0" /> </clipPath> @@ -808,7 +808,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath71"> <path - d="m 565,62 h 15 v 9 h -15 z" + d="m 565,69 h 15 v 9 h -15 z" id="path253" inkscape:connector-curvature="0" /> </clipPath> @@ -816,7 +816,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath72"> <path - d="m 22,302 h 63 v 18 H 22 Z" + d="m 22,312 h 63 v 18 H 22 Z" id="path256" inkscape:connector-curvature="0" /> </clipPath> @@ -832,7 +832,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath74"> <path - d="m 82,320 h 9 v 10 h -9 z" + d="m 82,330 h 9 v 10 h -9 z" id="path262" inkscape:connector-curvature="0" /> </clipPath> @@ -840,7 +840,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath75"> <path - d="m 570,44 h 10 v 9 h -10 z" + d="m 570,39 h 10 v 9 h -10 z" id="path265" inkscape:connector-curvature="0" /> </clipPath> @@ -848,7 +848,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath76"> <path - d="m 214,272 h 80 v 18 h -80 z" + d="m 214,282 h 80 v 18 h -80 z" id="path268" inkscape:connector-curvature="0" /> </clipPath> @@ -856,7 +856,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath77"> <path - d="m 212,307 h 72 v 18 h -72 z" + d="m 212,317 h 72 v 18 h -72 z" id="path271" inkscape:connector-curvature="0" /> </clipPath> @@ -864,7 +864,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath78"> <path - d="m 204,265 h 9 v 15 h -9 z" + d="m 204,275 h 9 v 15 h -9 z" id="path274" inkscape:connector-curvature="0" /> </clipPath> @@ -872,7 +872,7 @@ clipPathUnits="userSpaceOnUse" id="clipPath79"> <path - d="m 204,320 h 9 v 10 h -9 z" + d="m 204,330 h 9 v 10 h -9 z" id="path277" inkscape:connector-curvature="0" /> </clipPath> @@ -884,7 +884,7 @@ style="font-size:11px;font-family:Ubuntu;fill:#837a85;stroke:#837a85;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:0"> <rect x="124" - y="169" + y="179" clip-path="url(#clipPath1)" width="120" rx="4" @@ -894,7 +894,7 @@ style="opacity:0.25490005;stroke:none" /> <rect x="125" - y="170" + y="180" clip-path="url(#clipPath1)" width="120" rx="4" @@ -904,7 +904,7 @@ style="opacity:0.25490005;stroke:none" /> <rect x="123" - y="168" + y="178" clip-path="url(#clipPath2)" width="120" rx="4" @@ -915,11 +915,11 @@ </g> <g font-size="11" - id="g543" + id="g545" style="font-size:11px;font-family:Ubuntu;stroke-width:1.10000002;stroke-linecap:butt"> <rect x="123" - y="168" + y="178" clip-path="url(#clipPath2)" width="119" rx="4" @@ -929,7 +929,7 @@ style="fill:none" /> <image x="159" - y="173" + y="183" clip-path="url(#clipPath3)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAtElEQVR42mNgGGjA @@ -946,7 +946,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" <text xml:space="preserve" x="178" - y="184" + y="194" clip-path="url(#clipPath4)" id="text293" style="stroke:none">BDD</text> @@ -959,7 +959,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" font-weight="bold" height="16" x="128" - y="196" + y="206" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcklEQVR42mNgGAWM 6AJza/T/E9KU3HIRro8FXfLHHyaG5MYFODXPrU9A4TOhK/j6iwWv7ejyGKo/AxX8 /88K8R/Mof+hnv0PkcdrAMiG4qxMnC7gYGGhczRJ2pfhjRUmSjTT3gVkpURctj8/ @@ -969,7 +969,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="font-weight:bold" /> <text x="147" - y="207" + y="217" clip-path="url(#clipPath6)" font-weight="bold" xml:space="preserve" @@ -979,13 +979,13 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" clip-path="url(#clipPath7)" x1="124" x2="242" - y1="194" - y2="194" + y1="204" + y2="204" id="line299" style="fill:none" /> <rect x="194" - y="329" + y="339" clip-path="url(#clipPath8)" width="120" rx="4" @@ -995,7 +995,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="195" - y="330" + y="340" clip-path="url(#clipPath8)" width="120" rx="4" @@ -1005,7 +1005,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="193" - y="328" + y="338" clip-path="url(#clipPath9)" width="120" rx="4" @@ -1015,7 +1015,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="fill:url(#linearGradient2);stroke:none" /> <rect x="193" - y="328" + y="338" clip-path="url(#clipPath9)" width="119" rx="4" @@ -1032,7 +1032,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" height="16" font-style="italic" x="231" - y="333" + y="343" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA0ElEQVR42mNgoBAw Qun/OMSJMuA/EKAKMjIyzK3Rx6kpueUi3AIWZE0MENPAdHTtIqyalzbHofDhBqC7 Ahf4958RuwHoLvj/n5WBETmEGCH0n79YwgBbgC6YkYPVBZ/vH2PI7TyHEgYobuor @@ -1044,7 +1044,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="font-style:italic;fill:#7d7d7d;stroke:#7d7d7d" /> <text x="250" - y="344" + y="354" clip-path="url(#clipPath11)" font-style="italic" xml:space="preserve" @@ -1059,7 +1059,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" font-weight="bold" height="16" x="198" - y="356" + y="366" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcklEQVR42mNgGAWM 6AJza/T/E9KU3HIRro8FXfLHHyaG5MYFODXPrU9A4TOhK/j6iwWv7ejyGKo/AxX8 /88K8R/Mof+hnv0PkcdrAMiG4qxMnC7gYGGhczRJ2pfhjRUmSjTT3gVkpURctj8/ @@ -1069,7 +1069,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="font-weight:bold" /> <text x="217" - y="367" + y="377" clip-path="url(#clipPath13)" font-weight="bold" xml:space="preserve" @@ -1079,13 +1079,13 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" clip-path="url(#clipPath14)" x1="194" x2="312" - y1="354" - y2="354" + y1="364" + y2="364" id="line317" style="fill:none;stroke:#7d7d7d" /> <rect x="29" - y="329" + y="339" clip-path="url(#clipPath15)" width="118" rx="4" @@ -1095,7 +1095,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="30" - y="330" + y="340" clip-path="url(#clipPath15)" width="118" rx="4" @@ -1105,7 +1105,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="28" - y="328" + y="338" clip-path="url(#clipPath16)" width="118" rx="4" @@ -1115,7 +1115,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="fill:url(#linearGradient3);stroke:none" /> <rect x="28" - y="328" + y="338" clip-path="url(#clipPath16)" width="117" rx="4" @@ -1125,7 +1125,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="fill:none" /> <image x="48" - y="333" + y="343" clip-path="url(#clipPath17)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAtElEQVR42mNgGGjA @@ -1142,7 +1142,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" <text xml:space="preserve" x="67" - y="344" + y="354" clip-path="url(#clipPath18)" id="text329" style="stroke:none">InputPort</text> @@ -1150,13 +1150,13 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" clip-path="url(#clipPath19)" x1="29" x2="145" - y1="354" - y2="354" + y1="364" + y2="364" id="line331" style="fill:none" /> <rect x="364" - y="329" + y="339" clip-path="url(#clipPath20)" width="118" rx="4" @@ -1166,7 +1166,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="365" - y="330" + y="340" clip-path="url(#clipPath20)" width="118" rx="4" @@ -1176,7 +1176,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="363" - y="328" + y="338" clip-path="url(#clipPath21)" width="118" rx="4" @@ -1186,7 +1186,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="fill:url(#linearGradient4);stroke:none" /> <rect x="363" - y="328" + y="338" clip-path="url(#clipPath21)" width="117" rx="4" @@ -1196,7 +1196,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="fill:none" /> <image x="377" - y="333" + y="343" clip-path="url(#clipPath22)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAtElEQVR42mNgGGjA @@ -1213,7 +1213,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" <text xml:space="preserve" x="396" - y="344" + y="354" clip-path="url(#clipPath23)" id="text343" style="stroke:none">OutputPort</text> @@ -1221,13 +1221,13 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" clip-path="url(#clipPath24)" x1="364" x2="480" - y1="354" - y2="354" + y1="364" + y2="364" id="line345" style="fill:none" /> <rect x="394" - y="169" + y="179" clip-path="url(#clipPath25)" width="118" rx="4" @@ -1237,7 +1237,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="395" - y="170" + y="180" clip-path="url(#clipPath25)" width="118" rx="4" @@ -1247,7 +1247,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="393" - y="168" + y="178" clip-path="url(#clipPath26)" width="118" rx="4" @@ -1257,7 +1257,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="fill:url(#linearGradient5);stroke:none" /> <rect x="393" - y="168" + y="178" clip-path="url(#clipPath26)" width="117" rx="4" @@ -1274,7 +1274,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" height="16" font-style="italic" x="430" - y="173" + y="183" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA0ElEQVR42mNgoBAw Qun/OMSJMuA/EKAKMjIyzK3Rx6kpueUi3AIWZE0MENPAdHTtIqyalzbHofDhBqC7 Ahf4958RuwHoLvj/n5WBETmEGCH0n79YwgBbgC6YkYPVBZ/vH2PI7TyHEgYobuor @@ -1286,7 +1286,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="font-style:italic;fill:#7d7d7d;stroke:#7d7d7d" /> <text x="449" - y="184" + y="194" clip-path="url(#clipPath28)" font-style="italic" xml:space="preserve" @@ -1296,13 +1296,13 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" clip-path="url(#clipPath29)" x1="394" x2="510" - y1="194" - y2="194" + y1="204" + y2="204" id="line359" style="fill:none;stroke:#7d7d7d" /> <rect x="584" - y="169" + y="179" clip-path="url(#clipPath30)" width="118" rx="4" @@ -1312,7 +1312,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="585" - y="170" + y="180" clip-path="url(#clipPath30)" width="118" rx="4" @@ -1322,7 +1322,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="583" - y="168" + y="178" clip-path="url(#clipPath31)" width="118" rx="4" @@ -1332,7 +1332,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="fill:url(#linearGradient6);stroke:none" /> <rect x="583" - y="168" + y="178" clip-path="url(#clipPath31)" width="117" rx="4" @@ -1342,7 +1342,7 @@ iYGqAAAbZE97eZ+U8wAAAABJRU5ErkJggg==" style="fill:none" /> <image x="619" - y="173" + y="183" clip-path="url(#clipPath32)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAtElEQVR42mNgGGjA @@ -1359,7 +1359,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" <text xml:space="preserve" x="638" - y="184" + y="194" clip-path="url(#clipPath33)" id="text371" style="stroke:none">Leaf</text> @@ -1367,13 +1367,13 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" clip-path="url(#clipPath34)" x1="584" x2="700" - y1="194" - y2="194" + y1="204" + y2="204" id="line373" style="fill:none" /> <rect x="525" - y="329" + y="339" clip-path="url(#clipPath35)" width="177" rx="4" @@ -1383,7 +1383,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="526" - y="330" + y="340" clip-path="url(#clipPath35)" width="177" rx="4" @@ -1393,7 +1393,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="524" - y="328" + y="338" clip-path="url(#clipPath36)" width="177" rx="4" @@ -1403,7 +1403,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="fill:url(#linearGradient7);stroke:none" /> <rect x="524" - y="328" + y="338" clip-path="url(#clipPath36)" width="176" rx="4" @@ -1413,7 +1413,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="fill:none" /> <image x="567" - y="333" + y="343" clip-path="url(#clipPath37)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAtElEQVR42mNgGGjA @@ -1430,7 +1430,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" <text xml:space="preserve" x="586" - y="344" + y="354" clip-path="url(#clipPath38)" id="text385" style="stroke:none">Assignment</text> @@ -1443,7 +1443,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" font-weight="bold" height="16" x="529" - y="356" + y="366" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcklEQVR42mNgGAWM 6AJza/T/E9KU3HIRro8FXfLHHyaG5MYFODXPrU9A4TOhK/j6iwWv7ejyGKo/AxX8 /88K8R/Mof+hnv0PkcdrAMiG4qxMnC7gYGGhczRJ2pfhjRUmSjTT3gVkpURctj8/ @@ -1453,7 +1453,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="font-weight:bold" /> <text x="548" - y="367" + y="377" clip-path="url(#clipPath40)" font-weight="bold" xml:space="preserve" @@ -1463,13 +1463,13 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" clip-path="url(#clipPath41)" x1="525" x2="700" - y1="354" - y2="354" + y1="364" + y2="364" id="line391" style="fill:none" /> <rect x="579" - y="19" + y="29" clip-path="url(#clipPath42)" width="118" rx="4" @@ -1479,7 +1479,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="580" - y="20" + y="30" clip-path="url(#clipPath42)" width="118" rx="4" @@ -1489,7 +1489,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="opacity:0.25490005;fill:#837a85;stroke:none" /> <rect x="578" - y="18" + y="28" clip-path="url(#clipPath43)" width="118" rx="4" @@ -1499,7 +1499,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="fill:url(#linearGradient8);stroke:none" /> <rect x="578" - y="18" + y="28" clip-path="url(#clipPath43)" width="117" rx="4" @@ -1509,7 +1509,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" style="fill:none" /> <image x="604" - y="23" + y="33" clip-path="url(#clipPath44)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAtElEQVR42mNgGGjA @@ -1526,7 +1526,7 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" <text xml:space="preserve" x="623" - y="34" + y="44" clip-path="url(#clipPath45)" id="text403" style="stroke:none">Subtree</text> @@ -1534,491 +1534,499 @@ UDpgJJAOCHjhLzCei7MycbqAmYmJurkRAGS/RaNk4/qhAAAAAElFTkSuQmCC" clip-path="url(#clipPath46)" x1="579" x2="695" - y1="44" - y2="44" + y1="54" + y2="54" id="line405" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="146" x2="193" - y1="383" - y2="383" + y1="393" + y2="393" id="line407" style="fill:none;stroke:#888888" /> <polygon clip-path="url(#clipPath48)" - points="185,379 193,383 185,387 " + points="185,389 193,393 185,397 " id="polygon409" style="fill:#ffffff;stroke:none" /> <polygon clip-path="url(#clipPath48)" - points="185,379 193,383 185,387 " + points="185,389 193,393 185,397 " id="polygon411" style="fill:none;stroke:#888888" /> <line clip-path="url(#clipPath47)" x1="363" x2="313" - y1="383" - y2="383" + y1="393" + y2="393" id="line413" style="fill:none;stroke:#888888" /> <polygon clip-path="url(#clipPath49)" - points="321,387 313,383 321,379 " + points="321,397 313,393 321,389 " id="polygon415" style="fill:#ffffff;stroke:none" /> <polygon clip-path="url(#clipPath49)" - points="321,387 313,383 321,379 " + points="321,397 313,393 321,389 " id="polygon417" style="fill:none;stroke:#888888" /> <line clip-path="url(#clipPath47)" x1="583" x2="511" - y1="218" - y2="218" + y1="228" + y2="228" id="line419" style="fill:none;stroke:#888888" /> <polygon clip-path="url(#clipPath50)" - points="519,222 511,218 519,214 " + points="519,232 511,228 519,224 " id="polygon421" style="fill:#ffffff;stroke:none" /> <polygon clip-path="url(#clipPath50)" - points="519,222 511,218 519,214 " + points="519,232 511,228 519,224 " id="polygon423" style="fill:none;stroke:#888888" /> <line clip-path="url(#clipPath47)" x1="637" x2="637" - y1="116" - y2="143" + y1="126" + y2="153" id="line425" style="fill:none;stroke:#888888" /> <line clip-path="url(#clipPath47)" x1="637" - x2="493" - y1="143" - y2="143" + x2="563" + y1="153" + y2="153" id="line427" style="fill:none;stroke:#888888" /> <line clip-path="url(#clipPath47)" - x1="493" - x2="493" - y1="143" - y2="168" + x1="563" + x2="563" + y1="153" + y2="188" id="line429" style="fill:none;stroke:#888888" /> + <line + clip-path="url(#clipPath47)" + x1="563" + x2="511" + y1="188" + y2="188" + id="line431" + style="fill:none;stroke:#888888" /> <polygon clip-path="url(#clipPath51)" - points="497,160 493,168 489,160 " - id="polygon431" + points="519,192 511,188 519,184 " + id="polygon433" style="fill:#ffffff;stroke:none" /> <polygon clip-path="url(#clipPath51)" - points="497,160 493,168 489,160 " - id="polygon433" + points="519,192 511,188 519,184 " + id="polygon435" style="fill:none;stroke:#888888" /> <line clip-path="url(#clipPath47)" x1="243" x2="393" - y1="216" - y2="216" - id="line435" + y1="226" + y2="226" + id="line437" style="fill:none" /> <text x="248" - y="209" + y="219" clip-path="url(#clipPath52)" font-weight="bold" xml:space="preserve" - id="text437" + id="text439" style="font-weight:bold;stroke:none">[0..1] ownerBDD</text> <text x="323" - y="229" + y="239" clip-path="url(#clipPath53)" font-weight="bold" xml:space="preserve" - id="text439" + id="text441" style="font-weight:bold;stroke:none">[1..1] tree</text> <polygon clip-path="url(#clipPath54)" - points="255,216 249,219 243,216 249,213 " - id="polygon441" + points="255,226 249,229 243,226 249,223 " + id="polygon443" style="stroke:none" /> <polygon clip-path="url(#clipPath54)" - points="255,216 249,219 243,216 249,213 " - id="polygon443" + points="255,226 249,229 243,226 249,223 " + id="polygon445" style="fill:none" /> <line clip-path="url(#clipPath55)" x1="386" x2="393" - y1="219" - y2="216" - id="line445" + y1="229" + y2="226" + id="line447" style="fill:none" /> <line clip-path="url(#clipPath55)" x1="393" x2="386" - y1="216" - y2="213" - id="line447" + y1="226" + y2="223" + id="line449" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="593" x2="593" - y1="266" - y2="328" - id="line449" + y1="276" + y2="338" + id="line451" style="fill:none" /> <text x="598" - y="284" + y="294" clip-path="url(#clipPath56)" font-weight="bold" xml:space="preserve" - id="text451" + id="text453" style="font-weight:bold;stroke:none">[1..1] owner</text> <text x="600" - y="319" + y="329" clip-path="url(#clipPath57)" font-weight="bold" xml:space="preserve" - id="text453" + id="text455" style="font-weight:bold;stroke:none">[1..*] assignments</text> <polygon clip-path="url(#clipPath58)" - points="593,278 590,272 593,266 596,272 " - id="polygon455" + points="593,288 590,282 593,276 596,282 " + id="polygon457" style="stroke:none" /> <polygon clip-path="url(#clipPath58)" - points="593,278 590,272 593,266 596,272 " - id="polygon457" + points="593,288 590,282 593,276 596,282 " + id="polygon459" style="fill:none" /> <line clip-path="url(#clipPath59)" x1="590" x2="593" - y1="321" - y2="328" - id="line459" + y1="331" + y2="338" + id="line461" style="fill:none" /> <line clip-path="url(#clipPath59)" x1="593" x2="596" - y1="328" - y2="321" - id="line461" + y1="338" + y2="331" + id="line463" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="421" x2="421" - y1="328" - y2="293" - id="line463" + y1="338" + y2="303" + id="line465" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="421" x2="549" - y1="293" - y2="293" - id="line465" + y1="303" + y2="303" + id="line467" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="549" x2="549" - y1="293" - y2="328" - id="line467" + y1="303" + y2="338" + id="line469" style="fill:none" /> <text xml:space="preserve" x="358" - y="319" + y="329" clip-path="url(#clipPath60)" - id="text469" + id="text471" style="stroke:none">[1..1] port</text> <text xml:space="preserve" x="438" - y="319" + y="329" clip-path="url(#clipPath61)" - id="text471" + id="text473" style="stroke:none">[0..*] assignments</text> <line clip-path="url(#clipPath62)" x1="418" x2="421" - y1="321" - y2="328" - id="line473" + y1="331" + y2="338" + id="line475" style="fill:none" /> <line clip-path="url(#clipPath62)" x1="421" x2="424" - y1="328" - y2="321" - id="line475" + y1="338" + y2="331" + id="line477" style="fill:none" /> <line clip-path="url(#clipPath63)" x1="546" x2="549" - y1="321" - y2="328" - id="line477" + y1="331" + y2="338" + id="line479" style="fill:none" /> <line clip-path="url(#clipPath63)" x1="549" x2="552" - y1="328" - y2="321" - id="line479" + y1="338" + y2="331" + id="line481" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="438" x2="438" - y1="168" - y2="98" - id="line481" + y1="178" + y2="103" + id="line483" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="438" x2="578" - y1="98" - y2="98" - id="line483" + y1="103" + y2="103" + id="line485" style="fill:none" /> <text xml:space="preserve" x="443" - y="134" + y="169" clip-path="url(#clipPath64)" - id="text485" + id="text487" style="stroke:none">[1..1] treeForZero</text> <text xml:space="preserve" x="413" - y="111" + y="94" clip-path="url(#clipPath65)" - id="text487" + id="text489" style="stroke:none">[0..1] ownerSubtreeForZero</text> <line clip-path="url(#clipPath66)" x1="435" x2="438" - y1="161" - y2="168" - id="line489" + y1="171" + y2="178" + id="line491" style="fill:none" /> <line clip-path="url(#clipPath66)" x1="438" x2="441" - y1="168" - y2="161" - id="line491" + y1="178" + y2="171" + id="line493" style="fill:none" /> <polygon clip-path="url(#clipPath67)" - points="566,98 572,95 578,98 572,101 " - id="polygon493" + points="566,103 572,100 578,103 572,106 " + id="polygon495" style="stroke:none" /> <polygon clip-path="url(#clipPath67)" - points="566,98 572,95 578,98 572,101 " - id="polygon495" + points="566,103 572,100 578,103 572,106 " + id="polygon497" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="403" x2="403" - y1="168" - y2="66" - id="line497" + y1="178" + y2="73" + id="line499" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="403" x2="578" - y1="66" - y2="66" - id="line499" + y1="73" + y2="73" + id="line501" style="fill:none" /> <text xml:space="preserve" x="292" - y="126" + y="169" clip-path="url(#clipPath68)" - id="text501" + id="text503" style="stroke:none">[1..1] treeForOne</text> <text xml:space="preserve" - x="416" - y="84" + x="413" + y="61" clip-path="url(#clipPath69)" - id="text503" + id="text505" style="stroke:none">[0..1] ownerSubtreeForOne</text> <line clip-path="url(#clipPath70)" x1="400" x2="403" - y1="161" - y2="168" - id="line505" + y1="171" + y2="178" + id="line507" style="fill:none" /> <line clip-path="url(#clipPath70)" x1="403" x2="406" - y1="168" - y2="161" - id="line507" + y1="178" + y2="171" + id="line509" style="fill:none" /> <polygon clip-path="url(#clipPath71)" - points="566,66 572,63 578,66 572,69 " - id="polygon509" + points="566,73 572,70 578,73 572,76 " + id="polygon511" style="stroke:none" /> <polygon clip-path="url(#clipPath71)" - points="566,66 572,63 578,66 572,69 " - id="polygon511" + points="566,73 572,70 578,73 572,76 " + id="polygon513" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="86" x2="86" - y1="328" - y2="48" - id="line513" + y1="338" + y2="43" + id="line515" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="86" x2="578" - y1="48" - y2="48" - id="line515" + y1="43" + y2="43" + id="line517" style="fill:none" /> <text xml:space="preserve" x="23" - y="314" + y="324" clip-path="url(#clipPath72)" - id="text517" + id="text519" style="stroke:none">[1..1] port</text> <text xml:space="preserve" x="488" y="34" clip-path="url(#clipPath73)" - id="text519" + id="text521" style="stroke:none">[0..*] subtrees</text> <line clip-path="url(#clipPath74)" x1="83" x2="86" - y1="321" - y2="328" - id="line521" + y1="331" + y2="338" + id="line523" style="fill:none" /> <line clip-path="url(#clipPath74)" x1="86" x2="89" - y1="328" - y2="321" - id="line523" + y1="338" + y2="331" + id="line525" style="fill:none" /> <line clip-path="url(#clipPath75)" x1="571" x2="578" - y1="51" - y2="48" - id="line525" + y1="46" + y2="43" + id="line527" style="fill:none" /> <line clip-path="url(#clipPath75)" x1="578" x2="571" - y1="48" - y2="45" - id="line527" + y1="43" + y2="40" + id="line529" style="fill:none" /> <line clip-path="url(#clipPath47)" x1="208" x2="208" - y1="266" - y2="328" - id="line529" + y1="276" + y2="338" + id="line531" style="fill:none" /> <text x="215" - y="284" + y="294" clip-path="url(#clipPath76)" font-weight="bold" xml:space="preserve" - id="text531" + id="text533" style="font-weight:bold;stroke:none">[1..1] owner</text> <text x="213" - y="319" + y="329" clip-path="url(#clipPath77)" font-weight="bold" xml:space="preserve" - id="text533" + id="text535" style="font-weight:bold;stroke:none">[1..*] ports</text> <polygon clip-path="url(#clipPath78)" - points="208,278 205,272 208,266 211,272 " - id="polygon535" + points="208,288 205,282 208,276 211,282 " + id="polygon537" style="stroke:none" /> <polygon clip-path="url(#clipPath78)" - points="208,278 205,272 208,266 211,272 " - id="polygon537" + points="208,288 205,282 208,276 211,282 " + id="polygon539" style="fill:none" /> <line clip-path="url(#clipPath79)" x1="205" x2="208" - y1="321" - y2="328" - id="line539" + y1="331" + y2="338" + id="line541" style="fill:none" /> <line clip-path="url(#clipPath79)" x1="208" x2="211" - y1="328" - y2="321" - id="line541" + y1="338" + y2="331" + id="line543" style="fill:none" /> </g> </g>