examples/simdag/test/sd_test
examples/simdag/throttling/sd_throttling
examples/simdag/typed_tasks/sd_typed_tasks
+examples/smpi/ampi/smpi_ampi
examples/smpi/energy/f77/sef
examples/smpi/energy/f90/sef90
examples/smpi/energy/smpi_energy
+examples/smpi/load_balancer_replay/load_balancer_replay
examples/smpi/mc/smpi_bugged1
examples/smpi/mc/smpi_bugged1_liveness
examples/smpi/mc/smpi_bugged2
teshsuite/smpi/coll-reduce/coll-reduce
teshsuite/smpi/coll-reduce-scatter/coll-reduce-scatter
teshsuite/smpi/coll-scatter/coll-scatter
+teshsuite/smpi/fort_args/fort_args
teshsuite/smpi/isp/umpire/abort
teshsuite/smpi/isp/umpire/abort1
teshsuite/smpi/isp/umpire/abort2
.build: &build
script:
- apt-get update
- - apt-get install -y python3-sphinx doxygen python3-breathe python3-sphinx-rtd-theme pip3
- - apt-get install -y cmake doxygen libboost-all-dev libboost-dev
- - pip3 install --no-deps exhale
- - cmake -Denable_documentation=ON .
- - make documentation
- - mkdir docs/doxyoutput
- - mv doc/xml docs/doxyoutput
+ - apt-get install -y python3-pip doxygen libboost-all-dev libboost-dev fig2dev
+ - pip3 install --requirement docs/requirements.txt
- cd docs
- sphinx-build -M html source/ build/
- mv build/html ../public
@CMAKE_HOME_DIRECTORY@/doc/doxygen/module-trace.doc \
@CMAKE_BINARY_DIR@/doc/doxygen/logcategories.doc \
@CMAKE_HOME_DIRECTORY@/include/ \
- @CMAKE_HOME_DIRECTORY@/include/simgrid/ \
- @CMAKE_HOME_DIRECTORY@/include/simgrid/jedule/ \
- @CMAKE_HOME_DIRECTORY@/include/simgrid/kernel/ \
- @CMAKE_HOME_DIRECTORY@/include/simgrid/kernel/resource/ \
- @CMAKE_HOME_DIRECTORY@/include/simgrid/kernel/routing/ \
- @CMAKE_HOME_DIRECTORY@/include/simgrid/plugins/ \
- @CMAKE_HOME_DIRECTORY@/include/simgrid/s4u/ \
- @CMAKE_HOME_DIRECTORY@/include/simgrid/simix/ \
- @CMAKE_HOME_DIRECTORY@/include/simgrid/smpi/ \
- @CMAKE_HOME_DIRECTORY@/include/xbt \
- @CMAKE_HOME_DIRECTORY@/src/include/simgrid/ \
- @CMAKE_HOME_DIRECTORY@/src/include/surf \
- @CMAKE_HOME_DIRECTORY@/src/include/xbt \
- @CMAKE_HOME_DIRECTORY@/src/instr/ \
- @CMAKE_HOME_DIRECTORY@/src/instr/jedule/ \
- @CMAKE_HOME_DIRECTORY@/src/kernel/ \
- @CMAKE_HOME_DIRECTORY@/src/kernel/activity/ \
- @CMAKE_HOME_DIRECTORY@/src/kernel/context/ \
- @CMAKE_HOME_DIRECTORY@/src/kernel/lmm/ \
- @CMAKE_HOME_DIRECTORY@/src/kernel/resource/ \
- @CMAKE_HOME_DIRECTORY@/src/kernel/routing/ \
- @CMAKE_HOME_DIRECTORY@/src/msg/ \
- @CMAKE_HOME_DIRECTORY@/src/plugins/ \
- @CMAKE_HOME_DIRECTORY@/src/plugins/file_system/ \
- @CMAKE_HOME_DIRECTORY@/src/plugins/vm/ \
- @CMAKE_HOME_DIRECTORY@/src/s4u/ \
- @CMAKE_HOME_DIRECTORY@/src/simdag/ \
- @CMAKE_HOME_DIRECTORY@/src/simgrid/ \
- @CMAKE_HOME_DIRECTORY@/src/simix/ \
- @CMAKE_HOME_DIRECTORY@/src/smpi/ \
- @CMAKE_HOME_DIRECTORY@/src/surf/ \
- @CMAKE_HOME_DIRECTORY@/src/xbt/ \
- @CMAKE_BINARY_DIR@/include \
- @CMAKE_BINARY_DIR@/src \
+ @CMAKE_HOME_DIRECTORY@/src/plugins/ \
@CMAKE_HOME_DIRECTORY@/examples/msg/README.doc \
@CMAKE_HOME_DIRECTORY@/examples/s4u/README.doc
+
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
# also the default input encoding. Doxygen uses libiconv (or the iconv built
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE =
+EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*
-EXCLUDE_PATTERNS =
+EXCLUDE_PATTERNS = */include/simgrid/forward.h
+EXCLUDE_PATTERNS += */include/smpi/*
+
+EXCLUDE_PATTERNS += @CMAKE_HOME_DIRECTORY@/src/surf/xml/simgrid_dtd.*
+EXCLUDE_PATTERNS += @CMAKE_HOME_DIRECTORY@/src/simdag/dax_dtd.*
+EXCLUDE_PATTERNS += @CMAKE_HOME_DIRECTORY@/src/xbt/automaton/parserPromela.*
+EXCLUDE_PATTERNS += @CMAKE_HOME_DIRECTORY@/src/bindings/java/*.cpp @CMAKE_HOME_DIRECTORY@/src/bindings/java/*.h
+EXCLUDE_PATTERNS += @CMAKE_HOME_DIRECTORY@/src/simix/popping_accessors.hpp \
+ @CMAKE_HOME_DIRECTORY@/src/simix/popping_bodies.cpp \
+ @CMAKE_HOME_DIRECTORY@/src/simix/popping_enum.h \
+ @CMAKE_HOME_DIRECTORY@/src/simix/popping_generated.cpp
+
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
-EXCLUDE_SYMBOLS =
+EXCLUDE_SYMBOLS = s_xbt_dict_cursor s_xbt_dictelm xbt_dynar_s
+EXCLUDE_SYMBOLS += xbt_edge xbt_graph xbt_node
+EXCLUDE_SYMBOLS += e_xbt_parmap_mode_t
+EXCLUDE_SYMBOLS += MPI_*
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
# instead of the = operator.
PREDEFINED = __cplusplus \
+ DOXYGEN \
XBT_PUBLIC= \
XBT_EXPORT_NO_IMPORT= \
XBT_IMPORT_NO_EXPORT= \
XBT_PUBLIC_DATA=extern \
+ XBT_PUBLIC= \
XBT_INLINE= \
+ XBT_ALWAYS_INLINE= \
XBT_PRIVATE= \
XBT_ATTRIB_NORETURN= \
XBT_ATTRIB_UNUSED= \
# overrules the definition found in the source code.
EXPAND_AS_DEFINED = COLL_APPLY COLL_GATHERS COLL_ALLGATHERS COLL_ALLGATHERVS COLL_ALLREDUCES COLL_ALLTOALLS \
- COLL_ALLTOALLVS COLL_BCASTS COLL_REDUCES COLL_REDUCE_SCATTERS COLL_SCATTERS COLL_BARRIERS
+ COLL_ALLTOALLVS COLL_BCASTS COLL_REDUCES COLL_REDUCE_SCATTERS COLL_SCATTERS COLL_BARRIERS \
+ MPI_CALL
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all references to function-like macros
# this option also works with HAVE_DOT disabled, but it is recommended to
# install and use dot, since it yields more powerful graphs.
-CLASS_DIAGRAMS = YES
+CLASS_DIAGRAMS = NO
# You can define message sequence charts within doxygen comments using the \msc
# command. Doxygen will then run the mscgen tool (see
# the time of a run. So in most cases it will be better to enable caller
# graphs for selected functions only using the \callergraph command.
-CALLER_GRAPH = YES
+CALLER_GRAPH = NO
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will generate a graphical hierarchy of all classes instead of a textual one.
# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible in IE 9+ (other browsers do not have this requirement).
-DOT_IMAGE_FORMAT = png
+DOT_IMAGE_FORMAT = svg
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
+++ /dev/null
-/*! @page examples SimGrid Examples
-
-@tableofcontents
-
-SimGrid comes with many examples provided in the examples/ directory.
-Those examples are described in section @ref msg_examples. Those
-examples are commented and should be easy to understand. for a first
-step into SimGrid we also provide some more detailed examples in the
-sections below.
-
-@htmlonly
-You should also check our online <a href="http://simgrid.gforge.inria.fr/documentation.html"> tutorial section</a> that contains a generic tutorial about using SimGrid.
-@endhtmlonly
-
-@section using_msg Using MSG
-
-@htmlonly
-You should also check our online <a href="http://simgrid.gforge.inria.fr/documentation.html"> tutorial section</a> that contains a dedicated tutorial.
-@endhtmlonly
-
-Here are some examples on how to use MSG, the most used API.
-
-MSG comes with an extensive set of examples. It is sometimes difficult
-to find the one you need. This list aims at helping you finding the
-example from which you can learn what you want to.
-
-@subsection MSG_ex_basics Basic examples and features
-
-@subsubsection MSG_ex_master_worker Basic Master/Workers
-
-Simulation of a master-worker application using a realistic platform and an external description of the deployment.
-
-@paragraph MSG_ex_mw_TOC Table of contents:
-
- - @ref MSG_ext_mw_preliminary
- - @ref MSG_ext_mw_master
- - @ref MSG_ext_mw_worker
- - @ref MSG_ext_mw_core
- - @ref MSG_ext_mw_platform
- - @ref MSG_ext_mw_application
-
-<hr>
-
-@dontinclude msg/app-masterworker/app-masterworker.c
-
-@paragraph MSG_ext_mw_preliminary Preliminary declarations
-
-@skip include
-@until example");
-@skipline Master expects
-
-@paragraph MSG_ext_mw_master Master code
-
-This function has to be assigned to a #msg_process_t that will behave as the master. It should not be called directly
-but either given as a parameter to #MSG_process_create() or registered as a public function through
-#MSG_function_register() and then automatically assigned to a process through #MSG_launch_application().
-
-C style arguments (argc/argv) are interpreted as:
- - the number of tasks to distribute
- - the computational size of each task
- - the communication size of each task
- - the number of workers managed by the master.
-
-Tasks are evenly sent in a round-robin style.
-
-@until return 0;
-@until }
-@skipline Worker expects
-
-@paragraph MSG_ext_mw_worker Worker code
-
-This function has to be assigned to a #msg_process_t that has to behave as a worker. Just like the master function
-(described in @ref MSG_ext_mw_master), it should not be called directly.
-
-C style arguments (argc/argv) are interpreted as:
- - a unique id used to build the mailbox name of the worker
-
-This function keeps waiting for tasks and executes them as it receives them. When a special task named 'finalize' is
-received from the master, the process ends its execution.
-
-@until return 0;
-@until }
-
-@paragraph MSG_ext_mw_core Main function
-
-This function is the core of the simulation and is divided only into 3 parts:
- -# Simulation settings : #MSG_create_environment() creates a realistic
- environment
- -# Application deployment : create the processes on the right locations with
- #MSG_launch_application()
- -# The simulation is run with #MSG_main()
-
-Its arguments are:
- - <i>platform_file</i>: the name of a file containing an valid platform description.
- - <i>deployment_file</i>: the name of a file containing a valid application description
-@line main
-@until OK;
-@until }
-
-@paragraph MSG_ext_mw_platform Example of a platform file
-
-The following platform description can be found in @c examples/msg/platforms/small_platform.xml
-@include platforms/small_platform.xml
-
-@paragraph MSG_ext_mw_application Example of a deployment file
-
-The following application description can be found in @c examples/msg/app-masterworker/app-masterworker_d.xml:
-
-@include msg/app-masterworker/app-masterworker_d.xml
-
-*/
-
-
breathe
+exhale
+sphinx
+sphinx_rtd_theme
+
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
+ 'sphinx.ext.todo',
# 'sphinx.ext.coverage',
'sphinx.ext.mathjax',
# 'sphinx.ext.ifconfig',
'exhale',
]
-breathe_projects = { 'simgrid': '../../doc/xml' }
+todo_include_todos = True
+
+breathe_projects = { 'simgrid': '../build/doxy/xml' }
breathe_default_project = "simgrid"
# Setup the exhale extension
# TIP: if using the sphinx-bootstrap-theme, you need
# "treeViewIsBootstrap": True,
"exhaleExecutesDoxygen": True,
- "exhaleDoxygenStdin": "INPUT = ../../include"
+ "exhaleDoxygenStdin": """
+ INPUT = ../../include/simgrid/s4u
+ GENERATE_XML = YES
+ PREDEFINED += \
+ __cplusplus \
+ DOXYGEN \
+ XBT_PUBLIC= \
+ XBT_EXPORT_NO_IMPORT= \
+ XBT_IMPORT_NO_EXPORT= \
+ XBT_PUBLIC_DATA=extern \
+ XBT_PUBLIC= \
+ XBT_INLINE= \
+ XBT_ALWAYS_INLINE= \
+ XBT_PRIVATE= \
+ XBT_ATTRIB_NORETURN= \
+ XBT_ATTRIB_UNUSED= \
+ XBT_ATTRIB_DEPRECATED_v322(m)= \
+ XBT_ATTRIB_DEPRECATED_v323(m)= \
+ XBT_ATTRIB_DEPRECATED_v324(m)=
+ """
}
+# For cross-ref generation
+primary_domain = 'cpp'
+
+
# Add any paths that contain templates here, relative to this directory.
# templates_path = ['_templates']
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="86.313606mm"
+ height="41.106529mm"
+ viewBox="0 0 86.313605 41.106529"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.3 (2405546, 2018-03-11)"
+ sodipodi:docname="tuto-masterworkers-intro.svg">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1496"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1502"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-1"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-8"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-3"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-9"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-8"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="27.095926"
+ inkscape:cy="74.973851"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1019"
+ inkscape:window-x="0"
+ inkscape:window-y="32"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Calque 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-29.950586,-101.20699)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.80246687px;line-height:4.0930109px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="47.823597"
+ y="119.2951"
+ id="text817"><tspan
+ sodipodi:role="line"
+ id="tspan815"
+ x="47.823597"
+ y="119.2951"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.16372044px">Master</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.43658787;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path819"
+ cx="55.781475"
+ cy="121.76025"
+ rx="12.693116"
+ ry="8.3518229" />
+ <g
+ id="g5649"
+ transform="matrix(0.61878596,0,0,0.61878596,10.598982,54.807393)">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,62.219405,60.11345)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-15"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-06"
+ y="107.92625"
+ x="85.694588"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="107.92625"
+ x="85.694588"
+ id="tspan815-8-50"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ id="g5641"
+ transform="matrix(0.61878596,0,0,0.61878596,11.505291,54.982808)">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ id="g1489"
+ transform="matrix(0.61878596,0,0,0.61878596,19.779021,54.251913)">
+ <g
+ transform="translate(0.29020366)"
+ id="g1294">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3"><tspan
+ sodipodi:role="line"
+ id="tspan815-8"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-6"
+ transform="translate(0.29020366,13.157293)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-0"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-89"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-2"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-2"
+ transform="translate(0.29020366,26.31459)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-3"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-18"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-3"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-4"
+ transform="translate(0.29020366,52.629172)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-2"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-2"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-4"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-5"
+ transform="translate(0.29020366,39.471889)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-1"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-75"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-7"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ </g>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 68.602797,121.43899 27.144559,-16.2551"
+ id="path1491"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-1)"
+ d="m 68.602797,121.43899 27.144559,-8.05361"
+ id="path1491-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-8)"
+ d="m 68.602797,121.43899 27.144559,0.14787"
+ id="path1491-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-3)"
+ d="m 68.602797,121.43899 27.144559,8.34936"
+ id="path1491-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-9)"
+ d="m 68.602797,121.43899 27.144559,16.55085"
+ id="path1491-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.80246687px;line-height:4.0930109px;font-family:'Amiri Quran Colored';-inkscape-font-specification:'Amiri Quran Colored';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+ x="59.675655"
+ y="135.63525"
+ id="text4842"><tspan
+ sodipodi:role="line"
+ id="tspan4840"
+ x="59.675655"
+ y="135.63525"
+ style="text-align:center;text-anchor:middle;fill:#0000ff;stroke-width:0.16372044px;">The master dispatches</tspan><tspan
+ sodipodi:role="line"
+ x="59.675655"
+ y="139.81946"
+ style="text-align:center;text-anchor:middle;fill:#0000ff;stroke-width:0.16372044px;"
+ id="tspan5522">the tasks to the workers</tspan></text>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,12.703959,52.631832)"
+ id="g5641-0">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-4"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-8"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-4"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,14.01957,54.912224)"
+ id="g5641-8">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-1"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-6"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-8"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,12.236186,57.484974)"
+ id="g5641-5">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-2"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-1"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-9"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,14.896644,57.777332)"
+ id="g5641-9">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-6"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-0"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-6"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,17.586337,57.046437)"
+ id="g5641-4">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-9"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-9"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-0"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,17.264743,54.093622)"
+ id="g5641-89">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-3"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-14"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-89"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,18.083346,59.765366)"
+ id="g5641-6">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-7"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-7"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-3"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,15.422888,60.262374)"
+ id="g5641-7">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-12"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-2"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-1"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,19.282013,61.987286)"
+ id="g5641-50">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-90"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-4"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-01"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,20.539152,59.414536)"
+ id="g5641-3">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-74"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-11"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-30"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,20.042144,56.05242)"
+ id="g5641-32">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-17"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-5"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-65"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,22.614894,54.473687)"
+ id="g5641-42">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-21"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-72"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-41"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,22.84878,56.987965)"
+ id="g5641-65">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-78"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-59"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-2"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,23.024194,59.882309)"
+ id="g5641-73">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-64"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-79"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-7"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.081987,59.18065)"
+ id="g5641-2">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-216"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-3"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-02"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,25.713888,57.572681)"
+ id="g5641-1">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-5"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-65"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-00"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.929825,56.841786)"
+ id="g5641-34">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-66"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-02"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-5"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,25.129172,55.029167)"
+ id="g5641-895">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-0"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-60"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-83"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.023516,54.269036)"
+ id="g5641-78">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-210"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-58"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-55"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,22.264064,62.133465)"
+ id="g5641-07">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-38"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-23"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-07"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,25.450765,61.431807)"
+ id="g5641-77">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-69"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-119"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-08"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.052752,61.519514)"
+ id="g5641-98">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-8"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-03"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-70"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,31.151746,59.794602)"
+ id="g5641-69">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-217"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-797"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-62"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,31.736462,57.309559)"
+ id="g5641-71">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-58"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-84"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-56"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,34.163033,55.263054)"
+ id="g5641-56">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-84"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-88"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-38"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="86.313606mm"
+ height="41.106529mm"
+ viewBox="0 0 86.313605 41.106529"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+ sodipodi:docname="overview.svg">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1496"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1502"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-1"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-8"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-3"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-9"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-8"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="75.667359"
+ inkscape:cy="76.402423"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1019"
+ inkscape:window-x="0"
+ inkscape:window-y="32"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Calque 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-29.950586,-101.20699)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.80246687px;line-height:4.0930109px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="47.823597"
+ y="119.2951"
+ id="text817"><tspan
+ sodipodi:role="line"
+ id="tspan815"
+ x="47.823597"
+ y="119.2951"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.16372044px">Master</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.43658787;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path819"
+ cx="55.781475"
+ cy="121.76025"
+ rx="12.693116"
+ ry="8.3518229" />
+ <g
+ id="g5649"
+ transform="matrix(0.61878596,0,0,0.61878596,10.598982,54.807393)">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,62.219405,60.11345)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-15"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-06"
+ y="107.92625"
+ x="85.694588"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="107.92625"
+ x="85.694588"
+ id="tspan815-8-50"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ id="g5641"
+ transform="matrix(0.61878596,0,0,0.61878596,11.505291,54.982808)">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ id="g1489"
+ transform="matrix(0.61878596,0,0,0.61878596,19.779021,54.251913)">
+ <g
+ transform="translate(0.29020366)"
+ id="g1294">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3"><tspan
+ sodipodi:role="line"
+ id="tspan815-8"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-6"
+ transform="translate(0.29020366,13.157293)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-0"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-89"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-2"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-2"
+ transform="translate(0.29020366,26.31459)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-3"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-18"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-3"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-4"
+ transform="translate(0.29020366,52.629172)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-2"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-2"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-4"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-5"
+ transform="translate(0.29020366,39.471889)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-1"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-75"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-7"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ </g>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 68.602797,121.43899 27.144559,-16.2551"
+ id="path1491"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-1)"
+ d="m 68.602797,121.43899 27.144559,-8.05361"
+ id="path1491-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-8)"
+ d="m 68.602797,121.43899 27.144559,0.14787"
+ id="path1491-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-3)"
+ d="m 68.602797,121.43899 27.144559,8.34936"
+ id="path1491-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-9)"
+ d="m 68.602797,121.43899 27.144559,16.55085"
+ id="path1491-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.80246687px;line-height:4.0930109px;font-family:'Amiri Quran Colored';-inkscape-font-specification:'Amiri Quran Colored';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="58.617321"
+ y="135.63525"
+ id="text4842"><tspan
+ sodipodi:role="line"
+ id="tspan4840"
+ x="58.617321"
+ y="135.63525"
+ style="text-align:center;text-anchor:middle;fill:#ff0000;stroke-width:0.16372044px">How should the master</tspan><tspan
+ sodipodi:role="line"
+ x="58.617321"
+ y="139.81946"
+ style="text-align:center;text-anchor:middle;fill:#ff0000;stroke-width:0.16372044px"
+ id="tspan5522">distribute the tasks?</tspan></text>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,12.703959,52.631832)"
+ id="g5641-0">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-4"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-8"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-4"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,14.01957,54.912224)"
+ id="g5641-8">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-1"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-6"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-8"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,12.236186,57.484974)"
+ id="g5641-5">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-2"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-1"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-9"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,14.896644,57.777332)"
+ id="g5641-9">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-6"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-0"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-6"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,17.586337,57.046437)"
+ id="g5641-4">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-9"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-9"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-0"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,17.264743,54.093622)"
+ id="g5641-89">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-3"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-14"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-89"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,18.083346,59.765366)"
+ id="g5641-6">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-7"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-7"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-3"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,15.422888,60.262374)"
+ id="g5641-7">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-12"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-2"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-1"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,19.282013,61.987286)"
+ id="g5641-50">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-90"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-4"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-01"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,20.539152,59.414536)"
+ id="g5641-3">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-74"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-11"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-30"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,20.042144,56.05242)"
+ id="g5641-32">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-17"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-5"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-65"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,22.614894,54.473687)"
+ id="g5641-42">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-21"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-72"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-41"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,22.84878,56.987965)"
+ id="g5641-65">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-78"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-59"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-2"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,23.024194,59.882309)"
+ id="g5641-73">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-64"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-79"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-7"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.081987,59.18065)"
+ id="g5641-2">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-216"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-3"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-02"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,25.713888,57.572681)"
+ id="g5641-1">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-5"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-65"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-00"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.929825,56.841786)"
+ id="g5641-34">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-66"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-02"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-5"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,25.129172,55.029167)"
+ id="g5641-895">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-0"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-60"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-83"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.023516,54.269036)"
+ id="g5641-78">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-210"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-58"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-55"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,22.264064,62.133465)"
+ id="g5641-07">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-38"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-23"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-07"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,25.450765,61.431807)"
+ id="g5641-77">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-69"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-119"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-08"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.052752,61.519514)"
+ id="g5641-98">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-8"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-03"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-70"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,31.151746,59.794602)"
+ id="g5641-69">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-217"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-797"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-62"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,31.736462,57.309559)"
+ id="g5641-71">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-58"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-84"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-56"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,34.163033,55.263054)"
+ id="g5641-56">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-84"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-88"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-38"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.44087529;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5967"
+ cx="75.089897"
+ cy="120.15488"
+ rx="3.0595784"
+ ry="6.408577" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.57525826px;line-height:3.97712588px;font-family:'Amiri Quran Colored';-inkscape-font-specification:'Amiri Quran Colored';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.15908505px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="72.321075"
+ y="130.08104"
+ id="text5965"
+ transform="scale(1.0291379,0.97168708)"><tspan
+ sodipodi:role="line"
+ id="tspan5963"
+ x="72.321075"
+ y="130.08104"
+ style="font-size:13.57525826px;fill:#ff0000;stroke-width:0.15908505px">?</tspan></text>
+ </g>
+</svg>
:caption: API Reference:
API <api/library_root.rst>
- S4U <api/s4u.rst>
Indices and tables
==================
eclipse. This will make it easier to upgrade to another version of
SimGrid.
-Troubleshooting your project setup
+.. _install_yours_troubleshooting:
+
+Troubleshooting your Project Setup
----------------------------------
Library not found
--- /dev/null
+.. _usecase_simalgo:
+
+Simulating Algorithms
+=====================
+
+SimGrid was conceived as a tool to study distributed algorithms. Its
+modern S4U interface makes it easy to assess Cloud, P2P, HPC, IoT and
+similar settings.
+
+A typical SimGrid simulation is composed of several **Actors**
+|api_s4u_Actor|_ , that execute user-provided functions. The actors
+have to explicitly use the S4U interface to express their computation,
+communication, disk usage and other **Activities** |api_s4u_Activity|_
+, so that they get reflected within the simulator. These activities
+take place on **Resources** (CPUs, links, disks). SimGrid predicts the
+time taken by each activity and orchestrates accordingly the actors
+waiting for the completion of these activities.
+
+.. |api_s4u_Actor| image:: /images/extlink.png
+ :align: middle
+ :width: 12
+.. _api_s4u_Actor: api/classsimgrid_1_1s4u_1_1Actor.html#class-documentation
+
+.. |api_s4u_Activity| image:: /images/extlink.png
+ :align: middle
+ :width: 12
+.. _api_s4u_Activity: api/classsimgrid_1_1s4u_1_1Activity.html#class-documentation
+
+
+Each actor executes a user-provided function on a simulated **Host**
+|api_s4u_Host|_ with which it can interact. Communications are not
+directly sent to actors, but posted onto **Mailboxes**
+|api_s4u_Mailbox|_ that serve as rendez-vous points between
+communicating processes.
+
+.. |api_s4u_Host| image:: /images/extlink.png
+ :align: middle
+ :width: 12
+.. _api_s4u_Host: api/classsimgrid_1_1s4u_1_1Host.html#class-documentation
+
+.. |api_s4u_Mailbox| image:: /images/extlink.png
+ :align: middle
+ :width: 12
+.. _api_s4u_Mailbox: api/classsimgrid_1_1s4u_1_1Mailbox.html#class-documentation
+
+
+Discover the Master/Workers
+---------------------------
+
+This section introduces a first example of SimGrid simulation. This
+simple application is composed of two kind of actors: the **master**
+is in charge of distributing some computational tasks to a set of
+**workers** that execute them.
+
+.. image:: /images/tuto-masterworkers-intro.svg
+ :align: center
+
+We first present a round-robin version of this application, where the
+master dispatches the tasks to the workers, one after the other, until
+all tasks are dispatched. Later in this tutorial, you will be given
+the opportunity to improve this scheme.
+
+The Actors
+..........
+
+Let's start with the code of the worker. It is represented by the
+*master* function below. This simple function takes 4 parameters,
+given as a vector of strings:
+
+ - the number of workers managed by the master.
+ - the number of tasks to dispatch
+ - the computational size (in flops to compute) of each task
+ - the communication size (in bytes to exchange) of each task
+
+Then, the tasks are sent one after the other, each on a mailbox named
+"worker-XXX" where XXX is the number of an existing worker. On the
+other side, a given worker (which code is given below) wait for
+incoming tasks on its own mailbox. Notice how this mailbox mechanism
+allow the actors to find each other without having all information:
+the master don't have to know the actors nor even where they are, it
+simply pushes the messages on mailbox which name is predetermined.
+
+At the end, once all tasks are dispatched, the master dispatches
+another task per worker, but this time with a negative amount of flops
+to compute. Indeed, this application decided by convention, that the
+workers should stop when encountering such a negative compute_size.
+
+At the end of the day, the only SimGrid specific functions used in
+this example are :cpp:func:`simgrid::s4u::Mailbox::by_name` and
+:cpp:func:`simgrid::s4u::Mailbox::put`. Also, :c:macro:`XBT_INFO` is used
+as a replacement to printf() or to cout to ensure that the messages
+are nicely logged along with the simulated time and actor name.
+
+
+.. literalinclude:: ../../examples/s4u/app-masterworkers/s4u-app-masterworkers-fun.cpp
+ :language: c++
+ :start-after: master-begin
+ :end-before: master-end
+
+Here comes the code of the worker actors. This function expects only one
+parameter from its vector of strings: its identifier so that it knows
+on which mailbox its incoming tasks will arrive. Its code is very
+simple: as long as it gets valid computation requests (whose
+compute_amount is positive), it compute this task and waits for the
+next one.
+
+.. literalinclude:: ../../examples/s4u/app-masterworkers/s4u-app-masterworkers-fun.cpp
+ :language: c++
+ :start-after: worker-begin
+ :end-before: worker-end
+
+Starting the Simulation
+.......................
+
+And this is it. In only a few lines, we defined the algorithm of our
+master/workers examples. Well, this is true, but an algorithm alone is
+not enough to define a simulation.
+
+First, SimGrid is a library, not a program. So you need to define your
+own `main()` function, as follows. This function is in charge of
+creating a SimGrid simulation engine (on line 3), register the actor
+functions to the engine (on lines 7 and 8), load the virtual platform
+from its description file (on line 11), map actors onto that platform
+(on line 12) and run the simulation until its completion on line 15.
+
+.. literalinclude:: ../../examples/s4u/app-masterworkers/s4u-app-masterworkers-fun.cpp
+ :language: c++
+ :start-after: main-begin
+ :end-before: main-end
+ :linenos:
+
+After that, the missing pieces are the platform and deployment
+files.
+
+Platform File
+.............
+
+Platform files define the virtual platform on which the provided
+application will take place. In contains one or several **Network
+Zone** |api_s4u_NetZone|_ that contain both **Host-** |api_s4u_Host|_
+and **Link-** |api_s4u_Link|_ Resources, as well as routing
+information.
+
+Such files can get rather long and boring, so the example below is
+only an excerpts of the full ``examples/platforms/small_platform.xml``
+file. For example, most routing information are missing, and only the
+route between the hosts Tremblay and Fafard is given. This path
+traverses 6 links (4, 3, 2, 0, 1 and 8). The full file, along with
+other examples, can be found in the archive under
+``examples/platforms``.
+
+.. |api_s4u_NetZone| image:: /images/extlink.png
+ :align: middle
+ :width: 12
+.. _api_s4u_NetZone: api/classsimgrid_1_1s4u_1_1NetZone.html#class-documentation
+
+.. |api_s4u_Link| image:: /images/extlink.png
+ :align: middle
+ :width: 12
+.. _api_s4u_Link: api/classsimgrid_1_1s4u_1_1Link.html#class-documentation
+
+.. literalinclude:: ../../examples/platforms/small_platform.xml
+ :language: xml
+ :lines: 1-10,12-20,56-63,192-
+ :caption: (excerpts of the small_platform.xml file)
+
+Deployment File
+...............
+
+Deployment files specify the execution scenario: it lists the actors
+that should be started, along with their parameter. In the following
+example, we start 6 actors: one master and 5 workers.
+
+.. literalinclude:: ../../examples/s4u/app-masterworkers/s4u-app-masterworkers_d.xml
+ :language: xml
+
+Execution Example
+.................
+
+This time, we have all parts: once the program is compiled, we can
+execute it as follows. Note how the XBT_INFO() requests turned into
+informative messages.
+
+.. literalinclude:: ../../examples/s4u/app-masterworkers/s4u-app-masterworkers.tesh
+ :language: shell
+ :start-after: s4u-app-masterworkers-fun
+ :prepend: $$$ ./masterworkers platform.xml deploy.xml
+ :append: $$$
+ :dedent: 2
+
+
+Improve it Yourself
+-------------------
+
+In this section, you will modify the example presented earlier to
+explore the quality of the proposed algorithm. For now, it works and
+the simulation prints things, but the truth is that we have no idea of
+whether this is a good algorithm to dispatch tasks to the workers.
+This very simple setting raises many interesting questions:
+
+.. image:: /images/tuto-masterworkers-question.svg
+ :align: center
+
+- Which algorithm should the master use? Or should the worker decide
+ by themselves?
+
+ Round Robin is not an efficient algorithm when all tasks are not
+ processed at the same speed. It would probably be more efficient
+ if the workers were asking for tasks when ready.
+
+- Should tasks be grouped in batches or sent separately?
+
+ The workers will starve if they don't get the tasks fast
+ enough. One possibility to reduce latency would be to send tasks
+ in pools instead of one by one. But if the pools are too big, the
+ load balancing will likely get uneven, in particular when
+ distributing the last tasks.
+
+- How does the quality of such algorithm dependent on the platform
+ characteristics and on the task characteristics?
+
+ Whenever the input communication time is very small compared to
+ processing time and workers are homogeneous, it is likely that the
+ round-robin algorithm performs very well. Would it still hold true
+ when transfer time is not negligible? What if some tasks are
+ performed faster on some specific nodes?
+
+- The network topology interconnecting the master and the workers
+ may be quite complicated. How does such a topology impact the
+ previous result?
+
+ When data transfers are the bottleneck, it is likely that a good
+ modeling of the platform becomes essential. The SimGrid platform
+ models are particularly handy to account for complex platform
+ topologies.
+
+- What is the best applicative topology?
+
+ Is a flat master worker deployment sufficient? Should we go for a
+ hierarchical algorithm, with some forwarders taking large pools of
+ tasks from the master, each of them distributing their tasks to a
+ sub-pool of workers? Or should we introduce super-peers,
+ dupplicating the master's role in a peer-to-peer manner? Do the
+ algorithms require a perfect knowledge of the network?
+
+- How is such an algorithm sensitive to external workload variation?
+
+ What if bandwidth, latency and computing speed can vary with no
+ warning? Shouldn't you study whether your algorithm is sensitive
+ to such load variations?
+
+- Although an algorithm may be more efficient than another, how does
+ it interfere with unrelated applications executing on the same
+ facilities?
+
+**SimGrid was invented to answer such questions.** Do not believe the
+fools saying that all you need to study such settings is a simple
+discrete event simulator. Do you really want to reinvent the wheel,
+debug your own tool, optimize it and validate its models against real
+settings for ages, or do you prefer to sit on the shoulders of a
+giant? With SimGrid, you can focus on your algorithm. The whole
+simulation mechanism is already working.
+
+Here is the visualization of a SimGrid simulation of two master worker
+applications (one in light gray and the other in dark gray) running in
+concurrence and showing resource usage over a long period of time. It
+was obtained with the Triva software.
+
+.. image:: /images/tuto-masterworkers-result.png
+ :align: center
+
+Prerequisite
+............
+
+Before your proceed, you need to :ref:`install SimGrid <install>`, a
+C++ compiler and also ``pajeng`` to visualize the traces. The provided
+code template requires cmake to compile. On Debian and Ubuntu for
+example, you can get them as follows:
+
+.. code-block:: shell
+
+ sudo apt install simgrid pajeng cmake g++
+
+An initial version of the source code is provided on framagit. This
+template compiles with cmake. If SimGrid is correctly installed, you
+should be able to clone the `repository
+<https://framagit.org/simgrid/simgrid-template-s4u>`_ and recompile
+everything as follows:
+
+.. code-block:: shell
+
+ git clone git@framagit.org:simgrid/simgrid-template-s4u.git
+ cd simgrid-template-s4u/
+ cmake .
+ make
+
+If you struggle with the compilation, then you should double check
+your :ref:`SimGrid installation <install>`. On need, please refer to
+the :ref:`Troubleshooting your Project Setup
+<install_yours_troubleshooting>` section.
+
+Discovering the Provided Code
+.............................
+
+Please compile and execute the provided simulator as follows:
+
+
+.. code-block:: shell
+
+ make master-workers
+ ./master-workers small_platform.xml master-workers_d.xml
+
+For a more "fancy" output, you can use simgrid-colorizer.
+
+.. code-block:: shell
+
+ ./master-workers small_platform.xml master-workers_d.xml 2>&1 | simgrid-colorizer
+
+If you installed SimGrid to a non-standard path, you may have to
+specify the full path to simgrid-colorizer on the above line, such as
+``/opt/simgrid/bin/simgrid-colorizer``. If you did not install it at all,
+you can find it in <simgrid_root_directory>/bin/colorize.
+
+.. todo::
+
+ Explain how to generate a Gantt-Chart with S4U and pajeng.
+
+Exercise 1: Simplifying the deployment file
+...........................................
+
+In the provided example, the deployment file is tightly connected to
+the platform file ``small_platform.xml`` and adding more workers
+quickly becomes a pain: You need to start them (at the bottom of the
+file), add to inform the master that they are available by increasing
+the right parameter.
+
+Instead, modify the simulator ``master-workers.c`` into
+``master-workers-exo1.c`` so that the master launches a worker process
+on `all` the other machines at startup. The new deployment file should
+be as simple as:
+
+.. code-block:: xml
+
+ <?xml version='1.0'?>
+ <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
+ <platform version="4.1">
+ <actor host="Tremblay" function="master">
+ <argument value="20"/> <!-- Number of tasks -->
+ <argument value="50000000"/> <!-- Computation size of tasks -->
+ <argument value="1000000"/> <!-- Communication size of tasks -->
+ </actor>
+ </platform>
+
+Creating the workers from the master
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+For that, the master needs to retrieve the list of hosts declared in
+the platform with :cpp:func:`simgrid::s4u::Engine::get_all_host()`.
+Then, the master should start the worker processes with
+:cpp:func:`simgrid::s4u::Actor::create`.
+
+``Actor::create(name, host, func, params...)`` is a very flexible
+function. Its third parameter is the function that the actor should
+execute. This function can take any kind of parameter, provided that
+you pass similar parameters to ``Actor::create()``. For example, you
+could have something like this:
+
+.. code-block:: cpp
+
+ void my_actor(int param1, double param2, std::string param3) {
+ ...
+ }
+ int main(int argc, char argv**) {
+ ...
+ simgrid::s4u::ActorPtr actor;
+ actor = simgrid::s4u::Actor::create("name", simgrid::s4u::Host::by_name("the_host"),
+ &my_actor, 42, 3.14, "thevalue");
+ ...
+ }
+
+
+Master-Workers Communication
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Previously, the workers got from their parameter the name of the
+mailbox they should use. We can still do so: the master should build
+such a parameter before using it in the ``Actor::create()`` call. The
+master could even pass directly the mailbox as a parameter to the
+workers.
+
+Since we want later to study concurrent applications, it is advised to
+use a mailbox name that is unique over the simulation even if there is
+more than one master.
+
+One possibility for that is to use the actor ID (aid) of each worker
+as a mailbox name. The master can retrieve the aid of the newly
+created actor with ``actor->get_pid()`` while the actor itself can
+retrieve its own aid with ``simgrid::s4u::this_actor::get_pid()``.
+The retrieved value is an ``aid_t``, which is an alias for ``long``.
+
+Instead of having one mailbox per worker, you could also reorganize
+completely your application to have only one mailbox per master. All
+the workers of a given master would pull their work from the same
+mailbox, which should be passed as parameter to the workers. This
+reduces the amount of mailboxes, but prevents the master from taking
+any scheduling decision. It really depends on how you want to organize
+your application and what you want to study with your simulator.
+
+Wrap up
+^^^^^^^
+
+In this exercise, we reduced the amount of configuration that our
+simulator requests. This is both a good idea, and a dangerous
+trend. This simplification is an application of the good old DRY/SPOT
+programming principle (Don't Repeat Yourself / Single Point Of Truth
+-- `more on wikipedia
+<https://en.wikipedia.org/wiki/Don%27t_repeat_yourself>`_), and you
+really want your programming artefacts to follow these software
+engineering principles.
+
+But at the same time, you should be careful in separating your
+scientific contribution (the master/workers algorithm) and the
+artefacts used to test it (platform, deployment and workload). This is
+why SimGrid forces you to express your platform and deployment files
+in XML instead of using a programming interface: it forces a clear
+separation of concerns between things of very different nature.
+
+
+.. LocalWords: SimGrid
-This file follows the Doxygen syntax to be included in the
-documentation, but it should remain readable directly.
+// This file follows the Doxygen syntax to be included in the
+// documentation, but it should remain readable directly.
/**
@defgroup msg_examples MSG examples
*/
-As a human, you can stop reading at this point. The rest is garbage:
-
-Every example must be listed in the following, but it's not possible
-to move this content upper as each @example directive seems to eat
-everything until the next */ marker (and the content is placed at the
-top of the example file).
+// As a human, you can stop reading at this point. The rest is garbage:
+//
+// Every example must be listed in the following, but it's not possible
+// to move this content upper as each @example directive seems to eat
+// everything until the next */ marker (and the content is placed at the
+// top of the example file).
/**
for (i = 0; i < number_of_tasks; i++) {
char mailbox[256];
snprintf(mailbox, 255, "worker-%ld", i % workers_count);
-
+ XBT_INFO("Send a message to %s", mailbox);
msg_task_t task = MSG_task_create("Task", task_comp_size, task_comm_size, xbt_new0(double, 1));
*((double *) task->data) = MSG_get_clock();
switch ( MSG_task_send_with_timeout(task,mailbox,10.0) ) {
case MSG_OK:
- XBT_INFO("Send completed");
+ XBT_INFO("Send to %s completed", mailbox);
break;
case MSG_HOST_FAILURE:
while (1) {
double time1 = MSG_get_clock();
msg_task_t task = NULL;
+ XBT_INFO("Waiting a message on %s", mailbox);
int retcode = MSG_task_receive( &(task), mailbox);
double time2 = MSG_get_clock();
if (retcode == MSG_OK) {
- XBT_INFO("Received \"%s\"", MSG_task_get_name(task));
if (MSG_task_get_data(task) == FINALIZE) {
MSG_task_destroy(task);
break;
}
if (time1 < *((double *) task->data))
time1 = *((double *) task->data);
- XBT_INFO("Communication time : \"%f\"", time2 - time1);
- XBT_INFO("Processing \"%s\"", MSG_task_get_name(task));
+ XBT_INFO("Start execution...");
retcode = MSG_task_execute(task);
if (retcode == MSG_OK) {
- XBT_INFO("\"%s\" done", MSG_task_get_name(task));
+ XBT_INFO("Execution complete.");
free(task->data);
MSG_task_destroy(task);
} else if (retcode == MSG_HOST_FAILURE) {
$ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_with_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} --cfg=network/crosstraffic:0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:maestro@) Cannot launch process 'worker' on failed host 'Fafard'
> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
-> [ 0.010309] (1:master@Tremblay) Send completed
-> [ 0.010309] (2:worker@Tremblay) Received "Task"
-> [ 0.010309] (2:worker@Tremblay) Communication time : "0.010309"
-> [ 0.010309] (2:worker@Tremblay) Processing "Task"
+> [ 0.000000] (1:master@Tremblay) Send a message to worker-0
+> [ 0.010309] (1:master@Tremblay) Send to worker-0 completed
+> [ 0.010309] (2:worker@Tremblay) Start execution...
+> [ 0.000000] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 0.000000] (3:worker@Jupiter) Waiting a message on worker-1
+> [ 0.000000] (4:worker@Ginette) Waiting a message on worker-3
+> [ 0.000000] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 0.010309] (1:master@Tremblay) Send a message to worker-1
> [ 1.000000] (0:maestro@) Restart processes on host Fafard
+> [ 1.000000] (6:worker@Fafard) Waiting a message on worker-2
> [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-1'. Nevermind. Let's keep going!
+> [ 1.000000] (1:master@Tremblay) Send a message to worker-2
> [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 2.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-2'. Nevermind. Let's keep going!
+> [ 2.000000] (6:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you!
> [ 2.000000] (0:maestro@) Restart processes on host Jupiter
-> [ 2.010309] (2:worker@Tremblay) "Task" done
-> [ 11.000000] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 12.030928] (1:master@Tremblay) Send completed
-> [ 12.030928] (4:worker@Ginette) Received "Task"
-> [ 12.030928] (4:worker@Ginette) Communication time : "1.030928"
-> [ 12.030928] (4:worker@Ginette) Processing "Task"
-> [ 13.061856] (1:master@Tremblay) Send completed
-> [ 13.061856] (5:worker@Bourassa) Received "Task"
-> [ 13.061856] (5:worker@Bourassa) Communication time : "1.030928"
-> [ 13.061856] (5:worker@Bourassa) Processing "Task"
-> [ 13.072165] (1:master@Tremblay) Send completed
-> [ 13.072165] (2:worker@Tremblay) Received "Task"
-> [ 13.072165] (2:worker@Tremblay) Communication time : "0.010309"
-> [ 13.072165] (2:worker@Tremblay) Processing "Task"
-> [ 14.030928] (4:worker@Ginette) "Task" done
-> [ 14.103093] (1:master@Tremblay) Send completed
-> [ 14.103093] (6:worker@Jupiter) Received "Task"
-> [ 14.103093] (6:worker@Jupiter) Communication time : "1.030928"
-> [ 14.103093] (6:worker@Jupiter) Processing "Task"
-> [ 15.061856] (5:worker@Bourassa) "Task" done
-> [ 15.072165] (2:worker@Tremblay) "Task" done
-> [ 16.103093] (6:worker@Jupiter) "Task" done
-> [ 24.103093] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 24.103093] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going!
-> [ 24.103093] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
-> [ 25.134021] (1:master@Tremblay) Send completed
-> [ 25.134021] (5:worker@Bourassa) Received "Task"
-> [ 25.134021] (5:worker@Bourassa) Communication time : "1.030928"
-> [ 25.134021] (5:worker@Bourassa) Processing "Task"
-> [ 25.144330] (1:master@Tremblay) Send completed
-> [ 25.144330] (2:worker@Tremblay) Received "Task"
-> [ 25.144330] (2:worker@Tremblay) Communication time : "0.010309"
-> [ 25.144330] (2:worker@Tremblay) Processing "Task"
-> [ 26.175258] (1:master@Tremblay) Send completed
-> [ 26.175258] (6:worker@Jupiter) Received "Task"
-> [ 26.175258] (6:worker@Jupiter) Communication time : "1.030928"
-> [ 26.175258] (6:worker@Jupiter) Processing "Task"
-> [ 27.134021] (5:worker@Bourassa) "Task" done
-> [ 27.144330] (2:worker@Tremblay) "Task" done
-> [ 28.175258] (6:worker@Jupiter) "Task" done
-> [ 36.175258] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 37.206186] (1:master@Tremblay) Send completed
-> [ 37.206186] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going!
-> [ 37.206186] (4:worker@Ginette) Received "Task"
-> [ 37.206186] (4:worker@Ginette) Communication time : "1.030928"
-> [ 37.206186] (4:worker@Ginette) Processing "Task"
-> [ 37.206186] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
-> [ 37.216495] (1:master@Tremblay) Send completed
-> [ 37.216495] (2:worker@Tremblay) Received "Task"
-> [ 37.216495] (2:worker@Tremblay) Communication time : "0.010309"
-> [ 37.216495] (2:worker@Tremblay) Processing "Task"
-> [ 38.247423] (1:master@Tremblay) Send completed
-> [ 38.247423] (6:worker@Jupiter) Received "Task"
-> [ 38.247423] (6:worker@Jupiter) Communication time : "1.030928"
-> [ 38.247423] (6:worker@Jupiter) Processing "Task"
-> [ 39.206186] (4:worker@Ginette) "Task" done
-> [ 39.216495] (2:worker@Tremblay) "Task" done
-> [ 40.247423] (6:worker@Jupiter) "Task" done
-> [ 48.247423] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 49.278351] (1:master@Tremblay) Send completed
-> [ 49.278351] (4:worker@Ginette) Received "Task"
-> [ 49.278351] (4:worker@Ginette) Communication time : "1.030928"
-> [ 49.278351] (4:worker@Ginette) Processing "Task"
-> [ 50.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
-> [ 50.309278] (1:master@Tremblay) Send completed
-> [ 50.309278] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 50.309278] (2:worker@Tremblay) Received "finalize"
-> [ 50.309278] (2:worker@Tremblay) I'm done. See you!
-> [ 50.309278] (5:worker@Bourassa) Received "Task"
-> [ 50.309278] (5:worker@Bourassa) Communication time : "1.030928"
-> [ 50.309278] (5:worker@Bourassa) Processing "Task"
-> [ 50.309278] (6:worker@Jupiter) Received "finalize"
-> [ 50.309278] (6:worker@Jupiter) I'm done. See you!
-> [ 51.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 52.309278] (0:maestro@) Simulation time 52.3093
-> [ 52.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going!
-> [ 52.309278] (1:master@Tremblay) Goodbye now!
-> [ 52.309278] (5:worker@Bourassa) "Task" done
-> [ 52.309278] (5:worker@Bourassa) Received "finalize"
-> [ 52.309278] (5:worker@Bourassa) I'm done. See you!
+> [ 2.000000] (1:master@Tremblay) Send a message to worker-3
+> [ 2.000000] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 2.010309] (2:worker@Tremblay) Execution complete.
+> [ 2.010309] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 3.030928] (1:master@Tremblay) Send to worker-3 completed
+> [ 3.030928] (1:master@Tremblay) Send a message to worker-4
+> [ 3.030928] (4:worker@Ginette) Start execution...
+> [ 4.061856] (1:master@Tremblay) Send to worker-4 completed
+> [ 4.061856] (1:master@Tremblay) Send a message to worker-0
+> [ 4.061856] (5:worker@Bourassa) Start execution...
+> [ 4.072165] (1:master@Tremblay) Send to worker-0 completed
+> [ 4.072165] (1:master@Tremblay) Send a message to worker-1
+> [ 4.072165] (2:worker@Tremblay) Start execution...
+> [ 5.030928] (4:worker@Ginette) Execution complete.
+> [ 5.030928] (4:worker@Ginette) Waiting a message on worker-3
+> [ 5.103093] (1:master@Tremblay) Send to worker-1 completed
+> [ 5.103093] (1:master@Tremblay) Send a message to worker-2
+> [ 5.103093] (7:worker@Jupiter) Start execution...
+> [ 6.061856] (5:worker@Bourassa) Execution complete.
+> [ 6.061856] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 6.072165] (2:worker@Tremblay) Execution complete.
+> [ 6.072165] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 7.103093] (7:worker@Jupiter) Execution complete.
+> [ 7.103093] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 15.103093] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 15.103093] (1:master@Tremblay) Send a message to worker-3
+> [ 15.103093] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going!
+> [ 15.103093] (1:master@Tremblay) Send a message to worker-4
+> [ 15.103093] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 15.103093] (4:worker@Ginette) Waiting a message on worker-3
+> [ 16.134021] (1:master@Tremblay) Send to worker-4 completed
+> [ 16.134021] (1:master@Tremblay) Send a message to worker-0
+> [ 16.134021] (5:worker@Bourassa) Start execution...
+> [ 16.144330] (1:master@Tremblay) Send to worker-0 completed
+> [ 16.144330] (1:master@Tremblay) Send a message to worker-1
+> [ 16.144330] (2:worker@Tremblay) Start execution...
+> [ 17.175258] (1:master@Tremblay) Send to worker-1 completed
+> [ 17.175258] (1:master@Tremblay) Send a message to worker-2
+> [ 17.175258] (7:worker@Jupiter) Start execution...
+> [ 18.134021] (5:worker@Bourassa) Execution complete.
+> [ 18.134021] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 18.144330] (2:worker@Tremblay) Execution complete.
+> [ 18.144330] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 19.175258] (7:worker@Jupiter) Execution complete.
+> [ 19.175258] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 27.175258] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 27.175258] (1:master@Tremblay) Send a message to worker-3
+> [ 28.206186] (1:master@Tremblay) Send to worker-3 completed
+> [ 28.206186] (1:master@Tremblay) Send a message to worker-4
+> [ 28.206186] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going!
+> [ 28.206186] (1:master@Tremblay) Send a message to worker-0
+> [ 28.206186] (4:worker@Ginette) Start execution...
+> [ 28.206186] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 28.206186] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 28.216495] (1:master@Tremblay) Send to worker-0 completed
+> [ 28.216495] (1:master@Tremblay) Send a message to worker-1
+> [ 28.216495] (2:worker@Tremblay) Start execution...
+> [ 29.247423] (1:master@Tremblay) Send to worker-1 completed
+> [ 29.247423] (1:master@Tremblay) Send a message to worker-2
+> [ 29.247423] (7:worker@Jupiter) Start execution...
+> [ 30.206186] (4:worker@Ginette) Execution complete.
+> [ 30.206186] (4:worker@Ginette) Waiting a message on worker-3
+> [ 30.216495] (2:worker@Tremblay) Execution complete.
+> [ 30.216495] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 31.247423] (7:worker@Jupiter) Execution complete.
+> [ 31.247423] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 39.247423] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 39.247423] (1:master@Tremblay) Send a message to worker-3
+> [ 40.278351] (1:master@Tremblay) Send to worker-3 completed
+> [ 40.278351] (1:master@Tremblay) Send a message to worker-4
+> [ 40.278351] (4:worker@Ginette) Start execution...
+> [ 41.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 41.309278] (1:master@Tremblay) Send to worker-4 completed
+> [ 41.309278] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 41.309278] (2:worker@Tremblay) I'm done. See you!
+> [ 41.309278] (5:worker@Bourassa) Start execution...
+> [ 41.309278] (7:worker@Jupiter) I'm done. See you!
+> [ 42.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 43.309278] (0:maestro@) Simulation time 43.3093
+> [ 43.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going!
+> [ 43.309278] (1:master@Tremblay) Goodbye now!
+> [ 43.309278] (5:worker@Bourassa) Execution complete.
+> [ 43.309278] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 43.309278] (5:worker@Bourassa) I'm done. See you!
p Testing a simple master/worker example application handling failures. TCP crosstraffic ENABLED
$ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_with_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:maestro@) Cannot launch process 'worker' on failed host 'Fafard'
> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
-> [ 0.010825] (1:master@Tremblay) Send completed
-> [ 0.010825] (2:worker@Tremblay) Received "Task"
-> [ 0.010825] (2:worker@Tremblay) Communication time : "0.010825"
-> [ 0.010825] (2:worker@Tremblay) Processing "Task"
+> [ 0.000000] (1:master@Tremblay) Send a message to worker-0
+> [ 0.000000] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 0.000000] (3:worker@Jupiter) Waiting a message on worker-1
+> [ 0.000000] (4:worker@Ginette) Waiting a message on worker-3
+> [ 0.000000] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 0.010825] (2:worker@Tremblay) Start execution...
+> [ 0.010825] (1:master@Tremblay) Send to worker-0 completed
+> [ 0.010825] (1:master@Tremblay) Send a message to worker-1
> [ 1.000000] (0:maestro@) Restart processes on host Fafard
+> [ 1.000000] (6:worker@Fafard) Waiting a message on worker-2
> [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-1'. Nevermind. Let's keep going!
+> [ 1.000000] (1:master@Tremblay) Send a message to worker-2
> [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
> [ 2.000000] (0:maestro@) Restart processes on host Jupiter
-> [ 2.010825] (2:worker@Tremblay) "Task" done
-> [ 11.000000] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 12.082474] (1:master@Tremblay) Send completed
-> [ 12.082474] (4:worker@Ginette) Received "Task"
-> [ 12.082474] (4:worker@Ginette) Communication time : "1.082474"
-> [ 12.082474] (4:worker@Ginette) Processing "Task"
-> [ 13.164948] (1:master@Tremblay) Send completed
-> [ 13.164948] (5:worker@Bourassa) Received "Task"
-> [ 13.164948] (5:worker@Bourassa) Communication time : "1.082474"
-> [ 13.164948] (5:worker@Bourassa) Processing "Task"
-> [ 13.175773] (1:master@Tremblay) Send completed
-> [ 13.175773] (2:worker@Tremblay) Received "Task"
-> [ 13.175773] (2:worker@Tremblay) Communication time : "0.010825"
-> [ 13.175773] (2:worker@Tremblay) Processing "Task"
-> [ 14.082474] (4:worker@Ginette) "Task" done
-> [ 14.258247] (1:master@Tremblay) Send completed
-> [ 14.258247] (6:worker@Jupiter) Received "Task"
-> [ 14.258247] (6:worker@Jupiter) Communication time : "1.082474"
-> [ 14.258247] (6:worker@Jupiter) Processing "Task"
-> [ 15.164948] (5:worker@Bourassa) "Task" done
-> [ 15.175773] (2:worker@Tremblay) "Task" done
-> [ 16.258247] (6:worker@Jupiter) "Task" done
-> [ 24.258247] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 24.258247] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going!
-> [ 24.258247] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
-> [ 25.340722] (1:master@Tremblay) Send completed
-> [ 25.340722] (5:worker@Bourassa) Received "Task"
-> [ 25.340722] (5:worker@Bourassa) Communication time : "1.082474"
-> [ 25.340722] (5:worker@Bourassa) Processing "Task"
-> [ 25.351546] (1:master@Tremblay) Send completed
-> [ 25.351546] (2:worker@Tremblay) Received "Task"
-> [ 25.351546] (2:worker@Tremblay) Communication time : "0.010825"
-> [ 25.351546] (2:worker@Tremblay) Processing "Task"
-> [ 26.434021] (1:master@Tremblay) Send completed
-> [ 26.434021] (6:worker@Jupiter) Received "Task"
-> [ 26.434021] (6:worker@Jupiter) Communication time : "1.082474"
-> [ 26.434021] (6:worker@Jupiter) Processing "Task"
-> [ 27.340722] (5:worker@Bourassa) "Task" done
-> [ 27.351546] (2:worker@Tremblay) "Task" done
-> [ 28.434021] (6:worker@Jupiter) "Task" done
-> [ 36.434021] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 37.516495] (1:master@Tremblay) Send completed
-> [ 37.516495] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going!
-> [ 37.516495] (4:worker@Ginette) Received "Task"
-> [ 37.516495] (4:worker@Ginette) Communication time : "1.082474"
-> [ 37.516495] (4:worker@Ginette) Processing "Task"
-> [ 37.516495] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
-> [ 37.527320] (1:master@Tremblay) Send completed
-> [ 37.527320] (2:worker@Tremblay) Received "Task"
-> [ 37.527320] (2:worker@Tremblay) Communication time : "0.010825"
-> [ 37.527320] (2:worker@Tremblay) Processing "Task"
-> [ 38.609794] (1:master@Tremblay) Send completed
-> [ 38.609794] (6:worker@Jupiter) Received "Task"
-> [ 38.609794] (6:worker@Jupiter) Communication time : "1.082474"
-> [ 38.609794] (6:worker@Jupiter) Processing "Task"
-> [ 39.516495] (4:worker@Ginette) "Task" done
-> [ 39.527320] (2:worker@Tremblay) "Task" done
-> [ 40.609794] (6:worker@Jupiter) "Task" done
-> [ 48.609794] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 49.692268] (1:master@Tremblay) Send completed
-> [ 49.692268] (4:worker@Ginette) Received "Task"
-> [ 49.692268] (4:worker@Ginette) Communication time : "1.082474"
-> [ 49.692268] (4:worker@Ginette) Processing "Task"
-> [ 50.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
-> [ 50.774742] (1:master@Tremblay) Send completed
-> [ 50.774742] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 50.774742] (2:worker@Tremblay) Received "finalize"
-> [ 50.774742] (2:worker@Tremblay) I'm done. See you!
-> [ 50.774742] (5:worker@Bourassa) Received "Task"
-> [ 50.774742] (5:worker@Bourassa) Communication time : "1.082474"
-> [ 50.774742] (5:worker@Bourassa) Processing "Task"
-> [ 50.774742] (6:worker@Jupiter) Received "finalize"
-> [ 50.774742] (6:worker@Jupiter) I'm done. See you!
-> [ 51.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 52.774742] (0:maestro@) Simulation time 52.7747
-> [ 52.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going!
-> [ 52.774742] (1:master@Tremblay) Goodbye now!
-> [ 52.774742] (5:worker@Bourassa) "Task" done
-> [ 52.774742] (5:worker@Bourassa) Received "finalize"
-> [ 52.774742] (5:worker@Bourassa) I'm done. See you!
+> [ 2.000000] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 2.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-2'. Nevermind. Let's keep going!
+> [ 2.000000] (1:master@Tremblay) Send a message to worker-3
+> [ 2.000000] (6:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 2.010825] (2:worker@Tremblay) Execution complete.
+> [ 2.010825] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 3.082474] (4:worker@Ginette) Start execution...
+> [ 3.082474] (1:master@Tremblay) Send to worker-3 completed
+> [ 3.082474] (1:master@Tremblay) Send a message to worker-4
+> [ 4.164948] (5:worker@Bourassa) Start execution...
+> [ 4.164948] (1:master@Tremblay) Send to worker-4 completed
+> [ 4.164948] (1:master@Tremblay) Send a message to worker-0
+> [ 4.175773] (2:worker@Tremblay) Start execution...
+> [ 4.175773] (1:master@Tremblay) Send to worker-0 completed
+> [ 4.175773] (1:master@Tremblay) Send a message to worker-1
+> [ 5.082474] (4:worker@Ginette) Execution complete.
+> [ 5.082474] (4:worker@Ginette) Waiting a message on worker-3
+> [ 5.258247] (7:worker@Jupiter) Start execution...
+> [ 5.258247] (1:master@Tremblay) Send to worker-1 completed
+> [ 5.258247] (1:master@Tremblay) Send a message to worker-2
+> [ 6.164948] (5:worker@Bourassa) Execution complete.
+> [ 6.164948] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 6.175773] (2:worker@Tremblay) Execution complete.
+> [ 6.175773] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 7.258247] (7:worker@Jupiter) Execution complete.
+> [ 7.258247] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 15.258247] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 15.258247] (1:master@Tremblay) Send a message to worker-3
+> [ 15.258247] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 15.258247] (4:worker@Ginette) Waiting a message on worker-3
+> [ 15.258247] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going!
+> [ 15.258247] (1:master@Tremblay) Send a message to worker-4
+> [ 16.340722] (5:worker@Bourassa) Start execution...
+> [ 16.340722] (1:master@Tremblay) Send to worker-4 completed
+> [ 16.340722] (1:master@Tremblay) Send a message to worker-0
+> [ 16.351546] (2:worker@Tremblay) Start execution...
+> [ 16.351546] (1:master@Tremblay) Send to worker-0 completed
+> [ 16.351546] (1:master@Tremblay) Send a message to worker-1
+> [ 17.434021] (7:worker@Jupiter) Start execution...
+> [ 17.434021] (1:master@Tremblay) Send to worker-1 completed
+> [ 17.434021] (1:master@Tremblay) Send a message to worker-2
+> [ 18.340722] (5:worker@Bourassa) Execution complete.
+> [ 18.340722] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 18.351546] (2:worker@Tremblay) Execution complete.
+> [ 18.351546] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 19.434021] (7:worker@Jupiter) Execution complete.
+> [ 19.434021] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 27.434021] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 27.434021] (1:master@Tremblay) Send a message to worker-3
+> [ 28.516495] (4:worker@Ginette) Start execution...
+> [ 28.516495] (1:master@Tremblay) Send to worker-3 completed
+> [ 28.516495] (1:master@Tremblay) Send a message to worker-4
+> [ 28.516495] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 28.516495] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 28.516495] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going!
+> [ 28.516495] (1:master@Tremblay) Send a message to worker-0
+> [ 28.527320] (2:worker@Tremblay) Start execution...
+> [ 28.527320] (1:master@Tremblay) Send to worker-0 completed
+> [ 28.527320] (1:master@Tremblay) Send a message to worker-1
+> [ 29.609794] (7:worker@Jupiter) Start execution...
+> [ 29.609794] (1:master@Tremblay) Send to worker-1 completed
+> [ 29.609794] (1:master@Tremblay) Send a message to worker-2
+> [ 30.516495] (4:worker@Ginette) Execution complete.
+> [ 30.516495] (4:worker@Ginette) Waiting a message on worker-3
+> [ 30.527320] (2:worker@Tremblay) Execution complete.
+> [ 30.527320] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 31.609794] (7:worker@Jupiter) Execution complete.
+> [ 31.609794] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 39.609794] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 39.609794] (1:master@Tremblay) Send a message to worker-3
+> [ 40.692268] (4:worker@Ginette) Start execution...
+> [ 40.692268] (1:master@Tremblay) Send to worker-3 completed
+> [ 40.692268] (1:master@Tremblay) Send a message to worker-4
+> [ 41.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 41.774742] (5:worker@Bourassa) Start execution...
+> [ 41.774742] (1:master@Tremblay) Send to worker-4 completed
+> [ 41.774742] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 41.774742] (2:worker@Tremblay) I'm done. See you!
+> [ 41.774742] (7:worker@Jupiter) I'm done. See you!
+> [ 42.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 43.774742] (5:worker@Bourassa) Execution complete.
+> [ 43.774742] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 43.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going!
+> [ 43.774742] (5:worker@Bourassa) I'm done. See you!
+> [ 43.774742] (1:master@Tremblay) Goodbye now!
+> [ 43.774742] (0:maestro@) Simulation time 43.7747
p Testing a simple master/worker example application handling failures. CPU_TI optimization enabled
! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_with_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} -cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ $SG_TEST_EXENV ${bindir:=.}/platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_with_failures.xml ${srcdir}/../app-masterworker/app-masterworker_d.xml --cfg=path:${srcdir} --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:maestro@) Cannot launch process 'worker' on failed host 'Fafard'
> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
-> [ 0.010825] (1:master@Tremblay) Send completed
-> [ 0.010825] (2:worker@Tremblay) Received "Task"
-> [ 0.010825] (2:worker@Tremblay) Communication time : "0.010825"
-> [ 0.010825] (2:worker@Tremblay) Processing "Task"
+> [ 0.000000] (1:master@Tremblay) Send a message to worker-0
+> [ 0.000000] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 0.000000] (3:worker@Jupiter) Waiting a message on worker-1
+> [ 0.000000] (4:worker@Ginette) Waiting a message on worker-3
+> [ 0.000000] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 0.010825] (1:master@Tremblay) Send to worker-0 completed
+> [ 0.010825] (1:master@Tremblay) Send a message to worker-1
+> [ 0.010825] (2:worker@Tremblay) Start execution...
> [ 1.000000] (0:maestro@) Restart processes on host Fafard
> [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-1'. Nevermind. Let's keep going!
+> [ 1.000000] (1:master@Tremblay) Send a message to worker-2
> [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 1.000000] (6:worker@Fafard) Waiting a message on worker-2
> [ 2.000000] (0:maestro@) Restart processes on host Jupiter
-> [ 2.010825] (2:worker@Tremblay) "Task" done
-> [ 11.000000] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 12.082474] (1:master@Tremblay) Send completed
-> [ 12.082474] (4:worker@Ginette) Received "Task"
-> [ 12.082474] (4:worker@Ginette) Communication time : "1.082474"
-> [ 12.082474] (4:worker@Ginette) Processing "Task"
-> [ 13.164948] (1:master@Tremblay) Send completed
-> [ 13.164948] (5:worker@Bourassa) Received "Task"
-> [ 13.164948] (5:worker@Bourassa) Communication time : "1.082474"
-> [ 13.164948] (5:worker@Bourassa) Processing "Task"
-> [ 13.175773] (1:master@Tremblay) Send completed
-> [ 13.175773] (2:worker@Tremblay) Received "Task"
-> [ 13.175773] (2:worker@Tremblay) Communication time : "0.010825"
-> [ 13.175773] (2:worker@Tremblay) Processing "Task"
-> [ 14.082474] (4:worker@Ginette) "Task" done
-> [ 14.258247] (1:master@Tremblay) Send completed
-> [ 14.258247] (6:worker@Jupiter) Received "Task"
-> [ 14.258247] (6:worker@Jupiter) Communication time : "1.082474"
-> [ 14.258247] (6:worker@Jupiter) Processing "Task"
-> [ 15.164948] (5:worker@Bourassa) "Task" done
-> [ 15.175773] (2:worker@Tremblay) "Task" done
-> [ 16.258247] (6:worker@Jupiter) "Task" done
-> [ 24.258247] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 24.258247] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going!
-> [ 24.258247] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
-> [ 25.340722] (1:master@Tremblay) Send completed
-> [ 25.340722] (5:worker@Bourassa) Received "Task"
-> [ 25.340722] (5:worker@Bourassa) Communication time : "1.082474"
-> [ 25.340722] (5:worker@Bourassa) Processing "Task"
-> [ 25.351546] (1:master@Tremblay) Send completed
-> [ 25.351546] (2:worker@Tremblay) Received "Task"
-> [ 25.351546] (2:worker@Tremblay) Communication time : "0.010825"
-> [ 25.351546] (2:worker@Tremblay) Processing "Task"
-> [ 26.434021] (1:master@Tremblay) Send completed
-> [ 26.434021] (6:worker@Jupiter) Received "Task"
-> [ 26.434021] (6:worker@Jupiter) Communication time : "1.082474"
-> [ 26.434021] (6:worker@Jupiter) Processing "Task"
-> [ 27.340722] (5:worker@Bourassa) "Task" done
-> [ 27.351546] (2:worker@Tremblay) "Task" done
-> [ 28.434021] (6:worker@Jupiter) "Task" done
-> [ 36.434021] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 37.516495] (1:master@Tremblay) Send completed
-> [ 37.516495] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going!
-> [ 37.516495] (4:worker@Ginette) Received "Task"
-> [ 37.516495] (4:worker@Ginette) Communication time : "1.082474"
-> [ 37.516495] (4:worker@Ginette) Processing "Task"
-> [ 37.516495] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
-> [ 37.527320] (1:master@Tremblay) Send completed
-> [ 37.527320] (2:worker@Tremblay) Received "Task"
-> [ 37.527320] (2:worker@Tremblay) Communication time : "0.010825"
-> [ 37.527320] (2:worker@Tremblay) Processing "Task"
-> [ 38.609794] (1:master@Tremblay) Send completed
-> [ 38.609794] (6:worker@Jupiter) Received "Task"
-> [ 38.609794] (6:worker@Jupiter) Communication time : "1.082474"
-> [ 38.609794] (6:worker@Jupiter) Processing "Task"
-> [ 39.516495] (4:worker@Ginette) "Task" done
-> [ 39.527320] (2:worker@Tremblay) "Task" done
-> [ 40.609794] (6:worker@Jupiter) "Task" done
-> [ 48.609794] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 49.692268] (1:master@Tremblay) Send completed
-> [ 49.692268] (4:worker@Ginette) Received "Task"
-> [ 49.692268] (4:worker@Ginette) Communication time : "1.082474"
-> [ 49.692268] (4:worker@Ginette) Processing "Task"
-> [ 50.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
-> [ 50.774742] (1:master@Tremblay) Send completed
-> [ 50.774742] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 50.774742] (2:worker@Tremblay) Received "finalize"
-> [ 50.774742] (2:worker@Tremblay) I'm done. See you!
-> [ 50.774742] (5:worker@Bourassa) Received "Task"
-> [ 50.774742] (5:worker@Bourassa) Communication time : "1.082474"
-> [ 50.774742] (5:worker@Bourassa) Processing "Task"
-> [ 50.774742] (6:worker@Jupiter) Received "finalize"
-> [ 50.774742] (6:worker@Jupiter) I'm done. See you!
-> [ 51.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 52.774742] (0:maestro@) Simulation time 52.7747
-> [ 52.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going!
-> [ 52.774742] (1:master@Tremblay) Goodbye now!
-> [ 52.774742] (5:worker@Bourassa) "Task" done
-> [ 52.774742] (5:worker@Bourassa) Received "finalize"
-> [ 52.774742] (5:worker@Bourassa) I'm done. See you!
+> [ 2.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-2'. Nevermind. Let's keep going!
+> [ 2.000000] (1:master@Tremblay) Send a message to worker-3
+> [ 2.000000] (6:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 2.000000] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 2.010825] (2:worker@Tremblay) Execution complete.
+> [ 2.010825] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 3.082474] (1:master@Tremblay) Send to worker-3 completed
+> [ 3.082474] (1:master@Tremblay) Send a message to worker-4
+> [ 3.082474] (4:worker@Ginette) Start execution...
+> [ 4.164948] (1:master@Tremblay) Send to worker-4 completed
+> [ 4.164948] (1:master@Tremblay) Send a message to worker-0
+> [ 4.164948] (5:worker@Bourassa) Start execution...
+> [ 4.175773] (1:master@Tremblay) Send to worker-0 completed
+> [ 4.175773] (1:master@Tremblay) Send a message to worker-1
+> [ 4.175773] (2:worker@Tremblay) Start execution...
+> [ 5.082474] (4:worker@Ginette) Execution complete.
+> [ 5.082474] (4:worker@Ginette) Waiting a message on worker-3
+> [ 5.258247] (1:master@Tremblay) Send to worker-1 completed
+> [ 5.258247] (1:master@Tremblay) Send a message to worker-2
+> [ 5.258247] (7:worker@Jupiter) Start execution...
+> [ 6.164948] (5:worker@Bourassa) Execution complete.
+> [ 6.164948] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 6.175773] (2:worker@Tremblay) Execution complete.
+> [ 6.175773] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 7.258247] (7:worker@Jupiter) Execution complete.
+> [ 7.258247] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 15.258247] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 15.258247] (1:master@Tremblay) Send a message to worker-3
+> [ 15.258247] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going!
+> [ 15.258247] (1:master@Tremblay) Send a message to worker-4
+> [ 15.258247] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 15.258247] (4:worker@Ginette) Waiting a message on worker-3
+> [ 16.340722] (1:master@Tremblay) Send to worker-4 completed
+> [ 16.340722] (1:master@Tremblay) Send a message to worker-0
+> [ 16.340722] (5:worker@Bourassa) Start execution...
+> [ 16.351546] (1:master@Tremblay) Send to worker-0 completed
+> [ 16.351546] (1:master@Tremblay) Send a message to worker-1
+> [ 16.351546] (2:worker@Tremblay) Start execution...
+> [ 17.434021] (1:master@Tremblay) Send to worker-1 completed
+> [ 17.434021] (1:master@Tremblay) Send a message to worker-2
+> [ 17.434021] (7:worker@Jupiter) Start execution...
+> [ 18.340722] (5:worker@Bourassa) Execution complete.
+> [ 18.340722] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 18.351546] (2:worker@Tremblay) Execution complete.
+> [ 18.351546] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 19.434021] (7:worker@Jupiter) Execution complete.
+> [ 19.434021] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 27.434021] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 27.434021] (1:master@Tremblay) Send a message to worker-3
+> [ 28.516495] (1:master@Tremblay) Send to worker-3 completed
+> [ 28.516495] (1:master@Tremblay) Send a message to worker-4
+> [ 28.516495] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going!
+> [ 28.516495] (1:master@Tremblay) Send a message to worker-0
+> [ 28.516495] (4:worker@Ginette) Start execution...
+> [ 28.516495] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 28.516495] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 28.527320] (1:master@Tremblay) Send to worker-0 completed
+> [ 28.527320] (1:master@Tremblay) Send a message to worker-1
+> [ 28.527320] (2:worker@Tremblay) Start execution...
+> [ 29.609794] (1:master@Tremblay) Send to worker-1 completed
+> [ 29.609794] (1:master@Tremblay) Send a message to worker-2
+> [ 29.609794] (7:worker@Jupiter) Start execution...
+> [ 30.516495] (4:worker@Ginette) Execution complete.
+> [ 30.516495] (4:worker@Ginette) Waiting a message on worker-3
+> [ 30.527320] (2:worker@Tremblay) Execution complete.
+> [ 30.527320] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 31.609794] (7:worker@Jupiter) Execution complete.
+> [ 31.609794] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 39.609794] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 39.609794] (1:master@Tremblay) Send a message to worker-3
+> [ 40.692268] (1:master@Tremblay) Send to worker-3 completed
+> [ 40.692268] (1:master@Tremblay) Send a message to worker-4
+> [ 40.692268] (4:worker@Ginette) Start execution...
+> [ 41.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 41.774742] (1:master@Tremblay) Send to worker-4 completed
+> [ 41.774742] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 41.774742] (2:worker@Tremblay) I'm done. See you!
+> [ 41.774742] (5:worker@Bourassa) Start execution...
+> [ 41.774742] (7:worker@Jupiter) I'm done. See you!
+> [ 42.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 43.774742] (0:maestro@) Simulation time 43.7747
+> [ 43.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going!
+> [ 43.774742] (1:master@Tremblay) Goodbye now!
+> [ 43.774742] (5:worker@Bourassa) Execution complete.
+> [ 43.774742] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 43.774742] (5:worker@Bourassa) I'm done. See you!
13 0
14 1
+15 0
+16 1
20 0
25 1
endforeach()
set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/app-masterworkers/s4u-app-masterworkers.tesh)
-
# CHORD EXAMPLE
add_executable (s4u-dht-chord dht-chord/s4u-dht-chord.cpp dht-chord/s4u-dht-chord-node.cpp)
target_link_libraries(s4u-dht-chord simgrid)
energy-exec energy-boot energy-link energy-vm
engine-filtering
exec-async exec-basic exec-dvfs exec-monitor exec-ptask exec-remote
- platform-properties plugin-hostload mutex
+ platform-failures platform-properties plugin-hostload mutex
io-async io-file-system io-file-remote io-storage-raw
replay-comm replay-storage
routing-get-clusters
-S4U (Simgrid for you) is the next interface of SimGrid, expected to be released with SimGrid 4.0.
-
-Even if it is not completely rock stable yet, it may well already fit
-your needs. You are welcome to try it and report any interface
-glitches that you see. Be however warned that the interface may change
-until the final release. You will have to adapt your code on the way.
-
-This file follows the Doxygen syntax to be included in the
-documentation, but it should remain readable directly.
+// S4U (Simgrid for you) is the next interface of SimGrid, expected to be released with SimGrid 4.0.
+//
+// Even if it is not completely rock stable yet, it may well already fit
+// your needs. You are welcome to try it and report any interface
+// glitches that you see. Be however warned that the interface may change
+// until the final release. You will have to adapt your code on the way.
+//
+// This file follows the Doxygen syntax to be included in the
+// documentation, but it should remain readable directly.
/**
@defgroup s4u_examples S4U examples
Shows how to implement a classical communication pattern, where a token is exchanged along a ring to reach every
participant.
- - <b>Master Workers:</b> @ref examples/s4u/app-masterworker/s4u-app-masterworker.cpp @n
+ - <b>Master Workers:</b> @ref examples/s4u/app-masterworkers/s4u-app-masterworkers-class.cpp
+ @ref examples/s4u/app-masterworkers/s4u-app-masterworkers-fun.cpp @n
Another good old example, where one Master process has a bunch of task to dispatch to a set of several Worker
- processes.
+ processes. This example comes in two equivalent variants, one
+ where the actors are specified as simple functions (which is easier to
+ understand for newcomers) and one where the actors are specified
+ as classes (which is more powerful for the users wanting to build
+ their own projects upon the example).
@subsection s4u_ex_app_data Data diffusion
@example examples/s4u/async-waitany/s4u-async-waitany.cpp
@example examples/s4u/app-bittorrent/s4u-bittorrent.cpp
@example examples/s4u/app-chainsend/s4u-app-chainsend.cpp
-@example examples/s4u/app-masterworker/s4u-app-masterworker.cpp
+@example examples/s4u/app-masterworkers/s4u-app-masterworkers-class.cpp
+@example examples/s4u/app-masterworkers/s4u-app-masterworkers-fun.cpp
@example examples/s4u/app-pingpong/s4u-app-pingpong.cpp
@example examples/s4u/app-token-ring/s4u-app-token-ring.cpp
@example examples/s4u/dht-chord/s4u-dht-chord.cpp
> [ 4.965689] (worker@Ginette) Exiting now.
> [ 5.133855] (maestro@) Simulation is over
> [ 5.133855] (worker@Bourassa) Exiting now.
-
<argument value="1000000"/> <!-- Communication size of tasks -->
</actor>
<!-- The worker processes (with mailbox to listen on as argument) -->
- <actor host="Tremblay" function="worker" on_failure="RESTART">
+ <actor host="Tremblay" function="worker">
<argument value="0"/>
</actor>
- <actor host="Jupiter" function="worker" on_failure="RESTART">
+ <actor host="Jupiter" function="worker">
<argument value="1"/>
</actor>
- <actor host="Fafard" function="worker" on_failure="RESTART">
+ <actor host="Fafard" function="worker">
<argument value="2"/>
</actor>
- <actor host="Ginette" function="worker" on_failure="RESTART">
+ <actor host="Ginette" function="worker">
<argument value="3"/>
</actor>
- <actor host="Bourassa" function="worker" on_failure="RESTART">
+ <actor host="Bourassa" function="worker">
<argument value="4"/>
</actor>
</platform>
mailbox = simgrid::s4u::Mailbox::by_name(std::string("worker-") + std::to_string(i % workers_count));
double* payload = new double(comp_size);
try {
+ XBT_INFO("Send a message to %s", mailbox->get_cname());
mailbox->put(payload, comm_size, 10.0);
- XBT_INFO("Send completed");
+ XBT_INFO("Send to %s completed", mailbox->get_cname());
} catch (xbt_ex& e) {
switch (e.category) {
case host_error:
double comp_size = -1;
while (1) {
try {
+ XBT_INFO("Waiting a message on %s", mailbox->get_cname());
payload = static_cast<double*>(mailbox->get());
comp_size = *payload;
+ xbt_assert(payload != nullptr, "mailbox->get() failed");
+ if (comp_size < 0) { /* - Exit when -1.0 is received */
+ XBT_INFO("I'm done. See you!");
+ break;
+ }
+ /* - Otherwise, process the task */
+ try {
+ XBT_INFO("Start execution...");
+ simgrid::s4u::this_actor::execute(comp_size);
+ XBT_INFO("Execution complete.");
+ } catch (xbt_ex& e) {
+ if (e.category == host_error) {
+ XBT_INFO("Gloups. The cpu on which I'm running just turned off!. See you!");
+ return -1;
+ } else
+ xbt_die("Unexpected behavior");
+ }
+
delete payload;
} catch (xbt_ex& e) {
switch (e.category) {
xbt_die("Unexpected behavior");
}
}
- xbt_assert(payload != nullptr, "mailbox->get() failed");
- if (comp_size < 0) { /* - Exit when -1.0 is received */
- XBT_INFO("I'm done. See you!");
- break;
- }
- /* - Otherwise, process the task */
- try {
- simgrid::s4u::this_actor::execute(comp_size);
- } catch (xbt_ex& e) {
- if (e.category == host_error) {
- XBT_INFO("Gloups. The cpu on which I'm running just turned off!. See you!");
- return -1;
- } else
- xbt_die("Unexpected behavior");
- }
}
- XBT_INFO("I'm done. See you!");
return 0;
}
$ $SG_TEST_EXENV ${bindir:=.}/s4u-platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_with_failures.xml ${bindir}/../app-masterworker/s4u-app-masterworker_d.xml --cfg=path:${srcdir} --cfg=network/crosstraffic:0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:maestro@) Cannot launch process 'worker' on failed host 'Fafard'
> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
-> [ 0.010309] (1:master@Tremblay) Send completed
+> [ 0.000000] (1:master@Tremblay) Send a message to worker-0
+> [ 0.010309] (1:master@Tremblay) Send to worker-0 completed
+> [ 0.010309] (2:worker@Tremblay) Start execution...
+> [ 0.000000] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 0.000000] (3:worker@Jupiter) Waiting a message on worker-1
+> [ 0.000000] (4:worker@Ginette) Waiting a message on worker-3
+> [ 0.000000] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 0.010309] (1:master@Tremblay) Send a message to worker-1
> [ 1.000000] (0:maestro@) Restart processes on host Fafard
+> [ 1.000000] (6:worker@Fafard) Waiting a message on worker-2
> [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-1'. Nevermind. Let's keep going!
+> [ 1.000000] (1:master@Tremblay) Send a message to worker-2
> [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 2.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-2'. Nevermind. Let's keep going!
+> [ 2.000000] (6:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you!
> [ 2.000000] (0:maestro@) Restart processes on host Jupiter
-> [ 11.000000] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 12.030928] (1:master@Tremblay) Send completed
-> [ 13.061856] (1:master@Tremblay) Send completed
-> [ 13.072165] (1:master@Tremblay) Send completed
-> [ 14.103093] (1:master@Tremblay) Send completed
-> [ 24.103093] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 24.103093] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going!
-> [ 24.103093] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
-> [ 25.134021] (1:master@Tremblay) Send completed
-> [ 25.144330] (1:master@Tremblay) Send completed
-> [ 26.175258] (1:master@Tremblay) Send completed
-> [ 36.175258] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 37.206186] (1:master@Tremblay) Send completed
-> [ 37.206186] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going!
-> [ 37.206186] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
-> [ 38.247423] (1:master@Tremblay) Send completed
-> [ 48.247423] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 49.278351] (1:master@Tremblay) Send completed
-> [ 50.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
-> [ 50.309278] (1:master@Tremblay) Send completed
-> [ 50.309278] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 50.309278] (2:worker@Tremblay) I'm done. See you!
-> [ 50.309278] (6:worker@Jupiter) I'm done. See you!
-> [ 51.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
-> [ 52.309278] (0:maestro@) Simulation time 52.3093
-> [ 52.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going!
-> [ 52.309278] (1:master@Tremblay) Goodbye now!
-> [ 52.309278] (5:worker@Bourassa) I'm done. See you!
+> [ 2.000000] (1:master@Tremblay) Send a message to worker-3
+> [ 2.000000] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 2.010309] (2:worker@Tremblay) Execution complete.
+> [ 2.010309] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 3.030928] (1:master@Tremblay) Send to worker-3 completed
+> [ 3.030928] (1:master@Tremblay) Send a message to worker-4
+> [ 3.030928] (4:worker@Ginette) Start execution...
+> [ 4.061856] (1:master@Tremblay) Send to worker-4 completed
+> [ 4.061856] (1:master@Tremblay) Send a message to worker-0
+> [ 4.061856] (5:worker@Bourassa) Start execution...
+> [ 4.072165] (1:master@Tremblay) Send to worker-0 completed
+> [ 4.072165] (1:master@Tremblay) Send a message to worker-1
+> [ 4.072165] (2:worker@Tremblay) Start execution...
+> [ 5.030928] (4:worker@Ginette) Execution complete.
+> [ 5.030928] (4:worker@Ginette) Waiting a message on worker-3
+> [ 5.103093] (1:master@Tremblay) Send to worker-1 completed
+> [ 5.103093] (1:master@Tremblay) Send a message to worker-2
+> [ 5.103093] (7:worker@Jupiter) Start execution...
+> [ 6.061856] (5:worker@Bourassa) Execution complete.
+> [ 6.061856] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 6.072165] (2:worker@Tremblay) Execution complete.
+> [ 6.072165] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 7.103093] (7:worker@Jupiter) Execution complete.
+> [ 7.103093] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 15.103093] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 15.103093] (1:master@Tremblay) Send a message to worker-3
+> [ 15.103093] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going!
+> [ 15.103093] (1:master@Tremblay) Send a message to worker-4
+> [ 15.103093] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 15.103093] (4:worker@Ginette) Waiting a message on worker-3
+> [ 16.134021] (1:master@Tremblay) Send to worker-4 completed
+> [ 16.134021] (1:master@Tremblay) Send a message to worker-0
+> [ 16.134021] (5:worker@Bourassa) Start execution...
+> [ 16.144330] (1:master@Tremblay) Send to worker-0 completed
+> [ 16.144330] (1:master@Tremblay) Send a message to worker-1
+> [ 16.144330] (2:worker@Tremblay) Start execution...
+> [ 17.175258] (1:master@Tremblay) Send to worker-1 completed
+> [ 17.175258] (1:master@Tremblay) Send a message to worker-2
+> [ 17.175258] (7:worker@Jupiter) Start execution...
+> [ 18.134021] (5:worker@Bourassa) Execution complete.
+> [ 18.134021] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 18.144330] (2:worker@Tremblay) Execution complete.
+> [ 18.144330] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 19.175258] (7:worker@Jupiter) Execution complete.
+> [ 19.175258] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 27.175258] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 27.175258] (1:master@Tremblay) Send a message to worker-3
+> [ 28.206186] (1:master@Tremblay) Send to worker-3 completed
+> [ 28.206186] (1:master@Tremblay) Send a message to worker-4
+> [ 28.206186] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going!
+> [ 28.206186] (1:master@Tremblay) Send a message to worker-0
+> [ 28.206186] (4:worker@Ginette) Start execution...
+> [ 28.206186] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 28.206186] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 28.216495] (1:master@Tremblay) Send to worker-0 completed
+> [ 28.216495] (1:master@Tremblay) Send a message to worker-1
+> [ 28.216495] (2:worker@Tremblay) Start execution...
+> [ 29.247423] (1:master@Tremblay) Send to worker-1 completed
+> [ 29.247423] (1:master@Tremblay) Send a message to worker-2
+> [ 29.247423] (7:worker@Jupiter) Start execution...
+> [ 30.206186] (4:worker@Ginette) Execution complete.
+> [ 30.206186] (4:worker@Ginette) Waiting a message on worker-3
+> [ 30.216495] (2:worker@Tremblay) Execution complete.
+> [ 30.216495] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 31.247423] (7:worker@Jupiter) Execution complete.
+> [ 31.247423] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 39.247423] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 39.247423] (1:master@Tremblay) Send a message to worker-3
+> [ 40.278351] (1:master@Tremblay) Send to worker-3 completed
+> [ 40.278351] (1:master@Tremblay) Send a message to worker-4
+> [ 40.278351] (4:worker@Ginette) Start execution...
+> [ 41.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 41.309278] (1:master@Tremblay) Send to worker-4 completed
+> [ 41.309278] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 41.309278] (2:worker@Tremblay) I'm done. See you!
+> [ 41.309278] (5:worker@Bourassa) Start execution...
+> [ 41.309278] (7:worker@Jupiter) I'm done. See you!
+> [ 42.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 43.309278] (0:maestro@) Simulation time 43.3093
+> [ 43.309278] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going!
+> [ 43.309278] (1:master@Tremblay) Goodbye now!
+> [ 43.309278] (5:worker@Bourassa) Execution complete.
+> [ 43.309278] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 43.309278] (5:worker@Bourassa) I'm done. See you!
+p Testing a simple master/worker example application handling failures. TCP crosstraffic ENABLED
+
+! output sort 19
+$ $SG_TEST_EXENV ${bindir:=.}/s4u-platform-failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${platfdir}/small_platform_with_failures.xml ${bindir}/../app-masterworker/s4u-app-masterworker_d.xml --cfg=path:${srcdir} "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (0:maestro@) Cannot launch process 'worker' on failed host 'Fafard'
+> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Send a message to worker-0
+> [ 0.000000] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 0.000000] (3:worker@Jupiter) Waiting a message on worker-1
+> [ 0.000000] (4:worker@Ginette) Waiting a message on worker-3
+> [ 0.000000] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 0.010825] (2:worker@Tremblay) Start execution...
+> [ 0.010825] (1:master@Tremblay) Send to worker-0 completed
+> [ 0.010825] (1:master@Tremblay) Send a message to worker-1
+> [ 1.000000] (0:maestro@) Restart processes on host Fafard
+> [ 1.000000] (6:worker@Fafard) Waiting a message on worker-2
+> [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-1'. Nevermind. Let's keep going!
+> [ 1.000000] (1:master@Tremblay) Send a message to worker-2
+> [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 2.000000] (0:maestro@) Restart processes on host Jupiter
+> [ 2.000000] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 2.000000] (1:master@Tremblay) Mmh. Something went wrong with 'worker-2'. Nevermind. Let's keep going!
+> [ 2.000000] (1:master@Tremblay) Send a message to worker-3
+> [ 2.000000] (6:worker@Fafard) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 2.010825] (2:worker@Tremblay) Execution complete.
+> [ 2.010825] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 3.082474] (4:worker@Ginette) Start execution...
+> [ 3.082474] (1:master@Tremblay) Send to worker-3 completed
+> [ 3.082474] (1:master@Tremblay) Send a message to worker-4
+> [ 4.164948] (5:worker@Bourassa) Start execution...
+> [ 4.164948] (1:master@Tremblay) Send to worker-4 completed
+> [ 4.164948] (1:master@Tremblay) Send a message to worker-0
+> [ 4.175773] (2:worker@Tremblay) Start execution...
+> [ 4.175773] (1:master@Tremblay) Send to worker-0 completed
+> [ 4.175773] (1:master@Tremblay) Send a message to worker-1
+> [ 5.082474] (4:worker@Ginette) Execution complete.
+> [ 5.082474] (4:worker@Ginette) Waiting a message on worker-3
+> [ 5.258247] (7:worker@Jupiter) Start execution...
+> [ 5.258247] (1:master@Tremblay) Send to worker-1 completed
+> [ 5.258247] (1:master@Tremblay) Send a message to worker-2
+> [ 6.164948] (5:worker@Bourassa) Execution complete.
+> [ 6.164948] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 6.175773] (2:worker@Tremblay) Execution complete.
+> [ 6.175773] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 7.258247] (7:worker@Jupiter) Execution complete.
+> [ 7.258247] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 15.258247] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 15.258247] (1:master@Tremblay) Send a message to worker-3
+> [ 15.258247] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 15.258247] (4:worker@Ginette) Waiting a message on worker-3
+> [ 15.258247] (1:master@Tremblay) Mmh. Something went wrong with 'worker-3'. Nevermind. Let's keep going!
+> [ 15.258247] (1:master@Tremblay) Send a message to worker-4
+> [ 16.340722] (5:worker@Bourassa) Start execution...
+> [ 16.340722] (1:master@Tremblay) Send to worker-4 completed
+> [ 16.340722] (1:master@Tremblay) Send a message to worker-0
+> [ 16.351546] (2:worker@Tremblay) Start execution...
+> [ 16.351546] (1:master@Tremblay) Send to worker-0 completed
+> [ 16.351546] (1:master@Tremblay) Send a message to worker-1
+> [ 17.434021] (7:worker@Jupiter) Start execution...
+> [ 17.434021] (1:master@Tremblay) Send to worker-1 completed
+> [ 17.434021] (1:master@Tremblay) Send a message to worker-2
+> [ 18.340722] (5:worker@Bourassa) Execution complete.
+> [ 18.340722] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 18.351546] (2:worker@Tremblay) Execution complete.
+> [ 18.351546] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 19.434021] (7:worker@Jupiter) Execution complete.
+> [ 19.434021] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 27.434021] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 27.434021] (1:master@Tremblay) Send a message to worker-3
+> [ 28.516495] (4:worker@Ginette) Start execution...
+> [ 28.516495] (1:master@Tremblay) Send to worker-3 completed
+> [ 28.516495] (1:master@Tremblay) Send a message to worker-4
+> [ 28.516495] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 28.516495] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 28.516495] (1:master@Tremblay) Mmh. Something went wrong with 'worker-4'. Nevermind. Let's keep going!
+> [ 28.516495] (1:master@Tremblay) Send a message to worker-0
+> [ 28.527320] (2:worker@Tremblay) Start execution...
+> [ 28.527320] (1:master@Tremblay) Send to worker-0 completed
+> [ 28.527320] (1:master@Tremblay) Send a message to worker-1
+> [ 29.609794] (7:worker@Jupiter) Start execution...
+> [ 29.609794] (1:master@Tremblay) Send to worker-1 completed
+> [ 29.609794] (1:master@Tremblay) Send a message to worker-2
+> [ 30.516495] (4:worker@Ginette) Execution complete.
+> [ 30.516495] (4:worker@Ginette) Waiting a message on worker-3
+> [ 30.527320] (2:worker@Tremblay) Execution complete.
+> [ 30.527320] (2:worker@Tremblay) Waiting a message on worker-0
+> [ 31.609794] (7:worker@Jupiter) Execution complete.
+> [ 31.609794] (7:worker@Jupiter) Waiting a message on worker-1
+> [ 39.609794] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 39.609794] (1:master@Tremblay) Send a message to worker-3
+> [ 40.692268] (4:worker@Ginette) Start execution...
+> [ 40.692268] (1:master@Tremblay) Send to worker-3 completed
+> [ 40.692268] (1:master@Tremblay) Send a message to worker-4
+> [ 41.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 41.774742] (5:worker@Bourassa) Start execution...
+> [ 41.774742] (1:master@Tremblay) Send to worker-4 completed
+> [ 41.774742] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 41.774742] (2:worker@Tremblay) I'm done. See you!
+> [ 41.774742] (7:worker@Jupiter) I'm done. See you!
+> [ 42.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-2'. Nevermind. Let's keep going!
+> [ 43.774742] (5:worker@Bourassa) Execution complete.
+> [ 43.774742] (5:worker@Bourassa) Waiting a message on worker-4
+> [ 43.774742] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'worker-3'. Nevermind. Let's keep going!
+> [ 43.774742] (5:worker@Bourassa) I'm done. See you!
+> [ 43.774742] (1:master@Tremblay) Goodbye now!
+> [ 43.774742] (0:maestro@) Simulation time 43.7747
e.register_function("carole", carole);
e.register_function("david", david);
- size_t totalHosts = sg_host_count();
+ size_t totalHosts = e.get_host_count();
XBT_INFO("There are %zu hosts in the environment", totalHosts);
std::vector<simgrid::s4u::Host*> hosts = e.get_all_hosts();
* - Synchronization activities may possibly be connected to no action.
*/
class XBT_PUBLIC Activity {
+#ifndef DOXYGEN
friend Comm;
friend XBT_PUBLIC void intrusive_ptr_release(Comm * c);
friend XBT_PUBLIC void intrusive_ptr_add_ref(Comm * c);
friend Io;
friend XBT_PUBLIC void intrusive_ptr_release(Io* i);
friend XBT_PUBLIC void intrusive_ptr_add_ref(Io* i);
+#endif
protected:
Activity() = default;
namespace simgrid {
namespace s4u {
-/** @ingroup s4u_api
+/**
*
* An actor is an independent stream of execution in your distributed application.
*
/** @brief Simulation Agent */
class XBT_PUBLIC Actor : public simgrid::xbt::Extendable<Actor> {
+#ifndef DOXYGEN
friend Exec;
friend Mailbox;
friend simgrid::kernel::actor::ActorImpl;
friend simgrid::kernel::activity::MailboxImpl;
+#endif
kernel::actor::ActorImpl* pimpl_ = nullptr;
/** Wrap a (possibly non-copyable) single-use task into a `std::function` */
/** Signal indicating that the given actor is about to disappear */
static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_destruction;
- /** Create an actor using a function
+ /** Create an actor from a std::function
*
* If the actor is restarted, the actor has a fresh copy of the function.
*/
static ActorPtr create(std::string name, s4u::Host* host, std::function<void()> code);
+ /** Create an actor from a std::function
+ *
+ * If the actor is restarted, the actor has a fresh copy of the function.
+ */
static ActorPtr create(std::string name, s4u::Host* host, std::function<void(std::vector<std::string>*)> code,
std::vector<std::string>* args)
{
/** Retrieves the time at which that actor will be killed (or -1 if not set) */
double get_kill_time();
+ /** @brief Moves the actor to another host
+ *
+ * If the actor is currently blocked on an execution activity, the activity is also
+ * migrated to the new host. If it's blocked on another kind of activity, an error is
+ * raised as the mandated code is not written yet. Please report that bug if you need it.
+ *
+ * Asynchronous activities started by the actor are not migrated automatically, so you have
+ * to take care of this yourself (only you knows which ones should be migrated).
+ */
void migrate(Host * new_host);
/** Ask the actor to die.
/** Retrieves the actor that have the given PID (or nullptr if not existing) */
static ActorPtr by_pid(aid_t pid);
- /** @brief Wait for the actor to finish.
+ /** Wait for the actor to finish.
*
* This blocks the calling actor until the actor on which we call join() is terminated
*/
const char* get_property(std::string key);
void set_property(std::string key, std::string value);
+#ifndef DOXYGEN
/** @deprecated See Actor::create() */
XBT_ATTRIB_DEPRECATED_v323("Please use Actor::create()") static ActorPtr createActor(
const char* name, s4u::Host* host, std::function<void()> code)
{
set_property(key, value);
}
+#endif
};
/** @ingroup s4u_api
/** @brief kill the actor. */
XBT_PUBLIC void exit();
+#ifndef DOXYGEN
/** @deprecated Please use std::function<void(int, void*)> for first parameter */
XBT_ATTRIB_DEPRECATED_v323("Please use std::function<void(int, void*)> for first parameter.") XBT_PUBLIC
void on_exit(int_f_pvoid_pvoid_t fun, void* data);
XBT_ATTRIB_DEPRECATED_v323("Please use this_actor::on_exit()") XBT_PUBLIC void onExit(int_f_pvoid_pvoid_t fun, void* data);
/** @deprecated See this_actor::exit() */
XBT_ATTRIB_DEPRECATED_v324("Please use this_actor::exit()") XBT_PUBLIC void kill();
+#endif
}
/** @} */
*/
class XBT_PUBLIC ConditionVariable {
private:
+#ifndef DOXYGEN
friend kernel::activity::ConditionVariableImpl;
smx_cond_t cond_;
+#endif
explicit ConditionVariable(smx_cond_t cond) : cond_(cond) {}
public:
ConditionVariable(ConditionVariable const&) = delete;
void load_deployment(std::string deploy);
protected:
- friend s4u::Host;
- friend s4u::Link;
- friend s4u::Storage;
+#ifndef DOXYGEN
+ friend Host;
+ friend Link;
+ friend Storage;
friend kernel::routing::NetPoint;
friend kernel::routing::NetZoneImpl;
friend kernel::resource::LinkImpl;
- void host_register(std::string name, simgrid::s4u::Host* host);
+ void host_register(std::string name, Host* host);
void host_unregister(std::string name);
- void link_register(std::string name, simgrid::s4u::Link* link);
+ void link_register(std::string name, Link* link);
void link_unregister(std::string name);
- void storage_register(std::string name, simgrid::s4u::Storage* storage);
+ void storage_register(std::string name, Storage* storage);
void storage_unregister(std::string name);
void netpoint_register(simgrid::kernel::routing::NetPoint* card);
void netpoint_unregister(simgrid::kernel::routing::NetPoint* card);
+#endif /*DOXYGEN*/
public:
size_t get_host_count();
+ /** @brief Returns the list of all hosts found in the platform */
std::vector<Host*> get_all_hosts();
std::vector<Host*> get_filtered_hosts(std::function<bool(Host*)> filter);
simgrid::s4u::Host* host_by_name(std::string name);
namespace simgrid {
namespace s4u {
+/** Computation #Activity, representing the asynchronous disk access.
+ *
+ * They are generated from simgrid::s4u::this_actor::exec_init() or simgrid::s4u::Host::execute().
+ */
+
class XBT_PUBLIC Exec : public Activity {
Exec() : Activity() {}
public:
* and actors can retrieve the host on which they run using simgrid::s4u::Host::current().
*/
class XBT_PUBLIC Host : public simgrid::xbt::Extendable<Host> {
+#ifndef DOXYGEN
friend simgrid::vm::VMModel; // Use the pimpl_cpu to compute the VM sharing
friend simgrid::vm::VirtualMachineImpl; // creates the the pimpl_cpu
+#endif
public:
explicit Host(std::string name);
const char* get_property(std::string key) const;
void set_property(std::string key, std::string value);
std::unordered_map<std::string, std::string>* get_properties();
+
+#ifndef DOXYGEN
/** @deprecated See Host::get_properties() */
XBT_ATTRIB_DEPRECATED_v323("Please use Host::get_properties()") std::map<std::string, std::string>* getProperties()
{
res->insert(kv);
return res;
}
+#endif
double get_speed() const;
double get_available_speed() const;
void set_pstate(int pstate_index);
int get_pstate() const;
+#ifndef DOXYGEN
/** @deprecated See Host::get_speed() */
XBT_ATTRIB_DEPRECATED_v323("Please use Host::get_speed() instead.") double getSpeed() { return get_speed(); }
/** @deprecated See Host::get_pstate_speed() */
{
return get_pstate_speed(pstate_index);
}
+#endif
std::vector<const char*> get_attached_storages() const;
XBT_ATTRIB_DEPRECATED_v323("Please use Host::get_attached_storages() instead.") void getAttachedStorages(
void execute(double flops, double priority);
// Deprecated functions
+#ifndef DOXYGEN
/** @deprecated See Host::get_name() */
XBT_ATTRIB_DEPRECATED_v323("Please use Host::get_name()") simgrid::xbt::string const& getName() const
{
{
return get_pstate_count();
}
+#endif /* !DOXYGEN */
private:
simgrid::xbt::string name_ {"noname"};
namespace simgrid {
namespace s4u {
+/** I/O Activity, representing the asynchronous disk access.
+ *
+ * They are generated from simgrid::s4u::Storage::read() and simgrid::s4u::Storage::write().
+ */
+
class XBT_PUBLIC Io : public Activity {
public:
enum class OpType { READ, WRITE };
namespace s4u {
/** @brief A Link represents the network facilities between [hosts](@ref simgrid::s4u::Host) */
class XBT_PUBLIC Link : public simgrid::xbt::Extendable<Link> {
+#ifndef DOXYGEN
friend simgrid::kernel::resource::LinkImpl;
+#endif
// Links are created from the NetZone, and destroyed by their private implementation when the simulation ends
explicit Link(kernel::resource::LinkImpl* pimpl) : pimpl_(pimpl) {}
* @section s4u_mb_api The API
*/
class XBT_PUBLIC Mailbox {
+#ifndef DOXYGEN
friend Comm;
friend simgrid::kernel::activity::MailboxImpl;
+#endif
simgrid::kernel::activity::MailboxImpl* pimpl_;
*
*/
class XBT_PUBLIC Mutex {
+#ifndef DOXYGEN
friend ConditionVariable;
friend simgrid::kernel::activity::MutexImpl;
+#endif
simgrid::kernel::activity::MutexImpl* pimpl_;
explicit Mutex(simgrid::kernel::activity::MutexImpl* mutex) : pimpl_(mutex) {}
*/
class XBT_PUBLIC NetZone {
protected:
+#ifndef DOXYGEN
friend simgrid::kernel::routing::NetZoneImpl;
+#endif
explicit NetZone(kernel::routing::NetZoneImpl* impl);
~NetZone();
#include <unordered_map>
namespace simgrid {
-namespace xbt {
-extern template class XBT_PUBLIC Extendable<simgrid::s4u::Storage>;
-}
namespace s4u {
+#ifndef DOXYGEN
/** @deprecated Engine::get_all_storages() */
XBT_ATTRIB_DEPRECATED_v322("Please use Engine::get_all_storages()") XBT_PUBLIC void getStorageList(std::map<std::string, Storage*>* whereTo);
+#endif
+
+/** Storage represent the disk resources, usually associated to a given host */
class XBT_PUBLIC Storage : public simgrid::xbt::Extendable<Storage> {
+#ifndef DOXYGEN
friend s4u::Engine;
friend s4u::Io;
friend simgrid::surf::StorageImpl;
+#endif /* DOXYGEN */
public:
explicit Storage(std::string name, surf::StorageImpl * pimpl);
-/* Copyright (c) 2015-2018. The SimGrid Team.
- * All rights reserved. */
+/* Copyright (c) 2015-2018. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
// ***** snapshot_page_manager
-PageStore::PageStore(size_t size) : memory_(nullptr), capacity_(size), top_index_(0)
+PageStore::PageStore(std::size_t size) : memory_(nullptr), capacity_(size), top_index_(0)
{
// Using mmap in order to be able to expand the region by relocating it somewhere else in the virtual memory space:
void* memory =
*
* @param addr Pointer
* @param snapshot Snapshot
- * @param Snapshot region in the snapshot this pointer belongs to
- * (or nullptr if it does not belong to any snapshot region)
+ * @param process_index rank requesting the region
* */
mc_mem_region_t mc_get_snapshot_region(const void* addr, const simgrid::mc::Snapshot* snapshot, int process_index)
{
/** Compare memory between snapshots (with known regions)
*
* @param addr1 Address in the first snapshot
- * @param snapshot2 Region of the address in the first snapshot
+ * @param region1 Region of the address in the first snapshot
* @param addr2 Address in the second snapshot
- * @param snapshot2 Region of the address in the second snapshot
- * @return same as memcmp
- * */
+ * @param region2 Region of the address in the second snapshot
+ * @return same semantic as memcmp
+ */
int MC_snapshot_region_memcmp(const void* addr1, mc_mem_region_t region1, const void* addr2, mc_mem_region_t region2,
size_t size)
{
#include "simgrid/s4u/Exec.hpp"
#include "simgrid/s4u/Host.hpp"
#include "src/kernel/activity/ExecImpl.hpp"
+#include "src/simix/smx_host_private.hpp"
#include "src/simix/smx_private.hpp"
+#include "src/surf/HostImpl.hpp"
#include <sstream>
void Actor::set_auto_restart(bool autorestart)
{
- simgrid::simix::simcall([this, autorestart]() { pimpl_->set_auto_restart(autorestart); });
+ simgrid::simix::simcall([this, autorestart]() {
+ pimpl_->set_auto_restart(autorestart);
+
+ std::map<std::string, kernel::actor::ProcessArg*> actors_map = pimpl_->host_->pimpl_->actors_at_boot_;
+ if (actors_map.find(pimpl_->name_) == actors_map.end()) {
+ simgrid::kernel::actor::ProcessArg* arg = new simgrid::kernel::actor::ProcessArg(pimpl_->host_, pimpl_);
+ XBT_DEBUG("Adding Process %s to the actors_at_boot_ list of Host %s", arg->name.c_str(), arg->host->get_cname());
+ actors_map.insert({arg->name, arg});
+ }
+ });
}
void Actor::on_exit(int_f_pvoid_pvoid_t fun, void* data) /* deprecated */
simgrid::simix::simcall([this, fun, data] { SIMIX_process_on_exit(pimpl_, fun, data); });
}
-/** @brief Moves the actor to another host
- *
- * If the actor is currently blocked on an execution activity, the activity is also
- * migrated to the new host. If it's blocked on another kind of activity, an error is
- * raised as the mandated code is not written yet. Please report that bug if you need it.
- *
- * Asynchronous activities started by the actor are not migrated automatically, so you have
- * to take care of this yourself (only you knows which ones should be migrated).
- */
void Actor::migrate(Host* new_host)
{
s4u::Actor::on_migration_start(this);
list->push_back(kv.second);
}
-/** @brief Returns the list of all hosts found in the platform */
std::vector<Host*> Engine::get_all_hosts()
{
std::vector<Host*> res;
{
if (is_off()) {
simgrid::simix::simcall([this] {
- this->pimpl_->turn_on();
this->pimpl_cpu->turn_on();
+ this->pimpl_->turn_on();
on_state_change(*this);
});
}
/* destroy the blocking synchro if any */
if (process->waiting_synchro != nullptr) {
-
+ if (process->host_->is_off()) {
+ SMX_EXCEPTION(process, host_error, 0, "Host failed");
+ }
simgrid::kernel::activity::ExecImplPtr exec =
boost::dynamic_pointer_cast<simgrid::kernel::activity::ExecImpl>(process->waiting_synchro);
simgrid::kernel::activity::CommImplPtr comm =
self->finished_ = true;
/* execute the on_exit functions */
SIMIX_process_on_exit_runall(self);
- /* Add the process to the list of process to restart, only if the host is down */
- if (self->auto_restart_ && self->host_->is_off()) {
- SIMIX_host_add_auto_restart_process(self->host_, self);
+
+ if (self->auto_restart_ && self->host_->is_off() &&
+ watched_hosts.find(self->host_->get_cname()) == watched_hosts.end()) {
+ XBT_DEBUG("Push host %s to watched_hosts because it's off and %s needs to restart", self->host_->get_cname(),
+ self->get_cname());
+ watched_hosts.insert(self->host_->get_cname());
}
+
XBT_DEBUG("Process %s@%s is dead", self->get_cname(), self->host_->get_cname());
self->context_->stop();
}
* to create the SIMIX synchro. It can raise a host_error exception if the host crashed.
*
* @param name Name of the execution synchro to create
+ * @param category Tracing category
* @param flops_amount amount Computation amount (in flops)
* @param priority computation priority
- * @param bound
+ * @param bound Maximal speed for this execution (in flops) or -1 if no limit
* @param host host where the synchro will be executed
* @return A new SIMIX execution synchronization
*/
/* Autorestart all process */
for (auto const& host : host_that_restart) {
XBT_INFO("Restart processes on host %s", host->get_cname());
- SIMIX_host_autorestart(host);
+ host->turn_on();
}
host_that_restart.clear();
return host->get_cname();
}
-/**
- * @brief Add a process to the list of the processes that the host will restart when it comes back
- * This function add a process to the list of the processes that will be restarted when the host comes
- * back. It is expected that this function is called when the host is down.
- * The processes will only be restarted once, meaning that you will have to register the process
- * again to restart the process again.
- */
-void SIMIX_host_add_auto_restart_process(sg_host_t host, simgrid::kernel::actor::ActorImpl* actor)
-{
- simgrid::kernel::actor::ProcessArg* arg = new simgrid::kernel::actor::ProcessArg(host, actor);
-
- if (host->is_off() && watched_hosts.find(host->get_cname()) == watched_hosts.end()) {
- watched_hosts.insert(host->get_cname());
- XBT_DEBUG("Push host %s to watched_hosts because state == SURF_RESOURCE_OFF", host->get_cname());
- }
- XBT_DEBUG("Adding Process %s to the auto-restart list of Host %s", arg->name.c_str(), arg->host->get_cname());
- host->pimpl_->auto_restart_processes_.push_back(arg);
-}
-
-/** @brief Restart the list of processes that have been registered to the host */
-void SIMIX_host_autorestart(sg_host_t host)
-{
- std::vector<simgrid::kernel::actor::ProcessArg*> process_list = host->pimpl_->auto_restart_processes_;
-
- for (auto const& arg : process_list) {
- XBT_DEBUG("Restarting Process %s@%s right now", arg->name.c_str(), arg->host->get_cname());
- smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), arg->code, nullptr, arg->host,
- arg->properties.get(), nullptr);
- if (arg->kill_time >= 0)
- simcall_process_set_kill_time(actor, arg->kill_time);
- if (arg->auto_restart)
- actor->auto_restart_ = arg->auto_restart;
- }
- process_list.clear();
-}
-
simgrid::kernel::activity::ExecImplPtr SIMIX_execution_start(std::string name, std::string category,
double flops_amount, double priority, double bound,
sg_host_t host)
#include <boost/intrusive/list.hpp>
-XBT_PRIVATE void SIMIX_host_add_auto_restart_process(sg_host_t host, simgrid::kernel::actor::ActorImpl* actor);
-XBT_PRIVATE void SIMIX_host_autorestart(sg_host_t host);
-
XBT_PRIVATE void SIMIX_execution_finish(smx_activity_t synchro);
XBT_PRIVATE void SIMIX_set_category(smx_activity_t synchro, std::string category);
delete piface_->pimpl_;
piface_->pimpl_ = this;
}
+
HostImpl::~HostImpl()
{
/* All processes should be gone when the host is turned off (by the end of the simulation). */
SIMIX_display_process_status();
THROWF(arg_error, 0, "%s", msg.c_str());
}
- for (auto const& arg : auto_restart_processes_)
- delete arg;
- auto_restart_processes_.clear();
- for (auto const& arg : boot_processes_)
- delete arg;
- boot_processes_.clear();
+ for (auto const& arg : actors_at_boot_)
+ delete arg.second;
+ actors_at_boot_.clear();
}
/** Re-starts all the actors that are marked as restartable.
*/
void HostImpl::turn_on()
{
- for (auto const& arg : boot_processes_) {
- XBT_DEBUG("Booting Process %s(%s) right now", arg->name.c_str(), arg->host->get_cname());
+ for (auto const& elm : actors_at_boot_) {
+ kernel::actor::ProcessArg* arg = elm.second;
+ XBT_DEBUG("Booting Actor %s(%s) right now", arg->name.c_str(), arg->host->get_cname());
smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), arg->code, nullptr, arg->host,
arg->properties.get(), nullptr);
if (arg->kill_time >= 0)
{
if (not process_list_.empty()) {
for (auto& actor : process_list_) {
- SIMIX_process_kill(&actor, SIMIX_process_self());
- XBT_DEBUG("Killing %s@%s on behalf of %s which turned off that host.", actor.get_cname(),
+ XBT_DEBUG("Killing Actor %s@%s on behalf of %s which turned off that host.", actor.get_cname(),
actor.host_->get_cname(), SIMIX_process_self()->get_cname());
+ SIMIX_process_kill(&actor, SIMIX_process_self());
}
}
+ // When a host is turned off, we want to keep only the actors that should restart for when it will boot again.
+ // Then get rid of the others.
+ auto elm = actors_at_boot_.begin();
+ while (elm != actors_at_boot_.end()) {
+ if (not elm->second->auto_restart) {
+ delete elm->second;
+ actors_at_boot_.erase(elm);
+ } else
+ ++elm;
+ }
}
std::vector<s4u::ActorPtr> HostImpl::get_all_actors()
// FIXME: make these private
ActorList process_list_;
- std::vector<kernel::actor::ProcessArg*> auto_restart_processes_;
- std::vector<kernel::actor::ProcessArg*> boot_processes_;
+ std::map<std::string, kernel::actor::ProcessArg*> actors_at_boot_;
};
}
}
xbt_assert(get_core_count() == 1, "FIXME: add state change code also for constraint_core[i]");
if (value > 0) {
- if (is_off())
+ if (is_off()) {
host_that_restart.push_back(get_host());
- turn_on();
+ get_host()->turn_on();
+ }
} else {
kernel::lmm::Constraint* cnst = get_constraint();
kernel::lmm::Variable* var = nullptr;
const kernel::lmm::Element* elem = nullptr;
double date = surf_get_clock();
- turn_off();
+ get_host()->turn_off();
while ((var = cnst->get_variable(&elem))) {
kernel::resource::Action* action = static_cast<kernel::resource::Action*>(var->get_id());
} else if (event == state_event_) {
if (value > 0) {
- if (is_off())
+ if (is_off()) {
host_that_restart.push_back(get_host());
- turn_on();
+ get_host()->turn_on();
+ }
} else {
- turn_off();
+ get_host()->turn_off();
double date = surf_get_clock();
/* put all action running on cpu to failed */
tmgr_trace_event_unref(&speed_.event);
} else if (triggered == state_event_) {
- if (value > 0)
- turn_on();
- else
- turn_off();
+ if (value > 0) {
+ if (is_off()) {
+ host_that_restart.push_back(get_host());
+ get_host()->turn_on();
+ }
+ } else
+ get_host()->turn_off();
tmgr_trace_event_unref(&state_event_);
} else {
simgrid::kernel::actor::ProcessArg* arg =
new simgrid::kernel::actor::ProcessArg(actor_name, code, nullptr, host, kill_time, properties, auto_restart);
- host->pimpl_->boot_processes_.push_back(arg);
+ host->pimpl_->actors_at_boot_.insert({actor_name, arg});
if (start_time > SIMIX_get_clock()) {
while (1) {
res = MSG_task_receive(&(task), mailbox);
+ if (res == MSG_HOST_FAILURE) {
+ XBT_DEBUG("The host has been turned off, this was expected");
+ return 1;
+ }
xbt_assert(res == MSG_OK, "MSG_task_get failed");
if (!strcmp(MSG_task_get_name(task), "finalize")) {
msg_task_t task = MSG_task_create("daemon", MSG_host_get_speed(MSG_host_self()), 0, NULL);
MSG_process_set_data(self, task);
XBT_INFO(" Execute daemon");
- MSG_task_execute(task);
- MSG_process_set_data(self, NULL);
+ msg_error_t res = MSG_task_execute(task);
MSG_task_destroy(task);
tasks_done++;
+ if (res == MSG_HOST_FAILURE) {
+ XBT_INFO("Host as died as expected, do nothing else");
+ return 0;
+ }
}
XBT_INFO(" daemon done. See you!");
return 0;
MSG_create_environment(argv[1]);
- MSG_process_set_data_cleanup(task_cleanup_handler);
MSG_process_create("test_launcher", test_launcher, NULL, MSG_get_host_by_name("Tremblay"));
res = MSG_main();
> [Tremblay:test_launcher:(1) 20.000000] [msg_test/INFO] Turn Jupiter off
> [Tremblay:test_launcher:(1) 20.000000] [msg_test/INFO] Test 5 seems ok (number of Process: 2, it should be 2)
> [Tremblay:test_launcher:(1) 20.000000] [msg_test/INFO] Test done. See you!
+> [Jupiter:commRX:(2) 20.000000] [msg_test/INFO] Receive message: HOST_FAILURE
+> [Jupiter:commRX:(2) 20.000000] [msg_test/INFO] RX Done
> [Tremblay:commTX:(3) 40.000000] [msg_test/INFO] TX done
> [40.000000] [msg_test/INFO] Simulation time 40
> [Jupiter:process_daemonJUPI:(3) 9.000011] [msg_test/INFO] Execute daemon
> [Tremblay:test_launcher:(1) 10.000000] [msg_test/INFO] Turn Jupiter off
> [Tremblay:test_launcher:(1) 10.000000] [msg_test/INFO] Shutdown vm0
+> [Jupiter:process_daemonJUPI:(3) 10.000000] [msg_test/INFO] Host as died as expected, do nothing else
> [Tremblay:test_launcher:(1) 10.000000] [msg_test/INFO] Destroy vm0
> [Tremblay:test_launcher:(1) 10.000000] [msg_test/INFO] Test 6 is also weird: when the node Jupiter is turned off once again, the VM and its daemon are not killed. However, the issue regarding the shutdown of hosted VMs can be seen a feature not a bug ;)
> [Tremblay:test_launcher:(1) 10.000000] [msg_test/INFO] Test done. See you!
msg_task_t task = NULL;
msg_error_t error = MSG_task_receive(&(task), mailbox);
if (error) {
- XBT_ERROR("Error while receiving message");
+ if (error != MSG_HOST_FAILURE)
+ XBT_ERROR("Error while receiving message");
+ else
+ XBT_DEBUG("The host has been turned off, this was expected");
return 1;
}
## Add the tests.
## Some need to be run with all factories, some need not tesh to run
-foreach(x actor actor-migration cloud-interrupt-migration concurrent_rw) # TODO: actor-autorestart is disabled for now
+foreach(x actor actor-autorestart actor-migration cloud-interrupt-migration concurrent_rw) # TODO: actor-autorestart is disabled for now
set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/${x}.tesh)
ADD_TESH_FACTORIES(tesh-s4u-${x} "thread;ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/s4u/${x} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/teshsuite/s4u/${x} ${CMAKE_HOME_DIRECTORY}/teshsuite/s4u/${x}/${x}.tesh)
endforeach()
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "simgrid/s4u.hpp"
+#include <xbt/ex.hpp>
XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example");
static void dummy()
{
XBT_INFO("I start");
- simgrid::s4u::this_actor::sleep_for(200);
- XBT_INFO("I stop");
+ try {
+ simgrid::s4u::this_actor::sleep_for(200);
+ XBT_INFO("I stop");
+ } catch (xbt_ex& e) {
+ if (e.category == host_error) {
+ XBT_DEBUG("The host has died ... as expected. This actor silently stops");
+ } else {
+ XBT_ERROR("An unexpected exception has been raised.");
+ throw;
+ }
+ }
}
static void autostart()
doc/doxygen/application.doc
doc/doxygen/community.doc
doc/doxygen/deployment.doc
- doc/doxygen/examples.doc
doc/doxygen/footer.html
doc/doxygen/getting_started.doc
doc/doxygen/header.html
# these files get copied automatically to the html documentation
set(DOC_IMG
- ${CMAKE_HOME_DIRECTORY}/doc/sc3-description.png
${CMAKE_HOME_DIRECTORY}/doc/webcruft/AS_hierarchy.png
${CMAKE_HOME_DIRECTORY}/doc/webcruft/eclipseScreenShot.png
${CMAKE_HOME_DIRECTORY}/doc/webcruft/Paje_MSG_screenshot.jpg
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc/example_lists
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/doc/html
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc/html
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/doc/xml
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/docs/source/api
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc
)